欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

Soa應(yīng)用系統(tǒng)服務(wù)集成中實(shí)現(xiàn)數(shù)據(jù)轉(zhuǎn)換的系統(tǒng)結(jié)構(gòu)及其方法

文檔序號(hào):6331711閱讀:141來(lái)源:國(guó)知局
專利名稱:Soa應(yīng)用系統(tǒng)服務(wù)集成中實(shí)現(xiàn)數(shù)據(jù)轉(zhuǎn)換的系統(tǒng)結(jié)構(gòu)及其方法
技術(shù)領(lǐng)域
本發(fā)明涉及計(jì)算機(jī)軟件領(lǐng)域,特別涉及基于面向服務(wù)的體系結(jié)構(gòu) (Service-Oriented Architecture, SOA)的軟件系統(tǒng)技術(shù)領(lǐng)域,具體是指一種面向服務(wù)的 體系結(jié)構(gòu)的應(yīng)用系統(tǒng)服務(wù)集成中實(shí)現(xiàn)數(shù)據(jù)轉(zhuǎn)換的系統(tǒng)結(jié)構(gòu)及其方法。
背景技術(shù)
在企業(yè)級(jí)應(yīng)用開(kāi)發(fā)領(lǐng)域,隨著應(yīng)用規(guī)模的不斷擴(kuò)大,各個(gè)系統(tǒng)之間的集成和交互 變得越來(lái)越頻繁,要實(shí)現(xiàn)一個(gè)特定的功能,需要與多個(gè)系統(tǒng)進(jìn)行通信,通過(guò)各系統(tǒng)之間的協(xié) 作來(lái)完成。目前主流的軟件項(xiàng)目的架構(gòu)類似“豎井”,在這個(gè)“豎井”中有數(shù)據(jù)庫(kù),中間層、客 戶端表現(xiàn)層等。各個(gè)應(yīng)用系統(tǒng)的數(shù)據(jù)分屬在不同的豎井中,當(dāng)我們的信息化發(fā)展到一定程 度,已開(kāi)發(fā)和上線運(yùn)行的系統(tǒng)需要整合或?qū)崿F(xiàn)數(shù)據(jù)共享時(shí),我們不得不通過(guò)在“豎井”中“穿 洞”來(lái)訪問(wèn)數(shù)據(jù)。一旦一個(gè)數(shù)據(jù)對(duì)象發(fā)生了變化,對(duì)其他系統(tǒng)的影響就將變得“不可知”和 “不可控”了。基于面向服務(wù)體系結(jié)構(gòu)(Service-Oriented Architecture, S0A)的軟件系統(tǒng),是 解決現(xiàn)有軟件系統(tǒng)結(jié)構(gòu)弊端的一種有效手段。所謂S0A,是指一個(gè)組件模型,它將應(yīng)用程序 的不同功能單元(稱為服務(wù))通過(guò)這些服務(wù)之間定義良好的接口和契約聯(lián)系起來(lái)。接口是 采用中立的方式進(jìn)行定義的,它獨(dú)立于實(shí)現(xiàn)服務(wù)的硬件平臺(tái)、操作系統(tǒng)和編程語(yǔ)言,常用的 如Web Service Definition Language (WSDL)和XSD,這使得構(gòu)建在各種這樣的系統(tǒng)中的服 務(wù)可以以一種統(tǒng)一和通用的方式進(jìn)行交互。SOA強(qiáng)調(diào)的是資源共享和復(fù)用、企業(yè)架構(gòu)動(dòng)態(tài)和 柔性的組合,通過(guò)模塊化和開(kāi)放標(biāo)準(zhǔn)接口設(shè)計(jì),使企業(yè)實(shí)現(xiàn)IT與業(yè)務(wù)緊密結(jié)合,提高企業(yè) 業(yè)務(wù)流程的靈活性?;赟OA架構(gòu)的軟件系統(tǒng)由以功能為中心轉(zhuǎn)變?yōu)橐苑?wù)為中心,以對(duì) 外一致的方式對(duì)外提供功能,通過(guò)服務(wù)解決不同系統(tǒng)的集成問(wèn)題。通常,我們?cè)谶M(jìn)行服務(wù)集成時(shí),主要會(huì)遇到兩方面的內(nèi)容,調(diào)用外部提供的服務(wù) (服務(wù)接出)和對(duì)服務(wù)進(jìn)行重新組裝并重新發(fā)布為新的服務(wù)(服務(wù)接入)。針對(duì)這兩種情 況,通常采用的方法是針對(duì)不同服務(wù)的接入或者接出要求分別采用特定于相應(yīng)傳輸協(xié)議的 功能代碼,數(shù)據(jù)也按傳輸協(xié)議的要求進(jìn)行各自的轉(zhuǎn)換。比如在發(fā)布和調(diào)用基于Web Service 的服務(wù)時(shí),中間傳輸?shù)臄?shù)據(jù)都是基于XML的SOAP信息,在發(fā)布和調(diào)用基于JSON (JavaScript Object Notation)的Http服務(wù)時(shí),中間傳輸?shù)臄?shù)據(jù)都是基于JSON格式的字符。因此,基于 服務(wù)的集成,都不可避免地要處理傳輸協(xié)議要求的數(shù)據(jù)格式與業(yè)務(wù)數(shù)據(jù)對(duì)象之間的數(shù)據(jù)轉(zhuǎn) 換。比如在以JavaBean對(duì)象作為業(yè)務(wù)對(duì)象的系統(tǒng)中,如果要調(diào)用外部Web Service服務(wù), 則需要把業(yè)務(wù)對(duì)象對(duì)應(yīng)的JavaBean對(duì)象轉(zhuǎn)換為Web Service所需要的基于XML的SOAP信 息,調(diào)用完成時(shí)再把返回的SOAP信息轉(zhuǎn)換為所需的JavaBean業(yè)務(wù)對(duì)象;在接入服務(wù)時(shí),也 會(huì)遇到同樣的數(shù)據(jù)對(duì)象轉(zhuǎn)換,只是與接出服務(wù)的過(guò)程正好相反而已。隨著系統(tǒng)的不斷擴(kuò)大,外部服務(wù)的集成以及對(duì)外提供服務(wù)的樣式也會(huì)越來(lái)越多, 系統(tǒng)中也必將會(huì)充斥著大量的數(shù)據(jù)類型轉(zhuǎn)換要求,比如系統(tǒng)中提供的數(shù)據(jù)類型為c#對(duì)象A,集成外部Web Service服務(wù)時(shí),必將存在C#對(duì)象A到SOAP XML的轉(zhuǎn)換。隨著時(shí)間的推移, 系統(tǒng)要求原來(lái)的參數(shù)類型由原來(lái)的C#類型A改變?yōu)镃#類型B,就需要新增B類型到SOAP XML類型的轉(zhuǎn)換。通常為了編碼的方便,在進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換時(shí),我們都是把數(shù)據(jù)類型轉(zhuǎn)換 硬編碼到集成服務(wù)的業(yè)務(wù)代碼當(dāng)中,這就造成了業(yè)務(wù)與數(shù)據(jù)傳輸?shù)膶哟尾磺?,如果新增?種數(shù)據(jù)傳輸類型,需要修改其核心業(yè)務(wù)代碼,這無(wú)論對(duì)于測(cè)試人員還是維護(hù)人員將是一個(gè) 災(zāi)難。在多系統(tǒng)分工合作日益緊密的今天,如何方便的提供針對(duì)不同傳輸協(xié)議數(shù)據(jù)對(duì)象與 業(yè)務(wù)對(duì)象的轉(zhuǎn)換將變得異常迫切。

