计划任务

本文档介绍 Fleet Engine 中的计划任务服务。它假设 您已经阅读了什么是 Fleet Engine?,并且了解了 所需的引擎服务功能

在阅读本文档时,请注意以下几点:

  • 您可以创建任务并将其与车辆停靠站相关联, 模型任务和任务位置之间的 车辆应停放,以便驾驶员完成任务。 阅读车辆简介,了解如何提升 了解车辆在 Fleet Engine 中的工作原理。
  • 用于计划任务的舰队引擎使用以下资源TaskDeliveryVehicle。Fleet Engine 同时提供 gRPC 服务和 REST 接口: <ph type="x-smartling-placeholder">
      </ph>
    • TaskgRPCREST
    • DeliveryVehiclegRPCREST
    • 为简单起见,本手册使用 gRPC 示例。

什么是计划任务?

Fleet Engine 中的计划任务代表要执行的单个操作 驾驶员在更广的情境下使用车辆来完成交易 运输操作。它定义了驱动程序的特定目标。 例如:

  • 向住宅交付商品
  • 自提包裹并将其退回配送站
  • 在某个营业地点停车,为客户提供现场服务
  • 预定经停点为车辆加油

任务元素

下图展示了以标准计划形式呈现的这些任务元素 行程规划。

基本任务字段

字段 说明
类型 定义与任务关联的操作类型。
任务 ID 唯一标识系统中的任务的字符串。
计划内的位置 指定应执行任务的预期位置。 此位置并不总是与 停车。
指示任务是处于打开还是关闭状态。
任务结果 指示任务是成功还是失败。

任务数据模型

下图说明了 Task 资源的数据模型 与其关联的 DeliveryVehicle 资源的图表一起显示。您可以 请查看这两个图表,以探索这两种资源之间的关系, 请注意以下几点:

  • 计划的位置:车辆停靠点和任务都有计划的位置, 互不相同
    • 对于任务,计划位置表示驾驶员操作的位置 错误。例如,向大型住宅客户配送 15 个包裹 需要将包裹运送到 同一个复杂。
    • 对于车辆经停点,计划位置会指明停靠站 在驾驶员完成任务的同时,自动驾驶汽车。例如, 车辆在公寓大楼入口处停下来,司机 将包裹手动寄送到建筑群内的不同邮寄室。
  • 状态:任务和车辆停靠站都有一个 state 字段,它不同于 相互交流。
    • 车辆停止状态反映的是车辆的行驶进程, 与停靠站的关系,用于车队跟踪。
    • 任务状态指示任务是否处于活动状态。这个 会影响在任务中完成的其他操作,例如设置 或者将其分配给车辆。
  • 任务结果:任务结果是数据模型中的一个重要字段, 因为它用于表示任务的成功与否, 任务状态。

  • ID

    • 当您将任务分配给车辆时,Fleet Engine 会在 deliveryVehicleId 字段。这个只读字段用于指明 所分配的任务。
    • 任务 ID 是系统中所有任务的唯一标识符。
    • 跟踪 ID 用于标识任务,以便跟踪物流信息。

任务数据模型

车辆数据模型

任务 ID

与 Fleet Engine 中的车辆 ID 类似,每个任务都必须包含一个 ID 将其与系统中的其他任务区分开来。您可以引用和管理 按 ID 过滤工作流中的所有任务。您可以使用 CreateTaskRequest 服务,并提供符合以下要求的 ID 字符串: 这些要求。

然后,此字符串包含任务资源本身名称的一部分, Task 对象中仅限输出的字段。这类似于 Fleet Engine 构造车辆名称资源。请参阅资源命名部分, Fleet Engine 简介

任务 ID 要求
属性 说明
唯一性 每个任务 ID 在 Fleet Engine 实现中都必须是唯一的,以避免混淆并确保正确标识。
格式
  • 不得包含个人身份信息 (PII) 或明文数据。
  • 有效的 Unicode 字符串。
  • 最多 64 个字符。
  • 请排除以下字符: / : \ ? #
  • 标准化数据的计算依据: Unicode 标准化形式 C
任务 ID 示例
好的任务 ID 示例
  • 566c33d9-2a31-4b6a-9cd4-80ba1a0c643b
  • eabcfa39bf2767c9546c9273f747b4626e8cc44e9630d50f6d129013d38
  • NTA1YTliYWNkYmViMTI0ZmMzMWFmOWY2NzNkM2Jk
不允许使用的任务 ID
  • 8/31/2019-20:48-46.70746,-130.10807,-85.17909,61.33680
  • JohnDoe-577b484da26f-Cupertino-SantaCruz
  • 4R0oXLToF"112 Summer Dr. East Hartford, CT06118"577b484da26f8a

任务类型

