এই ডকুমেন্টটি নিম্নলিখিত বিষয়গুলি সম্পর্কে আপনার ধারণা আছে বলে ধরে নেয়:
- শিপমেন্ট টাস্ক তৈরি করা
- শিডিউল করা টাস্ক-এর ভূমিকা, যা টাস্ক, স্টপ ও গাড়ির মধ্যে সম্পর্ক বিস্তারিতভাবে কভার করে।
বাস্তব-জগতের ডেলিভারি পরিস্থিতিতে, ব্যবসাগুলি ড্রাইভারদের ডেলিভারি শিপমেন্টের টাস্ক অ্যাসাইন করে, যারা তারপরে একটি গাড়ি ব্যবহার করে তাদের একটি পরিকল্পিত লোকেশনে প্রাপকের কাছে পৌঁছে দেয়, যেমন একটি বাসস্থান বা একটি বিল্ডিং কমপ্লেক্সে একটি ডেলিভারি রুম। আপনি Fleet Engine-এ টাস্ক তৈরি করে এবং ডেলিভারি গাড়ির আপডেট সংক্রান্ত অনুরোধ ইস্যু করে এটি মডেল করেন, যা পরে ভ্রমণের জন্য স্টপের তালিকা সহ গাড়ির এন্টিটি আপডেট করে। আপনি প্রতিটি স্টপে সম্পূর্ণ করার জন্য টাস্কের একটি তালিকা অ্যাসাইন করেন।
আপনি যেকোনও সময় গাড়ির টাস্ক আপডেট করতে পারেন, তবে সাধারণত আপনি নিম্নলিখিত উদ্দেশ্যে এটি করেন:
- গাড়ির জন্য সম্পূর্ণ করার টাস্ক শিডিউল করুন। আপনি এটি করতে পারেন গাড়িতে একটি নতুন স্টপ যোগ করার জন্য একটি আপডেট অনুরোধের মাধ্যমে, অথবা একটি আপডেট অনুরোধের মাধ্যমে যা একটি বিদ্যমান স্টপে একটি নতুন টাস্ক যোগ করে।
- কোনও নির্দিষ্ট গাড়ির স্টপের সাথে যুক্ত আগে থেকে থাকা টাস্কের ক্রম আপডেট করুন।
- টাস্ক সম্পূর্ণ করার লোকেশন পরিবর্তন করুন। ডিফল্ট হিসেবে, Fleet Engine টাস্ক সম্পূর্ণ হওয়ার লোকেশনকে টাস্কের সাথে যুক্ত গাড়ি থামার লোকেশন হিসেবেই চিহ্নিত করে। আপনি চাইলে, আলাদা আলাদা টাস্কের জন্য নির্দিষ্ট লোকেশন উল্লেখ করতে পারেন। যেমন, আপনার গাড়িটি কোনও বড় কমপ্লেক্সে থামতে পারে যেখানে অনেকগুলি প্যাকেজ ডেলিভারি করতে হবে, যার প্রতিটি একটি নির্দিষ্ট মেল ডেলিভারি রুমে অ্যাসাইন করা আছে।
- আপডেট করা অর্ডারিং থেকে বাদ দিতে আগে অ্যাসাইন করা যেকোনও টাস্ক বন্ধ করুন। আরও বিবরণের জন্য টাস্ক চূড়ান্ত করুন বিকল্প দেখুন।
ডেলিভারি টাস্ক শিডিউল বা পরিবর্তন করুন
আপনি কোনও সার্ভার এনভায়রনমেন্ট থেকে অথবা ড্রাইভারকে কোনও বিশ্বস্ত ডিভাইসের মাধ্যমে টাস্ক ম্যানেজ করার সুবিধা প্রদান করলে, Driver SDK ব্যবহার করে কোনও গাড়ির জন্য অ্যাসাইন করা টাস্ক শিডিউল বা পরিবর্তন করতে পারবেন। শুধুমাত্র একটি পদ্ধতি ব্যবহার করুন যাতে আপনি রেস কন্ডিশন এড়াতে পারেন এবং সিঙ্গেল সোর্স অফ ট্রুথ বজায় রাখতে পারেন।
একটি গাড়ি থেকে অন্য গাড়িতে শিপমেন্ট পরিবর্তন করতে, আসল টাস্ক বন্ধ করুন এবং অন্য গাড়িতে অ্যাসাইন করার আগে এটি আবার তৈরি করুন। আপনি যদি কোনও ডেলিভারি ভেইকেল আপডেট করে এমন কোনও টাস্ক অন্তর্ভুক্ত করেন যা আগে থেকেই অন্য কোনও ভেইকেলে অ্যাসাইন করা আছে, তাহলে আপনি একটি সমস্যার মেসেজ পাবেন।
টাস্ক আপডেট করার জন্য প্রয়োজনীয় ফিল্ড
এই বিভাগে কোনও গাড়ির জন্য টাস্ক আপডেট করার সময় সেট করার জন্য প্রয়োজনীয় ফিল্ডগুলি ডকুমেন্ট করে। কোনও ঐচ্ছিক ফিল্ড দেওয়া হয়নি। আপডেটের জন্য এন্টিটিতে থাকা অন্যান্য সব ফিল্ড ফ্লিট ইঞ্জিন উপেক্ষা করে।
| প্রয়োজনীয় ফিল্ড | ভ্যালু |
|---|---|
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