工作流程事件监听可用于任务提醒、超时提醒等的模块的设计。以下是相关事件的介绍

一、事件监听类型

ENGINE_CREATED

监听器监听的流程引擎已经创建完毕,并准备好接受API调用。

ENGINE_CLOSED

监听器监听的流程引擎已经关闭,不再接受API调用。

ENTITY_CREATED

创建了一个新实体。实体包含在事件中。

ENTITY_INITIALIZED

创建了一个新实体,初始化也完成了。如果这个实体的创建会包含子实体的创建,这个事件会在子实体都创建/初始化完成后被触发,这是与ENTITY_CREATED的区别。

ENTITY_UPDATED

更新了已存在的实体。实体包含在事件中。

ENTITY_DELETED

删除了已存在的实体。实体包含在事件中。

ENTITY_SUSPENDED

暂停了已存在的实体。实体包含在事件中。会被ProcessDefinitions, ProcessInstances 和 Tasks抛出。

ENTITY_ACTIVATED

激活了已存在的实体,实体包含在事件中。会被ProcessDefinitions, ProcessInstances 和 Tasks抛出。

JOB_EXECUTION_SUCCESS

作业执行成功。job包含在事件中。

JOB_EXECUTION_FAILURE

作业执行失败。作业和异常信息包含在事件中。

JOB_RETRIES_DECREMENTED

因为作业执行失败,导致重试次数减少。作业包含在事件中。

TIMER_FIRED

触发了定时器。job包含在事件中。

JOB_CANCELED

取消了一个作业。事件包含取消的作业。作业可以通过API调用取消,   任务完成后对应的边界定时器也会取消,在新流程定义发布时也会取消。

ACTIVITY_STARTED

一个节点开始执行

ACTIVITY_COMPLETED

一个节点成功结束

ACTIVITY_SIGNALED

一个节点收到了一个信号

ACTIVITY_MESSAGE_RECEIVED

一个节点收到了一个消息。在节点收到消息之前触发。收到后,会触发ACTIVITY_SIGNAL或ACTIVITY_STARTED,这会根据节点的类型(边界事件,事件子流程开始事件)

ACTIVITY_ERROR_RECEIVED

一个节点收到了一个错误事件。在节点实际处理错误之前触发。   事件的activityId对应着处理错误的节点。 这个事件后续会是ACTIVITY_SIGNALLED或ACTIVITY_COMPLETE, 如果错误发送成功的话。

UNCAUGHT_BPMN_ERROR

抛出了未捕获的BPMN错误。流程没有提供针对这个错误的处理器。   事件的activityId为空。

ACTIVITY_COMPENSATE

一个节点将要被补偿。事件包含了将要执行补偿的节点id。

VARIABLE_CREATED

创建了一个变量。事件包含变量名,变量值和对应的分支或任务(如果存在)。

VARIABLE_UPDATED

更新了一个变量。事件包含变量名,变量值和对应的分支或任务(如果存在)。

VARIABLE_DELETED

删除了一个变量。事件包含变量名,变量值和对应的分支或任务(如果存在)。

TASK_ASSIGNED

任务被分配给了一个人员。事件包含任务。

TASK_CREATED

创建了新任务。它位于ENTITY_CREATE事件之后。当任务是由流程创建时,     这个事件会在TaskListener执行之前被执行。

TASK_COMPLETED

任务被完成了。它会在ENTITY_DELETE事件之前触发。当任务是流程一部分时,事件会在流程继续运行之前,   后续事件将是ACTIVITY_COMPLETE,对应着完成任务的节点。

TASK_TIMEOUT

任务已超时,在TIMER_FIRED事件之后,会触发用户任务的超时事件,     当这个任务分配了一个定时器的时候。

PROCESS_COMPLETED

流程已结束。在最后一个节点的ACTIVITY_COMPLETED事件之后触发。 当流程到达的状态,没有任何后续连线时, 流程就会结束。

MEMBERSHIP_CREATED

用户被添加到一个组里。事件包含了用户和组的id。

MEMBERSHIP_DELETED

用户被从一个组中删除。事件包含了用户和组的id。

MEMBERSHIPS_DELETED

所有成员被从一个组中删除。在成员删除之前触发这个事件,所以他们都是可以访问的。   因为性能方面的考虑,不会为每个成员触发单独的MEMBERSHIP_DELETED事件。

监听接口org.activiti.engine.delegate.event.ActivitiEventListener

二、配置监听接口

  1. <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
  2. ...
  3. <property name="eventListeners">
  4. <list>
  5. <bean class="org.activiti.engine.example.MyEventListener" />
  6. </list>
  7. </property>
  8. </bean>

