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