В этом документе предполагается, что вы понимаете, как создавать и использовать задачи. В нем приводятся конкретные примеры настройки задач отгрузки следующими способами:
Установите целевой временной интервал для задачи отгрузки : задайте временной интервал, в течение которого должна быть выполнена задача.
Настройка видимости задач : Настройте видимость действий, выполняемых в рамках задачи, для отображения клиентам или операторам автопарка.
Подробную информацию о полях для задач отгрузки см. в разделе «Создание задач отгрузки». При обновлении дополнительной информации о существующих задачах, помимо полей, которые вы обновляете для задач, необходимо также указать соответствующий идентификатор задачи.
Установите целевой временной интервал
Целевой временной интервал — это временная рамка, в течение которой задача должна быть выполнена. Например, если вы сообщаете получателям временной интервал доставки, вы можете использовать целевой временной интервал задачи для фиксации этого интервала и генерации оповещений, или вы можете использовать его для анализа результатов предыдущих поездок.
Целевое временное окно состоит из времени начала и времени окончания и может быть установлено для любого типа задач. Целевое временное окно не влияет на поведение маршрутизации.
В следующих примерах показано, как установить временной интервал с помощью библиотеки 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