Этот документ предполагает, что вы знаете, как создавать и использовать задачи. В нём приведены конкретные примеры настройки задач по отгрузке следующими способами:
Установите целевой временной интервал для задачи по отгрузке : установите временной интервал для завершения задачи.
Настройте видимость задач : настройте видимость действий по задачам для отображения клиентам или операторам автопарка.
Подробную информацию о полях для задач по отгрузке см. в разделе Создание задач по отгрузке. При обновлении дополнительной информации о существующих задачах необходимо также указать соответствующий идентификатор задачи в дополнение к обновляемым полям для задач.
Установите целевое временное окно
Целевое временное окно — это временной интервал , в течение которого задача должна быть выполнена. Например, если вы сообщаете получателям о временном окне доставки, вы можете использовать целевое временное окно задачи для отслеживания этого временного окна и создания оповещений, а также для анализа эффективности прошлых поездок.
Целевое временное окно состоит из времени начала и времени окончания и может быть установлено для любого типа задачи. Целевое временное окно не влияет на поведение маршрутизации.
В следующих примерах показано, как установить временное окно с помощью библиотеки 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;
}
ОТДЫХ
Чтобы установить временное окно задачи с помощью HTTP, вызовите PATCH
и используйте updateMask
для обновления параметра targetTimeWindow
:
PATCH https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks/<id>?updateMask=targetTimeWindow
Здесь <id> — уникальный идентификатор задачи. Заголовок запроса должен содержать поле Authorization со значением Bearer <token> , где <token> выдаётся вашим сервером в соответствии с рекомендациями, описанными в разделе Роли учётной записи сервиса и JSON Web tokens .
# 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
предоставляет ряд элементов данных, которые можно сделать видимыми с помощью библиотеки отслеживания отправлений. По умолчанию эти поля видны, когда задача назначена транспортному средству и транспортное средство находится в пределах 5 остановок от задачи. Видимость прекращается после завершения или отмены задачи.
Вы можете настроить конфигурацию видимости для каждой задачи, установив TaskTrackingViewConfig
при её создании или обновлении в Fleet Engine. Это создаст правила, определяющие доступность отдельных элементов данных.
В следующей таблице показаны поля, к которым можно применять правила видимости.
Поля задач транспортного средства для правил видимости |
---|
|
В этой таблице показаны параметры видимости, доступные для полей, перечисленных выше.
Параметры видимости |
---|
|
Полилинии маршрута и правила видимости местоположения транспортных средств
Для отслеживаемого маршрута видимость ломаных линий маршрута зависит от видимости транспортного средства. Если ломаная линия маршрута видна на активном маршруте, где транспортное средство не видно , местоположение транспортного средства всё равно можно определить по концу видимой ломаной линии. Следовательно, видимость ломаной линии маршрута должна быть такой же ограниченной или более ограниченной, чем видимость транспортного средства.
Следуйте этим правилам, чтобы обеспечить допустимую комбинацию полилиний маршрута и видимости местоположения транспортного средства.
Полилинии маршрута и местоположение транспортного средства задают одинаковые параметры видимости.
В этом сценарии и полилиния, и местоположение транспортного средства задают одни и те же параметры, в том числе:
- оставшееся количество остановок
- продолжительность до расчетного времени прибытия
- оставшееся расстояние поездки
Чтобы соответствовать правилам, значение видимости ломаных маршрутов должно быть меньше или равно значению видимости транспортного средства. В этом примере пороговое значение оставшихся остановок для ломаной установлено равным 3, что меньше значения 5, указанного для транспортного средства. Это означает, что когда отслеживаемый маршрут достигает 5 остановок от места выполнения задачи, транспортное средство отображается, но маршрут для него отображается только после того, как маршрут будет удален на 3 остановки.
```js
"taskTrackingViewConfig": {
"routePolylinePointsVisibility": {
"remainingStopCountThreshold": 3
},
"vehicleLocationVisibility": {
"remainingStopCountThreshold": 5
},
}
```
Полилинии маршрута и местоположение транспортного средства определяют различные параметры видимости.
Если полилинии маршрута и местоположение транспортного средства имеют разные параметры видимости, местоположение транспортного средства будет видно только при соблюдении обоих параметров видимости. Видимость полилиний также регулируется правилами видимости транспортного средства:
- Всегда видимый : Полилиния маршрута должна использовать параметр всегда видимой видимости, если местоположение транспортного средства также обеспечивает тот же параметр всегда видимой видимости.
- Никогда не видно : Полилиния маршрута должна использовать параметр видимости «никогда не видно», если местоположение транспортного средства использует параметр видимости «никогда не видно» .
Вот пример:
"taskTrackingViewConfig": {
"routePolylinePointsVisibility": {
"remainingStopCountThreshold": 3
},
"vehicleLocationVisibility": {
"remainingDrivingDistanceMetersThreshold": 3000
},
}
В этом примере местоположение транспортного средства отображается только в том случае, если оставшееся количество остановок составляет не менее 3 И оставшееся расстояние проезда составляет не менее 3000 метров.
Пример настройки видимости задачи
В следующих примерах показано, как задать задачу с использованием следующих правил видимости:
- Показывать полилинии маршрута, если транспортное средство находится в пределах 3 остановок.
- Укажите расчетное время прибытия, если оставшееся расстояние составляет менее 5000 метров.
- Никогда не показывать оставшееся количество остановок.
- Каждое другое поле сохраняет видимость по умолчанию, отображаясь, когда транспортное средство находится в пределах 5 остановок от задачи.
См. TaskTrackingViewConfig
для gRPC или REST .
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