Görevleri tamamlama

Bu dokümanda, görevleri nasıl oluşturacağınızı ve kullanacağınızı bildiğiniz varsayılmaktadır. Sağlar Gönderim görevlerinin nasıl sonuçlandırılacağına dair belirli örnekler aşağıda verilmiştir:

  • Görevi kapatma: Bir gönderim görevi kapatıldığında, durumu CLOSED olarak değişir ve görevin artık etkin olmadığını gösterir.

  • Görev sonucunu belirleyin: Bir görev kapatıldığında, “nihai görevleri tamamlamak için SUCCEEDED veya FAILED olarak ayarlanır. Bu önemli bir nokta yolculukta teslimin sonucunu göstermek için görevi tamamlamanın ve Fleet Engine hizmeti için doğru faturalandırma yapılmasını sağlamak açısından önemlidir.

Görevleri kapatma

Bir görevi aşağıdaki yöntemleri kullanarak kapatabilirsiniz:

  • Aracın durma durumunu güncelleyin. Durağı araçtan kaldırdığınızda durakla ilişkili tüm görevler de kapatılır. Görüntüleyin Ayrıntılar için durdurma durumunu güncelleyin.
  • Görevi araç durakları listesinden kaldırın. Bu işlem, durak için görevlerin listesini içerir, ancak kapalı görevde daha uzun bir bölümünü oluşturur. Görevleri güncelleme başlıklı makalenin Görev sırasını güncelleme bölümüne bakın.
  • Görev durumunu CLOSED olarak ayarlayın. Bu işlem yalnızca araçlara atanır. Bu bölümde, bu yaklaşım gösterilmektedir.

Kapattığınız bir görevi yeniden açamazsınız.

Bir görevin kapatılması, onun başarılı veya başarısız olduğu anlamına gelmez. Bu durum devam eden bir görev kabul edilmez. Bu durumu belirtmek için Filo İzleme ve Filo İzleme için bunun görüntülenmesini sağlamak bir görevin asıl sonucunu belirtmeniz gerekir. Görüntüleyin Aşağıda görev sonucunu ayarlayın.

Görevleri kapatmak için görev alanları

Bu bölümde, bir görev kapatılırken ayarlanması gereken zorunlu 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örevleri doğrudan kapatma

Aşağıdaki örneklerde, atanmamış bir görevin nasıl kapalı duruma ayarlanacağı gösterilmektedir. gRPC'de veya UpdateTask için bir HTTP REST istek çağrısı kullanarak

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ö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övdesine bir Task varlığı 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")"
 }
 EOM

Görev sonucunu belirleyin

Bir görevin asıl sonucunu göstermek için kapalı görevlere ilişkin sonucu belirlersiniz SUCCEEDED veya FAILED hedefine. Görevin sonucunu belirlemeden önce görev kapatılmalıdır. Fleet Engine, yalnızca durumu şu olan teslimat görevleri için ücret alır: SUCCEEDED

Görev sonucu ayrıntıları

Görevler ayrıca görevin sonucu hakkında ek ayrıntılar sağlar. Aşağıdaki ayarları doğrudan ayarlayabilirsiniz ve Fleet Engine ayarlarınıza uyar:

  • Görev sonucunun konumu: Fleet Engine, görevi otomatik olarak doldurur bilinen son araç konumuyla birlikte sonuç konumu Dilerseniz bunun yerine bu bilgileri de sağlayabilirsiniz.
  • Görev sonuç zamanı: Fleet Engine bu alanı doldurmaz ancak kullanabilirsiniz.

task_outcome_location ayarlamak için aşağıdaki yaklaşımlardan herhangi birini kullanabilirsiniz ve task_outcome_time:

  • Görevin sonucunu belirleyen aynı istekte güncelleme yapın.
  • Bunları daha sonra, görev sonucunu belirledikten sonra güncelleyin.
  • Ayarlandıktan sonra tekrar değiştirin.

Fleet Engine, görev sonuçlarıyla ilgili olarak aşağıdaki güncellemeleri engeller:

  • Bir görev sonucu için SUCCEEDED veya FAILED.
  • Şu özellikler olmadan görevler için bir görevin sonucunun konumu veya sonuç zamanı belirleyemezsiniz: yardımcı olur.

Sonucu belirlemek için görev alanları

Bu bölümde, bir net bir şekilde tanımlamalısınız. Fleet Engine, güncelleme için varlıktaki diğer alanları yoksayar.

Zorunlu alan Değer
taskOutcome Outcome.SUCCEEDED veya Outcome.FAILED

İsteğe bağlı alanDeğer
taskOutcomeLocation Görevin tamamlandığı konum. Ayarlanmazsa Fleet Engine bu, varsayılan olarak aracın son konumuna ayarlanır.
taskOutcomeTime Görevin tamamlandığı zaman damgası.

Görev sonucu örnekleri

Aşağıdaki örnekte Java gRPC kitaplığının ve bir HTTP UpdateTask öğesine REST çağrısı yaparak görev sonucunu SUCCEEDED olarak ayarlayın. görevin tamamlandığı yeri ifade eder.

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

  • &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 metni bir Task öğesi 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

Sırada ne var?