Mengonfigurasi tugas

Dokumen ini mengasumsikan bahwa Anda memahami cara membuat dan menggunakan tugas. Hal ini memberikan contoh spesifik tentang cara mengonfigurasi tugas pengiriman dengan cara berikut:

  • Menetapkan interval waktu target untuk tugas pengiriman: Tetapkan interval waktu agar tugas dapat diselesaikan.

  • Menyesuaikan visibilitas tugas: Menyesuaikan visibilitas aktivitas tugas untuk ditampilkan kepada pelanggan atau operator armada.

Lihat Membuat tugas pengiriman untuk mengetahui detail tentang kolom untuk tugas pengiriman. Saat memperbarui informasi tambahan tentang tugas yang ada, Anda juga harus menyertakan ID yang relevan untuk tugas tersebut, selain kolom yang Anda perbarui untuk tugas tersebut.

Menetapkan periode waktu target

Periode waktu target adalah TimeWindow saat tugas harus diselesaikan. Misalnya, jika Anda menyampaikan jangka waktu pengiriman kepada penerima pengiriman, Anda dapat menggunakan jangka waktu target tugas untuk mencatat jangka waktu ini dan membuat pemberitahuan, atau Anda dapat menggunakannya untuk menganalisis performa perjalanan sebelumnya.

Jendela waktu target terdiri dari waktu mulai dan waktu berakhir, serta dapat ditetapkan pada jenis tugas apa pun. Periode waktu target tidak memengaruhi perilaku perutean.

Contoh berikut menunjukkan cara menetapkan jangka waktu menggunakan library gRPC Java atau cara membuat permintaan HTTP REST ke UpdateTask. Anda juga dapat menetapkan kolom ini pada saat pembuatan tugas.

gRPC

  static final String PROJECT_ID = "my-delivery-co-gcp-project";
  static final String TASK_ID = "task-8241890";

  DeliveryServiceBlockingStub deliveryService =
    DeliveryServiceGrpc.newBlockingStub(channel);

  // Task settings
  String taskName = "providers/" + PROJECT_ID + "/tasks/" + TASK_ID;
  Task task = Task.newBuilder()
    .setName(taskName)
    .setTargetTimeWindow(
      TimeWindow.newBuilder()
        .setStartTime(Timestamp.newBuilder().setSeconds(1680123600))
        .setEndTime(Timestamp.newBuilder().setSeconds(1680130800)))
    .build();

  // Task request
  UpdateTaskRequest updateTaskRequest =
    UpdateTaskRequest.newBuilder()  // No need for the header
        .setTask(task)
        .setUpdateMask(FieldMask.newBuilder().addPaths("targetTimeWindow"))
        .build();

  try {
    Task updatedTask = deliveryService.updateTask(updateTaskRequest);
  } catch (StatusRuntimeException e) {
    Status s = e.getStatus();
    switch (s.getCode()) {
       case NOT_FOUND:
         break;
       case PERMISSION_DENIED:
         break;
    }
    return;
  }

REST

Untuk menyetel jangka waktu tugas menggunakan HTTP, panggil PATCH dan gunakan updateMask untuk memperbarui parameter targetTimeWindow:

PATCH https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks/<id>?updateMask=targetTimeWindow

Di sini, <id> adalah ID unik untuk tugas. Header permintaan harus berisi kolom Authorization dengan nilai Bearer <token>, dengan <token> dikeluarkan oleh server Anda sesuai dengan pedoman yang dijelaskan dalam Peran akun layanan dan Token Web JSON.

# Set JWT, PROJECT_ID, and TASK_ID in the local environment
  curl -X PATCH "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks/${TASK_ID}?updateMask=targetTimeWindow" \
    -H "Content-type: application/json" \
    -H "Authorization: Bearer ${JWT}" \
    --data-binary @- << EOM
  {
    "targetTimeWindow": {
      "startTime": "2023-03-29T21:00:00Z",
      "endTime": "2023-03-29T23:00:00Z"
    }
  }
  EOM

Menyesuaikan visibilitas tugas

Secara default, Fleet Engine memberikan visibilitas ke dalam aktivitas tugas yang kemudian dapat ditampilkan kepada pelanggan yang menerima pengiriman dan kepada operator armada yang melacak pengiriman. Hal ini mencakup informasi seperti menunjukkan jumlah pemberhentian sebelum mengirimkan notifikasi kepada pelanggan tentang status pengiriman paket mereka. Anda dapat menyesuaikan informasi ini berdasarkan per tugas agar lebih sesuai dengan model bisnis Anda.

