一、创建流程模型
制作如下流程
给审批用户1一个值表达式。
二、给用户审批2添加监听器
创建一个监听器类
package org.example.flowabledemo2.listener;import org.flowable.engine.delegate.TaskListener;
import org.flowable.task.service.delegate.DelegateTask;/*** 自定义flowable监听器*/
public class MyListener01 implements TaskListener {@Overridepublic void notify(DelegateTask delegateTask) {System.out.println("MyListener01--------notify-----------执行了" + delegateTask.getEventName());if (EVENTNAME_CREATE.equals(delegateTask.getEventName())) {// 用户节点创建,指派审批人delegateTask.setAssignee("youwangzi");}}
}
点击用户审批2,添加任务监听器
将编写好的监听器类添加进去。
三、部署流程定义
保存并导出该流程图,复制到项目中。
部署流程定义。
@Testvoid contextLoads() {DeploymentBuilder deployment = repositoryService.createDeployment();deployment.addClasspathResource("process01/Example02.bpmn20.xml");deployment.name("监听器流程图");Deployment deploy = deployment.deploy();System.out.println("deploy.getId() = " + deploy.getId());}
查看结果。
四、启动监听器流程任务
/*** 发起流程*/@Testpublic void startProcess() {String id = "Example02:1:7486526c-2a43-11ef-a3d5-644ed7087863";// 在启动流程实例时就可以绑定表达式的值Map<String, Object> variables = new HashMap<>();variables.put("myAssgin2", "zhangsan");// 根据流程定义ID启动流程ProcessInstance processInstance = runtimeService.startProcessInstanceById(id, variables);}
查看当前任务
使用zhangsan进行审批
/*** 根据用户查询待办信息*/@Testpublic void findFlow() {List<Task> list = taskService.createTaskQuery().taskAssignee("zhangsan").list();// 根据id进行审批for (Task task : list) {completeTask(task.getId());}}/*** 根据Id审批任务*/public void completeTask(String taskId) {taskService.complete(taskId);}
查看控制台,当创建用户审批2时触发了监听器。
查看任务表中,监听器给审批用户2节点分配了审批人。
使用youwangzi账户通过审批,任务结束。