এই ডকুমেন্টটি ধরে নেয় যে আপনি টাস্ক তৈরি এবং ব্যবহার করতে জানেন। শিপমেন্ট টাস্ক চূড়ান্ত করার জন্য এখানে নিম্নলিখিত নির্দিষ্ট উদাহরণ দেওয়া হয়েছে:
টাস্ক বন্ধ করা : একটি শিপমেন্ট টাস্ক বন্ধ করলে তার অবস্থা
CLOSEDএ পরিবর্তিত হয় এবং এটি নির্দেশ করে যে টাস্কটি আর সক্রিয় নেই।টাস্কের ফলাফল নির্ধারণ করুন : একটি টাস্ক বন্ধ হয়ে গেলে, আপনি এর ফলাফলকে
SUCCEEDEDবাFAILEDহিসেবে নির্ধারণ করে সেটিকে চূড়ান্ত করেন। জার্নি শেয়ারিং-এ ডেলিভারির ফলাফল দেখানোর জন্য এবং ফ্লিট ইঞ্জিন পরিষেবার সঠিক বিলিং নিশ্চিত করার জন্য, টাস্ক চূড়ান্ত করার এটি একটি গুরুত্বপূর্ণ অংশ।
একটি কাজ বন্ধ করুন
আপনি নিম্নলিখিত উপায়ে একটি টাস্ক বন্ধ করতে পারেন:
- যানবাহনটির জন্য স্টপ স্ট্যাটাস আপডেট করুন । আপনি যানবাহনটি থেকে স্টপটি সরিয়ে ফেললে, এর সাথে সম্পর্কিত সমস্ত টাস্ক বন্ধ হয়ে যায়। বিস্তারিত জানতে ‘স্টপ স্ট্যাটাস আপডেট করুন’ দেখুন।
- যানবাহন থামানোর তালিকা থেকে কাজটি সরান । এর জন্য থামানোর কাজের তালিকা আপডেট করতে হবে, কিন্তু বন্ধ করা কাজটি আর তালিকার অংশ থাকবে না। ‘কাজ আপডেট করুন’- এর অধীনে ‘কাজের ক্রম আপডেট করুন’ দেখুন।
- টাস্কের অবস্থা
CLOSEDএ সেট করুন । এটি শুধুমাত্র সেইসব টাস্কের ক্ষেত্রেই করা সম্ভব যেগুলো কোনো যানবাহনে বরাদ্দ করা নেই। এই বিভাগে এই পদ্ধতিটি দেখানো হয়েছে।
একবার কোনো টাস্ক বন্ধ করলে, আপনি সেটি আর পুনরায় খুলতে পারবেন না।
কোনো টাস্ক বন্ধ করা তার সাফল্য বা ব্যর্থতা নির্দেশ করে না । এটি নির্দেশ করে যে টাস্কটি আর চলমান বলে বিবেচিত হচ্ছে না। কোনো টাস্কের প্রকৃত ফলাফল নির্দেশ করতে এবং ফ্লিট ট্র্যাকিং ও জার্নি শেয়ারিংয়ের উদ্দেশ্যে তা প্রদর্শন করার জন্য, আপনাকে অবশ্যই টাস্কটির প্রকৃত ফলাফল নির্দেশ করতে হবে। নিচে ‘টাস্কের ফলাফল নির্ধারণ করুন’ দেখুন।
কাজ বন্ধ করার জন্য টাস্ক ফিল্ড
এই বিভাগে একটি টাস্ক বন্ধ করার সময় যে প্রয়োজনীয় ফিল্ডগুলো সেট করতে হয়, তা নথিভুক্ত করা হয়েছে। ফ্লিট ইঞ্জিন আপডেটের জন্য এনটিটির অন্য সব ফিল্ড উপেক্ষা করে।
| প্রয়োজনীয় ক্ষেত্র | মূল্য |
|---|---|
state | State.CLOSED |
সরাসরি একটি কাজ বন্ধ করুন
নিম্নলিখিত উদাহরণগুলিতে দেখানো হয়েছে কিভাবে 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)
.setState(Task.State.CLOSED) // You can only directly CLOSE a
.build(); // task that is NOT assigned to a vehicle.
// Task request
UpdateTaskRequest updateTaskRequest =
UpdateTaskRequest.newBuilder() // No need for the header
.setTask(task)
.setUpdateMask(FieldMask.newBuilder().addPaths("state"))
.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;
}
বিশ্রাম
PATCH https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks/<id>?updateMask=state
- <id> হলো কাজটি চিহ্নিত করার একটি অনন্য শনাক্তকারী।
- অনুরোধ হেডারে অবশ্যই Authorization নামের একটি ফিল্ড থাকতে হবে যার ভ্যালু হবে Bearer <token> , যেখানে <token> টি আপনার সার্ভার দ্বারা Service account roles and JSON Web tokens -এ বর্ণিত নির্দেশিকা অনুসারে ইস্যু করা হয়।
- আপনাকে অনুরোধের মূল অংশে অবশ্যই একটি
Taskএনটিটি অন্তর্ভুক্ত করতে হবে।
curl কমান্ডের উদাহরণ:
# 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=state,taskOutcome,taskOutcomeTime" \
-H "Content-type: application/json" \
-H "Authorization: Bearer ${JWT}" \
--data-binary @- << EOM
{
"state": "CLOSED",
"taskOutcome": "SUCCEEDED",
"taskOutcomeTime": "$(date -u +"%Y-%m-%dT%H:%M:%SZ")"
}
EOMকাজের ফলাফল নির্ধারণ করুন
কোনো টাস্কের প্রকৃত ফলাফল নির্দেশ করতে, আপনি বন্ধ করা টাস্কগুলোর ফলাফল SUCCEEDED ) অথবা FAILED হিসেবে সেট করেন। কোনো টাস্কের ফলাফল সেট করার আগে সেটিকে অবশ্যই বন্ধ করতে হবে। ফ্লিট ইঞ্জিন শুধুমাত্র SUCCEEDED অবস্থায় থাকা ডেলিভারি টাস্কগুলোর জন্যই চার্জ করে।
কাজের ফলাফলের বিবরণ
টাস্কগুলো কাজের ফলাফল সম্পর্কে অতিরিক্ত বিবরণও প্রদান করে। আপনি এগুলো সরাসরি সেট করতে পারেন এবং ফ্লিট ইঞ্জিন আপনার সেটিংস মেনে চলে:
- টাস্কের ফলাফল স্থান : ফ্লিট ইঞ্জিন স্বয়ংক্রিয়ভাবে টাস্কের ফলাফল স্থানের জায়গায় গাড়ির সর্বশেষ জানা অবস্থানটি পূরণ করে দেয়। আপনি চাইলে এর পরিবর্তে এই তথ্যটি প্রদান করতে পারেন।
- টাস্কের ফলাফল প্রকাশের সময় : ফ্লিট ইঞ্জিন এই ফিল্ডটি পূরণ করে না, তবে এটি আপনার সেট করার জন্য উপলব্ধ।
task_outcome_location এবং task_outcome_time নির্ধারণ করার জন্য আপনি নিম্নলিখিত যেকোনো পদ্ধতি ব্যবহার করতে পারেন:
- যে অনুরোধে টাস্কের ফলাফল নির্ধারণ করা হয় , সেই একই অনুরোধে এগুলো আপডেট করুন ।
- কাজের ফলাফল নির্ধারণ করার পরে, সেগুলো আপডেট করুন ।
- সেট করার পর সেগুলো আবার পরিবর্তন করুন ।
ফ্লিট ইঞ্জিন টাস্কের ফলাফল সম্পর্কিত নিম্নলিখিত আপডেটগুলি প্রতিরোধ করে:
- কোনো কাজের ফলাফল একবার
SUCCEEDEDবাFAILEDহিসেবে নির্ধারিত হয়ে গেলে, আপনি তা আর পরিবর্তন করতে পারবেন না । - যেসব টাস্কের কোনো ফলাফল নির্ধারিত নেই, সেগুলোর জন্য আপনি ফলাফলের স্থান বা সময় নির্ধারণ করতে পারবেন না ।
ফলাফল নির্ধারণের জন্য টাস্ক ফিল্ড
এই বিভাগে একটি টাস্কের ফলাফল নির্ধারণ করার সময় প্রয়োজনীয় এবং ঐচ্ছিক ফিল্ডগুলো নথিভুক্ত করা হয়েছে। ফ্লিট ইঞ্জিন আপডেটের জন্য এনটিটির অন্যান্য ফিল্ড উপেক্ষা করে।
| প্রয়োজনীয় ক্ষেত্র | মূল্য |
|---|---|
taskOutcome | Outcome.SUCCEEDED অথবা Outcome.FAILED |
| ঐচ্ছিক ক্ষেত্র | মূল্য |
|---|---|
taskOutcomeLocation | যে স্থানে কাজটি সম্পন্ন করা হয়েছিল। যদি তা সেট করা না থাকে, তাহলে ফ্লিট ইঞ্জিন ডিফল্ট হিসেবে সর্বশেষ গাড়ির অবস্থানটি ধরে নেয়। |
taskOutcomeTime | কাজটি সম্পন্ন হওয়ার সময়সূচক। |
কাজের ফলাফলের উদাহরণ
নিম্নলিখিত উদাহরণটি দেখায় কিভাবে জাভা gRPC লাইব্রেরি এবং UpdateTask এ একটি HTTP REST কল ব্যবহার করে একটি টাস্কের ফলাফলকে SUCCEEDED হিসেবে সেট করতে হয় এবং টাস্কটি যেখানে সম্পন্ন হয়েছিল তার অবস্থান নির্ধারণ করতে হয়।
জিআরপিসি
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)
.setTaskOutcome(TaskOutcome.SUCCEEDED)
.setTaskOutcomeTime(now())
.setTaskOutcomeLocation( // Grand Indonesia East Mall
LocationInfo.newBuilder().setPoint(
LatLng.newBuilder().setLatitude(-6.195139).setLongitude(106.820826)))
.build();
// Task request
UpdateTaskRequest updateTaskRequest =
UpdateTaskRequest.newBuilder() // No need for the header
.setTask(task)
.setUpdateMask(FieldMask.newBuilder().addPaths("task_outcome", "task_outcome_time", "task_outcome_location"))
.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;
}
বিশ্রাম
PATCH https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks/<id>?updateMask=taskOutcome,taskOutcomeTime,taskOutcomeLocation
- <id> হলো কাজটি চিহ্নিত করার একটি অনন্য শনাক্তকারী।
- অনুরোধ হেডারে অবশ্যই Authorization নামের একটি ফিল্ড থাকতে হবে যার ভ্যালু হবে Bearer <token> , যেখানে <token> টি আপনার সার্ভার দ্বারা Service account roles and JSON Web tokens -এ বর্ণিত নির্দেশিকা অনুসারে ইস্যু করা হয়।
- অনুরোধের মূল অংশে অবশ্যই একটি
Taskএনটিটি থাকতে হবে।
# 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=taskOutcome,taskOutcomeTime,taskOutcomeLocation" \
-H "Content-type: application/json" \
-H "Authorization: Bearer ${JWT}" \
--data-binary @- << EOM
{
"taskOutcome": "SUCCEEDED",
"taskOutcomeTime": "$(date -u +"%Y-%m-%dT%H:%M:%SZ")",
"taskOutcomeLocation": {
"point": {
"latitude": -6.195139,
"longitude": 106.820826
}
}
}
EOM