स्टॉप की स्थिति अपडेट करें

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

जैसा कि इसमें शेड्यूल किए गए टास्क में बताया गया है Fleet Engine Essentials में, टास्क बनाए जाते हैं और उन्हें वाहन से जोड़ा जाता है समस्या को हल करने के लिए, टास्क और ऐसी जगह जहां वाहन के रुकने की संभावना हो, ताकि ड्राइवर पूरा काम कर सके उस टास्क पर जाएं.

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

  • रास्ता: VehicleStop के लिए STATE enum इन कामों के लिए ENROUTE का इस्तेमाल करता है यह बताता है कि स्टॉप, वाहन की यात्रा की योजना के लिए सूची में मौजूद है. टास्क के हिसाब से, इसका मतलब ऐसे किसी भी टास्क से है जो स्टॉप से जुड़ा है पूरी की जाने वाली सूची में अगला नंबर है.
  • पहुंची: VehicleStop के लिए STATE enum यह बताने के लिए ARRIVED का इस्तेमाल करता है कि वाहन स्टॉप पर पहुंच गया है या नहीं. टास्क के नज़रिए से, इसका मतलब है कि स्टॉप से जुड़े किसी भी टास्क पर सक्रिय रूप से काम किया जा रहा है.
  • पूरा हो गया: किसी स्टॉप को यहां की सूची से हटाकर, पूरा हो गया के तौर पर मार्क किया जाता है स्टॉप पर. ऐसा करने पर, फ़्लीट इंजन अपने-आप सभी संबंधित टास्क 'बंद है' के तौर पर सेट किए गए हैं. टास्क बंद करने के बारे में ज़्यादा जानने के लिए, यह देखें टास्क पूरे करें.

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

गाड़ी रुकी हुई है

जब आपका वाहन, नेविगेशन शुरू करने के बाद फ़्लीट इंजन को अगला स्टॉप. इससे ETA और रास्ते का हिसाब लगाने में मदद मिलती है.

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

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

फ़ील्डमान
remainingVehicleJourneySegments वाहन के बचे हुए स्टॉप की सूची और उनके राज्यों को State.NEW के तौर पर मार्क किया गया है.

स्टॉप को रूट करने का उदाहरण

नीचे दिए गए उदाहरणों में, फ़्लीट इंजन को यह बताने का तरीका बताया गया है कि कोई वाहन Java gRPC लाइब्रेरी या किसी HTTP का इस्तेमाल करके, उसके अगले स्टॉप पर रूट करें UpdateDeliveryVehicle पर आराम से कॉल करें.बाकी सभी स्टॉप नए के तौर पर मार्क किए गए हैं.

gRPC

 static final String PROJECT_ID = "my-delivery-co-gcp-project";
 static final String VEHICLE_ID = "vehicle-8241890";

 DeliveryServiceBlockingStub deliveryService =
   DeliveryServiceGrpc.newBlockingStub(channel);

 // Vehicle settings
 DeliveryVehicle deliveryVehicle = DeliveryVehicle.newBuilder()
     // Next stop marked as ENROUTE
     .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.ENROUTE)))
     // All other stops marked as 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 updateDeliveryVehicleRequest =
   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;
 }

आराम

PATCH https://fleetengine.googleapis.com/v1/providers/<project_id>/deliveryVehicles/<id>?updateMask=remainingVehicleJourneySegments`
  • &lt;id&gt;, टास्क के लिए यूनीक आइडेंटिफ़ायर है.
  • अनुरोध के हेडर में वैल्यू के साथ 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": "ENROUTE",
         "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

वाहन, स्टॉप पर पहुंच गया

जब कोई वाहन स्टॉप पर आता है, तो फ़्लीट इंजन को इसकी सूचना दी जानी चाहिए.

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

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

फ़ील्डमान
remainingVehicleJourneySegments वाहन के बचे हुए स्टॉप की सूची और उनके राज्यों को State.NEW के तौर पर मार्क किया गया है.

स्टॉप पर पहुंचने का उदाहरण

यहां दिए गए उदाहरणों में, फ़्लीट इंजन को यह बताने का तरीका बताया गया है कि कोई वाहन पहुंच गया है या तो Java gRPC लाइब्रेरी का उपयोग करके या किसी HTTP REST कॉल द्वारा स्टॉप पर UpdateDeliveryVehicle. बाकी सभी स्टॉप को नए के तौर पर मार्क किया गया है.

