监听器(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 );
}
}