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

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

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

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

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