इस दस्तावेज़ में यह मान लिया गया है कि आपने Fleet Engine के बारे में जानकारी सेक्शन में, शेड्यूल किए गए टास्क की शुरुआती गाइड पढ़ ली है. साथ ही, इस सेक्शन में मौजूद शेड्यूल किया गया टास्क क्या होता है? को भी पढ़ लिया है.
शेड्यूल किए गए टास्क के लिए Fleet Engine, टास्क की अलग-अलग कैटगरी उपलब्ध कराता है:
- शिपमेंट से जुड़े टास्क: इनका इस्तेमाल, ड्राइविंग से जुड़े टास्क के लिए करें. इनमें शिपमेंट को पिकअप और डिलीवर करना शामिल है.
- उपलब्ध न होने से जुड़े टास्क: इनका इस्तेमाल तब करें, जब ड्राइवर उपलब्ध न हों. जैसे, ज़रूरी ब्रेक के दौरान.
- स्टॉप पर शेड्यूल किए गए टास्क: इनका इस्तेमाल, ड्रॉप बॉक्स या ग्राहक की जगहों पर ड्राइविंग के अलावा अन्य टास्क के लिए करें. जैसे, किसी बिल्डिंग में जाने या डिलीवरी पॉइंट का पता लगाने में लगने वाला समय.
इस दस्तावेज़ में, आपके सर्वर पर शिपमेंट के अलावा अन्य टास्क बनाने का तरीका बताया गया है. शिपमेंट टास्क के टाइप के लिए, शिपमेंट टास्क बनाना लेख पढ़ें.
ड्राइविंग से जुड़े टास्क के अलावा अन्य टास्क के लिए फ़ील्ड
इस सेक्शन में, टास्क के उन फ़ील्ड के बारे में बताया गया है जो उपलब्ध न होने और शेड्यूल किए गए स्टॉप टास्क, दोनों के लिए ज़रूरी हैं.
टास्क के लिए ज़रूरी फ़ील्ड
Fleet Engine में बनाए जाने वाले हर टास्क के लिए, आपको ज़रूरी फ़ील्ड भरने होंगे. इसके अलावा, आपके पास वैकल्पिक फ़ील्ड भरने का विकल्प भी होता है. Fleet Engine, अन्य सभी फ़ील्ड को अनदेखा कर देता है. साथ ही, अगर टास्क बनाने के अनुरोध में असाइन किया गया deliveryVehicleId दिया जाता है, तो वह अपवाद दिखाता है. किसी वाहन को टास्क असाइन करने के लिए,
UpdateDeliveryVehicleRequest का इस्तेमाल करें. ज़्यादा जानकारी के लिए, टास्क अपडेट करना लेख पढ़ें.
| फ़ील्ड | वैल्यू |
|---|---|
type |
इसे टास्क के टाइप से मैच होने वाले टाइप पर सेट करें. इनमें से कोई एक टाइप चुनें:
|
state |
State.OPEN |
task_id |
यूनीक टास्क आईडी. यह शिपमेंट का ट्रैकिंग नंबर नहीं होना चाहिए. अगर आपके सिस्टम में टास्क आईडी नहीं हैं, तो यूनीक आइडेंटिफ़ायर (यूयूआईडी) जनरेट किया जा सकता है. ज़्यादा जानकारी के लिए, टास्क आईडी देखें. |
tracking_id |
सिर्फ़ PICKUP या DELIVERY टास्क के लिए:
वह नंबर या आइडेंटिफ़ायर जिसका इस्तेमाल शिपमेंट को ट्रैक करने के लिए किया जा रहा है. शिपमेंट से जुड़े टास्क के अलावा, अन्य टास्क के लिए यह फ़ील्ड न भरें. |
planned_location |
सिर्फ़ PICKUP, DELIVERY या
SCHEDULED_STOP टास्क के लिए: वह जगह जहां टास्क पूरा करना है. UNAVAILABLE टास्क के लिए ज़रूरी नहीं है. |
task_duration |
टास्क पूरा करने में लगने वाला अनुमानित समय. उदाहरण के लिए, पार्किंग ढूंढने या हैंडऑफ़ की जगह तक पैदल जाने के लिए. |
शिपमेंट टास्क के वैकल्पिक फ़ील्ड
| फ़ील्ड | वैल्यू |
|---|---|
target_time_window |
टास्क को पूरा करने की समयावधि. इस फ़ील्ड से, रूटिंग के तरीके पर कोई असर नहीं पड़ता. |
task_tracking_view_config |
सिर्फ़ PICKUP या DELIVERY टास्क:
टास्क ट्रैकिंग के लिए कॉन्फ़िगरेशन, जिससे यह पता चलता है कि असली उपयोगकर्ताओं को किन स्थितियों में कौनसे डेटा एलिमेंट दिखते हैं. |
attributes |
कस्टम टास्क एट्रिब्यूट की सूची. हर एट्रिब्यूट की एक यूनीक कुंजी होनी चाहिए. |
उपलब्ध न होने की जानकारी देने वाला टास्क बनाना
ड्राइवर की अनुपलब्धता दिखाने के लिए, एक टास्क बनाया जा सकता है. उदाहरण के लिए, ड्राइवर के ब्रेक के लिए. उपलब्ध न होने की जानकारी देने वाला टास्क बनाने के लिए, इन दिशा-निर्देशों का पालन करें:
- टास्क के टाइप को
UNAVAILABLEपर सेट करें. - ट्रैकिंग आईडी शामिल न करें.
- हालांकि, आपको 'उपलब्ध नहीं है' टास्क के लिए जगह की जानकारी देने की ज़रूरत नहीं है, लेकिन ऐसा करने से पूरे दिन के लिए ईटीए का बेहतर हिसाब लगाया जा सकता है.
यात्रा की जानकारी शेयर करने के लिए, UNAVAILABLE टास्क के दौरान वाहन की जगह की जानकारी के लिए, खास नियम लागू होते हैं.
- शिपमेंट ट्रैकिंग लाइब्रेरी के साथ इंटिग्रेट किए गए उपभोक्ता ऐप्लिकेशन: जब वाहन किसी ऐसे टास्क पर होता है जिसके लिए वह उपलब्ध नहीं है, तो उपभोक्ता ऐप्लिकेशन के उपयोगकर्ता वाहन की जगह की जानकारी नहीं देख सकते. हालांकि, वे अब भी अपने शिपमेंट की स्थिति की जानकारी देख सकते हैं.
- फ़्लीट ट्रैकिंग लाइब्रेरी के साथ इंटिग्रेट किए गए फ़्लीट ट्रैकिंग ऐप्लिकेशन: जब वाहन, उपलब्ध न होने से जुड़े टास्क पर होता है, तब फ़्लीट ट्रैकिंग ऐप्लिकेशन का इस्तेमाल करने वाले फ़्लीट मैनेजर, उपलब्ध न होने से जुड़े टास्क के लिए वाहन की जगह की जानकारी देख पाएंगे.
यहां दिए गए उदाहरणों से पता चलता है कि Java gRPC लाइब्रेरी का इस्तेमाल करके, वाहन के उपलब्ध न होने की जानकारी देने वाला टास्क कैसे बनाया जाता है. इसके अलावा, CreateTask पर एचटीटीपी REST अनुरोध करने का तरीका भी बताया गया है.
gRPC
static final String PROJECT_ID = "my-delivery-co-gcp-project";
DeliveryServiceBlockingStub deliveryService =
DeliveryServiceGrpc.newBlockingStub(channel);
// Task settings
String parent = "providers/" + PROJECT_ID;
Task task = Task.newBuilder()
.setType(Task.Type.UNAVAILABLE)
.setState(Task.State.OPEN)
.setTaskDuration(
Duration.newBuilder().setSeconds(60 * 60)) // 1hr break
.build();
// Task request
CreateTaskRequest createTaskRequest =
CreateTaskRequest.newBuilder() // No need for the header
.setParent(parent) // Avoid using auto-incrementing IDs for the taskId
.setTaskId("task-8241890") // Task ID assigned by the Provider
.setTask(task) // Initial state
.build();
// Error handling
// If Fleet Engine does not have task with that ID and the credentials of the
// requestor pass, the service creates the task successfully.
try {
Task createdTask = deliveryService.createTask(createTaskRequest);
} catch (StatusRuntimeException e) {
Status s = e.getStatus();
switch (s.getCode()) {
case ALREADY_EXISTS:
break;
case PERMISSION_DENIED:
break;
}
return;
}
```
आराम का समय
सर्वर एनवायरमेंट से, 'उपलब्ध नहीं है' टास्क बनाने के लिए, CreateTask पर एचटीटीपी REST कॉल करें:
POST https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks?taskId=<id><id>, टास्क के लिए यूनीक आइडेंटिफ़ायर है.
अनुरोध के हेडर में, Authorization फ़ील्ड होना चाहिए. इसकी वैल्यू Bearer <token> होनी चाहिए. यहां <token> को आपके सर्वर ने जारी किया है. यह सेवा खाते की भूमिकाओं और JSON वेब टोकन में बताए गए दिशा-निर्देशों के मुताबिक होना चाहिए.
अनुरोध के मुख्य हिस्से में, ड्राइविंग से जुड़े टास्क के अलावा अन्य टास्क के लिए टास्क फ़ील्ड में बताए गए सही फ़ील्ड के साथ Task इकाई होनी चाहिए.
curl कमांड का उदाहरण:
# Set $JWT, $PROJECT_ID, and $TASK_ID in the local environment
curl -X POST "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks?taskId=${TASK_ID}" \
-H "Content-type: application/json" \
-H "Authorization: Bearer ${JWT}" \
--data-binary @- << EOM
{
"type": "UNAVAILABLE",
"state": "OPEN",
"plannedLocation": {
"point": {
"latitude": -6.195139,
"longitude": 106.820826
}
},
"taskDuration": "300s"
}
EOMशेड्यूल किया गया स्टॉप टास्क बनाना
शेड्यूल किए गए स्टॉप के लिए टास्क बनाया जा सकता है. उदाहरण के लिए, ग्राहक की जगहों पर ड्राइविंग से जुड़े टास्क के लिए, ईंधन भरने के लिए स्टॉप के लिए या जब किसी ड्राइवर को फ़ीडर वाहन से शिपमेंट मिलता है. शेड्यूल किया गया स्टॉप टास्क बनाते समय, इन दिशा-निर्देशों का पालन करें:
- टास्क का टाइप इस पर सेट करें
- ट्रैकिंग आईडी शामिल न करें.
- आपके पास जगह की जानकारी देने का विकल्प भी होता है.
यहां दिए गए उदाहरणों से पता चलता है कि Java gRPC लाइब्रेरी का इस्तेमाल करके, वाहन के उपलब्ध न होने की जानकारी देने वाला टास्क कैसे बनाया जाता है. इसके अलावा, CreateTask पर एचटीटीपी REST अनुरोध करने का तरीका भी बताया गया है.
gRPC
static final String PROJECT_ID = "my-delivery-co-gcp-project";
DeliveryServiceBlockingStub deliveryService =
DeliveryServiceGrpc.newBlockingStub(channel);
// Task settings
String parent = "providers/" + PROJECT_ID;
Task task = Task.newBuilder()
.setType(Task.Type.SCHEDULED_STOP)
.setState(Task.State.OPEN)
.setPlannedLocation( // Grand Indonesia East Mall
LocationInfo.newBuilder().setPoint(
LatLng.newBuilder().setLatitude(-6.195139).setLongitude(106.820826)))
.setTaskDuration(
Duration.newBuilder().setSeconds(2 * 60))
.build();
// Task request
CreateTaskRequest createTaskRequest =
CreateTaskRequest.newBuilder() // No need for the header
.setParent(parent)
.setTaskId("task-8241890") // Task ID assigned by the Provider
.setTrip(task) // Initial state
.build();
// Error handling
// If Fleet Engine does not have task with that ID and the credentials of the
// requestor pass, the service creates the task successfully.
try {
Task createdTask = deliveryService.createTask(createTaskRequest);
} catch (StatusRuntimeException e) {
Status s = e.getStatus();
switch (s.getCode()) {
case ALREADY_EXISTS:
break;
case PERMISSION_DENIED:
break;
}
return;
}
```
आराम का समय
सर्वर एनवायरमेंट से, शेड्यूल के मुताबिक बंद होने वाला टास्क बनाने के लिए, CreateTask पर एचटीटीपी REST कॉल करें:
POST https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks?taskId=<id><id>, टास्क के लिए यूनीक आइडेंटिफ़ायर है.
अनुरोध के हेडर में, Authorization फ़ील्ड होना चाहिए. इसकी वैल्यू Bearer <token> होनी चाहिए. यहां <token> को आपके सर्वर ने जारी किया है. यह सेवा खाते की भूमिकाओं और JSON वेब टोकन में बताए गए दिशा-निर्देशों के मुताबिक होना चाहिए.
अनुरोध के मुख्य हिस्से में, Task इकाई शामिल होनी चाहिए:
curl कमांड का उदाहरण:
# Set $JWT, $PROJECT_ID, and $TASK_ID in the local environment
curl -X POST "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks?taskId=${TASK_ID}" \
-H "Content-type: application/json" \
-H "Authorization: Bearer ${JWT}" \
--data-binary @- << EOM
{
"type": "SCHEDULED_STOP",
"state": "OPEN",
"plannedLocation": {
"point": {
"latitude": -6.195139,
"longitude": 106.820826
}
},
"taskDuration": "600s"
}
EOM