टास्क पूरे करें

इस दस्तावेज़ में यह मान लिया गया है कि आपको टास्क बनाने और उन्हें इस्तेमाल करने का तरीका पता है. इसमें शिपमेंट के टास्क पूरे करने के तरीके के बारे में खास उदाहरण दिए गए हैं. जैसे:

  • टास्क बंद करना: शिपमेंट से जुड़ा टास्क बंद करने पर, उसकी स्थिति CLOSED में बदल जाती है. इससे पता चलता है कि वह टास्क अब चालू नहीं है.

  • टास्क का नतीजा सेट करना: टास्क बंद होने के बाद, आपको इसे फ़ाइनल करना होता है. इसके लिए, इसके नतीजे को SUCCEEDED या FAILED पर सेट करें. यह किसी टास्क को पूरा करने का एक अहम हिस्सा है. इससे यात्रा की जानकारी शेयर करने की सुविधा में डिलीवरी के नतीजे दिखाए जा सकते हैं. साथ ही, यह पक्का किया जा सकता है कि Fleet Engine सेवा के लिए सही बिलिंग हो.

टास्क बंद करना

टास्क को इन तरीकों से बंद किया जा सकता है:

  • वाहन के स्टॉप की स्थिति अपडेट करें. वाहन से स्टॉप को हटा दिया जाता है. इससे, स्टॉप से जुड़े सभी टास्क बंद हो जाते हैं. ज़्यादा जानकारी के लिए, अपडेट रोकने की स्थिति देखें.
  • वाहन के स्टॉप की सूची से टास्क हटाएं. इसमें स्टॉप के लिए टास्क की सूची को अपडेट करना शामिल है. हालांकि, बंद किए गए टास्क अब सूची का हिस्सा नहीं होंगे. टास्क का क्रम बदलने के बारे में जानने के लिए, टास्क अपडेट करना लेख में टास्क का क्रम बदलना सेक्शन पढ़ें.
  • टास्क की स्थिति को CLOSED पर सेट करें. ऐसा सिर्फ़ उन टास्क के लिए किया जा सकता है जिन्हें वाहनों को नहीं सौंपा गया है. इस सेक्शन में, इस तरीके के बारे में बताया गया है.

किसी टास्क को बंद करने के बाद, उसे फिर से नहीं खोला जा सकता.

किसी टास्क को बंद करने से यह पता नहीं चलता कि वह पूरा हुआ है या नहीं. इससे पता चलता है कि टास्क को अब 'जारी है' के तौर पर नहीं माना जाता. किसी टास्क का असल नतीजा दिखाने के लिए, आपको उसका असल नतीजा बताना होगा. इससे फ़्लीट ट्रैकिंग और यात्रा की जानकारी शेयर करने के लिए, उस नतीजे को दिखाया जा सकेगा. नीचे टास्क का नतीजा सेट करना देखें.

टास्क बंद करने के लिए टास्क फ़ील्ड

इस सेक्शन में, टास्क बंद करते समय सेट किए जाने वाले ज़रूरी फ़ील्ड के बारे में बताया गया है. अपडेट के लिए, Fleet Engine इकाई के अन्य सभी फ़ील्ड को अनदेखा कर देता है.

फ़ील्ड भरना ज़रूरी है मान
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;
 }

REST

PATCH https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks/<id>?updateMask=state

  • <id>, टास्क के लिए यूनीक आइडेंटिफ़ायर होता है.
  • अनुरोध हेडर में Authorization फ़ील्ड होना चाहिए. इसकी वैल्यू Bearer <token> होनी चाहिए. यहां <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 है.

टास्क के नतीजे के बारे में जानकारी

टास्क से, टास्क के नतीजे के बारे में भी ज़्यादा जानकारी मिलती है. इन्हें सीधे तौर पर सेट किया जा सकता है. साथ ही, Fleet Engine आपकी सेटिंग का पालन करता है:

  • टास्क पूरा होने की जगह की जानकारी: Fleet Engine, टास्क पूरा होने की जगह की जानकारी को अपने-आप भर देता है. इसके लिए, वह वाहन की आखिरी बार की जगह की जानकारी का इस्तेमाल करता है. अगर आपको यह जानकारी देनी है, तो इसे सबमिट करें.
  • टास्क पूरा होने का समय: Fleet Engine इस फ़ील्ड को नहीं भरता है. हालांकि, इसे सेट करने का विकल्प आपके पास होता है.

task_outcome_location और task_outcome_time को सेट करने के लिए, इनमें से किसी भी तरीके का इस्तेमाल किया जा सकता है:

  • टास्क के नतीजे सेट करने वाले उसी अनुरोध में उन्हें अपडेट करें.
  • टास्क का नतीजा सेट करने के बाद, उन्हें बाद में अपडेट करें.
  • सेट हो जाने के बाद, उनमें फिर से बदलाव करें.

Fleet Engine, टास्क के नतीजों से जुड़े इन अपडेट को रोकता है:

  • किसी टास्क के नतीजे को SUCCEEDED या FAILED पर सेट करने के बाद, उसमें बदलाव नहीं किया जा सकता.
  • जिन टास्क के लिए कोई नतीजा सेट नहीं किया गया है उनके लिए, टास्क के नतीजे की जगह या नतीजे का समय सेट नहीं किया जा सकता.

नतीजा सेट करने के लिए टास्क फ़ील्ड

इस सेक्शन में, टास्क का नतीजा सेट करते समय ज़रूरी और वैकल्पिक फ़ील्ड के बारे में बताया गया है. Fleet Engine, अपडेट के लिए इकाई में मौजूद अन्य फ़ील्ड को अनदेखा करता है.

फ़ील्ड भरना ज़रूरी है मान
taskOutcome Outcome.SUCCEEDED या Outcome.FAILED

यह फ़ील्ड ज़रूरी नहीं हैमान
taskOutcomeLocation वह जगह जहां टास्क पूरा किया गया था. इस पैरामीटर को सेट न करने पर, Fleet Engine इसे डिफ़ॉल्ट रूप से वाहन की पिछली जगह की जानकारी पर सेट कर देता है.
taskOutcomeTime टास्क पूरा होने का टाइमस्टैंप.

टास्क के नतीजों के उदाहरण

यहां दिए गए उदाहरण में, Java 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;
 }

REST

PATCH https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks/<id>?updateMask=taskOutcome,taskOutcomeTime,taskOutcomeLocation

  • <id>, टास्क के लिए यूनीक आइडेंटिफ़ायर होता है.
  • अनुरोध हेडर में Authorization फ़ील्ड होना चाहिए. इसकी वैल्यू Bearer <token> होनी चाहिए. यहां <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

आगे क्या करना है