Activiti 工作流引擎从入门到精通实战课程
课程简介
本课程旨在帮助学员全面、系统地学习和掌握 Activiti 工作流引擎的核心概念、API 使用、高级特性以及在实际项目中的最佳实践,通过理论讲解、代码演示和项目实战,学员将具备独立设计、开发、部署和管理工作流应用的能力,提升企业级应用的开发效率与业务流程的灵活性。
课程目标
- 理解 工作流和 BPMN 2.0 的核心概念。
- 掌握 Activiti 的核心架构、数据表结构和核心 API。
- 熟练使用 Activiti Designer (或 Flowable) 可视化流程设计器。
- 能够独立开发 流程定义、部署、启动、查询、处理任务、流程实例管理等全生命周期代码。
- 掌握 流程变量、任务分配、排他网关、并行网关、用户任务、服务任务等关键节点。
- 了解并实践 Activiti 的高级特性,如监听器、表达式、历史数据管理等。
- 具备 将 Activiti 集成到 Spring Boot / Spring MVC 项目中的能力。
- 理解 工作流引擎的性能、监控和常见问题排查方法。
课程大纲
第一部分:基础入门与环境搭建
- 工作流与 Activiti 介绍
- 什么是工作流?为什么需要工作流引擎?
- 主流工作流引擎对比:Activiti, Flowable, Camunda。
- Activiti 的历史、特点、版本选择与社区生态。
- Activiti 7 的重大变革:与 Spring Boot 的深度集成。
- 开发环境搭建
- 软件准备:JDK (1.8+), Maven, MySQL (5.7+), IDE (IntelliJ IDEA/Eclipse)。
- Activiti 项目创建:使用 Maven 创建标准 Java 项目。
- 数据库准备:创建 Activiti 专用的数据库。
- 核心 JAR 包引入:手动引入 Activiti 核心依赖。
- 验证安装:编写第一个 "Hello World" 程序,验证数据库表是否生成。
- Activiti 核心组件与架构
- 核心服务 API:
ProcessEngine,RepositoryService,RuntimeService,TaskService,HistoryService等。 - Activiti 架构图解:深入理解各服务的作用和交互关系。
- 数据库表结构详解:23 张核心表的作用(如
act_re_*,act_ru_*,act_hi_*)。 - 流程引擎的创建与关闭。
- 核心服务 API:
第二部分:核心概念与流程定义
- BPMN 2.0 基础
- 什么是 BPMN 2.0?
- 基本元素:
Process(流程),Start Event(开始事件),End Event(结束事件),Task(任务),Sequence Flow(顺序流)。 - 使用流程设计器:安装并熟悉 Activiti Designer / Flowable 插件。
- 实战:在流程设计器中绘制一个简单的 "请假申请" 流程,并导出为
.bpmn20.xml文件。
- 流程定义的部署与启动
RepositoryService:管理流程定义。- 部署流程定义:使用
DeploymentBuilder从 classpath 或 zip 文件部署。 - 查询流程定义:按 key, version 等条件查询。
RuntimeService:启动流程实例。- 实战:通过 Java 代码部署上一步绘制的请假流程,并启动一个流程实例。
- 数据库表变化观察:
act_re_deployment,act_re_procdef,act_ru_execution表的变化。
第三部分:流程任务与执行
- 用户任务与任务查询
TaskService:管理任务。- 查询任务:
taskQueryAPI,按assignee(办理人),candidateUser(候选人),processDefinitionKey等条件查询。 - 任务分配:固定分配 vs. 动态分配(表达式)。
- 实战:查询并查看启动的流程实例有哪些待办任务。
- 任务的生命周期
- 认领任务:
taskService.claim(taskId, userId)。 - 完成任务:
taskService.complete(taskId)。 - 转办任务:
taskService.setAssignee(taskId, newUserId)。 - 委派任务:
taskService.delegateTask(taskId, newUserId)。 - 实战:模拟员工 "张三" 认领并完成请假申请任务,观察流程推进和数据库表(
act_ru_task)的变化。
- 认领任务:
- 流程变量
- 什么是流程变量?其作用域(流程实例级、任务级、全局)。
- 设置变量:
setVariable,setVariables。 - 获取变量:
getVariable,getVariables。 - 变量类型:支持 Java 基本类型、POJO、JSON 等。
- 实战:在启动流程时传入申请人、请假天数等变量,在完成任务时根据天数判断是否需要审批。
第四部分:流程网关与分支
- 排他网关
- 概念:基于条件表达式的“互斥”分支,一次只走一条路径。
- 条件设置:在 Sequence Flow 上设置
conditionExpression。 - 实战:在请假流程中加入“根据请假天数判断”的排他网关(天数>3天需要经理审批,否则直接结束)。
- 并行网关
- 概念:实现“并行”或“汇聚”效果。
- 分支:一条路径进入,多条路径同时执行。
- 汇聚:所有分支都到达后,流程继续向下。
- 实战:设计一个“并行审批”流程,申请同时提交给部门经理和财务经理,两人都审批通过后流程才结束。
- 模块十一:其他网关
- 包容网关:满足条件的路径都会执行。
- 事件网关:基于事件触发分支。
第五部分:高级特性与实战
- 模块十二:服务任务
- 概念:在流程中执行 Java 逻辑。
- 实现方式:实现
JavaDelegate接口。 - 表达式:使用 调用 Spring Bean 的方法。
- 实战:在请假流程结束时,通过服务任务自动发送一封邮件通知申请人。
- 模块十三:监听器
- 概念:在流程生命周期特定节点(如流程开始/结束、任务创建/完成)执行自定义逻辑。
- 类型:
ExecutionListener,TaskListener,DelegateExpression。 - 实战:为任务完成事件添加监听器,在控制台打印日志。
- 模块十四:Spring Boot 集成
- 使用
Activiti Spring Boot Starter:简化配置,自动配置。 - 配置文件:
application.yml中配置数据库、自动部署等。 - 获取
Service:通过@Autowired直接注入RuntimeService,TaskService等。 - 实战:将之前的请假流程项目重构为 Spring Boot 项目。
- 使用
- 模块十五:历史数据与查询
HistoryService:查询历史流程实例、历史任务、历史活动等。- 配置历史级别:
ACTIVITY(推荐),AUDIT,NONE。 - 实战:查询一个已结束流程的完整审批轨迹。
- 模块十六:流程图与动态表单
- 生成流程图:使用
RepositoryService的getProcessDiagram(...)生成 PNG 流程图。 - 动态表单:在流程中动态收集信息(使用
startFormData和taskFormData)。
- 生成流程图:使用
第六部分:项目实战与进阶
- 模块十七:综合项目实战 - “办公自动化系统”
- 需求分析:实现请假、报销、采购等多个审批流程。

版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。