ডেলিভারি ভেইকেল টাস্ক আপডেট করা

এই ডকুমেন্টটি নিম্নলিখিত বিষয়গুলি সম্পর্কে আপনার ধারণা আছে বলে ধরে নেয়:

বাস্তব জগতে ডেলিভারির ক্ষেত্রে, ব্যবসাগুলি ডেলিভারি শিপমেন্টের টাস্ক ড্রাইভারদের অ্যাসাইন করে, যারা সেগুলি প্রাপককে আগে থেকে ঠিক করা লোকেশন, যেমন কোনও বাড়ি বা বিল্ডিং কমপ্লেক্সের ডেলিভারি রুমে পৌঁছে দেওয়ার জন্য গাড়ি ব্যবহার করেন। আপনি Fleet Engine-এ একটি টাস্ক তৈরি করে এবং ডেলিভারি ভেইকেল আপডেট করার অনুরোধ ইস্যু করে এটি মডেল করেন, যা তারপরে ভ্রমণের জন্য স্টপের একটি তালিকা সহ ভেইকেল এন্টিটি আপডেট করে। আপনি প্রতিটি স্টপে সম্পূর্ণ করার জন্য টাস্কের একটি তালিকা অ্যাসাইন করেন।

আপনি যেকোনও সময় গাড়ির টাস্ক আপডেট করতে পারেন, তবে সাধারণত আপনি নিম্নলিখিত উদ্দেশ্যে এটি করেন:

  • সম্পূর্ণ করার জন্য কোনও গাড়ির জন্য টাস্ক শিডিউল করুন। আপনি এটি করতে পারেন, হয় আপডেট করার অনুরোধের মাধ্যমে যা গাড়িতে একটি নতুন স্টপ যোগ করে, অথবা আপডেট করার অনুরোধের মাধ্যমে যা আগে থেকে থাকা স্টপে একটি নতুন টাস্ক যোগ করে।
  • কোনও নির্দিষ্ট গাড়ির স্টপের সাথে যুক্ত আগে থেকে থাকা টাস্কের ক্রম আপডেট করুন।
  • টাস্ক সম্পূর্ণ করার লোকেশন পরিবর্তন করুন। ডিফল্ট হিসেবে, Fleet Engine টাস্ক সম্পূর্ণ হওয়ার লোকেশনকে টাস্কের সাথে যুক্ত থাকা ভেইকেল স্টপের লোকেশন হিসেবে চিহ্নিত করে। আপনি চাইলে, আলাদা আলাদা টাস্কের জন্য নির্দিষ্ট লোকেশন উল্লেখ করতে পারেন। যেমন, কোনও বড় কমপ্লেক্সে একাধিক প্যাকেজ ডেলিভারি করার জন্য আপনার গাড়ি থামতে পারে, যার প্রতিটি প্যাকেজ একটি নির্দিষ্ট মেল ডেলিভারি রুমে অ্যাসাইন করা থাকে।
  • আপডেট করা ক্রম থেকে বাদ দিতে আগে অ্যাসাইন করা যেকোনও টাস্ক বন্ধ করুন। আরও বিবরণের জন্য টাস্ক সম্পূর্ণ করা দেখুন।

ডেলিভারি টাস্ক শিডিউল বা পরিবর্তন করা

আপনি কোনও সার্ভার এনভায়রনমেন্ট থেকে অথবা ড্রাইভারকে কোনও বিশ্বস্ত ডিভাইসের মাধ্যমে টাস্ক ম্যানেজ করার ক্ষমতা প্রদান করলে Driver SDK ব্যবহার করে কোনও গাড়ির জন্য অ্যাসাইন করা টাস্ক শিডিউল বা পরিবর্তন করতে পারবেন। রেস কন্ডিশন এড়াতে এবং single source of truth বজায় রাখতে শুধুমাত্র একটি পদ্ধতি ব্যবহার করুন।

একটি গাড়ি থেকে অন্য গাড়িতে শিপমেন্ট পরিবর্তন করতে, আসল টাস্ক বন্ধ করুন এবং অন্য গাড়িতে অ্যাসাইন করার আগে এটি আবার তৈরি করুন। আপনি যদি কোনও ডেলিভারি ভেইকেল আপডেট করে এমন কোনও টাস্ক অন্তর্ভুক্ত করেন যা আগে থেকেই অন্য কোনও ভেইকেলে অ্যাসাইন করা আছে, তাহলে আপনি একটি সমস্যার মেসেজ পাবেন।

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

এই বিভাগে কোনও গাড়ির জন্য টাস্ক আপডেট করার সময় সেট করার জন্য প্রয়োজনীয় ফিল্ডগুলি ডকুমেন্ট করে। কোনও ঐচ্ছিক ফিল্ড দেওয়া হয়নি। আপডেটের জন্য এন্টিটিতে থাকা অন্যান্য সব ফিল্ড ফ্লিট ইঞ্জিন উপেক্ষা করে।

