En este documento, se supone que sabes cómo crear y usar tareas. Proporciona ejemplos específicos para finalizar las tareas de envío de la siguiente manera:
Cerrar una tarea: Cerrar una tarea de envío cambia su estado a
CLOSED
y muestra que esa tarea ya no está activa.Establece el resultado de la tarea: Una vez que se cierra una tarea, debes finalizarla estableciendo su resultado como
SUCCEEDED
oFAILED
. Esta es una parte importante de la finalización de una tarea para mostrar el resultado de la entrega en el uso compartido del viaje y garantizar la facturación correcta del servicio de Fleet Engine.
Cómo cerrar una tarea
Puedes cerrar una tarea de las siguientes maneras:
- Actualiza el estado de detención del vehículo. Quitas la parada del vehículo, lo que, a su vez, cierra todas las tareas asociadas con la parada. Consulta Actualiza el estado de detención para obtener más detalles.
- Quita la tarea de la lista de paradas del vehículo. Esto implica actualizar la lista de tareas para la parada, pero sin la tarea cerrada como parte de la lista. Consulta Cómo actualizar el orden de las tareas en Actualiza tareas.
- Establece el estado de la tarea en
CLOSED
. Esto solo se puede hacer en tareas que no estén asignadas a vehículos. En esta sección, se muestra este enfoque.
Una vez que cierras una tarea, no podrás volver a abrirla.
El cierre de una tarea no indica su éxito o fracaso. Indica que la tarea ya no se considera en curso. Para indicar el resultado real de una tarea y que se muestre para el seguimiento de la flota y el uso compartido del viaje, debes indicar el resultado real de una tarea. Consulta Cómo establecer el resultado de la tarea a continuación.
Campos de tareas para cerrar tareas
En esta sección, se documentan los campos obligatorios que se deben configurar cuando se cierra una tarea. Fleet Engine ignora todos los demás campos de la entidad para la actualización.
Campo obligatorio | Valor |
---|---|
state |
State.CLOSED |
Cómo cerrar una tarea directamente
En los siguientes ejemplos, se muestra cómo establecer una tarea no asignada en estado cerrado, ya sea en gRPC o con una llamada de solicitud HTTP REST a UpdateTask
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> es un identificador único para la tarea.
- El encabezado de la solicitud debe contener un campo Authorization con el valor Bearer <token>, en el que tu servidor emite <token> según los lineamientos que se describen en Roles de la cuenta de servicio y Tokens web JSON.
- Debes incluir una entidad
Task
en el cuerpo de la solicitud.
Comando curl
de ejemplo
# 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
Cómo establecer el resultado de la tarea
Para indicar el resultado real de una tarea, debes establecer el resultado de las tareas cerradas como SUCCEEDED
o FAILED
. Una tarea debe cerrarse antes de que establezcas su resultado. Fleet Engine solo cobra por las tareas de entrega con el estado SUCCEEDED
.
Detalles del resultado de la tarea
Las tareas también proporcionan detalles adicionales sobre el resultado de la tarea. Puedes establecer estos parámetros directamente, y Fleet Engine respetará tu configuración:
- Ubicación del resultado de la tarea: Fleet Engine completa automáticamente la ubicación del resultado de la tarea con la última ubicación conocida del vehículo. Si lo prefieres, puedes proporcionar esta información.
- Fecha y hora del resultado de la tarea: Fleet Engine no completa este campo, pero está disponible para que lo configures.
Puedes usar cualquiera de los siguientes enfoques para establecer task_outcome_location
y task_outcome_time
:
- Actualízalos en la misma solicitud que establece el resultado de la tarea.
- Actualizarlos más tarde, después de establecer el resultado de la tarea
- Volver a modificarlos después de que se hayan configurado
Fleet Engine impide las siguientes actualizaciones relacionadas con los resultados de las tareas:
- No puedes modificar el resultado de una tarea una vez que se establece como
SUCCEEDED
oFAILED
. - No puedes establecer una ubicación ni una hora de resultado de la tarea para las tareas sin un resultado establecido.
Campos de tareas para establecer el resultado
En esta sección, se documentan los campos obligatorios y opcionales que se deben establecer cuando se configura el resultado de una tarea. Fleet Engine ignora otros campos de la entidad para la actualización.
Campo obligatorio | Valor |
---|---|
taskOutcome |
Outcome.SUCCEEDED o Outcome.FAILED |
Campo opcional | Valor |
---|---|
taskOutcomeLocation |
Es la ubicación en la que se completó la tarea. Si no se configura, Fleet Engine establece de forma predeterminada la última ubicación del vehículo. |
taskOutcomeTime |
Es la marca de tiempo del momento en que se completó la tarea. |
Ejemplos de resultados de tareas
En el siguiente ejemplo, se muestra cómo usar la biblioteca de gRPC de Java y una llamada a la API de REST de HTTP a UpdateTask
para establecer el resultado de una tarea en SUCCEEDED
y establecer la ubicación en la que se completó la tarea.
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> es un identificador único para la tarea.
- El encabezado de la solicitud debe contener un campo Authorization con el valor Bearer <token>, en el que tu servidor emite <token> según los lineamientos que se describen en Roles de la cuenta de servicio y Tokens web JSON.
- El cuerpo de la solicitud debe contener una entidad
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