এই ডকুমেন্টটি ধরে নেয় যে আপনি টাস্ক তৈরি এবং ব্যবহার করার পদ্ধতি জানেন। এতে নিম্নলিখিত উপায়ে শিপমেন্ট টাস্ক কনফিগার করার নির্দিষ্ট উদাহরণ দেওয়া হয়েছে:
চালান কাজের জন্য লক্ষ্যমাত্রা সময়সীমা নির্ধারণ করুন : কাজটি সম্পন্ন করার জন্য একটি নির্দিষ্ট সময়সীমা নির্ধারণ করুন।
টাস্কের দৃশ্যমানতা কাস্টমাইজ করুন : গ্রাহক বা ফ্লিট অপারেটরদের কাছে প্রদর্শনের জন্য টাস্ক অ্যাক্টিভিটিগুলোর দৃশ্যমানতা কাস্টমাইজ করুন।
শিপমেন্ট টাস্কের ফিল্ডগুলো সম্পর্কে বিস্তারিত জানতে ‘Create shipment tasks’ দেখুন। বিদ্যমান টাস্ক সম্পর্কে অতিরিক্ত তথ্য আপডেট করার সময়, টাস্কের জন্য আপডেট করা ফিল্ডগুলোর পাশাপাশি আপনাকে অবশ্যই টাস্কটির প্রাসঙ্গিক আইডেন্টিফায়ারটিও অন্তর্ভুক্ত করতে হবে।
লক্ষ্য সময়সীমা নির্ধারণ করুন
টার্গেট টাইম উইন্ডো হলো সেই সময়সীমা, যার মধ্যে কাজটি সম্পন্ন করা উচিত। উদাহরণস্বরূপ, আপনি যদি ডেলিভারি প্রাপকদের একটি ডেলিভারি সময়সীমা জানিয়ে দেন, তবে আপনি এই সময়সীমাটি রেকর্ড করতে এবং অ্যালার্ট তৈরি করতে টাস্ক টার্গেট টাইম উইন্ডো ব্যবহার করতে পারেন, অথবা অতীতের ট্রিপের পারফরম্যান্স বিশ্লেষণ করতেও এটি ব্যবহার করতে পারেন।
টার্গেট টাইম উইন্ডোতে একটি শুরুর সময় এবং একটি শেষের সময় থাকে এবং এটি যেকোনো টাস্ক টাইপে সেট করা যেতে পারে। টার্গেট টাইম উইন্ডো রাউটিং আচরণকে প্রভাবিত করে না।
নিম্নলিখিত উদাহরণগুলিতে দেখানো হয়েছে কীভাবে জাভা gRPC লাইব্রেরি ব্যবহার করে টাইম উইন্ডো সেট করতে হয় অথবা কীভাবে UpdateTask এ একটি HTTP REST অনুরোধ পাঠাতে হয়। আপনি টাস্ক তৈরির সময়েও এই ফিল্ডটি সেট করতে পারেন।
জিআরপিসি
static final String PROJECT_ID = "my-delivery-co-gcp-project";
static final String TASK_ID = "task-8241890";
DeliveryServiceBlockingStub deliveryService =
DeliveryServiceGrpc.newBlockingStub(channel);
// Task settings
String taskName = "providers/" + PROJECT_ID + "/tasks/" + TASK_ID;
Task task = Task.newBuilder()
.setName(taskName)
.setTargetTimeWindow(
TimeWindow.newBuilder()
.setStartTime(Timestamp.newBuilder().setSeconds(1680123600))
.setEndTime(Timestamp.newBuilder().setSeconds(1680130800)))
.build();
// Task request
UpdateTaskRequest updateTaskRequest =
UpdateTaskRequest.newBuilder() // No need for the header
.setTask(task)
.setUpdateMask(FieldMask.newBuilder().addPaths("targetTimeWindow"))
.build();
try {
Task updatedTask = deliveryService.updateTask(updateTaskRequest);
} catch (StatusRuntimeException e) {
Status s = e.getStatus();
switch (s.getCode()) {
case NOT_FOUND:
break;
case PERMISSION_DENIED:
break;
}
return;
}
বিশ্রাম
HTTP ব্যবহার করে একটি টাস্ক টাইম উইন্ডো সেট করতে, PATCH কল করুন এবং targetTimeWindow প্যারামিটারটি আপডেট করার জন্য updateMask ব্যবহার করুন:
PATCH https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks/<id>?updateMask=targetTimeWindow
এখানে <id> হলো টাস্কটির একটি অনন্য শনাক্তকারী। রিকোয়েস্ট হেডারে অবশ্যই Authorization নামের একটি ফিল্ড থাকতে হবে যার ভ্যালু হবে Bearer <token> , যেখানে <token> আপনার সার্ভার দ্বারা সার্ভিস অ্যাকাউন্ট রোল এবং JSON ওয়েব টোকেন- এ বর্ণিত নির্দেশিকা অনুসারে ইস্যু করা হয়।
# Set JWT, PROJECT_ID, and TASK_ID in the local environment
curl -X PATCH "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks/${TASK_ID}?updateMask=targetTimeWindow" \
-H "Content-type: application/json" \
-H "Authorization: Bearer ${JWT}" \
--data-binary @- << EOM
{
"targetTimeWindow": {
"startTime": "2023-03-29T21:00:00Z",
"endTime": "2023-03-29T23:00:00Z"
}
}
EOMটাস্কের দৃশ্যমানতা কাস্টমাইজ করুন
ডিফল্টরূপে, ফ্লিট ইঞ্জিন টাস্কের কার্যকলাপ সম্পর্কে স্বচ্ছতা প্রদান করে, যা চালান গ্রহণকারী গ্রাহক এবং চালান ট্র্যাককারী ফ্লিট অপারেটর উভয়কেই দেখানো যেতে পারে। এর মধ্যে এমন তথ্যও অন্তর্ভুক্ত থাকে, যেমন কোনো গ্রাহককে তার প্যাকেজ ডেলিভারির অবস্থা সম্পর্কে বিজ্ঞপ্তি পাঠানোর আগে কতগুলো স্টপ দেওয়া হয়েছে। আপনার ব্যবসায়িক মডেলের সাথে আরও ভালোভাবে মানিয়ে নিতে আপনি প্রতিটি টাস্কের জন্য আলাদাভাবে এই তথ্য কাস্টমাইজ করতে পারেন।
এই বিভাগে মানচিত্রে ট্র্যাক করা বস্তুগুলির দৃশ্যমানতার নিয়মাবলী বর্ণনা করা হয়েছে। এই নিয়মগুলি দুই শ্রেণীর বস্তুর ক্ষেত্রে প্রযোজ্য:
- অবস্থান চিহ্নিতকারীর দৃশ্যমানতা
- সক্রিয় যানবাহন টাস্কগুলির জন্য টাস্ক ডেটার দৃশ্যমানতা, যেমন পলিলাইন এবং ETA
অবস্থান চিহ্নিতকারী দৃশ্যমানতার নিয়মাবলী
ডেলিভারির অবস্থা নির্বিশেষে, ফ্লিট ইঞ্জিন মানচিত্রে প্রদর্শিত চালান ডেলিভারির স্থানের জন্য অবস্থান চিহ্নিতকারী (লোকেশন মার্কার) প্রদর্শন করে।
টাস্ক ডেটা দৃশ্যমানতার নিয়মাবলী
এই বিভাগে টাস্ক ডেটার ক্ষেত্রে প্রযোজ্য ডিফল্ট ভিজিবিলিটি নিয়মগুলি বর্ণনা করা হয়েছে। আপনি শুধুমাত্র সক্রিয় গাড়ির টাস্কগুলি কাস্টমাইজ করতে পারবেন, যার অর্থ হলো কেবল পিকআপ এবং ড্রপ-অফ টাস্কগুলিতেই কাস্টমাইজড ভিজিবিলিটি নিয়ম প্রয়োগ করা যায়।
নিম্নলিখিত কাজগুলো কাস্টমাইজ করা যাবে না:
- নির্ধারিত বিরতি
- অনুপলব্ধতার কাজ
- নিষ্ক্রিয় যানবাহনের কাজ
অনুপলব্ধতার কাজগুলির দৃশ্যমানতার নিয়মাবলী
ডিফল্টরূপে, ট্র্যাক করা হচ্ছে এমন টাস্কে যদি অন্তত একটি অনুপলব্ধতার টাস্ক নির্ধারিত থাকে, তাহলে যানবাহনটি ম্যাপে দেখা যায় না। উদাহরণস্বরূপ, যদি ড্রাইভার বিরতি নেন অথবা ট্র্যাক করা চালানের পথে যানবাহনে জ্বালানি ভরা হয়। তবে, আনুমানিক পৌঁছানোর সময় এবং আনুমানিক টাস্ক সম্পন্ন হওয়ার সময় তখনও পাওয়া যায়। আবার, আপনি এই নিয়মটি পরিবর্তন করতে পারবেন না।
সক্রিয় যানবাহনের কাজগুলির দৃশ্যমানতা
TaskTrackingInfo অবজেক্টটি বেশ কিছু ডেটা এলিমেন্ট প্রদান করে, যেগুলো আপনি শিপমেন্ট ট্র্যাকিং লাইব্রেরি ব্যবহার করে দৃশ্যমান করতে পারেন। ডিফল্টরূপে, এই ফিল্ডগুলো তখন দৃশ্যমান থাকে যখন টাস্কটি যানবাহনকে বরাদ্দ করা হয় এবং যখন যানবাহনটি টাস্কটির ৫টি স্টপের মধ্যে থাকে। টাস্কটি সম্পন্ন বা বাতিল করা হলে এগুলোর দৃশ্যমানতা শেষ হয়ে যায়।
ফ্লিট ইঞ্জিনের মধ্যে কোনো টাস্ক তৈরি বা আপডেট করার সময়, আপনি সেই টাস্কের TaskTrackingViewConfig সেট করার মাধ্যমে প্রতিটি টাস্কের জন্য আলাদাভাবে ভিজিবিলিটি কনফিগারেশন কাস্টমাইজ করতে পারেন। এর মাধ্যমে স্বতন্ত্র ডেটা এলিমেন্টগুলোর উপলব্ধ হওয়ার জন্য নিয়ম তৈরি হয়।
নিচের সারণিতে সেই ফিল্ডগুলো দেখানো হয়েছে যেগুলোতে আপনি দৃশ্যমানতার নিয়ম প্রয়োগ করতে পারেন।
| দৃশ্যমানতার নিয়মের জন্য যানবাহনের কার্যক্ষেত্র |
|---|
|
এই সারণিতে উপরে তালিকাভুক্ত ফিল্ডগুলোর জন্য উপলব্ধ দৃশ্যমানতার বিকল্পগুলো দেখানো হয়েছে।
| দৃশ্যমানতার বিকল্পগুলি |
|---|
|
রুট পলিলাইন এবং যানবাহনের অবস্থান দৃশ্যমানতার নিয়মাবলী
একটি ট্র্যাক করা রুটের ক্ষেত্রে, রুট পলিলাইনের দৃশ্যমানতা যানবাহনের দৃশ্যমানতার উপর নির্ভরশীল। যদি কোনো সক্রিয় রুটে, যেখানে যানবাহনটি দৃশ্যমান নয় , একটি রুট পলিলাইন দৃশ্যমান থাকে, তবুও দৃশ্যমান পলিলাইনটির শেষ প্রান্ত থেকে যানবাহনটির অবস্থান অনুমান করা সম্ভব। সুতরাং, রুট পলিলাইনের দৃশ্যমানতা অবশ্যই যানবাহনের দৃশ্যমানতার সমান বা তার চেয়ে বেশি সীমাবদ্ধ হতে হবে।
একটি বৈধ রুট পলিলাইন / যানবাহনের অবস্থান দৃশ্যমানতার সমন্বয় প্রদান করতে এই নিয়মগুলি অনুসরণ করুন।
রুট পলিলাইন এবং গাড়ির অবস্থান একই দৃশ্যমানতার বিকল্পগুলি নির্দিষ্ট করে।
এই পরিস্থিতিতে, পলিলাইন এবং গাড়ির অবস্থান উভয়ই একই বিকল্পগুলি নির্ধারণ করে, যার মধ্যে রয়েছে:
- অবশিষ্ট স্টপ সংখ্যা
- ETA পর্যন্ত সময়কাল
- অবশিষ্ট ড্রাইভিং দূরত্ব
নিয়ম মেনে চলার জন্য, রুট পলিলাইনের দৃশ্যমানতার মান অবশ্যই যানবাহনের দৃশ্যমানতার জন্য নির্ধারিত মানের চেয়ে কম বা সমান হতে হবে। এই উদাহরণে, পলিলাইনের জন্য অবশিষ্ট স্টপের সীমা ৩-এ সেট করা হয়েছে, যা যানবাহনের জন্য নির্দিষ্ট করা ৫ মানের চেয়ে কম। এর মানে হলো, যখন ট্র্যাক করা যাত্রাটি কাজের স্থান থেকে ৫টি স্টপ দূরে পৌঁছায়, তখন যানবাহনটি দেখা যায়, কিন্তু সেই যানবাহনের রুটটি যাত্রাটি ৩টি স্টপ দূরে না পৌঁছানো পর্যন্ত দেখা যায় না।
```js
"taskTrackingViewConfig": {
"routePolylinePointsVisibility": {
"remainingStopCountThreshold": 3
},
"vehicleLocationVisibility": {
"remainingStopCountThreshold": 5
},
}
```
রুট পলিলাইন এবং গাড়ির অবস্থান বিভিন্ন দৃশ্যমানতার বিকল্পগুলি নির্দিষ্ট করে।
যখন রুট পলিলাইন এবং গাড়ির অবস্থানের দৃশ্যমানতার বিকল্প ভিন্ন হয়, তখন গাড়ির অবস্থানটি কেবল তখনই দৃশ্যমান হয় যখন উভয়ের দৃশ্যমানতার বিকল্প পূরণ হয়। আবার, পলিলাইনের দৃশ্যমানতা গাড়ির দৃশ্যমানতার নিয়ম দ্বারা নিয়ন্ত্রিত হয়:
- সর্বদা দৃশ্যমান : যখন গাড়ির অবস্থানও একই সর্বদা দৃশ্যমান দৃশ্যমানতার বিকল্পটি প্রদান করে, তখন একটি রুট পলিলাইনকে অবশ্যই সর্বদা দৃশ্যমান দৃশ্যমানতার বিকল্পটি ব্যবহার করতে হবে।
- কখনো দৃশ্যমান নয় : যখন গাড়ির অবস্থান কখনো দৃশ্যমান নয় এমন দৃশ্যমানতার বিকল্প ব্যবহার করে, তখন একটি রুট পলিলাইনকেও অবশ্যই কখনো দৃশ্যমান নয় এমন দৃশ্যমানতার বিকল্প ব্যবহার করতে হবে।
একটি উদাহরণ নিচে দেওয়া হলো:
"taskTrackingViewConfig": {
"routePolylinePointsVisibility": {
"remainingStopCountThreshold": 3
},
"vehicleLocationVisibility": {
"remainingDrivingDistanceMetersThreshold": 3000
},
}
এই উদাহরণে, গাড়ির অবস্থান কেবল তখনই দেখা যাবে যদি অবশিষ্ট স্টপের সংখ্যা কমপক্ষে ৩ হয় এবং অবশিষ্ট চালনার দূরত্ব কমপক্ষে ৩০০০ মিটার হয়।
টাস্ক দৃশ্যমানতা কাস্টমাইজেশনের উদাহরণ
নিম্নলিখিত উদাহরণগুলিতে দেখানো হয়েছে কীভাবে নিম্নলিখিত দৃশ্যমানতার নিয়মগুলি সহ একটি টাস্ক সেট করতে হয়:
- যানবাহনটি ৩টি স্টপের মধ্যে থাকলে পথের পলিলাইনগুলো দেখান।
- অবশিষ্ট ড্রাইভিং দূরত্ব ৫০০০ মিটারের কম হলে আনুমানিক পৌঁছানোর সময় (ETA) দেখান।
- অবশিষ্ট স্টপ সংখ্যা কখনই দেখাবেন না।
- যানবাহনটি টাস্কের ৫টি স্টপের মধ্যে থাকলেই অন্য প্রতিটি ফিল্ডের ডিফল্ট দৃশ্যমানতা প্রদর্শিত হয়।
gRPC বা REST এর জন্য TaskTrackingViewConfig দেখুন।
জিআরপিসি
static final String PROJECT_ID = "my-delivery-co-gcp-project";
static final String TASK_ID = "task-8241890";
DeliveryServiceBlockingStub deliveryService =
DeliveryServiceGrpc.newBlockingStub(channel);
// Task settings
String taskName = "providers/" + PROJECT_ID + "/tasks/" + TASK_ID;
Task task = Task.newBuilder()
.setName(taskName)
.setTaskTrackingViewConfig(
TaskTrackingViewConfig.newBuilder()
.setRoutePolylinePointsVisibility(
VisibilityOption.newBuilder().setRemainingStopCountThreshold(3))
.setEstimatedArrivalTimeVisibility(
VisibilityOption.newBuilder().remainingDrivingDistanceMetersThreshold(5000))
.setRemainingStopCountVisibility(
VisibilityOption.newBuilder().setNever(true)))
.build();
// Task request
UpdateTaskRequest updateTaskRequest =
UpdateTaskRequest.newBuilder() // No need for the header
.setTask(task)
.setUpdateMask(FieldMask.newBuilder().addPaths("taskTrackingViewConfig"))
.build();
try {
Task updatedTask = deliveryService.updateTask(updateTaskRequest);
} catch (StatusRuntimeException e) {
Status s = e.getStatus();
switch (s.getCode()) {
case NOT_FOUND:
break;
case PERMISSION_DENIED:
break;
}
return;
}
বিশ্রাম
HTTP ব্যবহার করে টাস্ক ট্র্যাকিং ভিউ কনফিগ উইন্ডো সেট করতে, PATCH কল করুন এবং taskTrackingViewConfig প্যারামিটারটি আপডেট করার জন্য updateMask ব্যবহার করুন:
PATCH https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks/<id>?updateMask=taskTrackingViewConfig
উদাহরণস্বরূপ:
# Set JWT, PROJECT_ID, and TASK_ID in the local environment
curl -X PATCH "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks/${TASK_ID}?updateMask=taskTrackingViewConfig" \
-H "Content-type: application/json" \
-H "Authorization: Bearer ${JWT}" \
--data-binary @- << EOM
{
"taskTrackingViewConfig": {
"routePolylinePointsVisibility": {
"remainingStopCountThreshold": 3
},
"estimatedArrivalTimeVisibility": {
"remainingDrivingDistanceMetersThreshold": 5000
},
"remainingStopCountVisibility": {
"never": true
}
}
}
EOM