Mengonfigurasi tugas

Dokumen ini mengasumsikan Anda memahami cara membuat dan menggunakan tugas. Menyediakan contoh spesifik untuk cara mengonfigurasi tugas pengiriman dengan cara berikut:

  • Menetapkan periode target waktu untuk tugas pengiriman: Menetapkan periode waktu agar tugas tersebut dapat diselesaikan.

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

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

Menyetel periode waktu target

Jendela waktu target adalah TimeWindow selama tugas harus selesai. Misalnya, jika Anda mengomunikasikan periode waktu pengiriman ke pengiriman penerima, Anda dapat menggunakan jendela waktu target tugas untuk menangkap periode waktu ini dan menghasilkan pemberitahuan, atau menggunakannya untuk menganalisis performa perjalanan sebelumnya.

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

Contoh berikut menunjukkan cara menyetel periode waktu menggunakan Java gRPC library atau cara membuat permintaan REST HTTP ke UpdateTask. Anda dapat tetapkan 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 &lt;id&gt; adalah pengidentifikasi unik untuk tugas tersebut. Header permintaan harus berisi kolom Authorization dengan nilai Bearer <token>, yang mana &lt;token&gt; diterbitkan oleh server Anda sesuai dengan panduan 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

Sesuaikan visibilitas tugas

Secara default, Fleet Engine memberikan visibilitas ke aktivitas tugas yang kemudian dapat ditampilkan kepada pelanggan yang menerima pengiriman dan operator fleet melacak pengiriman. Hal ini mencakup informasi seperti menunjukkan jumlah berhenti sebelum mengirimkan pemberitahuan kepada pelanggan tentang pengiriman paket . Anda dapat menyesuaikan informasi ini per tugas agar lebih sesuai model bisnis Anda.

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

  • Visibilitas penanda lokasi
  • Visibilitas data tugas untuk tugas kendaraan aktif, seperti polyline dan PWT

Aturan visibilitas penanda lokasi

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

Aturan visibilitas data tugas

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

Tugas berikut mungkin tidak dapat disesuaikan:

  • Perhentian terjadwal
  • Tugas ketidaktersediaan
  • Tugas kendaraan tidak aktif

Aturan visibilitas tugas ketidaktersediaan

Secara default, kendaraan tidak akan muncul di peta jika setidaknya satu ketidaktersediaan ditetapkan ke tugas yang sedang dilacak. Misalnya, jika pengemudi sedang beristirahat atau kendaraan sedang mengisi bahan bakar di rute ke pengiriman yang terlacak. Perkiraan waktu kedatangan 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 dapat membuatnya terlihat menggunakan Shipment Tracking Library. Secara default, kolom ini terlihat saat tugas diberikan ke kendaraan dan saat kendaraan itu dalam 5 perhentian dari tugas. Visibilitas berakhir saat tugas selesai atau dibatalkan.

Anda bisa menyesuaikan konfigurasi visibilitas per tugas dengan mengatur TaskTrackingViewConfig pada tugas saat membuat atau memperbarui tugas dalam Fleet Engine. Ini membuat aturan untuk elemen data individual yang yang tersedia.

Tabel berikut menunjukkan kolom tempat Anda dapat menerapkan aturan visibilitas.

Kolom tugas kendaraan untuk aturan visibilitas
  • Merutekan polyline
  • Perkiraan waktu tiba
  • Perkiraan waktu penyelesaian tugas
  • Jarak mengemudi lainnya ke tugas
  • Jumlah perhentian tersisa
  • Lokasi kendaraan

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

Opsi visibilitas
  • Jumlah perhentian tersisa
  • Durasi hingga perkiraan waktu kedatangan
  • Jarak mengemudi 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 pada rute yang aktif jika kendaraan tidak terlihat, lokasi kendaraan masih dapat disimpulkan oleh akhir polyline yang terlihat. Oleh karena itu, rutekan polyline visibilitasnya harus seketat atau lebih ketat daripada visibilitas kendaraan.

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

Polyline rute dan lokasi kendaraan menentukan opsi visibilitas yang sama

Dalam skenario ini, polyline dan lokasi kendaraan ditetapkan dengan nilai yang sama pilihan, yang meliputi:

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

Untuk mematuhi aturan, nilai untuk visibilitas polyline rute harus lebih kecil dari atau sama dengan nilai yang ditetapkan untuk visibilitas kendaraan. Dalam contoh ini, batas perhentian yang tersisa untuk polyline ditetapkan ke 3, yang kurang dari nilai 5 yang ditentukan untuk kendaraan. Artinya, ketika jalur yang dilacak perjalanan mencapai 5 perhentian dari lokasi tugas, kendaraan muncul, tetapi rute untuk kendaraan tersebut tidak akan muncul hingga perjalanan berjarak 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 saat kedua opsi visibilitasnya puas. Sekali lagi, visibilitas polyline tunduk kepada aturan visibilitas dari kendaraan:

  • Selalu terlihat: Polyline rute harus menggunakan garis selalu terlihat opsi visibilitas saat lokasi kendaraan juga memberikan selalu terlihat.
  • Tidak pernah terlihat: Polyline rute harus menggunakan visibilitas tidak pernah terlihat saat lokasi kendaraan menggunakan opsi visibilitas tidak pernah terlihat.

Contohnya sebagai berikut:

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

Dalam contoh ini, lokasi kendaraan hanya terlihat jika perhentian yang tersisa jumlahnya minimal 3 DAN jarak mengemudi yang tersisa minimal 3000 meter.

Contoh penyesuaian visibilitas tugas

Contoh berikut menunjukkan cara menetapkan tugas dengan aturan visibilitas:

  • Tampilkan polyline rute jika kendaraan berada dalam 3 perhentian.
  • Menampilkan PWT jika jarak mengemudi yang tersisa lebih pendek dari 5.000 meter.
  • Jangan pernah menampilkan jumlah perhentian yang tersisa.
  • Satu kolom lainnya mempertahankan visibilitas default yang ditampilkan saat kendaraan berada dalam jarak 5 perhentian 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