In diesem Dokument wird davon ausgegangen, dass Sie den Einführungsleitfaden zu geplanten 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:
- Lieferaufgaben: Für Fahraufgaben, einschließlich Abholung und Lieferung von Sendungen.
- Aufgaben für Nichtverfügbarkeit: Verwenden Sie diese Option für Zeiten, in denen Fahrer nicht verfügbar sind, z. B. bei erforderlichen Pausen.
- Geplante Stoppaufgaben: Verwenden Sie diese Option für Aufgaben, die nicht mit dem Fahren zusammenhängen, z. B. an Paketboxen oder Kundenstandorten, z. B. Zeit, um ein Gebäude zu betreten oder einen Lieferort zu finden.
In diesem Dokument wird beschrieben, wie Sie auf Ihrem Server Aufgaben erstellen, die nicht mit einer Lieferung verbunden sind. Informationen zu den Aufgabentypen für Lieferungen finden Sie unter Lieferaufgaben erstellen.
Aufgabenfelder für Aufgaben, die nicht mit dem Fahren zusammenhängen
In diesem Abschnitt werden die Aufgabenfelder beschrieben, die sowohl für Aufgaben zur Nichtverfügbarkeit als auch für Aufgaben zum geplanten Beenden erforderlich sind.
Erforderliche Aufgabenfelder
Für jede Aufgabe, die Sie in Fleet Engine erstellen, müssen Sie die erforderlichen Felder angeben. Sie können auch optionale Felder angeben. Die Fleet Engine ignoriert alle anderen Felder und gibt eine Ausnahme aus, wenn eine Anfrage zum Erstellen einer Aufgabe eine zugewiesene deliveryVehicleId enthält. Verwenden Sie UpdateDeliveryVehicleRequest, um einem Fahrzeug Aufgaben zuzuweisen. Weitere Informationen finden Sie unter Aufgaben aktualisieren.
| Feld | Wert |
|---|---|
type |
Legen Sie den Typ fest, der dem Aufgabentyp entspricht. Dies ist einer der folgenden:
|
state |
State.OPEN |
task_id |
Eindeutige Aufgaben-ID. Dies darf nicht die Sendungsnummer der Sendung sein. Wenn Sie keine Aufgaben-IDs in Ihrem System haben, können Sie einen Universally Unique Identifier (UUID) generieren. Weitere Informationen finden Sie unter Aufgaben-IDs. |
tracking_id |
Nur für PICKUP- oder DELIVERY-Aufgaben:
Die Nummer oder Kennung, die Sie zum Verfolgen einer Sendung verwenden. Geben Sie dieses Feld nicht für Aufgaben an, die keine Lieferungen sind. |
planned_location |
Nur PICKUP-, DELIVERY- oder SCHEDULED_STOP-Aufgaben: Der Ort, an dem die Aufgabe ausgeführt werden soll. Nicht erforderlich für UNAVAILABLE-Aufgaben. |
task_duration |
Die erwartete Zeit, die für die Erledigung der Aufgabe benötigt wird. Beispielsweise, um einen Parkplatz zu suchen oder zum Übergabeort zu gehen. |
Optionale Felder für Lieferaufgaben
| Feld | Wert |
|---|---|
target_time_window |
Das Zeitfenster, in dem die Aufgabe abgeschlossen 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. |
Aufgabe für Abwesenheit erstellen
Sie können eine Aufgabe erstellen, die die Nichtverfügbarkeit angibt, z. B. für Pausen des Fahrers. Beachten Sie beim Erstellen einer Aufgabe für die Nichtverfügbarkeit die folgenden Richtlinien:
- Legen Sie den Aufgabentyp auf
UNAVAILABLEfest. - Geben Sie keine Tracking-ID an.
- Sie müssen für eine Aufgabe vom Typ „Nicht verfügbar“ keinen Ort angeben. Wenn Sie dies jedoch tun, werden die Berechnungen der voraussichtlichen Ankunftszeit im Laufe des Tages genauer.
Für den Fahrzeugstandort gelten besondere Sichtbarkeitsregeln, wenn er sich auf einer UNAVAILABLE-Aufgabe für die Fahrtenfreigabe befindet.
- Verbraucher-Apps, die in die Bibliothek zur Sendungsverfolgung eingebunden sind: Wenn das Fahrzeug eine Aufgabe zur Nichtverfügbarkeit ausführt, können Nutzer der Verbraucher-App den Standort des Fahrzeugs nicht sehen, aber weiterhin Statusinformationen zu ihrer Sendung abrufen.
- In die Fleet Tracking-Bibliothek integrierte Flottenverfolgungs-Apps: Wenn das Fahrzeug eine Aufgabe vom Typ „Nicht verfügbar“ ausführt, können Flottenmanager, die die Flottenverfolgungs-App verwenden, den Standort des Fahrzeugs für diese Aufgaben sehen.
In den folgenden Beispielen wird gezeigt, wie Sie mit der Java gRPC-Bibliothek eine geplante Aufgabe für die 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.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
Wenn Sie eine Aufgabe für die Nichtverfügbarkeit in einer Serverumgebung erstellen möchten, senden Sie einen HTTP-REST-Aufruf an CreateTask:
POST https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks?taskId=<id><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 eine Task-Entität 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"
}
EOMGeplante Aufgabe zum Beenden erstellen
Sie können eine Aufgabe für einen geplanten Halt erstellen, z. B. für Aufgaben, die nicht mit dem Fahren zusammenhängen, an Kundenstandorten, für Tankstopps oder wenn ein Fahrer Sendungen von einem Zubringerfahrzeug erhält. Beachten Sie beim Erstellen einer Aufgabe zum geplanten Beenden die folgenden Richtlinien:
- Legen Sie den Aufgabentyp fest 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 geplante Aufgabe für die 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 Aufgabe zum Beenden von einer Serverumgebung aus erstellen möchten, senden Sie einen HTTP-REST-Aufruf an CreateTask:
POST https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks?taskId=<id><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 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