In diesem Dokument wird davon ausgegangen, dass Sie den Einführungsleitfaden zu geplante Aufgaben im Abschnitt Einführung in die Fleet Engine sowie den Abschnitt Was ist eine geplante Aufgabe? in diesem Abschnitt gelesen haben.
Fleet Engine für geplante Aufgaben bietet verschiedene allgemeine Kategorien von Aufgaben:
- Versandaufgaben: Für Fahraufgaben, einschließlich Abholung und Zustellung von Sendungen.
- Tasks für Nichtverfügbarkeit: Verwenden Sie diese, wenn Fahrer nicht verfügbar sind, z. B. während vorgeschriebener Pausen.
- Aufgaben für geplante Haltestellen: Verwenden Sie diese für Aufgaben, die nicht mit dem Fahren zu tun haben, an Abholstellen oder Kundenstandorten, z. B. die Zeit, die zum Betreten eines Gebäudes oder zum Auffinden eines Lieferorts benötigt wird.
In diesem Dokument erfahren Sie, wie Sie Aufgaben ohne Versand auf Ihrem Server erstellen. Informationen zu den Arten von Versandaufgaben finden Sie unter Versandaufgaben erstellen.
Aufgabenfelder für Aufgaben, die nicht mit dem Auto ausgeführt werden
In diesem Abschnitt werden die Aufgabenfelder dokumentiert, die sowohl für Nichtverfügbarkeit als auch für geplante Aufgaben zum Beenden erforderlich sind.
Erforderliche Aufgabenfelder
Für jede Aufgabe, die Sie in Fleet Engine erstellen, müssen Sie die Pflichtfelder und die optionalen Felder angeben. Fleet Engine ignoriert alle anderen Felder und löst eine Ausnahme aus, wenn eine Anfrage zur Aufgabenerstellung eine zugewiesene deliveryVehicleId
bereitstellt. Verwenden Sie UpdateDeliveryVehicleRequest
, um einem Fahrzeug Aufgaben zuzuweisen. Weitere Informationen finden Sie unter Aufgaben aktualisieren.
Feld | Wert |
---|---|
type |
Legen Sie als Typ den Typ fest, der dem Aufgabentyp entspricht:
|
state |
State.OPEN |
task_id |
Eindeutige Aufgaben-ID. Dies darf nicht die Tracking-Nummer für die Sendung sein. Wenn Sie keine Aufgaben-IDs in Ihrem System haben, können Sie eine universell eindeutige Kennung (Universally Unique Identifier, UUID) generieren. Weitere Informationen finden Sie unter Aufgaben-IDs. |
tracking_id |
Nur PICKUP - oder DELIVERY -Aufgaben:
Die Nummer oder Kennung, mit der Sie eine Sendung verfolgen. Geben Sie dieses Feld nicht für Aufgaben an, die nicht zum Versand gehören. |
plannedLocation |
Nur Aufgaben vom Typ PICKUP , DELIVERY oder SCHEDULED_STOP : Der Ort, an dem die Aufgabe erledigt werden soll. Nicht erforderlich für UNAVAILABLE -Aufgaben. |
taskDuration |
Die voraussichtliche Zeit, die für die Erledigung der Aufgabe benötigt wird. Zum Beispiel, um nach einem Parkplatz zu suchen oder zum Übergabeort zu laufen. |
Optionale Felder für Versandaufgaben
Feld | Wert |
---|---|
targetTimeWindow |
Das Zeitfenster, in dem die Aufgabe erledigt werden soll. Dieses Feld hat keinen Einfluss auf das Routingverhalten. |
task_tracking_view_config |
Nur PICKUP - oder DELIVERY -Aufgaben: Die Konfiguration für das Aufgaben-Tracking, die angibt, welche Datenelemente unter welchen Umständen für die Endnutzer sichtbar sind. |
attributes |
Eine Liste benutzerdefinierter Aufgabenattribute. Jedes Attribut muss einen eindeutigen Schlüssel haben. |
Nichtverfügbarkeitsaufgabe erstellen
Sie können eine Aufgabe erstellen, die eine Nichtverfügbarkeit angibt, z. B. für Fahrerpausen. Beachten Sie die folgenden Richtlinien, um eine Nichtverfügbarkeitsaufgabe zu erstellen:
- Legen Sie den Aufgabentyp auf
UNAVAILABLE
fest. - Geben Sie keine Tracking-ID an.
- Auch wenn Sie keinen Standort für eine Nichtverfügbarkeitsaufgabe angeben müssen, werden dadurch während des Tages erweiterte ETA-Berechnungen möglich.
Für den Fahrzeugstandort gelten spezielle Sichtbarkeitsregeln, wenn es sich in einer UNAVAILABLE
-Aufgabe für die Fahrtfreigabe befindet.
- In die Bibliothek für die Sendungsverfolgung eingebundene Verbraucher-Apps: Wenn für das Fahrzeug eine Nichtverfügbarkeitsaufgabe ausgeführt wird, können Nutzer der Nutzer-App den Fahrzeugstandort nicht sehen, jedoch weiterhin Statusinformationen für ihre Sendung.
- In die Flottenverfolgungsbibliothek eingebundene Apps für die Flottenverfolgung: Wenn für das Fahrzeug eine Aufgabe zur Nichtverfügbarkeit ausgeführt wird, können Flottenmanager, die die Flottenverfolgungs-App verwenden, bei Aufgaben, die nicht verfügbar sind, den Fahrzeugstandort sehen.
Die folgenden Beispiele zeigen, wie Sie eine geplante Nichtverfügbarkeitsaufgabe mit der Java-gRPC-Bibliothek erstellen oder eine HTTP-REST-Anfrage an CreateTask
stellen.
gRPC
static final String PROJECT_ID = "my-delivery-co-gcp-project";
DeliveryServiceBlockingStub deliveryService =
DeliveryServiceGrpc.newBlockingStub(channel);
// Task settings
String parent = "providers/" + PROJECT_ID;
Task task = Task.newBuilder()
.setType(Task.Type.UNAVAILABLE)
.setState(Task.State.OPEN)
.setTaskDuration(
Duration.newBuilder().setSeconds(60 * 60)) // 1hr break
.build();
// Task request
CreateTaskRequest createTaskRequest =
CreateTaskRequest.newBuilder() // No need for the header
.setParent(parent) // Avoid using auto-incrementing IDs for the taskId
.setTaskId("task-8241890") // Task ID assigned by the Provider
.setTask(task) // Initial state
.build();
// Error handling
// If Fleet Engine does not have task with that ID and the credentials of the
// requestor pass, the service creates the task successfully.
try {
Task createdTask = deliveryService.createTask(createTaskRequest);
} catch (StatusRuntimeException e) {
Status s = e.getStatus();
switch (s.getCode()) {
case ALREADY_EXISTS:
break;
case PERMISSION_DENIED:
break;
}
return;
}
```
REST
Führen Sie einen HTTP-REST-Aufruf an CreateTask
aus, um eine Nichtverfügbarkeitsaufgabe in einer Serverumgebung zu erstellen:
POST https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks?taskId=<id>
<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 mit den entsprechenden Feldern enthalten, die unter Aufgabenfelder für Aufgaben, die nicht mit dem Fahren zusammenhängen beschrieben sind.
Beispiel eines curl
-Befehls:
# Set $JWT, $PROJECT_ID, and $TASK_ID in the local environment
curl -X POST "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks?taskId=${TASK_ID}" \
-H "Content-type: application/json" \
-H "Authorization: Bearer ${JWT}" \
--data-binary @- << EOM
{
"type": "UNAVAILABLE",
"state": "OPEN",
"plannedLocation": {
"point": {
"latitude": -6.195139,
"longitude": 106.820826
}
},
"taskDuration": "300s"
}
EOM
Geplante Stoppaufgabe erstellen
Sie können eine Aufgabe für eine geplante Haltestelle erstellen, z. B. für nicht gefahrene Aufgaben an Kundenstandorten, für Tankhaltestellen oder für Sendungen von einem Feeder. Beachten Sie beim Erstellen einer geplanten Haltestellenaufgabe die folgenden Richtlinien:
- Aufgabentyp festlegen auf
- Geben Sie keine Tracking-ID an.
- Optional können Sie einen Standort angeben.
In den folgenden Beispielen wird gezeigt, wie Sie mit der Java gRPC-Bibliothek eine Aufgabe für die geplante Nichtverfügbarkeit erstellen oder eine HTTP-REST-Anfrage an CreateTask
senden.
gRPC
static final String PROJECT_ID = "my-delivery-co-gcp-project";
DeliveryServiceBlockingStub deliveryService =
DeliveryServiceGrpc.newBlockingStub(channel);
// Task settings
String parent = "providers/" + PROJECT_ID;
Task task = Task.newBuilder()
.setType(Task.Type.SCHEDULED_STOP)
.setState(Task.State.OPEN)
.setPlannedLocation( // Grand Indonesia East Mall
LocationInfo.newBuilder().setPoint(
LatLng.newBuilder().setLatitude(-6.195139).setLongitude(106.820826)))
.setTaskDuration(
Duration.newBuilder().setSeconds(2 * 60))
.build();
// Task request
CreateTaskRequest createTaskRequest =
CreateTaskRequest.newBuilder() // No need for the header
.setParent(parent)
.setTaskId("task-8241890") // Task ID assigned by the Provider
.setTrip(task) // Initial state
.build();
// Error handling
// If Fleet Engine does not have task with that ID and the credentials of the
// requestor pass, the service creates the task successfully.
try {
Task createdTask = deliveryService.createTask(createTaskRequest);
} catch (StatusRuntimeException e) {
Status s = e.getStatus();
switch (s.getCode()) {
case ALREADY_EXISTS:
break;
case PERMISSION_DENIED:
break;
}
return;
}
```
REST
Wenn Sie eine geplante Ausstiegsaufgabe aus einer Serverumgebung erstellen möchten, führen Sie einen HTTP-REST-Aufruf an CreateTask
aus:
POST https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks?taskId=<id>
<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 eine Task
-Entität enthalten:
Beispiel eines curl
-Befehls:
# Set $JWT, $PROJECT_ID, and $TASK_ID in the local environment
curl -X POST "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks?taskId=${TASK_ID}" \
-H "Content-type: application/json" \
-H "Authorization: Bearer ${JWT}" \
--data-binary @- << EOM
{
"type": "SCHEDULED_STOP",
"state": "OPEN",
"plannedLocation": {
"point": {
"latitude": -6.195139,
"longitude": 106.820826
}
},
"taskDuration": "600s"
}
EOM