專利名稱::一種基于分布式適配的服務協作方法及其系統的制作方法
技術領域:
:本發明涉及一種服務協作方法和系統,特別是涉及一種通過構造分布式的適配器來實現服務正確交互的協作方法及實現系統,屬于面向服務的架構(SOA)以及服務協作的
技術領域:
。
背景技術:
:Internet技術的發展與普及,為軟件開發帶來了新的方向與挑戰。一方面,Internet計算環境高度動態、高度異構的特點對建筑在其上的分布式軟件提出了松散耦合、平臺中立、協議無關等新的要求。另一方面,社會的全球化趨勢使企業面臨快速變化的市場、新的政策法規、靈活的業務協作關系和更大的競爭壓力,這一切都要求企業應用能夠快速集成、重用、以及響應變化,以適應新的業務模式和需求。面向服務的體系結構(ServiceOrientedArchitecture)正是在這種背景下應運而生,成為開放網絡環境下構建分布式應用的范型(Paradigm)。S0A是分布式動態服務的概念性架構,其思想在于將"服務"作為構造分布式系統的基本計算元素,通過服務之間的交互來構造分布式軟件系統和企業應用。SOA作為一種功能組件化的設計模型,屏蔽了不同平臺、編程語言、操作系統和硬件架構之間的差異,簡化了應用程序的集成方式。Web服務是當前實現SOA計算范型的最有前景的技術,其興起得益于以下因素的推動:首先,XML技術的不斷完善,為數據表示和交換提供了標準,使的跨組織的分布式系統之間的通信和互操作成為可能;其次,Web服務采用的基于文檔的消息模型適應不同應用之間松散藕合的需求;而重要的國際組織和廠商如W3C、OASIS,IBM和Microsoft等都大力支持Web服務技術的發展。隨著相關技術的不斷發展與成熟,Web服務已經成為Internet上一種重要的計算資源,從而又進一步推動了SOA的應用與發展。服務協作作為面向服務的計算范型中實現資源共享和應用集成的核心技術,是應用、實施和部署SOA過程中需要解決的重要問題。不同的企業通過將資源和應用封裝為服務,按照一定的業務邏輯編排成可執行流程,從而實現分布、異構、自治環境下的流程整合與業務協同。服務協作不但可以通過組合現有服務組件實現更為復雜的業務邏輯和業務目標,而且通過選擇性地重用己有服務,在降低服務開發周期和成本的同時實現組織之間靈活、高效的業務交互。因此服務協作技術是實現開放網絡環境下資源和應用有效聚合的重要技術,具有廣泛的應用前景。然而,由于服務是由彼此獨立的企業開發的,無法在開發階段就預測到其潛在的所有交互可能,因此不同的企業的服務在單個交互操作、以及核心流程的業務邏輯等方面都會存在不一致的情況,從而難以保證服務協作的正確性。而且由于服務計算環境的動態及變化的特性,一方面,根據需求的不同,在每次的協作實例中可能會選擇不同的Web服務;另一方面,對于服務提供商而言,其提供的服務會參與到不同的協作環境中,面對不同的差異性,而且服務組件會因為升級演化而改變其接口,從而破壞了原有的協作關系。在這些情況下,無論是針對不同的協作關系和Web服務來定制不同的協作流程的方法,或者是以協作流程的需求為依據,更改服務實現的方法,都存在僅代價高而且靈活性差的問題。通常我們可以采用適配器的方法來解決服務組件的交互差異問題。由于適配器不涉及實際的業務操作,而只是通過消息的抽取、轉換、交互順序的改變來彌補服務組件之間的差異,因此相對于服務組件,適配器是一種更為輕型的組件形式。那么針對上述的情況,選擇不同的Web服務,可以通過配置不同的適配器來滿足協作的正確性;當協作流程或服務組件的接口發生變化時,只需動態重配適配器就可以再次實現有效的協作。因此,通過適配機制來滿足協作的正確性一方面保證了協作的成功率,提高了服務組件的可重用性,同時降低了系統更新的代價,提高了協作的靈活性。然而,現有的基于適配的方法,例如消息代理,或ESB中的消息適配器等,只是考慮了單個消息的適配,而沒有考慮服務組件的整體行為,即消息的邏輯交互順序的約束關系對交互正確性的影響。在組件領域,Tivoli等人提出的通過構造集中式適配器的方法來保證協作的正確性,然而集中式的方式并不適用于更為開放、分布的服務計算環境的特點由于服務組件的交互消息都要經過集中式適配器的中轉,因此增加了總的消息流量,從而導致較大的消息通信開銷,降低了協作的運行效率;服務協作的性能將受到集中式適配器的計算能力和通信能力的限制,當服務協作的并發客戶數較大時,集中式適配器很容易成為系統中的重載結點,從而形成系統的性能瓶頸;此外由于集中式的協調結構存在中心結點,某些情況下服務組件的自治性需求使得集中式結構并不適用于某些特殊的應用場景,例如在B2B應用中業務伙伴的關系往往是對等合作的,由某個結點決定所有的協調方法通常并不合適;再者,許多商業應用出于業務和安全的目的往往要求相關的業務伙伴之間直接交換數據,不允許敏感的業務數據流經第三方結點,因此通過中心結點路由數據是不適宜的。
發明內容鑒于現有方法的缺陷,本發明的目的在于提供一種基于分布式適配的服務協作方法以及支持該方法的實現系統,為參與協作的每個服務組件生成獨立的適配器,并實現各個適配器的分布式部署和運行,從而更加滿足開放網絡環境對于高效、靈活的服務協作機制的需求,避免集中式的適配方法在運行效率、可伸縮性和可用性等方面存在的局限。為實現上述的發明目的,基于分布式適配的服務協作方法包括了以下幾個步驟步驟1:建立全局的服務協作流程,用以描述整體的協作流程,即參與協作的服務組件之間的交互過程,在協作流程中以角色來抽象地表示服務協作的參與者;步驟2:基于角色實現了全局協作流程的投影方法,得到P2P的分布式服務協作流程,其中包含了各個角色所對應的抽象服務接口,每個抽象服務接口定義了相應的角色需要在協作中滿足的行為約束;同時建立參與協作的實際服務的行為接口模型,該模型描述了實際服務組件所提供的操作,以及操作調用之間的邏輯時序關系;步驟3:以步驟2所得到的抽象服務接口為標準,與對應的實際服務行為接口進行可適配的一致性檢查;步驟4:根據步驟3的結果,如果實際服務的行為接口滿足可適配的一致性,為其自動構造適配器;如果實際服務的行為接口不滿足可適配的一致性,則返回不可適配的交互路徑信息,提供給協作開發者以實現有效的調整;步驟5:將各個服務組件所對應的適配器轉換成相應的實現形式(Java類或者BPEL流程),并封裝為Web服務,從而可以分布式地部署在與實際服務相同的執行環境中,使得適配器作為服務的Wrapper,基于其協調作用來實現正確的服務協作流程。其中,步驟1具體還包括以下步驟1)首先建模服務組件之間的全局協作流程,其中每個活動表示角色之間的消息交互事件,活動之間的控制流則描述了角色之間的控制傳遞;2)本發明以CSP形式化方法為基礎,來驗證投影算法的正確性以及服務的可適配一致性,因此需要將流程模型轉換為CSP形式化語言描述的結構。這里我們所用到的CSP的操作符包括前綴(prefix):設有一活動為山有一進程為P,則執行活動fl,然后按照進程P的描述來執行,用a—P表示;循環(recursive):若F("是一包含了名稱X的有前綴的流程描述,則^^F(JQ給出了循環執行流程I的定義;外部確定性選擇(externaldeterministicchoice):—個流程可以按照進程尸的描述執行,也可以按照2的描述執行,其選擇由外部環境決定,則表示為尸口0;內部非確定性選擇(internalnon-deterministicchoice):—個流程可以按照進程P的描述執行,也可以按照2的描述執行,其選擇由流程自身決定,則表示為png;順序(sequence):P;2表示流程首先按照進程尸的描述執行,如果成功,則繼續按照g的描述執行;并發(parallel):尸|&表示通常的并行操作,進程戶和2將基于符號表中的相同事件進行同步,即進程尸和g在事件集oPnag上同步;另夕卜,csp中還定義了兩種特殊進程sro尸與sa7戶,其中sro戶表示流程死鎖,sx7戶表示流程執行成功。全周協作流程的每個原子活動表示了兩個角色之間的一次消息交換,那么采用csp形式化語言來描述即為w(r,,")。表示消息w由角色^發送到角色"。所述步驟2還包括以下步驟建立實際服務行為接口的形式化描述模型,在實際應用中,通常可以采用抽象ws-bpel流程描述來描述實際服務的行為,因此這里我們給出了ws-bpel與csp形式化語言的模型結構的轉換方法,如表l:表1ws-bpel的csp轉換方法ws-bpelcsp〈receivevarabile-"x"…/>7x<replyvarabile=,,x"…/〉!x〈invokeinputvariable="x,,outputvariable="y,,…/>!x—y<empty…/>m戶(terminate…/>(sequence…,flc"vzi>尸,<sequence/>戶/;…;戶《〈flow…〉(3"ZV,(V尸"<flow/>尸川…<pick...>〈onMessagevaj;i&ble="x/...>。"鄉尸,<onMessage7i><onMessagevati&ble-"x/...>oc加妙尸"<onMessage/><pick/〉(X/—尸》口…口(x"<table>tableseeoriginaldocumentpage10</column></row><table>這里我們用!x表示消息發送活動,而x則用來描述消息接收活動。針對WS-BPEL中的結構活動se^^打c"_/7ow,p/cbsw!'fc/j以及w/7e,則分別轉換為CSP語言中對應的順序,并發,確定性選擇,非確定性選擇以及循環結構。所述步驟3還進一步包括下列步驟1)建立抽象服務接口與實際服務行為接口之間的消息映射模型,即如何實現抽象服務接口與實際服務接口所定義的消息之間的相互轉換;2)基于消息映射模型構造抽象服務接口與實際服務接口之間的適配模型;3)對得到的適配模型進行死鎖檢查,以確定對應的實際服務是否存在正確的適配器,使其滿足協作流程的需求。為實現本發明目的,還提供了一種基于分布式適配的服務協作系統,其主要模塊按照功能分為三個層次協作流程層次主要包括了協作流程建模工具,CSP映射轉換模塊以及協作流程投影模塊。其中,協作流程建模工具采用圖形化的方式建立服務協作流程,用于可視化建模和展示;CSP映射轉換模塊則將圖形化的流程模型轉換為CSP表示的模型結構;協作流程投影工具則基于協作角色將全局的協作流程進行投影,得到各個實際服務所對應的抽象服務接口。適配管理層次包含三個子模塊,分別為服務管理模塊,映射模型管理模塊以及適配器管理模塊。其中,服務管理模塊中的協作服務管理器負責參與協作的服務組件的組織與管理,并通過服務接口CSP轉換工具將服務組件的行為接口轉換為CSP描述模型;映射模型管理模塊中包括映射模型管理器、消息映射編輯器以及映射模型構造模塊。映射模型管理器負責抽取抽象服務接口以及實際服務接口中的消息,提供給消息映射編輯器,并將消息映射的結果提交給適配器管理模塊以進行一致性檢查以及適配器的構造。消息映射編輯器通過可視化的界面使得開發者可以方便地編輯消息之間的依賴映射關系,而映射模型構造模塊負責映射模型的生成,管理及其持久化存儲;適配器管理模塊包括了一致性檢査模塊,適配器生成模塊以及適配器管理器。其中一致性檢查模塊以抽象服務接口,服務的實際接口以及消息映射模型為輸入,判斷對應的實際服務是否存在有效的適配器;適配器生成模塊則依據一致性檢査的結果生成適配器,并轉換成相應的實現形式(本發明將適配器轉換為可執行WS-BPEL流程的形式);適配器管理器則負責適配器分布式部署及其管理;協作運行層次協作運行層分布式地位于各個服務提供者的位置,為適配器提供運行支撐環境。其中協作代理負責與適配器管理器進行通信,接收并部署適配器到相應的執行引擎;適配器執行引擎則實現適配器實例的解釋與執行。本發明提出一種基于分布式適配實現服務協作的方法及相應的支撐實現系統,和現有的方法相比,本發明的技術效果是,通過為每個服務組件分別實現適配器,進一步降低了實際服務與協作環境的耦合關系,使得在不改變源服務組件實現的前提下滿足應用協作要求,從而提高了服務組件的可復用性以及協作成功率。而且在協作目標或者單個服務組件發生變化時,只需重新配置適配器就可以再次實現有效的協作,從而降低了系統更新的代價。而且采用了分布式的適配方式,避免了集中式適配方式所帶來的通信開銷,提高了系統的可伸縮性;取消了集中式適配器的控制中心和數據路由中心,將適配器的執行分布到服務組件所在的各個結點,并在結點之間直接交換數據,從而減少了適配器結點成為系統重載結點的可能,提高了服務協作系統的數據傳輸效率。在大并發訪問量、大數據傳輸量以及網絡帶寬受限的應用中,采用基于分布式的適配機制將是更好的選擇。因此,本發明所提供的方法在保持了服務組件自治特性的同時,提高了企業間服務協作的靈活性。圖l為基于分布式適配的服務協作方法原理圖圖2為本發明的服務協作支撐系統的總體架構圖圖3為服務之間的全局協作流程的示意圖圖4為CSP描述的流程模型的面向對象建模的主要類結構圖圖5為適配模型的構造方法原理圖圖6為編輯消息映射關系的示意圖圖7為適配器的主要結構示意圖圖8為基于分布式適配的運行時服務交互示意圖。具體實施例方式以下結合具體實施例和附圖對本發明作更詳細的說明。圖1給出了基于分布式適配的服務協作方法示意圖。本方法中所涉及的主要元素包括有協作流程模型,抽象服務接口,實際服務接口以及服務適配器等等。圖2給出了本發明的服務協作支撐系統的總體架構圖,包含了協作流程層,適配管理層以及協作運行層三個層次。首先依據協作需求,通過協作流程建模工具,建立服務之間的交互協作流程,從全局角度描述參與協作的服務之間的公共交互消息和協作契約關系。本發明所實現的建模工具采用了基于Eclipse的插件開發技術,整體采用MVC(Model-View-Control)的架構,通過繼承和實現框架類完成。如圖3所示,類似于業務流程建模標注規范BPMN(參見文獻http:〃www.bpmn.org/,BP廳l.O,OMGFinalAdoptedSpecification,February6,2006),協作流程建模工具以泳池(pool)的概念來描述一個協作流程,而參與的角色通過泳道(lane)的概念來進行劃分。圖形化流程中的每個活動表示一個消息交互事件,活動所屬的泳道作為消息的發送者,而通過活動的接收角色(receiver)屬性來選擇設置相應的消息接收者。消息的具體內容則通過泳池的消息列表(messagelist)屬性來設置。可以看出,協作流程主要描述了服務之間的消息交互活動以及這些活動之間的時序邏輯關系。接下來需要將服務協作流程投影到各個參與角色,得到各個角色的抽象服務接口集合。這些抽象服務接口的交互則構成了P2P形式的分布式協作流程。為了保證投影前后流程的正確性與一致性,本發明首先將協作流程建模工具所得到的協作流程轉換為CSP形式化語言的模型結構,然后再執行投影算法。首先對CSP描述流程的模型結構進行面向對象建模,圖4給出了主要類結構的示意圖。其中ProcessObject是根類,所有流程相關的類都繼承于ProcessObject。ProcessObject包括三禾中子類,分另'J是Process,Swimlane禾口LaneObject。其中Process用來描述整個流程的相關屬性,包括消息列表(messagelist)用以定義整個協作流程中角色之間交互的消息;Swimlane的子類則包括Pool和Lane,Pool用以描述一個具體的協作場景,而Lane用以表示協作中的各個角色;LaneObject則用以定義流程中的元素,其子類包括有ConnectionObject和FlowObject,分別用來描述流程中的連接和基本活動。SequenceFlow繼承于ConnectionObject,用來建模流程中的連接線,描述活動之間的時序邏輯關系。FlowObject則包含了Activity(活動),Event(事件)和Gateway(網關)三個子類。其中Activity的子類ServiceTask用來建模具體的消息交互活動,其屬性包括活動標識(ID),活動名稱(Name),消息(Message),消息的發送角色(Lane)以及消息的接收角色(ReceiverLane)等等;Event的子類StartEvent和EndEvent則分別用來描述流程的起始點和結束點;Gateway則用來描述流程的分支,其子類分為ParallelGateWay(并發網關)和ExclusiveGateWay(選擇網關),分別用來建模并發分支以及選擇分支。具體的轉換過程由協作流程層的CSP轉換工具實現,轉換后得到的CSP描述的協作流程通過協作流程投影工具的作用,轉換為各個角色的抽象服務接口的集合,協作流程投影工具主要依據表2所示的投影方法來實現流程的轉換-表2全局協作流程投影方法類型方法2.1原子活動戸Xw(r力)力-SA7尸(/7^Ar^v)^rq/(尸;g力-JraX尸力;04syn_sMsyn—T);FoX2力,這里2.2爿syns=lbs!wSyn0s。),。ei/ecw(g)(if>eTa"(尸))Ayns-啦尸(else)Ayn產lb附syn(n,0,^€7^//(尸)(ifJsvnr=SiOP(else)2.32.4,2.5,Fo/(Png力-(ll沙!附々力));Fq/CP力n(1^!附e(m));^o/(j3,)(阿o)(咖)2.6投影方法包含原子活動和復雜活動兩類。方法2.1用來實現原子活動的投影,方法如下對于活動w(r,力),如果當前角色為發送角色^,那么投影后的活動為消息發送活動!附C》;如果當前角色為接收角色",則投影后的活動為消息接收活動W^V》;對于其他角色,活動W(^W)投影后為S《ff。方法2,2給出了順序活動的投影方法對于順序流程戶;2,/feflrf(g)-{0|l$/'^},是流程2中所有起始活動的消息發送角色的集合;7^7(。=化,卩^^},則包括了流程i>中所有結束活動的消息接收角色。如果當前角色屬于集合7te7(尸),那么需要增加相應的順序同步流程ll-"!附syn(r,。),即當前角色發送同步消息附syn到/fea《2)中的每個角色;如果當前角色屬于集合//ea減0,那么需要增加相應的順序同步流程lb叫yn("r),即當前角色從中的每個角色接收同步消息msyn;從而保證了分布式協作流程中的順序一致性。方法2.3給出前綴活動的投影方法,前綴活動屬于順序流程的特例,因此其投影方法同方法2.2—致。方法2.4對于并發活動的投影方法分別對流程戶和g進行投影,然后再以并發操作符連接投影后的流程即可。方法2.5是選擇活動的投影方法。對于協作流程中的選擇操作符,我們要求參與協作的一個角色擁有決策權。假設選擇決策角色為rQ,而化h女。Al^^^則為所有在流程P或0中具有相關發送或接收活動的角色,那么需要構造相應的同步選擇消息m尸和me,并從"發送到每一個用來通知角色"所選擇的分支,從而保證分布式協作流程中的選擇一致性。方法2.6為具有選擇結構的循環活動投影方法,其只需對循環結構內的選擇活動進行投影即可。得到各個角色對應的CSP描述的抽象接口之后,為了判斷實際服務接口的一致性,首先通過協作服務管理器獲取實際服務的接口描述,包括WSDL描述的操作接口,以及抽象WS-BPEL描述的行為接口,然后通過服務接口CSP轉換工具,將行為接口轉換為CSP描述的形式化模型結構。這里的CSP轉換工具主要依據表1中給出的轉換方法,實現相應的轉換算法。然后以抽象接口與實際接口的CSP描述模型為基礎,建立實際服務與對應角色之間的適配模型,以進行可適配一致性的檢査。適配模型的構造示意圖如圖5所示,分為以下三個步驟1)首先抽取抽象接口與實際服務接口中的消息,并且建立消息之間的數據依賴關系,即一方所需要接收的消息如何通過另一方的發送消息來構造。通過映射管理模塊的消息映射編輯器,本發明所述的系統通過可視化的方式描述消息之間的映射關系,消息映射編輯器如圖6所示,界面左半部分給出了一方接口的所有接收消息以及消息的具體格式的描述,界面的右上部分給出了當前接收消息所依賴的另一方接口的發送消息,而右下部分則用來輸入消息之間具體的映射轉換關系,主要基于XPath語言來實現。2)然后根據消息依賴關系為每個接收消息建模對應的消息管道,其CSP描述為這里叫是當前的接收消息,ms,eMs,Ms是^所依賴的發送消息的集合,w是w,所依賴的發送消息的數目。消息管道通過/e力信道接收消息,并通過其信道發送消息。Sj"A則是消息映射中轉換關系的相應實現。3)最后依據抽象接口和實際服務接口的CSP描述模型構造異步交互流程,其方法為-(a)對于接口描述中的每個發送消息附,若m在數據映射中有相應的映射關系定義,則將相應活動改寫為對消息管道的寫入活動(ll,s^^一m力y!w),戶z》e—附,是依賴于m的接收消息所對應的消息管道,否則將相應的活動改寫為5^7尸;(b)對于接口描述中的每個接收消息w,若w在數據映射中有相應的映射關系定義,則將相應的活動改寫為對消息管道的讀出活動A]^一m力g似附,否則將相應的活動改寫為即尸。最后得到的適配模型的CSP描述為(k。i^e—w,)〃[i^/ll尸s/],其中ll^尸^一叫為所有的消息管道的集合,4和i^/則分別對應了抽象接口和實際服務接口轉換得到的異步交互流程。在得到實際服務接口對應的適配模型之后,本發明通過以下的算法來驗證實際服務的可適配一致性輸入適配模型(ll&i^e—w)〃[i^11^/]輸出對應的實際服務是否滿足可適配一致性Procedurebooleanawfe(ptoWeCo;M她考(1)預處理將異步交互流程中的Pw和iV分別轉換成等價的非確定性選擇的標準形式(^n戶2n…n戶")(1.1)if活動為"一(戶n0形式,轉換為(a—p)n(fl—0dseif活動為尸i股n及)形式,轉換為d0n(pp);elseif活動為尸口(^ni)形式,轉換為(P口0nCP口i);elseif活動為戶;(^n及)形式,轉換為(尸;0n(戶;i);elseif活動為(/TI0;及形式,轉換為(尸;及)(1(g;及);endif(1.2)/^轉換后得到的分支子流程尸^,戶w,...尸^集合存入列表AIList,同樣尸w的分支子流程尸s//,尸犯,...i^存入列表SIList。(2)foreachinAIList,foreachinSIList,while(/n/e)doif0MM/f=vrejw/fjy=STOP)return/tf/w;endifif(re做/f=iVoMvea/"e做/=MMve)return7Wse;endifif(my"/f=汰/Pa旭w"_p/=break;endifendwhileendforendforreturnendProcedure步驟(1)的預處理部分將流程分解為非確定性選擇符n連接的分支子流程集合,從而簡化了非確定性選擇分支的處理,每個分支子流程代表了協作的一條交互路徑。步驟(2)對抽象接口與實際服務接口的每條交互路徑進行兩兩的死鎖檢査,如果所有的交互路徑都不存在死鎖,那么實際服務就滿足可適配一致性的條件。其中調用的算法mwe,用來檢査交互流程各個活動。算法move遍歷流程的各個原子活動,并返回當前的檢查結果,包括四種類型Si^戶,SrO尸,M)Mow和Mve。如果當前流程可以成功執行完,則返回SK/尸;如果存在SrO戶活動,則返回結果SrOP。如果不存在可執行的活動,則返回M)Move;或者存在可執行的活動,則返回結果Move。同時每次執行Move算法后將可執行活動的狀態標記為已檢查。算法中的函數c""及"e/ve和ca"&"d分別用來檢查相應的消息通道的狀態是否可以寫入數據,以及是否可以讀取數據。其算法描述如下輸入待檢查的流程p輸出當前的檢査結果M^^Procedure附ove(1)ifp是順序活動(順序運算符';'連接各個子流程)for/>0;)doif&未標記resw/f—附ove(&)if(msM&=SA7尸)AosM)vec:=/rwe,warA:(《;);elseif(謂/f=節尸)returnS,;elseif(toMowd=frwevr咖/f=Move)returnMove;elsereturnTVbMve;endifendifendforreturnSiOP;(2)elseif/是并發活動for(z:-w;/>0;)doif&未標記if則/"&(g,);endifelsere幼/fj=endifcudforif存在一個myw/f—/=returnSrO戶;elseif存在一個msw"=MvereturnMove;elseif所有re做&j=S^ffreturnSKff;elsereturniVbMw;endif(3)elseifp是外部選擇活動if存在子流程《/有/^€7005^<%/)=/rwe,returnwove(仏)elsereturnM)Move;endif(4)elseifp是形如"2~>a"的結構for/>0;/—)doa,.:^i^"/wXp,/);ifa,.未標記(4.1)if"i是發送活動ifcfl"Sew/(A)/2"s油ved:=frwe,elseif(AcwMoved=frwe)returnM)ve;elsereturniVbMove;endif(4.2)elseiU是接收活動ifc朋iece!'ve(fl,)toMoved:=Zn/e,warA^);elseif(/2ayM)vM=frwe)returnMve;elsereturniVo她ve;endif(4.3)elseifreturn5779戶;endifendifcudforreturnS,;endifendProcedure當可適配一致性的檢查結果為/a/^時,說明即使采用適配技術,服務組件也無法滿足協作需求。所有無法適配的路徑以及對應的活動節點會可視化地提供給開發者,作為調整服務協作需求的參考,從而更加有效地利用了檢査算法的結果。通常存在兩類無法適配的情況-(1)接收活動所對應的消息m,不存在相應的數據映射關系;(2)存在消息的循環依賴,從而無法進行適配。對應于第一類情況,開發者需要進一步確認給定的接收消息m是否可以通過以下方式構造(i)消息附是常量或者空值;(ii)消息m可以由先前接收到的消息來構造。而對于第二種情況,則開發者需要確認是否可以調整協作流程中消息交互的順序,從而避免造成無法適配的情況。當可適配一致性的檢查結果為/n^時,適配器生成工具依據適配模型生成適配器的CSP描述。適配器的生成方法的主要思路在于,為異步交互流程的每個活動構造相應的消息發送或者接收活動(1)如果異步交互流程中的活動為寫入活動(||紛乃;^一外士//!附),則構造相應的消息接收活動w,并用前綴連接符'連接活動,結果為?w—(^戶!;pe—w,、/e/^);(2)如果異步交互流程中的活動為讀出活動(乃;pejw.r/gto附),則構造相應的消息發送活動!附,并用前綴連接符,連接活動,結果為尸!》e—m,n'gfo附—!m;構造的消息發送或者接收活動主要實現了與實際服務或是其他適配器的消息交換,從而實現行為適配;而異步交換流程以及消息管道則主要實現消息緩存、抽取、轉換以及協調消息交互順序的作用,其結構示意圖如圖7所示。考慮到實際應用中通常采用WS-BPEL作為服務流程的實現語言,本發明將CSP描述的適配器結構轉換為WS-BPEL描述的流程模型,通過適配器生成工具實現這一功能,其轉換方法如下-(1)行為適配流程與對應實際服務以及與其他適配器的交互部分,分別實現為yzow結構的兩個并發子流程;并根據定義中的結構化信息生成相應的yow,M^ew"等結構;(2)具體的消息發送與接收活動根據實際服務行為接口的具體描述信息,分別實現為rece/ve,re;/》i"vofe或p/c先等活動;(3)消息管道中的數據存儲對于流程中的每個消息,采用WS-BPEL中的^n'Wfe元素來表示,并以此來實現具體消息內容的保存與更新;(4)消息管道中的轉換活動對于消息管道中的映射轉換,則采用WS-BPEL中的X^fgn活動來實現,并通過其coP_y和to元素來描述具體的轉換方法;(5)消息轉換活動實現為單獨的并發子流程,具體的消息轉換與行為適配流程之間的同步關系通過WS-BPEL語言中的//wA活動來實現,從而保證在接收消息之后,以及發送消息之前完成相應的消息轉換。最終生成適配器的WS-BPEL描述文件,并通過各個服務提供者的協作代理模塊,部署到各個適配器執行引擎。那么在運行時,適配器通過與相對應的實際服務交互來進行應用數據的交換,而協作流程則通過適配器之間的分布式交互來實現,其運行時的交互協作模型如圖8所示。從而通過分布式適配器的應用,在保持服務協作靈活性的前提下,提高了服務組件的可重用性。權利要求1.一種基于分布式適配的服務協作方法,其步驟為1)依據協作需求,建立全局的服務協作流程,采用角色描述所述服務協作流程中的參與者;2)將服務協作流程投影到各個參與角色,得到各個角色的抽象服務接口集合;同時建立參與協作的實際服務行為接口模型;3)將抽象服務接口與對應的實際服務行為接口進行可適配的一致性檢查;4)如果實際服務的行為接口滿足可適配的一致性,則為其自動構造適配器;如果實際服務的行為接口不滿足可適配的一致性,則返回不可適配的交互路徑信息;5)將各個服務組件所對應的適配器轉換成相應的實現形式并封裝為Web服務,分布式地部署在與實際服務相同的執行環境中。2.如權利要求1所述的方法,其特征在于通過協作流程建模工具建立服務組件之間的服務協作流程得到所述全局的服務協作流程;所述協作流程建模工具以泳池的概念建立一協作流程,所述參與者的角色以泳道的概念進行劃分,其中圖形化流程中的每個活動表示一個消息交互事件,活動所屬的泳道作為消息的發送者,通過活動的接收角色屬性來選擇設置相應的消息接收者,消息的具體內容則通過泳池的消息列表屬性來設置。3.如權利要求l所述的方法,其特征在于通過抽象WS—BPEL流程描述建立所述實際服務行為接口模型,然后將所述實際服務行為接口模型轉換為CSP形式化語言的模型結構,其方法為將WS—BPEL語言中的結構活動segwem;e、Wow、;!'c/t、以及wMe分別轉換為CSP形式化語言中對應的順序、并發、確定性選擇、非確定性選擇以及循環結構,同時在CSP形式化語言模型結構中用!x表示消息發送活動,用x描述消息接收活動。4.如權利要求3所述的方法,其特征在于所述將服務協作流程投影到各個參與角色方法為首先服務協作流程轉換為CSP形式化語言的模型結構,然后通過投影算法將轉換后的服務協作流程投影到各個參與角色。5.如權利要求4所述的方法,其特征在于所述CSP形式化語言的模型結構包括一根類,所有流程相關的類都繼承于該根類;所述根類包括Process、Swimlane、LaneObject三種子類;其中所述Process用來描述整個流程的相關屬性,其包括一消息列表用以定義整個協作流程中角色之間交互的消息;所述Swimlane包括Pool和Lane子類,Pool用以描述一個具體的協作場景,Lane用以表示協作中的各個角色;所述LaneObject用以定義流程中的元素,其包括ConnectionObject和FlowObject子類,ConnectionObject用來描述流程中的連接,FlowObject用來描述流程中的基本活動;SequenceFlow繼承于所述ConnectionObject,用來建模流程中的連接線,描述活動之間的時序邏輯關系。6.如權利要求5所述的方法,其特征在于所述FlowObject包含活動、事件、網關三個子類,其中活動的子類ServiceTask用來建模具體的消息交互活動,其屬性包括活動標識、活動名稱、消息、消息的發送角色以及消息的接收角色;事件的子類包括StartEvent和EndEvent,StartEvent用來描述流程的起始點,EndEvent用來描述流程的結束點;網關則用來描述流程的分支,其子類分為并發網關、選擇網關,分別用來建模并發分支以及選擇分支。7.如權利要求6所述的方法,其特征在于所述將轉換后的服務協作流程投影到各個參與角色的方法為-1)對于原子活動的投影如果當前角色為發送或接收角色,則將其投影為對應的消息發送或接收活動;對于原子活動中的其他角色投影為5^/戶;所述原子活動為表示兩個角色之間的一次消息交換;2)對于順序流程戶;0的投影:設流程戶中所有結束活動的消息接收角色集合為r"/Z(尸),而0中所有起始活動的消息發送角色集合為He"減0;如果當前角色屬于Tfl!7(戶),那么增加將當前角色發送同步消息附syn到//M《0中的每個角色的順序同步流程;如果當前角色屬于報ac/(0,那么增加將當前角色從7^7(P)中的每個角色接收同步消息附syn的順序同步流程;3)對于前綴活動則采用2)中的投影方法進行投影;4)對于并發活動"|2的投影分別對流程P和2進行投影,然后再以并發操作符連接投影后的流程;5)對于選擇活動的投影對于協作流程中的選擇操作符,將參與協作的一個角色設置為選擇決策角色",而化,化,弁。Al^5^則為所有在流程尸或g中具有相關發送或接收活動的角色,然后構造相應的同步選擇消息;^和we,并從^發送到每一個用來通知角色"所選擇的分支;6)對于具有選擇結構的循環活動的投影對循環結構內的選擇活動直接進行投影。8.如權利要求4所述的方法,其特征在于建立一實際服務行為接口與對應抽象服務接口之間的適配模型,進行所述一致性檢查;所述適配模型建立方法為1)抽取抽象服務接口與實際服務行為接口中的消息,并且建立消息之間的數據依賴關系;2)根據消息依賴關系為每個接收消息建模對應的消息管道;3)依據抽象服務接口和實際服務行為接口的CSP描述模型構造異步交互流程。9.如權利要求8所述的方法,其特征在于所述異步交互流程建立方法為l)對于接口描述中的每個發送消息m,若附在數據映射中有相應的映射關系定義,則將相應活動改寫為對消息管道的寫入活動,否則將相應的活動改寫為S《/戶;2)對于接口描述中的每個接收消息m,若w在數據映射中有相應的映射關系定義,則將相應的活動改寫為對消息管道的讀出活動,否則將相應的活動改寫為sro戶。10.如權利要求9所述的方法,其特征在于所述適配模型進行一致性檢査的方法為l)將異步交互流程中的抽象服務接口和實際服務行為接口分別轉換成等價的非確定性選擇的標準形式;2)采用mow算法對抽象服務接口與實際服務行為接口的每條交互路徑進行兩兩的死鎖檢査,如果所有的交互路徑都不存在死鎖,那么實際服務就滿足可適配一致性的條件;所述mow算法的步驟為遍歷交互流程的各個原子活動,如果當前流程可以成功執行完,則返回s/u戶;如果存在sro戶活動,則返回結果sro戶;如果不存在可執行的活動,則返回7VoAfove;如果存在可執行的活動,則返回結果^fove,同將可執行活動的狀態標記為已檢査。11.如權利要求8所述的方法,其特征在于所述自動構造適配器的方法為1)如果異步交互流程中的活動為寫入活動,則構造相應的消息接收活動m,并用前綴連接符'連接活動;2)如果異步交互流程中的活動為讀出活動,則構造相應的消息發送活動!w,并用前綴連接符'連接活動。12.如權利要求11所述的方法,其特征在于將所述適配器轉換為WS-BPEL描述的流程模型,其方法為1)將適配器交互部分的行為適配流程分別實現為yow結構的兩個并發子流程,并根據結構化信息生成相應的yow,w^/e"ce結構;2)將消息發送與接收活動根據實際服務行為接口的具體描述信息分別實現為wce/ve,w;(v,/"wfe或活動;3)將流程中的每個消息采用WS-BPEL中的Fbn'W/e元素來表示,并以此來實現具體消息內容的保存與更新;4)將消息管道中的映射轉換采用WS-BPEL中的J^/g"活動來實現,并通過其copy和to元素來描述具體的轉換方法;5)將消息轉換活動實現為單獨的并發子流程,具體的消息轉換與行為適配流程之間的同步關系通過WS-BPEL語言中的/z'd活動來實現。13.—種基于分布式適配的服務協作系統,其包括協作流程層、適配管理層、協作運行層;所述協作流程層包括協作流程建模工具,采用圖形化的方式建立服務協作流程,用于可視化建模和展示;協作流程投影工具,用于基于協作角色將全局的協作流程進行投影,得到各個實際服務所對應的抽象服務接口;所述適配管理層包括映射模型管理模塊,負責抽取抽象服務接口以及實際服務接口中的消息,并將消息映射的結果提交給一致性檢查模塊以進行一致性檢査以及適配器的構造;一致性檢查模塊,用于根據映射模型管理模塊的輸入判斷對應的實際服務是否存在有效的適配器;適配器生成模塊,用于依據一致性檢查的結果和映射模型管理模塊的映射結果生成適配器并轉換成相應的實現形式;適配器管理器,負責適配器分布式部署及其管理;所述協作運行層分布式的位于各個服務提供者的位置,用于為適配器提供運行支撐環境。全文摘要本發明公開了一種基于分布式適配的服務協作方法及其系統,屬于網絡服務領域。本發明的方法為首先依據協作需求建立全局的服務協作流程,并將其投影到各參與角色,得到各角色的抽象服務接口集合;同時建立參與協作的實際服務行為接口模型;然后將抽象服務接口與對應的實際服務行為接口進行可適配的一致性檢查;對滿足可適配的實際服務的行為接口構造適配器;最后將適配器封裝為Web服務分布式地部署在網絡執行環境中。本發明的系統的協作流程層包括協作流程建模工具和協作流程投影工具;適配管理層包括映射模型管理模塊、一致性檢查模塊、適配器管理器;本發明可滿足開放網絡環境對于高效、靈活的服務協作機制的需求。文檔編號H04L29/08GK101588388SQ200910084880公開日2009年11月25日申請日期2009年5月26日優先權日2009年5月26日發明者喬曉強,峻魏,濤黃申請人:中國科學院軟件研究所