البحث عن مهام

يوضّح هذا المستند الطرق التي يمكنك من خلالها العثور على معلومات المهام من الخادم أو المتصفّح. يتيح Fleet Engine طريقتَين للعثور على المهام:

  • البحث عن المهام: يمكنك البحث عن المهام باستخدام الأرقام التعريفية التالية:

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

    احرص على فهم الفرق بين معرّف المهمة ومعرّف تتبُّع المهمة. ولكنهما مختلفان. اطّلِع على حقول المهام الأساسية في دليل المهام المُجدوَلة.

  • قائمة المهام: إذن وصول واسع النطاق إلى المهام، وهو مخصّص للمستخدمين الموثوق بهم فقط.

البحث عن المهام

يوضّح هذا القسم كيفية البحث عن المهام حسب رقم تعريف المهمة أو رقم تعريف التتبُّع. يجب استيفاء المتطلبات التالية:

  • يجب أن تلتزم عمليات البحث حسب رقم تعريف التتبّع بقواعد مستوى العرض الموضّحة في قواعد مستوى العرض للعناصر التي يتم تتبّعها.

  • استخدِم الرمز المميّز الأصغر حجمًا ممكنًا للحدّ من مخاطر الأمان. على سبيل المثال، إذا كنت تستخدم رمز مستهلك تسليم، لا تعرض أي طلبات سوى معلومات ذات صلة بهذا المستخدم النهائي، مثل الشاحن أو مستلِم الشحنة. تحجب Fleet Engine جميع المعلومات الأخرى في الردود. لمزيد من المعلومات عن الرموز المميّزة، اطّلِع على رموز JSON Web المميّزة.

البحث عن مهمة حسب معرّف المهمة

يمكنك البحث عن مهمة حسب معرّف المهمة من بيئة الخادم باستخدام gRPC أو REST. توضِّح الأمثلة التالية كيفية استخدام مكتبة Java gRPC أو طلب REST لإجراء GetTask.

gRPC

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

 DeliveryServiceBlockingStub deliveryService =
   DeliveryServiceGrpc.newBlockingStub(channel);

 // Task request
 String taskName = "providers/" + PROJECT_ID + "/tasks/" + TASK_ID;
 GetTaskRequest getTaskRequest = GetTaskRequest.newBuilder()  // No need for the header
     .setName(taskName)
     .build();

 try {
   Task task = deliveryService.getTask(getTaskRequest);
 } catch (StatusRuntimeException e) {
   Status s = e.getStatus();
   switch (s.getCode()) {
      case NOT_FOUND:
        break;

      case PERMISSION_DENIED:
        break;
   }
   return;
 }

REST

GET https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks/<taskId>

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

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

    # Set JWT, PROJECT_ID, and TASK_ID in the local environment
    curl -H "Authorization: Bearer ${JWT}" \
      "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks/${TASK_ID}"

البحث عن المهام حسب رقم تعريف التتبّع

توضِّح الأمثلة التالية كيفية البحث عن المهام حسب معرّف تتبُّع الشحنة باستخدام gRPC أو طلب HTTP REST إلى GetTaskTrackingInfo.

gRPC

static final String PROJECT_ID = "my-delivery-co-gcp-project";
static final String TRACKING_ID = "TID-7449w087464x5";

DeliveryServiceBlockingStub deliveryService =
  DeliveryServiceGrpc.newBlockingStub(channel);

// Tasks request
String parent = "providers/" + PROJECT_ID;
GetTaskTrackingInfoRequest getTaskTrackingInfoRequest = GetTaskTrackingInfoRequest.newBuilder()  // No need for the header
    .setParent(parent)
    .setTrackingId(TRACKING_ID)
    .build();

try {
  TaskTrackingInfo taskTrackingInfo = deliveryService.getTaskTrackingInfo(getTaskTrackingInfoRequest);
} catch (StatusRuntimeException e) {
  Status s = e.getStatus();
  switch (s.getCode()) {
     case NOT_FOUND:
       break;

     case PERMISSION_DENIED:
       break;
  }
  return;
}

REST

GET https://fleetengine.googleapis.com/v1/providers/<project_id>/taskTrackingInfo/<tracking_id>

  • <tracking_id> هو رقم تعريف التتبّع المرتبط بالمهمة.

  • يجب أن يحتوي عنوان الطلب على حقل Authorization بالقيمة Bearer <token>، حيث يحمل <token> دور حساب الخدمة الصحيح. اطّلِع على أدوار حسابات الخدمة.

  • إذا كان البحث ناجحًا، يحتوي نص الاستجابة على عنصر taskTrackingInfo.

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

# Set JWT, PROJECT_ID, and TRACKING_ID in the local environment
curl -H "Authorization: Bearer ${JWT}" \
  "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/taskTrackingInfo/${TRACKING_ID}"

إدراج المهام

