In diesem Dokument wird davon ausgegangen, dass Sie wissen, wie Sie Aufgaben erstellen und verwenden. Es enthält spezifische Beispiele für die Konfiguration von Versandaufgaben auf folgende Weise:
Zielzeitfenster für eine Versandaufgabe festlegen: Legen Sie das Zeitfenster für die Ausführung der Aufgabe fest.
Sichtbarkeit von Aufgaben anpassen: Sie können die Sichtbarkeit von Aufgabenaktivitäten für Kunden oder Flottenbetreiber anpassen.
Weitere Informationen zu Feldern für Versandaufgaben finden Sie unter Versandaufgaben erstellen. Wenn Sie zusätzliche Informationen zu vorhandenen Aufgaben aktualisieren, müssen Sie neben den Feldern, die Sie für die Aufgaben aktualisieren, auch die entsprechende Kennung für die Aufgabe angeben.
Zielzeitraum festlegen
Das Zielzeitfenster ist das TimeWindow, in dem die Aufgabe erledigt werden soll. Wenn Sie beispielsweise Empfängern ein Zeitfenster für die Zustellung mitteilen, können Sie dieses Zeitfenster mit dem Zielzeitfenster der Aufgabe erfassen und Benachrichtigungen generieren oder die Leistung vergangener Fahrten analysieren.
Das Zielzeitfenster besteht aus einer Start- und einer Endzeit und kann für jeden Aufgabentyp festgelegt werden. Das Zielzeitfenster hat keinen Einfluss auf das Routingverhalten.
In den folgenden Beispielen wird gezeigt, wie Sie das Zeitfenster mit der Java-gRPC-Bibliothek festlegen oder eine HTTP-REST-Anfrage an UpdateTask senden. Sie können dieses Feld auch beim Erstellen der Aufgabe festlegen.
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)
.setTargetTimeWindow(
TimeWindow.newBuilder()
.setStartTime(Timestamp.newBuilder().setSeconds(1680123600))
.setEndTime(Timestamp.newBuilder().setSeconds(1680130800)))
.build();
// Task request
UpdateTaskRequest updateTaskRequest =
UpdateTaskRequest.newBuilder() // No need for the header
.setTask(task)
.setUpdateMask(FieldMask.newBuilder().addPaths("targetTimeWindow"))
.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
Wenn Sie ein Zeitfenster für eine Aufgabe über HTTP festlegen möchten, rufen Sie PATCH auf und verwenden Sie updateMask, um den Parameter targetTimeWindow zu aktualisieren:
PATCH https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks/<id>?updateMask=targetTimeWindow
Dabei ist <id> 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.
# 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=targetTimeWindow" \
-H "Content-type: application/json" \
-H "Authorization: Bearer ${JWT}" \
--data-binary @- << EOM
{
"targetTimeWindow": {
"startTime": "2023-03-29T21:00:00Z",
"endTime": "2023-03-29T23:00:00Z"
}
}
EOMSichtbarkeit von Aufgaben anpassen
Standardmäßig bietet Fleet Engine Einblick in Aufgabenaktivitäten, die sowohl Kunden, die eine Sendung erhalten, als auch Flottenbetreibern, die Sendungen verfolgen, angezeigt werden können. Dazu gehört beispielsweise die Angabe der Anzahl der Stopps, bevor ein Kunde eine Benachrichtigung über den Paketlieferstatus erhält. Sie können diese Informationen aufgabenbezogen anpassen, um sie besser an Ihr Geschäftsmodell anzupassen.
In diesem Abschnitt werden die Sichtbarkeitsregeln für verfolgte Objekte auf der Karte beschrieben. Diese Regeln gelten für zwei Kategorien von Objekten:
- Sichtbarkeit von Standortmarkierungen
- Sichtbarkeit von Aufgabendaten für aktive Fahrzeugaufgaben, z. B. Polylinien und voraussichtliche Ankunftszeit
Regeln für die Sichtbarkeit von Standortmarkierungen
In Fleet Engine werden Standortmarkierungen für den Lieferort der Sendung auf der Karte angezeigt, unabhängig vom Status der Lieferung.
Regeln für die Sichtbarkeit von Aufgabendaten
In diesem Abschnitt werden die Standardregeln für die Sichtbarkeit beschrieben, die für Aufgabendaten gelten. Sie können nur aktive Fahrzeugaufgaben anpassen. Das bedeutet, dass benutzerdefinierte Sichtbarkeitsregeln nur für Abhol- und Zustellaufgaben gelten können.
Die folgenden Aufgaben können nicht angepasst werden:
- Geplante Stopps
- Aufgaben zur Nichtverfügbarkeit
- Inaktive Fahrzeugaufgaben
Sichtbarkeitsregeln für Aufgaben zur Nichtverfügbarkeit
Standardmäßig wird das Fahrzeug nicht auf der Karte angezeigt, wenn dem verfolgten Vorgang mindestens ein Vorgang mit dem Status „Nicht verfügbar“ zugewiesen ist. Das kann beispielsweise der Fall sein, wenn der Fahrer eine Pause macht oder das Fahrzeug auf dem Weg zur Sendung betankt wird. Die voraussichtliche Ankunftszeit und die voraussichtliche Zeit für die Erledigung der Aufgabe sind weiterhin verfügbar. Auch diese Regel kann nicht angepasst werden.
Sichtbarkeit aktiver Fahrzeugaufgaben
Das TaskTrackingInfo-Objekt enthält eine Reihe von Datenelementen, die Sie mit der Shipment Tracking Library sichtbar machen können. Standardmäßig sind diese Felder sichtbar, wenn die Aufgabe dem Fahrzeug zugewiesen ist und sich das Fahrzeug innerhalb von fünf Haltestellen von der Aufgabe befindet. Die Sichtbarkeit endet, wenn die Aufgabe abgeschlossen oder abgebrochen wird.
Sie können die Sichtbarkeitskonfiguration aufgabenbezogen anpassen, indem Sie beim Erstellen oder Aktualisieren der Aufgabe in Fleet Engine die TaskTrackingViewConfig für eine Aufgabe festlegen. So werden Regeln für die Verfügbarkeit einzelner Datenelemente erstellt.
In der folgenden Tabelle sind die Felder aufgeführt, auf die Sie Sichtbarkeitsregeln anwenden können.
| Felder für Fahrzeugaufgaben für Sichtbarkeitsregeln |
|---|
|
In dieser Tabelle sehen Sie die Sichtbarkeitsoptionen, die für die oben aufgeführten Felder verfügbar sind.
| Sichtbarkeitsoptionen |
|---|
|
Polylinien für Routen und Regeln für die Sichtbarkeit des Fahrzeugstandorts
Bei einer aufgezeichneten Route hängt die Sichtbarkeit von Routenpolylinien von der Sichtbarkeit des Fahrzeugs ab. Wenn eine Routen-Polylinie auf einer aktiven Route sichtbar ist, auf der das Fahrzeug nicht sichtbar ist, kann der Fahrzeugstandort trotzdem anhand des Endes der sichtbaren Polylinie abgeleitet werden. Daher muss die Sichtbarkeit der Routen-Polylinie so restriktiv oder restriktiver sein als die Sichtbarkeit des Fahrzeugs.
Halten Sie sich an diese Regeln, um eine gültige Kombination aus Routen-Polylinien und Sichtbarkeit des Fahrzeugstandorts anzugeben.
Für Routen-Polylinien und den Fahrzeugstandort werden dieselben Sichtbarkeitsoptionen angegeben.
In diesem Szenario werden sowohl für die Polylinie als auch für den Fahrzeugstandort dieselben Optionen festgelegt, darunter:
- verbleibende Anzahl der Stopps
- Dauer bis zur voraussichtlichen Ankunftszeit
- verbleibende Fahrstrecke
Um die Regeln einzuhalten, muss der Wert für die Sichtbarkeit von Routen-Polylinien kleiner oder gleich dem für die Sichtbarkeit von Fahrzeugen festgelegten Wert sein. In diesem Beispiel wird der verbleibende Stoppschwellenwert für die Polylinie auf 3 festgelegt, was weniger als der für das Fahrzeug angegebene Wert von 5 ist. Das bedeutet, dass das Fahrzeug angezeigt wird, wenn die verfolgte Fahrt 5 Haltestellen von der Aufgabenposition entfernt ist. Die Route für dieses Fahrzeug wird jedoch erst angezeigt, wenn die Fahrt 3 Haltestellen entfernt ist.
```js
"taskTrackingViewConfig": {
"routePolylinePointsVisibility": {
"remainingStopCountThreshold": 3
},
"vehicleLocationVisibility": {
"remainingStopCountThreshold": 5
},
}
```
Die Routen-Polylinien und der Fahrzeugstandort geben die verschiedenen Sichtbarkeitsoptionen an.
Wenn für Routen-Polylinien und Fahrzeugstandort unterschiedliche Sichtbarkeitsoptionen festgelegt sind, ist der Fahrzeugstandort nur sichtbar, wenn beide Sichtbarkeitsoptionen erfüllt sind. Auch hier unterliegt die Sichtbarkeit der Polylinie den Sichtbarkeitsregeln des Fahrzeugs:
- Immer sichtbar: Für eine Routen-Polylinie muss die Sichtbarkeitsoption Immer sichtbar verwendet werden, wenn für den Fahrzeugstandort auch die Sichtbarkeitsoption Immer sichtbar angegeben ist.
- Nie sichtbar: Für eine Routen-Polylinie muss die Sichtbarkeitsoption Nie sichtbar verwendet werden, wenn für den Fahrzeugstandort die Sichtbarkeitsoption Nie sichtbar verwendet wird.
Hier ein Beispiel:
"taskTrackingViewConfig": {
"routePolylinePointsVisibility": {
"remainingStopCountThreshold": 3
},
"vehicleLocationVisibility": {
"remainingDrivingDistanceMetersThreshold": 3000
},
}
In diesem Beispiel ist der Standort des Fahrzeugs nur sichtbar, wenn die Anzahl der verbleibenden Stopps mindestens 3 UND die verbleibende Fahrstrecke mindestens 3.000 Meter beträgt.
Beispiel für die Anpassung der Aufgabensichtbarkeit
Die folgenden Beispiele zeigen, wie Sie eine Aufgabe mit den folgenden Sichtbarkeitsregeln festlegen:
- Die Routenpolylinien werden angezeigt, wenn sich das Fahrzeug innerhalb von drei Haltestellen befindet.
- Die voraussichtliche Ankunftszeit wird angezeigt, wenn die verbleibende Fahrstrecke weniger als 5.000 Meter beträgt.
- Die verbleibende Anzahl der Stopps wird nie angezeigt.
- Für alle anderen Felder wird die Standardsichtbarkeit beibehalten, d. h., sie werden angezeigt, wenn sich das Fahrzeug innerhalb von fünf Haltestellen von der Aufgabe befindet.
Weitere Informationen zu gRPC oder REST finden Sie unter TaskTrackingViewConfig.
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)
.setTaskTrackingViewConfig(
TaskTrackingViewConfig.newBuilder()
.setRoutePolylinePointsVisibility(
VisibilityOption.newBuilder().setRemainingStopCountThreshold(3))
.setEstimatedArrivalTimeVisibility(
VisibilityOption.newBuilder().remainingDrivingDistanceMetersThreshold(5000))
.setRemainingStopCountVisibility(
VisibilityOption.newBuilder().setNever(true)))
.build();
// Task request
UpdateTaskRequest updateTaskRequest =
UpdateTaskRequest.newBuilder() // No need for the header
.setTask(task)
.setUpdateMask(FieldMask.newBuilder().addPaths("taskTrackingViewConfig"))
.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
Wenn Sie das Konfigurationsfenster für die Aufgabenverfolgung über HTTP festlegen möchten, rufen Sie PATCH auf und verwenden Sie updateMask, um den Parameter taskTrackingViewConfig zu aktualisieren:
PATCH https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks/<id>?updateMask=taskTrackingViewConfig
Beispiel:
# 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=taskTrackingViewConfig" \
-H "Content-type: application/json" \
-H "Authorization: Bearer ${JWT}" \
--data-binary @- << EOM
{
"taskTrackingViewConfig": {
"routePolylinePointsVisibility": {
"remainingStopCountThreshold": 3
},
"estimatedArrivalTimeVisibility": {
"remainingDrivingDistanceMetersThreshold": 5000
},
"remainingStopCountVisibility": {
"never": true
}
}
}
EOM