In diesem Dokument wird beschrieben, wie Sie mit gRPC oder REST eine Reihe von Aufgaben aus einer Serverumgebung erstellen. Weitere Informationen zum Erstellen von Aufgaben finden Sie in den folgenden Artikeln:
Aufgabenfelder zum Erstellen von Aufgaben im Batch
Beim Erstellen von Aufgaben im Batch müssen alle CreateTasksRequest
-Elemente in requests
dieselben Validierungsregeln wie eine CreateTask
-Anfrage für eine einzelne Aufgabe erfüllen. Die Felder parent
und header
sind jedoch optional.
Wenn sie festgelegt sind, müssen sie mit den entsprechenden Feldern auf der obersten Ebene BatchCreateTasksRequest
identisch sein.
Weitere Informationen finden Sie in der API-Referenzdokumentation für BatchCreateTasks
für gRPC oder REST.
Erforderliche Batchfelder
Feld | Wert |
---|---|
Anfragen | Array<CreateTasksRequest> |
Optionale Felder für Batchaufgaben
Feld | Wert |
---|---|
Header | DeliveryRequestHeader |
Aufgaben im Batch erstellen
Die folgenden Beispiele zeigen, wie Sie sowohl einen Abhol- als auch einen Zustellvorgang mit der Java-gRPC-Bibliothek erstellen oder eine HTTP-REST-Anfrage an BatchCreateTask
senden. Die richtige JWT-Syntax finden Sie unter JWT-Elemente.
gRPC
static final String PROJECT_ID = "my-delivery-co-gcp-project";
DeliveryServiceBlockingStub deliveryService =
DeliveryServiceGrpc.newBlockingStub(channel);
// Delivery Task settings
Task deliveryTask = Task.newBuilder()
.setType(Task.Type.DELIVERY)
.setState(Task.State.OPEN)
.setTrackingId("delivery-tracking-id")
.setPlannedLocation( // Grand Indonesia East Mall
LocationInfo.newBuilder().setPoint(
LatLng.newBuilder().setLatitude(-6.195139).setLongitude(106.820826)))
.setTaskDuration(
Duration.newBuilder().setSeconds(2 * 60))
.build();
// Delivery Task request
CreateTaskRequest createDeliveryTaskRequest =
CreateTaskRequest.newBuilder() // No need for the header or parent fields
.setTaskId("task-8312508") // Task ID assigned by the Provider
.setTask(deliveryTask) // Initial state
.build();
// Pickup Task settings
Task pickupTask = Task.newBuilder()
.setType(Task.Type.PICKUP)
.setState(Task.State.OPEN)
.setTrackingId("pickup-tracking-id")
.setPlannedLocation( // Grand Indonesia East Mall
LocationInfo.newBuilder().setPoint(
LatLng.newBuilder().setLatitude(-6.195139).setLongitude(106.820826)))
.setTaskDuration(
Duration.newBuilder().setSeconds(2 * 60))
.build();
// Pickup Task request
CreateTaskRequest createPickupTaskRequest =
CreateTaskRequest.newBuilder() // No need for the header or parent fields
.setTaskId("task-8241890") // Task ID assigned by the Provider
.setTask(pickupTask) // Initial state
.build();
// Batch Create Tasks settings
String parent = "providers/" + PROJECT_ID;
// Batch Create Tasks request
BatchCreateTasksRequest batchCreateTasksRequest =
BatchCreateTasksRequest.newBuilder()
.setParent(parent)
.addRequests(createDeliveryTaskRequest)
.addRequests(createPickupTaskRequest)
.build();
// Error handling
// If Fleet Engine does not have any task(s) with these task ID(s) and the
// credentials of the requestor pass, the service creates the task(s)
// successfully.
try {
BatchCreateTasksResponse createdTasks = deliveryService.batchCreateTasks(
batchCreateTasksRequest);
} catch (StatusRuntimeException e) {
Status s = e.getStatus();
switch (s.getCode()) {
case ALREADY_EXISTS:
break;
case PERMISSION_DENIED:
break;
}
return;
}
REST
Wenn Sie eine Zustell- und eine Abholaufgabe über eine Serverumgebung erstellen möchten, führen Sie einen HTTP-REST-Aufruf an BatchCreateTasks
aus:
POST https://fleetengine.googleapis.com/v1/providers/<project_id>/batchCreate
<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 ein BatchCreateTasksRequest
-Objekt enthalten.
Beispiel eines curl
-Befehls:
# Set $JWT, $PROJECT_ID, $DELIVERY_TRACKING_ID, $DELIVERY_TASK_ID,
# $PICKUP_TRACKING_ID, and $PICKUP_TASK_ID in the local environment
curl -X POST "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks:batchCreate" \
-H "Content-type: application/json" \
-H "Authorization: Bearer ${JWT}" \
--data-binary @- << EOM
{
"requests" : [
{
"taskId": "${DELIVERY_TASK_ID}",
"task" : {
"type": "DELIVERY",
"state": "OPEN",
"trackingId": "${DELIVERY_TRACKING_ID}",
"plannedLocation": {
"point": {
"latitude": -6.195139,
"longitude": 106.820826
}
},
"taskDuration": "90s"
}
},
{
"taskId": "${PICKUP_TASK_ID}",
"task" : {
"type": "PICKUP",
"state": "OPEN",
"trackingId": "${PICKUP_TRACKING_ID}",
"plannedLocation": {
"point": {
"latitude": -6.195139,
"longitude": 106.820826
}
},
"taskDuration": "90s"
}
}
]
}
EOM