JeecgBoot工作流集成:Flowable流程引擎配置与使用

JeecgBoot工作流集成:Flowable流程引擎配置与使用

【免费下载链接】jeecg-boot jeecgboot/jeecg-boot 是一个基于 Spring Boot 的 Java 框架,用于快速开发企业级应用。适合在 Java 应用开发中使用,提高开发效率和代码质量。特点是提供了丰富的组件库、模块化架构和自动化配置方式。 【免费下载链接】jeecg-boot 项目地址: https://gitcode.com/GitHub_Trending/je/jeecg-boot

你是否还在为企业级应用中的流程审批开发感到繁琐?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 流程部署

设计完成的流程通过以下步骤部署:

  1. 在流程设计器中点击"部署"按钮
  2. 选择部署环境(开发/测试/生产)
  3. 系统自动生成流程定义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通过两种方式控制流程任务权限:

  1. 角色分配:在流程设计时为用户任务节点指定角色,拥有该角色的用户可见任务
  2. 表达式分配:通过EL表达式动态计算负责人,如:
    ${assigneeService.findManagerByDeptId(deptId)}
    

    其中assigneeService为自定义Spring Bean,需实现负责人计算逻辑。

5.2 业务数据关联

流程实例需与业务数据关联,推荐通过以下方式实现:

  1. 在流程变量中存储业务表ID:

    variables.put("businessKey", "OA_LEAVE_10001"); // 业务表主键
    
  2. 在业务表中存储流程实例ID:

    ALTER TABLE oa_leave ADD COLUMN process_instance_id VARCHAR(64);
    
  3. 通过流程监听器实现业务数据自动更新:

    @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 请假审批流程

  1. 流程设计

    • 开始节点 → 申请人填写表单 → 部门经理审批 → 人事归档 → 结束节点
    • 分支条件:请假天数>3天需总经理审批
  2. 核心代码

    // 请假单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);
        }
    }
    
  3. 效果展示: 流程设计器界面: THE 0TH POSITION OF THE ORIGINAL IMAGE

7.2 报销审批流程

通过子流程复用部门审批逻辑,实现多级别报销审批流程。关键配置:

  • 主流程:报销单提交 → 金额判断 → 子流程(部门审批)→ 财务审核
  • 子流程:部门经理审批 → 部门总监审批(金额>10000时)

八、常见问题解决

8.1 流程部署失败

排查步骤

  1. 检查流程设计是否符合BPMN 2.0规范(设计器右下角有校验按钮)
  2. 查看数据库连接是否正常(Flowable需独立数据源时配置jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/application.yml
  3. 检查数据库表是否自动创建(首次启动会初始化ACT_*表)

8.2 任务负责人为空

解决方案

  1. 确认用户任务节点已配置"分配用户"或"分配角色"
  2. 检查表达式语法是否正确,如:${assignee}需确保流程变量中存在该参数
  3. 验证自定义分配服务类是否被Spring容器正确管理

九、总结与展望

JeecgBoot集成Flowable实现了"可视化流程设计+低代码表单配置+灵活业务集成"的闭环,大幅降低BPM系统开发门槛。通过本文介绍的配置方法与最佳实践,开发者可快速构建符合企业需求的流程审批系统。

未来JeecgBoot将进一步增强流程引擎能力,包括AI流程推荐、流程性能分析与自动化优化等功能,持续提升低代码开发体验。

点赞+收藏+关注,获取JeecgBoot更多实战教程!下期预告:《Flowable高级特性:事件驱动与并行网关应用》

【免费下载链接】jeecg-boot jeecgboot/jeecg-boot 是一个基于 Spring Boot 的 Java 框架,用于快速开发企业级应用。适合在 Java 应用开发中使用,提高开发效率和代码质量。特点是提供了丰富的组件库、模块化架构和自动化配置方式。 【免费下载链接】jeecg-boot 项目地址: https://gitcode.com/GitHub_Trending/je/jeecg-boot

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值