什么是快盒调度?
快盒调度被用于实时的业务调度。 它会基于距离、任务时间、员工技能等等各种业务限制自动将业务派发到合适的员工。
核心优势:
共有三种算法被应用于调度,适用多种场景。
集成了解决车辆路径问题的能力。
灵活可选的业务调度算法包。涵盖常见业务解决方案,按需选择。
基于标准HTTP RESTful规则的API和完整文档。
如果您想快速了解快盒调度, 请参考 快速开始 .
使用案例
在场景中查看支持的业务场景,并了解如何在平台中实现案例。
主要概念
快盒调度为一个团队中的员工规划任务。所有信息要么依附于一个任务,要么依附于一个团队中的员工。
- 定义员工和任务的所属范围。一份任务只能被分配给属于同已团队的员工。
- 员工有一个初始位置,并且可以在地图上移动。初始位置可以扩展。
- 一份任务发生在一个固定地点,并且需要一段时间来完成。
- 一个员工在任何时刻只能进行一个任务。
- 存在多种任务类型,基于不同方面:
- 任务时间需求
- 员工技能等级
- 员工技能种类
- ...
灵活表单(Flex Form)
每个团队,员工或者订单/任务都有一份附属表单。灵活表单主要用于跟踪常规用户界面或字段未定义的各种附加信息。
团队
一个团队通常由地理位置确定。团队中的任务只能分配给同一团队的员工。
团队灵活表单
团队灵活表单的架构是预先定义好的,用户不能对其进行修改。 团队灵活表单中的信息定义了其规划的时间窗口、算法所遵循的业务规则、地图和路由插件等。
员工
员工在不同的业务问题中可能有不同的称呼,比如技术人员、服务工程师、配送员、邮递员、司机、骑手等。但他们共同的特点是每次只能处理一项任务。
业务时间(business hour)的概念用于定义员工每周的任务时间表,这个时间表从0000(代表午夜)开始,到4800结束(代表两天后的午夜),这种两天的编码方式是为了处理夜班任务。
在当前的版本中,还有一个重要的概念是“基本设备”可能被视为一个员工,并且这个“员工”必须与另一个真正的员工配对。一个典型的例子是在现场服务管理场景中使用的车辆(如货车)。在这种情况下,车辆被视为一个必要的工具,它必须由一名员工来操作或管理。
任务时段
任务时段(Working Slot)是指一个员工在其任务日内的一个或多个任务时间段。 通常,一个员工每天会有一个或多个任务时段,这个时间段由员工的业务时间(business hour)来确定。
任务
任务是快盒调度进行管理的主体。任务会有像是未规划,规划中,已规划等多种状态。
任务会有多种类型,特别是复合任务和原子任务。此外,其他高级对象,如预约和员工的休假事件,也被视为任务的一种。
每个任务都具有数值型经纬度值,这有助于确定任务发生的地理位置。同时,也可以选择将一个预定义的位置附加到该任务上。
规划状态
任务的规划状态:
- U :未规划。当任务处于U状态时,其调度信息将被忽略,系统将根据业务规则对该任务进行调度,并将其状态转换为规划中。
- I :规划中。当任务处于I状态时,其调度属性必须具有有效值。系统被允许更改此状态。
- P :已规划。当任务处于P状态时,它被视为工作分配和日期时间的固定协议。系统引擎将不会修改其调度信息。
- C :已完成。当任务处于C状态时,它将被移除。将来,它将被移至历史存储中。请勿使用此状态。
自动规划
如果一个任务的设置: auto_planning == True,系统会在其状态为U时自动规划该任务,将其状态变为I。
灵活表单数据
在任务分配系统中,您可以将所有自定义的任务属性保存到灵活表单数据(flex_form_data)中。这些数据随后会被调度规则插件用来验证员工与任务的分配是否符合要求。灵活表单数据为系统提供了灵活性,允许根据具体业务需求存储各种自定义字段。以下是一些可能的字段候选示例:
- requested_skills:执行该任务所需的特定技能集合
- job_schedule_type:任务调度类型
- ...
任务和员工的灵活表单数据都可以被规则插件和代理插件访问。这意味着在决定员工与任务之间的匹配时,系统可以综合考虑这些自定义属性。每个不同的业务插件可能都需要不同的灵活表单数据属性,以适应其特定的业务逻辑和需求。
位置
位置(Location)表示员工或任务在地图上的具体位置。对于位置的定义,经度和纬度是必需的,文本形式的地址则是可选的。
将位置视为与任务同等重要,是因为我们观察到在实际应用中,同一客户/同一地点经常会有重复的任务。因此,需要通过在位置上学习和分析历史分配模式。
工作原理
针对订单(order) 和单一任务(job) 快盒调度提供两个不同的算法: Pickdrop 用于order类型的, Single用于job类型的调度。
快盒调度中每个调度算法(Planner)提供两个调度模式:
- 批量调度: 所有在当前排班窗口中的新任务会跟现有的任务一起重新排单。这个过程中,现有已经分配的任务订单一般保持原有的员工的分配。
- 实时调度: 基于当前单一的订单或者任务,选择最合适的员工进行分配,并结合新订单优化被选中的员工的其他任务顺序。
这两个模式可用同时在一个团队业务中启用。针对预约的取送订单,或者大部分的单一订单,一般可以在固定的时间(比如每个晚上,每个小时)调用一次批量调度。 在派送执行的过程中,可以实时的调用实时调度对于新订单进行分配。