本文档假定您了解如何创建和使用任务。它提供 具体示例了解如何通过以下方式配置配送任务:
为配送任务设置目标时间范围:设置时间范围 以完成任务
自定义任务可见性:自定义任务 activity 的可见性 显示给客户或舰队运营商。
如需详细了解配送任务的各个字段,请参阅创建配送任务。 更新有关现有任务的其他信息时,您还必须 除了需要填写的字段外,您还需要添加任务的相关标识符, 对任务进行更新。
设置目标时间范围
目标时间窗口是执行任务的 TimeWindow 已完成。例如,如果您提供送货时间范围 您可以使用任务目标时间范围来捕获此时间范围 并生成提醒,或者用于分析过往行程的效果。
目标时间窗口由开始时间和结束时间组成,可设置 任何任务类型。目标时间范围不会影响路由 行为
以下示例展示了如何使用 Java gRPC 设置时间范围
库或了解如何向 UpdateTask
发出 HTTP 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)
.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> 是任务的唯一标识符。请求标头 必须包含值为 Bearer <token> 的字段 Authorization, 其中,<token> 是由您的服务器根据指南签发的 服务账号角色和 JSON Web 令牌中所述。
# 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 提供了任务 activity 的可见性, 向接收货物的客户和车队运营人员显示 货运跟踪。这包括 在向客户发送包裹送达通知之前停止 状态。您可以根据每项任务自定义此信息,以便更好地满足 业务模式
本部分介绍了地图上所跟踪对象的可见性规则。 这些规则适用于两类对象:
- 位置标记的可见性
- 有效车辆任务的任务数据可见性,例如多段线和预计到达时间
位置标记可见性规则
Fleet Engine 显示运单送货地点的位置标记 (不管投放状态如何),都会在地图上显示。
任务数据可见性规则
本部分介绍适用于任务数据的默认可见性规则。 您只能自定义进行中的车辆任务,这意味着 上车点和下车点任务可以应用自定义的公开范围规则。
以下任务可能无法自定义:
- 计划的经停点
- 不可用任务
- 非活跃车辆任务
不可用任务可见性规则
默认情况下,只要有至少 1 个 unavailability 任务分配给所跟踪的任务。例如,如果 司机正在休息,或车辆正在前往前往 跟踪物流信息。预计到达时间和预计任务完成时间 仍然可用。同样,您不能自定义此规则。
活跃车辆任务可见性
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 个经停点范围内。
如需了解 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