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 Versandaufgaben auf Ihrem Server erstellen. Für andere Weitere Informationen zum Erstellen anderer Aufgabentypen
Felder der Versandaufgabe
In diesem Abschnitt werden die Aufgabenfelder dokumentiert, die für Abholung und Lieferung erforderlich sind 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. |
Aufgabe zum Abholen einer Sendung erstellen
Um mit Fleet Engine die Aktivitäten eines Fahrers zu verfolgen, der eine Sendung abholt,
eine Aufgabe zur Abholung der Sendung. Dazu wird das Aufgabentyp-Attribut auf
PICKUP
Das folgende Beispiel zeigt die Abholung einer Sendung vom Grand
Indonesia East Mall.
Die folgenden Beispiele zeigen, wie Sie mithilfe der Funktion
Java gRPC-Bibliothek oder das Senden einer 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.PICKUP)
.setState(Task.State.OPEN)
.setTrackingId("my-tracking-id")
.setPlannedLocation( // Grand Indonesia East Mall
LocationInfo.newBuilder().setPoint(
LatLng.newBuilder().setLatitude(-6.195139).setLongitude(106.820826)))
.setTaskDuration(
Duration.newBuilder().setSeconds(2 * 60))
.setTargetTimeWindow(
TimeWindow.newBuilder()
.setStartTime(Timestamp.newBuilder().setSeconds(1680123600))
.setEndTime(Timestamp.newBuilder().setSeconds(1680130800)))
.addAttributes(TaskAttribute.newBuilder().setKey("foo").setStringValue("value"))
.addAttributes(TaskAttribute.newBuilder().setKey("bar").setNumberValue(10))
.addAttributes(TaskAttribute.newBuilder().setKey("baz").setBoolValue(false))
.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 a 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 Abholungsaufgabe 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 gemäß gemäß den Richtlinien unter Dienstkontorollen und JSON Web Tokens
Der Anfragetext muss eine Task
-Entität mit den entsprechenden Feldern enthalten
beschrieben unter Versandaufgabenfelder.
Beispiel eines curl
-Befehls:
# Set $JWT, $PROJECT_ID, $TRACKING_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": "PICKUP",
"state": "OPEN",
"trackingId": "${TRACKING_ID}",
"plannedLocation": {
"point": {
"latitude": -6.195139,
"longitude": 106.820826
}
},
"taskDuration": "90s",
"targetTimeWindow": {
"startTime": "2023-03-29T21:00:00Z",
"endTime": "2023-03-29T23:00:00Z"
}
}
EOM
Aufgabe für die Sendungszustellung erstellen
Um mit Fleet Engine die Aktivitäten
eines Fahrers zu verfolgen, der eine Lieferung liefert,
eine Aufgabe für die
Sendungszustellung erstellen. Dazu muss das Attribut „Aufgabentyp“
an DELIVERY
. Das folgende Beispiel zeigt eine Lieferung an den Grand
Indonesia East Mall.
Die folgenden Beispiele zeigen, wie Sie mithilfe der Funktion
Java gRPC-Bibliothek oder das Senden einer 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.DELIVERY)
.setState(Task.State.OPEN)
.setTrackingId("my-tracking-id")
.setPlannedLocation( // Grand Indonesia East Mall
LocationInfo.newBuilder().setPoint(
LatLng.newBuilder().setLatitude(-6.195139).setLongitude(106.820826)))
.setTaskDuration(
Duration.newBuilder().setSeconds(2 * 60))
.setTargetTimeWindow(
TimeWindow.newBuilder()
.setStartTime(Timestamp.newBuilder().setSeconds(1680123600))
.setEndTime(Timestamp.newBuilder().setSeconds(1680130800)))
.addAttributes(TaskAttribute.newBuilder().setKey("foo").setStringValue("value"))
.addAttributes(TaskAttribute.newBuilder().setKey("bar").setNumberValue(10))
.addAttributes(TaskAttribute.newBuilder().setKey("baz").setBoolValue(false))
.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 Abholungsaufgabe 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 gemäß gemäß den Richtlinien unter Dienstkontorollen und JSON Web Tokens
Der Anfragetext muss eine Task
-Entität enthalten:
Beispiel eines curl
-Befehls:
# Set $JWT, $PROJECT_ID, $TRACKING_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": "DELIVERY",
"state": "OPEN",
"trackingId": "${TRACKING_ID}",
"plannedLocation": {
"point": {
"latitude": -6.195139,
"longitude": 106.820826
}
},
"taskDuration": "90s",
"targetTimeWindow": {
"startTime": "2023-03-29T21:00:00Z",
"endTime": "2023-03-29T23:00:00Z"
}
}
EOM
```