Bu belgede, aşağıdakilerin hakkında bilgi sahibi olduğunuz varsayılır:
- Gönderim görevleri oluşturma
- İlişkiyi kapsayan Planlanmış görevler'e giriş ayrıntılı bir şekilde anlatabilirsiniz.
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ığı konumu 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ı alan sağlanmadı. Filo motoru diğer tüm alanları yoksayar değerini girin.
Zorunlu alan | Değer |
---|---|
remainingVehicleJourneySegments |
Görevlerin yürütülmesi gereken sırayla bir yolculuk segmentleri listesi. Listedeki ilk görev önce 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`
<id>, filonuzdaki bir teslimat aracına ait benzersiz tanımlayıcıdır güncellemeyi düşündüğünüz bir liste var. Araç oluştururken belirttiğiniz tanımlayıcıdır.
İstek üstbilgisinde, Authorization (Yetkilendirme) alanı olmalıdır. Bu alanın değeri Bearer <token> (Taşıyıcı <token>) şeklindedir. <token>, Hizmet hesabı rolleri ve JSON web jetonları bölümünde açıklanan yönergelere göre sunucunuz tarafından verilir.
İ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