অন্যান্য কাজের ধরন তৈরি করুন

এই ডকুমেন্টটি ধরে নিচ্ছে যে আপনি 'ফ্লিট ইঞ্জিনের পরিচিতি' বিভাগে থাকা 'নির্ধারিত কাজ' (Scheduled tasks) বিষয়ক প্রাথমিক নির্দেশিকা এবং এই বিভাগে থাকা 'নির্ধারিত কাজ কী?' অংশটি পড়েছেন।

নির্ধারিত কাজের জন্য ফ্লিট ইঞ্জিন বিভিন্ন বিস্তৃত শ্রেণীর কাজ প্রদান করে:

  • চালান সংক্রান্ত কাজ : গাড়ি চালানোর বিভিন্ন কাজের জন্য ব্যবহার করুন, যার মধ্যে চালান সংগ্রহ ও বিতরণ অন্তর্ভুক্ত।
  • অনুপস্থিতিকালীন কাজ : চালকরা যখন অনুপস্থিত থাকেন, যেমন প্রয়োজনীয় বিরতির সময়, তখন ব্যবহার করুন।
  • নির্ধারিত বিরতির কাজ : ড্রপ বক্স বা গ্রাহকের অবস্থানে গাড়ি চালানো-বহির্ভূত কাজের জন্য ব্যবহার করুন, যেমন কোনো ভবনে প্রবেশ করা বা ডেলিভারির স্থান খুঁজে বের করার জন্য প্রয়োজনীয় সময়।

এই ডকুমেন্টে আপনার সার্ভারে কীভাবে নন-শিপমেন্ট টাস্ক তৈরি করতে হয় তা বর্ণনা করা হয়েছে। শিপমেন্ট টাস্কের প্রকারভেদ সম্পর্কে জানতে, ‘শিপমেন্ট টাস্ক তৈরি করুন’ দেখুন।

ড্রাইভিং-বহির্ভূত কাজের জন্য টাস্ক ফিল্ড

এই বিভাগে অনুপলব্ধতা এবং নির্ধারিত স্টপ টাস্ক উভয়ের জন্য প্রয়োজনীয় টাস্ক ফিল্ডগুলো নথিভুক্ত করা হয়েছে।

প্রয়োজনীয় টাস্ক ফিল্ড

ফ্লিট ইঞ্জিনে আপনার তৈরি করা প্রতিটি টাস্কের জন্য, আপনাকে অবশ্যই প্রয়োজনীয় ফিল্ডগুলো প্রদান করতে হবে এবং আপনি ঐচ্ছিক ফিল্ডগুলোর যেকোনো একটিও প্রদান করতে পারেন। ফ্লিট ইঞ্জিন অন্য সব ফিল্ড উপেক্ষা করে এবং যদি কোনো টাস্ক তৈরির অনুরোধে একটি নির্ধারিত deliveryVehicleId প্রদান করা হয়, তাহলে এটি একটি এক্সেপশন থ্রো করে। কোনো গাড়িতে টাস্ক অ্যাসাইন করতে, UpdateDeliveryVehicleRequest ব্যবহার করুন। আরও তথ্যের জন্য, Update tasks দেখুন।

মাঠ মূল্য
type

টাস্কের ধরনের সাথে মেলে এমন ধরনে সেট করুন, যা নিম্নলিখিতগুলির মধ্যে একটি:

  • PICKUP
  • DELIVERY
  • SCHEDULED_STOP
  • UNAVAILABLE
state State.OPEN
task_id অনন্য টাস্ক আইডি। এটি চালানের ট্র্যাকিং নম্বর হওয়া যাবে না। যদি আপনার সিস্টেমে টাস্ক আইডি না থাকে, তবে আপনি একটি সার্বজনীনভাবে অনন্য শনাক্তকারী (UUID) তৈরি করতে পারেন। বিস্তারিত জানতে, টাস্ক আইডি দেখুন।
tracking_id শুধুমাত্র PICKUP বা DELIVERY কাজের জন্য : চালান ট্র্যাক করার জন্য আপনি যে নম্বর বা শনাক্তকারী ব্যবহার করছেন। চালান-বহির্ভূত কাজের জন্য এই ফিল্ডটি প্রদান করবেন না।
planned_location শুধুমাত্র PICKUP , DELIVERY , বা SCHEDULED_STOP টাস্কের জন্য : যে স্থানে কাজটি সম্পন্ন করতে হবে। UNAVAILABLE টাস্কের জন্য এটি প্রয়োজন নেই।
task_duration কাজটি সম্পন্ন করতে আনুমানিক যে সময় লাগবে। উদাহরণস্বরূপ, পার্কিং খোঁজা, বা দায়িত্ব হস্তান্তরের স্থানে হেঁটে যাওয়া।