يتطلب إدراج المهام إذن وصول واسع النطاق إلى المهام. لا يُسمح بإضافة المهام إلا للمستخدمين الموثوق بهم. استخدِم رمزَي مصادقة "قارئ أسطول التسليم" أو "مشرف التسليم" عند تقديم طلبات قوائم المهام. اطّلِع على أدوار حسابات الخدمة للحصول على مزيد من المعلومات.

تقسيم القوائم إلى صفحات

يتم تقسيم قوائم المهام إلى صفحات. يمكن تحديد حجم الصفحة في طلبات قائمة المهام. في حال تحديد حجم صفحة، لا يكون عدد المهام المعروضة أكبر من حجم الصفحة المحدّد. في حال عدم توفّر حجم صفحة، يتم استخدام قيمة تلقائية معقولة. إذا تجاوز حجم الصفحة المطلوب الحدّ الأقصى الداخلي، يتم استخدام الحدّ الأقصى الداخلي.

يمكن أن تتضمّن قائمة المهام رمزًا مميّزًا لقراءة الصفحة التالية من النتائج. ل retrieving retrieve that next page، عليك إعادة إصدار الطلب نفسه مع رمز تعريف الصفحة. عندما يكون رمز تعريف الصفحة المعروض فارغًا، لن تتوفّر أي مهام أخرى لمحاولة استرجاعه.

الحقول عند إدراج المهام

تحجب Fleet Engine الحقول التالية عند إدراج المهام:

  • VehicleStop.planned_location
  • VehicleStop.state
  • VehicleStop.TaskInfo.taskId

استخدِم تنسيقات الحقول التالية استنادًا إلى اقتراحات تحسين Google API:

نوع الحقل التنسيق مثال
الطابع الزمني RFC-3339 task_outcome_time = 2022-03-01T11:30:00-08:00
المدة عدد الثواني متبوعًا برمز s task_duration = 120s
Enum سلسلة state = CLOSED AND type = PICKUP
الموقع الجغرافي point.latitude وpoint.longitude planned_location.point.latitude > 36.1 AND planned_location.point.longitude < -122.0

فلترة المهام المدرَجة

يمكنك فلترة المهام المدرَجة حسب معظم سمات المهام. بالنسبة إلى بنية طلب البحث عن الفلتر، راجِع AIP-160. في حال عدم تحديد طلب بحث فلترة، يتم إدراج جميع المهام.

يعرض الجدول التالي خصائص المهام الصالحة التي يمكنك استخدامها للفلترة:

سمات المهام لفلترة القوائم
  • type
  • attributes
  • tracking_id
  • delivery_vehicle_id
  • state
  • planned_location
  • task_duration
  • task_duration_outcome
  • task_outcome
  • task_outcome_location
  • task_outcome_time

اطّلِع على AIP-160 للحصول على قائمة كاملة بعوامل تشغيل طلبات البحث عن الفلاتر.

أمثلة على المهام المدرَجة

يوضّح المثال التالي كيفية إدراج المهام لسمة deliveryVehicleId وسمة task، وذلك باستخدام كلّ من مكتبة Java gRPC وطلب HTTP REST إلى ListTasks.

يمكن أن يكون الردّ الناجح فارغًا. يشير الردّ الفارغ إلى عدم توفّر مهام مرتبطة بالقيمة المقدَّمة من deliveryVehicleId.

gRPC

 static final String PROJECT_ID = "my-delivery-co-gcp-project";
 static final String TRACKING_ID = "TID-7449w087464x5";

 DeliveryServiceBlockingStub deliveryService =
   DeliveryServiceGrpc.newBlockingStub(channel);

 // Tasks request
 String parent = "providers/" + PROJECT_ID;
 ListTasksRequest listTasksRequest = ListTasksRequest.newBuilder()  // No need for the header
     .setParent(parent)
     .setFilter("delivery_vehicle_id = 123 AND attributes.foo = true")
     .build();

 try {
   ListTasksResponse listTasksResponse = deliveryService.listTasks(listTasksRequest);
 } catch (StatusRuntimeException e) {
   Status s = e.getStatus();
   switch (s.getCode()) {
      case NOT_FOUND:
        break;

      case PERMISSION_DENIED:
        break;
   }
   return;
 }

REST

GET https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks

لتطبيق فلتر على المهام المدرَجة، أدرِج مَعلمة عنوان URL "filter" مع طلب بحث فلتر تم تشفيره لعنوان URL كقيمة لها.

يجب أن يحتوي عنوان الطلب على حقل Authorization بالقيمة Bearer <token>، حيث يحمل <token> دور حساب الخدمة الصحيح. اطّلِع على أدوار حسابات الخدمة.

يقدّم البحث الناجح نص استجابة بالبنية التالية:

    // JSON representation
    {
      "tasks": [
        {
          object (Task)
        }
      ],
      "nextPageToken": string,
      "totalSize": integer
    }

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

 # Set JWT, PROJECT_ID, and VEHICLE_ID in the local environment
 curl -H "Authorization: Bearer ${JWT}" \
   "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks?filter=state%20%3D%20OPEN%20AND%20delivery_vehicle_id%20%3D%20${VEHICLE_ID}"

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