Activiti5 学习笔记(四)—— 监听器

执行监听器

监听流程实例的用的。创建监听实现类

package cn.fg.activiti.listener;

import org.activiti.engine.delegate.DelegateExecution;
import org.activiti.engine.delegate.ExecutionListener;

//流程实例启动前的监听
public class StartListenerImpl implements ExecutionListener {

	private static final long serialVersionUID = -2164817372803519157L;

	@Override
	public void notify(DelegateExecution execution) throws Exception {
		System.out.println("进入start监听....................................");
		System.out.println("ProcessDefinitionId=" + execution.getProcessDefinitionId());
		System.out.println("ProcessInstanceId=" + execution.getProcessInstanceId());
	}
}
//流程实例结束后的监听
public class EndListenerImpl implements ExecutionListener {

	private static final long serialVersionUID = -2164817372803519157L;

	@Override
	public void notify(DelegateExecution execution) throws Exception {
		System.out.println("进入end监听....................................");
	}
}

 创建流程图

启动流程实例

String processDefinitionKey = "executionListener";
System.out.println("调用start之前.............");
ProcessInstance pi = processEngine.getRuntimeService().startProcessInstanceByKey(processDefinitionKey);
System.out.println("调用start之后.............");
System.out.println("ProcessDefinitionId="+pi.getProcessDefinitionId());
System.out.println("getProcessInstanceId="+pi.getProcessInstanceId());
#输出日志
调用start之前.............
进入start监听....................................
ProcessDefinitionId=executionListener:1:4
ProcessInstanceId=15001
调用start之后.............
ProcessDefinitionId=executionListener:1:4
getProcessInstanceId=15001

综上可以看出,进入监听的时机是调用startProcessInstanceByKey的时候

完成审批任务

String taskId = "7504";
System.out.println("调用complete之前.............");
processEngine.getTaskService().complete(taskId);
System.out.println("调用complete之后.............");
#输出日志
调用complete之前.............
进入end监听....................................
调用complete之后.............

综上可以看出,进入监听的时机是调用complete的时候

使用一个监听类监听start与end

package cn.fg.activiti.listener;

import org.activiti.engine.delegate.DelegateExecution;
import org.activiti.engine.delegate.ExecutionListener;

public class ExecutionListenerImpl implements ExecutionListener {

	private static final long serialVersionUID = -2164817372803519157L;

	@Override
	public void notify(DelegateExecution execution) throws Exception {
		String eventName = execution.getEventName(); //监听事件名称
		System.out.println("eventName=" + eventName);
		if("start".equals(eventName)){
			System.out.println("start...............");
		}else if("end".equals(eventName)){
			System.out.println("end...............");
		}
	}
}

任务监听器

监听任务用的。创建监听实现类

package cn.fg.activiti.listener;

import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;

public class TaskListenerImpl implements TaskListener {


	private static final long serialVersionUID = 8303932574368902798L;

	@Override
	public void notify(DelegateTask delegateTask) {
		System.out.println("EventName="+delegateTask.getEventName());
	}

	
}

创建流程图(设置审批办理人为张三)

启动流程实例

String processDefinitionKey = "taskListener";
System.out.println("流程实例启动前...........");
ProcessInstance pi = processEngine.getRuntimeService().startProcessInstanceByKey(processDefinitionKey);
System.out.println("流程实例启动后...........");
#输出日志
流程实例启动前...........
EventName=assignment #如果流程图中不设置办理人,这条记录是不会出现的
EventName=create
流程实例启动后...........

完成审批任务

String taskId = "10004";
System.out.println("完成任务前...........");
processEngine.getTaskService().complete(taskId);
System.out.println("完成任务后...........");
完成任务前...........
EventName=complete
完成任务后...........

代码设置Assignee

public void setAssignee(){
		String taskId = "22504";
		String userId = "万五";
		TaskService taskService = processEngine.getTaskService();
		System.out.println("setAssignee之前............");
		taskService.setAssignee(taskId, userId);
		System.out.println("setAssignee之后............");
	}
setAssignee之前............
EventName=assignment
setAssignee之后............

由此说明assignment事件是setAssignee时触发的

发布了64 篇原创文章 · 获赞 0 · 访问量 3185

猜你喜欢

转载自blog.csdn.net/q42368773/article/details/104011425