專利名稱:用于分組互異操作的系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及采用包括事務(wù)(transaction)和消息(message)在內(nèi)的互異(diverse)操作的軟件系統(tǒng),更具體地說,本發(fā)明涉及對這些操作進(jìn)行分組的方法和系統(tǒng)。
兩種基本類型的中間件是面向?qū)ο蟮闹虚g件(OOM)和面向消息的中間件(MOM),它們均用于可靠軟件系統(tǒng)的開發(fā)過程。例如,利用分布型事務(wù),OOM對軟件可靠性提供支持。另一方面,MOM對分布型部件之間的可靠異步通信過程提供支持。在過去的幾年中,OOM和MOM被分別單獨(dú)開發(fā),已經(jīng)在許多企業(yè)的軟件系統(tǒng)的開發(fā)過程中得到實(shí)現(xiàn)。
當(dāng)在同一個系統(tǒng)內(nèi)使用OOM和MOM時,業(yè)務(wù)的集成性和互通性受到關(guān)注。具體地說,盡管事務(wù)和消息分別是可靠的,但是現(xiàn)有中間件不直接支持組合使用OOM和MOM的同等可靠等級。
可以利用對象請求代理程序(ORB)來說明OOM,例如,對象管理組提出的通用對象請求代理體系結(jié)構(gòu)(CORBA)和部件技術(shù)(例如Sun提出的企業(yè)JavaBeans(EJB))。待集成的軟件部件變成提供清晰界面的分布式對象。同步客戶/服務(wù)器模型是對象之間的標(biāo)準(zhǔn)通信模型。
利用消息排隊(duì)(MQ)系統(tǒng)可以說明MOM,例如,IBM公司提出的MQSeries以及Java消息業(yè)務(wù)(JMS)應(yīng)用程序界面工具。利用異步消息交換過程,MOM集成的部件與作為中間體的消息隊(duì)列通信。部件利用隊(duì)列讀取或?qū)懭胂?數(shù)據(jù)),并且MOM負(fù)責(zé)消息在網(wǎng)絡(luò)上的分布。因此,各部件之間不互相直接進(jìn)行交互。通信部件可以互相匿名并且通常是去耦的。
各種類型的中間件分別具有特定優(yōu)勢。OOM的面向?qū)ο竽P团c現(xiàn)代系統(tǒng)開發(fā)過程中的對象范型一致,因此有助于支持一致開發(fā)過程。通過嚴(yán)格將界面與部件工具分離,OOM還有助于促進(jìn)可擴(kuò)展性和可重用性。相反,在需要或要求在時間上和空間上去耦情況下,MOM特別適合。此外,通過利用MOM多點(diǎn)傳播通知,可以支持通信方的多樣性。因此,通常組合使用OOM和MOM。例如,消息排隊(duì)可以用于利用遺留后端服務(wù)器進(jìn)行通信,而分布式對象呼叫可以用于利用web前端進(jìn)行通信。
實(shí)現(xiàn)軟件可靠性的一個重要方法是事務(wù)的利用。OOM對象事務(wù)類似于數(shù)據(jù)庫事務(wù)根據(jù)絕對的(all-or-nothing)執(zhí)行方式,事務(wù)將系統(tǒng)共享數(shù)據(jù)從一種一致狀態(tài)變換為另一種一致狀態(tài)。構(gòu)成事務(wù)的動作是對對象的同步請求。利用如CORBA對象事務(wù)服務(wù)(OTS)和其Java綁定JTS以及Java事務(wù)API(JTA),可以成功實(shí)現(xiàn)對事務(wù)處理過程的支持。
MOM還具有事務(wù)的概念。然而,MOM事務(wù)卻不同于OOM事務(wù)。MOM事務(wù)指將一組產(chǎn)生的或消耗的消息分組為原子工作單元或者發(fā)送并讀取構(gòu)成MOM事務(wù)的所有消息,或者不發(fā)送和讀取所有消息。
參考
圖1,圖1示出采用事務(wù)和消息的軟件系統(tǒng)。該系統(tǒng)包括部件110,部件110包括事務(wù)客戶和發(fā)信部件。該系統(tǒng)還包括事務(wù)型資源120和發(fā)信部件130。部件110對事務(wù)前后關(guān)系內(nèi)的事務(wù)型資源120進(jìn)行同步調(diào)用。獨(dú)立于此事務(wù)前后關(guān)系,部件110與發(fā)信部件130進(jìn)行異步通信。圖1所示的系統(tǒng)示出了與現(xiàn)有事務(wù)系統(tǒng)和消息系統(tǒng)結(jié)構(gòu)相同的軟件系統(tǒng)結(jié)構(gòu)。包括一個或多個事務(wù)型資源的事務(wù)獨(dú)立于在一個或多個發(fā)信部件之間交換的任何消息。部件110以去耦方式使用事務(wù)和消息。因此,看不到作為分組操作的特性。
將操作分組為更大單元以保證特定特性的現(xiàn)有方法局限于,僅支持對均勻型操作進(jìn)行分組。例如,數(shù)據(jù)庫會對象事務(wù)僅支持對事務(wù)型資源的同步請求進(jìn)行分組。另一方面,工作消息單元僅支持對消息進(jìn)行分組。因此,在分組內(nèi),均勻型操作不互相依賴。未知對互異操作進(jìn)行分組的支持。因此,軟件結(jié)構(gòu)需要將事務(wù)和消息分離。從而需要一種通過對互異操作進(jìn)行分組,可以將分布對象事務(wù)處理過程與異步消息集成在一起的系統(tǒng)和方法。
各消息操作的結(jié)果獨(dú)立于其它消息操作結(jié)果。消息操作結(jié)果獨(dú)立于事務(wù)型操作結(jié)果。操作是在兩個或多個發(fā)信部件之間對事務(wù)型資源和條件異步消息進(jìn)行同步調(diào)用之一。至少在一個事務(wù)中進(jìn)行同步調(diào)用。異步消息產(chǎn)生結(jié)果,該結(jié)果由與相應(yīng)操作相關(guān)的條件確定。
該方法包括對在事務(wù)和條件異步消息中的同步調(diào)用進(jìn)行分組的步驟。該方法進(jìn)一步包括將各結(jié)果解釋為成功和失敗之一的步驟。該方法包括將分組總結(jié)果解釋為成功和失敗之一的步驟。如果至少一個獨(dú)立操作被解釋為失敗,則該方法將分組總結(jié)果評估為失敗。
該動作是預(yù)定動作、自動調(diào)用動作以及執(zhí)行動作之一。在確定總結(jié)果為失敗之后所采取的動作進(jìn)一步包括取消操作步驟。在確定總結(jié)果為失敗之后所采取的動作進(jìn)一步包括補(bǔ)償操作步驟。
根據(jù)本發(fā)明的實(shí)施例,機(jī)器可讀的實(shí)際體現(xiàn)機(jī)器可執(zhí)行指令程序的程序存儲裝置,該機(jī)器執(zhí)行指令程序?qū)崿F(xiàn)對面向?qū)ο筌浖到y(tǒng)內(nèi)的至少兩個互異操作進(jìn)行分組的方法步驟。
該方法包括通過根據(jù)已定義數(shù)據(jù)結(jié)構(gòu)建立前后關(guān)系表示并通過用識別分組前后關(guān)系的數(shù)值填寫該表示,啟動分組前后關(guān)系的步驟。
根據(jù)本發(fā)明的一個實(shí)施例,提供一種在軟件系統(tǒng)內(nèi)對兩個或多個操作進(jìn)行分組的過程進(jìn)行管理的方法。該方法包括步驟對于分組前后關(guān)系內(nèi)各操作,啟動包括子前后關(guān)系的分組前后關(guān)系,其中事務(wù)型資源和發(fā)信部件之一支持各操作;在子前后關(guān)系內(nèi)執(zhí)行操作,各操作產(chǎn)生結(jié)果;在分組前后關(guān)系內(nèi)耦合結(jié)果;確定分組前后關(guān)系的總結(jié)果;以及根據(jù)總結(jié)果至少采取一個動作。
該方法進(jìn)一步包括在采取一個或多個動作后終止分組前后關(guān)系的步驟。啟動分組前后關(guān)系的步驟包括步驟根據(jù)已定義數(shù)據(jù)結(jié)構(gòu),建立前后關(guān)系表示的步驟;用識別分組前后關(guān)系的數(shù)值填寫此表示。
操作是對事務(wù)型資源的同步調(diào)用、至少兩個發(fā)信部件之間的異步發(fā)信以及至少兩個操作的第二分組之一。至少在一個事務(wù)中發(fā)生同步調(diào)用。異步消息產(chǎn)生結(jié)果,利用與相應(yīng)操作相關(guān)的條件確定此結(jié)果。
該方法進(jìn)一步包括對事務(wù)型資源同步調(diào)用和條件異步消息進(jìn)行分組的步驟。該方法將各結(jié)果解釋為成功和失敗之一。該方法進(jìn)一步包括將分組總結(jié)果解釋為成功和失敗之一的步驟。該方法包括,如果至少相關(guān)操作被解釋為失敗,則將分組總結(jié)果評估為失敗。動作可以是提交、回退(rollback)以及補(bǔ)償之一。動作可以是更新、刪除、制表以及追加之一。在確定總結(jié)果為失敗之后所采取的動作進(jìn)一步包括取消操作步驟。在確定總結(jié)果為失敗之后所采取的動作進(jìn)一步包括補(bǔ)償操作步驟。
管理分組的過程包括實(shí)現(xiàn)軟件系統(tǒng)的已定義特性和保存軟件系統(tǒng)的已定義特性之一。各消息操作的結(jié)果獨(dú)立于其它消息操作結(jié)果。消息操作結(jié)果獨(dú)立于事務(wù)操作結(jié)果。
圖1示出在去耦方式將事務(wù)和消息用作兩種不同操作的軟件系統(tǒng);圖2示出根據(jù)本發(fā)明獨(dú)立完成同步事務(wù)調(diào)用和異步消息的軟件系統(tǒng);圖3示出消息傳送過程中4個不同部件交互風(fēng)格的方框圖;圖4示出消息操作和同步事務(wù)操作的各結(jié)果組合在一起產(chǎn)生的總結(jié)果的組合的方框圖;圖5示出用于實(shí)現(xiàn)或保存一組操作的已定義特性的方法的方框圖;圖6示出執(zhí)行獨(dú)立操作并確定該操作的結(jié)果的各過程的方框圖;圖7示出如圖6所示,將同步請求作為部分事務(wù)調(diào)用并確定該請求的結(jié)果的過程方框圖;圖8示出如圖6所示,發(fā)送消息并確定該消息的結(jié)果的過程方框圖;圖9示出如圖6所示,接收消息并確定接收消息的結(jié)果的過程方框圖;圖10示出如圖6所示,進(jìn)行請求、接收應(yīng)答以及確定請求/應(yīng)答操作的結(jié)果的過程方框圖;圖11示出如圖6所示,接收請求、進(jìn)行應(yīng)答以及確定請求/應(yīng)答操作的結(jié)果的過程方框圖;圖12示出根據(jù)本發(fā)明實(shí)施例將事務(wù)和消息耦合的軟件系統(tǒng)的方框圖;
顯然,可以以硬件、軟件、固件、專用處理器或它們的組合的各種方式實(shí)現(xiàn)本發(fā)明。在一個實(shí)施例中,以軟件作為實(shí)際體現(xiàn)程序存儲裝置內(nèi)的應(yīng)用程序來實(shí)現(xiàn)本發(fā)明。該應(yīng)用程序可以被上載,并可以被具有任意適當(dāng)結(jié)構(gòu)的機(jī)器所執(zhí)行。優(yōu)先在具有諸如一個或多個中央處理單元(CPU)、隨機(jī)存取存儲器(RAM)以及輸入/結(jié)果(I/O)接口的硬件的計(jì)算機(jī)平臺上實(shí)現(xiàn)該機(jī)器。計(jì)算機(jī)平臺還包括操作系統(tǒng)和微指令代碼。在此說明的各種處理過程和功能是微指令代碼的一部分,或者是通過操作系統(tǒng)執(zhí)行的應(yīng)用程序的一部分(或者它們的組合),或者是操作系統(tǒng)本身的一部分,或者是中間件的一部分。此外,還有各種外圍設(shè)備與計(jì)算機(jī)平臺相連,例如,附加數(shù)據(jù)存儲設(shè)備和打印設(shè)備。
顯然,還因?yàn)榭梢杂密浖?shí)現(xiàn)附圖所示的成分系統(tǒng)部件和方法步驟,所以會由于本發(fā)明編程方式的不同,系統(tǒng)部件(或處理步驟)之間的連接互異。本發(fā)明對此進(jìn)行了說明,本技術(shù)領(lǐng)域內(nèi)的一個普通技術(shù)人員可以對本發(fā)明的這些以及類似實(shí)現(xiàn)過程或配置進(jìn)行研究。
圖3示出4個不同消息交互風(fēng)格。各交互風(fēng)格包括兩個或多個發(fā)信部件。各部件可以是發(fā)送者、接收者、請求者和/或應(yīng)答者。對圖3所示的部件A 310、A 330、A 350和A 370分別分配這些作用。
在第一種(1)情況下,部件A 310將消息發(fā)送到部件B 320。部件A 310是產(chǎn)生外出消息的消息發(fā)送者,而部件B 320是消息接收者。此交互風(fēng)格示出消息發(fā)送過程。從發(fā)送者的角度來看,消息發(fā)送過程是異步的,其中發(fā)送者與接收者的有效性和響應(yīng)無關(guān)。同步消息發(fā)送過程是另一種消息發(fā)送模型。請注意,各種交互風(fēng)格均可能涉及一個消息的多個接收者。此外,包括部件B 320在內(nèi)的任何一個消息接收者可以對發(fā)送者保持匿名。用于發(fā)送消息的消息傳送系統(tǒng)支持消息交換過程的多樣性和匿名性。
第二種情況(2)示出部件A 330從部件B 340接收消息的過程。部件A 330是進(jìn)入消息的消息接收者,而部件B 340是消息發(fā)送者。交互風(fēng)格示出消息接收過程。發(fā)送消息時,部件B 340啟動消息接收過程,或者在部件A 330決定接收進(jìn)入消息時,部件A 330啟動接收過程。在后一種情況下,可以采用用于保存諸如消息隊(duì)列的進(jìn)入消息的中間消息存儲器。
第三種情況(3)示出部件A 350將外出消息發(fā)送到部件B 360并隨后從同一個部件B 360接收進(jìn)入消息的過程。交互風(fēng)格示出消息傳送過程的請求/應(yīng)答模型。此交互過程包括兩個消息第一消息代表請求,第二消息代表對請求消息的應(yīng)答。這兩個消息的相關(guān)性在于,應(yīng)答消息參考請求消息。應(yīng)答消息可以是簡單確認(rèn)接收,或者可以含有作為請求消息的結(jié)果觸發(fā)的部件B 360的某些處理結(jié)果。假定異步發(fā)送請求消息,則在發(fā)送請求之后,部件A 350可以繼續(xù)其處理過程,該部件并不被阻塞等待應(yīng)答。
在第四種情況下(4),示出情況(3)的相反消息交互風(fēng)格。部件A 370首先從部件B 380接收進(jìn)入異步消息,然后作為此進(jìn)入消息的結(jié)果進(jìn)行某些處理過程,之后,部件A 370將外出消息發(fā)送到部件B 380。
在以組合方式使用事務(wù)和消息的系統(tǒng)內(nèi)實(shí)現(xiàn)這4個消息交互風(fēng)格。例如,圖2所示的事務(wù)客戶210可以實(shí)現(xiàn)圖3所示的任何一種消息交互風(fēng)格。
圖4示出根據(jù)本發(fā)明實(shí)施例包括互異操作的各單獨(dú)結(jié)果在內(nèi)的總結(jié)果。在分組前后關(guān)系中完成操作,并在包括用于對事務(wù)和消息進(jìn)行分組的系統(tǒng)的軟件系統(tǒng)內(nèi)計(jì)算操作。應(yīng)該注意,可以認(rèn)為任何兩個消息是互異操作。同樣,消息與事務(wù)互異。
組合結(jié)果410依賴于在啟動分組前后關(guān)系情況下實(shí)現(xiàn)的不同操作的單獨(dú)結(jié)果。單獨(dú)結(jié)果包括0個或多個事務(wù)結(jié)果以及一個或多個消息結(jié)果。420是在啟動前后關(guān)系(如圖2所示)情況下實(shí)現(xiàn)的同步調(diào)用結(jié)果。430是在啟動前后關(guān)系情況下實(shí)現(xiàn)的消息交互結(jié)果。消息交互結(jié)果可以是分別對應(yīng)于圖3所示的消息風(fēng)格1、2、3和4的440、450、460和470內(nèi)所示的任何類型??梢哉J(rèn)為圖4所示的單獨(dú)結(jié)果在使用獨(dú)立事務(wù)和消息的系統(tǒng)的前后關(guān)系內(nèi)。
圖5示出用于實(shí)現(xiàn)或保存一組操作的已定義特性的方法。例如,特性涉及原子性、一致性、可視性、持續(xù)性、補(bǔ)償、版本升級。此外,例如,可以根據(jù)語言、系統(tǒng)、安裝過程、應(yīng)用程序,來定義這些特性。
原子性指整體成功或失敗的前后關(guān)系。因此,可以將成功定義為完成所有請求和發(fā)送所有消息。如果前后關(guān)系內(nèi)的任何一個單獨(dú)同步請求或異步消息不成功,則整個前后關(guān)系失敗。
另一種特性是一致性。如果確保對事務(wù)的輸入是先前提交事務(wù)的輸出,則對象事務(wù)(同步請求)將系統(tǒng)狀態(tài)從一種一致狀態(tài)變換為另一種一致狀態(tài)。系統(tǒng)狀態(tài)的一致性是數(shù)據(jù)完整性定義的應(yīng)用。在事務(wù)提交的時間點(diǎn),系統(tǒng)狀態(tài)與定義的數(shù)據(jù)完整性一致。根據(jù)本發(fā)明的一個實(shí)施例,一致性還指消息傳送。在事務(wù)提交的時間點(diǎn),系統(tǒng)狀態(tài)與定義的數(shù)據(jù)完整性一致,并且可以具有作為部分前后關(guān)系發(fā)送的任意數(shù)量消息。
特性的又一個例子是持久性。通過聲明消息是持久消息,可以在前后關(guān)系內(nèi)實(shí)現(xiàn)持久性,通常,同步對象請求是持久的。因此,一旦前后關(guān)系提交,則所有請求(例如進(jìn)行更新以及進(jìn)行任何消息發(fā)送)均是持久的。
請參考圖5,在塊510內(nèi),啟動分組前后關(guān)系。啟動過程根據(jù)定義的數(shù)據(jù)結(jié)構(gòu)建立前后關(guān)系表示,并用唯一識別分組前后關(guān)系的數(shù)值填寫該表示。存在不同類型的數(shù)據(jù)結(jié)構(gòu),例如,它們包括列表類、樹類、陣列類、數(shù)據(jù)集以及bag類數(shù)據(jù)結(jié)構(gòu)。分組前后關(guān)系即實(shí)現(xiàn)或保存某個特性集的操作的整個分組。例如,在利用事務(wù)處理系統(tǒng)建立事務(wù)時,此前后關(guān)系類似于事務(wù)前后關(guān)系。為了保證諸如原子性和隔離的特性,事務(wù)前后關(guān)系定義范圍,在該范圍內(nèi),出現(xiàn)事務(wù)型資源操作。
根據(jù)待分組的操作類型,塊510必然啟動其它輔助前后關(guān)系并使它們與分組前后關(guān)系相關(guān)。例如,如果在塊510內(nèi)啟動的前后關(guān)系要求對作為事務(wù)的一部分進(jìn)行的同步請求進(jìn)行分組,則可以啟動事務(wù)前后關(guān)系并使其與分組前后關(guān)系相關(guān)。另一方面,如果在塊510內(nèi)建立的前后關(guān)系要求對消息操作進(jìn)行分組,則啟動消息前后關(guān)系并使其與分組前后關(guān)系相關(guān)。如果事務(wù)操作和消息操作均被分組,則事務(wù)前后關(guān)系和消息前后關(guān)系均被啟動并使它們與分組前后關(guān)系相關(guān)。
在塊510內(nèi)啟動分組前后關(guān)系通常會導(dǎo)致建立或采用前后關(guān)系表示以及在管理前后關(guān)系過程中使用的其它表示(例如操作記錄)。例如,可以建立對象以表示在塊510建立的分組前后關(guān)系以及與分組前后關(guān)系相關(guān)的任意事務(wù)前后關(guān)系或消息前后關(guān)系。如果在塊510內(nèi)事務(wù)前后關(guān)系與分組前后關(guān)系相關(guān),則建立新事務(wù)記錄或采用現(xiàn)有記錄;同樣,如果在塊510內(nèi)消息前后關(guān)系與分組前后關(guān)系相關(guān),則建立新消息記錄或采用現(xiàn)有記錄。如果在塊510內(nèi)事務(wù)前后關(guān)系和消息前后關(guān)系均與分組前后關(guān)系相關(guān),則建立或采用表示并管理事務(wù)前后關(guān)系和消息前后關(guān)系的對象和記錄。在處理分組前后關(guān)系和它分組的操作過程中、在評估前后關(guān)系總結(jié)果過程中以及在根據(jù)總結(jié)果、用于實(shí)現(xiàn)或保存要求的特性的其它操作過程中,可以使用前后關(guān)系、記錄以及其它信息的表示。
在塊520內(nèi),在前后關(guān)系內(nèi)進(jìn)行操作,確定與各操作相關(guān)的單獨(dú)結(jié)果。
在塊530內(nèi),通過組合在前后關(guān)系內(nèi)進(jìn)行的各操作的單獨(dú)結(jié)果,確定總結(jié)果。例如,總結(jié)果可以是簡單離散二進(jìn)制結(jié)果,例如“成功”或“失敗”,或者是更復(fù)雜結(jié)果??梢灶A(yù)定或者動態(tài)選擇用于組合單獨(dú)結(jié)果的技術(shù),并且它還可以是專用應(yīng)用程序或獨(dú)立應(yīng)用程序??梢耘c塊520并行執(zhí)行塊530。
在塊540內(nèi),根據(jù)總結(jié)果和在前后關(guān)系內(nèi)完成的操作,這樣采取動作,即保存或?qū)崿F(xiàn)與分組相關(guān)的特定特性。此動作可以是簡單動作或者是包括多個簡單動作的復(fù)雜動作。
在塊550內(nèi),終止前后關(guān)系,并結(jié)束對實(shí)現(xiàn)或保存某個或某些已定義特性的操作進(jìn)行分組。
圖6示出可以在塊520(圖5所示)內(nèi)實(shí)現(xiàn)的各種操作。在圖7至圖11中分別示出塊610至塊650,塊610至塊650包括單獨(dú)操作性能和這些操作的各結(jié)果的評估。操作包括對事務(wù)型資源的同步操作(如圖7所示的塊610)和各種消息操作(例如,圖8至圖11所示的塊620至塊650)。在塊520的執(zhí)行過程中,任何一個這種塊均可以被包括在內(nèi)也可以被省略??梢砸皂樞蚍绞交蛞圆⑿蟹绞綀?zhí)行包括的塊一次或多次。正如在塊610至塊650內(nèi)評估的那樣,根據(jù)一個或多個所述操作的單獨(dú)結(jié)果,可以終止塊520,或者根據(jù)與這些操作及其結(jié)果無關(guān)的情況,終止塊520。終止塊520至少意味著在其內(nèi)不再啟動操作,并且它會終止事先在其內(nèi)啟動的、正在進(jìn)行的任何操作。
圖7示出塊610(圖6所示)的確立過程,在該確定過程中,操作是作為事務(wù)一部分進(jìn)行的同步請求。如果根據(jù)本發(fā)明利用其它操作對此操作進(jìn)行分組,則作為在塊510(如圖5所示)內(nèi)建立的分組前后關(guān)系的一部分,建立同步請求所屬事務(wù)的前后關(guān)系。在建立事務(wù)前后關(guān)系時,還必須建立或采用持續(xù)事務(wù)記錄并使其與分組前后關(guān)系內(nèi)的事務(wù)相關(guān)。在塊710內(nèi),對事務(wù)型資源進(jìn)行同步請求。在塊510建立的分組前后關(guān)系內(nèi)進(jìn)行此操作。在塊720,利用與分組前后關(guān)系內(nèi)的事務(wù)相關(guān)的記錄,將此操作作為當(dāng)前事務(wù)的一部分進(jìn)行記錄。在塊730內(nèi),確定單獨(dú)操作的結(jié)果。可以將結(jié)果評估為“成功”或“失敗”,但是也可以認(rèn)為是其它簡單結(jié)果或更復(fù)雜結(jié)果??梢砸匀我忭樞蚧虿⑿袌?zhí)行塊720和塊730。
圖8示出塊620(如圖6所示)的確立過程,在該確立過程中,操作是異步發(fā)送消息。這對應(yīng)于根據(jù)圖3所示的第一種情況描述的消息交互風(fēng)格。如果根據(jù)本發(fā)明,利用其它操作對此操作進(jìn)行分組,則作為塊510(如圖5所示)內(nèi)建立的分組前后關(guān)系的一部分建立消息前后關(guān)系。還建立或采用已發(fā)送持續(xù)消息記錄并使其與分組前后關(guān)系內(nèi)的消息前后關(guān)系相關(guān)。在塊810內(nèi),在利用分組前后關(guān)系建立的消息前后關(guān)系內(nèi)異步發(fā)送消息。在塊820內(nèi),在與分組前后關(guān)系相關(guān)的已發(fā)送消息記錄內(nèi)記錄消息發(fā)送過程。在塊830內(nèi),確定消息發(fā)送操作的結(jié)果。此結(jié)果可以被評估為“成功”或“失敗”,但是也可以認(rèn)為是其它簡單結(jié)果或更復(fù)雜結(jié)果??梢砸匀我忭樞蚧虿⑿袌?zhí)行塊820和塊830。
圖9示出塊630(如圖6所示)的確立過程,在該確立過程中,操作是接收消息。這對應(yīng)于根據(jù)圖3所示的第二種情況描述的消息交互風(fēng)格。在塊910內(nèi),處理過程等待接收消息。在接收消息時,終止塊910。如圖8所示,在這種情況下,對分組前后關(guān)系建立消息前后關(guān)系,并且建立或采用已接收持續(xù)消息記錄并使其與消息前后關(guān)系相關(guān)。還可以在不接收消息時,例如在超時期滿后,終止塊910。在塊920內(nèi),確定是否收到消息。如果已經(jīng)收到消息,則在塊930內(nèi),將接收記錄到有關(guān)已接收消息記錄內(nèi)。在塊920后,如果沒有收到消息,或者在塊930之后,如果收到消息,則在塊940內(nèi),確定單獨(dú)操作的結(jié)果。可以將該結(jié)果評估為“成功”或“失敗”,但是也可以認(rèn)為是其它簡單結(jié)果或更復(fù)雜結(jié)果??梢砸匀我忭樞蚧虿⑿袌?zhí)行塊930和塊940。
圖10示出塊640的確立過程,在該確立過程中,單獨(dú)操作包括連續(xù)發(fā)送消息和連續(xù)接收消息。具體地說,此操作對應(yīng)于請求者在消息請求/應(yīng)答方式中的作用,正如根據(jù)圖3所示的第三種情況描述的那樣。如圖8所示,在這種情況下,對分組前后關(guān)系建立消息前后關(guān)系,然后建立已發(fā)送持續(xù)消息記錄并使其與消息前后關(guān)系相關(guān)。在塊1010和塊1020內(nèi),處理過程分別發(fā)送和記錄消息。在塊1030內(nèi),處理過程判定是否等待應(yīng)答過程的進(jìn)入消息。如果判定等待,則在塊1040內(nèi),處理過程等待應(yīng)答消息。在收到應(yīng)答消息時,或在對某些其它條件、動作或事件進(jìn)行響應(yīng)時,終止此等待過程。在塊1050內(nèi),根據(jù)是否收到消息,進(jìn)行控制判定過程。如果收到消息,則在塊1060內(nèi)記錄此收到的消息。在塊1030后,如果判定不等待應(yīng)答消息,或者在塊1050后,如果未收到消息,或者在塊1060后,如果收到并記錄了消息,則在塊1070內(nèi),確定單獨(dú)操作結(jié)果。此結(jié)果可以被評估為“成功”或“失敗”,但是也可以認(rèn)為是其它簡單結(jié)果或更復(fù)雜結(jié)果。可以以任意順序或并行執(zhí)行塊1060和塊1070。
圖11示出塊650(如圖6所示)的確立過程,在該確立過程中,操作包括連續(xù)接收消息和連續(xù)發(fā)送消息。具體地說,此操作對應(yīng)于應(yīng)答者在消息請求/應(yīng)答方式中的作用,正如根據(jù)圖3所示的第四種情況描述的那樣。如圖8所示,在這種情況下,對分組前后關(guān)系建立消息前后關(guān)系,然后建立已接收持續(xù)消息記錄并使其與消息前后關(guān)系相關(guān)。在塊1110內(nèi),處理過程等待請求消息。在收到此消息時,或在對某些其它條件、動作或事件進(jìn)行響應(yīng)時,終止此等待過程。在塊1120內(nèi),根據(jù)是否收到消息,進(jìn)行控制判定過程。如果收到消息,則在塊1130內(nèi)記錄此收到的消息。在塊1140內(nèi),根據(jù)收到消息進(jìn)行處理??梢砸匀我忭樞蚧虿⑿袌?zhí)行塊1130和塊1140。在此處理過程之后,在塊1150內(nèi),根據(jù)收到的請求消息,判定是否發(fā)送應(yīng)答消息。如果判定發(fā)送應(yīng)答,則在塊1160內(nèi)發(fā)送此應(yīng)答并在塊1170內(nèi)將發(fā)送記錄記錄到消息記錄內(nèi)。在塊1120后,如果沒有收到消息,或者在塊1150后,如果沒有發(fā)送消息,或者在塊1170后,如果發(fā)送并記錄了應(yīng)答消息,則在塊1180內(nèi),確定單獨(dú)操作結(jié)果。此結(jié)果可以被評估為“成功”或“失敗”, 但是也可以認(rèn)為是其它簡單結(jié)果或更復(fù)雜結(jié)果??梢砸匀我忭樞蚧虿⑿袌?zhí)行塊1170和塊1180。
圖12示出采用根據(jù)本發(fā)明系統(tǒng)、用于根據(jù)本發(fā)明方法耦合事務(wù)和消息的軟件系統(tǒng)。該軟件系統(tǒng)包括部件1210,部件1210是以耦合方式使用事務(wù)和消息的事務(wù)型客戶和發(fā)信部件。為此,部件1210采用本發(fā)明系統(tǒng)。該軟件系統(tǒng)還包括事務(wù)型資源1220、消息發(fā)送者1230以及消息接收者1240。根據(jù)本發(fā)明的系統(tǒng)1250包括事務(wù)消息相關(guān)模塊1252、事務(wù)業(yè)務(wù)1254以及消息業(yè)務(wù)1256。
部件1210利用事務(wù)消息相關(guān)模塊1252來啟動組合前后關(guān)系并終止組合前后關(guān)系。它還可以使用模塊1252異常終止組合前后關(guān)系。此外,還可以利用模塊1252來啟動并執(zhí)行作為組合前后關(guān)系的一部分的特定操作。例如,此特定操作是條件消息傳送操作。模塊1252還可以用于查詢用途以確定單獨(dú)操作結(jié)果和分組總結(jié)果,然后根據(jù)操作分組結(jié)果,啟動采取動作。
不能要求利用系統(tǒng)1250顯式執(zhí)行對事務(wù)型資源的同步調(diào)用,例如在部件1210與資源1220之間所示的同步調(diào)用。一旦利用系統(tǒng)1250事務(wù)客戶1210啟動組合前后關(guān)系,則模塊1252利用事務(wù)業(yè)務(wù)1254建立事務(wù)前后關(guān)系,之后利用事務(wù)客戶對事務(wù)型資源進(jìn)行的同步調(diào)用自動與此事務(wù)前后關(guān)系相關(guān)。對于省略系統(tǒng)1250的事務(wù)業(yè)務(wù)1254建立的事務(wù)前后關(guān)系的這些事務(wù)型資源,事務(wù)客戶可以直接對事務(wù)型資源進(jìn)行操作。
為了定義并確定單獨(dú)消息傳送結(jié)果,管理操作優(yōu)先是消息管理操作。模塊1252將消息業(yè)務(wù)1256用于實(shí)際可靠消息傳送過程。利用系統(tǒng)1250,消息發(fā)送者(例如軟件系統(tǒng)的消息發(fā)送者1230)和消息接收者(例如軟件系統(tǒng)的消息接收者1240)可以與發(fā)信部件1210去耦。也就是說,利用系統(tǒng)1250,在反過來使用消息業(yè)務(wù)1256的特定模塊1252內(nèi),全面執(zhí)行作為組合前后關(guān)系一部分的消息交換過程。
系統(tǒng)1250實(shí)現(xiàn)了上述參考圖7至圖11、作為本發(fā)明部分方法說明的任務(wù)。這些任務(wù)包括在不同記錄內(nèi)記錄互異操作;確定單獨(dú)操作結(jié)果;確定操作分組總結(jié)果;檢驗(yàn)并接收進(jìn)入消息;對等待進(jìn)入消息進(jìn)行判定(可以包括時間管理和同步動作);以及根據(jù)操作分組結(jié)果,自動執(zhí)行動作以保證對操作分組定義的特性。
盡管已經(jīng)對用于分組互異操作的系統(tǒng)和方法的實(shí)施例進(jìn)行了說明,但是請注意,根據(jù)上述說明,本技術(shù)領(lǐng)域內(nèi)的熟練技術(shù)人員可以進(jìn)行各種變換和變更。顯然,可以在所附權(quán)利要求所述本發(fā)明實(shí)質(zhì)范圍內(nèi),對所披露的本發(fā)明特定實(shí)施例進(jìn)行變更。盡管根據(jù)專利法的要求對本發(fā)明的細(xì)節(jié)和特別之處進(jìn)行了說明,但是在所附權(quán)利要求中對專利證書保護(hù)的權(quán)利要求進(jìn)行了說明。
權(quán)利要求
1.一種用于對至少兩個互異操作進(jìn)行分組的方法,該方法包括步驟對分組該操作的前后關(guān)系進(jìn)行初始化,其中該分組是至少兩個消息操作或者至少一個消息操作以及至少一個事務(wù)型操作;在前后關(guān)系內(nèi)完成操作,每個操作產(chǎn)生一個結(jié)果;組合各結(jié)果;根據(jù)各操作結(jié)果的組合,確定總結(jié)果;以及根據(jù)總結(jié)果至少采取一個動作。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,該方法進(jìn)一步包括在采取動作后,終止前后關(guān)系的步驟。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,每個操作由一個對象所支持。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,各消息操作的結(jié)果與其它消息操作結(jié)果無關(guān)。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,消息操作的結(jié)果與事務(wù)型操作結(jié)果無關(guān)。
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,一個操作是對事務(wù)型資源的同步調(diào)用和至少兩個發(fā)信部件之間的條件異步發(fā)信之一。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,在至少一個事務(wù)內(nèi)進(jìn)行同步調(diào)用。
8.根據(jù)權(quán)利要求6所述的方法,其特征在于,異步消息產(chǎn)生結(jié)果,由與相應(yīng)操作相關(guān)的條件定義該結(jié)果。
9.根據(jù)權(quán)利要求6所述的方法,其特征在于,該方法進(jìn)一步包括對事務(wù)內(nèi)的同步調(diào)用和條件異步消息進(jìn)行分組的步驟。
10.根據(jù)權(quán)利要求1所述的方法,其特征在于,該方法進(jìn)一步包括將各結(jié)果解釋為成功和失敗之一的步驟。
11.根據(jù)權(quán)利要求1所述的方法,其特征在于,該方法進(jìn)一步包括將總結(jié)果解釋為成功和失敗之一的步驟。
12.根據(jù)權(quán)利要求11所述的方法,其特征在于,該方法進(jìn)一步包括如果至少一個單獨(dú)操作被解釋為失敗,則將分組總結(jié)果評估為失敗的步驟。
13.根據(jù)權(quán)利要求1所述的方法,其特征在于,動作是預(yù)定動作、自動調(diào)用動作以及執(zhí)行動作之一。
14.根據(jù)權(quán)利要求1所述的方法,其特征在于,在確定總結(jié)果為失敗之后所采取的動作進(jìn)一步包括取消操作的步驟。
15.根據(jù)權(quán)利要求1所述的方法,其特征在于,在確定總結(jié)果為失敗之后所采取的動作進(jìn)一步包括補(bǔ)償操作的步驟。
16.一種機(jī)器可讀的實(shí)際體現(xiàn)機(jī)器可執(zhí)行指令程序的程序存儲裝置,機(jī)器執(zhí)行程序指令以實(shí)現(xiàn)對軟件系統(tǒng)內(nèi)的至少兩個互異操作進(jìn)行分組的方法,該方法包括步驟啟動分組操作前后關(guān)系;在前后關(guān)系內(nèi)完成操作,每個操作產(chǎn)生一個結(jié)果;組合各結(jié)果;根據(jù)各操作結(jié)果的組合,確定總結(jié)果;以及根據(jù)總結(jié)果至少采取一個動作。
17.根據(jù)權(quán)利要求16所述的方法,其特征在于,方法進(jìn)一步包括在采取動作后,終止前后關(guān)系的步驟。
18.根據(jù)權(quán)利要求16所述的方法,其特征在于,啟動分組前后關(guān)系的步驟進(jìn)一步包括步驟根據(jù)已定義數(shù)據(jù)結(jié)構(gòu),建立前后關(guān)系表示;以及利用識別分組前后關(guān)系的數(shù)值填寫該表示。
19.根據(jù)權(quán)利要求16所述的方法,其特征在于,每個對象由一個操作所支持。
20.根據(jù)權(quán)利要求19所述的方法,其特征在于,對象是事務(wù)型資源和發(fā)信部件之一。
21.根據(jù)權(quán)利要求16所述的方法,其特征在于,一個操作是對事務(wù)型資源的同步調(diào)用和兩個或多個發(fā)信部件之間的異步發(fā)信之一。
22.根據(jù)權(quán)利要求21所述的方法,其特征在于,在至少一個事務(wù)內(nèi)進(jìn)行同步調(diào)用。
23.根據(jù)權(quán)利要求21所述的方法,其特征在于,異步消息產(chǎn)生結(jié)果,該結(jié)果由與相應(yīng)操作相關(guān)的條件定義。
24.根據(jù)權(quán)利要求23所述的方法,其特征在于,該方法進(jìn)一步包括對事務(wù)內(nèi)的同步調(diào)用和條件異步消息進(jìn)行分組的步驟。
25.根據(jù)權(quán)利要求16所述的方法,其特征在于,該方法進(jìn)一步包括將各結(jié)果解釋為成功和失敗之一的步驟。
26.根據(jù)權(quán)利要求16所述的方法,其特征在于,該方法進(jìn)一步包括將總結(jié)果解釋為成功和失敗之一的步驟。
27.根據(jù)權(quán)利要求26所述的方法,其特征在于,該方法進(jìn)一步包括如果至少一個單獨(dú)操作被解釋為失敗,則將分組總結(jié)果評估為失敗的步驟。
28.根據(jù)權(quán)利要求16所述的方法,其特征在于,動作是預(yù)定動作、自動調(diào)用動作以及執(zhí)行動作之一。
29.根據(jù)權(quán)利要求16所述的方法,其特征在于,在確定總結(jié)果為失敗之后所采取的動作進(jìn)一步包括取消操作的步驟。
30.根據(jù)權(quán)利要求16所述的方法,其特征在于,在確定總結(jié)果為失敗之后所采取的動作進(jìn)一步包括補(bǔ)償操作的步驟。
31.根據(jù)權(quán)利要求16所述的方法,其特征在于,各消息操作的結(jié)果與其它消息操作結(jié)果無關(guān)。
32.根據(jù)權(quán)利要求16所述的方法,其特征在于,消息操作的結(jié)果與事務(wù)型操作結(jié)果無關(guān)。
33.一種在軟件系統(tǒng)內(nèi)對兩個或多個操作進(jìn)行分組的過程進(jìn)行管理的方法,該方法包括步驟對于分組前后關(guān)系內(nèi)的各操作,啟動包括子前后關(guān)系的分組前后關(guān)系,其中事務(wù)型資源和發(fā)信部件之一支持各操作;在子前后關(guān)系內(nèi)執(zhí)行操作,各操作產(chǎn)生結(jié)果;在分組前后關(guān)系內(nèi)耦合結(jié)果;確定分組前后關(guān)系的總結(jié)果;以及根據(jù)總結(jié)果至少采取一個動作。
34.根據(jù)權(quán)利要求33所述的方法,其特征在于,該方法進(jìn)一步包括在采取一個或多個動作后,終止分組前后關(guān)系的步驟。
35.根據(jù)權(quán)利要求33所述的方法,其特征在于,啟動分組前后關(guān)系的步驟進(jìn)一步包括步驟根據(jù)已定義數(shù)據(jù)結(jié)構(gòu),建立前后關(guān)系表示;以及利用識別分組前后關(guān)系的數(shù)值填寫該表示。
36.根據(jù)權(quán)利要求33所述的方法,其特征在于,操作是對事務(wù)型資源的同步調(diào)用、至少兩個發(fā)信部件之間的異步發(fā)信以及至少兩個操作的第二分組之一。
37.根據(jù)權(quán)利要求36所述的方法,其特征在于,在至少一個事務(wù)內(nèi)進(jìn)行同步調(diào)用。
38.根據(jù)權(quán)利要求36所述的方法,其特征在于,異步消息產(chǎn)生結(jié)果,由與相應(yīng)操作相關(guān)的條件定義該結(jié)果。
39.根據(jù)權(quán)利要求36所述的方法,其特征在于,該方法進(jìn)一步包括對事務(wù)型資源的同步調(diào)用和條件異步消息進(jìn)行分組的步驟。
40.根據(jù)權(quán)利要求33所述的方法,其特征在于,該方法進(jìn)一步包括將各結(jié)果解釋為成功和失敗之一的步驟。
41.根據(jù)權(quán)利要求33所述的方法,其特征在于,該方法進(jìn)一步包括將總結(jié)果解釋為成功和失敗之一的步驟。
42.根據(jù)權(quán)利要求41所述的方法,其特征在于,該方法進(jìn)一步包括如果至少一個操作被解釋為失敗,則將分組總結(jié)果評估為失敗的步驟。
43.根據(jù)權(quán)利要求33所述的方法,其特征在于,動作可以是提交、回退以及補(bǔ)償之一。
44.根據(jù)權(quán)利要求33所述的方法,其特征在于,動作可以是更新、刪除、制表以及追加之一。
45.根據(jù)權(quán)利要求33所述的方法,其特征在于,在確定總結(jié)果為失敗之后所采取的動作進(jìn)一步包括取消操作的步驟。
46.根據(jù)權(quán)利要求33所述的方法,其特征在于,在確定總結(jié)果為失敗之后所采取的動作進(jìn)一步包括補(bǔ)償操作的步驟。
47.根據(jù)權(quán)利要求33所述的方法,其特征在于,管理分組的過程包括實(shí)現(xiàn)軟件系統(tǒng)的已定義特性和保留軟件系統(tǒng)的已定義特性之一。
48.根據(jù)權(quán)利要求33所述的方法,其特征在于,各消息操作的結(jié)果與其它消息操作結(jié)果無關(guān)。
49.根據(jù)權(quán)利要求33所述的方法,其特征在于,消息操作的結(jié)果與事務(wù)型操作結(jié)果無關(guān)。
全文摘要
本發(fā)明披露了一種在軟件系統(tǒng)內(nèi)用于對兩個或多個互異操作進(jìn)行分組的方法。該方法包括步驟:對于分組前后關(guān)系內(nèi)的各操作,啟動包括子前后關(guān)系的分組操作前后關(guān)系,其中事務(wù)型資源和發(fā)信部件之一支持各操作;在子前后關(guān)系內(nèi)完成操作,各操作產(chǎn)生結(jié)果;在分組前后關(guān)系內(nèi)耦合各結(jié)果;確定分組前后關(guān)系的總結(jié)果;以及根據(jù)總結(jié)果至少采取一個動作。該方法進(jìn)一步包括在采取一個或多個動作后確定分組前后關(guān)系的步驟。
文檔編號G06F9/46GK1367430SQ0114530
公開日2002年9月4日 申請日期2001年12月31日 優(yōu)先權(quán)日2001年1月22日
發(fā)明者托馬斯·麥卡森, 伊莎貝爾·魯維爾, 斯坦利·蘇頓, 史蒂芬·泰 申請人:國際商業(yè)機(jī)器公司