إنشاء أنواع مهام أخرى

يفترض هذا المستند أنك قد قرأت الدليل التمهيدي المهام المُجدوَلة في القسم مقدّمة عن Fleet Engine أيضًا مثل ما هي المهمة المُجدوَلة؟ في هذا القسم.

يوفر Fleet Engine للمهام المجدولة فئات واسعة مختلفة من المهام:

  • مهام الشحن: استخدِم هذه المهام لمهام القيادة، بما في ذلك استلام shipments وتسليمها.
  • مهام عدم التوفّر: تُستخدم في الأوقات التي لا تكون فيها السائقين متاحة، مثل كما هو الحال مع الفواصل المطلوبة.
  • مهام الإيقاف المُجدوَلة: استخدِمها للمهام غير المدفوعة في صناديق التحميل أو للعملاء. المواقع الجغرافية، مثل وقت الدخول إلى مبنى أو تحديد نقطة تسليم.

يتناول هذا المستند كيفية إنشاء مهام غير مرتبطة بالشحن على خادمك. بالنسبة أنواع مهام الشحن، يُرجى الاطّلاع على إنشاء مهام الشحن.

حقول المهام للمهام غير التلقائية

يوثّق هذا القسم حقول المهام المطلوبة لكلٍّ من عدم التوفّر. ومهام الإيقاف المجدولة.

حقول المهام المطلوبة

لكل مهمة تنشئها في Fleet Engine، يجب تزويدها بالحقول المطلوبة، ويمكنك أيضًا تقديم أي من الحقول الاختيارية. محرّك أسطول ويتجاهل جميع الحقول الأخرى، ويطرح استثناءً إذا كان إنشاء مهمة إلى عنوان deliveryVehicleId محدّد. لإسناد المهام إلى مركبة، استخدِم UpdateDeliveryVehicleRequest. لمزيد من المعلومات، يُرجى مراجعة تعديل المهام

الحقلالقيمة
type

اضبط النوع على النوع الذي يطابق نوع المهمة، أي مما يلي:

  • PICKUP
  • DELIVERY
  • SCHEDULED_STOP
  • UNAVAILABLE
state State.OPEN
task_id معرّف المهمة الفريد ويجب ألّا يكون هذا الرقم هو رقم تتبُّع الشحنة. إذا كنت معرّفات المهام في نظامك، فيمكنك إنشاء عنوان URL فريد عالميًا المعرّف (UUID). لمزيد من التفاصيل، يمكنك مراجعة معرّفات المهام:
tracking_id مهام PICKUP أو DELIVERY فقط: الرقم أو المعرّف الذي تستخدمه لتتبُّع شحنة. لا تفعل توفير هذا الحقل للمهام غير المتعلقة بالشحن.
plannedLocation PICKUP أو DELIVERY أو مهام SCHEDULED_STOP فقط: والمكان الذي تكتمل فيه المهمة. غير مطلوبة مع مهمتان (UNAVAILABLE)
taskDuration تمثّل هذه السمة الوقت المتوقَّع إضافته لإكمال المهمة. على سبيل المثال، للنظر لركن السيارة، أو المشي إلى موقع التسليم.

حقول مهمة الشحن الاختيارية

الحقلالقيمة
targetTimeWindow الفترة الزمنية التي يجب أن تكتمل خلالها المهمة. لا يؤثر هذا الحقل في سلوك التوجيه.
task_tracking_view_config مهام PICKUP أو DELIVERY فقط: تكوين تتبع المهام الذي يحدد عناصر البيانات مرئية للمستخدمين النهائيين تحت أي ظروف.
attributes قائمة بسمات المهام المخصّصة يجب أن يكون لكل سمة مفتاح فريد.

إنشاء مهمة عدم التوفّر

يمكنك إنشاء مهمة تشير إلى عدم التوافر؛ في أوقات استراحة السائق على سبيل المثال. لإنشاء مهمة عدم التوفّر، اتّبِع الإرشادات التالية:

  • اضبط نوع المهمة على UNAVAILABLE.
  • لا تُدرِج رقم تعريف التتبّع.
  • على الرغم من أنّه ليس عليك تقديم موقع جغرافي لمهمة غير متاحة، فإنّ إجراء ذلك يقدّم عمليات حسابية محسّنة لأوقات الوصول المقدَّرة على مدار اليوم.

تنطبق قواعد إذن الوصول الخاصة على الموقع الجغرافي للمركبة عندما تكون على متن مركبة مهمة واحدة (UNAVAILABLE) لمشاركة الرحلة.

  • التطبيقات الاستهلاكية المدمجة مع مكتبة تتبع الشحن: عند المركبة في مهمة عدم توفر، لا يمكن لمستخدمي تطبيق المستهلك مشاهدة موقع المركبة، على الرغم من أنه لا يزال بإمكانهم الاطّلاع على معلومات الحالة شحنتهم.
  • تطبيقات تتبُّع الأسطول المدمجة مع مكتبة تتبُّع الأسطول: عندما تكون المركبة في مهمة عدم التوفّر، سيتمكّن مدراء الأسطول الذين يستخدمون تطبيق تتبُّع الأسطول من الاطّلاع على موقع المركبة لمهام عدم التوفّر.

تعرض الأمثلة التالية كيفية إنشاء مهمة مُجدوَلة لعدم التوفّر باستخدام مكتبة Java gRPC أو كيفية تقديم طلب HTTP REST إلى CreateTask

