Dokumen ini mengasumsikan bahwa Anda telah membaca panduan pengantar tentang Tugas terjadwal di bagian Pengantar Fleet Engine serta Apa itu 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 pengiriman kiriman.
- Tugas tidak tersedia: Gunakan untuk waktu saat pengemudi tidak tersedia, seperti saat istirahat wajib.
- Tugas berhenti terjadwal: Digunakan untuk tugas non-mengemudi di lokasi pelanggan atau tempat pengambilan paket, seperti waktu untuk memasuki gedung atau menemukan titik pengiriman.
Dokumen ini membahas cara membuat tugas non-pengiriman di server Anda. Untuk jenis tugas pengiriman, lihat Membuat tugas pengiriman.
Kolom tugas untuk tugas non-mengemudi
Bagian ini mendokumentasikan kolom tugas yang diperlukan untuk tugas ketidaktersediaan dan penghentian terjadwal.
Kolom tugas yang wajib diisi
Untuk setiap tugas yang Anda buat di Fleet Engine, Anda harus memberikan kolom yang diperlukan, dan juga dapat memberikan kolom opsional. Fleet Engine
mengabaikan semua kolom lainnya, dan akan memunculkan pengecualian jika permintaan pembuatan tugas
menyediakan deliveryVehicleId
yang ditetapkan. Untuk menetapkan tugas ke kendaraan, gunakan UpdateDeliveryVehicleRequest
. Untuk mengetahui informasi selengkapnya, lihat
Memperbarui tugas.
Kolom | Nilai |
---|---|
type |
Ditetapkan ke jenis yang cocok dengan jenis tugas, yaitu salah satu dari:
|
state |
State.OPEN |
task_id |
ID tugas unik. Ini tidak boleh berupa nomor pelacakan pengiriman. Jika Anda tidak memiliki ID tugas di sistem, Anda dapat membuat ID unik universal (UUID). Untuk mengetahui spesifikasinya, lihat ID Tugas. |
tracking_id |
Hanya tugas PICKUP atau DELIVERY :
Nomor atau ID yang Anda gunakan untuk melacak pengiriman. Jangan
memberikan kolom ini untuk tugas non-pengiriman. |
planned_location |
Tugas PICKUP , DELIVERY , atau
SCHEDULED_STOP saja: Lokasi
tempat tugas harus diselesaikan. Tidak diperlukan untuk
tugas UNAVAILABLE . |
task_duration |
Perkiraan waktu yang dibutuhkan untuk menyelesaikan tugas. Misalnya, untuk mencari tempat parkir, atau berjalan ke lokasi penyerahan. |
Kolom tugas pengiriman opsional
Kolom | Nilai |
---|---|
target_time_window |
Periode waktu saat tugas harus diselesaikan. Kolom ini tidak memengaruhi perilaku perutean. |
task_tracking_view_config |
PICKUP atau DELIVERY saja:
Konfigurasi untuk pelacakan tugas yang menentukan elemen data mana yang
dapat dilihat oleh pengguna akhir dalam keadaan apa pun. |
attributes |
Daftar atribut tugas kustom. Setiap atribut harus memiliki kunci unik. |
Membuat tugas tidak tersedia
Anda dapat membuat tugas yang menunjukkan tidak tersedianya; misalnya, untuk istirahat pengemudi. Untuk membuat tugas tidak tersedia, gunakan panduan berikut:
- Tetapkan jenis tugas ke
UNAVAILABLE
. - Jangan sertakan ID pelacakan.
- Meskipun Anda tidak harus memberikan lokasi untuk tugas tidak tersedia, tindakan ini akan memberikan penghitungan ETP yang lebih baik sepanjang hari.
Aturan visibilitas khusus berlaku untuk lokasi kendaraan saat kendaraan sedang dalam tugas UNAVAILABLE
untuk berbagi perjalanan.
- Aplikasi konsumen yang terintegrasi dengan library Pelacakan Pengiriman: Saat kendaraan sedang dalam tugas tidak tersedia, pengguna aplikasi konsumen tidak dapat melihat lokasi kendaraan, meskipun mereka masih dapat melihat informasi status pengiriman mereka.
- Aplikasi pelacakan armada yang terintegrasi dengan library Pelacakan Armada: Saat kendaraan sedang dalam tugas tidak tersedia, pengelola armada yang menggunakan aplikasi pelacakan armada akan dapat melihat lokasi kendaraan untuk tugas tidak tersedia.
Contoh berikut menunjukkan cara membuat tugas ketidaktersediaan terjadwal menggunakan
library gRPC Java atau cara membuat permintaan HTTP REST ke
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.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
Untuk membuat tugas tidak tersedia dari lingkungan server, lakukan panggilan HTTP REST
ke CreateTask
:
POST https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks?taskId=<id>
<id> adalah ID unik untuk tugas.
Header permintaan harus berisi kolom Authorization dengan nilai Bearer <token>, dengan <token> dikeluarkan oleh server Anda sesuai dengan panduan yang dijelaskan dalam Peran akun layanan dan Token Web JSON.
Isi permintaan harus berisi entitas Task
dengan kolom yang sesuai
yang dijelaskan dalam Kolom tugas untuk tugas non-mengemudi.
Contoh perintah curl
:
# 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
Membuat tugas penghentian terjadwal
Anda dapat membuat tugas untuk perhentian terjadwal; misalnya, untuk tugas non-mengemudi di lokasi pelanggan, untuk perhentian pengisian bahan bakar, atau saat pengemudi menerima pengiriman dari kendaraan pengumpan. Saat membuat tugas perhentian terjadwal, gunakan panduan berikut:
- Tetapkan jenis tugas ke
- Jangan sertakan ID pelacakan.
- Anda dapat memberikan lokasi secara opsional.
Contoh berikut menunjukkan cara membuat tugas ketidaktersediaan terjadwal menggunakan
library gRPC Java atau cara membuat permintaan HTTP REST ke
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
Untuk membuat tugas penghentian terjadwal dari lingkungan server, lakukan panggilan HTTP REST
ke CreateTask
:
POST https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks?taskId=<id>
<id> adalah ID unik untuk tugas.
Header permintaan harus berisi kolom Authorization dengan nilai Bearer <token>, dengan <token> dikeluarkan oleh server Anda sesuai dengan panduan yang dijelaskan dalam Peran akun layanan dan Token Web JSON.
Isi permintaan harus berisi entitas Task
:
Contoh perintah curl
:
# 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