三、监听特殊事件

  1. <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
  2. ...
  3. <property name="typedEventListeners">
  4. <map>
  5. <entry key="JOB_EXECUTION_SUCCESS,JOB_EXECUTION_FAILURE" >
  6. <list>
  7. <bean class="org.activiti.engine.example.MyJobEventListener" />
  8. </list>
  9. </entry>
  10. </map>
  11. </property>
  12. </bean>

这里举一个代码例子:

  1. public class ActivitiMessageListener implements ActivitiEventListener {
  2. public boolean isFailOnException() {
  3. return false;
  4. }
  5. public void onEvent(ActivitiEvent event) {
  6. switch (event.getType()) {
  7. case ACTIVITY_COMPENSATE:
  8. // 一个节点将要被补偿。事件包含了将要执行补偿的节点id。
  9. break;
  10. case ACTIVITY_COMPLETED:
  11. // 一个节点成功结束
  12. break;
  13. case ACTIVITY_ERROR_RECEIVED:
  14. // 一个节点收到了一个错误事件。在节点实际处理错误之前触发。 事件的activityId对应着处理错误的节点。 这个事件后续会是ACTIVITY_SIGNALLED或ACTIVITY_COMPLETE, 如果错误发送成功的话。
  15. break;
  16. case ACTIVITY_MESSAGE_RECEIVED:
  17. // 一个节点收到了一个消息。在节点收到消息之前触发。收到后,会触发ACTIVITY_SIGNAL或ACTIVITY_STARTED,这会根据节点的类型(边界事件,事件子流程开始事件)
  18. break;
  19. case ACTIVITY_SIGNALED:
  20. // 一个节点收到了一个信号
  21. break;
  22. case ACTIVITY_STARTED:
  23. // 一个节点开始执行
  24. break;
  25. case CUSTOM:
  26. break;
  27. case ENGINE_CLOSED:
  28. // 监听器监听的流程引擎已经关闭,不再接受API调用。
  29. break;
  30. case ENGINE_CREATED:
  31. // 监听器监听的流程引擎已经创建完毕,并准备好接受API调用。
  32. break;
  33. case ENTITY_ACTIVATED:
  34. // 激活了已存在的实体,实体包含在事件中。会被ProcessDefinitions, ProcessInstances 和 Tasks抛出。
  35. break;
  36. case ENTITY_CREATED:
  37. // 创建了一个新实体。实体包含在事件中。
  38. break;
  39. case ENTITY_DELETED:
  40. // 删除了已存在的实体。实体包含在事件中
  41. break;
  42. case ENTITY_INITIALIZED:
  43. // 创建了一个新实体,初始化也完成了。如果这个实体的创建会包含子实体的创建,这个事件会在子实体都创建/初始化完成后被触发,这是与ENTITY_CREATED的区别。
  44. break;
  45. case ENTITY_SUSPENDED:
  46. // 暂停了已存在的实体。实体包含在事件中。会被ProcessDefinitions, ProcessInstances 和 Tasks抛出。
  47. break;
  48. case ENTITY_UPDATED:
  49. // 更新了已存在的实体。实体包含在事件中。
  50. break;
  51. case JOB_EXECUTION_FAILURE:
  52. // 作业执行失败。作业和异常信息包含在事件中。
  53. break;
  54. case JOB_EXECUTION_SUCCESS:
  55. // 作业执行成功。job包含在事件中。
  56. break;
  57. case JOB_RETRIES_DECREMENTED:
  58. // 因为作业执行失败,导致重试次数减少。作业包含在事件中。
  59. break;
  60. case MEMBERSHIPS_DELETED:
  61. // 所有成员被从一个组中删除。在成员删除之前触发这个事件,所以他们都是可以访问的。 因为性能方面的考虑,不会为每个成员触发单独的MEMBERSHIP_DELETED事件。
  62. break;
  63. case MEMBERSHIP_CREATED:
  64. // 用户被添加到一个组里。事件包含了用户和组的id。
  65. break;
  66. case MEMBERSHIP_DELETED:
  67. // 用户被从一个组中删除。事件包含了用户和组的id。
  68. break;
  69. case TASK_ASSIGNED:
  70. // 任务被分配给了一个人员。事件包含任务。
  71. break;
  72. case TASK_COMPLETED:
  73. // 任务被完成了。它会在ENTITY_DELETE事件之前触发。当任务是流程一部分时,事件会在流程继续运行之前, 后续事件将是ACTIVITY_COMPLETE,对应着完成任务的节点。
  74. break;
  75. case TIMER_FIRED:
  76. // 触发了定时器。job包含在事件中。
  77. break;
  78. case UNCAUGHT_BPMN_ERROR:
  79. break;
  80. case VARIABLE_CREATED:
  81. break;
  82. case VARIABLE_DELETED:
  83. break;
  84. case VARIABLE_UPDATED:
  85. break;
  86. default:
  87. break;
  88. }
  89. }
  90. }

