知识卡片

流程解决方案是流程模型加胶水代码,工作流引擎不存储业务实体

普通读书笔记卡

内容

流程模型只是流程自动化的一部分——真正跑起来还需要额外的逻辑:通信(调用REST接口或发送AMQP消息)、数据处理和转换、决定流程该走哪条路径。核心工作流引擎不负责这些事,虽然多数厂商会提供一些开箱即用的便利功能,但这些便利功能和[[低代码的局限性为什么它无法替代软件开发]]之间只有一条细线——作者的立场是这些逻辑最好都由开发者用普通编程语言实现:与其用工作流引擎自带的连接器(connector)做HTTP调用,不如直接用Java/C#/NodeJS写。这些代码在逻辑上属于自动化流程的一部分,所以流程模型、胶水代码及其他相关组件共同构成一个”流程解决方案”——技术上可能是一个用Java+Maven、.NET Core或NodeJS写的单体项目,也可能是一堆serverless函数逻辑上捆绑而成。有一点容易被忽视:工作流引擎不负责存储业务实体,这些数据该由应用程序自己存储,工作流引擎通常只是引用它们——虽然技术上引擎能把数据和每个流程实例一起存起来,但这种能力的正确用法应该仅限于保留引用(比如存一个业务对象的ID),而不是把完整的业务数据塞进流程实例状态里。

参考来源

- 位置:《流程自动化实战:系统架构和软件开发视角》第2章《工作流引擎和流程解决方案》"2.2 流程解决方案"(源文件:_epub-src/EPUB/xhtml/Section0001_0005.xhtml) - 结论依据:原文说明通信/数据处理/路径决策这类逻辑核心引擎不负责、主张用普通编程语言而非引擎自带connector实现,定义流程模型+胶水代码+相关组件构成流程解决方案,并明确工作流引擎不该存储业务实体、只该保留引用,直接支撑本卡片结论。 - 原始内容:与其使用工作流引擎自带的连接器(connector)来实现HTTP调用,不如用Java、C#、NodeJS等编程语言来实现……请注意,工作流引擎不负责存储业务实体……这种能力的使用方式应仅限于保留引用(ID)。