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

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

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

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

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

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

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

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

  • جستجوها با شناسه ردیابی باید از قوانین دید بیان شده در قوانین دید برای اشیاء ردیابی شده پیروی کنند.

  • از باریک ترین نشانه ممکن برای محدود کردن خطرات امنیتی استفاده کنید. برای مثال، اگر از یک رمز مصرف‌کننده تحویل استفاده می‌کنید، هر تماسی فقط اطلاعات مربوط به آن کاربر نهایی، مانند فرستنده یا گیرنده یک محموله را برمی‌گرداند. Fleet Engine تمام اطلاعات دیگر در پاسخ ها را ویرایش می کند. برای اطلاعات بیشتر در مورد نشانه‌ها، JSON Web Tokens را ببینید.

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

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

استراحت

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 استفاده کنید. برای اطلاعات بیشتر به نقش‌های حساب سرویس مراجعه کنید.

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

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

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

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

Fleet Engine فیلدهای زیر را هنگام فهرست کردن وظایف ویرایش می کند:

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

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

نوع فیلد قالب مثال
مهر زمان 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 و یک ویژگی وظیفه را، هم با کتابخانه 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;
 }

استراحت

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

برای اعمال یک فیلتر برای کارهای فهرست شده، یک پارامتر URL "فیلتر" با یک جستجوی فیلتر از 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}"

بعدش چی