時應友
本文以行業精益管理對業務高度協同為出發點,分析SOA在事件響應與處理方面的固有缺陷,引入事件驅動(EDA)概念,探討EDA架構對協同管理的支撐,研究事件驅動的關鍵技術,重點剖析事件的規范化描述以及事件驅動的原理,提出一種基于EDA架構的協同平臺框架的設計思路和實現方法,最后以“基于EDA架構的協同辦公平臺”為背景,將該架構應用于實際系統中加以實現。
近年來,煙草行業通過增加產量和提升產品結構實現了快速發展,但依靠外延式發展的潛力和速度難以持續,導致重點費用控制艱難、適應市場能力不強、運行效率不高等問題。精益管理的本質就是利用最小的資源創造最大的價值,改變傳統管理理念和行為模式,優化資源配置,推進管理創新,注重信息化支撐,不斷優化價值流程,持續提升企業管理水平。
精益管理對應用和服務之間的協同要求日益提高。一般情況下企業內部協同是通過工作流實現,外部協同則通過SOA等實現。近年來,基于SOA架構的協同可實現跨系統、跨組織的流程協作,在一定時期、一定程度上實現了對協同的支撐,但對極端松耦合、高效率、易擴展等支撐并不令人滿意。請求/響應的服務模式主要支持同步的服務調用和執行,即服務請求者發出請求后,在請求者和提供者間須維持一個鏈接直到請求者收到響應。這就產生了兩個問題:一是請求者和服務者必須知道彼此的存在,二是如果得不到響應,請求者不得不采用輪詢方式不斷發出請求。事實上,協同的請求往往是來自分布式的、不可預知的應用或服務。這種線性的協同模式不能很好支撐不可預知、松耦合、異步的系統或服務間的協同。
理想的協同環境下,流程是通過事件觸發。因此,本文將事件驅動的方法和面向服務的方法相結合,引入了EDA作為協同平臺的支撐。
EDA是Gartner公司2003年提出的一種設計和構建應用的方法,EDA也稱為事件驅動的SOA,與SOA是兩種相容且互補的架構。二者最明顯的區別是,SOA采用請求/響應服務機制,EDA通常采用發布/訂閱機制。請求/響應服務服務模式中,發布者和使用者是一對一的關系,服務使用者調用發布者提供的服務,且必須等待,直到提供者一端的操作完成。而消息發布/訂閱模式可實現事件的一對多靈活分發:發布者將事件發布到中央處理主干上,傳遞給多個訂閱者,其可讓事件的發布者和訂閱者之間徹底解耦。
EDA與SOA是兩種相容且互補的架構。一個典型的事件驅動模型由事件發布者、事件訂閱者、事件管理器和服務注冊中心組成。在事件的發布者和訂閱者之間要通過事件和服務的注冊中心來連接兩者。如圖1所示:

事件發布者(或事件源)生成事件。事件發布者可以是應用程序、數據存儲、服務、業務流程、發送器、傳感器或者協作工具。事件訂閱者接到事件時,由其確定觸發哪些處理,包括(但不局限于)調用一個服務或啟動一個業務流程,將事件發布到一個訂閱中心,直接通知人員或系統,生成一個新事件,以及捕獲事件以備用。
EDA架構本質上是一個極端松耦合且高度分布的框架,事件的發布者只需發布這個事件,并不需要了解會引發什么事情,也不需要知道訂閱者的信息,事件的發布者和訂閱者也不必同時處于活動狀態。相應的,事件訂閱者也只需接受事件,并根據規則執行下一動作,并不需要知道事件是由誰引發的。
從以上特性可以看出,EDA具備非實時、異步、極端松耦合等特性,它將傳統的輪詢模式轉化為了事件驅動的推動模式,這就意味著事件觸發的消息能夠在獨立的、非耦合的組件和服務之間傳遞,實現表面上毫無關聯的應用或服務之間的整合。因此,EDA是解決SOA松耦合通信與協同服務的理想解決方案,它不僅是激活和驅動分布式系統的直接動因,也是進一步構建分布式對象管理的基礎。
基于EDA架構是最近研究的熱點之一。Brenda M. Michelson提出了一個實現EDA架構的模型,把實現EDA架構的組件分為五類:
事件元數據(Event Metadata),包括事件描述(Event Specifications)和事件處理規則(Event Processing Rules)。
事件處理(Event Processing),包括事件處理引擎(Event Processing Engine)和事件數據(event occurrence data)。
事件工具(Event Tooling),包括開發工具和管理工具,開發工具用于設定事件的描述和事件處理規則,管理工具則提供可視化的流程監控、干預以及統計分析功能。
企業集成主干(Enterprise Integration),實現對事件的預處理(過濾、路由、轉換等)、事件通道傳輸、服務調用、業務流程調用、事件發布訂閱和企業信息訪問等功能。
集成資源和目標(Sources and Targets),包括企業應用、服務、業務流程、數據庫、人、代理(agent)等企業資源。
在上述基礎上,本文設計了一種基于EDA架構的協同平臺模型,如圖2所示:

