কাজগুলি চূড়ান্ত করুন

এই ডকুমেন্টটি ধরে নেয় যে আপনি কীভাবে কাজ তৈরি এবং ব্যবহার করবেন তা জানেন। এটি শিপমেন্টের কাজগুলি কীভাবে চূড়ান্ত করতে হয় তার নির্দিষ্ট উদাহরণগুলি নিম্নরূপ প্রদান করে:

  • একটি টাস্ক বন্ধ করুন : একটি শিপমেন্ট টাস্ক বন্ধ করলে এর অবস্থা 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> হল টাস্কের জন্য একটি অনন্য শনাক্তকারী।
  • অনুরোধের শিরোনামে অবশ্যই Bearer <token> মান সহ একটি ক্ষেত্র Authorization থাকতে হবে, যেখানে <token> পরিষেবা অ্যাকাউন্ট ভূমিকা এবং JSON ওয়েব টোকেনগুলিতে বর্ণিত নির্দেশিকা অনুসারে আপনার সার্ভার দ্বারা জারি করা হয়।
  • অনুরোধের বডিতে আপনাকে অবশ্যই একটি 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 এ সেট করেন। ফলাফল সেট করার আগে কোনও কাজ বন্ধ করতে হবে। Fleet Engine শুধুমাত্র 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> হল টাস্কের জন্য একটি অনন্য শনাক্তকারী।
  • অনুরোধের শিরোনামে অবশ্যই Bearer <token> মান সহ একটি ক্ষেত্র Authorization থাকতে হবে, যেখানে <token> পরিষেবা অ্যাকাউন্ট ভূমিকা এবং JSON ওয়েব টোকেনগুলিতে বর্ণিত নির্দেশিকা অনুসারে আপনার সার্ভার দ্বারা জারি করা হয়।
  • অনুরোধের বডিতে অবশ্যই একটি 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

এরপর কি?