# flowable **Repository Path**: gaoleiWorld/flowable ## Basic Information - **Project Name**: flowable - **Description**: flowable demo - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-29 - **Last Updated**: 2026-01-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Flowable权限系统项目文档 ## 项目概述 本项目是一个基于Spring Boot 2.7、MyBatis-Plus、Flowable 6、MySQL和Knife4j的用户角色部门权限系统,并集成了请假流程管理功能。项目遵循企业级开发标准,代码规范,适合生产环境使用。 ## 技术栈 - **Spring Boot 2.7.18** - 项目基础框架 - **MyBatis-Plus 3.5.3.2** - 持久层框架 - **Flowable 6.8.0** - 工作流引擎 - **MySQL** - 数据库(开发环境使用H2内存数据库) - **Lombok** - 简化代码 - **Spring Security** - 安全框架 - **Knife4j** - API文档工具 ## 项目结构 ### 后端结构 ``` ├── pom.xml # 父项目POM文件 ├── common/ # 通用模块 │ ├── pom.xml # 通用模块POM文件 │ └── src/main/java/com/example/common/ # 通用模块源码 │ ├── config/ # 通用配置类 │ │ ├── CorsConfig.java # 跨域配置 │ │ ├── FlowableConfig.java # Flowable工作流配置 │ │ ├── MybatisPlusConfig.java # MyBatis-Plus配置 │ │ ├── SecurityConfig.java # Spring Security安全配置 │ │ └── WebMvcConfig.java # WebMvc配置 │ ├── exception/ # 全局异常处理 │ │ └── GlobalExceptionHandler.java # 全局异常处理器 │ └── web/ # Web相关工具类 │ ├── PageResult.java # 分页结果封装类 │ └── Result.java # 统一结果封装类 └── system/ # 系统业务模块 ├── pom.xml # 系统模块POM文件 ├── src/main/java/com/example/system/ # 系统模块源码 │ └── SystemApplication.java # 主启动类 └── src/main/java/com/example/system/module/ # 业务模块 ├── auth/ # 认证模块 │ ├── controller/ # 认证控制器 │ │ └── AuthController.java # 登录认证控制器 │ ├── dto/ # 认证数据传输对象(空) │ ├── entity/ # 认证实体类(空) │ ├── mapper/ # 认证数据访问层(空) │ └── service/ # 认证业务逻辑层(空) │ └── impl/ # 认证业务逻辑实现(空) ├── flow/ # 工作流模块 │ ├── controller/ # 工作流控制器 │ │ ├── LeaveApplicationController.java # 请假申请控制器 │ │ └── ProcessController.java # 流程控制器 │ ├── dto/ # 工作流数据传输对象 │ │ └── LeaveApplicationDTO.java # 请假申请数据传输对象 │ ├── entity/ # 工作流实体类 │ │ └── LeaveApplication.java # 请假申请实体 │ ├── mapper/ # 工作流数据访问层 │ │ └── LeaveApplicationMapper.java # 请假申请数据访问接口 │ └── service/ # 工作流业务逻辑层 │ ├── LeaveApplicationService.java # 请假申请服务接口 │ ├── ProcessService.java # 流程服务接口 │ └── impl/ # 服务实现类 │ ├── LeaveApplicationServiceImpl.java # 请假申请服务实现 │ └── ProcessServiceImpl.java # 流程服务实现 └── sys/ # 系统管理模块 ├── controller/ # 系统管理控制器 │ ├── SysDeptController.java # 部门管理控制器 │ ├── SysMenuController.java # 菜单管理控制器 │ ├── SysRoleController.java # 角色管理控制器 │ └── SysUserController.java # 用户管理控制器 ├── dto/ # 系统管理数据传输对象 │ ├── CreateUserDTO.java # 创建用户数据传输对象 │ └── UpdateUserDTO.java # 更新用户数据传输对象 ├── entity/ # 系统管理实体类 │ ├── SysDept.java # 部门实体 │ ├── SysMenu.java # 菜单实体 │ ├── SysRole.java # 角色实体 │ ├── SysRoleDept.java # 角色部门关联实体 │ ├── SysRoleMenu.java # 角色菜单关联实体 │ ├── SysUser.java # 用户实体 │ └── SysUserRole.java # 用户角色关联实体 ├── mapper/ # 系统管理数据访问层 │ ├── SysDeptMapper.java # 部门数据访问接口 │ ├── SysMenuMapper.java # 菜单数据访问接口 │ ├── SysRoleDeptMapper.java # 角色部门关联数据访问接口 │ ├── SysRoleMapper.java # 角色数据访问接口 │ ├── SysRoleMenuMapper.java # 角色菜单关联数据访问接口 │ ├── SysUserMapper.java # 用户数据访问接口 │ └── SysUserRoleMapper.java # 用户角色关联数据访问接口 └── service/ # 系统管理业务逻辑层 ├── SysDeptService.java # 部门服务接口 ├── SysMenuService.java # 菜单服务接口 ├── SysRoleService.java # 角色服务接口 ├── SysUserService.java # 用户服务接口 └── impl/ # 服务实现类 ├── SysDeptServiceImpl.java # 部门服务实现 ├── SysMenuServiceImpl.java # 菜单服务实现 ├── SysRoleServiceImpl.java # 角色服务实现 └── SysUserServiceImpl.java # 用户服务实现 ``` ### 前端结构 ``` web/ # 前端项目根目录 ├── public/ # 静态资源目录 │ └── index.html # 主页面 ├── src/ # 源代码目录 │ ├── api/ # API接口定义 │ │ └── index.js # API接口集合 │ ├── utils/ # 工具函数 │ │ └── index.js # 工具函数集合 │ ├── views/ # 页面视图 │ │ ├── dept/ # 部门管理页面 │ │ │ └── DeptList.vue # 部门列表页面 │ │ ├── leave/ # 请假管理页面 │ │ │ └── LeaveList.vue # 请假列表页面 │ │ ├── menu/ # 菜单管理页面 │ │ │ └── MenuList.vue # 菜单列表页面 │ │ ├── role/ # 角色管理页面 │ │ │ └── RoleList.vue # 角色列表页面 │ │ ├── user/ # 用户管理页面 │ │ │ └── UserList.vue # 用户列表页面 │ │ ├── Layout.vue # 布局页面 │ │ └── Login.vue # 登录页面 │ ├── App.vue # 根组件 │ ├── main.js # 主入口文件 │ └── router.js # 路由配置 ├── package.json # 项目配置文件 ├── vue.config.js # Vue配置文件 └── README.md # 前端项目说明文档 ``` ### 配置与文档 ``` ├── aoc/ # 数据库脚本目录 │ └── init.sql # 数据库初始化脚本 ├── common/ # 通用模块 │ ├── pom.xml # 通用模块POM文件 │ └── src/main/resources/ # 通用模块资源文件(空) ├── system/ # 系统模块 │ ├── pom.xml # 系统模块POM文件 │ └── src/main/resources/ # 系统模块资源文件目录 │ ├── application.yml # 应用配置文件 │ ├── db/migration/ # 数据库迁移脚本 │ │ └── V1__init_tables.sql # 数据库表创建脚本 │ └── processes/ # Flowable流程定义 │ └── leaveProcess.bpmn20.xml # 请假流程定义文件 ├── pom.xml # 父项目POM文件 ├── README.md # 项目说明文档 └── .mvn/ # Maven包装器配置 ``` ## 功能模块 ### 1. 用户角色部门权限系统 #### 用户管理 - 用户创建、更新、删除、查询 - 用户分页查询 - 用户状态管理 #### 角色管理 - 角色创建、更新、删除、查询 - 角色权限分配 - 角色状态管理 #### 部门管理 - 部门创建、更新、删除、查询 - 部门层级结构管理 - 部门状态管理 #### 权限管理 - 用户角色关联管理 - 角色菜单关联管理 - 角色部门关联管理 ### 2. 请假流程系统 #### 请假申请 - 创建请假申请 - 更新请假申请状态 - 查询请假申请列表 - 请假申请审批 #### 工作流管理 - 启动请假流程 - 处理审批任务 - 完成审批任务 - 流程状态跟踪 ## 数据库设计 数据库建表语句位于 `aoc/init.sql` 文件中,包含以下表: - `sys_user` - 用户表 - `sys_role` - 角色表 - `sys_dept` - 部门表 - `sys_menu` - 菜单表 - `sys_user_role` - 用户角色关联表 - `sys_role_menu` - 角色菜单关联表 - `sys_role_dept` - 角色部门关联表 - `leave_application` - 请假申请表 ## API接口 ### 用户管理接口 - `GET /api/user/list` - 分页查询用户列表 - `GET /api/user/{id}` - 根据ID获取用户 - `POST /api/user` - 创建用户 - `PUT /api/user` - 更新用户 - `DELETE /api/user/{id}` - 删除用户 ### 角色管理接口 - `GET /api/role/list` - 分页查询角色列表 - `GET /api/role/{id}` - 根据ID获取角色 - `POST /api/role` - 创建角色 - `PUT /api/role` - 更新角色 - `DELETE /api/role/{id}` - 删除角色 ### 部门管理接口 - `GET /api/dept/list` - 分页查询部门列表 - `GET /api/dept/{id}` - 根据ID获取部门 - `POST /api/dept` - 创建部门 - `PUT /api/dept` - 更新部门 - `DELETE /api/dept/{id}` - 删除部门 ### 请假申请接口 - `GET /api/leave/list` - 分页查询请假申请列表 - `GET /api/leave/{id}` - 根据ID获取请假申请 - `POST /api/leave` - 创建请假申请 - `PUT /api/leave/status/{id}` - 更新请假申请状态 - `DELETE /api/leave/{id}` - 删除请假申请 ### 流程管理接口 - `POST /api/process/start-leave-process` - 启动请假流程 - `GET /api/process/tasks` - 获取待办任务 - `POST /api/process/complete-task` - 完成任务 ## 配置文件 ### application.yml 主要配置包括: - 数据库连接(H2内存数据库) - MyBatis-Plus配置 - Flowable配置 - Knife4j配置 ## 项目特点 1. **完整的权限管理**:实现了用户、角色、部门的完整权限管理功能 2. **工作流集成**:使用Flowable实现了请假流程的完整工作流 3. **代码规范**:遵循企业级开发规范,代码结构清晰 4. **分页查询**:所有列表接口都支持分页查询 5. **参数验证**:使用注解进行参数验证 6. **异常处理**:全局异常处理机制 7. **API文档**:集成Knife4j提供API文档 ## 启动说明 1. 确保安装了JDK 8+ 2. 运行 `mvn spring-boot:run` 3. 应用启动后访问 `http://localhost:8080` ## 生产部署 在生产环境中,需要: 1. 配置真实的MySQL数据库连接 2. 调整应用配置参数 3. 部署到应用服务器 ## 代码规范 - 所有实体类使用Lombok注解减少样板代码 - 服务层接口和实现分离 - 控制器层进行参数验证 - 统一的返回结果格式 - 全局异常处理