Membuat jenis tugas lainnya

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 waktu saat pengemudi tidak tersedia, seperti saat istirahat 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 non-pengiriman di server Anda. Sebagai jenis tugas pengiriman, lihat Membuat tugas pengiriman.

Kolom tugas untuk tugas non-mengemudi

Bagian ini mendokumentasikan kolom tugas yang diperlukan untuk tugas penghentian terjadwal dan tidak tersedia.

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.

KolomNilai
type

Tetapkan ke jenis yang sesuai dengan jenis tugas, yang merupakan salah satu dari:

  • PICKUP
  • DELIVERY
  • SCHEDULED_STOP
  • UNAVAILABLE
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. Jangan berikan kolom 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 Perkiraan waktu yang akan ditambahkan untuk menyelesaikan tugas. Misalnya, untuk melihat untuk tempat parkir, atau berjalan ke lokasi penyerahan.

Kolom tugas pengiriman opsional

KolomNilai
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 kustom. Setiap atribut harus memiliki kunci unik.

Membuat tugas ketidaktersediaan

Anda bisa membuat tugas yang menunjukkan ketidaktersediaan; misalnya, untuk pengemudi patah-patah. Untuk membuat tugas ketidaktersediaan, gunakan panduan berikut:

  • Tetapkan jenis tugas ke UNAVAILABLE.
  • Jangan sertakan ID pelacakan.
  • Meskipun tidak perlu menyediakan lokasi untuk tugas ketidaktersediaan, melakukannya akan memberikan penghitungan PWT yang ditingkatkan sepanjang hari.

Aturan visibilitas khusus berlaku untuk lokasi kendaraan saat berada dalam tugas UNAVAILABLE untuk berbagi perjalanan.

  • Aplikasi konsumen yang terintegrasi dengan library Shipment Tracking: Saat kendaraan sedang menjalankan tugas ketidaktersediaan, pengguna aplikasi konsumen tidak dapat melihat lokasi kendaraan, meskipun mereka masih dapat melihat informasi status untuk pengiriman mereka.
  • Aplikasi pelacakan armada yang terintegrasi dengan library Pelacakan Armada: Saat kendaraan sedang melakukan 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 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.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 ketidaktersediaan dari lingkungan server, lakukan panggilan REST HTTP ke CreateTask:

POST https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks?taskId=<id>

&lt;id&gt; adalah pengidentifikasi 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 entity Task dengan kolom yang sesuai dijelaskan di 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 perhentian terjadwal

Anda dapat membuat tugas untuk perhentian terjadwal; misalnya, untuk tugas tanpa mengemudi di lokasi pelanggan, untuk mengisi bahan bakar, atau saat pengemudi menerima pengiriman dari kendaraan pengangkut. Saat Anda 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 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.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, buat REST HTTP panggilan 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 entity 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

Langkah berikutnya