ایجاد تکلیف به‌صورت دسته‌ای

این سند نشان می‌دهد چگونه دسته‌ای از تکالیف را از محیط سرور بااستفاده از gRPC یا REST ایجاد کنید. برای جزئیات بیشتر درباره ایجاد تکلیف، به این مقاله مراجعه کنید:

فیلدهای تکلیف برای ایجاد تکالیف به‌صورت دسته‌ای

هنگام ایجاد دسته‌ای تکالیف، هر عنصر CreateTasksRequest در requests باید همان قوانین اعتبارسنجی درخواست CreateTask برای یک تکلیف را بگذراند، با این تفاوت که فیلدهای parent و header اختیاری هستند. اگر تنظیم شده باشد، باید با فیلدهای مربوطه در سطح بالا یکسان باشد BatchCreateTasksRequest.

برای اطلاعات بیشتر، به سند «مرجع میانای برنامه‌سازی کاربردی» برای BatchCreateTasks برای gRPC یا REST مراجعه کنید.

فیلدهای دسته‌ای الزامی

فیلدمقدار
درخواست‌ها Array<CreateTasksRequest>

فیلدهای اختیاری تکلیف دسته‌ای

فیلدمقدار
سرصفحه DeliveryRequestHeader

ایجاد دسته‌ای از تکالیف

نمونه‌های زیر نحوه ایجاد تکلیف تحویل گرفتن و تحویل دادن را بااستفاده از کتابخانه Java gRPC یا نحوه ایجاد درخواست 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;
}

استراحت

برای ایجاد تکلیف تحویل و تحویل گرفتن از محیط سرور، تماس 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

قدم بعدی چیست