專利名稱:控制流集中數(shù)據(jù)流分布的組合服務(wù)執(zhí)行系統(tǒng)及執(zhí)行方法
技術(shù)領(lǐng)域:
本發(fā)明屬于Web服務(wù)組合領(lǐng)域,特別涉及控制流集中數(shù)據(jù)流分散的組合服務(wù)執(zhí)行 方法。
背景技術(shù):
隨著Web服務(wù)技術(shù)的成熟與發(fā)展,組合已有服務(wù)以提供增值功能的組合服務(wù)已經(jīng) 得到了廣泛的關(guān)注。在服務(wù)組合研究問(wèn)題中,組合服務(wù)的執(zhí)行已成為該領(lǐng)域的一個(gè)熱點(diǎn)問(wèn) 題。為此,Oracle、Apache、IBM等公司都開(kāi)發(fā)了相應(yīng)的組合服務(wù)執(zhí)行引擎。例如,Apache IiISWApache ODE>Active Endpoints ^w] ^ ActiveBpeUOracle ^ Oracle BPEL U 及IBM公司的WBISF。然而,目前的這些組合服務(wù)執(zhí)行引擎大都采用控制流數(shù)據(jù)流全集中的 執(zhí)行方法。該方法是利用一個(gè)中心節(jié)點(diǎn),即組合服務(wù)執(zhí)行引擎協(xié)調(diào)服務(wù)之間的控制流和數(shù) 據(jù)流。在該執(zhí)行方法中,所有數(shù)據(jù)都要經(jīng)過(guò)中心節(jié)點(diǎn)進(jìn)行轉(zhuǎn)發(fā),而不是由數(shù)據(jù)的生產(chǎn)者直接 發(fā)送數(shù)據(jù)給消費(fèi)者。這樣會(huì)增加網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)量,易形成系統(tǒng)的性能瓶頸,降低系統(tǒng)的吞 吐量和執(zhí)行效率。
發(fā)明內(nèi)容
為了克服已有技術(shù)的不足,本發(fā)明提供了一種控制流集中數(shù)據(jù)流分布的組合服務(wù) 執(zhí)行系統(tǒng)及執(zhí)行方法。該方法通過(guò)中心節(jié)點(diǎn)集中控制流,以控制各個(gè)服務(wù)的執(zhí)行次序;同 時(shí),中心節(jié)點(diǎn)通知各服務(wù)代理數(shù)據(jù)流的流轉(zhuǎn),以使得數(shù)據(jù)流不經(jīng)過(guò)中心節(jié)點(diǎn)的轉(zhuǎn)發(fā)而直接 從數(shù)據(jù)生產(chǎn)者發(fā)送到其消費(fèi)者。本發(fā)明采取的硬件為連接的htel網(wǎng)上的PC機(jī)組成。一臺(tái)PC機(jī)作為中心節(jié)點(diǎn), 其余PC作為服務(wù)代理,web服務(wù)注冊(cè)在服務(wù)代理上。為了實(shí)現(xiàn)該方法中服務(wù)代理和中心節(jié)點(diǎn)間的協(xié)調(diào)交互,設(shè)定了一組服務(wù)代理和中 心節(jié)點(diǎn)間的交互協(xié)議,該交互協(xié)議包括5種協(xié)議消息服務(wù)參數(shù)輸入消息。該消息用來(lái)描述請(qǐng)求服務(wù)調(diào)用的具體輸入變量,消息發(fā)送者 為中心節(jié)點(diǎn)或服務(wù)代理,消息的接收者為服務(wù)代理或中心節(jié)點(diǎn)。該消息包括消息類型,組合 服務(wù)實(shí)例標(biāo)識(shí),活動(dòng)標(biāo)識(shí),服務(wù)輸入?yún)?shù)和中心節(jié)點(diǎn)地址等內(nèi)容。服務(wù)完成消息。該消息用來(lái)通知中心節(jié)點(diǎn)服務(wù)執(zhí)行成功或者失敗,消息發(fā)送者為 服務(wù)代理,消息接收者為中心節(jié)點(diǎn)。該消息包括消息類型,組合服務(wù)實(shí)例標(biāo)識(shí),活動(dòng)標(biāo)識(shí)和 服務(wù)執(zhí)行結(jié)果(成功或者失敗)等內(nèi)容。服務(wù)參數(shù)傳遞通知消息。該消息用來(lái)通知服務(wù)代理將服務(wù)執(zhí)行結(jié)果進(jìn)行參數(shù)轉(zhuǎn) 換,并傳送到目標(biāo)服務(wù)代理,消息發(fā)送者為中心節(jié)點(diǎn),消息接收者為服務(wù)代理。該消息包括 消息類型,組合服務(wù)實(shí)例標(biāo)識(shí),活動(dòng)標(biāo)識(shí),參數(shù)轉(zhuǎn)換模型和服務(wù)代理地址等內(nèi)容。服務(wù)參數(shù)提取消息。該消息用來(lái)通知服務(wù)代理將執(zhí)行結(jié)果中與組合服務(wù)執(zhí)行控制 相關(guān)的參數(shù)傳遞給中心節(jié)點(diǎn),消息發(fā)送者為中心節(jié)點(diǎn),消息接收者為服務(wù)代理。該消息包括 消息類型,組合服務(wù)實(shí)例標(biāo)識(shí),活動(dòng)標(biāo)識(shí)和參數(shù)名稱等內(nèi)容。
服務(wù)參數(shù)回傳消息。該消息用來(lái)根據(jù)服務(wù)參數(shù)提取消息,發(fā)送相關(guān)服務(wù)參數(shù)給中 心節(jié)點(diǎn),消息發(fā)送者為服務(wù)代理,消息接收者為中心節(jié)點(diǎn)。該消息包括消息類型,組合服務(wù) 實(shí)例標(biāo)識(shí),活動(dòng)標(biāo)識(shí)和服務(wù)輸入?yún)?shù)等內(nèi)容。一種控制流集中數(shù)據(jù)流分布的組合服務(wù)執(zhí)行系統(tǒng),該系統(tǒng)包括一個(gè)中心節(jié)點(diǎn)和分 布在網(wǎng)絡(luò)中不同節(jié)點(diǎn)上的多個(gè)服務(wù)代理;中心節(jié)點(diǎn)即組合服務(wù)執(zhí)行引擎,如附圖1所示,包 括解析模塊、集成層模塊、運(yùn)行時(shí)模塊和持久化模塊;其中解析模塊,負(fù)責(zé)對(duì)組合服務(wù)進(jìn)行解析,通過(guò)中心節(jié)點(diǎn)即組合服務(wù)執(zhí)行引擎對(duì) 外提供的組合服務(wù)部署解析接口,接收組合服務(wù)部署文件,將其解析成組合服務(wù)模板,建立 內(nèi)存模型,同時(shí)生成參數(shù)轉(zhuǎn)換模型;集成層模塊,負(fù)責(zé)中心節(jié)點(diǎn)與外界的交互;包括服務(wù)請(qǐng)求消息處理子模塊、服務(wù)替 換調(diào)整子模塊和協(xié)議消息處理子模塊;其中服務(wù)請(qǐng)求消息處理子模塊,負(fù)責(zé)接收服務(wù)請(qǐng)求 消息和發(fā)送服務(wù)響應(yīng)消息;服務(wù)替換調(diào)整子模塊,負(fù)責(zé)接收服務(wù)替換調(diào)整消息,對(duì)其進(jìn)行解 析封裝后,加入到服務(wù)替換調(diào)整庫(kù),以支持組合服務(wù)執(zhí)行過(guò)程中的服務(wù)替換;協(xié)議消息處理 子模塊,是中心節(jié)點(diǎn)即組合服務(wù)執(zhí)行引擎與服務(wù)代理進(jìn)行交互的中介,負(fù)責(zé)接收發(fā)送協(xié)議 消息,對(duì)協(xié)議消息進(jìn)行解析、封裝和路由匹配;運(yùn)行時(shí)模塊,負(fù)責(zé)中心節(jié)點(diǎn)即組合服務(wù)執(zhí)行引擎與服務(wù)代理之間的交互;包括組 合服務(wù)管理子模塊、組合服務(wù)實(shí)例管理子模塊和組合服務(wù)實(shí)例管理子模塊;其中組合服務(wù) 管理子模塊,負(fù)責(zé)對(duì)組合服務(wù)模板添加、刪除和更新;組合服務(wù)實(shí)例管理子模塊,負(fù)責(zé)進(jìn)行 組合服務(wù)實(shí)例的生命周期管理,包括啟動(dòng)、暫停、恢復(fù)、停止和銷毀;組合服務(wù)實(shí)例調(diào)度子模 塊,負(fù)責(zé)根據(jù)組合服務(wù)的執(zhí)行邏輯,控制組合服務(wù)實(shí)例中各個(gè)活動(dòng)的執(zhí)行順序;持久化模塊,負(fù)責(zé)中心節(jié)點(diǎn)即組合服務(wù)執(zhí)行引擎內(nèi)核與底層數(shù)據(jù)庫(kù)進(jìn)行交互,以 跟蹤記錄組合服務(wù)實(shí)例的執(zhí)行過(guò)程和狀態(tài);中心節(jié)點(diǎn)執(zhí)行邏輯過(guò)程如附圖2所示。中心節(jié)點(diǎn)通過(guò)請(qǐng)求消息處理模塊接收到 用戶的組合服務(wù)執(zhí)行請(qǐng)求,轉(zhuǎn)換成相應(yīng)的實(shí)例創(chuàng)建消息,首先通過(guò)組合服務(wù)管理模塊查詢 組合服務(wù)模板庫(kù),找到匹配的組合服務(wù)模板,然后創(chuàng)建組合服務(wù)實(shí)例,交給組合服務(wù)實(shí)例管 理模塊進(jìn)行處理,組合服務(wù)實(shí)例管理模塊會(huì)將新創(chuàng)建的組合服務(wù)實(shí)例交給實(shí)例調(diào)度模塊執(zhí) 行。實(shí)例調(diào)度模塊按照組合服務(wù)實(shí)例的執(zhí)行邏輯,依次取出組合服務(wù)實(shí)例的活動(dòng)加入活動(dòng) 執(zhí)行隊(duì)列,活動(dòng)從活動(dòng)執(zhí)行隊(duì)列中彈出后,會(huì)交給活動(dòng)執(zhí)行模塊按照活動(dòng)的具體執(zhí)行邏輯 進(jìn)行執(zhí)行,如果活動(dòng)是服務(wù)調(diào)用活動(dòng),會(huì)通過(guò)活動(dòng)執(zhí)行模塊與協(xié)議消息處理模塊,進(jìn)行協(xié)議 消息的產(chǎn)生、封裝、收發(fā)與服務(wù)代理進(jìn)行交互,控制服務(wù)何時(shí)執(zhí)行以及何時(shí)/往何處發(fā)送數(shù) 據(jù)?;顒?dòng)執(zhí)行結(jié)束后,活動(dòng)執(zhí)行模塊會(huì)通知實(shí)例調(diào)度模塊調(diào)度執(zhí)行下一個(gè)活動(dòng),直至組合服 務(wù)實(shí)例執(zhí)行結(jié)束。將執(zhí)行結(jié)果通過(guò)請(qǐng)求消息處理模塊返回給用戶。服務(wù)代理包括服務(wù)參數(shù)處理模塊、協(xié)議消息處理模塊和服務(wù)調(diào)用模塊,如附圖3 所示;服務(wù)參數(shù)處理模塊,負(fù)責(zé)服務(wù)執(zhí)行結(jié)果的存儲(chǔ)以及服務(wù)傳遞參數(shù)的數(shù)據(jù)轉(zhuǎn)換;包 括服務(wù)參數(shù)管理子模塊、服務(wù)執(zhí)行條件判定子模塊,參數(shù)轉(zhuǎn)換子模塊和數(shù)據(jù)消息封裝子模 塊;服務(wù)參數(shù)管理子模塊,負(fù)責(zé)接收到的服務(wù)參數(shù)的持久化,以及服務(wù)參數(shù)的查詢及 更新。
服務(wù)執(zhí)行條件判定子模塊,負(fù)責(zé)服務(wù)執(zhí)行條件的判斷,接收到服務(wù)參數(shù)輸入消息 的時(shí)候,根據(jù)服務(wù)輸入?yún)?shù)是否完整,判斷服務(wù)是否可以執(zhí)行。參數(shù)轉(zhuǎn)換子模塊,根據(jù)參數(shù)轉(zhuǎn)換模型,實(shí)現(xiàn)服務(wù)參數(shù)間相互轉(zhuǎn)換。數(shù)據(jù)消息封裝子模塊,負(fù)責(zé)封裝服務(wù)參數(shù)輸入消息;協(xié)議消息處理模塊,負(fù)責(zé)協(xié)議消息的解析、封裝、發(fā)送和接收;包括數(shù)據(jù)流收發(fā)子 模塊和控制流收發(fā)子模塊;其中數(shù)據(jù)流收發(fā)子模塊負(fù)責(zé)服務(wù)代理間數(shù)據(jù)傳遞;控制流收發(fā) 子模塊負(fù)責(zé)和中心節(jié)點(diǎn)交互控制消息。服務(wù)調(diào)用模塊,負(fù)責(zé)對(duì)具體的服務(wù)進(jìn)行調(diào)用,以完成服務(wù)功能。服務(wù)代理的執(zhí)行邏輯過(guò)程如附圖4所示。服務(wù)代理通過(guò)數(shù)據(jù)流接收模塊接收到服 務(wù)參數(shù)輸入消息,首先通過(guò)服務(wù)參數(shù)管理模塊進(jìn)行存取,調(diào)用服務(wù)執(zhí)行條件判定模塊判斷 該服務(wù)的執(zhí)行參數(shù)是否完備,是否滿足執(zhí)行條件。如果滿足執(zhí)行條件,通過(guò)服務(wù)調(diào)用模塊, 執(zhí)行服務(wù)調(diào)用。將服務(wù)調(diào)用是否成功封裝成服務(wù)完成消息通過(guò)控制流發(fā)送模塊發(fā)送給中心 節(jié)點(diǎn)。服務(wù)節(jié)點(diǎn)通過(guò)控制流接收模塊接收到中心節(jié)點(diǎn)發(fā)送的服務(wù)參數(shù)傳遞通知消息,按照 服務(wù)參數(shù)傳遞通知消息中的參數(shù)轉(zhuǎn)換模型,調(diào)用參數(shù)轉(zhuǎn)換模塊對(duì)服務(wù)執(zhí)行結(jié)果進(jìn)行數(shù)據(jù)轉(zhuǎn) 換,并通過(guò)數(shù)據(jù)消息封裝模塊封裝成服務(wù)參數(shù)輸入消息,通過(guò)數(shù)據(jù)流發(fā)送模塊發(fā)送給其他 服務(wù)代理或者中心節(jié)點(diǎn)。一種控制流集中數(shù)據(jù)流分布的組合服務(wù)執(zhí)行系統(tǒng)的執(zhí)行方法如下如附圖5所 示,步驟A 首先對(duì)組合服務(wù)部署文件進(jìn)行解析,通過(guò)解析模塊,對(duì)組合服務(wù)部署文件 進(jìn)行封裝,創(chuàng)建組合服務(wù)模板。步驟B 引擎通過(guò)Web服務(wù)的方式對(duì)外發(fā)布接口,接收服務(wù)請(qǐng)求消息,根據(jù)服務(wù)請(qǐng) 求消息,查找組合服務(wù)模板,創(chuàng)建組合服務(wù)實(shí)例,并將其加入到組合服務(wù)實(shí)例執(zhí)行隊(duì)列。組 合服務(wù)實(shí)例是由一組活動(dòng)按照一定的執(zhí)行順序構(gòu)成。步驟C:引擎內(nèi)核依次從組合服務(wù)實(shí)例執(zhí)行隊(duì)列中取出組合服務(wù)實(shí)例,開(kāi)始執(zhí)行 組合服務(wù)實(shí)例,從組合服務(wù)實(shí)例的第一個(gè)活動(dòng)開(kāi)始執(zhí)行。步驟D 設(shè)置活動(dòng)狀態(tài)為準(zhǔn)備執(zhí)行狀態(tài)。步驟E 將活動(dòng)加入到活動(dòng)執(zhí)行隊(duì)列。步驟F 活動(dòng)執(zhí)行模塊將活動(dòng)從活動(dòng)執(zhí)行模塊中取出該活動(dòng),設(shè)置活動(dòng)狀態(tài)為執(zhí) 行狀態(tài)。步驟G 執(zhí)行活動(dòng)邏輯?;顒?dòng)邏輯的執(zhí)行是組合服務(wù)執(zhí)行的核心部分。其具體執(zhí) 行過(guò)程如下步驟Gl 按照活動(dòng)的執(zhí)行是否需要中心和執(zhí)行代理之間進(jìn)行信息交互,活動(dòng)可以 分為外部活動(dòng)和內(nèi)部活動(dòng)。外部活動(dòng)參與中心與執(zhí)行代理間的消息交互。內(nèi)部活動(dòng)負(fù)責(zé)流 程實(shí)例的執(zhí)行控制,不參與中心和執(zhí)行代理間的消息交互。判斷活動(dòng)類型,如果活動(dòng)類型是 接收活動(dòng)(Receive)執(zhí)行步驟G2 ;如果活動(dòng)類型是賦值活動(dòng)(Assign)執(zhí)行步驟G3 ;如果活 動(dòng)類型是服務(wù)調(diào)用活動(dòng)(Invoke)執(zhí)行步驟G4;如果活動(dòng)類型是服務(wù)應(yīng)答活(Iteply)動(dòng)執(zhí) 行步驟G5 ;如果活動(dòng)類型是判斷(If)活動(dòng)執(zhí)行步驟G6 ;如果活動(dòng)類型是其他內(nèi)部活動(dòng)按 照其執(zhí)行邏輯執(zhí)行。
步驟G2 執(zhí)行接收活動(dòng)(Receive)活動(dòng),直接將接收到的服務(wù)請(qǐng)求消息存到指定服務(wù)輸入變量中。
步驟G3 執(zhí)行賦值(Assign)活動(dòng),組合服務(wù)解析時(shí),該活動(dòng)會(huì)生成參數(shù)轉(zhuǎn) 換模型,在活動(dòng)執(zhí)行時(shí)會(huì)保存該參數(shù)轉(zhuǎn)換模型,執(zhí)行服務(wù)調(diào)用時(shí),再將參數(shù)轉(zhuǎn)換模型發(fā)送給 指定的服務(wù)代理,具體的執(zhí)行步驟如下如附圖6所示,步驟G31 獲取活動(dòng)生成的參數(shù)轉(zhuǎn)換模型步驟G32 存儲(chǔ)參數(shù)轉(zhuǎn)換模型步驟G33 獲取源參數(shù)所在的服務(wù)代理地址步驟G34 生成目標(biāo)參數(shù)的服務(wù)地址映射步驟G35 存儲(chǔ)參數(shù)服務(wù)地址映射步驟G36:活動(dòng)執(zhí)行結(jié)束步驟G4 執(zhí)行服務(wù)調(diào)用(Invoke)活動(dòng),該活動(dòng)是中心節(jié)點(diǎn)即組合服務(wù)執(zhí)行引擎與 服務(wù)代理進(jìn)行直接交互的活動(dòng),涉及到交互協(xié)議相關(guān)的控制流和數(shù)據(jù)流消息,具體的執(zhí)行 步驟如下如附圖7所示,步驟G41 從參數(shù)轉(zhuǎn)換模型表中獲取參數(shù)轉(zhuǎn)換模型步驟G42 判斷是否有替換服務(wù),是,生成并存儲(chǔ)新的參數(shù)轉(zhuǎn)換模型和參數(shù)服務(wù)地 址映射,轉(zhuǎn)步驟G44,否,轉(zhuǎn)步驟G43步驟G43 判斷原有服務(wù)是否可用,是,轉(zhuǎn)步驟G44,否,轉(zhuǎn)步驟G49步驟G44:判斷服務(wù)參數(shù)是否在中心節(jié)點(diǎn)即組合服務(wù)執(zhí)行引擎中,是,轉(zhuǎn)步驟G45, 否,轉(zhuǎn)步驟G46步驟G45 封裝服務(wù)參數(shù)輸入消息,發(fā)送給服務(wù)代理,轉(zhuǎn)步驟G48步驟G46 發(fā)送服務(wù)參數(shù)傳遞通知消息給服務(wù)代理步驟G47 等待接收服務(wù)完成消息進(jìn)行超時(shí)計(jì)時(shí),是否超時(shí),是,轉(zhuǎn)步驟G42,否,轉(zhuǎn) 步驟G48步驟G48 接收到服務(wù)完成消息,判斷服務(wù)是否執(zhí)行成功,是,轉(zhuǎn)步驟G410,否,轉(zhuǎn) 步驟G42步驟G49 發(fā)送服務(wù)出錯(cuò)消息步驟G410 活動(dòng)執(zhí)行結(jié)束步驟G5 執(zhí)行服務(wù)應(yīng)答(Reply)活動(dòng),是中心節(jié)點(diǎn)即組合服務(wù)執(zhí)行引擎接收服務(wù) 代理發(fā)回的服務(wù)參數(shù)消息,然后發(fā)送給客戶端服務(wù)請(qǐng)求者,具體的執(zhí)行步驟如下如附圖8 所示,步驟G51 從參數(shù)轉(zhuǎn)換模型表中獲取參數(shù)轉(zhuǎn)換模型步驟G52 判斷參數(shù)是否存在引擎中,是,轉(zhuǎn)步驟G53,否,轉(zhuǎn)步驟G55步驟G53 進(jìn)行參數(shù)轉(zhuǎn)換,封裝服務(wù)響應(yīng)消息步驟G54 發(fā)送服務(wù)響應(yīng)消息給服務(wù)請(qǐng)求者,轉(zhuǎn)步驟G59步驟G55 獲取參數(shù)所在服務(wù)代理地址,發(fā)送服務(wù)參數(shù)傳遞通知消息給該服務(wù)代
理步驟G56 等待接收服務(wù)參數(shù)消息,進(jìn)行超時(shí)計(jì)時(shí),是否超時(shí),是,轉(zhuǎn)步驟G57,否, 轉(zhuǎn)步驟G58步驟G57 發(fā)送服務(wù)出錯(cuò)消息給服務(wù)請(qǐng)求者,轉(zhuǎn)步驟G59
步驟G58 接收服務(wù)參數(shù)消息,封裝服務(wù)響應(yīng)消息,轉(zhuǎn)步驟G54步驟G59:活動(dòng)執(zhí)行結(jié)束步驟G6 執(zhí)行如果是判斷(If)活動(dòng),中心節(jié)點(diǎn)執(zhí)行判斷活動(dòng),如果判斷活動(dòng)中的 用到之前服務(wù)執(zhí)行結(jié)果中的數(shù)據(jù),需要和服務(wù)代理有一個(gè)交互過(guò)程來(lái)獲取數(shù)據(jù),具體的執(zhí) 行步驟如下如附圖9所示,步驟G61 判斷所有條件是否完畢,是,轉(zhuǎn)步驟G65,否,轉(zhuǎn)步驟G62步驟G62 根據(jù)條件表達(dá)式,封裝服務(wù)參數(shù)提取消息,發(fā)送給服務(wù)代理步驟G63:接收服務(wù)參數(shù)回傳消息,判斷條件表達(dá)式是否為真,是,轉(zhuǎn)步驟G64,否, 轉(zhuǎn)步驟G61步驟G64 執(zhí)行滿足該判斷條件的后繼活動(dòng)步驟G65:活動(dòng)執(zhí)行結(jié)束步驟G7 對(duì)于內(nèi)部活動(dòng),按照?qǐng)?zhí)行邏輯執(zhí)行。步驟H 設(shè)置活動(dòng)狀態(tài)為完成狀態(tài)步驟I 判斷是否存在后繼活動(dòng),如果存在后繼活動(dòng),觸發(fā)后繼活動(dòng)轉(zhuǎn)到步驟D。否 則轉(zhuǎn)到步驟J。步驟J 組合服務(wù)實(shí)例執(zhí)行結(jié)束。本發(fā)明的優(yōu)點(diǎn)Web服務(wù)作為實(shí)現(xiàn)基于面向服務(wù)的企業(yè)應(yīng)用的主要技術(shù)手段,已 經(jīng)得到廣泛關(guān)注。服務(wù)組合是將現(xiàn)有服務(wù)組合形成新的增值服務(wù)的一種方法。關(guān)于組合服 務(wù)的執(zhí)行方式,目前工業(yè)界和學(xué)術(shù)界主要采用兩種組合服務(wù)執(zhí)行方式全集中和全分布的 執(zhí)行方式。全集中的執(zhí)行方式實(shí)現(xiàn)方法相對(duì)簡(jiǎn)單,對(duì)整個(gè)執(zhí)行過(guò)程有良好的控制。在該方 法中,唯一的中心節(jié)點(diǎn)要負(fù)責(zé)協(xié)調(diào)不同服務(wù)間的控制流和數(shù)據(jù)流,所有的數(shù)據(jù)都要經(jīng)過(guò)中 心節(jié)點(diǎn)中轉(zhuǎn),而不是由數(shù)據(jù)的生產(chǎn)者直接發(fā)送給數(shù)據(jù)消費(fèi)者,因此增加了消息傳遞量,使得 整個(gè)組合服務(wù)的性能將受到中心節(jié)點(diǎn)的計(jì)算能力和通信能力的限制。尤其是當(dāng)傳遞消息 數(shù)量大量增加時(shí),中心節(jié)點(diǎn)容易成為系統(tǒng)性能瓶頸。以Self-krv為代表的全分布的執(zhí)行 方式,不存在唯一的中心節(jié)點(diǎn),數(shù)據(jù)直接由生產(chǎn)者發(fā)送給消費(fèi)者,減少了不必要的消息通信 量。然而,由于系統(tǒng)完全分布,沒(méi)有邏輯中心,很難對(duì)系統(tǒng)整體運(yùn)行情況進(jìn)行監(jiān)控,無(wú)法實(shí)現(xiàn) 對(duì)組合服務(wù)的全局調(diào)整以適應(yīng)異常情況的發(fā)生。同時(shí),該執(zhí)行方式不支持目前公認(rèn)的組合 服務(wù)執(zhí)行語(yǔ)言BPEL,從而很難實(shí)現(xiàn)該方式的應(yīng)用推廣。基于對(duì)以上兩種執(zhí)行方式的分析,我 們提出一種控制流集中數(shù)據(jù)流分散的組合服務(wù)執(zhí)行方法。該方法的基本思想是利用一個(gè)中 心節(jié)點(diǎn)對(duì)全局組合邏輯進(jìn)行控制,通過(guò)發(fā)送控制消息通知服務(wù)何時(shí)、往何處發(fā)送數(shù)據(jù),從而 既能夠解決分布式執(zhí)行方式缺乏對(duì)組合服務(wù)整體運(yùn)行情況的監(jiān)控能力,又能夠解決集中式 執(zhí)行方式由于數(shù)據(jù)流都經(jīng)過(guò)中心節(jié)點(diǎn)中轉(zhuǎn)而易存在系統(tǒng)性能瓶頸的問(wèn)題。同時(shí),該方法采 用中心節(jié)點(diǎn)控制組合服務(wù)的全局執(zhí)行邏輯,能夠兼容當(dāng)前的主流組合服務(wù)執(zhí)行語(yǔ)言BPEL, 從而可以有效地支持組合服務(wù)應(yīng)用的執(zhí)行。綜上所述,所提出的控制流集中數(shù)據(jù)流分散的 組合服務(wù)執(zhí)行方法兼具全集中與全分布兩種方法的優(yōu)點(diǎn),而且能夠兼容當(dāng)前主流的服務(wù)組 合語(yǔ)言,特別適用于具有較大數(shù)據(jù)量傳輸?shù)慕M合服務(wù)執(zhí)行。
圖1本發(fā)明中心節(jié)點(diǎn)即組合服務(wù)執(zhí)行引擎功能模塊圖2本發(fā)明中心節(jié)點(diǎn)即組合服務(wù)執(zhí)行引擎邏輯結(jié)構(gòu)圖;圖3本發(fā)明服務(wù)代理功能模塊圖;圖4本發(fā)明代理服務(wù)邏輯結(jié)構(gòu)圖;圖5本發(fā)明控制流集中數(shù)據(jù)流分散的組合服務(wù)執(zhí)行方法執(zhí)行流程圖;圖6本發(fā)明賦值(Assign)活動(dòng)執(zhí)行邏輯流程圖;圖7本發(fā)明服務(wù)調(diào)用(Invoke)活動(dòng)執(zhí)行邏輯流程圖;圖8本發(fā)明服務(wù)響應(yīng)(Iteply)活動(dòng)執(zhí)行邏輯流程圖;圖9本發(fā)明判斷(If)活動(dòng)執(zhí)行流程圖;圖10本發(fā)明不同數(shù)據(jù)傳輸量情況下組合服務(wù)平均執(zhí)行時(shí)間的變化示意圖。
具體實(shí)施例方式本發(fā)明結(jié)合具體實(shí)施例和說(shuō)明書(shū)附圖進(jìn)行說(shuō)明。為了驗(yàn)證本發(fā)明提出的方法和系統(tǒng)的性能,進(jìn)行了一系列的實(shí)驗(yàn)。實(shí)驗(yàn)環(huán)境由 ΙΟΟΜ/sLAN 連接的 htel (2.6GHz,IG RAM) PC ^P IBM T60 筆記本電腦組成。PC 機(jī)作為 Web 服務(wù)器,部署了 50個(gè)Web服務(wù)。Dell 630作為服務(wù)代理和中心節(jié)點(diǎn)。50個(gè)Web服務(wù)分別 注冊(cè)在10臺(tái)IBM T60上。采用的測(cè)試用例是由20個(gè)Web服務(wù)順序調(diào)用組成的組合服務(wù)。 對(duì)于每個(gè)組合服務(wù),其中任意兩個(gè)Web服務(wù)間數(shù)據(jù)傳輸量都是相同的,且數(shù)據(jù)傳輸量的取 值設(shè)置為11(、1、41(、161(、321(、641(、1281(、2561(、511或1(^41(。在不同數(shù)據(jù)傳輸量取值的情 況下,在所建立的系統(tǒng)環(huán)境中執(zhí)行組合服務(wù)并得到執(zhí)行時(shí)間。對(duì)于每個(gè)數(shù)據(jù)傳輸量進(jìn)行20 次實(shí)驗(yàn),計(jì)算平均執(zhí)行時(shí)間。之后,采用集中式執(zhí)行的開(kāi)源BPEL執(zhí)行引擎ActiveBPEL5. 0 做同樣的實(shí)驗(yàn)。比較所提出的組合服務(wù)執(zhí)行系統(tǒng)與該開(kāi)源執(zhí)行引擎的執(zhí)行時(shí)間。該系統(tǒng)包括一個(gè)中心節(jié)點(diǎn)和分布在網(wǎng)絡(luò)中不同節(jié)點(diǎn)上的多個(gè)服務(wù)代理;中心節(jié)點(diǎn) 即組合服務(wù)執(zhí)行引擎,如附圖1所示,包括解析模塊、集成層模塊、運(yùn)行時(shí)模塊和持久化模 塊;其中解析模塊,負(fù)責(zé)對(duì)組合服務(wù)進(jìn)行解析,通過(guò)中心節(jié)點(diǎn)即組合服務(wù)執(zhí)行引擎對(duì) 外提供的組合服務(wù)部署解析接口,接收組合服務(wù)部署文件,將其解析成組合服務(wù)模板,建立 內(nèi)存模型,同時(shí)生成參數(shù)轉(zhuǎn)換模型;集成層模塊,負(fù)責(zé)中心節(jié)點(diǎn)與外界的交互;包括服務(wù)請(qǐng)求消息處理子模塊、服務(wù)替 換調(diào)整子模塊和協(xié)議消息處理子模塊;其中服務(wù)請(qǐng)求消息處理子模塊,負(fù)責(zé)接收服務(wù)請(qǐng)求 消息和發(fā)送服務(wù)響應(yīng)消息;服務(wù)替換調(diào)整子模塊,負(fù)責(zé)接收服務(wù)替換調(diào)整消息,對(duì)其進(jìn)行解 析封裝后,加入到服務(wù)替換調(diào)整庫(kù),以支持組合服務(wù)執(zhí)行過(guò)程中的服務(wù)替換;協(xié)議消息處理 子模塊,是中心節(jié)點(diǎn)即組合服務(wù)執(zhí)行引擎與服務(wù)代理進(jìn)行交互的中介,負(fù)責(zé)接收發(fā)送協(xié)議 消息,對(duì)協(xié)議消息進(jìn)行解析、封裝和路由匹配;運(yùn)行時(shí)模塊,負(fù)責(zé)中心節(jié)點(diǎn)即組合服務(wù)執(zhí)行引擎與服務(wù)代理之間的交互;包括組 合服務(wù)管理子模塊、組合服務(wù)實(shí)例管理子模塊和組合服務(wù)實(shí)例管理子模塊;其中組合服務(wù) 管理子模塊,負(fù)責(zé)對(duì)組合服務(wù)模板添加、刪除和更新;組合服務(wù)實(shí)例管理子模塊,負(fù)責(zé)進(jìn)行 組合服務(wù)實(shí)例的生命周期管理,包括啟動(dòng)、暫停、恢復(fù)、停止和銷毀;組合服務(wù)實(shí)例調(diào)度子模 塊,負(fù)責(zé)根據(jù)組合服務(wù)的執(zhí)行邏輯,控制組合服務(wù)實(shí)例中各個(gè)活動(dòng)的執(zhí)行順序;持久化模塊,負(fù)責(zé)中心節(jié)點(diǎn)即組合服務(wù)執(zhí)行引擎內(nèi)核與底層數(shù)據(jù)庫(kù)進(jìn)行交互,以跟蹤記錄組合服務(wù)實(shí)例的執(zhí)行過(guò)程和狀態(tài);服務(wù)代理包括服務(wù)參數(shù)處理模塊、協(xié)議消息處理模塊和服務(wù)調(diào)用模塊,如附圖3 所示;;服務(wù)參數(shù)處理模塊,負(fù)責(zé)服務(wù)執(zhí)行結(jié)果的存儲(chǔ)以及服務(wù)傳遞參數(shù)的數(shù)據(jù)轉(zhuǎn)換;包 括服務(wù)參數(shù)管理子模塊、服務(wù)執(zhí)行條件判定子模塊,參數(shù)轉(zhuǎn)換子模塊和數(shù)據(jù)消息封裝子模 塊;服務(wù)參數(shù)管理子模塊,負(fù)責(zé)接收到的服務(wù)參數(shù)的持久化,以及服務(wù)參數(shù)的查詢及 更新。服務(wù)執(zhí)行條件判定子模塊,負(fù)責(zé)服務(wù)執(zhí)行條件的判斷,接收到服務(wù)參數(shù)輸入消息 的時(shí)候,根據(jù)服務(wù)輸入?yún)?shù)是否完整,判斷服務(wù)是否可以執(zhí)行。參數(shù)轉(zhuǎn)換子模塊,根據(jù)參數(shù)轉(zhuǎn)換模型,實(shí)現(xiàn)服務(wù)參數(shù)間相互轉(zhuǎn)換。數(shù)據(jù)消息封裝子模塊,負(fù)責(zé)封裝服務(wù)參數(shù)輸入消息;協(xié)議消息處理模塊,負(fù)責(zé)協(xié)議消息的解析、封裝、發(fā)送和接收;包括數(shù)據(jù)流收發(fā)子 模塊和控制流收發(fā)子模塊;其中數(shù)據(jù)流收發(fā)子模塊負(fù)責(zé)服務(wù)代理間數(shù)據(jù)傳遞;控制流收發(fā) 子模塊負(fù)責(zé)和中心節(jié)點(diǎn)交互控制消息。服務(wù)調(diào)用模塊,負(fù)責(zé)對(duì)具體的服務(wù)進(jìn)行調(diào)用,以完成服務(wù)功能。控制流集中數(shù)據(jù)流分布的組合服務(wù)執(zhí)行系統(tǒng)的執(zhí)行方法,按如下步驟進(jìn)行如附 圖5所示,步驟A 首先對(duì)組合服務(wù)部署文件進(jìn)行解析,通過(guò)解析模塊,對(duì)組合服務(wù)部署文件 進(jìn)行封裝,創(chuàng)建組合服務(wù)模板;步驟B 引擎通過(guò)Web服務(wù)的方式對(duì)外發(fā)布接口,接收服務(wù)請(qǐng)求消息,根據(jù)服務(wù)請(qǐng) 求消息,查找組合服務(wù)模板,創(chuàng)建組合服務(wù)實(shí)例,并將其加入到組合服務(wù)實(shí)例執(zhí)行隊(duì)列。組 合服務(wù)實(shí)例是由一組活動(dòng)按照一定的執(zhí)行順序構(gòu)成;步驟C:引擎內(nèi)核依次從組合服務(wù)實(shí)例執(zhí)行隊(duì)列中取出組合服務(wù)實(shí)例,開(kāi)始執(zhí)行 組合服務(wù)實(shí)例,從組合服務(wù)實(shí)例的第一個(gè)活動(dòng)開(kāi)始執(zhí)行;步驟D 設(shè)置活動(dòng)狀態(tài)為準(zhǔn)備執(zhí)行狀態(tài);步驟E 將活動(dòng)加入到活動(dòng)執(zhí)行隊(duì)列;步驟F 活動(dòng)執(zhí)行模塊將活動(dòng)從活動(dòng)執(zhí)行模塊中取出該活動(dòng),設(shè)置活動(dòng)狀態(tài)為執(zhí) 行狀態(tài);步驟G 執(zhí)行活動(dòng)邏輯,活動(dòng)邏輯的執(zhí)行是組合服務(wù)執(zhí)行的核心部分;步驟H 設(shè)置活動(dòng)狀態(tài)為完成狀態(tài);步驟I 判斷是否存在后繼活動(dòng),如果存在后繼活動(dòng),觸發(fā)后繼活動(dòng)轉(zhuǎn)到步驟D。否 則轉(zhuǎn)到步驟J ;步驟J 組合服務(wù)實(shí)例執(zhí)行結(jié)束。所述的步驟G按如下步驟進(jìn)行步驟Gl 按照活動(dòng)的執(zhí)行是否需要中心和執(zhí)行代理之間進(jìn)行信息交互,活動(dòng)可以 分為外部活動(dòng)和內(nèi)部活動(dòng);外部活動(dòng)參與中心與執(zhí)行代理間的消息交互;內(nèi)部活動(dòng)負(fù)責(zé)流 程實(shí)例的執(zhí)行控制,不參與中心和執(zhí)行代理間的消息交互;判斷活動(dòng)類型,如果活動(dòng)類型是 接收活動(dòng)執(zhí)行步驟G2 ;如果活動(dòng)類型是賦值活動(dòng)執(zhí)行步驟G3 ;如果活動(dòng)類型是服務(wù)調(diào)用活動(dòng)執(zhí)行步驟G4 ;如果活動(dòng)類型是服務(wù)應(yīng)答活動(dòng)執(zhí)行步驟G5 ;如果活動(dòng)類型是判斷活動(dòng)執(zhí)行 步驟G6 ;如果活動(dòng)類型是其他內(nèi)部活動(dòng)按照其執(zhí)行邏輯執(zhí)行;步驟G2:執(zhí)行接收活動(dòng)活動(dòng),直接將接收到的服務(wù)請(qǐng)求消息存到指定服務(wù)輸入變
量中;步驟G3 執(zhí)行賦值活動(dòng),組合服務(wù)解析時(shí),該活動(dòng)會(huì)生成參數(shù)轉(zhuǎn)換模型,在活動(dòng) 執(zhí)行時(shí)會(huì)保存該參數(shù)轉(zhuǎn)換模型,執(zhí)行服務(wù)調(diào)用時(shí),再將參數(shù)轉(zhuǎn)換模型發(fā)送給指定的服務(wù)代 理;步驟G4 執(zhí)行服務(wù)調(diào)用(Invoke)活動(dòng),該活動(dòng)是中心節(jié)點(diǎn)即組合服務(wù)執(zhí)行引擎與 服務(wù)代理進(jìn)行直接交互的活動(dòng),涉及到交互協(xié)議的控制流和數(shù)據(jù)流消息;步驟G5 執(zhí)行服務(wù)應(yīng)答活動(dòng),是中心節(jié)點(diǎn)即組合服務(wù)執(zhí)行引擎接收服務(wù)代理發(fā)回 的服務(wù)參數(shù)消息,然后發(fā)送給客戶端服務(wù)請(qǐng)求者;步驟G6 執(zhí)行如果是判斷活動(dòng),中心節(jié)點(diǎn)執(zhí)行判斷活動(dòng),如果判斷活動(dòng)中的用到 之前服務(wù)執(zhí)行結(jié)果中的數(shù)據(jù),需要和服務(wù)代理有一個(gè)交互過(guò)程來(lái)獲取數(shù)據(jù);步驟G7 對(duì)于內(nèi)部活動(dòng),按照?qǐng)?zhí)行邏輯執(zhí)行。所述的步驟G3按如下步驟進(jìn)行如附圖6所示,步驟G31 獲取活動(dòng)生成的參數(shù)轉(zhuǎn)換模型;步驟G32 存儲(chǔ)參數(shù)轉(zhuǎn)換模型;步驟G33 獲取源參數(shù)所在的服務(wù)代理地址;步驟G34 生成目標(biāo)參數(shù)的服務(wù)地址映射;步驟G35 存儲(chǔ)參數(shù)服務(wù)地址映射;步驟G36 活動(dòng)執(zhí)行結(jié)束。所述的步驟G4按如下步驟進(jìn)行如附圖7所示,步驟G41 從參數(shù)轉(zhuǎn)換模型表中獲取參數(shù)轉(zhuǎn)換模型;步驟G42 判斷是否有替換服務(wù),是,生成并存儲(chǔ)新的參數(shù)轉(zhuǎn)換模型和參數(shù)服務(wù)地 址映射,轉(zhuǎn)步驟G44,否,轉(zhuǎn)步驟G43 ;步驟G43 判斷原有服務(wù)是否可用,是,轉(zhuǎn)步驟G44,否,轉(zhuǎn)步驟G49 ;步驟G44:判斷服務(wù)參數(shù)是否在中心節(jié)點(diǎn)即組合服務(wù)執(zhí)行引擎中,是,轉(zhuǎn)步驟G45, 否,轉(zhuǎn)步驟G46 ;步驟G45 封裝服務(wù)參數(shù)輸入消息,發(fā)送給服務(wù)代理,轉(zhuǎn)步驟G48 ;步驟G46 發(fā)送服務(wù)參數(shù)傳遞通知消息給服務(wù)代理;步驟G47 等待接收服務(wù)完成消息進(jìn)行超時(shí)計(jì)時(shí),是否超時(shí),是,轉(zhuǎn)步驟G42,否,轉(zhuǎn) 步驟G48 ;步驟G48 接收到服務(wù)完成消息,判斷服務(wù)是否執(zhí)行成功,是,轉(zhuǎn)步驟G410,否,轉(zhuǎn) 步驟G42 ;步驟G49 發(fā)送服務(wù)出錯(cuò)消息;步驟G410 活動(dòng)執(zhí)行結(jié)束。所述的步驟G5按如下步驟進(jìn)行如附圖8所示,步驟G51 從參數(shù)轉(zhuǎn)換模型表中獲取參數(shù)轉(zhuǎn)換模型;步驟G52 判斷參數(shù)是否存在引擎中,是,轉(zhuǎn)步驟G53,否,轉(zhuǎn)步驟G55 ;
步驟G53 進(jìn)行參數(shù)轉(zhuǎn)換,封裝服務(wù)響應(yīng)消息;步驟G54 發(fā)送服務(wù)響應(yīng)消息給服務(wù)請(qǐng)求者,轉(zhuǎn)步驟G59 ;步驟G55 獲取參數(shù)所在服務(wù)代理地址,發(fā)送服務(wù)參數(shù)傳遞通知消息給該服務(wù)代 理;步驟G56 等待接收服務(wù)參數(shù)消息,進(jìn)行超時(shí)計(jì)時(shí),是否超時(shí),是,轉(zhuǎn)步驟G57,否, 轉(zhuǎn)步驟G58 ;步驟G57 發(fā)送服務(wù)出錯(cuò)消息給服務(wù)請(qǐng)求者,轉(zhuǎn)步驟G59 ;步驟G58 接收服務(wù)參數(shù)消息,封裝服務(wù)響應(yīng)消息,轉(zhuǎn)步驟G54 ;步驟G59 活動(dòng)執(zhí)行結(jié)束。所述的步驟G6按如下步驟進(jìn)行如附圖9所示,步驟G61 判斷所有條件是否完畢,是,轉(zhuǎn)步驟G65,否,轉(zhuǎn)步驟G62 ;步驟G62 根據(jù)條件表達(dá)式,封裝服務(wù)參數(shù)提取消息,發(fā)送給服務(wù)代理;步驟G63:接收服務(wù)參數(shù)回傳消息,判斷條件表達(dá)式是否為真,是,轉(zhuǎn)步驟G64,否, 轉(zhuǎn)步驟G61 ;步驟G64 執(zhí)行滿足該判斷條件的后繼活動(dòng);步驟G65 活動(dòng)執(zhí)行結(jié)束。實(shí)驗(yàn)結(jié)果參見(jiàn)附圖10,圖10為不同數(shù)據(jù)傳輸量情況下組合服務(wù)平均執(zhí)行時(shí)間的 變化??梢钥闯?,隨著數(shù)據(jù)傳輸量變大,集中式的組合服務(wù)執(zhí)行方法的平均執(zhí)行時(shí)間增長(zhǎng)很 快,而本發(fā)明所提出的控制流集中數(shù)據(jù)流分散的組合服務(wù)執(zhí)行方法的平均執(zhí)行時(shí)間增長(zhǎng)很 慢。這是由于在我們的組合服務(wù)執(zhí)行方法中,數(shù)據(jù)會(huì)根據(jù)組合邏輯直接由其生產(chǎn)者發(fā)送給 其消費(fèi)者而無(wú)需經(jīng)過(guò)執(zhí)行引擎中轉(zhuǎn),從而能夠提高組合服務(wù)的執(zhí)行效率,縮短組合服務(wù)的 執(zhí)行時(shí)間。
權(quán)利要求
1.一種控制流集中數(shù)據(jù)流分布的組合服務(wù)執(zhí)行系統(tǒng),其特征在于該系統(tǒng)包括一個(gè)中 心節(jié)點(diǎn)和分布在網(wǎng)絡(luò)中不同節(jié)點(diǎn)上的多個(gè)服務(wù)代理沖心節(jié)點(diǎn)即組合服務(wù)執(zhí)行引擎,包括 解析模塊、集成層模塊、運(yùn)行時(shí)模塊和持久化模塊,服務(wù)代理包括服務(wù)參數(shù)處理模塊、協(xié)議 消息處理模塊和服務(wù)調(diào)用模塊;其中解析模塊,負(fù)責(zé)對(duì)組合服務(wù)進(jìn)行解析,通過(guò)中心節(jié)點(diǎn)即組合服務(wù)執(zhí)行引擎對(duì)外提 供的組合服務(wù)部署解析接口,接收組合服務(wù)部署文件,將其解析成組合服務(wù)模板,建立內(nèi)存 模型,同時(shí)生成參數(shù)轉(zhuǎn)換模型;集成層模塊,負(fù)責(zé)中心節(jié)點(diǎn)與外界的交互;運(yùn)行時(shí)模塊,負(fù)責(zé)中心節(jié)點(diǎn)即組合服務(wù)執(zhí)行引擎與服務(wù)代理之間的交互; 持久化模塊,負(fù)責(zé)中心節(jié)點(diǎn)即組合服務(wù)執(zhí)行引擎內(nèi)核與底層數(shù)據(jù)庫(kù)進(jìn)行交互,以跟蹤 記錄組合服務(wù)實(shí)例的執(zhí)行過(guò)程和狀態(tài);服務(wù)參數(shù)處理模塊,負(fù)責(zé)服務(wù)執(zhí)行結(jié)果的存儲(chǔ)以及服務(wù)傳遞參數(shù)的數(shù)據(jù)轉(zhuǎn)換; 協(xié)議消息處理模塊,負(fù)責(zé)協(xié)議消息的解析、封裝、發(fā)送和接收; 服務(wù)調(diào)用模塊,負(fù)責(zé)對(duì)具體的服務(wù)進(jìn)行調(diào)用,以完成服務(wù)功能。
2.按權(quán)利要求1所述的控制流集中數(shù)據(jù)流分布的組合服務(wù)執(zhí)行系統(tǒng),其特征在于所 述的集成層模塊包括服務(wù)請(qǐng)求消息處理子模塊、服務(wù)替換調(diào)整子模塊和協(xié)議消息處理子模 塊;服務(wù)請(qǐng)求消息處理子模塊,負(fù)責(zé)接收服務(wù)請(qǐng)求消息和發(fā)送服務(wù)響應(yīng)消息; 服務(wù)替換調(diào)整子模塊,負(fù)責(zé)接收服務(wù)替換調(diào)整消息,對(duì)其進(jìn)行解析封裝后,加入到服務(wù) 替換調(diào)整庫(kù),以支持組合服務(wù)執(zhí)行過(guò)程中的服務(wù)替換;協(xié)議消息處理子模塊,是中心節(jié)點(diǎn)即組合服務(wù)執(zhí)行引擎與服務(wù)代理進(jìn)行交互的中介, 負(fù)責(zé)接收發(fā)送協(xié)議消息,對(duì)協(xié)議消息進(jìn)行解析、封裝和路由匹配;所述的運(yùn)行時(shí)模塊包括組合服務(wù)管理子模塊、組合服務(wù)實(shí)例管理子模塊和組合服務(wù)實(shí) 例管理子模塊;組合服務(wù)管理子模塊,負(fù)責(zé)對(duì)組合服務(wù)模板添加、刪除和更新; 組合服務(wù)實(shí)例管理子模塊,負(fù)責(zé)進(jìn)行組合服務(wù)實(shí)例的生命周期管理,包括啟動(dòng)、暫停、 恢復(fù)、停止和銷毀;組合服務(wù)實(shí)例調(diào)度子模塊,負(fù)責(zé)根據(jù)組合服務(wù)的執(zhí)行邏輯,控制組合服務(wù)實(shí)例中各個(gè) 活動(dòng)的執(zhí)行順序。
3.按權(quán)利要求1所述的控制流集中數(shù)據(jù)流分布的組合服務(wù)執(zhí)行系統(tǒng),其特征在于所 述的服務(wù)參數(shù)處理模塊包括服務(wù)參數(shù)管理子模塊、服務(wù)執(zhí)行條件判定子模塊,參數(shù)轉(zhuǎn)換子 模塊和數(shù)據(jù)消息封裝子模塊;服務(wù)參數(shù)管理子模塊,負(fù)責(zé)接收到的服務(wù)參數(shù)的持久化,以及服務(wù)參數(shù)的查詢及更新;服務(wù)執(zhí)行條件判定子模塊,負(fù)責(zé)服務(wù)執(zhí)行條件的判斷,接收到服務(wù)參數(shù)輸入消息的時(shí) 候,根據(jù)服務(wù)輸入?yún)?shù)是否完整,判斷服務(wù)是否可以執(zhí)行;參數(shù)轉(zhuǎn)換子模塊,根據(jù)參數(shù)轉(zhuǎn)換模型,實(shí)現(xiàn)服務(wù)參數(shù)間相互轉(zhuǎn)換; 數(shù)據(jù)消息封裝子模塊,負(fù)責(zé)封裝服務(wù)參數(shù)輸入消息; 所述的協(xié)議消息處理模塊包括數(shù)據(jù)流收發(fā)子模塊和控制流收發(fā)子模塊;其中數(shù)據(jù)流收發(fā)子模塊負(fù)責(zé)服務(wù)代理間數(shù)據(jù)傳遞; 控制流收發(fā)子模塊負(fù)責(zé)和中心節(jié)點(diǎn)交互控制消息。
4.采用權(quán)利要求1所述的控制流集中數(shù)據(jù)流分布的組合服務(wù)執(zhí)行系統(tǒng)的執(zhí)行方法,其 特征在于,按如下步驟進(jìn)行步驟A 首先對(duì)組合服務(wù)部署文件進(jìn)行解析,通過(guò)解析模塊,對(duì)組合服務(wù)部署文件進(jìn)行 封裝,創(chuàng)建組合服務(wù)模板;步驟B 引擎通過(guò)Web服務(wù)的方式對(duì)外發(fā)布接口,接收服務(wù)請(qǐng)求消息,根據(jù)服務(wù)請(qǐng)求消 息,查找組合服務(wù)模板,創(chuàng)建組合服務(wù)實(shí)例,并將其加入到組合服務(wù)實(shí)例執(zhí)行隊(duì)列;組合服 務(wù)實(shí)例是由一組活動(dòng)按照一定的執(zhí)行順序構(gòu)成;步驟C:引擎內(nèi)核依次從組合服務(wù)實(shí)例執(zhí)行隊(duì)列中取出組合服務(wù)實(shí)例,開(kāi)始執(zhí)行組合 服務(wù)實(shí)例,從組合服務(wù)實(shí)例的第一個(gè)活動(dòng)開(kāi)始執(zhí)行; 步驟D 設(shè)置活動(dòng)狀態(tài)為準(zhǔn)備執(zhí)行狀態(tài); 步驟E 將活動(dòng)加入到活動(dòng)執(zhí)行隊(duì)列;步驟F 活動(dòng)執(zhí)行模塊將活動(dòng)從活動(dòng)執(zhí)行模塊中取出該活動(dòng),設(shè)置活動(dòng)狀態(tài)為執(zhí)行狀態(tài);步驟G 執(zhí)行活動(dòng)邏輯;步驟H 設(shè)置活動(dòng)狀態(tài)為完成狀態(tài);步驟I 判斷是否存在后繼活動(dòng),如果存在后繼活動(dòng),觸發(fā)后繼活動(dòng)轉(zhuǎn)到步驟D ;否則轉(zhuǎn) 到步驟J ;步驟J 組合服務(wù)實(shí)例執(zhí)行結(jié)束。
5.按權(quán)利要求4所述的控制流集中數(shù)據(jù)流分布的組合服務(wù)執(zhí)行系統(tǒng)的執(zhí)行方法,其特 征在于所述的步驟G按如下步驟進(jìn)行步驟Gl 按照活動(dòng)的執(zhí)行是否需要中心和執(zhí)行代理之間進(jìn)行信息交互,活動(dòng)可以分為 外部活動(dòng)和內(nèi)部活動(dòng);外部活動(dòng)參與中心與執(zhí)行代理間的消息交互;內(nèi)部活動(dòng)負(fù)責(zé)流程實(shí) 例的執(zhí)行控制,不參與中心和執(zhí)行代理間的消息交互;判斷活動(dòng)類型,如果活動(dòng)類型是接收 活動(dòng)執(zhí)行步驟G2 ;如果活動(dòng)類型是賦值活動(dòng)執(zhí)行步驟G3 ;如果活動(dòng)類型是服務(wù)調(diào)用活動(dòng)執(zhí) 行步驟G4 ;如果活動(dòng)類型是服務(wù)應(yīng)答活動(dòng)執(zhí)行步驟G5 ;如果活動(dòng)類型是判斷活動(dòng)執(zhí)行步驟 G6 ;如果活動(dòng)類型是其他內(nèi)部活動(dòng)按照其執(zhí)行邏輯執(zhí)行;步驟G2:執(zhí)行接收活動(dòng)活動(dòng),直接將接收到的服務(wù)請(qǐng)求消息存到指定服務(wù)輸入變量中;步驟G3 執(zhí)行賦值活動(dòng),組合服務(wù)解析時(shí),該活動(dòng)會(huì)生成參數(shù)轉(zhuǎn)換模型,在活動(dòng)執(zhí)行時(shí) 會(huì)保存該參數(shù)轉(zhuǎn)換模型,執(zhí)行服務(wù)調(diào)用時(shí),再將參數(shù)轉(zhuǎn)換模型發(fā)送給指定的服務(wù)代理;步驟G4 執(zhí)行服務(wù)調(diào)用(Invoke)活動(dòng),該活動(dòng)是中心節(jié)點(diǎn)即組合服務(wù)執(zhí)行引擎與服務(wù) 代理進(jìn)行直接交互的活動(dòng),涉及到交互協(xié)議的控制流和數(shù)據(jù)流消息;步驟G5 執(zhí)行服務(wù)應(yīng)答活動(dòng),是中心節(jié)點(diǎn)即組合服務(wù)執(zhí)行引擎接收服務(wù)代理發(fā)回的服 務(wù)參數(shù)消息,然后發(fā)送給客戶端服務(wù)請(qǐng)求者;步驟G6 執(zhí)行如果是判斷活動(dòng),中心節(jié)點(diǎn)執(zhí)行判斷活動(dòng),如果判斷活動(dòng)中的用到之前 服務(wù)執(zhí)行結(jié)果中的數(shù)據(jù),需要和服務(wù)代理有一個(gè)交互過(guò)程來(lái)獲取數(shù)據(jù); 步驟G7 對(duì)于內(nèi)部活動(dòng),按照?qǐng)?zhí)行邏輯執(zhí)行。
6.按權(quán)利要求5所述的控制流集中數(shù)據(jù)流分布的組合服務(wù)執(zhí)行系統(tǒng)的執(zhí)行方法,其特 征在于所述的步驟G3按如下步驟進(jìn)行步驟G31 獲取活動(dòng)生成的參數(shù)轉(zhuǎn)換模型; 步驟G32:存儲(chǔ)參數(shù)轉(zhuǎn)換模型; 步驟G33 獲取源參數(shù)所在的服務(wù)代理地址; 步驟G34 生成目標(biāo)參數(shù)的服務(wù)地址映射; 步驟G35 存儲(chǔ)參數(shù)服務(wù)地址映射; 步驟G36:活動(dòng)執(zhí)行結(jié)束。
7.按權(quán)利要求5所述的控制流集中數(shù)據(jù)流分布的組合服務(wù)執(zhí)行系統(tǒng)的執(zhí)行方法,其特 征在于所述的步驟G4按如下步驟進(jìn)行步驟G41 從參數(shù)轉(zhuǎn)換模型表中獲取參數(shù)轉(zhuǎn)換模型;步驟G42 判斷是否有替換服務(wù),是,生成并存儲(chǔ)新的參數(shù)轉(zhuǎn)換模型和參數(shù)服務(wù)地址映 射,轉(zhuǎn)步驟G44,否,轉(zhuǎn)步驟G43 ;步驟G43 判斷原有服務(wù)是否可用,是,轉(zhuǎn)步驟G44,否,轉(zhuǎn)步驟G49 ; 步驟G44:判斷服務(wù)參數(shù)是否在中心節(jié)點(diǎn)即組合服務(wù)執(zhí)行引擎中,是,轉(zhuǎn)步驟G45,否, 轉(zhuǎn)步驟G46 ;步驟G45 封裝服務(wù)參數(shù)輸入消息,發(fā)送給服務(wù)代理,轉(zhuǎn)步驟G48 ; 步驟G46 發(fā)送服務(wù)參數(shù)傳遞通知消息給服務(wù)代理;步驟G47 等待接收服務(wù)完成消息進(jìn)行超時(shí)計(jì)時(shí),是否超時(shí),是,轉(zhuǎn)步驟G42,否,轉(zhuǎn)步驟G48 ;步驟G48 接收到服務(wù)完成消息,判斷服務(wù)是否執(zhí)行成功,是,轉(zhuǎn)步驟G410,否,轉(zhuǎn)步驟G42 ;步驟G49:發(fā)送服務(wù)出錯(cuò)消息; 步驟G410:活動(dòng)執(zhí)行結(jié)束。
8.按權(quán)利要求5所述的控制流集中數(shù)據(jù)流分布的組合服務(wù)執(zhí)行系統(tǒng)的執(zhí)行方法,其特 征在于所述的步驟G5按如下步驟進(jìn)行步驟G51 從參數(shù)轉(zhuǎn)換模型表中獲取參數(shù)轉(zhuǎn)換模型;步驟G52 判斷參數(shù)是否存在引擎中,是,轉(zhuǎn)步驟G53,否,轉(zhuǎn)步驟G55 ;步驟G53 進(jìn)行參數(shù)轉(zhuǎn)換,封裝服務(wù)響應(yīng)消息;步驟G54 發(fā)送服務(wù)響應(yīng)消息給服務(wù)請(qǐng)求者,轉(zhuǎn)步驟G59 ;步驟G55 獲取參數(shù)所在服務(wù)代理地址,發(fā)送服務(wù)參數(shù)傳遞通知消息給該服務(wù)代理; 步驟G56 等待接收服務(wù)參數(shù)消息,進(jìn)行超時(shí)計(jì)時(shí),是否超時(shí),是,轉(zhuǎn)步驟G57,否,轉(zhuǎn)步 驟 G58 ;步驟G57 發(fā)送服務(wù)出錯(cuò)消息給服務(wù)請(qǐng)求者,轉(zhuǎn)步驟G59 ; 步驟G58 接收服務(wù)參數(shù)消息,封裝服務(wù)響應(yīng)消息,轉(zhuǎn)步驟G54 ; 步驟G59 活動(dòng)執(zhí)行結(jié)束。
9.按權(quán)利要求5所述的控制流集中數(shù)據(jù)流分布的組合服務(wù)執(zhí)行系統(tǒng)的執(zhí)行方法,其特 征在于所述的步驟G6按如下步驟進(jìn)行步驟G61 判斷所有條件是否完畢,是,轉(zhuǎn)步驟G65,否,轉(zhuǎn)步驟G62 ;步驟G62 根據(jù)條件表達(dá)式,封裝服務(wù)參數(shù)提取消息,發(fā)送給服務(wù)代理; 步驟G63 接收服務(wù)參數(shù)回傳消息,判斷條件表達(dá)式是否為真,是,轉(zhuǎn)步驟G64,否,轉(zhuǎn)步 驟 G61 ;步驟G64 執(zhí)行滿足該判斷條件的后繼活動(dòng); 步驟G65 活動(dòng)執(zhí)行結(jié)束。
全文摘要
一種控制流集中數(shù)據(jù)流分布的組合服務(wù)執(zhí)行系統(tǒng)及執(zhí)行方法,該系統(tǒng)包括一個(gè)中心節(jié)點(diǎn)和分布在網(wǎng)絡(luò)中不同節(jié)點(diǎn)上的多個(gè)服務(wù)代理。本發(fā)明的優(yōu)點(diǎn)通過(guò)發(fā)送控制消息通知服務(wù)何時(shí)、往何處發(fā)送數(shù)據(jù),從而既能夠解決分布式執(zhí)行方式缺乏對(duì)組合服務(wù)整體運(yùn)行情況的監(jiān)控能力,又能夠解決集中式執(zhí)行方式由于數(shù)據(jù)流都經(jīng)過(guò)中心節(jié)點(diǎn)中轉(zhuǎn)而易存在系統(tǒng)性能瓶頸的問(wèn)題。同時(shí),該方法采用中心節(jié)點(diǎn)控制組合服務(wù)的全局執(zhí)行邏輯,能夠兼容當(dāng)前的主流組合服務(wù)執(zhí)行語(yǔ)言BPEL,從而可以有效地支持組合服務(wù)應(yīng)用的執(zhí)行。
文檔編號(hào)H04L12/58GK102088475SQ201010563748
公開(kāi)日2011年6月8日 申請(qǐng)日期2010年11月29日 優(yōu)先權(quán)日2010年11月29日
發(fā)明者代鈺, 張斌, 楊雷, 那俊, 郭軍, 高巖 申請(qǐng)人:東北大學(xué)