이 문서에서는 사용자가 작업을 만들고 사용하는 방법을 이해하고 있다고 가정합니다. 이 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
- <id>는 작업의 고유 식별자입니다.
- 요청 헤더에는 값이 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
- <id>는 작업의 고유 식별자입니다.
- 요청 헤더에는 값이 있는 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