專利名稱:用于soa注冊(cè)處中存儲(chǔ)的xml對(duì)象的一致性強(qiáng)制系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種用于SOA注冊(cè)處中存儲(chǔ)的XML對(duì)象的一致性強(qiáng)制系統(tǒng)和相應(yīng)的 方法。
背景技術(shù):
復(fù)雜的任務(wù),例如制造復(fù)雜的技術(shù)產(chǎn)品,像汽車、飛機(jī)等,通常借助于分布式 計(jì)算環(huán)境,即各自處理某種功能(例如作為全部制造的一部分控制數(shù)字化編程的機(jī)器工 具)的單獨(dú)計(jì)算機(jī)系統(tǒng)的網(wǎng)絡(luò)的幫助來(lái)完成。這種復(fù)雜的交互工作計(jì)算環(huán)境不僅可在邏 輯上分布(即每個(gè)計(jì)算機(jī)系統(tǒng)處理某個(gè)子任務(wù)),而且可在物理上分布。例如,在制造汽 車期間,某些計(jì)算系統(tǒng)可位于汽車制造廠以控制汽車底盤(pán)和引擎的生產(chǎn),而其它計(jì)算系 統(tǒng)可位于各個(gè)供應(yīng)商的地點(diǎn)用于控制汽車座位或汽車娛樂(lè)部件的生產(chǎn)。計(jì)算系統(tǒng)可經(jīng)由 網(wǎng)絡(luò)(例如因特網(wǎng))連接,以便協(xié)調(diào)要執(zhí)行的處理任務(wù)的順序。為了使這種復(fù)雜的分布式計(jì)算環(huán)境正確地工作,必須明確地定義必須執(zhí)行的整 個(gè)處理順序,以便最終得到期望的結(jié)果,例如完成的汽車。同時(shí),這種處理順序必須保 持靈活,以使得例如當(dāng)為了汽車的某些部件選擇新的供應(yīng)商時(shí),它可容易地適應(yīng)。這在 可能包括由不同方管理的數(shù)千個(gè)單獨(dú)計(jì)算系統(tǒng)的大型計(jì)算環(huán)境的情況下尤其重要,其中 在一方面需要由不同的各方自己來(lái)調(diào)整處理順序,例如一個(gè)特定供應(yīng)商可調(diào)整分配給他 的處理任務(wù),以便使它們適應(yīng)他的獨(dú)特的裝配線。然而,另一方面,絕對(duì)關(guān)鍵性的是, 不能以不允許的方式來(lái)調(diào)整處理順序,即以不再提供處理順序的總體結(jié)果這樣的方式。 尤其是在制造復(fù)雜產(chǎn)品(例如汽車)的情況下,這可導(dǎo)致生產(chǎn)中斷,或者最壞的情況,對(duì) 于各個(gè)計(jì)算系統(tǒng)和所連接的機(jī)器工具設(shè)備造成嚴(yán)重的損害。在面向服務(wù)的架構(gòu)(SOA)的領(lǐng)域中,因此已知的是,將處理任務(wù)的定義作為 SOA注冊(cè)處內(nèi)的對(duì)象來(lái)維護(hù),這對(duì)于協(xié)調(diào)和控制處理任務(wù)的所需順序是有幫助的。然 而,已知的SOA注冊(cè)處不提供確保不以未允許的方式調(diào)整處理任務(wù)的預(yù)定義順序的方式。因此,本發(fā)明潛在的技術(shù)問(wèn)題是提供這樣的一種系統(tǒng)和方法,其確保可靈活地 調(diào)整SOA注冊(cè)處中存儲(chǔ)的信息,而同時(shí)保證調(diào)整限于允許的范圍,由此至少部分地克服 了現(xiàn)有技術(shù)的上述缺點(diǎn)。
發(fā)明內(nèi)容
根據(jù)本發(fā)明的一個(gè)方面,該問(wèn)題通過(guò)用于SOA注冊(cè)處中存儲(chǔ)的至少一個(gè)XML對(duì) 象的一致性強(qiáng)制系統(tǒng)來(lái)解決,所述至少一個(gè)XML對(duì)象包括多個(gè)處理任務(wù)XML元素,這 多個(gè)處理任務(wù)XML元素各自定義了要由SOA的部件執(zhí)行的至少一個(gè)處理任務(wù)。在權(quán)利 要求1的實(shí)施例中,一致性強(qiáng)制系統(tǒng)包括a.適于接收更新的XML對(duì)象的接口,該更新的XML對(duì)象包括未包括在SOA注 冊(cè)處中存儲(chǔ)的至少一個(gè)XML對(duì)象中的,定義了要由SOA的部件執(zhí)行的至少一個(gè)另外的處理任務(wù)的至少一個(gè)另外的處理任務(wù)XML元素;b.適于查詢SOA注冊(cè)處以便獲得一個(gè)或多個(gè)預(yù)定義處理任務(wù)標(biāo)識(shí)符的確認(rèn)單 元;c.其中確認(rèn)單元還適于將所更新XML對(duì)象的至少一個(gè)另外的處理任務(wù)XML元 素的處理任務(wù)標(biāo)識(shí)符與從SOA注冊(cè)處獲得的一個(gè)或多個(gè)預(yù)定義的處理任務(wù)標(biāo)識(shí)符相匹 配,并且適于取決于匹配結(jié)果來(lái)認(rèn)可或拒絕所更新的XML對(duì)象。因此,實(shí)施例定義了一種一致性強(qiáng)制系統(tǒng),其便利了 SOA注冊(cè)處中XML對(duì)象的 靈活適應(yīng),例如定義了一種復(fù)雜的制造過(guò)程,其中系統(tǒng)同時(shí)確保不能以未允許方式改變 XML對(duì)象。為此,SOA注冊(cè)處存儲(chǔ)一個(gè)或多個(gè)各自包括多個(gè)處理任務(wù)XML元素的XML 對(duì)象。處理任務(wù)元素各自定義SOA的部件(例如計(jì)算機(jī)、客戶端和/或服務(wù)器)為了執(zhí) 行全部處理而要執(zhí)行的一個(gè)或多個(gè)處理任務(wù)。一致性強(qiáng)制系統(tǒng)的接口接收更新的XML對(duì)象,該更新的XML對(duì)象包括在一個(gè) 或多個(gè)相應(yīng)的另外處理任務(wù)XML元素中定義的用于SOA部件的一個(gè)或多個(gè)另外的處理任 務(wù)(相對(duì)于SOA注冊(cè)處中存儲(chǔ)的原始XML對(duì)象)。每個(gè)處理任務(wù)XML元素優(yōu)選地包括 處理任務(wù)標(biāo)識(shí)符,例如唯一 ID和/或類型定義。而且,一致性強(qiáng)制系統(tǒng)的確認(rèn)單元可查 詢SOA注冊(cè)處以便接收一個(gè)或多個(gè)處理任務(wù)標(biāo)識(shí)符,優(yōu)選地以預(yù)定義處理任務(wù)標(biāo)識(shí)符的 列表的形式。確認(rèn)單元然后可將另外處理任務(wù)XML元素的處理任務(wù)標(biāo)識(shí)符與從SOA注 冊(cè)處接收的列表匹配,并且可確定認(rèn)可還是拒絕更新的XML對(duì)象。查詢SOA注冊(cè)處可 包括將XQuery提交到SOA注冊(cè)處,調(diào)用SOA注冊(cè)處提供的API(應(yīng)用編程接口),或者 任何其它適當(dāng)?shù)牟樵儥C(jī)制,如將在下面的詳細(xì)描述中進(jìn)一步說(shuō)明的。為此,在一個(gè)方面中,如果至少一個(gè)另外處理任務(wù)XML元素的處理任務(wù)標(biāo)識(shí)符 不匹配從SOA注冊(cè)處獲得的至少一個(gè)預(yù)定義處理任務(wù)標(biāo)識(shí)符,確認(rèn)單元可適于拒絕更新 的XML對(duì)象。因此,預(yù)定義處理任務(wù)標(biāo)識(shí)符的列表可視為“白列表”。換言之,如果 在預(yù)定義處理任務(wù)標(biāo)識(shí)符的“白列表”中明確地提及另外的處理任務(wù)XML元素(即,如 果另外的處理任務(wù)XML元素的處理任務(wù)標(biāo)識(shí)符包括在列表中),才認(rèn)為它是有效的。這 方面是尤其有利的,因?yàn)槔缭试S想要更新XML對(duì)象的制造供應(yīng)商以靈活方式實(shí)現(xiàn)此, 同時(shí)可維護(hù)“白列表”的汽車制造商保持對(duì)供應(yīng)商可執(zhí)行的調(diào)整的范圍的控制。而且,XML對(duì)象和/或更新的XML對(duì)象以及它們的處理任務(wù)XML元素,可分 別包括對(duì)另外對(duì)象的引用,例如配置文件。如果是這種情況,優(yōu)選地,例如通過(guò)解析引 用并且還確認(rèn)所引用對(duì)象的內(nèi)容,確認(rèn)至少一個(gè)另外的處理任務(wù)XML元素和從SOA注冊(cè) 處獲得的預(yù)定義處理任務(wù)標(biāo)識(shí)符之間的匹配也考慮被進(jìn)一步引用的對(duì)象。這方面的示例 在下面的詳細(xì)描述中提供。另外,或作為候選,如果至少一個(gè)另外的處理任務(wù)XML元素的處理任務(wù)標(biāo)識(shí)符 匹配從SOA注冊(cè)處獲得的至少一個(gè)預(yù)定義處理任務(wù)標(biāo)識(shí)符,確認(rèn)單元可適于拒絕所更新 對(duì)象。因此,在該情況下,預(yù)定義處理任務(wù)標(biāo)識(shí)符的列表可視為“黑列表”,即默認(rèn)允 許任何另外的處理任務(wù)XML元素,除非它在“黑列表”中明確地被提及。應(yīng)當(dāng)理解, 該方面以稍微更少的控制成本獲得了更大的靈活性。不管上面給出的候選方式,確認(rèn)單元還可適于只有當(dāng)認(rèn)可所更新的XML對(duì)象 時(shí),在SOA注冊(cè)處中存儲(chǔ)所更新的XML對(duì)象和/或替換SOA注冊(cè)處中存儲(chǔ)的至少一個(gè)XML對(duì)象。因此,有效地防止被拒絕的所更新XML對(duì)象存儲(chǔ)在SOA注冊(cè)處中,以 便確保該無(wú)效的所更新XML對(duì)象不能妨礙SOA注冊(cè)處控制的處理任務(wù)。優(yōu)選地,所更 新XML對(duì)象在由一致性強(qiáng)制系統(tǒng)的確認(rèn)單元認(rèn)可之后,直接覆蓋SOA注冊(cè)處內(nèi)的原始 XML對(duì)象。這方面確保所更新的XML對(duì)象是立即“起作用的”,即,立即根據(jù)所更新 XML對(duì)象來(lái)執(zhí)行相應(yīng)的處理任務(wù)。另外,或作為候選,被拒絕的所更新XML對(duì)象也可存儲(chǔ)在SOA注冊(cè)處中,艮口, 即使它包括無(wú)效的擴(kuò)展,如將在下面的詳細(xì)描述中進(jìn)一步說(shuō)明的。在該情況下,可通知 負(fù)責(zé)更新的部件或用戶,以便能夠校正被拒絕的所更新XML對(duì)象,如將在下面的詳細(xì)描 述中進(jìn)一步說(shuō)明的。在本發(fā)明的另一個(gè)方面中,如果所更新的XML對(duì)象包括未包括在SOA注冊(cè)處 中存儲(chǔ)的至少一個(gè)XML對(duì)象中的至少一個(gè)終止步驟XML元素,所述至少一個(gè)終止步驟 XML元素定義了要由SOA的部件執(zhí)行的處理任務(wù)的順序的端點(diǎn),確認(rèn)單元適于拒絕所更 新的XML對(duì)象。終止步驟XML元素定義了 SOA注冊(cè)處中的XML對(duì)象定義的處理順序的 端點(diǎn),即它確定一系列中的最終處理任務(wù)。一個(gè)示例是稱為“delivermanufacturedcar(交 付所制造汽車)”的終止步驟XML元素作為用于制造汽車的處理順序的端點(diǎn)。因此,不 允許并且因此由確認(rèn)單元拒絕包括新的終止步驟XML元素(即,未包括在SOA注冊(cè)處中 的相應(yīng)原始XML對(duì)象中的終止步驟XML元素)的所更新XML對(duì)象。否則,處理順序 (即相應(yīng)的XML對(duì)象)可以它在獲得原本期望的結(jié)果之前結(jié)束這樣的方式來(lái)調(diào)整,這將 導(dǎo)致整個(gè)處理的故障。另外,或作為候選,如果所更新的XML對(duì)象包括除了處理任務(wù)XML元素之外 的至少一個(gè)XML元素,確認(rèn)單元還可適于拒絕所更新的XML對(duì)象。這方面對(duì)于XML 對(duì)象的適應(yīng)性施加了甚至更嚴(yán)格的限制,因?yàn)樵试S添加唯一和專門(mén)的新處理任務(wù)XML元 素,并且拒絕任何其它調(diào)整。在本發(fā)明的又另一方面中,如果SOA注冊(cè)處中存儲(chǔ)的XML對(duì)象包括未包括在至 少一個(gè)更新的XML對(duì)象中的至少一個(gè)處理任務(wù)XML元素,確認(rèn)單元適于拒絕所更新的 XML對(duì)象。換言之,不允許從更新的XML對(duì)象中刪除在原始XML對(duì)象中定義的處理 任務(wù)XML元素。這方面確保了沒(méi)有關(guān)鍵任務(wù)的處理任務(wù)從整個(gè)處理順序刪除,以使得在 任何時(shí)候保證,如原本期望地從開(kāi)始到結(jié)束執(zhí)行處理順序。而且,SOA注冊(cè)處中存儲(chǔ)的至少一個(gè)XML對(duì)象可包括至少一個(gè)轉(zhuǎn)變XML元 素,該至少一個(gè)轉(zhuǎn)變XML元素引用至少一個(gè)源處理任務(wù)XML元素和至少一個(gè)目標(biāo)處理 任務(wù)XML元素,以便定義相應(yīng)處理任務(wù)XML元素之間的順序。因此,在SOA注冊(cè)處 中的XML對(duì)象中明確地定義各個(gè)處理任務(wù)之間的期望順序。為此,至少一個(gè)轉(zhuǎn)變XML 元素引用兩個(gè)處理任務(wù)XML元素,即源和目標(biāo)元素。優(yōu)選地,處理任務(wù)XML元素各自 包括定義唯一 ID的XML屬性,并且轉(zhuǎn)變XML元素包括值設(shè)置為各個(gè)處理任務(wù)XML元 素的相應(yīng)唯一 ID的XML屬性“source”和XML屬性“target”。在另一方面中,如果至少一個(gè)更新XML對(duì)象的至少一個(gè)另外的處理任務(wù)XML 元素不在至少一個(gè)轉(zhuǎn)變XML元素定義的順序內(nèi),確認(rèn)單元可適于拒絕所更新的XML對(duì) 象。因此,XML對(duì)象的調(diào)整限于在兩個(gè)特定處理任務(wù)XML元素(即轉(zhuǎn)變XML元素定 義的源和目標(biāo)處理任務(wù)XML元素)之間添加另外的處理任務(wù)XML元素。應(yīng)當(dāng)理解,也可能限制對(duì)XML對(duì)象的更新,以使得另外的處理任務(wù)XML元素僅可插入在可能由一系 列轉(zhuǎn)變XML元素和中間處理任務(wù)XML元素連接的位于處理順序內(nèi)任何地方的兩個(gè)特定 處理任務(wù)XML元素之間。為此,確認(rèn)單元可參數(shù)化為將兩個(gè)特定處理任務(wù)XML元素定 義為“邊界”,即確認(rèn)單元可適于確保所更新的XML對(duì)象僅包括在這兩個(gè)參數(shù)化的、預(yù) 定義“邊界”處理任務(wù)XML元素之間的另外處理任務(wù)XML元素。而且,如果所更新的XML對(duì)象包括至少一個(gè)另外的轉(zhuǎn)變XML元素,該至少一 個(gè)另外的轉(zhuǎn)變XML元素定義了不通向SOA注冊(cè)處中存儲(chǔ)的XML對(duì)象中定義的終止步驟 XML元素的處理任務(wù)的順序,確認(rèn)單元可適于拒絕所更新的XML對(duì)象。因此,在這方 面中,確認(rèn)單元能夠避免“死胡同”的引入,即以下面這樣的方式對(duì)所更新XML對(duì)象的 調(diào)整,存在到達(dá)沒(méi)有定義后續(xù)處理步驟的處理步驟的處理步驟順序。僅僅對(duì)于終止步驟 允許這種場(chǎng)景。相應(yīng)無(wú)效的所更新XML對(duì)象可導(dǎo)致這樣的情況,整個(gè)處理不能完成, 和/或順序中的最后處理任務(wù)不能完成它的處理,因?yàn)闆](méi)有定義隨后的處理步驟id。在 該情況下,最后的處理步驟將運(yùn)行直到底層計(jì)算環(huán)境崩潰,或甚至更糟,直到所連接的 另外的計(jì)算系統(tǒng)、機(jī)器工具等被嚴(yán)重?fù)p害。在又另一個(gè)方面中,如果所更新的XML對(duì)象包括至少一個(gè)另外的轉(zhuǎn)變XML元 素,該至少一個(gè)另外的轉(zhuǎn)變XML元素定義了未通向至少一個(gè)另外的處理任務(wù)XML元素 的處理任務(wù)順序,確認(rèn)單元可適于拒絕所更新的XML對(duì)象。因此,如果沒(méi)有定義“回 環(huán)”,即循環(huán)運(yùn)行的處理任務(wù)的順序,確認(rèn)單元才認(rèn)可所更新的XML對(duì)象。代替地,僅 僅允許連接到另外的處理任務(wù)XML元素的這些另外的轉(zhuǎn)變XML元素。換言之,另外的 轉(zhuǎn)變XML元素可不指向(經(jīng)由它的“target” XML屬性)原本在XML對(duì)象中定義的處 理任務(wù)XML元素之一。本發(fā)明還針對(duì)于一種使用上面給出的任何一種一致性強(qiáng)制系統(tǒng)來(lái)強(qiáng)制SOA注冊(cè) 處中存儲(chǔ)的至少一個(gè)XML對(duì)象的一致性的方法。最后,本發(fā)明提供了包括用于實(shí)現(xiàn)上面 方法的指令的計(jì)算機(jī)程序。
在隨后的詳細(xì)描述中,參考下面的附圖進(jìn)一步描述本發(fā)明的當(dāng)前優(yōu)選實(shí)施例圖1 根據(jù)本發(fā)明的一致性強(qiáng)制系統(tǒng)的實(shí)施例的示意圖;圖2 根據(jù)本發(fā)明實(shí)施例的XML對(duì)象和所更新的XML對(duì)象的示意圖;圖3 根據(jù)本發(fā)明實(shí)施例的示例過(guò)程;圖4 根據(jù)本發(fā)明實(shí)施例的包括未允許處理任務(wù)的示例所更新過(guò)程;圖5a 根據(jù)本發(fā)明實(shí)施例的預(yù)定義處理任務(wù)標(biāo)識(shí)符的示例定義;圖5b 根據(jù)本發(fā)明實(shí)施例的定義對(duì)SOA注冊(cè)處的查詢的示例搜索模板;圖5c 根據(jù)本發(fā)明實(shí)施例的由SOA注冊(cè)處接收的示例結(jié)果列表;圖6 根據(jù)本發(fā)明實(shí)施例的包括圖4的示例過(guò)程的所允許擴(kuò)展的示例所更新過(guò) 程;圖7 根據(jù)本發(fā)明實(shí)施例的包括未允許的另外終止步驟的示例所更新過(guò)程;圖8 根據(jù)本發(fā)明實(shí)施例的包括未允許回環(huán)的示例所更新過(guò)程;圖9 根據(jù)本發(fā)明實(shí)施例的包括未允許死胡同處理任務(wù)的示例所更新過(guò)程;
圖10 本發(fā)明實(shí)施例的示例實(shí)施方式的示意圖;圖11 根據(jù)本發(fā)明實(shí)施例的一致性強(qiáng)制系統(tǒng)的一部分的示例實(shí)施方式;圖12 根據(jù)本發(fā)明實(shí)施例的一致性強(qiáng)制系統(tǒng)的一部分的示例實(shí)施方式;圖13 根據(jù)本發(fā)明實(shí)施例的一致性強(qiáng)制系統(tǒng)的示例輸出;圖14 根據(jù)本發(fā)明實(shí)施例的一致性強(qiáng)制系統(tǒng)的示例輸出;圖15 根據(jù)本發(fā)明實(shí)施例的可配置XML比較器的示例實(shí)現(xiàn)方式的示意圖;圖16 用于訪問(wèn)可配置XML比較器的JavaAPI ;圖17a、b 與命名空間知曉性比較的兩個(gè)示例XML文檔;圖18 與前綴知曉性比較的兩個(gè)示例XML文檔;圖19 與白空間知曉性比較的兩個(gè)示例XML文檔;圖20:與比較策略“ordered”比較的兩個(gè)示例XML文檔;圖21:與比較策略“unordered”比較的兩個(gè)示例XML文檔;圖22 可配置XML比較器的示例HTML報(bào)告;圖23 可配置XML比較器的示例簡(jiǎn)潔HTML報(bào)告;圖24 可配置XML比較器的差別報(bào)告的概觀;圖25 用于可配置XML比較器的數(shù)據(jù)類型定義;和圖26 在商業(yè)過(guò)程的環(huán)境中本發(fā)明的示例使用的示意圖。
具體實(shí)施例方式在下面,針對(duì)如圖1示意性示出的一致性強(qiáng)制系統(tǒng)1描述了本發(fā)明的當(dāng)前優(yōu)選實(shí) 施例。如可見(jiàn)到的,一致性強(qiáng)制系統(tǒng)1包括接口 10和確認(rèn)單元11。一致性強(qiáng)制系統(tǒng)1 與包括XML對(duì)象20的SOA注冊(cè)處2通信。XML對(duì)象20包括兩個(gè)處理任務(wù)XML元素 200、201。應(yīng)當(dāng)理解,圖1僅示出了簡(jiǎn)單的示例,并且SOA注冊(cè)處2可包括多個(gè),可能 數(shù)千個(gè)可由本發(fā)明的一致性強(qiáng)制系統(tǒng)1處理的任意復(fù)雜的XML對(duì)象20。一致性強(qiáng)制系統(tǒng)1能夠經(jīng)由接口 10接收XML對(duì)象20以及所更新的XML對(duì)象 20’。在圖1的示例中,所更新的XML對(duì)象20’包括未包括在SOA注冊(cè)處2內(nèi)存儲(chǔ)的 XML對(duì)象20中的另外的處理任務(wù)XML元素202。更具體地,圖2示出了示例XML對(duì)象20,其包括兩個(gè)XML元素 ‘processingTask,200 和 2Ol。XML 元素 ‘processingTask,200、201 中的每一個(gè)包括
表示相應(yīng)的處理任務(wù)XML元素200、201的處理任務(wù)標(biāo)識(shí)符的XML屬性‘uid’(在圖2 的示例中分別具有值‘S200’和‘S201’)。應(yīng)當(dāng)理解,作為候選,處理任務(wù)XML元 素可包括人可讀的形式的標(biāo)簽(例如,以XML屬性‘label’),其也可用作為處理任務(wù) 標(biāo)識(shí)符。圖2中還示出的所更新XML對(duì)象‘20’包括與XML對(duì)象20相同的處理任務(wù) XML元素,并且還包括另外的處理任務(wù)XML元素202。應(yīng)當(dāng)理解,為了例示,圖2僅 示出了簡(jiǎn)單的示例,并且本發(fā)明支持包括更復(fù)雜結(jié)構(gòu)的元素的更復(fù)雜的XML對(duì)象20。返回圖1,一致性強(qiáng)制系統(tǒng)1還包括確認(rèn)單元11。優(yōu)選地經(jīng)由XQuery,確認(rèn)單 元11能夠查詢SOA注冊(cè)處2,以便檢索預(yù)定義處理任務(wù)標(biāo)識(shí)符25的列表(參照?qǐng)D1,其 中確認(rèn)單元11對(duì)SOA注冊(cè)處2的查詢通過(guò)底部的雙頭虛線箭頭來(lái)表示)。確認(rèn)單元11 能夠?qū)⑺耎ML對(duì)象20’的另外處理任務(wù)XML元素202的處理任務(wù)標(biāo)識(shí)符與預(yù)定義
8處理任務(wù)標(biāo)識(shí)符25的列表匹配,以便確定考慮到XML對(duì)象20,所更新的XML對(duì)象20’ 是否為可允許的,即圖1和2中示出的另外的處理任務(wù)XML元素202是否為XML對(duì)象 20的有效擴(kuò)展。為此,確認(rèn)單元11確定另外的處理任務(wù)XML元素202的處理任務(wù)標(biāo)識(shí) 符是否包括在預(yù)定義處理任務(wù)標(biāo)識(shí)符的列表中。確認(rèn)單元11可以兩種方式評(píng)估匹配結(jié)果。一種方式是將處理任務(wù)標(biāo)識(shí)符25的 列表視為“白列表”,即如果處理任務(wù)標(biāo)識(shí)符包括在處理任務(wù)標(biāo)識(shí)符25的列表中,確認(rèn) 單元11才認(rèn)可所更新的XML對(duì)象20’,否則拒絕所更新的XML對(duì)象20’。另外,或 者作為候選,處理任務(wù)標(biāo)識(shí)符25的列表可視為“黑列表”,即如果處理任務(wù)標(biāo)識(shí)符未包 括在處理任務(wù)標(biāo)識(shí)符25的列表中,確認(rèn)單元11才認(rèn)可所更新的XML對(duì)象20’,否則拒 絕所更新的XML對(duì)象20’。通常,SOA注冊(cè)處2的XML對(duì)象中包括的處理任務(wù)XML元素可定義要由SOA 的部件執(zhí)行的若干處理任務(wù),例如要由SOA的各種計(jì)算系統(tǒng)執(zhí)行的各個(gè)計(jì)算。為此, XML對(duì)象,例如圖2中示出的XML對(duì)象20,可包括對(duì)處理任務(wù)XML元素定義順序的一 個(gè)或多個(gè)轉(zhuǎn)變XML元素300。如在圖2中可見(jiàn)到的,示例XML對(duì)象20包括XML元素
‘transition (轉(zhuǎn)變),300,該 XML 元素 ‘transition,300 包括 XML 屬性 ‘source(源), 和XML屬性‘target(目標(biāo)),。XML屬性‘source’的值為‘S200’,并且因此引 用處理任務(wù)XML元素200 (具有uid S200)。類似地,轉(zhuǎn)變XML元素300的XML屬性
‘target’的值為‘S201’,因此在該示例中引用處理任務(wù)XML元素201。應(yīng)當(dāng)理解, 圖2中示出的XML結(jié)構(gòu)僅僅是廣泛種類的可能性之一,并且本發(fā)明還支持具有不同標(biāo)記 的XML元素、XML屬性等的不同結(jié)構(gòu)的XML內(nèi)容,例如不是將‘source’和‘target, 引用作為XML屬性來(lái)定義,而是作為XML元素本身來(lái)定義,或者以任何其它適當(dāng)?shù)姆?式。總的來(lái)說(shuō),XML對(duì)象定義了要由SOA的部件執(zhí)行的處理任務(wù)(在下面也稱為 ‘服務(wù)’)的順序,優(yōu)選地為有向圖,在下面廣泛地稱作為過(guò)程。圖3示意性地示出了
示例過(guò)程‘訂單到現(xiàn)金’。過(guò)程‘訂單到現(xiàn)金’定義了客戶如何訂購(gòu)物品(即例如汽車 這樣的產(chǎn)品)(參照?qǐng)D3中的處理任務(wù)‘訂購(gòu)物品’)。在接收并且接受訂單之后(參照 圖3中的處理任務(wù)‘接收訂單’、‘識(shí)別客戶’和‘接受訂單’,其中‘識(shí)別客戶’定 義了本身包括另外的處理任務(wù)‘客戶識(shí)別開(kāi)始’、‘創(chuàng)建客戶’、‘讀取客戶信息’和 ‘客戶識(shí)別結(jié)束’的組合處理任務(wù)),由處理任務(wù)‘制造物品’產(chǎn)生相應(yīng)的訂購(gòu)物品。隨 后,運(yùn)送所生產(chǎn)的物品(參照處理任務(wù)‘運(yùn)送物品’),并且物流部分接收訂購(gòu)確認(rèn)(參 照?qǐng)D3中的處理任務(wù)‘接收訂單確認(rèn)’)。最后,客戶接收訂購(gòu)的物品(參照處理任務(wù) ‘接收物品’),使用物品,并且過(guò)程結(jié)束。在技術(shù)層面上,每個(gè)上述的處理任務(wù)(即服 務(wù))由SOA注冊(cè)處2中存儲(chǔ)的XML對(duì)象20內(nèi)的相應(yīng)處理任務(wù)XML元素定義。處理任 務(wù)XML元素還可包括用于執(zhí)行計(jì)算機(jī)程序的定義,例如實(shí)現(xiàn)必要的處理邏輯的本地和/ 或遠(yuǎn)程服務(wù)或web服務(wù)。在圖3的示例過(guò)程的環(huán)境下,公司‘A’可指示它們的IT部門(mén)創(chuàng)建過(guò)程‘訂單 到現(xiàn)金’作為用作為過(guò)程模板的基礎(chǔ)過(guò)程。該模板遵循于公司規(guī)則(策略)并且可被提 供給參與過(guò)程執(zhí)行的伙伴,例如公司‘A’的供應(yīng)商?;锇榭烧宅F(xiàn)在的樣子使用過(guò)程模 板和/或以“兼容”方式擴(kuò)展它,即以不執(zhí)行未允許的擴(kuò)展(相對(duì)于公司‘A’的規(guī)則)這樣的方式。因此,必須安裝管理過(guò)程,從而確保所有的擴(kuò)展過(guò)程定義有效。如上面進(jìn)一步提及的,難題是提供靈活性(修改基礎(chǔ)過(guò)程的能力)和控制(確保 修改后的過(guò)程仍然兼容)之間的平衡。本發(fā)明對(duì)該難題提供了有利的方案。為此,在 SOA術(shù)語(yǔ)中,SOA注冊(cè)處2中存儲(chǔ)的XML對(duì)象20理解為XML工件所描述的資產(chǎn),并 且本發(fā)明便于維護(hù)這些資產(chǎn)的生命周期狀態(tài)轉(zhuǎn)變(即隨著時(shí)間的改變)。本發(fā)明的一致性 強(qiáng)制系統(tǒng)1接收兩個(gè)XML工件作為輸入,工件1表示生命周期狀態(tài)轉(zhuǎn)變之前(即在擴(kuò)展 之前)的XML對(duì)象20,并且工件2表示包括(一個(gè)或多個(gè))擴(kuò)展的XML對(duì)象20 (即所 更新的XML對(duì)象20’)的當(dāng)前狀態(tài)。本發(fā)明的一致性強(qiáng)制系統(tǒng)1然后根據(jù)變化的位置 (“哪里”)和/或變化的類型(“什么”)分析對(duì)象版本20和20’之間的所識(shí)別變化 是否有效。取決于結(jié)果,接受(認(rèn)可)或拒絕變化。在下面,更詳細(xì)地給出可由本發(fā)明 的一致性強(qiáng)制系統(tǒng)1執(zhí)行的各種分析和確認(rèn)。應(yīng)當(dāng)認(rèn)識(shí)到,如果需要,這些方面可相互 獨(dú)立地實(shí)現(xiàn),并且可在本發(fā)明內(nèi)實(shí)現(xiàn)另外的分析和確認(rèn)。第一步驟可以為分析過(guò)程的XML格式(即XML對(duì)象20)并且獲得對(duì)一致性強(qiáng)制 系統(tǒng)1的約束。一個(gè)約束可以是允許伙伴的過(guò)程設(shè)計(jì)者添加新的服務(wù)(即處理任務(wù)XML 元素表示的處理任務(wù))。而且,可允許伙伴僅添加服務(wù)而不添加終止步驟。而且,可不 允許伙伴從XML對(duì)象20中定義的過(guò)程中刪除任何現(xiàn)有的服務(wù)。圖11示出了一致性強(qiáng)制系統(tǒng)1的示例Java實(shí)現(xiàn)的一部分。在XML層面,在圖 11中由XML元素‘invokeStep,表示服務(wù)(即處理任務(wù)XML元素)。圖11中的Java
代碼示出了確認(rèn)單元11(在代碼中稱為‘bpmdc’)可如何確認(rèn)上面給出的約束。在一 個(gè)可能的實(shí)現(xiàn)方式中,一致性強(qiáng)制系統(tǒng)1可包括XML比較器單元,并且可由來(lái)自XML 比較器的事件供給驗(yàn)證器。另外的約束可以為僅允許服務(wù)(即,處理任務(wù)XML元素表示的處理任務(wù))插入 在兩個(gè)不同服務(wù)(例如圖3中示出的服務(wù)‘制造物品’ 200和‘運(yùn)送物品’ 201)之間。 圖12中的示例Java代碼示出了確認(rèn)單元11 (在代碼中稱為‘bpmdc’ )可如何確認(rèn)該約 束,可能由來(lái)自XML比較器的事件提供。對(duì)XML對(duì)象20的有效改變(在所更新XML對(duì)象20’內(nèi))的示例包括-插入新服務(wù),即添加新的處理任務(wù)XML元素(圖11和12中的 ‘invokeStep,)。-恰好一個(gè)轉(zhuǎn)變已被修改為指向新服務(wù),即所更新的XML對(duì)象20’包括具有改 變的XML屬性‘source’和/或‘target,的經(jīng)修改的轉(zhuǎn)變XML元素。-插入新的轉(zhuǎn)變,即所更新的XML對(duì)象20’包括新的轉(zhuǎn)變XML元素(圖12中 的 ‘transition,)。-從修改的轉(zhuǎn)變開(kāi)始的每個(gè)路徑(即處理步驟的順序)通向特定的預(yù)定義服務(wù), 例如服務(wù)‘運(yùn)送物品’。圖6示出了過(guò)程模板(由XML對(duì)象20定義)的有效擴(kuò)展,即圖6示出了所更新 XML對(duì)象20,的顯現(xiàn)(visualization)。如可見(jiàn)到的,所更新的XML對(duì)象20,包括兩個(gè) 另外的處理任務(wù)XML元素202 (由另外的服務(wù)‘添加季節(jié)禮物’和‘為客戶競(jìng)賽添加登 記表格’表示),其插入在預(yù)定義“邊界”服務(wù)‘制造物品’ 200和‘運(yùn)送物品’ 201 之間。圖13示出了一致性強(qiáng)制系統(tǒng)1產(chǎn)生的示例輸出日志。
對(duì)XML對(duì)象20的無(wú)效改變(在所更新的XML對(duì)象20’內(nèi))的示例包括-添加除了服務(wù)和/或轉(zhuǎn)變之外的元素。-已修改多于一個(gè)的轉(zhuǎn)變。這意味著伙伴正試圖修改除了‘制造物品’和‘運(yùn) 送物品’之間的過(guò)程的其它范圍。_從所修改轉(zhuǎn)變開(kāi)始的任何路徑不通向服務(wù)‘運(yùn)送物品’,這意味著所更新的 XML對(duì)象20’定義了無(wú)效端點(diǎn)。-從所修改轉(zhuǎn)變開(kāi)始的任何路徑通向除了新插入服務(wù)或‘運(yùn)送物品’中任何一個(gè) 之外的服務(wù),這意味著所更新的XML對(duì)象20’包括到先前過(guò)程步驟的無(wú)效循環(huán)。圖7示出了由于另外的終止步驟400造成的過(guò)程的無(wú)效擴(kuò)展的示例。如可見(jiàn)到 的,所更新的過(guò)程(如在所更新XML對(duì)象20’中定義)包括相對(duì)于模板過(guò)程(如在XML 對(duì)象20中定義)的另外的終止步驟(由終止步驟XML元素400定義)。圖8示出了由于無(wú)效循環(huán)造成的過(guò)程的無(wú)效擴(kuò)展的示例。如可見(jiàn)到的,所更新 的過(guò)程(如在所更新的XML對(duì)象20’中定義)包括相對(duì)于模板過(guò)程(如在XML對(duì)象 20中定義)從服務(wù)‘修改訂單’ 202發(fā)起回到服務(wù)‘制造物品’ 200的轉(zhuǎn)變301 (由轉(zhuǎn)變 XML元素301定義)。圖14示出了一致性強(qiáng)制系統(tǒng)1所產(chǎn)生的示例輸出日志。圖9示出了由于死胡同造成的過(guò)程的無(wú)效擴(kuò)展的示例。如可見(jiàn)到的,所更新的 過(guò)程(如在所更新的XML對(duì)象20’中定義)包括另外的服務(wù)203 ‘死胡同停止’以及 具有源服務(wù)‘修改訂單’和目標(biāo)服務(wù)203 ‘死胡同停止’的轉(zhuǎn)變302。然而,沒(méi)有定 義相對(duì)于模板過(guò)程(如在XML對(duì)象20中定義)將通向過(guò)程的端點(diǎn)‘使用物品’的路徑 (即處理任務(wù)/服務(wù)的順序)的另外轉(zhuǎn)變。上面的示例示出了本發(fā)明可如何確認(rèn)規(guī)則,怎樣找出對(duì)XML對(duì)象20的改變(如 在所更新的XML對(duì)象20’中所定義)和/或所找到的改變針對(duì)它們的出現(xiàn)位置來(lái)說(shuō)是否 有效。在下面,描述了本發(fā)明可如何根據(jù)新服務(wù)(即所更新XML對(duì)象20’中的處理任 務(wù)XML元素所定義的處理任務(wù))的類型確認(rèn)它們是否有效。通常,服務(wù)可借助分類法在注冊(cè)處(例如SOA注冊(cè)處2)內(nèi)分類。圖5a示出了 包括預(yù)定義處理任務(wù)標(biāo)識(shí)符25的示例分類法。針對(duì)此的示例分類法包括服務(wù)名稱/標(biāo)簽 的層次列表。如已經(jīng)在上面進(jìn)一步提及的,作為候選,列表可按獨(dú)特標(biāo)識(shí)符的形式,例 如關(guān)聯(lián)于處理任務(wù)XML元素的XML屬性‘uid’,來(lái)包括預(yù)定義處理任務(wù)標(biāo)識(shí)符25。依據(jù)白列表的概念,本發(fā)明的確認(rèn)單元11可檢查所更新XML對(duì)象20’中定義 的(一個(gè)或多個(gè))新服務(wù)是否在SOA注冊(cè)處2中作為有效擴(kuò)展服務(wù)列出。確認(rèn)單元11因 此可執(zhí)行對(duì)SOA注冊(cè)處2的XQuery,并且檢查新服務(wù)是否包括在查詢響應(yīng)列表中。如 果是,那么它匹配擴(kuò)展標(biāo)準(zhǔn)并且所更新的XML對(duì)象20’得到認(rèn)可,否則它不匹配并且所 更新的XML對(duì)象20’被拒絕。圖5b示出了為列出具有范圍直到每訂單5歐元的值的季節(jié)性禮物服務(wù)定義查詢 的示例搜索模板。該查詢的結(jié)果是允許被插入的服務(wù)的列表。如圖5c中所示,結(jié)果列 表僅包括稱為‘AddFlowerToOrderService’的單個(gè)服務(wù)(即處理任務(wù)標(biāo)識(shí)符25)。在圖 5b的示例中,使用保存的查詢,其觸發(fā)對(duì)SOA注冊(cè)處2提供的API(應(yīng)用編程接口)的 調(diào)用,例如 ‘List<Service>getWhiteList (String savedQueryName),。圖4在該環(huán)境下示出了對(duì)過(guò)程(如在XML對(duì)象20中定義)的無(wú)效改變的示例。如可見(jiàn)到的,所更新的過(guò)程(如在所更新XML對(duì)象20’中定義)包括另外的服務(wù) ‘格式化硬盤(pán)’(由所更新XML對(duì)象20’中的相應(yīng)處理任務(wù)XML元素202定義)。然 而,不允許該另外的服務(wù),因?yàn)樗奶幚砣蝿?wù)標(biāo)識(shí)符未包括在預(yù)定義處理任務(wù)25的列表 中。代替地,根據(jù)圖5c中示出的預(yù)定義處理任務(wù)標(biāo)識(shí)符25的示例列表,過(guò)程可僅用服 務(wù) ‘ AddFlowerToOrderService,來(lái)擴(kuò)展。總的來(lái)說(shuō),本發(fā)明對(duì)以下方面尤其有利可非??焖俚卣{(diào)整規(guī)則,例如但不限 于XML比較器和/或來(lái)自注冊(cè)處的信息的幫助。本發(fā)明可按模板形式已提供80%的方 案,并且僅需要定義用于模板演變的規(guī)則(即對(duì)模板的改變)。最后,本發(fā)明便于尤其可 靠地控制對(duì)過(guò)程的改變,因?yàn)槟J(rèn)每件事都在控制之下,并且除非明確地忽略,否則不 忽略改變。因此,本發(fā)明提供了用于在生命周期狀態(tài)轉(zhuǎn)變期間(即隨著時(shí)間過(guò)去)約束資產(chǎn) (即XML對(duì)象)的演變(即改變)的方案,并且因此可容易地嵌入在SOA管理過(guò)程內(nèi)。 通過(guò)分析資產(chǎn)的演變,本發(fā)明允許策略設(shè)計(jì)者定義在生命周期轉(zhuǎn)變期間當(dāng)改變時(shí)被觸發(fā) 的一組規(guī)則。資產(chǎn),即XML對(duì)象,可描述具有與服務(wù)的直接或間接關(guān)系的注冊(cè)處中的所 有種類的對(duì)象。根據(jù)OASIS,結(jié)合面向服務(wù)的架構(gòu)(SOA)的服務(wù)是“對(duì)軟件功能的約 定接口”。在該環(huán)境下,服務(wù)通常是可遠(yuǎn)程訪問(wèn)的,并且可由過(guò)程使用。本發(fā)明解決的 典型問(wèn)題是在該生命周期階段允許修改資產(chǎn)嗎?哪部分資產(chǎn)受到修改影響?變更(元) 數(shù)據(jù)顯著改變了該資產(chǎn)的表現(xiàn)?本發(fā)明通過(guò)定義允許改變的地方,通過(guò)定義允許哪些類 型的改變和通過(guò)結(jié)合生命周期狀態(tài)轉(zhuǎn)變強(qiáng)制兼容性,來(lái)解決這些問(wèn)題。有利地,本發(fā)明可用于但不限于,SOA注冊(cè)處中存儲(chǔ)的表示商業(yè)過(guò)程或工作流 的至少一個(gè)XML對(duì)象的一致性的強(qiáng)制。表示商業(yè)過(guò)程或工作流的XML對(duì)象可包括一組 由XML對(duì)象的XML元素和/或XML屬性(例如上面進(jìn)一步描述的處理任務(wù)XML元素) 表示的相關(guān)的、結(jié)構(gòu)化的活動(dòng)。通常,商業(yè)過(guò)程的活動(dòng)表示服務(wù)調(diào)用(在該環(huán)境下,商 業(yè)過(guò)程也可理解為服務(wù)安排)和/或人員執(zhí)行的一個(gè)或多個(gè)任務(wù)(為了做出某些判定或異 常處理)的混合。以下是在如圖26中所示的示例商業(yè)過(guò)程的環(huán)境下使用本發(fā)明的示例。在示例 中,組織‘A,(參照?qǐng)D26)具有一個(gè)或多個(gè)特許伙伴‘Al’、 ‘A2’ (在圖26中, 僅示出了組織‘Al’)。 ‘A’定義了核心的商業(yè)過(guò)程并且想要允許僅僅少量的修改。 因此,使用本發(fā)明,‘A’向‘Al’、 ‘A2’提供了核心流程以及生命周期定義和附 屬到生命周期轉(zhuǎn)變的策略。在該情況下,策略用于檢查表示商業(yè)流程的注冊(cè)處對(duì)象(參 照XML對(duì)象20和/或所更新XML對(duì)象20’ )和它們的活動(dòng)(參照處理任務(wù)XML元素 200、201、202)的一致性。參考圖26,用于‘Al,、 ‘A2,的示例生命周期看起來(lái)如下(Zn表示狀態(tài),_> 表示轉(zhuǎn)變)-Zl-72-Z3-Z4 BPM活動(dòng))
12請(qǐng)求模板PiPl.1的設(shè)計(jì)階段(Pl的擴(kuò)展/修改,例如生成概念文檔、Word、用例等) Pl.1的實(shí)現(xiàn)階段(即為BPM過(guò)程中的新活動(dòng)建模) 將Pl.1綁定到具體服務(wù),即服務(wù)端點(diǎn)(具有SOA注冊(cè)處內(nèi)服務(wù)對(duì)象的
-Z5 部署P1.1 (在測(cè)試環(huán)境中)-Z6 測(cè)試階段-Z7 部署P1.1 (在生產(chǎn)環(huán)境中)-Z8 生產(chǎn)中然后,沒(méi)有回環(huán)(例如校正)的生命周期可看起來(lái)像 Z1->Z2->Z3->Z4->Z5->Z6->Z7->Z8,如圖26中所示。使用本發(fā)明,確保了例如在Z3 內(nèi),可任意修改(和存儲(chǔ))XML對(duì)象。然而,在Z3和Z4之間的轉(zhuǎn)變期間,可應(yīng)用優(yōu)選 地實(shí)現(xiàn)為策略動(dòng)作的一個(gè)或多個(gè)一致性規(guī)則來(lái)匹配實(shí)體的XML對(duì)象Pl (對(duì)應(yīng)于原始XML 對(duì)象20)和Pl.1 (對(duì)應(yīng)于所更新的XML對(duì)象20’)。在確認(rèn)為否定(即拒絕表示Pl.1的 所更新XML對(duì)象)的情況下,阻止到Z4的轉(zhuǎn)變(并且因此也不到Z5和后續(xù)的狀態(tài))。 應(yīng)當(dāng)認(rèn)識(shí)到,如上已經(jīng)提及的,所更新的XML對(duì)象可仍然存儲(chǔ)在SOA注冊(cè)處中,即使 它包括無(wú)效擴(kuò)展。然而,當(dāng)試圖移動(dòng)到生命周期模型的下一狀態(tài)(圖26的示例中的Z4) 時(shí),可觸發(fā)確認(rèn)所選擇對(duì)象的目標(biāo)狀態(tài)兼容的策略,并且在策略違反的情況下,禁止從 當(dāng)前狀態(tài)到目標(biāo)狀態(tài)的轉(zhuǎn)變。在肯定確認(rèn)的情況下,執(zhí)行到狀態(tài)Z4的轉(zhuǎn)變。在Z4(P1.1與服務(wù)的連接;參照 圖26)中,創(chuàng)建服務(wù)綁定。在Z4和Z5之間的轉(zhuǎn)變期間,可執(zhí)行黑列表/白列表確認(rèn)。 在確認(rèn)期間遇到違法服務(wù)的情況下,不執(zhí)行部署(即,不轉(zhuǎn)變到Z5)。如上面已經(jīng)進(jìn)一步 給出的,黑列表/白列表確認(rèn)可包括不僅執(zhí)行針對(duì)所更新XML對(duì)象的匹配,而且另外執(zhí) 行針對(duì)所更新XML對(duì)象中進(jìn)一步的配置文件引用的匹配,因?yàn)椴皇撬械男畔⒖纱鎯?chǔ)在 所更新XML對(duì)象本身內(nèi)。例如,XML對(duì)象可包括關(guān)于各個(gè)服務(wù)的接口的信息(例如, 它的輸入/輸出接口定義),但是可不包括關(guān)于哪些具體服務(wù)實(shí)現(xiàn)了接口定義的信息,即 服務(wù)位于哪里(服務(wù)器URL、端口等)。代替地,該信息例如可包括在綁定和/或部署 配置文件(其可位于SOA注冊(cè)處中)中。圖10更詳細(xì)地示出了本發(fā)明的示例和非限制性實(shí)現(xiàn)方式。如可見(jiàn)到的,一致性 強(qiáng)制系統(tǒng)1可包括可配置XML比較器來(lái)標(biāo)識(shí)XML工件的兩個(gè)版本之間(即XML對(duì)象20 和所更新XML對(duì)象20’之間)的差別。專門(mén)的策略動(dòng)作調(diào)用該比較器并且傳遞XML對(duì) 象20和所更新XML對(duì)象20’。附接于該比較器的事件處理器根據(jù)本發(fā)明的上述方面來(lái) 分析所標(biāo)識(shí)改變是否有效。為此,存儲(chǔ)資產(chǎn)20的SOA注冊(cè)處2可維護(hù)資產(chǎn)20的生命周 期狀態(tài)轉(zhuǎn)變。綁定到狀態(tài)轉(zhuǎn)變的生命周期事件可觸發(fā)策略。每個(gè)策略可包括一組動(dòng)作, 以便確認(rèn)和要求與公司標(biāo)準(zhǔn)的兼容性。改變的位置的正確性可立即從XML比較器的配置 得到,而確認(rèn)改變的類型需要查詢SOA注冊(cè)處2,如上已經(jīng)描述的。圖15中示出的XML比較器允許比較包括高級(jí)命名空間處理、命名空間知曉性 (即駐留在相同命名空間的元素和/或?qū)傩?、前綴知曉性(即具有相同命名空間和前綴 的元素和/或?qū)傩?和/或白空間知曉性的XML文檔和樹(shù)。而且,可使用XPATH語(yǔ)句 選擇或丟棄XML文檔內(nèi)的子樹(shù)。XML比較器還支持針對(duì)節(jié)點(diǎn)類型的不同或定制的比較 器的集成。XML比較器可支持三種報(bào)告模式高亮并且使用定制模板的HTML輸出,其 中差別作為XPATH語(yǔ)句報(bào)告的XML輸出和/或確定XML文檔相同(真)或不同(假) 的布爾輸出。XML文檔可以URL、文件和/或流的形式得到。XML比較器的一個(gè)示 例實(shí)現(xiàn)需要JRE1.4.X和Xalan2.4+,并且可經(jīng)由命令行訪問(wèn),例如如下xdt2_l file:testl.
13xml-2 file:test2.xml-xml report.xml-xmlns 或者 xdt2_l file:a.xml-2 http://a.b.c/b.xml-x “// comment () ” -xml report.xmL圖16示出了用于訪問(wèn)XML比較器的JavaAPI (應(yīng)用編程接口)。在下面,用所附示例更詳細(xì)地描述XML比較器的各種能力-命名空間知曉性圖17a示出了被認(rèn)為相同的兩個(gè)示例XML文檔500、501, 盡管它們具有不同的前綴(分別為‘a(chǎn)’和‘b’)。圖17b示出了被認(rèn)為相同的兩個(gè) 示例XML文檔500、501,盡管使用了不同的前綴和命名空間(分別為‘http://A’和
‘http://B,)。-前綴知曉性圖18示出了被認(rèn)為不同的兩個(gè)示例XML文檔500、501,因?yàn)?br>
啟動(dòng)了前綴知曉性。-白空間知曉性圖19示出了被認(rèn)為不同的兩個(gè)示例XML文檔500、501,因 為文檔500具有在雙親和孩子元素之間的白空間文本節(jié)點(diǎn),并且文檔501沒(méi)有。-比較策略“排序”圖20示出了被認(rèn)為不同的兩個(gè)示例XML文檔500、501, 因?yàn)槿绻丛柬樞蛑鸸?jié)點(diǎn)地比較,修改了文本節(jié)點(diǎn)。-比較測(cè)量“非排序”圖21示出了被認(rèn)為相同的兩個(gè)示例XML文檔500、 501,因?yàn)楹雎粤斯?jié)點(diǎn)的順序。-普通的HTML報(bào)告如果支持普通的HTML報(bào)告,兩個(gè)文檔500、501以 規(guī)范樣式打印沒(méi)有孩子元素的XML元素打印為如下<elementattr 1 =,,.. ” attr2 =” ..,,/>。對(duì)于XML元素的每個(gè)孩子節(jié)點(diǎn),打印新行和首行縮進(jìn)。如果元素僅包 含一個(gè)文本節(jié)點(diǎn)也是這樣。用顏色高亮顯示差別并且從文檔500的視角打印,即所添 加的節(jié)點(diǎn)是被加到文檔500內(nèi)的節(jié)點(diǎn)并且標(biāo)記為綠色。修改的節(jié)點(diǎn)是在兩個(gè)文檔500、 501中可得到并且不同的節(jié)點(diǎn),并且標(biāo)記為藍(lán)色。刪除的節(jié)點(diǎn)是從文檔500移除的節(jié)點(diǎn), 或者新添加到文檔501中的節(jié)點(diǎn),并且標(biāo)記為紅色。排除在外的節(jié)點(diǎn)標(biāo)記為灰色并且為 斜體。排除在外的節(jié)點(diǎn)可使用命令行選項(xiàng)“-showExcluded”或相應(yīng)的JAVA API方法 #setShowExcluded (true) (class DOMComparator)來(lái)在 HTML 報(bào)告中可見(jiàn)。示例的普通 HTML報(bào)告在圖22中示出。-簡(jiǎn)潔HTML報(bào)告如果支持簡(jiǎn)潔的HTML報(bào)告,僅以規(guī)范樣式打印文檔500, 并且來(lái)自文檔501的差別被插入并且標(biāo)記為反轉(zhuǎn)沒(méi)有孩子元素的XML元素打印為如 下〈element attrl = ” ..” attr2=” ..” />。對(duì)于XML元素的每個(gè)孩子節(jié)點(diǎn),打印新 行和首行縮進(jìn)。如果元素僅包含一個(gè)文本節(jié)點(diǎn)也是這樣。用顏色高亮顯示差別并且從 文檔500的視角打印,即所添加的節(jié)點(diǎn)是被加到文檔500內(nèi)的節(jié)點(diǎn)并且標(biāo)記為綠色。 修改的節(jié)點(diǎn)是在兩個(gè)文檔500、501中可得到并且不同的節(jié)點(diǎn),并且標(biāo)記為藍(lán)色。來(lái)自 文檔501的經(jīng)修改節(jié)點(diǎn)標(biāo)記為反轉(zhuǎn)藍(lán)色并且添加到文檔500的被修改節(jié)點(diǎn)的后面或者下 方。刪除的節(jié)點(diǎn)是從文檔500中移除的節(jié)點(diǎn),或者新添加到文檔501中的節(jié)點(diǎn),并且 標(biāo)記為反轉(zhuǎn)紅色。排除在外的節(jié)點(diǎn)標(biāo)記為灰色并且為斜體。注意所有反轉(zhuǎn)標(biāo)記的節(jié) 點(diǎn)和屬性不是文檔500的一部分,它們是文檔501的一部分。排除在外的節(jié)點(diǎn)可使用 命令行選項(xiàng) “ -showExcluded,,或相應(yīng)的 JAVA API 方法 #setShowExcluded (true) (class DOMComparator)來(lái)在簡(jiǎn)潔HTML報(bào)告中可見(jiàn)。示例的簡(jiǎn)潔HTML報(bào)告在圖23中示出。-定制HTML報(bào)告另外,或者作為候選,可通過(guò)編寫(xiě)定制的XSL樣式表來(lái)影響比較操作的輸出的顯現(xiàn)。 圖24示出了如何使用XPATH以XML實(shí)現(xiàn)差異報(bào)告的概觀。圖25示出了用于 差別報(bào)告的DTD (文檔類型定義)0
權(quán)利要求
1.一種用于SOA注冊(cè)處(2)中存儲(chǔ)的至少一個(gè)XML對(duì)象(20)的一致性強(qiáng)制系統(tǒng)(1),所述至少一個(gè)XML對(duì)象(20)包括多個(gè)處理任務(wù)XML元素(200、201),所述多個(gè) 處理任務(wù)XML元素各自定義要由所述SOA的部件執(zhí)行的至少一個(gè)處理任務(wù),所述一致性 強(qiáng)制系統(tǒng)(1)包括a.適于接收更新的XML對(duì)象(20’)的接口,該更新的XML對(duì)象包括未包括在所述 SOA注冊(cè)處(2)中存儲(chǔ)的所述至少一個(gè)XML對(duì)象(20)中的、定義了要由所述SOA的部 件執(zhí)行的至少一個(gè)另外的處理任務(wù)的至少一個(gè)另外的處理任務(wù)XML元素(202);b.適于查詢所述SOA注冊(cè)處(2)以便獲得一個(gè)或多個(gè)預(yù)定義處理任務(wù)標(biāo)識(shí)符(25)的 確認(rèn)單元(11);C.其中所述確認(rèn)單元(11)還適于將所述更新的XML對(duì)象(20’ )的至少一個(gè)另外的 處理任務(wù)XML元素(202)的處理任務(wù)標(biāo)識(shí)符與從所述SOA注冊(cè)處(2)獲得的所述一個(gè)或 多個(gè)預(yù)定義的處理任務(wù)標(biāo)識(shí)符(25)相匹配,并且適于取決于所述匹配結(jié)果來(lái)認(rèn)可或拒絕 所述更新的XML對(duì)象(20’)。
2.根據(jù)權(quán)利要求1所述的一致性強(qiáng)制系統(tǒng)(1),其中,所述確認(rèn)單元(11)適于在所 述至少一個(gè)另外處理任務(wù)XML元素(202)的處理任務(wù)標(biāo)識(shí)符不匹配從所述SOA注冊(cè)處(2)獲得的至少一個(gè)所述預(yù)定義處理任務(wù)標(biāo)識(shí)符(25)的情況下拒絕所述更新的XML對(duì)象 (20,)。
3.根據(jù)權(quán)利要求1或2所述的一致性強(qiáng)制系統(tǒng)(1),其中,所述確認(rèn)單元(11)適于 在所述至少一個(gè)另外的處理任務(wù)XML元素(202)的處理任務(wù)標(biāo)識(shí)符匹配從所述SOA注 冊(cè)處(2)獲得的至少一個(gè)所述預(yù)定義處理任務(wù)標(biāo)識(shí)符(25)的情況下拒絕所述更新的對(duì)象 (20,)。
4.根據(jù)前述任一權(quán)利要求所述的一致性強(qiáng)制系統(tǒng)(1),其中所述確認(rèn)單元(11)適于 只有當(dāng)認(rèn)可所述更新的XML對(duì)象(20’)時(shí),在所述SOA注冊(cè)處(2)中存儲(chǔ)所述更新 的XML對(duì)象(20’ )和/或替換所述SOA注冊(cè)處(2)中存儲(chǔ)的所述至少一個(gè)XML對(duì)象 (20)。
5.根據(jù)前述任一權(quán)利要求所述的一致性強(qiáng)制系統(tǒng)(1),其中,所述確認(rèn)單元(11)適 于在所述更新的XML對(duì)象(20’ )包括未包括在所述SOA注冊(cè)處(2)中存儲(chǔ)的所述至 少一個(gè)XML對(duì)象(20)中的至少一個(gè)終止步驟XML元素(400)的情況下拒絕所述更新的 XML對(duì)象(20’),其中所述至少一個(gè)終止步驟XML元素(400)定義要由所述SOA的部 件執(zhí)行的處理任務(wù)的順序的端點(diǎn)。
6.根據(jù)前述任一權(quán)利要求所述的一致性強(qiáng)制系統(tǒng)(1),其中,所述確認(rèn)單元(11)適 于在所述更新的XML對(duì)象(20’ )包括除了處理任務(wù)XML元素之外的至少一個(gè)XML元 素的情況下拒絕所述更新的XML對(duì)象(20’)。
7.根據(jù)前述任一權(quán)利要求所述的一致性強(qiáng)制系統(tǒng)(1),其中,所述確認(rèn)單元(11)適 于在所述SOA注冊(cè)處(2)中存儲(chǔ)的XML對(duì)象(20)包括未包括在所述至少一個(gè)所更新的 XML對(duì)象(20’ )中的至少一個(gè)處理任務(wù)XML元素(200、201)的情況下拒絕所述更新 的XML對(duì)象(20’)。
8.根據(jù)前述任一權(quán)利要求所述的一致性強(qiáng)制系統(tǒng)(1),其中所述SOA注冊(cè)處(2)中存 儲(chǔ)的所述至少一個(gè)XML對(duì)象(20)包括至少一個(gè)轉(zhuǎn)變XML元素(300),所述至少一個(gè)轉(zhuǎn)變XML元素(300)引用至少一個(gè)源處理任務(wù)XML元素(200)和至少一個(gè)目標(biāo)處理任務(wù) XML元素(201),以便定義所述相應(yīng)處理任務(wù)XML元素(200、201)之間的順序。
9.根據(jù)前一權(quán)利要求所述的一致性強(qiáng)制系統(tǒng)(1),其中如果至少一個(gè)更新的XML對(duì) 象(20’ )的至少一個(gè)另外的處理任務(wù)XML元素(202)不在所述至少一個(gè)轉(zhuǎn)變XML元素(300)定義的所述順序內(nèi),所述確認(rèn)單元(11)適于拒絕所述更新的XML對(duì)象(20’)。
10.根據(jù)前述權(quán)利要求8或9中任何一個(gè)所述的一致性強(qiáng)制系統(tǒng)(1),其中所述確認(rèn)單 元(11)適于在所述更新的XML對(duì)象(20’ )包括至少一個(gè)另外的轉(zhuǎn)變XML元素(302) 的情況下拒絕所述更新的XML對(duì)象(20’),其中所述至少一個(gè)另外的轉(zhuǎn)變XML元素定 義不通向所述SOA注冊(cè)處(2)中存儲(chǔ)的所述XML對(duì)象(20)中定義的終止步驟XML元 素的處理任務(wù)的順序。
11.根據(jù)前述權(quán)利要求8到10中任何一個(gè)所述的一致性強(qiáng)制系統(tǒng)(1),其中,所述 確認(rèn)單元(11)適于在所述更新的XML對(duì)象(20’ )包括至少一個(gè)另外的轉(zhuǎn)變XML元素(301)的情況下拒絕所述更新的XML對(duì)象(20’),該至少一個(gè)另外的轉(zhuǎn)變XML元素定 義未通向所述至少一個(gè)另外的處理任務(wù)XML元素(202)的處理任務(wù)的順序。
12.—種強(qiáng)制SOA注冊(cè)處(2)中存儲(chǔ)的至少一個(gè)XML對(duì)象(20)的一致性的方法,所 述方法使用根據(jù)前述任一權(quán)利要求所述的一致性強(qiáng)制系統(tǒng)(1)。
13.—種包括用于實(shí)現(xiàn)根據(jù)前述權(quán)利要求所述的方法的指令的計(jì)算機(jī)程序。
全文摘要
本發(fā)明公開(kāi)了用于SOA注冊(cè)處中存儲(chǔ)的XML對(duì)象的一致性強(qiáng)制系統(tǒng)。本發(fā)明涉及一種用于SOA注冊(cè)處(2)中存儲(chǔ)的至少一個(gè)XML對(duì)象(20)的一致性強(qiáng)制系統(tǒng)(1),所述至少一個(gè)XML對(duì)象(20)包括多個(gè)處理任務(wù)XML元素(200、201),所述多個(gè)處理任務(wù)XML元素各自定義要由所述SOA的部件執(zhí)行的至少一個(gè)處理任務(wù),所述一致性強(qiáng)制系統(tǒng)(1)包括a.適于接收更新的XML對(duì)象(20’)的接口,該更新的XML對(duì)象包括未包括在所述SOA注冊(cè)處(2)中存儲(chǔ)的所述至少一個(gè)XML對(duì)象(20)中的、定義要由所述SOA的部件執(zhí)行的至少一個(gè)另外的處理任務(wù)的至少一個(gè)另外的處理任務(wù)XML元素(202);b.適于查詢所述SOA注冊(cè)處(2)以便獲得一個(gè)或多個(gè)預(yù)定義處理任務(wù)標(biāo)識(shí)符(25)的確認(rèn)單元(11);c.其中所述確認(rèn)單元(11)還適于將所述更新的XML對(duì)象(20’)的至少一個(gè)另外的處理任務(wù)XML元素(202)的處理任務(wù)標(biāo)識(shí)符與從所述SOA注冊(cè)處(2)獲得的所述一個(gè)或多個(gè)預(yù)定義的處理任務(wù)標(biāo)識(shí)符(25)相匹配,并且適于取決于所述匹配結(jié)果來(lái)認(rèn)可或拒絕所述更新的XML對(duì)象(20’)。
文檔編號(hào)G06Q10/00GK102013044SQ20101021101
公開(kāi)日2011年4月13日 申請(qǐng)日期2010年6月21日 優(yōu)先權(quán)日2009年6月19日
發(fā)明者彼得·克里格斯曼 申請(qǐng)人:軟件股份公司