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