Bu dokümanda, Arkadaş Bitkiler Projesi için giriş kılavuzunu okuduğunuzu Fleet Engine'e Giriş bölümündeki Planlanmış görevler de Planlanmış görev nedir? gibi.
Planlanmış görevler için Fleet Engine, farklı geniş kapsamlı görev kategorileri sağlar:
- Sevkiyat görevleri: Sevkiyatların teslim alınması ve teslimi de dahil olmak üzere, görevleri yürütmek için kullanın sevkiyatlar.
- Müsaitlik durumu görevleri: Sürücülerin uygun olmadığı zamanlarda (ör. zaman ayırın.
- Planlanmış durdurma görevleri: Açılır kutularda veya müşteride devam ettirilmeyen görevler için kullanın (ör. bir binaya girme veya teslimat noktası bulma zamanı)
Bu dokümanda, sunucunuzda gönderim görevlerinin nasıl oluşturulacağı açıklanmaktadır. Diğer Başka görev türleri oluşturma başlıklı makaleyi inceleyin.
Gönderim görevi alanları
Bu bölümde hem teslim alma hem de teslimat için gereken görev alanları belgelenmektedir. görevlerden biridir.
Zorunlu görev alanları
Fleet Engine'de oluşturduğunuz her görev için gerekli olan
ve isteğe bağlı alanların herhangi birini de sağlayabilir. Filo Motoru
diğer tüm alanları yoksayar ve bir görev oluşturulursa
isteği, atanmış bir deliveryVehicleId
sağlar. Bir araca görev atamak için
UpdateDeliveryVehicleRequest
kullanın. Daha fazla bilgi için bkz.
Görevleri güncelleme.
Alan | Değer |
---|---|
type |
Görev türüyle eşleşen türe ayarlayın. Bu türlerden biri şudur:
|
state |
State.OPEN |
task_id |
Benzersiz görev kimliği. Bu numara, gönderimin takip numarası olmamalıdır. Şu durumda: sisteminizde görev kimlikleri yoksa evrensel olarak benzersiz bir görev tanımlayıcıdır (UUID). Daha ayrıntılı bilgi için bkz. Görev Kimlikleri. |
tracking_id |
Yalnızca PICKUP veya DELIVERY görevleri:
Bir gönderiyi takip etmek için kullandığınız numara veya tanımlayıcı. Şunları yapmayın:
bu alanı sevkiyat harici görevler için sağlayın. |
plannedLocation |
PICKUP , DELIVERY veya
Yalnızca SCHEDULED_STOP görevleri:
görevin tamamlanacağı yerdir. Şunun için gerekli değil:
UNAVAILABLE görev. |
taskDuration |
Görevi tamamlamak için eklenmesi beklenen süre. Örneğin, veya aktarma yerine yürüyün. |
İsteğe bağlı gönderim görevi alanları
Alan | Değer |
---|---|
targetTimeWindow |
Görevin tamamlanması gereken zaman aralığı. Bu alan yönlendirme davranışını etkilemez. |
task_tracking_view_config |
Yalnızca PICKUP veya DELIVERY görevleri:
Hangi veri öğelerini belirten görev izleme yapılandırması
kullanıcılar tarafından hangi koşullarda görülebilir? |
attributes |
Özel görev özelliklerinin listesi. Her özelliğin benzersiz bir anahtarı olmalıdır. |
Kargo teslim alma görevi oluşturma
Fleet Engine'i bir gönderiyi teslim alan sürücünün hareketlerini izlemek amacıyla kullanmak için
bir gönderi teslim alma görevi
oluşturduğunu öğrendik. Bu, görev türü özelliğini
PICKUP
Aşağıdaki örnekte, büyük çarşıdan bir kargonun teslim alınması gösterilmektedir
Endonezya East Mall
Aşağıdaki örneklerde
Java gRPC kitaplığı veya
CreateTask
.
gRPC
static final String PROJECT_ID = "my-delivery-co-gcp-project";
DeliveryServiceBlockingStub deliveryService =
DeliveryServiceGrpc.newBlockingStub(channel);
// Task settings
String parent = "providers/" + PROJECT_ID;
Task task = Task.newBuilder()
.setType(Task.Type.PICKUP)
.setState(Task.State.OPEN)
.setTrackingId("my-tracking-id")
.setPlannedLocation( // Grand Indonesia East Mall
LocationInfo.newBuilder().setPoint(
LatLng.newBuilder().setLatitude(-6.195139).setLongitude(106.820826)))
.setTaskDuration(
Duration.newBuilder().setSeconds(2 * 60))
.setTargetTimeWindow(
TimeWindow.newBuilder()
.setStartTime(Timestamp.newBuilder().setSeconds(1680123600))
.setEndTime(Timestamp.newBuilder().setSeconds(1680130800)))
.addAttributes(TaskAttribute.newBuilder().setKey("foo").setStringValue("value"))
.addAttributes(TaskAttribute.newBuilder().setKey("bar").setNumberValue(10))
.addAttributes(TaskAttribute.newBuilder().setKey("baz").setBoolValue(false))
.build();
// Task request
CreateTaskRequest createTaskRequest =
CreateTaskRequest.newBuilder() // No need for the header
.setParent(parent) // Avoid using auto-incrementing IDs for the taskId
.setTaskId("task-8241890") // Task ID assigned by the Provider
.setTask(task) // Initial state
.build();
// Error handling
// If Fleet Engine does not have a task with that ID and the credentials of the
// requestor pass, the service creates the task successfully.
try {
Task createdTask = deliveryService.createTask(createTaskRequest);
} catch (StatusRuntimeException e) {
Status s = e.getStatus();
switch (s.getCode()) {
case ALREADY_EXISTS:
break;
case PERMISSION_DENIED:
break;
}
return;
}
REST
Sunucu ortamından kargo teslim alma görevi oluşturmak için HTTP REST oluşturun.
CreateTask
için yapılan çağrı:
POST https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks?taskId=<id>
<id>, görev için benzersiz bir tanımlayıcıdır.
İstek başlığında şu değeri içeren Authorization (Yetkilendirme) alanı bulunmalıdır: Taşıyıcı <token>; burada <token>, Hizmet hesabı rolleri ve JSON Web'de açıklanan yönergelere uygun jetonlar.
İstek gövdesi, uygun alanlara sahip bir Task
varlığı içermelidir
Gönderim görevi alanları bölümünde açıklanmıştır.
Örnek curl
komutu:
# Set $JWT, $PROJECT_ID, $TRACKING_ID, and $TASK_ID in the local
# environment
curl -X POST "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks?taskId=${TASK_ID}" \
-H "Content-type: application/json" \
-H "Authorization: Bearer ${JWT}" \
--data-binary @- << EOM
{
"type": "PICKUP",
"state": "OPEN",
"trackingId": "${TRACKING_ID}",
"plannedLocation": {
"point": {
"latitude": -6.195139,
"longitude": 106.820826
}
},
"taskDuration": "90s",
"targetTimeWindow": {
"startTime": "2023-03-29T21:00:00Z",
"endTime": "2023-03-29T23:00:00Z"
}
}
EOM
Gönderim teslimat görevi oluşturma
Fleet Engine'i bir gönderi teslim eden sürücünün faaliyetlerini takip etmek amacıyla kullanmak için
gönderi teslimatı görevi
oluşturmak üzerine konuştuk. Bu, görev türü özelliğinin
DELIVERY
numaralı telefona. Aşağıdaki örnekte, büyük çarşıya yapılan bir gönderim
Endonezya East Mall
Aşağıdaki örneklerde
Java gRPC kitaplığı veya
CreateTask
.
gRPC
static final String PROJECT_ID = "my-delivery-co-gcp-project";
DeliveryServiceBlockingStub deliveryService =
DeliveryServiceGrpc.newBlockingStub(channel);
// Task settings
String parent = "providers/" + PROJECT_ID;
Task task = Task.newBuilder()
.setType(Task.Type.DELIVERY)
.setState(Task.State.OPEN)
.setTrackingId("my-tracking-id")
.setPlannedLocation( // Grand Indonesia East Mall
LocationInfo.newBuilder().setPoint(
LatLng.newBuilder().setLatitude(-6.195139).setLongitude(106.820826)))
.setTaskDuration(
Duration.newBuilder().setSeconds(2 * 60))
.setTargetTimeWindow(
TimeWindow.newBuilder()
.setStartTime(Timestamp.newBuilder().setSeconds(1680123600))
.setEndTime(Timestamp.newBuilder().setSeconds(1680130800)))
.addAttributes(TaskAttribute.newBuilder().setKey("foo").setStringValue("value"))
.addAttributes(TaskAttribute.newBuilder().setKey("bar").setNumberValue(10))
.addAttributes(TaskAttribute.newBuilder().setKey("baz").setBoolValue(false))
.build();
// Task request
CreateTaskRequest createTaskRequest =
CreateTaskRequest.newBuilder() // No need for the header
.setParent(parent) // Avoid using auto-incrementing IDs for the taskId
.setTaskId("task-8241890") // Task ID assigned by the Provider
.setTask(task) // Initial state
.build();
// Error handling
// If Fleet Engine does not have task with that ID and the credentials of the
// requestor pass, the service creates the task successfully.
try {
Task createdTask = deliveryService.createTask(createTaskRequest);
} catch (StatusRuntimeException e) {
Status s = e.getStatus();
switch (s.getCode()) {
case ALREADY_EXISTS:
break;
case PERMISSION_DENIED:
break;
}
return;
}
REST
Sunucu ortamından kargo teslim alma görevi oluşturmak için HTTP REST oluşturun.
CreateTask
için yapılan çağrı:
POST https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks?taskId=<id>
<id>, görev için benzersiz bir tanımlayıcıdır.
İstek başlığında şu değeri içeren Authorization (Yetkilendirme) alanı bulunmalıdır: Taşıyıcı <token>; burada <token>, Hizmet hesabı rolleri ve JSON Web'de açıklanan yönergelere uygun jetonlar.
İstek gövdesinde bir Task
varlığı bulunmalıdır:
Örnek curl
komutu:
# Set $JWT, $PROJECT_ID, $TRACKING_ID, and $TASK_ID in the local
# environment
curl -X POST "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks?taskId=${TASK_ID}" \
-H "Content-type: application/json" \
-H "Authorization: Bearer ${JWT}" \
--data-binary @- << EOM
{
"type": "DELIVERY",
"state": "OPEN",
"trackingId": "${TRACKING_ID}",
"plannedLocation": {
"point": {
"latitude": -6.195139,
"longitude": 106.820826
}
},
"taskDuration": "90s",
"targetTimeWindow": {
"startTime": "2023-03-29T21:00:00Z",
"endTime": "2023-03-29T23:00:00Z"
}
}
EOM
```