Finalizza le attività

In questo documento si presuppone che tu sappia come creare e utilizzare le attività. Offre esempi specifici di come completare le attività di spedizione come segue:

  • Chiudi un'attività: la chiusura di un'attività di spedizione cambia lo stato in CLOSED e indica che l'attività non è più attiva.

  • Imposta il risultato dell'attività: una volta chiusa un'attività, la finalizza entro il giorno impostando il risultato su SUCCEEDED o FAILED. Si tratta di un aspetto parte della finalizzazione di un'attività per mostrare il risultato del percorso la condivisione e la corretta fatturazione per il 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. Ciò comporta l'aggiornamento l'elenco delle attività per l'interruzione, ma con l'attività chiusa più lunga 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 per le attività non assegnate ai veicoli. Questa sezione illustra questo approccio.

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

La chiusura di un'attività non ne indica il successo o l'errore. Indica che l'attività non sia più 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 Imposta il risultato dell'attività di seguito.

Campi per la chiusura delle attività

Questa sezione documenta i campi obbligatori da impostare alla chiusura di una dell'attività. Fleet Engine ignora tutti gli altri campi nell'entità per l'aggiornamento.

Campo obbligatorio Valore
state State.CLOSED

Chiudere direttamente un'attività

I seguenti esempi mostrano come impostare lo stato chiuso di un'attività non assegnata. in gRPC o mediante 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

  • &lt;id&gt; è 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 dell'account di servizio 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

Imposta il risultato dell'attività

Per indicare il risultato effettivo di un'attività, imposti il risultato per le attività chiuse in SUCCEEDED o FAILED. Un'attività deve essere chiusa prima di impostarne il risultato. Fleet Engine addebita solo le attività di consegna con lo stato SUCCEEDED.

Dettagli dei risultati dell'attività

Le attività forniscono anche ulteriori dettagli sui risultati. Puoi impostare queste opzioni direttamente e Fleet Engine rispetta le tue impostazioni:

  • Posizione dei risultati dell'attività: Fleet Engine compila automaticamente l'attività posizione del risultato con l'ultima posizione nota del veicolo. Puoi fornire questo se preferisci.
  • Tempo risultato attività: Fleet Engine non compila questo campo, ma che puoi impostare.

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

  • Aggiornali nella stessa richiesta che imposta il risultato dell'attività.
  • Aggiornale in un secondo momento, dopo aver impostato i risultati dell'attività.
  • Modificali di nuovo dopo che sono stati impostati.

Il motore di gestione del parco risorse impedisce i seguenti aggiornamenti relativi ai risultati delle attività:

  • Non puoi modificare il risultato di un'attività dopo che è impostato su SUCCEEDED o FAILED.
  • Non puoi impostare una località per i risultati delle attività o un'ora dei risultati per le attività senza un risultato prestabilito.

Campi dell'attività per impostare i risultati

Questa sezione documenta i campi obbligatori e facoltativi da impostare quando imposti un l'esito di un'attività. Fleet Engine ignora gli altri campi dell'entità per l'aggiornamento.

Campo obbligatorio Valore
taskOutcome Outcome.SUCCEEDED o Outcome.FAILED

Campo facoltativoValore
taskOutcomeLocation Il luogo in cui è stata completata l'attività. Se non viene impostato, Fleet Engine imposta come valore predefinito l'ultima posizione del veicolo.
taskOutcomeTime Il timestamp di completamento dell'attività.

Esempi di risultati di attività

Nell'esempio seguente viene illustrato come utilizzare la libreria Java gRPC e una finestra HTTP Chiamata REST a UpdateTask per impostare il risultato di un'attività su SUCCEEDED e impostare il 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

  • &lt;id&gt; è 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 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

Passaggi successivi