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