Bu belgede, sunucu 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.
- Takip kimliği: Son kullanıcıya sınırlı bilgi sağlamak için istemci yazılımınız tarafından kullanılır (ör. bir paketin evine ne zaman ulaşması beklendiği).
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örevlerin görev kimliğine veya izleme kimliğine göre nasıl aranacağı açıklanmaktadır. Aşağıdaki koşulları karşılamalıdır:
İ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ırlamak için mümkün olan en dar jetonu kullanın. Örneğin, bir teslimat tüketicisi jetonu kullanıyorsanız tüm çağrılar yalnızca ilgili son kullanıcıyla alakalı bilgileri (ör. gönderen veya gönderimin alıcısı) döndürür. Fleet Engine, yanıtlardaki diğer tüm bilgileri çıkartı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
gRPC veya REST kullanarak bir görevi sunucu ortamında 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 üstbilgisinde, Authorization (Yetkilendirme) alanı olmalıdır. Bu alanın değeri Bearer <token> (Taşıyıcı <token>) olmalıdır. <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 metni 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}"
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ı makaleye bakın.
Arama başarılı olursa yanıt metni 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
Görevleri listelemek için görevlere geniş erişim izni gerekir. Görev listeleme özelliği yalnızca güvenilir kullanıcılar için tasarlanmıştır. 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. Görev listelemesi isteklerinde sayfa boyutu belirtilebilir. Bir sayfa boyutu belirtilirse döndürülen görevlerin sayısı belirtilen sayfa boyutundan büyük olamaz. 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 bir 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 listelerken 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 | 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 başlıklı makaleyi inceleyin. 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 | |
---|---|
|
|
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ı 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}"