Bagian ini menjelaskan aturan visibilitas untuk objek yang dilacak di peta. Aturan ini berlaku untuk dua kategori objek:

  • Visibilitas penanda lokasi
  • Visibilitas data tugas untuk tugas kendaraan aktif, seperti polyline dan perkiraan waktu kedatangan

Aturan visibilitas penanda lokasi

Fleet Engine menampilkan penanda lokasi untuk lokasi pengiriman yang ditampilkan di peta, terlepas dari status pengiriman.

Aturan visibilitas data tugas

Bagian ini menjelaskan aturan visibilitas default yang berlaku untuk data tugas. Anda hanya dapat menyesuaikan tugas kendaraan aktif, yang berarti hanya tugas pengambilan dan pengantaran yang dapat menerapkan aturan visibilitas yang disesuaikan.

Tugas berikut tidak dapat disesuaikan:

  • Perhentian terjadwal
  • Tugas ketidaktersediaan
  • Tugas kendaraan tidak aktif

Aturan visibilitas tugas tidak tersedia

Secara default, kendaraan tidak muncul di peta jika setidaknya satu tugas tidak tersedia ditetapkan ke tugas yang dilacak. Misalnya, jika pengemudi beristirahat atau kendaraan sedang diisi bahan bakar di rute menuju pengiriman yang dilacak. Perkiraan waktu tiba dan perkiraan waktu penyelesaian tugas masih tersedia. Sekali lagi, Anda tidak dapat menyesuaikan aturan ini.

Visibilitas tugas kendaraan aktif

Objek TaskTrackingInfo menyediakan sejumlah elemen data yang dapat Anda tampilkan menggunakan Shipment Tracking Library. Secara default, kolom ini terlihat saat tugas ditetapkan ke kendaraan dan saat kendaraan berada dalam jarak 5 perhentian dari tugas. Visibilitas berakhir saat tugas selesai atau dibatalkan.

Anda dapat menyesuaikan konfigurasi visibilitas per tugas dengan menetapkan TaskTrackingViewConfig pada tugas saat membuat atau memperbarui tugas dalam Fleet Engine. Tindakan ini membuat aturan agar setiap elemen data tersedia.

Tabel berikut menunjukkan kolom yang dapat Anda terapkan aturan visibilitasnya.

Kolom tugas kendaraan untuk aturan visibilitas
  • Polyline rute
  • Perkiraan waktu tiba
  • Perkiraan waktu penyelesaian tugas
  • Jarak mengemudi yang tersisa ke tugas
  • Jumlah perhentian yang tersisa
  • Lokasi kendaraan

Tabel ini menunjukkan opsi visibilitas yang tersedia untuk kolom yang tercantum di atas.

Opsi visibilitas
  • Jumlah perhentian yang tersisa
  • Durasi hingga perkiraan waktu tiba
  • Jarak mengemudi yang tersisa
  • Selalu terlihat
  • Tidak pernah terlihat

Polyline rute dan aturan visibilitas lokasi kendaraan

Untuk rute yang dilacak, visibilitas polyline rute tunduk pada visibilitas kendaraan. Jika polyline rute terlihat di rute aktif tempat kendaraan tidak terlihat, lokasi kendaraan masih dapat disimpulkan di akhir polyline yang terlihat. Oleh karena itu, visibilitas polyline rute harus sama ketat atau lebih ketat daripada visibilitas kendaraan.

Ikuti aturan ini untuk memberikan kombinasi visibilitas lokasi kendaraan / polyine rute yang valid.

Polyline rute dan lokasi kendaraan menentukan opsi visibilitas yang sama

Dalam skenario ini, polyline dan lokasi kendaraan menetapkan opsi yang sama, yang mencakup:

  • jumlah perhentian yang tersisa
  • durasi hingga PWT
  • jarak mengemudi yang tersisa

Untuk mematuhi aturan, nilai visibilitas polyline rute harus kurang dari atau sama dengan nilai yang ditetapkan untuk visibilitas kendaraan. Dalam contoh ini, ambang batas penghentian yang tersisa untuk polyline ditetapkan ke 3, yang kurang dari nilai 5 yang ditentukan untuk kendaraan. Artinya, saat perjalanan yang dilacak mencapai 5 perhentian dari lokasi tugas, kendaraan akan muncul, tetapi rute untuk kendaraan tersebut tidak akan muncul hingga perjalanan mencapai 3 perhentian.

