ব্যাচে কাজ তৈরি করুন

এই ডকুমেন্টটিতে দেখানো হয়েছে কিভাবে gRPC বা REST ব্যবহার করে সার্ভার এনভায়রনমেন্ট থেকে একগুচ্ছ টাস্ক তৈরি করতে হয়। টাস্ক তৈরি করার বিষয়ে আরও বিস্তারিত জানতে দেখুন:

ব্যাচে টাস্ক তৈরির জন্য টাস্ক ফিল্ড

একসাথে একাধিক টাস্ক তৈরি করার সময়, requests প্রতিটি CreateTasksRequest এলিমেন্টকে অবশ্যই একটি একক টাস্কের CreateTask রিকোয়েস্টের মতোই একই ভ্যালিডেশন নিয়ম মেনে চলতে হবে। তবে এর ব্যতিক্রম হলো parent এবং header ফিল্ড দুটি ঐচ্ছিক। যদি এগুলো সেট করা হয়, তবে সেগুলোকে অবশ্যই টপ লেভেলের BatchCreateTasksRequest নিজ নিজ ফিল্ডের সাথে হুবহু একই হতে হবে।

আরও তথ্যের জন্য, gRPC বা REST- এর জন্য BatchCreateTasks এর API রেফারেন্স ডকুমেন্টেশন দেখুন।

প্রয়োজনীয় ব্যাচ ফিল্ড

মাঠ মূল্য
অনুরোধ Array<CreateTasksRequest>

ঐচ্ছিক ব্যাচ টাস্ক ফিল্ড

মাঠ মূল্য
হেডার DeliveryRequestHeader

একগুচ্ছ কাজ তৈরি করুন

নিম্নলিখিত উদাহরণগুলিতে দেখানো হয়েছে কিভাবে জাভা gRPC লাইব্রেরি ব্যবহার করে একটি পিকআপ এবং একটি ডেলিভারি টাস্ক তৈরি করতে হয় অথবা কিভাবে BatchCreateTask এ একটি HTTP REST অনুরোধ পাঠাতে হয়। সঠিক JWT সিনট্যাক্সের জন্য JWT এলিমেন্টগুলি দেখুন।

জিআরপিসি

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;
}

বিশ্রাম

সার্ভার পরিবেশ থেকে একটি ডেলিভারি এবং একটি পিকআপ টাস্ক তৈরি করতে, BatchCreateTasks এ একটি HTTP REST কল করুন:

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

<id> হলো কাজটি চিহ্নিত করার একটি অনন্য শনাক্তকারী।

অনুরোধ হেডারে অবশ্যই Authorization নামের একটি ফিল্ড থাকতে হবে যার ভ্যালু হবে Bearer <token> , যেখানে <token> টি আপনার সার্ভার দ্বারা Service account roles and JSON Web tokens -এ বর্ণিত নির্দেশিকা অনুসারে ইস্যু করা হয়।

অনুরোধের মূল অংশে অবশ্যই একটি 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

এরপর কী?