Dokumen ini mengasumsikan bahwa Anda telah membaca panduan pengantar untuk Tugas terjadwal juga di bagian Pengantar Fleet Engine sebagai Apa yang dimaksud dengan tugas terjadwal? di bagian ini.
Fleet Engine untuk tugas terjadwal menyediakan berbagai kategori tugas yang luas:
- Tugas pengiriman: Gunakan untuk tugas mengemudi, termasuk pengambilan dan pengantaran pengiriman.
- Tugas ketidaktersediaan: Gunakan untuk saat pengemudi tidak tersedia, seperti sebagaimana yang diperlukan.
- Tugas perhentian terjadwal: Gunakan untuk tugas tanpa pengemudi di drop box atau pelanggan lokasi, seperti waktu untuk masuk ke gedung atau menemukan lokasi pengiriman.
Dokumen ini membahas cara membuat tugas pengiriman di server Anda. Untuk lainnya jenis tugas, lihat Membuat jenis tugas lainnya.
Kolom tugas pengiriman
Bagian ini mendokumentasikan kolom tugas yang diperlukan untuk pesan ambil dan antar tugas klasifikasi.
Kolom tugas yang wajib diisi
Untuk setiap tugas yang Anda buat di Fleet Engine, Anda harus melengkapinya dengan
tambahan, dan juga dapat memberikan salah satu kolom opsional. Mesin Fleet
mengabaikan semua kolom lainnya, dan menampilkan pengecualian jika pembuatan tugas
menyediakan deliveryVehicleId
yang ditetapkan. Untuk menetapkan
tugas ke kendaraan,
gunakan UpdateDeliveryVehicleRequest
. Untuk informasi selengkapnya, lihat
Memperbarui tugas.
Kolom | Nilai |
---|---|
type |
Tetapkan ke jenis yang sesuai dengan jenis tugas, yang merupakan salah satu dari:
|
state |
State.OPEN |
task_id |
ID tugas unik. Nomor ini tidak boleh berupa nomor pelacakan untuk pengiriman. Jika Anda tidak memiliki ID tugas di sistem Anda, Anda dapat membuat pengenal tertentu (UUID). Untuk mengetahui detailnya, lihat ID Tugas. |
tracking_id |
Hanya tugas PICKUP atau DELIVERY :
Nomor atau ID yang Anda gunakan untuk melacak pengiriman. Larangan
menyediakan bidang ini untuk tugas non-pengiriman. |
plannedLocation |
PICKUP , DELIVERY , atau
SCHEDULED_STOP khusus tugas:
lokasi di mana tugas akan diselesaikan. Tidak diperlukan untuk
UNAVAILABLE tugas. |
taskDuration |
Waktu yang diharapkan yang ditambahkan untuk menyelesaikan tugas. Misalnya, untuk melihat untuk tempat parkir, atau berjalan ke lokasi penyerahan. |
Kolom tugas pengiriman opsional
Kolom | Nilai |
---|---|
targetTimeWindow |
Periode waktu saat tugas harus diselesaikan. Kolom ini tidak mempengaruhi perilaku perutean. |
task_tracking_view_config |
Hanya tugas PICKUP atau DELIVERY :
Konfigurasi untuk pelacakan tugas yang menentukan elemen data mana
dapat dilihat oleh pengguna akhir dalam situasi apa. |
attributes |
Daftar atribut tugas khusus. Setiap atribut harus memiliki kunci unik. |
Membuat tugas pengambilan pengiriman
Agar dapat menggunakan Fleet Engine untuk mengikuti aktivitas
pengemudi yang mengambil kiriman,
membuat tugas pengambilan pengiriman. Hal ini melibatkan pengaturan
atribut {i>task type<i} ke
PICKUP
. Contoh berikut mengilustrasikan pengambilan pengiriman dari Grand
Indonesia East Mall.
Contoh berikut menunjukkan cara membuat tugas pengambilan pengiriman menggunakan
Library gRPC Java atau cara membuat permintaan REST HTTP untuk
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
Untuk membuat tugas pengambilan pengiriman dari lingkungan server, buat REST HTTP
panggilan ke CreateTask
:
POST https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks?taskId=<id>
<id> adalah pengidentifikasi unik untuk tugas.
Header permintaan harus berisi kolom Authorization dengan nilai Bearer <token>, dengan <token> dikeluarkan oleh server Anda sesuai panduan yang dijelaskan dalam Peran akun layanan dan Web JSON token.
Isi permintaan harus berisi entity Task
dengan kolom yang sesuai
yang dijelaskan di kolom tugas pengiriman.
Contoh perintah curl
:
# 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
Membuat tugas pengiriman pengiriman
Agar dapat menggunakan Fleet Engine untuk mengikuti aktivitas
pengemudi yang mengirimkan kiriman,
membuat tugas pengiriman. Hal ini melibatkan penetapan atribut jenis tugas
ke DELIVERY
. Contoh berikut mengilustrasikan pengiriman ke Supermarket
Indonesia East Mall.
Contoh berikut menunjukkan cara membuat tugas pengambilan pengiriman menggunakan
Library gRPC Java atau cara membuat permintaan REST HTTP untuk
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
Untuk membuat tugas pengambilan pengiriman dari lingkungan server, buat REST HTTP
panggilan ke CreateTask
:
POST https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks?taskId=<id>
<id> adalah pengidentifikasi unik untuk tugas.
Header permintaan harus berisi kolom Authorization dengan nilai Bearer <token>, dengan <token> dikeluarkan oleh server Anda sesuai panduan yang dijelaskan dalam Peran akun layanan dan Web JSON token.
Isi permintaan harus berisi entity Task
:
Contoh perintah curl
:
# 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
```