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

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

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

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

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

किसी टास्क को बंद करने के लिए, ये तरीके अपनाए जा सकते हैं:

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

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

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

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

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

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

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

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

  • &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.
  • बिना टास्क के लिए, टास्क के नतीजे की जगह या समय सेट नहीं किया जा सकता एक तय नतीजा मिलता है.

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

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

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

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

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

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

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