इस दस्तावेज़ को समझने के लिए, आपको इन चीज़ों के बारे में जानकारी होनी चाहिए:
- शिपमेंट टास्क बनाना
- शेड्यूल किए गए टास्क के बारे में जानकारी. इसमें टास्क, स्टॉप, और वाहनों के बीच के संबंध के बारे में विस्तार से बताया गया है.
असल दुनिया में डिलीवरी के दौरान, कारोबार अपने ड्राइवर को डिलीवरी शिपमेंट टास्क असाइन करते हैं. इसके बाद, ड्राइवर किसी वाहन का इस्तेमाल करके, तय की गई जगह पर डिलीवरी करते हैं. जैसे, किसी घर या बिल्डिंग कॉम्प्लेक्स में डिलीवरी रूम. Fleet Engine में इसे मॉडल करने के लिए, एक टास्क बनाएं और डिलीवरी वाहन को अपडेट करने का अनुरोध करें. इससे वाहन की इकाई, यात्रा के लिए स्टॉप की सूची के साथ अपडेट हो जाती है. हर स्टॉप के लिए, टास्क की एक सूची असाइन करें. इन टास्क को उस स्टॉप पर पूरा करना होगा.
वाहन के टास्क कभी भी अपडेट किए जा सकते हैं. हालांकि, आम तौर पर ऐसा इन कामों के लिए किया जाता है:
- किसी वाहन के लिए, पूरे किए जाने वाले टास्क शेड्यूल करें. ऐसा करने के लिए, अपडेट का अनुरोध करके वाहन के लिए नया स्टॉप जोड़ें या अपडेट का अनुरोध करके किसी मौजूदा स्टॉप में नया टास्क जोड़ें.
- वाहन के किसी स्टॉप से जुड़े मौजूदा टास्क का क्रम अपडेट करना.
- टास्क पूरा करने की जगह बदलें. डिफ़ॉल्ट रूप से, Fleet Engine टास्क पूरा होने की जगह को उसी जगह के तौर पर मार्क करता है जहां टास्क से जुड़ा वाहन रुकता है. अगर आप चाहें, तो अलग-अलग टास्क के लिए खास जगहें तय की जा सकती हैं. उदाहरण के लिए, हो सकता है कि किसी वाहन को कई पैकेज डिलीवर करने के लिए, किसी बड़े कॉम्प्लेक्स में रुकना पड़े. इनमें से हर पैकेज को एक खास मेल डिलीवरी रूम में डिलीवर करना हो.
- पहले से असाइन किए गए किसी भी टास्क को बंद करें, ताकि उन्हें अपडेट किए गए क्रम से बाहर रखा जा सके. ज़्यादा जानकारी के लिए, टास्क पूरे करना लेख पढ़ें.
डिलीवरी टास्क शेड्यूल करना या उनमें बदलाव करना
किसी वाहन को असाइन किए गए टास्क को शेड्यूल किया जा सकता है या उनमें बदलाव किया जा सकता है. इसके लिए, सर्वर एनवायरमेंट का इस्तेमाल किया जा सकता है. इसके अलावा, ड्राइवर SDK टूल का इस्तेमाल करके भी ऐसा किया जा सकता है. हालांकि, इसके लिए ज़रूरी है कि आपने ड्राइवर को किसी भरोसेमंद डिवाइस का इस्तेमाल करके, टास्क मैनेज करने की सुविधा दी हो. सिर्फ़ एक तरीके का इस्तेमाल करें, ताकि रेस कंडिशन से बचा जा सके और एकमात्र भरोसेमंद सोर्स को बनाए रखा जा सके.
किसी शिपमेंट को एक वाहन से दूसरे वाहन में ट्रांसफ़र करने के लिए, मूल टास्क को बंद करें. इसके बाद, उसे किसी दूसरे वाहन को असाइन करने से पहले, फिर से बनाएं. अगर किसी डिलीवरी वाहन को अपडेट करके, उसमें कोई ऐसा टास्क शामिल किया जाता है जो पहले से ही किसी दूसरे वाहन को असाइन किया गया है, तो आपको गड़बड़ी का मैसेज मिलेगा.
टास्क अपडेट करने के लिए ज़रूरी फ़ील्ड
इस सेक्शन में, किसी वाहन के लिए टास्क अपडेट करते समय सेट किए जाने वाले ज़रूरी फ़ील्ड के बारे में बताया गया है. कोई वैकल्पिक फ़ील्ड नहीं दिया गया है. फ़्लीट इंजन, अपडेट के लिए इकाई में मौजूद अन्य सभी फ़ील्ड को अनदेखा कर देता है.
| फ़ील्ड भरना ज़रूरी है | वैल्यू |
|---|---|
remainingVehicleJourneySegments |
टास्क के लिए यात्रा के सेगमेंट की सूची, जिन्हें पूरा किए जाने के क्रम में दिखाया गया है. सूची में मौजूद पहला टास्क सबसे पहले पूरा किया जाता है. |
remainingVehicleJourneySegments[i].stop |
सूची में टास्क i के लिए स्टॉप. |
remainingVehicleJourneySegments[i].stop.plannedLocation |
स्टॉप के लिए तय की गई जगह. |
remainingVehicleJourneySegments[i].stop.tasks |
इस स्टॉप पर किए जाने वाले टास्क की सूची. |
remainingVehicleJourneySegments[i].stop.state |
State.NEW |
टास्क असाइन करने का उदाहरण
यहां दिए गए उदाहरणों में, Java gRPC लाइब्रेरी और UpdateDeliveryVehicle को एचटीटीपी REST कॉल का इस्तेमाल करके, वाहन के लिए दो नए टास्क जोड़ने का तरीका बताया गया है.
gRPC
static final String PROJECT_ID = "my-delivery-co-gcp-project";
static final String VEHICLE_ID = "vehicle-8241890";
static final String TASK1_ID = "task-756390";
static final String TASK2_ID = "task-849263";
DeliveryServiceBlockingStub deliveryService =
DeliveryServiceGrpc.newBlockingStub(channel);
// Vehicle settings
String vehicleName = "providers/" + PROJECT_ID + "/deliveryVehicles/" + VEHICLE_ID;
DeliveryVehicle deliveryVehicle = DeliveryVehicle.newBuilder()
.addRemainingVehicleJourneySegments(VehicleJourneySegment.newBuilder() // 1st stop
.setStop(VehicleStop.newBuilder()
.setPlannedLocation(LocationInfo.newBuilder()
.setPoint(LatLng.newBuilder()
.setLatitude(37.7749)
.setLongitude(122.4194)))
.addTasks(TaskInfo.newBuilder().setTaskId(TASK1_ID))
.setState(VehicleStop.State.NEW)))
.addRemainingVehicleJourneySegments(VehicleJourneySegment.newBuilder() // 2nd stop
.setStop(VehicleStop.newBuilder()
.setPlannedLocation(LocationInfo.newBuilder()
.setPoint(LatLng.newBuilder()
.setLatitude(37.3382)
.setLongitude(121.8863)))
.addTasks(TaskInfo.newBuilder().setTaskId(TASK2_ID))
.setState(VehicleStop.State.NEW)))
.build();
// DeliveryVehicle request
UpdateDeliveryVehicleRequest updateDeliveryRequest =
UpdateDeliveryVehicleRequest.newBuilder() // No need for the header
.setName(vehicleName)
.setDeliveryVehicle(deliveryVehicle)
.setUpdateMask(FieldMask.newBuilder().addPaths("remaining_vehicle_journey_segments"))
.build();
try {
DeliveryVehicle updatedDeliveryVehicle =
deliveryService.updateDeliveryVehicle(updateDeliveryVehicleRequest);
} 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>/deliveryVehicles/<id>?updateMask=remainingVehicleJourneySegments`
<id>, आपके फ़्लीट में मौजूद डिलीवरी वाहन का यूनीक आइडेंटिफ़ायर है. इसके लिए, आपको टास्क के क्रम को अपडेट करना होगा. यह वह आइडेंटिफ़ायर है जो आपने वाहन की जानकारी जोड़ते समय तय किया था.
अनुरोध के हेडर में, अनुमति फ़ील्ड होना चाहिए. इसकी वैल्यू Bearer <token> होनी चाहिए. यहां <token> को आपके सर्वर ने जारी किया है. यह सेवा खाते की भूमिकाएं और JSON वेब टोकन में दिए गए दिशा-निर्देशों के मुताबिक होना चाहिए.
अनुरोध के मुख्य हिस्से में,
DeliveryVehicleइकाई शामिल होनी चाहिए
curl कमांड का उदाहरण:
# Set JWT, PROJECT_ID, VEHICLE_ID, TASK1_ID, and TASK2_ID in the local
# environment
curl -X PATCH "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/deliveryVehicles/${VEHICLE_ID}?updateMask=remainingVehicleJourneySegments" \
-H "Content-type: application/json" \
-H "Authorization: Bearer ${JWT}" \
--data-binary @- << EOM
{
"remainingVehicleJourneySegments": [
{
"stop": {
"state": "NEW",
"plannedLocation": {
"point": {
"latitude": 37.7749,
"longitude": -122.084061
}
},
"tasks": [
{
"taskId": "${TASK1_ID}"
}
]
}
},
{
"stop": {
"state": "NEW",
"plannedLocation": {
"point": {
"latitude": 37.3382,
"longitude": 121.8863
}
},
"tasks": [
{
"taskId": "${TASK2_ID}"
}
]
}
}
]
}
EOM