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

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

  • একটি টাস্ক বন্ধ করুন : একটি চালান টাস্ক বন্ধ করা তার অবস্থাকে CLOSED করে দেয় এবং নির্দেশ করে যে সেই কাজটি আর সক্রিয় নেই।

  • টাস্কের ফলাফল সেট করুন : একবার একটি টাস্ক বন্ধ হয়ে গেলে, আপনি তার ফলাফলকে SUCCEEDED বা FAILED হিসাবে সেট করে চূড়ান্ত করুন। যাত্রা ভাগ করে নেওয়ার ক্ষেত্রে ডেলিভারির ফলাফল দেখানোর জন্য এবং ফ্লিট ইঞ্জিন পরিষেবার জন্য সঠিক বিলিং নিশ্চিত করার জন্য এটি একটি কাজ চূড়ান্ত করার একটি গুরুত্বপূর্ণ অংশ।

একটি টাস্ক বন্ধ করুন

আপনি নিম্নলিখিত উপায়ে একটি কাজ বন্ধ করতে পারেন:

  • গাড়ির স্টপ স্ট্যাটাস আপডেট করুন । আপনি গাড়ি থেকে স্টপটি সরিয়ে দেন, যার ফলে স্টপের সাথে যুক্ত সমস্ত কাজ বন্ধ হয়ে যায়। বিস্তারিত জানার জন্য আপডেট স্টপ স্ট্যাটাস দেখুন।
  • গাড়ির স্টপের তালিকা থেকে টাস্কটি সরান । এতে স্টপের জন্য কাজের তালিকা আপডেট করা জড়িত, কিন্তু বন্ধ টাস্কটি আর তালিকার অংশ নয়। আপডেট টাস্ক -এ আপডেট টাস্ক অর্ডার দেখুন।
  • টাস্ক স্টেট CLOSED এ সেট করুন । এটি কেবলমাত্র যানবাহনের জন্য নির্ধারিত নয় এমন কাজগুলিতে করা যেতে পারে। এই বিভাগে এই পদ্ধতি দেখায়.

একবার আপনি একটি টাস্ক বন্ধ করলে, আপনি এটি পুনরায় খুলতে পারবেন না।

একটি কাজ বন্ধ করা তার সাফল্য বা ব্যর্থতা নির্দেশ করে না । এটি নির্দেশ করে যে কাজটি আর অগ্রগতিতে বিবেচনা করা হচ্ছে না। একটি টাস্কের প্রকৃত ফলাফল নির্দেশ করার জন্য এবং ফ্লিট ট্র্যাকিং এবং যাত্রা ভাগাভাগি করার উদ্দেশ্যে প্রদর্শিত করতে, আপনাকে অবশ্যই একটি কাজের প্রকৃত ফলাফল নির্দেশ করতে হবে। নীচে টাস্ক ফলাফল সেট দেখুন.

কাজ বন্ধ করার জন্য টাস্ক ক্ষেত্র

এই বিভাগটি একটি কাজ বন্ধ করার সময় সেট করার জন্য প্রয়োজনীয় ক্ষেত্রগুলি নথিভুক্ত করে৷ ফ্লিট ইঞ্জিন আপডেটের জন্য সত্তার অন্যান্য সমস্ত ক্ষেত্র উপেক্ষা করে।

প্রয়োজনীয় ক্ষেত্র মান
state State.CLOSED

একটি টাস্ক সরাসরি বন্ধ করুন

নিচের উদাহরণগুলি দেখায় যে কিভাবে একটি বন্ধ অবস্থায় একটি আনঅ্যাসাইন করা টাস্ক সেট করতে হয়, হয় gRPC-তে বা UpdateTask এ একটি HTTP REST অনুরোধ কল ব্যবহার করে

gRPC

 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> মান সহ একটি ক্ষেত্র অনুমোদন থাকতে হবে, যেখানে পরিষেবা অ্যাকাউন্টের ভূমিকা এবং JSON ওয়েব টোকেনে বর্ণিত নির্দেশিকা অনুসারে আপনার সার্ভার দ্বারা <token> জারি করা হয়।
  • আপনাকে অবশ্যই অনুরোধের অংশে একটি 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 লাইব্রেরি ব্যবহার করতে হয় এবং একটি HTTP REST কল UpdateTask এ একটি টাস্ক ফলাফলকে SUCCEEDED এ সেট করতে এবং যেখানে টাস্কটি সম্পন্ন হয়েছে সেটি সেট করতে হয়।

gRPC

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

এরপর কি