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

এই ডকুমেন্টটি ধরে নিচ্ছে যে আপনি "ফ্লিট ইঞ্জিনের ভূমিকা" বিভাগে "শিডিউল করা কাজ" এর ভূমিকা নির্দেশিকা এবং এই বিভাগে "শিডিউল করা কাজ কী?" পড়েছেন।

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

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

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

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

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

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

Fleet Engine-এ আপনার তৈরি প্রতিটি কাজের জন্য, আপনাকে অবশ্যই প্রয়োজনীয় ক্ষেত্রগুলি প্রদান করতে হবে এবং যেকোনো ঐচ্ছিক ক্ষেত্রও প্রদান করতে পারেন। Fleet Engine অন্যান্য সমস্ত ক্ষেত্র উপেক্ষা করে, এবং যদি কোনও টাস্ক তৈরির অনুরোধে একটি নির্ধারিত 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> হল টাস্কের জন্য একটি অনন্য শনাক্তকারী।

অনুরোধের শিরোনামে অবশ্যই Bearer <token> মান সহ একটি ক্ষেত্র Authorization থাকতে হবে, যেখানে <token> পরিষেবা অ্যাকাউন্ট ভূমিকা এবং JSON ওয়েব টোকেনগুলিতে বর্ণিত নির্দেশিকা অনুসারে আপনার সার্ভার দ্বারা জারি করা হয়।

অনুরোধের বডিতে অবশ্যই একটি 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> হল টাস্কের জন্য একটি অনন্য শনাক্তকারী।

অনুরোধের শিরোনামে অবশ্যই Bearer <token> মান সহ একটি ক্ষেত্র Authorization থাকতে হবে, যেখানে <token> পরিষেবা অ্যাকাউন্ট ভূমিকা এবং JSON ওয়েব টোকেনগুলিতে বর্ণিত নির্দেশিকা অনুসারে আপনার সার্ভার দ্বারা জারি করা হয়।

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

এরপর কি?