RuoYi-activiti系统架构深度拆解:如何快速看懂若依权限体系与Activiti6工作流引擎的6大模块协作

RuoYi-activiti系统架构深度拆解:如何快速看懂若依权限体系与Activiti6工作流引擎的6大模块协作

【免费下载链接】RuoYi-activiti 整合RuoYi框架,基于Activiti6.0,集流程设计、流程部署、流程执行、任务办理、流程监控于一体的开源工作流开发平台。 【免费下载链接】RuoYi-activiti 项目地址: https://gitcode.com/gh_mirrors/sp/RuoYi-activiti

RuoYi-activiti 是一个整合若依(RuoYi)开源权限框架与 Activiti6.0 工作流引擎的开源工作流开发平台,集流程设计、流程部署、流程执行、任务办理、流程监控于一体,内置请假、采购、会议三个可复用审批示例,帮助新手快速搭建企业 OA 审批系统。

很多初学者的困惑在于:若依是一个权限管理系统,Activiti 是一个流程引擎,这两者到底是怎么拼装在一起的? 本文带你按模块拆解整个架构,看完即可在源码中自由导航。

RuoYi-activiti 功能表:流程设计、待办任务、流程监控功能总览

一、整体架构:权限平台 + 流程引擎的双核协作

从根目录的 pom.xml 可以看到,项目由 6 个 Maven 子模块组成:

模块一句话职责在协作中的角色
ruoyi-common通用工具、领域基类、权限注解所有人共享的"地基"
ruoyi-frameworkSpring Security + JWT 认证、AOP 切面、数据源若依权限体系的"大脑"
ruoyi-system用户/角色/菜单等系统业务 + 流程业务实体数据层与业务模型
ruoyi-quartz定时任务调度后台自动化能力
ruoyi-generatorVelocity 代码生成器开发提效工具
ruoyi-adminWeb 服务入口,Activiti6 在此接入前后端交汇的"总机"

协作关系可以概括为一句话:

若依负责"谁能进来看什么、能点什么"(RBAC 权限 + 菜单路由),Activiti 负责"事情怎么流转"(流程定义 + 任务执行),ruoyi-admin 把两者黏合在同一个 Web 应用中。

二、6 大模块职责一览

1. ruoyi-common:通用工具模块

提供 AjaxResultBaseControllerSecurityUtilsStringUtils 等所有模块共用的基础能力,以及 @DataScope@Anonymous@RepeatSubmit 等注解。所有权限判断的入口工具类 SecurityUtils.java 就在这里,Activiti 接口通过它获取当前登录用户名,再把用户名交给流程引擎做任务分配。

2. ruoyi-framework:若依权限体系的核心

权限体系的主配置在 SecurityConfig.java,它做了三件关键的事:

  1. 认证:登录成功后签发 JWT Token,之后每次请求由 JwtAuthenticationTokenFilter 拦截并还原用户身份(无会话,天然支持前后端分离);
  2. 方法级鉴权:开启 prePostEnabled,允许在 Controller 上用 @PreAuthorize 声明"拥有哪个菜单权限才能调这个接口";
  3. RBAC 数据模型:基于 sys_usersys_rolesys_menu 及关联表实现"用户-角色-菜单(权限串)"模型,建表脚本见 ry-activiti.sql

此外还有 DataScopeAspect(数据权限切面)等操作日志、登录限流等基础设施。

3. ruoyi-system:业务数据模块

既存放系统管理实体(SysUser、SysMenu、SysRole 等),也存放流程业务实体

一个重要的设计约定(README 中有说明):业务表单数据一律存在业务表(leaveapply 等),不存进 Activiti 的流程变量表,流程表只存流转状态,两者通过业务主键关联,职责清晰。

4. ruoyi-quartz:定时任务模块

提供 Quartz 定时任务管理(SysJob、Cron 表达式校验等),用于流程超时提醒、数据清理等场景,与主流程解耦。

5. ruoyi-generator:代码生成器

新增一个审批流程时,用代码生成器一键生成实体、Mapper、Service、Controller 和 Vue 页面骨架(基于 Velocity 模板,见 VelocityUtils.java),把重复劳动降到最少。

6. ruoyi-admin:Web 入口与 Activiti 接入点

Activiti 6.0 的全部依赖都声明在 ruoyi-admin/pom.xml 中:

  • activiti-spring-boot-starter-basic:自动装配流程引擎(启动时自动创建 act_* 系列表)
  • activiti-json-converter:BPMN XML 与 JSON 互转,支撑在线设计器
  • activiti-bpmn-layout:为流程图自动计算节点坐标,支撑前端渲染

所有流程相关 Controller 集中在 ruoyi-admin/src/main/java/com/ruoyi/web/controller/activiti/ 目录,按职能分为四类,下节详述。

三、Activiti6 工作流引擎:四类 Controller 各司其职

流程设计类:在线设计 BPMN 模型

  • explorer/ModelController.java + explorer/EditorController.java:管理模型,把设计器产出的 JSON 通过 json-converter 还原成 BPMN XML 并保存
  • ModelManageController.java:模型列表、发布(部署)

