范大娟,黃志球,肖芳雄,祝 義,王 進(jìn)
(1.南京航空航天大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,南京210016;2.南京工程學(xué)院 計(jì)算機(jī)工程學(xué)院,南京211167)
Web服務(wù)作為實(shí)現(xiàn)SOA架構(gòu)的重要技術(shù)有效地解決了在分布、動(dòng)態(tài)、異構(gòu)環(huán)境下的應(yīng)用集成問題。由于單個(gè)Web服務(wù)提供的功能有限,為了滿足實(shí)際應(yīng)用的需要,常常通過組合已有Web服務(wù)以形成增值的、具有更大粒度的Web服務(wù)。近年來,關(guān)于Web服務(wù)組合的研究工作取得了重要進(jìn)展,已逐漸從只側(cè)重于組合的功能方面的研究轉(zhuǎn)向支持QOS,比如代價(jià)、時(shí)間屬性[1],可信性[2]和能耗[3]等方面的研究;同時(shí)由于服務(wù)自身和需求的動(dòng)態(tài)變化特點(diǎn),傳統(tǒng)的靜態(tài)服務(wù)組合的研究也逐漸向動(dòng)態(tài)服務(wù)組合的方向轉(zhuǎn)變[4]。
在進(jìn)行服務(wù)組合時(shí),由于不同的Web服務(wù)常常由不同的提供者獨(dú)立開發(fā),它們?cè)诤灻麑踊蛐袨閷由峡赡懿幌嗳荻鴮?dǎo)致不能直接組合。如何消除Web服務(wù)在簽名層和行為層上的不相容,從而實(shí)現(xiàn)服務(wù)的正確組合非常關(guān)鍵。服務(wù)之間的不相容表明交互的服務(wù)之間發(fā)生了失配(Mismatch),失配包括簽名層失配(Signature-level mismatches)和行為層失配(Behavioral-level mismatches)。服務(wù)適配技術(shù)通過構(gòu)造適配器的方法來消除服務(wù)之間的不相容而不改變服務(wù)內(nèi)部代碼,以支持服務(wù)的正確組合[5-6]。
目前,有關(guān)服務(wù)適配的研究引起了國(guó)內(nèi)外的廣泛關(guān)注。如文獻(xiàn)[7]對(duì)服務(wù)之間WSDL簽名層上的不相容進(jìn)行適配,假定功能相似的服務(wù)的簽名只在組成消息的部件上不一致,而在消息名上相同,即不考慮消息名稱失配的情況。文獻(xiàn)[8]對(duì)于在簽名層不相容的服務(wù),通過改變WSDL簽名描述使得服務(wù)之間可以正確交互。文獻(xiàn)[9]利用YAWL工作流語(yǔ)言作為中介語(yǔ)言,對(duì)于兩個(gè)BPEL流程,通過合并兩者的對(duì)偶服務(wù)執(zhí)行樹(Dual service execution trees)的方法自動(dòng)生成適配器以消除它們?cè)谛袨閷由系氖?。文獻(xiàn)[10]針對(duì)兩個(gè)異步通信的流程服務(wù),生成最小適配器以消除流程服務(wù)之間行為層上的不相容,最小適配器只處理引起失配的消息,可以降低服務(wù)組合運(yùn)行時(shí)的通信開銷。文獻(xiàn)[11]定義了若干個(gè)基于BPEL代碼的適配模板,每一個(gè)模板對(duì)應(yīng)一種失配的輸入。開發(fā)者可以根據(jù)Web服務(wù)之間簽名層和行為層不相容的情況,利用適配模板生成BPEL適配代碼。文獻(xiàn)[12]利用模式匹配技術(shù)識(shí)別簽名層和行為層的失配,并通過生成失配樹的方法得到適配器規(guī)約。
以上研究工作主要存在如下不足:①文獻(xiàn)[7-10]只關(guān)注服務(wù)簽名層或行為層上的適配。而由于需要組合的多個(gè)服務(wù)通常是由不同提供者獨(dú)立開發(fā),它們往往在簽名層和行為層上均不相容,只考慮某一層上的適配難以有效支持服務(wù)組合的正確執(zhí)行。②上述方法[7-12]主要針對(duì)的是兩個(gè)服務(wù)交互的簡(jiǎn)單場(chǎng)景,而實(shí)際的Web服務(wù)組合往往是多個(gè)服務(wù)參與的復(fù)雜交互場(chǎng)景。③上述方法[7-12]所生成的適配器模型可能包含BPEL不能實(shí)現(xiàn)的部分,因此不能直接映射生成實(shí)際的適配器BPEL代碼,且文獻(xiàn)[11-12]所提出的方法不支持服務(wù)的自動(dòng)適配,需要開發(fā)者的介入以生成相應(yīng)的適配器。
針對(duì)以上問題,本文研究了面向多個(gè)服務(wù)參與的復(fù)雜交互情形下的適配器自動(dòng)生成方法。首先對(duì)有限自動(dòng)機(jī)(Finite automata,F(xiàn)A)進(jìn)行簽名和行為的擴(kuò)展(稱其為SBA模型)以同時(shí)建模服務(wù)的簽名和行為信息,給出了基于SBA模型分析多個(gè)服務(wù)之間相容性的方法。定義了適配器模型的語(yǔ)法和操作語(yǔ)義,根據(jù)服務(wù)的SBA模型和服務(wù)之間的消息映射給出了適配器模型的自動(dòng)生成算法,并討論如何針對(duì)適配器模型中不能實(shí)現(xiàn)的部分(比如不確定、不可達(dá)等部分)進(jìn)行約簡(jiǎn)的方法。最后通過一個(gè)實(shí)例分析說明了本文所提方法的可行性。與已有服務(wù)適配方法相比,通過該方法生成的適配器可以消除多個(gè)服務(wù)之間在簽名層和行為層上的不相容以支持服務(wù)組合的正確執(zhí)行。另一方面,該方法考慮如何對(duì)生成的適配器模型中BPEL不能實(shí)現(xiàn)的部分進(jìn)行約簡(jiǎn),因此可以支持從適配器模型到BPEL代碼的自動(dòng)生成。
服務(wù)的簽名包括服務(wù)的一組操作,由服務(wù)的WSDL文件描述。服務(wù)的每一個(gè)操作都可以看作是一個(gè)輸入或輸出消息。服務(wù)的每一個(gè)消息均由一個(gè)或多個(gè)部件組成,每一個(gè)部件對(duì)應(yīng)一個(gè)類型。因此消息的類型常常是由其部件的數(shù)目、順序和類型所決定的結(jié)構(gòu)體類型?;谏鲜鲇懻摽芍?wù)的簽名可以看作是由服務(wù)所包含的消息以及消息的類型所組成的集合。
服務(wù)的行為定義了服務(wù)的操作調(diào)用的順序,即該服務(wù)與其他服務(wù)交互時(shí)該服務(wù)發(fā)送或接收消息的動(dòng)作序列,通常由服務(wù)的抽象BPEL流程描述?;赪SDL、抽象BPEL流程描述的服務(wù)的簽名和行為缺乏精確的語(yǔ)義,需要轉(zhuǎn)換為相應(yīng)的形式模型表示。
由于有限自動(dòng)機(jī)FA簡(jiǎn)單、直觀、易于理解,具有精確的語(yǔ)義,因此,本文通過對(duì)FA模型進(jìn)行相應(yīng)的擴(kuò)展分別用于形式化描述參與組合的單個(gè)服務(wù)(稱為SBA模型)和它們的適配器(稱為AM模型),通過SBA模型的組合運(yùn)算描述SBA模型的組合(稱為CBA模型)。下面給出幾個(gè)關(guān)于FA模型的基本概念。
由于本文的SBA模型、AM模型、組合模型CBA均基于FA模型進(jìn)行擴(kuò)展,因此,定義1~3同樣適用于以上模型。比如在SBA模型中標(biāo)簽集合L對(duì)應(yīng)SBA模型中的動(dòng)作集合A,即μ1,…,μn-1∈A;在AM模型中標(biāo)簽集合L對(duì)應(yīng)AM模型中的內(nèi)部動(dòng)作集合AI和外部動(dòng)作集合AO,即μ1,…,μn-1∈AO∪AI;在組合模型CBA中標(biāo)簽集合L對(duì)應(yīng)組合模型中的動(dòng)作同步集合AS,即μ1,…,μn-1∈AS。
本文對(duì)FA模型進(jìn)行簽名和行為的擴(kuò)展,稱其為簽名行為自動(dòng)機(jī),用于形式化描述單個(gè)服務(wù)的簽名和行為信息。
定義4 簽名行為自動(dòng)機(jī)(Signature,behavioral automata,SBA)。SBA模型是一個(gè)擴(kuò)展的FA模型SBA=(S,s0,F(xiàn),ΣM,fT,CD,A,T),其中:S表示狀態(tài)集合;s0表示初始狀態(tài),s0∈S;F表示正常終止?fàn)顟B(tài)集合,F(xiàn)?S;ΣM表示消息集合;fT:ΣM→DT為消息集合ΣM到類型集合DT的映射函數(shù);CD為遷移觸發(fā)的條件集合;A表示動(dòng)作集合,A?{?,?。力睲×DT;T表示遷移關(guān)系,T?S×CD×A×S。其中,若發(fā)送動(dòng)作a=!m:d,其互補(bǔ)動(dòng)作為=?m:d;若接收動(dòng)作a=?m:d,則其互補(bǔ)動(dòng)作=!m:d。SBA模型的遷移觸發(fā)條件可為空,表示為ε∈CD。若條件cd1,cd2∈CD,則條件cd1∧cd2表示同時(shí)滿足cd1和cd2的條件。若條件cd∈CD,有cd∧ε=cd成立。
服務(wù)的SBA模型同時(shí)包含服務(wù)的簽名和行為信息,因此利用SBA模型可以自動(dòng)識(shí)別服務(wù)在簽名層和行為層上的失配,并自動(dòng)生成適配器進(jìn)行失配的消解,從而保證了服務(wù)組合的正確執(zhí)行。
參與組合的Web服務(wù)通常是由不同開發(fā)者提供,使用不同的命名空間和類型定義來描述服務(wù)的簽名,使用不一致的消息交互序列來描述服務(wù)的行為。因此,Web服務(wù)之間在簽名層和行為層上的不相容的現(xiàn)象常常發(fā)生。對(duì)多個(gè)不相容的服務(wù)進(jìn)行組合將使得組合系統(tǒng)不能正確執(zhí)行。在進(jìn)行服務(wù)組合之前,需要分析服務(wù)之間的相容性。
已有分析服務(wù)之間相容性的方法大多只考慮兩個(gè)服務(wù)之間在行為上的相容性[5,13],通常根據(jù)這兩個(gè)服務(wù)之間的行為是否是完全相反的或者通過一個(gè)服務(wù)在某一狀態(tài)下發(fā)送消息的集合和與另一服務(wù)在相應(yīng)的狀態(tài)下接收消息的集合是否存在包含關(guān)系來確定。因此,此類(基于二元運(yùn)算)相容性判定方法不適合用于判定多個(gè)服務(wù)之間的相容性。此外,已有相容性判定方法常常忽略了服務(wù)的簽名信息,它們假設(shè)相同消息名的消息具有相同的類型,在此假設(shè)下通過消息名匹配來分析服務(wù)之間的相容性,因此不能識(shí)別簽名層的某些失配,比如消息類型失配等。
在實(shí)際應(yīng)用中,服務(wù)組合往往是多個(gè)服務(wù)參與的復(fù)雜交互場(chǎng)景,且服務(wù)同時(shí)包含靜態(tài)的簽名信息和動(dòng)態(tài)的行為信息,由于服務(wù)的SBA模型同時(shí)刻畫了服務(wù)的簽名和行為信息,因此本文基于SBA模型來分析服務(wù)之間在簽名層和行為層上的相容性。服務(wù)之間的不相容意味著它們的組合系統(tǒng)會(huì)發(fā)生死鎖,因此,可以通過檢測(cè)N個(gè)服務(wù)的SBA模型的組合模型是否存在死鎖狀態(tài)來判定這N個(gè)服務(wù)是否相容。
定義5 SBA的組合模型(Composition model of N SBA models,CBA)。N個(gè)SBA模型SBAi=(Si,,F(xiàn)i,,,CDi,Ai,Ti),i={1,…,N},它們的組合模型SBA1|SBA2|…|SBAN可以被表示一個(gè)擴(kuò)展的FA模型CBA=(S,s0,F(xiàn),ΣM,CD,AS,T),其中:S?S1×…× SN,s0=,…,),F(xiàn)?F1×…×FN,ΣM?CD1×…×CDN,AS是動(dòng)作同步集合,AS?ΣM×{1,…,N}×{1,…,N}× DT,((s1,…,sN),cdi∧cdj,m(i,j):d,(s′1,…,s′N))∈T??(s1,…,sN)∈S,?i,j∈{1,…,N},?(si,cdi,!m:(m),s′i)∈Ti∧ ?(sj,cdj,?m:(m),s′j)∈Tj∧(m)=(m)=d∧(cdi∧cdj≠F):?k∈{1,…,N}:(k≠i,j?s′k=sk)。
判定N個(gè)服務(wù)是否相容的步驟:①首先根據(jù)定義5的計(jì)算方法,自動(dòng)生成這N個(gè)服務(wù)的SBA模型的組合模型CBA;②利用定義3中有關(guān)死鎖狀態(tài)的形式化定義,自動(dòng)判斷該CBA模型是否存在死鎖狀態(tài)。若不存在死鎖狀態(tài),則表明這N個(gè)服務(wù)之間是相容的,因此可以直接進(jìn)行組合;若存在死鎖狀態(tài),則意味著這N個(gè)服務(wù)在簽名層或行為層不相容,需要生成適配器消除服務(wù)之間的不相容,使得服務(wù)組合能夠正確執(zhí)行。
已有服務(wù)適配方法大多針對(duì)只有兩個(gè)服務(wù)參與組合的情形,未考慮多個(gè)服務(wù)參與組合的復(fù)雜交互場(chǎng)景[7-12],且文獻(xiàn)[7-10]僅僅針對(duì)的是簽名層(或行為層)上的適配問題。比如文獻(xiàn)[7-8]只關(guān)注兩個(gè)服務(wù)之間在簽名層上的適配,該方法只適合于簡(jiǎn)單的無狀態(tài)服務(wù),而在實(shí)際應(yīng)用中,絕大多數(shù)服務(wù)是具有行為信息的有狀態(tài)服務(wù)。文獻(xiàn)[9-10]研究的是兩個(gè)服務(wù)之間行為層的適配問題,適配器僅通過消息交互的外部動(dòng)作來消除服務(wù)之間的失配,未考慮適配器的有關(guān)消息處理的內(nèi)部動(dòng)作,因此不能處理簽名層上的失配。
此外,文獻(xiàn)[11-12]中適配器的生成方法是半自動(dòng)化的。在文獻(xiàn)[11]中,開發(fā)者需要根據(jù)兩個(gè)服務(wù)之間不相容的情況,人工識(shí)別并組合適配模板以生成相應(yīng)的適配器。文獻(xiàn)[12]在適配器的生成過程中需要開發(fā)者選擇消解失配的方式并提供相應(yīng)的消息構(gòu)造信息。以上服務(wù)適配方法[7-12]均沒有涉及如何對(duì)得到的適配器模型中BPEL代碼不能實(shí)現(xiàn)的部分進(jìn)行約簡(jiǎn),從而不能直接從適配器模型映射生成實(shí)際的適配器BPEL代碼。
由于SBA模型同時(shí)刻畫了服務(wù)的簽名信息和行為信息,因此,本文將基于SBA模型提出一種面向多服務(wù)交互的適配器自動(dòng)生成方法。首先引入多個(gè)服務(wù)之間的消息映射概念,給出具有消息處理的內(nèi)部動(dòng)作和消息交互的外部動(dòng)作的適配器模型的語(yǔ)法和操作語(yǔ)義,使得適配器可以同時(shí)處理多個(gè)服務(wù)之間簽名層和行為層的失配情況。在此基礎(chǔ)上給出適配器模型的自動(dòng)生成算法,討論如何對(duì)得到的適配器模型進(jìn)行約簡(jiǎn)的方法以支持實(shí)際BPEL代碼的自動(dòng)映射。
服務(wù)之間的消息映射是一組消息轉(zhuǎn)換規(guī)則,即某個(gè)服務(wù)所需要接收的消息如何通過其他服務(wù)的發(fā)送消息來構(gòu)造。消息映射表明了消息之間的語(yǔ)義依賴關(guān)系,可以利用語(yǔ)義Web和本體論的相關(guān)知識(shí)構(gòu)造服務(wù)之間的消息映射[14]。由于本文主要關(guān)注的是服務(wù)適配方法本身,即如何根據(jù)給定的服務(wù)的SBA模型和服務(wù)之間的消息映射M生成相應(yīng)的適配器,因此假定消息映射M已經(jīng)由開發(fā)者給出。
文獻(xiàn)[16]研究的是組件之間的適配問題,利用同步矢量作為適配契約并根據(jù)各個(gè)組件的接口描述自動(dòng)生成適配器來消除組件之間的失配。但由于同步矢量只能表達(dá)兩個(gè)消息之間的匹配關(guān)系(是一種特殊的映射關(guān)系),該方法不能處理消息分裂/合并失配等情況。而本節(jié)中引入的多個(gè)服務(wù)之間的消息映射概念不僅給出了涉及多個(gè)消息之間的映射關(guān)系,并且指明適配器如何對(duì)接收到的多個(gè)消息進(jìn)行處理以生成另一服務(wù)需要的消息的方法,因此可以處理服務(wù)之間更多的、更復(fù)雜的失配情況。
適配器本質(zhì)上是服務(wù)組合的編制器(Orchestrator),服務(wù)之間所有交互的消息必須通過適配器進(jìn)行轉(zhuǎn)發(fā)。為了描述適配器與服務(wù)之間的交互情況,需要將適配器的發(fā)送/接收動(dòng)作與具體的服務(wù)相關(guān)聯(lián),即對(duì)發(fā)送/接收動(dòng)作進(jìn)行標(biāo)記。
其中,標(biāo)記動(dòng)作?m(i):d表示適配器接收從第i個(gè)服務(wù)發(fā)送的類型為d的消息m,標(biāo)記動(dòng)作!m(j):d表示適配器發(fā)送類型為d的消息m至第j個(gè)服務(wù),i,j∈{1,…,N}。
定義9 適配器模型(Adaptor model),簡(jiǎn)稱AM。N個(gè)服務(wù)的SBA模型SBAi=(Si,,F(xiàn)i,,,CDi,Ai,Ti),i={1,…,N},它們的適配器模型AM可形式化定義為一個(gè)擴(kuò)展的FA模型AM=(S,s0,F(xiàn),AO,AI,T),其中:S表示適配器的狀態(tài)集合,S=S1×…×SN×δ,s0表示適配器的初始狀態(tài),s0=(,…,,?),F(xiàn)表示適配器的正常終止?fàn)顟B(tài)集合,F(xiàn)?F1×…×FN×δF,AO表示適配器的外部動(dòng)作集合,AI表示適配器的內(nèi)部動(dòng)作集合,AI?MT1∪…∪MTN,T表示遷移關(guān)系,T?S×((CD×AO)∪AI)×S。
適配器的動(dòng)作分為外部動(dòng)作和內(nèi)部動(dòng)作,外部動(dòng)作a∈AO是指適配器從某一服務(wù)接收消息或發(fā)送消息至某一服務(wù)。內(nèi)部動(dòng)作a∈AI為服務(wù)之間的消息映射M中某一消息映射規(guī)則mt,表示適配器根據(jù)該消息映射規(guī)則對(duì)接收到的消息進(jìn)行相應(yīng)的內(nèi)部處理。
定義10 AM模型的操作語(yǔ)義。AM模型的操作語(yǔ)義被描述為遷移系統(tǒng)(S,s0,→),遷移關(guān)系→定義如下:
發(fā)送消息:
接收消息:
內(nèi)部處理:
若給定N個(gè)服務(wù)的SBA模型和服務(wù)之間的消息映射M,按照算法1可以得到相應(yīng)的AM模型。
根據(jù)算法1得到的AM模型不是最終的AM模型,需要對(duì)其進(jìn)行約簡(jiǎn),去除模型中BPEL不能實(shí)現(xiàn)的部分,如不確定行為的部分、不可達(dá)的部分和死鎖部分,約簡(jiǎn)后的AM模型可以自動(dòng)映射生成適配器的BPEL代碼。
定義11 不確定狀態(tài)。AM=(S,s0,F(xiàn),AO,AI,T),狀態(tài)s∈S,若狀態(tài)s不符合以下幾種情況之一,則稱狀態(tài)s為不確定狀態(tài)。①?gòu)臓顟B(tài)s出發(fā)的遷移數(shù)目等于1;②從狀態(tài)s出發(fā)的接收遷移數(shù)目大于等于2,發(fā)送遷移數(shù)目等于0,這些接收遷移均為有條件約束的遷移,且遷移上的條件兩兩之間互不相交,即?i,j∈{1,…,K},cdi∧cdj=F,K為從狀態(tài)s出發(fā)的接收遷移數(shù)目;③從狀態(tài)s出發(fā)的接收遷移數(shù)目和發(fā)送遷移數(shù)目均大于等于1,這些遷移均為有條件約束的遷移,且遷移上的條件兩兩之間互不相交,即?i,j∈{1,…,K},cdi∧cdj=F,K為從狀態(tài)s出發(fā)的遷移數(shù)目。
在不確定狀態(tài)s下如何選擇某一遷移進(jìn)行觸發(fā)是不確定的,需要對(duì)該狀態(tài)下多個(gè)沖突的遷移進(jìn)行去除,使得該狀態(tài)下遷移的觸發(fā)是確定的。
約簡(jiǎn)規(guī)則1(狀態(tài)確定化)。對(duì)于AM模型中的所有不確定狀態(tài)s,逐步去除從狀態(tài)s出發(fā)的某個(gè)遷移,直到狀態(tài)s符合定義11給出的三種情況之一。
對(duì)AM模型應(yīng)用約簡(jiǎn)規(guī)則1后的模型中可能存在不可達(dá)狀態(tài),因此需要引入約簡(jiǎn)規(guī)則2去除AM模型中的不可達(dá)狀態(tài)。
定義12 不可達(dá)狀態(tài)。AM=(S,s0,F(xiàn),AO,AI,T)狀態(tài)s∈S是不可達(dá)狀態(tài),當(dāng)且僅當(dāng)不存在從初始狀態(tài)s0到狀態(tài)s的跡,即tr(s0,s)=?。
約簡(jiǎn)規(guī)則2(去除不可達(dá)狀態(tài))。在AM模型中去除所有不可達(dá)狀態(tài)s以及從該狀態(tài)s出發(fā)或到達(dá)該狀態(tài)s的遷移。
若AM模型存在死鎖狀態(tài),則表明對(duì)于給定的N個(gè)服務(wù),它們之間存在某些交互情況下的失配是不能通過適配器進(jìn)行消解的,因此,在利用約簡(jiǎn)規(guī)則1和約簡(jiǎn)規(guī)則2去除模型中具有不確定行為的部分、不可達(dá)的部分之后,若AM模型中存在死鎖狀態(tài),則需要利用約簡(jiǎn)規(guī)則3去除AM模型中的死鎖狀態(tài)以得到最終的AM模型。
約簡(jiǎn)規(guī)則3(去除死鎖狀態(tài))。在AM模型中去除所有死鎖狀態(tài)以及從該狀態(tài)s出發(fā)或到達(dá)該狀態(tài)s的遷移。
利用本節(jié)的約簡(jiǎn)規(guī)則1、2、3對(duì)AM模型中BPEL不能實(shí)現(xiàn)的部分進(jìn)行約簡(jiǎn),使得約簡(jiǎn)后的AM模型可以直接映射生成適配器的BPEL代碼,用于在實(shí)際的BPEL執(zhí)行引擎上運(yùn)行。
本節(jié)以一個(gè)網(wǎng)上醫(yī)院的應(yīng)用為例來說明本文方法的可行性,該應(yīng)用包括Client服務(wù)、Specialist服務(wù)和Doctor服務(wù),它們的SBA模型見圖1,其中:
(1)Client服務(wù)通過發(fā)送用戶名(!mUN)和門診名稱(!mDN)進(jìn)行登記,然后選擇預(yù)約專家(!mRS)或門診掛號(hào)(!mRD)。若選擇預(yù)約專家,則將收到相應(yīng)門診的專家信息(?mSL)或收到該門診暫無專家的提示(?mNS),若暫無專家,則流程結(jié)束,若有專家可以預(yù)約,則Client發(fā)送預(yù)約信息(!mRSI),并收到是否預(yù)約成功的提示(?mV或?mIV),若預(yù)約成功,則流程結(jié)束,若預(yù)約失敗,則可以重新預(yù)約(!mRS)或退出預(yù)約流程(!mEX)。若Client選擇門診掛號(hào),則將收到掛號(hào)信息(?mRLD),Client可以選擇接受或取消此次掛號(hào)(!mOP),若取消掛號(hào)(mOP=0),則收到掛號(hào)已取消的提示信息(?mCC),Client將選擇重新掛號(hào)(!mRD)或退出流程(!mEX),若接受此次掛號(hào)(mOP=1),則將收到掛號(hào)成功的提示后(?mDS)結(jié)束掛號(hào)流程。
(2)Specialist服務(wù)首先接收預(yù)約專家的請(qǐng)求(?mRS),然后接收Client的登記信息(?mRI),根據(jù)登記信息中的門診信息,選擇發(fā)送相應(yīng)門診的專家信息(!mSL)或給出該門診暫無專家的提示(!mNS),若暫無專家,則流程結(jié)束,若有專家可以預(yù)約,則發(fā)送專家信息,隨后接收Client選定的專家姓名(?mSN)和預(yù)約時(shí)間(?mRT),并判斷Client的預(yù)約是否有效,若有效,則發(fā)送預(yù)約成功提示(!mV)并等待Client的確認(rèn)消息(?mCF),若無效,則給出預(yù)約無效的提示(!mIV),等待Client的再次請(qǐng)求(?mRS)或退出預(yù)約流程(?mEX)。
(3)Doctor服務(wù)首先接收Client的用戶名(?mUN)和門診名稱(?mDN),然后接收門診掛號(hào)的請(qǐng)求(?mRD),將生成的掛號(hào)信息發(fā)送至Client(!mRLD)并等待Client接受或取消此次掛號(hào)(?mCO),若Client接受此次掛號(hào)(mCO=1),則給出掛號(hào)成功的提示信息(!mDS),隨后接收來自Client的付款信息(?mPM)并結(jié)束流程,若Client取消掛號(hào)(mCO=0),則發(fā)送掛號(hào)已取消的提示信息(!mCC)并結(jié)束流程。
圖1 網(wǎng)上醫(yī)院實(shí)例中三個(gè)服務(wù)的SBA模型Fig.1 SBA models for three services composing the online hospital example
Client服務(wù)、Specialist服務(wù)和Doctor服務(wù)之間存在如下消息映射M=MTSpecialist∪MTDoctor∪MTClient:
圖2 應(yīng)用約簡(jiǎn)規(guī)則1前后的AM模型片段Fig.2 The AM model fragments before and after applying reduction rule 1
根據(jù)第2節(jié)提出的相容性分析方法判斷出這三個(gè)服務(wù)之間是不相容的,即這三個(gè)服務(wù)之間發(fā)生了簽名層失配,比如消息合并失配(Client服務(wù)發(fā)送消息mUN和消息mDN進(jìn)行登記而Specialist服務(wù)通過消息mRI接收Client的登記信息)等失配和行為層失配,比如未指定接收適配(Client服務(wù)先發(fā)送消息mUN和消息mDN進(jìn)行登記,再發(fā)送消息mRS選擇預(yù)約專家;Specialist服務(wù)先通過接收消息mRS接受預(yù)約,再通過消息mRI接收Client的登記信息)等失配,因此需要生成適配器以消除這些簽名層和行為層的失配。
根據(jù)以上三個(gè)服務(wù)的SBA模型和消息映射M,利用3.2節(jié)的算法1得到的適配器AM模型中包含不確定狀態(tài),圖2(a)(b)分別為本節(jié)實(shí)例按照算法1生成的AM模型中含有不確定狀態(tài)的約簡(jiǎn)前后模型片段的結(jié)果。
對(duì)AM模型應(yīng)用約簡(jiǎn)規(guī)則1-2后得到Specialist服務(wù)、Client服務(wù)和Doctor服務(wù)的適配器的AM模型如圖3。其中,圖3中的標(biāo)記s,c,d分別表示Specialist服務(wù)、Client服務(wù)和Doctor服務(wù)。AM模型通過對(duì)服務(wù)之間的消息進(jìn)行緩存、消息合并(應(yīng)用消息轉(zhuǎn)換規(guī)則mt1Specialist)、提?。☉?yīng)用消息轉(zhuǎn)換規(guī)則mt3pecialist和mt4pecialist)、轉(zhuǎn)換消息類型(應(yīng)用消息轉(zhuǎn)換規(guī)則mtclient)、生成消息(應(yīng)用消息轉(zhuǎn)換規(guī)則mt2specialist)等消除了三個(gè)服務(wù)之間上述簽名層和行為層失配。其中,mt Nw表示集合MTw的第N個(gè)消息轉(zhuǎn)換規(guī)則。
圖3中的AM模型存在死鎖狀態(tài)(灰色狀態(tài)顯示)表示Client服務(wù)和Doctor服務(wù)的交互過程中發(fā)生了不可消解的失配(Doctor服務(wù)在通過消息mDS發(fā)送掛號(hào)成功的提示信息后將通過消息mPM接收Client服務(wù)的付款信息,而Client服務(wù)無相應(yīng)的付款消息發(fā)送,且根據(jù)消息映射M可知消息mPM不能由適配器自動(dòng)生成)。因此,需要利用約簡(jiǎn)規(guī)則3去除AM模型中的死鎖狀態(tài)(需去除虛線顯示的兩個(gè)狀態(tài))以得到最終的無死鎖狀態(tài)的AM模型。
圖3 網(wǎng)上醫(yī)院實(shí)例的最終適配器模型Fig.3 The final AM model for the online hospital example
本文首先提出了SBA模型以形式化描述服務(wù)的簽名和行為信息,并基于SBA模型給出了多個(gè)服務(wù)之間相容性的分析方法。對(duì)于不相容的情況,則給出了自動(dòng)生成適配器模型以及對(duì)得到的適配器模型進(jìn)行約簡(jiǎn)的方法。通過一個(gè)實(shí)例分析說明本文所提方法的可行性。與已有服務(wù)適配方法相比,該方法針對(duì)的是多個(gè)服務(wù)交互的復(fù)雜場(chǎng)景,通過該方法生成的適配器可以消除多個(gè)服務(wù)之間在簽名層和行為層上的不相容,以支持服務(wù)組合的正確執(zhí)行。此外,通過對(duì)適配器模型進(jìn)行約簡(jiǎn)以去除BPEL不能執(zhí)行的部分,使得約簡(jiǎn)后的適配器模型可以直接映射生成適配器BPEL代碼。
[1]朱勇,羅軍舟,李偉.一種工作流環(huán)境下能耗感知的多路徑服務(wù)組合方法[J].計(jì)算機(jī)學(xué)報(bào),2012,35(3):627-638.
Zhu Yong,Luo Jun-zhou,Li Wei.An approach for energy aware multipath service composition based on workflow[J].Chinese Journal of Computers,2012,35(3):627-638.
[2]龍軍,劉昕民,袁鑫攀,等.一種基于信任推理與演化的Web服務(wù)組合策略[J].計(jì)算機(jī)學(xué)報(bào),2012,35(2):298-314.
Long Jun,Liu Xin-min,Yuan Xin-pan,et al.A web services composition strategy based on trust reasoning and evolution[J].Chinese Journal of Computers,2012,35(2):298-314.
[3]肖芳雄,李燕,黃志球,等.基于時(shí)間概率代價(jià)進(jìn)程代數(shù)的Web服務(wù)組合建模和分析[J].計(jì)算機(jī)學(xué)報(bào),2012,35(5):918-936.
Xiao Fang-xiong,Li Yan,Huang Zhi-qiu,et al. Modeling and analyzing web services composition using timed probabilistic priced process slgebra[J]. Chinese Journal of Computers,2012,35(5):918-936.
[4]Li Gang,Han Yan-bo,Wang Jing,et al.Facilitating dynamic service compositions by adaptable service connectors[J].International Journal of Web Services Research,2006,3(1):68-84.
[5]Dumas M,Benatallah B,Nezhad H R M.Web service protocols:Compatibility and adaptation[J]. IEEE Data Engineering Bulletin,2008,31(3):40-44.
[6]張廣泉,戎玫,王昇.時(shí)間感知Web服務(wù)交互行為建模與失配檢測(cè)方法研究[J].電子學(xué)報(bào),2011,39(11):2568-2575.
Zhang Guang-quan,Rong Mei,Wang Sheng.Research on interaction modeling and mismatch checking of time-aware web services[J].Acta Electronica Sinica,2011,39(11):2568-2575.
[7]Ponnekanti S,F(xiàn)ox A.Interoperability among independently evolving web services[C]∥Proc of the 5th International Middleware Conference.LNCS 3231,Berlin:Springer-Verlag,2004:331-351.
[8]Fuchs M.Adapting web services in a heterogeneous environment[C]∥Proc of the 2th IEEE International Conference on Web Services(ICWS 2004). Washington DC:IEEE Computer Society,2004:656-664.
[9]Brogi A,Popescu R.Automated generation of BPEL adapters[C]∥Proc of the 4th International Conference on Service-Oriented Computing(ICSOC 2006).LNCS 4294,Berlin:Springer-Verlag, 2006:27-39.
[10]Seguel R,Eshuis R,Grefen P.Generating minimal protocol adaptors for loosely coupled services[C]∥Proc of the 8th IEEE International Conference on Web Services(ICWS 2008).Washington DC:IEEE Computer Society,2010:417-424.
[11]Benatallah B,Casati F,Grigori D,et al.Developing adapters for web services integration[C]∥Proc of the International Conference on Advanced Information Systems Engineering(CAiSE 2005).Berlin:Springer-Verlag,2005:415-429.
[12]Nezhad H R M,Benatallah B,Martens A,et al. Semi-automated adaptation of service interactions[C]∥Proc of the 16th International Conference on World Wide Web.New York:ACM 2007:993-1002.
[13]Bordeaux L,Salaün G,Berardi D,et al.When are two web services compatible?[C]∥Proc of the TES.Berlin:Springer,2004:15-28.
[14]Van der Aalst WMP,Mooij A J,Stahl C,et al. Service interaction:Patterns,formalization,and analysis[C]∥Proc of the 9th International School on Formal Methods for the Design of Computer,Communication,and Software Systems(SFM 2009). LNCS 5569,Berlin:Springer,2009:42-88.
[15]Zhou Z,Bhiri S,Gaaloul W,et al.Developing process mediator for supporting mediated web service interactions[C]∥Proc of the 6th IEEE European Conference on Web Services(ECOWS 2008). Washington,DC:IEEE Computer Society 2008:155-164.
[16]Carlos Canal,Pascal Poizat,Gwen Salaün.Model-Based adaptation of behavioral mismatching components[J].IEEE Transaction on Software Engineering,2008,34(4):546-563.