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

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

  • टास्क बंद करना: किसी शिपमेंट टास्क को बंद करने पर, उसकी स्थिति 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;
 }

आराम का समय

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;
 }

आराम का समय

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

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