Bu belgede, bir sunucudan veya tarayıcıdan görev bilgilerini bulma yöntemleri 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: İstemci yazılımınız tarafından son kullanıcıya sınırlı bilgi (ör. bir paketin evine ne zaman ulaşmasının beklendiği) 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: Görevlere geniş kapsamlı erişim sağlar. Yalnızca güvenilir kullanıcılar için tasarlanmıştır.
Görevleri arama
Bu bölümde, görev kimliği veya izleme kimliğine göre görevlerin nasıl aranacağı açıklanmaktadır. Şu şartları karşılaması gerekir:
İzleme kimliğine göre yapılan aramalar, Takip edilen nesneler için görünürlük kuralları bölümünde belirtilen görünürlük kurallarına uygun olmalıdır.
Güvenlik risklerini sınırlamak için mümkün olan en dar kapsamlı jetonu kullanın. Örneğin, Teslimat Tüketici Jetonu kullanırsanız tüm çağrılar yalnızca ilgili son kullanıcıyla alakalı bilgileri (ör. gönderinin göndereni veya 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örevleri görev kimliğine göre arama
gRPC veya REST kullanarak bir sunucu ortamından görev kimliğine göre görev arayabilirsiniz. Aşağıdaki örneklerde, Java gRPC kitaplığının veya GetTask'a yönelik 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ı'nda 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}"
Görevleri izleme kimliğine göre arama
Aşağıdaki örneklerde, gRPC veya GetTaskTrackingInfo adresine yapılan bir HTTP REST çağrısı kullanılarak görevlerin gönderi izleme kimliğine 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 başlığında, Authorization alanı ve Bearer <token> değeri bulunmalıdır. Burada <token>, doğru hizmet hesabı rolünü taşı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 için görevlere geniş kapsamlı erişim gerekir. Görevleri listeleme özelliği yalnızca güvenilir kullanıcılar içindir. 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ı makaleyi inceleyin.
Listeleri sayfalandırma
Görev listeleri sayfalandırılır. Liste görevleri isteklerinde sayfa boyutu belirtilebilir. Bir sayfa boyutu belirtilirse döndürülen görevlerin sayısı, belirtilen sayfa boyutundan büyük olmaz. 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 aynı isteği sayfa jetonuyla birlikte 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ı çıkartır:
VehicleStop.planned_locationVehicleStop.stateVehicleStop.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 sayfasına bakı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 | |
|---|---|
|
|
Filtre sorgusu 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ı kullanılarak bir deliveryVehicleId ve görev özelliği için görevlerin nasıl listeleneceği gösterilmektedir.
Başarılı bir yanıt boş olabilir. Boş bir 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çışlı bir filtre sorgusu içeren bir "filtre" URL parametresi ekleyin.
İstek başlığında, Authorization alanı ve Bearer <token> değeri bulunmalıdır. Burada <token>, doğru hizmet hesabı rolünü taşır. Hizmet hesabı rolleri başlıklı makaleyi inceleyin.
Başarılı bir arama, aşağıdaki yapıya sahip bir yanıt gövdesi 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}"