Questo documento presuppone che tu sappia come creare e utilizzare le attività. Fornisce esempi specifici su come finalizzare le attività di spedizione nel seguente modo:
Chiudi un'attività: la chiusura di un'attività di spedizione ne modifica lo stato in
CLOSED
e indica che l'attività non è più attiva.Imposta il risultato dell'attività: una volta chiusa un'attività, finalizzala impostando il risultato su
SUCCEEDED
oFAILED
. Si tratta di una parte importante del completamento di un'attività per mostrare il risultato della consegna nella condivisione del viaggio e per garantire la corretta fatturazione del servizio Fleet Engine.
Chiudere un'attività
Puoi chiudere un'attività nei seguenti modi:
- Aggiorna lo stato della fermata per il veicolo. Rimuovi la fermata dal veicolo, il che a sua volta chiude tutte le attività associate alla fermata. Consulta Stato di interruzione dell'aggiornamento per i dettagli.
- Rimuovi l'attività dall'elenco delle soste del veicolo. Ciò comporta l'aggiornamento dell'elenco delle attività per la fermata, ma con l'attività chiusa che non fa più parte dell'elenco. Consulta Aggiornare l'ordine delle attività in Aggiornare le attività.
- Imposta lo stato dell'attività su
CLOSED
. Questa operazione può essere eseguita solo per le attività non assegnate ai veicoli. Questa sezione mostra questo approccio.
Una volta chiusa, un'attività non può essere riaperta.
La chiusura di un'attività non indica se è stata completata correttamente o meno. Indica che l'attività non è più considerata in corso. Per indicare l'esito effettivo di un'attività e visualizzarlo ai fini del monitoraggio della flotta e della condivisione del viaggio, devi indicare l'esito effettivo di un'attività. Consulta Impostare il risultato dell'attività di seguito.
Campi delle attività per la chiusura delle attività
Questa sezione documenta i campi obbligatori da impostare quando si chiude un'attività. Fleet Engine ignora tutti gli altri campi dell'entità per l'aggiornamento.
Campo obbligatorio | Valore |
---|---|
state |
State.CLOSED |
Chiudere un'attività direttamente
Gli esempi seguenti mostrano come impostare un'attività non assegnata sullo stato Chiuso,
in gRPC o utilizzando una chiamata di richiesta 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> è un identificatore univoco per l'attività.
- L'intestazione della richiesta deve contenere un campo Authorization con il valore Bearer <token>, dove <token> viene emesso dal server in base alle linee guida descritte in Ruoli service account e Token web JSON.
- Devi includere un'entità
Task
nel corpo della richiesta.
Esempio di comando 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
Impostare il risultato dell'attività
Per indicare il risultato effettivo di un'attività, imposta il risultato per le attività chiuse
su SUCCEEDED
o FAILED
. Un'attività deve essere chiusa prima di impostarne
il risultato. Fleet Engine addebita solo le attività di consegna con stato
SUCCEEDED
.
Dettagli del risultato dell'attività
Le attività forniscono anche ulteriori dettagli sul risultato dell'attività. Puoi impostarli direttamente e Fleet Engine rispetta le tue impostazioni:
- Posizione del risultato dell'attività: Fleet Engine compila automaticamente la posizione del risultato dell'attività con l'ultima posizione nota del veicolo. Se preferisci, puoi fornire questo.
- Ora di esito dell'attività: Fleet Engine non compila questo campo, ma è disponibile per l'impostazione.
Puoi utilizzare uno dei seguenti approcci per impostare task_outcome_location
e task_outcome_time
:
- Aggiornali nella stessa richiesta che imposta il risultato dell'attività.
- Aggiornali in un secondo momento, dopo aver impostato il risultato dell'attività.
- Modificarli di nuovo dopo che sono stati impostati.
Fleet Engine impedisce i seguenti aggiornamenti relativi ai risultati delle attività:
- Non puoi modificare il risultato di un'attività una volta impostato su
SUCCEEDED
oFAILED
. - Non puoi impostare una posizione o un orario di risultato dell'attività per le attività senza un risultato impostato.
Campi dell'attività per impostare il risultato
Questa sezione documenta i campi obbligatori e facoltativi da impostare quando si imposta un risultato dell'attività. Fleet Engine ignora gli altri campi dell'entità per l'aggiornamento.
Campo obbligatorio | Valore |
---|---|
taskOutcome |
Outcome.SUCCEEDED o Outcome.FAILED |
Campo facoltativo | Valore |
---|---|
taskOutcomeLocation |
La località in cui è stata completata l'attività. Se non è impostato, Fleet Engine imposta questo valore sull'ultima posizione del veicolo. |
taskOutcomeTime |
Timestamp di completamento dell'attività. |
Esempi di risultati delle attività
L'esempio seguente mostra come utilizzare la libreria gRPC Java e una chiamata REST HTTP a UpdateTask
per impostare il risultato di un'attività su SUCCEEDED
e impostare la posizione in cui è stata completata l'attività.
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> è un identificatore univoco per l'attività.
- L'intestazione della richiesta deve contenere un campo Authorization con il valore Bearer <token>, dove <token> viene emesso dal server in base alle linee guida descritte in Ruoli service account e Token web JSON.
- Il corpo della richiesta deve contenere un'entità
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