Activiti监听器(十一)

监听器(listener)

一.执行监听器:监听流程实例事件。

第一步:按照框架的规则编写监听器类

/**
 * 自定义一个执行监听器
 * @author 
 *
 */
public class MyExecutionListener implements ExecutionListener {
	//当监听的事件发送时执行此方法
	public void notify(DelegateExecution execution) throws Exception {
		System.out.println("自定义的监听器执行了。。。1");
	}
}
第二步:设计流程图,注册监听器


第三步:启动流程实例,Activiti框架通过反射调用监听器类

/**
 * 执行监听器测试
 * @author
 *
 */
public class ExecutionListenerTest {
	ProcessEngine pe = ProcessEngines.getDefaultProcessEngine();

	/**
	 * 部署流程定义
	 */
	@Test
	public void test1() {
		DeploymentBuilder deploymentBuilder = pe.getRepositoryService()
				.createDeployment();
		deploymentBuilder
				          .addClasspathResource("cn/itcast/listener/execution/executionListener.bpmn");
		deploymentBuilder .addClasspathResource("cn/itcast/listener/execution/executionListener.png");
		Deployment deployment = deploymentBuilder.deploy();
	}
	
	/**
	 * 启动流程实例
	 */
	@Test
	public void test2(){
		String processDefinitionKey = "executionListener";
		ProcessInstance pi = pe.getRuntimeService().startProcessInstanceByKey(processDefinitionKey );
		System.out.println(pi.getId());
	}
	
	/**
	 * 办理任务
	 */
	@Test
	public void test3(){
		String taskId = "2702";
		pe.getTaskService().complete(taskId );
	}
}
二.任务监听器:监听任务事件

第一步:按照activiti框架的规则编写一个任务监听器类

/**
 * 自定义任务监听器
 * @author
 *
 */
public class MyTaskListener implements TaskListener{
	//监听任务的事件
	public void notify(DelegateTask delegateTask) {
		String assignee = delegateTask.getAssignee();
		String eventName = delegateTask.getEventName();
		String name = delegateTask.getName();
		String processInstanceId = delegateTask.getProcessInstanceId();
		Set<String> variableNames = delegateTask.getVariableNames();
		for (String key : variableNames) {
			Object value = delegateTask.getVariable(key);
			System.out.println(key + " = " + value);
		}
		System.out.println("一个任务["+name+"]被创建了,由["+assignee+"]负责办理");
	}

}

第二步:注册监听类



第三步:办理任务,由框架通过反射调用监听器类

/**
 * 任务监听器测试
 * @author
 *
 */
public class TaskListenerTest {
	ProcessEngine pe = ProcessEngines.getDefaultProcessEngine();

	/**
	 * 部署流程定义
	 */
	@Test
	public void test1() {
		DeploymentBuilder deploymentBuilder = pe.getRepositoryService()
				.createDeployment();
		deploymentBuilder
				          .addClasspathResource("cn/itcast/listener/task/taskListener.bpmn");
		deploymentBuilder .addClasspathResource("cn/itcast/listener/task/taskListener.png");
		Deployment deployment = deploymentBuilder.deploy();
	}
	
	/**
	 * 启动流程实例
	 */
	@Test
	public void test2(){
		String processDefinitionId = "taskListener:1:4";
		Map<String, Object> variables = new HashMap<String, Object>();
		variables.put("key1", "v1");
		variables.put("k2", 300);
		pe.getRuntimeService().startProcessInstanceById(processDefinitionId , variables);
	}
	
	/**
	 * 办理任务
	 */
	@Test
	public void test3(){
		String taskId = "106";
		pe.getTaskService().complete(taskId );
	}
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值