เอกสารนี้แสดงวิธีสร้างงานหลายรายการจากสภาพแวดล้อมเซิร์ฟเวอร์โดยใช้ gRPC หรือ REST โปรดดูรายละเอียดเพิ่มเติมเกี่ยวกับการสร้างงานในหัวข้อต่อไปนี้
ช่องงานสำหรับสร้างงานทีละหลายรายการ
เมื่อสร้างงานเป็นกลุ่ม องค์ประกอบ CreateTasksRequest
แต่ละรายการใน requests
ต้องส่งกฎการตรวจสอบเดียวกันกับคำขอ CreateTask
สำหรับงานเดียว ยกเว้นช่อง parent
และ header
จะเป็นช่องที่ไม่บังคับ
หากมีการตั้งค่า ช่องดังกล่าวจะต้องเหมือนกับช่องที่เกี่ยวข้องที่ระดับบนสุด BatchCreateTasksRequest
ดูข้อมูลเพิ่มเติมได้ที่เอกสารประกอบอ้างอิง API สำหรับ BatchCreateTasks
สำหรับ gRPC หรือ REST
ฟิลด์กลุ่มที่จำเป็น
ช่อง | ค่า |
---|---|
คำขอ | Array<CreateTasksRequest> |
ช่องงานแบบเป็นกลุ่มที่ไม่บังคับ
ช่อง | ค่า |
---|---|
ส่วนหัว | DeliveryRequestHeader |
สร้างงานหลายรายการพร้อมกัน
ตัวอย่างต่อไปนี้แสดงวิธีสร้างทั้งงานการรับและการนำส่งโดยใช้ไลบรารี gRPC ของ Java หรือวิธีส่งคำขอ HTTP REST ไปยัง BatchCreateTask
ดูไวยากรณ์ JWT ที่ถูกต้องได้ที่องค์ประกอบ 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
หากต้องการสร้างงานการนำส่งและการรับพัสดุจากสภาพแวดล้อมเซิร์ฟเวอร์ ให้เรียกใช้ HTTP REST กับ BatchCreateTasks
ดังนี้
POST https://fleetengine.googleapis.com/v1/providers/<project_id>/batchCreate
<id> คือตัวระบุที่ไม่ซ้ำกันสำหรับงาน
ส่วนหัวคำขอต้องมีช่องการให้สิทธิ์ซึ่งมีค่าเป็น Bearer <token> โดยที่ <token> มาจากเซิร์ฟเวอร์ของคุณตามหลักเกณฑ์ที่อธิบายไว้ในบทบาทของบัญชีบริการและโทเค็นเว็บ JSON
เนื้อหาของคำขอต้องมีเอนทิตี BatchCreateTasksRequest
ตัวอย่างคำสั่ง 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