activiti5之监听器
业务场景
在使用工作流时,通常伴随着很多具体的需求,例如:
- activiti人员动态的分配。
- 当前任务节点完成的时候,指定需要指定下一个节点的处理人(比如,一个请假流程,a员工请假,需要指定下一步需要处理请假流程的领导。)。
- 任务节点完成的时候,需要一些复杂业务,(比如当前节点完成的时候,需要调用我们的jms消息系统发送消息)。
- 任务流转到当前的节点的时候,需要监控当前任务节点的一些信息或者其他的业务信息。
- 当前的任务节点分配处理人的时候,需要触发自定义的一些业务。
- 流程开始结束的时候,需要处理业务信息。
- 经过任务节点的出线,也就是连线的时候,需要触发自定义的业务。
那我们怎么实现以上的这些需求呢?这个时候,我们就需要使用activiti监听器,activiti提供的监听器怎么实现,以及如何触发,这些都需要我们一步步了解。下面就详细的介绍activiti监听器。
从 activiti监听器的使用范围来看,大致分为三种:
- 全局的监听器 ExecutionListener。
- 连线的监听器。
- 节点的监听器 TaskListener。
下面我们一个个的来看如何使用这些监听器。
全局监听器
- 全局监听器主要使用的场景就是监控这个流程的启动和结束,
ExecutionListener定义如下:流程实例start、end、take的时候调用,其中take是监控连线的时候使用的。
public interface ExecutionListener extends Serializable {
String EVENTNAME_START = "start";
String EVENTNAME_END = "end";
String EVENTNAME_TAKE = "take";
void notify(DelegateExecution execution) throws Exception;
}
- 使用方法,第一步,在模型中添加监听器,部署后,xml如下:
第二步,编写监听类
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="daling">
<process id="daling" name="name_daling" isExecutable="true" activiti:candidateStarterUsers="a,b,c,d">
<extensionElements>
<activiti:executionListener event="start" class="com.daling.ch1.listener.MyExecutionListener"></activiti:executionListener>
<activiti:executionListener event="end"