इस दस्तावेज़ में यह माना गया है कि आपको टास्क बनाने और उनका इस्तेमाल करने का तरीका पता है. इसमें शिपमेंट से जुड़े टास्क को पूरा करने के तरीके के बारे में खास उदाहरण दिए गए हैं:
टास्क बंद करना: शिपमेंट से जुड़ा टास्क बंद करने पर, उसकी स्थिति
CLOSEDहो जाती है और इससे यह पता चलता है कि वह टास्क अब चालू नहीं है.टास्क का नतीजा सेट करना: टास्क बंद होने के बाद, उसका नतीजा या तो
SUCCEEDEDयाFAILEDसेट करके उसे पूरा किया जाता है. टास्क को पूरा करने के लिए, यह एक ज़रूरी चरण है. इससे, यात्रा शेयर करने के दौरान डिलीवरी का नतीजा दिखाया जा सकता है. साथ ही, यह पक्का किया जा सकता है कि Fleet Engine सेवा के लिए सही बिलिंग हो.
टास्क बंद करना
टास्क को इन तरीकों से बंद किया जा सकता है:
- वाहन के स्टॉप की स्थिति अपडेट करना. वाहन से स्टॉप हटाने पर, उस स्टॉप से जुड़े सभी टास्क बंद हो जाते हैं. ज़्यादा जानकारी के लिए, स्टॉप की स्थिति अपडेट करना देखें.
- वाहन के स्टॉप की सूची से टास्क हटाना. इसके लिए, स्टॉप के टास्क की सूची को अपडेट करना होता है. हालांकि, बंद किए गए टास्क को सूची में शामिल नहीं किया जाता. टास्क अपडेट करें में, टास्क का क्रम अपडेट करना देखें.
- टास्क की स्थिति को
CLOSEDपर सेट करना. यह सिर्फ़ उन टास्क के लिए किया जा सकता है जो वाहनों को असाइन नहीं किए गए हैं. इस सेक्शन में, यह तरीका दिखाया गया है.
टास्क बंद करने के बाद, उसे फिर से नहीं खोला जा सकता.
टास्क बंद करने का मतलब यह नहीं है कि वह पूरा हो गया है या नहीं. इससे यह पता चलता है कि टास्क अब प्रोसेस में नहीं है. टास्क का असल नतीजा दिखाने और उसे Fleet Tracking और यात्रा शेयर करने के लिए दिखाने के लिए, आपको टास्क का असल नतीजा बताना होगा. नीचे, टास्क का नतीजा सेट करना देखें.
टास्क बंद करने के लिए टास्क के फ़ील्ड
इस सेक्शन में, टास्क बंद करते समय सेट किए जाने वाले ज़रूरी फ़ील्ड के बारे में बताया गया है. अपडेट के लिए, Fleet Engine, इकाई के अन्य सभी फ़ील्ड को अनदेखा करता है.
| फ़ील्ड भरना ज़रूरी है | मान |
|---|---|
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
- <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 लाइब्रेरी और एचटीटीपी
REST कॉल का इस्तेमाल करके, टास्क के नतीजे को SUCCEEDED पर सेट करने और उस
जगह की जानकारी सेट करने का तरीका बताया गया है जहां टास्क पूरा किया गया था.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
- <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