ঐচ্ছিক চালান টাস্ক ক্ষেত্র

মাঠ মূল্য
target_time_window যে সময়সীমার মধ্যে কাজটি সম্পন্ন করা উচিত। এই ক্ষেত্রটি রাউটিং আচরণকে প্রভাবিত করে না।
task_tracking_view_config শুধুমাত্র PICKUP বা DELIVERY টাস্কের জন্য : টাস্ক ট্র্যাকিংয়ের কনফিগারেশন যা নির্দিষ্ট করে দেয় কোন পরিস্থিতিতে কোন ডেটা এলিমেন্টগুলো এন্ড ইউজারদের কাছে দৃশ্যমান হবে।
attributes কাস্টম টাস্ক অ্যাট্রিবিউটগুলোর একটি তালিকা। প্রতিটি অ্যাট্রিবিউটের একটি অনন্য কী থাকতে হবে।

একটি অনুপলব্ধতার কাজ তৈরি করুন

আপনি অনুপস্থিতি নির্দেশ করে একটি টাস্ক তৈরি করতে পারেন; উদাহরণস্বরূপ, ড্রাইভারের বিরতির জন্য। একটি অনুপস্থিতি টাস্ক তৈরি করতে, নিম্নলিখিত নির্দেশিকাগুলো ব্যবহার করুন:

  • টাস্কের ধরনটি UNAVAILABLE হিসেবে সেট করুন।
  • ট্র্যাকিং আইডি অন্তর্ভুক্ত করবেন না।
  • যদিও অনুপলব্ধতার কাজের জন্য অবস্থান প্রদান করা বাধ্যতামূলক নয়, তা করলে সারাদিন ধরে পৌঁছানোর আনুমানিক সময় (ETA) গণনা আরও উন্নত হয়।

যখন কোনো যানবাহন জার্নি শেয়ারিংয়ের জন্য UNAVAILABLE কোনো কাজে নিয়োজিত থাকে, তখন তার অবস্থানের ক্ষেত্রে বিশেষ দৃশ্যমানতার নিয়ম প্রযোজ্য হয়।

  • শিপমেন্ট ট্র্যাকিং লাইব্রেরির সাথে সমন্বিত কনজিউমার অ্যাপ : যখন যানবাহনটি কোনো অনুপলব্ধতার কাজে নিয়োজিত থাকে, তখন কনজিউমার অ্যাপের ব্যবহারকারীরা যানবাহনটির অবস্থান দেখতে পারেন না, যদিও তারা তাদের শিপমেন্টের স্ট্যাটাস সংক্রান্ত তথ্য দেখতে পারেন।
  • ফ্লিট ট্র্যাকিং লাইব্রেরির সাথে সমন্বিত ফ্লিট ট্র্যাকিং অ্যাপ : যখন যানবাহনটি কোনো অনুপলব্ধতার কাজে নিয়োজিত থাকে, তখন ফ্লিট ট্র্যাকিং অ্যাপ ব্যবহারকারী ফ্লিট ম্যানেজাররা সেই কাজের জন্য যানবাহনটির অবস্থান দেখতে পারবেন।

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