RuoYi-activiti 在线流程设计器:拖拽设计 BPMN 工作流

设计完成后点击"发布",模型即部署为流程定义,进入部署管理页面:

RuoYi-activiti 部署管理页面:工作流流程定义部署列表

流程执行类:发起与办理

  • FlowController.java:核心是 startProcess 接口,调用 runtimeService.startProcessInstanceById() 启动流程实例,审批人通过流程变量(如 ${deptleader})动态指定
  • TaskController.java:待办任务查询与办理。mylisttaskAssignee(当前用户名) 查"我的待办",/task/manage/completeTask/{taskId} 是所有业务共用的办理接口

动态流程类:撤销、驳回、跳转

DynamicFlowController.java 演示了一个进阶技巧:运行时直接修改 BpmnModel——例如"撤销"就是找到流程实例当前节点,动态加一条通往结束事件的连线再推进执行,实现强制结束、驳回回退等操作。

流程监控类:挂起、唤醒、看变量

FlowMonitorController.java 提供流程实例挂起/唤醒、执行历史查询、流程变量查看等能力,配合前端"流程监控"菜单使用:

RuoYi-activiti 流程监控页面:流程实例执行历史与变量监控

四、一次请假流程的完整生命周期

把两大体系串起来,一次请假审批是这样流动的:

  1. 登录:前端 ruoyi-ui 提交账号密码 → framework 模块校验(BCrypt)→ 签发 JWT → 前端按 sys_menu 权限动态生成左侧菜单;
  2. 发起:用户在"请假申请"页面(ruoyi-ui/src/views/function/leaveApply.vue)填表 → 数据存 leaveapply 业务表 → 调用 startProcess 启动流程实例;
  3. 办理:审批人的"我的待办"(ruoyi-ui/src/views/todo/myTodoList.vue)出现任务 → 系统通过任务的 formKey 找到对应的前端表单页面 → 审批人点通过,completeTask 推进流程到下一节点;
  4. 监控:管理员在流程实例/执行历史中查看走向与变量,必要时挂起、驳回或撤销。

RuoYi-activiti 请假流程演示:工作流审批任务办理全过程

RuoYi-activiti 全部待办任务列表:Activiti 工作流任务办理入口

RuoYi-activiti 流程变量监控:Activiti6 流程实例变量查看

其中 formKey 是前后端联动的关键约定:设计 BPMN 时给每个用户任务配置 formKey(如 leaveFormpurchaseForm),前端维护"formKey → 表单组件"的映射,办理任务时据此动态渲染对应表单,新增流程无需改动办理主流程代码。

五、前端视角:ruoyi-ui 的四大功能区域

Vue 前端(ruoyi-ui/src/views/)与后端模块一一对应:

目录对应功能后端模块
views/process/模型管理、部署管理activiti/explorer
views/todo/我的待办、全部待办、任务办理TaskController
views/inspection/流程实例、执行历史、作业管理FlowMonitorController
views/function/请假、采购、会议三个业务表单业务 Controller
views/system/用户、角色、菜单等权限管理ruoyi-system

RuoYi-activiti 流程实例管理:运行中的工作流实例列表

RuoYi-activiti 作业管理:Activiti 定时作业与死信作业查看

六、新手上手:3 步跑通 RuoYi-activiti

  1. 建库:新建 MySQL 5.7 数据库 ry-activiti(utf8mb4),导入 ry-activiti.sql(Activiti 的 act_* 表由引擎启动时自动创建,无需手动导入);
  2. 启动后端:编译打包后运行 java -jar ruoyi-admin.jar
  3. 启动前端:在 ruoyi-ui 下执行 npm run dev,访问 http://localhost/login,账号 admin、密码 admin123

RuoYi-activiti 登录页:若依权限体系 JWT 登录认证界面

七、架构要点小结

  • 分层清晰:common 打地基 → framework 管安全 → system 存业务 → admin 接前端,符合若依一贯的分层习惯;
  • 引擎解耦:Activiti 依赖只出现在 ruoyi-admin,权限体系完全不感知流程引擎,两边可独立演进;
  • 表单外置:业务数据进业务表、流转状态进流程表,用 formKey 关联,是扩展新流程的最佳实践;
  • 复用接口:所有待办办理统一走 completeTask 接口,新增审批流程只需"设计 BPMN + 写业务表单"两步。

掌握以上 6 大模块的职责与协作方式后,你就能在 RuoYi-activiti 中快速定位问题、仿照请假流程添加自己的审批业务,把它当作企业级工作流平台的脚手架来使用。

【免费下载链接】RuoYi-activiti 整合RuoYi框架,基于Activiti6.0,集流程设计、流程部署、流程执行、任务办理、流程监控于一体的开源工作流开发平台。 【免费下载链接】RuoYi-activiti 项目地址: https://gitcode.com/gh_mirrors/sp/RuoYi-activiti

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

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

抵扣说明:

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

余额充值