Flowable + Spring Boot 自定义审批流实战教程
目录
二、编写 BPMN 流程模型
三、启动流程的Service
四、创建 Controller 进行调用
五、运行项目
六、扩展方向
一、项目初始化
- 创建 Spring Boot 项目,添加依赖(pom.xml):
org.flowable flowable-spring-boot-starter-process 6.7.2
二、编写 BPMN 流程模型
- 在
src/main/resources/processes
目录下创建leave-request.bpmn20.xml
三、启动流程的Service
import org.flowable.engine.RuntimeService;import org.flowable.engine.TaskService;import org.flowable.task.api.Task;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import java.util.HashMap;import java.util.List;import java.util.Map;@Servicepublic class LeaveRequestService { @Autowired private RuntimeService runtimeService; @Autowired private TaskService taskService; // 启动流程实例 public void startLeaveRequest(String employee, String manager) { Map variables = new HashMap(); variables.put(\"employee\", employee); variables.put(\"manager\", manager); runtimeService.startProcessInstanceByKey(\"leaveRequest\", variables); } // 查询任务 public List getTasks(String assignee) { return taskService.createTaskQuery().taskAssignee(assignee).list(); } // 完成任务 public void completeTask(String taskId) { taskService.complete(taskId); }}
四、创建 Controller 进行调用
import org.flowable.task.api.Task;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.*;import java.util.List;@RestController@RequestMapping(\"/leave\")public class LeaveRequestController { @Autowired private LeaveRequestService leaveRequestService; @PostMapping(\"/start\") public String startProcess(@RequestParam String employee, @RequestParam String manager) { leaveRequestService.startLeaveRequest(employee, manager); return \"Process started.\"; } @GetMapping(\"/tasks\") public List getTasks(@RequestParam String assignee) { return leaveRequestService.getTasks(assignee); } @PostMapping(\"/complete\") public String completeTask(@RequestParam String taskId) { leaveRequestService.completeTask(taskId); return \"Task completed.\"; }}
五、运行项目
- 访问接口:
-
- 启动流程:http://localhost:8080/leave/start?employee=john&manager=manager1
- 查询任务:http://localhost:8080/leave/tasks?assignee=manager1
- 完成任务:http://localhost:8080/leave/complete?taskId=xxxxxx
六、扩展方向
- 使用 Flowable Modeler 做更复杂的图形化设计
- 接入数据库保存审批流状态
- 添加多级审批流、多条件判断、自动化节点