發(fā)明內(nèi)容
本發(fā)明的目的是克服了上述現(xiàn)有技術(shù)中的缺點(diǎn),提供一種能夠通過(guò)擴(kuò)展的方式增 加新的數(shù)據(jù)類型的轉(zhuǎn)換支持、簡(jiǎn)單明確、配置方便、運(yùn)行期效率較高、系統(tǒng)性能穩(wěn)定可靠,適 用范圍較為廣泛的面向服務(wù)的體系結(jié)構(gòu)的應(yīng)用系統(tǒng)服務(wù)集成中實(shí)現(xiàn)數(shù)據(jù)轉(zhuǎn)換的系統(tǒng)結(jié)構(gòu) 及其方法。為了實(shí)現(xiàn)上述的目的,本發(fā)明的面向服務(wù)的體系結(jié)構(gòu)的應(yīng)用系統(tǒng)服務(wù)集成中實(shí)現(xiàn) 數(shù)據(jù)轉(zhuǎn)換的系統(tǒng)結(jié)構(gòu)及其方法如下該面向服務(wù)的體系結(jié)構(gòu)的應(yīng)用系統(tǒng)服務(wù)集成中實(shí)現(xiàn)數(shù)據(jù)轉(zhuǎn)換的系統(tǒng)結(jié)構(gòu),其主要 特點(diǎn)是,所述的系統(tǒng)結(jié)構(gòu)包括運(yùn)行期通用框架模塊,支撐不同數(shù)據(jù)對(duì)象的轉(zhuǎn)換擴(kuò)展;開(kāi)發(fā)期配置格式定義模塊,與所述的運(yùn)行期通用框架模塊相連接,并進(jìn)行數(shù)據(jù)對(duì) 象轉(zhuǎn)換的配置格式定義。該面向服務(wù)的體系結(jié)構(gòu)的應(yīng)用系統(tǒng)服務(wù)集成中實(shí)現(xiàn)數(shù)據(jù)轉(zhuǎn)換的系統(tǒng)結(jié)構(gòu)中的運(yùn) 行期通用框架模塊包括配置加載單元,進(jìn)行數(shù)據(jù)對(duì)象轉(zhuǎn)換信息的配置加載;有向圖單元,該有向圖單元根據(jù)所述的配置加載單元所配置加載的數(shù)據(jù)對(duì)象轉(zhuǎn)換 信息而生成,且提供從源數(shù)據(jù)類型到目標(biāo)數(shù)據(jù)類型轉(zhuǎn)換所需的最短路徑,并針對(duì)接入服務(wù) 以及接出服務(wù)時(shí)提供不同數(shù)據(jù)對(duì)象的轉(zhuǎn)換操作,其中,數(shù)據(jù)轉(zhuǎn)換過(guò)程中的接口元數(shù)據(jù)統(tǒng)一 用Web Service定義語(yǔ)言進(jìn)行描述。該面向服務(wù)的體系結(jié)構(gòu)的應(yīng)用系統(tǒng)服務(wù)集成中實(shí)現(xiàn)數(shù)據(jù)轉(zhuǎn)換的系統(tǒng)結(jié)構(gòu)中的開(kāi) 發(fā)期配置格式定義模塊包括接口轉(zhuǎn)換器,實(shí)現(xiàn)特定數(shù)據(jù)類型的轉(zhuǎn)換操作;轉(zhuǎn)換器注冊(cè)單元,對(duì)所述的接口轉(zhuǎn)換器進(jìn)行注冊(cè)。該基于上述的系統(tǒng)結(jié)構(gòu)實(shí)現(xiàn)面向服務(wù)的體系結(jié)構(gòu)的應(yīng)用系統(tǒng)服務(wù)集成中數(shù)據(jù)轉(zhuǎn) 換的方法,其主要特點(diǎn)是,所述的方法包括開(kāi)發(fā)期數(shù)據(jù)對(duì)象轉(zhuǎn)換的配置格式定義操作、運(yùn)行 期數(shù)據(jù)對(duì)象轉(zhuǎn)換的配置加載操作、運(yùn)行期接入服務(wù)的數(shù)據(jù)對(duì)象轉(zhuǎn)換操作和運(yùn)行期接出服務(wù) 的數(shù)據(jù)對(duì)象轉(zhuǎn)換操作,所述的開(kāi)發(fā)期數(shù)據(jù)對(duì)象轉(zhuǎn)換的配置格式定義操作,包括以下步驟(11)所述的開(kāi)發(fā)期配置格式定義模塊新建數(shù)據(jù)對(duì)象轉(zhuǎn)換擴(kuò)展包;(12)所述的開(kāi)發(fā)期配置格式定義模塊導(dǎo)入外部服務(wù)的描述文件;(13)所述的開(kāi)發(fā)期配置格式定義模塊根據(jù)用戶的輸入操作,生成實(shí)現(xiàn)數(shù)據(jù)對(duì)象轉(zhuǎn) 換接口的實(shí)現(xiàn)類;
(14)所述的開(kāi)發(fā)期配置格式定義模塊配置數(shù)據(jù)對(duì)象轉(zhuǎn)換規(guī)則;(15)所述的開(kāi)發(fā)期配置格式定義模塊將數(shù)據(jù)對(duì)象擴(kuò)展包部署到運(yùn)行環(huán)境中;所述的運(yùn)行期數(shù)據(jù)對(duì)象轉(zhuǎn)換的配置加載操作,包括以下步驟(21)所述的運(yùn)行期通用框架模塊提供支持?jǐn)?shù)據(jù)對(duì)象轉(zhuǎn)換擴(kuò)展的接口類,以供擴(kuò) 展;(22)所述的運(yùn)行期通用框架模塊加載導(dǎo)入的服務(wù)對(duì)應(yīng)的數(shù)據(jù)對(duì)象描述文件WSDL 以及其中的數(shù)據(jù)類型定義XSD Schema信息;(23)所述的運(yùn)行期通用框架模塊加載定義的數(shù)據(jù)對(duì)象轉(zhuǎn)換配置文件;(24)所述的運(yùn)行期通用框架模塊根據(jù)數(shù)據(jù)對(duì)象轉(zhuǎn)換配置文件中定義的源、目標(biāo)數(shù) 據(jù)類型形成類型轉(zhuǎn)換有向圖;所述的運(yùn)行期接入服務(wù)的數(shù)據(jù)對(duì)象轉(zhuǎn)換操作,包括以下步驟(31)所述的運(yùn)行期通用框架模塊根據(jù)接入服務(wù)的協(xié)議類型,確定服務(wù)對(duì)應(yīng)的數(shù)據(jù) 轉(zhuǎn)換類型;(32)所述的運(yùn)行期通用框架模塊對(duì)接入的服務(wù)生成服務(wù)代理;(33)在所述的服務(wù)代理中針對(duì)每一個(gè)服務(wù)方法調(diào)用生成調(diào)用鏈;(34)在所述的服務(wù)代理中根據(jù)服務(wù)對(duì)應(yīng)的數(shù)據(jù)轉(zhuǎn)換類型,在方法的調(diào)用鏈中添加 數(shù)據(jù)轉(zhuǎn)換的攔截器;(35)在所述的數(shù)據(jù)轉(zhuǎn)換的攔截器中根據(jù)數(shù)據(jù)對(duì)象轉(zhuǎn)換有向圖,查找最優(yōu)的數(shù)據(jù)轉(zhuǎn) 換路徑;(36)所述的運(yùn)行期通用框架模塊調(diào)用所定義的數(shù)據(jù)對(duì)象格式轉(zhuǎn)換實(shí)現(xiàn)類,實(shí)現(xiàn)不 同數(shù)據(jù)對(duì)象的類型轉(zhuǎn)換;所述的運(yùn)行期接出服務(wù)的數(shù)據(jù)對(duì)象轉(zhuǎn)換操作,包括以下步驟(41)所述的運(yùn)行期通用框架模塊根據(jù)接出服務(wù)的類型,確定服務(wù)對(duì)應(yīng)的數(shù)據(jù)轉(zhuǎn)換 類型;(42)所述的運(yùn)行期通用框架模塊對(duì)接出的服務(wù)生成服務(wù)代理;(43)在所述的服務(wù)代理中針對(duì)每一個(gè)方法調(diào)用生成調(diào)用鏈;(44)在所述的服務(wù)代理中根據(jù)服務(wù)對(duì)應(yīng)的數(shù)據(jù)轉(zhuǎn)換類型,在方法的調(diào)用鏈中添加 數(shù)據(jù)轉(zhuǎn)換的攔截器;(45)在所述的數(shù)據(jù)轉(zhuǎn)換的攔截器中,根據(jù)數(shù)據(jù)對(duì)象轉(zhuǎn)換有向圖,查找最優(yōu)的數(shù)據(jù) 轉(zhuǎn)換路徑;(46)所述的運(yùn)行期通用框架模塊調(diào)用定義的數(shù)據(jù)對(duì)象格式轉(zhuǎn)換實(shí)現(xiàn)類,實(shí)現(xiàn)不同 數(shù)據(jù)對(duì)象的類型轉(zhuǎn)換。該實(shí)現(xiàn)面向服務(wù)的體系結(jié)構(gòu)的應(yīng)用系統(tǒng)服務(wù)集成中數(shù)據(jù)轉(zhuǎn)換的方法中的數(shù)據(jù)對(duì) 象轉(zhuǎn)換擴(kuò)展包為包含一定功能邏輯的物理單元,每個(gè)數(shù)據(jù)對(duì)象轉(zhuǎn)換擴(kuò)展包作為一個(gè)最小的 部署單元部署到運(yùn)行環(huán)境中,且該數(shù)據(jù)對(duì)象轉(zhuǎn)換擴(kuò)展包中包含了實(shí)現(xiàn)數(shù)據(jù)轉(zhuǎn)換功能的所有 依賴資源,數(shù)據(jù)對(duì)象轉(zhuǎn)換擴(kuò)展包在物理上同一文件目錄對(duì)應(yīng)。該實(shí)現(xiàn)面向服務(wù)的體系結(jié)構(gòu)的應(yīng)用系統(tǒng)服務(wù)集成中數(shù)據(jù)轉(zhuǎn)換的方法中的依賴資 源包括WSDL文件、XSD文件、數(shù)據(jù)對(duì)象轉(zhuǎn)換配置文件、Java運(yùn)行時(shí)需要的類文件。該實(shí)現(xiàn)面向服務(wù)的體系結(jié)構(gòu)的應(yīng)用系統(tǒng)服務(wù)集成中數(shù)據(jù)轉(zhuǎn)換的方法中的導(dǎo)入外
10部服務(wù)的描述文件,包括以下步驟(121)所述的開(kāi)發(fā)期配置格式定義模塊根據(jù)用戶通過(guò)在數(shù)據(jù)對(duì)象轉(zhuǎn)換擴(kuò)展包右鍵 菜單的選擇操作,并根據(jù)外部服務(wù)的類型進(jìn)行導(dǎo)入操作;(122)導(dǎo)入時(shí),從本地選擇服務(wù)的描述文件或者根據(jù)所提供的URL從遠(yuǎn)程下載服 務(wù)的描述文件;(123)根據(jù)導(dǎo)入的服務(wù)描述文件統(tǒng)一生成WSDL接口描述;(124)將所下載的WSDL文件和接口生成的WSDL文件默認(rèn)保存到對(duì)應(yīng)擴(kuò)展包資源 樹(shù)下的“接口”結(jié)點(diǎn)下;(125)將接口中的操作作為資源樹(shù)“接口,,結(jié)點(diǎn)的子結(jié)點(diǎn)進(jìn)行顯示。該實(shí)現(xiàn)面向服務(wù)的體系結(jié)構(gòu)的應(yīng)用系統(tǒng)服務(wù)集成中數(shù)據(jù)轉(zhuǎn)換的方法中的服務(wù)的 描述文件包括Java接口文件、WSDL文件、IDL文件。該實(shí)現(xiàn)面向服務(wù)的體系結(jié)構(gòu)的應(yīng)用系統(tǒng)服務(wù)集成中數(shù)據(jù)轉(zhuǎn)換的方法中的從遠(yuǎn)程 下載服務(wù)的描述文件,包括以下步驟(1221)分析所下載的服務(wù)的描述文件;(1222)如果所下載的服務(wù)的描述文件中包含通過(guò)import或者include方式所引 用的其它服務(wù)的描述文件,則一并下載到本地;(1223)分析所下載的所有服務(wù)的描述文件,如果該服務(wù)的描述文件中的類型定義 〈types〉部分包含通過(guò)import或者include方式所引用的其它XSD文件,則把引用的XSD 文件下載到本地;(1224)分析所下載的所有XSD文件,如果包含通過(guò)import或者include方式所引 用的其它XSD文件,則同時(shí)把引用的XSD文件下載到本地;(1225)將所下載的XSD文件默認(rèn)保存到相應(yīng)包資源樹(shù)下的“XML Schema”結(jié)點(diǎn)下。該實(shí)現(xiàn)面向服務(wù)的體系結(jié)構(gòu)的應(yīng)用系統(tǒng)服務(wù)集成中數(shù)據(jù)轉(zhuǎn)換的方法中的生成實(shí) 現(xiàn)數(shù)據(jù)對(duì)象轉(zhuǎn)換接口的實(shí)現(xiàn)類,包括以下步驟(131)所述的開(kāi)發(fā)期配置格式定義模塊根據(jù)用戶操作,新建Java類,實(shí)現(xiàn)數(shù)據(jù)對(duì) 象的轉(zhuǎn)換接口 IDataTransformer ;(132)實(shí)現(xiàn)數(shù)據(jù)對(duì)象轉(zhuǎn)換接口的transform接口,把源數(shù)據(jù)按照服務(wù)定義的數(shù)據(jù) 對(duì)象描述的格式轉(zhuǎn)換為目標(biāo)數(shù)據(jù)格式;(133)所述的開(kāi)發(fā)期配置格式定義模塊設(shè)置數(shù)據(jù)對(duì)象接口的源數(shù)據(jù)類型;(134)所述的開(kāi)發(fā)期配置格式定義模塊設(shè)置數(shù)據(jù)對(duì)象接口的目標(biāo)數(shù)據(jù)類型;(135)所述的開(kāi)發(fā)期配置格式定義模塊設(shè)置數(shù)據(jù)對(duì)象轉(zhuǎn)換中源數(shù)據(jù)類型到目標(biāo)數(shù) 據(jù)類型的轉(zhuǎn)換權(quán)重,以便查找最優(yōu)轉(zhuǎn)換路徑。該實(shí)現(xiàn)面向服務(wù)的體系結(jié)構(gòu)的應(yīng)用系統(tǒng)服務(wù)集成中數(shù)據(jù)轉(zhuǎn)換的方法中的配置數(shù) 據(jù)對(duì)象轉(zhuǎn)換規(guī)則,包括以下步驟(141)所述的開(kāi)發(fā)期配置格式定義模塊在數(shù)據(jù)對(duì)象轉(zhuǎn)換對(duì)應(yīng)擴(kuò)展包資源樹(shù)下的 “配置”結(jié)點(diǎn)下新建文件DataTransformer. conf ;(142)所述的開(kāi)發(fā)期配置格式定義模塊在文件中配置數(shù)據(jù)對(duì)象的轉(zhuǎn)換類。該實(shí)現(xiàn)面向服務(wù)的體系結(jié)構(gòu)的應(yīng)用系統(tǒng)服務(wù)集成中數(shù)據(jù)轉(zhuǎn)換的方法中的數(shù)據(jù)對(duì) 象的轉(zhuǎn)換類的格式具體為
數(shù)據(jù)對(duì)象轉(zhuǎn)換類全名;sourceType =源數(shù)據(jù)類型全名,targetType =目標(biāo)數(shù)據(jù)類 型全名,weight =數(shù)據(jù)類型轉(zhuǎn)換權(quán)重。該實(shí)現(xiàn)面向服務(wù)的體系結(jié)構(gòu)的應(yīng)用系統(tǒng)服務(wù)集成中數(shù)據(jù)轉(zhuǎn)換的方法中的將數(shù)據(jù) 對(duì)象擴(kuò)展包部署到運(yùn)行環(huán)境中,包括以下步驟(151)所述的開(kāi)發(fā)期配置格式定義模塊根據(jù)用戶在數(shù)據(jù)對(duì)象轉(zhuǎn)換對(duì)應(yīng)擴(kuò)展包資源 樹(shù)上的操作,接受用戶的部署選擇操作;(152)所述的開(kāi)發(fā)期配置格式定義模塊將數(shù)據(jù)對(duì)象轉(zhuǎn)換對(duì)應(yīng)擴(kuò)展包下的資源按目 錄結(jié)構(gòu)部署到運(yùn)行環(huán)境中。該實(shí)現(xiàn)面向服務(wù)的體系結(jié)構(gòu)的應(yīng)用系統(tǒng)服務(wù)集成中數(shù)據(jù)轉(zhuǎn)換的方法中的提供支 持?jǐn)?shù)據(jù)對(duì)象轉(zhuǎn)換擴(kuò)展的接口類,包括以下步驟(211)所述的運(yùn)行期通用框架模塊定義數(shù)據(jù)轉(zhuǎn)換操作的接口類 IDataTransformer,供用戶擴(kuò)展,接口中包括數(shù)據(jù)對(duì)象的類型轉(zhuǎn)換操作以及此轉(zhuǎn)換對(duì)應(yīng)的 源和目標(biāo)數(shù)據(jù)類型和轉(zhuǎn)換的權(quán)重;(212)所述的運(yùn)行期通用框架模塊提供根據(jù)輸入、輸出數(shù)據(jù)類型獲取數(shù)據(jù)轉(zhuǎn)換類 列表的工廠類 DataTransformerFactory0該實(shí)現(xiàn)面向服務(wù)的體系結(jié)構(gòu)的應(yīng)用系統(tǒng)服務(wù)集成中數(shù)據(jù)轉(zhuǎn)換的方法中的加載導(dǎo) 入的服務(wù)對(duì)應(yīng)的數(shù)據(jù)對(duì)象描述文件WSDL以及其中的數(shù)據(jù)類型定義XSD Schema信息,包括 以下步驟(221)所述的運(yùn)行期通用框架模塊解析導(dǎo)入的所有XSD文件,對(duì)其中的類型定義 形成內(nèi)存模型;(222)所述的運(yùn)行期通用框架模塊解析導(dǎo)入的所有WSDL文件,對(duì)其中定義的 Schema Type進(jìn)行解析,對(duì)其中的類型定義形成內(nèi)存模型;(223)所述的運(yùn)行期通用框架模塊解析所有WSDL文件中的接口定義,形成接口、 操作以及操作參數(shù)的映射關(guān)系;(224)所述的運(yùn)行期通用框架模塊對(duì)所有的XSD、WSDL中的類型定義模型進(jìn)行緩 存;(225)所述的運(yùn)行期通用框架模塊對(duì)所有的WSDL中的PortType接口定義進(jìn)行緩存。該實(shí)現(xiàn)面向服務(wù)的體系結(jié)構(gòu)的應(yīng)用系統(tǒng)服務(wù)集成中數(shù)據(jù)轉(zhuǎn)換的方法中的加載定 義的數(shù)據(jù)對(duì)象轉(zhuǎn)換配置文件,包括以下步驟(231)所述的運(yùn)行期通用框架模塊查找構(gòu)件包中配置文件DataTransformer. conf ;(232)所述的運(yùn)行期通用框架模塊讀取配置文件中的內(nèi)容,文件中每一行對(duì)應(yīng)一 種數(shù)據(jù)類型的轉(zhuǎn)換定義;(233)所述的運(yùn)行期通用框架模塊將配置文件中定義的每個(gè)轉(zhuǎn)換器進(jìn)行實(shí)例化;(234)所述的運(yùn)行期通用框架模塊將數(shù)據(jù)轉(zhuǎn)換器實(shí)例注冊(cè)到數(shù)據(jù)轉(zhuǎn)換器注冊(cè)倉(cāng)庫(kù) 中。該實(shí)現(xiàn)面向服務(wù)的體系結(jié)構(gòu)的應(yīng)用系統(tǒng)服務(wù)集成中數(shù)據(jù)轉(zhuǎn)換的方法中的根據(jù)數(shù) 據(jù)對(duì)象轉(zhuǎn)換配置文件中定義的源、目標(biāo)數(shù)據(jù)類型形成類型轉(zhuǎn)換有向圖,包括以下步驟
12
(241)所述的運(yùn)行期通用框架模塊從數(shù)據(jù)轉(zhuǎn)換器實(shí)例注冊(cè)倉(cāng)庫(kù)中讀取所有的數(shù)據(jù) 轉(zhuǎn)換器;(242)所述的運(yùn)行期通用框架模塊創(chuàng)建有向圖Graph對(duì)象;(243)所述的運(yùn)行期通用框架模塊遍歷所有的數(shù)據(jù)轉(zhuǎn)換器;(244)所述的各個(gè)數(shù)據(jù)轉(zhuǎn)換器形成有向圖的邊,其中源數(shù)據(jù)類型和目標(biāo)數(shù)據(jù)類型 作為邊兩端的結(jié)點(diǎn);(245)所述的運(yùn)行期通用框架模塊根據(jù)數(shù)據(jù)轉(zhuǎn)換器的設(shè)置的權(quán)重,設(shè)置每條邊的權(quán)重。該實(shí)現(xiàn)面向服務(wù)的體系結(jié)構(gòu)的應(yīng)用系統(tǒng)服務(wù)集成中數(shù)據(jù)轉(zhuǎn)換的方法中的根據(jù)接 入服務(wù)的協(xié)議類型確定服務(wù)對(duì)應(yīng)的數(shù)據(jù)轉(zhuǎn)換類型,包括以下步驟(311)所述的運(yùn)行期通用框架模塊對(duì)接入服務(wù)確定服務(wù)所對(duì)應(yīng)的輸入源數(shù)據(jù)類 型;(312)所述的運(yùn)行期通用框架模塊查找接入的服務(wù),確定服務(wù)對(duì)應(yīng)業(yè)務(wù)操作的數(shù) 據(jù)類型;(313)所述的運(yùn)行期通用框架模塊設(shè)置接入服務(wù)對(duì)應(yīng)輸入的數(shù)據(jù)類型轉(zhuǎn)換;(314)所述的運(yùn)行期通用框架模塊設(shè)置接入服務(wù)對(duì)應(yīng)輸出的數(shù)據(jù)類型轉(zhuǎn)換。該實(shí)現(xiàn)面向服務(wù)的體系結(jié)構(gòu)的應(yīng)用系統(tǒng)服務(wù)集成中數(shù)據(jù)轉(zhuǎn)換的方法中的對(duì)接入 的服務(wù)生成服務(wù)代理,包括以下步驟(321)所述的運(yùn)行期通用框架模塊查找服務(wù)定義的接口類型;(322)所述的運(yùn)行期通用框架模塊根據(jù)服務(wù)接口類型,生成基于接口或者基于類 的代理;(323)所述的運(yùn)行期通用框架模塊根據(jù)服務(wù)接口定義,遍歷服務(wù)中的所有方法,確 定其輸入以及輸出數(shù)據(jù)類型;(324)所述的運(yùn)行期通用框架模塊對(duì)服務(wù)中的方法以及方法的類型進(jìn)行緩存,以 增加性能。該實(shí)現(xiàn)面向服務(wù)的體系結(jié)構(gòu)的應(yīng)用系統(tǒng)服務(wù)集成中數(shù)據(jù)轉(zhuǎn)換的方法中的在服務(wù) 代理中針對(duì)每一個(gè)服務(wù)方法調(diào)用生成調(diào)用鏈,包括以下步驟(331)實(shí)現(xiàn)基于代理的接口方法invoke ;(332)根據(jù)要調(diào)用的服務(wù)方法名稱以及參數(shù)類型,找到服務(wù)對(duì)應(yīng)的目標(biāo)方法;(333)對(duì)方法調(diào)用的參數(shù)進(jìn)行封裝,統(tǒng)一為包裝數(shù)據(jù)對(duì)象Message,該包裝數(shù)據(jù)對(duì) 象Message作為所有數(shù)據(jù)類型的總線對(duì)象進(jìn)行傳遞;(334)針對(duì)每個(gè)方法,生成相應(yīng)的調(diào)用鏈,調(diào)用鏈中的每一部分封裝為攔截器;(335)業(yè)務(wù)方法的調(diào)用封裝為調(diào)用的攔截器,并加入到調(diào)用鏈的頭部。該實(shí)現(xiàn)面向服務(wù)的體系結(jié)構(gòu)的應(yīng)用系統(tǒng)服務(wù)集成中數(shù)據(jù)轉(zhuǎn)換的方法中的根據(jù)服 務(wù)對(duì)應(yīng)的數(shù)據(jù)轉(zhuǎn)換類型在方法的調(diào)用鏈中添加數(shù)據(jù)轉(zhuǎn)換的攔截器,包括以下步驟(341)根據(jù)服務(wù)對(duì)應(yīng)的輸入以及輸出數(shù)據(jù)類型,判斷是否需要進(jìn)行數(shù)據(jù)轉(zhuǎn)換;(342)如果需要,在方法調(diào)用的調(diào)用鏈中添加數(shù)據(jù)轉(zhuǎn)換攔截器;(343)添加對(duì)輸入數(shù)據(jù)進(jìn)行轉(zhuǎn)換攔截器到調(diào)用鏈?zhǔn)祝?344)添加對(duì)輸出數(shù)據(jù)進(jìn)行轉(zhuǎn)換攔截器到調(diào)用鏈尾。
該實(shí)現(xiàn)面向服務(wù)的體系結(jié)構(gòu)的應(yīng)用系統(tǒng)服務(wù)集成中數(shù)據(jù)轉(zhuǎn)換的方法中的數(shù)據(jù)轉(zhuǎn) 換的攔截器中根據(jù)數(shù)據(jù)對(duì)象轉(zhuǎn)換有向圖查找最優(yōu)的數(shù)據(jù)轉(zhuǎn)換路徑,包括以下步驟(351)在數(shù)據(jù)轉(zhuǎn)換攔截器中,查找服務(wù)調(diào)用方法所對(duì)應(yīng)的輸入、輸出類型;(352)查找調(diào)用服務(wù)所要求使用的輸入以及輸出數(shù)據(jù)類型;(353)從數(shù)據(jù)轉(zhuǎn)換注冊(cè)庫(kù)生成的有向圖中查找服務(wù)輸入數(shù)據(jù)所需的轉(zhuǎn)換器列表, 并要求從源到目標(biāo)數(shù)據(jù)類型的轉(zhuǎn)換器的權(quán)重最?。?354)從數(shù)據(jù)轉(zhuǎn)換注冊(cè)庫(kù)生成的有向圖中查找服務(wù)輸出數(shù)據(jù)所需的轉(zhuǎn)換器列表, 并要求從源到目標(biāo)數(shù)據(jù)類型的轉(zhuǎn)換器的權(quán)重最小。該實(shí)現(xiàn)面向服務(wù)的體系結(jié)構(gòu)的應(yīng)用系統(tǒng)服務(wù)集成中數(shù)據(jù)轉(zhuǎn)換的方法中的調(diào)用所 定義的數(shù)據(jù)對(duì)象格式轉(zhuǎn)換實(shí)現(xiàn)類實(shí)現(xiàn)不同數(shù)據(jù)對(duì)象的類型轉(zhuǎn)換,包括以下步驟(361)所述的運(yùn)行期通用框架模塊依次調(diào)用所需轉(zhuǎn)換類的invoke方法,實(shí)現(xiàn)管道 調(diào)用的方式,并將上一次的輸出作為本次調(diào)用的輸入;(362)在調(diào)用結(jié)束后返回轉(zhuǎn)換后的數(shù)據(jù),傳遞給業(yè)務(wù)方法調(diào)用。該實(shí)現(xiàn)面向服務(wù)的體系結(jié)構(gòu)的應(yīng)用系統(tǒng)服務(wù)集成中數(shù)據(jù)轉(zhuǎn)換的方法中的根據(jù)接 出服務(wù)的類型確定服務(wù)對(duì)應(yīng)的數(shù)據(jù)轉(zhuǎn)換類型,包括以下步驟(411)所述的運(yùn)行期通用框架模塊對(duì)接出服務(wù)確定服務(wù)所對(duì)應(yīng)的輸出源數(shù)據(jù)類 型;(412)所述的運(yùn)行期通用框架模塊查找接出的服務(wù),確定服務(wù)對(duì)應(yīng)業(yè)務(wù)操作的數(shù) 據(jù)類型;(413)所述的運(yùn)行期通用框架模塊設(shè)置接出服務(wù)對(duì)應(yīng)輸入的數(shù)據(jù)類型轉(zhuǎn)換;(414)所述的運(yùn)行期通用框架模塊設(shè)置接出服務(wù)對(duì)應(yīng)輸出的數(shù)據(jù)類型轉(zhuǎn)換。該實(shí)現(xiàn)面向服務(wù)的體系結(jié)構(gòu)的應(yīng)用系統(tǒng)服務(wù)集成中數(shù)據(jù)轉(zhuǎn)換的方法中的對(duì)接出 的服務(wù)生成服務(wù)代理,包括以下步驟(421)所述的運(yùn)行期通用框架模塊查找需要接出服務(wù)的業(yè)務(wù)方法中對(duì)應(yīng)的接口類 型;(422)所述的運(yùn)行期通用框架模塊根據(jù)業(yè)務(wù)方法的接口類型,生成基于接口或者 基于類的代理;(423)所述的運(yùn)行期通用框架模塊根據(jù)業(yè)務(wù)接口定義,遍歷接口中的所有方法,確 定其輸入以及輸出數(shù)據(jù)類型;(424)所述的運(yùn)行期通用框架模塊對(duì)業(yè)務(wù)接口中的方法以及方法的類型進(jìn)行緩 存,以增加性能。采用了該發(fā)明的面向服務(wù)的體系結(jié)構(gòu)的應(yīng)用系統(tǒng)服務(wù)集成中實(shí)現(xiàn)數(shù)據(jù)轉(zhuǎn)換的系 統(tǒng)結(jié)構(gòu)及其方法,由于其中針對(duì)不同服務(wù)調(diào)用,系統(tǒng)能自動(dòng)根據(jù)服務(wù)的類型進(jìn)行數(shù)據(jù)的轉(zhuǎn) 換,以適應(yīng)不同服務(wù)的要求,同時(shí)新增不同類型服務(wù)集成時(shí),減少了調(diào)用的操作步驟和對(duì)不 同外部工具的依賴,真正做到了靈活的調(diào)用,同時(shí)傳遞的數(shù)據(jù)采用統(tǒng)一的數(shù)據(jù)總線Message 進(jìn)行封裝,能夠適應(yīng)不同服務(wù)的數(shù)據(jù)轉(zhuǎn)換,從而使得系統(tǒng)的集成工作變得簡(jiǎn)單而高效,不再 需要維護(hù)大量的轉(zhuǎn)換器代碼,而且對(duì)于外部不同的數(shù)據(jù)類型變化能夠快速適應(yīng),從而使數(shù) 據(jù)類型轉(zhuǎn)換的開(kāi)發(fā)、調(diào)用過(guò)程更加直觀,提高了調(diào)用的效率,快捷方便,系統(tǒng)運(yùn)行效率較高, 性能穩(wěn)定可靠,降低了開(kāi)發(fā)維護(hù)的成本;同時(shí)增強(qiáng)了系統(tǒng)可移植性和可擴(kuò)展性,能夠快速適
14應(yīng)業(yè)務(wù)需求的變化和技術(shù)變化,能夠支撐建立高度模塊化而且又高度整合的軟件系統(tǒng),不 必修改核心代碼就能增加新的數(shù)據(jù)類型的轉(zhuǎn)換支持,以支持不同外部服務(wù)的需要,開(kāi)發(fā)期 簡(jiǎn)單,接口明確,配置方便,運(yùn)行期效率較高、系統(tǒng)性能穩(wěn)定可靠,適用范圍較為廣泛,為SOA 系統(tǒng)的集成發(fā)展打下了堅(jiān)實(shí)的基礎(chǔ)。


