專利名稱::服務(wù)協(xié)同中基于系統(tǒng)結(jié)構(gòu)的動態(tài)演化方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及Web服務(wù)協(xié)同和軟件動態(tài)演化
技術(shù)領(lǐng)域:
,尤其涉及服務(wù)協(xié)同中的基于系統(tǒng)結(jié)構(gòu)的動態(tài)演化方法。
背景技術(shù):
:隨著Internet在各個領(lǐng)域應(yīng)用的普及和深化,人們迫切需要能夠方便地實現(xiàn)Internet上跨平臺、語言獨立、松散耦合的異構(gòu)應(yīng)用的交互和集成,在這種新要求下,面向服務(wù)計算(S0C)和面向服務(wù)體系結(jié)構(gòu)(S0A)應(yīng)運而生,成為構(gòu)造下一代分布式應(yīng)用的計算范型和體系結(jié)構(gòu)。Web服務(wù)作為面向服務(wù)體系結(jié)構(gòu)的一種具體化技術(shù),以其自描述和松耦合等特點,被廣泛用于面向服務(wù)的分布式系統(tǒng)的實現(xiàn)。Web服務(wù)為眾多應(yīng)用領(lǐng)域的信息自動化提供了新的發(fā)展機會,包括旅游、辦公、智能信息收集與分析等。然后,為了完成某項目標(biāo)任務(wù),通常需要大量分布異構(gòu)系統(tǒng)的協(xié)作。在面向服務(wù)的分布式應(yīng)用中,服務(wù)是基本構(gòu)造單元,服務(wù)之間的協(xié)同工作是實現(xiàn)復(fù)雜應(yīng)用的關(guān)鍵所在。S0A基礎(chǔ)型概念架構(gòu)還不足以滿足以上需求,面向服務(wù)計算近來已從最初的基本服務(wù)的"描述、發(fā)布、交互"向新的階段一服務(wù)協(xié)同階段發(fā)展。由于開放的計算環(huán)境以及多變的應(yīng)用需求,服務(wù)協(xié)同應(yīng)用系統(tǒng)在動態(tài)演化方面的要求越來越高。演化可以是預(yù)設(shè)的也可以是非預(yù)設(shè)的。預(yù)設(shè)的演化是指在設(shè)計系統(tǒng)結(jié)構(gòu)時就預(yù)料到的演化行為;非預(yù)設(shè)的演化則是指無法預(yù)料的,在系統(tǒng)投入運行以后才慢慢顯示出來的演化需求,此時通常需要重新開發(fā)系統(tǒng)新版本,將原系統(tǒng)關(guān)閉,再加載系統(tǒng)新版本。而這對一些可用性要求極高的系統(tǒng)是不可接受的或者經(jīng)濟損失太大。因此,服務(wù)協(xié)同應(yīng)用系統(tǒng)需要能夠在運行時刻進行演化即動態(tài)演化或稱在線演化。主要表現(xiàn)在以下兩方面(1)系統(tǒng)中的服務(wù)單元可能出現(xiàn)故障或需要更新,(2)系統(tǒng)結(jié)構(gòu)需要根據(jù)環(huán)境和業(yè)務(wù)需求的變更動態(tài)調(diào)整,例如,在系統(tǒng)運行期間,為了提高性能可能會加入新的服務(wù)或需求的變更可能會刪除已有的服務(wù)。但目前的服務(wù)協(xié)同領(lǐng)域的相關(guān)技術(shù)大多關(guān)注如何協(xié)同組合己有的服務(wù)構(gòu)成新的更具價值的服務(wù),例如基于工作流技術(shù)的服務(wù)協(xié)同,基于AI規(guī)劃技術(shù)的服務(wù)協(xié)同等。而且還出現(xiàn)不少相關(guān)標(biāo)準(zhǔn),如WS-BPEL、WS-Transaction、WS-Coordination等。但這些技術(shù)與標(biāo)準(zhǔn)并沒有考慮到面向服務(wù)應(yīng)用系統(tǒng)的動態(tài)演化性需求,沒有對服務(wù)協(xié)同中的動態(tài)演化提供很好的支持。服務(wù)協(xié)同系統(tǒng)的動態(tài)演化可能導(dǎo)致系統(tǒng)的不一致性,例如,系統(tǒng)中節(jié)點向其已退出的鄰節(jié)點發(fā)送服務(wù)請求,則會出現(xiàn)異常;又如節(jié)點在被替換過程中被調(diào)用,也會產(chǎn)生錯誤。服務(wù)協(xié)同系統(tǒng)動態(tài)演化中的關(guān)鍵問題之一是要保證演化過程中系統(tǒng)的一致性。已有相關(guān)工作提出了一種分布式系統(tǒng)動態(tài)演化中保證系統(tǒng)一致性的方法,該方法通過在演化操作執(zhí)行之前將受影響節(jié)點驅(qū)動進入適當(dāng)?shù)臓顟B(tài),包括靜止?fàn)顟B(tài)和被動狀態(tài)。處于被動狀態(tài)的節(jié)點,只能接受請求,對所有鄰節(jié)點都不能主動發(fā)出請求。若節(jié)點處于被動狀態(tài)并且不會收到其鄰節(jié)點的請求,則稱節(jié)點處于靜止?fàn)顟B(tài)。為保證一致性,在演化實施前往往需要驅(qū)動節(jié)點進入靜止?fàn)顟B(tài),例如節(jié)點必須達到靜止?fàn)顟B(tài)后才能安全退出,為了達到此目的,該方法將驅(qū)動靜止節(jié)點的所有鄰節(jié)點進入被動狀態(tài)。然后,這個方法對條件要求過于嚴(yán)格,也就是,為了使某節(jié)點達到靜止?fàn)顟B(tài),并不需要驅(qū)動所有鄰節(jié)點進入被動狀態(tài)。這樣雖然一致性得到保證,但給系統(tǒng)帶來過多不必要的干擾。
發(fā)明內(nèi)容鑒于上述原因,為解決服務(wù)協(xié)同應(yīng)用系統(tǒng)中的動態(tài)演化問題,本發(fā)明提供了一種面向服務(wù)協(xié)同的基于系統(tǒng)結(jié)構(gòu)的動態(tài)演化方法,該方法能夠支持運行時刻下服務(wù)節(jié)點的加入、退出、替換等動態(tài)演化操作,并且在保證系統(tǒng)的一致性的前提下盡量減小對整個系統(tǒng)的干擾。本發(fā)明的技術(shù)解決方案一種服務(wù)協(xié)同中基于系統(tǒng)結(jié)構(gòu)的動態(tài)演化方法,其步驟如下第一步,對基于BPEL的服務(wù)協(xié)同模型進行擴展,即在單個節(jié)點的BPEL服務(wù)協(xié)同模型中添加服務(wù)協(xié)同系統(tǒng)的結(jié)構(gòu)信息,完整顯示地定義系統(tǒng)內(nèi)各服務(wù)節(jié)點之間服務(wù)調(diào)用的依賴關(guān)系;第二步,基于上述擴展的包含結(jié)構(gòu)信息的BPEL服務(wù)協(xié)同模型,在系統(tǒng)運行態(tài)下驅(qū)動服務(wù)協(xié)同應(yīng)用系統(tǒng)進入安全狀態(tài),然后對系統(tǒng)結(jié)構(gòu)進行相應(yīng)修改以實現(xiàn)動態(tài)演化,基本的動態(tài)演化操作包括新節(jié)點加入、節(jié)點退出和節(jié)點替換。本發(fā)明的原理本發(fā)明首先在一般的服務(wù)協(xié)同模型基礎(chǔ)上進行擴展。例如常用的基于BPEL(BusinessProcessExecutionLanguage)的服務(wù)協(xié)同模型,不能完整地表達節(jié)點之間的依賴關(guān)系,一般只暗含本節(jié)點調(diào)用的其它節(jié)點的信息,但卻無法表達本節(jié)點被哪些節(jié)點調(diào)用。因此,將在一般的服務(wù)協(xié)同模型中添加系統(tǒng)結(jié)構(gòu)信息即完整顯示地定義系統(tǒng)內(nèi)各服務(wù)節(jié)點之間的依賴關(guān)系。然后基于上述擴展的包含結(jié)構(gòu)信息的協(xié)同模型,給出一個驅(qū)動系統(tǒng)進入安全狀態(tài)的方法,以保證在節(jié)點加入、退出、替換或遷移時系統(tǒng)的一致性。最后,通過建立或刪除節(jié)點間連接關(guān)系,實施演化操作,修改系統(tǒng)結(jié)構(gòu)。所謂安全狀態(tài)就是指在這種狀態(tài)下節(jié)點加入、退出、替換或遷移不會影響到系統(tǒng)其它節(jié)點的正常運行。在不同演化操作下,安全狀態(tài)的解釋不盡相同。當(dāng)新節(jié)點加入時,直接與某個接口相匹配的節(jié)點建立連接即可。在節(jié)點退出或被替換前,必須驅(qū)動其鄰節(jié)點停止向它發(fā)送請求,同時它自身停止向其它節(jié)點發(fā)出請求,且必須處理完所有已接收請求。本發(fā)明與現(xiàn)有技術(shù)相比的優(yōu)點在于(1)現(xiàn)有的服務(wù)協(xié)同模型對系統(tǒng)動態(tài)演化支持不夠,本發(fā)明通過在基于BPEL的協(xié)同模型基礎(chǔ)上進行擴展,豐富其系統(tǒng)結(jié)構(gòu)信息,以支持系統(tǒng)動態(tài)演化操作的實施。(2)對于系統(tǒng)動態(tài)演化中可能產(chǎn)生的系統(tǒng)不一致性問題,現(xiàn)有的解決方法雖然能夠保證系統(tǒng)一致性,但是對系統(tǒng)帶來了過多的不必要干擾。圖1為本發(fā)明方法的實現(xiàn)流程圖2為本發(fā)明方法在BPEL服務(wù)協(xié)同模型中添加服務(wù)協(xié)同系統(tǒng)結(jié)構(gòu)信息的實現(xiàn)方法流程圖3為本發(fā)明方法中新節(jié)點加入實現(xiàn)流程圖;圖4為本發(fā)明方法中節(jié)點退出實現(xiàn)流程圖;圖5為本發(fā)明方法中節(jié)點替換實現(xiàn)流程圖;圖6為本發(fā)明實施例的效果圖;圖7為本發(fā)明實施例的效果圖8為本發(fā)明實施例的效果圖。具體實施例方式一、如圖1所示,本發(fā)明的實現(xiàn)方法為1、首先,對基于BPEL的服務(wù)協(xié)同模型進行擴展。BPEL是一個Web服務(wù)業(yè)務(wù)流程執(zhí)行語言,它已逐漸成為Web服務(wù)協(xié)同領(lǐng)域的事實標(biāo)準(zhǔn)。BPEL為描述基于流程和其合作伙伴之間交互的業(yè)務(wù)流程行為定義了模型和語法。在BPEL中,與業(yè)務(wù)流程交互的服務(wù)被稱為合作伙伴partner,通過partnerLink元素描述流程與其合作伙伴之間的交互關(guān)系。partnerLink元素中的myRole屬性指出了業(yè)務(wù)流程本身的角色,partnerRole屬性指出了合作伙伴的角色,這兩個屬性必有其一,也可同時存在。BPEL主要通過九種基本活動描述流程與其合作伙伴間的交互流程。其中與partnerLink直接相關(guān)聯(lián)的幾個活動包括receive活動、reply活動、invoke活動以及pick活動中的onMessage分支。invoke表示調(diào)用合作伙伴提供的Web服務(wù),receive、r印ly、onMessage表示接受或響應(yīng)合作伙伴的調(diào)用請求即對合作伙伴提供Web服務(wù)被合作伙伴調(diào)用。由此可見,服務(wù)協(xié)同的BPEL模型描述中只包含被當(dāng)前流程調(diào)用的其它服務(wù)的信息,但卻不包含當(dāng)前流程被哪些合作伙伴調(diào)用的信息。但由于調(diào)用關(guān)系在交互節(jié)點的流程之間存在相對性,也就是說若節(jié)點A調(diào)用了合作伙伴B的服務(wù),則說明節(jié)點B的服務(wù)也就相對地被合作伙伴A調(diào)用。因此,本發(fā)明在BPEL模型基礎(chǔ)上增加鄰節(jié)點(neighbor)和連接(connection)這兩個概念,其中連接具有方向性,它的方向用于指示節(jié)點之間的調(diào)用依賴關(guān)系。例如,假設(shè)節(jié)點A、B為相鄰節(jié)點,若A具有一條到B的出向連接,則說明A需要調(diào)用B上的服務(wù);若A具有一條到B的入向連接,則說明A會被B調(diào)用。通過解析系統(tǒng)中某個節(jié)點的BPEL模型以及鄰節(jié)點通告機制,建立擴展模型的步驟如圖2所示,具體如下-(1)由p虹tnerLink列表得到擴展模型中的部分鄰節(jié)點與連接信息。設(shè)其partnerLink列表為PLliste,partnerLink的partnerRole指示的節(jié)點記為partner,步驟如下第l步遍歷PLlist中的partnerLink;第2步若partnerlink的partnerRole屬性為空,轉(zhuǎn)第5步;第3步若partner不在當(dāng)前節(jié)點的鄰節(jié)點集合中,則將partner加入到neighbor集合中;第4步創(chuàng)建一個出向連接,并將連接關(guān)聯(lián)到partner上;第5步是否遍歷完P(guān)Llist中的所有partnerLink,若不是轉(zhuǎn)第l步,否則結(jié)束。(2)向當(dāng)前鄰節(jié)點集合中的所有鄰節(jié)點發(fā)送"鄰節(jié)點通告"消息,且該消息包含當(dāng)前節(jié)點信息;(3)根據(jù)收到的"鄰節(jié)點通告"消息,補充缺失的鄰節(jié)點與連接信息,設(shè)發(fā)送"鄰節(jié)點通告"消息的源節(jié)點記為source,步驟如下第1.步對于收到的每一條"鄰節(jié)點通告"消息,重復(fù)執(zhí)行第2-3步;第2步若source不在當(dāng)前節(jié)點的鄰節(jié)點集合中,則將source加入到鄰節(jié)點集合中;第3步創(chuàng)建一條入向連接,關(guān)聯(lián)到source上。2.然后,基于上述擴展模型,驅(qū)動服務(wù)協(xié)同應(yīng)用系統(tǒng)進入安全狀態(tài)并實施演化操作,基本的動態(tài)演化操作包括新節(jié)點加入、節(jié)點退出和節(jié)點替換。下面針對新節(jié)點加入、節(jié)點退出和節(jié)點替換的演化操作,分別介紹執(zhí)行動態(tài)演化的步驟(1)新節(jié)點加入,如圖3所示。新節(jié)點分為主動加入和被動加入,其中主動加入為a.新節(jié)點向某在線節(jié)點發(fā)送"加入請求",該消息中包含新節(jié)點調(diào)用在線節(jié)點服務(wù)的端口信息以及新節(jié)點自身信息;b.當(dāng)某在線節(jié)點收到"加入請求"后,判斷是否滿足消息中指示的端口要求,若滿足,則返回"接受"消息并將新節(jié)點加入到其鄰節(jié)點集合中,建立一條入向連接并關(guān)聯(lián)到新節(jié)點,否則返回"拒絕"消息;c.若新節(jié)點收到"接受"響應(yīng),則建立一條到在線節(jié)點的出向連接,將此在線節(jié)點加入到其鄰節(jié)點集合中。(2)節(jié)點退出,如圖4所示。a.退出節(jié)點向其入向鄰節(jié)點(即其入向連接關(guān)聯(lián)到的鄰節(jié)點)發(fā)出"退出請求",并停止主動向所有鄰節(jié)點發(fā)送服務(wù)調(diào)用請求,但繼續(xù)接收請求;b.當(dāng)某節(jié)點收到其鄰節(jié)點的"退出請求"后,阻止主動向該鄰節(jié)點發(fā)出請求,但允許向除此鄰節(jié)點之外的其他鄰節(jié)點發(fā)送請求,并且繼續(xù)接收處理來自所有鄰節(jié)點的請求。等待已向該鄰節(jié)點發(fā)出的請求都得到響應(yīng)后,向該鄰節(jié)點返回"退出確認(rèn)"消息;c.當(dāng)退出節(jié)點得到入向鄰接點的"退出確認(rèn)"后,向所有鄰節(jié)點發(fā)送"退出通告",刪除所有鄰節(jié)點及連接;d.當(dāng)節(jié)點收到其鄰節(jié)點的"退出通告"后,刪除該鄰節(jié)點及相關(guān)連接。(3)節(jié)點替換,如圖5所示。舊節(jié)點被新節(jié)點替換,新舊節(jié)點接口保持一致,替換可以看成是退出和加入的一種特殊組合。a.舊節(jié)點向其入向鄰節(jié)點(即其入向連接關(guān)聯(lián)到的鄰節(jié)點)發(fā)出"替換請求",并停止主動向所有鄰節(jié)點發(fā)送服務(wù)調(diào)用請求,但繼續(xù)接收請求;b.當(dāng)某節(jié)點收到某鄰節(jié)點的"替換請求"后,阻止主動向該鄰節(jié)點發(fā)出請求,但允許向除此鄰節(jié)點之外的其他鄰節(jié)點發(fā)送請求,并且繼續(xù)接收處理來自所有鄰節(jié)點的請求。等待已向該鄰節(jié)點發(fā)出的請求都得到響應(yīng)后,向舊節(jié)點返回"替換確認(rèn)";c.舊節(jié)點收到"替換確認(rèn)"后,將其連接信息遷移到新節(jié)點上,再刪除自身所有連接;d.新節(jié)點建立相應(yīng)連接之后,向所有鄰節(jié)點發(fā)送"替換通告"消息;e.當(dāng)節(jié)點收到"替換通告"消息,將相應(yīng)的原連接重定向到替換后的新節(jié)點上,并被重新激活即允許向替換后的節(jié)點發(fā)出請求。二、下面以圖6所示的服務(wù)協(xié)同應(yīng)用系統(tǒng)為例給出上述技術(shù)方案的具體實施方法。圖6描述的應(yīng)用系統(tǒng)中包括customer、agent、contractorl、constractor2四個節(jié)點,各節(jié)點間的交互關(guān)系如下customer向agent發(fā)出服務(wù)請求,agent將請求傳遞給相應(yīng)的2個contractor,包括contractorl、contractor2,contractor再與customer交互,同時也將交互情況匯報給agent。在圖6中,圓圈代表參與協(xié)同的服務(wù)節(jié)點,線表示節(jié)點之間的連接關(guān)系(調(diào)用關(guān)系)。每類節(jié)點的BPEL模型片斷如下表1、表2和表3所示。表1是customer節(jié)點的BPEL模型片斷,包含2個partnerLink,其中name為customer2agent的partnerLink表示customer可以i青求agent的月艮務(wù);name為customer2contractor的partnerLink表示customer可以又寸其4也節(jié)點提供服務(wù),接受其他節(jié)點的請求。表1customer的BPEL模型片斷〈processname=〃customer〃〉<table>tableseeoriginaldocumentpage9</column></row><table>表2是agent的BPEL模型片斷,包含3個partnerLink,其中name為agent2customer的partnerLink表示agent可以對其他節(jié)點提供服務(wù),接受其他節(jié)點的請求;name為agent2contractorl禾口agent:2contractor2的partnerLink表示agent既可以請求contractorl、contractor2的服務(wù),也可以接受這兩個節(jié)點的請求。表2agent的BPEL模型片斷<table>tableseeoriginaldocumentpage9</column></row><table>表3是constratorl/2節(jié)點的BPEL模型片斷,包含2個partnerLink,其中name為customer2customer的partnerLink表示constractor可以i青求agent的月艮務(wù);name為customer2agent的partnerLink表示contractor既可以乂寸agent節(jié)點提〈共月艮務(wù),也可以請求agent節(jié)點的服務(wù)。表3contractor的BPEL模型片斷<table>tableseeoriginaldocumentpage10</column></row><table>在系統(tǒng)初始化階段,各類節(jié)點根據(jù)其BPEL描述建立擴展模型步驟如下1.customer節(jié)點(1)對于"name"屬性為"customer2agent"的partnerLink,將其partnerRole指示的節(jié)點agent加入customer鄰節(jié)點集合中,定義一條出向連接CtoA,并關(guān)聯(lián)到agent;(2)向鄰節(jié)點agent發(fā)送"鄰節(jié)點通告"消息,且該消息包含customer自身的節(jié)點信息;(3)當(dāng)收到contractorl的"鄰節(jié)點通告"消息,將contractorl加入到鄰節(jié)點集合中,建立一條入向連接CtoCl,并關(guān)聯(lián)到contractorl,同樣地,當(dāng)收到contractor2的"鄰節(jié)點通告"消息,將contractor2加入到鄰節(jié)點集合中,建立一條入向連接CtoC2,并關(guān)聯(lián)到contractor2。2.agent節(jié)點(1)對于"name"屬性為"agent2contractorl"禾口"agent2contractor2"的partnerLink,將其partnerRole指示的兩個節(jié)點contractorl禾口contractor2力口入至[Jagent的鄰節(jié)點集合中,定義兩條出向連接AtoC10ut,AtoC20ut,分別關(guān)聯(lián)到contractorl禾口contractor^;(2)向contractorl和contractor2兩個鄰節(jié)點分別發(fā)送"鄰節(jié)點通告"消息,且該消息包含agent自身的節(jié)點信息;(3)當(dāng)收到customer、contractorl、contractor2的"鄰節(jié)點通告"消息,由于contractorl和contractor2已在鄰節(jié)點集合中,所以只需將customer加入到其鄰節(jié)點集合中,建立入向連接.At.o.C,、,AtoCrin、AtoC2In,并分別關(guān)聯(lián)到customer、contractorl、contractor2。3.contractorl(2)節(jié)點(1)對于"name"屬性為"contractor2customer"禾口"contractor2agent"的partnerLink,將其partnerRole指示的兩個節(jié)點customer禾口agent力口入至ljcontractorl(2)的鄰節(jié)點集合中,定義出向連接CtoC和CtoA且分別關(guān)聯(lián)到customer禾口agent;(2)向鄰節(jié)點ciistomer、agent發(fā)送"鄰節(jié)點通告"消息,且該消息包含contractorl(2)自身的節(jié)點信息;(3)當(dāng)收到agent的"鄰節(jié)點通告"消息,由于agent巳在鄰節(jié)點集合中,只需建立一條入向連接AtoC,且關(guān)聯(lián)到contractorl(2)。在系統(tǒng)運行階段,系統(tǒng)的基本演化操作包括新節(jié)點加入、節(jié)點退出、節(jié)點替換。下面列舉三種情形分別描述系統(tǒng)演化方法的實施步驟。1.新節(jié)點contractors加入,假設(shè)節(jié)點之間接口是相匹配的,加入后系統(tǒng)結(jié)構(gòu)如7所示。(1)contractors向agent發(fā)出"加入請求"消息,該消息包含contractor3節(jié)點自身信息以及對agent提供的端口的要求;(2)當(dāng)agent收到"加入請求"后,判斷是否滿足端口要求,若具有要求的端口類型,返回"接受"消息,并將contractor3加入到鄰節(jié)點集合中,建立一條入向連接CtoA并關(guān)聯(lián)至(Jagent;(3)當(dāng)agent收到"接受"響應(yīng),將contractor3加入到鄰節(jié)點集合中,并建立一條到contractor3的出向連接AtoC3,且關(guān)聯(lián)到contractor3;(4)contractor3向customer節(jié)點發(fā)送"加入請求"消息,該消息包含contractor3的節(jié)點信息;(5)當(dāng)customer收到"加入請求"消息后,返回將contrator3加入到鄰節(jié)點集合中,"接受"消息并,建立一條入向連接CtoC3,且關(guān)聯(lián)到contractor;(6)當(dāng)contractor3收到"接受"響應(yīng),將customer加入到鄰節(jié)點集合中,并建立一條出向連接CtoC,且關(guān)聯(lián)到customer。2.節(jié)點contractorl退出,退出后系統(tǒng)結(jié)構(gòu)如8所示。(1)contractorl向agent發(fā)出"退出請求,,,停止主動向customer發(fā)出請求,繼續(xù)接收agent的請求;(2)當(dāng)agent收到contractorl的"退出請求"后,停止向contractorl發(fā)出請求,并等待已向contractorl發(fā)出的請求得到響應(yīng),這之后,向contractorl返回"退出確認(rèn)"消息;(3)當(dāng)contractorl收到"退出確認(rèn)"消息后,向所有鄰節(jié)點發(fā)送"退出通告",刪除所有鄰節(jié)點包括agent和customer以及相關(guān)連接。(4)當(dāng)customer收妾廿contractorl的"退出通告"后,將contractorl從令P節(jié)點集合中移除并刪除相關(guān)連接CtoCl;(5)當(dāng)agent收到contractorl的"退出通告"后,將contractorl從鄰節(jié)點集合中移除并刪除相關(guān)連接AtoCl。3.節(jié)點agent被agent',替換后系統(tǒng)結(jié)構(gòu)不變?nèi)匀鐖D6所示。(1)agent向customer、contractorl、contractor2發(fā)出,,替換請求,,(包含agent,信息),并停止主動發(fā)起對contractorl、contractor2的服務(wù)調(diào)用請求;(2)當(dāng)customer收到agent的"替換請求"后,停止主動向agent主動發(fā)出請求,等待已向agent發(fā)出的請求都得到響應(yīng)后,向agent返回"替換確認(rèn)";(3)當(dāng)contractorl收到agent的"替換請求"后,停止主動向agent主動發(fā)出請求,等待已向agent發(fā)出的請求都得到響應(yīng)后,向agent返回"替換確認(rèn)";(4)當(dāng)contractor2收到agent的"替換請求"后,停止主動向agent主動發(fā)出請求,等待已向agent發(fā)出的請求都得到響應(yīng)后,向agent返回"替換確認(rèn)"(5)當(dāng)agent收至Ucustomer、contractorl、contractor2的"替換確認(rèn)',消息后,將其連接信息遷移到agent'上,再刪除自身所有連接;(6)agent'根據(jù)agent的原連接信息建立相應(yīng)的連接并向customer、contractorl、contractor2發(fā)送"替換通告"消息;(7)customer、contractorl、contractor2收到替換完成"消息后,將連接重定向到agent'上,并重新激活即允許向agent'發(fā)出請求。權(quán)利要求1、一種服務(wù)協(xié)同中基于系統(tǒng)結(jié)構(gòu)的動態(tài)演化方法,其特征在于步驟如下第一步,對基于BPEL的服務(wù)協(xié)同模型進行擴展,即在單個節(jié)點的BPEL服務(wù)協(xié)同模型中添加服務(wù)協(xié)同系統(tǒng)的結(jié)構(gòu)信息,完整顯示地定義系統(tǒng)內(nèi)各服務(wù)節(jié)點之間服務(wù)調(diào)用的依賴關(guān)系;第二步,基于上述擴展的包含結(jié)構(gòu)信息的BPEL服務(wù)協(xié)同模型,在系統(tǒng)運行態(tài)下驅(qū)動服務(wù)協(xié)同應(yīng)用系統(tǒng)進入安全狀態(tài),然后對系統(tǒng)結(jié)構(gòu)進行相應(yīng)修改以實現(xiàn)動態(tài)演化,基本的動態(tài)演化操作包括新節(jié)點加入、節(jié)點退出和節(jié)點替換。2、根據(jù)權(quán)利要求l所述的服務(wù)協(xié)同中基于系統(tǒng)結(jié)構(gòu)的動態(tài)演化方法,其特征在于所述步驟(1)在單個節(jié)點的BPEL服務(wù)協(xié)同模型中添加服務(wù)協(xié)同系統(tǒng)結(jié)構(gòu)信息的實現(xiàn)方法為(1)在節(jié)點的BPEL模型基礎(chǔ)上增加"鄰節(jié)點"和"連接"元素,其中連接具有方向性,包括出向和入向,它的方向用于指示節(jié)點與其鄰節(jié)點之間的服務(wù)調(diào)用關(guān)系,一個鄰節(jié)點關(guān)聯(lián)一到多個連接,一個連接有且僅有一個鄰節(jié)點與之關(guān)聯(lián);(2)通過解析節(jié)點BPEL模型以及鄰節(jié)點通告機制,完善擴展模型,其步驟如下a.由partnerLink列表得到擴展模型中的部分鄰節(jié)點與連接信息;b.向當(dāng)前鄰節(jié)點集合中的所有鄰節(jié)點發(fā)送"鄰節(jié)點通告"消息,且該消息包含當(dāng)前節(jié)點信息;c.根據(jù)收到的"鄰節(jié)點通告"消息,補充缺失的鄰節(jié)點與連接信息。3、根據(jù)權(quán)利要求2所述的服務(wù)協(xié)同中基于系統(tǒng)結(jié)構(gòu)的動態(tài)演化方法,其特征在于所述步驟U)a的實現(xiàn)為設(shè)其partnerLink列表為PUiste,partnerLink的partnerRole指示的節(jié)點記為partner,實現(xiàn)步驟如下第l步遍歷PLlist中的partnerLink;第2步若partnerlink的partnerRole屬性為空,轉(zhuǎn)第5步;第3步若partner不在當(dāng)前節(jié)點的鄰節(jié)點集合中,則將partner加入到neighbor集合中;第4步創(chuàng)建一個出向連接,并將連接關(guān)聯(lián)到partner上;第5步是否遍歷完P(guān)Llist中的所有partnerLink,若不是轉(zhuǎn)第1步,否則結(jié)束。4、根據(jù)權(quán)利要求2所述的服務(wù)協(xié)同中基于系統(tǒng)結(jié)構(gòu)的動態(tài)演化方法,其特征在于所述步驟(1)c的實現(xiàn)為設(shè)發(fā)送"鄰節(jié)點通告"消息的源節(jié)點記為source,實現(xiàn)步驟如下-第1步對于收到的每一條"鄰節(jié)點通告"消息,重復(fù)執(zhí)行第2-3步;第2步若souixe不在當(dāng)前節(jié)點的鄰節(jié)點集合中,則將source加入到鄰節(jié)點集合中;第3步創(chuàng)建一條入向連接,關(guān)聯(lián)到source上。5、根據(jù)權(quán)利要求l所述的服務(wù)協(xié)同中基于系統(tǒng)結(jié)構(gòu)的動態(tài)演化方法,其特征在于所述步驟(2)新節(jié)點加入的方法為(1)新節(jié)點向某在線節(jié)點發(fā)送"加入請求",該消息中包含新節(jié)點調(diào)用在線節(jié)點服務(wù)的端口信息以及新節(jié)點自身信息;(2)當(dāng)某在線節(jié)點收到"加入請求"后,判斷是否滿足消息中指示的端口要求,若滿足,則返回"接受"消息并將新節(jié)點加入到其鄰節(jié)點集合中,建立一條入向連接并關(guān)聯(lián)到新節(jié)點,否則返回"拒絕"消息;(3)若新節(jié)點收到"接受"響應(yīng),則將此在線節(jié)點加入到其鄰節(jié)點集合中,并創(chuàng)建一條出向連接聯(lián)到該在線節(jié)點。6、根據(jù)權(quán)利要求1所述的服務(wù)協(xié)同中基于系統(tǒng)結(jié)構(gòu)的動態(tài)演化方法,其特征在于所述步驟(2)節(jié)點退出的方法為(1)退出節(jié)點向其入向鄰節(jié)點,即其入向連接關(guān)聯(lián)到的鄰節(jié)點發(fā)出"退出請求",并停止主動向所有鄰節(jié)點發(fā)送服務(wù)調(diào)用請求,但繼續(xù)接收請求;(2)當(dāng)某節(jié)點收到其鄰節(jié)點的"退出請求"后,阻止主動向該鄰節(jié)點發(fā)出請求,但允許向除此鄰節(jié)點之外的其他鄰節(jié)點發(fā)送請求,并且繼續(xù)接收處理來自所有鄰節(jié)點的請求。等待己向該鄰節(jié)點發(fā)出的請求都得到響應(yīng)后,向該鄰節(jié)點返回"退出確認(rèn)"消息;(3)當(dāng)退出節(jié)點得到入向鄰接點的"退出確認(rèn)"后,向所有鄰節(jié)點發(fā)送"退出通告",刪除所有鄰節(jié)點及連接信息;(4)當(dāng)節(jié)點收到其鄰節(jié)點的"退出通告"后,刪除該鄰節(jié)點及相關(guān)連接。7、根據(jù)權(quán)利要求l所述的服務(wù)協(xié)同中基于系統(tǒng)結(jié)構(gòu)的動態(tài)演化方法,其特征在于所述步驟(2)中節(jié)點替換的方法為(1)舊節(jié)點向其入向鄰節(jié)點,即其入向連接關(guān)聯(lián)到的鄰節(jié)點發(fā)出"替換請求",并停止主動向所有鄰節(jié)點發(fā)送服務(wù)調(diào)用請求,但繼續(xù)接收請求;(2)當(dāng)某節(jié)點收到某鄰節(jié)點的"替換請求"后,阻止主動向該鄰節(jié)點發(fā)出請求,但允許向除此鄰節(jié)點之外的其他鄰節(jié)點發(fā)送請求,并且繼續(xù)接收處理來自所有鄰節(jié)點的請求。等待已向該鄰節(jié)點發(fā)出的請求都得到響應(yīng)后,向舊節(jié)點返回"替換確認(rèn)";(3)舊節(jié)點收到"替換確認(rèn)"后,將其連接信息遷移到新節(jié)點上,再刪除自身所有連接;(4)新節(jié)點建立相應(yīng)連接之后,向所有鄰節(jié)點發(fā)送"替換通告"消息;(5)當(dāng)節(jié)點收到"替換通告"消息,將相應(yīng)的原連接重定向到替換后的新節(jié)點上,并被重新激活即允許向替換后的節(jié)點發(fā)出請求。全文摘要用一種服務(wù)協(xié)同中基于系統(tǒng)結(jié)構(gòu)的動態(tài)演化方法,其步驟為第一步,對基于BPEL的服務(wù)協(xié)同模型進行擴展,即在BPEL服務(wù)協(xié)同模型中添加服務(wù)協(xié)同系統(tǒng)結(jié)構(gòu)信息,完整顯示地定義系統(tǒng)內(nèi)各服務(wù)節(jié)點之間的依賴關(guān)系;第二步,基于上述擴展的包含結(jié)構(gòu)信息的BPEL服務(wù)協(xié)同模型,驅(qū)動服務(wù)協(xié)同應(yīng)用系統(tǒng)進入安全狀態(tài),并針對新節(jié)點加入、節(jié)點退出、節(jié)點替換三種實現(xiàn)演化操作,修改系統(tǒng)結(jié)構(gòu)。本發(fā)明能夠支持運行時刻下服務(wù)節(jié)點的加入、退出、替換等動態(tài)演化操作,并且在保證系統(tǒng)的一致性的前提下盡量減小對整個系統(tǒng)的干擾。文檔編號H04L29/08GK101340453SQ20081011812公開日2009年1月7日申請日期2008年8月12日優(yōu)先權(quán)日2008年8月12日發(fā)明者敏劉,斗孫,趙永望,馬殿富申請人:北京航空航天大學(xué)