إنهاء المهام

يفترض هذا المستند أنك تفهم كيفية إنشاء المهام واستخدامها. إنه يوفر أمثلة محددة لكيفية إنهاء مهام الشحن على النحو التالي:

  • إغلاق مهمة: يؤدي إغلاق مهمة شحن إلى تغيير حالتها إلى CLOSED. إلى أن هذه المهمة لم تعد نشطة.

  • تحديد نتيجة المهمة: بمجرد إغلاق المهمة، يمكنك الانتهاء منها من خلال ضبط نتيجتها على SUCCEEDED أو FAILED. يعد ذلك نقطة جزء من إنهاء مهمة من أجل إظهار نتيجة التسليم في الرحلة لضمان الحصول على فاتورة صحيحة لخدمة Fleet Engine.

إغلاق مهمة

يمكن إغلاق مهمة بالطرق التالية:

  • عدِّل حالة المحطة للمركبة. تقوم بإزالة المحطة من مركبة، والتي بدورها تغلق جميع المهام المرتبطة بالمحطة. عرض يمكنك تعديل حالة التوقّف للاطّلاع على التفاصيل.
  • إزالة المهمة من قائمة محطات توقّف المركبات يتضمن ذلك تحديث قائمة المهام للمحطة، ولكن مع عدم وجود مهمة مغلقة أطول من القائمة. يُرجى الاطّلاع على "تعديل ترتيب المهام" في قسم تحديث المهام.
  • اضبط حالة المهمة على CLOSED. لا يمكن القيام بذلك إلا في مهام المخصصة للمركبات. يوضح هذا القسم هذا النهج.

بعد إغلاق مهمة، قد لا تتمكّن من إعادة فتحها.

لا يشير إغلاق المهمة إلى نجاحها أو إخفاقها. فهي تشير إلى بأن المهمة لم تعد قيد التقدم. للإشارة إلى النتيجة الفعلية للمهمة وعرض ذلك لتتبع الأسطول لمشاركة الرحلة، يجب أن تشير إلى النتيجة الفعلية للمهمة. اطّلِع على ضبط نتيجة المهمة أدناه.

حقول المهام لإغلاق المهام

يوثّق هذا القسم الحقول المطلوبة لضبطها عند إغلاق المهمة. يتجاهل محرك مجموعة الأجهزة جميع الحقول الأخرى في الكيان للتحديث.

حقل مطلوب القيمة
state State.CLOSED

إغلاق مهمة مباشرةً

توضِّح الأمثلة التالية كيفية ضبط مهمة غير معيّنة على حالة مغلقة: إما في gRPC أو باستخدام استدعاء HTTP REST إلى UpdateTask

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;
 }

راحة

PATCH https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks/<id>?updateMask=state

مثال على الطلب curl:

 # 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

تحديد نتيجة المهمة

للإشارة إلى النتيجة الفعلية للمهمة، يمكنك ضبط النتيجة للمهام المغلقة على SUCCEEDED أو FAILED. يجب إغلاق أي مهمة قبل تعيينها المرجو. لا تحصّل Fleet Engine رسومًا إلا مقابل مهام التسليم التي تكون حالتها SUCCEEDED.

تفاصيل نتائج المهمة

توفر المهام أيضًا تفاصيل إضافية حول نتيجة المهمة. يمكنك تعيين هذه بشكل مباشر ويحترم Fleet Engine إعداداتك:

  • موقع نتائج المهمة: يملأ Fleet Engine المهمة تلقائيًا. وموقع نتائج البحث مع آخر موقع معروف للمركبة. يمكنك تقديم هذا بدلاً من ذلك إذا كنت تفضل ذلك.
  • وقت نتيجة المهمة: لا يملأ Fleet Engine هذا الحقل، ولكن المتاحة لك لضبطها.

يمكنك استخدام أي من الأساليب التالية لضبط task_outcome_location وtask_outcome_time:

  • عدِّلها في الطلب نفسه الذي يحدّد نتيجة المهمة.
  • يمكنك تعديلها لاحقًا بعد تحديد نتيجة المهمة.
  • تعديلها مرة أخرى بعد ضبطها

يمنع Fleet Engine التحديثات التالية ذات الصلة بنتائج المهام:

  • لا يمكنك تعديل نتيجة مهمة بعد ضبطها على SUCCEEDED أو FAILED
  • لا يمكنك تحديد موقع نتيجة مهمة أو وقت لها للمهام التي ليس لها نتيجة محددة.

حقول المهام لتحديد النتيجة

يوثّق هذا القسم الحقول المطلوبة والاختيارية لضبطها عند إعداد لنتائج المهمة. يتجاهل Fleet Engine الحقول الأخرى في الكيان الخاص بالتحديث.

حقل مطلوب القيمة
taskOutcome Outcome.SUCCEEDED أو Outcome.FAILED

حقل اختياريالقيمة
taskOutcomeLocation الموقع الذي اكتملت فيه المهمة. في حال ترك السياسة بدون ضبط، سيتم ضبط Fleet Engine. افتراضيًا على الموقع الأخير للمركبة.
taskOutcomeTime الطابع الزمني لوقت اكتمال المهمة.

أمثلة على نتائج المهمة

يوضح المثال التالي كيفية استخدام مكتبة Java gRPC وبروتوكول HTTP عبارة REST عن UpdateTask لضبط نتيجة المهمة على SUCCEEDED وضبط والموقع الذي تم فيه إنجاز المهمة.

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;
 }

راحة

PATCH https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks/<id>?updateMask=taskOutcome,taskOutcomeTime,taskOutcomeLocation

 # 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

الخطوات التالية