Bu belgede, aşağıdakilerin hakkında bilgi sahibi olduğunuz varsayılır:
- Gönderi görevleri oluşturma
- İlişkiyi kapsayan Planlanmış görevler'e giriş ayrıntılı bir şekilde anlatabilirsiniz.
Fleet Engine'in Temel Özellikleri bölümündeki Planlanmış görevler bölümünde belirtildiği gibi, sürücünün görevi tamamlayabilmesi için görev ile aracın durması beklenen konum arasındaki gerçek ilişkiyi modellemek amacıyla görevler oluşturup bunları bir araç durağıyla ilişkilendirirsiniz.
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çinSTATE
sıralaması şunları yapmak içinENROUTE
kullanır: durağın, araç seyahat planı listesinde bir sonraki durak olduğunu gösterir. Görev açısından bu, durakla ilgili tüm görevlerin tamamlanması gereken bir sonraki görev olduğu anlamına gelir. - Ulaşıldı:
VehicleStop
içinSTATE
sıralaması, şunları belirtmek içinARRIVED
değerini kullanır: aracın durağa ulaştığını gösterir. Görev açısından bakıldığında bu, işle ilgili tüm görevlere aktif olarak geçilmeyeceği anlamına gelir. - Tamamlandı: Bir durağı, aracın durak listesinden kaldırarak tamamlandı olarak işaretleyebilirsiniz. Bunu yaptığınızda Fleet Engine otomatik olarak tüm ilişkili görevleri KAPALI durumuna getirin. Görevleri kapatma hakkında daha fazla bilgi için Görevleri tamamlama başlıklı makaleyi inceleyin.
Bu belgede, sunucu tarafı yaklaşımları kullanarak güncelleme durdurma durumunun nasıl ayarlanacağı açıklanmaktadır. Sürücünün güvenilir bir cihaz kullanarak görevleri yönetmesine izin verirseniz bunu sürücü uygulamanızdan da yapabilirsiniz. Yarış koşullarından kaçınmak ve tek bir doğru kaynaktan yararlanmak için yalnızca bir yöntem kullanın.
Araç durmak üzere yolda
Sisteminiz, araç bir sonraki durağa gitmek için navigasyona başladığında Fleet Engine'ı bilgilendirmelidir. Bu sayede tahmini varış zamanı ve rota hesaplamaları iyileşir.
Güncellemeleri durdur için zorunlu alanlar
Fleet Engine, bildirim için öğedeki diğer tüm alanları yoksayar.
Alan | Değer |
---|---|
remainingVehicleJourneySegments
|
Durumları eyalet olarak işaretlenmiş kalan araç duraklarının listesi.YENİ. |
Durağa 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`
- <id>, görevin benzersiz tanımlayıcısı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 metni bir
DeliveryVehicle
öğesi içermelidir:
Ö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 ulaştığında Fleet Engine'a bilgi verilmelidir.
Güncellemeleri durdur için zorunlu alanlar
Fleet Engine, bildirim için öğedeki diğer tüm alanları yoksayar.
Alan | Değer |
---|---|
remainingVehicleJourneySegments
|
Durumları eyalet olarak işaretlenmiş kalan araç duraklarının listesi.YENİ. |
Durağa varma örneği
Aşağıdaki örneklerde, Java gRPC kitaplığı veya UpdateDeliveryVehicle
için bir HTTP REST çağrısı kullanılarak bir aracın durağa ulaştığı Fleet Engine'a nasıl bildirileceği gösterilmektedir. 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`
- <id>, görevin benzersiz tanımlayıcısı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": "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ç bir durakta durduğunda
Bir araç durakta durmayı tamamladığında Fleet Engine bilgilendirilmelidir. 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 öğedeki diğer tüm alanları yoksayar.
Alan | Değ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, Java gRPC kitaplığı veya UpdateDeliveryVehicle
için bir HTTP REST çağrısı kullanılarak bir aracın durağa ulaştığı Fleet Engine'a nasıl bildirileceği gösterilmektedir. 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`
- <id>, 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 metni bir
DeliveryVehicle
öğesi içermelidir:
Ö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