タスクを構成する

このドキュメントは、タスクの作成と使用方法を理解していることを前提としています。配送タスクを次の方法で構成する具体的な例を示します。

  • 配送タスクの目標時間枠を設定する: タスクが完了する時間枠 を設定します。

  • タスクの公開設定をカスタマイズする: 顧客またはフリート オペレーターに表示するタスク アクティビティの公開設定をカスタマイズします。

配送タスクのフィールドの詳細については、配送タスクを作成するをご覧ください。 既存のタスクに関する追加情報を更新する場合は、タスクの更新対象フィールドに加えて、タスクの関連する識別子も含める必要があります。

目標時間枠を設定する

目標時間枠は、タスクを完了する必要がある TimeWindow です 。たとえば、配送先に配送時間枠を通知する場合は、タスクの目標時間枠を使用してこの時間枠を把握し、アラートを生成できます。また、これを使用して過去の移動のパフォーマンスを分析することもできます。

目標時間枠は開始時刻と終了時刻で構成され、任意のタスクタイプに設定できます。目標時間枠はルーティングの動作に影響しません。

次の例は、Java gRPC ライブラリを使用して時間枠を設定する方法、または UpdateTask に HTTP 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)
    .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

HTTP を使用してタスクの時間枠を設定するには、PATCH を呼び出し、updateMask を使用して targetTimeWindow パラメータを更新します。

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

ここで、<id> はタスクの一意の識別子です。リクエスト ヘッダー には、値が Bearer <token> のフィールド Authorization が含まれている必要があります。 ここで、 <token> は、サービス アカウントのロール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

タスクの公開設定をカスタマイズする

デフォルトでは、Fleet Engine はタスク アクティビティの可視性を提供します。これにより、配送を受ける顧客と配送を追跡するフリート オペレーターの両方に表示できます。これには、荷物の配送状況に関する通知を顧客に送信する前に、経由地の数を示すなどの情報が含まれます。この情報は、タスクごとにカスタマイズして、ビジネスモデルに合わせて調整できます。

このセクションでは、地図上の追跡対象オブジェクトの公開設定ルールについて説明します。これらのルールは、次の 2 つのカテゴリのオブジェクトに適用されます。

  • 位置マーカーの公開設定
  • ポリラインや到着予定時刻など、アクティブな車両タスクのタスクデータの公開設定

位置マーカーの公開設定ルール

Fleet Engine は、配送状況に関係なく、地図に表示される配送先の位置マーカーを表示します。

タスクデータの公開設定ルール

このセクションでは、タスクデータに適用されるデフォルトの公開設定ルールについて説明します。カスタマイズできるのはアクティブな車両タスクのみです。つまり、カスタマイズされた公開設定ルールを適用できるのは、 集荷タスクと降車タスクのみです。

次のタスクはカスタマイズできません。

  • スケジュール設定された停止
  • 利用不可タスク
  • 停止中の車両タスク

利用不可タスクの公開設定ルール

デフォルトでは、追跡中のタスクに 1 つ以上の利用不可タスクが割り当てられている場合、車両は地図に表示されません。たとえば、追跡中の配送ルートで運転手が休憩している場合や、車両に給油している場合などです。到着予定時刻とタスク完了予定時刻は引き続き利用できます。このルールはカスタマイズできません。

アクティブな車両タスクの公開設定

TaskTrackingInfo オブジェクトには、配送追跡ライブラリを使用して表示できるデータ要素が多数用意されています。デフォルトでは、タスクが車両に割り当てられたときと、車両がタスクから 5 つ以内の経由地にあるときに、これらのフィールドが表示されます。タスクが完了またはキャンセルされると、表示は終了します。

Fleet Engine 内でタスクを作成または更新するときにタスクに TaskTrackingViewConfigを設定することで、タスクごとに公開設定をカスタマイズできます。これにより、個々のデータ要素を使用するためのルールが作成されます。

次の表に、公開設定ルールを適用できるフィールドを示します。

公開設定ルールの車両タスク フィールド
  • ルート ポリライン
  • 到着予定時刻
  • タスク完了予定時刻
  • タスクまでの残りの走行距離
  • 残りの経由地の数
  • 車両の場所

この表に、上記のフィールドで使用できる公開設定オプションを示します。

公開設定オプション
  • 残りの経由地の数
  • 到着予定時刻までの時間
  • 残りの走行距離
  • 常に表示
  • 表示しない

ルート ポリラインと車両の位置の公開設定ルール

追跡対象のルートの場合、ルート ポリラインの表示設定は車両の表示設定の影響を受けます。車両が表示されないアクティブなルートでルート ポリラインが表示されている場合でも、表示されているポリラインの終点から車両の位置を推測できます。したがって、ルート ポリラインの公開設定は、車両の公開設定以下にする必要があります。

有効なルート ポリライン / 車両の位置の公開設定の組み合わせを指定するには、次のルールに従ってください。

ルート ポリラインと車両の位置に同じ 公開設定オプションを指定する

このシナリオでは、ポリラインと車両の位置の両方に同じオプションが設定されます。これには次のものがあります。

  • 残りの経由地の数
  • 到着予定時刻までの時間
  • 残りの走行距離

ルールに準拠するには、ルート ポリラインの公開設定の値は、車両の公開設定に設定された値以下 にする必要があります。この例では、ポリラインの残りの経由地のしきい値は 3 に設定されています。これは、車両に指定された値 5 より小さい値です。つまり、追跡中の移動がタスクの場所から 5 つの経由地離れた場所に到達すると、車両が表示されますが、その車両のルートは移動が 3 つの経由地離れた場所に到達するまで表示されません。

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

ルート ポリラインと車両の位置に異なる 公開設定オプションを指定する

ルート ポリラインと車両の位置に異なる 公開設定オプションがある場合、車両の位置は、両方の公開設定オプションが満たされた場合にのみ表示されます。ポリラインの公開設定は、車両の公開設定ルールに従います。

  • 常に表示: 車両の位置にも同じ「常に表示」の公開設定オプションが指定されている場合は、ルート ポリラインに「常に表示」の公開設定オプションを使用する必要があります。
  • 表示しない: 車両の位置に「表示しない」の公開設定オプションが使用されている場合は、ルート ポリラインに「表示しない」の公開設定オプションを使用する必要があります。

以下に例を示します。

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

この例では、残りの経由地の数が 3 以上かつ 残りの走行距離が 3, 000 メートル以上の場合にのみ、車両の位置が表示されます。

タスクの公開設定のカスタマイズ例

次の例は、次の公開設定ルールでタスクを設定する方法を示しています。

  • 車両が 3 つ以内の経由地にある場合は、ルート ポリラインを表示します。
  • 残りの走行距離が 5,000 メートル未満の場合は、到着予定時刻を表示します。
  • 残りの経由地の数は表示しません。
  • その他の各フィールドは、車両がタスクから 5 つ以内の経由地にある場合に表示されるデフォルトの公開設定を保持します。

TaskTrackingViewConfiggRPC または 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

HTTP を使用してタスク追跡ビュー構成ウィンドウを設定するには、PATCH を呼び出し、updateMask を使用して taskTrackingViewConfig パラメータを更新します。

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

次に例を示します。

# 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

次のステップ