首页
/ Flowable引擎CMMN模块架构深度解析

Flowable引擎CMMN模块架构深度解析

2026-02-04 04:25:44作者:董灵辛Dennis

概述

Flowable引擎的CMMN模块是一个基于CMMN(Case Management Model and Notation)规范的案例管理引擎。作为Flowable引擎生态系统的重要组成部分,它采用了与其他引擎(如BPMN引擎)相似的设计理念,但在执行机制上有着显著差异。本文将深入剖析CMMN引擎的架构设计、核心组件及其工作原理。

整体架构

CMMN引擎采用分层架构设计,主要分为以下几个层次:

  1. 服务层:提供面向用户的API服务
  2. 命令执行层:处理命令拦截和执行
  3. 议程层:管理操作执行顺序
  4. 持久层:负责数据存储和检索

CMMN架构图

核心组件

1. 引擎配置与实例化

CMMN引擎通过CmmnEngineConfiguration进行配置,可以通过配置文件或编程方式创建。配置完成后,实例化CmmnEngine对象,这是使用CMMN引擎的入口点。

2. 服务接口

CMMN引擎提供以下核心服务接口:

  • CmmnRepositoryService:负责案例定义的部署和管理
  • CmmnRuntimeService:处理案例实例的运行时操作
  • CmmnTaskService:管理人工任务
  • CmmnHistoryService:提供历史数据查询
  • CmmnManagementService:引擎管理和维护

这些服务的设计与其他Flowable引擎保持一致性,降低了学习成本。

3. 共享服务

CMMN引擎与其他引擎共享以下基础服务:

  • 任务服务:统一管理所有引擎产生的人工任务
  • 变量服务:处理变量存储和访问
  • 身份服务:管理用户和组信息
  • 作业服务:处理定时和异步任务

这种共享架构带来了两个主要优势:

  1. 跨引擎操作的事务一致性
  2. 资源共享,减少重复实现

执行流程

API调用流程

  1. API调用:用户通过服务接口发起操作
  2. 命令转换:API方法转换为Command对象
  3. 命令执行CommandExecutor处理命令,经过拦截器链
  4. 议程规划:命令生成CmmnOperation并加入CmmnEngineAgenda
  5. 操作执行:从议程中取出并执行操作,可能产生新操作
  6. 持久化:通过实体管理器进行数据持久化

CMMN引擎特性

1. 数据驱动执行

与BPMN引擎的"流程驱动"不同,CMMN引擎采用"数据驱动"的执行模式。数据变化会触发EvaluateCriteriaOperation,评估案例中各个计划项的状态变化。引擎会优化这些评估,避免重复或无用的计算。

2. 计划项实例(Plan Item Instance)

这是CMMN引擎的核心概念,表示案例中当前"活跃"的计划项及其状态。CMMN为计划项定义了严格的生命周期状态,这些状态体现在:

  • CmmnRuntimeService的方法中
  • 查询API的设计中
  • PlanItemInstance对象的字段中

3. 议程机制

CmmnEngineAgenda管理操作的执行顺序,采用"计划-执行"模式:

  1. 操作被规划到议程中
  2. 引擎从议程中取出操作执行
  3. 操作执行可能产生新操作并加入议程
  4. 重复直到议程为空

调试与日志

要深入了解议程和操作的执行细节,可以启用调试日志:

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引擎的对比

  1. 执行模式

    • BPMN:流程驱动,按流程定义顺序执行
    • CMMN:数据驱动,响应数据变化执行
  2. 状态管理

    • BPMN:相对简单的状态管理
    • CMMN:严格的计划项生命周期状态
  3. 触发机制

    • BPMN:主要由流程节点触发
    • CMMN:主要由数据变化和条件评估触发

最佳实践

  1. 合理设计案例模型:充分利用CMMN的事件响应特性
  2. 监控议程操作:通过日志分析引擎行为
  3. 共享服务利用:统一管理跨引擎的任务和变量
  4. 性能优化:注意避免频繁的条件评估导致性能问题

总结

Flowable的CMMN引擎通过其独特的架构设计,实现了对CMMN规范的完整支持。理解其数据驱动的执行机制、议程系统和计划项生命周期,对于有效使用该引擎至关重要。与BPMN引擎的协同工作能力使其成为复杂业务流程和案例管理场景的理想选择。

登录后查看全文
热门项目推荐
相关项目推荐