摘要:該文在對(duì)SOA體系架構(gòu)進(jìn)行了大量分析與研究的基礎(chǔ)上,重點(diǎn)研究了SOA實(shí)現(xiàn)的關(guān)鍵技術(shù)與Webservice的實(shí)現(xiàn)過程,提出了結(jié)合SOA技術(shù)設(shè)計(jì)與實(shí)現(xiàn)一個(gè)移動(dòng)OA系統(tǒng)的模型,這對(duì)在信息化辦公應(yīng)用領(lǐng)域中推廣面向服務(wù)的架構(gòu)設(shè)計(jì)思想與開發(fā)理念有較高的參考價(jià)值。
關(guān)鍵詞:SOA;Webservice;移動(dòng)OA系統(tǒng);面向服務(wù)
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2013)04-0782-03
1 背景
SOA(service oriented architecture面向服務(wù)的體系結(jié)構(gòu)),是一種面世不久的軟件開發(fā)模式。與傳統(tǒng)的軟件開發(fā)模式相比,SOA可以更加輕松地整合現(xiàn)有的數(shù)據(jù)與業(yè)務(wù),將各種業(yè)務(wù)處理流程與數(shù)據(jù)存儲(chǔ)以“服務(wù)”的形式發(fā)布到開放的標(biāo)準(zhǔn)平臺(tái)中供用戶進(jìn)行訪問,這樣可以使企業(yè)從面向技術(shù)應(yīng)用的解決方案的束縛中解放出來,從而輕松應(yīng)對(duì)各種業(yè)務(wù)發(fā)展變化的需求。
隨著我國信息產(chǎn)業(yè)的高速發(fā)展和企業(yè)業(yè)務(wù)需求的不斷深入,OA(Office Automation 辦公自動(dòng)化)系統(tǒng)正在被用來處理日益復(fù)雜的業(yè)務(wù)數(shù)據(jù)和管理流程,這對(duì)辦公自動(dòng)化系統(tǒng)的工作流控制能力和數(shù)據(jù)交互能力提出了更高的要求?;赟OA對(duì)現(xiàn)存的各種辦公應(yīng)用系統(tǒng)繼續(xù)集成,開發(fā)開放性ixRkCNtwn5MjfbIcjInCfA==的企業(yè)辦公管理平臺(tái),并實(shí)現(xiàn)使用移動(dòng)終端進(jìn)行平臺(tái)服務(wù)的訪問,對(duì)企業(yè)信息化辦公效率的提高有著積極的意義。
2 關(guān)鍵技術(shù)簡(jiǎn)介
2.1 ESB技術(shù)
SOA是通過ESB(企業(yè)服務(wù)總線)技術(shù)來構(gòu)建核心中間層架構(gòu),ESB提供標(biāo)準(zhǔn)適配器和接口用于實(shí)現(xiàn)服務(wù)的交互與集成管理,這是一種開放性的標(biāo)準(zhǔn)消息機(jī)制,可以滿足各種企業(yè)環(huán)境下的系統(tǒng)集成需求。主流的ESB產(chǎn)品有IBM的WebSphere ESB、EBA的AquaLogic Service Bus和開源的CXF服務(wù)總線。CXF向開發(fā)者提供了一套創(chuàng)建SOA服務(wù)的基礎(chǔ)框架,允許開放人員按照自己喜歡的編程模式,利用Apache CXF提供的簡(jiǎn)單易用工具,創(chuàng)建適合SOA環(huán)境的任何Web服務(wù)[1],包括SOAP/HTTP服務(wù)及REST/HTTP
服務(wù),而且是完全免費(fèi)的,所以本項(xiàng)目選擇使用CXF來進(jìn)行Web服務(wù)的搭建、部署與調(diào)用。
2.2 Web Services 核心技術(shù)
根據(jù)W3C組織的定義,Web Services是一種被設(shè)計(jì)為支持跨網(wǎng)絡(luò)不同機(jī)器進(jìn)行交互的軟件系統(tǒng),通常定義為一組模塊化的API,允許通過Web方式來進(jìn)行遠(yuǎn)程系統(tǒng)服務(wù)的調(diào)用或者執(zhí)行。Web Services是目前最適合SOA架構(gòu)的實(shí)現(xiàn)技術(shù)。
Web Services體系架構(gòu)主要基于服務(wù)提供者、服務(wù)請(qǐng)求者、服務(wù)中介者三個(gè)角色與發(fā)布、發(fā)現(xiàn)、綁定三個(gè)動(dòng)作構(gòu)建的[3],如圖1所示。
Web Services框架的核心技主要包括WSDL、UDDI和SOAP。WSDL提供了基于XML語言的Web服務(wù)自描述說明和訪問調(diào)用細(xì)節(jié);UDDI是一個(gè)基于XML語言的跨平臺(tái)Web服務(wù)注冊(cè)中心的實(shí)現(xiàn)規(guī)范,是Web Services的核心技術(shù)標(biāo)準(zhǔn)之一;SOAP是一種基于XML語言的簡(jiǎn)單對(duì)象訪問協(xié)議,通過SOAP可以使用XML文檔來傳遞方法參數(shù),實(shí)現(xiàn)Web Services的訪問調(diào)用。
3 系統(tǒng)設(shè)計(jì)
3.1 系統(tǒng)功能模塊設(shè)計(jì)
如圖2所示,根據(jù)OA系統(tǒng)的各項(xiàng)功能需求的來劃分,可將系統(tǒng)簡(jiǎn)單的分成“個(gè)人辦公”、“公文管理”、“工作流轉(zhuǎn)管理”和“輔助管理”四大功能模塊。
3.2 系統(tǒng)總體架構(gòu)設(shè)計(jì)
系統(tǒng)總體框架如圖3所示,系統(tǒng)架構(gòu)設(shè)計(jì)為五層模型,從下到上分別為數(shù)據(jù)層、適配器層、服務(wù)層、業(yè)務(wù)流程層與表示層。
高效的自動(dòng)化辦公系統(tǒng)離不開大量的數(shù)據(jù),本系統(tǒng)的數(shù)據(jù)主要來自于兩類,一類是來自企業(yè)原有的信息化應(yīng)用系統(tǒng),另外一類是來自企業(yè)的外部,如合作單位的文檔數(shù)據(jù)等。這些數(shù)據(jù)的來源、類型比較復(fù)雜,有可能來自于數(shù)據(jù)庫,也有可能是文件類型的數(shù)據(jù)(如Excel、PDF、XML數(shù)據(jù)等),甚至可能是消息類型的數(shù)據(jù)(JMS),所以在設(shè)計(jì)系統(tǒng)的數(shù)據(jù)層的時(shí)候要充分考慮到如何處理數(shù)據(jù)的異構(gòu)性,本系統(tǒng)的數(shù)據(jù)采取統(tǒng)一的XML格式來描述各種異構(gòu)數(shù)據(jù),以便于數(shù)據(jù)的發(fā)布、交換與共享。
SDO是目前流行的數(shù)據(jù)編程模型,利用SDO提供的數(shù)據(jù)中介服務(wù)(DMS),在適配層中應(yīng)用程序可以使用一組API來訪問和操作各種異構(gòu)的數(shù)據(jù)源,這樣做的好處是可以有效屏蔽低層異構(gòu)數(shù)據(jù)源的技術(shù)細(xì)節(jié)。
在服務(wù)層中,將系統(tǒng)的各種業(yè)務(wù)功能采用SCA標(biāo)準(zhǔn)封裝成一系列不同粒度的Web服務(wù),并通過預(yù)定義的接口將這些Web服務(wù)進(jìn)行有效組織,這樣做的好處是可以使客戶端能以統(tǒng)一的方式調(diào)用這些Web服務(wù)。封裝服務(wù)完畢后,通過ESB服務(wù)總線對(duì)服務(wù)進(jìn)行集成與統(tǒng)一管理。
在業(yè)務(wù)流程層中,通過組合排列服務(wù)層中封裝好的各種Web服務(wù),構(gòu)建出各種業(yè)務(wù)流程,實(shí)現(xiàn)符合系統(tǒng)需求的業(yè)務(wù)功能。
表示層的主要功能是為各種終端提供統(tǒng)一的接口來訪問系統(tǒng)界面。考慮到系統(tǒng)要求在分布式的異構(gòu)環(huán)境下進(jìn)行工作,而且表示層上顯示的業(yè)務(wù)數(shù)據(jù)可能來自于不同的數(shù)據(jù)源,表示層采用Portal體系結(jié)構(gòu)而不是傳統(tǒng)的B/S架構(gòu)來進(jìn)行設(shè)計(jì)。
4 系統(tǒng)實(shí)現(xiàn)
4.1 系統(tǒng)服務(wù)設(shè)計(jì)與實(shí)現(xiàn)
根據(jù)上述的功能模塊設(shè)計(jì),將各個(gè)功能模塊劃分成不同的 Web 服務(wù),圖4為各功能模塊對(duì)應(yīng)的Web服務(wù)和Web方法。
以DocumentManageService為例說明服務(wù)的設(shè)計(jì):DocumentManageService服務(wù)對(duì)應(yīng)公文管理模塊,可以通過對(duì)應(yīng)Web服務(wù)下的Web方法來實(shí)現(xiàn)對(duì)接收到或已發(fā)送的公文進(jìn)行如查詢、排序、修改、群發(fā)等操作。
4.2 系統(tǒng)服務(wù)組合與調(diào)用
Web服務(wù)的設(shè)計(jì)應(yīng)該盡可能保持獨(dú)立性與原子性,以便于不同的Web服務(wù)組合起來表示復(fù)雜的業(yè)務(wù)邏輯。例如要實(shí)現(xiàn)員工請(qǐng)假這一業(yè)務(wù)邏輯,就分別需要調(diào)用OtherManageService服務(wù)中的請(qǐng)假方法AskForLeave()、IndividualOffice-
-WorkService服務(wù)中的發(fā)送便簽方法SendNote()與WorkManageService服務(wù)中的工作審批方法WorkSign()。
本系統(tǒng)Web服務(wù)的調(diào)用采取添加Web引用的形式來實(shí)現(xiàn),這種方式與類成員方法的調(diào)用類似,在調(diào)用代碼中定義一個(gè)服務(wù)的實(shí)例后,就可以通過這個(gè)實(shí)例來調(diào)用該服務(wù)的方法。
4.3 系統(tǒng)服務(wù)發(fā)布和管理
考慮到企業(yè)OA系統(tǒng)的安全性與用戶群體的針對(duì)性,本系統(tǒng)通過建立私有的UDDI,將相應(yīng)的權(quán)限賦予Web服務(wù)的請(qǐng)求者,實(shí)現(xiàn)對(duì)Web服務(wù)的注冊(cè)與管理。
4.4 系統(tǒng)服務(wù)的訪問與調(diào)用
因?yàn)楸鞠到y(tǒng)的客戶端程序主要是部署在移動(dòng)終端設(shè)備上的,本節(jié)將以公文信息查詢業(yè)務(wù)流程為例,簡(jiǎn)要說明如何訪問調(diào)用Web服務(wù)。
首先,依據(jù)使用WSDL(Web服務(wù)描述語言)定義的公文信息查詢業(yè)務(wù)對(duì)應(yīng)Web服務(wù)的契約文件,使用JDK6.0版本自帶的工具wsgen與wsimport生成本地代理類;接著,客戶端應(yīng)用程序通過本地生成的代理類,獲取符合約定接口定義的對(duì)象;然后,通過該對(duì)象調(diào)用相應(yīng)的
Web服務(wù)方法來獲取相應(yīng)的XML格式數(shù)據(jù);最后使用SAX(simple API For XML)技術(shù)對(duì)數(shù)據(jù)進(jìn)行解析后,顯示在移動(dòng)終端的界面上,圖5為程序運(yùn)行效果示意圖。
5 結(jié)束語
與傳統(tǒng)的軟件開發(fā)模式相比,SOA以其松耦合面向服務(wù)的特征,可以極大地降低軟件系統(tǒng)集成、開發(fā)與維護(hù)的成本,已經(jīng)成為IT行業(yè)的主流技術(shù)。該文著重描述了一個(gè)基于SOA的移動(dòng)OA系統(tǒng)的解決方案,表明SOA在信息化辦公領(lǐng)域有著廣泛的應(yīng)用前景。
參考文獻(xiàn):
[1] CXF [EB/OL].http://java.sys-con.com/node/452355/print.
[2] 李新力,梁立新.項(xiàng)目實(shí)踐精解:基于 EJB 3.0 和 Web Services 的 Java 應(yīng)用開發(fā)[M].北京:電子工業(yè)出版社,2008.
[3] 王楠,劉心雄,陳和平.Web Service 技術(shù)研究[J].計(jì)算機(jī)與數(shù)字工程,2006(7):88-90.
[4] 劉平.Android手機(jī)訪問服務(wù)器的一種交互方法[J].電子設(shè)計(jì)工程,2010,18 (9):96-102.
[5] 梁愛虎.SOA 思想、技術(shù)與系統(tǒng)集成應(yīng)用詳解[M].北京:電子工業(yè)出版社,2007:2-312.
[6] 曹進(jìn)明,張廣泉.基于SOA的中小企業(yè)IT系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].重慶師范大學(xué)學(xué)報(bào),2008,25(4).