Görevleri bulma

Bu belgede, bir sunucudan veya tarayıcıdan görev bilgilerini bulabileceğiniz yöntemler açıklanmaktadır. Fleet Engine, görevleri bulmak için iki yöntemi destekler:

  • Görevleri arama: Görevleri aşağıdaki kimliklere göre arayabilirsiniz:

    • Görev kimliği: Görev verilerinin tam görünümüne erişimi olan filo operatörleri gibi kullanıcılar tarafından kullanılır.
    • İzleme kimliği: Müşteri yazılımınız tarafından, son kullanıcıya sınırlı bilgi (ör. paketin evine ne zaman ulaşacağı) sağlamak için kullanılır.

    Görev kimliği ile görev izleme kimliği arasındaki farkı anladığınızdan emin olun. Ancak bunlar aynı değildir. Planlanmış görev kılavuzundaki Temel görev alanları bölümüne bakın.

  • Görevleri listeleme: Yalnızca güvenilen kullanıcılar için tasarlanmış, görevlere geniş kapsamlı erişim.

Görevlere bakma

Bu bölümde, görevleri görev kimliğine veya izleme kimliğine göre arama işlemi açıklanmaktadır. Aşağıdaki şartları karşılaması gerekir:

  • İzleme kimliğine göre aramalar, İzlenen nesneler için görünürlük kuralları'nda belirtilen görünürlük kurallarına uymalıdır.

  • Güvenlik risklerini sınırlamak için mümkün olan en dar jetonu kullanın. Örneğin, bir Teslimat Tüketici Jetonu kullanıyorsanız tüm çağrılar yalnızca ilgili son kullanıcıyla alakalı bilgileri (ör. bir gönderinin göndereni veya alıcısı) döndürür. Fleet Engine, yanıtlardaki diğer tüm bilgileri çıkarır. Jetonlar hakkında daha fazla bilgi için JSON Web Jetonları başlıklı makaleyi inceleyin.

Görevleri görev kimliğine göre arama

gRPC veya REST kullanarak bir sunucu ortamında görevleri görev kimliğine göre arayabilirsiniz. Aşağıdaki örneklerde, Java gRPC kitaplığı'nın veya GetTask için bir REST isteğinin nasıl kullanılacağı gösterilmektedir.

gRPC

 static final String PROJECT_ID = "my-delivery-co-gcp-project";
 static final String TASK_ID = "task-8597549";

 DeliveryServiceBlockingStub deliveryService =
   DeliveryServiceGrpc.newBlockingStub(channel);

 // Task request
 String taskName = "providers/" + PROJECT_ID + "/tasks/" + TASK_ID;
 GetTaskRequest getTaskRequest = GetTaskRequest.newBuilder()  // No need for the header
     .setName(taskName)
     .build();

 try {
   Task task = deliveryService.getTask(getTaskRequest);
 } catch (StatusRuntimeException e) {
   Status s = e.getStatus();
   switch (s.getCode()) {
      case NOT_FOUND:
        break;

      case PERMISSION_DENIED:
        break;
   }
   return;
 }

REST

GET https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks/<taskId>

  • <id>, görevin benzersiz tanımlayıcısıdır.
  • <taskId>, aranacak görevin kimliğidir.
  • İstek başlığında, Authorization alanı ve Bearer <token> değeri bulunmalıdır. Burada <token>, Hizmet hesabı rolleri ve JSON Web jetonları bölümünde açıklanan yönergelere göre sunucunuz tarafından verilir.
  • İstek metni boş olmalıdır.
  • Arama başarılı olursa yanıt gövdesi bir görev öğesi içerir.

Örnek curl komutu:

    # Set JWT, PROJECT_ID, and TASK_ID in the local environment
    curl -H "Authorization: Bearer ${JWT}" \
      "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks/${TASK_ID}"

İzleme kimliğine göre görevleri arama

Aşağıdaki örneklerde, GetTaskTrackingInfo için gRPC veya HTTP REST çağrısı kullanılarak görevlerin kargo takibi kimliklerine göre nasıl aranacağı gösterilmektedir.

gRPC

static final String PROJECT_ID = "my-delivery-co-gcp-project";
static final String TRACKING_ID = "TID-7449w087464x5";

DeliveryServiceBlockingStub deliveryService =
  DeliveryServiceGrpc.newBlockingStub(channel);

// Tasks request
String parent = "providers/" + PROJECT_ID;
GetTaskTrackingInfoRequest getTaskTrackingInfoRequest = GetTaskTrackingInfoRequest.newBuilder()  // No need for the header
    .setParent(parent)
    .setTrackingId(TRACKING_ID)
    .build();

try {
  TaskTrackingInfo taskTrackingInfo = deliveryService.getTaskTrackingInfo(getTaskTrackingInfoRequest);
} catch (StatusRuntimeException e) {
  Status s = e.getStatus();
  switch (s.getCode()) {
     case NOT_FOUND:
       break;

     case PERMISSION_DENIED:
       break;
  }
  return;
}

REST

GET https://fleetengine.googleapis.com/v1/providers/<project_id>/taskTrackingInfo/<tracking_id>

  • <tracking_id>, görevle ilişkili izleme kimliğidir.

  • İstek üstbilgisinde, <token> değerinin doğru hizmet hesabı rolünü taşıdığı Bearer<token> değeriyle birlikte bir Authorization alanı bulunmalıdır. Hizmet hesabı rolleri başlıklı makaleye bakın.

  • Arama başarılı olursa yanıt gövdesi bir taskTrackingInfo öğesi içerir.

