এই ডকুমেন্ট ধরে নেয় যে আপনি Fleet Engine-এর ভূমিকা বিভাগে শিডিউল করা টাস্ক-এর ভূমিকা সংক্রান্ত গাইড এবং এই বিভাগে শিডিউল করা টাস্ক কী? পড়েছেন।
শিডিউল করা টাস্কের জন্য Fleet Engine বিভিন্ন ধরনের টাস্ক প্রদান করে:
- শিপমেন্ট টাস্ক: শিপমেন্ট পিক-আপ ও ডেলিভারি সহ ড্রাইভিং টাস্কের জন্য ব্যবহার করুন।
- অনুপলভ্যতার টাস্ক: ড্রাইভাররা যখন উপলভ্য থাকেন না, যেমন প্রয়োজনীয় বিরতির সময়, তখন এটি ব্যবহার করুন।
- শিডিউল করা স্টপ টাস্ক: ড্রপ বক্স বা গ্রাহকের লোকেশনে ড্রাইভিং ছাড়া অন্যান্য টাস্কের জন্য ব্যবহার করুন, যেমন কোনও বিল্ডিংয়ে প্রবেশ করার বা ডেলিভারি পয়েন্ট লোকেট করার সময়।
আপনার সার্ভারে কীভাবে শিপমেন্ট নয় এমন টাস্ক তৈরি করবেন তা এই ডকুমেন্টে কভার করা হয়েছে। শিপমেন্ট টাস্কের ধরনের জন্য, শিপমেন্ট টাস্ক তৈরি করুন দেখুন।
ড্রাইভিং ছাড়া অন্যান্য টাস্কের জন্য টাস্ক ফিল্ড
এই বিভাগে, অনুপলভ্যতা এবং শিডিউল করা স্টপ টাস্ক, উভয়ের জন্যই প্রয়োজনীয় টাস্ক ফিল্ডের ডকুমেন্টেশন করা হয়েছে।
টাস্কের প্রয়োজনীয় ফিল্ড
Fleet Engine-এ আপনার তৈরি করা প্রতিটি টাস্কের জন্য, আপনাকে অবশ্যই প্রয়োজনীয়
ফিল্ডগুলি প্রদান করতে হবে এবং ঐচ্ছিক ফিল্ডগুলির যেকোনও একটি প্রদান করতে পারেন। Fleet Engine
অন্য সব ফিল্ড উপেক্ষা করে এবং টাস্ক তৈরি করার
অনুরোধে অ্যাসাইন করা deliveryVehicleId প্রদান করা হলে একটি ব্যতিক্রম থ্রো করে। কোনও গাড়িতে টাস্ক অ্যাসাইন করতে,
UpdateDeliveryVehicleRequest ব্যবহার করুন। আরও তথ্যের জন্য,
টাস্ক আপডেট করুন বিকল্প দেখুন।
| ফিল্ড | ভ্যালু |
|---|---|
type |
টাস্কের ধরনের সাথে ম্যাচ করে এমন ধরন সেট করুন, যা এগুলির মধ্যে একটি:
|
state |
State.OPEN |
task_id |
অনন্য টাস্ক আইডি। এটি যেন শিপমেন্টের ট্র্যাকিং নম্বর না হয়। আপনার সিস্টেমে টাস্ক আইডি না থাকলে, আপনি একটি ইউনিভার্সাল অনন্য শনাক্তকারী (UUID) তৈরি করতে পারেন। নির্দিষ্ট তথ্যের জন্য, টাস্ক আইডি দেখুন। |
tracking_id |
PICKUP অথবা DELIVERY টাস্কের জন্য:
আপনি শিপমেন্ট ট্র্যাক করার জন্য যে নম্বর বা শনাক্তকারী ব্যবহার করছেন। শিপমেন্ট নয় এমন টাস্কের জন্য
এই ফিল্ডে কিছু লিখবেন না। |
planned_location |
PICKUP, DELIVERY, অথবা
শুধুমাত্র SCHEDULED_STOP টাস্ক: যে
লোকেশন টাস্ক সম্পূর্ণ করতে হবে। UNAVAILABLEটি টাস্কের
জন্য প্রয়োজন নেই। |
task_duration |
টাস্ক সম্পূর্ণ করতে যে সময় লাগতে পারে। যেমন, পার্কিং খোঁজা বা হ্যান্ডঅফ লোকেশনে হেঁটে যাওয়া। |
ঐচ্ছিক শিপমেন্ট টাস্ক ফিল্ড
| ফিল্ড | ভ্যালু |
|---|---|
target_time_window |
যে সময়সীমার মধ্যে টাস্কটি সম্পূর্ণ করতে হবে। এই ফিল্ড রাউটিং আচরণকে প্রভাবিত করে না। |
task_tracking_view_config |
PICKUP বা DELIVERYটি টাস্কের জন্য:
টাস্ক ট্র্যাকিংয়ের জন্য কনফিগারেশন যা নির্দিষ্ট করে যে কোন ডেটা এলিমেন্ট
কোন পরিস্থিতিতে ব্যবহারকারী দেখতে পাবেন। |
attributes |
কাস্টম টাস্ক অ্যাট্রিবিউটের তালিকা। প্রতিটি অ্যাট্রিবিউটের একটি অনন্য কী থাকতে হবে। |
'উপলভ্য নেই' টাস্ক তৈরি করুন
আপনি অনুপলভ্যতা নির্দেশ করে এমন একটি টাস্ক তৈরি করতে পারেন; যেমন, ড্রাইভারের বিরতির জন্য। উপলভ্য না থাকার টাস্ক তৈরি করতে, নিম্নলিখিত নির্দেশিকা ব্যবহার করুন:
- টাস্কের ধরন
UNAVAILABLE-এ সেট করুন। - ট্র্যাকিং আইডি যোগ করবেন না।
- যদিও আপনাকে কোনও অনুপলভ্যতা টাস্কের জন্য লোকেশন প্রদান করতে হবে না, তবে এটি করলে সারাদিন ধরে উন্নত ETA গণনা প্রদান করা হয়।
গাড়ির লোকেশন শেয়ার করার জন্য বিশেষ দৃশ্যমানতার নিয়ম প্রযোজ্য হয় যখন এটি
UNAVAILABLE টাস্কে থাকে।
- শিপমেন্ট ট্র্যাকিং লাইব্রেরির সাথে ইন্টিগ্রেট করা কনজিউমার অ্যাপ: গাড়িটি অনুপলভ্য টাস্কে থাকলে, কনজিউমার অ্যাপের ব্যবহারকারীরা গাড়ির লোকেশন দেখতে পাবেন না, যদিও তারা এখনও তাদের শিপমেন্টের স্ট্যাটাস সংক্রান্ত তথ্য দেখতে পাবেন।
- ফ্লিট ট্র্যাকিং লাইব্রেরির সাথে ইন্টিগ্রেট করা ফ্লিট ট্র্যাকিং অ্যাপ: গাড়িটি অনুপলভ্যতা টাস্কে থাকলে, ফ্লিট ট্র্যাকিং অ্যাপ ব্যবহারকারী ফ্লিট ম্যানেজাররা অনুপলভ্যতা টাস্কের জন্য গাড়ির লোকেশন দেখতে পারবেন।
Java gRPC লাইব্রেরি ব্যবহার করে কীভাবে শিডিউল করা অনুপলভ্যতা টাস্ক তৈরি করতে হয় অথবা
CreateTask-এ কীভাবে HTTP REST অনুরোধ করতে হয় তা নিম্নলিখিত উদাহরণে দেখানো হয়েছে।
gRPC
static final String PROJECT_ID = "my-delivery-co-gcp-project";
DeliveryServiceBlockingStub deliveryService =
DeliveryServiceGrpc.newBlockingStub(channel);
// Task settings
String parent = "providers/" + PROJECT_ID;
Task task = Task.newBuilder()
.setType(Task.Type.UNAVAILABLE)
.setState(Task.State.OPEN)
.setTaskDuration(
Duration.newBuilder().setSeconds(60 * 60)) // 1hr break
.build();
// Task request
CreateTaskRequest createTaskRequest =
CreateTaskRequest.newBuilder() // No need for the header
.setParent(parent) // Avoid using auto-incrementing IDs for the taskId
.setTaskId("task-8241890") // Task ID assigned by the Provider
.setTask(task) // Initial state
.build();
// Error handling
// If Fleet Engine does not have task with that ID and the credentials of the
// requestor pass, the service creates the task successfully.
try {
Task createdTask = deliveryService.createTask(createTaskRequest);
} catch (StatusRuntimeException e) {
Status s = e.getStatus();
switch (s.getCode()) {
case ALREADY_EXISTS:
break;
case PERMISSION_DENIED:
break;
}
return;
}
```
বিশ্রাম
সার্ভার এনভায়রনমেন্ট থেকে অনুপলভ্যতা টাস্ক তৈরি করতে, CreateTask-এ HTTP REST
কল করুন:
POST https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks?taskId=<id><id> হল টাস্কের জন্য অনন্য শনাক্তকারী।
রিকোয়েস্ট হেডারে অবশ্যই Authorization ফিল্ড থাকতে হবে যার ভ্যালু হবে Bearer <token>, যেখানে <token> আপনার সার্ভার ইস্যু করেছে পরিষেবা অ্যাকাউন্ট রোল এবং JSON ওয়েব টোকেন-এ বর্ণিত নির্দেশিকা অনুযায়ী।
অনুরোধের বডিতে অবশ্যই উপযুক্ত ফিল্ড সহ একটি Task এন্টিটি থাকতে হবে
যা ড্রাইভিং ছাড়া অন্যান্য টাস্কের জন্য টাস্ক ফিল্ড-এ বর্ণনা করা হয়েছে।
curl কমান্ডের উদাহরণ:
# Set $JWT, $PROJECT_ID, and $TASK_ID in the local environment
curl -X POST "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks?taskId=${TASK_ID}" \
-H "Content-type: application/json" \
-H "Authorization: Bearer ${JWT}" \
--data-binary @- << EOM
{
"type": "UNAVAILABLE",
"state": "OPEN",
"plannedLocation": {
"point": {
"latitude": -6.195139,
"longitude": 106.820826
}
},
"taskDuration": "300s"
}
EOMশিডিউল করা স্টপ টাস্ক তৈরি করুন
আপনি শিডিউল করা স্টপের জন্য টাস্ক তৈরি করতে পারবেন; যেমন, গ্রাহকের লোকেশনে ড্রাইভিং ছাড়া অন্য টাস্ক, রিফুয়েলিং স্টপ অথবা ফিডার ভেহিকল থেকে ড্রাইভারের শিপমেন্ট রিসিভ করার জন্য। শিডিউল করা স্টপ টাস্ক তৈরি করার সময়, নিম্নলিখিত নির্দেশিকা অনুসরণ করুন:
- টাস্কের ধরন এতে সেট করুন
- ট্র্যাকিং আইডি যোগ করবেন না।
- আপনি চাইলে লোকেশন উল্লেখ করতে পারেন।
Java gRPC লাইব্রেরি ব্যবহার করে কীভাবে শিডিউল করা অনুপলভ্যতা টাস্ক তৈরি করতে হয় অথবা
CreateTask-এ কীভাবে HTTP REST অনুরোধ করতে হয় তা নিম্নলিখিত উদাহরণে দেখানো হয়েছে।
gRPC
static final String PROJECT_ID = "my-delivery-co-gcp-project";
DeliveryServiceBlockingStub deliveryService =
DeliveryServiceGrpc.newBlockingStub(channel);
// Task settings
String parent = "providers/" + PROJECT_ID;
Task task = Task.newBuilder()
.setType(Task.Type.SCHEDULED_STOP)
.setState(Task.State.OPEN)
.setPlannedLocation( // Grand Indonesia East Mall
LocationInfo.newBuilder().setPoint(
LatLng.newBuilder().setLatitude(-6.195139).setLongitude(106.820826)))
.setTaskDuration(
Duration.newBuilder().setSeconds(2 * 60))
.build();
// Task request
CreateTaskRequest createTaskRequest =
CreateTaskRequest.newBuilder() // No need for the header
.setParent(parent)
.setTaskId("task-8241890") // Task ID assigned by the Provider
.setTrip(task) // Initial state
.build();
// Error handling
// If Fleet Engine does not have task with that ID and the credentials of the
// requestor pass, the service creates the task successfully.
try {
Task createdTask = deliveryService.createTask(createTaskRequest);
} catch (StatusRuntimeException e) {
Status s = e.getStatus();
switch (s.getCode()) {
case ALREADY_EXISTS:
break;
case PERMISSION_DENIED:
break;
}
return;
}
```
বিশ্রাম
সার্ভার এনভায়রনমেন্ট থেকে শিডিউল করা স্টপ টাস্ক তৈরি করতে, CreateTask-এ HTTP REST
কল করুন:
POST https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks?taskId=<id><id> হল টাস্কের জন্য অনন্য শনাক্তকারী।
রিকোয়েস্ট হেডারে অবশ্যই Authorization ফিল্ড থাকতে হবে যার ভ্যালু হবে Bearer <token>, যেখানে <token> আপনার সার্ভার ইস্যু করেছে পরিষেবা অ্যাকাউন্ট রোল এবং JSON ওয়েব টোকেন-এ বর্ণিত নির্দেশিকা অনুযায়ী।
অনুরোধের প্রধান অংশে অবশ্যই একটি Task এন্টিটি থাকতে হবে:
curl কমান্ডের উদাহরণ:
# Set $JWT, $PROJECT_ID, and $TASK_ID in the local environment
curl -X POST "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks?taskId=${TASK_ID}" \
-H "Content-type: application/json" \
-H "Authorization: Bearer ${JWT}" \
--data-binary @- << EOM
{
"type": "SCHEDULED_STOP",
"state": "OPEN",
"plannedLocation": {
"point": {
"latitude": -6.195139,
"longitude": 106.820826
}
},
"taskDuration": "600s"
}
EOM