SH

Soloharness

概念 · 辨析 · Agent

← 返回概念辨析

Concept Contrast Fable

工作流和工作流引擎

工作流是一套业务步骤的定义——先审批再付款再发货。工作流引擎是执行这套定义的软件——它理解步骤之间的依赖、管理状态流转、处理超时和异常。你可以用白板画出完美的工作流,但如果没有引擎把它跑起来,画在纸上的箭头不会自己动。很多人把画完工作流当成系统已经上线,实际上画完和跑起来之间还隔着一个完整的工程实现。

寓言

乐谱和自动演奏钢琴

音乐学院的作曲系教授老金花半年写了一部钢琴组曲,谱面精美,和声编排复杂,速度标记精确到每一小节。系里把这套谱子印成教材,发给全国二十所音乐学院的钢琴专业学生,让每人弹一遍录像回传。

三个月后,二十份录像传回来。老金一一看完,发现没有一份弹得跟谱面完全一致。有的人速度转换处慢了半拍,有的人在重复段落里忘了做强弱变化,有的人把踏板踩在了不对的地方。同样的谱子,二十个人弹出二十种效果。

老金跟工学院的教授老温吐槽:谱子写得这么清楚,为什么弹出来的效果差别这么大。老温说:因为你的谱子是一套指令,不是一台机器。指令告诉人该做什么,但没有保证他一定做得到、做得对、做得一样。你需要一个音乐盒。

老温带老金参观了他的实验室:一架自动演奏钢琴。老金把谱子转换成数字格式输进去,钢琴自己弹,每一次都完全相同。速度切换精准,强弱变化一致,踏板时机分毫不差。老金听完自己作品的自动演奏版本,沉默了很久——他第一次听到自己的谱子被毫厘不差地执行出来是什么效果。

老金问老温:这机器和普通钢琴有什么区别。老温说:普通钢琴只提供发声,怎么发声靠人。自动演奏钢琴多了三样东西:第一,指令解析器——把谱面符号转成执行动作。第二,状态管理器——知道现在弹到第几小节、下一拍是什么。第三,异常处理器——如果机械手指卡住了,它知道跳过还是重试。这三样东西合在一起,叫执行引擎。

老金回去以后在教材前言里加了一句话:乐谱定义音乐应该是什么样的,演奏引擎保证音乐实际弹出这个样。学谱子教你怎么设计流程,学引擎教你怎么把流程变成确定的结果。两门课以前被当成同一门课教,从这一届起拆成两门。

有学生问老金:如果我自己会弹钢琴,还需要自动演奏吗。老金说:你一个人弹,每次可以弹得不一样——这叫人工执行。你要让二十个人在同一时间、不同地点、用同一套标准执行——这叫系统执行。图谱可以复印,执行能力复印不了。

老温后来把自动演奏钢琴的技术原理整理成论文,论文的标题是:《从定义的精准到执行的确定》。摘要里写:很多系统失败,根子在于把「设计正确」和「执行正确」当成了同一件事。设计正确靠人才,执行正确靠引擎。

工作流

对一组业务步骤及其顺序、条件和依赖关系的抽象定义。它是「做什么、按什么顺序做」的描述,不负责执行。

工作流引擎

解析工作流定义、管理状态流转、调度任务执行、处理异常和超时的软件系统。它是「怎么保证按定义跑、跑错了怎么处理」的执行层。

故事对应

  • 老金的组曲谱子:工作流——对步骤和顺序的精确定义。
  • 自动演奏钢琴:工作流引擎——保证定义被精确执行的软件系统。
  • 同一份谱子二十种效果:缺少引擎时,工作流定义无法保证执行一致性。
  • 指令解析、状态管理、异常处理:工作流引擎的三个核心能力。
  • 拆成两门课:设计和执行是两个独立的工程问题,需要分开对待。

落到项目里

画工作流时同步考虑用什么引擎来执行。如果没有引擎选型,画出来的流程只是一张纸。选引擎时重点看三样:状态持久化能力——能不能在步骤之间可靠保存上下文,异常处理机制——超时、重试、补偿、人工介入有没有覆盖,以及可观测性——每一步的执行状态、耗时和失败原因能不能追溯。引擎选错,再精妙的工作流设计也跑不出确定性。