M4 猎鹰任务:让运单流程可扩展、可追踪、可恢复

M4 猎鹰任务是一个低代码流程引擎:它把“机器人需要完成什么业务”拆成一系列可执行的步骤,再交给 M4 调度系统和机器人完成。
从功能上,可以把“猎鹰”理解为一种形象的比喻:先锁定目标,再按照步骤执行,并持续掌握任务进展。
在 M4 中,猎鹰任务和调度系统以运单、运单步骤为边界:猎鹰任务负责创建运单并添加运单步骤;调度系统负责分派运单,并控制机器人依次执行各个运单步骤。
可以简单理解为:
业务需求 → 猎鹰任务组织流程 → M4 调度运单 → 机器人执行
猎鹰任务让业务变化不再依赖反复开发
不同客户的搬运流程往往不一样。即使都是搬运物料,也可能涉及不同的取放动作、设备信号、放行条件和异常处理。
过去,这些流程通常需要通过编写程序实现。开发周期长,后续流程一旦变化,还要重新修改、测试和部署。
猎鹰任务把常用能力做成可配置的组件。用户可以在界面中选择、排列和配置组件,更直观地搭建业务流程,后续调整也更加方便。
模板定义流程,记录保存运行
在 M4 中,猎鹰任务模板和猎鹰任务记录是两个不同的概念。
猎鹰任务模板是一套可以重复使用的流程配置,规定任务接收哪些信息、包含哪些组件,以及各个组件怎样执行。每运行一次模板,M4 都会生成一条对应的猎鹰任务记录。同一个模板可以多次运行,因此也可以产生多条任务记录。
可以把模板理解为“流程图纸”,把任务记录理解为“按照这张图纸进行的一次实际作业”。
猎鹰任务模版的构成
一个猎鹰任务模板主要包含:
- 任务输入参数:任务运行时需要提供的信息,例如起点、终点和容器。
- 任务输出参数:任务执行后对外提供的结果,主要用于其他任务将其作为子任务调用。
- 任务变量:只在本次任务运行过程中使用,用于在不同组件之间保存和传递数据。
- 全局变量:可以被多个猎鹰任务共同使用,例如当前班次、设备地址或流程开关。
- 组件:组成任务流程的具体执行单元,例如创建运单、添加运单步骤、判断条件、循环执行或读取设备信号。
每个组件又可以包含:
- 组件输入参数:告诉组件需要处理什么;
- 组件输出参数:将执行结果提供给后续组件;
- 执行逻辑:规定该组件本身要完成什么操作;
- 子组件逻辑:规定条件、循环等组件内部包含的其他组件如何执行。
猎鹰任务模板还可以作为子任务被其他模板调用。父任务向子任务传入参数,子任务执行完成后再返回结果。这样,一段已经编排好的流程就能作为完整组件重复使用,不需要重新配置其中的每个步骤。
猎鹰任务记录的保存
任务记录会保存任务及各组件的执行状态,方便查看进度和排查故障。
需要注意的是,暂停指令会在当前组件执行完成后生效。如果组件尚未执行完服务器就发生重启,部分组件可能再次执行,流程设计时需要考虑动作重复的影响。
简单流程直接编排,重复的复杂流程可做成子任务
以“从 A 点搬到 B 点”为例,只需设置起点和终点,再依次创建运单、添加取货步骤、添加放货步骤和结束运单。取放货步骤可以配置是否等待执行完成;结束运单相当于“封口”,表示不会再添加后续步骤。调度系统负责分派和执行运单,必要时也可以在步骤上配置“禁止重分派”。
而像这样两点搬运的简单流程没有必要专门拆成子任务。子任务更适合重复出现的复杂操作。
例如,同一项目中的机器人每次从输送线取货,都需要依次向 PLC 发送请求、等待设备就绪、执行取货并等待完成,最后通知 PLC 取货结束。可以把这段流程单独建成“输送线取货”任务,再作为子任务插入不同的主任务。
这样既能缩短主任务、降低编排复杂度,也能集中维护重复逻辑。以后设备交互方式发生变化,只需修改这个子任务,不必逐个调整项目内所有相关任务。
用猎鹰任务创建运单,更简单,也更灵活
单纯用代码创建一张运单并不难。真正麻烦的是,现场流程通常还要在取货、放货等步骤之间加入条件判断、设备信号和第三方系统交互。需求越多,代码越长,业务逻辑也越容易分散。
一旦流程变化,原有代码就要重新查找、修改、测试和部署;出现异常时,也很难快速确认运单进行到哪一步。排障时间越长,机器人等待、物料配送延迟甚至现场流程停滞的风险就越高。
猎鹰任务是 M4 的重要亮点之一。它既能通过组件快速创建运单,又能在步骤之间灵活插入其他操作,并通过任务记录展示每个组件的执行状态。它解决的不只是“怎么创建运单”,更重要的是让复杂流程看得见、改得动,出了问题也更容易恢复。