وظایف حمل و نقل را ایجاد کنید

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

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 لیستی از ویژگی های وظیفه سفارشی هر ویژگی باید یک کلید منحصر به فرد داشته باشد.

یک وظیفه تحویل محموله ایجاد کنید

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

مثال‌های زیر نشان می‌دهند که چگونه می‌توان یک کار تحویل محموله با استفاده از کتابخانه Java 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.PICKUP)
    .setState(Task.State.OPEN)
    .setTrackingId("my-tracking-id")
    .setPlannedLocation(               // Grand Indonesia East Mall
      LocationInfo.newBuilder().setPoint(
        LatLng.newBuilder().setLatitude(-6.195139).setLongitude(106.820826)))
    .setTaskDuration(
      Duration.newBuilder().setSeconds(2 * 60))
    .setTargetTimeWindow(
      TimeWindow.newBuilder()
        .setStartTime(Timestamp.newBuilder().setSeconds(1680123600))
        .setEndTime(Timestamp.newBuilder().setSeconds(1680130800)))
    .addAttributes(TaskAttribute.newBuilder().setKey("foo").setStringValue("value"))
    .addAttributes(TaskAttribute.newBuilder().setKey("bar").setNumberValue(10))
    .addAttributes(TaskAttribute.newBuilder().setKey("baz").setBoolValue(false))
    .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 a 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, $TRACKING_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": "PICKUP",
   "state": "OPEN",
   "trackingId": "${TRACKING_ID}",
   "plannedLocation": {
      "point": {
         "latitude": -6.195139,
         "longitude": 106.820826
      }
   },
   "taskDuration": "90s",
   "targetTimeWindow": {
     "startTime": "2023-03-29T21:00:00Z",
     "endTime": "2023-03-29T23:00:00Z"
   }
 }
 EOM

یک وظیفه تحویل محموله ایجاد کنید

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

مثال‌های زیر نشان می‌دهند که چگونه می‌توان یک کار تحویل محموله با استفاده از کتابخانه Java 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.DELIVERY)
    .setState(Task.State.OPEN)
    .setTrackingId("my-tracking-id")
    .setPlannedLocation(               // Grand Indonesia East Mall
      LocationInfo.newBuilder().setPoint(
        LatLng.newBuilder().setLatitude(-6.195139).setLongitude(106.820826)))
    .setTaskDuration(
      Duration.newBuilder().setSeconds(2 * 60))
    .setTargetTimeWindow(
      TimeWindow.newBuilder()
        .setStartTime(Timestamp.newBuilder().setSeconds(1680123600))
        .setEndTime(Timestamp.newBuilder().setSeconds(1680130800)))
    .addAttributes(TaskAttribute.newBuilder().setKey("foo").setStringValue("value"))
    .addAttributes(TaskAttribute.newBuilder().setKey("bar").setNumberValue(10))
    .addAttributes(TaskAttribute.newBuilder().setKey("baz").setBoolValue(false))
    .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 باشد:

مثال دستور curl :

 # Set $JWT, $PROJECT_ID, $TRACKING_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": "DELIVERY",
   "state": "OPEN",
   "trackingId": "${TRACKING_ID}",
   "plannedLocation": {
      "point": {
         "latitude": -6.195139,
         "longitude": 106.820826
      }
   },
   "taskDuration": "90s",
   "targetTimeWindow": {
     "startTime": "2023-03-29T21:00:00Z",
     "endTime": "2023-03-29T23:00:00Z"
   }
 }
 EOM
 ```

بعدش چی