يصف هذا المستند الطرق التي يمكنك من خلالها العثور على معلومات المهام من خادم أو متصفح. يتيح Fleet Engine طريقتَين للعثور على المهام:
البحث عن المهام: يمكنك البحث عن المهام باستخدام أرقام التعريف التالية:
- معرّف المهمة: يستخدمه المستخدمون، مثل مشغّلي الأساطيل الذين لديهم إذن بالوصول إلى العرض الكامل لبيانات المهمة.
- رقم تعريف التتبُّع: يستخدمه برنامج العميل لتقديم معلومات محدودة للمستخدم النهائي، مثل موعد وصول الطرد إلى منزله.
تأكَّد من فهم الفرق بين معرّف المهمة ورقم تعريف تتبُّع المهمة. ولكنهما مختلفان. يُرجى الاطّلاع على حقول المهام الأساسية في دليل المهام المُجدوَلة.
إدراج المهام: يتيح هذا الإذن الوصول إلى المهام على نطاق واسع، وهو مخصّص للمستخدمين الموثوق بهم فقط.
البحث عن المهام
يصف هذا القسم كيفية البحث عن المهام حسب رقم تعريف المهمة أو رقم تعريف التتبُّع. وله المتطلبات التالية:
يجب أن تلتزم عمليات البحث حسب رقم تعريف التتبُّع بقواعد مستوى العرض الموضّحة في قواعد مستوى العرض للعناصر التي يتم تتبُّعها.
استخدِم الرمز المميّز الأكثر تحديدًا للحدّ من المخاطر الأمنية. على سبيل المثال، إذا كنت تستخدم رمزًا مميزًا لمستهلك التسليم، ستعرض أي طلبات معلومات ذات صلة بهذا المستخدم النهائي فقط، مثل الشاحن أو مستلم الشحنة. يخفي Fleet Engine جميع المعلومات الأخرى في الردود. لمزيد من المعلومات حول الرموز المميّزة، يُرجى الاطّلاع على رموز JSON المميزة للويب.
البحث عن مهمة حسب معرّف المهمة
يمكنك البحث عن مهمة باستخدام رقم تعريفها من بيئة خادم باستخدام 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}"عرض قائمة بالمهام
يتطلب إدراج المهام إذن وصول واسع النطاق إلى المهام. إنّ إدراج المهام مخصّص فقط للمستخدمين الموثوق بهم. استخدِم الرموز المميّزة لمصادقة "قارئ أسطول التسليم" أو "مشرف التسليم" عند إرسال طلبات لإدراج المهام. لمزيد من المعلومات، يُرجى الاطّلاع على أدوار حساب الخدمة.
تقسيم القوائم إلى صفحات
يتم تقسيم قوائم المهام إلى صفحات. يمكن تحديد حجم الصفحة في طلبات عرض قائمة المهام. إذا تم تحديد حجم الصفحة، لن يكون عدد المهام التي يتم عرضها أكبر من حجم الصفحة المحدّد. في حال عدم توفّر حجم للصفحة، يتم استخدام حجم تلقائي مناسب. إذا تجاوز حجم الصفحة المطلوب الحد الأقصى الداخلي، سيتم استخدام الحد الأقصى الداخلي.
يمكن أن تتضمّن قائمة المهام رمزًا مميزًا لقراءة الصفحة التالية من النتائج. لاسترداد تلك الصفحة التالية، أعِد إصدار الطلب نفسه مع الرمز المميّز للصفحة. عندما يكون الرمز المميّز للصفحة المعروضة فارغًا، لن تتوفّر أي مهام أخرى لاستردادها.
الحقول عند إدراج المهام
يحجب Fleet Engine الحقول التالية عند عرض المهام:
VehicleStop.planned_locationVehicleStop.stateVehicleStop.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. في حال عدم تحديد طلب بحث فلتر، يتم إدراج جميع المهام.
يعرض الجدول التالي سمات المهام الصالحة التي يمكنك استخدامها للفلترة:
| خصائص المهام لفلترة القوائم | |
|---|---|
|
|
يمكنك الاطّلاع على AIP-160 للحصول على قائمة كاملة بعوامل تشغيل طلبات البحث عن الفلاتر.
أمثلة على مهام القوائم
يوضّح المثال التالي كيفية عرض قائمة بالمهام لسمة deliveryVehicleId وسمة مهمة، باستخدام مكتبة 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}"