这篇文章主要记录流程监听器的部分用法,整个环境实在集成在spring下,ssm环境:
三个监听器:
A:普通javaBean:
package com.abc.activiti.listenner;
import org.activiti.engine.delegate.DelegateExecution;
public class JavaExpressionActivitiListenner {
public void expression(DelegateExecution execution) throws Exception {
System.out.println("executionId:" + execution.getId() + " ActivitiListenner" + this.toString());
}
}
B:实现ExecutionListener接口:
package com.abc.activiti.listenner;
import org.activiti.engine.delegate.DelegateExecution;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.ExecutionListener;
import org.activiti.engine.delegate.TaskListener;
public class ActivitiListenner implements TaskListener, ExecutionListener {
/**
*
*/
private static final long serialVersionUID = -3759054058055401826L;
@Override
public void notify(DelegateExecution execution) throws Exception {
System.out.println("xml流程:" + execution.getId() + " ActivitiListenner" + this.toString());
}
@Override
public void notify(DelegateTask delegateTask) {
System.out.println("xml任务:" + delegateTask.getId() + " ActivitiListenner" + this.toString());
}
}
C:实现JavaDelegate接口
package com.abc.activiti.listenner;
import org.activiti.engine.delegate.DelegateExecution;
import org.activiti.engine.delegate.JavaDelegate;
public class JavaDelegateActivitiListenner implements JavaDelegate {
@Override
public void execute(DelegateExecution execution) throws Exception {
System.out.println("executionId:" + execution.getId() + " ActivitiListenner" + this.toString());
}
}
第一种尝试:javaClass配置实现监听
流程设计:
流程非常短:启动-办理-结束,并配置了三个监听器
监听器配置:
<process id="abc" name="流程监听注入" isExecutable="true">
<extensionElements>
<activiti:executionListener event="start"
class="com.abc.activiti.listenner.xxxListenner"></activiti:executionListener>
<activiti:executionListener event="end"
class="com.abc.activiti.listenner.xxxListenner"></activiti:executionListener>
</extensionElements>
<startEvent id="startevent1" name="Start"></startEvent>
<userTask id="usertask1" name="User Task"></userTask>
<sequenceFlow id="flow1" sourceRef="startevent1"
targetRef="usertask1"></sequenceFlow>
<endEvent id="endevent1" name="End"></endEvent>
<sequenceFlow id="flow2" sourceRef="usertask1" targetRef="endevent1">