專利名稱:一種流程式服務(wù)的注冊與發(fā)現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及web服務(wù)(Web Service)的注冊與發(fā)現(xiàn)技術(shù)領(lǐng)域,主要是一種流程式服務(wù)的 注冊與發(fā)現(xiàn)方法。
背景技術(shù):
web服務(wù)技術(shù)是為解決網(wǎng)絡(luò)應(yīng)用集成問題而提出來的,使得應(yīng)用程序可以用與平臺和編 程語言無關(guān)的方式進(jìn)行相互通信的一項技術(shù)。Web服務(wù)為實(shí)現(xiàn)"軟件作為服務(wù)"提供了技術(shù)保 障,它實(shí)質(zhì)上是一種通過在網(wǎng)絡(luò)上暴露可編程接口來共享軟件服務(wù)的機(jī)制。具體來說,它描 述了一組可以在網(wǎng)絡(luò)上通過標(biāo)準(zhǔn)化的可擴(kuò)展標(biāo)記語言消息傳遞訪問的操作,使用基于XML 語言的協(xié)議來描述所要執(zhí)行的操作或者所要與另一個Web服務(wù)交換的數(shù)據(jù)。Web服務(wù)的注冊 與發(fā)現(xiàn)是使用Web服務(wù)的前提。簡單地說,所謂Web服務(wù)的注冊是指服務(wù)提供者發(fā)布所能提 供的Web服務(wù)并將該服務(wù)登記到注冊中心,所謂服務(wù)發(fā)現(xiàn)是指注冊中心根據(jù)服務(wù)使用者的査 詢請求查找滿足條件的Web服務(wù)。
對Web服務(wù)的功能描述可以分為黑盒式描述和白盒式描述。前者把Web服務(wù)看成一個原 子的、不可分解的流程,也稱原子服務(wù),它對外暴露的只有它的輸入和輸出接口;后者把Web 服務(wù)看成是由一組原子操作構(gòu)成的、包含復(fù)雜業(yè)務(wù)邏輯流程的服務(wù),也稱流程式服務(wù),它對 外暴露的不僅是接口,還有消息的傳遞、狀態(tài)的轉(zhuǎn)移等一系列行為規(guī)則。
相應(yīng)地,對Web服務(wù)的功能性需求可以分為接口匹配需求和行為匹配需求。針對原子服 務(wù)的接口匹配需求,通常認(rèn)為一個服務(wù)能在接口上匹配一個請求(接口匹配-Interface/Signature Matching),當(dāng)且僅當(dāng)請求的所有輸出能被服務(wù)的輸出所滿足,并且服務(wù)的 所有輸入能被請求的輸入所滿足。而針對流程式服務(wù)能的行為匹配需求,通常認(rèn)為一個服務(wù) 能在行為上匹配一個請求(行為匹配Behavior/Protocol Matching),必須滿足①流程服務(wù) 包涵所有原子服務(wù)在功能上能夠涵蓋請求的所有子功能;②流程服務(wù)包涵的所有原子服務(wù)在 調(diào)用順序上不會違背服務(wù)請求需要的行為。
事實(shí)上,原子服務(wù)也是一種特殊的流程式服務(wù),它是只含有一個操作的流程,而針對原
子服務(wù)的接口匹配也是一種特殊的行為匹配,由于單一操作構(gòu)成的流程不存在操作間調(diào)用順 序上的問題,所以只需要考慮該原子操作的接口匹配問題。另一方面,行為匹配包含對流程 式服務(wù)中的原子服務(wù)的接口匹配,因此我們把服務(wù)統(tǒng)一為流程式服務(wù),把對服務(wù)的功能性需 求統(tǒng)一為行為匹配。
服務(wù)注冊中心作為Web服務(wù)信息的管理機(jī)構(gòu), 一方面負(fù)責(zé)接收服務(wù)提供者對于服務(wù)信息 的注冊,另一方面負(fù)責(zé)處理服務(wù)請求者的査詢請求并定位出滿足請求的服務(wù)列表。然而目前 的服務(wù)注冊,通常只是搜集服務(wù)提供者信息、服務(wù)名稱和服務(wù)接口、流程描述文檔等信息, 卻沒有對注冊中心的所有服務(wù)信息做任何形式的處理和優(yōu)化管理;而服務(wù)發(fā)現(xiàn)通常是通過順 序掃描服務(wù)庫中所有注冊服務(wù)的方式來實(shí)現(xiàn)的,即順序査找。當(dāng)執(zhí)行服務(wù)查詢時,所有注冊 服務(wù)逐一地與服務(wù)請求進(jìn)行行為上的匹配比較。這種方法相對直觀、容易實(shí)現(xiàn),但是當(dāng)服務(wù) 庫中的服務(wù)數(shù)量達(dá)到一定數(shù)量級別的時候,這種方法的效率就會成為制約算法性能的瓶頸問 題。可以看出,該服務(wù)發(fā)現(xiàn)方法沒有合理地管理利用服務(wù)注冊信息,很多時間浪費(fèi)在匹配比 較一些毫不相關(guān)的服務(wù)上,效率低下。
倒排索引是一種面向單詞的索引機(jī)制,它源于實(shí)際應(yīng)用中需要根據(jù)屬性的值來查找記錄, 利用它可以提高檢索時的速度。通常情況下,這種索引表中的每一項都包括一個屬性值和具 有該屬性值的各記錄的地址。由于不是由記錄來確定屬性值,而是由屬性值來確定記錄的位 置,因而稱為倒排索弓l(invertedindex)。正常的索引結(jié)構(gòu)建立的是文檔到單詞的映射關(guān)系,倒 排索引結(jié)構(gòu)建立的是單詞到文檔的映射關(guān)系。由于服務(wù)匹配通常從檢查服務(wù)是否滿足輸出上 的要求開始,倒排索引能夠快速定位候選服務(wù),從而更好地適應(yīng)這種發(fā)現(xiàn)機(jī)制。
發(fā)明內(nèi)容
本發(fā)明要解決上述技術(shù)所存在的缺陷,提供一種流程式服務(wù)的注冊與發(fā)現(xiàn)方法。這種基 于倒排索引的Web服務(wù)注冊與發(fā)現(xiàn)方法,其目的在于合理地優(yōu)化管理流程式服務(wù)注冊信息, 對其建立倒排索引,并有效地利用該索引提高流程式服務(wù)發(fā)現(xiàn)的效率。
本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案本發(fā)明提供了一種基于倒排索引的流程式服 務(wù)注冊與發(fā)現(xiàn)方法,在接收到來自服務(wù)提供者提交的Web服務(wù)注冊請求時,將該注冊請求中 的服務(wù)信息在服務(wù)注冊中心進(jìn)行常規(guī)注冊;在Web服務(wù)注冊成功后,解析該注冊服務(wù)的接口、 流程描述文檔,提取出流程ID、流程包含的原子操作、原子操作包含的輸入/輸出消息等信息, 建立消息到操作和操作到流程的倒排索引;在接收到來自服務(wù)請求者提交的査詢請求時,服
務(wù)注冊中心將該請求分解成消息索引、操作索引查詢請求發(fā)送給索引信息中心,在接收到來 自索引信息中心返回的分解索引査詢結(jié)果之后,對索引查詢結(jié)果做合并處理,根據(jù)消息到操 作的索引信息,快速確定需要包含的原子操作,再根據(jù)操作到流程的索引信息,快速定位包 含這些原子操作并滿足操作間調(diào)用順序的流程式服務(wù),將篩選出的滿足請求的流程式服務(wù)的 列表返回給用戶。
本發(fā)明有益的效果是首先,本發(fā)明將所有的服務(wù)表示為流程式服務(wù),將服務(wù)匹配規(guī)則 定為行為匹配,在服務(wù)注冊中心注冊更詳細(xì)的服務(wù)信息,使用更精確的需求匹配規(guī)則,能夠 滿足更復(fù)雜的用戶請求。其次,本發(fā)明針對服務(wù)注冊中心的流程式服務(wù)信息進(jìn)行了優(yōu)化管理, 對所有信息建立了從消息到操作和從操作到服務(wù)的倒排索引,并有效地利用了該索引提高流 程式服務(wù)發(fā)現(xiàn)的效率。再次,由于web服務(wù)索引信息的建立和更新等操作都是在索引信息中 心中實(shí)現(xiàn),索引信息中心是可插拔、可擴(kuò)展的,可以按照實(shí)際情況建立不同的索引對服務(wù)庫 進(jìn)行査詢優(yōu)化。
圖1為根據(jù)本發(fā)明實(shí)施例的基于倒排索引的Web服務(wù)注冊與發(fā)現(xiàn)系統(tǒng)的結(jié)構(gòu)示意圖; 圖2為根據(jù)本發(fā)明實(shí)施例的Web服務(wù)注冊的流程示意圖; 圖3為根據(jù)本發(fā)明實(shí)施例的Web服務(wù)發(fā)現(xiàn)的流程示意圖; 圖4為一個售貨服務(wù)的接口、流程描述示意圖。
具體實(shí)施例方式
下面結(jié)合附圖和實(shí)施例對本發(fā)明作進(jìn)一步介紹
本發(fā)明提供了一種基于倒排索引的流程式服務(wù)注冊與發(fā)現(xiàn)方法,包括在接收到來自服
務(wù)提供者提交的Web服務(wù)注冊請求時,將該注冊請求中的服務(wù)信息在服務(wù)注冊中心進(jìn)行常規(guī) 注冊;在Web服務(wù)注冊成功后,解析該注冊服務(wù)的接口、流程描述文檔,提取出流程ID、流 程包含的原子操作、原子操作包含的輸入/輸出消息等信息,建立消息到操作和操作到流程的 倒排索引;在接收到來自服務(wù)請求者提交的査詢請求時,服務(wù)注冊中心將該請求分解成消息 索引、操作索引査詢請求發(fā)送給索引信息中心,在接收到來自索引信息中心返回的分解索引 査詢結(jié)果之后,對索引査詢結(jié)果做合并處理,根據(jù)消息到操作的索引信息,快速確定需要包 含的原子操作,再根據(jù)操作到流程的索引信息,快速定位包含這些原子操作并滿足操作間調(diào) 用順序的流程式服務(wù),將篩選出的滿足請求的流程式服務(wù)的列表返回給用戶。
本發(fā)明提供了一種基于倒排索引的流程式服務(wù)注冊與發(fā)現(xiàn)系統(tǒng),包括服務(wù)注冊中心和 索引信息中心。
服務(wù)注冊中心進(jìn)一步包括服務(wù)注冊模塊和服務(wù)發(fā)現(xiàn)模塊。服務(wù)注冊模塊,用于在接收到 來自服務(wù)提供者提交的Web服務(wù)注冊請求時,進(jìn)行Web服務(wù)常規(guī)注冊,登記服務(wù)提供者信息、 服務(wù)名稱和服務(wù)接口、流程描述文檔等信息,返回注冊成功后該Web服務(wù)的標(biāo)識符ID,在 Web服務(wù)注冊成功后,將服務(wù)注冊信息傳遞給索引信息中心,通知索引信息中心更新倒排索 引;服務(wù)發(fā)現(xiàn)模塊用于在接收到來自服務(wù)請求者提交的査詢請求時,將該請求分解成消息索 弓l、操作索引查詢請求發(fā)送給索引信息中心,在接收到來自索引信息中心返回的分解索引査 詢結(jié)果之后,對索引査詢結(jié)果做合并處理,根據(jù)消息到操作的索引信息,快速確定需要包含 的原子操作,再根據(jù)操作到流程的索引信息,快速定位包含這些原子操作并滿足操作間調(diào)用 順序的流程式服務(wù),將篩選出的滿足請求的流程式服務(wù)的列表返回給用戶。
索引信息中心進(jìn)一步包括索引更新模塊和索引査詢模塊。索引更新模塊,用于在接收到 來自服務(wù)注冊中心的索引更新通知時,解析該注冊服務(wù)的接口、流程描述文檔,提取出流程 ID、流程包含的原子操作、原子操作包含的輸入/輸出消息等信息,建立消息到操作和操作到 流程的倒排索引;索引査詢模塊,用于在接收到來自服務(wù)注冊中心的索引査詢請求時,查詢 消息到操作和操作到流程的倒排索引信息,將分解查詢結(jié)果返回給服務(wù)注冊中心的服務(wù)發(fā)現(xiàn) 模塊做進(jìn)一步處理。
索引更新模塊中,消息到操作的索引信息由兩部分組成操作的輸出消息作為鍵,服務(wù) 注冊中心所有能產(chǎn)生該輸出的操作(服務(wù))列表作為鍵值;操作到流程服務(wù)的索引信息也由 兩部分組成具有特定功能的操作作為鍵,服務(wù)注冊中心所有包含該操作的流程式服務(wù)作為 鍵值,鍵值中的每個元素由<流程式服務(wù)標(biāo)識,操作在該流程式服務(wù)中的調(diào)用順序>組成。
索引更新模塊支持的操作包括對于一組消息-〉操作(或者操作-〉 <流程,序號>),如 果該鍵的索引記錄在索引信息中心中不存在,生成該索引鍵,并將該操作(或<流程,序號>) 作為它對應(yīng)的操作列表(或服務(wù)列表)的第一個成員插入;否則,將該操作(或<流程,序號>) 直接添加到該索引鍵對應(yīng)的操作列表(或服務(wù)列表)的末端。索引查詢模塊支持的操作包括: 根據(jù)消息索引鍵,得到服務(wù)注冊中心所有能產(chǎn)生該輸出的操作(服務(wù))列表;根據(jù)操作索引 鍵,得到服務(wù)注冊中心所有包含該操作的流程式服務(wù)列表。 如圖4所示的Web服務(wù)是一個售貨服務(wù),它包括六個原子操作查詢操作(Query),根 據(jù)輸入的貨品名稱(ItemName),返回庫存信息(Storage-Info);訂單操作(Order),根據(jù)輸入的 貨品信息(Itemlnfo)如貨品名稱和訂購數(shù)量等,返回訂購總價(Total-Price);付款通知操作 (Payment-Notify),輸出付款通知;通過BOC銀行付款操作(Pay through BOC),在輸入BOC 銀行卡號相關(guān)信息之后,返回付款狀態(tài);通過CCB銀行付款操作(Pay through CCB),在輸入 CCB銀行卡號相關(guān)信息之后,返回付款狀態(tài);發(fā)貨確認(rèn)操作(AffirmDelivery),在輸出發(fā)貨 通知之后,返回收據(jù)確認(rèn)消息。該服務(wù)各操作間的邏輯關(guān)系是用戶在開始與售貨服務(wù)交互 之后,可以先進(jìn)行查詢操作來査詢某個特定商品的庫存信息等,也可以跳過查詢操作直接進(jìn) 行訂單操作,確定需要購買的商品及數(shù)量。然后該服務(wù)會執(zhí)行付款通知操作,用戶在收到該 通知后,可以選擇通過CCB銀行付款操作或者BOC銀行付款操作來支付。在收到款項之后, 該服務(wù)會處理送貨并提醒用戶貨品已經(jīng)送出,在用戶返回收據(jù)確認(rèn)消息之后,用戶與該服務(wù) 的交互結(jié)束。
當(dāng)如圖4所示的Web服務(wù)注冊到服務(wù)注冊中心時
如圖2.2所示步驟,首先進(jìn)行常規(guī)信息注冊,包括服務(wù)提供者、服務(wù)接口、流程描述文 檔等信息登記到服務(wù)注冊中心;
如圖2.3所示步驟,服務(wù)注冊中心將服務(wù)注冊標(biāo)識(如ID:purchase一A)返回給服務(wù)提供
者;
如圖2.4所示步驟,更新消息到操作索引表storage-Info對應(yīng)的操作列表增加Query操 作;Total-price X寸應(yīng)的操作列表增加order操作;payment-notification對應(yīng)的操作列表增加 Payment-Notify操作;Payment-State對應(yīng)的操作列表增加Pay through BOC和Pay through CCB 操作;Delivery-Notification對應(yīng)的操作列表增加Affirm Delivery操作。并且更新操作到服務(wù) 索引表Query對應(yīng)的服務(wù)列表增加,urchase—A,l>;Order對應(yīng)的服務(wù)列表增加〈purchase—A,2 或l>;Payment-Notify對應(yīng)的服務(wù)列表增加〈purchase—A,3或2>; Pay through BOC對應(yīng)的服務(wù) 列表增加〈purchase一A,4或3>;Pay through CCB對應(yīng)的服務(wù)列表增加〈purchase—A,4或3>; A迅rm Delivery對應(yīng)的服務(wù)列表增加〈purchase一A,5或4>。索引更新完畢。
服務(wù)注冊流程結(jié)束。
假設(shè)有另一個售貨服務(wù)purchase—B,它只有訂單、送貨、通過BOC付款三個操作,操作
的接口與purchase一A相應(yīng)的操作一致,該服務(wù)的執(zhí)行流程是訂單一送貨一通過BOC付款, 那么該服務(wù)注冊進(jìn)入服務(wù)注冊中心后,需要更新的索引包括消息到操作索引表,無;操作 到服務(wù)索引表,Order對應(yīng)的服務(wù)列表增加,urchase一B,1、 A伍rm Delivery對應(yīng)的服務(wù)列表增 加〈purchase—B,2>; Pay through BOC對應(yīng)的服務(wù)列表增加〈purchase—B,3>。
假設(shè)服務(wù)注冊中心接收到一個服務(wù)査詢請求,該請求提出所需的服務(wù)必須包涵以下兩 個操作操作A可以提供BOC銀行卡號相關(guān)信息,需要返回付款狀態(tài)(Payment-State);操 作B需要發(fā)出發(fā)貨通知(Delivery-Notification),等待接收收據(jù)確認(rèn)消息。另外,該請求提出 操作A先于操作B。
根據(jù)消息到操作索引表,由于可以輸出Payment-State消息的操作有Pay through BOC和 Pay through CCB操作,而請求可以提供的輸入是BOC銀行卡號相關(guān)信息,從而確定操作A 即Pay through BOC;而可以輸出Delivery-Notification消息的操作是A迅rm Delivery,從而確 定操作B是Affirm Delivery。
根據(jù)操作到服務(wù)索引表,確定同時包涵Pay through BOC和Affirm Delivery的操作有 purchase—A禾口 purchase—B 。
pay through BOC在purchase一A里的調(diào)用順序是4或3 , A伍rm Delivery在purchase—A里 的調(diào)用順序是5或4,滿足操作A先于操作B;而pay through BOC在purchase一B里的調(diào)用順 序是3, A伍rm Delivery在purchase—B里的調(diào)用順序是2,不滿足操作A先于操作B。因此, 可以快速定位到purChase_A是滿足該服務(wù)請求的。
上述實(shí)施例用來解釋說明本發(fā)明,而不是對本發(fā)明進(jìn)行限制,在本發(fā)明的精神和權(quán)利要 求的保護(hù)范圍內(nèi),對本發(fā)明作出的任何修改和改變,都落入本發(fā)明的保護(hù)范圍。
權(quán)利要求
1、一種流程式服務(wù)注冊與發(fā)現(xiàn)方法,其特征在于在接收到來自服務(wù)提供者提交的Web服務(wù)注冊請求時,將該注冊請求中的服務(wù)信息在服務(wù)注冊中心進(jìn)行常規(guī)注冊;在Web服務(wù)注冊成功后,解析該注冊服務(wù)的接口、流程描述文檔,提取出流程ID、流程包含的原子操作、原子操作包含的輸入/輸出消息,建立消息到操作和操作到流程的倒排索引;在接收到來自服務(wù)請求者提交的查詢請求時,服務(wù)注冊中心將該請求分解成消息索引、操作索引查詢請求發(fā)送給索引信息中心,在接收到來自索引信息中心返回的分解索引查詢結(jié)果之后,對索引查詢結(jié)果做合并處理,根據(jù)消息到操作的索引信息,快速確定需要包含的原子操作,再根據(jù)操作到流程的索引信息,快速定位包含這些原子操作并滿足操作間調(diào)用順序的流程式服務(wù),將篩選出的滿足請求的流程式服務(wù)的列表返回給用戶。
2、 根據(jù)權(quán)利要求1所述的流程式服務(wù)注冊與發(fā)現(xiàn)方法,其特征在于服務(wù)注冊中心包 括服務(wù)注冊模塊和服務(wù)發(fā)現(xiàn)模塊,服務(wù)注冊模塊,用于在接收到來自服務(wù)提供者提交的Web 服務(wù)注冊請求時,進(jìn)行Web服務(wù)常規(guī)注冊,登記服務(wù)提供者信息、服務(wù)名稱和服務(wù)接口、流 程描述文檔信息,返回注冊成功后該Web服務(wù)的標(biāo)識符ID,在Web服務(wù)注冊成功后,將服 務(wù)注冊信息傳遞給索引信息中心,通知索引信息中心更新倒排索弓h(huán)服務(wù)發(fā)現(xiàn)模塊用于在接 收到來自服務(wù)請求者提交的査詢請求時,將該請求分解成消息索引、操作索引査詢請求發(fā)送 給索引信息中心,在接收到來自索引信息中心返回的分解索引査詢結(jié)果之后,對索引査詢結(jié) 果做合并處理,根據(jù)消息到操作的索引信息,快速確定需要包含的原子操作,再根據(jù)操作到 流程的索引信息,快速定位包含這些原子操作并滿足操作間調(diào)用順序的流程式服務(wù),將篩選 出的滿足請求的流程式服務(wù)的列表返回給用戶。
3、 根據(jù)權(quán)利要求1所述的流程式服務(wù)注冊與發(fā)現(xiàn)方法,其特征在于索引信息中心包 括索引更新模塊和索引查詢模塊,其中索引更新模塊,用于在接收到來自服務(wù)注冊中心的索 引更新通知時,解析該注冊服務(wù)的接口、流程描述文檔,提取出流程ID、流程包含的原子操 作、原子操作包含的輸入/輸出消息,建立消息到操作和操作到流程的倒排索引;索引査詢模 ±央,用于在接收到來自服務(wù)注冊中心的索引査詢請求時,査詢消息到操作和操作到流程的倒 排索引信息,將分解査詢結(jié)果返回給服務(wù)注冊中心的服務(wù)發(fā)現(xiàn)模塊做進(jìn)一步處理;索引更新 模塊中,消息到操作的索引信息由兩部分組成操作的輸出消息作為鍵,服務(wù)注冊中心所有 能產(chǎn)生該輸出的操作列表作為鍵值;操作到流程服務(wù)的索引信息也由兩部分組成具有特定 功能的操作作為鍵,服務(wù)注冊中心所有包含該操作的流程式服務(wù)作為鍵值,鍵值中的每個元 素由<流程式服務(wù)標(biāo)識,操作在該流程式服務(wù)中的調(diào)用順序>組成。
4、根據(jù)權(quán)利要求3所述的流程式服務(wù)注冊與發(fā)現(xiàn)方法,其特征在于索引更新模塊支 持的操作包括對于一組消息和操作,如果該鍵的索引記錄在索引信息中心中不存在,生成 該索引鍵,并將該操作作為它對應(yīng)的操作列表的第一個成員插入;否則,將該操作直接添加 到該索引鍵對應(yīng)的操作列表的末端;索引査詢模塊支持的操作包括根據(jù)消息索引鍵,得到 服務(wù)注冊中心所有能產(chǎn)生該輸出的操作列表;根據(jù)操作索引鍵,得到服務(wù)注冊中心所有包含 該操作的流程式服務(wù)列表。
全文摘要
本發(fā)明涉及一種基于倒排索引的流程式服務(wù)注冊與發(fā)現(xiàn)方法,在接收到Web服務(wù)注冊請求時進(jìn)行常規(guī)注冊;注冊成功后,解析相關(guān)信息,建立消息到操作和操作到流程的倒排索引;在接收到查詢請求時,服務(wù)注冊中心將該請求分解成消息索引、操作索引查詢請求發(fā)送給索引信息中心,在接收到分解索引查詢結(jié)果之后,對索引查詢結(jié)果做合并處理,根據(jù)消息到操作的索引信息,快速確定需要包含的原子操作,再根據(jù)操作到流程的索引信息,快速定位包含這些原子操作并滿足操作間調(diào)用順序的流程式服務(wù)。本發(fā)明有益的效果是對所有信息建立了從消息到操作和從操作到服務(wù)的倒排索引,并有效地利用了該索引提高流程式服務(wù)發(fā)現(xiàn)的效率。
文檔編號H04L29/06GK101188617SQ20071030058
公開日2008年5月28日 申請日期2007年12月20日 優(yōu)先權(quán)日2007年12月20日
發(fā)明者健 吳, 吳朝暉, 尹建偉, 瑩 李, 鄧水光, 礫 鄺 申請人:浙江大學(xué)