知识卡片
聚合消息模式:用工作流引擎实现有状态聚合器
内容
流程模型除了处理单次请求/响应,还能表达更复杂的消息交换模式,比如Gregor Hohpe和Bobby Woolf在《Enterprise Integration Patterns》中描述的聚合器(aggregator):用一个有状态的过滤器收集并存储多条单独的消息,直到收到完整的一组相关消息,再把从这些单条消息中提炼出来的结果统一发布出去——”有状态”这个关键词直接暗示了工作流引擎正是实现这类模式的合适载体,因为工作流引擎天然提供持久化状态和简单的超时处理这两个聚合器所需的核心能力。实现方式不局限于构建一个通用的聚合器组件,更常见的场景是在某个具体业务流程内部,只需要收集几条特定消息就能继续往下走(比如前面章节提到的”同时等待信用检查和地址检查两个结果”)。使用聚合模式时需要特别注意的一点是:为了避免流程实例恰好在正确的时间点没有做好接收准备(正是[[BPMN随时准备接收陷阱与消息缓冲机制真实案例]]描述的那类问题),可能需要引擎提供消息缓冲能力才能安全地执行这类模型;如果所选工作流引擎不支持该特性,就需要另外找变通方案来规避这个时序陷阱。
参考来源
- 位置:《流程自动化实战:系统架构和软件开发视角》第9章《工作流引擎与集成挑战》"9.1.4 聚合消息"(源文件:_epub-src/EPUB/xhtml/Section0001_0013.xhtml)
- 结论依据:原文引用Enterprise Integration Patterns对聚合器的定义(有状态过滤器收集消息直到完整集合再发布),说明工作流引擎的持久化状态和超时处理能力正好实现该模式,并提醒需要消息缓冲能力来规避时序陷阱,直接支撑本卡片结论。
- 原始内容:使用一个有状态的过滤器(聚合器)来收集和存储单条消息,直到收到完整的相关消息集。然后,聚合器会发布一条从单个消息中提炼出来的消息……需要记住一点,为了避免流程实例在正确的时间点上没有做好接收准备,你可能需要消息缓冲来安全地执行这些模型。