In diesem Dokument wird vorausgesetzt, dass Sie die Einführung Geplante Aufgaben auch im Abschnitt Introduction to Fleet Engine (Einführung in Fleet Engine) Was ist eine geplante Aufgabe? in diesem Abschnitt.
Fleet Engine für geplante Aufgaben bietet verschiedene allgemeine Kategorien von Aufgaben:
- Versandaufgaben: Für Fahrtaufgaben, einschließlich Abholung und Lieferung von Lieferungen.
- Nichtverfügbarkeitsaufgaben: Wählen Sie diese Option für Zeiten aus, in denen keine Fahrer verfügbar sind, z. B. wie bei erforderlichen Pausen.
- Geplante Haltestellenaufgaben: für nicht angefahrene Aufgaben an Briefkästen oder an Kunden, Orte, z. B. die Uhrzeit, zu der ein Gebäude betreten oder eine Lieferstelle gefunden werden muss.
In diesem Dokument erfahren Sie, wie Sie Aufgaben ohne Versand auf Ihrem Server erstellen. Für Arten von Versandaufgaben finden Sie unter Versandaufgaben erstellen.
Aufgabenfelder für andere Aufgaben
In diesem Abschnitt werden die Aufgabenfelder dokumentiert, die sowohl für die Nichtverfügbarkeit und geplante Stopp-Aufgaben.
Erforderliche Aufgabenfelder
Für jede Aufgabe, die Sie in Fleet Engine erstellen, müssen Sie die erforderlichen
und können auch beliebige optionale Felder enthalten. Fleet Engine
ignoriert alle anderen Felder und löst eine Ausnahme aus, wenn eine Aufgabenerstellung
-Anfrage stellt eine zugewiesene deliveryVehicleId
bereit. Um einem Fahrzeug Aufgaben zuzuweisen,
UpdateDeliveryVehicleRequest
verwenden. 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 (UUID). Einzelheiten finden Sie unter Aufgaben-IDs: |
tracking_id |
Nur PICKUP - oder DELIVERY -Aufgaben:
Die Nummer oder Kennung, die Sie zur Verfolgung einer Sendung verwenden. Das sollten Sie nicht tun:
geben Sie dieses Feld für Aufgaben an, die nicht zum Versand gehören. |
plannedLocation |
PICKUP , DELIVERY oder
Nur SCHEDULED_STOP -Aufgaben: Die
den Ort, an dem die Aufgabe ausgeführt werden soll. Nicht erforderlich für
UNAVAILABLE Aufgaben. |
taskDuration |
Die erwartete Zeit zum Abschließen der Aufgabe. Um beispielsweise nach oder zu Fuß zur Abholstelle gehen. |
Optionale Felder für Versandaufgaben
Feld | Wert |
---|---|
targetTimeWindow |
Das Zeitfenster, in dem die Aufgabe abgeschlossen werden sollte. Dieses Feld wirkt sich nicht auf das Routingverhalten aus. |
task_tracking_view_config |
Nur PICKUP - oder DELIVERY -Aufgaben:
Die Konfiguration für die Aufgabenverfolgung, die angibt, welche Datenelemente
unter welchen Umständen für 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 auf Nichtverfügbarkeit hinweist. etwa bei Fahrerpausen. Beachten Sie die folgenden Richtlinien, um eine Nichtverfügbarkeitsaufgabe zu erstellen:
- Legen Sie als Aufgabentyp
UNAVAILABLE
fest. - Geben Sie keine Tracking-ID an.
- Auch wenn Sie für eine Nichtverfügbarkeitsaufgabe keinen Standort angeben müssen, So lassen sich die voraussichtlichen Ankunftszeiten im Tagesverlauf besser berechnen.
Für den Fahrzeugstandort gelten besondere Sichtbarkeitsregeln.
UNAVAILABLE
Aufgabe für das Teilen der Reise.
- In die Versandverfolgungsbibliothek integrierte Verbraucher-Apps: Wenn die nicht verfügbar ist, können Nutzer der App nicht sehen, auf den Fahrzeugstandort, können aber trotzdem Statusinformationen für die Lieferung.
- Apps zum Erfassen von Flotten, die in die Flotten-Tracking-Bibliothek integriert sind: Wenn die keine Verfügbarkeit des Fahrzeugs hat, Flottenmanager, die die Flotte nutzen, kann bei Aufgaben, die nicht verfügbar sind, den Fahrzeugstandort sehen.
Die folgenden Beispiele zeigen, wie Sie eine geplante Nichtverfügbarkeitsaufgabe mit
die Java gRPC-Bibliothek oder wie Sie eine HTTP REST-Anfrage an
CreateTask
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 Nichtverfügbarkeitsaufgabe in einer Serverumgebung erstellen möchten, erstellen Sie eine HTTP-REST-Anfrage
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 das Feld Authorization mit dem Wert Inhaber <token>, wobei <token> von Ihrem Server ausgegeben wird gemäß den Richtlinien unter Dienstkontorollen und JSON-Webtokens
Der Anfragetext muss eine Task
-Entität mit den entsprechenden Feldern enthalten
beschrieben in Aufgabenfelder für Aufgaben, die nicht ansteuern.
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 einen geplanten Stopp erstellen. z. B. für nicht fahrende Aufgaben an Kundenstandorten, an Tankstopps oder wenn der Fahrer mit einem Feeder-Fahrzeug. Verwenden Sie beim Erstellen einer geplanten Stoppaufgabe folgenden Richtlinien:
- Aufgabentyp festlegen auf
- Geben Sie keine Tracking-ID an.
- Optional können Sie einen Standort angeben.
Die folgenden Beispiele zeigen, wie Sie eine geplante Nichtverfügbarkeitsaufgabe mit
die Java gRPC-Bibliothek oder wie Sie eine HTTP REST-Anfrage an
CreateTask
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 Stoppaufgabe in einer Serverumgebung erstellen möchten, erstellen Sie eine HTTP-REST-Anfrage
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 das Feld Authorization mit dem Wert Inhaber <token>, wobei <token> von Ihrem Server ausgegeben wird gemäß den Richtlinien unter Dienstkontorollen und JSON-Webtokens
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