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

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

  • تعیین بازه زمانی هدف برای یک وظیفه ارسال : بازه زمانی برای تکمیل وظیفه را تعیین کنید.

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

برای جزئیات بیشتر در مورد فیلدهای مربوط به وظایف حمل و نقل، به بخش «ایجاد وظایف حمل و نقل» مراجعه کنید. هنگام به‌روزرسانی اطلاعات اضافی در مورد وظایف موجود، باید علاوه بر فیلدهایی که برای وظایف به‌روزرسانی می‌کنید، شناسه مربوط به آن وظیفه را نیز درج کنید.

تنظیم پنجره زمانی هدف

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

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

مثال‌های زیر نحوه تنظیم پنجره زمانی با استفاده از کتابخانه جاوا gRPC یا نحوه ارسال درخواست HTTP REST به UpdateTask را نشان می‌دهد. همچنین می‌توانید این فیلد را در زمان ایجاد وظیفه تنظیم کنید.

gRPC

  static final String PROJECT_ID = "my-delivery-co-gcp-project";
  static final String TASK_ID = "task-8241890";

  DeliveryServiceBlockingStub deliveryService =
    DeliveryServiceGrpc.newBlockingStub(channel);

  // Task settings
  String taskName = "providers/" + PROJECT_ID + "/tasks/" + TASK_ID;
  Task task = Task.newBuilder()
    .setName(taskName)
    .setTargetTimeWindow(
      TimeWindow.newBuilder()
        .setStartTime(Timestamp.newBuilder().setSeconds(1680123600))
        .setEndTime(Timestamp.newBuilder().setSeconds(1680130800)))
    .build();

  // Task request
  UpdateTaskRequest updateTaskRequest =
    UpdateTaskRequest.newBuilder()  // No need for the header
        .setTask(task)
        .setUpdateMask(FieldMask.newBuilder().addPaths("targetTimeWindow"))
        .build();

  try {
    Task updatedTask = deliveryService.updateTask(updateTaskRequest);
  } catch (StatusRuntimeException e) {
    Status s = e.getStatus();
    switch (s.getCode()) {
       case NOT_FOUND:
         break;
       case PERMISSION_DENIED:
         break;
    }
    return;
  }

استراحت

برای تنظیم پنجره زمانی یک وظیفه با استفاده از HTTP، PATCH را فراخوانی کنید و از updateMask برای به‌روزرسانی پارامتر targetTimeWindow استفاده کنید:

PATCH https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks/<id>?updateMask=targetTimeWindow

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

# Set JWT, PROJECT_ID, and TASK_ID in the local environment
  curl -X PATCH "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks/${TASK_ID}?updateMask=targetTimeWindow" \
    -H "Content-type: application/json" \
    -H "Authorization: Bearer ${JWT}" \
    --data-binary @- << EOM
  {
    "targetTimeWindow": {
      "startTime": "2023-03-29T21:00:00Z",
      "endTime": "2023-03-29T23:00:00Z"
    }
  }
  EOM

سفارشی‌سازی قابلیت مشاهده وظایف

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

این بخش قوانین دید برای اشیاء ردیابی شده روی نقشه را شرح می‌دهد. این قوانین برای دو دسته از اشیاء اعمال می‌شود:

  • قابلیت مشاهده نشانگر مکان
  • قابلیت مشاهده داده‌های وظیفه برای وظایف فعال خودرو، مانند پلی‌لاین‌ها و ETA

قوانین مربوط به قابلیت مشاهده نشانگر مکان

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

قوانین مشاهده داده‌های وظیفه

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

وظایف زیر قابل سفارشی‌سازی نیستند:

  • توقف‌های برنامه‌ریزی‌شده
  • وظایف عدم دسترسی
  • وظایف غیرفعال خودرو

قوانین نمایش وظایف در دسترس نبودن

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

قابلیت مشاهده وظایف فعال خودرو

شیء TaskTrackingInfo تعدادی عنصر داده ارائه می‌دهد که می‌توانید با استفاده از کتابخانه ردیابی محموله، آنها را قابل مشاهده کنید. به طور پیش‌فرض، این فیلدها زمانی قابل مشاهده هستند که وظیفه به وسیله نقلیه اختصاص داده شده باشد و زمانی که وسیله نقلیه در فاصله ۵ ایستگاه از وظیفه قرار داشته باشد. قابلیت مشاهده زمانی پایان می‌یابد که وظیفه تکمیل یا لغو شود.

شما می‌توانید پیکربندی قابلیت مشاهده را بر اساس هر وظیفه با تنظیم TaskTrackingViewConfig روی یک وظیفه هنگام ایجاد یا به‌روزرسانی وظیفه در Fleet Engine سفارشی کنید. این کار قوانینی را برای در دسترس بودن عناصر داده‌ای منحصر به فرد ایجاد می‌کند.

جدول زیر فیلدهایی را که می‌توانید قوانین نمایش را روی آنها اعمال کنید، نشان می‌دهد.

فیلدهای وظیفه خودرو برای قوانین دید
  • چندخطی‌های مسیر
  • زمان تخمینی تا رسیدن
  • زمان تخمینی تکمیل وظیفه
  • مسافت رانندگی باقی مانده تا انجام وظیفه
  • تعداد توقف‌های باقی‌مانده
  • محل خودرو

