Este documento mostra como criar um lote de tarefas em um ambiente de servidor usando gRPC ou REST. Para mais detalhes sobre como criar tarefas, consulte:
Campos de tarefa para criar tarefas em lote
Ao criar tarefas em lote, cada elemento CreateTasksRequest
em requests
precisa passar pelas mesmas regras de validação que uma solicitação CreateTask
para uma única tarefa,
com exceção de que os campos parent
e header
são opcionais.
Se definidos, eles precisam ser idênticos aos respectivos campos no nível superior
BatchCreateTasksRequest
.
Para mais informações, consulte a documentação de referência da API para BatchCreateTasks
em gRPC ou REST.
Campos obrigatórios de lote
Campo | Valor |
---|---|
solicitações | Array<CreateTasksRequest> |
Campos opcionais de tarefas em lote
Campo | Valor |
---|---|
cabeçalho | DeliveryRequestHeader |
Criar um lote de tarefas
Os exemplos a seguir mostram como criar uma tarefa de coleta e uma de entrega
usando a biblioteca gRPC Java ou como fazer uma solicitação HTTP REST para
BatchCreateTask
. Consulte
Elementos JWT
para conferir a sintaxe correta do JWT.
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
Para criar uma tarefa de entrega e coleta em um ambiente de servidor, faça uma chamada HTTP REST para BatchCreateTasks
:
POST https://fleetengine.googleapis.com/v1/providers/<project_id>/batchCreate
<id> é um identificador exclusivo da tarefa.
O cabeçalho da solicitação precisa conter um campo Authorization com o valor Bearer <token>, em que <token> é emitido pelo seu servidor de acordo com as diretrizes descritas em Funções da conta de serviço e Tokens da Web JSON.
O corpo da solicitação precisa conter uma entidade BatchCreateTasksRequest
.
Comando curl
de exemplo:
# 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