वाहन की डिलीवरी से जुड़े टास्क अपडेट करें

इस दस्तावेज़ में यह माना गया है कि आपको इनके बारे में जानकारी है:

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

आगे क्या करना है