Görevleri bulma

Bu belgede, sunucu veya tarayıcıda görev bilgilerini bulabileceğiniz yöntemler açıklanmaktadır. Fleet Engine, görevleri bulmanın iki yolunu 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.
    • Takip Kimliği: İstemci yazılımınız tarafından son kullanıcıya sınırlı bilgi (örneğin, evinde paket olması planlandığı zaman) 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üvenilir kullanıcılar için tasarlanmış, görevlere geniş erişim.

Görevleri arama

Bu bölümde, görevleri görev kimliğine veya izleme kimliğine göre nasıl arayacağınız açıklanmaktadır. Aşağıdaki gereksinimlere sahiptir:

  • İzleme kimliğine göre yapılan aramalar, İzlenen nesneler için görünürlük kuralları bölümünde belirtilen görünürlük kurallarına uymalıdır.

  • Güvenlik risklerini sınırlandırmak için mümkün olan en dar jetonu kullanın. Örneğin, Teslimat Tüketici Jetonu kullanırsanız çağrılar yalnızca bu son kullanıcıyla alakalı bilgileri (gönderen veya gönderimin alıcısı gibi) 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örevi görev kimliğine göre ara

Bir görevi, gRPC veya REST kullanarak bir sunucu ortamından 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, Bearer <token> değerine sahip bir Yetkilendirme alanı bulunmalıdır. Burada <token>, sunucunuz tarafından Hizmet hesabı rolleri ve JSON Web jetonları bölümlerinde açıklanan yönergelere göre verilir.
  • İstek metni boş olmalıdır.
  • Arama başarılı olursa yanıt gövdesi, bir görev öğesini 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}"

Görevleri izleme kimliğine göre arama

Aşağıdaki örneklerde, gRPC veya GetTaskTrackingInfo için bir HTTP REST çağrısı kullanılarak görevlerin gönderi takip 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ğerine sahip Authorization (Yetkilendirme) alanı bulunmalıdır. <token>, doğru hizmet hesabı rolünü taşımalıdır. Hizmet hesabı rolleri başlıklı makaleyi inceleyin.

  • Arama başarılı olursa yanıt gövdesi, bir taskTrackingInfo varlığı 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

Görevleri listelemek, görevlere geniş kapsamlı erişim gerektirir. Giriş görevleri yalnızca güvenilir kullanıcılar içindir. Liste görevleri isteği gönderirken Yayınlama Ağı Okuyucu veya Yayınlama Yöneticisi kimlik doğrulama jetonlarını kullanın. Daha fazla bilgi için Hizmet hesabı rolleri başlıklı makaleyi inceleyin.

Listeleri sayfalara ayırma

Görev listeleri sayfalara ayrılır. Liste görevleri isteklerinde sayfa boyutu belirtilebilir. Bir sayfa boyutu belirtilirse döndürülen görevlerin sayısı belirtilen sayfa boyutundan fazla olmaz. Sayfa boyutu belirtilmezse makul bir varsayılan değer kullanılır. İstenen sayfa boyutu dahili bir 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, başka görev getirilemez.

Görevleri listelemede kullanılan alanlar

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

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

Google API İyileştirme Önerileri'ne dayalı 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 Saniyenin ardından s gelmelidir 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'a göz atın. Filtre sorgusu belirtilmezse 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 sorgu operatörlerinin tam listesi için AIP-160'a bakın.

Görev örneklerini listeleme

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

Başarılı bir yanıt 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ğerine URL'den kaçan bir filtre sorgusu içeren bir "filter" URL parametresi ekleyin.

İstek üstbilgisinde, <token> değerine sahip Authorization (Yetkilendirme) alanı bulunmalıdır. <token>, doğru hizmet hesabı rolünü taşımalıdır. Hizmet hesabı rolleri başlıklı makaleyi inceleyin.

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?