本文档介绍了车队引擎中的安排的任务服务。本文假定您已阅读什么是车队引擎?,并了解您需要的特定车队引擎服务功能。
阅读本文档时,请注意以下事项:
- 您可以创建任务并将其与车辆停止点相关联,以模拟任务与预计停车地点之间的现实关联,以便驾驶员完成任务。请参阅车辆简介,更好地了解车辆在车队引擎中的运作方式。
- 用于安排的任务的舰队引擎使用以下资源:
Task
和DeliveryVehicle
。Fleet Engine 同时提供 gRPC 服务和 REST 接口:
什么是定时任务?
Fleet Engine 中的安排的任务表示在运输作业的更广泛背景下,由驾驶员使用车辆完成的单个操作。它定义了驱动程序的具体目标。例如:
- 将商品送达住宅
- 自提包裹以退回给配送仓库
- 在某个位置停车,为客户提供上门服务
- 进行预约停靠以加油
任务元素
下图展示了车辆标准预约行程中的这些任务元素。
基本任务字段
字段 | 说明 |
---|---|
类型 | 定义与任务关联的操作类型。 |
任务 ID | 用于在系统中唯一标识任务的字符串。 |
计划到达的地点 | 指定应执行任务的预期位置。 此位置并不总是与车站的预计位置相同。 |
州 | 指示任务是处于待处理状态还是已关闭状态。 |
任务结果 | 指示任务是成功还是失败。 |
任务的数据模型
以下两个图展示了 Task
资源的数据模型,以及其关联的 DeliveryVehicle
资源的图表。您可以查看这两个图表,探索这两种资源之间的关系,同时注意以下事项:
- 预计位置:车站和任务都有各不相同的预计位置。
- 对于任务,计划地点表示应执行驾驶员操作的位置。例如,15 个包裹要配送到一个大型住宅区,需要配送到同一住宅区内的不同邮件室位置。
- 对于车辆停靠点,计划地点表示车辆在驾驶员完成任务期间的停靠点。例如,车辆停在公寓大门口,然后司机将包裹手动送到公寓内的不同邮寄室。
- 状态:任务和车站都有一个状态字段,彼此区别开来。
- 相应车站的状态反映了相应车辆相对于相应车站的进度,用于车队跟踪目的。
- 任务的状态表示任务是否处于活动状态。这会影响对任务执行的其他操作,例如设置其结果或将其分配给车辆。
任务结果:任务结果是数据模型中的一个重要字段,因为它用于指示任务的成功或失败,而与任务状态无关。
ID:
- 当您向车辆分配任务时,车队引擎会填充
deliveryVehicleId
字段。此只读字段表示分配了任务的车辆。 - 任务 ID 是系统中所有任务的唯一标识符。
- 跟踪 ID 用于标识任务,以便跟踪运单。
- 当您向车辆分配任务时,车队引擎会填充
Tasks 数据模型
车辆数据模型
任务 ID
与 Fleet Engine 中的车辆 ID 类似,每个任务都必须包含一个 ID,以便将其与系统中的其他任务区分开来。您可以通过 ID 引用和管理工作流中的所有任务。您可以使用 CreateTaskRequest
服务并提供符合本部分所述要求的 ID 字符串来创建这些 ID。
然后,此字符串将构成任务资源本身名称的一部分,即 Task
对象上的输出专用字段。这类似于 Fleet Engine 构建车辆名称资源的方式。请参阅Fleet Engine 简介中的资源命名部分。
属性 | 说明 |
---|---|
唯一性 | 每个任务 ID 在您的 Fleet Engine 实现中都必须是唯一的,以免造成混淆并确保正确识别。 |
格式 |
|
良好的任务 ID 示例 |
|
---|---|
禁止使用的任务 ID |
|
任务类型
Fleet Engine 支持各种任务类型,用于表示运输操作中的不同操作。下面介绍了这些版本以及其公开范围和结算详情。
任务类型 | 说明 | 货运跟踪信息的公开范围 | 已结算 |
---|---|---|---|
传送任务 | 用于为客户送达物品或完成任务。 | 消费者可以查看和跟踪此信息。 | 是 |
自提任务 | 用于指明从客户处取货。您必须为任何自提任务提供相应的送货任务。 | 消费者可以查看和跟踪此信息。 | 否 |
不可预订任务 | 将车辆标记为无法提供服务,例如当司机休息或给车辆加油时。 | 消费者看不到。 | 否 |
安排停止任务 | 需要在特定位置停车的非配送任务。使用安排的停止点任务可在特定地点每天安排定时取件停止点,而不会影响同一地点的其他送货或取件。您还可以为从回收箱收集物品创建定期停靠任务,或模拟在服务中心和服务点进行的补给车辆转移或停靠。 | 使用方无法跟踪此特定任务,但可以在跟踪其他任务时看到它。 | 否 |
任务和历程生命周期
本部分详细介绍了 Fleet Engine 中的传送任务生命周期。任务生命周期与车辆行程相关联,因为车辆必须前往相应经停点,才能让驾驶员在计划地点完成任务。
1. 创建任务
首次在车队引擎中创建任务时,您可以为任务设置各种字段,而无需将其与经停点相关联。
属性 | 说明 |
---|---|
州 | 设为“打开” |
ID | 如果您为消费者使用配送跟踪,请设置任务和跟踪 ID。 |
计时 | 任务的计划时长及其目标时间范围。如需了解详情,请参阅任务时间安排。 |
计划到达的地点 | 设置要完成任务的确切地理坐标。 |
2. 任务分配
向车辆分配任务时,您需要将其与车辆停止点结合起来。经停点是纬度/经度坐标,表示车辆在驾驶员完成与经停点相关的任务时停车的位置。经停点通常是某个接入点,例如装卸平台或道路截取位置。
3. 进行中
任务的状态为“待处理”或“已关闭”。不过,将任务分配给车辆后,您可以通过任务与车辆的关联以及车辆相对于任务完成地点的所在位置来跟踪任务进度。
车辆离开相应经停点或开始导航后,相应经停点的状态应更改为 ENROUTE
。这样,消费者跟踪运输信息可以通过剩余经停点数和预计送达时间来更新任务的收货人。这还支持任何实时可视化功能,用于跟踪消费者的配送或车队。
4. 到达时间和任务结果
当车辆到达相应经停点时,应将相应经停点的状态设置为 ARRIVED
。与 ENROUTE
停止状态一样,这不会影响任务本身的状态,但支持使用户通知和车队运营者用于车队跟踪的任何实时报告。它还支持日后对操作进行分析和生成报告,以便您进行投放优化。
车辆到达经停点后,您的系统可以使用以下任一方法处理任务历程的其余部分:
在任务完成后关闭任务。
当驾驶员将任务标记为已完成时,系统可以将其从相应经停点移除,但会保留分配给该经停点的其他任务。
从车辆中移除整个经停点。
当司机将所有任务都标记为已完成,且车辆正在前往下一个经停点时,您可以从车辆中移除整个经停点。车队引擎会自动关闭与已移除的停止点关联的所有任务。
关闭任务并不表示任务成功或失败
关闭任务仅表示系统不再将该任务视为正在进行。对于处于 CLOSED
状态的任务,您可以将其结果设置为 SUCCEEDED
或 FAILED
。这对于指明配送跟踪的实际结果以及正确结算而言都很有必要。Fleet Engine 仅对状态为“SUCCEEDED”的交付任务收费。
任务结果一经设置便无法更改
标记任务结果时,车队引擎会自动使用最近一次的已知车辆位置填充任务结果位置。不过,您可以在设置任务结果时间和任务结果位置后对其进行修改,Fleet Engine 不会替换这些字段。
5. 其他任务场景
您在 Fleet Engine 中建模的任务并不都适用于典型的历程流程。例如:
- 自提任务。如果您有一个自提任务,用于将包裹退回仓库以供日后处理,则应为该包裹创建相应的送达任务,并将计划送达地点设为仓库。否则,自提任务通常遵循与送货任务相同的流程。
- 重新分配任务。您无法直接将任务重新分配给其他车辆。如需将任务从一辆车辆移至另一辆车辆,请关闭原始任务,然后重新创建该任务,再将其分配给新车辆。如果您更新已分配给其他车辆的任务的任务排序,Fleet Engine 会生成错误。
- 删除任务。与车辆一样,车队引擎会在七天后删除未更新的任务。如果您尝试重复使用之前已关闭的任务的 ID,并且该 ID 在过去 7 天内已被使用,Fleet Engine 会返回错误。反之,如果您想将任务数据保留超过 7 天,则必须自行实现此功能,例如通过安排作业来重置 7 天计时器。
分享任务进度
在车队引擎中,您可以通过以下两种主要方式实时监控任务进度并分享驾驶员的行程:
- 消费者体验:让消费者了解其发货订单或申请的服务订单的状态。
- 车队跟踪,供车队运营商跟踪和分析车队中的车辆状态。
消费者体验
如需分享任务进度,您可以使用 JavaScript 使用方 SDK 设置使用方体验。借助此 SDK,您可以增强 Web 或移动应用的视觉体验,让消费者能够监控其运输状态,以及跟踪送货车辆的预计送达时间和实时位置信息更新。请参阅消费者 SDK 安排的任务概览。
使用方 SDK 包含一个 JavaScript 地图和数据组件,用于与 Fleet Engine 连接。该映射可以直接替换标准 google.maps.Map
对象。您的客户端应对最终用户进行身份验证,并使用 Google Cloud 项目中的 Delivery 使用方角色,以便仅返回客户专用信息。Fleet Engine 会过滤和隐去响应中的所有其他信息。例如,在不可用性任务期间,系统不会与最终用户分享任何位置信息。
在车队引擎中,您可以启用以下设置,以便与使用方共享任务进度:
- 任务使用
TaskTrackingViewConfig
属性。可选。 - 任务使用跟踪 ID,库需要使用该 ID 为使用方识别相关任务。
车队跟踪
借助 JavaScript 车队跟踪库,您可以近乎实时地直观了解车队中的车辆的位置。该库使用 Fleet Engine API 可视化显示配送车辆及其分配的任务。与 JavaScript 使用方 SDK 一样,它包含一个 JavaScript 地图组件,可替换标准 google.maps.Map
实体,并包含您用于与车队引擎连接的数据组件。
此库会在车辆在车队引擎中创建后立即显示其可见性。对于此实现,您使用 Fleet Engine Service Super User Cloud IAM 角色,并提供 Java Web 令牌声明,以访问配送车辆及其关联的任务。
计划任务场景
本部分展示了各种任务场景,总结了本指南到此为止提供的信息。本指南旨在帮助您了解如何根据自己的业务在车队引擎中以多种方式对运输运营进行建模。
配送并提供跟踪信息
此配送场景显示了在行程开始时从车辆基地出发和在行程结束时到达车辆基地时,分配给车辆基地的预定停靠点任务。它还会显示相应经停点的两个配送任务,其中一个任务已失败。使用此分配可启用从车库到车库的跟踪,并用作模拟当天开始和结束时间的方法。系统不会对安排的停止任务进行结算。
自提并送往仓库
此场景展示了如何对接收点及其所需的对应传送任务进行建模。您将退回车站的操作设置为送达,以便结算。

