认识流程引擎丨流程从发起到结束,一篇说清楚
一、你点了一次“提交”系统到底干了什么每天你都会点这个按钮提交流程但你有没有想过为什么提交后领导马上就能看到待办流程是怎么一步步流转的中间到底发生了多少次系统操作 这篇文章我们就做一件事把一次流程从“点击提交”到“流程结束”完整拆一遍。 二、先看一个完整流程我们还是用最简单的例子 请假流程提交申请 → 主管审批 → HR审批 → 结束但在系统里它其实是这样跑的 三、流程全链路我把整个流程拆成6个阶段你只要看懂这6步流程引擎基本就通了。① 提交瞬间创建流程实例当用户点击“提交”时系统会做三件事✅ 1. 保存表单数据比如请假天数请假原因附件✅ 2. 创建流程实例流程实例 一次运行中的流程数据库大概会有一条记录id: 1001 status: 审批中 current_node: 开始节点✅ 3. 绑定流程模板 系统会记录这个实例是基于哪个流程模板创建的② 引擎启动定位第一个节点流程不会“自动跑”而是流程引擎被触发它会做一件关键的事找到流程的第一个审批节点例如开始 → 主管审批 那么下一步就是进入“主管审批节点”③ 计算审批人这是流程引擎最核心能力之一谁来审批系统会根据规则计算例如主管审批 发起人的直属领导 实际过程可能是查组织架构找上级领导判断是否多人审批 本质审批人 规则计算结果动态的不是写死的④ 生成待办任务当审批人确定后系统会创建一条待办任务数据库可能是这样任务ID: 5001 处理人: 张三 状态: 待处理 关联流程: 1001于是 张三在「我的待办」里看到这条流程⑤ 审批动作驱动流程流转当审批人点击通过驳回转办 系统就会触发“流转逻辑” 以“通过”为例系统会做1️⃣ 当前节点 → 标记完成主管审批 已完成2️⃣ 查找下一个节点主管审批 → HR审批3️⃣ 再次计算审批人HR审批 → HR负责人4️⃣ 创建新的待办 HR收到任务 这就是流程“自动往下走”的原因⑥ 循环执行直到流程结束系统会不断重复完成节点 → 找下一个节点 → 生成待办直到最后一个节点完成 最终状态流程状态 已结束 四、流程中断 分支是怎么处理的现实流程不会这么简单还会有条件分支驳回并行审批我们简单讲一下原理 条件分支比如金额判断金额 10000 → 走总监审批 否则 → 直接结束 本质根据条件选择不同路径 并行审批多人同时审批A审批 B审批同时进行 本质生成多个待办任务等全部完成再往下走 驳回流程回退当前节点 → 回到历史节点 系统会修改当前节点重新生成待办 五、你以为是“流程”其实是这3个系统在协作很多人以为流程是一个模块其实不是 1. 流程定义系统 存流程图节点、路径 2. 流程实例系统 存每一次运行状态 3. 任务系统待办 控制“谁来干活” 三者关系流程定义 → 创建实例 → 生成任务 → 驱动流转 六、一句话总结全链路 一个流程的本质就是“创建实例 → 计算节点 → 分配任务 → 状态流转”的循环过程 七、升维理解如果你站在架构角度看 流程引擎其实就是一个状态机控制流程一个规则引擎算人、算路径一个任务分发系统待办