জিআরপিসি

  static final String PROJECT_ID = "my-delivery-co-gcp-project";

  DeliveryServiceBlockingStub deliveryService =
    DeliveryServiceGrpc.newBlockingStub(channel);

  // Task settings
  String parent = "providers/" + PROJECT_ID;
  Task task = Task.newBuilder()
    .setType(Task.Type.UNAVAILABLE)
    .setState(Task.State.OPEN)
    .setTaskDuration(
      Duration.newBuilder().setSeconds(60 * 60))  // 1hr break
    .build();

  // Task request
  CreateTaskRequest createTaskRequest =
    CreateTaskRequest.newBuilder()  // No need for the header
        .setParent(parent)          // Avoid using auto-incrementing IDs for the taskId
        .setTaskId("task-8241890")  // Task ID assigned by the Provider
        .setTask(task)              // Initial state
        .build();

  // Error handling
  // If Fleet Engine does not have task with that ID and the credentials of the
  // requestor pass, the service creates the task successfully.

  try {
    Task createdTask = deliveryService.createTask(createTaskRequest);
  } catch (StatusRuntimeException e) {
    Status s = e.getStatus();
    switch (s.getCode()) {
       case ALREADY_EXISTS:
         break;
       case PERMISSION_DENIED:
         break;
    }
    return;
  }
  ```

বিশ্রাম

সার্ভার পরিবেশ থেকে একটি অনুপলব্ধতা টাস্ক তৈরি করতে, CreateTask এ একটি HTTP REST কল করুন:

POST https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks?taskId=<id>

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

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

অনুরোধের মূল অংশে অবশ্যই একটি Task এনটিটি থাকতে হবে, যেখানে "নন-ড্রাইভিং টাস্কের জন্য টাস্ক ফিল্ড" অংশে বর্ণিত উপযুক্ত ফিল্ডগুলো অন্তর্ভুক্ত থাকবে।

curl কমান্ডের উদাহরণ:

 # Set $JWT, $PROJECT_ID, and $TASK_ID in the local environment
 curl -X POST "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks?taskId=${TASK_ID}" \
   -H "Content-type: application/json" \
   -H "Authorization: Bearer ${JWT}" \
   --data-binary @- << EOM
 {
   "type": "UNAVAILABLE",
   "state": "OPEN",
   "plannedLocation": {
      "point": {
         "latitude": -6.195139,
         "longitude": 106.820826
      }
   },
   "taskDuration": "300s"
 }
 EOM

একটি নির্ধারিত স্টপ টাস্ক তৈরি করুন

আপনি একটি নির্ধারিত বিরতির জন্য একটি টাস্ক তৈরি করতে পারেন; উদাহরণস্বরূপ, গ্রাহকের অবস্থানে গাড়ি চালানো-বহির্ভূত কাজের জন্য, জ্বালানি ভরার বিরতির জন্য, অথবা যখন একজন চালক ফিডার গাড়ি থেকে মালামাল গ্রহণ করেন। একটি নির্ধারিত বিরতির টাস্ক তৈরি করার সময়, নিম্নলিখিত নির্দেশিকাগুলো ব্যবহার করুন:

  • টাস্কের ধরণ সেট করুন
  • ট্র্যাকিং আইডি অন্তর্ভুক্ত করবেন না।
  • আপনি চাইলে একটি অবস্থান উল্লেখ করতে পারেন।

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

জিআরপিসি

  static final String PROJECT_ID = "my-delivery-co-gcp-project";

  DeliveryServiceBlockingStub deliveryService =
    DeliveryServiceGrpc.newBlockingStub(channel);

  // Task settings
  String parent = "providers/" + PROJECT_ID;
  Task task = Task.newBuilder()
    .setType(Task.Type.SCHEDULED_STOP)
    .setState(Task.State.OPEN)
    .setPlannedLocation(               // Grand Indonesia East Mall
      LocationInfo.newBuilder().setPoint(
        LatLng.newBuilder().setLatitude(-6.195139).setLongitude(106.820826)))
    .setTaskDuration(
      Duration.newBuilder().setSeconds(2 * 60))
    .build();

  // Task request
  CreateTaskRequest createTaskRequest =
    CreateTaskRequest.newBuilder()  // No need for the header
        .setParent(parent)
        .setTaskId("task-8241890")  // Task ID assigned by the Provider
        .setTrip(task)              // Initial state
        .build();

  // Error handling
  // If Fleet Engine does not have task with that ID and the credentials of the
  // requestor pass, the service creates the task successfully.

  try {
    Task createdTask = deliveryService.createTask(createTaskRequest);
  } catch (StatusRuntimeException e) {
    Status s = e.getStatus();
    switch (s.getCode()) {
       case ALREADY_EXISTS:
         break;
       case PERMISSION_DENIED:
         break;
    }
    return;
  }
  ```

বিশ্রাম

সার্ভার পরিবেশ থেকে একটি নির্ধারিত স্টপ টাস্ক তৈরি করতে, CreateTask এ একটি HTTP REST কল করুন:

POST https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks?taskId=<id>

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

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

অনুরোধের মূল অংশে অবশ্যই একটি Task এনটিটি থাকতে হবে:

curl কমান্ডের উদাহরণ:

# Set $JWT, $PROJECT_ID, and $TASK_ID in the local environment
 curl -X POST "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks?taskId=${TASK_ID}" \
   -H "Content-type: application/json" \
   -H "Authorization: Bearer ${JWT}" \
   --data-binary @- << EOM
 {
   "type": "SCHEDULED_STOP",
   "state": "OPEN",
   "plannedLocation": {
      "point": {
         "latitude": -6.195139,
         "longitude": 106.820826
      }
   },
   "taskDuration": "600s"
 }
 EOM

এরপর কী?