gRPC

  static final String PROJECT_ID = "my-delivery-co-gcp-project";

  DeliveryServiceBlockingStub deliveryService =
    DeliveryServiceGrpc.newBlockingStub(channel);

  // Task settings
  String parent = "providers/" + PROJECT_ID;
  Task task = Task.newBuilder()
    .setType(Task.Type.UNAVAILABLE)
    .setState(Task.State.OPEN)
    .setTaskDuration(
      Duration.newBuilder().setSeconds(60 * 60))  // 1hr break
    .build();

  // Task request
  CreateTaskRequest createTaskRequest =
    CreateTaskRequest.newBuilder()  // No need for the header
        .setParent(parent)          // Avoid using auto-incrementing IDs for the taskId
        .setTaskId("task-8241890")  // Task ID assigned by the Provider
        .setTask(task)              // Initial state
        .build();

  // Error handling
  // If Fleet Engine does not have task with that ID and the credentials of the
  // requestor pass, the service creates the task successfully.

  try {
    Task createdTask = deliveryService.createTask(createTaskRequest);
  } catch (StatusRuntimeException e) {
    Status s = e.getStatus();
    switch (s.getCode()) {
       case ALREADY_EXISTS:
         break;
       case PERMISSION_DENIED:
         break;
    }
    return;
  }
  ```

راحة

لإنشاء مهمة عدم التوفّر من بيئة خادم، أنشئ HTTP REST مكالمة إلى CreateTask:

POST https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks?taskId=<id>

&lt;id&gt; هو معرّف فريد للمهمة.

يجب أن يحتوي رأس الطلب على حقل Authorization بالقيمة Bearer <token>، حيث يُصدر خادمك <token> وفقًا للإرشادات الموضّحة في أدوار حسابات الخدمة و الرموز المميّزة الخاصة بالويب JSON.

يجب أن يحتوي نص الطلب على كيان Task مع الحقول المناسبة الموضحة في حقول المهام للمهام غير التلقائية.

مثال على طلب curl:

 # Set $JWT, $PROJECT_ID, and $TASK_ID in the local environment
 curl -X POST "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks?taskId=${TASK_ID}" \
   -H "Content-type: application/json" \
   -H "Authorization: Bearer ${JWT}" \
   --data-binary @- << EOM
 {
   "type": "UNAVAILABLE",
   "state": "OPEN",
   "plannedLocation": {
      "point": {
         "latitude": -6.195139,
         "longitude": 106.820826
      }
   },
   "taskDuration": "300s"
 }
 EOM

إنشاء مهمة إيقاف مجدوَلة

يمكنك إنشاء مهمة لمحطة توقف مجدولة؛ على سبيل المثال، للمهام غير القيادة في مواقع العملاء أو محطات التزود بالوقود أو عندما يستقبل السائق الشحنات من مركبة إطعام. عندما تنشئ مهمة إيقاف مجدولة، استخدم الإرشادات التالية:

  • اضبط نوع المهمة على
  • يُرجى عدم تضمين رقم تعريف للتتبُّع.
  • يمكنك تحديد موقع جغرافي بشكل اختياري.

تعرض الأمثلة التالية كيفية إنشاء مهمة مُجدوَلة لعدم التوفّر باستخدام مكتبة Java gRPC أو كيفية تقديم طلب HTTP REST إلى CreateTask

gRPC

  static final String PROJECT_ID = "my-delivery-co-gcp-project";

  DeliveryServiceBlockingStub deliveryService =
    DeliveryServiceGrpc.newBlockingStub(channel);

  // Task settings
  String parent = "providers/" + PROJECT_ID;
  Task task = Task.newBuilder()
    .setType(Task.Type.SCHEDULED_STOP)
    .setState(Task.State.OPEN)
    .setPlannedLocation(               // Grand Indonesia East Mall
      LocationInfo.newBuilder().setPoint(
        LatLng.newBuilder().setLatitude(-6.195139).setLongitude(106.820826)))
    .setTaskDuration(
      Duration.newBuilder().setSeconds(2 * 60))
    .build();

  // Task request
  CreateTaskRequest createTaskRequest =
    CreateTaskRequest.newBuilder()  // No need for the header
        .setParent(parent)
        .setTaskId("task-8241890")  // Task ID assigned by the Provider
        .setTrip(task)              // Initial state
        .build();

  // Error handling
  // If Fleet Engine does not have task with that ID and the credentials of the
  // requestor pass, the service creates the task successfully.

  try {
    Task createdTask = deliveryService.createTask(createTaskRequest);
  } catch (StatusRuntimeException e) {
    Status s = e.getStatus();
    switch (s.getCode()) {
       case ALREADY_EXISTS:
         break;
       case PERMISSION_DENIED:
         break;
    }
    return;
  }
  ```

REST

لإنشاء مهمة إيقاف مجدولة من بيئة خادم، أنشئ HTTP REST مكالمة إلى CreateTask:

POST https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks?taskId=<id>

&lt;id&gt; هو معرّف فريد للمهمة.

يجب أن يحتوي عنوان الطلب على الحقل Authorize (تفويض) مع القيمة الحامل <token>، حيث يتم إصدار <token> من خلال الخادم وفقًا للإرشادات الموضحة في أدوار حساب الخدمة رموز JSON المميّزة للويب

يجب أن يحتوي نص الطلب على كيان Task:

مثال على الطلب curl:

# Set $JWT, $PROJECT_ID, and $TASK_ID in the local environment
 curl -X POST "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks?taskId=${TASK_ID}" \
   -H "Content-type: application/json" \
   -H "Authorization: Bearer ${JWT}" \
   --data-binary @- << EOM
 {
   "type": "SCHEDULED_STOP",
   "state": "OPEN",
   "plannedLocation": {
      "point": {
         "latitude": -6.195139,
         "longitude": 106.820826
      }
   },
   "taskDuration": "600s"
 }
 EOM

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