Bu belgede, görev oluşturma ve kullanma konusunda bilgi sahibi olduğunuz varsayılmaktadır. Aşağıda, gönderim görevlerinin nasıl tamamlanacağıyla ilgili belirli örnekler verilmiştir:
Görevi kapatma: Bir kargo görevini kapatmak, durumunu
CLOSEDolarak değiştirir ve görevin artık etkin olmadığını gösterir.Görev sonucunu ayarlama: Bir görev kapatıldıktan sonra sonucunu
SUCCEEDEDveyaFAILEDolarak ayarlayarak görevi tamamlarsınız. Bu, teslimat sonucunu yolculuk paylaşımında göstermek ve Fleet Engine hizmeti için doğru faturalandırma sağlamak amacıyla bir görevi tamamlamanın önemli bir parçasıdır.
Görevi kapatma
Bir görevi aşağıdaki yöntemlerle kapatabilirsiniz:
- Aracın durdurma durumunu güncelleyin. Durağı araçtan kaldırdığınızda durakla ilişkili tüm görevler kapatılır. Ayrıntılar için Güncelleme durdurma durumu bölümüne bakın.
- Görevi araç durakları listesinden kaldırın. Bu işlem, durak için görev listesinin güncellenmesini içerir ancak kapalı görev artık listenin bir parçası değildir. Görevleri güncelleme bölümündeki "Görev sırasını güncelleme" başlıklı makaleyi inceleyin.
- Görev durumunu
CLOSEDolarak ayarlayın. Bu işlem yalnızca araçlara atanmamış görevlerde yapılabilir. Bu bölümde bu yaklaşım gösterilmektedir.
Kapattığınız görevleri yeniden açamazsınız.
Bir görevin kapatılması, görevin başarılı veya başarısız olduğunu göstermez. Bu, görevin artık devam ediyor olarak kabul edilmediğini gösterir. Bir görevin gerçek sonucunu belirtmek ve bu sonucun filo takibi ve yolculuk paylaşımı amacıyla gösterilmesini sağlamak için görevin gerçek sonucunu belirtmeniz gerekir. Aşağıdaki Görevin sonucunu ayarlama bölümüne bakın.
Görevleri kapatmak için görev alanları
Bu bölümde, bir görevi kapatırken ayarlanması gereken alanlar açıklanmaktadır. Filo motoru, güncelleme için öğedeki diğer tüm alanları yoksayar.
| Zorunlu alan | Değer |
|---|---|
state |
State.CLOSED |
Görevi doğrudan kapatma
Aşağıdaki örneklerde, atanmamış bir görevin gRPC'de veya UpdateTask adresine HTTP REST istek çağrısı kullanılarak nasıl kapalı duruma getirileceği gösterilmektedir.
gRPC
static final String PROJECT_ID = "my-delivery-co-gcp-project";
static final String TASK_ID = "task-8241890";
DeliveryServiceBlockingStub deliveryService =
DeliveryServiceGrpc.newBlockingStub(channel);
// Task settings
String taskName = "providers/" + PROJECT_ID + "/tasks/" + TASK_ID;
Task task = Task.newBuilder()
.setName(taskName)
.setState(Task.State.CLOSED) // You can only directly CLOSE a
.build(); // task that is NOT assigned to a vehicle.
// Task request
UpdateTaskRequest updateTaskRequest =
UpdateTaskRequest.newBuilder() // No need for the header
.setTask(task)
.setUpdateMask(FieldMask.newBuilder().addPaths("state"))
.build();
try {
Task updatedTask = deliveryService.updateTask(updateTaskRequest);
} 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>/tasks/<id>?updateMask=state
- <id>, görev için benzersiz bir tanımlayıcıdır.
- İstek başlığında, Authorization alanı ve Bearer <token> değeri bulunmalıdır. Burada <token>, Hizmet hesabı rolleri ve JSON Web jetonları bölümünde açıklanan yönergelere göre sunucunuz tarafından verilir.
- İstek gövdesine bir
Taskvarlığı eklemeniz gerekir.
Örnek curl komutu:
# Set JWT, PROJECT_ID, and TASK_ID in the local environment
curl -X PATCH "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks/${TASK_ID}?updateMask=state,taskOutcome,taskOutcomeTime" \
-H "Content-type: application/json" \
-H "Authorization: Bearer ${JWT}" \
--data-binary @- << EOM
{
"state": "CLOSED",
"taskOutcome": "SUCCEEDED",
"taskOutcomeTime": "$(date -u +"%Y-%m-%dT%H:%M:%SZ")"
}
EOMGörev sonucunu ayarlama
Bir görevin gerçek sonucunu belirtmek için kapalı görevlerin sonucunu SUCCEEDED veya FAILED olarak ayarlarsınız. Bir görevin sonucunu belirlemeden önce görevi kapatmanız gerekir. Fleet Engine yalnızca durumu SUCCEEDED olan teslimat görevleri için ücret alır.
Görev sonucu ayrıntıları
Görevler, görev sonucuyla ilgili ek ayrıntılar da sağlar. Bu ayarları doğrudan belirleyebilirsiniz ve Fleet Engine, ayarlarınıza uyar:
- Görev sonucu konumu: Fleet Engine, görev sonucu konumunu bilinen son araç konumuyla otomatik olarak doldurur. Dilerseniz bunun yerine bu bilgiyi de sağlayabilirsiniz.
- Görev sonucu zamanı: Fleet Engine bu alanı doldurmaz ancak sizin ayarlamanız için kullanılabilir.
task_outcome_location ve task_outcome_time ayarlarını belirlemek için aşağıdaki yaklaşımlardan herhangi birini kullanabilirsiniz:
- Görev sonucunu ayarlayan aynı istekte güncelleyin.
- Görev sonucunu belirledikten sonra güncelleyebilirsiniz.
- Ayarlanan bu öğeleri tekrar değiştirebilirsiniz.
Fleet Engine, görev sonuçlarıyla ilgili aşağıdaki güncellemeleri engeller:
- Bir görev sonucu
SUCCEEDEDveyaFAILEDolarak ayarlandıktan sonra değiştirilemez. - Sonucu belirlenmemiş görevler için görev sonucu konumu veya sonucu zamanı ayarlayamazsınız.
Sonucu ayarlamak için kullanılan görev alanları
Bu bölümde, görev sonucu ayarlarken ayarlanması gereken zorunlu ve isteğe bağlı alanlar açıklanmaktadır. Fleet Engine, güncelleme için öğedeki diğer alanları yoksayar.
| Zorunlu alan | Değer |
|---|---|
taskOutcome |
Outcome.SUCCEEDED veya Outcome.FAILED |
| İsteğe bağlı alan | Değer |
|---|---|
taskOutcomeLocation |
Görevin tamamlandığı konum. Ayarlanmazsa Fleet Engine, bunu varsayılan olarak son araç konumuna ayarlar. |
taskOutcomeTime |
Görevin tamamlandığı zaman damgası. |
Görev sonucu örnekleri
Aşağıdaki örnekte, Java gRPC kitaplığı ve bir HTTP REST çağrısı kullanılarak UpdateTask ile bir görev sonucunun SUCCEEDED olarak nasıl ayarlanacağı ve görevin tamamlandığı konumun nasıl belirleneceği gösterilmektedir.
gRPC
static final String PROJECT_ID = "my-delivery-co-gcp-project";
static final String TASK_ID = "task-8241890";
DeliveryServiceBlockingStub deliveryService =
DeliveryServiceGrpc.newBlockingStub(channel);
// Task settings
String taskName = "providers/" + PROJECT_ID + "/tasks/" + TASK_ID;
Task task = Task.newBuilder()
.setName(taskName)
.setTaskOutcome(TaskOutcome.SUCCEEDED)
.setTaskOutcomeTime(now())
.setTaskOutcomeLocation( // Grand Indonesia East Mall
LocationInfo.newBuilder().setPoint(
LatLng.newBuilder().setLatitude(-6.195139).setLongitude(106.820826)))
.build();
// Task request
UpdateTaskRequest updateTaskRequest =
UpdateTaskRequest.newBuilder() // No need for the header
.setTask(task)
.setUpdateMask(FieldMask.newBuilder().addPaths("task_outcome", "task_outcome_time", "task_outcome_location"))
.build();
try {
Task updatedTask = deliveryService.updateTask(updateTaskRequest);
} 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>/tasks/<id>?updateMask=taskOutcome,taskOutcomeTime,taskOutcomeLocation
- <id>, görevin benzersiz tanımlayıcısıdır.
- İstek başlığında, Authorization alanı ve Bearer <token> değeri bulunmalıdır. Burada <token>, Hizmet hesabı rolleri ve JSON Web jetonları bölümünde açıklanan yönergelere göre sunucunuz tarafından verilir.
- İstek gövdesi bir
Taskvarlığı içermelidir.
# Set JWT, PROJECT_ID, and TASK_ID in the local environment
curl -X PATCH "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks/${TASK_ID}?updateMask=taskOutcome,taskOutcomeTime,taskOutcomeLocation" \
-H "Content-type: application/json" \
-H "Authorization: Bearer ${JWT}" \
--data-binary @- << EOM
{
"taskOutcome": "SUCCEEDED",
"taskOutcomeTime": "$(date -u +"%Y-%m-%dT%H:%M:%SZ")",
"taskOutcomeLocation": {
"point": {
"latitude": -6.195139,
"longitude": 106.820826
}
}
}
EOM