Questo documento presuppone che tu sappia come creare e utilizzare le attività. Fornisce esempi specifici su come finalizzare le attività di spedizione come segue:
Chiudere 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à, puoi finalizzarla impostando il risultato su
SUCCEEDED
oFAILED
. Si tratta di un aspetto importante per finalizzare un'attività al fine di mostrare il risultato della pubblicazione nella condivisione del percorso e garantire la fatturazione corretta del servizio Fleet Engine.
Chiudere un'attività
Puoi chiudere un'attività nei seguenti modi:
- Aggiorna lo stato della fermata del veicolo. Rimuovi la fermata dal veicolo, che a sua volta chiude tutte le attività associate alla fermata. Per maggiori dettagli, consulta Aggiornare lo stato della fermata.
- Rimuovi l'attività dall'elenco delle fermate del veicolo. Questo comporta l'aggiornamento dell'elenco delle attività per la fermata, ma l'attività chiusa non fa più parte dell'elenco. Consulta Aggiorna l'ordine delle attività in Aggiornare le attività.
- Imposta lo stato dell'attività su
CLOSED
. Questa operazione può essere eseguita solo sulle attività non assegnate ai veicoli. Questa sezione illustra questo approccio.
Una volta chiusa un'attività, non potrai riaprirla.
La chiusura di un'attività non ne indica il successo o l'errore. Indica che l'attività non è più considerata in corso. Per indicare il risultato effettivo di un'attività e visualizzarlo a fini di monitoraggio del parco veicoli e condivisione del percorso, devi indicare il risultato effettivo di un'attività. Consulta la sezione Impostare il risultato dell'attività di seguito.
Campi attività per la chiusura delle attività
Questa sezione descrive i campi obbligatori da impostare quando si chiude un'attività. Il motore di gestione del parco veicoli ignora tutti gli altri campi dell'entità per l'aggiornamento.
Campo obbligatorio | Valore |
---|---|
state |
State.CLOSED |
Chiudere direttamente un'attività
Gli esempi riportati di seguito mostrano come impostare uno stato chiuso per un'attività non assegnata,
in gRPC o utilizzando una chiamata di richiesta REST HTTP 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 dell'attività.
- L'intestazione della richiesta deve contenere un campo Authorization con il valore Bearer <token>, dove <token> è emesso dal tuo server secondo le linee guida descritte in Ruoli dell'account di servizio e Token web JSON.
- Devi includere un'entità
Task
nel corpo della richiesta
Comando curl
di esempio:
# 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 l'esito 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 importazione con stato SUCCEEDED
.
Dettagli sul risultato dell'attività
Le attività forniscono anche ulteriori dettagli sull'esito dell'attività. Puoi impostarle direttamente e Fleet Engine rispetta le tue impostazioni:
- Posizione risultato attività: Fleet Engine compila automaticamente la posizione del risultato dell'attività con l'ultima posizione nota del veicolo. Se preferisci, puoi fornire questo valore.
- Ora esito attività: Fleet Engine non compila questo campo, ma puoi impostarlo.
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à.
- Aggiornarle in un secondo momento, dopo aver impostato il risultato dell'attività.
- Modificarle di nuovo dopo che sono state impostate.
Il motore di gestione del parco risorse impedisce i seguenti aggiornamenti relativi ai risultati delle attività:
- Non puoi modificare l'esito di un'attività una volta impostato su
SUCCEEDED
oFAILED
. - Non puoi impostare la posizione o l'ora del risultato di un'attività per le attività senza un risultato impostato.
Campi delle attività per l'impostazione del risultato
Questa sezione descrive i campi obbligatori e facoltativi da impostare quando si imposta un risultato dell'attività. Il motore di gestione del parco veicoli ignora gli altri campi dell'entità per l'aggiornamento.
Campo obbligatorio | Valore |
---|---|
taskOutcome |
Outcome.SUCCEEDED o Outcome.FAILED |
Campo facoltativo | Valore |
---|---|
taskOutcomeLocation |
La posizione in cui è stata completata l'attività. Se non è impostato, Fleet Engine imposta come valore predefinito l'ultima posizione del veicolo. |
taskOutcomeTime |
Il timestamp del completamento dell'attività. |
Esempi di risultati delle attività
L'esempio seguente mostra come utilizzare la libreria gRPC Java e una chiamata HTTP
REST a UpdateTask
per impostare l'esito 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 dell'attività.
- L'intestazione della richiesta deve contenere un campo Authorization con il valore Bearer <token>, dove <token> è emesso dal tuo server secondo le linee guida descritte in Ruoli dell'account di servizio 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