Tài liệu này trình bày cách tạo một loạt tác vụ từ một môi trường máy chủ bằng gRPC hoặc REST. Để biết thêm thông tin về cách tạo việc cần làm, hãy xem:
Trường tác vụ để tạo tác vụ hàng loạt
Khi tạo tác vụ hàng loạt, từng phần tử CreateTasksRequest
trong requests
phải chuyển cùng một quy tắc xác thực như yêu cầu CreateTask
cho một tác vụ,
ngoại trừ việc các trường parent
và header
là không bắt buộc.
Nếu được đặt, các trường này phải giống với các trường tương ứng ở cấp cao nhất
BatchCreateTasksRequest
.
Để biết thêm thông tin, hãy xem tài liệu Tham khảo API cho BatchCreateTasks
dành cho gRPC hoặc REST.
Trường lô bắt buộc
Trường | Giá trị |
---|---|
yêu cầu | Array<CreateTasksRequest> |
Trường tác vụ hàng loạt không bắt buộc
Trường | Giá trị |
---|---|
tiêu đề | DeliveryRequestHeader |
Tạo một loạt tác vụ
Các ví dụ sau đây minh hoạ cách tạo cả nhiệm vụ đến lấy hàng và giao hàng
bằng cách sử dụng thư viện Java gRPC hoặc cách tạo yêu cầu HTTP REST để
BatchCreateTask
.
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;
}
Kiến trúc chuyển trạng thái đại diện (REST)
Để tạo tác vụ phân phối và đến lấy hàng từ môi trường máy chủ, hãy tạo một
Lệnh gọi REST của HTTP tới BatchCreateTasks
:
POST https://fleetengine.googleapis.com/v1/providers/<project_id>/batchCreate
<id> là giá trị nhận dạng duy nhất của tác vụ.
Tiêu đề yêu cầu phải chứa một trường Uỷ quyền có giá trị Mã <token>, trong đó <token> do máy chủ của bạn cấp theo nguyên tắc nêu trong phần Vai trò trong tài khoản dịch vụ và Mã thông báo web JSON.
Phần nội dung yêu cầu phải chứa thực thể BatchCreateTasksRequest
.
Ví dụ về lệnh curl
:
# 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