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

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

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

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

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

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

  • वाहन के लिए स्टॉप की स्थिति अपडेट करें. आपने वाहन से स्टॉप को हटा दिया है. इससे, स्टॉप से जुड़े सभी टास्क बंद हो जाएंगे. ज़्यादा जानकारी के लिए, स्टॉप की स्थिति अपडेट करना देखें.
  • वाहन के स्टॉप की सूची से टास्क हटाएं. इसके लिए, स्टॉप के टास्क की सूची को अपडेट करना होगा. हालांकि, बंद किए गए टास्क को सूची से हटा दिया जाएगा. टास्क अपडेट करें में जाकर, टास्क का क्रम अपडेट करें.
  • टास्क की स्थिति को 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;
 }

REST

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

  • <id>, टास्क का यूनीक आइडेंटिफ़ायर है.
  • अनुरोध हेडर में अनुमति फ़ील्ड होना चाहिए, जिसकी वैल्यू 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 लाइब्रेरी और UpdateTask के लिए एचटीटीपी REST कॉल का इस्तेमाल करने का तरीका बताया गया है. इससे टास्क के नतीजे को 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>, टास्क का यूनीक आइडेंटिफ़ायर है.
  • अनुरोध हेडर में अनुमति फ़ील्ड होना चाहिए, जिसकी वैल्यू 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

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