작업 완료

이 문서에서는 사용자가 작업을 만들고 사용하는 방법을 이해하고 있다고 가정합니다. 이 API는 배송 작업을 마무리하는 방법에 관한 구체적인 예는 다음과 같습니다.

  • 할 일 닫기: 배송 작업을 닫으면 상태가 CLOSED로 변경되고 해당 작업이 더 이상 활성 상태가 아님을 나타냅니다.

  • 작업 결과 설정: 작업이 종료되면 다음을 사용하여 완료합니다. 결과를 SUCCEEDED 또는 FAILED로 설정합니다. 이것은 여정에서 배포 결과를 보여주기 위해 작업을 마무리하는 일의 일부로 Fleet Engine 서비스에 대한 올바른 청구가 이루어지도록 합니다.

할 일 닫기

다음과 같은 방법으로 작업을 닫을 수 있습니다.

  • 차량의 정차 상태를 업데이트합니다. 다음 위치에서 경유지를 삭제합니다. 차량에 연결되며, 그러면 정류장과 관련된 모든 작업이 종료됩니다. 자세한 내용은 업데이트 중지 상태를 참고하세요.
  • 차량 정류장 목록에서 작업을 삭제합니다. 이렇게 하려면 중지를 위한 작업 목록이지만, 닫힌 작업이 없으면 더 길어질 수 있습니다. 할 일 업데이트에서 할 일 순서 업데이트를 참고하세요.
  • 작업 상태를 CLOSED로 설정합니다. 이 작업은 차량에 할당됩니다. 이 섹션에서는 이러한 접근 방식을 보여줍니다.

할 일을 닫은 후에는 다시 열 수 없습니다.

태스크를 닫는다고 해서 작업의 성공이나 실패가 의미하는 것은 아닙니다. 의미 더 이상 진행 중인 것으로 간주되지 않습니다 입찰 전략이 플리트 추적 및 플릿 추적 및 운영 체제에 표시하기 위해 작업의 실제 결과를 나타내야 합니다. 자세한 내용은 아래에서 작업 결과를 설정합니다.

작업 닫기를 위한 작업 필드

이 섹션에서는 태스크에 맞추는 것입니다. Fleet 엔진은 업데이트를 위해 항목의 다른 모든 필드를 무시합니다.

필수 입력란
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;는 작업의 고유 식별자입니다.
  • 요청 헤더에는 값이 Bearer <token>Authorization 필드가 포함되어야 합니다. 여기서 <token>서비스 계정 역할JSON 웹 토큰에 설명된 가이드라인에 따라 서버에서 발급합니다.
  • 요청 본문에 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

작업 결과 세부정보

태스크는 태스크 결과에 대한 추가 세부정보도 제공합니다. 사용자는 이러한 직접 설정하며 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 작업이 완료된 타임스탬프입니다.

태스크 결과 예시

다음 예에서는 자바 gRPC 라이브러리와 HTTP 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 웹 토큰.
  • 요청 본문에는 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

다음 단계