این جدول گزینه‌های نمایش موجود برای فیلدهای ذکر شده در بالا را نشان می‌دهد.

گزینه‌های دید
  • تعداد توقف‌های باقی‌مانده
  • مدت زمان تا زمان تخمینی رسیدن
  • مسافت رانندگی باقی مانده
  • همیشه قابل مشاهده
  • هرگز قابل مشاهده نیست

خطوط چندخطی مسیر و قوانین دید موقعیت مکانی خودرو

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

برای ارائه ترکیبی معتبر از خطوط چندخطی مسیر/مکان خودرو برای مشاهده، این قوانین را دنبال کنید.

خطوط چندخطی مسیر و موقعیت مکانی خودرو، گزینه‌های دید یکسانی را مشخص می‌کنند

در این سناریو، هم چندخطی و هم موقعیت مکانی خودرو گزینه‌های یکسانی را تنظیم می‌کنند که شامل موارد زیر است:

  • تعداد توقف‌های باقی‌مانده
  • مدت زمان تا ETA
  • مسافت رانندگی باقی مانده

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

```js
"taskTrackingViewConfig": {
  "routePolylinePointsVisibility": {
    "remainingStopCountThreshold": 3
  },
  "vehicleLocationVisibility": {
    "remainingStopCountThreshold": 5
  },
}
```

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

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

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

یک مثال در ادامه آمده است:

  "taskTrackingViewConfig": {
    "routePolylinePointsVisibility": {
      "remainingStopCountThreshold": 3
    },
    "vehicleLocationVisibility": {
      "remainingDrivingDistanceMetersThreshold": 3000
    },
  }

در این مثال، موقعیت مکانی خودرو تنها در صورتی قابل مشاهده است که تعداد توقف‌های باقی‌مانده حداقل ۳ و مسافت باقی‌مانده رانندگی حداقل ۳۰۰۰ متر باشد.

مثال سفارشی‌سازی قابلیت مشاهده وظایف

مثال‌های زیر نحوه تنظیم یک وظیفه با قوانین نمایش زیر را نشان می‌دهند:

  • اگر وسیله نقلیه در فاصله ۳ ایستگاه قرار دارد، خطوط چندخطی مسیر را نشان دهید.
  • اگر مسافت باقی مانده رانندگی کمتر از ۵۰۰۰ متر است، ETA را نشان دهید.
  • هرگز تعداد توقف‌های باقی‌مانده را نشان ندهید.
  • هر فیلد دیگر، قابلیت مشاهده پیش‌فرض خود را حفظ می‌کند و زمانی که وسیله نقلیه در فاصله ۵ توقف از وظیفه قرار دارد، نمایش داده می‌شود.

برای gRPC یا REST به TaskTrackingViewConfig مراجعه کنید.

gRPC

static final String PROJECT_ID = "my-delivery-co-gcp-project";
static final String TASK_ID = "task-8241890";

DeliveryServiceBlockingStub deliveryService =
  DeliveryServiceGrpc.newBlockingStub(channel);

// Task settings
String taskName = "providers/" + PROJECT_ID + "/tasks/" + TASK_ID;
Task task = Task.newBuilder()
  .setName(taskName)
  .setTaskTrackingViewConfig(
    TaskTrackingViewConfig.newBuilder()
      .setRoutePolylinePointsVisibility(
        VisibilityOption.newBuilder().setRemainingStopCountThreshold(3))
      .setEstimatedArrivalTimeVisibility(
        VisibilityOption.newBuilder().remainingDrivingDistanceMetersThreshold(5000))
      .setRemainingStopCountVisibility(
        VisibilityOption.newBuilder().setNever(true)))
  .build();

// Task request
UpdateTaskRequest updateTaskRequest =
  UpdateTaskRequest.newBuilder()  // No need for the header
      .setTask(task)
      .setUpdateMask(FieldMask.newBuilder().addPaths("taskTrackingViewConfig"))
      .build();

try {
  Task updatedTask = deliveryService.updateTask(updateTaskRequest);
} catch (StatusRuntimeException e) {
  Status s = e.getStatus();
  switch (s.getCode()) {
      case NOT_FOUND:
        break;
      case PERMISSION_DENIED:
        break;
  }
  return;
}

استراحت

برای تنظیم پنجره پیکربندی نمای ردیابی وظیفه با استفاده از HTTP، PATCH را فراخوانی کنید و از updateMask برای به‌روزرسانی پارامتر taskTrackingViewConfig استفاده کنید:

PATCH https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks/<id>?updateMask=taskTrackingViewConfig

برای مثال:

# Set JWT, PROJECT_ID, and TASK_ID in the local environment
curl -X PATCH "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks/${TASK_ID}?updateMask=taskTrackingViewConfig" \
  -H "Content-type: application/json" \
  -H "Authorization: Bearer ${JWT}" \
  --data-binary @- << EOM
{
  "taskTrackingViewConfig": {
    "routePolylinePointsVisibility": {
      "remainingStopCountThreshold": 3
    },
    "estimatedArrivalTimeVisibility": {
      "remainingDrivingDistanceMetersThreshold": 5000
    },
    "remainingStopCountVisibility": {
      "never": true
    }
  }
}
EOM

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