Flowable引擎CMMN模块架构深度解析
概述
Flowable引擎的CMMN模块是一个基于CMMN(Case Management Model and Notation)规范的案例管理引擎。作为Flowable引擎生态系统的重要组成部分,它采用了与其他引擎(如BPMN引擎)相似的设计理念,但在执行机制上有着显著差异。本文将深入剖析CMMN引擎的架构设计、核心组件及其工作原理。
整体架构
CMMN引擎采用分层架构设计,主要分为以下几个层次:
- 服务层:提供面向用户的API服务
- 命令执行层:处理命令拦截和执行
- 议程层:管理操作执行顺序
- 持久层:负责数据存储和检索

核心组件
1. 引擎配置与实例化
CMMN引擎通过CmmnEngineConfiguration进行配置,可以通过配置文件或编程方式创建。配置完成后,实例化CmmnEngine对象,这是使用CMMN引擎的入口点。
2. 服务接口
CMMN引擎提供以下核心服务接口:
- CmmnRepositoryService:负责案例定义的部署和管理
- CmmnRuntimeService:处理案例实例的运行时操作
- CmmnTaskService:管理人工任务
- CmmnHistoryService:提供历史数据查询
- CmmnManagementService:引擎管理和维护
这些服务的设计与其他Flowable引擎保持一致性,降低了学习成本。
3. 共享服务
CMMN引擎与其他引擎共享以下基础服务:
- 任务服务:统一管理所有引擎产生的人工任务
- 变量服务:处理变量存储和访问
- 身份服务:管理用户和组信息
- 作业服务:处理定时和异步任务
这种共享架构带来了两个主要优势:
- 跨引擎操作的事务一致性
- 资源共享,减少重复实现
执行流程

- API调用:用户通过服务接口发起操作
- 命令转换:API方法转换为
Command对象 - 命令执行:
CommandExecutor处理命令,经过拦截器链 - 议程规划:命令生成
CmmnOperation并加入CmmnEngineAgenda - 操作执行:从议程中取出并执行操作,可能产生新操作
- 持久化:通过实体管理器进行数据持久化
CMMN引擎特性
1. 数据驱动执行
与BPMN引擎的"流程驱动"不同,CMMN引擎采用"数据驱动"的执行模式。数据变化会触发EvaluateCriteriaOperation,评估案例中各个计划项的状态变化。引擎会优化这些评估,避免重复或无用的计算。
2. 计划项实例(Plan Item Instance)
这是CMMN引擎的核心概念,表示案例中当前"活跃"的计划项及其状态。CMMN为计划项定义了严格的生命周期状态,这些状态体现在:
CmmnRuntimeService的方法中- 查询API的设计中
PlanItemInstance对象的字段中
3. 议程机制
CmmnEngineAgenda管理操作的执行顺序,采用"计划-执行"模式:
- 操作被规划到议程中
- 引擎从议程中取出操作执行
- 操作执行可能产生新操作并加入议程
- 重复直到议程为空
调试与日志
要深入了解议程和操作的执行细节,可以启用调试日志:
log4j.logger.org.flowable.cmmn.engine.impl.agenda=DEBUG
日志会显示操作的规划和执行顺序,例如:
Planned [Init Plan Model] initializing plan model for case instance...
Planned [Change PlanItem state] Task A, new state: [available]...
Planned [Evaluate Criteria] case instance...
Planned [Activate PlanItem] Task A...
这些日志清晰地展示了计划项的状态变迁和条件评估过程。
与BPMN引擎的对比
-
执行模式:
- BPMN:流程驱动,按流程定义顺序执行
- CMMN:数据驱动,响应数据变化执行
-
状态管理:
- BPMN:相对简单的状态管理
- CMMN:严格的计划项生命周期状态
-
触发机制:
- BPMN:主要由流程节点触发
- CMMN:主要由数据变化和条件评估触发
最佳实践
- 合理设计案例模型:充分利用CMMN的事件响应特性
- 监控议程操作:通过日志分析引擎行为
- 共享服务利用:统一管理跨引擎的任务和变量
- 性能优化:注意避免频繁的条件评估导致性能问题
总结
Flowable的CMMN引擎通过其独特的架构设计,实现了对CMMN规范的完整支持。理解其数据驱动的执行机制、议程系统和计划项生命周期,对于有效使用该引擎至关重要。与BPMN引擎的协同工作能力使其成为复杂业务流程和案例管理场景的理想选择。
Kimi-K2.5Kimi K2.5 是一款开源的原生多模态智能体模型,它在 Kimi-K2-Base 的基础上,通过对约 15 万亿混合视觉和文本 tokens 进行持续预训练构建而成。该模型将视觉与语言理解、高级智能体能力、即时模式与思考模式,以及对话式与智能体范式无缝融合。Python00- QQwen3-Coder-Next2026年2月4日,正式发布的Qwen3-Coder-Next,一款专为编码智能体和本地开发场景设计的开源语言模型。Python00
xw-cli实现国产算力大模型零门槛部署,一键跑通 Qwen、GLM-4.7、Minimax-2.1、DeepSeek-OCR 等模型Go06
PaddleOCR-VL-1.5PaddleOCR-VL-1.5 是 PaddleOCR-VL 的新一代进阶模型,在 OmniDocBench v1.5 上实现了 94.5% 的全新 state-of-the-art 准确率。 为了严格评估模型在真实物理畸变下的鲁棒性——包括扫描伪影、倾斜、扭曲、屏幕拍摄和光照变化——我们提出了 Real5-OmniDocBench 基准测试集。实验结果表明,该增强模型在新构建的基准测试集上达到了 SOTA 性能。此外,我们通过整合印章识别和文本检测识别(text spotting)任务扩展了模型的能力,同时保持 0.9B 的超紧凑 VLM 规模,具备高效率特性。Python00
KuiklyUI基于KMP技术的高性能、全平台开发框架,具备统一代码库、极致易用性和动态灵活性。 Provide a high-performance, full-platform development framework with unified codebase, ultimate ease of use, and dynamic flexibility. 注意:本仓库为Github仓库镜像,PR或Issue请移步至Github发起,感谢支持!Kotlin08
VLOOKVLOOK™ 是优雅好用的 Typora/Markdown 主题包和增强插件。 VLOOK™ is an elegant and practical THEME PACKAGE × ENHANCEMENT PLUGIN for Typora/Markdown.Less00