吳 靖 李 清 劉永青
WU Jing1, LI Qing1, LIU Yong-qing2
(1. 清華大學(xué) 自動化系,北京 100084;2. 經(jīng)緯紡織機械股份有限公司,北京 100125)
隨著企業(yè)信息化技術(shù)的不斷發(fā)展,當(dāng)前我國企業(yè)尤其是大型集團企業(yè)普遍面臨異構(gòu)系統(tǒng)集成的三大難題:1)異構(gòu)系統(tǒng)的互操作、2)跨域交互的安全性、3)集成方案的敏捷性。
SOA(面向服務(wù)架構(gòu))和Web服務(wù)技術(shù)提供了一種全新的應(yīng)用集成模式和體系結(jié)構(gòu)[1],其松散耦合、技術(shù)無關(guān)和互操作的特點為異構(gòu)系統(tǒng)的集成及未來隨需而變的信息系統(tǒng)的構(gòu)建奠定了基礎(chǔ)[2]。近年來,眾多IT廠商紛紛致力于SOA落地的研究,大批商業(yè)產(chǎn)品應(yīng)運而生。遺憾的是,這些產(chǎn)品過分關(guān)注推銷其新的開發(fā)環(huán)境,以替代原有的開發(fā)模式和技術(shù),忽略了對企業(yè)已有IT投資的保護和利用,實施成本很高;另一方面,出于商業(yè)包裝和技術(shù)封鎖等原因,各廠商采用的相關(guān)技術(shù)(例如安全控制、服務(wù)管理、性能監(jiān)控等)大都與自身平臺緊密綁定,對于已存在多種平臺的實際企業(yè)環(huán)境,卻沒有提供可行的解決方案。因此,目前的SOA產(chǎn)品雖然理念上是分布式的,但實質(zhì)上與企業(yè)真正需要的跨平臺、跨計算機域的分布式結(jié)構(gòu),有著本質(zhì)的區(qū)別,而集團企業(yè)所面臨的系統(tǒng)集成難題也沒有得到圓滿解決。
本文針對集團企業(yè)的特點和集成需求,構(gòu)建了一套面向業(yè)務(wù)流程的異構(gòu)系統(tǒng)集成平臺(BPO-P)。該平臺提供了跨互聯(lián)網(wǎng)的異構(gòu)應(yīng)用系統(tǒng)的集成策略、運行平臺和一組系統(tǒng)開發(fā)、維護的工具集,同時能夠很好的保護和繼承企業(yè)已有IT投資并提供良好的發(fā)展空間。本文將著重關(guān)注對服務(wù)跨域訪問控制、高效的服務(wù)注冊機制、通用的服務(wù)開發(fā)技術(shù)及增強IT系統(tǒng)敏捷性等關(guān)鍵技術(shù)的研究和實現(xiàn)。
支持集團內(nèi)部企業(yè)間系統(tǒng)集成和互操是BPO-P的首要目標,同時為增強其多平臺適應(yīng)性和敏捷性,BPO-P將以中間件形式融入企業(yè)IT架構(gòu)中,具備以下的功能和特點:
1)能夠支持異構(gòu)的業(yè)務(wù)系統(tǒng)的跨域集成與互操作;
2)能夠有效監(jiān)控通過互聯(lián)網(wǎng)進行的Web服務(wù)訪問,保證交互安全性;
3)能夠提供一種機制將非Web服務(wù)類功能組件封裝成為標準服務(wù);
4)能夠提供一種方法將分布式部署的簡單功能Web服務(wù)進行編排,實現(xiàn)復(fù)雜的業(yè)務(wù)功能;
5)經(jīng)封裝、編排生成的Web服務(wù)不依賴特定運行環(huán)境,能部署在不同的平臺上;
6)平臺本身能夠運行在不同環(huán)境(如操作系統(tǒng)、硬件設(shè)備、軟件平臺等)中,并能快速便捷地實現(xiàn)系統(tǒng)遷移和擴展。
基于上述考慮,BPO-P采用將一種典型的中心節(jié)點——子節(jié)點的星型分布式架構(gòu)(如圖1),在實現(xiàn)上述目標的同時,還能很好的適應(yīng)集團企業(yè)的組織架構(gòu)和管理模式,實現(xiàn)企業(yè)空間分布,集中管理的效果。
圖1 BPO-P總體架構(gòu)
BPO-P具有清晰的層次化結(jié)構(gòu),自頂向下可分為5層:
1)應(yīng)用門戶層(Portal):采用B/S架構(gòu)實現(xiàn),運行在普通應(yīng)用服務(wù)器上,提供系統(tǒng)與終端用戶的交互接口。
2)系統(tǒng)管理層:提供用戶管理、權(quán)限分配、資源管理、登陸控制等系統(tǒng)級管理功能模塊。
3)功能組件層:提供支持BPO-P快速實施和正常運行的輔助工具和功能組件。服務(wù)訪問代理(SAA)提供Web服務(wù)跨域訪問時的安全保障;服務(wù)封裝模塊實現(xiàn)非服務(wù)功能模塊到Web服務(wù)組件的轉(zhuǎn)換;流程編排模塊將已有服務(wù)編排組合生成具有更復(fù)雜功能的流程服務(wù);服務(wù)注冊管理模塊提供服務(wù)發(fā)布、WSDL自動解析、服務(wù)信息注冊維護等后臺功能組件。
4)平臺數(shù)據(jù)庫層:分系統(tǒng)數(shù)據(jù)庫和服務(wù)注冊中心兩部分。前者存儲平臺系統(tǒng)數(shù)據(jù);后者是平臺服務(wù)注冊庫,存儲對象為具有業(yè)務(wù)功能的Web服務(wù)組件信息。
5)服務(wù)總線層[3]:提供Web服務(wù)的運行時環(huán)境以及服務(wù)管理、性能監(jiān)控、事務(wù)處理等系統(tǒng)級功能,各種第三方應(yīng)用服務(wù)器均可實現(xiàn)。按部署位置分為集團服務(wù)總線(CSB)和企業(yè)服務(wù)總線(ESB)兩級??偩€上服務(wù)粒度的選擇要適中,粒度過細會導(dǎo)致復(fù)用程度增加影響總線效率,過粗則會使服務(wù)復(fù)用程度降低,缺乏通用性。
目前單個企業(yè)的信息系統(tǒng)結(jié)構(gòu)上相對獨立,安全功能完善,執(zhí)行相同的WS-策略,可將其視為一個“安全域”[4]。但集團內(nèi)成員企業(yè)間的應(yīng)用集成需要進行跨域訪問,這種交互過程超出了原WS-策略的控制范圍,此時Web服務(wù)的開放性對SOA集成的安全策略提出了新的挑戰(zhàn)[5]。針對此問題BPO-P運用了一種基于SAA的跨域交互機制(如圖2):
圖2 基于代理的Web服務(wù)跨域訪問機制
在每個成員企業(yè)域內(nèi)設(shè)置一個SAA作為本域內(nèi)服務(wù)對外交互的唯一通道。SAA由“輸入模塊”(Module_I)和“輸出模塊”(Module_O)兩部分組成:前者負責(zé)接收域外來訪的服務(wù)調(diào)用請求并進行轉(zhuǎn)發(fā)處理;后者功能則與之相反。所有服務(wù)與對應(yīng)SAA的映射關(guān)系都會在平臺服務(wù)中心注冊。于是服務(wù)跨域交互控制可以分“域間認證、服務(wù)授權(quán)”兩步實現(xiàn):1)進行跨域訪問的雙方通過SAA間身份認證機制判斷域間交互的合法性,2)認證通過后根據(jù)交互雙方的授權(quán)記錄進行服務(wù)級的訪問控制;從而大大降低實現(xiàn)方案的復(fù)雜性。以圖2中服務(wù)ik跨域調(diào)用jl為例:調(diào)用發(fā)起后首先SAA_i的Module_O得到ik的調(diào)用請求并通過注冊中心定位jl的代理SAA_j;然后兩SAA間通過KDC進行身份認證,認證完成后則與SAA_j的Module_I建立信道傳遞參數(shù);第三步在SAA_j的Module_I查詢服務(wù)授權(quán)記錄判斷本次調(diào)用是否合法,然后采取相應(yīng)的響應(yīng)完成調(diào)用過程。
實現(xiàn)技術(shù)上,SAA認證機制采用了“安全/代價比”較為理想的Kerberos協(xié)議實現(xiàn)。Kerberos使用對稱密鑰加密算法實現(xiàn)通過可信第三方KDC(密鑰分發(fā)中心)的雙向認證功能[6],具有穩(wěn)定、高效的特點。服務(wù)授權(quán)環(huán)節(jié)的控制則通過檢索注冊中心存儲的服務(wù)授權(quán)列表來實現(xiàn)。另一方面,Kerberos協(xié)議還可以在SAA間建立起安全信道[6],確保了數(shù)據(jù)傳輸級安全因此不需要企業(yè)再建立專門的數(shù)據(jù)傳輸鏈路(如VPN、企業(yè)專網(wǎng)等),有效節(jié)約了成本。
最后,本安全解決方案不僅能滿足集團企業(yè)跨域訪問控制的需求,還具有較強的獨立性和靈活性。SAA以標準Web服務(wù)形式實現(xiàn),部署方式簡單。Kerberos也已在業(yè)界得到廣泛應(yīng)用,擁有良好的穩(wěn)定性和兼容性,受到多種操作系統(tǒng)環(huán)境的支持,可以方便地實現(xiàn)跨異構(gòu)平臺的部署和互操作。
在SOA領(lǐng)域,基于UDDI協(xié)議的服務(wù)注冊機制受到普遍關(guān)注,應(yīng)用廣泛[7]。但考慮到集團企業(yè)內(nèi)部對服務(wù)訪問安全性的強烈需求,UDDI不易與BPO-P的安全策略集成,同時也不能有效提高開發(fā)效率,所以采用私有架構(gòu)來實現(xiàn)服務(wù)注冊是更好的選擇。平臺采用了一套基于全局ID的服務(wù)注冊機制:平臺內(nèi)每個服務(wù)擁有全局唯一的ID,對應(yīng)其一組注冊信息,服務(wù)調(diào)用過程中調(diào)用方只需掌握被調(diào)方的ID并動態(tài)地從注冊中心獲取其詳細信息如圖3所示。
圖3 基于全局ID的服務(wù)動態(tài)調(diào)用過程
與傳統(tǒng)UDDI注冊機制相比,本方案能夠更好的支持服務(wù)動態(tài)調(diào)用過程,將調(diào)用雙方有效地解耦,使系統(tǒng)表現(xiàn)出極大的松耦合性。例如由于SAA對其調(diào)用目標的不確定性,可以將每次調(diào)用目標服務(wù)的ID作為參數(shù)傳遞給它,由它自行獲取調(diào)用參數(shù)完成調(diào)用過程,而不必在其實現(xiàn)代碼中緊密綁定其所有可能的訪問目標;又或者由于某服務(wù)器遷移導(dǎo)致其上的服務(wù)要更改部署信息,也只需要更新服務(wù)的注冊信息(ID不變),無需改動調(diào)用它的上級流程服務(wù)或SAA,顯著提高了系統(tǒng)的可維護性和流程編排功能的敏捷性。
由于集團企業(yè)普遍經(jīng)歷了長期的信息化建設(shè)歷程并進行了大量投資,如何在應(yīng)用集成過程中繼承和充分利用企業(yè)已有IT資產(chǎn),盡可能降低實施成本是企業(yè)決策者尤其關(guān)注的問題。BPO-P不僅作為運行平臺支持基于SOA的系統(tǒng)集成方案,同時還是一個集成開發(fā)環(huán)境,提供通用的服務(wù)開發(fā)方法和交互界面(如圖4),支持圖元拖拽、交互編輯、參數(shù)設(shè)置、固定代碼生成和服務(wù)自動部署等功能,極大簡化了企業(yè)人員的開發(fā)工作且具有很強的適應(yīng)性和擴展性。
圖4 服務(wù)封裝(上)和流程編排工具(下)GUI
服務(wù)封裝技術(shù)是企業(yè)實施SOA的關(guān)鍵[8],BPO-P提供了專門的輔助封裝工具,如圖4所示,引導(dǎo)企業(yè)人員快速完成遺留系統(tǒng)服務(wù)封裝工作。由于Java具有平臺無關(guān)性優(yōu)勢及J2EE在業(yè)界占據(jù)主導(dǎo)地位,BPO-P選擇其作為封裝技術(shù)。服務(wù)封裝過程首先實現(xiàn)遺留系統(tǒng)Java封裝,形成具有業(yè)務(wù)功能的本地Java程序。同時,由于平臺采用基于SAA的特殊服務(wù)調(diào)用方式,Java封裝過程包含添加SAA處理邏輯(簡稱“封套”)的操作。
根據(jù)遺留系統(tǒng)功能組件實現(xiàn)方的式不同,Java封裝對象可分為兩類:一是已存在的標準Web服務(wù),二是針對非服務(wù)類功能組件。對于前者,直接編寫本地Java應(yīng)用程序?qū)崿F(xiàn)對該服務(wù)的遠程調(diào)用并添加“封套”代碼;后者的封裝過程則需要分兩步實現(xiàn):1)對遺留功能模塊進行Java封裝使其滿足JNI(Java本地接口)的調(diào)用規(guī)范(標準Java程序模塊則不需此步),2)開發(fā)本地Java程序調(diào)用該模塊并添加“封套”代碼。完成遺留系統(tǒng)Java封裝以后,通過標準Java打包部署過程就可以形成平臺標準的Web服務(wù)。
在SOA架構(gòu)下,對已有Web 服務(wù)進行編排組合可以形成新業(yè)務(wù)流程服務(wù)。當(dāng)業(yè)務(wù)流程發(fā)生變化時可以通過此方法快速改變流程結(jié)構(gòu),以適應(yīng)新的業(yè)務(wù)需求。
目前在業(yè)務(wù)流程編排領(lǐng)域,業(yè)務(wù)流程執(zhí)行語言(BPEL)已經(jīng)成為了業(yè)界事實上的標準語言,得到眾多IT廠商的支持[9]。但是,BPEL流程服務(wù)運行需要特殊的執(zhí)行引擎,尤其是商業(yè)編排工具為了商業(yè)包裝的目的更是把編排的流程服務(wù)與自身BPEL引擎緊密綁定,極大地限制了編排結(jié)果的適應(yīng)性。同時,流程服務(wù)與原子服務(wù)分別部署在不同的運行平臺會大大增加服務(wù)總線的復(fù)雜度和實施成本。
BPO-P提供一種與自身架構(gòu)相適應(yīng)的流程編排工具,它支持圖形化的流程編排方法如圖4所示,并采用標準Java作為流程描述語言和編排結(jié)果,提高了在各種服務(wù)總線上的部署能力,相比BPEL更具通用性[10]。
在功能實現(xiàn)方面,該工具分為圖形化編輯、代碼自動轉(zhuǎn)換和服務(wù)部署三部分。圖形化編輯為編排人員提供直觀的流程模型繪制、服務(wù)調(diào)用、參數(shù)設(shè)置以及接口定義等界面;代碼自動轉(zhuǎn)換部分將前臺模型及存儲參數(shù)按特殊映射規(guī)則和數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換成結(jié)構(gòu)化的Java代碼;服務(wù)部署過程則完成Java程序的打包發(fā)布。經(jīng)上述操作產(chǎn)生的流程服務(wù)外部接口同標準服務(wù)一致,因此可以將其部署在統(tǒng)一平臺上,同時他們還可以被視為新的原子服務(wù)被編排進更高層次的流程服務(wù)中。而且經(jīng)該工具編排的流程服務(wù)也內(nèi)嵌了SAA訪問機制,也為跨企業(yè)、跨平臺的業(yè)務(wù)操作提供了安全保障。
BPO-P的服務(wù)封裝和流程編排工具都首先以Java作為輸出結(jié)果,再通過Ant技術(shù)進行打包部署。Ant作為Apache軟件基金會提供的一個基于Java的、將軟件編譯、測試、部署等步驟聯(lián)系在一起自動化執(zhí)行的開源工具[11],具有平臺無關(guān)、結(jié)構(gòu)清晰、操作簡單、易于集成等特點。通過Ant命令能快速地將Java程序部署到當(dāng)前被廣泛使用的各種服務(wù)總線上。在上述封裝和編排工具中都集成了Ant部署工具,從而使得封裝和編排結(jié)果能被自動打包部署到多種底層運行平臺,具有良好的通用性。
BPO-P在經(jīng)緯紡織機械股份有限公司進行了示范應(yīng)用。經(jīng)緯紡機在企業(yè)信息化領(lǐng)域起步較早,但隨著企業(yè)規(guī)模增大和業(yè)務(wù)領(lǐng)域拓展,目前該集團面臨營銷服務(wù)體系集成的迫切需求。本次工程則是為實現(xiàn)集團營銷數(shù)據(jù)集成自動化。
在此案例中,首先由各企業(yè)系統(tǒng)提供若干具有基礎(chǔ)數(shù)據(jù)服務(wù)功能的原子服務(wù)如圖5所示,然后總部通過服務(wù)編排形成具有完整功能的流程服務(wù)。同時為實現(xiàn)集成流程與原有系統(tǒng)的隔離,避免新功能對原系統(tǒng)的干擾,各平臺服務(wù)器上分別部署了相應(yīng)的數(shù)據(jù)總線作為流程服務(wù)的數(shù)據(jù)操作區(qū)。基于此兩級數(shù)據(jù)總線結(jié)構(gòu),可將原子服務(wù)如圖5所示,編排成三個子流程服務(wù),每個子流程完成數(shù)據(jù)的一級上傳和相應(yīng)的去異構(gòu)化,最終通過三個子流程編排形成具備完整功能的主流程服務(wù)。考慮到數(shù)據(jù)集成過程操作復(fù)雜,對服務(wù)的錯誤處理能力要求較高。本文通過監(jiān)控里程碑執(zhí)行狀態(tài)的方法進行優(yōu)化:編排主流程服務(wù)時在流程關(guān)鍵點設(shè)置狀態(tài)記錄操作和流程啟動接口如圖5所示。當(dāng)企業(yè)人員運行流程時,可通過日志監(jiān)控流程執(zhí)行情況,遇程序出錯中斷時則根據(jù)記錄選擇最接近的里程碑繼續(xù)運行流程服務(wù),從而避免過多的冗余操作,提高效率。
圖5 營銷數(shù)據(jù)集成流程設(shè)計(上)與服務(wù)編排(下)
有了集成方案總體架構(gòu)和詳細設(shè)計,BPO-P的結(jié)構(gòu)化實施方法可以引導(dǎo)企業(yè)人員快速完成實施過程:
1)在總部和企業(yè)域內(nèi)分別部署SAA并注冊到平臺。
2)企業(yè)IT人員根據(jù)原子服務(wù)定義完成原子級服務(wù)開發(fā)或封裝并部署到對應(yīng)的ESB上。
3)總部流程編排人員根據(jù)流程服務(wù)設(shè)計編排相應(yīng)的原子服務(wù)形成流程服務(wù)并部署到CSB上(服務(wù)部署時將自動生成相應(yīng)操作頁面并隨注冊被一同發(fā)布到平臺Portal上)。
4)終端業(yè)務(wù)人員登陸到Portal,在權(quán)限范圍內(nèi)完成相應(yīng)的數(shù)據(jù)集成操作如圖6所示。
圖6 BPO-P營銷數(shù)據(jù)集成實施結(jié)果
集團型企業(yè)異構(gòu)系統(tǒng)集成和跨企業(yè)協(xié)同是目前企業(yè)信息化領(lǐng)域的熱點問題,現(xiàn)有的成熟技術(shù)和商業(yè)產(chǎn)品并不能完全滿足企業(yè)的實際需求。針對此問題本文構(gòu)建的面向業(yè)務(wù)流程的異構(gòu)系統(tǒng)集成平臺具有以下特征:
1)提供了跨域的異構(gòu)系統(tǒng)集成的運行環(huán)境,為SOA技術(shù)在集團企業(yè)的應(yīng)用創(chuàng)造了條件。
2)實現(xiàn)了基于互聯(lián)網(wǎng)的、跨域服務(wù)訪問的安全機制,并將該機制與服務(wù)的開發(fā)、封裝、編排、部署、調(diào)用緊密結(jié)合,形成一套完整的分布式服務(wù)訪問安全體系。
3)提供結(jié)構(gòu)化的實施方法和通用的輔助開發(fā)工具,具有快速部署特性,大大縮短集成實施周期。
4)以中間件形式實現(xiàn),對原系統(tǒng)兼容性較高,有效保護和繼承了企業(yè)前期IT資產(chǎn),降低集成實施成本。
5)部署條件簡單且能適應(yīng)多平的環(huán)境,具有較高敏捷性和可擴展性,能夠滿足現(xiàn)代企業(yè)對應(yīng)用系統(tǒng)的柔性需求。
綜上所述,BPO-P提供了完整的分布式異構(gòu)系統(tǒng)集成方案,其可行性和實用性在實踐中得到驗證,有效支持了集團型企業(yè)基于互聯(lián)網(wǎng)的應(yīng)用集成和企業(yè)協(xié)同目標。
[1]YU.J,HAN.Y,:Service Oriented Computing:Principles and Applications[C].Beijing:Tsinghua University Press,2006.
[2]E.PULIER,H.TAYLOR.Understanding enterprise SOA[M].Greenwich,CT:Manning,2008.
[3]呼斯樂,邵貝恩.集團型企業(yè)異構(gòu)系統(tǒng)的中間件集成方案[J].微計算機信息,2009,25(9).
[4]邴曉燕,邵貝恩.基于SOA的企業(yè)應(yīng)用跨安全域訪問控制[J].清華大學(xué)學(xué)報,2009,49(7):1050-1053.
[5]J.WU,Z.M.HUANG,“Proxy-based web service security,”in IEEE 3rd IEEE Asia-Pacific Service Computing Conference (APSCC)[C],2008,1282-1288.
[6]MIT.Kerberos:The Network Authentication Protocol [E].http://web.mit.edu/kerberos/www/index.html,2009.
[7]Official website of Standard UDDI protocol committee[S].http://uddi.xml.org/.
[8]N.KOMODA,Service Oriented Architecture (SOA) in Industrial Systems[C].Industrial Informatics,2006 IEEE International Conference.2006.
[9]T.ANDREWS,et.al.Business Process Execution Language for Web Services[S],Version 1.1.http://www.oasis-open.org/.
[10]李燦強.基于業(yè)務(wù)模型的服務(wù)編排技術(shù)研究[D].北京:清華大學(xué),2009.
[11]Ant[S].http://www.apache.org/ant.