Questo documento mostra come creare un batch di attività da un ambiente server utilizzando gRPC o REST. Per ulteriori dettagli sulla creazione di attività, consulta:
Campi delle attività per la creazione di attività collettive
Quando crei attività collettivamente, ogni elemento CreateTasksRequest
in requests
deve superare le stesse regole di convalida di una richiesta CreateTask
per una singola attività, con l'eccezione che i campi parent
e header
sono facoltativi.
Se impostati, devono essere identici ai rispettivi campi di primo livello
BatchCreateTasksRequest
.
Per ulteriori informazioni, consulta la documentazione di riferimento dell'API per BatchCreateTasks
per gRPC o REST.
Campi batch obbligatori
Campo | Valore |
---|---|
richieste | Array<CreateTasksRequest> |
Campi facoltativi delle attività collettive
Campo | Valore |
---|---|
intestazione | DeliveryRequestHeader |
Creare un batch di attività
Gli esempi riportati di seguito mostrano come creare un'attività di ritiro e un'attività di consegna
utilizzando la libreria gRPC Java o come effettuare una richiesta HTTP REST a
BatchCreateTask
. Consulta la sezione Elementi JWT per la sintassi JWT corretta.
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
Per creare un'attività di consegna e una di ritiro da un ambiente server, effettua una chiamata HTTP REST a BatchCreateTasks
:
POST https://fleetengine.googleapis.com/v1/providers/<project_id>/batchCreate
<id> è un identificatore univoco dell'attività.
L'intestazione della richiesta deve contenere un campo Authorization con il valore Bearer <token>, dove <token> è emesso dal tuo server secondo le linee guida descritte in Ruoli dell'account di servizio e Token web JSON.
Il corpo della richiesta deve contenere un'entità BatchCreateTasksRequest
.
Comando curl
di esempio:
# 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