Activiti工作流之事件监听详解-ActivitiEventListener

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

一、事件监听类型


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_SIGNALACTIVITY_STARTED,这会根据节点的类型(边界事件,事件子流程开始事件)

ACTIVITY_ERROR_RECEIVED

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值