工作流程事件監聽可用于任務提醒、超時提醒等的模塊的設計。以下是相關事件的介紹
一、事件監聽類型
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
二、配置監聽接口
<bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration"> ... <property name="eventListeners"> <list> <bean class="org.activiti.engine.example.MyEventListener" /> </list> </property> </bean>
三、監聽特殊事件
<bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration"> ... <property name="typedEventListeners"> <map> <entry key="JOB_EXECUTION_SUCCESS,JOB_EXECUTION_FAILURE" > <list> <bean class="org.activiti.engine.example.MyJobEventListener" /> </list> </entry> </map> </property> </bean>
這里舉一個代碼例子:
public class ActivitiMessageListener implements ActivitiEventListener {? public boolean isFailOnException() { return false; }? public void onEvent(ActivitiEvent event) { switch (event.getType()) { case ACTIVITY_COMPENSATE: // 一個節點將要被補償。事件包含了將要執行補償的節點id。 break; case ACTIVITY_COMPLETED: // 一個節點成功結束 break; case ACTIVITY_ERROR_RECEIVED: // 一個節點收到了一個錯誤事件。在節點實際處理錯誤之前觸發。 事件的activityId對應著處理錯誤的節點。 這個事件后續會是ACTIVITY_SIGNALLED或ACTIVITY_COMPLETE, 如果錯誤發送成功的話。 break; case ACTIVITY_MESSAGE_RECEIVED: // 一個節點收到了一個消息。在節點收到消息之前觸發。收到后,會觸發ACTIVITY_SIGNAL或ACTIVITY_STARTED,這會根據節點的類型(邊界事件,事件子流程開始事件) break; case ACTIVITY_SIGNALED: // 一個節點收到了一個信號 break; case ACTIVITY_STARTED: // 一個節點開始執行 break; case CUSTOM: break; case ENGINE_CLOSED: // 監聽器監聽的流程引擎已經關閉,不再接受API調用。 break; case ENGINE_CREATED: // 監聽器監聽的流程引擎已經創建完畢,并準備好接受API調用。 break; case ENTITY_ACTIVATED: // 激活了已存在的實體,實體包含在事件中。會被ProcessDefinitions, ProcessInstances 和 Tasks拋出。 break; case ENTITY_CREATED: // 創建了一個新實體。實體包含在事件中。 break; case ENTITY_DELETED: // 刪除了已存在的實體。實體包含在事件中 break; case ENTITY_INITIALIZED: // 創建了一個新實體,初始化也完成了。如果這個實體的創建會包含子實體的創建,這個事件會在子實體都創建/初始化完成后被觸發,這是與ENTITY_CREATED的區別。 break; case ENTITY_SUSPENDED: // 暫停了已存在的實體。實體包含在事件中。會被ProcessDefinitions, ProcessInstances 和 Tasks拋出。 break; case ENTITY_UPDATED: // 更新了已存在的實體。實體包含在事件中。 break; case JOB_EXECUTION_FAILURE: // 作業執行失敗。作業和異常信息包含在事件中。 break; case JOB_EXECUTION_SUCCESS: // 作業執行成功。job包含在事件中。 break; case JOB_RETRIES_DECREMENTED: // 因為作業執行失敗,導致重試次數減少。作業包含在事件中。 break; case MEMBERSHIPS_DELETED: // 所有成員被從一個組中刪除。在成員刪除之前觸發這個事件,所以他們都是可以訪問的。 因為性能方面的考慮,不會為每個成員觸發單獨的MEMBERSHIP_DELETED事件。 break; case MEMBERSHIP_CREATED: // 用戶被添加到一個組里。事件包含了用戶和組的id。 break; case MEMBERSHIP_DELETED: // 用戶被從一個組中刪除。事件包含了用戶和組的id。 break; case TASK_ASSIGNED: // 任務被分配給了一個人員。事件包含任務。 break; case TASK_COMPLETED: // 任務被完成了。它會在ENTITY_DELETE事件之前觸發。當任務是流程一部分時,事件會在流程繼續運行之前, 后續事件將是ACTIVITY_COMPLETE,對應著完成任務的節點。 break; case TIMER_FIRED: // 觸發了定時器。job包含在事件中。 break; case UNCAUGHT_BPMN_ERROR: break; case VARIABLE_CREATED: break; case VARIABLE_DELETED: break; case VARIABLE_UPDATED: break; default: break; } }?}
新人創作打卡挑戰賽發博客就能抽獎!定制產品紅包拿不停!
總結
以上是生活随笔為你收集整理的Activiti工作流之事件监听详解-ActivitiEventListener的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。