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

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

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

  • टास्क का नतीजा सेट करना: टास्क पूरा होने के बाद, उसके नतीजे को SUCCEEDED या FAILED पर सेट करके, उसे पूरा किया जा सकता है. यह किसी टास्क को पूरा करने का एक अहम हिस्सा है. इससे, यात्रा के दौरान डिलीवरी के नतीजे दिखाने और Fleet Engine की सेवा के लिए सही बिलिंग की पुष्टि करने में मदद मिलती है.

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

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

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

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

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

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

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

फ़ील्ड भरना ज़रूरी है मान
state State.CLOSED

सीधे किसी टास्क को बंद करना

नीचे दिए गए उदाहरणों में, किसी असाइन नहीं किए गए टास्क को क्लोज़्ड स्टेटस में सेट करने का तरीका बताया गया है. इसके लिए, gRPC में या UpdateTask को एचटीटीपी 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

  • &lt;id&gt;, टास्क के लिए यूनीक आइडेंटिफ़ायर है.
  • अनुरोध हेडर में अनुमति फ़ील्ड होना चाहिए, जिसकी वैल्यू 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 पर सेट किया जाता है. किसी टास्क का नतीजा सेट करने से पहले उसे बंद करना ज़रूरी है. फ़्लीट इंजन सिर्फ़ उन डिलीवरी टास्क के लिए शुल्क लेता है जिनकी स्थिति SUCCEEDED होती है.

टास्क के नतीजे की जानकारी

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

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

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

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

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

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

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

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

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

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

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

नीचे दिए गए उदाहरण में, टास्क का नतीजा SUCCEEDED पर सेट करने और टास्क पूरा होने की जगह सेट करने के लिए, Java gRPC लाइब्रेरी और एचटीटीपी REST कॉल UpdateTask को इस्तेमाल करने का तरीका बताया गया है.

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

  • &lt;id&gt;, टास्क के लिए यूनीक आइडेंटिफ़ायर है.
  • अनुरोध के हेडर में 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

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