إعداد المهام

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

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

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

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

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

الفترة الزمنية المستهدَفة هي 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 Web Token.

# 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. يؤدي هذا إلى إنشاء قواعد لعناصر البيانات الفردية المتوفرة.

يعرض الجدول التالي الحقول التي يمكنك تطبيق قواعد إذن الوصول عليها.

حقول مهام المركبات لقواعد العرض
  • خطوط المسار المتعدّدة
  • الوقت المقدَّر للوصول
  • الوقت المقدَّر لإكمال المهمة
  • المسافة المتبقية للقيادة إلى المهمة
  • عدد المحطات المتبقية
  • الموقع الجغرافي للمركبة

يعرض هذا الجدول خيارات مستوى الرؤية المتاحة للحقول الواردة أعلاه.

خيارات مستوى الرؤية
  • عدد المحطات المتبقية
  • المدة حتى وقت الوصول المقدّر
  • المسافة المتبقية للقيادة
  • مرئي دائمًا
  • غير مرئية مطلقًا

خطوط البوليلين للمسارات وقواعد مستوى رؤية الموقع الجغرافي للمركبة

بالنسبة إلى المسار الذي يتم تتبُّعه، تخضع رؤية الخطوط المتعددة للمسار ل مستوى رؤية المركبة. إذا كان خطّ المسار المتعدد الأضلاع مرئيًا على مسار نشط حيث لا تكون المركبة مرئية، لا يزال بإمكانك استنتاج موقع المركبة من خلال نهاية خطّ المسار المتعدد الأضلاع المرئي. ولذلك، يتم استخدام الخطوط المتعددة يجب أن يكون مستوى الرؤية مقيّدًا أو أكثر تقييدًا من ظهور المركبة.

اتّبِع هذه القواعد لتقديم خطوط متعددة بوليلينية صالحة للمسارات / موقع المركبات ومستوى الرؤية.

تحدد الخطوط المتعددة للمسار والموقع الجغرافي للمركبة خيارات مستوى الرؤية نفسها.

في هذا السيناريو، يضبط كلّ من الخطّ المتعدّد والموقع الجغرافي للمركبة options نفسها، والتي تشمل ما يلي:

  • عدد المحطات المتبقية
  • المدة حتى الوقت المقدر للوصول
  • مسافة القيادة المتبقية

للالتزام بالقواعد، يجب أن تكون قيمة ظهور الخطوط المتعددة للمسار أقل. من أو تساوي القيمة المحدّدة لمستوى ظهور المركبة. في هذا المثال، تم ضبط الحدّ الأدنى لعدد محطات التوقف المتبقية للخط المتعدّد على 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

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