پیکربندی کردن تکالیف

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

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

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

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

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

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

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

نمونه‌های زیر نشان می‌دهد که چگونه پنجره زمانی را بااستفاده از کتابخانه Java 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;
  }

REST

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

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

  • رؤیت‌پذیری نشانگر مکان
  • نمایان بودن داده‌های تکلیف برای تکالیف فعال خودرو، مثل چندخطی‌ها و زمان تخمینی رسیدن

قوانین رؤیت‌پذیری نشانگر مکان

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

قوانین رؤیت‌پذیری داده‌های تکلیف

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

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

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

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

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

رؤیت‌پذیری تکالیف فعال خودرو

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

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

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

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

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

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

قوانین رؤیت‌پذیری مکان خودرو و چندخطی‌های مسیر

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

برای ارائه ترکیب معتبر چندخطی‌های مسیر / رؤیت‌پذیری مکان خودرو، این قوانین را دنبال کنید.

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

In this scenario, both the polyline and the vehicle location set the same options, which include:

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

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

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

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

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

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

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

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

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

نمونه سفارشی‌سازی رؤیت‌پذیری تکلیف

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

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

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

REST

برای تنظیم پنجره پیکربندی نمای ردیابی تکلیف بااستفاده از 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

قدم بعدی چیست