1、引入全局变量
@Autowired
RepositoryService repositoryService;
@Autowired
RuntimeService runtimeService;
@Autowired
TaskService taskService;
2、部署流程
/***
* @description 部署流程
* @params
* @return java.lang.String
* @author 军哥
* @date 2023/10/21 18:55
*/
@GetMapping(value = "/deploy")
public String deploy() {
repositoryService.createDeployment()
.addClasspathResource("activiti/test1.bpmn20.xml")
.addClasspathResource("activiti/test1.bpmn20.png")
.deploy();
return "OK";
}
3、查询流程列表
/***
* @description 获取流程列表
* @params
* @return java.lang.String
* @author 军哥
* @date 2023/10/21 19:01
*/
@GetMapping(value = "/bpmnList")
public String bpmnList() {
List<ProcessDefinition> list = repositoryService.createProcessDefinitionQuery().list();
for (ProcessDefinition processDefinition : list) {
System.out.println(processDefinition.getName());
}
return "OK";
}
4、开启一个流程
/***
* @description 开启一个流程
* @params
* @return java.lang.String
* @author 军哥
* @date 2023/10/21 20:36
*/
@GetMapping(value = "/start")
public String start() {
//-- 启动流程的参数
// 1、流程的KEY:流程的唯一标识 key=test1
// 2、第三方系统的唯一ID(标识)与第三方系统结合
// 3、传入流程变量
String key = UUID.randomUUID().toString();
HashMap<String, Object> map = new HashMap<>();
map.put("user1", "老田");
map.put("user2", "王院");
ProcessInstance test1 = runtimeService.startProcessInstanceByKey("test1", key, map);
System.out.println("start:"+test1.toString());
return "OK";
}
5、获取流程列表
/***
* @description 查询正在进行的流程
* @params
* @return java.lang.String
* @author 军哥
* @date 2023/10/21 20:40
*/
@GetMapping(value = "/processList")
public String processList() {
List<ProcessInstance> list = runtimeService.createProcessInstanceQuery().processDefinitionKey("test1").list();
for (ProcessInstance processInstance : list) {
System.out.println(processInstance.getName());
}
return "OK";
}
6、获取任务列表
/***
* @description 查询流程实例节点
* @params
* @return java.lang.String
* @author 军哥
* @date 2023/10/21 23:38
*/
@GetMapping(value = "/taskList")
public String taskList(String pid) {
List<Task> list = taskService.createTaskQuery().processInstanceId(pid).list();
for (Task task : list) {
System.out.println(task.toString());
String taskId = task.getId();
System.out.println("taskId:" + taskId);
}
return "OK";
}
7、执行审核流程
/***
* @description 执行任务(也就是执行流程实例下的任务节点)
* @return java.lang.String
* @author 军哥
* @date 2023/10/22 8:43
*/
@GetMapping(value = "/taskStep")
public String taskStep(String pid, String taskId) {
// 查询实例流程
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(pid).singleResult();
if(processInstance == null) {
return "流程实例不存在";
}
//-- 完成下一步的流程
taskService.complete(taskId);
//-- 查询流程是否为最后一步审批
ProcessInstance lastProcess = runtimeService.createProcessInstanceQuery().processInstanceId(pid).singleResult();
if(lastProcess == null) {
// 发送通知邮件或者短信
System.out.println("发送邮件通知用户");
System.out.println("修改审核状态:审核通过");
}
return "OK";
}