摘 要:分析了模具企業(yè)信息共享與數(shù)據(jù)集成的需求與特點,結(jié)合面向服務(wù)思想和事件驅(qū)動架構(gòu),提出了一種事件驅(qū)動型企業(yè)服務(wù)總線(enterprise service bus,ESB)框架;闡述了該框架的運行原理及實現(xiàn)技術(shù),并在此框架基礎(chǔ)上實現(xiàn)了基于SOA的模具企業(yè)設(shè)計制造集成平臺數(shù)據(jù)集成服務(wù)。該框架滿足模具企業(yè)事件驅(qū)動的業(yè)務(wù)特征,并采用總線式的集成模式和異步消息的方式,松散耦合地集成各種應(yīng)用系統(tǒng)及數(shù)據(jù),降低了應(yīng)用集成的難度和成本,為中小型制造企業(yè)解決數(shù)據(jù)集成問題提供了新的方案。
關(guān)鍵詞:事件驅(qū)動; 企業(yè)服務(wù)總線; 數(shù)據(jù)集成; 面向服務(wù)架構(gòu)
中圖分類號:TP391文獻標(biāo)志碼:A
文章編號:1001-3695(2009)06-2325-03
doi:10.3969/j.issn.1001-3695.2009.06.098
Event-driven enterprise service bus framework fordata integration of die mould enterprises
HU Sha, LI Jian-jun, LI Bei
(State Key Laboratory of Material Processing Die Mould Technology, Huazhong University of Science Technology, Wuhan 430074, China)
Abstract:
Based on the analysis of the requirements and features of information sharing and data integration for die mould enterprises, this paper proposed a novel event-driven enterprise service bus (ESB) framework according to service-oriented principle and event-driven architecture. Introduced the runtime mechanism and realization technologies of the framework and realized SOA-based data integration service due to the framework for die mould enterprises design and manufacture integration platform. This framework meets the needs of event-driven business, adopts bus integration pattern and asynchronous message style to integrate different application systems and data in loosely-coupled manner. It can reduce the difficulty and implementation costs and provide a new approach to solve the problem of data integration for small and medium-sized manufacture enterprises.
Key words:event-driven; enterprise service bus(ESB); data integration; service-oriented architecture
近年來模具企業(yè)不斷推進信息化建設(shè),將諸多單元產(chǎn)品如CAx、PDM、ERP、CRM等引入到設(shè)計、制造、管理的各個環(huán)節(jié),但由于配置系統(tǒng)時只考慮單個部門的使用需求,很少考慮到信息的共享,從而導(dǎo)致信息孤立,使得設(shè)計、制造、管理等部門之間需要通過中間介質(zhì)進行信息交換;同時,隨著模具行業(yè)產(chǎn)業(yè)鏈的不斷發(fā)展和成熟,企業(yè)與客戶、企業(yè)與供應(yīng)商之間的交流愈加密切,但由于溝通渠道單一,信息交換自動化程度不高,效率低下,也制約了模具企業(yè)自身的發(fā)展。模具企業(yè)迫切需要一種數(shù)據(jù)集成平臺,幫助他們合理組織企業(yè)內(nèi)的各種資源,消除信息孤島,同時能及時準(zhǔn)確地處理客戶、供應(yīng)商的數(shù)據(jù)并共享到企業(yè)內(nèi)部應(yīng)用中,增強信息溝通能力,以快速應(yīng)對多變的市場需求。
針對模具企業(yè)面向訂單生產(chǎn)的業(yè)務(wù)特點與數(shù)據(jù)集成需求,本文提出了一種基于事件驅(qū)動ESB的數(shù)據(jù)集成框架。它采用面向服務(wù)架構(gòu)風(fēng)格,使之具有良好的擴展性和低耦合性,同時在傳統(tǒng)ESB通信、集成、服務(wù)交互功能[1]的基礎(chǔ)上擴展了事件驅(qū)動的特性,使業(yè)務(wù)流程的變化或用戶集成操作及時并且異步地反映到框架的監(jiān)聽組件上,提高了集成效率;更為重要的是該框架貼近模具企業(yè)的業(yè)務(wù)特點,能靈活適應(yīng)設(shè)計、生產(chǎn)情況,降低應(yīng)用實施的成本,簡化集成操作;在此框架的基礎(chǔ)上開發(fā)了基于面向服務(wù)架構(gòu)(service-oriented architecture,SOA)的模具設(shè)計制造集成平臺中的數(shù)據(jù)集成服務(wù),實現(xiàn)了BOM、郵件、協(xié)作消息、異步報表、預(yù)警、外協(xié)進度、采購單等多種集成功能,滿足了模具企業(yè)內(nèi)部與企業(yè)之間的多方面數(shù)據(jù)交互與共享的需求。
1 基于事件驅(qū)動ESB框架
1.1 企業(yè)服務(wù)總線
SOA是一種組件模型,它可以根據(jù)需求通過網(wǎng)絡(luò)對松散耦合的粗粒度應(yīng)用組件進行分布式部署、組合和使用。SOA的本質(zhì)就是服務(wù)的集合以及服務(wù)間彼此通信,因此它依賴于將應(yīng)用組件發(fā)布為服務(wù)。業(yè)界對SOA服務(wù)定義的一致觀點是:服務(wù)通過明確的、與實現(xiàn)無關(guān)的接口來定義;服務(wù)被松散綁定,并且可以通過強調(diào)位置透明性和互操作性的通信協(xié)議進行調(diào)用;服務(wù)封裝了可重用的業(yè)務(wù)功能[2]。
Web服務(wù)由于其基于標(biāo)準(zhǔn)、簡單和平臺中立等特性已經(jīng)成為實現(xiàn)SOA的重要技術(shù),但是一些傳統(tǒng)的編程語言和中間件平臺也可能被使用。事實上,所有通過Web服務(wù)描述語言(Web service description language,WSDL)實現(xiàn)服務(wù)接口,并采用XML消息通信方式的技術(shù)都可以整合到SOA架構(gòu)中,如CORBA、J2EE或者.NET技術(shù)。這種非單一標(biāo)準(zhǔn)或技術(shù)實現(xiàn)的SOA中會產(chǎn)生技術(shù)和信息模型不匹配的問題,從根本上說只有以下兩種解決方案[3]:
a)嚴(yán)格遵照要調(diào)用的服務(wù)模塊的技術(shù)模型來構(gòu)建客戶模塊。需要為每一個連接開發(fā)一個接口,這會導(dǎo)致一個點對點的拓撲結(jié)構(gòu)。這種拓撲結(jié)構(gòu)以一種緊密耦合的方式協(xié)調(diào)傳輸協(xié)議、文檔格式、交互風(fēng)格,從而導(dǎo)致難以維護和管理,使得一旦集成就很難改變?nèi)魏我环蕉挥绊懫渌到y(tǒng)。更為重要的是,點對點的集成難以擴展,尤其是隨著集成應(yīng)用數(shù)目的增加,很快就會變得異常復(fù)雜。因此,需要采用一些企業(yè)集成模式(enterprise integration patterns,EIP)[3]去解決以上問題,這就引出了方法b)。
b)在客戶模塊與服務(wù)模塊之間插入一層通信和集成的邏輯。使用集成層來支持已部署框架和應(yīng)用之間的交互。這種期望將Web服務(wù)通過可管理的集成基礎(chǔ)設(shè)施連接到SOA的方法引出了企業(yè)服務(wù)總線(ESB)的概念。ESB是一個開放的、基于標(biāo)準(zhǔn)的消息總線,它能夠?qū)崿F(xiàn)、部署和管理基于SOA的解決方案,是當(dāng)代SOA實現(xiàn)中非常重要的組成部分。ESB具有兩個非常顯著的特征,即降低了集成應(yīng)用之間的耦合程度和將集成邏輯分割成為易于管理的關(guān)注點[4]。
在模具企業(yè)集成應(yīng)用中,受限于企業(yè)規(guī)模和行業(yè)的特點,邏輯雖較為簡單但變化快,客戶需求的變化、設(shè)計方案的變更、生產(chǎn)計劃的調(diào)整、加工事故的出現(xiàn)都隨時影響正常的業(yè)務(wù)流程。這就要求集成操作不可能是預(yù)先定義好特定流程,而是動態(tài)定義、由輸入數(shù)據(jù)驅(qū)動的并行異步事件流,因此急需一種支持事件驅(qū)動特性的新型ESB模型來滿足模具企業(yè)集成業(yè)務(wù)多變的特點。
1.2 基于事件驅(qū)動的ESB原理
由于傳統(tǒng)ESB在模具企業(yè)集成應(yīng)用中的局限性,本文借鑒事件驅(qū)動架構(gòu)(event-driven architecture,EDA)的思想[5],提出了基于事件驅(qū)動的ESB模型。它的最大特點是能夠主動監(jiān)測業(yè)務(wù)流程的變化,捕獲業(yè)務(wù)事件數(shù)據(jù),以異步事件隊列的方式激活自動化集成流程,增強了集成的敏捷性,提高了業(yè)務(wù)響應(yīng)需求的能力。圖1所示的就是該框架的運作原理圖。
事件監(jiān)聽組件是實現(xiàn)事件驅(qū)動特性的核心組件,分為主動和被動監(jiān)聽組件。主動監(jiān)聽組件能主動偵測業(yè)務(wù)事件所產(chǎn)生的結(jié)果(如文檔、郵件、數(shù)據(jù)更新),若發(fā)現(xiàn)有新的事件觸發(fā),就會將該消息存入異步事件隊列,該隊列以先進先出的方式驅(qū)動ESB組件的運行;被動監(jiān)聽組件能夠以預(yù)定義方式(如HTTP請求、Web服務(wù)調(diào)用、JMS隊列消息)響應(yīng)業(yè)務(wù)流程的變化,但這些事件的觸發(fā)點需要耦合到業(yè)務(wù)流程變化所在的應(yīng)用中。通過事件監(jiān)聽組件接收的事件消息,在ESB內(nèi)部都會轉(zhuǎn)換為基于統(tǒng)一XML schema的消息格式,并且這些消息是自感知的,能夠被processor感知,processor感知到新的消息,就會調(diào)用相應(yīng)action class進行處理。若action class本身進行了業(yè)務(wù)邏輯處理,那么數(shù)據(jù)流即終止;若action class只是調(diào)用消息轉(zhuǎn)換引擎對數(shù)據(jù)進行了格式轉(zhuǎn)換,那么后置處理過程(post processing)將調(diào)用另一個action class將最終的數(shù)據(jù)根據(jù)基于內(nèi)容的路由導(dǎo)入到外部系統(tǒng)。導(dǎo)入的方式是多樣的,如在SOA環(huán)境中,將使用SOAPClient組件模擬一個SOAP請求發(fā)送給集成目標(biāo)系統(tǒng)所暴露出來的Web services端點,處理結(jié)束后,通知框架將事件驅(qū)動的業(yè)務(wù)數(shù)據(jù)處理結(jié)果以e-mail等形式告訴相關(guān)業(yè)務(wù)人員。
以模具企業(yè)經(jīng)常發(fā)生的設(shè)計變更為例,通常會暫停車間生產(chǎn)、中止相關(guān)零件采購,并同時啟動新的設(shè)計流程,如這些業(yè)務(wù)邏輯不在同一個信息系統(tǒng)中,就需要數(shù)據(jù)集成。通過該ESB框架,只需要將設(shè)計變更報告單以規(guī)范的形式填寫(通常為Acrobat Forms或Excel)放入指定的文件夾,那么主動監(jiān)聽組件會立即調(diào)用ESB組件進行處理,相關(guān)的action class會按照預(yù)先的配置調(diào)用相關(guān)系統(tǒng)服務(wù),從而使不同應(yīng)用間的數(shù)據(jù)保持一致。
由此可以看出,主動監(jiān)聽組件是事件驅(qū)動ESB實現(xiàn)的關(guān)鍵,它保證了ESB能及時響應(yīng)業(yè)務(wù)需求的變化,以快速靈活的方式實現(xiàn)業(yè)務(wù)數(shù)據(jù)的集成。
2 框架實現(xiàn)的關(guān)鍵技術(shù)分析
目前國內(nèi)外對ESB的研究都非常積極,IBM的WebSphere enterprise service bus、BEA的AquaLogic service bus、RedHat旗下的JBossESB、Sun領(lǐng)導(dǎo)的JBI規(guī)范,都是ESB的具體實現(xiàn)。考慮到模具企業(yè)的IT環(huán)境與實施成本,本文采用基于LGPL開源協(xié)議的JBossESB實現(xiàn)基于事件驅(qū)動的ESB框架。
圖2是該框架的技術(shù)模型,由事件監(jiān)聽組件、功能支撐組件、可視化管理組件和服務(wù)容器四個部分組成。事件監(jiān)聽組件負責(zé)驅(qū)動事件的實時偵測,實現(xiàn)主動式與被動式相結(jié)合的監(jiān)聽功能,并將監(jiān)聽到的事件數(shù)據(jù)轉(zhuǎn)換為ESB規(guī)范的自感知消息格式;功能支撐組件為ESB提供核心功能,如消息格式轉(zhuǎn)換、基于內(nèi)容的路由以及安全可靠性保障,為具體的ESB服務(wù)提供技術(shù)支撐;可視化管理組件方便企業(yè)用戶通過Web可視化界面實現(xiàn)ESB的動態(tài)配置與部署,同時實時監(jiān)控系統(tǒng)運行狀態(tài)與負載情況;而實現(xiàn)具體集成應(yīng)用和邏輯的配置與代碼,將封裝成為ESB組件(ESB module)部署到服務(wù)容器中,該容器負責(zé)解析ESB組件配置并將其作為服務(wù)統(tǒng)一注冊到服務(wù)注冊庫中。組件之間相互分工與協(xié)作,從而構(gòu)建了一個完整的ESB集成解決方案。
2.1 事件監(jiān)聽組件
主動式監(jiān)聽是采用基于調(diào)度的輪詢機制來實現(xiàn)的,當(dāng)ESB組件部署到服務(wù)容器中時,事件監(jiān)聽組件就會從后臺線程池中取出線程來執(zhí)行一個特定的調(diào)度規(guī)則,如執(zhí)行頻率與目標(biāo)地址,然后獲取目標(biāo)地址的元數(shù)據(jù)并與前次進行對比,如果發(fā)生變化,該線程就會取出其中的數(shù)據(jù)并發(fā)送給processor,事件便由此觸發(fā),輪詢繼續(xù)進行。由于采用多線程調(diào)度輪詢,輪詢頻率密集,在保證性能的前提下實現(xiàn)了事件響應(yīng)的及時性。被動式監(jiān)聽則采用了成熟的JMS和HTTP技術(shù),保證了系統(tǒng)的完整性和健壯性。
2.2 功能支撐組件
數(shù)據(jù)轉(zhuǎn)換引擎采用Smooks數(shù)據(jù)轉(zhuǎn)換引擎,它不僅支持基于XSLT的XML格式之間的轉(zhuǎn)換,還支持CSV到XML、XML到CSV、Java到XML、XML到Java等多種數(shù)據(jù)轉(zhuǎn)換形式,能夠為ESB提供靈活的數(shù)據(jù)轉(zhuǎn)換服務(wù)。
基于內(nèi)容的路由則采用Drools規(guī)則引擎,它是一種基于Rete算法的高效規(guī)則引擎,配有類似Java語言的規(guī)則描述語言,能描述較為復(fù)雜的邏輯,并且能用Excel對規(guī)則進行管理,大大方便了規(guī)則的管理與維護。
適配器等價于EIP[3]中的channel adapter(通道銜接器),用于連接應(yīng)用組件與外部應(yīng)用[6],使外部應(yīng)用以一致的方式與ESB進行通信。該框架不僅實現(xiàn)了一系列基于標(biāo)準(zhǔn)的適配器(如HTTP適配器、TCP/IP適配器、EJB適配器等),還為模具企業(yè)特別開發(fā)了AutoCAD、UG等CAD軟件適配器和通用管理軟件模塊的適配器,降低了二次開發(fā)成本。
SOAPClient充當(dāng)一個智能化的Web服務(wù)客戶端,通過將ESB內(nèi)部消息轉(zhuǎn)換為SOAP消息發(fā)送給Web服務(wù)端點,從而實現(xiàn)與外部系統(tǒng)的通信。
服務(wù)注冊庫擴展了標(biāo)準(zhǔn)的UDDI模型,通過對行業(yè)服務(wù)類型的細分,支持更加便利的服務(wù)注冊和精準(zhǔn)的服務(wù)查找。
2.3 可視化管理組件
由于ESB運行在J2EE服務(wù)器環(huán)境中,利用其標(biāo)準(zhǔn)的JMX(Java management extensions)應(yīng)用程序管理框架,實現(xiàn)對ESB各組件的管理,同時采用Portal技術(shù),將配置、部署、監(jiān)控等管理模塊通過Portlet的方式集成到Web界面中,使用戶能輕松地實現(xiàn)對ESB整體運行情況的掌控。
2.4 服務(wù)容器
服務(wù)容器是ESB組件的運行環(huán)境,它通過解析ESB組件的XML配置信息,從而控制ESB組件的行為,另一方面它又為ESB組件和其他支撐組件通信提供支持。一個典型的ESB組件結(jié)構(gòu)如圖3所示。
XML配置文件描述組件的業(yè)務(wù)邏輯和行為,是組件必需的配置;Action class是用戶自定義的消息處理類,它必須實現(xiàn)特定的接口;Jar包則是action class所依賴的函數(shù)庫文件;元數(shù)據(jù)描述記錄組件的創(chuàng)建日期和版本;JMS配置則描述組件運行過程中所需要的JMS隊列參數(shù)。當(dāng)ESB組件部署到服務(wù)容器時,首先將根據(jù)XML配置文件中的services元素信息向UDDI服務(wù)注冊庫注冊該服務(wù)信息,同時根據(jù)providers中提供的信息啟動事件監(jiān)聽,當(dāng)監(jiān)聽到事件消息之后,容器將消息傳送到listeners配置的消息隊列中,通過gateway轉(zhuǎn)變?yōu)樽愿兄ⅲ蝗缓笠来握{(diào)用actions中定義的class執(zhí)行消息操作,而消息操作中涉及的數(shù)據(jù)格式轉(zhuǎn)換、路由、發(fā)送SOAP請求等都將調(diào)用功能支撐組件中的相關(guān)服務(wù)來完成。
由此可見,通過服務(wù)容器的協(xié)調(diào)與管理,ESB組件與事件驅(qū)動ESB框架中的其他組件進行了有序的合作,使整體結(jié)構(gòu)清晰,保證了數(shù)據(jù)集成的可靠性。
3 應(yīng)用實例
采用基于事件驅(qū)動的ESB數(shù)據(jù)集成框架,實現(xiàn)了基于SOA的數(shù)字化設(shè)計制造集成平臺的數(shù)據(jù)集成服務(wù)模塊,該模塊能滿足模具企業(yè)基本的數(shù)據(jù)集成需求,將企業(yè)的電子郵件與消息、電子文檔、FTP或數(shù)據(jù)庫等數(shù)據(jù)來源包裝為可以統(tǒng)一調(diào)用的數(shù)據(jù)對象,通過ESB連接到集成平臺中。用戶的相關(guān)數(shù)據(jù)操作可以驅(qū)動數(shù)據(jù)服務(wù)執(zhí)行預(yù)設(shè)置的集成操作,降低了應(yīng)用難度。圖4所示的是該模塊的功能結(jié)構(gòu)圖,可分為三個部分:
a)應(yīng)用集成。針對企業(yè)應(yīng)用特點,實現(xiàn)應(yīng)用之間的集成和業(yè)務(wù)數(shù)據(jù)的傳遞。目前開發(fā)實現(xiàn)了模具企業(yè)比較有共性的BOM集成和文檔集成模塊。具體企業(yè)實施過程中,還可以借助ESB良好的擴展性能和Portlet插件開發(fā)的方式,快速定制特定環(huán)境下的應(yīng)用。例如實現(xiàn)BOM集成功能中,目的是將CAD圖形文件中的BOM信息自動化地導(dǎo)入到相關(guān)的ERP或管理系統(tǒng)中。首先配置一個CAD適配器(圖5),它可視做一種CAD平臺下的一類圖紙規(guī)范(如AutoCAD平臺下企業(yè)內(nèi)部的圖紙規(guī)范,擁有標(biāo)準(zhǔn)圖框)對應(yīng)的ESB操作組件,其中定義了解析CAD圖紙的Web服務(wù)和對接系統(tǒng)導(dǎo)入的Web服務(wù),并配置了審核操作;當(dāng)設(shè)計人員將設(shè)計好的圖形文件上傳到FTP的指定目錄中時,觸發(fā)一個業(yè)務(wù)事件,ESB組件就會執(zhí)行相關(guān)的集成操作,并且可以在圖6所示的界面進行審核和查看,從而避免了以往從CAD導(dǎo)出中間格式文件,然后又在ERP系統(tǒng)導(dǎo)入的繁瑣操作,提高了自動化程度和工作效率。
b)消息集成。對于企業(yè)的設(shè)計或管理人員,需要面對大量的瑣碎信息,若處理不及時,可能會造成質(zhì)量事故或?qū)е逻M度延期。消息集成提供統(tǒng)一的Web界面來處理多方面的消息,借助ESB可靠的消息處理機制,實現(xiàn)了郵件集成、協(xié)作消息、預(yù)警消息訂閱、異步報表等多種功能,滿足日常工作消息集成的需求。以最常用的郵件集成為例(圖7),通過郵件集成界面收取來自外協(xié)廠商的電子郵件,該郵件中包含某套模具外協(xié)零件加工進度的附件,那么可直接在該界面將該附件中的信息集成到相應(yīng)的生產(chǎn)管理系統(tǒng)中,其中右鍵菜單的集成操作對應(yīng)封裝該邏輯的ESB組件。 c)集成工具。隨著企業(yè)信息化的深入,應(yīng)用系統(tǒng)越來越多,就產(chǎn)生了信息同步的需求,如新實施的ERP
系統(tǒng)需要與已有的PDM系統(tǒng)同步模具信息,一個系統(tǒng)中的模具信息的修改必須馬上反映到另一個系統(tǒng)中,集成工具能滿足這種數(shù)據(jù)層面的集成需要。通過ESB的調(diào)度機制,能及時同步系統(tǒng)之間的數(shù)據(jù),使之保持一致。
4 結(jié)束語
本文提出的基于事件驅(qū)動的企業(yè)服務(wù)總線框架融合了事件驅(qū)動架構(gòu)的思想,能有效解決模具企業(yè)設(shè)計、生產(chǎn)情況多變、各應(yīng)用系統(tǒng)數(shù)據(jù)難以及時同步的問題;采用了基于組件的設(shè)計思想,將各種功能以組件的方式進行了封裝,使之具有良好的穩(wěn)定性和擴展性。在此框架的基礎(chǔ)上,結(jié)合面向服務(wù)的思想和架構(gòu),實現(xiàn)了模具企業(yè)集成平臺中的數(shù)據(jù)集成服務(wù)模塊。該模塊滿足了模具企業(yè)典型的集成應(yīng)用場景需求,幫助企業(yè)人員更加高效地溝通與協(xié)作,實現(xiàn)系統(tǒng)之間、部門之間甚至廠家之間的自動化數(shù)據(jù)共享與集成,相對于傳統(tǒng)的數(shù)據(jù)集成方式有著明顯的優(yōu)勢。
參考文獻:
[1]李曉東,楊揚,郭文彩.基于企業(yè)服務(wù)總線的數(shù)據(jù)共享與交換平臺[J].計算機工程,2006,32(21):217-219.
[2]蔡昭權(quán).基于ESB的異構(gòu)系統(tǒng)集成實現(xiàn)[J].計算機應(yīng)用,2008,28(2):538-540.
[3]GAMMA E,HELM R,JOHNSON R.Design patterns:elements of reusable object-oriented software[M].New Jersey:Addison Wesley,1994.
[4]PAPAZOGLOU M P,HEUVEL W Jvan den.Service-oriented architecture:approaches,technologies and research issues [J].The VLDB Journal,2007,16(3):389-415.
[5]宋宇寧,尹建偉,陳剛,等.基于事件驅(qū)動的柔性數(shù)據(jù)集成研究[J].計算機應(yīng)用,2004,24(12):120-123.
[6]邵歡慶,康建初.企業(yè)服務(wù)總線的研究與應(yīng)用[J].計算機工程,2007,33(2):220-222.
[7]王豫,谷建華,張海輝.一種新的企業(yè)服務(wù)總線架構(gòu)設(shè)計方案[J].微電子學(xué)與計算機,2007,24(3):105-107.