In diesem Dokument wird davon ausgegangen, dass Sie wissen, wie Aufgaben erstellt und verwendet werden. 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.Aufgabenergebnis festlegen: Sobald eine Aufgabe geschlossen ist, schließen Sie sie ab, indem Sie das Ergebnis auf
SUCCEEDED
oderFAILED
setzen. Dies ist ein wichtiger Teil des Abschlusses einer Aufgabe, um das Lieferergebnis in der Journey Sharing 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 wiederum alle mit der Haltestelle verbundenen Aufgaben geschlossen werden. Weitere Informationen
- Entfernen Sie die Aufgabe aus der Liste der Fahrzeughalte. 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 Aufgabenreihenfolge aktualisieren.
- Legen Sie als Aufgabenstatus
CLOSED
fest. Dies ist nur für Aufgaben möglich, die keinen 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. Um das tatsächliche Ergebnis einer Aufgabe anzugeben und dieses für die Flottenverfolgung und die gemeinsame Nutzung der Reise anzuzeigen, müssen Sie das tatsächliche Ergebnis einer Aufgabe angeben. 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 das Ergebnis für geschlossene Aufgaben entweder auf SUCCEEDED
oder FAILED
fest. Eine Aufgabe muss geschlossen werden, bevor Sie ihr Ergebnis festlegen. Fleet Engine berechnet nur für Zustellaufgaben mit dem Status SUCCEEDED
.
Details zu den Aufgabenergebnissen
Aufgaben enthalten außerdem zusätzliche Details zum Aufgabenergebnis. Sie können diese direkt festlegen und die Fleet Engine berücksichtigt Ihre Einstellungen:
- Standort des Aufgabenergebnisses: Fleet Engine fügt für den Aufgabenergebnisort automatisch den letzten bekannten Fahrzeugstandort ein. 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 einen der folgenden Ansätze verwenden, um task_outcome_location
und task_outcome_time
festzulegen:
- 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.
Die Fleet Engine verhindert die folgenden Aktualisierungen im Zusammenhang mit Aufgabenergebnissen:
- Sie können ein Aufgabenergebnis nicht mehr ändern, nachdem es auf
SUCCEEDED
oderFAILED
gesetzt wurde. - Für Aufgaben ohne festgelegtes Ergebnis können Sie keinen Ort oder eine Ergebniszeit für Aufgaben 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. Fleet Engine ignoriert bei der Aktualisierung andere Felder in der Entität.
Pflichtfeld | Wert |
---|---|
taskOutcome |
Outcome.SUCCEEDED oder Outcome.FAILED |
Optionales Feld | Wert |
---|---|
taskOutcomeLocation |
Der Ort, an dem die Aufgabe erledigt wurde. Wenn die Richtlinie nicht konfiguriert ist, wird in Fleet Engine 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, wobei <token> von Ihrem Server gemäß den unter Dienstkontorollen und JSON-Webtokens beschriebenen Richtlinien ausgegeben wird.
- 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