补给车
此场景显示了两次配送,其中中途有一条预定的支线车辆停靠点,目的是让配送车辆能够将部分包裹运回仓库。您还可以使用安排的停靠点对接驳车辆进行建模。

任务时间
对任务时间进行建模有助于有效规划路线、预测预计到达时间 (ETA) 以及管理送货预期。Fleet Engine 提供了两个关键功能来对任务时间进行建模和预测,如本部分所述。
任务时长
任务时长使用 task_duration
字段进行设置,该字段是必需字段,用于模拟司机在停车点完成任务或休息所预计花费的时间。对于经停点,这涵盖到达经停点后的所有必要活动,例如卸下包裹和与收货人互动。这些信息越具体,车队引擎就越能为行程中的后续经停点提供合理的到达时间和预计到达时间。如需了解该字段的详细信息,请参阅协议缓冲区文档中的时长部分。
目标时间范围
目标时间用于定义任务的建议时间范围,通常用于与客户沟通或进行内部规划。您可以使用 target_time_window
字段(包含开始时间和结束时间)进行设置。这不会直接影响任何路线计算,但可用于以下情况:提醒消费者包裹送达的时间范围,或预计预约的服务工人何时到达。
任务属性
使用 ListTasks
请求时,Fleet Engine 中的任务属性提供了一种便捷的方式来根据特定特征过滤任务。您还可以使用自定义任务属性通过 Cloud Logging 进行分析,以及向使用方传达信息或进行车队跟踪。其用途与车辆属性类似:用于从更专注的角度了解配送操作。
限制和局限
- 自定义属性创建:车队引擎会限制您为每项任务定义的自定义属性数量。请与您的销售代表联系,请求提高这些限额。
- 过滤功能:虽然任务属性可提供灵活的过滤功能,但不会取代核心任务数据字段。您可以根据自己的具体需求,使用这些过滤条件进行额外过滤。
- 每个属性都必须具有唯一的键。
- 请勿在属性值中包含个人身份信息或其他敏感信息,因为这些信息可能会向用户显示。
- 数据验证:确保自定义属性的数据类型和格式与车队引擎的要求兼容。