核心內容包括以下幾個部分:
企業服務總線(ESB:Enterprise Service Bus):松散耦合服務和應用之間標準的集成方式,承擔解耦中介的角色,在EDA架構中提供服務注冊中心和事件注冊中心,實現協議轉換、消息轉換、消息路由等功能;提供服務等級協議、服務管理監控等管理功能。
本體(Ontology)服務器:理清事件之間的邏輯關系,提取事件的關鍵詞,為接下來的服務編排處理做好準備。本體服務器提供明確定的詞匯表,描述概念與概念之間的關系,實現對事件的規范化描述,使事件能夠被響應方識別。
事件管理器:是平臺的中央控制器,是對外溝通的窗口,負責響應外部用戶的要求,并按要求給系統中的EDA或SOA元件分配任務。它負責與事件注冊中心、規則引擎、BPM、Ontology本體服務器進行交互和調度。
規則引擎:解析、調用、執行規則包的服務,由推理引擎發展而來。一個業務規則包含一組條件和在此條件下執行的操作,規則引擎定義了在什么條件下觸發一個規則,以及當規則被觸發后,執行規則對應的流程。
業務流程管理(BPM: Business Process Management):通常包括建模與設計、部署與執行、監控與分析、優化與調整、工作流引擎、流程仿真、流程監控、流程KPI分析、等工具,可以完成流程的編排、運行,可視化監控流程的執行情況,對流程執行過程中出現的意外進行處理,對流程執行的情況進行統計、分析。
開發工具和管理工具:開發工具用于對事件的描述、對事件處理規則的設定,管理工具提供可視化的流程監控、干預以及統計分析功能。
基于EDA架構的請求/響應行為模型如圖3所示,其工作流程如圖4所示。


(一)事件模型
事件實際上是指事情的記錄,以基本形式表示的事件可以提供豐富的內容,通常它包含了事件發生的時間、來源及相關數據,以及希望返回的結果等。事件模型用XML格式描述,用schema驗證。
(二)事件驅動模型
事件架構通常包括事件通道、事件發布者和事件接收者。事件通道負責注冊和取消注冊事件接收者,并負責將事件消息從事件發布者以匿名方式路由到事件接收者。下面的框架給出了事件通道功能,即根據事件對象實現的Java 類或接口的類型,來過濾消息,并將消息路由到適當的接收者。如圖5所示:

當事件管理器接收到一個事件,調用本體服務器對事件本身進行規范化描述,并調用規則引擎,明確調用流程的走向,最后把流程傳遞給BPM,由BPM調用相應的流程(或一組流程),程序片段如下:
public static Object invokeAction(String process, String activity, String action, String executor, String executeContext, Map events)
調用Action
參數:
String process process流程標識, 帶路徑
String activity activity活動標識
String action action動作標識
String executor 執行者
String executeContext 執行環境
Map events 事件參數
返回:
Object //包含了根據事件<返回要求>規定的格式化信息,或是產生新的事件等。
可以觸發多個流程:
public static List invokeActions(List
調用多個Action
參數:
List
List
List
List
List
List events 事件參數列表
返回:
List 返回每個流程處理后的結果。
基于EDA架構的協同辦公平臺以組織戰略目標和階段目標為核心,以目標分解后的任務為驅動,以規范化的流程、高度共享的信息、即時快捷的溝通為紐帶,為決策、管理、執行層提供統一、規范、高效的基礎管理和協作平臺,通過績效管理體系實現人員、任務、目標的三級量化考評,為決策和目標的提升提供依據。系統主要由統一信息門戶、移動門戶、目標管理、體系管理、綜合事務管理、績效考核、對標管理、創新管理、創優管理、知識管理、決策支持等核心應用體系構成。
基于EDA架構的協同平臺提供的這種異步、極端松耦合的協同機制,很好地滿足了不可預知的、復雜的異構應用系統或服務間協同的需求,有效解決了信息孤島、應用孤島和資源孤島三大問題,實現跨部門、跨組織、跨系統的流程互聯和數據交換,滿足組織上下貫通、左右協同的需求。協同平臺作為支撐組織管理和業務活動的核心應用,承載著組織意圖、戰略管控、制度運行、事務處理、績效考核、知識型和學習型組織建設等業務落地。
本文分析了企業業務協同中存在的問題,探討了基于事件驅動的架構對協同的支持,以及實現事件驅動思想的關鍵技術,在此基礎上給出了事件模型以及一個基于事件驅動的協同模型,分析了協同模型的各組成部分及事件驅動機制工作的原理,重點探討了事件的規范化描述以及事件驅動的原理,并提出了基于EDA架構的協同辦公平臺的設計與應用實現。