- Activiti權威指南
- 冀正
- 650字
- 2020-11-28 16:00:05
6.1 初始化事件轉發器
事件轉發器的初始化過程如代碼清單6-1所示。
代碼清單6-1 ProcessEngineConfigurationImpl.java

如果想要使用事件轉發器發布事件,那么初始化事件轉發器是一個必不可少的環節,下面概括總結initEventDispatcher方法的初始化邏輯。
(1)第6~7行初始化前的準備工作。
在2.4節中詳細講了開關屬性的初始化過程,簡單概括為:首先判斷指定的開關屬性值是否為空,如果不為空則直接使用客戶端指定的類或者值進行初始化,否則使用系統內置的類或者具體值進行初始化工作。事件轉發器的處理也不例外,引擎默認使用的事件轉發器為ActivitiEventDispatcherImpl類,當然也可以通過設置ProcessEngineConfigurationImpl類中的eventDispatcher屬性值注入自定義事件轉發器。
(2)開啟事件轉發功能。
第9行設置eventDispatcher對象的屬性enabled值為true,從該屬性的默認值可以看出,流程引擎默認開啟了事件轉發功能,如果開發人員不打算使用Activiti中的事件轉發功能,可以將該enableEventDispatcher開關屬性值設置為false從而對事件轉發功能進行全局禁用。
(3)注冊全局事件監聽器。
首先第10行判斷eventListeners集合是否為空,如果該集合不為空,則第11~12行循環遍歷該集合并調用eventDispatcher對象中的addEventListener方法注冊全局事件監聽器。
(4)注冊具體類型的事件監聽器。
步驟(3)負責注冊全局事件監聽器,第14~19行負責注冊具體類型的事件監聽器,typedEventListeners集合為Map數據結構,key對應具體的事件類型,value對應具體類型的事件監聽器,處理流程比較簡單,首先遍歷typedEventListeners集合,第16行提取key值并將其轉化為ActivitiEventType類型的數組(具體處理過程是將key值使用“, ”進行分割,可以參考getTypesFromString方法的具體實現),最后第17~18行根據listenerToAdd對象和types進行具體類型的事件監聽器的注冊工作。
建議
在實際項目開發中,建議開發人員開啟事件轉發功能。
- INSTANT Mock Testing with PowerMock
- 手機安全和可信應用開發指南:TrustZone與OP-TEE技術詳解
- iOS Game Programming Cookbook
- Developing Middleware in Java EE 8
- Python Geospatial Development(Second Edition)
- Magento 1.8 Development Cookbook
- Expert Data Visualization
- 一塊面包板玩轉Arduino編程
- Java網絡編程實戰
- R數據科學實戰:工具詳解與案例分析
- Machine Learning With Go
- SpringBoot從零開始學(視頻教學版)
- ASP.NET 4.0 Web程序設計
- Julia數據科學應用
- Python+Office:輕松實現Python辦公自動化