يفترض هذا المستند أنّك تعرف كيفية إنشاء المهام واستخدامها. تقدّم هذه السمة أمثلة محددة حول كيفية ضبط مهام الشحن بالطرق التالية:
ضبط الفترة الزمنية المستهدَفة لمهمة شحن: اضبط الفترة الزمنية التي يجب إكمال المهمة خلالها.
تخصيص مستوى ظهور المهام: يمكنك تخصيص مستوى ظهور أنشطة المهام للعملاء أو مشغّلي أسطول المركبات.
راجِع مقالة إنشاء مهام الشحن للاطّلاع على تفاصيل حول حقول مهام الشحن. عند تعديل معلومات إضافية حول مهام حالية، يجب أيضًا تضمين المعرّف ذي الصلة بالمهمة، بالإضافة إلى الحقول التي تعدّلها للمهام.
ضبط الفترة الزمنية المستهدَفة
نافذة الوقت المستهدَفة هي TimeWindow التي يجب إكمال المهمة خلالها. على سبيل المثال، إذا أبلغت مستلمي عمليات التسليم بفترة زمنية للتسليم، يمكنك استخدام الفترة الزمنية المستهدَفة للمهمة لتسجيل هذه الفترة الزمنية وإنشاء تنبيهات، أو يمكنك استخدامها لتحليل أداء الرحلات السابقة.
تتألف الفترة الزمنية المستهدَفة من وقت بدء ووقت انتهاء، ويمكن ضبطها على أي نوع من المهام. لا تؤثّر الفترة الزمنية المستهدَفة في سلوك التوجيه.
توضّح الأمثلة التالية كيفية ضبط الفترة الزمنية باستخدام مكتبة Java 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)
.setTargetTimeWindow(
TimeWindow.newBuilder()
.setStartTime(Timestamp.newBuilder().setSeconds(1680123600))
.setEndTime(Timestamp.newBuilder().setSeconds(1680130800)))
.build();
// Task request
UpdateTaskRequest updateTaskRequest =
UpdateTaskRequest.newBuilder() // No need for the header
.setTask(task)
.setUpdateMask(FieldMask.newBuilder().addPaths("targetTimeWindow"))
.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
لضبط فترة زمنية للمهمة باستخدام HTTP، استدعِ PATCH واستخدِم updateMask لتعديل المَعلمة targetTimeWindow:
PATCH https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks/<id>?updateMask=targetTimeWindow
في هذا المثال، <id> هو معرّف فريد للمهمة. يجب أن يحتوي عنوان الطلب على حقل Authorization بالقيمة Bearer <token>، حيث يُصدر خادمك <token> وفقًا للإرشادات الموضّحة في أدوار حسابات الخدمة والرموز المميّزة الخاصة بالويب JSON.
# 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=targetTimeWindow" \
-H "Content-type: application/json" \
-H "Authorization: Bearer ${JWT}" \
--data-binary @- << EOM
{
"targetTimeWindow": {
"startTime": "2023-03-29T21:00:00Z",
"endTime": "2023-03-29T23:00:00Z"
}
}
EOMتخصيص مستوى رؤية المهام
توفّر Fleet Engine تلقائيًا إمكانية الاطّلاع على أنشطة المهام التي يمكن عرضها بعد ذلك لكل من العملاء الذين يتلقّون شحنة ومشغّلي أسطول المركبات الذين يتتبّعون الشحنات. ويشمل ذلك معلومات مثل تحديد عدد المحطات قبل إرسال إشعار إلى العميل بشأن حالة تسليم الحزمة. يمكنك تخصيص هذه المعلومات على أساس كل مهمة على حدة لتناسب نموذج الأعمال الخاص بك بشكل أفضل.
يوضّح هذا القسم قواعد إذن الوصول إلى العناصر التي يتم تتبّعها على الخريطة. تنطبق هذه القواعد على فئتَين من الكائنات:
- مستوى ظهور علامة الموقع الجغرافي
- إمكانية الاطّلاع على بيانات المهام النشطة للمركبة، مثل الخطوط المتعددة والوقت المقدَّر للوصول
قواعد ظهور علامات المواقع الجغرافية
تعرض Fleet Engine علامات الموقع الجغرافي لموقع تسليم الشحنة الموضّح على الخريطة، بغض النظر عن حالة التسليم.
قواعد إذن الوصول إلى بيانات المهام
يوضّح هذا القسم قواعد مستوى العرض التلقائية التي تنطبق على بيانات المهام. يمكنك تخصيص مهام المركبة النشطة فقط، ما يعني أنّه يمكن تطبيق قواعد مستوى الرؤية المخصّصة على مهام الاستلام والتسليم فقط.
لا يمكن تخصيص المهام التالية:
- المحطات المُجدوَلة
- مهام عدم التوفّر
- مهام المركبات غير النشطة
قواعد مستوى ظهور مهام عدم التوفّر
لا تظهر المركبة تلقائيًا على الخريطة إذا تم تعيين مهمة واحدة على الأقل من مهام عدم التوفّر إلى المهمة التي يتم تتبّعها. على سبيل المثال، إذا كان السائق يأخذ استراحة أو إذا كان يتم تزويد المركبة بالوقود في الطريق إلى الشحنة التي يتم تتبّعها. سيظل بإمكانك الاطّلاع على وقت الوصول المتوقّع ووقت إكمال المهمة المتوقّع. مرة أخرى، لا يمكنك تخصيص هذه القاعدة.
مستوى رؤية مهام المركبات النشطة
يوفّر العنصر TaskTrackingInfo عددًا من عناصر البيانات التي يمكنك إظهارها باستخدام "مكتبة تتبُّع الشحنات". تكون هذه الحقول مرئية تلقائيًا عندما يتم إسناد المهمة إلى المركبة وعندما تكون المركبة على بُعد 5 محطات من المهمة. تنتهي إمكانية الاطّلاع عند إكمال المهمة أو إلغائها.
يمكنك تخصيص إعدادات مستوى العرض لكل مهمة على حدة من خلال ضبط TaskTrackingViewConfig على مهمة عند إنشائها أو تعديلها
في Fleet Engine. يؤدي ذلك إلى إنشاء قواعد لإتاحة عناصر البيانات الفردية.
يعرض الجدول التالي الحقول التي يمكنك تطبيق قواعد إذن الوصول إليها.
| حقول مهام المركبات لقواعد أذونات الوصول |
|---|
|
يعرض هذا الجدول خيارات إمكانية الوصول المتاحة للحقول المذكورة أعلاه.
| خيارات مستوى الظهور |
|---|
|
مضلّعات المسارات وقواعد إذن الوصول إلى الموقع الجغرافي للمركبة
بالنسبة إلى مسار يتم تتبُّعه، يخضع مستوى عرض الخطوط المتعددة للمسار لمستوى عرض المركبة. إذا كان خط متعدد الأضلاع للمسار مرئيًا على مسار نشط لا تظهر فيه المركبة، يمكن استنتاج موقع المركبة من نهاية الخط المتعدد الأضلاع المرئي. لذلك، يجب أن تكون إمكانية رؤية المضلّع المتعدد الخاص بالمسار مقيّدة أو أكثر تقييدًا من إمكانية رؤية المركبة.
اتّبِع هذه القواعد لتقديم مجموعة صالحة من خطوط متعدّدة الأضلاع الخاصة بالمسار / مدى توفّر الموقع الجغرافي للمركبة.
تحدّد الخطوط المتعددة للمسار والموقع الجغرافي للمركبة خيارات مستوى العرض نفسها
في هذا السيناريو، يضبط كلّ من الخط المتعدد الأضلاع والموقع الجغرافي للمركبة الخيارات نفسها، والتي تشمل ما يلي:
- عدد التوقفات المتبقية
- المدة حتى الوقت المقدر للوصول
- المسافة المتبقية للقيادة
للامتثال للقواعد، يجب أن تكون قيمة مستوى ظهور خطوط الأشكال المتعددة للمسار أقل من أو مساوية للقيمة المضبوطة لمستوى ظهور المركبة. في هذا المثال، تم ضبط الحد الأدنى المتبقي للتوقف في الخط المتعدد الأضلاع على 3، وهو أقل من القيمة 5 المحددة للمركبة. وهذا يعني أنّه عندما تصل الرحلة التي يتم تتبّعها إلى 5 محطات تبعد عن موقع المهمة، ستظهر المركبة، ولكن لن يظهر مسار تلك المركبة إلا عندما تكون الرحلة على بُعد 3 محطات.
```js
"taskTrackingViewConfig": {
"routePolylinePointsVisibility": {
"remainingStopCountThreshold": 3
},
"vehicleLocationVisibility": {
"remainingStopCountThreshold": 5
},
}
```
تحدّد خطوط المضلّعات لمسار الرحلة وموقع المركبة خيارات مستوى الظهور المختلفة
عندما يكون لمضلّعات المسار وموقع المركبة خيارات ظهور مختلفة، لا يظهر موقع المركبة إلا عندما يتم استيفاء كلا خياري الظهور. مرة أخرى، يخضع مستوى ظهور الخط المتعدد لقواعد الظهور الخاصة بالمركبة:
- مرئية دائمًا: يجب أن يستخدم خط متعدد الأضلاع للمسار خيار الظهور دائمًا عندما يوفّر الموقع الجغرافي للمركبة خيار الظهور دائمًا نفسه.
- غير مرئية أبدًا: يجب أن تستخدم خطوط متعدّدة لمسار خيار غير مرئية أبدًا لمستوى الظهور عندما يستخدم الموقع الجغرافي للمركبة خيار غير مرئية أبدًا لمستوى الظهور.
في ما يلي مثال:
"taskTrackingViewConfig": {
"routePolylinePointsVisibility": {
"remainingStopCountThreshold": 3
},
"vehicleLocationVisibility": {
"remainingDrivingDistanceMetersThreshold": 3000
},
}
في هذا المثال، لا يظهر الموقع الجغرافي للمركبة إلا إذا كان عدد المحطات المتبقية 3 على الأقل وكانت مسافة القيادة المتبقية 3, 000 متر على الأقل.
مثال على تخصيص مستوى رؤية المهام
توضّح الأمثلة التالية كيفية ضبط مهمة باستخدام قواعد الأذونات التالية:
- عرض خطوط متعدّدة الأضلاع للمسار إذا كانت المركبة على بُعد 3 محطات توقّف
- عرض الوقت المقدّر للوصول إذا كانت مسافة القيادة المتبقية أقل من 5,000 متر
- عدم عرض عدد المحطات المتبقية أبدًا
- يحتفظ كل حقل آخر بإعدادات الظهور التلقائية عندما تكون المركبة على بُعد 5 محطات من المهمة.
راجِع TaskTrackingViewConfig للحصول على gRPC أو REST.
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)
.setTaskTrackingViewConfig(
TaskTrackingViewConfig.newBuilder()
.setRoutePolylinePointsVisibility(
VisibilityOption.newBuilder().setRemainingStopCountThreshold(3))
.setEstimatedArrivalTimeVisibility(
VisibilityOption.newBuilder().remainingDrivingDistanceMetersThreshold(5000))
.setRemainingStopCountVisibility(
VisibilityOption.newBuilder().setNever(true)))
.build();
// Task request
UpdateTaskRequest updateTaskRequest =
UpdateTaskRequest.newBuilder() // No need for the header
.setTask(task)
.setUpdateMask(FieldMask.newBuilder().addPaths("taskTrackingViewConfig"))
.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
لضبط نافذة إعدادات عرض تتبُّع المهام باستخدام HTTP، استخدِم PATCH وupdateMask لتعديل المَعلمة taskTrackingViewConfig:
PATCH https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks/<id>?updateMask=taskTrackingViewConfig
على سبيل المثال:
# 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=taskTrackingViewConfig" \
-H "Content-type: application/json" \
-H "Authorization: Bearer ${JWT}" \
--data-binary @- << EOM
{
"taskTrackingViewConfig": {
"routePolylinePointsVisibility": {
"remainingStopCountThreshold": 3
},
"estimatedArrivalTimeVisibility": {
"remainingDrivingDistanceMetersThreshold": 5000
},
"remainingStopCountVisibility": {
"never": true
}
}
}
EOM