প্রয়োজনীয় ফিল্ডভ্যালু
remainingVehicleJourneySegments যে ক্রমে টাস্কগুলি সম্পূর্ণ করতে হবে সেই ক্রমে টাস্কের জন্য জার্নি সেগমেন্টের তালিকা। তালিকায় থাকা প্রথম টাস্কটি প্রথমে এক্সিকিউট করা হয়।
remainingVehicleJourneySegments[i].stop তালিকায় i টাস্কের জন্য স্টপ।
remainingVehicleJourneySegments[i].stop.plannedLocation স্টপের জন্য পরিকল্পনা করা লোকেশন।
remainingVehicleJourneySegments[i].stop.tasks এই গাড়িতে থামার সময় যেসব টাস্ক করতে হবে তার তালিকা।
remainingVehicleJourneySegments[i].stop.state State.NEW

টাস্ক অ্যাসাইন করার উদাহরণ

গাড়ির জন্য দুটি নতুন টাস্ক যোগ করতে Java gRPC লাইব্রেরি এবং UpdateDeliveryVehicle-এ HTTP REST কল কীভাবে ব্যবহার করতে হয় তা নিম্নলিখিত উদাহরণে দেখানো হয়েছে।

gRPC

 static final String PROJECT_ID = "my-delivery-co-gcp-project";
 static final String VEHICLE_ID = "vehicle-8241890";
 static final String TASK1_ID = "task-756390";
 static final String TASK2_ID = "task-849263";

 DeliveryServiceBlockingStub deliveryService =
   DeliveryServiceGrpc.newBlockingStub(channel);

 // Vehicle settings
 String vehicleName = "providers/" + PROJECT_ID + "/deliveryVehicles/" + VEHICLE_ID;
 DeliveryVehicle deliveryVehicle = DeliveryVehicle.newBuilder()
     .addRemainingVehicleJourneySegments(VehicleJourneySegment.newBuilder()  // 1st stop
        .setStop(VehicleStop.newBuilder()
            .setPlannedLocation(LocationInfo.newBuilder()
                .setPoint(LatLng.newBuilder()
                    .setLatitude(37.7749)
                    .setLongitude(122.4194)))
            .addTasks(TaskInfo.newBuilder().setTaskId(TASK1_ID))
            .setState(VehicleStop.State.NEW)))
     .addRemainingVehicleJourneySegments(VehicleJourneySegment.newBuilder()  // 2nd stop
        .setStop(VehicleStop.newBuilder()
            .setPlannedLocation(LocationInfo.newBuilder()
                .setPoint(LatLng.newBuilder()
                    .setLatitude(37.3382)
                    .setLongitude(121.8863)))
            .addTasks(TaskInfo.newBuilder().setTaskId(TASK2_ID))
            .setState(VehicleStop.State.NEW)))
     .build();

 // DeliveryVehicle request
 UpdateDeliveryVehicleRequest updateDeliveryRequest =
   UpdateDeliveryVehicleRequest.newBuilder()  // No need for the header
       .setName(vehicleName)
       .setDeliveryVehicle(deliveryVehicle)
       .setUpdateMask(FieldMask.newBuilder().addPaths("remaining_vehicle_journey_segments"))
       .build();

 try {
   DeliveryVehicle updatedDeliveryVehicle =
       deliveryService.updateDeliveryVehicle(updateDeliveryVehicleRequest);
 } catch (StatusRuntimeException e) {
   Status s = e.getStatus();
   switch (s.getCode()) {
      case NOT_FOUND:
        break;
      case PERMISSION_DENIED:
        break;
   }
   return;
 }

বিশ্রাম

 PATCH https://fleetengine.googleapis.com/v1/providers/<project_id>/deliveryVehicles/<id>?updateMask=remainingVehicleJourneySegments`
  • <id> হল আপনার বহরে থাকা ডেলিভারি ভেইকেলের জন্য অনন্য শনাক্তকারী যার জন্য আপনি টাস্কের ক্রম আপডেট করতে চান। এটি হল সেই শনাক্তকারী যা আপনি গাড়ি তৈরি করার সময় উল্লেখ করেছেন।

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

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

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

  # Set JWT, PROJECT_ID, VEHICLE_ID, TASK1_ID, and TASK2_ID in the local
  # environment
  curl -X PATCH "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/deliveryVehicles/${VEHICLE_ID}?updateMask=remainingVehicleJourneySegments" \
    -H "Content-type: application/json" \
    -H "Authorization: Bearer ${JWT}" \
    --data-binary @- << EOM
  {
    "remainingVehicleJourneySegments": [
      {
        "stop": {
          "state": "NEW",
          "plannedLocation": {
            "point": {
              "latitude": 37.7749,
              "longitude": -122.084061
            }
          },
          "tasks": [
            {
              "taskId": "${TASK1_ID}"
            }
          ]
        }
      },
      {
        "stop": {
          "state": "NEW",
          "plannedLocation": {
            "point": {
              "latitude": 37.3382,
              "longitude": 121.8863
            }
          },
          "tasks": [
            {
              "taskId": "${TASK2_ID}"
            }
          ]
        }
      }
    ]
  }
  EOM

এর পরে কী করতে হবে