สร้างงานเป็นกลุ่ม

เอกสารนี้จะแสดงวิธีสร้างชุดงานจากสภาพแวดล้อมของเซิร์ฟเวอร์ โดยใช้ gRPC หรือ REST โปรดดูรายละเอียดเพิ่มเติมเกี่ยวกับการสร้างงานในหัวข้อต่อไปนี้

ช่องงานสำหรับการสร้างงานเป็นกลุ่ม

เมื่อสร้างงานในกลุ่ม องค์ประกอบ CreateTasksRequest แต่ละรายการใน requests ต้องผ่านกฎการตรวจสอบเดียวกันกับคำขอ CreateTask สำหรับงานเดียว ยกเว้นช่อง parent และ header เป็นช่องที่ไม่บังคับ หากมีการตั้งค่า ช่องจะต้องเหมือนกับช่องที่เกี่ยวข้องในระดับบนสุด BatchCreateTasksRequest

สำหรับข้อมูลเพิ่มเติม โปรดดูเอกสารอ้างอิง API สำหรับ BatchCreateTasks สำหรับ gRPC หรือ REST

ฟิลด์กลุ่มที่จำเป็น

ช่องค่า
คำขอ Array<CreateTasksRequest>

ช่องงานแบบกลุ่มที่ไม่บังคับ

ช่องค่า
ส่วนหัว DeliveryRequestHeader

สร้างกลุ่มงาน

ตัวอย่างต่อไปนี้แสดงวิธีการสร้างทั้งงานรับและการจัดส่ง โดยใช้ไลบรารี Java gRPC หรือวิธีสร้างคำขอ REST ของ HTTP เพื่อ 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;
}

REST

หากต้องการสร้างงานการนำส่งและการรับสินค้าจากสภาพแวดล้อมของเซิร์ฟเวอร์ ให้สร้าง การเรียก HTTP REST ไปยัง BatchCreateTasks:

POST https://fleetengine.googleapis.com/v1/providers/<project_id>/batchCreate

&lt;id&gt; เป็นตัวระบุที่ไม่ซ้ำสำหรับงาน

ส่วนหัวของคำขอต้องมีช่อง Authorization ที่มีค่า 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

ขั้นตอนถัดไป