> 技术文档 > Flowable + Spring Boot 自定义审批流实战教程

Flowable + Spring Boot 自定义审批流实战教程

目录

一、项目初始化

二、编写 BPMN 流程模型

三、启动流程的Service

四、创建 Controller 进行调用

五、运行项目

六、扩展方向


一、项目初始化

  1. 创建 Spring Boot 项目,添加依赖(pom.xml):
  org.flowable flowable-spring-boot-starter-process 6.7.2 

二、编写 BPMN 流程模型

  1. 在 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 做更复杂的图形化设计
  • 接入数据库保存审批流状态
  • 添加多级审批流、多条件判断、自动化节点