gRPC

  static final String PROJECT_ID = "my-delivery-co-gcp-project";
  static final String VEHICLE_ID = "vehicle-8241890";

  DeliveryServiceBlockingStub deliveryService =
    DeliveryServiceGrpc.newBlockingStub(channel);

  // Vehicle settings
  String vehicleName = "providers/" + PROJECT_ID + "/deliveryVehicles/" + VEHICLE_ID;
  DeliveryVehicle deliveryVehicle = DeliveryVehicle.newBuilder()
      // Marking the arrival at stop.
      .addRemainingVehicleJourneySegments(VehicleJourneySegment.newBuilder()
         .setStop(VehicleStop.newBuilder()
             .setPlannedLocation(LocationInfo.newBuilder()
                 .setPoint(LatLng.newBuilder()
                     .setLatitude(37.7749)
                     .setLongitude(122.4194)))
             .addTasks(TaskInfo.newBuilder().setTaskId(TASK1_ID))
             .setState(VehicleStop.State.ARRIVED)))
      // All other remaining stops marked as 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))) // Remaining stops must be NEW.
      .build();

  // DeliveryVehicle request
  UpdateDeliveryVehicleRequest updateDeliveryVehicleRequest =
    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;
  }

आराम

`PATCH https://fleetengine.googleapis.com/v1/providers/<project_id>/deliveryVehicles/<id>?updateMask=remainingVehicleJourneySegments`
  • &lt;id&gt;, टास्क के लिए यूनीक आइडेंटिफ़ायर है.
  • अनुरोध के हेडर में वैल्यू के साथ 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": "ARRIVED",
          "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

वाहन, स्टॉप तक पूरा जाता है

जब कोई वाहन रुकता है, तो फ़्लीट इंजन को इसकी सूचना दी जानी चाहिए. इसकी वजह से स्टॉप से संबंधित सभी टास्क को 'बंद है' पर सेट किया जाएगा.

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

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

फ़ील्डमान
remainingVehicleJourneySegments वाहन के बचे हुए स्टॉप की सूची और उनके राज्यों को State.NEW के तौर पर मार्क किया गया है. सूची में पहले स्टॉप के राज्य को State.ENROUTE के तौर पर मार्क किया जाना चाहिए.

किसी स्टॉप के उदाहरण को पूरा करता है

यहां दिए गए उदाहरणों में, फ़्लीट इंजन को वाहन के आने की सूचना देने का तरीका बताया गया है या तो Java gRPC लाइब्रेरी का उपयोग करके या किसी HTTP REST कॉल द्वारा स्टॉप पर UpdateDeliveryVehicle. बाकी सभी स्टॉप को नए के तौर पर मार्क किया गया है.

gRPC

  static final String PROJECT_ID = "my-delivery-co-gcp-project";
  static final String VEHICLE_ID = "vehicle-8241890";

  DeliveryServiceBlockingStub deliveryService =
    DeliveryServiceGrpc.newBlockingStub(channel);

  // Vehicle settings
  String vehicleName = "providers/" + PROJECT_ID + "/deliveryVehicles/" + VEHICLE_ID;
  DeliveryVehicle deliveryVehicle = DeliveryVehicle.newBuilder()
      // This stop has been completed and is commented out to indicate it
      // should be removed from the list of vehicle journey segments.
      // .addRemainingVehicleJourneySegments(VehicleJourneySegment.newBuilder()
      //    .setStop(VehicleStop.newBuilder()
      //        .setPlannedLocation(LocationInfo.newBuilder()
      //            .setPoint(LatLng.newBuilder()
      //                .setLatitude(37.7749)
      //                .setLongitude(122.4194)))
      //        .addTasks(TaskInfo.newBuilder().setTaskId(TASK1_ID))
      //        .setState(VehicleStop.State.ARRIVED)))
      // All other remaining stops marked as NEW.
      // The next stop could be marked as ENROUTE if the vehicle has begun
      // its journey to the next stop.
      .addRemainingVehicleJourneySegments(VehicleJourneySegment.newBuilder()  // Next 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 updateDeliveryVehicleRequest =
    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;
  }

आराम

PATCH https://fleetengine.googleapis.com/v1/providers/<project_id>/deliveryVehicles/<id>?updateMask=remaining_vehicle_journey_segments`
  • &lt;id&gt;, टास्क के लिए यूनीक आइडेंटिफ़ायर है.
  • अनुरोध के हेडर में वैल्यू के साथ 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.3382,
             "longitude": 121.8863
           }
         },
         "tasks": [
           {
             "taskId": "${TASK2_ID}"
           }
         ]
       }
     }
   ]
 }
 EOM

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