Activiti工作流之事件监听详解-ActivitiEventListener相关推荐

  1. html学习 - jquery事件监听详解

    html学习 - jquery事件监听详解 html学习 - jquery事件监听详解 监听方法 监听方法参数解释 click参数 事件自动执行问题解决 bind方法 live方法 监听方法 在jqu ...

  2. JavaScript 的addEventListener() 事件监听详解!

    JavaScript 的addEventListener() 事件监听详解! addEventListener() 用于向指定元素添加事件.  可以向一个元素添加多次事件或者多次不同事件,后面的事件是 ...

  3. Activiti工作流学习之流程图应用详解

    Activiti工作流学习之流程图应用详解 1.目的 了解Activiti工作流是怎样应用流程图的. 2.环境准备 2.1.相关软件及版本 jdk版本:Jdk1.7及以上 IDE:eclipse 数据 ...

  4. Activiti中的事件监听

    工作流程事件监听可用于任务提醒.超时提醒等的模块的设计. 其默认的事件监听接口:org.activiti.engine.delegate.event.ActivitiEventListener 事件类 ...

  5. Vue watch监听详解,一篇文章彻底搞懂Vue2/Vue3中的watch监听

    watch监听在vue2和vue3中的用法详解(全) Vue2中的watch用法 Vue3中的watch用法 首先写一个vue页面 <template><div><h1& ...

  6. Android 卸载监听详解

    目前市场上比较多的应用在用户卸载后会弹出意见反馈界面,比如360手机卫士,腾讯手机管家,应用宝等等,虽然本人不太认同其交互方式,但是在技术实现上还是可以稍微研究下的.其实要实现这个功能,最主要的就是监 ...

  7. 手动更改oracle监听,详解Oracle数据库手动注册监听的方法

    本文主要介绍了为一个Oracle数据库(t02)配置多个监听(listener)的实验,过程有点小曲折.通过这个实验让我们来学习一下如何手动注册监听.以下是演示的过程. 1.新增两个测试的监听,lis ...

  8. java监听上传文件,Springmvc文件上传监听详解

    spring mvc CommonsMultipartResolver 文件上传监听. /** * 重写 parseRequest方法 监听 */ @Override protected Multip ...

  9. android listview ontouchlistener,Android ListView监听滑动事件的方法(详解)

    ListView的主要有两种滑动事件监听方法,OnTouchListener和OnScrollListener 1.OnTouchListener OnTouchListener方法来自View中的监 ...

最新文章

  1. 基于poll实现的echo服务器
  2. 属于链路状态路由选择协议,
  3. 4G EPS 的接口类型
  4. 位运算与组合搜索(二)
  5. [YTU]_2354 (H 实现复数类中的加运算符重载【C++运算符重载】)
  6. 【根据网上其他没有解决】XAMPP报错Error: Apache shutdown unexpectedly
  7. tensorflow从入门到放弃(三)
  8. ZOJ - 3228 Searching the String(AC自动机求不重复子串出现次数)
  9. Object o = new Object()在内存中占几个字节
  10. python是如何登上编程语言排行榜榜首的
  11. 【机器学习】脑机接口利器:错误率仅3%
  12. access文本框如何分开_ACCESS 2007 如何在窗体中将一个文本框的内容复制给另外一个文本框?...
  13. 「HNOI 2015」落忆枫音
  14. 《金字塔原理》要点汇总
  15. 视频播放设计测试用例
  16. 十个免费专利检索分析网站
  17. python程序实现分析_Python编程快速上手——疯狂填词程序实现方法分析
  18. C语言运算符优先级及结合性
  19. LS1028修改调试串口
  20. Python之Django 模型Model

热门文章

  1. python程序调用函数的过程_Python_自定义函数_使用_运行流程
  2. linux服务器上文件编码格式转化shell
  3. (软件工程复习核心重点)第三章需求分析-第五节:验证软件需求
  4. 1-8:学习shell之高级键盘技巧
  5. C++设计模式-Adapter适配器模式
  6. 数据库事务及事务的特征
  7. jqgrid表格下拉搜索多选框优化—使用select下拉多选插件
  8. OPENSTACK重装系统失败导致虚拟机状态为error
  9. NOIP201208同余方程
  10. 在Unity3D项目中接入ShareSDK实现安卓平台微信分享功能(可使用ShareSDK默认UI或自定义UI)...