```js
"taskTrackingViewConfig": {
  "routePolylinePointsVisibility": {
    "remainingStopCountThreshold": 3
  },
  "vehicleLocationVisibility": {
    "remainingStopCountThreshold": 5
  },
}
```

Polyline rute dan lokasi kendaraan menentukan opsi visibilitas yang berbeda

Jika polyline rute dan lokasi kendaraan memiliki opsi visibilitas yang berbeda, lokasi kendaraan hanya terlihat jika kedua opsi visibilitasnya terpenuhi. Sekali lagi, visibilitas polyline tunduk pada aturan visibilitas kendaraan:

  • Selalu terlihat: Polyline rute harus menggunakan opsi visibilitas selalu terlihat jika lokasi kendaraan juga memberikan opsi visibilitas selalu terlihat yang sama.
  • Tidak pernah terlihat: Polyline rute harus menggunakan opsi visibilitas tidak pernah terlihat jika lokasi kendaraan menggunakan opsi visibilitas tidak pernah terlihat.

Berikut contohnya:

  "taskTrackingViewConfig": {
    "routePolylinePointsVisibility": {
      "remainingStopCountThreshold": 3
    },
    "vehicleLocationVisibility": {
      "remainingDrivingDistanceMetersThreshold": 3000
    },
  }

Dalam contoh ini, lokasi kendaraan hanya terlihat jika jumlah perhentian yang tersisa setidaknya 3 DAN jarak mengemudi yang tersisa setidaknya 3.000 meter.

Contoh penyesuaian visibilitas tugas

Contoh berikut menunjukkan cara menyetel tugas dengan aturan visibilitas berikut:

  • Tampilkan polyline rute jika kendaraan berada dalam jarak 3 perhentian.
  • Tampilkan perkiraan waktu tiba jika jarak mengemudi yang tersisa lebih pendek dari 5.000 meter.
  • Jangan pernah menampilkan jumlah perhentian yang tersisa.
  • Setiap kolom lainnya mempertahankan visibilitas default untuk ditampilkan saat kendaraan berada dalam jarak 5 halte dari tugas.

Lihat TaskTrackingViewConfig untuk gRPC atau REST.

gRPC

static final String PROJECT_ID = "my-delivery-co-gcp-project";
static final String TASK_ID = "task-8241890";

DeliveryServiceBlockingStub deliveryService =
  DeliveryServiceGrpc.newBlockingStub(channel);

// Task settings
String taskName = "providers/" + PROJECT_ID + "/tasks/" + TASK_ID;
Task task = Task.newBuilder()
  .setName(taskName)
  .setTaskTrackingViewConfig(
    TaskTrackingViewConfig.newBuilder()
      .setRoutePolylinePointsVisibility(
        VisibilityOption.newBuilder().setRemainingStopCountThreshold(3))
      .setEstimatedArrivalTimeVisibility(
        VisibilityOption.newBuilder().remainingDrivingDistanceMetersThreshold(5000))
      .setRemainingStopCountVisibility(
        VisibilityOption.newBuilder().setNever(true)))
  .build();

// Task request
UpdateTaskRequest updateTaskRequest =
  UpdateTaskRequest.newBuilder()  // No need for the header
      .setTask(task)
      .setUpdateMask(FieldMask.newBuilder().addPaths("taskTrackingViewConfig"))
      .build();

try {
  Task updatedTask = deliveryService.updateTask(updateTaskRequest);
} catch (StatusRuntimeException e) {
  Status s = e.getStatus();
  switch (s.getCode()) {
      case NOT_FOUND:
        break;
      case PERMISSION_DENIED:
        break;
  }
  return;
}

REST

Untuk menyetel jendela konfigurasi tampilan pelacakan tugas menggunakan HTTP, panggil PATCH dan gunakan updateMask untuk memperbarui parameter taskTrackingViewConfig:

PATCH https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks/<id>?updateMask=taskTrackingViewConfig

Contoh:

# Set JWT, PROJECT_ID, and TASK_ID in the local environment
curl -X PATCH "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks/${TASK_ID}?updateMask=taskTrackingViewConfig" \
  -H "Content-type: application/json" \
  -H "Authorization: Bearer ${JWT}" \
  --data-binary @- << EOM
{
  "taskTrackingViewConfig": {
    "routePolylinePointsVisibility": {
      "remainingStopCountThreshold": 3
    },
    "estimatedArrivalTimeVisibility": {
      "remainingDrivingDistanceMetersThreshold": 5000
    },
    "remainingStopCountVisibility": {
      "never": true
    }
  }
}
EOM

Langkah berikutnya