In diesem Dokument wird davon ausgegangen, dass Sie wissen, wie Sie Aufgaben erstellen und verwenden. Es enthält konkrete Beispiele für den Abschluss von Versandaufgaben:
Aufgabe schließen: Wenn Sie eine Versandaufgabe schließen, ändert sich ihr Status in
CLOSED
. Das bedeutet, dass die Aufgabe nicht mehr aktiv ist.Ergebnis der Aufgabe festlegen: Sobald eine Aufgabe geschlossen ist, können Sie sie abschließen, indem Sie ihr Ergebnis auf
SUCCEEDED
oderFAILED
festlegen. Dies ist ein wichtiger Schritt, um eine Aufgabe abzuschließen, das Ergebnis der Lieferung in der Routenfreigabe zu präsentieren und eine korrekte Abrechnung des Fleet Engine-Dienstes zu gewährleisten.
Aufgabe schließen
Sie haben folgende Möglichkeiten, eine Aufgabe zu schließen:
- Status des Halts für das Fahrzeug aktualisieren: Sie entfernen den Stopp aus dem Fahrzeug, wodurch alle mit dem Stopp verknüpften Aufgaben geschlossen werden. Weitere Informationen finden Sie unter Status für Haltestelle aktualisieren.
- Entfernen Sie die Aufgabe aus der Liste der Fahrzeugstopps. Dazu muss die Liste der Aufgaben für den Stopp aktualisiert werden, wobei die abgeschlossene Aufgabe nicht mehr Teil der Liste ist. Weitere Informationen finden Sie unter Aufgaben aktualisieren im Abschnitt „Aufgabenreihenfolge ändern“.
- Setzen Sie den Aufgabenstatus auf
CLOSED
. Dies ist nur bei Aufgaben möglich, die nicht Fahrzeugen zugewiesen sind. In diesem Abschnitt wird dieser Ansatz beschrieben.
Wenn Sie eine Aufgabe schließen, können Sie sie nicht wieder öffnen.
Das Schließen einer Aufgabe gibt nicht an, ob sie erfolgreich war oder fehlgeschlagen ist. Das bedeutet, dass die Aufgabe nicht mehr als „In Bearbeitung“ gilt. Um das tatsächliche Ergebnis einer Aufgabe anzugeben und für die Flottenverfolgung und die Weitergabe von Routen anzeigen zu lassen, müssen Sie das tatsächliche Ergebnis einer Aufgabe angeben. Weitere Informationen finden Sie unten unter Ergebnis der Aufgabe festlegen.
Aufgabenfelder zum Schließen von Aufgaben
In diesem Abschnitt werden die erforderlichen Felder dokumentiert, die beim Schließen einer Aufgabe festgelegt werden müssen. Alle anderen Felder in der Entität werden von Fleet Engine für das Update ignoriert.
Pflichtfeld | Wert |
---|---|
state |
State.CLOSED |
Aufgaben direkt schließen
Die folgenden Beispiele zeigen, wie Sie eine nicht zugewiesene Aufgabe in gRPC oder mit einem HTTP-REST-Anfrageaufruf an UpdateTask
in den Status „Geschlossen“ versetzen.
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 in Dienstkontorollen und JSON Web Tokens ausgestellt wird.
- Sie müssen im Anfragetext ein
Task
-Objekt angeben.
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
Ergebnis der Aufgabe 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 können. Fleet Engine berechnet nur Zustellaufgaben mit dem Status SUCCEEDED
.
Details zum Ergebnis der Aufgabe
Aufgaben enthalten auch zusätzliche Details zum Ergebnis der Aufgabe. Sie können diese Einstellungen direkt festlegen. Fleet Engine berücksichtigt Ihre Einstellungen:
- Standort des Aufgabenergebnisses: Fleet Engine füllt den Standort des Aufgabenergebnisses automatisch mit dem letzten bekannten Fahrzeugstandort aus. Sie können stattdessen auch diese 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
auf verschiedene Arten festlegen:
- Aktualisieren Sie sie in derselben Anfrage, in der das Ergebnis der Aufgabe festgelegt wird.
- Später aktualisieren, nachdem Sie das Ergebnis der Aufgabe festgelegt haben.
- Ändern Sie sie noch einmal, nachdem sie festgelegt wurden.
Fleet Engine verhindert die folgenden Aktualisierungen im Zusammenhang mit Ergebnissen von Aufgaben:
- Sie können das Ergebnis einer Aufgabe nicht mehr ändern, nachdem es auf
SUCCEEDED
oderFAILED
festgelegt wurde. - Für Aufgaben ohne festgelegtes Ergebnis können Sie keinen Ergebnisort oder keine Ergebniszeit 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 andere Felder im Element für die Aktualisierung.
Pflichtfeld | Wert |
---|---|
taskOutcome |
Outcome.SUCCEEDED oder Outcome.FAILED |
Optionales Feld | Wert |
---|---|
taskOutcomeLocation |
Der Ort, an dem die Aufgabe erledigt wurde. Wenn nichts anderes festgelegt ist, wird standardmäßig der letzte Standort des Fahrzeugs verwendet. |
taskOutcomeTime |
Der Zeitstempel für den Zeitpunkt, zu dem die Aufgabe abgeschlossen wurde. |
Beispiele für Aufgabenergebnisse
Das folgende Beispiel zeigt, wie Sie die Java-gRPC-Bibliothek und einen HTTP-REST-Aufruf an UpdateTask
verwenden, um das Ergebnis einer Aufgabe auf SUCCEEDED
und den Ort festzulegen, 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 in Dienstkontorollen und JSON Web Tokens ausgestellt 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