ডেলিভারি গাড়ির কাজ আপডেট করুন

এই নথিটি নিম্নলিখিতগুলির সাথে পরিচিতি অনুমান করে:

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

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

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

সময়সূচী বা বিতরণ কাজ পরিবর্তন

আপনি একটি সার্ভার পরিবেশ থেকে গাড়ির জন্য নির্ধারিত কাজগুলি নির্ধারণ বা পরিবর্তন করতে পারেন, অথবা ড্রাইভার SDK ব্যবহার করে যদি আপনি ড্রাইভারকে একটি বিশ্বস্ত ডিভাইস ব্যবহার করে কাজগুলি পরিচালনা করার ক্ষমতা প্রদান করেন। শুধুমাত্র একটি পদ্ধতি ব্যবহার করুন যাতে আপনি জাতিগত পরিস্থিতি এড়াতে পারেন এবং সত্যের একক উৎস বজায় রাখতে পারেন।

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

কাজ আপডেট করার জন্য প্রয়োজনীয় ক্ষেত্র

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

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

কাজের উদাহরণ বরাদ্দ করুন

নিম্নলিখিত উদাহরণগুলি গাড়ির জন্য দুটি নতুন কাজ যোগ করতে UpdateDeliveryVehicleJava gRPC লাইব্রেরি এবং 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> আপনার বহরে থাকা একটি ডেলিভারি গাড়ির জন্য একটি অনন্য শনাক্তকারী যার জন্য আপনি টাস্ক অর্ডার আপডেট করতে চান। এটি শনাক্তকারী যা আপনি গাড়ি তৈরি করার সময় নির্দিষ্ট করেছেন৷

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

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

এরপর কি

,

এই নথিটি নিম্নলিখিতগুলির সাথে পরিচিতি অনুমান করে:

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

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

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

সময়সূচী বা বিতরণ কাজ পরিবর্তন

আপনি একটি সার্ভার পরিবেশ থেকে গাড়ির জন্য নির্ধারিত কাজগুলি নির্ধারণ বা পরিবর্তন করতে পারেন, অথবা ড্রাইভার SDK ব্যবহার করে যদি আপনি ড্রাইভারকে একটি বিশ্বস্ত ডিভাইস ব্যবহার করে কাজগুলি পরিচালনা করার ক্ষমতা প্রদান করেন। শুধুমাত্র একটি পদ্ধতি ব্যবহার করুন যাতে আপনি জাতিগত পরিস্থিতি এড়াতে পারেন এবং সত্যের একক উৎস বজায় রাখতে পারেন।

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

কাজ আপডেট করার জন্য প্রয়োজনীয় ক্ষেত্র

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

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

কাজের উদাহরণ বরাদ্দ করুন

নিম্নলিখিত উদাহরণগুলি গাড়ির জন্য দুটি নতুন কাজ যোগ করতে UpdateDeliveryVehicleJava gRPC লাইব্রেরি এবং 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> আপনার বহরে থাকা একটি ডেলিভারি গাড়ির জন্য একটি অনন্য শনাক্তকারী যার জন্য আপনি টাস্ক অর্ডার আপডেট করতে চান। এটি শনাক্তকারী যা আপনি গাড়ি তৈরি করার সময় নির্দিষ্ট করেছেন৷

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

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

এরপর কি