Aufgaben abschließen

In diesem Dokument wird davon ausgegangen, dass Sie wissen, wie Sie Aufgaben erstellen und verwenden. Es enthält konkrete Beispiele für die Fertigstellung von Versandaufgaben:

  • Aufgabe schließen: Wenn Sie eine Versandaufgabe schließen, ändert sich ihr Status in CLOSED und sie ist nicht mehr aktiv.

  • Ergebnis der Aufgabe festlegen: Sobald eine Aufgabe geschlossen ist, können Sie sie endgültig abschließen, indem Sie das Ergebnis auf SUCCEEDED oder FAILED festlegen. Dies ist ein wichtiger Schritt, um eine Aufgabe abzuschließen, damit das Ergebnis der Lieferung in der Fahrtenübersicht angezeigt werden kann und die Abrechnung für den Fleet Engine-Dienst korrekt erfolgt.

Aufgabe schließen

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

  • Aktualisieren Sie den Haltebahnhofstatus 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 Haltestellenstatus aktualisieren.
  • Entfernen Sie die Aufgabe aus der Liste der Haltestellen. Dazu müssen Sie die Liste der Aufgaben für die Haltestelle aktualisieren, wobei die abgeschlossene Aufgabe nicht mehr Teil der Liste ist. Weitere Informationen finden Sie unter Aufgaben aktualisieren im Abschnitt „Aufgabenreihenfolge aktualisieren“.
  • Legen Sie den Aufgabenstatus auf 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 möglicherweise nicht wieder öffnen.

Das Schließen einer Aufgabe gibt keinen Hinweis auf ihren Erfolg oder Misserfolg. Das bedeutet, dass die Aufgabe nicht mehr als in Bearbeitung gilt. 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 für das Schließen von Aufgaben

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

Pflichtfeld Wert
state State.CLOSED

Aufgaben direkt schließen

In den folgenden Beispielen wird gezeigt, wie Sie den Status einer nicht zugewiesenen Aufgabe auf „Geschlossen“ setzen, entweder in gRPC oder mit einem 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

  • <id> ist eine eindeutige Kennung für die Aufgabe.
  • Der Anfrageheader muss das Feld Authorization mit dem Wert Bearer <token> enthalten. Dabei wird <token> von deinem Server gemäß den in den Abschnitten Dienstkontorollen und JSON Web Tokens beschriebenen Richtlinien ausgestellt.
  • Der Anfragetext muss ein Task-Objekt enthalten

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 für geschlossene Aufgaben entweder SUCCEEDED oder FAILED fest. Eine Aufgabe muss geschlossen sein, bevor Sie das Ergebnis festlegen können. Fleet Engine berechnet nur für Zustellaufgaben mit dem Status SUCCEEDED.

Details zum Aufgabenergebnis

Aufgaben enthalten außerdem zusätzliche Details zum Aufgabenergebnis. Sie können diese direkt festlegen und die Fleet Engine berücksichtigt Ihre Einstellungen:

  • Ort des Aufgabenergebnisses: Fleet Engine füllt den Ort des Aufgabenergebnisses automatisch mit dem letzten bekannten Fahrzeugstandort aus. Sie können diese stattdessen angeben.
  • Zeitpunkt des Aufgabenergebnisses: Dieses Feld wird von Fleet Engine nicht ausgefüllt, kann aber von Ihnen festgelegt werden.

Sie können task_outcome_location und task_outcome_time mit einer der folgenden Methoden festlegen:

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

Die Fleet Engine verhindert die folgenden Aktualisierungen im Zusammenhang mit Aufgabenergebnissen:

  • Sie können das Ergebnis einer Aufgabe nicht mehr ändern, nachdem es auf SUCCEEDED oder FAILED festgelegt wurde.
  • Sie können für Aufgaben ohne festgelegtes Ergebnis keinen Ort oder Zeitpunkt für das Ergebnis festlegen.

Aufgabenfelder zum Festlegen des Ergebnisses

In diesem Abschnitt werden die erforderlichen und optionalen Felder beschrieben, die beim Festlegen eines Aufgabenergebnisses festgelegt werden müssen. Andere Felder im Element werden von der Fleet Engine für die Aktualisierung ignoriert.

Pflichtfeld Wert
taskOutcome Outcome.SUCCEEDED oder Outcome.FAILED

Optionales FeldWert
taskOutcomeLocation Der Ort, an dem die Aufgabe erledigt wurde. Wenn dieser Wert nicht festgelegt ist, wird standardmäßig der letzte Fahrzeugstandort verwendet.
taskOutcomeTime Der Zeitstempel für den Zeitpunkt, zu dem die Aufgabe abgeschlossen wurde.

Beispiele für Aufgabenergebnisse

Das folgende Beispiel zeigt, wie Sie mit der Java gRPC-Bibliothek und einem HTTP-REST-Aufruf an UpdateTask das Ergebnis einer Aufgabe auf SUCCEEDED festlegen und den Ort festlegen, 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

  • <id> ist eine eindeutige Kennung für die Aufgabe.
  • Der Anfrageheader muss das Feld Authorization mit dem Wert Bearer <token> enthalten. Dabei wird <token> von deinem Server gemäß den in den Abschnitten Dienstkontorollen und JSON Web Tokens beschriebenen Richtlinien ausgestellt.
  • Der Anfragetext muss ein Task-Objekt 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