タスクの確定

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

  • タスクを閉じる: 発送タスクを閉じると状態が CLOSED に変わります。 は、タスクがアクティブではなくなったことを示します。

  • タスクの結果を設定する: タスクが終了したら、次の方法で確定します。 結果を SUCCEEDED または FAILED に設定します。これは重要な デリバリーの過程で成果を示せるように、タスクの Fleet Engine サービスの正確な請求を保証できます。

タスクを閉じる

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

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

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

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

タスクを終了するためのタスク フィールド

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

必須項目
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_location は、次のいずれかの方法で設定できます。 および task_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

  • &lt;id&gt; は、タスクの一意の識別子です。
  • リクエスト ヘッダーには、次の値を含む 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

次のステップ