Fleet Engine 支持使用各种任务类型来表示 运输操作。此处对它们进行了说明及其公开范围 和结算明细

任务类型 说明 货运跟踪可见性 已结算
交付任务 用于为客户送餐或完成任务。 消费者可以查看和跟踪这些信息。
自提任务 用于指明从客户处自提商品。您必须 所有自提任务都有相应的配送任务。 消费者可以查看和跟踪这些信息。
不可用任务 将车辆标识为无法维修,例如当驾驶员休息或给车辆加油时。 消费者看不到。
计划停止任务 非送货任务,此类任务需要在特定地点经停。使用计划停止任务在特定地点按天安排每日取件站,与同一位置的其他送货或自提任务无关。你还可为来自保管箱的集合创建计划停靠任务,或者模拟给服务中心和服务点的供给车辆接送或停靠点。 使用方无法跟踪此特定任务,但可将其视为跟踪其他任务的一部分。

任务和历程生命周期

本部分详细介绍了舰队中的交付任务生命周期 。任务生命周期与车辆行程相关联,因为 车辆必须驶到一个经停点,司机才能在该区域完成任务 计划地点

1. 创建任务

首次在 Fleet Engine 中创建任务时,您可以设置各种字段 而不会影响它们与停止点的关联

任务属性
属性 说明
设为“打开”
ID 如果您使用物流跟踪,请设置任务和跟踪 ID 。
计时 任务的计划时长及其目标时间范围。请参阅 如需了解详情,请参阅任务时间
计划内的位置 设置要执行任务的精确地理坐标 已完成。

2. 任务分配

将任务分配给车辆时,需要与车辆一起执行 停止。经停点是纬度/经度坐标,表示 在驾驶员完成与停车相关的任务时,车辆会停放。 停靠站通常是某个接入点,例如装货停靠点或相邻的道路 位置。

3. 进行中

任务的状态为“打开”或“已关闭”。但是,将任务分配给 您可通过车辆与车辆的关联来跟踪其进度 以及车辆相对于任务目标停靠站的位置 已完成。

一旦车辆离开停车点或开始导航, 经停点应更改为 ENROUTE。这样,消费者货运跟踪就可以 更新任务的收件人,并提供剩余经停次数和预估时间 到达时间。这也支持为消费者提供任何实时可视化 货运跟踪或车队跟踪。

4. 到达和任务结果

当车辆到达一个停车点时,该停车点的状态应设置为 ARRIVED。与 ENROUTE 停止状态一样,这不会影响 但同时支持使用方通知和任何实时 报告车队运营商使用的车队跟踪情况。它还可以 针对您要用于投放广告的运营活动进行分析和报告 优化。

一旦车辆到达一个停车点,您的系统就可以处理其余的任务 之旅:

  • 在任务完成后将其关闭

    当驾驶员将任务标记为完成时,您的系统可以将其从 停止,但保留该停靠点,并向其分配其他任务。

  • 从车辆上移除整个经停点

    司机完成所有任务后,车辆正在前往 下一站,您可以从车辆上移除整个经停点。舰队引擎 自动关闭与已移除的停止相关的所有任务。

关闭任务并不表示操作成功或失败

关闭任务仅表示该任务不再被视为正在进行中。 对于处于 CLOSED 状态的任务,您可以将其结果设置为 SUCCEEDEDFAILED。只有这样才能指明送货的实际结果 以便正确结算。Fleet Engine 仅对满足以下条件的交付任务收费: 状态为 SUCCEEDED。

任务结果一经设置便无法更改

标记任务结果时,Fleet Engine 会自动填入该任务 将结果位置与最近一次的已知车辆位置相关联。但您可以 任务结果时间和任务结果位置。 Fleet Engine 不会替换这些字段。

5. 其他任务场景

并非您在 Fleet Engine 中建模的所有任务都能放入典型的历程流程中。例如:

  • 自提任务。当您有需要退货的自提任务时 发送到仓库以便稍后处理,您应该创建相应的 delivery 任务,计划位置设置为仓库。 除此之外,自提任务通常遵循与配送任务相同的流程。
  • 重新分配任务。您无法将任务直接重新分配给 。相反,如需将任务从一个车辆移到另一个车辆中,请关闭 原始任务,然后重新创建,再为其分配新车辆。如果 更新已分配给 Fleet Engine 就会出错。
  • 删除任务。与车辆一样,Fleet Engine 会删除 更新。如果您将某个任务 ID 重复用于 Fleet Engine 会返回错误(如果已使用相应 ID) 在过去 7 天内获得的收入反之,如果您想延长任务数据的保留期限 则必须自行实现该功能,例如通过 以重置 7 天时钟。

分享任务历程

