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

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

असल दुनिया में डिलीवरी की स्थिति में, कारोबार उन ड्राइवरों को डिलीवरी के लिए टास्क असाइन करते हैं जो वाहन की मदद से, तय की गई जगह पर डिलीवरी पाने के लिए वाहन का इस्तेमाल करते हैं. जैसे, घर या बिल्डिंग कॉम्प्लेक्स में डिलीवरी रूम. इसके लिए, Fleet Engine में एक टास्क बनाएं और डिलीवरी वाहन के अपडेट का अनुरोध करें. इससे, वाहन की इकाई को यात्रा के स्टॉप की सूची के साथ अपडेट किया जाता है. हर स्टॉप पर पूरे किए जाने वाले टास्क की सूची असाइन की जाती है.

वाहन के टास्क को कभी भी अपडेट किया जा सकता है. हालांकि, आम तौर पर ऐसा इन कामों के लिए किया जाता है:

  • कोई वाहन पूरा करने के लिए, टास्क शेड्यूल करें. ऐसा करने के लिए, अपडेट का अनुरोध करें. इस अनुरोध में, वाहन के लिए नया स्टॉप जोड़ा जा सकता है या किसी मौजूदा स्टॉप में नया टास्क जोड़ा जा सकता है.
  • किसी वाहन स्टॉप से जुड़े मौजूदा टास्क का क्रम अपडेट करना.
  • टास्क पूरा होने की जगह बदलें. डिफ़ॉल्ट रूप से, Fleet Engine, टास्क पूरा होने की जगह को उसी जगह के तौर पर मार्क करता है जहां टास्क से जुड़ा वाहन स्टॉप है. अगर आप चाहें, तो अलग-अलग टास्क के लिए जगह तय कर सकते हैं. उदाहरण के लिए, हो सकता है कि कई पैकेज डिलीवरी करने के लिए आपके पास एक बड़ा वाहन स्टॉप है, जिसमें हर पैकेज को एक खास डाक डिलीवरी रूम असाइन किया जाता है.
  • पहले से असाइन किए गए किसी भी टास्क को बंद करें, ताकि वे अपडेट किए गए क्रम में न दिखें. ज़्यादा जानकारी के लिए, टास्क पूरे करना लेख पढ़ें.

डिलीवरी के टास्क शेड्यूल करना या उनमें बदलाव करना

किसी वाहन को असाइन किए गए टास्क को शेड्यूल किया जा सकता है या उनमें बदलाव किया जा सकता है. इसके लिए, सर्वर एनवायरमेंट का इस्तेमाल करें या Driver SDK टूल का इस्तेमाल करें. हालांकि, इसके लिए ज़रूरी है कि आपने ड्राइवर को किसी भरोसेमंद डिवाइस का इस्तेमाल करके टास्क मैनेज करने की अनुमति दी हो. सिर्फ़ एक तरीके का इस्तेमाल करें, ताकि रेस कंडीशन से बचा जा सके और एक ही सोर्स से डेटा मिल सके.

किसी शिपमेंट को एक वाहन से दूसरे वाहन पर भेजने के लिए, ओरिजनल टास्क को बंद करें और किसी दूसरे वाहन को असाइन करने से पहले उसे फिर से बनाएं. अगर डिलीवरी वाहन को अपडेट करके, उसमें कोई ऐसा टास्क शामिल किया जाता है जो पहले से ही किसी दूसरे वाहन को असाइन किया गया है, तो आपको गड़बड़ी का मैसेज मिलेगा.

टास्क अपडेट करने के लिए ज़रूरी फ़ील्ड

इस सेक्शन में, वाहन के लिए टास्क अपडेट करते समय सेट किए जाने वाले ज़रूरी फ़ील्ड के बारे में बताया गया है. कोई वैकल्पिक फ़ील्ड नहीं दिया गया है. फ़्लीट इंजन, अपडेट के लिए इकाई के अन्य सभी फ़ील्ड को अनदेखा करता है.

फ़ील्ड भरना ज़रूरी हैमान
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`
  • &lt;id&gt; आपके सभी डिवाइसों में मौजूद डिलीवरी वाहन का यूनीक आइडेंटिफ़ायर होता है, जिसके लिए आपको टास्क का क्रम अपडेट करना है. यह वह आइडेंटिफ़ायर है जिसे आपने वाहन बनाते समय डाला था.

  • अनुरोध के हेडर में Bearer <token> वैल्यू वाला Authorization फ़ील्ड होना चाहिए. इसमें, आपका सर्वर <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

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