圖1為本發(fā)明的面向服務(wù)的體系結(jié)構(gòu)的應(yīng)用系統(tǒng)服務(wù)集成中實(shí)現(xiàn)數(shù)據(jù)轉(zhuǎn)換的系 統(tǒng)結(jié)構(gòu)中的數(shù)據(jù)轉(zhuǎn)換接口 IDataTransformer的類圖。圖2為本發(fā)明的面向服務(wù)的體系結(jié)構(gòu)的應(yīng)用系統(tǒng)服務(wù)集成中實(shí)現(xiàn)數(shù)據(jù)轉(zhuǎn)換的系 統(tǒng)結(jié)構(gòu)中獲取數(shù)據(jù)轉(zhuǎn)換類列表工廠DataTransformerFactory的類圖。圖3為本發(fā)明的面向服務(wù)的體系結(jié)構(gòu)的應(yīng)用系統(tǒng)服務(wù)集成中實(shí)現(xiàn)數(shù)據(jù)轉(zhuǎn)換的系 統(tǒng)結(jié)構(gòu)中WSDL、XSD中操作、類型解析類圖。圖4為本發(fā)明的面向服務(wù)的體系結(jié)構(gòu)的應(yīng)用系統(tǒng)服務(wù)集成中實(shí)現(xiàn)數(shù)據(jù)轉(zhuǎn)換的系 統(tǒng)結(jié)構(gòu)中數(shù)據(jù)轉(zhuǎn)換器形成有向圖的類圖。圖5為本發(fā)明的面向服務(wù)的體系結(jié)構(gòu)的應(yīng)用系統(tǒng)服務(wù)集成中實(shí)現(xiàn)數(shù)據(jù)轉(zhuǎn)換的系 統(tǒng)結(jié)構(gòu)中的數(shù)據(jù)轉(zhuǎn)換器所形成的有向圖示意圖。圖6為本發(fā)明的面向服務(wù)的體系結(jié)構(gòu)的應(yīng)用系統(tǒng)服務(wù)集成中實(shí)現(xiàn)數(shù)據(jù)轉(zhuǎn)換的系 統(tǒng)結(jié)構(gòu)中的調(diào)用鏈(InvocationChain)類圖。圖7為本發(fā)明的實(shí)現(xiàn)面向服務(wù)的體系結(jié)構(gòu)的應(yīng)用系統(tǒng)服務(wù)集成中數(shù)據(jù)轉(zhuǎn)換的方 法中接入服務(wù)的攔截器工作原理示意圖。圖8為本發(fā)明的實(shí)現(xiàn)面向服務(wù)的體系結(jié)構(gòu)的應(yīng)用系統(tǒng)服務(wù)集成中數(shù)據(jù)轉(zhuǎn)換的方 法中接出服務(wù)的攔截器工作原理示意圖。圖9為本發(fā)明的實(shí)現(xiàn)面向服務(wù)的體系結(jié)構(gòu)的應(yīng)用系統(tǒng)服務(wù)集成中數(shù)據(jù)轉(zhuǎn)換的方 法中數(shù)據(jù)轉(zhuǎn)換器調(diào)用過(guò)程示意圖。圖10為本發(fā)明的實(shí)現(xiàn)面向服務(wù)的體系結(jié)構(gòu)的應(yīng)用系統(tǒng)服務(wù)集成中數(shù)據(jù)轉(zhuǎn)換的方 法中接入服務(wù)調(diào)用過(guò)程示意圖。圖11為本發(fā)明的實(shí)現(xiàn)面向服務(wù)的體系結(jié)構(gòu)的應(yīng)用系統(tǒng)服務(wù)集成中數(shù)據(jù)轉(zhuǎn)換的方 法中接出服務(wù)調(diào)用過(guò)程示意圖。圖12為本發(fā)明的實(shí)現(xiàn)面向服務(wù)的體系結(jié)構(gòu)的應(yīng)用系統(tǒng)服務(wù)集成中數(shù)據(jù)轉(zhuǎn)換的方 法中的SOAP消息結(jié)構(gòu)示意圖。
具體實(shí)施例方式為了能夠更清楚地理解本發(fā)明的技術(shù)內(nèi)容,特舉以下實(shí)施例詳細(xì)說(shuō)明。請(qǐng)參閱圖1至圖6所示,該面向服務(wù)的體系結(jié)構(gòu)的應(yīng)用系統(tǒng)服務(wù)集成中實(shí)現(xiàn)數(shù)據(jù) 轉(zhuǎn)換的系統(tǒng)結(jié)構(gòu),其中,所述的系統(tǒng)結(jié)構(gòu)包括(1)運(yùn)行期通用框架模塊,支撐不同數(shù)據(jù)對(duì)象的轉(zhuǎn)換擴(kuò)展,其中包括(a)配置加載單元,進(jìn)行數(shù)據(jù)對(duì)象轉(zhuǎn)換信息的配置加載;(b)有向圖單元,該有向圖單元根據(jù)所述的配置加載單元所配置加載的數(shù)據(jù)對(duì)象 轉(zhuǎn)換信息而生成,且提供從源數(shù)據(jù)類型到目標(biāo)數(shù)據(jù)類型轉(zhuǎn)換所需的最短路徑,并針對(duì)接入
15服務(wù)以及接出服務(wù)時(shí)提供不同數(shù)據(jù)對(duì)象的轉(zhuǎn)換操作,其中,數(shù)據(jù)轉(zhuǎn)換過(guò)程中的接口元數(shù)據(jù) 統(tǒng)一用Web Service定義語(yǔ)言進(jìn)行描述;(2)開(kāi)發(fā)期配置格式定義模塊,與所述的運(yùn)行期通用框架模塊相連接,并進(jìn)行數(shù)據(jù) 對(duì)象轉(zhuǎn)換的配置格式定義,其中包括(a)接口轉(zhuǎn)換器,實(shí)現(xiàn)特定數(shù)據(jù)類型的轉(zhuǎn)換操作;(b)轉(zhuǎn)換器注冊(cè)單元,對(duì)所述的接口轉(zhuǎn)換器進(jìn)行注冊(cè)。該基于上述的系統(tǒng)結(jié)構(gòu)實(shí)現(xiàn)面向服務(wù)的體系結(jié)構(gòu)的應(yīng)用系統(tǒng)服務(wù)集成中數(shù)據(jù)轉(zhuǎn) 換的方法,其中,所述的方法包括開(kāi)發(fā)期數(shù)據(jù)對(duì)象轉(zhuǎn)換的配置格式定義操作、運(yùn)行期數(shù)據(jù)對(duì) 象轉(zhuǎn)換的配置加載操作、運(yùn)行期接入服務(wù)的數(shù)據(jù)對(duì)象轉(zhuǎn)換操作和運(yùn)行期接出服務(wù)的數(shù)據(jù)對(duì) 象轉(zhuǎn)換操作,所述的開(kāi)發(fā)期數(shù)據(jù)對(duì)象轉(zhuǎn)換的配置格式定義操作,包括以下步驟(11)所述的開(kāi)發(fā)期配置格式定義模塊新建數(shù)據(jù)對(duì)象轉(zhuǎn)換擴(kuò)展包;該數(shù)據(jù)對(duì)象轉(zhuǎn) 換擴(kuò)展包為包含一定功能邏輯的物理單元,每個(gè)數(shù)據(jù)對(duì)象轉(zhuǎn)換擴(kuò)展包作為一個(gè)最小的部署 單元部署到運(yùn)行環(huán)境中,且該數(shù)據(jù)對(duì)象轉(zhuǎn)換擴(kuò)展包中包含了實(shí)現(xiàn)數(shù)據(jù)轉(zhuǎn)換功能的所有依賴 資源,數(shù)據(jù)對(duì)象轉(zhuǎn)換擴(kuò)展包在物理上同一文件目錄對(duì)應(yīng),該依賴資源包括WSDL文件、XSD文 件、數(shù)據(jù)對(duì)象轉(zhuǎn)換配置文件、Java運(yùn)行時(shí)需要的類文件;(12)所述的開(kāi)發(fā)期配置格式定義模塊導(dǎo)入外部服務(wù)的描述文件,包括以下步驟(a)所述的開(kāi)發(fā)期配置格式定義模塊根據(jù)用戶通過(guò)在數(shù)據(jù)對(duì)象轉(zhuǎn)換擴(kuò)展包右鍵菜 單的選擇操作,并根據(jù)外部服務(wù)的類型進(jìn)行導(dǎo)入操作;(b)導(dǎo)入時(shí),從本地選擇服務(wù)的描述文件或者根據(jù)所提供的URL從遠(yuǎn)程下載服務(wù) 的描述文件;該描述文件包括Java接口文件、WSDL文件、IDL文件;該從遠(yuǎn)程下載服務(wù)的描 述文件,包括以下步驟(i)分析所下載的服務(wù)的描述文件;(ii)如果所下載的服務(wù)的描述文件中包含通過(guò)import或者include方式所引用 的其它服務(wù)的描述文件,則一并下載到本地;(iii)分析所下載的所有服務(wù)的描述文件,如果該服務(wù)的描述文件中的類型定義 〈types〉部分包含通過(guò)import或者include方式所引用的其它XSD文件,則把引用的XSD 文件下載到本地;(iv)分析所下載的所有XSD文件,如果包含通過(guò)import或者include方式所引用 的其它XSD文件,則同時(shí)把引用的XSD文件下載到本地;(ν)將所下載的XSD文件默認(rèn)保存到相應(yīng)包資源樹(shù)下的“XML Schema"結(jié)點(diǎn)下;(c)根據(jù)導(dǎo)入的服務(wù)描述文件統(tǒng)一生成WSDL接口描述;(d)將所下載的WSDL文件和接口生成的WSDL文件默認(rèn)保存到對(duì)應(yīng)擴(kuò)展包資源樹(shù) 下的“接口”結(jié)點(diǎn)下;(e)將接口中的操作作為資源樹(shù)“接口”結(jié)點(diǎn)的子結(jié)點(diǎn)進(jìn)行顯示;(13)所述的開(kāi)發(fā)期配置格式定義模塊根據(jù)用戶的輸入操作,生成實(shí)現(xiàn)數(shù)據(jù)對(duì)象轉(zhuǎn) 換接口的實(shí)現(xiàn)類,包括以下步驟(a)所述的開(kāi)發(fā)期配置格式定義模塊根據(jù)用戶操作,新建Java類,實(shí)現(xiàn)數(shù)據(jù)對(duì)象 的轉(zhuǎn)換接 口 IDataTransformer ;(b)實(shí)現(xiàn)數(shù)據(jù)對(duì)象轉(zhuǎn)換接口的transform接口,把源數(shù)據(jù)按照服務(wù)定義的數(shù)據(jù)對(duì)
16象描述的格式轉(zhuǎn)換為目標(biāo)數(shù)據(jù)格式;(c)所述的開(kāi)發(fā)期配置格式定義模塊設(shè)置數(shù)據(jù)對(duì)象接口的源數(shù)據(jù)類型;(d)所述的開(kāi)發(fā)期配置格式定義模塊設(shè)置數(shù)據(jù)對(duì)象接口的目標(biāo)數(shù)據(jù)類型;(e)所述的開(kāi)發(fā)期配置格式定義模塊設(shè)置數(shù)據(jù)對(duì)象轉(zhuǎn)換中源數(shù)據(jù)類型到目標(biāo)數(shù)據(jù) 類型的轉(zhuǎn)換權(quán)重,以便查找最優(yōu)轉(zhuǎn)換路徑;(14)所述的開(kāi)發(fā)期配置格式定義模塊配置數(shù)據(jù)對(duì)象轉(zhuǎn)換規(guī)則,包括以下步驟(a)所述的開(kāi)發(fā)期配置格式定義模塊在數(shù)據(jù)對(duì)象轉(zhuǎn)換對(duì)應(yīng)擴(kuò)展包資源樹(shù)下的“配 置”結(jié)點(diǎn)下新建文件DataTransformer. conf ;(b)所述的開(kāi)發(fā)期配置格式定義模塊在文件中配置數(shù)據(jù)對(duì)象的轉(zhuǎn)換類,該數(shù)據(jù)對(duì) 象的轉(zhuǎn)換類的格式具體為數(shù)據(jù)對(duì)象轉(zhuǎn)換類全名;sourceType =源數(shù)據(jù)類型全名,targetType =目標(biāo)數(shù)據(jù)類 型全名,weight =數(shù)據(jù)類型轉(zhuǎn)換權(quán)重;(15)所述的開(kāi)發(fā)期配置格式定義模塊將數(shù)據(jù)對(duì)象擴(kuò)展包部署到運(yùn)行環(huán)境中,包括 以下步驟(a)所述的開(kāi)發(fā)期配置格式定義模塊根據(jù)用戶在數(shù)據(jù)對(duì)象轉(zhuǎn)換對(duì)應(yīng)擴(kuò)展包資源樹(shù) 上的操作,接受用戶的部署選擇操作;(b)所述的開(kāi)發(fā)期配置格式定義模塊將數(shù)據(jù)對(duì)象轉(zhuǎn)換對(duì)應(yīng)擴(kuò)展包下的資源按目錄 結(jié)構(gòu)部署到運(yùn)行環(huán)境中;所述的運(yùn)行期數(shù)據(jù)對(duì)象轉(zhuǎn)換的配置加載操作,包括以下步驟(21)所述的運(yùn)行期通用框架模塊提供支持?jǐn)?shù)據(jù)對(duì)象轉(zhuǎn)換擴(kuò)展的接口類,以供擴(kuò) 展,包括以下步驟(a)所述的運(yùn)行期通用框架模塊定義數(shù)據(jù)轉(zhuǎn)換操作的接口類IDataTransformer, 供用戶擴(kuò)展,接口中包括數(shù)據(jù)對(duì)象的類型轉(zhuǎn)換操作以及此轉(zhuǎn)換對(duì)應(yīng)的源和目標(biāo)數(shù)據(jù)類型和 轉(zhuǎn)換的權(quán)重;(b)所述的運(yùn)行期通用框架模塊提供根據(jù)輸入、輸出數(shù)據(jù)類型獲取數(shù)據(jù)轉(zhuǎn)換類列 表的工廠類 DataTransformerFactory ;(22)所述的運(yùn)行期通用框架模塊加載導(dǎo)入的服務(wù)對(duì)應(yīng)的數(shù)據(jù)對(duì)象描述文件WSDL 以及其中的數(shù)據(jù)類型定義XSD Schema信息,包括以下步驟(a)所述的運(yùn)行期通用框架模塊解析導(dǎo)入的所有XSD文件,對(duì)其中的類型定義形 成內(nèi)存模型;(b)所述的運(yùn)行期通用框架模塊解析導(dǎo)入的所有WSDL文件,對(duì)其中定義的 SchemaType進(jìn)行解析,對(duì)其中的類型定義形成內(nèi)存模型;(c)所述的運(yùn)行期通用框架模塊解析所有WSDL文件中的接口定義,形成接口、操 作以及操作參數(shù)的映射關(guān)系;(d)所述的運(yùn)行期通用框架模塊對(duì)所有的XSD、WSDL中的類型定義模型進(jìn)行緩存;(e)所述的運(yùn)行期通用框架模塊對(duì)所有的WSDL中的PortType接口定義進(jìn)行緩 存;(23)所述的運(yùn)行期通用框架模塊加載定義的數(shù)據(jù)對(duì)象轉(zhuǎn)換配置文件,包括以下步 驟
17
(a)所述的運(yùn)行期通用框架模塊查找構(gòu)件包中配置文件DataTransformer. conf ;(b)所述的運(yùn)行期通用框架模塊讀取配置文件中的內(nèi)容,文件中每一行對(duì)應(yīng)一種 數(shù)據(jù)類型的轉(zhuǎn)換定義;(c)所述的運(yùn)行期通用框架模塊將配置文件中定義的每個(gè)轉(zhuǎn)換器進(jìn)行實(shí)例化;(d)所述的運(yùn)行期通用框架模塊將數(shù)據(jù)轉(zhuǎn)換器實(shí)例注冊(cè)到數(shù)據(jù)轉(zhuǎn)換器注冊(cè)倉(cāng)庫(kù) 中;(24)所述的運(yùn)行期通用框架模塊根據(jù)數(shù)據(jù)對(duì)象轉(zhuǎn)換配置文件中定義的源、目標(biāo)數(shù) 據(jù)類型形成類型轉(zhuǎn)換有向圖,包括以下步驟(a)所述的運(yùn)行期通用框架模塊從數(shù)據(jù)轉(zhuǎn)換器實(shí)例注冊(cè)倉(cāng)庫(kù)中讀取所有的數(shù)據(jù)轉(zhuǎn) 換器;(b)所述的運(yùn)行期通用框架模塊創(chuàng)建有向圖Graph對(duì)象;(c)所述的運(yùn)行期通用框架模塊遍歷所有的數(shù)據(jù)轉(zhuǎn)換器;(d)所述的各個(gè)數(shù)據(jù)轉(zhuǎn)換器形成有向圖的邊,其中源數(shù)據(jù)類型和目標(biāo)數(shù)據(jù)類型作 為邊兩端的結(jié)點(diǎn);(e)所述的運(yùn)行期通用框架模塊根據(jù)數(shù)據(jù)轉(zhuǎn)換器的設(shè)置的權(quán)重,設(shè)置每條邊的權(quán) 重;所述的運(yùn)行期接入服務(wù)的數(shù)據(jù)對(duì)象轉(zhuǎn)換操作,包括以下步驟(31)所述的運(yùn)行期通用框架模塊根據(jù)接入服務(wù)的協(xié)議類型,確定服務(wù)對(duì)應(yīng)的數(shù)據(jù) 轉(zhuǎn)換類型,包括以下步驟(a)所述的運(yùn)行期通用框架模塊對(duì)接入服務(wù)確定服務(wù)所對(duì)應(yīng)的輸入源數(shù)據(jù)類型;(b)所述的運(yùn)行期通用框架模塊查找接入的服務(wù),確定服務(wù)對(duì)應(yīng)業(yè)務(wù)操作的數(shù)據(jù) 類型;(c)所述的運(yùn)行期通用框架模塊設(shè)置接入服務(wù)對(duì)應(yīng)輸入的數(shù)據(jù)類型轉(zhuǎn)換;(d)所述的運(yùn)行期通用框架模塊設(shè)置接入服務(wù)對(duì)應(yīng)輸出的數(shù)據(jù)類型轉(zhuǎn)換;(32)所述的運(yùn)行期通用框架模塊對(duì)接入的服務(wù)生成服務(wù)代理,包括以下步驟(a)所述的運(yùn)行期通用框架模塊查找服務(wù)定義的接口類型;(b)所述的運(yùn)行期通用框架模塊根據(jù)服務(wù)接口類型,生成基于接口或者基于類的 代理;(c)所述的運(yùn)行期通用框架模塊根據(jù)服務(wù)接口定義,遍歷服務(wù)中的所有方法,確定 其輸入以及輸出數(shù)據(jù)類型;(d)所述的運(yùn)行期通用框架模塊對(duì)服務(wù)中的方法以及方法的類型進(jìn)行緩存,以增 加性能;(33)在所述的服務(wù)代理中針對(duì)每一個(gè)服務(wù)方法調(diào)用生成調(diào)用鏈,包括以下步驟(a)實(shí)現(xiàn)基于代理的接口方法invoke ;(b)根據(jù)要調(diào)用的服務(wù)方法名稱以及參數(shù)類型,找到服務(wù)對(duì)應(yīng)的目標(biāo)方法; (c)對(duì)方法調(diào)用的參數(shù)進(jìn)行封裝,統(tǒng)一為包裝數(shù)據(jù)對(duì)象Message,該包裝數(shù)據(jù)對(duì)象 Message作為所有數(shù)據(jù)類型的總線對(duì)象進(jìn)行傳遞;(d)針對(duì)每個(gè)方法,生成相應(yīng)的調(diào)用鏈,調(diào)用鏈中的每一部分封裝為攔截器;(e)業(yè)務(wù)方法的調(diào)用封裝為調(diào)用的攔截器,并加入到調(diào)用鏈的頭部;(34)在所述的服務(wù)代理中根據(jù)服務(wù)對(duì)應(yīng)的數(shù)據(jù)轉(zhuǎn)換類型,在方法的調(diào)用鏈中添加
18數(shù)據(jù)轉(zhuǎn)換的攔截器,包括以下步驟(a)根據(jù)服務(wù)對(duì)應(yīng)的輸入以及輸出數(shù)據(jù)類型,判斷是否需要進(jìn)行數(shù)據(jù)轉(zhuǎn)換;(b)如果需要,在方法調(diào)用的調(diào)用鏈中添加數(shù)據(jù)轉(zhuǎn)換攔截器;(c)添加對(duì)輸入數(shù)據(jù)進(jìn)行轉(zhuǎn)換攔截器到調(diào)用鏈?zhǔn)祝?d)添加對(duì)輸出數(shù)據(jù)進(jìn)行轉(zhuǎn)換攔截器到調(diào)用鏈尾;(35)在所述的數(shù)據(jù)轉(zhuǎn)換的攔截器中根據(jù)數(shù)據(jù)對(duì)象轉(zhuǎn)換有向圖,查找最優(yōu)的數(shù)據(jù)轉(zhuǎn) 換路徑;該實(shí)現(xiàn)面向服務(wù)的體系結(jié)構(gòu)的應(yīng)用系統(tǒng)服務(wù)集成中數(shù)據(jù)轉(zhuǎn)換的方法中的數(shù)據(jù)轉(zhuǎn)換 的攔截器中根據(jù)數(shù)據(jù)對(duì)象轉(zhuǎn)換有向圖查找最優(yōu)的數(shù)據(jù)轉(zhuǎn)換路徑,包括以下步驟(a)在數(shù)據(jù)轉(zhuǎn)換攔截器中,查找服務(wù)調(diào)用方法所對(duì)應(yīng)的輸入、輸出類型;(b)查找調(diào)用服務(wù)所要求使用的輸入以及輸出數(shù)據(jù)類型;(c)從數(shù)據(jù)轉(zhuǎn)換注冊(cè)庫(kù)生成的有向圖中查找服務(wù)輸入數(shù)據(jù)所需的轉(zhuǎn)換器列表,并 要求從源到目標(biāo)數(shù)據(jù)類型的轉(zhuǎn)換器的權(quán)重最?。?d)從數(shù)據(jù)轉(zhuǎn)換注冊(cè)庫(kù)生成的有向圖中查找服務(wù)輸出數(shù)據(jù)所需的轉(zhuǎn)換器列表,并 要求從源到目標(biāo)數(shù)據(jù)類型的轉(zhuǎn)換器的權(quán)重最??;(36)所述的運(yùn)行期通用框架模塊調(diào)用所定義的數(shù)據(jù)對(duì)象格式轉(zhuǎn)換實(shí)現(xiàn)類,實(shí)現(xiàn)不 同數(shù)據(jù)對(duì)象的類型轉(zhuǎn)換,包括以下步驟(a)所述的運(yùn)行期通用框架模塊依次調(diào)用所需轉(zhuǎn)換類的invoke方法,實(shí)現(xiàn)管道調(diào) 用的方式,并將上一次的輸出作為本次調(diào)用的輸入;(b)在調(diào)用結(jié)束后返回轉(zhuǎn)換后的數(shù)據(jù),傳遞給業(yè)務(wù)方法調(diào)用;所述的運(yùn)行期接出服務(wù)的數(shù)據(jù)對(duì)象轉(zhuǎn)換操作,包括以下步驟(41)所述的運(yùn)行期通用框架模塊根據(jù)接出服務(wù)的類型,確定服務(wù)對(duì)應(yīng)的數(shù)據(jù)轉(zhuǎn)換 類型,包括以下步驟(a)所述的運(yùn)行期通用框架模塊對(duì)接出服務(wù)確定服務(wù)所對(duì)應(yīng)的輸出源數(shù)據(jù)類型;(b)所述的運(yùn)行期通用框架模塊查找接出的服務(wù),確定服務(wù)對(duì)應(yīng)業(yè)務(wù)操作的數(shù)據(jù) 類型;(c)所述的運(yùn)行期通用框架模塊設(shè)置接出服務(wù)對(duì)應(yīng)輸入的數(shù)據(jù)類型轉(zhuǎn)換;(d)所述的運(yùn)行期通用框架模塊設(shè)置接出服務(wù)對(duì)應(yīng)輸出的數(shù)據(jù)類型轉(zhuǎn)換;(42)所述的運(yùn)行期通用框架模塊對(duì)接出的服務(wù)生成服務(wù)代理,包括以下步驟(a)所述的運(yùn)行期通用框架模塊查找需要接出服務(wù)的業(yè)務(wù)方法中對(duì)應(yīng)的接口類 型;(b)所述的運(yùn)行期通用框架模塊根據(jù)業(yè)務(wù)方法的接口類型,生成基于接口或者基 于類的代理;(c)所述的運(yùn)行期通用框架模塊根據(jù)業(yè)務(wù)接口定義,遍歷接口中的所有方法,確定 其輸入以及輸出數(shù)據(jù)類型;(d)所述的運(yùn)行期通用框架模塊對(duì)業(yè)務(wù)接口中的方法以及方法的類型進(jìn)行緩存, 以增加性能。(43)在所述的服務(wù)代理中針對(duì)每一個(gè)方法調(diào)用生成調(diào)用鏈;(44)在所述的服務(wù)代理中根據(jù)服務(wù)對(duì)應(yīng)的數(shù)據(jù)轉(zhuǎn)換類型,在方法的調(diào)用鏈中添加 數(shù)據(jù)轉(zhuǎn)換的攔截器;
(45)在所述的數(shù)據(jù)轉(zhuǎn)換的攔截器中,根據(jù)數(shù)據(jù)對(duì)象轉(zhuǎn)換有向圖,查找最優(yōu)的數(shù)據(jù) 轉(zhuǎn)換路徑;(46)所述的運(yùn)行期通用框架模塊調(diào)用定義的數(shù)據(jù)對(duì)象格式轉(zhuǎn)換實(shí)現(xiàn)類,實(shí)現(xiàn)不同 數(shù)據(jù)對(duì)象的類型轉(zhuǎn)換。本發(fā)明中,在發(fā)布或者調(diào)用Web Service服務(wù)時(shí),客戶端與服務(wù)器端交互的橋梁是 WSDL (Web Service Definition Language),其中包括了 以下幾個(gè)主要元素· types——數(shù)據(jù)類型定義的容器,使用XML Schema來(lái)描述數(shù)據(jù)類型的結(jié)構(gòu)信
肩、ο· portType——描述服務(wù)操作的抽象集合,與Java接口類似?!?binding——數(shù)據(jù)傳輸過(guò)程中指定的具體傳輸協(xié)議以及所定義操作的數(shù)據(jù)格式 規(guī)范?!?service——對(duì)外提供的服務(wù)?!?operation——對(duì)服務(wù)中所支持的操作的抽象描述,描述了訪問(wèn)入口的請(qǐng)求/ 響應(yīng)消息以及異常的聲明。 在調(diào)用Web Service過(guò)程中,客戶端與服務(wù)器端交互的信息為SOAP消息,以XML 格式進(jìn)行定義,其結(jié)構(gòu)如圖12如示,其中包括了以下幾個(gè)主要元素· SOAP Body——封裝了要傳遞的數(shù)據(jù)?!?SOAP Header——作為傳遞消息的擴(kuò)展,可以自由添加。本發(fā)明的該SOA應(yīng)用系統(tǒng)服務(wù)集成中實(shí)現(xiàn)數(shù)據(jù)轉(zhuǎn)換的方法,包括圖形化開(kāi)發(fā)平臺(tái) 和數(shù)據(jù)轉(zhuǎn)換器的運(yùn)行平臺(tái),所述的方法包括運(yùn)行期支撐不同數(shù)據(jù)對(duì)象轉(zhuǎn)換擴(kuò)展的通用框架 和開(kāi)發(fā)期數(shù)據(jù)對(duì)象轉(zhuǎn)換的配置格式定義。運(yùn)行期支撐不同數(shù)據(jù)對(duì)象轉(zhuǎn)換擴(kuò)展的通用框架包 括數(shù)據(jù)對(duì)象轉(zhuǎn)換的配置加載,通過(guò)該配置形成數(shù)據(jù)類型轉(zhuǎn)換的有向圖,根據(jù)有向圖能找到 從源數(shù)據(jù)類型到目標(biāo)數(shù)據(jù)類型轉(zhuǎn)換所需的最短路徑,同時(shí)針對(duì)接入服務(wù)以及接出服務(wù)時(shí)提 供不同數(shù)據(jù)對(duì)象的轉(zhuǎn)換操作,數(shù)據(jù)轉(zhuǎn)換時(shí),接口元數(shù)據(jù)統(tǒng)一用WSDL進(jìn)行描述。開(kāi)發(fā)期數(shù)據(jù) 對(duì)象轉(zhuǎn)換的配置格式定義包括了針對(duì)特定數(shù)據(jù)類型轉(zhuǎn)換的接口實(shí)現(xiàn)以及對(duì)轉(zhuǎn)換器的注冊(cè)。所述的開(kāi)發(fā)期數(shù)據(jù)對(duì)象轉(zhuǎn)換的配置格式定義包括以下步驟(1)新建數(shù)據(jù)對(duì)象轉(zhuǎn)換擴(kuò)展包,包括以下步驟a)通過(guò)“文件”菜單中新建子菜單,選擇新建數(shù)據(jù)對(duì)象轉(zhuǎn)換擴(kuò)展包;b)輸入數(shù)據(jù)對(duì)象轉(zhuǎn)換擴(kuò)展包的名稱,系統(tǒng)創(chuàng)建相應(yīng)的目錄結(jié)構(gòu);c)生成數(shù)據(jù)對(duì)象轉(zhuǎn)換擴(kuò)展包的資源樹(shù),包括配置、接口、XML Schema等結(jié)點(diǎn)。(2)導(dǎo)入外部服務(wù)的描述文件,包括以下步驟a)根據(jù)外部服務(wù)的類型,通過(guò)在數(shù)據(jù)對(duì)象轉(zhuǎn)換擴(kuò)展包右鍵菜單,選擇導(dǎo)入WSDL操 作;b)導(dǎo)入時(shí),從本地選擇外部服務(wù)的描述文件WSDL ;c)導(dǎo)入時(shí),根據(jù)提供的外部WebService的URL,從遠(yuǎn)程下載服務(wù)的WSDL描述文 件;i)分析下載的WSDL文件,如果下載的WSDL文件中包含通過(guò){http//schemas. xmlsoap. org/wsdl/} import 或者{http://schemas. xmlsoap. org/wsdl/} include 弓| 用的 其它WSDL文件,則一并下載到本地;
20
ii)分析下載的所有WSDL文件,如果WSDL文件中的類型定義〈types〉部分包 含通過(guò){http://www.w3. org/2001/XMLSchem}import 或者{http://www.w3.org/2001/ XMLSchem} include引用的其它XSD文件,則把引用的XSD文件下載到本地;iii)分析下載的所有XSD文件,如果包含通過(guò){http://www. w3. org/2001/ XMLSchem} import 或者{http://www. w3. org/2001/XMLSchem} include 引用的其它 XSD 文 件,則同時(shí)把引用的XSD文件下載到本地;
iv)下載的XSD文件默認(rèn)保存到相應(yīng)包資源樹(shù)下的“XML Schema”結(jié)點(diǎn)下;
d)下載的WSDL文件默認(rèn)保存到對(duì)應(yīng)擴(kuò)展包資源樹(shù)下的“接口”結(jié)點(diǎn)下;
e)WSDL接口PortType中的操作作為資源樹(shù)“接口”結(jié)點(diǎn)的子結(jié)點(diǎn)進(jìn)行顯示。 (3)編寫實(shí)現(xiàn)數(shù)據(jù)對(duì)象轉(zhuǎn)換接口的實(shí)現(xiàn)類,包括以下步驟
a)新建JavaClass,實(shí)現(xiàn)數(shù)據(jù)對(duì)象的轉(zhuǎn)換接口 IDataTransformer,其類圖如圖1
b)實(shí)現(xiàn)數(shù)據(jù)對(duì)象轉(zhuǎn)換接口的transform接口,把源數(shù)據(jù)按照服務(wù)定義的數(shù)據(jù)對(duì)象
如示;
描述的格式轉(zhuǎn)換為目標(biāo)數(shù)據(jù)格式;
換路徑c
c)設(shè)置數(shù)據(jù)對(duì)象接口的源數(shù)據(jù)類型;
d)設(shè)置數(shù)據(jù)對(duì)象接口的目標(biāo)數(shù)據(jù)類型;
e)設(shè)置數(shù)據(jù)對(duì)象轉(zhuǎn)換中源數(shù)據(jù)類型到目標(biāo)數(shù)據(jù)類型的轉(zhuǎn)換權(quán)重,以便查找最優(yōu)轉(zhuǎn)
(4)配置數(shù)據(jù)對(duì)象轉(zhuǎn)換規(guī)則,包括以下步驟
a)在數(shù)據(jù)對(duì)象轉(zhuǎn)換對(duì)應(yīng)擴(kuò)展包資源樹(shù)下的“配置”結(jié)點(diǎn)下新建文件 DataTransformer. conf ;b)在文件中配置數(shù)據(jù)對(duì)象的轉(zhuǎn)換類,格式如下數(shù)據(jù)對(duì)象轉(zhuǎn)換類全名;sourceType =源數(shù)據(jù)類型全名,targetType =目標(biāo)數(shù)據(jù)類 型全名,weight =數(shù)據(jù)類型轉(zhuǎn)換權(quán)重。如有把字符串轉(zhuǎn)換為文檔對(duì)象的轉(zhuǎn)換類為com. transformer. String2Document, 權(quán)重為100的配置為com. transformer. String2Document ;sourceType = java. lang. String, targetType = org. w3c. dom. Document,weight = 100o(5)數(shù)據(jù)對(duì)象擴(kuò)展包部署到運(yùn)行環(huán)境中,包括以下步驟a)在數(shù)據(jù)對(duì)象轉(zhuǎn)換對(duì)應(yīng)擴(kuò)展包資源樹(shù)上右擊,在彈出菜單中選擇“部署”菜單;b)數(shù)據(jù)對(duì)象轉(zhuǎn)換對(duì)應(yīng)擴(kuò)展包下的資源按目錄結(jié)構(gòu)部署到運(yùn)行環(huán)境中。經(jīng)過(guò)以上步驟,數(shù)據(jù)轉(zhuǎn)換器的準(zhǔn)備階段已經(jīng)完成,用戶在添加新的數(shù)據(jù)類型轉(zhuǎn)換 時(shí),通過(guò)幾個(gè)簡(jiǎn)單的步驟導(dǎo)入元數(shù)據(jù)描述、實(shí)現(xiàn)數(shù)據(jù)轉(zhuǎn)換接口以及配置轉(zhuǎn)換規(guī)則就完成 了。所述的運(yùn)行期數(shù)據(jù)對(duì)象轉(zhuǎn)換的配置加載包括以下步驟(1)提供支持?jǐn)?shù)據(jù)對(duì)象轉(zhuǎn)換擴(kuò)展的接口類,以供擴(kuò)展,包括以下步驟a)定義數(shù)據(jù)轉(zhuǎn)換操作的接口類IDataTransformer,其類圖如圖1所示,供用戶擴(kuò) 展,接口中包括數(shù)據(jù)對(duì)象的類型轉(zhuǎn)換操作以及此轉(zhuǎn)換對(duì)應(yīng)的源和目標(biāo)數(shù)據(jù)類型和轉(zhuǎn)換的權(quán) 重;
b)提供根據(jù)輸入、輸出數(shù)據(jù)類型獲取數(shù)據(jù)轉(zhuǎn)換類列表的工廠類 DataTransformerFactory,其類圖如圖 2 如示。(2)加載導(dǎo)入的服務(wù)對(duì)應(yīng)的數(shù)據(jù)對(duì)象描述文件WSDL以及其中的數(shù)據(jù)類型定義 XSDSchema信息,包括以下步驟a)解析導(dǎo)入的所有XSD文件,對(duì)其中的類型定義形成內(nèi)存模型;b)解析導(dǎo)入的所有WSDL文件,對(duì)其中定義的Schema Type進(jìn)行解析,對(duì)其中的類 型定義形成內(nèi)存模型;c)解析所有WSDL文件中的接口(PortType)定義,形成接口、操作以及操作參數(shù)的 映射關(guān)系,類圖如圖3如示;d)對(duì)所有的XSD、WSDL中的類型定義模型進(jìn)行緩存;e)對(duì)所有的WSDL中的PortType接口定義進(jìn)行緩存。(3)加載定義的數(shù)據(jù)對(duì)象轉(zhuǎn)換配置文件,包括以下步驟a)查找構(gòu)件包中配置文件DataTransformer. conf ;b)讀取配置文件中的內(nèi)容,文件中每一行對(duì)應(yīng)一種數(shù)據(jù)類型的轉(zhuǎn)換定義;c)配置文件中定義的每個(gè)轉(zhuǎn)換器進(jìn)行實(shí)例化;d)數(shù)據(jù)轉(zhuǎn)換器實(shí)例注冊(cè)到倉(cāng)庫(kù)DataTransformerItepository中。(4)根據(jù)數(shù)據(jù)對(duì)象轉(zhuǎn)換配置文件中定義的源、目標(biāo)數(shù)據(jù)類型形成類型轉(zhuǎn)換有向圖, 包括以下步驟a)從數(shù)據(jù)轉(zhuǎn)換器實(shí)例注冊(cè)倉(cāng)庫(kù)DataTransformerItepository中讀取所有的數(shù)據(jù) 轉(zhuǎn)換器;b)創(chuàng)建有向圖Graph對(duì)象;c)遍歷所有的數(shù)據(jù)轉(zhuǎn)換器;d)每一數(shù)據(jù)轉(zhuǎn)換器的形成有向圖的邊,其中源數(shù)據(jù)類型和目標(biāo)數(shù)據(jù)類型作為邊兩 端的結(jié)點(diǎn),其類圖如圖4如示;e)根據(jù)數(shù)據(jù)轉(zhuǎn)換器的設(shè)置的權(quán)重,設(shè)置每條邊的權(quán)重,形成的有向例如圖5 所示。所述的運(yùn)行期接入服務(wù)的數(shù)據(jù)對(duì)象轉(zhuǎn)換包括以下步驟(1)根據(jù)接入服務(wù)的協(xié)議類型,確定服務(wù)對(duì)應(yīng)的數(shù)據(jù)轉(zhuǎn)換類型,包括以下步驟a)對(duì)接入服務(wù),確定服務(wù)所對(duì)應(yīng)的輸入源數(shù)據(jù)類型;b)查找接入的服務(wù),確定服務(wù)對(duì)應(yīng)業(yè)務(wù)操作的數(shù)據(jù)類型;c)對(duì)接入服務(wù),設(shè)置輸入的數(shù)據(jù)類型轉(zhuǎn)換;d)對(duì)接入服務(wù),設(shè)置輸出的數(shù)據(jù)類型轉(zhuǎn)換。(2)對(duì)接入的服務(wù)生成服務(wù)代理,包括以下步驟a)查找服務(wù)定義的接口類型;b)根據(jù)服務(wù)接口類型,生成基于接口或者基于類的代理;c)根據(jù)服務(wù)接口定義,遍歷服務(wù)中的所有方法,確定其輸入以及輸出數(shù)據(jù)類型;d)對(duì)服務(wù)中的方法以及方法的類型進(jìn)行緩存,以增加性能。(3)服務(wù)代理中針對(duì)每一個(gè)服務(wù)方法調(diào)用生成調(diào)用鏈(InvocationChain),包括 以下步驟
22
a)實(shí)現(xiàn)基于代理的接口方法invoke ;b)根據(jù)要調(diào)用的服務(wù)方法名稱以及參數(shù)類型,找到服務(wù)對(duì)應(yīng)的目標(biāo)方法;c)對(duì)方法調(diào)用的參數(shù)進(jìn)行封裝,統(tǒng)一為包裝數(shù)據(jù)對(duì)象Message,Message對(duì)象作為 所有數(shù)據(jù)類型的總線對(duì)象進(jìn)行傳遞;d)針對(duì)每個(gè)方法,生成調(diào)用鏈(InvocationChain),調(diào)用鏈中的每一部分封裝為 Interc印tor,其類圖如圖6所示;e)業(yè)務(wù)方法的調(diào)用封裝為調(diào)用的Interc印tor,并加入到調(diào)用鏈的頭部。(4)服務(wù)代理中根據(jù)服務(wù)對(duì)應(yīng)的數(shù)據(jù)轉(zhuǎn)換類型,在方法的調(diào)用鏈中添加數(shù)據(jù)轉(zhuǎn)換 的攔截器(Interc印tor),包括以下步驟a)根據(jù)服務(wù)對(duì)應(yīng)的輸入以及輸出數(shù)據(jù)類型,判斷是否需要進(jìn)行數(shù)據(jù)轉(zhuǎn)換;b)如果需要,在方法調(diào)用的調(diào)用鏈中添加數(shù)據(jù)轉(zhuǎn)換攔截器;c)添加對(duì)輸入數(shù)據(jù)進(jìn)行轉(zhuǎn)換攔截器到調(diào)用鏈?zhǔn)祝籨)添加對(duì)輸出數(shù)據(jù)進(jìn)行轉(zhuǎn)換攔截器到調(diào)用鏈尾,接入服務(wù)如圖7所示,接出服務(wù) 如圖8所示。(5)數(shù)據(jù)轉(zhuǎn)換的攔截器(Interceptor)中,根據(jù)數(shù)據(jù)對(duì)象轉(zhuǎn)換有向圖,查找最優(yōu)的 數(shù)據(jù)轉(zhuǎn)換路徑,包括以下步驟a)根據(jù)服務(wù)對(duì)應(yīng)的輸入以及輸出數(shù)據(jù)類型,判斷是否需要進(jìn)行數(shù)據(jù)轉(zhuǎn)換;b)如果需要,在方法調(diào)用的調(diào)用鏈中添加數(shù)據(jù)轉(zhuǎn)換攔截器;c)添加對(duì)輸入數(shù)據(jù)進(jìn)行轉(zhuǎn)換攔截器到調(diào)用鏈?zhǔn)?;d)添加對(duì)輸出數(shù)據(jù)進(jìn)行轉(zhuǎn)換攔截器到調(diào)用鏈尾,接入服務(wù)如圖7所示,接出服務(wù) 如圖8所示。(6)調(diào)用定義的數(shù)據(jù)對(duì)象格式轉(zhuǎn)換實(shí)現(xiàn)類,實(shí)現(xiàn)不同數(shù)據(jù)對(duì)象的類型轉(zhuǎn)換,包括以 下步驟a)依次調(diào)用所需轉(zhuǎn)換類的invoke方法,實(shí)現(xiàn)管道調(diào)用的方式,上一次的輸出作為 本次調(diào)用的輸入,如圖9所示;b)調(diào)用結(jié)束,返回轉(zhuǎn)換后的數(shù)據(jù),傳遞給業(yè)務(wù)方法調(diào)用,調(diào)用過(guò)程如圖10所示。所述的運(yùn)行期接出服務(wù)的數(shù)據(jù)對(duì)象轉(zhuǎn)換包括以下步驟(1)根據(jù)接出服務(wù)的類型,確定服務(wù)對(duì)應(yīng)的數(shù)據(jù)轉(zhuǎn)換類型,包括以下步驟a)對(duì)接出服務(wù),確定服務(wù)所對(duì)應(yīng)的輸出源數(shù)據(jù)類型;b)查找接出的服務(wù),確定服務(wù)對(duì)應(yīng)業(yè)務(wù)操作的數(shù)據(jù)類型;c)設(shè)置接出服務(wù)對(duì)應(yīng)輸入的數(shù)據(jù)類型轉(zhuǎn)換;d)設(shè)置接出服務(wù)對(duì)應(yīng)輸出的數(shù)據(jù)類型轉(zhuǎn)換。(2)對(duì)接出的服務(wù)生成服務(wù)代理,包括以下步驟a)查找需要接出服務(wù)的業(yè)務(wù)方法中對(duì)應(yīng)的接口類型;b)根據(jù)業(yè)務(wù)方法的接口類型,生成基于接口或者基于類的代理;c)根據(jù)業(yè)務(wù)接口定義,遍歷接口中的所有方法,確定其輸入以及輸出數(shù)據(jù)類型;d)對(duì)業(yè)務(wù)接口中的方法以及方法的類型進(jìn)行緩存,以增加性能。(3)服務(wù)代理中針對(duì)每一個(gè)方法調(diào)用生成調(diào)用鏈(InvocationChain),包括以下 步驟
a)實(shí)現(xiàn)基于代理的接口方法invoke ;b)根據(jù)要調(diào)用的服務(wù)方法名稱以及參數(shù)類型,找到服務(wù)對(duì)應(yīng)的目標(biāo)方法;c)對(duì)方法調(diào)用的參數(shù)進(jìn)行封裝,統(tǒng)一為包裝數(shù)據(jù)對(duì)象Message,Message對(duì)象作為 所有數(shù)據(jù)類型的總線對(duì)象進(jìn)行傳遞;d)針對(duì)每個(gè)方法,生成調(diào)用鏈(InvocationChain),調(diào)用鏈中的每一部分封裝為 Interc印tor,其類圖如圖6所示;e)業(yè)務(wù)方法的調(diào)用封裝為調(diào)用的Interc印tor,并加入到調(diào)用鏈的頭部。(4)服務(wù)代理中根據(jù)服務(wù)對(duì)應(yīng)的數(shù)據(jù)轉(zhuǎn)換類型,在方法的調(diào)用鏈中添加數(shù)據(jù)轉(zhuǎn)換 的攔截器(Interc印tor),包括以下步驟a)根據(jù)服務(wù)對(duì)應(yīng)的輸入以及輸出數(shù)據(jù)類型,判斷是否需要進(jìn)行數(shù)據(jù)轉(zhuǎn)換;b)如果需要,在方法調(diào)用的調(diào)用鏈中添加數(shù)據(jù)轉(zhuǎn)換攔截器;c)添加對(duì)輸入數(shù)據(jù)進(jìn)行轉(zhuǎn)換攔截器到調(diào)用鏈?zhǔn)?;d)添加對(duì)輸出數(shù)據(jù)進(jìn)行轉(zhuǎn)換攔截器到調(diào)用鏈尾,接入服務(wù)如圖7所示,接出服務(wù) 如圖8所示。(5)數(shù)據(jù)轉(zhuǎn)換的攔截器(Interceptor)中,根據(jù)數(shù)據(jù)對(duì)象轉(zhuǎn)換有向圖,查找最優(yōu)的 數(shù)據(jù)轉(zhuǎn)換路徑,包括以下步驟a)根據(jù)服務(wù)對(duì)應(yīng)的輸入以及輸出數(shù)據(jù)類型,判斷是否需要進(jìn)行數(shù)據(jù)轉(zhuǎn)換;b)如果需要,在方法調(diào)用的調(diào)用鏈中添加數(shù)據(jù)轉(zhuǎn)換攔截器;c)添加對(duì)輸入數(shù)據(jù)進(jìn)行轉(zhuǎn)換攔截器到調(diào)用鏈?zhǔn)?;d)添加對(duì)輸出數(shù)據(jù)進(jìn)行轉(zhuǎn)換攔截器到調(diào)用鏈尾,接入服務(wù)如圖7所示,接出服務(wù) 如圖8所示。(6)調(diào)用定義的數(shù)據(jù)對(duì)象格式轉(zhuǎn)換實(shí)現(xiàn)類,實(shí)現(xiàn)不同數(shù)據(jù)對(duì)象的類型轉(zhuǎn)換,包括以 下步驟a)依次調(diào)用所需轉(zhuǎn)換類的invoke方法,實(shí)現(xiàn)管道調(diào)用的方式,上一次的輸出作為 本次調(diào)用的輸入,如圖9所示;b)調(diào)用結(jié)束,返回轉(zhuǎn)換后的數(shù)據(jù),傳遞給業(yè)務(wù)方法調(diào)用,調(diào)用過(guò)程如圖11所示。經(jīng)過(guò)以上步驟,服務(wù)集成中關(guān)于數(shù)據(jù)類型轉(zhuǎn)換過(guò)程全部完成,從中可以得出采用 了該發(fā)明的SOA應(yīng)用系統(tǒng)服務(wù)集成中實(shí)現(xiàn)數(shù)據(jù)轉(zhuǎn)換的方法,使系統(tǒng)的集成工作變得簡(jiǎn)單而 高效,不再需要維護(hù)大量的轉(zhuǎn)換器代碼,而且對(duì)于外部不同的數(shù)據(jù)類型變化能夠快速適應(yīng)。采用了該發(fā)明的面向服務(wù)的體系結(jié)構(gòu)的應(yīng)用系統(tǒng)服務(wù)集成中實(shí)現(xiàn)數(shù)據(jù)轉(zhuǎn)換的系 統(tǒng)結(jié)構(gòu)及其方法,由于其中針對(duì)不同服務(wù)調(diào)用,系統(tǒng)能自動(dòng)根據(jù)服務(wù)的類型進(jìn)行數(shù)據(jù)的轉(zhuǎn) 換,以適應(yīng)不同服務(wù)的要求,同時(shí)新增不同類型服務(wù)集成時(shí),減少了調(diào)用的操作步驟和對(duì)不 同外部工具的依賴,真正做到了靈活的調(diào)用,同時(shí)傳遞的數(shù)據(jù)采用統(tǒng)一的數(shù)據(jù)總線Message 進(jìn)行封裝,能夠適應(yīng)不同服務(wù)的數(shù)據(jù)轉(zhuǎn)換,從而使得系統(tǒng)的集成工作變得簡(jiǎn)單而高效,不再 需要維護(hù)大量的轉(zhuǎn)換器代碼,而且對(duì)于外部不同的數(shù)據(jù)類型變化能夠快速適應(yīng),從而使數(shù) 據(jù)類型轉(zhuǎn)換的開(kāi)發(fā)、調(diào)用過(guò)程更加直觀,提高了調(diào)用的效率,快捷方便,系統(tǒng)運(yùn)行效率較高, 性能穩(wěn)定可靠,降低了開(kāi)發(fā)維護(hù)的成本;同時(shí)增強(qiáng)了系統(tǒng)可移植性和可擴(kuò)展性,能夠快速適 應(yīng)業(yè)務(wù)需求的變化和技術(shù)變化,能夠支撐建立高度模塊化而且又高度整合的軟件系統(tǒng),不 必修改核心代碼就能增加新的數(shù)據(jù)類型的轉(zhuǎn)換支持,以支持不同外部服務(wù)的需要,開(kāi)發(fā)期
24簡(jiǎn)單,接口明確,配置方便,運(yùn)行期效率較高、系統(tǒng)性能穩(wěn)定可靠,適用范圍較為廣泛,為SOA 系統(tǒng)的集成發(fā)展打下了堅(jiān)實(shí)的基礎(chǔ)。 在此說(shuō)明書中,本發(fā)明已參照其特定的實(shí)施例作了描述。但是,很顯然仍可以作出 各種修改和變換而不背離本發(fā)明的精神和范圍。因此,說(shuō)明書和附圖應(yīng)被認(rèn)為是說(shuō)明性的 而非限制性的。
權(quán)利要求
一種面向服務(wù)的體系結(jié)構(gòu)的應(yīng)用系統(tǒng)服務(wù)集成中實(shí)現(xiàn)數(shù)據(jù)轉(zhuǎn)換的系統(tǒng)結(jié)構(gòu),其特征在于,所述的系統(tǒng)結(jié)構(gòu)包括運(yùn)行期通用框架模塊,支撐不同數(shù)據(jù)對(duì)象的轉(zhuǎn)換擴(kuò)展;開(kāi)發(fā)期配置格式定義模塊,與所述的運(yùn)行期通用框架模塊相連接,并進(jìn)行數(shù)據(jù)對(duì)象轉(zhuǎn)換的配置格式定義。
2.根據(jù)權(quán)利要求1所述的面向服務(wù)的體系結(jié)構(gòu)的應(yīng)用系統(tǒng)服務(wù)集成中實(shí)現(xiàn)數(shù)據(jù)轉(zhuǎn)換 的系統(tǒng)結(jié)構(gòu),其特征在于,所述的運(yùn)行期通用框架模塊包括配置加載單元,進(jìn)行數(shù)據(jù)對(duì)象轉(zhuǎn)換信息的配置加載;有向圖單元,該有向圖單元根據(jù)所述的配置加載單元所配置加載的數(shù)據(jù)對(duì)象轉(zhuǎn)換信息 而生成,且提供從源數(shù)據(jù)類型到目標(biāo)數(shù)據(jù)類型轉(zhuǎn)換所需的最短路徑,并針對(duì)接入服務(wù)以及 接出服務(wù)時(shí)提供不同數(shù)據(jù)對(duì)象的轉(zhuǎn)換操作,其中,數(shù)據(jù)轉(zhuǎn)換過(guò)程中的接口元數(shù)據(jù)統(tǒng)一用Web Service定義語(yǔ)言進(jìn)行描述。
3.根據(jù)權(quán)利要求1所述的面向服務(wù)的體系結(jié)構(gòu)的應(yīng)用系統(tǒng)服務(wù)集成中實(shí)現(xiàn)數(shù)據(jù)轉(zhuǎn)換 的系統(tǒng)結(jié)構(gòu),其特征在于,所述的開(kāi)發(fā)期配置格式定義模塊包括接口轉(zhuǎn)換器,實(shí)現(xiàn)特定數(shù)據(jù)類型的轉(zhuǎn)換操作;轉(zhuǎn)換器注冊(cè)單元,對(duì)所述的接口轉(zhuǎn)換器進(jìn)行注冊(cè)。
4.一種基于權(quán)利要求1所述的系統(tǒng)結(jié)構(gòu)實(shí)現(xiàn)面向服務(wù)的體系結(jié)構(gòu)的應(yīng)用系統(tǒng)服務(wù)集 成中數(shù)據(jù)轉(zhuǎn)換的方法,其特征在于,所述的方法包括開(kāi)發(fā)期數(shù)據(jù)對(duì)象轉(zhuǎn)換的配置格式定義 操作、運(yùn)行期數(shù)據(jù)對(duì)象轉(zhuǎn)換的配置加載操作、運(yùn)行期接入服務(wù)的數(shù)據(jù)對(duì)象轉(zhuǎn)換操作和運(yùn)行 期接出服務(wù)的數(shù)據(jù)對(duì)象轉(zhuǎn)換操作,所述的開(kāi)發(fā)期數(shù)據(jù)對(duì)象轉(zhuǎn)換的配置格式定義操作,包括 以下步驟(11)所述的開(kāi)發(fā)期配置格式定義模塊新建數(shù)據(jù)對(duì)象轉(zhuǎn)換擴(kuò)展包;(12)所述的開(kāi)發(fā)期配置格式定義模塊導(dǎo)入外部服務(wù)的描述文件;(13)所述的開(kāi)發(fā)期配置格式定義模塊根據(jù)用戶的輸入操作,生成實(shí)現(xiàn)數(shù)據(jù)對(duì)象轉(zhuǎn)換接 口的實(shí)現(xiàn)類;(14)所述的開(kāi)發(fā)期配置格式定義模塊配置數(shù)據(jù)對(duì)象轉(zhuǎn)換規(guī)則;(15)所述的開(kāi)發(fā)期配置格式定義模塊將數(shù)據(jù)對(duì)象擴(kuò)展包部署到運(yùn)行環(huán)境中;所述的運(yùn)行期數(shù)據(jù)對(duì)象轉(zhuǎn)換的配置加載操作,包括以下步驟(21)所述的運(yùn)行期通用框架模塊提供支持?jǐn)?shù)據(jù)對(duì)象轉(zhuǎn)換擴(kuò)展的接口類,以供擴(kuò)展;(22)所述的運(yùn)行期通用框架模塊加載導(dǎo)入的服務(wù)對(duì)應(yīng)的數(shù)據(jù)對(duì)象描述文件WSDL以及 其中的數(shù)據(jù)類型定義XSD Schema信息;(23)所述的運(yùn)行期通用框架模塊加載定義的數(shù)據(jù)對(duì)象轉(zhuǎn)換配置文件;(24)所述的運(yùn)行期通用框架模塊根據(jù)數(shù)據(jù)對(duì)象轉(zhuǎn)換配置文件中定義的源、目標(biāo)數(shù)據(jù)類 型形成類型轉(zhuǎn)換有向圖;所述的運(yùn)行期接入服務(wù)的數(shù)據(jù)對(duì)象轉(zhuǎn)換操作,包括以下步驟(31)所述的運(yùn)行期通用框架模塊根據(jù)接入服務(wù)的協(xié)議類型,確定服務(wù)對(duì)應(yīng)的數(shù)據(jù)轉(zhuǎn)換 類型;(32)所述的運(yùn)行期通用框架模塊對(duì)接入的服務(wù)生成服務(wù)代理;(33)在所述的服務(wù)代理中針對(duì)每一個(gè)服務(wù)方法調(diào)用生成調(diào)用鏈;(34)在所述的服務(wù)代理中根據(jù)服務(wù)對(duì)應(yīng)的數(shù)據(jù)轉(zhuǎn)換類型,在方法的調(diào)用鏈中添加數(shù)據(jù) 轉(zhuǎn)換的攔截器;(35)在所述的數(shù)據(jù)轉(zhuǎn)換的攔截器中根據(jù)數(shù)據(jù)對(duì)象轉(zhuǎn)換有向圖,查找最優(yōu)的數(shù)據(jù)轉(zhuǎn)換路徑;(36)所述的運(yùn)行期通用框架模塊調(diào)用所定義的數(shù)據(jù)對(duì)象格式轉(zhuǎn)換實(shí)現(xiàn)類,實(shí)現(xiàn)不同數(shù) 據(jù)對(duì)象的類型轉(zhuǎn)換;所述的運(yùn)行期接出服務(wù)的數(shù)據(jù)對(duì)象轉(zhuǎn)換操作,包括以下步驟(41)所述的運(yùn)行期通用框架模塊根據(jù)接出服務(wù)的類型,確定服務(wù)對(duì)應(yīng)的數(shù)據(jù)轉(zhuǎn)換類型;(42)所述的運(yùn)行期通用框架模塊對(duì)接出的服務(wù)生成服務(wù)代理;(43)在所述的服務(wù)代理中針對(duì)每一個(gè)方法調(diào)用生成調(diào)用鏈;(44)在所述的服務(wù)代理中根據(jù)服務(wù)對(duì)應(yīng)的數(shù)據(jù)轉(zhuǎn)換類型,在方法的調(diào)用鏈中添加數(shù)據(jù) 轉(zhuǎn)換的攔截器;(45)在所述的數(shù)據(jù)轉(zhuǎn)換的攔截器中,根據(jù)數(shù)據(jù)對(duì)象轉(zhuǎn)換有向圖,查找最優(yōu)的數(shù)據(jù)轉(zhuǎn)換 路徑;(46)所述的運(yùn)行期通用框架模塊調(diào)用定義的數(shù)據(jù)對(duì)象格式轉(zhuǎn)換實(shí)現(xiàn)類,實(shí)現(xiàn)不同數(shù)據(jù) 對(duì)象的類型轉(zhuǎn)換。
5.根據(jù)權(quán)利要求4所述的實(shí)現(xiàn)面向服務(wù)的體系結(jié)構(gòu)的應(yīng)用系統(tǒng)服務(wù)集成中數(shù)據(jù)轉(zhuǎn)換 的方法,其特征在于,所述的數(shù)據(jù)對(duì)象轉(zhuǎn)換擴(kuò)展包為包含一定功能邏輯的物理單元,每個(gè)數(shù) 據(jù)對(duì)象轉(zhuǎn)換擴(kuò)展包作為一個(gè)最小的部署單元部署到運(yùn)行環(huán)境中,且該數(shù)據(jù)對(duì)象轉(zhuǎn)換擴(kuò)展包 中包含了實(shí)現(xiàn)數(shù)據(jù)轉(zhuǎn)換功能的所有依賴資源,數(shù)據(jù)對(duì)象轉(zhuǎn)換擴(kuò)展包在物理上同一文件目錄 對(duì)應(yīng)。
6.根據(jù)權(quán)利要求5所述的實(shí)現(xiàn)面向服務(wù)的體系結(jié)構(gòu)的應(yīng)用系統(tǒng)服務(wù)集成中數(shù)據(jù)轉(zhuǎn)換 的方法,其特征在于,所述的依賴資源包括WSDL文件、XSD文件、數(shù)據(jù)對(duì)象轉(zhuǎn)換配置文件、 Java運(yùn)行時(shí)需要的類文件。
7.根據(jù)權(quán)利要求4所述的實(shí)現(xiàn)面向服務(wù)的體系結(jié)構(gòu)的應(yīng)用系統(tǒng)服務(wù)集成中數(shù)據(jù)轉(zhuǎn)換 的方法,其特征在于,所述的導(dǎo)入外部服務(wù)的描述文件,包括以下步驟(121)所述的開(kāi)發(fā)期配置格式定義模塊根據(jù)用戶通過(guò)在數(shù)據(jù)對(duì)象轉(zhuǎn)換擴(kuò)展包右鍵菜單 的選擇操作,并根據(jù)外部服務(wù)的類型進(jìn)行導(dǎo)入操作;(122)導(dǎo)入時(shí),從本地選擇服務(wù)的描述文件或者根據(jù)所提供的URL從遠(yuǎn)程下載服務(wù)的 描述文件;(123)根據(jù)導(dǎo)入的服務(wù)描述文件統(tǒng)一生成WSDL接口描述;(124)將所下載的WSDL文件和接口生成的WSDL文件默認(rèn)保存到對(duì)應(yīng)擴(kuò)展包資源樹(shù)下 的“接口”結(jié)點(diǎn)下;(125)將接口中的操作作為資源樹(shù)“接口,,結(jié)點(diǎn)的子結(jié)點(diǎn)進(jìn)行顯示。
8.根據(jù)權(quán)利要求7所述的實(shí)現(xiàn)面向服務(wù)的體系結(jié)構(gòu)的應(yīng)用系統(tǒng)服務(wù)集成中數(shù)據(jù)轉(zhuǎn)換 的方法,其特征在于,所述的服務(wù)的描述文件包括Java接口文件、WSDL文件、IDL文件。
9.根據(jù)權(quán)利要求7所述的實(shí)現(xiàn)面向服務(wù)的體系結(jié)構(gòu)的應(yīng)用系統(tǒng)服務(wù)集成中數(shù)據(jù)轉(zhuǎn)換 的方法,其特征在于,所述的從遠(yuǎn)程下載服務(wù)的描述文件,包括以下步驟(1221)分析所下載的服務(wù)的描述文件;(1222)如果所下載的服務(wù)的描述文件中包含通過(guò)import或者include方式所引用的 其它服務(wù)的描述文件,則一并下載到本地;(1223)分析所下載的所有服務(wù)的描述文件,如果該服務(wù)的描述文件中的類型定義 〈types〉部分包含通過(guò)import或者include方式所引用的其它XSD文件,則把引用的XSD 文件下載到本地;(1224)分析所下載的所有XSD文件,如果包含通過(guò)import或者include方式所引用的 其它XSD文件,則同時(shí)把引用的XSD文件下載到本地;(1225)將所下載的XSD文件默認(rèn)保存到相應(yīng)包資源樹(shù)下的“XMLSchema”結(jié)點(diǎn)下。
10.根據(jù)權(quán)利要求4所述的實(shí)現(xiàn)面向服務(wù)的體系結(jié)構(gòu)的應(yīng)用系統(tǒng)服務(wù)集成中數(shù)據(jù)轉(zhuǎn)換 的方法,其特征在于,所述的生成實(shí)現(xiàn)數(shù)據(jù)對(duì)象轉(zhuǎn)換接口的實(shí)現(xiàn)類,包括以下步驟(131)所述的開(kāi)發(fā)期配置格式定義模塊根據(jù)用戶操作,新建Java類,實(shí)現(xiàn)數(shù)據(jù)對(duì)象的 轉(zhuǎn)換接 口 IDataTransformer ;(132)實(shí)現(xiàn)數(shù)據(jù)對(duì)象轉(zhuǎn)換接口的transform接口,把源數(shù)據(jù)按照服務(wù)定義的數(shù)據(jù)對(duì)象 描述的格式轉(zhuǎn)換為目標(biāo)數(shù)據(jù)格式;(133)所述的開(kāi)發(fā)期配置格式定義模塊設(shè)置數(shù)據(jù)對(duì)象接口的源數(shù)據(jù)類型;(134)所述的開(kāi)發(fā)期配置格式定義模塊設(shè)置數(shù)據(jù)對(duì)象接口的目標(biāo)數(shù)據(jù)類型;(135)所述的開(kāi)發(fā)期配置格式定義模塊設(shè)置數(shù)據(jù)對(duì)象轉(zhuǎn)換中源數(shù)據(jù)類型到目標(biāo)數(shù)據(jù)類 型的轉(zhuǎn)換權(quán)重,以便查找最優(yōu)轉(zhuǎn)換路徑。
11.根據(jù)權(quán)利要求4所述的實(shí)現(xiàn)面向服務(wù)的體系結(jié)構(gòu)的應(yīng)用系統(tǒng)服務(wù)集成中數(shù)據(jù)轉(zhuǎn)換 的方法,其特征在于,所述的配置數(shù)據(jù)對(duì)象轉(zhuǎn)換規(guī)則,包括以下步驟(141)所述的開(kāi)發(fā)期配置格式定義模塊在數(shù)據(jù)對(duì)象轉(zhuǎn)換對(duì)應(yīng)擴(kuò)展包資源樹(shù)下的“配置” ^^Τ"—^^牛 DataTransformer. conf ;(142)所述的開(kāi)發(fā)期配置格式定義模塊在文件中配置數(shù)據(jù)對(duì)象的轉(zhuǎn)換類。
12.根據(jù)權(quán)利要求11所述的實(shí)現(xiàn)面向服務(wù)的體系結(jié)構(gòu)的應(yīng)用系統(tǒng)服務(wù)集成中數(shù)據(jù)轉(zhuǎn) 換的方法,其特征在于,所述的數(shù)據(jù)對(duì)象的轉(zhuǎn)換類的格式具體為數(shù)據(jù)對(duì)象轉(zhuǎn)換類全名;sourceType =源數(shù)據(jù)類型全名,targetType =目標(biāo)數(shù)據(jù)類型全 名,weight =數(shù)據(jù)類型轉(zhuǎn)換權(quán)重。
13.根據(jù)權(quán)利要求4所述的實(shí)現(xiàn)面向服務(wù)的體系結(jié)構(gòu)的應(yīng)用系統(tǒng)服務(wù)集成中數(shù)據(jù)轉(zhuǎn)換 的方法,其特征在于,所述的將數(shù)據(jù)對(duì)象擴(kuò)展包部署到運(yùn)行環(huán)境中,包括以下步驟(151)所述的開(kāi)發(fā)期配置格式定義模塊根據(jù)用戶在數(shù)據(jù)對(duì)象轉(zhuǎn)換對(duì)應(yīng)擴(kuò)展包資源樹(shù)上 的操作,接受用戶的部署選擇操作;(152)所述的開(kāi)發(fā)期配置格式定義模塊將數(shù)據(jù)對(duì)象轉(zhuǎn)換對(duì)應(yīng)擴(kuò)展包下的資源按目錄結(jié) 構(gòu)部署到運(yùn)行環(huán)境中。
14.根據(jù)權(quán)利要求4所述的實(shí)現(xiàn)面向服務(wù)的體系結(jié)構(gòu)的應(yīng)用系統(tǒng)服務(wù)集成中數(shù)據(jù)轉(zhuǎn)換 的方法,其特征在于,所述的提供支持?jǐn)?shù)據(jù)對(duì)象轉(zhuǎn)換擴(kuò)展的接口類,包括以下步驟(211)所述的運(yùn)行期通用框架模塊定義數(shù)據(jù)轉(zhuǎn)換操作的接口類IDataTransformer,供 用戶擴(kuò)展,接口中包括數(shù)據(jù)對(duì)象的類型轉(zhuǎn)換操作以及此轉(zhuǎn)換對(duì)應(yīng)的源和目標(biāo)數(shù)據(jù)類型和轉(zhuǎn) 換的權(quán)重;(212)所述的運(yùn)行期通用框架模塊提供根據(jù)輸入、輸出數(shù)據(jù)類型獲取數(shù)據(jù)轉(zhuǎn)換類列表 的工廠類 DataTransformerFactory0
15.根據(jù)權(quán)利要求4所述的實(shí)現(xiàn)面向服務(wù)的體系結(jié)構(gòu)的應(yīng)用系統(tǒng)服務(wù)集成中數(shù)據(jù)轉(zhuǎn)換 的方法,其特征在于,所述的加載導(dǎo)入的服務(wù)對(duì)應(yīng)的數(shù)據(jù)對(duì)象描述文件WSDL以及其中的數(shù) 據(jù)類型定義XSD Schema信息,包括以下步驟(221)所述的運(yùn)行期通用框架模塊解析導(dǎo)入的所有XSD文件,對(duì)其中的類型定義形成 內(nèi)存模型;(222)所述的運(yùn)行期通用框架模塊解析導(dǎo)入的所有WSDL文件,對(duì)其中定義的 SchemaType進(jìn)行解析,對(duì)其中的類型定義形成內(nèi)存模型;(223)所述的運(yùn)行期通用框架模塊解析所有WSDL文件中的接口定義,形成接口、操作 以及操作參數(shù)的映射關(guān)系;(224)所述的運(yùn)行期通用框架模塊對(duì)所有的XSD、WSDL中的類型定義模型進(jìn)行緩存;(225)所述的運(yùn)行期通用框架模塊對(duì)所有的WSDL中的PortType接口定義進(jìn)行緩存。
16.根據(jù)權(quán)利要求4所述的實(shí)現(xiàn)面向服務(wù)的體系結(jié)構(gòu)的應(yīng)用系統(tǒng)服務(wù)集成中數(shù)據(jù)轉(zhuǎn)換 的方法,其特征在于,所述的加載定義的數(shù)據(jù)對(duì)象轉(zhuǎn)換配置文件,包括以下步驟(231)所述的運(yùn)行期通用框架模塊查找構(gòu)件包中配置文件DataTransformer.conf ;(232)所述的運(yùn)行期通用框架模塊讀取配置文件中的內(nèi)容,文件中每一行對(duì)應(yīng)一種數(shù) 據(jù)類型的轉(zhuǎn)換定義;(233)所述的運(yùn)行期通用框架模塊將配置文件中定義的每個(gè)轉(zhuǎn)換器進(jìn)行實(shí)例化;(234)所述的運(yùn)行期通用框架模塊將數(shù)據(jù)轉(zhuǎn)換器實(shí)例注冊(cè)到數(shù)據(jù)轉(zhuǎn)換器注冊(cè)倉(cāng)庫(kù)中。
17.根據(jù)權(quán)利要求16所述的實(shí)現(xiàn)面向服務(wù)的體系結(jié)構(gòu)的應(yīng)用系統(tǒng)服務(wù)集成中數(shù)據(jù)轉(zhuǎn) 換的方法,其特征在于,所述的根據(jù)數(shù)據(jù)對(duì)象轉(zhuǎn)換配置文件中定義的源、目標(biāo)數(shù)據(jù)類型形成 類型轉(zhuǎn)換有向圖,包括以下步驟(241)所述的運(yùn)行期通用框架模塊從數(shù)據(jù)轉(zhuǎn)換器實(shí)例注冊(cè)倉(cāng)庫(kù)中讀取所有的數(shù)據(jù)轉(zhuǎn)換器;(242)所述的運(yùn)行期通用框架模塊創(chuàng)建有向圖Graph對(duì)象;(243)所述的運(yùn)行期通用框架模塊遍歷所有的數(shù)據(jù)轉(zhuǎn)換器;(244)所述的各個(gè)數(shù)據(jù)轉(zhuǎn)換器形成有向圖的邊,其中源數(shù)據(jù)類型和目標(biāo)數(shù)據(jù)類型作為 邊兩端的結(jié)點(diǎn);(245)所述的運(yùn)行期通用框架模塊根據(jù)數(shù)據(jù)轉(zhuǎn)換器的設(shè)置的權(quán)重,設(shè)置每條邊的權(quán)重。
18.根據(jù)權(quán)利要求4所述的實(shí)現(xiàn)面向服務(wù)的體系結(jié)構(gòu)的應(yīng)用系統(tǒng)服務(wù)集成中數(shù)據(jù)轉(zhuǎn)換 的方法,其特征在于,所述的根據(jù)接入服務(wù)的協(xié)議類型確定服務(wù)對(duì)應(yīng)的數(shù)據(jù)轉(zhuǎn)換類型,包括 以下步驟(311)所述的運(yùn)行期通用框架模塊對(duì)接入服務(wù)確定服務(wù)所對(duì)應(yīng)的輸入源數(shù)據(jù)類型;(312)所述的運(yùn)行期通用框架模塊查找接入的服務(wù),確定服務(wù)對(duì)應(yīng)業(yè)務(wù)操作的數(shù)據(jù)類型;(313)所述的運(yùn)行期通用框架模塊設(shè)置接入服務(wù)對(duì)應(yīng)輸入的數(shù)據(jù)類型轉(zhuǎn)換;(314)所述的運(yùn)行期通用框架模塊設(shè)置接入服務(wù)對(duì)應(yīng)輸出的數(shù)據(jù)類型轉(zhuǎn)換。
19.根據(jù)權(quán)利要求4所述的實(shí)現(xiàn)面向服務(wù)的體系結(jié)構(gòu)的應(yīng)用系統(tǒng)服務(wù)集成中數(shù)據(jù)轉(zhuǎn)換的方法,其特征在于,所述的對(duì)接入的服務(wù)生成服務(wù)代理,包括以下步驟(321)所述的運(yùn)行期通用框架模塊查找服務(wù)定義的接口類型;(322)所述的運(yùn)行期通用框架模塊根據(jù)服務(wù)接口類型,生成基于接口或者基于類的代理;(323)所述的運(yùn)行期通用框架模塊根據(jù)服務(wù)接口定義,遍歷服務(wù)中的所有方法,確定其 輸入以及輸出數(shù)據(jù)類型;(324)所述的運(yùn)行期通用框架模塊對(duì)服務(wù)中的方法以及方法的類型進(jìn)行緩存,以增加 性能。
20.根據(jù)權(quán)利要求4所述的實(shí)現(xiàn)面向服務(wù)的體系結(jié)構(gòu)的應(yīng)用系統(tǒng)服務(wù)集成中數(shù)據(jù)轉(zhuǎn)換 的方法,其特征在于,所述的在服務(wù)代理中針對(duì)每一個(gè)服務(wù)方法調(diào)用生成調(diào)用鏈,包括以下 步驟(331)實(shí)現(xiàn)基于代理的接口方法invoke;(332)根據(jù)要調(diào)用的服務(wù)方法名稱以及參數(shù)類型,找到服務(wù)對(duì)應(yīng)的目標(biāo)方法;(333)對(duì)方法調(diào)用的參數(shù)進(jìn)行封裝,統(tǒng)一為包裝數(shù)據(jù)對(duì)象Message,該包裝數(shù)據(jù)對(duì)象 Message作為所有數(shù)據(jù)類型的總線對(duì)象進(jìn)行傳遞;(334)針對(duì)每個(gè)方法,生成相應(yīng)的調(diào)用鏈,調(diào)用鏈中的每一部分封裝為攔截器;(335)業(yè)務(wù)方法的調(diào)用封裝為調(diào)用的攔截器,并加入到調(diào)用鏈的頭部。
21.根據(jù)權(quán)利要求4所述的實(shí)現(xiàn)面向服務(wù)的體系結(jié)構(gòu)的應(yīng)用系統(tǒng)服務(wù)集成中數(shù)據(jù)轉(zhuǎn)換 的方法,其特征在于,所述的根據(jù)服務(wù)對(duì)應(yīng)的數(shù)據(jù)轉(zhuǎn)換類型在方法的調(diào)用鏈中添加數(shù)據(jù)轉(zhuǎn) 換的攔截器,包括以下步驟(341)根據(jù)服務(wù)對(duì)應(yīng)的輸入以及輸出數(shù)據(jù)類型,判斷是否需要進(jìn)行數(shù)據(jù)轉(zhuǎn)換;(342)如果需要,在方法調(diào)用的調(diào)用鏈中添加數(shù)據(jù)轉(zhuǎn)換攔截器;(343)添加對(duì)輸入數(shù)據(jù)進(jìn)行轉(zhuǎn)換攔截器到調(diào)用鏈?zhǔn)祝?344)添加對(duì)輸出數(shù)據(jù)進(jìn)行轉(zhuǎn)換攔截器到調(diào)用鏈尾。
22.根據(jù)權(quán)利要求4所述的實(shí)現(xiàn)面向服務(wù)的體系結(jié)構(gòu)的應(yīng)用系統(tǒng)服務(wù)集成中數(shù)據(jù)轉(zhuǎn)換 的方法,其特征在于,所述的數(shù)據(jù)轉(zhuǎn)換的攔截器中根據(jù)數(shù)據(jù)對(duì)象轉(zhuǎn)換有向圖查找最優(yōu)的數(shù) 據(jù)轉(zhuǎn)換路徑,包括以下步驟(351)在數(shù)據(jù)轉(zhuǎn)換攔截器中,查找服務(wù)調(diào)用方法所對(duì)應(yīng)的輸入、輸出類型;(352)查找調(diào)用服務(wù)所要求使用的輸入以及輸出數(shù)據(jù)類型;(353)從數(shù)據(jù)轉(zhuǎn)換注冊(cè)庫(kù)生成的有向圖中查找服務(wù)輸入數(shù)據(jù)所需的轉(zhuǎn)換器列表,并要 求從源到目標(biāo)數(shù)據(jù)類型的轉(zhuǎn)換器的權(quán)重最小;(354)從數(shù)據(jù)轉(zhuǎn)換注冊(cè)庫(kù)生成的有向圖中查找服務(wù)輸出數(shù)據(jù)所需的轉(zhuǎn)換器列表,并要 求從源到目標(biāo)數(shù)據(jù)類型的轉(zhuǎn)換器的權(quán)重最小。
23.根據(jù)權(quán)利要求4所述的實(shí)現(xiàn)面向服務(wù)的體系結(jié)構(gòu)的應(yīng)用系統(tǒng)服務(wù)集成中數(shù)據(jù)轉(zhuǎn)換 的方法,其特征在于,所述的調(diào)用所定義的數(shù)據(jù)對(duì)象格式轉(zhuǎn)換實(shí)現(xiàn)類實(shí)現(xiàn)不同數(shù)據(jù)對(duì)象的 類型轉(zhuǎn)換,包括以下步驟(361)所述的運(yùn)行期通用框架模塊依次調(diào)用所需轉(zhuǎn)換類的invoke方法,實(shí)現(xiàn)管道調(diào)用 的方式,并將上一次的輸出作為本次調(diào)用的輸入;(362)在調(diào)用結(jié)束后返回轉(zhuǎn)換后的數(shù)據(jù),傳遞給業(yè)務(wù)方法調(diào)用。
24.根據(jù)權(quán)利要求4所述的實(shí)現(xiàn)面向服務(wù)的體系結(jié)構(gòu)的應(yīng)用系統(tǒng)服務(wù)集成中數(shù)據(jù)轉(zhuǎn)換 的方法,其特征在于,所述的根據(jù)接出服務(wù)的類型確定服務(wù)對(duì)應(yīng)的數(shù)據(jù)轉(zhuǎn)換類型,包括以下 步驟(411)所述的運(yùn)行期通用框架模塊對(duì)接出服務(wù)確定服務(wù)所對(duì)應(yīng)的輸出源數(shù)據(jù)類型;(412)所述的運(yùn)行期通用框架模塊查找接出的服務(wù),確定服務(wù)對(duì)應(yīng)業(yè)務(wù)操作的數(shù)據(jù)類型;(413)所述的運(yùn)行期通用框架模塊設(shè)置接出服務(wù)對(duì)應(yīng)輸入的數(shù)據(jù)類型轉(zhuǎn)換;(414)所述的運(yùn)行期通用框架模塊設(shè)置接出服務(wù)對(duì)應(yīng)輸出的數(shù)據(jù)類型轉(zhuǎn)換。
25.根據(jù)權(quán)利要求4所述的實(shí)現(xiàn)面向服務(wù)的體系結(jié)構(gòu)的應(yīng)用系統(tǒng)服務(wù)集成中數(shù)據(jù)轉(zhuǎn)換 的方法,其特征在于,所述的對(duì)接出的服務(wù)生成服務(wù)代理,包括以下步驟(421)所述的運(yùn)行期通用框架模塊查找需要接出服務(wù)的業(yè)務(wù)方法中對(duì)應(yīng)的接口類型;(422)所述的運(yùn)行期通用框架模塊根據(jù)業(yè)務(wù)方法的接口類型,生成基于接口或者基于 類的代理;(423)所述的運(yùn)行期通用框架模塊根據(jù)業(yè)務(wù)接口定義,遍歷接口中的所有方法,確定其 輸入以及輸出數(shù)據(jù)類型;(424)所述的運(yùn)行期通用框架模塊對(duì)業(yè)務(wù)接口中的方法以及方法的類型進(jìn)行緩存,以 增加性能。
全文摘要
本發(fā)明涉及一種SOA應(yīng)用系統(tǒng)服務(wù)集成中實(shí)現(xiàn)數(shù)據(jù)轉(zhuǎn)換的系統(tǒng)結(jié)構(gòu),包括運(yùn)行期通用框架模塊,支撐不同數(shù)據(jù)對(duì)象的轉(zhuǎn)換擴(kuò)展;開(kāi)發(fā)期配置格式定義模塊,與所述的運(yùn)行期通用框架模塊相連接,并進(jìn)行數(shù)據(jù)對(duì)象轉(zhuǎn)換的配置格式定義。本發(fā)明還涉及一種基于該系統(tǒng)結(jié)構(gòu)實(shí)現(xiàn)SOA應(yīng)用系統(tǒng)服務(wù)集成中數(shù)據(jù)轉(zhuǎn)換的方法。采用該種SOA應(yīng)用系統(tǒng)服務(wù)集成中實(shí)現(xiàn)數(shù)據(jù)轉(zhuǎn)換的系統(tǒng)結(jié)構(gòu)及其方法,使得系統(tǒng)的集成工作變得簡(jiǎn)單而高效,調(diào)用過(guò)程更加直觀,提高了調(diào)用的效率,快捷方便,系統(tǒng)運(yùn)行效率較高,性能穩(wěn)定可靠,降低了開(kāi)發(fā)維護(hù)的成本,開(kāi)發(fā)期簡(jiǎn)單,接口明確,配置方便,運(yùn)行期效率較高、系統(tǒng)性能穩(wěn)定可靠,適用范圍較為廣泛,為SOA系統(tǒng)的集成發(fā)展打下了堅(jiān)實(shí)的基礎(chǔ)。
文檔編號(hào)G06F9/44GK101930370SQ20101027720
公開(kāi)日2010年12月29日 申請(qǐng)日期2010年9月9日 優(yōu)先權(quán)日2010年9月9日
發(fā)明者王 鋒 申請(qǐng)人:上海普元信息技術(shù)股份有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
乌鲁木齐县| 睢宁县| 光山县| 吉木萨尔县| 刚察县| 文昌市| 松桃| 长泰县| 上饶市| 重庆市| 托克托县| 张家港市| 嵊州市| 无棣县| 永济市| 嘉义县| 武宣县| 南安市| 盐津县| 顺平县| 南岸区| 项城市| 泸溪县| 同德县| 若羌县| 讷河市| 曲周县| 五原县| 社会| 名山县| 黔江区| 四子王旗| 北碚区| 司法| 黎城县| 卢氏县| 淮北市| 咸丰县| 长葛市| 鄄城县| 崇仁县|