يفترض هذا المستند أنك تفهم كيفية إنشاء المهام واستخدامها. إنه يوفر أمثلة محددة لكيفية إنهاء مهام الشحن على النحو التالي:
إغلاق مهمة: يؤدي إغلاق مهمة شحن إلى تغيير حالتها إلى
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
- <id> هو معرّف فريد للمهمة.
- يجب أن يحتوي رأس الطلب على حقل Authorization بالقيمة Bearer <token>، حيث يُصدر خادمك <token> وفقًا للإرشادات الموضّحة في أدوار حسابات الخدمة و الرموز المميّزة الخاصة بالويب JSON.
- يجب تضمين كيان
Task
في نص الطلب
مثال على الطلب 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
- <id> هو معرّف فريد للمهمة.
- يجب أن يحتوي رأس الطلب على حقل Authorization بالقيمة Bearer <token>، حيث يُصدر خادمك <token> وفقًا للإرشادات الموضّحة في أدوار حسابات الخدمة و الرموز المميّزة الخاصة بالويب JSON.
- يجب أن يحتوي نص الطلب على كيان
Task
.
# 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