Teslimat aracı görevlerini güncelle

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

Gerçek dünyadaki teslimat senaryosunda işletmeler teslimat sevkiyatı görevlerini müşterilere Daha sonra bunları alıcıya planlanan bir şekilde teslim etmek için bir araç kullanan sürücüler konum, örneğin bir bina kompleksindeki konut veya teslimat odası. Siz bir görev oluşturup bir teslimat aracı vererek bunu Fleet Engine'de modelleyin güncelleme isteği gönderir. Ardından, araç varlığını bir durak listesiyle günceller. yardımcı olur. Her durağa, durakta tamamlanması gereken bir görev listesi atarsınız.

Araç görevlerini istediğiniz zaman güncelleyebilirsiniz, ancak genellikle bunu amaçlar:

  • Bir aracın tamamlaması için görevleri planlayın. Bunu iki seçeneğiniz vardır: güncelleme isteğiyle veya araca yeni bir duraklama ekleyen bir güncellemeyle mevcut bir durağa yeni görev ekleyen istek gönderebilirsiniz.
  • Belirli bir araç durağıyla ilişkili mevcut görevlerin sırasını güncelleyin.
  • Görevin tamamlandığı yeri değiştirin. Varsayılan olarak, Fleet Engine Görevin tamamlanma konumunu aracın durduğu konum olarak işaretler görevle ilişkilidir. İsterseniz belirli konumlar belirtebilirsiniz ayrı ayrı ele alabilirsiniz. Örneğin, büyük bir arabada durmuş bir aracınız varsa, bir dizi paketin teslimatını karmaşık hâle getirecek şekilde. Bu paketlerin her birine belirli bir posta dağıtım odası ekleyebilirsiniz.
  • Güncel durumun dışında kalmaları için önceden atanmış görevleri kapatın yardımcı olmaktır. Ayrıntılar için Görevleri tamamlama bölümüne bakın.

Teslimat görevlerini programlama veya değiştirme

Sunucudan veya araca atanan görevleri planlayabilir veya değiştirebilirsiniz veya 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.

Bir gönderiyi bir araçtan diğerine değiştirmek için orijinal görevi kapatın ve farklı bir araca atamadan önce yeniden oluşturabilirsiniz. Bir daha önce farklı bir kullanıcıya atanmış bir görevi bir hata alırsınız.

Görevleri güncellemek için zorunlu alanlar

Bu bölümde, kullanabilirsiniz. İsteğe bağlı herhangi bir alan sağlanmadı. Filo motoru diğer tüm alanları yoksayar değerini girin.

Zorunlu alanDeğer
remainingVehicleJourneySegments Görevlerin yürütülmesi gereken sırayla bir yolculuk segmentleri listesi. Listedeki ilk görev ilk olarak yürütülür.
remainingVehicleJourneySegments[i].stop Listede i görevinin durağı.
remainingVehicleJourneySegments[i].stop.plannedLocation Durak için planlanan konum.
remainingVehicleJourneySegments[i].stop.tasks Bu araç durağında yapılacak görevlerin listesi.
remainingVehicleJourneySegments[i].stop.state State.NEW

Görev atama örneği

Aşağıdaki örnekler Java gRPC kitaplığının ve bir HTTP Araca iki yeni görev eklemek için UpdateDeliveryVehicle adlı kullanıcıya REST çağrısı.

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;, filonuzdaki bir teslimat aracına ait benzersiz tanımlayıcıdır güncellemeyi düşündüğünüz bir liste var. Bu tanımlayıcı, aracı oluştururken belirttiğinizi unutmayın.

  • İ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.7749,
              "longitude": -122.084061
            }
          },
          "tasks": [
            {
              "taskId": "${TASK1_ID}"
            }
          ]
        }
      },
      {
        "stop": {
          "state": "NEW",
          "plannedLocation": {
            "point": {
              "latitude": 37.3382,
              "longitude": 121.8863
            }
          },
          "tasks": [
            {
              "taskId": "${TASK2_ID}"
            }
          ]
        }
      }
    ]
  }
  EOM

Sırada ne var?