專利名稱:用于多主體系統(tǒng)的基于中介的恢復(fù)機制的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及用于多主體系統(tǒng)(multi-agent system)的基于中介 (mediator)的恢復(fù)機制。更具體地,但并非唯一地,本發(fā)明涉及如下恢 復(fù)機制,其中多個軟件主體在時間敏感(time-critical)應(yīng)用中進行在線 交互,該時間敏感應(yīng)用要求每個主體必須了解其它主體所達到的最新狀 態(tài)。
背景技術(shù):
容錯多主體系統(tǒng)在本領(lǐng)域己經(jīng)是公知的。例如,Staffan Hagg, "A Sentinel Approach to Fault Handling in Multi-Agent Systems", in Proceedings of the Second Australian Workshop on Distributed Al, in conjunction with Fourth Pacific Rim International Conference on Artificial Intelligence (PRICAI,96), Claims, Australia, 1996提出了一種在多主體系 統(tǒng)中進行故障處理的方法,其中"Sentinel"主體監(jiān)控應(yīng)用主體之間所交 換的消息,以檢測任何惡意的或有故障的主體。實現(xiàn)Sentinel主體系統(tǒng)通 過防止主體間活動發(fā)生故障使得多主體系統(tǒng)可以變得更為健壯。然而 Sentinel主體是基于應(yīng)用的,并且必須為各新的應(yīng)用而定制。Mark Klein, Juan Antonio Rodriguez-Aguilar禾卩Chrysanthos Dellarocas, "Using Domain-Independent Exception Handling Services to Enable Robust Open Multi-Agent Systems: The Case of Agent Death," Journal of Autonomous Agents and Multi-Agent Systems, 2001也提出了 Sentinel主體 概念。Klein等人公開了不依賴于域的Sentinel主體,從而一旦開發(fā)出 Sentinel主體,它們可以用于監(jiān)控任何種類應(yīng)用主體。在多主體體系結(jié)構(gòu) 中,各應(yīng)用主體與一 Sentinel主體綁定。這些Sentinel主體還相互協(xié)作, 以通過連續(xù)檢測所綁定的應(yīng)用主體來防止任何故障。Lateff. O. Ogunleye, "The state detection of a multi-agent system," Working Paper, Department of Computer Science, University of Saskatchewan, Canada公開了——禾中改進的 容錯多主體系統(tǒng)。Ogunleye公開了基于Report Card的狀態(tài)檢測機制,其 中各主體具有其自己的卡,該卡每隔一段時間就被更新以表示正在如何 處理特定任務(wù)。匯報卡還可以用于檢測該主體對于其正在處理的作業(yè)而 言的進展。Ogunleye還說明了一種黑板系統(tǒng),其用于保持與主體可以投 標(biāo)的任務(wù)有關(guān)的所有信息,這使得可以在任務(wù)級別詳細地監(jiān)控該主體。以上現(xiàn)有技術(shù)提供了容錯機制,該容錯機制限于防止多主體系統(tǒng)的 故障,而不會進行故障恢復(fù),從而在多主體系統(tǒng)事實上崩潰并且需要恢 復(fù)的情況下,該容錯機制并沒有試圖解決問題。該問題已被其它現(xiàn)有技術(shù)所解決,所述其它現(xiàn)有技術(shù)在多主體系統(tǒng) 出現(xiàn)故障的情況下指導(dǎo)進行恢復(fù)。例如,參見Qiming Chen, Umeshwar Dayal, "Multi-Agent Cooperative Transactions for E-Commerce", Proc. Fifth IFCIS Conference on Cooperative Information Systems (CooplS'2000), 2000, Israel; Kumar, Sanjeev; Cohen, Philip R., "Towards a Fault-Tolerant Multi-Agent System Architecture", In Proceedings of the Fourth International Conference on Autonomous Agents (Agents 2000), ACM Press, Barcelona, Spain, June 3-7, 2000, pages 459-466; Kumar, Sanjeew; Cohen, Philip R.; Levesque, Hector J. "The Adaptive Agent Architecture: Achieving Fault-Tolerance Using Persistent Broker Teams", in Proceedings of the Fourth International Conference on Multi-Agent Systems (ICMAS 2000), Boston, MA, USA, July 7-12, 2000, pages 159-166. 2000;以及Pradeep R. Varakantham, Santosh K. Gangwani禾卩Kamalakar Karlapalem, "On Handling Component and Transaction Failures in Multi-Agent Systems," ACM SIGecom Exchanges, vol 3.1, pp.32~43, 2002。在Kumar等人(2000)的兩篇參考文獻中,提出了一種自適應(yīng)主體 體系結(jié)構(gòu)(Adaptive Agent Architecture),該體系結(jié)構(gòu)通過使用持久代理 組(persistent broker teams)來支持容錯多主體系統(tǒng)。通過該方法,具有 代理組的多主體系統(tǒng)可以利用除了陷入崩潰的一個或更多個代理以外的
其余代理主體的協(xié)作來恢復(fù)所述陷入崩潰的主體的一個或更多個主體程序。另一方面,Chen和Dayal對在用于多主體系統(tǒng)的分布式數(shù)據(jù)庫中的 事務(wù)管理技術(shù)進行定制。為此,他們引入了用于委托(commit)控制和 故障恢復(fù)的多主體合作事務(wù)和對等協(xié)議。Varakantham等人提供了一種恢復(fù)機制,其通過在一個主體內(nèi)使用工 作流概念并將所有工作流狀態(tài)信息記錄到本地存儲中來恢復(fù)崩潰的多主 體系統(tǒng)。然而,Varakantham等人提出的方案只適于如下系統(tǒng),其中參與 主體在具有足夠本地存儲的設(shè)備上運行以確保主體可以將他們的狀態(tài)定期地保存到該本地設(shè)備。因此所提出的方案不適合于如下情況沒有提 供本地存儲(例如,沒有或幾乎沒有本地存儲的移動設(shè)備),或者多個主 體要求快速表示其它主體的實時狀態(tài),例如,如果由于電池故障而失去 到因特網(wǎng)的無線連接,而用戶正在參與在線拍賣或游戲應(yīng)用程序,則可 能出現(xiàn)這種情況??梢岳密浖w系結(jié)構(gòu)來對軟件系統(tǒng)建模。軟件體系結(jié)構(gòu)一詞是指 具有計算組件及其交互的集合的軟件系統(tǒng)的高級模型,計算機組件的交 互是諸如過程調(diào)用、事件廣播、數(shù)據(jù)庫查詢和管道處理的連接處理 (connector)。軟件系統(tǒng)的體系結(jié)構(gòu)模型使得可以獲得相互通信、較早的 設(shè)計決斷以及系統(tǒng)的可轉(zhuǎn)換抽象(transferable abstraction)。此外,該軟件 體系結(jié)構(gòu)體現(xiàn)在系統(tǒng)中的組件和組件交互之間。有利地,該體系結(jié)構(gòu)使得復(fù)雜的系統(tǒng)更易處理、可分析以及可再用(參見Garlan,D.和Shaw, W., "An Introduction to Software Architecture", /"/mwriowa/Tow/"""/ q/"iSb/ nwe 5Wgz'ween'"g 尺"cw/ec/ge 5)zg7'"eeWwg, Vol. 1, World Science Publishing, 1993,以及Robbin, J.E., Medvidovic, N., Redmiles, D.F.和Rosenblum, D.S,, "Integrating Architecture Description Languages with a Standard Design Method",/GS£, Kyoto, Japan, 1998, pp.209-218以獲得更多信息)。主體體系結(jié)構(gòu)可以分為兩類單個主體的內(nèi)部體系結(jié)構(gòu)以及多主體系統(tǒng)(MAS)的體系結(jié)構(gòu)。在MAS中,多主體體系結(jié)構(gòu)在規(guī)定主體之間 的關(guān)系和協(xié)調(diào)時扮演重要角色。MAS提供該技術(shù)來支持通過主體的自主 和智能交互而工作的組。該自主減輕了工作人員的信息過載并有助于管 理與其它工作人員的交互。在一組工作人員參與長期協(xié)作的情況下(例如,在諸如與拍賣或合 約網(wǎng)相關(guān)的時間量程上),所述支持的利用率最大。使用已知MAS來支 持長期組協(xié)作的缺點在于該協(xié)作的大部分階段對于使用人員是隱藏的, 這使得當(dāng)在協(xié)作過程中存在任何嚴(yán)重故障時難于恢復(fù)協(xié)作狀態(tài)。結(jié)果, 如果在長期主體交互過程中出現(xiàn)嚴(yán)重故障(如主體的崩潰),則整個協(xié)作 必須從開始重啟,這導(dǎo)致時間的損耗并增加了所投入的努力。此外,由 于存在多個進行協(xié)作的主體,所以一個主體的崩潰不會被立即通知給其 它主體,如果其它主體長時間沒有從該崩潰主體收到響應(yīng),則其它主體可能掛起(hang)。對于這些問題的已知解決方案是受限的,包括設(shè)計需求將解決方案 限于具有本地永久存儲的設(shè)備。這些己知解決方案通常涉及存儲主體的協(xié)作狀態(tài)(使用本地存儲),并使用所存儲的信息來恢復(fù)崩潰主體的協(xié)作 狀態(tài)。在所考慮的設(shè)備不具有本地存儲的情況下或者如果主體平臺不支 持高速緩沖功能(例如,在利用JavaTM虛擬機的某些變型的情況下),則 這些解決方案不是可行的解決方案。例如,手持設(shè)備(如移動電話或PDA) 可能不具有任何本地存儲和/或主體平臺高速緩存功能。如果移動設(shè)備由于某一原因崩潰,或者要么例如由于使該移動設(shè)備 的用戶能夠繼續(xù)進行他們與使用另一電池有電的移動設(shè)備的其它主體的 當(dāng)前協(xié)作的電池沒電,而使該移動設(shè)備從其通信網(wǎng)絡(luò)突然斷開,則期望 具有該本地存儲和/或主體平臺高速緩存功能。利用當(dāng)前的MAS體系結(jié) 構(gòu)無法實現(xiàn)這種簡單的恢復(fù)機制。發(fā)明內(nèi)容本發(fā)明尋求通過提供在任何具有存儲能力設(shè)備上運行的并且記錄 MAS中的其它組成主體的協(xié)作狀態(tài)的協(xié)作中介主體,來調(diào)停和/或消除現(xiàn) 有技術(shù)的以上缺點。根據(jù)本發(fā)明的第一方面,提供了一種恢復(fù)多主體體系結(jié)構(gòu)中的多個 組成主體之間的協(xié)作狀態(tài)的方法,該方法包括處理由中介主體為各組
成主體轉(zhuǎn)發(fā)協(xié)作信息;保持從各協(xié)作主體提供給所述中介主體的協(xié)作信息中導(dǎo)出的協(xié)作處理狀態(tài)信息記錄;并且在實現(xiàn)協(xié)作的設(shè)備遭遇如下事件,g卩,該事件導(dǎo)致一個或更多個組成主體丟失其協(xié)作狀態(tài)的情況下, 使用一個或多個所述協(xié)作處理狀態(tài)信息記錄來恢復(fù)協(xié)作狀態(tài)。優(yōu)選地,所述中介主體通過多主體平臺的管理主體來登記其中介服務(wù)。優(yōu)選地,所述組成主體在所述恢復(fù)協(xié)作狀態(tài)的步驟之前預(yù)訂中介服務(wù)。優(yōu)選地,在第一方面的方法中,如果第一組成主體將其角色(role) 委托給至少一個其它委托組成主體,則中介主體保持與至少一個其它委 托組成主體的角色有關(guān)的狀態(tài)信息。優(yōu)選地,所述多個主體之間的協(xié)調(diào)由包括全局設(shè)計和局部設(shè)計的交 互設(shè)計規(guī)定,其中全局設(shè)計為所有參與協(xié)作的組成主體指定全部交互步 驟,而局部設(shè)計為各參與組成主體指定特定協(xié)作活動。優(yōu)選地,轉(zhuǎn)發(fā)給中介主體的協(xié)作信息包括組成主體的局部設(shè)計的執(zhí) 行狀態(tài)。優(yōu)選地,組成主體沒有將該組成主體的局部設(shè)計實例的執(zhí)行狀態(tài)存 儲在該主體所運行的設(shè)備的永久存儲中。根據(jù)本發(fā)明的第二方面,提供了一種被設(shè)置為恢復(fù)多主體體系結(jié)構(gòu) 中的多個組成主體之間的協(xié)作狀態(tài)的裝置,該裝置包括至少一個處理 器,其被設(shè)置為處理由中介主體為各組成主體轉(zhuǎn)發(fā)的協(xié)作信息;存儲裝 置,其被設(shè)置為保持從各協(xié)作主體提供給所述中介主體的協(xié)作信息中導(dǎo) 出的協(xié)作處理狀態(tài)信息;以及信息提供裝置,其在實現(xiàn)協(xié)作的設(shè)備遭遇 如下事件,g卩,該事件導(dǎo)致一個或更多個組成主體丟失其協(xié)作狀態(tài)的情 況下,以適于利用當(dāng)前協(xié)作狀態(tài)信息來更新該事件所影響的各組成主體 的形式,提供從一個或更多個所述協(xié)作處理狀態(tài)信息記錄中導(dǎo)出的信息。優(yōu)選地,在該裝置包括移動電話或PDA的本發(fā)明的實施例中,由于 無需在該設(shè)備上提供存儲能力來確保在MAS崩潰的情況下的恢復(fù),所以 可以保持設(shè)備的輕質(zhì)。
根據(jù)本發(fā)明的第三方面提供了一種計算機程序產(chǎn)品,包括一組被設(shè) 置為實現(xiàn)本發(fā)明的任何一方面的方法的一個或更多個計算機程序。根據(jù)本發(fā)明的第四方面提供了一種信號,包括被設(shè)置為利用組成消 息來預(yù)訂中介服務(wù)的服務(wù)預(yù)訂消息。根據(jù)本發(fā)明的第五方面,提供了一種網(wǎng)絡(luò),其包括根據(jù)本發(fā)明第二 方面的多個裝置,至少兩個裝置互連。根據(jù)本發(fā)明的第六方面,提供了一種多主體體系結(jié)構(gòu),其包括多個 組成主體和一個中介主體,該中介主體被設(shè)置為在進行協(xié)作的所述組成 主體之間進行調(diào)停,所述體系結(jié)構(gòu)被設(shè)置為執(zhí)行根據(jù)本發(fā)明第一方面的 方法中的步驟。
根據(jù)本發(fā)明的第七方面,提供了一種在多主體體系結(jié)構(gòu)中的被設(shè)置 為執(zhí)行預(yù)定角色的第一組成主體與另一主體之間進行委托的方法,所述 組成主體和所述另一主體被設(shè)置為經(jīng)由中介主體進行通信,所述方法包 括如下步驟將請求消息從第一組成主體發(fā)送到中介主體,以委托給另 一主體;由中介主體將所述委托請求消息轉(zhuǎn)發(fā)給所述另一主體;在所述另一主體處接收所述委托請求處理所述委托請求并將所述委托請求己 被接受的表示提供給中介主體;從所述中介主體將來自第一組成主體的 包括局部工作流實例的信息傳送到另一主體。根據(jù)本發(fā)明的第八方面,提供了一種被設(shè)置為將恢復(fù)信息提供給中 介主體的組成主體,所述組成主體具有將表示其局部交互設(shè)計狀態(tài)的信 息轉(zhuǎn)發(fā)給中介主體的裝置。根據(jù)本發(fā)明的第九方面,提供了一種被設(shè)置為將恢復(fù)信息提供給中 介主體的組成主體,所述組成主體具有存儲表示其局部交互設(shè)計狀態(tài)的 信息并將關(guān)于所述交互狀態(tài)的信息轉(zhuǎn)發(fā)給中介主體的裝置。根據(jù)本發(fā)明的第十方面,提供了一種被設(shè)置實現(xiàn)恢復(fù)多主體體系結(jié) 構(gòu)中的多個組成主體之間的協(xié)作狀態(tài)的方法的中介主體,該中介主體包 括接收并存儲由各組成主體提供的協(xié)作信息的裝置;更新所述協(xié)作信 息以生成至少一個處理狀態(tài)信息記錄的裝置;以及在實現(xiàn)協(xié)作的設(shè)備遭 遇如下事件,即,該事件導(dǎo)致一個或更多個組成主體丟失其協(xié)作狀態(tài)的
情況下,使用一個或更多個所述協(xié)作處理狀態(tài)信息記錄來恢復(fù)所述協(xié)作 狀態(tài)的裝置。優(yōu)選地,通過提供在具有本地存儲的設(shè)備上運行的協(xié)作中介主體, 在沒有本地存儲的設(shè)備上運行的組成主體的協(xié)作狀態(tài)也可以被存儲。 優(yōu)選地,組成主體只經(jīng)由中介主體相互進行交互。有利地,由于所有消息都由中介主體來發(fā)送,所以中介主體保持最 新的協(xié)作狀態(tài),甚至參與主體的內(nèi)部狀態(tài)。如果任何組成主體崩潰,則 該主體重啟并從所述中介主體找到在其崩潰之前的最新狀態(tài),從而進行 恢復(fù)。有利地,包括本發(fā)明的局部和全局設(shè)計的交互模型表示通用多主體交互,然而Varakanthan等人使用Petri-net模型來只表示單主體處理和多 主體交互的問題解決處理,以解決分級問題。Varakanthan通過使多主體 交互類似于單主體行為來恢復(fù)這種類型的交互。即,發(fā)起者主體控制下 級主體的行為以解決問題。在該方法中,上級主體和下級主體具有主從 關(guān)系,其中主控主體具有對于其從屬主體的完全控制。這表示, 一旦主 控主體崩潰,就不可能恢復(fù)其從屬主體,并且因此不可能恢復(fù)整個系統(tǒng)。 這并不是適合于諸如在在線拍賣、合約網(wǎng)和在線游戲場景中發(fā)生的對等 主體交互的方法。根據(jù)本發(fā)明的第十一方面,提供了一種被設(shè)置為嵌入組成主體中的 工作流引擎體系結(jié)構(gòu),該工作流引擎體系結(jié)構(gòu)包括調(diào)度器;任務(wù)管理 器;狀態(tài)管理器;工具庫;以及工作流實例庫。根據(jù)本發(fā)明的第十二方面,提供了一種重啟由中介主體動態(tài)給出的 局部工作流實例的方法,該方法包括驗證從中介主體接收的工作流實 例的有效性;將有效工作流實例存儲在局部工作流實例庫中;并且通過 執(zhí)行來自中介主體的緩沖消息,使所述局部工作流實例與中介主體的全 局工作流實例同步。
下面將參照只通過示例方式提供的附圖來說明本發(fā)明的優(yōu)選實施
例,其中圖1是根據(jù)本發(fā)明的基于中介的多主體體系結(jié)構(gòu)的示意圖;圖2是根據(jù)本發(fā)明的交互設(shè)計的示意圖;圖3示意性地示出了輕質(zhì)工作流引擎的體系結(jié)構(gòu);圖4示意性地示出了當(dāng)完成了局部交互設(shè)計中的正在進行的動作時 調(diào)度和執(zhí)行動作的具體過程;圖5A和B示意性地示出了針對特定多主體交互的全局交互實例的 組成處理;圖6示意性示出了交互恢復(fù)協(xié)議;圖7示意性示出了主體內(nèi)的恢復(fù)處理;以及圖8A和8B分別示意性示出了根據(jù)本發(fā)明兩個實施例的協(xié)作信息的 交換。
具體實施方式
以下是本發(fā)明的優(yōu)選實施例的詳細說明,這些優(yōu)選實施例包括對于 發(fā)明人當(dāng)前所考慮的本發(fā)明的最佳模式的說明。即使沒有明確說明,但 是對于本領(lǐng)域技術(shù)人員很顯然,本發(fā)明的特定特征可以由其己知等價物 代替,并且如果合適,本發(fā)明的范圍旨在包括這些等價物。參照附圖中的圖1,示意性地示出了根據(jù)本發(fā)明一個實施例的基于 中介的多主體系統(tǒng)(MAS)體系結(jié)構(gòu)。在圖1中,體系結(jié)構(gòu)1包括多個 組成主體2a、 2b、 3以及被設(shè)置為與各組成主體2a、 2b、 3相互連接的 中介主體4。中介主體4還被設(shè)置為提供到管理系統(tǒng)5的輸入,以使得當(dāng) 各組成主體試圖相互協(xié)作時各組成主體能夠預(yù)訂該中介主體4的中介服 務(wù),下面將詳細說明。簡言之,該中介提供給管理系統(tǒng)的輸入使得當(dāng)組 成主體請求從管理系統(tǒng)5進行索引簿搜索時中介可以將其中介服務(wù)通告 給組成主體。為此,管理系統(tǒng)包括主體管理系統(tǒng)6以及支持一個或更多 個服務(wù)描述庫8的索引簿服務(wù)商7。更具體地,在圖1所示的本發(fā)明的實施例中,中介主體通過將信息 提供給由諸如FIPA規(guī)范的索引簿服務(wù)商的管理主體所保持的服務(wù)描述庫
來利用管理系統(tǒng)登記其中介服務(wù)(更具體地,參見FIPA Abstract Architecture Specification, Foundation for Intelligent Physical Agents, 2000, httr>:〃www.fba.org/specs/)。也可以使用其它通告機制,只要他們能夠使 中介主體提供適當(dāng)?shù)姆?wù)描述。中介主體的服務(wù)描述包括中介服務(wù)名稱、 要使用的交互協(xié)議等。組成主體得到中介主體的地址,如果服務(wù)描述符 合某一準(zhǔn)則,則組成主體使其自己預(yù)訂該中介主體的中介服務(wù)?;陬A(yù)訂的中介服務(wù)由中介主體提供。為了預(yù)訂中介服務(wù),組成主 體向中介主體發(fā)送包含中介服務(wù)的名稱和中介服務(wù)中的預(yù)訂主體的角色的預(yù)訂消息。各組成主體5, 6的內(nèi)部狀態(tài)由局部工作流實例表示,該局部工作流 實例是局部交互設(shè)計的實例,該實例指定了應(yīng)當(dāng)由該主體執(zhí)行以參與和 MAS中的其它主體的協(xié)調(diào)的動作。所有協(xié)調(diào)主體(為了清楚在圖1中只 示出了兩個)的協(xié)調(diào)狀態(tài)由全局工作流實例表示,該全局工作流實例是 全局交互設(shè)計的實例,該實例指定了應(yīng)當(dāng)由所有參與協(xié)調(diào)的主體執(zhí)行的 動作。如圖l所示,該體系結(jié)構(gòu)可以用于將來自組成主體2a的角色委托給 至少一個其它組成主體2b (在下文中更詳細地說明),并可以用于崩潰組 成主體的恢復(fù)。如果一個主體將其在交互設(shè)計中的角色委托給另一組成 主體,則在兩個組成主體之間存在角色委托關(guān)系,在這種情況下,中介 主體將用于該授權(quán)(donor)主體的局部工作流實例發(fā)送到委托主體。該 體系結(jié)構(gòu)支持主體角色的委托并在崩潰后快速恢復(fù)的能力在需要管理多 主體交互的機制的任何情形中都是有用的。該體系結(jié)構(gòu)的全局和局部設(shè) 計交互模型有利地支持狀態(tài)同步和角色委托,這對于由于例如在協(xié)調(diào)過 程中的電池問題而想要從一個移動設(shè)備改變到另一移動設(shè)備的移動設(shè)備 操作者而言特別有用。在圖1中,用于恢復(fù)沒有本地存儲設(shè)施的設(shè)備上的多主體系統(tǒng)的基 于"協(xié)作中介"的多主體體系結(jié)構(gòu)使用交互協(xié)議,該協(xié)議規(guī)定了在參與 的主體之間所交換的消息的順序。該中介主體根據(jù)所采用的交互協(xié)議管 理組成主體之間的協(xié)作。即,所有組成主體只將消息發(fā)送到中介主體,
然后中介主體將這些消息路由到其它主體,其它主體在各階段中調(diào)整對 這些消息的處理負責(zé)的角色。由于組成主體之間的所有消息都經(jīng)過中介 主體,所以中介主體保持并更新這些組成主體的協(xié)作狀態(tài)。在本發(fā)明的 優(yōu)選實施例中,中介主體在具有本地存儲的設(shè)備上運行,從而該中介主 體可以本地地記錄協(xié)作狀態(tài)以從崩潰中恢復(fù)。相反地,組成主體可以在 不具有本地存儲的設(shè)備上運行。下面參照附圖的圖2,該圖示意性地示出了根據(jù)本發(fā)明的交互設(shè)計 結(jié)構(gòu)。該交互設(shè)計描述了用于交互協(xié)議的工作流。該工作流包括交互協(xié) 議的詳細處理。在圖2中,交互設(shè)計結(jié)構(gòu)包括全局交互設(shè)計IO和局部交互設(shè)計lla、 llb。通過使用如下交互設(shè)計使參與交互的各主體(包括組成主體和中介主體)對于用于中介服務(wù)的交互協(xié)議具有相同理解中介主體13保持全局交互設(shè)計10,并且各組j^主體12a、 12b保持局部交互 設(shè)計lla、 llb。全局交互設(shè)計IO指定總體交互步驟,其中參與角色進行相同活動。 通過相應(yīng)的執(zhí)行者角色(actor role)、基數(shù)、輸入消息和輸出消息來描述 各活動。基數(shù)指定該活動是否應(yīng)該被初始化為由具有相同角色的不同執(zhí) 行者所同時進行的多個實例。全局交互設(shè)計具有如下限制相鄰動作應(yīng)該由不同角色來執(zhí)行。例 如,全局交互設(shè)計10中的活動A和B (或者C和D)不能由相同主體執(zhí) 行。經(jīng)由消息將交互控制從一個主體轉(zhuǎn)換到另一主體。即,活動A產(chǎn)生 消息mdp該消息被傳遞給另一主體以用作針對活動B的輸入(對于md2 和md3的情況相同)。在圖2中示出了用于全局交互設(shè)計10的兩個局部交互設(shè)計lla、 1 lb。 各局部交互設(shè)計是用于在屬于一個角色的全局設(shè)計中規(guī)定的活動的詳細 設(shè)計。全局設(shè)計中的各活動具體地是局部交互設(shè)計中的動作(即, 一個 活動是一個或更多個動作的組合),以表示如何處理所輸入的消息(對于 B的md"對于C的md2以及對于D的md3)以創(chuàng)建輸出消息(對于A 的m山、對于B的md2以及對于D的md3)。在圖2中,組成主體12a進行全局交互設(shè)計10中的角色1并負責(zé)執(zhí)
行活動A和C。另一方面,組成主體12b進行全局交互設(shè)計10中的角色2并負責(zé)活動B和D。各組成主體12a、 12b分別執(zhí)行其局部交互局部設(shè) 計lla、 llb,并將其執(zhí)行狀態(tài)獨立地發(fā)送到中介主體以記錄在中介主體 所運行的本地機器中。全局交互設(shè)計10中的相鄰活動不能由一個角色來進行。因此,在某 一點(從圖2中的活動A (B)的最后動作到活動C (D)的第一動作) 中,針對一角色的局部設(shè)計中的多個下級活動會斷開。使用特殊動作"發(fā) 送消息"和"接收消息"來連接這些下級活動(圖2中的活動"S"和"R")。當(dāng)一個角色產(chǎn)生了輸出消息時,執(zhí)行發(fā)送消息動作以將消息發(fā)送到中介 主體。然后,控制轉(zhuǎn)到"接收消息"狀態(tài),即,等待接收針對下一階段 的輸入消息。在圖2中,示意性地示出了各局部交互設(shè)計lla、 llb,作為通過轉(zhuǎn) 換(由箭頭表示)鏈接的一系列有順序的動作(由活動(A、 B、 C或D) 內(nèi)的內(nèi)部矩形表示)。利用各動作的輸入值、輸出值、用于執(zhí)行該動作的 工具以及執(zhí)行后狀況來描述各動作。轉(zhuǎn)換鏈接兩個相鄰動作。利用前動 作、后動作來描述轉(zhuǎn)換,并且可以利用根據(jù)各工作流實例來評估真假的 條件來擴充(augment)該轉(zhuǎn)換。局部設(shè)計的執(zhí)行產(chǎn)生了工作流實例。工 作流實例包含與該局部設(shè)計的設(shè)計相關(guān)的歷史信息。歷史信息包括工作 流實例的創(chuàng)建時間、完成時間以及所完成的活動實例的順序?;顒訉嵗?包含起始時間、完成時間、執(zhí)行者、輸入值和輸出值。例如,在拍賣中,"宣布開始拍賣"、"投標(biāo)價格"、"更新最高價格" 和"結(jié)束拍賣"成為活動。用于"宣布開始拍賣"的活動的動作將為"確 定起始價"、"找出拍賣的參加者"以及"準(zhǔn)備產(chǎn)品描述"等。工作流引擎嵌入式主體各組成主體12a、 12b配備有工作流引擎,以調(diào)度并執(zhí)行局部交互設(shè) 計。在本發(fā)明的優(yōu)選實施例中,工作流引擎是輕質(zhì)工作流引擎。在本說 明書中,"輕質(zhì)工作流引擎"一詞是指其中工作流實例可變并且工作流實 例的狀態(tài)信息因此沒有存儲在永久存儲中的工作流引擎。這些工作流模 型不支持由工作流管理聯(lián)盟(WfMC)所定義的所有建模,或者具體地,
沒有實現(xiàn)在WfMC的工作流參考體系結(jié)構(gòu)中定義的接口 4和5。接口在 根據(jù)本發(fā)明的工作流引擎的體系結(jié)構(gòu)中不是必需的。關(guān)于WfMC的更多 具體情況可以從WfMC (工作流管理聯(lián)盟)h加:〃www.wfmc.org和WfMC 工作流標(biāo)準(zhǔn)規(guī)范TC-1016陽P-"Interface 1: Process Definition Interchange Process Model", http:〃www.wfmc.org/standards/docs/ifl9807r3.pdf中獲得。下面參照附圖中的圖3,該圖示意性地示出了根據(jù)本發(fā)明一個實施 例的輕質(zhì)工作流引擎嵌入式主體的內(nèi)部體系結(jié)構(gòu)。工作流引擎20包括工 作流實例庫21、狀態(tài)管理器22、任務(wù)管理器23、調(diào)度器24、局部設(shè)計 規(guī)定25和工具庫26。當(dāng)任務(wù)管理器23完成了一動作時,調(diào)度器24主要 參考局部設(shè)計規(guī)定確定隨后的動作。圖4示出了當(dāng)完成了前一動作時要調(diào)度并執(zhí)行動作的詳細過程。當(dāng) 請求調(diào)度器24 (參見圖3)來調(diào)度接下來的動作時(步驟31),該調(diào)度器 24找出前代(precedent)動作的后代(descendant)動作組(步驟32)。然 后,調(diào)度器24利用其前代動作評估連接各后代動作的轉(zhuǎn)換的條件(步驟 33和34)。只有利用被評估為真的轉(zhuǎn)換而鏈接的動作才被包括在調(diào)度動作組中 (步驟36)。然后調(diào)度器24通知任務(wù)管理器23執(zhí)行調(diào)度動作。任務(wù)管理器26根據(jù)局部交互設(shè)計規(guī)定25分析由調(diào)度器提供的動作 規(guī)定(步驟37、 38),并從工具庫26中找出用于執(zhí)行這些動作的適當(dāng)工 具。該動作可以是內(nèi)部動作(為一活動定義的針對應(yīng)用的動作)或者協(xié) 作動作(向/從中介主體發(fā)送/接收消息的專用動作)。如果對于執(zhí)行39調(diào)度內(nèi)部動作,則任務(wù)管理器23從工具庫26中找 出適當(dāng)?shù)墓ぞ?步驟43),并調(diào)用該工具以得到對于該動作的輸出(步驟 44到45),并且前一動作的輸出用作下一動作的輸入(步驟46,引導(dǎo)至 步驟37)。如果調(diào)度動作不是內(nèi)部動作,而是協(xié)作動作(步驟40),則通過工 具庫26中的兩個通用工具消息發(fā)送器27和消息接收器28來進行該動作。 例如,如果協(xié)作動作是發(fā)送動作(步驟40),則任務(wù)管理器將包括當(dāng)前工 作流實例和隨后發(fā)送給中介主體的ACL消息的信息提供為到消息發(fā)送器
27的輸入(步驟41)。消息發(fā)送器工具的輸出是過濾信息,該過濾信息 用于標(biāo)識來自其它參與主體的相應(yīng)消息。然后,過濾信息用作消息接收器工具28的輸入,該消息接收器工具28隨后等待從中介主體接收任何 響應(yīng)消息(步驟42)。各工具的執(zhí)行結(jié)果由將結(jié)果通知給狀態(tài)管理器22的任務(wù)管理器23 來監(jiān)控,并且狀態(tài)管理器22更新相應(yīng)的工作流實例(步驟46)。工作流 實例21被管理和監(jiān)控工具29(如用于將進度信息表示給移動工作人員的 GUI)所查詢。全局交互實例的組成圖5A、 B、 C示意性示出了用于特定多主體交互(例如,移動工作 人員之間的這種作業(yè)交易)的全局交互實例的構(gòu)成處理。圖5A示出了涉及兩方或更多方之間的作業(yè)交易的本發(fā)明的一個實 施例。在圖5A所示的實施例中,這些方的主體的角色包括作業(yè)給與者 48、中介49和作業(yè)承擔(dān)者主體50。作業(yè)交易是移動工作人員之間的有用 的協(xié)作機制,該機制使得工作人員(具有由于時間限制或其它原因而不 能由他/她本人完成的作業(yè))根據(jù)預(yù)定義的策略(例如,從作業(yè)地點到同 事的當(dāng)前位置的距離最小)將該作業(yè)重新指派給他/她的同事,參見HLee, M Buckland 禾口 J Shepherdson, "A multi-agent system to support location-based group decision making in mobile teams". BT technical Journal: Vol. 21, No. 1,2003。此處將作業(yè)規(guī)定為包括顧客信息、諸如設(shè)備修理或 供應(yīng)等的作業(yè)詳情,以及作業(yè)重要性等。該作業(yè)交易的全部處理在以下 步驟中執(zhí)行首先,作業(yè)給與者發(fā)送一個或更多個C0FD (距離請求)消息。各消 息包括作業(yè)給與者想要交易的作業(yè)的詳情,并且該消息被發(fā)送到適當(dāng)候 選者以告知這些預(yù)期候選者作業(yè)給與者尋求作業(yè)交易。然后候選者選擇 適當(dāng)?shù)膽?yīng)用來響應(yīng)該CFD。CFD消息接受者想要被分配該作業(yè),計算從該消息接受者的當(dāng)前位 置到作業(yè)位置的距離。該距離值可用于創(chuàng)建包含所計算出的距離的投標(biāo), 以發(fā)送到作業(yè)給與者。接下來,作業(yè)給與者評估所接收的投標(biāo),并使用
一個或更多個適當(dāng)準(zhǔn)則(通常與最接近作業(yè)的工作人員相關(guān))選擇最適 合的投標(biāo)者。包含結(jié)果表示的消息被送回作業(yè)投標(biāo)者,以通知作業(yè)投標(biāo) 者他/她的投標(biāo)被接受還是被拒絕。在本實施例中,MAS主體交互的全局交互設(shè)計包括四個活動宣布作業(yè)交易51、申請投標(biāo)52、評估投標(biāo)53和處理響應(yīng)54。針對活動申請 投標(biāo)的特定動作包括接收CFD 55、準(zhǔn)備距離56和發(fā)送距離57。在圖5A和5B中,當(dāng)作業(yè)給與者主體將觸發(fā)消息發(fā)送到中介主體時 (步驟62),中介主體創(chuàng)建全局設(shè)計的實例(全局工作流實例58)(步驟 61)。觸發(fā)消息是由全局設(shè)計的第一動作創(chuàng)建的第一消息(在示例交互中, 由作業(yè)承擔(dān)者發(fā)送的第一消息,其中CFD是消息內(nèi)容)。從組成主體(圖5A中的作業(yè)給與者或作業(yè)承擔(dān)者主體)發(fā)送到中介 主體的消息內(nèi)容示例如下(Mediate(:sender jobgiver_name@telco.com) (:receiver MediatorAgent@telco.com) (:ontology "TeamCoordination") ( 'language "SL0") (:Protocol "interaction-mediation") (:content(local-workflow-case (uiid "mdl2121123A,,) (interaction-plan-id "give-job")(state info : (plan-name "give-job,,)(creator "Job Giver's Name") (creation-time 27-08-2002》 (Request (:sender j obgiver砂elco. com) (:language "SLO") (:protocol "FIPA一Request") (' content (action(get-distance (task (id "tal223,,)(name "ISDN provision") (post-code "IP5 3RE"))))) ))更概括地,根據(jù)本發(fā)明的消息的內(nèi)容包括表示局部工作流實例的謂 詞和需要轉(zhuǎn)發(fā)給其它組成主體的內(nèi)部消息。中介主體使局部工作流實例 構(gòu)成全局工作流實例,并且該中介主體將內(nèi)部消息轉(zhuǎn)發(fā)到執(zhí)行對全局交 互設(shè)計的下一階段負責(zé)的角色的主體。返回到圖5B,當(dāng)消息到達中介主體49處時,中介主體檢查該消息 是否是觸發(fā)消息(步驟62)。通過簡單地檢查該消息是否在其字段中包含 唯一的交互標(biāo)識符號碼(UNIN)值。假設(shè)UNIN對于各全局工作流實例 是唯一的。如果該消息是觸發(fā)消息,則中介主體通過檢査包含在該消息 中的信息來識別相應(yīng)的全局交互設(shè)計(步驟63)。為此,使用在以上消息 內(nèi)容中的(local-workflow-case(interaction-plan-id ,,give-job,,))字段。然后, 中介主體創(chuàng)建全局工作流實例(基于全局交互設(shè)計)(步驟64),并將UNIN 發(fā)配給該全局工作流實例(步驟65)。接下來,中介主體從所接收的消息 中提取局部工作流實例59,并將其復(fù)制到所創(chuàng)建的全局工作流實例(60, 步驟66)。如果所接收的消息不是觸發(fā)消息,則中介主體從該消息中提取局部 工作流實例,并通過參照消息內(nèi)容中的(local-workflow-case (interaction-plan-id "give-job"))字段來將該實例復(fù)制到適當(dāng)?shù)娜止ぷ髁?實例。中介主體還生成針對全局工作流實例的附加信息,例如,執(zhí)行者 主體信息、所創(chuàng)建的時間和消息內(nèi)容等。從這一點出發(fā),從中介主體到 組成主體的消息使用UIIN。再次參照圖5A和5B,在記錄了與全局工作流實例有關(guān)的發(fā)起者和 請求詳情之后,中介主體根據(jù)全局設(shè)計描述找出消息的接收者(步驟67), 并將該消息轉(zhuǎn)發(fā)給這些接收者(步驟68)。然后,響應(yīng)主體執(zhí)行其局部設(shè) 計并將響應(yīng)消息返回到中介主體。該響應(yīng)消息還包含響應(yīng)主體的局部交 互設(shè)計工作流實例。然后中介主體根據(jù)所采用的交互協(xié)議將響應(yīng)消息轉(zhuǎn) 發(fā)給發(fā)起者主體。下面簡單地返回到圖3,組成主體(發(fā)起者和響應(yīng)主體)的工作流
引擎將局部工作流實例交互設(shè)計以及ACL消息中的局部交互消息的輸出經(jīng)由消息發(fā)送器27發(fā)送到中介主體。局部工作流實例59還被復(fù)制到全 局工作流實例60。組成主體的執(zhí)行狀態(tài)被記錄在永久存儲中的時間由該 ACL消息何時被從組成主體傳到中介主體來決定。中介主體每次從組成 主體接收到消息時都更新全局工作流實例(全局交互設(shè)計),并記錄相應(yīng) 的全局工作流實例(全局交互設(shè)計)的最新狀態(tài)。在中介主體崩潰的情 況下,所記錄的信息可以用于恢復(fù)該中介主體的狀態(tài)。 崩潰主體的恢復(fù)圖6示意性地示出了用于根據(jù)本發(fā)明實施例的恢復(fù)處理的交互協(xié) 議。在圖6中,該協(xié)議開始于崩潰主體(由圖6中的"參加者"70表示) 重啟并聯(lián)系中介主體71以預(yù)訂中介服務(wù)。這是通過將請求預(yù)訂消息71 從圖6所示的參與者70發(fā)送到中介71而進行的。中介主體查詢其全局工作流實例庫,以檢査預(yù)訂主體是否參與了任 何未完成的協(xié)作。然后,中介主體告知被預(yù)訂的主體存在未完成的協(xié)作(如圖8上部的通知消息73所示)。該通知消息包含主體所參與的協(xié)作 的UIID。如果成功地預(yù)訂了所重啟的主體,則該主體將中介主體登記在 其中介索引簿中,該中介索引簿將中介服務(wù)與中介主體相映射。該重啟 主體可以通過發(fā)送用于狀態(tài)同步處理的請求消息75來請求交互恢復(fù)處理(圖6中的請求恢復(fù)消息75),或者通過發(fā)送請求中介主體的請求消息 74來進行中止以中止未完成的協(xié)作。在后一情況下,中介主體通過將終 止消息發(fā)送到其它參與主體來啟動對于未完成協(xié)作的關(guān)閉處理79。如果重啟的主體請求恢復(fù),則中介主體準(zhǔn)備通知消息76,該通知消 息包含局部工作流實例,該局部工作流實例反映了在前一主體崩潰之前 的局部交互設(shè)計的最新狀態(tài)(圖6下部的通知消息76)。然后,重啟的主 體使用該信息創(chuàng)建針對崩潰的局部交互設(shè)計的局部工作流實例。所接收 的局部工作流實例被復(fù)制到該重啟主體的工作流引擎的工作流實例庫 內(nèi)。然后,該重啟主體通知工作流引擎的調(diào)度器根據(jù)所復(fù)制的狀態(tài)信息 開始調(diào)度(圖6中的通知完成消息78)。隨后,將工作流實例視為常規(guī)實 例,S卩,作為工作流引擎內(nèi)的任何其它工作流實例。如果在恢復(fù)過程中主體通過將中止消息發(fā)送到其它參與主體將中 止消息(圖6中的請求中止消息77)發(fā)送到對未完成的協(xié)作進行中止的中介主體(圖6下部的請求中止消息77)。否則,該重啟主體對中介主體發(fā)送通知消息,表示準(zhǔn)備好繼續(xù)協(xié)作。在圖7的流程圖中更詳細地示出了主體內(nèi)的恢復(fù)處理,該圖示意性地示出了恢復(fù)處理中的步驟。如果組成主體由于其崩潰而重啟,則其從中介主體接收其局部工作流(圖7中的WF)實例(在其崩潰之前的最新實例)以及所緩沖的消息 (在從主體的崩潰到重啟的時間段中緩沖在中介主體中的消息)(步驟 81)。然后,組成主體檢查所接收的工作流實例的有效性(步驟82)。如 果該工作流實例有效(步驟83),則組成主體將該工作流實例復(fù)制到該組 成主體的局部工作流實例庫中,以通過其工作流引擎進行重啟(步驟84), 另選地,組成主體中止恢復(fù)處理(步驟89,參見下文)。如果存在任何接收的緩沖消息(步驟85),則組成主體通過將所緩 沖的消息提供為局部交互設(shè)計中的動作的輸入來執(zhí)行所復(fù)制的局部工作 流實例(步驟87)。如果在該同步處理過程中存在任何故障(步驟88), 則組成主體中止恢復(fù)處理(步驟89)。否則,中介主體將成功消息(步驟 86,并參照圖6中的步驟78)發(fā)送到中介主體,告知該中介主體準(zhǔn)備好 繼續(xù)進行與其它主體的原來的交互處理(步驟86)。交互角色的動態(tài)委托由于組成主體沒有緊密地互相綁定,所以一個組成主體可以將其角 色委托給其它主體,以可以繼續(xù)進行交互,即使組成主體由于例如主機 設(shè)備上的電源故障而不能從嚴(yán)重故障恢復(fù)。在移動性重要的情況下,該 功能很有用,這是因為該功能使得操作移動設(shè)備的人在執(zhí)行應(yīng)用時可以 使用多個設(shè)備。這些移動用戶可以通過預(yù)定的交互協(xié)議將一個設(shè)備上的 主體的角色委托給另一設(shè)備。這使得移動用戶可以確保當(dāng)預(yù)料到設(shè)備可 能崩潰時該設(shè)備上運行的主體所進行的功能被轉(zhuǎn)交給一個或更多個其它 設(shè)備上運行的一個或更多個主體。這對于移動設(shè)備特別有用,例如在電 池指示器顯示該移動設(shè)備的電池源故障,或者網(wǎng)絡(luò)擁塞指示器顯示由于
高網(wǎng)絡(luò)擁塞而使網(wǎng)絡(luò)連接超時的情況下。在突然掉電等的情況下也可以 實現(xiàn)該功能,這使得由于可以找出當(dāng)前的協(xié)作狀態(tài)所以可以更快地進行 重新連接,并且發(fā)起者和響應(yīng)者主體之間的協(xié)作從停止的狀況起繼續(xù)。委托交互協(xié)議開始于組成主體將委托請求消息發(fā)送到中介主體???以將角色委托給現(xiàn)存的組成主體或者不存在的組成主體。如果角色被委 托給不存在的主體,則中介主體保持轉(zhuǎn)發(fā)給委托主體的所有消息,并進 行等待直到不存在的主體被投入使用并試圖預(yù)訂該角色。如果該新主體 預(yù)訂該中介主體,則處理該預(yù)訂的處理與上部分中說明的恢復(fù)處理相同。將請求消息轉(zhuǎn)發(fā)給目標(biāo)主體的中介主體將角色委托給現(xiàn)存主體。該 目標(biāo)主體可以接收或拒絕該請求,并且根據(jù)該響應(yīng)將局部工作流實例傳 送到目標(biāo)主體或中止。本發(fā)明的優(yōu)選實施例提供了一種工作流系統(tǒng),其使得可以自動進行 移動商業(yè)處理。由于移動工作人員喜歡攜帶手持設(shè)備,優(yōu)選地沒有或幾 乎沒有本地存儲設(shè)置的輕質(zhì)設(shè)備,所以在確保該移動設(shè)備失去連接的情 況下可以恢復(fù)時,工作流客戶端系統(tǒng)特別有用。具體地,當(dāng)多個分散的工作人員經(jīng)由諸如"拍賣(Auction)"或"合約網(wǎng)(Contract-Net)"的預(yù) 定義交互協(xié)議進行工作協(xié)作時,使用本發(fā)明的一個實施例。本發(fā)明的另一實施例使得移動用戶可以動態(tài)恢復(fù)信息,從而可以將 操作從一個移動設(shè)備切換到另一設(shè)備。當(dāng)一個設(shè)備的操作員在與其它工 作人員的協(xié)作過程中由于例如電池問題或其它不可操作性原因而希望中 斷到另一設(shè)備的電源時本發(fā)明同樣有用。這使得系統(tǒng)高度可靠和健壯,即使在諸如不穩(wěn)定的網(wǎng)絡(luò)連接和低計 算能力的惡劣環(huán)境條件下。本發(fā)明是一種非常通用的技術(shù),其可以應(yīng)用于任何種類的其中客戶 端主體可以根據(jù)主要境況動態(tài)地改變其本地設(shè)備的多主體系統(tǒng)。例如, 在用戶在一個辦公室中工作并與同事進行交互的情況下,可以重新安置 到另一地點或建筑物并繼續(xù)與同事的交互,當(dāng)繼續(xù)進行時保持交互最新 狀態(tài)。在圖8A和8B中示出了這種情況。在圖8A中,以對比的方式示出 了在發(fā)起者主體A和響應(yīng)者主體C之間經(jīng)由中介主體的簡單交互。在圖8A中,中介保持A和C的全局交互設(shè)計狀態(tài)信息,并且A保持如下局 部交互設(shè)計,其包含由中介主體轉(zhuǎn)發(fā)的與A的交互狀態(tài)和響應(yīng)者主體C 的狀態(tài)有關(guān)的信息。類似地,響應(yīng)者主體C保持如下局部交互設(shè)計,其 包含C的狀態(tài)信息以及由中介主體轉(zhuǎn)發(fā)的A的狀態(tài)信息。在A失去了與 中介主體的連接的情況下,中介主體能夠?qū)⑷纸换ピO(shè)計的詳情提供給 承擔(dān)了 A在交互中的角色的委托主體(未示出)。該全局交互設(shè)計包含使 委托主體繼續(xù)與C的交互的充分信息,似乎從未丟失與A的連接,從而 委托主體獲悉在丟失連接時C的交互狀態(tài)的程度與A獲悉該信息的程度 相同。在圖8B中,另一主體B經(jīng)由中介主體初始化與C的通信。在應(yīng)用 需要A獲悉B與C的交互狀態(tài)的情況下,例如如果正在執(zhí)行在線實時拍 賣,則中介主體必須確保全局交互設(shè)計反映該事實。這確保如果A失去 其與C的連接,則中介主體可以確保全局中介設(shè)計能夠使委托主體恢復(fù) 從所參與的下述A失去其連接起的交互狀態(tài),從而中介主體利用與C和 B之間的交互狀態(tài)有關(guān)的最新信息更新委托局部交互設(shè)計,從而A通過 獲悉該狀態(tài)而確保了其的交互。本領(lǐng)域技術(shù)人員可以理解,本發(fā)明的許多特征都可以以軟件和/或硬 件來實現(xiàn),并且本發(fā)明的精神旨在覆蓋任何適當(dāng)?shù)能浖?或硬件的組合 形式的實施例。
權(quán)利要求
1. 一種恢復(fù)多主體系統(tǒng)體系結(jié)構(gòu)中的多個組成主體之間的協(xié)作狀態(tài)的方法,該方法包括處理由中介主體為各組成主體轉(zhuǎn)發(fā)的協(xié)作信息;保持從各協(xié)作主體提供給所述中介主體的所述協(xié)作信息中導(dǎo)出的協(xié)作處理狀態(tài)信息記錄;以及在實現(xiàn)協(xié)作的設(shè)備遭遇如下事件,即,該事件導(dǎo)致一個或更多個組成主體丟失其協(xié)作狀態(tài)的情況下,使用一個或多個所述協(xié)作處理狀態(tài)信息記錄來恢復(fù)所述協(xié)作狀態(tài)。
2、 根據(jù)權(quán)利要求l所述的方法,其中所述中介主體被設(shè)置為利用任 何多主體平臺的管理主體來登記其中介服務(wù)。
3、 根據(jù)權(quán)利要求2所述的方法,其中所述組成主體在所述恢復(fù)協(xié)作 狀態(tài)的步驟之前預(yù)訂所述中介服務(wù)。
4、 根據(jù)以上任一權(quán)利要求所述的方法,其中如果第一組成主體將其 角色委托給至少一個其它委托組成主體,則所述中介主體保持與至少一 個其它委托組成主體中每個的角色有關(guān)的狀態(tài)信息。
5、 根據(jù)以上任一權(quán)利要求所述的方法,其中所述中介主體保持與所 有委托主體的角色有關(guān)的狀態(tài)信息。
6、 根據(jù)以上任一權(quán)利要求所述的方法,其中所述多個主體之間的協(xié) 作由包括全局設(shè)計和局部設(shè)計的交互設(shè)計規(guī)定,其中所述全局設(shè)計為參 與協(xié)作的各組成主體指定總的交互步驟,而所述局部設(shè)計為各參與組成 主體指定各協(xié)作活動。
7、 根據(jù)以上任一權(quán)利要求所述的方法,其中所述轉(zhuǎn)發(fā)給中介主體的 協(xié)作信息包括組成主體的局部設(shè)計的執(zhí)行狀態(tài)。
8、 根據(jù)權(quán)利要求7所述的方法,其中所述組成主體沒有將所述組成 主體的局部設(shè)計實例的執(zhí)行狀態(tài)存儲在永久存儲裝置中。
9、 一種在多主體體系結(jié)構(gòu)中的被設(shè)置為執(zhí)行預(yù)定角色的第一組成主 體與另一主體之間進行委托的方法,所述組成主體和所述另一主體被設(shè) 置為經(jīng)由中介主體進行通信,該方法包括如下步驟將請求消息從所述第一組成主體發(fā)送到中介主體,以委托給另一主體;由所述中介主體將所述委托請求消息轉(zhuǎn)發(fā)給所述另一主體; 在所述另一主體處接收所述委托請求;處理所述委托請求并將所述委托請求已被接受的表示提供給所述中 介主體;從所述中介主體,將來自第一組成主體的包括局部工作流實例的信 息傳送到所述另一主體。
10、 根據(jù)權(quán)利要求9所述的方法,其中在所述轉(zhuǎn)發(fā)委托請求的步驟 之前,該方法還包括以下步驟將所有消息保持在所述中介主體中直到所述其它主體被投入使用;以及將所述中介主體預(yù)訂給所述其它主體。
11、 一種被設(shè)置為恢復(fù)多主體體系結(jié)構(gòu)中的多個組成主體之間的協(xié) 作狀態(tài)的裝置,該裝置包括至少一個處理器,其被設(shè)置為處理由中介主體為各組成主體轉(zhuǎn)發(fā)的協(xié)作信息;存儲裝置,其被設(shè)置為保持從各協(xié)作主體提供給所述中介主體的協(xié) 作信息中導(dǎo)出的協(xié)作處理狀態(tài)信息;以及信息提供裝置,其在實現(xiàn)協(xié)作的設(shè)備遭遇如下事件,即,該事件導(dǎo) 致一個或更多個組成主體丟失其協(xié)作狀態(tài)的情況下,以適于利用當(dāng)前協(xié) 作狀態(tài)信息來更新由該事件影響的各組成主體的形式,提供從一個或更 多個所述協(xié)作處理狀態(tài)信息記錄中導(dǎo)出的信息。
12、 一種中介主體,被設(shè)置為提供中介服務(wù)以恢復(fù)多主體系統(tǒng)體系 結(jié)構(gòu)中的多個組成主體之間的協(xié)作狀態(tài),該中介主體包括接收并存儲由各組成主體提供的協(xié)作信息的裝置; 更新所述協(xié)作信息以生成至少一個處理狀態(tài)信息記錄的裝置;以及 恢復(fù)裝置,其在實現(xiàn)協(xié)作的設(shè)備遭遇如下事件,即,該事件導(dǎo)致一 個或更多個組成主體丟失其協(xié)作狀態(tài)的情況下,使用一個或更多個所述 協(xié)作處理狀態(tài)信息記錄來恢復(fù)所述協(xié)作狀態(tài)。
13、 一種被設(shè)置為將恢復(fù)信息提供給中介主體的組成主體,該組成 主體具有將表示其局部交互設(shè)計狀態(tài)的信息轉(zhuǎn)發(fā)給中介主體的裝置,所 述中介主體如權(quán)利要求12所述。
14、 一種被設(shè)置為將恢復(fù)信息提供給中介主體的組成主體,該組成主體具有存儲表示其局部交互設(shè)計狀態(tài)的信息并將關(guān)于所述交互狀態(tài)的 信息轉(zhuǎn)發(fā)給中介主體的裝置。
15、 一種計算機程序產(chǎn)品,包括一組被設(shè)置為執(zhí)行根據(jù)權(quán)利要求1 到10中任何一個權(quán)利要求的方法的一個或更多個程序。
16、 一種計算機程序產(chǎn)品,包括在線拍賣應(yīng)用中的組件。
17、 一種計算機程序產(chǎn)品,包括在線投機應(yīng)用中的組件。
18、 一種網(wǎng)絡(luò),包括被設(shè)置為實現(xiàn)權(quán)利要求1到10中任何一個的方 法的一個或更多個設(shè)備。
19、 一種網(wǎng)絡(luò),包括如權(quán)利要求ll所述的多個裝置。
20、 一種多主體體系結(jié)構(gòu),包括多個組成主體和一中介主體,所述中介主體被設(shè)置為在進行協(xié)作的多個所述組成主體之間進行中介,所述 體系結(jié)構(gòu)被設(shè)置為執(zhí)行根據(jù)權(quán)利要求1的方法中的步驟。
21、 一種信號,包括被設(shè)置為將組成消息預(yù)訂到由中介主體支持的 中介服務(wù)的服務(wù)預(yù)訂消息,所述中介服務(wù)包括如權(quán)利要求IO所述的在多 主體體系結(jié)構(gòu)中的被設(shè)置為執(zhí)行預(yù)定角色的第一組成主體與另一主體之間進行委托的方法。
22、 一種被設(shè)置為嵌入組成主體中的工作流引擎體系結(jié)構(gòu),該工作 流引擎體系結(jié)構(gòu)包括調(diào)度器; 任務(wù)管理器; 狀態(tài)管理器; 工具庫;以及 工作流實例庫。
23、 一種重啟由中介主體動態(tài)給出的局部工作流實例的方法,該方法包括驗證從中介主體接收的工作流實例的有效性; 將有效工作流實例存儲在局部工作流實例庫中;以及 通過執(zhí)行來自中介主體的緩沖消息,使所述局部工作流實例與中介 主體的全局工作流實例同步。
全文摘要
一種恢復(fù)多主體系統(tǒng)體系結(jié)構(gòu)中的多個組成主體之間的協(xié)作狀態(tài)的方法,該方法包括處理由中介主體為各組成主體轉(zhuǎn)發(fā)的協(xié)作信息;保持從各協(xié)作主體提供給所述中介主體的所述協(xié)作信息中導(dǎo)出的協(xié)作處理狀態(tài)信息記錄;以及在實現(xiàn)協(xié)作的設(shè)備遭遇如下事件,即,該事件導(dǎo)致一個或更多個組成主體丟失其協(xié)作狀態(tài)的情況下,使用一個或更多個所述協(xié)作處理狀態(tài)信息記錄來恢復(fù)協(xié)作狀態(tài)。
文檔編號G06F11/07GK101213521SQ200480007939
公開日2008年7月2日 申請日期2004年3月3日 優(yōu)先權(quán)日2003年3月24日
發(fā)明者李河賓, 約翰·威廉·謝潑德森 申請人:英國電訊有限公司