Finalizza le attività

Questo documento presuppone che tu sappia come creare e utilizzare le attività. Fornisce esempi specifici su come finalizzare le attività di spedizione come segue:

  • 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 o FAILED. Si tratta di un passaggio importante per finalizzare un'attività, in modo da mostrare il risultato della consegna nella condivisione del percorso e garantire la fatturazione corretta per il servizio Fleet Engine.

Chiudi un'attività

Puoi chiudere un'attività nei seguenti modi:

  • Aggiorna lo stato della fermata per il veicolo. Rimuovi la fermata dal veicolo, il che chiude tutte le attività associate alla fermata. Per i dettagli, consulta Aggiorna lo stato della fermata.
  • Rimuovi l'attività dall'elenco dei veicoli fermi. Ciò comporta l'aggiornamento dell'elenco delle attività per la fermata, ma l'attività chiusa non farà più parte dell'elenco. Consulta Aggiorna l'ordine delle attività in Aggiorna le attività.
  • Imposta lo stato dell'attività su CLOSED. Questa operazione può essere eseguita solo per le attività non assegnate ai veicoli. Questa sezione illustra questo approccio.

Una volta chiusa un'attività, non potrai riaprirla.

La chiusura di un'attività non indica l'esito positivo o negativo. Indica che l'attività non è più considerata in corso. Per indicare il risultato effettivo di un'attività e visualizzarlo ai fini del monitoraggio del parco risorse e della condivisione del percorso, devi indicare il risultato effettivo di un'attività. Consulta la sezione Imposta 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

Chiudi un'attività direttamente

I seguenti esempi mostrano come impostare un'attività non assegnata su uno stato chiuso, 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> viene emesso dal tuo server in base alle linee guida descritte in Ruoli degli 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

Imposta 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 rispetterà 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 dato.
  • Ora del risultato dell'attività: Fleet Engine non compila questo campo, ma è disponibile per l'impostazione.

Per impostare task_outcome_location e task_outcome_time, puoi utilizzare uno dei seguenti approcci:

  • Aggiornali nella stessa richiesta che imposta il risultato dell'attività.
  • Aggiornarli in un secondo momento, dopo aver impostato il risultato dell'attività.
  • Modificarle di nuovo dopo averle impostate.

Fleet Engine impedisce i seguenti aggiornamenti relativi ai risultati delle attività:

  • Non puoi modificare il risultato di un'attività una volta impostato su SUCCEEDED o FAILED.
  • Non puoi impostare una posizione o un'ora di esecuzione per le attività senza un'esecuzione impostata.

Campi dell'attività per l'impostazione del 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 facoltativoValore
taskOutcomeLocation La località in cui è stata completata l'attività. Se non viene impostato, Fleet Engine utilizza per impostazione predefinita 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 REST HTTP a UpdateTask per impostare il risultato di un'attività su SUCCEEDED e impostare la località in cui l'attività è stata completata.

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> viene emesso dal tuo server in base alle linee guida descritte in Ruoli degli 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

Passaggi successivi