Örnek curl komutu:

# Set JWT, PROJECT_ID, and TRACKING_ID in the local environment
curl -H "Authorization: Bearer ${JWT}" \
  "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/taskTrackingInfo/${TRACKING_ID}"

Görevleri listeleyin

Listeleme görevleri, görevlere geniş kapsamlı erişim isteğinde bulunur. Giriş görevleri yalnızca güvenilir kullanıcılar için tasarlanmıştır. Liste görevleri isteklerinde bulunurken Delivery Fleet Reader veya Delivery Admin kimlik doğrulama jetonlarını kullanın. Daha fazla bilgi için Hizmet hesabı rolleri başlıklı makaleye bakın.

Listeleri sayfalandırma

Görev listeleri sayfalandırılır. Liste görevleri isteklerinde sayfa boyutu belirtilebilir. Sayfa boyutu belirtilmişse döndürülen görev sayısı belirtilen sayfa boyutundan büyük değildir. Sayfa boyutu yoksa makul bir varsayılan değer kullanılır. İstenen sayfa boyutu dahili maksimum değeri aşarsa dahili maksimum değer kullanılır.

Görev listesi, sonuçların sonraki sayfasını okumak için bir jeton içerebilir. Sonraki sayfayı almak için sayfa jetonuyla birlikte aynı isteği yeniden gönderin. Döndürülen sayfa jetonu boş olduğunda, alınabilecek başka görev kalmamıştır.

Görevleri listelerken kullanılan alanlar

Fleet Engine, görevleri listelerken aşağıdaki alanları çıkarır:

  • VehicleStop.planned_location
  • VehicleStop.state
  • VehicleStop.TaskInfo.taskId

Google API Geliştirme Önerileri'ne göre aşağıdaki alan biçimlerini kullanın:

Alan Türü Biçim Örnek
Zaman damgası RFC-3339 task_outcome_time = 2022-03-01T11:30:00-08:00
Süre Saniye sayısı ve ardından s task_duration = 120s
Enum Dize state = CLOSED AND type = PICKUP
Konum point.latitude ve point.longitude planned_location.point.latitude > 36.1 AND planned_location.point.longitude < -122.0

Listelenen görevleri filtreleme

Listelenen görevleri çoğu görev özelliğine göre filtreleyebilirsiniz. Filtre sorgusu söz dizimi için AIP-160'ı inceleyin. Filtre sorgusu belirtilmemişse tüm görevler listelenir.

Aşağıdaki tabloda, filtreleme için kullanabileceğiniz geçerli görev özellikleri gösterilmektedir:

Listeleri filtrelemek için görev özellikleri
  • type
  • attributes
  • tracking_id
  • delivery_vehicle_id
  • state
  • planned_location
  • task_duration
  • task_duration_outcome
  • task_outcome
  • task_outcome_location
  • task_outcome_time

Filtre sorgusu operatörlerinin tam listesi için AIP-160'a bakın.

Liste görev örnekleri

Aşağıdaki örnekte, hem Java gRPC kitaplığı ile hem de ListTasks için HTTP REST çağrısıyla deliveryVehicleId ve görev özelliği için görevlerin nasıl listeleneceği gösterilmektedir.

Başarılı bir yanıt yine de boş olabilir. Boş yanıt, sağlanan deliveryVehicleId ile ilişkili görev olmadığını gösterir.

gRPC

 static final String PROJECT_ID = "my-delivery-co-gcp-project";
 static final String TRACKING_ID = "TID-7449w087464x5";

 DeliveryServiceBlockingStub deliveryService =
   DeliveryServiceGrpc.newBlockingStub(channel);

 // Tasks request
 String parent = "providers/" + PROJECT_ID;
 ListTasksRequest listTasksRequest = ListTasksRequest.newBuilder()  // No need for the header
     .setParent(parent)
     .setFilter("delivery_vehicle_id = 123 AND attributes.foo = true")
     .build();

 try {
   ListTasksResponse listTasksResponse = deliveryService.listTasks(listTasksRequest);
 } catch (StatusRuntimeException e) {
   Status s = e.getStatus();
   switch (s.getCode()) {
      case NOT_FOUND:
        break;

      case PERMISSION_DENIED:
        break;
   }
   return;
 }

REST

GET https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks

Listelenen görevlere filtre uygulamak için değer olarak URL'den kaçılmış bir filtre sorgusu içeren bir "filtre" URL parametresi ekleyin.

İstek üstbilgisinde, <token> değerinin doğru hizmet hesabı rolünü taşıdığı Bearer<token> değeriyle birlikte bir Authorization alanı bulunmalıdır. Hizmet hesabı rolleri başlıklı makaleye bakın.

Başarılı bir arama, aşağıdaki yapıya sahip bir yanıt metni sağlar:

    // JSON representation
    {
      "tasks": [
        {
          object (Task)
        }
      ],
      "nextPageToken": string,
      "totalSize": integer
    }

Örnek curl komutu:

 # Set JWT, PROJECT_ID, and VEHICLE_ID in the local environment
 curl -H "Authorization: Bearer ${JWT}" \
   "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks?filter=state%20%3D%20OPEN%20AND%20delivery_vehicle_id%20%3D%20${VEHICLE_ID}"

Sırada ne var?