知识卡片
纯文本流程建模方案的表达力局限与"代码到图形"的过渡策略
内容
除了BPMN这类图形化模型,流程也可以用纯文本表达,常见有两种做法。一是用JSON/YAML定义流程模型(如Netflix Conductor的例子):文件里任务定义的先后顺序天然定义了执行顺序,若要表达非线性顺序则需要显式的转换、通常靠引用元素ID实现,实际上这和BPMN背后XML序列化格式的复杂度并没有本质区别;这种方式最大的问题是缺少建模工具支持,一旦要表达循环或并行路径,纯JSON文件很难写清楚。二是直接用代码表达流程模型(如Spring State Machines):好处是能在IDE里直接编辑、编译器能做一些静态检查,但同样很难表达不按线性顺序执行的复杂流程(比如”收信用卡款的同时寄出发票”这种并行场景)。简而言之,除了简单模型外,其余复杂流程都很难用纯文本清晰表达。一个务实的折中路径是:像Camunda这类工具支持先用代码写一个简单的流程模型,随着复杂度上升再切换到图形化建模,甚至能让工作流引擎从代码自动生成带自动布局的BPMN XML文件——这也是一种很好的教学/演示手段:一开始用代码定义流程能让观众直观看到”这些建模工具背后并没有隐藏的魔法”,比直接甩一份XML文件更容易上手理解。
参考来源
- 位置:《流程自动化实战:系统架构和软件开发视角》第5章《选择工作流引擎和BPMN》"5.2.3 纯文本流程建模方案"(源文件:_epub-src/EPUB/xhtml/Section0001_0008.xhtml)
- 结论依据:原文说明JSON/YAML定义流程的顺序依赖与转换机制、代码定义流程模型的IDE优势与并行表达困难,并给出Camunda支持代码先行、后续切换到自动生成图形化BPMN的具体过渡路径,直接支撑本卡片结论。
- 原始内容:在JSON文件中,任务定义的顺序也定义了流程中任务的顺序……包括Camunda在内的一些工具能让你先编写代码表达模型然后再生成BPMN XML文件。这能让你在后面流程变得更加复杂时切换到图形化建模。