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