【Flowable 7.2 源码深度解析与实战】

Flowable 7.2 源码深度解析与实战

    • [前言 - Flowable 7.2 新特性概览](#前言 - Flowable 7.2 新特性概览)
    • [第1章 环境搭建与项目结构解析](#第1章 环境搭建与项目结构解析)
      • [1.1 源码获取与编译 - 从 GitHub 克隆 Flowable 7.2 源码](#1.1 源码获取与编译 - 从 GitHub 克隆 Flowable 7.2 源码)
      • [1.2 项目模块架构详解 - 核心模块梳理(flowable-engine、flowable-engine-common 等)](#1.2 项目模块架构详解 - 核心模块梳理(flowable-engine、flowable-engine-common 等))
      • [1.3 启动第一个 Flowable 应用 - 最小化配置示例](#1.3 启动第一个 Flowable 应用 - 最小化配置示例)
      • [1.4 源码阅读方法与调试技巧 - 推荐的源码阅读顺序](#1.4 源码阅读方法与调试技巧 - 推荐的源码阅读顺序)
    • [第2章 流程引擎核心架构设计](#第2章 流程引擎核心架构设计)
      • [2.1 ProcessEngine 体系结构 - ProcessEngine 接口设计](#2.1 ProcessEngine 体系结构 - ProcessEngine 接口设计)
      • [2.2 服务层设计(7大核心服务) - RepositoryService](#2.2 服务层设计(7大核心服务) - RepositoryService)
      • [2.3 命令模式与拦截器链 - Command 设计模式应用](#2.3 命令模式与拦截器链 - Command 设计模式应用)
      • [2.4 配置体系深度解析 - ProcessEngineConfiguration 设计](#2.4 配置体系深度解析 - ProcessEngineConfiguration 设计)
    • [第3章 流程部署与解析机制](#第3章 流程部署与解析机制)
      • [3.1 部署流程源码解析 - DeploymentBuilder 使用与实现](#3.1 部署流程源码解析 - DeploymentBuilder 使用与实现)
      • [3.2 BPMN 2.0 解析器 - BpmnParser 设计与实现](#3.2 BPMN 2.0 解析器 - BpmnParser 设计与实现)
      • [3.3 流程定义验证器 - 验证规则体系](#3.3 流程定义验证器 - 验证规则体系)
      • [3.4 流程定义缓存与查询 - 缓存机制实现](#3.4 流程定义缓存与查询 - 缓存机制实现)
    • [第4章 流程实例启动与执行引擎](#第4章 流程实例启动与执行引擎)
      • [4.1 流程实例启动流程 - RuntimeService.startProcessInstance() 源码追踪](#4.1 流程实例启动流程 - RuntimeService.startProcessInstance() 源码追踪)
      • [4.2 Agenda 执行调度器 - Agenda 模式设计原理](#4.2 Agenda 执行调度器 - Agenda 模式设计原理)
      • [4.3 执行上下文与 ExecutionEntity - ExecutionEntity 核心结构](#4.3 执行上下文与 ExecutionEntity - ExecutionEntity 核心结构)
      • [4.4 流程流转核心逻辑 - 节点切换机制](#4.4 流程流转核心逻辑 - 节点切换机制)
      • [4.5 子流程与调用活动 - 子流程实现原理](#4.5 子流程与调用活动 - 子流程实现原理)
    • [第5章 用户任务与人工交互](#第5章 用户任务与人工交互)
      • [5.1 UserTask 实现原理 - UserTaskBehavior 源码解析](#5.1 UserTask 实现原理 - UserTaskBehavior 源码解析)
      • [5.2 任务查询与管理 - TaskQuery 构建器](#5.2 任务查询与管理 - TaskQuery 构建器)
      • [5.3 候选人与候选组机制 - IdentityLink 设计](#5.3 候选人与候选组机制 - IdentityLink 设计)
      • [5.4 任务表单与表单数据 - FormService 实现](#5.4 任务表单与表单数据 - FormService 实现)
      • [5.5 任务委托与委派 - 委托机制源码](#5.5 任务委托与委派 - 委托机制源码)
    • [第6章 变量体系与表达式引擎](#第6章 变量体系与表达式引擎)
      • [6.1 变量类型系统 - VariableType 体系设计](#6.1 变量类型系统 - VariableType 体系设计)
      • [6.2 变量存储与持久化 - VariableService 实现](#6.2 变量存储与持久化 - VariableService 实现)
      • [6.3 表达式引擎(JUEL)集成 - JuelScriptEngine 实现](#6.3 表达式引擎(JUEL)集成 - JuelScriptEngine 实现)
      • [6.4 表达式在流程中的应用 - 网关条件判断](#6.4 表达式在流程中的应用 - 网关条件判断)
      • [6.5 变量监听与事件 - VariableListener 设计](#6.5 变量监听与事件 - VariableListener 设计)
    • [第7章 网关与分支控制](#第7章 网关与分支控制)
      • [7.1 独占网关(Exclusive Gateway) - ExclusiveGatewayActivityBehavior 源码](#7.1 独占网关(Exclusive Gateway) - ExclusiveGatewayActivityBehavior 源码)
      • [7.2 并行网关(Parallel Gateway) - ParallelGatewayActivityBehavior 实现](#7.2 并行网关(Parallel Gateway) - ParallelGatewayActivityBehavior 实现)
      • [7.3 包容网关(Inclusive Gateway) - InclusiveGatewayActivityBehavior 原理](#7.3 包容网关(Inclusive Gateway) - InclusiveGatewayActivityBehavior 原理)
      • [7.4 事件网关(Event Gateway) - EventGatewayActivityBehavior 设计](#7.4 事件网关(Event Gateway) - EventGatewayActivityBehavior 设计)
      • [7.5 网关性能优化 - 网关实现对比](#7.5 网关性能优化 - 网关实现对比)
    • [第8章 异步执行与定时任务](#第8章 异步执行与定时任务)
      • [8.1 异步执行器(AsyncExecutor) - AsyncExecutor 接口设计](#8.1 异步执行器(AsyncExecutor) - AsyncExecutor 接口设计)
      • [8.2 Job 体系设计 - JobEntity 核心结构](#8.2 Job 体系设计 - JobEntity 核心结构)
      • [8.3 定时器(Timer)实现 - TimerEventDefinition 解析](#8.3 定时器(Timer)实现 - TimerEventDefinition 解析)
      • [8.4 异步历史记录 - AsyncHistoryExecutor 设计](#8.4 异步历史记录 - AsyncHistoryExecutor 设计)
      • [8.5 外部任务(External Task) - ExternalTaskService 实现](#8.5 外部任务(External Task) - ExternalTaskService 实现)
    • [第9章 历史数据管理](#第9章 历史数据管理)
      • [9.1 历史级别配置 - HistoryLevel 枚举解析](#9.1 历史级别配置 - HistoryLevel 枚举解析)
      • [9.2 历史实体设计 - HistoricProcessInstance](#9.2 历史实体设计 - HistoricProcessInstance)
      • [9.3 历史事件监听与记录 - HistoryManager 实现](#9.3 历史事件监听与记录 - HistoryManager 实现)
      • [9.4 历史查询 API - HistoryService 查询方法](#9.4 历史查询 API - HistoryService 查询方法)
      • [9.5 历史数据清理 - HistoryCleaningManager](#9.5 历史数据清理 - HistoryCleaningManager)
    • [第10章 持久化层与 MyBatis 集成](#第10章 持久化层与 MyBatis 集成)
      • [10.1 持久化架构设计 - Entity 与 EntityManager 模式](#10.1 持久化架构设计 - Entity 与 EntityManager 模式)
      • [10.2 核心实体与表结构 - Execution 表设计](#10.2 核心实体与表结构 - Execution 表设计)
      • [10.3 MyBatis 映射与 SQL - Mapper XML 解析](#10.3 MyBatis 映射与 SQL - Mapper XML 解析)
      • [10.4 事务管理与并发控制 - 事务上下文(TransactionContext)](#10.4 事务管理与并发控制 - 事务上下文(TransactionContext))
      • [10.5 数据库兼容性 - 多数据库支持实现](#10.5 数据库兼容性 - 多数据库支持实现)
    • [第11章 事件机制与监听器](#第11章 事件机制与监听器)
      • [11.1 Flowable 事件体系 - FlowableEvent 接口](#11.1 Flowable 事件体系 - FlowableEvent 接口)
      • [11.2 事件分发器(EventDispatcher) - EventDispatcher 设计](#11.2 事件分发器(EventDispatcher) - EventDispatcher 设计)
      • [11.3 执行监听器(ExecutionListener) - ExecutionListener 接口](#11.3 执行监听器(ExecutionListener) - ExecutionListener 接口)
      • [11.4 任务监听器(TaskListener) - TaskListener 接口](#11.4 任务监听器(TaskListener) - TaskListener 接口)
      • [11.5 自定义事件与扩展 - 自定义事件定义](#11.5 自定义事件与扩展 - 自定义事件定义)
    • [第12章 Spring 集成与 Spring Boot 自动配置](#第12章 Spring 集成与 Spring Boot 自动配置)
      • [12.1 Spring 集成基础 - SpringProcessEngineConfiguration](#12.1 Spring 集成基础 - SpringProcessEngineConfiguration)
      • [12.2 Spring Boot 自动配置 - FlowableAutoConfiguration 解析](#12.2 Spring Boot 自动配置 - FlowableAutoConfiguration 解析)
      • [12.3 Spring 事务与 Flowable 事务 - 事务传播行为](#12.3 Spring 事务与 Flowable 事务 - 事务传播行为)
      • [12.4 Spring 事件与 Flowable 事件桥接 - SpringApplicationEvent 集成](#12.4 Spring 事件与 Flowable 事件桥接 - SpringApplicationEvent 集成)
      • [12.5 Spring Boot Actuator 集成 - Flowable 端点实现](#12.5 Spring Boot Actuator 集成 - Flowable 端点实现)
    • [第13章 实战:自定义扩展开发](#第13章 实战:自定义扩展开发)
      • [13.1 自定义 ActivityBehavior - ActivityBehavior 接口](#13.1 自定义 ActivityBehavior - ActivityBehavior 接口)
      • [13.2 自定义 BPMN 元素 - BpmnParseHandler 实现](#13.2 自定义 BPMN 元素 - BpmnParseHandler 实现)
      • [13.3 自定义命令与拦截器 - Command 接口实现](#13.3 自定义命令与拦截器 - Command 接口实现)
      • [13.4 自定义持久化 - 自定义 Entity](#13.4 自定义持久化 - 自定义 Entity)
      • [13.5 实战项目:审批流系统 - 需求分析与设计](#13.5 实战项目:审批流系统 - 需求分析与设计)
    • [第14章 性能调优与监控](#第14章 性能调优与监控)
      • [14.1 性能瓶颈分析 - 常见性能问题](#14.1 性能瓶颈分析 - 常见性能问题)
      • [14.2 数据库优化 - 索引优化策略](#14.2 数据库优化 - 索引优化策略)
      • [14.3 缓存策略优化 - 流程定义缓存](#14.3 缓存策略优化 - 流程定义缓存)
      • [14.4 异步执行优化 - 线程池调优](#14.4 异步执行优化 - 线程池调优)
      • [14.5 监控与告警 - JMX 监控](#14.5 监控与告警 - JMX 监控)
    • [第15章 高级特性与生产实践](#第15章 高级特性与生产实践)
      • [15.1 多租户(Multi-Tenancy) - 多租户架构设计](#15.1 多租户(Multi-Tenancy) - 多租户架构设计)
      • [15.2 流程版本与迁移 - ProcessMigrationService](#15.2 流程版本与迁移 - ProcessMigrationService)
      • [15.3 集群部署与高可用 - 集群架构设计](#15.3 集群部署与高可用 - 集群架构设计)
      • [15.4 安全与权限 - 身份认证集成](#15.4 安全与权限 - 身份认证集成)
      • [15.5 生产环境最佳实践 - 部署架构建议](#15.5 生产环境最佳实践 - 部署架构建议)
    • [附录 - Flowable 7.2 完整 API 索引](#附录 - Flowable 7.2 完整 API 索引)
    • [后记 - 学习路径总结](#后记 - 学习路径总结)

前言 - Flowable 7.2 新特性概览

  • 为什么要读 Flowable 源码
  • 本书阅读路线图
  • 前置知识要求

第1章 环境搭建与项目结构解析

1.1 源码获取与编译 - 从 GitHub 克隆 Flowable 7.2 源码

  • Maven 项目结构概览
  • 源码编译与环境配置(JDK 17+)
  • IDEA 项目导入与配置

1.2 项目模块架构详解 - 核心模块梳理(flowable-engine、flowable-engine-common 等)

  • 模块依赖关系分析
  • 核心功能模块职责划分

1.3 启动第一个 Flowable 应用 - 最小化配置示例

  • ProcessEngine 初始化流程
  • 数据库表结构解析

1.4 源码阅读方法与调试技巧 - 推荐的源码阅读顺序

  • 断点调试技巧
  • 日志配置与关键日志解读

第2章 流程引擎核心架构设计

2.1 ProcessEngine 体系结构 - ProcessEngine 接口设计

  • ProcessEngineImpl 实现原理
  • 引擎生命周期管理

2.2 服务层设计(7大核心服务) - RepositoryService

  • RuntimeService
  • TaskService
  • HistoryService
  • IdentityService
  • ManagementService
  • FormService

2.3 命令模式与拦截器链 - Command 设计模式应用

  • CommandExecutor 实现原理
  • 拦截器链源码解析
  • 事务管理机制

2.4 配置体系深度解析 - ProcessEngineConfiguration 设计

  • 配置初始化流程
  • 自定义配置扩展点

第3章 流程部署与解析机制

3.1 部署流程源码解析 - DeploymentBuilder 使用与实现

  • 资源解析与存储
  • 部署版本管理
  • 部署缓存机制

3.2 BPMN 2.0 解析器 - BpmnParser 设计与实现

  • XML 解析与元素映射
  • 流程定义构建过程
  • 自定义元素解析扩展

3.3 流程定义验证器 - 验证规则体系

  • ProcessValidator 源码解析
  • 自定义验证规则

3.4 流程定义缓存与查询 - 缓存机制实现

  • 查询构建器设计
  • 动态更新流程定义

第4章 流程实例启动与执行引擎

4.1 流程实例启动流程 - RuntimeService.startProcessInstance() 源码追踪

  • 流程实例创建过程
  • 执行树构建
  • 变量初始化与传递

4.2 Agenda 执行调度器 - Agenda 模式设计原理

  • FlowableEngineAgenda 实现
  • Operation 执行机制
  • 调试模式下的执行追踪

4.3 执行上下文与 ExecutionEntity - ExecutionEntity 核心结构

  • 执行树结构设计
  • 上下文传递机制
  • 父子执行关系管理

4.4 流程流转核心逻辑 - 节点切换机制

  • 条件表达式计算
  • 序列流选择
  • 并发与同步控制

4.5 子流程与调用活动 - 子流程实现原理

  • CallActivity 调用机制
  • 变量作用域管理

第5章 用户任务与人工交互

5.1 UserTask 实现原理 - UserTaskBehavior 源码解析

  • 任务创建与分配机制
  • 任务监听器(TaskListener)

5.2 任务查询与管理 - TaskQuery 构建器

  • 查询优化与索引设计
  • 任务认领、完成、转办
  • CandidateManager 实现
  • 动态候选人计算

5.4 任务表单与表单数据 - FormService 实现

  • 表单属性管理
  • 动态表单处理

5.5 任务委托与委派 - 委托机制源码

  • 任务转交与回退
  • 多实例任务

第6章 变量体系与表达式引擎

6.1 变量类型系统 - VariableType 体系设计

  • 内置类型详解
  • 自定义变量类型

6.2 变量存储与持久化 - VariableService 实现

  • 变量表结构解析
  • 大对象(LOB)处理
  • 变量版本与历史

6.3 表达式引擎(JUEL)集成 - JuelScriptEngine 实现

  • 表达式解析与执行
  • 变量解析器
  • 函数注册与扩展

6.4 表达式在流程中的应用 - 网关条件判断

  • 任务分配表达式
  • 服务任务参数
  • 表达式安全机制

6.5 变量监听与事件 - VariableListener 设计

  • 事件触发机制
  • 变量变更通知

第7章 网关与分支控制

7.1 独占网关(Exclusive Gateway) - ExclusiveGatewayActivityBehavior 源码

  • 条件评估逻辑
  • 默认分支处理

7.2 并行网关(Parallel Gateway) - ParallelGatewayActivityBehavior 实现

  • 并行分支同步机制
  • 计数与等待逻辑

7.3 包容网关(Inclusive Gateway) - InclusiveGatewayActivityBehavior 原理

  • 多条件匹配机制
  • 复杂场景处理

7.4 事件网关(Event Gateway) - EventGatewayActivityBehavior 设计

  • 事件订阅与触发
  • 竞争机制实现

7.5 网关性能优化 - 网关实现对比

  • 性能瓶颈分析
  • 优化建议与实践

第8章 异步执行与定时任务

8.1 异步执行器(AsyncExecutor) - AsyncExecutor 接口设计

  • DefaultAsyncJobExecutor 实现
  • 线程池配置与管理
  • 作业队列机制

8.2 Job 体系设计 - JobEntity 核心结构

  • Job 类型分类
  • JobHandler 机制
  • 重试策略实现

8.3 定时器(Timer)实现 - TimerEventDefinition 解析

  • TimerJobHandler 源码
  • 时间表达式解析
  • 日历与业务时间

8.4 异步历史记录 - AsyncHistoryExecutor 设计

  • 历史数据异步写入
  • 批量处理优化
  • 历史清理机制

8.5 外部任务(External Task) - ExternalTaskService 实现

  • 外部工作者集成
  • 锁机制与超时处理

第9章 历史数据管理

9.1 历史级别配置 - HistoryLevel 枚举解析

  • 各级别数据收集策略
  • 动态级别切换

9.2 历史实体设计 - HistoricProcessInstance

  • HistoricActivityInstance
  • HistoricVariableInstance
  • HistoricDetail 体系

9.3 历史事件监听与记录 - HistoryManager 实现

  • 事件监听机制
  • 历史数据写入流程

9.4 历史查询 API - HistoryService 查询方法

  • 查询优化与索引
  • 分页与排序

9.5 历史数据清理 - HistoryCleaningManager

  • 清理策略配置
  • 定时清理实现

第10章 持久化层与 MyBatis 集成

10.1 持久化架构设计 - Entity 与 EntityManager 模式

  • DataManager 抽象层
  • MyBatis 映射配置

10.2 核心实体与表结构 - Execution 表设计

  • Task 表设计
  • Variable 表设计
  • History 表设计

10.3 MyBatis 映射与 SQL - Mapper XML 解析

  • 动态 SQL 生成
  • 查询优化技巧

10.4 事务管理与并发控制 - 事务上下文(TransactionContext)

  • 乐观锁实现
  • 死锁预防机制
  • 事务监听器

10.5 数据库兼容性 - 多数据库支持实现

  • 方言机制
  • 数据库特有优化

第11章 事件机制与监听器

11.1 Flowable 事件体系 - FlowableEvent 接口

  • 事件类型枚举
  • 事件对象结构

11.2 事件分发器(EventDispatcher) - EventDispatcher 设计

  • 事件注册与监听
  • 同步与异步事件
  • 事件过滤机制

11.3 执行监听器(ExecutionListener) - ExecutionListener 接口

  • 监听器注册方式
  • 执行上下文获取
  • 常见应用场景

11.4 任务监听器(TaskListener) - TaskListener 接口

  • 任务事件类型
  • 任务属性修改
  • 动态分配实现

11.5 自定义事件与扩展 - 自定义事件定义

  • 事件发布与订阅
  • 事件总线集成

第12章 Spring 集成与 Spring Boot 自动配置

12.1 Spring 集成基础 - SpringProcessEngineConfiguration

  • 事务管理器集成
  • 表达式与 Spring Bean
  • 服务自动装配

12.2 Spring Boot 自动配置 - FlowableAutoConfiguration 解析

  • 配置属性绑定
  • 条件化自动装配
  • Starter 依赖管理

12.3 Spring 事务与 Flowable 事务 - 事务传播行为

  • 事务同步机制
  • 异常处理与回滚

12.4 Spring 事件与 Flowable 事件桥接 - SpringApplicationEvent 集成

  • 事件桥接实现
  • 监听器自动注册

12.5 Spring Boot Actuator 集成 - Flowable 端点实现

  • 健康检查
  • 指标收集
  • 自定义监控扩展

第13章 实战:自定义扩展开发

13.1 自定义 ActivityBehavior - ActivityBehavior 接口

  • 自定义任务类型实现
  • 行为注册与配置
  • 单元测试编写

13.2 自定义 BPMN 元素 - BpmnParseHandler 实现

  • XML 元素解析
  • 图形化扩展
  • 部署与验证

13.3 自定义命令与拦截器 - Command 接口实现

  • 自定义拦截器
  • 命令执行器扩展
  • 权限控制示例

13.4 自定义持久化 - 自定义 Entity

  • EntityManager 实现
  • MyBatis Mapper 扩展
  • 数据迁移

13.5 实战项目:审批流系统 - 需求分析与设计

  • 核心功能实现
  • 性能优化
  • 部署与运维

第14章 性能调优与监控

14.1 性能瓶颈分析 - 常见性能问题

  • Profiling 工具使用
  • 热点代码定位

14.2 数据库优化 - 索引优化策略

  • SQL 调优
  • 连接池配置
  • 批量处理优化

14.3 缓存策略优化 - 流程定义缓存

  • 二级缓存配置
  • 缓存失效策略
  • 分布式缓存集成

14.4 异步执行优化 - 线程池调优

  • 队列配置
  • 批量作业处理
  • 失败重试策略

14.5 监控与告警 - JMX 监控

  • Micrometer 指标
  • Prometheus + Grafana
  • 告警规则配置

第15章 高级特性与生产实践

15.1 多租户(Multi-Tenancy) - 多租户架构设计

  • 租户隔离机制
  • 共享与隔离策略
  • 数据迁移方案

15.2 流程版本与迁移 - ProcessMigrationService

  • 运行中流程迁移
  • 数据兼容性处理
  • 回滚策略

15.3 集群部署与高可用 - 集群架构设计

  • 作业执行协调
  • 缓存一致性
  • 故障转移机制

15.4 安全与权限 - 身份认证集成

  • 权限控制实现
  • 数据脱敏
  • 审计日志

15.5 生产环境最佳实践 - 部署架构建议

  • 配置参数调优
  • 运维监控方案
  • 常见问题排查

附录 - Flowable 7.2 完整 API 索引

  • 数据库表结构完整文档
  • 配置属性完整列表
  • 核心类速查表
  • 参考资料与扩展阅读

后记 - 学习路径总结

  • 社区贡献指南
  • Flowable 未来展望
  • 读者交流与反馈
相关推荐
norq juox1 小时前
Spring 中集成Hibernate
java·spring·hibernate
咸鱼2.01 小时前
【java入门到放弃】Zookeeper
java·zookeeper
雨辰AI1 小时前
从 MySQL 迁移至人大金仓 V9 完整改造指南|分页 / 函数 / 语法兼容全部解决
java·开发语言·数据库·后端·mysql·政务
阿维的博客日记2 小时前
介绍一下Redisson的看门狗机制
java·redis·缓存
大G的笔记本2 小时前
为什么接口中的变量默认是 public static final(常量)
java
java1234_小锋2 小时前
Spring AI 2.0 开发Java Agent智能体 - stream()方法Flux流式响应输出
java·人工智能·spring
庞轩px2 小时前
第四篇:多级缓存架构——Caffeine + Redis + MySQL 三级协同
java·redis·mysql·读写分离·caffeine·本地缓存
rKWP8gKv72 小时前
单例模式在Java中的7种实现:从懒汉式到静态内部类
java·开发语言·单例模式
杨运交2 小时前
[007][租户模块]基于 TransmittableThreadLocal 与 TaskDecorator 的租户上下文传递设计
后端