وظایف را پیدا کنید

این سند روش‌هایی را که می‌توانید اطلاعات وظایف را از یک سرور یا مرورگر پیدا کنید، شرح می‌دهد. موتور ناوگان از دو روش برای یافتن وظایف پشتیبانی می‌کند:

  • جستجوی وظایف : می‌توانید وظایف را با شناسه‌های زیر جستجو کنید:

    • شناسه وظیفه: توسط کاربرانی مانند اپراتورهای ناوگان که به نمای کامل داده‌های وظیفه دسترسی دارند، استفاده می‌شود.
    • شناسه رهگیری: توسط نرم‌افزار کلاینت شما برای ارائه اطلاعات محدود به کاربر نهایی، مانند زمان انتظار برای رسیدن بسته به خانه‌اش، استفاده می‌شود.

    حتماً تفاوت بین شناسه وظیفه و شناسه ردیابی وظیفه را درک کنید. آنها یکسان نیستند. به فیلدهای وظیفه پایه در راهنمای وظیفه زمان‌بندی شده مراجعه کنید.

  • فهرست وظایف : دسترسی گسترده به وظایف، فقط برای کاربران مورد اعتماد.

جستجو در وظایف

این بخش نحوه جستجوی وظایف بر اساس شناسه وظیفه یا شناسه ردیابی را شرح می‌دهد. این بخش الزامات زیر را دارد:

  • جستجوها با استفاده از شناسه ردیابی باید از قوانین قابلیت مشاهده مندرج در «قوانین قابلیت مشاهده برای اشیاء ردیابی شده» پیروی کنند.

  • برای محدود کردن خطرات امنیتی، از محدودترین توکن ممکن استفاده کنید. به عنوان مثال، اگر از توکن مصرف‌کننده تحویل (Delivery Consumer Token) استفاده می‌کنید، هرگونه فراخوانی فقط اطلاعات مربوط به آن کاربر نهایی، مانند فرستنده یا گیرنده محموله را برمی‌گرداند. Fleet Engine تمام اطلاعات دیگر را در پاسخ‌ها حذف می‌کند. برای اطلاعات بیشتر در مورد توکن‌ها، به توکن‌های وب JSON مراجعه کنید.

جستجوی وظیفه بر اساس شناسه وظیفه

شما می‌توانید با استفاده از gRPC یا REST، یک وظیفه را از طریق شناسه آن در محیط سرور جستجو کنید. مثال‌های زیر نحوه استفاده از کتابخانه جاوا 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;
 }

استراحت

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

  • <id> یک شناسه منحصر به فرد برای وظیفه است.
  • <taskId> شناسه‌ی وظیفه‌ای است که باید جستجو شود.
  • سربرگ درخواست باید حاوی فیلدی به نام Authorization با مقدار Bearer <token> باشد، که در آن <token> توسط سرور شما طبق دستورالعمل‌های شرح داده شده در نقش‌های حساب سرویس و توکن‌های وب JSON صادر می‌شود.
  • بدنه درخواست باید خالی باشد.
  • اگر جستجو موفقیت‌آمیز باشد، بدنه پاسخ شامل یک موجودیت وظیفه (task entity) است.

مثال دستور 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;
}

استراحت

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}"

فهرست وظایف

لیست کردن وظایف، دسترسی گسترده به وظایف را درخواست می‌کند. لیست کردن وظایف فقط برای کاربران مورد اعتماد در نظر گرفته شده است. هنگام درخواست وظایف لیست، از توکن‌های احراز هویت Delivery Fleet Reader یا Delivery Admin استفاده کنید. برای اطلاعات بیشتر به نقش‌های حساب سرویس مراجعه کنید.

صفحه بندی لیست ها

لیست‌های وظایف صفحه‌بندی شده‌اند. می‌توان در درخواست‌های وظایف لیست، اندازه صفحه را مشخص کرد. اگر اندازه صفحه مشخص شود، تعداد وظایف برگشتی بیشتر از اندازه صفحه مشخص شده نخواهد بود. اگر اندازه صفحه‌ای وجود نداشته باشد، از یک مقدار پیش‌فرض معقول استفاده می‌شود. اگر اندازه صفحه درخواستی از یک مقدار حداکثر داخلی بیشتر شود، از حداکثر داخلی استفاده می‌شود.

یک لیست وظایف می‌تواند شامل یک توکن برای خواندن صفحه بعدی نتایج باشد. برای بازیابی آن صفحه بعدی، همان درخواست را به همراه توکن صفحه دوباره ارسال کنید. وقتی توکن صفحه برگردانده شده خالی باشد، هیچ وظیفه دیگری برای بازیابی در دسترس نیست.

فیلدها هنگام فهرست کردن وظایف

موتور ناوگان هنگام فهرست کردن وظایف، فیلدهای زیر را حذف می‌کند:

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

از قالب‌های فیلد زیر بر اساس پیشنهادهای بهبود API گوگل استفاده کنید:

نوع فیلد قالب مثال
مهر زمانی RFC-3339 task_outcome_time = 2022-03-01T11:30:00-08:00
مدت زمان تعداد ثانیه‌هایی که بعد از آن یک s می‌آید task_duration = 120s
شمارشی رشته 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 و یک ویژگی وظیفه را، هم با کتابخانه جاوا 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;
 }

استراحت

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

برای اعمال فیلتر روی وظایف فهرست‌شده، یک پارامتر URL با عنوان "filter" به همراه یک پرس‌وجوی فیلتر URL-escaped به عنوان مقدار آن وارد کنید.

سرآیند درخواست باید شامل یک فیلد 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}"

قدم بعدی چیست؟