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

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

  • تنظیم پنجره زمانی هدف برای یک کار حمل و نقل : پنجره زمانی را برای تکمیل کار تنظیم کنید.

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

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

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

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

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

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

قوانین نمایان بودن نشانگر مکان

Fleet Engine نشانگرهای مکان را برای مکان تحویل محموله نشان داده شده روی نقشه، بدون توجه به وضعیت تحویل، نمایش می دهد.

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

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

کارهای زیر ممکن است سفارشی نشوند:

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

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

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

دید فعالیت های خودرو

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

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

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

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

این جدول گزینه های دید موجود برای فیلدهای فهرست شده در بالا را نشان می دهد.

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

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

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

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

چند خطوط مسیر و مکان وسیله نقلیه گزینه های دید یکسانی را مشخص می کنند

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

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

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

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

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

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

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

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

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

در این مثال، مکان وسیله نقلیه تنها زمانی قابل مشاهده است که تعداد توقف باقیمانده حداقل 3 و مسافت باقیمانده رانندگی حداقل 3000 متر باشد.

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

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

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

برای 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

بعدش چی