借助 Fleet Engine 中的任务历程共享功能,您可以 实时路况,并通过以下两种主要方式分享驾驶员的行程:

  • 分享消费者转化历程,让消费者了解自己所处的阶段 送货订单或请求的服务订单。
  • 车队跟踪,供车队运营商跟踪和分析状态 车辆数量。

分享消费者转化历程

如需将消费者转化历程分享功能整合到您的运营中,请设置转化历程 使用 JavaScript Consumer SDK 进行共享。借助 SDK,您可以增强 直观的 Web 或移动应用体验,方便消费者监控应用的状态, 送货以及预计到达时间和实时位置信息更新 。请参阅消费者转化历程分享概览: 计划任务

消费者转化历程共享 SDK 包含 JavaScript 地图和数据组件 以便与 Fleet Engine 建立连接。地图可以直接替代 标准 google.maps.Map 对象。您的客户端应对您的终端进行身份验证 并使用 Google Cloud 项目中的 Delivery 使用方角色来执行以下操作: 仅返回特定于客户的信息。Fleet Engine 会滤除并隐去所有信息 提供更多信息例如,在执行不可用任务时 不会与最终用户分享位置信息。

在 Fleet Engine 中,您可以为消费者转化历程启用以下设置 共享:

  • 任务使用 TaskTrackingViewConfig 属性。可选。
  • 任务使用跟踪 ID,库需要将其标识为相关 ID 为消费者执行的任务

车队跟踪

利用 JavaScript 舰队跟踪库,您可以直观呈现 在他们的车队中。该库使用 Fleet Engine API:可直观呈现送货车辆以及 分配给他们的任务与 JavaScript 使用方 SDK 一样,它包含 JavaScript 地图组件,可直接替换标准 google.maps.Map 实体与用于连接 Fleet Engine 的数据组件相关联。

此库会在交付车辆后立即显示其状态 在 Fleet Engine 中创建的。对于此实现,您将使用 Fleet Engine 服务超级用户 Cloud IAM 角色,并且您提供了以下服务的 Java 网络令牌声明 对送货车辆及其相关任务的访问权限。

计划任务场景

此部分显示了各种任务场景,总结了 。旨在帮助您了解 在 Fleet Engine 中构建运输运营模型的各种方法, 具体取决于您的业务情况

配送跟踪

此传送场景显示了一个计划停止任务 并在行程结束时抵达补给站。它还 针对一次停止显示两项传送任务,但其中一项任务失败。使用此 启用进出仓库的跟踪,并用作模型分析方法, 当天的开始和结束时间。无账单 与计划停止任务有关

自提和配送到货

此场景显示了如何模拟提货及其 所需的相应交付任务。您将返回补给站设为 delivery 以供结算之用。

喂食车

此场景显示了两封包裹,其中中间有一次预定的经停点, 供给车辆,目的是让送货车辆能够 带着一些要发货的包裹回到补给站您 还可以根据预定停靠点为供给车辆建模。

任务计时

根据模型估算任务时间有助于有效规划路线、预计预计到达时间和管理 投放预期Fleet Engine 提供了两个关键功能,用于建模和 预测任务时间,如本部分所述。

任务时长

任务时长通过 task_duration 字段设置, 根据模型估算驾驶员在经停点上完成任务的预计时间 或是休息一下对于停靠站,此指标涵盖所有必要的 activity 例如卸载包裹和与乘客互动 收件人。此信息越具体,Fleet Engine 可 为行程中的后续站点提供切合实际的到达时间和预计到达时间。 如需了解字段详情,请参阅 Protocol Buffer 文档中的时长

目标时间范围

目标时间定义了任务的建议时间范围,通常用于 与客户沟通或进行内部规划目的。您可以使用 target_time_window 字段,其中包含开始时间和结束时间。 这不会直接影响任何路线计算,但可用于 例如提醒消费者查看包裹的时间窗口 以及计划 Service Worker 何时会到达。

任务属性

Fleet Engine 中的任务属性提供了一种便捷的方式,让您能够根据特定条件 使用 ListTasks 请求时,您可以详细了解特定特征。您还可以使用 自定义任务属性,用于使用 Cloud Logging 以及 在消费者购买历程分享或车队跟踪中传达信息。通过 用途与车辆属性类似:用于制作更精细的 让大家清楚了解交付运营情况

局限性和限制

  • 自定义属性创建:Fleet Engine 会限制 属性。请联系您的销售代表 您可以申请提高这些限制。
  • 过滤功能:在提供过滤功能的同时, 属性不会替换核心任务数据字段。用途 额外过滤功能。
  • 每个属性必须具有唯一的键
  • 请勿包含个人身份信息或其他敏感信息 信息,因为用户可能会看到这些信息。
  • 数据验证:确保自定义数据的数据类型和格式 属性是否符合 Fleet Engine 的要求。

后续步骤