Aufgaben abschließen

In diesem Dokument wird davon ausgegangen, dass Sie wissen, wie Aufgaben erstellt und verwendet werden. Sie bietet spezifische Beispiele für das Abschließen von Versandaufgaben wie folgt:

  • Aufgabe schließen: Das Schließen einer Versandaufgabe ändert ihren Status in CLOSED und zeigt an, dass diese Aufgabe nicht mehr aktiv ist.

  • Aufgabenergebnis festlegen: Sobald eine Aufgabe abgeschlossen ist, schließen Sie sie ab, indem Sie Das Ergebnis wird auf SUCCEEDED oder FAILED gesetzt. Dies ist ein wichtiger Teil der Fertigstellung einer Aufgabe, um das Lieferergebnis in der Journey anzuzeigen und eine korrekte Abrechnung für den Fleet Engine-Dienst sicherzustellen.

Aufgabe schließen

Sie haben folgende Möglichkeiten, eine Aufgabe zu schließen:

  • Aktualisieren Sie den Haltestellenstatus für das Fahrzeug. Sie entfernen die Haltestelle aus dem Fahrzeug, wodurch alle mit der Haltestelle verknüpften Aufgaben geschlossen werden. Weitere Informationen finden Sie unter Weitere Informationen zum Haltestellenstatus
  • Entfernen Sie die Aufgabe aus der Liste der Fahrzeughalte. Dazu gehört die Aktualisierung die Liste der Aufgaben für die Haltestelle, aber mit der geschlossenen Aufgabe längerer Teil der Liste sind. Weitere Informationen finden Sie unter Aufgabenreihenfolge aktualisieren.
  • Legen Sie als Aufgabenstatus CLOSED fest. Dies ist nur bei Aufgaben möglich, die nicht Fahrzeugen zugewiesen sind. In diesem Abschnitt wird dieser Ansatz veranschaulicht.

Nachdem Sie eine Aufgabe geschlossen haben, können Sie sie nicht wieder öffnen.

Das Schließen einer Aufgabe weist nicht auf ihren Erfolg oder Misserfolg hin. Es zeigt an, dass die Aufgabe nicht mehr als in Bearbeitung angesehen wird. Sie müssen das tatsächliche Ergebnis einer Aufgabe angeben, damit es für das Flotten-Tracking und die Freigabe von Fahrten angezeigt werden kann. Weitere Informationen finden Sie unten im Abschnitt Aufgabenergebnis festlegen.

Aufgabenfelder zum Abschließen von Aufgaben

In diesem Abschnitt werden die erforderlichen Felder dokumentiert, die beim Schließen eines für die Aufgabe. Alle anderen Felder im Element werden von der Flotten-Engine für die Aktualisierung ignoriert.

Pflichtfeld Wert
state State.CLOSED

Aufgaben direkt schließen

Die folgenden Beispiele zeigen, wie Sie eine nicht zugewiesene Aufgabe in den Status „Geschlossen“ setzen. entweder in gRPC oder über einen HTTP-REST-Anfrageaufruf an 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; ist eine eindeutige Kennung für die Aufgabe.
  • Der Anfrageheader muss das Feld Authorization mit dem Wert Inhaber <token>, wobei <token> von Ihrem Server ausgegeben wird gemäß den Richtlinien unter Dienstkontorollen und JSON-Webtokens
  • Sie müssen eine Task-Entität in den Anfragetext einfügen

Beispiel eines curl-Befehls:

 # 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

Aufgabenergebnis festlegen

Um das tatsächliche Ergebnis einer Aufgabe anzugeben, legen Sie das Ergebnis für geschlossene Aufgaben fest. in SUCCEEDED oder FAILED. Eine Aufgabe muss geschlossen sein, bevor Sie das Ergebnis festlegen können. Fleet Engine berechnet nur Lieferaufgaben mit dem Status SUCCEEDED

Details zu den Aufgabenergebnissen

Aufgaben liefern auch zusätzliche Details zum Ergebnis der Aufgabe. Sie können diese direkt festlegen und die Fleet Engine berücksichtigt Ihre Einstellungen:

  • Ort des Aufgabenergebnisses: Fleet Engine füllt die Aufgabe automatisch aus. Ergebnisort mit dem letzten bekannten Fahrzeugstandort. Sie können diese wenn Sie dies vorziehen.
  • Task Result Time: Fleet Engine füllt dieses Feld nicht aus, wird aber die Sie festlegen können.

Sie können einen der folgenden Ansätze verwenden, um task_outcome_location festzulegen und task_outcome_time:

  • Aktualisieren Sie sie in derselben Anfrage, die das Aufgabenergebnis festlegt.
  • Sie können sie später aktualisieren, nachdem Sie das Aufgabenergebnis festgelegt haben.
  • Ändern Sie sie noch einmal, nachdem sie festgelegt wurden.

Fleet Engine verhindert die folgenden Aktualisierungen im Zusammenhang mit Aufgabenergebnissen:

  • Sie können ein Aufgabenergebnis nicht mehr ändern, nachdem es auf SUCCEEDED oder FAILED.
  • Sie können keinen Ort oder eine Ergebniszeit für Aufgaben für Aufgaben festlegen, ein festgelegtes Ergebnis.

Aufgabenfelder zum Festlegen des Ergebnisses

In diesem Abschnitt werden die erforderlichen und optionalen Felder beschrieben, die beim Festlegen eines Aufgabenergebnisses festgelegt werden müssen. Fleet Engine ignoriert bei der Aktualisierung andere Felder in der Entität.

Pflichtfeld Wert
taskOutcome Outcome.SUCCEEDED oder Outcome.FAILED

Optionales FeldWert
taskOutcomeLocation Der Ort, an dem die Aufgabe abgeschlossen wurde. Wenn nicht festgelegt, Fleet Engine ist standardmäßig der letzte Fahrzeugstandort.
taskOutcomeTime Der Zeitstempel, der angibt, wann die Aufgabe abgeschlossen wurde.

Beispiele für Aufgabenergebnisse

Das folgende Beispiel zeigt die Verwendung der Java-gRPC-Bibliothek und eines HTTP- REST-Aufruf für UpdateTask, um ein Aufgabenergebnis auf SUCCEEDED festzulegen und den den Ort, an dem die Aufgabe abgeschlossen wurde.

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; ist eine eindeutige Kennung für die Aufgabe.
  • Der Anfrageheader muss das Feld Authorization mit dem Wert Inhaber <token>, wobei <token> von Ihrem Server ausgegeben wird gemäß den Richtlinien unter Dienstkontorollen und JSON-Webtokens
  • Der Anfragetext muss eine Task-Entität enthalten.
 # 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

Nächste Schritte