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 dışı görevlerin nasıl oluşturulacağı ele alınmaktadır. Örneğin, daha fazla bilgi için Gönderim görevleri oluşturma başlıklı makaleyi inceleyin.
Sürüş olmayan görevler için görev alanları
Bu bölümde, hem müsait olmama hem de planlanmış durdurma görevleri için gereken görev alanları açıklanmaktadır.
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. Sisteminizde görev kimlikleri yoksa evrensel olarak benzersiz bir tanımlayıcı (UUID) oluşturabilirsiniz. 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ı. Gönderim dışı görevler için bu alanı belirtmeyin. |
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, park yeri aramak veya teslimat noktasına yürümek için. |
İ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. |
Kullanılamazlık durumu görevi oluşturma
Uygun olmadığını gösteren bir görev oluşturabilirsiniz. örneğin, sürücü molaları verilebilir. Müsaitlik durumu görevi oluşturmak için aşağıdaki yönergeleri kullanın:
- Görev türünü
UNAVAILABLE
olarak ayarlayın. - İzleme kimliği eklemeyin.
- Müsaitlik durumu görevi için konum sağlamanız gerekmese de Böylece gün boyunca gelişmiş TVS hesaplamaları elde edebilirsiniz.
Aracın bulunduğu konum için özel görünürlük kuralları geçerli olur.
Yolculuk paylaşımı için UNAVAILABLE
görev.
- Gönderim İzleme kitaplığına entegre tüketici uygulamaları: araç kullanılamıyor durumundaysa, tüketici uygulamasının kullanıcıları konumu görüntülenir. Bununla birlikte, Google Haritalar'da sorumluydu.
- Araç Takip kitaplığıyla entegre araç takip uygulamaları: Araç, müsait olmama görevindeyken araç takip uygulamasını kullanan filo yöneticileri, müsait olmama görevleri için araç konumunu görebilir.
Aşağıdaki örneklerde, Java gRPC kitaplığı kullanılarak planlanmış bir müsait olmama görevi oluşturma veya CreateTask
adresine HTTP REST isteği gönderme gösterilmektedir.
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.UNAVAILABLE)
.setState(Task.State.OPEN)
.setTaskDuration(
Duration.newBuilder().setSeconds(60 * 60)) // 1hr break
.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 kullanılabilir olmama 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 üstbilgisinde, Authorization (Yetkilendirme) alanı olmalıdır. Bu alanın değeri Bearer <token> (Taşıyıcı <token>) şeklindedir. <token>, Hizmet hesabı rolleri ve JSON web jetonları bölümünde açıklanan yönergelere göre sunucunuz tarafından verilir.
İstek metni, Araç kullanmayan görevler için görev alanları bölümünde açıklanan uygun alanlara sahip bir Task
öğesi içermelidir.
Örnek curl
komutu:
# Set $JWT, $PROJECT_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": "UNAVAILABLE",
"state": "OPEN",
"plannedLocation": {
"point": {
"latitude": -6.195139,
"longitude": 106.820826
}
},
"taskDuration": "300s"
}
EOM
Planlanmış bir durdurma görevi oluşturma
Planlanmış bir durak için bir görev oluşturabilirsiniz; örneğin, ekip içinde müşteri yerlerinde, yakıt doldurma durakları için veya bir sürücünün bir besleyici aracından gelen sevkıyatı ifade eder. Zamanlanmış bir durdurma görevi oluşturduğunuzda, şu kurallara uyun:
- Görev türünü şu şekilde ayarla:
- İzleme kimliği eklemeyin.
- İsterseniz bir konum da belirtebilirsiniz.
Aşağıdaki örneklerde,
Java gRPC kitaplığına veya bir HTTP REST isteğinde nasıl bulunacağınıza
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.SCHEDULED_STOP)
.setState(Task.State.OPEN)
.setPlannedLocation( // Grand Indonesia East Mall
LocationInfo.newBuilder().setPoint(
LatLng.newBuilder().setLatitude(-6.195139).setLongitude(106.820826)))
.setTaskDuration(
Duration.newBuilder().setSeconds(2 * 60))
.build();
// Task request
CreateTaskRequest createTaskRequest =
CreateTaskRequest.newBuilder() // No need for the header
.setParent(parent)
.setTaskId("task-8241890") // Task ID assigned by the Provider
.setTrip(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 planlanmış bir durdurma görevi oluşturmak için bir 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> sunucunuz tarafından verilir. Hizmet hesabı rolleri ve JSON Web jetonları.
İstek gövdesinde bir Task
varlığı bulunmalıdır:
Örnek curl
komutu:
# Set $JWT, $PROJECT_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": "SCHEDULED_STOP",
"state": "OPEN",
"plannedLocation": {
"point": {
"latitude": -6.195139,
"longitude": 106.820826
}
},
"taskDuration": "600s"
}
EOM