انواع وظایف دیگر را ایجاد کنید

این سند فرض می‌کند که راهنمای مقدماتی وظایف زمان‌بندی شده در بخش مقدمه موتور ناوگان و همچنین کار زمان‌بندی شده چیست را خوانده‌اید؟ در این بخش

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

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

این سند نحوه ایجاد وظایف غیر حمل و نقل در سرور شما را پوشش می دهد. برای انواع وظایف حمل و نقل، به ایجاد وظایف حمل و نقل مراجعه کنید.

فیلدهای وظیفه برای کارهای غیر رانندگی

این بخش فیلدهای وظیفه مورد نیاز برای هر دو عدم دسترسی و توقف برنامه ریزی شده را مستند می کند.

فیلدهای وظیفه مورد نیاز

برای هر کاری که در Fleet Engine ایجاد می‌کنید، باید فیلدهای مورد نیاز را در اختیار آن قرار دهید و همچنین ممکن است هر یک از فیلدهای اختیاری را نیز ارائه دهید. Fleet Engine همه فیلدهای دیگر را نادیده می گیرد و در صورتی که یک درخواست ایجاد وظیفه یک deliveryVehicleId اختصاص داده شده را ارائه دهد، یک استثنا ایجاد می کند. برای اختصاص دادن وظایف به وسیله نقلیه، از UpdateDeliveryVehicleRequest استفاده کنید. برای اطلاعات بیشتر، به‌روزرسانی وظایف را ببینید.

میدان ارزش
type

نوع را تنظیم کنید که با نوع کار مطابقت دارد، که یکی از موارد زیر است:

  • PICKUP
  • DELIVERY
  • SCHEDULED_STOP
  • UNAVAILABLE
state State.OPEN
task_id شناسه کار منحصر به فرد این نباید شماره رهگیری برای محموله باشد. اگر شناسه وظیفه در سیستم خود ندارید، ممکن است یک شناسه منحصر به فرد جهانی (UUID) ایجاد کنید. برای جزئیات بیشتر، Task IDs را ببینید.
tracking_id فقط وظایف PICKUP یا DELIVERY : شماره یا شناسه ای که برای ردیابی یک محموله استفاده می کنید. این زمینه را برای کارهای غیر حمل و نقل ارائه نکنید.
plannedLocation فقط وظایف PICKUP ، DELIVERY یا SCHEDULED_STOP : مکانی که قرار است کار تکمیل شود. برای کارهای UNAVAILABLE لازم نیست.
taskDuration زمان مورد انتظار برای اضافه کردن برای تکمیل کار. به عنوان مثال، برای جستجوی پارکینگ، یا پیاده روی به محل تحویل.

فیلدهای وظیفه حمل و نقل اختیاری

میدان ارزش
targetTimeWindow پنجره زمانی که در طی آن کار باید تکمیل شود. این فیلد بر رفتار مسیریابی تاثیری ندارد.
task_tracking_view_config فقط وظایف PICKUP یا DELIVERY : پیکربندی برای ردیابی کار که مشخص می کند کدام عناصر داده تحت چه شرایطی برای کاربران نهایی قابل مشاهده است.
attributes لیستی از ویژگی های وظیفه سفارشی هر ویژگی باید یک کلید منحصر به فرد داشته باشد.

یک کار عدم دسترسی ایجاد کنید

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

  • نوع کار را روی UNAVAILABLE تنظیم کنید.
  • شناسه ردیابی را وارد نکنید.
  • اگرچه لازم نیست مکانی را برای یک کار در دسترس نبودن ارائه دهید، انجام این کار محاسبات ETA پیشرفته را در طول روز فراهم می کند.

قوانین دید ویژه برای مکان وسیله نقلیه زمانی اعمال می شود که در یک کار UNAVAILABLE برای اشتراک گذاری سفر باشد.

  • برنامه‌های مصرف‌کننده ادغام‌شده با کتابخانه ردیابی محموله : وقتی وسیله نقلیه در یک کار غیرقابل دسترسی است، کاربران برنامه مصرف‌کننده نمی‌توانند مکان خودرو را ببینند، اگرچه همچنان می‌توانند اطلاعات وضعیت محموله خود را ببینند.
  • برنامه‌های ردیابی ناوگان ادغام شده با کتابخانه ردیابی ناوگان : وقتی وسیله نقلیه در کار در دسترس نبودن است، مدیران ناوگانی که از برنامه ردیابی ناوگان استفاده می‌کنند می‌توانند مکان خودرو را برای کارهای در دسترس نبودن ببینند.

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

<id> یک شناسه منحصر به فرد برای کار است.

سرصفحه درخواست باید حاوی یک فیلد مجوز با مقدار حامل <token> باشد که در آن <token> توسط سرور شما مطابق دستورالعمل‌های شرح داده شده در نقش‌های حساب سرویس و نشانه‌های وب JSON صادر می‌شود.

بدنه درخواست باید دارای یک موجودیت Task با فیلدهای مناسب شرح داده شده در فیلدهای 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

یک کار توقف برنامه ریزی شده ایجاد کنید

می توانید یک کار برای توقف برنامه ریزی شده ایجاد کنید. به عنوان مثال، برای کارهای غیر رانندگی در مکان های مشتری، برای توقف سوخت گیری، یا زمانی که راننده محموله هایی را از یک وسیله نقلیه تغذیه کننده دریافت می کند. هنگامی که یک کار توقف برنامه ریزی شده ایجاد می کنید، از دستورالعمل های زیر استفاده کنید:

  • نوع کار را روی
  • شناسه ردیابی را وارد نکنید.
  • شما می توانید به صورت اختیاری یک مکان ارائه دهید.

مثال‌های زیر نحوه ایجاد یک کار زمان‌بندی‌شده عدم دسترسی را با استفاده از کتابخانه 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;
  }
  ```

استراحت

برای ایجاد یک کار توقف برنامه ریزی شده از یک محیط سرور، یک تماس HTTP REST با CreateTask برقرار کنید:

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

<id> یک شناسه منحصر به فرد برای کار است.

سرصفحه درخواست باید حاوی یک فیلد مجوز با مقدار حامل <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

بعدش چی