এই ডকুমেন্টটি ধরে নেয় যে আপনি কীভাবে কাজ তৈরি এবং ব্যবহার করবেন তা জানেন। এটি নিম্নলিখিত উপায়ে শিপমেন্টের কাজগুলি কীভাবে কনফিগার করবেন তার নির্দিষ্ট উদাহরণ প্রদান করে:
একটি শিপমেন্ট টাস্কের জন্য লক্ষ্য সময় নির্ধারণ করুন : কাজটি সম্পন্ন করার জন্য সময় নির্ধারণ করুন।
কাজের দৃশ্যমানতা কাস্টমাইজ করুন : গ্রাহক বা ফ্লিট অপারেটরদের কাছে প্রদর্শনের জন্য কাজের কার্যকলাপের দৃশ্যমানতা কাস্টমাইজ করুন।
শিপমেন্ট কাজের জন্য ক্ষেত্র সম্পর্কে বিস্তারিত জানতে শিপমেন্ট টাস্ক তৈরি করুন দেখুন। বিদ্যমান কাজ সম্পর্কে অতিরিক্ত তথ্য আপডেট করার সময়, আপনাকে অবশ্যই কাজের জন্য প্রাসঙ্গিক শনাক্তকারীও অন্তর্ভুক্ত করতে হবে, কাজের জন্য আপডেট করা ক্ষেত্রগুলি ছাড়াও।
লক্ষ্য সময় উইন্ডো সেট করুন
টার্গেট টাইম উইন্ডো হল টাইমউইন্ডো যে সময় টাস্কটি সম্পন্ন করতে হবে। উদাহরণস্বরূপ, যদি আপনি ডেলিভারি প্রাপকদের কাছে একটি ডেলিভারি টাইম উইন্ডো জানান, তাহলে আপনি এই টাইম উইন্ডোটি ক্যাপচার করতে এবং সতর্কতা তৈরি করতে টাস্ক টার্গেট টাইম উইন্ডো ব্যবহার করতে পারেন, অথবা আপনি অতীতের ট্রিপের পারফরম্যান্স বিশ্লেষণ করতে এটি ব্যবহার করতে পারেন।
লক্ষ্য সময় উইন্ডোতে একটি শুরুর সময় এবং একটি শেষের সময় থাকে এবং এটি যেকোনো ধরণের কাজের উপর সেট করা যেতে পারে। লক্ষ্য সময় উইন্ডো রাউটিং আচরণকে প্রভাবিত করে না।
নিম্নলিখিত উদাহরণগুলি দেখায় কিভাবে জাভা 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 কল করুন এবং updateMask ব্যবহার করে targetTimeWindow প্যারামিটার আপডেট করুন:
PATCH https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks/<id>?updateMask=targetTimeWindow
এখানে <id> হল কাজের জন্য একটি অনন্য শনাক্তকারী। অনুরোধের শিরোনামে Bearer <token> মান সহ একটি ক্ষেত্র Authorization থাকতে হবে, যেখানে <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 অবজেক্টটি বেশ কিছু ডেটা উপাদান প্রদান করে যা আপনি শিপমেন্ট ট্র্যাকিং লাইব্রেরি ব্যবহার করে দৃশ্যমান করতে পারেন। ডিফল্টরূপে, যখন গাড়িকে কাজটি বরাদ্দ করা হয় এবং যখন গাড়িটি টাস্কের 5 স্টপের মধ্যে থাকে তখন এই ক্ষেত্রগুলি দৃশ্যমান হয়। কাজটি সম্পন্ন বা বাতিল হলে দৃশ্যমানতা শেষ হয়ে যায়।
Fleet Engine-এর মধ্যে কোনও টাস্ক তৈরি বা আপডেট করার সময়, আপনি TaskTrackingViewConfig সেট করে প্রতি-টাস্কের ভিত্তিতে দৃশ্যমানতা কনফিগারেশন কাস্টমাইজ করতে পারেন। এটি পৃথক ডেটা উপাদানগুলি উপলব্ধ করার জন্য নিয়ম তৈরি করে।
নিম্নলিখিত সারণীতে আপনি কোন ক্ষেত্রগুলিতে দৃশ্যমানতার নিয়ম প্রয়োগ করতে পারেন তা দেখানো হয়েছে।
| দৃশ্যমানতার নিয়মের জন্য যানবাহনের টাস্ক ফিল্ড |
|---|
|
এই টেবিলটি উপরে তালিকাভুক্ত ক্ষেত্রগুলির জন্য উপলব্ধ দৃশ্যমানতার বিকল্পগুলি দেখায়।
| দৃশ্যমানতার বিকল্পগুলি |
|---|
|
রুট পলিলাইন এবং যানবাহনের অবস্থান দৃশ্যমানতার নিয়ম
ট্র্যাক করা রুটের ক্ষেত্রে, রুট পলিলাইনের দৃশ্যমানতা গাড়ির দৃশ্যমানতার উপর নির্ভর করে। যদি কোনও সক্রিয় রুটে রুট পলিলাইন দৃশ্যমান থাকে যেখানে গাড়িটি দৃশ্যমান নয় , তবে দৃশ্যমান পলিলাইনের শেষে গাড়ির অবস্থান অনুমান করা যেতে পারে। অতএব, রুট পলিলাইনের দৃশ্যমানতা গাড়ির দৃশ্যমানতার সমান বা তার চেয়ে বেশি সীমাবদ্ধ হতে হবে।
একটি বৈধ রুট পলিলাইন / যানবাহনের অবস্থান দৃশ্যমানতার সমন্বয় প্রদান করতে এই নিয়মগুলি অনুসরণ করুন।
রুট পলিলাইন এবং গাড়ির অবস্থান একই দৃশ্যমানতার বিকল্পগুলি নির্দিষ্ট করে
এই পরিস্থিতিতে, পলিলাইন এবং গাড়ির অবস্থান উভয়ই একই বিকল্প সেট করে, যার মধ্যে রয়েছে:
- অবশিষ্ট স্টপ গণনা
- ETA পর্যন্ত সময়কাল
- বাকি ড্রাইভিং দূরত্ব
নিয়ম মেনে চলার জন্য, রুট পলিলাইনের দৃশ্যমানতার মান গাড়ির দৃশ্যমানতার জন্য নির্ধারিত মানের চেয়ে কম বা সমান হতে হবে। এই উদাহরণে, পলিলাইনের জন্য অবশিষ্ট স্টপ থ্রেশহোল্ড 3 তে সেট করা হয়েছে, যা গাড়ির জন্য নির্দিষ্ট 5 মানের চেয়ে কম। এর অর্থ হল, যখন ট্র্যাক করা যাত্রাটি টাস্ক লোকেশন থেকে 5 স্টপ দূরে পৌঁছায়, তখন গাড়িটি উপস্থিত হয়, কিন্তু যাত্রাটি 3 স্টপ দূরে না হওয়া পর্যন্ত সেই গাড়ির রুটটি উপস্থিত হয় না।
```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 কল করুন এবং updateMask ব্যবহার করে taskTrackingViewConfig প্যারামিটার আপডেট করুন:
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