JeecgBoot工作流集成:Flowable流程引擎配置与使用
你是否还在为企业级应用中的流程审批开发感到繁琐?JeecgBoot已集成开源工作流引擎Flowable,通过可视化配置即可快速搭建业务流程,大幅减少重复编码工作。本文将详解Flowable在JeecgBoot中的配置方法与实际应用,帮助你轻松掌握流程设计、表单关联与业务流转全流程。
一、Flowable引擎简介
Flowable是一个轻量级业务流程引擎(Business Process Engine),基于BPMN 2.0规范实现,支持流程建模、执行与监控全生命周期管理。JeecgBoot通过深度整合Flowable,实现了"流程设计器配置→表单关联→业务流转"的低代码开发模式,用户只需编写极少Java代码即可完成复杂流程开发。
官方文档:README.md中"集成工作流Flowable"章节提到,平台已实现页面配置流程转向功能,支持通过BPM流程设计器可视化定义流程走向。
二、环境准备与依赖配置
2.1 项目结构说明
JeecgBoot中与Flowable相关的核心模块分布如下:
jeecg-boot/
├── jeecg-boot-base-core/ # 基础核心模块,包含Flowable通用配置
├── jeecg-module-system/ # 系统模块,包含流程管理相关功能
│ └── jeecg-system-biz/ # 业务逻辑层,包含流程服务实现
└── jeecgboot-vue3/ # 前端模块,包含流程设计器组件
└── src/views/sys/ # 系统管理前端页面,含流程设计功能
2.2 依赖引入
Flowable相关依赖已集成在JeecgBoot的Maven配置中,主要包含流程引擎核心包、Spring集成包和工具类:
<!-- 流程引擎核心依赖 -->
<dependency>
<groupId>org.flowable</groupId>
<artifactId>flowable-spring-boot-starter</artifactId>
</dependency>
<!-- 流程设计器依赖 -->
<dependency>
<groupId>org.flowable</groupId>
<artifactId>flowable-ui-modeler-rest</artifactId>
</dependency>
三、流程设计与配置
3.1 在线流程设计器
JeecgBoot提供可视化流程设计器,支持拖拽式绘制流程节点与连线。通过以下路径访问:
系统菜单 → 流程管理 → 流程设计
前端实现代码:jeecgboot-vue3/src/views/sys/flow
设计器主要功能:
- 支持StartEvent(开始事件)、UserTask(用户任务)、ExclusiveGateway(排他网关)等BPMN标准节点
- 支持节点属性配置(如负责人、优先级、表单关联)
- 支持流程变量定义与表达式配置
- 提供流程校验与导出功能
3.2 表单关联配置
流程设计完成后,需为用户任务节点关联表单。JeecgBoot支持三种表单模式:
| 表单类型 | 适用场景 | 配置路径 |
|---|---|---|
| 在线表单 | 简单数据收集 | Online表单设计器创建后直接关联 |
| 编码表单 | 复杂业务逻辑 | 开发自定义表单后在流程节点选择 |
| 外部链接 | 集成第三方系统 | 配置URL地址与参数传递规则 |
表单设计器功能详情:README.md中"低代码能力:表单设计器"章节说明,支持23种表单控件与主子表结构。
四、流程部署与运行
4.1 流程部署
设计完成的流程通过以下步骤部署:
- 在流程设计器中点击"部署"按钮
- 选择部署环境(开发/测试/生产)
- 系统自动生成流程定义ID(格式:流程Key:版本号)
部署成功后,流程定义将存储在ACT_RE_PROCDEF表中,可通过流程管理模块查看所有部署版本。
4.2 发起流程实例
通过前端界面或后端API两种方式发起流程:
前端发起: 在业务模块中点击"发起流程"按钮,选择已部署流程,系统自动生成流程实例并跳转至第一个用户任务表单。
后端API调用:
// 注入流程引擎服务
@Autowired
private RuntimeService runtimeService;
// 发起流程实例
public void startProcess() {
// 流程变量
Map<String, Object> variables = new HashMap<>();
variables.put("applyUserId", "1001");
variables.put("deptId", "201");
// 启动流程实例(processKey为流程设计时定义的标识)
ProcessInstance instance = runtimeService.startProcessInstanceByKey("leaveProcess", variables);
log.info("流程实例启动成功:{}", instance.getId());
}
五、流程权限与业务集成
5.1 任务权限控制
JeecgBoot通过两种方式控制流程任务权限:
- 角色分配:在流程设计时为用户任务节点指定角色,拥有该角色的用户可见任务
- 表达式分配:通过EL表达式动态计算负责人,如:
${assigneeService.findManagerByDeptId(deptId)}其中
assigneeService为自定义Spring Bean,需实现负责人计算逻辑。
5.2 业务数据关联
流程实例需与业务数据关联,推荐通过以下方式实现:
-
在流程变量中存储业务表ID:
variables.put("businessKey", "OA_LEAVE_10001"); // 业务表主键 -
在业务表中存储流程实例ID:
ALTER TABLE oa_leave ADD COLUMN process_instance_id VARCHAR(64); -
通过流程监听器实现业务数据自动更新:
@Component public class LeaveProcessListener implements ExecutionListener { @Override public void notify(DelegateExecution execution) { String processInstanceId = execution.getProcessInstanceId(); String businessKey = execution.getBusinessKey(); // 更新业务表状态 leaveService.updateStatusByBusinessKey(businessKey, "APPROVING"); } }
六、流程监控与管理
6.1 流程监控面板
JeecgBoot提供流程监控功能,可实时查看:
- 运行中流程实例数量
- 待办任务分布统计
- 流程平均耗时分析
- 异常流程告警
监控界面路径:系统管理 → 流程监控
数据来源:Flowable历史表(ACT_HI_PROCINST、ACT_HI_TASKINST)
6.2 流程操作功能
| 功能 | 说明 | 权限要求 |
|---|---|---|
| 流程终止 | 强制结束运行中的流程实例 | 流程管理员 |
| 任务委派 | 将个人任务转交他人处理 | 任务负责人 |
| 流程跳转 | 跳过当前节点直接进入指定节点 | 流程管理员 |
| 历史流程查询 | 查看已结束流程的流转轨迹 | 业务权限用户 |
七、典型应用场景
7.1 请假审批流程
-
流程设计:
- 开始节点 → 申请人填写表单 → 部门经理审批 → 人事归档 → 结束节点
- 分支条件:请假天数>3天需总经理审批
-
核心代码:
// 请假单Service实现类 @Service public class OaLeaveServiceImpl extends ServiceImpl<OaLeaveMapper, OaLeave> implements IOaLeaveService { @Autowired private RuntimeService runtimeService; @Override @Transactional public void submitLeave(OaLeave leave) { // 保存业务数据 this.save(leave); // 发起流程 Map<String, Object> variables = new HashMap<>(); variables.put("applyUserId", SecurityUtils.getCurrentUserId()); variables.put("leaveDays", leave.getLeaveDays()); variables.put("businessKey", leave.getId()); runtimeService.startProcessInstanceByKey("leaveProcess", variables); } } -
效果展示: 流程设计器界面: THE 0TH POSITION OF THE ORIGINAL IMAGE
7.2 报销审批流程
通过子流程复用部门审批逻辑,实现多级别报销审批流程。关键配置:
- 主流程:报销单提交 → 金额判断 → 子流程(部门审批)→ 财务审核
- 子流程:部门经理审批 → 部门总监审批(金额>10000时)
八、常见问题解决
8.1 流程部署失败
排查步骤:
- 检查流程设计是否符合BPMN 2.0规范(设计器右下角有校验按钮)
- 查看数据库连接是否正常(Flowable需独立数据源时配置jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/application.yml)
- 检查数据库表是否自动创建(首次启动会初始化ACT_*表)
8.2 任务负责人为空
解决方案:
- 确认用户任务节点已配置"分配用户"或"分配角色"
- 检查表达式语法是否正确,如:
${assignee}需确保流程变量中存在该参数 - 验证自定义分配服务类是否被Spring容器正确管理
九、总结与展望
JeecgBoot集成Flowable实现了"可视化流程设计+低代码表单配置+灵活业务集成"的闭环,大幅降低BPM系统开发门槛。通过本文介绍的配置方法与最佳实践,开发者可快速构建符合企业需求的流程审批系统。
未来JeecgBoot将进一步增强流程引擎能力,包括AI流程推荐、流程性能分析与自动化优化等功能,持续提升低代码开发体验。
点赞+收藏+关注,获取JeecgBoot更多实战教程!下期预告:《Flowable高级特性:事件驱动与并行网关应用》
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



