タスクの確定

このドキュメントでは、タスクの作成方法と使用方法を理解していることを前提としています。提供するサービス 発送タスクを完了する方法の具体例を以下に示します。

  • タスクをクローズする: 配送タスクをクローズすると、ステータスが CLOSED に変わり、そのタスクがアクティブでなくなったことを示します。

  • タスクの結果を設定する: タスクが終了したら、次の方法で確定します。 結果を SUCCEEDED または FAILED に設定します。これは重要な デリバリーの結果を示すために、タスクのファイナライズの一環 Fleet Engine サービスの正確な請求を保証できます。

タスクを閉じる

タスクは次の方法で閉じることができます。

  • 車両の停止ステータスを更新します。車両から停留所を削除すると、その停留所に関連付けられているすべてのタスクが閉じられます。詳しくは、 詳しくは、停止ステータスを更新してください
  • 停車地のリストからこのタスクを削除します。これには、 停車地のタスクのリストですが、終了したタスクはありません。 長くなります。タスクを更新するの「タスクの順序を更新する」をご覧ください。
  • タスクのステータスを CLOSED に設定します。この操作はタスクに対してのみ行えます。 割り当てられていることを示します。このセクションでは、このアプローチについて説明します。

一度閉じたタスクは、再開できません。

タスクの終了は、タスクの成功または失敗を意味するものではありません。意味 タスクが進行中と見なされなくなることを通知します。アラートの取り込み時に タスクの実際の結果を可視化して、フリートのトラッキングと タスクの実際の結果を示す必要があります。詳しくは、 以下にタスクの結果を設定します。

タスクを閉じるタスク フィールド

このセクションでは、 タスクを実行します。更新の際に、エンティティ内の他のフィールドはすべて無視されます。

必須項目
state State.CLOSED

タスクを直接閉じる

次の例は、未割り当てのタスクをクローズ状態に設定する方法を示しています。 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)
   .setState(Task.State.CLOSED) // You can only directly CLOSE a
   .build();                    // task that is NOT assigned to a vehicle.

 // Task request
 UpdateTaskRequest updateTaskRequest =
   UpdateTaskRequest.newBuilder()  // No need for the header
       .setTask(task)
       .setUpdateMask(FieldMask.newBuilder().addPaths("state"))
       .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

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

  • &lt;id&gt; は、タスクの一意の識別子です。
  • リクエスト ヘッダーには、次の値を含む Authorization フィールドが含まれている必要があります。 Bearer <token><token> はサーバーによって発行されます。 サービス アカウントのロールで説明されているガイドラインに従う。 JSON Web Token
  • リクエストの本文には Task エンティティを含める必要があります。

curl コマンドの例:

 # 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=state,taskOutcome,taskOutcomeTime" \
   -H "Content-type: application/json" \
   -H "Authorization: Bearer ${JWT}" \
   --data-binary @- << EOM
 {
   "state": "CLOSED",
   "taskOutcome": "SUCCEEDED",
   "taskOutcomeTime": "$(date -u +"%Y-%m-%dT%H:%M:%SZ")"
 }
 EOM

タスクの結果を設定する

タスクの実際の結果を示すために、終了したタスクの結果を設定します SUCCEEDED または FAILED のいずれか。タスクは設定する前に終了する必要があります できます。Fleet Engine では、ステータスが [ SUCCEEDED

タスクの結果の詳細

[Tasks] では、タスクの結果に関する追加の詳細も提供されます。これらは Fleet Engine は以下の設定に従います。

  • タスク結果の場所: Fleet Engine によってタスクが自動的に入力されます。 最後に認識された車両の位置情報を使用して 結果の位置を返しますこの情報は することもできます。
  • タスク結果時間: Fleet Engine はこのフィールドには入力しませんが、 設定できます

task_outcome_locationtask_outcome_time を設定するには、次のいずれかの方法を使用できます。

  • タスクの結果を設定する同じリクエストで更新します。
  • タスクの結果を設定した後に、後で更新する。
  • 設定後に再度変更してください。

Fleet Engine は、タスクの結果に関連する次の更新を防止します。

  • いったん または SUCCEEDED または FAILED
  • 設定されていないタスクには、タスクの結果の場所や結果の時間を設定できません。 決めることができます。

結果を設定するためのタスク フィールド

このセクションでは、 決定できます。更新の際に、Fleet Engine はエンティティの他のフィールドを無視します。

必須項目
taskOutcome Outcome.SUCCEEDED または Outcome.FAILED

省略可能項目
taskOutcomeLocation タスクが完了したロケーション。設定しない場合、Fleet Engine はデフォルトで最後に記録された車両の位置を設定します。
taskOutcomeTime タスク完了時のタイムスタンプ。

タスクの成果の例

次の例は、Java gRPC ライブラリと HTTP API を使用する方法を示しています。 UpdateTask への REST 呼び出しにより、タスクの結果を SUCCEEDED に設定し、 タスクが完了した場所です。

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)
   .setTaskOutcome(TaskOutcome.SUCCEEDED)
   .setTaskOutcomeTime(now())
   .setTaskOutcomeLocation(               // Grand Indonesia East Mall
     LocationInfo.newBuilder().setPoint(
       LatLng.newBuilder().setLatitude(-6.195139).setLongitude(106.820826)))
   .build();

 // Task request
 UpdateTaskRequest updateTaskRequest =
   UpdateTaskRequest.newBuilder()  // No need for the header
       .setTask(task)
       .setUpdateMask(FieldMask.newBuilder().addPaths("task_outcome", "task_outcome_time", "task_outcome_location"))
       .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

PATCH https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks/<id>?updateMask=taskOutcome,taskOutcomeTime,taskOutcomeLocation

  • <id> はタスクの一意の ID です。
  • リクエスト ヘッダーには、次の値を含む Authorization フィールドが含まれている必要があります。 Bearer <token><token> はサーバーによって発行されます。 サービス アカウントのロールで説明されているガイドラインに従う。 JSON Web Token
  • リクエストの本文には Task エンティティを含める必要があります。
 # 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=taskOutcome,taskOutcomeTime,taskOutcomeLocation" \
   -H "Content-type: application/json" \
   -H "Authorization: Bearer ${JWT}" \
   --data-binary @- << EOM
 {
   "taskOutcome": "SUCCEEDED",
   "taskOutcomeTime": "$(date -u +"%Y-%m-%dT%H:%M:%SZ")",
   "taskOutcomeLocation": {
     "point": {
       "latitude": -6.195139,
       "longitude": 106.820826
     }
   }
 }
 EOM

次のステップ