Aufgaben abschließen

In diesem Dokument wird davon ausgegangen, dass Sie wissen, wie Sie Aufgaben erstellen und verwenden. Es enthält spezifische Beispiele dafür, wie Sie Versandaufgaben abschließen:

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

  • Aufgabenergebnis festlegen: Nachdem eine Aufgabe geschlossen wurde, schließen Sie sie ab, indem Sie das Ergebnis auf SUCCEEDED oder FAILED festlegen. Dies ist ein wichtiger Schritt, um eine Aufgabe abzuschließen, das Lieferergebnis in der Routenfreigabe anzuzeigen und die korrekte Abrechnung für den Fleet Engine-Dienst zu gewährleisten.

Aufgabe schließen

Sie können eine Aufgabe auf folgende Arten schließen:

  • Status des Stopps für das Fahrzeug aktualisieren. Sie entfernen den Stopp aus dem Fahrzeug. Dadurch werden alle mit dem Stopp verknüpften Aufgaben geschlossen. Weitere Informationen finden Sie unter Status des Stopps aktualisieren.
  • Aufgabe aus der Liste der Fahrzeugstopps entfernen. Dazu müssen Sie die Liste der Aufgaben für den Stopp aktualisieren, wobei die geschlossene Aufgabe nicht mehr in der Liste enthalten ist. Weitere Informationen finden Sie unter Aufgabenreihenfolge aktualisieren unter Aufgaben aktualisieren.
  • Aufgabenstatus auf CLOSED setzen. Dies ist nur bei Aufgaben möglich, die nicht Fahrzeugen zugewiesen sind. In diesem Abschnitt wird dieser Ansatz beschrieben.

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

Das Schließen einer Aufgabe gibt nicht an, ob sie erfolgreich war oder nicht. Es bedeutet lediglich, dass die Aufgabe nicht mehr als in Bearbeitung betrachtet wird. Um das tatsächliche Ergebnis einer Aufgabe anzugeben und es für die Flottenverfolgung und die Routenfreigabe anzuzeigen, müssen Sie das tatsächliche Ergebnis einer Aufgabe angeben. Weitere Informationen finden Sie unten unter Aufgabenergebnis festlegen.

Aufgabenfelder zum Schließen von Aufgaben

In diesem Abschnitt werden die Pflichtfelder beschrieben, die beim Schließen einer Aufgabe festgelegt werden müssen. Fleet Engine ignoriert alle anderen Felder in der Entität für die Aktualisierung.

Pflichtfeld Wert
state State.CLOSED

Aufgabe 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 ein Feld Authorization mit dem Wert Bearer <token> enthalten, wobei <token> von Ihrem Server gemäß den Richtlinien unter Dienstkontorollen und JSON-Web-Tokens ausgestellt wird.
  • Sie müssen im Anfragetext eine Task-Entität angeben.

Beispiel für einen curl-Befehl:

 # 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 auf SUCCEEDED oder FAILED fest. Eine Aufgabe muss geschlossen sein, bevor Sie ihr Ergebnis festlegen. Fleet Engine berechnet nur Lieferaufgaben mit dem Status SUCCEEDED.

Details zum Aufgabenergebnis

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

  • Standort des Aufgabenergebnisses: Fleet Engine füllt den Standort des Aufgabenergebnisses automatisch mit dem letzten bekannten Standort des Fahrzeugs aus. Sie können stattdessen auch diesen angeben.
  • Zeitpunkt des Aufgabenergebnisses: Fleet Engine füllt dieses Feld nicht aus, aber es ist verfügbar, damit Sie es festlegen können.

Sie können eine der folgenden Methoden verwenden, um task_outcome_location und task_outcome_time festzulegen:

  • Aktualisieren Sie sie in derselben Anfrage , mit der das Aufgabenergebnis festgelegt wird.
  • Aktualisieren Sie sie später, 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 festgelegt wurde.
  • Sie können keinen Standort oder Zeitpunkt für das Aufgabenergebnis festlegen für Aufgaben ohne festgelegtes Ergebnis.

Aufgabenfelder zum Festlegen des Ergebnisses

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

Pflichtfeld Wert
taskOutcome Outcome.SUCCEEDED oder Outcome.FAILED

Optionales FeldWert
taskOutcomeLocation Der Ort, an dem die Aufgabe abgeschlossen wurde. Wenn nichts festgelegt ist, verwendet Fleet Engine standardmäßig den letzten Standort des Fahrzeugs.
taskOutcomeTime Der Zeitstempel, als die Aufgabe abgeschlossen wurde.

Beispiele für Aufgabenergebnisse

Im folgenden Beispiel wird gezeigt, 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 ein Feld Authorization mit dem Wert Bearer <token> enthalten, wobei <token> von Ihrem Server gemäß den Richtlinien unter Dienstkontorollen und JSON-Web-Tokens ausgestellt wird.
  • 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