إعداد المهام

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

  • تحديد الفترة الزمنية المستهدَفة لمهمة الشحن: ضبط الفترة الزمنية لإنجاز المهمة.

  • تخصيص مستوى رؤية المهمة: يمكنك تخصيص مستوى رؤية أنشطة المهام لعرضها للعملاء أو مشغلي الأسطول.

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

ضبط الفترة الزمنية المستهدفة

نافذة الوقت المستهدف هي 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;
  }

راحة

لضبط نافذة وقت مهمة باستخدام HTTP، يمكنك استدعاء PATCH استخدِم updateMask لتعديل مَعلمة targetTimeWindow:

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

تمثّل هنا &lt;id&gt; معرّفًا فريدًا للمهمة. عنوان الطلب على الحقل تفويض مع القيمة الحامل <token>، التي يتم فيها إصدار &lt;token&gt; من قِبل الخادم وفقًا للإرشادات كما هو موضح في أدوار حساب الخدمة ورموز 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 ومسافة القيادة المتبقية 3000 على الأقل متر.

مثال على تخصيص إذن الوصول إلى المهمة

توضِّح الأمثلة التالية كيفية إعداد مهمة باستخدام ما يلي: قواعد مستوى الرؤية:

  • اعرض الخطوط المتعددة للمسار إذا كانت المركبة في نطاق 3 محطات.
  • اعرض الوقت المقدّر للوصول إذا كانت مسافة القيادة المتبقية أقصر من 5000 متر.
  • عدم عرض عدد المحطات المتبقية مطلقًا
  • يحتفظ كل حقل آخر بمستوى الرؤية الافتراضي الذي يتم عرضه عند إدخال المركبة ضمن 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;
}

راحة

لضبط نافذة تهيئة عرض تتبع المهمة باستخدام 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

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