# flowable-demo **Repository Path**: sh_zouxw/flowable-demo ## Basic Information - **Project Name**: flowable-demo - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-25 - **Last Updated**: 2026-05-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Flowable工作流引擎演示项目 基于SpringBoot + Flowable实现的通用工作流执行引擎及动态表单系统。 ## 技术栈 - **SpringBoot** 2.7.14 - **Flowable** 6.9.0 - **MySQL** 8.0 - **MyBatis Plus** 3.5.3 - **Druid** 数据源 - **Lombok** 简化代码 - **Hutool** 工具类库 ## 功能特性 ### 1. 通用工作流执行引擎 - ✅ 流程启动管理 - ✅ 任务处理(审批、驳回等) - ✅ 流程查询(运行中、历史流程) - ✅ 待办任务查询 - ✅ 流程变量管理 - ✅ 流程实例控制(挂起、激活、删除) ### 2. 动态表单系统 - ✅ 支持12种字段类型(文本、数字、日期、下拉框、单选框、复选框、文件上传等) - ✅ 字段验证规则配置 - ✅ 表单布局配置 - ✅ 表单数据与流程关联 ### 3. Demo工作流 - ✅ 请假申请流程示例 - ✅ 自动路由(根据请假天数) - ✅ 多级审批(部门经理、人事、总经理) ## 快速开始 ### 1. 环境要求 - JDK 1.8+ - Maven 3.6+ - MySQL 8.0+ ### 2. 数据库配置 创建MySQL数据库: ```sql CREATE DATABASE flowable_db CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; ``` 修改 `application.yml` 中的数据库连接配置: ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/flowable_db?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8 username: root password: root ``` ### 3. 启动项目 ```bash # 编译项目 mvn clean compile # 启动项目 mvn spring-boot:run ``` 应用启动后访问:http://localhost:8080/flowable-demo ## API接口文档 ### 工作流API #### 启动流程 ```http POST /api/workflow/process/start Content-Type: application/json { "processDefinitionKey": "demoProcess", "businessKey": "business_001", "startUserId": "user001", "startUserName": "张三", "variables": { "leaveDays": 5, "leaveType": "1", "startDate": "2024-01-01", "endDate": "2024-01-05", "reason": "回家过年" } } ``` #### 完成任务 ```http POST /api/workflow/task/complete Content-Type: application/json { "taskId": "task_id", "assignee": "manager001", "comment": "同意", "result": "approved", "variables": { "approved": true } } ``` #### 查询待办任务 ```http GET /api/workflow/task/my-tasks?assignee=user001&pageNum=1&pageSize=10 ``` #### 查询流程实例 ```http GET /api/workflow/process/instances?processDefinitionKey=demoProcess&pageNum=1&pageSize=10 ``` ### 表单API #### 获取表单定义 ```http GET /api/form/code/demo_form ``` #### 保存表单数据 ```http POST /api/form/data/save Content-Type: application/json { "formId": "demo_form_001", "businessId": "business_001", "processInstanceId": "process_instance_id", "formValues": { "leaveType": "1", "startDate": "2024-01-01", "endDate": "2024-01-05", "leaveDays": 5, "reason": "回家过年" }, "submitUserId": "user001", "submitUserName": "张三" } ``` ### Demo API #### 启动Demo流程 ```http POST /api/demo/process/start Content-Type: application/json { "businessKey": "leave_001", "startUserId": "user001", "startUserName": "张三", "variables": { "leaveDays": 5, "leaveType": "1", "startDate": "2024-01-01", "endDate": "2024-01-05", "reason": "回家过年" } } ``` #### 获取Demo表单 ```http GET /api/demo/form ``` ## 流程说明 ### Demo流程(请假申请) 流程定义Key: `demoProcess` 流程节点: 1. **提交申请** - 员工提交请假申请 2. **判断网关** - 根据请假天数路由 - ≤ 3天 → 部门经理审批 - 3-7天 → 人事审批 - > 7天 → 总经理审批 3. **审批节点** - 相应审批人审批 4. **结束** - 流程结束 流程变量: - `leaveDays`: 请假天数(用于路由判断) - `leaveType`: 请假类型 - `startDate`: 开始日期 - `endDate`: 结束日期 - `reason`: 请假原因 - `result`: 审批结果 ## 项目结构 ``` flowable-demo/ ├── src/main/java/com/flowable/demo/ │ ├── common/ # 公共类 │ ├── config/ # 配置类 │ ├── form/ # 动态表单模块 │ ├── workflow/ # 工作流模块 │ └── demo/ # Demo示例 ├── src/main/resources/ │ ├── application.yml # 应用配置 │ └── processes/ # 流程定义文件 └── pom.xml # Maven配置 ``` ## 注意事项 1. **数据库初始化**:Flowable会在启动时自动创建所需的数据表,确保数据库用户有创建表的权限。 2. **流程定义文件**:流程定义文件放在 `src/main/resources/processes/` 目录下,应用启动时会自动加载。 3. **表单存储**:当前表单数据使用内存存储,实际生产环境应改为数据库存储。 4. **任务分配**:Demo流程中使用了候选组(candidateGroups),实际使用时需要配置对应的用户组。 ## 开发计划 - [ ] 表单数据持久化到数据库 - [ ] 增加流程监控和统计 - [ ] 增加流程模板管理 - [ ] 增加流程可视化展示 - [ ] 增加消息通知功能 - [ ] 增加流程审批历史详细查询 ## 许可证 MIT License