activiti监听器使用 http://blog.csdn.net/qq_30739519/article/details/51258447
配置方式一:使用Java类
先定义类,然后在任务或者可以配置的地方,直接使用, 比如
事件:assignment
java类:com.pandy.activiti.listener.MyAssignmentTaskListener
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
package com.pandy.activiti.listener;/** * Created by pandy on 16-8-12. */ import org.activiti.engine.delegate.DelegateTask; import org.activiti.engine.delegate.TaskListener; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * 项目名称: workspace * * 功能说明: 任务监听, 节点监听器 * DelegateTask类, 在上面的任务监听器中我们可以拿到DelegateTask对象,这个对象可以让我们操作activiti引擎中的一些东西 * 创建者: Pandy, * 邮箱: panyongzheng@163.com, 1453261799@qq.com * 版权: * 官网: * 创建日期: 16-8-12. * 创建时间: 下午2:44. * 修改历史: * ----------------------------------------------- */ public class MyAssignmentTaskListener implements TaskListener { Logger logger = LoggerFactory.getLogger(MyActivitiEventListener.class); public void notify(DelegateTask delegateTask) { logger.debug("这是一个任务监听器,可以在任务那里选择"); //delegateTask.setAssignee("kermit"); //delegateTask.addCandidateUser("fozzie"); //delegateTask.addCandidateGroup("management"); logger.debug("这个监听器可以改变很多事情,哈哈"); } } |
配置方式二: 使用表达式expression
定义两个bena
1 2 |
<bean id="myAssignmentTaskListener" class="com.pandy.activiti.listener.MyAssignmentTaskListener"/> <bean id="myExecutionListener" class="com.pandy.activiti.listener.MyExecutionListener"/> |
在processEngineConfiguration里面暴露bena
1 2 3 4 5 6 |
<property name="beans"> <map> <entry key="myAssignmentTaskListener" value-ref="myAssignmentTaskListener"/> <entry key="myExecutionListener" value-ref="myExecutionListener"/> </map> </property> |
然后在表达式写成调用方法${myAssignmentTaskListener.notify(task)}, 委托配置的是实现类,表达式配置的是调用方法。
配置方式三:使用委托表达式delegateExpression
定义两个bena
1 2 |
<bean id="myAssignmentTaskListener" class="com.pandy.activiti.listener.MyAssignmentTaskListener"/> <bean id="myExecutionListener" class="com.pandy.activiti.listener.MyExecutionListener"/> |
在processEngineConfiguration里面暴露bena
1 2 3 4 5 6 |
<property name="beans"> <map> <entry key="myAssignmentTaskListener" value-ref="myAssignmentTaskListener"/> <entry key="myExecutionListener" value-ref="myExecutionListener"/> </map> </property> |
然后在委托表达式设定成${myExecutionListener}或者${myAssignmentTaskListener}
activiti使用的时候,通常需要跟业务紧密的结合在一起,有些业务非常的复杂,通常有如下一些场景:
1.activiti人员动态的分配。
2.当前任务节点完成的时候,指定需要指定下一个节点的处理人(比如,一个请假流程,a员工请假,需要指定下一步需要处理请假流程的领导。)。
3.任务节点完成的时候,需要一些复杂业务,(比如当前节点完成的时候,需要调用我们的jms消息系统发送消息)。
4.任务流转到当前的节点的时候,需要监控当前任务节点的一些信息或者其他的业务信息。
5.当前的任务节点分配处理人的时候,需要触发自定义的一些业务。
6.流程开始结束的时候,需要处理业务信息。
7.经过任务节点的出线,也就是连线的时候,需要触发自定义的业务。
那我们怎么实现以上的这些需求呢?这个时候,我们就需要使用activiti监听器,activiti提供的监听器怎么实现,以及如何触发,这些都需要我们一步步了解。下面就详细的介绍activiti监听器。
从 activiti监听器的使用范围来看,大致分为三种:
1.全局的监听器。
2.连线的监听器。
3.节点的监听器。
下面我们一个个的来看如何使用这些监听器。
详细看原文