專利名稱:文法制導(dǎo)的Web服務(wù)自動(dòng)組合技術(shù)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明主要涉及Web服務(wù)領(lǐng)域,尤其是指一種文法制導(dǎo)的Web服務(wù)自動(dòng) 組合技術(shù)。
背景技術(shù):
隨著Web服務(wù)技術(shù)的日益成熟,越來(lái)越多的穩(wěn)定易用Web服務(wù)共享在網(wǎng) 絡(luò)上。但單個(gè)的Web服務(wù)能夠提供的功能有限,為了更加充分地利用共享的 Web服務(wù),有必要將共享的Web服務(wù)組合起來(lái),提供更為強(qiáng)大的服務(wù)功能, 加快系統(tǒng)開(kāi)發(fā)的速度,快速滿足用戶需求。因此,如何有效的組合分布在網(wǎng)絡(luò) 中的各種功能不同的服務(wù),實(shí)現(xiàn)服務(wù)之間的集成,形成功能強(qiáng)大的企業(yè)級(jí)流程 服務(wù)以完成企業(yè)的商業(yè)目標(biāo),已經(jīng)成為Web服務(wù)發(fā)展過(guò)程中的一個(gè)重要步驟。 Web服務(wù)組合的研究正是在這種背景下被提出來(lái)。
當(dāng)前的Web服務(wù)組合方法主要分為兩大類業(yè)務(wù)流程驅(qū)動(dòng)的服務(wù)組合方法 和即時(shí)任務(wù)求解的服務(wù)組合方法。前者主要以流程管理技術(shù)如工作流技術(shù)為基 礎(chǔ);后者主要以人工智能理論,如邏輯推理、任務(wù)規(guī)劃、定理證明等為基礎(chǔ)。 但這兩類方法均存在局限性l)對(duì)于業(yè)務(wù)流程驅(qū)動(dòng)的服務(wù)組合方法而言,目前 大多數(shù)的工作均基于固定的業(yè)務(wù)流程模型進(jìn)行服務(wù)組合,盡管通過(guò)引入服務(wù)動(dòng) 態(tài)綁定、服務(wù)模板、服務(wù)社區(qū)等概念提高服務(wù)組合的動(dòng)態(tài)性,但是這些方法均 無(wú)法處理柔性多變的業(yè)務(wù)流程,這種流程在建模階段往往無(wú)法確定流程的具體 內(nèi)容,如流程中存在局部子流程是根據(jù)流程實(shí)例信息重新組織和建立。此時(shí), 當(dāng)前基于固定流程的服務(wù)組合方法難以滿足這種業(yè)務(wù)流程的需要;2)對(duì)于即時(shí) 任務(wù)求解的服務(wù)組合方法而言,由于這些方法大多基于人工智能中的理論和形 式化方法,這就要求對(duì)服務(wù)和任務(wù)進(jìn)行預(yù)處理和形式化轉(zhuǎn)換,方法的復(fù)雜度較 高, 一旦服務(wù)組合所涉及的服務(wù)集合變得非常龐大時(shí),服務(wù)組合的搜索過(guò)程和 推理過(guò)程將變得極其困難,速度很緩慢,無(wú)法取得用戶滿意的響應(yīng)時(shí)間。此外, 由于這類方法自動(dòng)化程度較高,因此服務(wù)組合形成的組合服務(wù)在正確性和可用性方面需要進(jìn)一步檢驗(yàn)。
在編譯技術(shù)中,文法分析的主要目的是識(shí)別輸入序列是否符合特定的文法 規(guī)則。目前主要的文法分析算法有自頂向下和自底向上兩類。這些文法分析算 法一般都使用一個(gè)顯示的棧來(lái)完成分析。在文法分析算法實(shí)施過(guò)程中首先在棧 的底部放一個(gè)$符號(hào)來(lái)標(biāo)注桟底,然后將一個(gè)文法中的非終結(jié)符放入棧頂。在文
法分析的過(guò)程中,通過(guò)將棧頂部的非終結(jié)符替換成文法規(guī)則中(BNF中)該 非終結(jié)符的一個(gè)選擇來(lái)作出分析。其方法是在分析棧的頂部生成當(dāng)前輸入記號(hào), 在頂部它已匹配了輸入記號(hào)并將它從棧和輸入中舍棄掉。這兩個(gè)動(dòng)作
1) 利用文法選擇A—a將棧頂部的非終結(jié)符A替換成串a(chǎn) (串a(chǎn)到序壓入 棧中)。
2) 將棧頂部的記號(hào)與下一個(gè)輸入記號(hào)匹配。
是自頂向下的分析程序中的兩個(gè)基本動(dòng)作。第l個(gè)動(dòng)作稱為生成(gene rate):通過(guò)寫(xiě)出在替換中使用的B N F選擇(它的左邊在當(dāng)前必須是棧頂部 的非終結(jié)符)來(lái)指出這個(gè)動(dòng)作。第2個(gè)動(dòng)作將棧頂部的一個(gè)記號(hào)與輸入中的下 一個(gè)記號(hào)匹配(并通過(guò)取出棧和將輸入向前推進(jìn)而將二者全部舍棄掉)。
發(fā)明內(nèi)容
為了解決現(xiàn)有的基于流程的Web服務(wù)組合技術(shù)自動(dòng)化程度低,缺乏應(yīng)變能 力;而基于人工智能理論實(shí)現(xiàn)的即時(shí)任務(wù)求解的Web服務(wù)組合方法復(fù)雜度高的 的缺陷,本發(fā)明提出了一種可以處理多變的業(yè)務(wù)流程,簡(jiǎn)單、快速的文法制導(dǎo) 的Web服務(wù)自動(dòng)組合技術(shù)。
一種基于文法分析算法的Web服務(wù)組合技術(shù),包括如下步驟
1) 建立文法規(guī)則庫(kù),在規(guī)則庫(kù)中將Web服務(wù)中的端口形式化為文法規(guī)
2) 將用戶的輸出放入棧中,同時(shí)將用戶的輸入放入列表中;
3) 根據(jù)文法規(guī)則和輸入隊(duì)列以及文法推導(dǎo)算法進(jìn)行推導(dǎo),同時(shí)記錄推 導(dǎo)的過(guò)程;4)推導(dǎo)結(jié)束時(shí),如果棧為空則組合成功,將推導(dǎo)過(guò)程到處即為要獲取 的服務(wù)組合;如果棧中還有輸入則服務(wù)組合失敗。 進(jìn)一步的,所述文法規(guī)則庫(kù)主要是以文法規(guī)則的形式保存Web服務(wù)。 更進(jìn)一步的,所述文法規(guī)則包括兩個(gè)屬性推導(dǎo)規(guī)則G和產(chǎn)生該規(guī)則的服 務(wù)及端口 WS。
進(jìn)一步的,所述文法推導(dǎo)算法包括生成和匹配兩個(gè)動(dòng)作。 下面對(duì)本發(fā)明做進(jìn)一步的描述
本發(fā)明主要是根據(jù)文法分析來(lái)進(jìn)行Web服務(wù)的自動(dòng)組合的。該項(xiàng)技術(shù)中將 Web服務(wù)形式化為文法規(guī)則;用戶要求的最終輸出對(duì)應(yīng)文法分析中的非終結(jié)符, 放入棧中;將用戶提供的輸入對(duì)應(yīng)文法分析中的終結(jié)符,放入輸入串中。那么 Web服務(wù)組合問(wèn)題就轉(zhuǎn)化為獲取一個(gè)由非終結(jié)符推導(dǎo)出終結(jié)符的推導(dǎo)過(guò)程的問(wèn) 題。但是這與文法分析稍有區(qū)別在文法分析中桟頂元素只能與輸入串的第一 個(gè)元素匹配,選擇文法規(guī)則也只和輸入串的第一個(gè)符號(hào)有關(guān)。在服務(wù)組合過(guò)程 中只要棧頂元素出現(xiàn)在輸入串中,就可以匹配,同時(shí)將該元素出棧。最后如果 ??梢詾榭?,則服務(wù)組合成功,否則表明輸入不能經(jīng)過(guò)特定的服務(wù)組合產(chǎn)生需 要的結(jié)果。
本發(fā)明利用文法規(guī)則和文法推導(dǎo),更加充分地利用共享的Web服務(wù),將 共享的Web服務(wù)組合起來(lái),提供更為強(qiáng)大的服務(wù)功能,加快系統(tǒng)開(kāi)發(fā)的速度, 快速滿足用戶需求。較之傳統(tǒng)的服務(wù)組合技術(shù),該技術(shù)具有自動(dòng)對(duì)服務(wù)進(jìn)行組 合的優(yōu)點(diǎn),用戶只需要關(guān)注服務(wù)庫(kù)的構(gòu)建,提出需求(輸出),系統(tǒng)即可得到正 確的服務(wù)組合。這大大簡(jiǎn)化了用戶開(kāi)發(fā)的成本。同時(shí),本發(fā)明基于成熟的文法 規(guī)則和文法推導(dǎo)技術(shù)之上,具有良好的可用性和可靠性。
圖1為文法規(guī)則庫(kù)中添加Web服務(wù)的流程圖
圖2為根據(jù)文法推導(dǎo)組合服務(wù)的流程圖
圖3推導(dǎo)過(guò)程中生成動(dòng)作各數(shù)據(jù)結(jié)構(gòu)變動(dòng)4推導(dǎo)過(guò)程中匹配動(dòng)作各數(shù)據(jù)結(jié)構(gòu)變動(dòng)圖
具體實(shí)施例方式
本發(fā)明中提出了一種基于文法分析算法的Web服務(wù)組合技術(shù)。具體包括兩 個(gè)部分文法規(guī)則庫(kù)和文法推導(dǎo)組件。
文法規(guī)則庫(kù)主要是以文法規(guī)則的形式保存Web服務(wù)。在規(guī)則庫(kù)中將Web服 務(wù)中的端口形式化為文法規(guī)則,文法規(guī)則主要包括兩個(gè)屬性推導(dǎo)規(guī)則G和產(chǎn) 生該規(guī)則的服務(wù)及端口 WS。
例如對(duì)于一個(gè)服務(wù)W的端口 P輸入為a ,輸出為p ,則對(duì)應(yīng)的文法規(guī)則A: A. G = P 二〉 a , A. WS=W. P。如果文法規(guī)則庫(kù)中已經(jīng)存在著文法規(guī)則B: a 二> Y , 則在添加規(guī)則A的同時(shí)添加規(guī)則C: P=〉Y, C,WS = A.WS田.WS (凍示連接)。 同時(shí)用戶可以添加自定義的語(yǔ)意規(guī)則來(lái)綁定特定的輸入端口和輸出端口。
文法規(guī)則庫(kù)建好以后就可以根據(jù)文法規(guī)則庫(kù)中的規(guī)則和用戶提供的輸入輸 出進(jìn)行服務(wù)自動(dòng)組合。該過(guò)程在文法分析算法的基礎(chǔ)上改進(jìn)來(lái)的,主要包括個(gè) 步驟
1、 將用戶的輸出放入棧中,同時(shí)將用戶的輸入放入列表中。
2、 根據(jù)文法規(guī)則和輸入隊(duì)列以及文法推導(dǎo)算法進(jìn)行推導(dǎo),同時(shí)記錄推導(dǎo)的 過(guò)程。
3、 推導(dǎo)結(jié)束時(shí),如果棧為空則組合成功,將推導(dǎo)過(guò)程到處即為要獲取的服 務(wù)組合。如果棧中還有輸入則服務(wù)組合失敗。
在文法推導(dǎo)過(guò)程中主要有兩個(gè)動(dòng)作
1、 生成利用規(guī)則庫(kù)中對(duì)應(yīng)的文法規(guī)則A.G: e=〉a將棧頂部的非終結(jié)符 e替換成串a(chǎn) (串a(chǎn)到序壓入棧中),同時(shí)記錄A.WS。
2、 匹配如果棧頂為終結(jié)符a,則搜索輸入列表,如果該列表中存在a, 則a出棧。
本發(fā)明通過(guò)構(gòu)建服務(wù)的文法規(guī)則庫(kù)作為實(shí)現(xiàn)該技術(shù)的基礎(chǔ)。維護(hù)文法規(guī)則 庫(kù)的主要工作是將Web服務(wù)轉(zhuǎn)化為文法規(guī)則并將文法規(guī)則添加到規(guī)則庫(kù)中。為Web服務(wù)創(chuàng)建文法規(guī)則并添加到規(guī)則庫(kù)的算法流程如圖1所示。 首先用戶提交要添加到文法規(guī)則庫(kù)的Web服務(wù)的WSDL文檔,程序讀入該文 檔,同時(shí)解析文檔中的內(nèi)容。根據(jù)解析的結(jié)果,為Web服務(wù)中的每個(gè)端口創(chuàng)建 相應(yīng)的文法規(guī)則,同時(shí)將文法規(guī)則添加到文法規(guī)則庫(kù)中。如果該端口的輸出對(duì) 應(yīng)規(guī)則庫(kù)中某個(gè)規(guī)則條目的輸入則添加附加規(guī)則到規(guī)則庫(kù)。添加所有規(guī)則結(jié)束 后,該流程結(jié)束。
Web服務(wù)自動(dòng)組合過(guò)程是該技術(shù)的核心模塊,該模塊的算法流程如圖2所 示。該過(guò)程如下
1、 將輸出符號(hào)列表壓入棧,將輸入符號(hào)列表存入列表中。
2、 判斷棧頂?shù)姆?hào)是不終結(jié)符。 2-1、不是終結(jié)符,進(jìn)行生成動(dòng)作。
2-2、是終結(jié)符則判斷列表中是否存在該終結(jié)符。
2-2-1如果存在進(jìn)行匹配動(dòng)作,檢査棧是否為空
2-2-1-1、空則組合成功。返回。
2-2-1-2、非空,重復(fù)2。
2-2-2、不存在則組合失敗。返回。
生成過(guò)程中各數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)變動(dòng)如圖3所示。該過(guò)程如下 首先根據(jù)棧頂元素和列表中的元素選擇規(guī)則庫(kù)中的規(guī)則。然后將棧頂元素
出棧,到序?qū)⑼茖?dǎo)規(guī)則右側(cè)的串壓入棧中。
生成過(guò)程中各數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)變動(dòng)如圖4所示。該過(guò)程如下 首先在列表中査找是否存在棧頂元素,如果存在棧頂元素出桟。不存在則
服務(wù)組合不成功,退出。
權(quán)利要求
1.一種基于文法分析算法的Web服務(wù)組合技術(shù),包括如下步驟1)建立文法規(guī)則庫(kù),在規(guī)則庫(kù)中將Web服務(wù)中的端口形式化為文法規(guī)則;2)將用戶的輸出放入棧中,同時(shí)將用戶的輸入放入列表中;3)根據(jù)文法規(guī)則和輸入隊(duì)列以及文法推導(dǎo)算法進(jìn)行推導(dǎo),同時(shí)記錄推導(dǎo)的過(guò)程;4)推導(dǎo)結(jié)束時(shí),如果棧為空則組合成功,將推導(dǎo)過(guò)程到處即為要獲取的服務(wù)組合;如果棧中還有輸入則服務(wù)組合失敗。
2. 根據(jù)權(quán)利要求1所述的基于文法分析算法的Web服務(wù)組合技術(shù),其特征在于: 所述文法規(guī)則庫(kù)主要是以文法規(guī)則的形式保存Web服務(wù)。
3. 根據(jù)權(quán)利要求2所述的基于文法分析算法的Web服務(wù)組合技術(shù),其特征在于: 所述文法規(guī)則包括兩個(gè)屬性推導(dǎo)規(guī)則G和產(chǎn)生該規(guī)則的服務(wù)及端口 WS。
4. 根據(jù)權(quán)利要求1所述的基于文法分析算法的Web服務(wù)組合技術(shù),其特征在于: 所述文法推導(dǎo)算法包括生成和匹配兩個(gè)動(dòng)作。
全文摘要
本發(fā)明主要涉及Web服務(wù)領(lǐng)域,尤其是指一種文法制導(dǎo)的Web服務(wù)自動(dòng)組合技術(shù)。一種基于文法分析算法的Web服務(wù)組合技術(shù),包括如下步驟1)建立文法規(guī)則庫(kù),在規(guī)則庫(kù)中將Web服務(wù)中的端口形式化為文法規(guī)則;2)將用戶的輸出放入棧中,同時(shí)將用戶的輸入放入列表中;3)根據(jù)文法規(guī)則和輸入隊(duì)列以及文法推導(dǎo)算法進(jìn)行推導(dǎo),同時(shí)記錄推導(dǎo)的過(guò)程;4)推導(dǎo)結(jié)束時(shí),如果棧為空則組合成功,將推導(dǎo)過(guò)程到處即為要獲取的服務(wù)組合;如果棧中還有輸入則服務(wù)組合失敗。本發(fā)明提供了更為強(qiáng)大的服務(wù)功能,加快系統(tǒng)開(kāi)發(fā)的速度,快速滿足用戶需求,而且簡(jiǎn)化了用戶開(kāi)發(fā)的成本。同時(shí),基于成熟的文法規(guī)則和文法推導(dǎo)技術(shù)之上,具有良好的可用性和可靠性。
文檔編號(hào)G06F17/30GK101309288SQ20081006226
公開(kāi)日2008年11月19日 申請(qǐng)日期2008年6月17日 優(yōu)先權(quán)日2008年6月17日
發(fā)明者健 吳, 吳朝暉, 尹建偉, 瑩 李, 王家忙, 鄧水光 申請(qǐng)人:浙江大學(xué)