इस दस्तावेज़ में यह माना गया है कि आपको इनके बारे में जानकारी है:
- शिपमेंट के टास्क बनाना
- शेड्यूल किए गए टास्क के बारे में सामान्य जानकारी. इसमें टास्क, स्टॉप, और वाहनों के बीच के संबंध के बारे में पूरी जानकारी दी गई है.
असल दुनिया में डिलीवरी के लिए, कारोबार ड्राइवर को डिलीवरी शिपमेंट के टास्क असाइन करते हैं. इसके बाद, ड्राइवर किसी वाहन का इस्तेमाल करके, सामान को पाने वाले व्यक्ति तक पहुँचाते हैं. इसके लिए, वे पहले से तय की गई जगह पर जाते हैं. जैसे, कोई घर या किसी बिल्डिंग कॉम्प्लेक्स में डिलीवरी रूम. Fleet Engine में, टास्क बनाकर और डिलीवरी वाहन के अपडेट का अनुरोध करके, इस मॉडल को बनाया जा सकता है. इसके बाद, वाहन की इकाई को यात्रा के लिए स्टॉप की सूची के साथ अपडेट किया जाता है. हर स्टॉप के लिए, टास्क की एक सूची असाइन करें.
वाहन से जुड़े टास्क को किसी भी समय अपडेट किया जा सकता है. हालांकि, आम तौर पर ऐसा इन कामों के लिए किया जाता है:
- किसी वाहन के लिए, टास्क शेड्यूल करें. इसके लिए, अपडेट का ऐसा अनुरोध करें जिसमें वाहन के लिए नया स्टॉप जोड़ा गया हो. इसके अलावा, अपडेट का ऐसा अनुरोध भी किया जा सकता है जिसमें मौजूदा स्टॉप के लिए नया टास्क जोड़ा गया हो.
- किसी वाहन स्टॉप से जुड़े मौजूदा टास्क का क्रम अपडेट करें.
- टास्क पूरा करने की जगह बदलें. डिफ़ॉल्ट रूप से, Fleet Engine, टास्क पूरा होने की जगह को उसी जगह के तौर पर मार्क करता है जहां वाहन रुका था. यह जगह, टास्क से जुड़ी होती है. अगर आपको पसंद है, तो अलग-अलग टास्क के लिए खास जगहें तय की जा सकती हैं. उदाहरण के लिए, हो सकता है कि किसी वाहन को कई पैकेज डिलीवर करने के लिए, किसी बड़े कॉम्प्लेक्स में रुकना पड़े. हर पैकेज को मेल डिलीवर करने के लिए, एक खास कमरा असाइन किया गया है.
- पहले से असाइन किए गए सभी टास्क बंद करें, ताकि उन्हें अपडेट किए गए क्रम में शामिल न किया जाए. ज़्यादा जानकारी के लिए, टास्क पूरा करना लेख पढ़ें.
डिलीवरी के टास्क शेड्यूल करना या उनमें बदलाव करना
किसी वाहन को असाइन किए गए टास्क को शेड्यूल किया जा सकता है या उनमें बदलाव किया जा सकता है. इसके लिए, सर्वर एनवायरमेंट का इस्तेमाल किया जा सकता है. इसके अलावा, Driver SDK का इस्तेमाल करके भी ऐसा किया जा सकता है. हालांकि, इसके लिए आपको ड्राइवर को किसी भरोसेमंद डिवाइस का इस्तेमाल करके टास्क मैनेज करने की सुविधा देनी होगी. सिर्फ़ एक तरीके का इस्तेमाल करें, ताकि रेस की स्थितियों से बचा जा सके और एक ही सोर्स से डेटा को अपडेट किया जा सके.
किसी शिपमेंट को एक वाहन से दूसरे वाहन में ट्रांसफ़र करने के लिए, मूल टास्क बंद करें. इसके बाद, उसे किसी दूसरे वाहन को असाइन करने से पहले फिर से बनाएं. अगर किसी डिलीवरी वाहन को अपडेट करके, उसमें ऐसा टास्क शामिल किया जाता है जो पहले से ही किसी दूसरे वाहन को असाइन किया गया है, तो आपको गड़बड़ी का मैसेज मिलेगा.
टास्क अपडेट करने के लिए ज़रूरी फ़ील्ड
इस सेक्शन में, किसी वाहन के लिए टास्क अपडेट करते समय सेट किए जाने वाले ज़रूरी फ़ील्ड के बारे में बताया गया है. कोई भी ऐसा फ़ील्ड नहीं दिया गया है जिसे भरना ज़रूरी नहीं है. अपडेट के लिए, Fleet Engine इकाई में मौजूद अन्य सभी फ़ील्ड को अनदेखा कर देता है.
फ़ील्ड भरना ज़रूरी है | मान |
---|---|
remainingVehicleJourneySegments |
टास्क के लिए, यात्रा के सेगमेंट की सूची. इन्हें उसी क्रम में दिखाया जाता है जिस क्रम में इन्हें पूरा किया जाना चाहिए. सूची में मौजूद पहले टास्क को सबसे पहले पूरा किया जाता है. |
remainingVehicleJourneySegments[i].stop |
सूची में मौजूद टास्क i के लिए स्टॉप. |
remainingVehicleJourneySegments[i].stop.plannedLocation |
स्टॉप की तय की गई जगह. |
remainingVehicleJourneySegments[i].stop.tasks |
इस वाहन स्टॉप पर किए जाने वाले टास्क की सूची. |
remainingVehicleJourneySegments[i].stop.state |
State.NEW |
टास्क असाइन करने का उदाहरण
यहां दिए गए उदाहरणों में, वाहन के लिए दो नए टास्क जोड़ने के लिए, UpdateDeliveryVehicle
में Java gRPC लाइब्रेरी और एचटीटीपी 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;
}
REST
PATCH https://fleetengine.googleapis.com/v1/providers/<project_id>/deliveryVehicles/<id>?updateMask=remainingVehicleJourneySegments`
<id>, आपके फ़्लीट में मौजूद डिलीवरी करने वाले वाहन के लिए एक यूनीक आइडेंटिफ़ायर है. आपको इस वाहन के लिए, टास्क के क्रम को अपडेट करना है. यह वह आइडेंटिफ़ायर है जो आपने वाहन बनाते समय डाला था.
अनुरोध हेडर में Authorization फ़ील्ड होना चाहिए. इसकी वैल्यू 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