# flowable-learning **Repository Path**: Andrew1987/flowable-learning ## Basic Information - **Project Name**: flowable-learning - **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-07-22 - **Last Updated**: 2025-12-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Flowable 学习项目 这是一个基于 Spring Boot 和 Flowable 的工作流学习项目,演示了如何使用 Flowable 实现简单的请假申请流程。 ## 项目特性 - ✅ Spring Boot 3.5.3 - ✅ Java 21 - ✅ Flowable 7.0.0 - ✅ H2 内存数据库 - ✅ RESTful API - ✅ 请假申请流程示例 ## 快速开始 ### 1. 运行项目 ```bash # 克隆项目 git clone cd flowable-learning # 编译项目 mvn clean compile # 运行项目 mvn spring-boot:run ``` ### 2. 访问应用 - 应用主页: http://localhost:8080 - H2 数据库控制台: http://localhost:8080/h2-console - 健康检查: http://localhost:8080/health ### 3. 测试流程 #### 启动请假申请流程 ```bash curl -X POST "http://localhost:8080/api/process/leave-request?employee=张三&reason=病假&days=3" ``` #### 获取用户任务 ```bash curl -X GET "http://localhost:8080/api/process/tasks/user/张三" ``` #### 获取经理组任务 ```bash curl -X GET "http://localhost:8080/api/process/tasks/group/managers" ``` #### 完成任务 ```bash curl -X POST "http://localhost:8080/api/process/tasks/{taskId}/complete" \ -H "Content-Type: application/json" \ -d '{"approved": true}' ``` ## 流程说明 ### 请假申请流程 (leaveRequest) 1. **开始事件** - 流程启动 2. **提交请假申请** - 员工提交申请(用户任务) 3. **经理审批** - 经理审批申请(用户任务) 4. **审批决定** - 根据审批结果决定流程走向 5. **结束事件** - 流程结束(批准或拒绝) ### 流程变量 - `employee`: 申请员工姓名 - `reason`: 请假原因 - `days`: 请假天数 - `approved`: 审批结果(true/false) ## API 接口 | 方法 | 路径 | 描述 | |------|------|------| | GET | `/` | 应用主页 | | GET | `/health` | 健康检查 | | POST | `/api/process/leave-request` | 启动请假申请流程 | | GET | `/api/process/tasks/user/{assignee}` | 获取用户任务 | | GET | `/api/process/tasks/group/{group}` | 获取组任务 | | GET | `/api/process/tasks/{taskId}` | 获取任务详情 | | POST | `/api/process/tasks/{taskId}/complete` | 完成任务 | ## 项目结构 ``` src/ ├── main/ │ ├── java/com/example/demo/ │ │ ├── controller/ │ │ │ ├── ProcessController.java # 流程管理控制器 │ │ │ └── TestController.java # 测试控制器 │ │ ├── service/ │ │ │ └── ProcessService.java # 流程服务 │ │ └── DemoApplication.java # 主应用类 │ └── resources/ │ ├── processes/ │ │ └── leave-request.bpmn20.xml # 流程定义文件 │ └── application.properties # 应用配置 ``` ## Flowable 核心概念 ### 1. 流程定义 (Process Definition) - BPMN 2.0 XML 文件 - 描述业务流程的结构和规则 ### 2. 流程实例 (Process Instance) - 流程定义的运行时实例 - 包含流程变量和执行状态 ### 3. 任务 (Task) - 需要人工处理的工作项 - 可以分配给特定用户或用户组 ### 4. 执行实例 (Execution) - 流程实例的执行路径 - 跟踪当前执行位置 ## 学习资源 - [Flowable 官方文档](https://flowable.com/open-source/docs/) - [BPMN 2.0 规范](https://www.omg.org/spec/BPMN/2.0/) - [Spring Boot 文档](https://spring.io/projects/spring-boot) ## 下一步 1. 添加更多流程类型 2. 实现用户管理 3. 添加流程监控 4. 集成前端界面 5. 添加流程历史查询 ## 许可证 MIT License