Durma durumunu güncelle

Bu belgede, aşağıdakilerin hakkında bilgi sahibi olduğunuz varsayılır:

Programlanmış görevler bölümünde Fleet Engine Essentials ile birlikte, görevler oluşturur ve bunları bir araçla ilişkilendirirsiniz görev ile proje arasındaki gerçek ilişki için bir model olarak sürücünün işi tamamlayabilmesi için aracın durması beklenen yer görebilmeli.

Sonra da görevlerin yaşam döngüsü boyunca ilerlemesini en iyi yönlendirme ve durum performansını gösterebilmek için Fleet Engine'e güncelleme göndererek güncel bilgi sahibi olmanızı sağlar. Bunu yapmanın temel yollarından biri, Yaklaşımdayken araç durup parka geldiğinde ve parktan ayrıldığında. Bu sayede hem Filo operatörleri ve son kullanıcılar. Bu durum güncellemeleri aşağıdaki gibidir:

  • Yolda: VehicleStop için STATE sıralaması şunları yapmak için ENROUTE kullanır: durağın, araç seyahat planı listesinde bir sonraki durak olduğunu gösterir. Görev açısından bakıldığında, durakla ilişkili herhangi bir görev yapılacak listede bir sonraki aşamadır.
  • Ulaşıldı: VehicleStop için STATE sıralaması, şunları belirtmek için ARRIVED değerini kullanır: aracın durağa ulaştığını gösterir. Görev açısından bakıldığında bu, söz konusu görev için aktif olarak çalışılmaması anlamına gelir.
  • Tamamlandı: Bir durağı durması gerekir. Bunu yaptığınızda Fleet Engine otomatik olarak tüm ilişkili görevleri KAPALI durumuna getirin. Görevleri kapatmayla ilgili daha fazla bilgi için Görevleri tamamlama.

Bu dokümanda, sunucu tarafı yaklaşımlar kullanılarak güncelleme durdurma durumu açıklanmaktadır. Siz Sürücüye güvenilir bir cihaz kullanarak görevleri yönetebilir. Yarışı önlemek için tek bir yöntem kullanın ve tek bir doğruluk kaynağı bulundurmaktır.

Araç durmak üzere yolda

Araç bir sonraki durak. Bu, TVS ve rota hesaplamalarını iyileştirir.

Güncellemeleri durdur için zorunlu alanlar

Fleet Engine, bildirim için varlıktaki diğer tüm alanları yoksayar.

AlanDeğer
remainingVehicleJourneySegments Durumları eyalet olarak işaretlenmiş kalan araç duraklarının listesi.YENİ.

Durmaya giden yol örneği

Aşağıdaki örneklerde, Fleet Engine'e bir aracın sahibi olduğunu belirten veya HTTP tabanlı bir HTTP protokolü kullanarak Java gRPC kitaplığını ya da UpdateDeliveryVehicle hedefine REST araması.Diğer tüm duraklar yeni olarak işaretlendi.

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;
 }

REST

PATCH https://fleetengine.googleapis.com/v1/providers/<project_id>/deliveryVehicles/<id>?updateMask=remainingVehicleJourneySegments`
  • &lt;id&gt;, görev için benzersiz bir tanımlayıcıdır.
  • İstek başlığında şu değeri içeren Authorization (Yetkilendirme) alanı bulunmalıdır: Taşıyıcı <token>, burada <token> sunucunuz tarafından verilir. Hizmet hesabı rolleri ve JSON Web jetonları.
  • İstek gövdesinde bir DeliveryVehicle varlığı bulunmalıdır:

Örnek curl komutu:

 # 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

Araç durağa geldiğinde

Bir araç durağa geldiğinde Fleet Engine'e bilgi verilmelidir.

Güncellemeleri durdur için zorunlu alanlar

Fleet Engine, bildirim için varlıktaki diğer tüm alanları yoksayar.

AlanDeğer
remainingVehicleJourneySegments Durumları eyalet olarak işaretlenmiş kalan araç duraklarının listesi.YENİ.

Durak noktasına varma örneği

Aşağıdaki örneklerde, Fleet Engine'e bir aracın geldiği bilgisinin nasıl bildirileceği gösterilmektedir Java gRPC kitaplığını veya bir HTTP REST çağrısı kullanarak UpdateDeliveryVehicle. Diğer tüm duraklar yeni olarak işaretlendi.

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;
  }

REST

`PATCH https://fleetengine.googleapis.com/v1/providers/<project_id>/deliveryVehicles/<id>?updateMask=remainingVehicleJourneySegments`
  • &lt;id&gt;, görev için benzersiz bir tanımlayıcıdır.
  • İstek başlığında şu değeri içeren Authorization (Yetkilendirme) alanı bulunmalıdır: Taşıyıcı <token>, burada <token> sunucunuz tarafından verilir. Hizmet hesabı rolleri ve JSON Web jetonları.
  • İstek gövdesinde bir DeliveryVehicle varlığı bulunmalıdır:

Örnek curl komutu:

  # 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

Araç durma işlemini tamamlar

Bir araç durma işlemini tamamladığında Fleet Engine'e bilgi verilmelidir. Bu durum, durakla ilişkili tüm görevlerin KAPALI durumuna ayarlanmasını sağlar.

Güncellemeleri durdur için zorunlu alanlar

Fleet Engine, bildirim için varlıktaki diğer tüm alanları yoksayar.

AlanDeğer
remainingVehicleJourneySegments Durumları eyalet olarak işaretlenmiş kalan araç duraklarının listesi.YENİ. Listedeki ilk durağın durumu State.ENROUTE olarak işaretlenmiş olmalıdır.

Bir durdurma örneğini tamamlar

Aşağıdaki örneklerde, Fleet Engine'e bir aracın geldiği bilgisinin nasıl bildirileceği gösterilmektedir Java gRPC kitaplığını veya bir HTTP REST çağrısı kullanarak UpdateDeliveryVehicle. Diğer tüm duraklar yeni olarak işaretlendi.

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;
  }

REST

PATCH https://fleetengine.googleapis.com/v1/providers/<project_id>/deliveryVehicles/<id>?updateMask=remaining_vehicle_journey_segments`
  • &lt;id&gt;, görev için benzersiz bir tanımlayıcıdır.
  • İstek başlığında şu değeri içeren Authorization (Yetkilendirme) alanı bulunmalıdır: Taşıyıcı <token>, burada <token> sunucunuz tarafından verilir. Hizmet hesabı rolleri ve JSON Web jetonları.
  • İstek gövdesinde bir DeliveryVehicle varlığı bulunmalıdır:

Örnek curl komutu:

 # 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

Sırada ne var?