專利名稱::用于企業(yè)協(xié)作的系統(tǒng)和方法
技術(shù)領(lǐng)域:
:本公開(kāi)一般地涉及用來(lái)支持經(jīng)由計(jì)算機(jī)網(wǎng)絡(luò)的動(dòng)態(tài)用戶協(xié)作的系統(tǒng)和方法。
背景技術(shù):
:網(wǎng)頁(yè)可以提供對(duì)公司的商品和服務(wù)的容易、直觀的訪問(wèn)。網(wǎng)頁(yè)的價(jià)值在于其對(duì)終端用戶隱藏大量后端業(yè)務(wù)進(jìn)程(process)和業(yè)務(wù)到業(yè)務(wù)整合的復(fù)雜性的能力。然而,網(wǎng)頁(yè)不是很善于允許終端用戶在這些業(yè)務(wù)進(jìn)程的情境中彼此協(xié)作。即時(shí)消息傳遞是基于網(wǎng)絡(luò)的協(xié)作應(yīng)用的簡(jiǎn)單示例。然而,即時(shí)消息傳遞受到限制,因?yàn)樗辉试S用戶彼此交互,而不是還使得用戶能夠以協(xié)作的方式與業(yè)務(wù)進(jìn)程交互。圖1是本發(fā)明各種實(shí)施例中的協(xié)作進(jìn)程的組成部分的示例性圖解。圖2是本發(fā)明各種實(shí)施例中的組件調(diào)用的示例性高級(jí)圖解。圖3是本發(fā)明各種實(shí)施例中的頁(yè)面流控制流和可擴(kuò)展性點(diǎn)(extensibilitypoint)的示例性圖解。圖4是本發(fā)明各種實(shí)施例中的消息傳遞層的示例性圖解。圖5是本發(fā)明各種實(shí)施例中的場(chǎng)景參與者的示例性圖解。圖6是本發(fā)明各種實(shí)施例中的示例性消息控件的類圖。圖7是本發(fā)明各種實(shí)施例中的示例性在場(chǎng)(presence)控件的類圖。圖8是本發(fā)明各種實(shí)施例中的網(wǎng)絡(luò)瀏覽器和應(yīng)用服務(wù)器的示例性圖解。圖9是根據(jù)本發(fā)明各種實(shí)施例的富(Rich)UI客戶端初始化的流程解。圖IO是根據(jù)本發(fā)明各種實(shí)施例的富UI客戶端初始化的流程解。圖11是根據(jù)本發(fā)明各種實(shí)施例的富UI客戶端頁(yè)面加載的流程解。圖12a-c是根據(jù)本發(fā)明各種實(shí)施例的協(xié)作客戶呼叫中心場(chǎng)景的示例性圖解。圖13a-e是根據(jù)本發(fā)明各種實(shí)施例的群組聊天場(chǎng)景的示例性圖解。具體實(shí)施例方式在附圖的圖中作為示例而不是作為限制來(lái)圖示本發(fā)明的多個(gè)方面,在附圖中,相同的標(biāo)記表示相似的元素。應(yīng)當(dāng)注意在此公開(kāi)中對(duì)"一(an)"、"一個(gè)(one)"、"各種(various)"和"另一個(gè)(fiirther)"實(shí)施例的引用不一定是同一實(shí)施例,并且這樣的引用意味著至少一個(gè)。在下面的描述中,闡述許多特定的細(xì)節(jié)以便提供對(duì)本發(fā)明的全面描述。然而,對(duì)本領(lǐng)域技術(shù)人員將顯而易見(jiàn)的是在沒(méi)有這些特定細(xì)節(jié)的情況下也可以實(shí)踐本發(fā)明。在其它實(shí)例中,沒(méi)有詳細(xì)描述公知的特征,以便不使本發(fā)明變得模糊。在各種實(shí)施例中,給出了用于在業(yè)務(wù)進(jìn)程的情境中在用戶之間提供協(xié)作的系統(tǒng)和方法。在這些實(shí)施例的方面中,可以在集成軟件開(kāi)發(fā)環(huán)境(IDE)中或者通過(guò)使用其它合適的方式來(lái)開(kāi)發(fā)協(xié)作進(jìn)程。IDE的一個(gè)示例是可從California,SanJose的BEASystems公司獲得的WebLogicWorkshop。該協(xié)作進(jìn)程可以用一種或多種語(yǔ)言來(lái)編寫(xiě),可以是多線程的、被細(xì)分成獨(dú)立的進(jìn)程、并且/或者分布在一個(gè)或多個(gè)計(jì)算設(shè)備/處理器之中。在應(yīng)用服務(wù)器中,可以將協(xié)作進(jìn)程部署為獨(dú)立程序、和/或可通過(guò)一個(gè)或多個(gè)網(wǎng)絡(luò)訪問(wèn)的資源(例如對(duì)象)。最后,可以用軟件、硬件或者作為硬件組件和軟件的組合來(lái)實(shí)現(xiàn)該協(xié)作進(jìn)程。圖1是本發(fā)明各種實(shí)施例中的協(xié)作進(jìn)程的組成部分的示例性圖示。盡管此圖將組件示出為在邏輯上是分離的,但是這樣的圖示只是出于說(shuō)明的目的。對(duì)于本領(lǐng)域技術(shù)人員來(lái)說(shuō)將清楚的是在此圖中描繪的組件可以被組合或者劃分成分離的軟件、固件和/或硬件組件。而且,對(duì)于本領(lǐng)域技術(shù)人員來(lái)說(shuō)還將清楚的是無(wú)論如何組合或劃分這樣的組件,它們都可以在同一計(jì)算設(shè)備上執(zhí)行,或者可以分布在通過(guò)一個(gè)或多個(gè)網(wǎng)絡(luò)或者其它合適的通信裝置連接的不同計(jì)算設(shè)備中。在各種實(shí)施例中,可以至少部分地用一種或多種編程語(yǔ)言(例如Java、C存等等)來(lái)實(shí)現(xiàn)協(xié)作進(jìn)程。當(dāng)然,本發(fā)明的范圍不限于任何特定的編程語(yǔ)言或范式。在這些實(shí)施例的方面中,協(xié)作進(jìn)程可以包括部署在諸如可從BEASystems公司獲得的WebLogicServer的一個(gè)或多個(gè)應(yīng)用服務(wù)器112上的一個(gè)或多個(gè)Java⑧2平臺(tái),企業(yè)版(J2EE)組件。作為說(shuō)明,協(xié)作進(jìn)程可以包括以下組件中的一個(gè)或多個(gè)■控件(特別地圖示為控制層108);■網(wǎng)絡(luò)(Web)服務(wù)100;■頁(yè)面流102;■業(yè)務(wù)進(jìn)程104;和Java服務(wù)器頁(yè)面(JSP)106,其一些或全部可以是一個(gè)或多個(gè)頁(yè)面流的一部分。除了實(shí)現(xiàn)組件的邏輯的Java⑧代碼之外,每個(gè)源代碼文件還包括可用來(lái)確定運(yùn)行時(shí)能力的定制Javadoc注釋??梢詫⒂蛇@些注釋引用的基礎(chǔ)結(jié)構(gòu)實(shí)現(xiàn)為J2EE組件。在這些實(shí)施例的方面中,協(xié)作進(jìn)程可以最終被部署為純J2EE應(yīng)用程序。在各種實(shí)施例中,控件封裝業(yè)務(wù)邏輯并且/或者提供對(duì)一個(gè)或多個(gè)資源110的有計(jì)劃訪問(wèn)。在這些實(shí)施例的方面中,控件模型允許協(xié)作進(jìn)程以一致、直接的方式訪問(wèn)業(yè)務(wù)邏輯或資源,仿佛它是簡(jiǎn)單的Java⑧對(duì)象一樣??丶梢院?jiǎn)化對(duì)諸如數(shù)據(jù)庫(kù)、Java⑧消息服務(wù)(JMS)隊(duì)列和企業(yè)JavaBeansTM(EJB"々公共資源的訪問(wèn)。然而,本公開(kāi)不限于或者依賴于任何特定的控件實(shí)現(xiàn)、編程語(yǔ)言或編程范式。對(duì)于本領(lǐng)域技術(shù)人員來(lái)說(shuō)將清楚的是可以用許多其它方式來(lái)實(shí)現(xiàn)控件,所述其它方式包括但不限于庫(kù)、子例程、函數(shù)、方法、宏、過(guò)程(procedure)、以及用于封裝程序邏輯和/或資源的任何其它合適的方式。在這些實(shí)施例的方面中并且作為說(shuō)明,控件可以被實(shí)現(xiàn)為Java⑧類并且可以由J2EEEJB容器在運(yùn)行時(shí)進(jìn)行管理。該容器可以提供自動(dòng)交易、異步、狀態(tài)管理和其它服務(wù)。在這些實(shí)施例的方面中,控件的Java⑧類定義包括定義該控件的運(yùn)行時(shí)行為的注釋(例如Javadoc注釋)。控件可以使用網(wǎng)絡(luò)服務(wù)、頁(yè)面流、JSP、業(yè)務(wù)進(jìn)程和另一控件,并且可以從網(wǎng)絡(luò)服務(wù)、頁(yè)面流、JSP、業(yè)務(wù)進(jìn)程和另一控件使用該控件??丶纳虡I(yè)實(shí)施例可以從BEASystems公司獲得。參見(jiàn)BEAWEBLOGICWORKSHOPHelp(幫助)ANNOTATIONSREFERENCE(注釋參考)(版本8.1SP2,2003年11月),其被整體合并于此。在各種實(shí)施例中,網(wǎng)絡(luò)服務(wù)是軟件組件,其中可以通過(guò)經(jīng)由公共網(wǎng)絡(luò)協(xié)議發(fā)送可擴(kuò)展標(biāo)記語(yǔ)言(XML)消息來(lái)訪問(wèn)所述軟件組件的功能性。通常,這些消息使用被稱為SOAP(簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議)的XML方言(dialect)。所述消息通常表示對(duì)網(wǎng)絡(luò)服務(wù)執(zhí)行某種操作的請(qǐng)求。當(dāng)容留網(wǎng)絡(luò)服務(wù)的服務(wù)器接收到這樣的消息時(shí),它將該消息傳送到實(shí)現(xiàn)該網(wǎng)絡(luò)服務(wù)業(yè)務(wù)邏輯的實(shí)體。當(dāng)該操作完成時(shí),網(wǎng)絡(luò)服務(wù)通常通過(guò)發(fā)送XML或SOAP響應(yīng)消息來(lái)響應(yīng)其客戶端端。由于網(wǎng)絡(luò)服務(wù)可以通過(guò)XML通信,因此客戶端和網(wǎng)絡(luò)服務(wù)通常不知道實(shí)現(xiàn)另一方的編程語(yǔ)言或操作系統(tǒng)。例如,SOAP和XML綱目(Schema)提供一種與語(yǔ)言和操作系統(tǒng)無(wú)關(guān)的方式來(lái)描述任意復(fù)雜度的數(shù)據(jù)類型。第一代網(wǎng)絡(luò)服務(wù)通常通過(guò)HTTP來(lái)調(diào)用。然而,網(wǎng)絡(luò)服務(wù)思想的基礎(chǔ)是消息傳遞并且借以傳遞消息的協(xié)議是不相關(guān)的。在這些實(shí)施例的方面中,可以將網(wǎng)絡(luò)服務(wù)指定為Java⑧網(wǎng)絡(luò)服務(wù)(JWS)。JWS可以包括單個(gè)Java⑧類,所述Java⑧類定義可能顯露為網(wǎng)絡(luò)服務(wù)操作的一種或多種方法。當(dāng)接收到對(duì)網(wǎng)絡(luò)服務(wù)的統(tǒng)一資源定位符(URL)的請(qǐng)求、并且該請(qǐng)求包含標(biāo)識(shí)要執(zhí)行的操作并包含要操作的數(shù)據(jù)的適當(dāng)?shù)腦ML或SOAP消息時(shí),調(diào)用該操作??梢允褂肑avadoc注釋來(lái)配置網(wǎng)絡(luò)服務(wù)的屬性及其操作。在各種實(shí)施例中,頁(yè)面流可以管理通常為JSP的多個(gè)網(wǎng)頁(yè)之間的信息的表示(presentation)和流動(dòng)。頁(yè)面流可以通過(guò)應(yīng)用程序控制用戶的交互路徑,并且可以使用控件來(lái)訪問(wèn)后端資源。頁(yè)面流不依賴于任何特定的編程語(yǔ)言、軟件框架或運(yùn)行時(shí)范式。在這些實(shí)施例的方面中,頁(yè)面流可以為它們的運(yùn)行時(shí)基礎(chǔ)結(jié)構(gòu)補(bǔ)充(leverage)Struts框架,即來(lái)自ApacheJakartaProject(http:〃jakarta.apache.org/struts/)的一種開(kāi)放源碼工具。頁(yè)面流模型通過(guò)集中對(duì)網(wǎng)頁(yè)上的信息流的管理來(lái)改進(jìn)Stmts模型??梢詫㈨?yè)面流定義為一個(gè)或多個(gè)Java⑧頁(yè)面流(JPF)。JPF可以包括定義一種或多種動(dòng)作方法的單個(gè)Java⑧頁(yè)面流類。可以根據(jù)在JPF中定義的規(guī)則并且響應(yīng)于用戶與單獨(dú)網(wǎng)頁(yè)的交互而調(diào)用所述動(dòng)作。可以使用Javadoc注釋來(lái)配置動(dòng)作方法的屬性??梢詮腂EASystems公司作為它們的WebLogic⑧門(mén)戶產(chǎn)品的一部分而獲得頁(yè)面流的商業(yè)實(shí)現(xiàn)。在各種實(shí)施例中,業(yè)務(wù)進(jìn)程允許各種應(yīng)用和人類參與者的整合以及業(yè)務(wù)伙伴和企業(yè)之間的協(xié)調(diào)的信息交換。業(yè)務(wù)進(jìn)程由一組具有所定義的排序的行為構(gòu)成。作為說(shuō)明,業(yè)務(wù)進(jìn)程協(xié)調(diào)地組織(orchestmte)可能不同的業(yè)務(wù)系統(tǒng)(例如,企業(yè)到企業(yè)的訂單安排(orderplacement)和跟蹤系統(tǒng)等)和用戶的交互,其中業(yè)務(wù)進(jìn)程本身是通過(guò)事件生成和消息的交換來(lái)推進(jìn)的。在這些實(shí)施例的方面中,可以通過(guò)Java⑧進(jìn)程定義(JPD)來(lái)指定業(yè)務(wù)進(jìn)程,所述Java⑧進(jìn)程定義(JPD)遵守JAVACOMMUNITYPROCESSJAVASPECIFICATIONREQUEST(JSR)207:PROCESSDEFINITIONFORJAVA(可在www.jcp.org獲得),其整體通過(guò)引用而被包括于此。在這些實(shí)施例的方面中,業(yè)務(wù)進(jìn)程可以被編譯為EJB并被部署在應(yīng)用服務(wù)器上??梢詫?shí)體bean用于有狀態(tài)的進(jìn)程,而可以將會(huì)話bean可以用于無(wú)狀態(tài)的進(jìn)程。圖2是本發(fā)明各種實(shí)施例中的組件調(diào)用的示例性高級(jí)圖解。在這些實(shí)施例的方面中,當(dāng)編譯組件時(shí),可以產(chǎn)生工件(artifact)的集合并且/或者將其配置用于(例如在應(yīng)用服務(wù)器中)部署。這些工件可以包括分發(fā)器(dispatcher)200和組件容器202。組件容器可以是提供上下文和到其它組件的一致接口的輕量級(jí)類。網(wǎng)絡(luò)層(tier)中的一個(gè)或多個(gè)傳送對(duì)象(204、206)為從外部客戶端(例如,網(wǎng)絡(luò)瀏覽器或者與網(wǎng)絡(luò)瀏覽器一起運(yùn)行的應(yīng)用程序)調(diào)用組件提供協(xié)議支持。傳送對(duì)象接收采用協(xié)議特定格式的調(diào)用請(qǐng)求(208、210)并且將它們轉(zhuǎn)換成被傳遞給分發(fā)器的類屬(generic)請(qǐng)求對(duì)象。可以支持不同的傳送,例如JMS和HTTP,然而本公開(kāi)不限于或依賴于任何特定的傳送。因此,尚未開(kāi)發(fā)的新傳送完全處于本公開(kāi)的范圍和精神內(nèi)。在各種實(shí)施例中,可以由小服務(wù)程序206接收通過(guò)HTTP到達(dá)的網(wǎng)絡(luò)服務(wù)調(diào)用。網(wǎng)絡(luò)服務(wù)是其一部分的協(xié)作進(jìn)程可以被配置成將所有對(duì)URL(例如,以".jws,,結(jié)尾)的請(qǐng)求發(fā)送給此小服務(wù)程序??梢栽跇?biāo)準(zhǔn)J2EE網(wǎng)絡(luò)應(yīng)用部署描本認(rèn)證安全性。通過(guò)JMS協(xié)議到達(dá)的網(wǎng)絡(luò)服務(wù)調(diào)用可以被引導(dǎo)至特定配置的JMS隊(duì)列(未示出)。消息驅(qū)動(dòng)Bean(MDB)204可以被部署為監(jiān)聽(tīng)此隊(duì)列。在這些實(shí)施例的方面中,可以構(gòu)造分發(fā)器并且在協(xié)作進(jìn)程中由所有組件使用它。在這些實(shí)施例的方面中,分發(fā)器接收進(jìn)入的請(qǐng)求對(duì)象,并且適當(dāng)?shù)匕l(fā)送它們。根據(jù)開(kāi)發(fā)者通過(guò)與協(xié)作進(jìn)程組件相關(guān)聯(lián)的注釋選擇的運(yùn)行時(shí)特征,用于特定應(yīng)用的分發(fā)器可以包括一個(gè)或兩個(gè)EJB(未示出)■消息驅(qū)動(dòng)Bean,其處理組件方法的異步調(diào)用。將調(diào)用請(qǐng)求排隊(duì)并且稍后對(duì)其進(jìn)行服務(wù)。如果協(xié)作進(jìn)程利用被緩沖的方法包含一個(gè)或多個(gè)組件,則可以部署此bean。,無(wú)狀態(tài)會(huì)話Bean,用來(lái)接收進(jìn)入的同步方法調(diào)用請(qǐng)求。它可以將同步請(qǐng)求直接發(fā)送至適當(dāng)?shù)慕M件容器(202)并且將異步請(qǐng)求路由至消息驅(qū)動(dòng)Bean。同步方法可以具有對(duì)此進(jìn)行指示的注釋。在各種實(shí)施例中,可以使用容器(例如,容器EJB202)來(lái)包裝在網(wǎng)絡(luò)服務(wù)、控件和業(yè)務(wù)進(jìn)程定義中發(fā)現(xiàn)的代碼。容器可以提供諸如上下文服務(wù)、控件初始化和事件路由選擇之類的特殊功能以及請(qǐng)求調(diào)用期間的容器特定的預(yù)處理/后處理。容器顯露出反映它包含的組件的公共接口的業(yè)務(wù)接口。這允許關(guān)于組件的每種方法的聲明性安全。當(dāng)調(diào)用組件方法時(shí),在組件源文件中定義的代碼最終由容器直接執(zhí)行。在這些實(shí)施例的方面中,存在兩種類型的容器EJB:■無(wú)狀態(tài)會(huì)話Bean,其處理無(wú)狀態(tài)(非對(duì)話)組件1方法調(diào)用。由于無(wú)需狀態(tài),因此這些調(diào)用可以由此無(wú)狀態(tài)會(huì)話Bean的任何池式(pooled)實(shí)例處理?!鰧?shí)體Bean,其處理有狀態(tài)(對(duì)話)組件方法調(diào)用。有狀態(tài)方法需要訪問(wèn)特定組件實(shí)例的持續(xù)狀態(tài)。如果網(wǎng)絡(luò)應(yīng)用程序包含具有對(duì)話方法(例如,對(duì)方法進(jìn)行注釋以指示它們是否開(kāi)始、繼續(xù)或結(jié)束"對(duì)話")的一個(gè)或多個(gè)組件,則存在此EJB。當(dāng)調(diào)用被標(biāo)記為開(kāi)始對(duì)話的方法時(shí),創(chuàng)建新的實(shí)體bean實(shí)例以表示新的對(duì)話實(shí)例。該實(shí)體Bean的數(shù)據(jù)是該組件的實(shí)例的持續(xù)狀態(tài)。隨后的對(duì)繼續(xù)和結(jié)束方法的調(diào)用在實(shí)體bean的實(shí)例上#:作。在各種實(shí)施例中,可以將信息返回給客戶端。在同步方法調(diào)用的情況下,過(guò)分發(fā)器將該響應(yīng)返回給適當(dāng)?shù)膫魉蛯?duì)象。如果請(qǐng)求經(jīng)由HTTP到達(dá),則該響應(yīng)可以被打包為HTTP響應(yīng)并且由小服務(wù)程序作為對(duì)始發(fā)的HTTP請(qǐng)求的響應(yīng)返回。在經(jīng)由JMS到達(dá)的請(qǐng)求的情況下,不需要直接的響應(yīng)。在異步方法調(diào)用的情況下,如果客戶端在對(duì)話期間(例如,通過(guò)URL)提供回調(diào)(callback)器可以利用回調(diào)代理來(lái)發(fā)送信息至回調(diào)目的地。在各種實(shí)施例中,在協(xié)作進(jìn)程中,頁(yè)面流組件控制經(jīng)過(guò)一組相關(guān)網(wǎng)頁(yè)的導(dǎo)航和數(shù)據(jù)流。在這些實(shí)施例的方面中,頁(yè)面流是Struts網(wǎng)絡(luò)應(yīng)用。然而,頁(yè)面流在許多關(guān)鍵區(qū)域改進(jìn)了Struts,例如提供對(duì)控件的訪問(wèn)。對(duì)于有關(guān)頁(yè)面流的更多信息,參見(jiàn)可從BEASystems公司獲得的BEAWebLogicWorksh叩TM幫助(版本8.1SP2,20(B年ll月),其整體通過(guò)引用而被合并于此。Struts框架基于模型-視圖-控制器(MVC)模式。Struts被設(shè)計(jì)成允許開(kāi)發(fā)者選擇用于模型和視圖部分的適當(dāng)技術(shù),但是實(shí)際上J2EE組件被用于每個(gè)部分視圖通常被實(shí)現(xiàn)為JSP(Java服務(wù)器頁(yè)面);控制器通常被實(shí)現(xiàn)為Java⑧小服務(wù)程序;并且模型通常包括一個(gè)或多個(gè)EJB(企業(yè)JavaBean)。Struts框架提供多個(gè)可擴(kuò)展性點(diǎn),在所述可擴(kuò)展性點(diǎn)處,軟件開(kāi)發(fā)者可以增加或替換默認(rèn)的Struts行為。頁(yè)面流利用這些可擴(kuò)展性點(diǎn)來(lái)提供更易于使用該純Struts的編程模型。圖3是在本發(fā)明各種實(shí)施例中的頁(yè)面流控制流和可擴(kuò)展性點(diǎn)的示例性圖解。在各種實(shí)施例中,協(xié)作進(jìn)程被配置成用頁(yè)面流Jsp過(guò)濾器(尸agef7owJ^/^7fer)(被映射成"氣jsp"的小服務(wù)程序過(guò)濾器)來(lái)攔截JSP請(qǐng)求。對(duì)于對(duì)JSP的進(jìn)入的請(qǐng)求,如果該JSP的目錄路徑對(duì)應(yīng)已注冊(cè)的Struts模塊(或者在實(shí)時(shí)(on-the-fly)動(dòng)態(tài)注冊(cè)的Struts模塊),則在該請(qǐng)求中選擇那個(gè)模塊。Stmts提供動(dòng)作'j、服務(wù)程序04c"o"5^v/ef),Struts應(yīng)用中的所有動(dòng)作的通用資源標(biāo)識(shí)符(URI)都指向該動(dòng)作小服務(wù)程序。該小服務(wù)程序使用將特定URI模式與Struts模塊相關(guān)聯(lián)的映射來(lái)將進(jìn)入的請(qǐng)求引導(dǎo)至適當(dāng)?shù)哪K。Struts框架允許定制動(dòng)作小服務(wù)程序的替換。在這些實(shí)施例的方面中,已經(jīng)用定制頁(yè)面流動(dòng)作小服務(wù)程序(尸ageF/ovi^"/o"5^v/e)300替換了動(dòng)作小服務(wù)程序。當(dāng)編譯頁(yè)面流時(shí),可以基于頁(yè)面流源文件中的注釋來(lái)生成Struts配置文件。在各種實(shí)施例中,頁(yè)面流使用配置文件來(lái)將指向特定URI(或URI模式)的進(jìn)入請(qǐng)求映射到小服務(wù)程序。例如,以".do"或".jpf,結(jié)尾的URI可以被映射到頁(yè)面流動(dòng)作小服務(wù)程序。一旦進(jìn)入請(qǐng)求到達(dá),該頁(yè)面流動(dòng)作小服務(wù)程序就查找該請(qǐng)求的URI所映射的已注冊(cè)的Struts模塊。如果找到一個(gè),則將該請(qǐng)求分發(fā)給與那個(gè)Struts模塊相關(guān)聯(lián)的請(qǐng)求處理器。所找到的模型可以是動(dòng)態(tài)注冊(cè)的頁(yè)面流Struts才莫塊。Struts還提供與每個(gè)Struts模塊相關(guān)聯(lián)的請(qǐng)求處理器對(duì)象。請(qǐng)求處理器通過(guò)包括用戶角色驗(yàn)證、動(dòng)作查找、表單數(shù)據(jù)管理、動(dòng)作分發(fā)和請(qǐng)求轉(zhuǎn)發(fā)的多個(gè)階段來(lái)引導(dǎo)請(qǐng)求。Stmts框架允許定制請(qǐng)求處理器的替換。在這些實(shí)施例的方面中,已經(jīng)用定制頁(yè)面流請(qǐng)求處理器(尸ageF/ow/e^e^尸raceMor)302替換了請(qǐng)求處理器。Struts框架定義請(qǐng)求處理器接口以允許在請(qǐng)求處理中在各種點(diǎn)處對(duì)其進(jìn)行擴(kuò)展。頁(yè)面流請(qǐng)求處理器利用這些可擴(kuò)展性點(diǎn)。處理映射(/raceMMa/;/"g)304可擴(kuò)展性點(diǎn)允許頁(yè)面流請(qǐng)求處理器檢查在Struts配置中定義的動(dòng)作映射,以便尋找與請(qǐng)求的URI相關(guān)聯(lián)的動(dòng)作。如果成功,則處理映射返回封裝關(guān)于動(dòng)作處理的信息的動(dòng)作映射04c"o"Mopp/"g)。協(xié)作進(jìn)程可以被配置成要求用戶被認(rèn)證為特定安全角色的成員以便執(zhí)行特定動(dòng)作。處理角色(prace^Ro/w)306可擴(kuò)展性點(diǎn)確定該調(diào)用用戶是否處于適當(dāng)?shù)慕巧?。如果該用戶不能被認(rèn)證為屬于所要求的角色,則可以返回錯(cuò)誤至瀏覽器。在處理動(dòng)作表單0roc^W"/o"Forw)308可擴(kuò)展性點(diǎn)中,請(qǐng)求處理器確定目標(biāo)動(dòng)作是否具有相關(guān)聯(lián)的表單bean以及該表單bean是否應(yīng)當(dāng)屬于(scopedto)該請(qǐng)求或會(huì)話。然后,請(qǐng)求處理器試圖訪問(wèn)處于請(qǐng)求或會(huì)話狀態(tài)中的表單bean。如果沒(méi)有找到它,則可以創(chuàng)建新的表單bean并以適當(dāng)?shù)臓顟B(tài)來(lái)存儲(chǔ)它。然后,請(qǐng)求處理器在處理填充(prace^Popw/afe)310可擴(kuò)展性點(diǎn)中將該請(qǐng)求的輸入數(shù)據(jù)映射到在處理動(dòng)作表單(pracew^c"o"Form)中識(shí)別的表單bean。接下來(lái),請(qǐng)求處理器尋找適當(dāng)?shù)膭?dòng)作(A^'o")對(duì)象。在處理動(dòng)作創(chuàng)建Oracew」"/(wCVea&)312可擴(kuò)展性點(diǎn)中,Struts使用在動(dòng)作映射中指定的類來(lái)例示(instantiate)對(duì)象并且返回該對(duì)象。在各種實(shí)施例中,從Struts動(dòng)作類中派生出每個(gè)頁(yè)面流的基本類。頁(yè)面流請(qǐng)求處理器例示適當(dāng)?shù)捻?yè)面流對(duì)象(如果必要的話),將其隱藏(cache)在會(huì)話中并且將其作為動(dòng)作返回。頁(yè)面流對(duì)象也可以任選地實(shí)現(xiàn)將在適當(dāng)時(shí)間調(diào)用的生命周期方法。這些方法是創(chuàng)建時(shí)—Oe她)、動(dòng)作前(Z咖m4c"ow)、動(dòng)作后(q/^勿/o")和破壞時(shí)(o"Z)e欲o力。當(dāng)頁(yè)面流被例示時(shí),調(diào)用它的創(chuàng)建中方法。在各種實(shí)施例中,頁(yè)面流請(qǐng)求處理器調(diào)用頁(yè)面流的執(zhí)行方法。此方法圍繞頁(yè)面流的調(diào)用執(zhí)行若干步驟,包括建立將可用于該頁(yè)面流的上下文。請(qǐng)求、響應(yīng)、會(huì)話和動(dòng)作映射對(duì)象都存儲(chǔ)在頁(yè)面流對(duì)象中。執(zhí)行方法調(diào)用頁(yè)面流的動(dòng)作前生命周期方法。接下來(lái),執(zhí)行方法調(diào)用頁(yè)面流動(dòng)作方法,從而預(yù)料要返回的動(dòng)作轉(zhuǎn)發(fā)(Forward)對(duì)象。然后,控制器調(diào)用頁(yè)面流的動(dòng)作后生命周期方法并且將動(dòng)作轉(zhuǎn)發(fā)04c^wForwaraO對(duì)象返回至請(qǐng)求處理器。動(dòng)作轉(zhuǎn)發(fā)對(duì)象表示在處理轉(zhuǎn)發(fā)配置0Drac&^ForwaWCo^g)314可擴(kuò)展性點(diǎn)處頁(yè)面流請(qǐng)求處理器可以向其轉(zhuǎn)發(fā)或重新定向客戶端的目的地。在各種實(shí)施例中,攔截器對(duì)象可以通過(guò)攔截頁(yè)面流拓樸來(lái)動(dòng)態(tài)地改變它。這對(duì)于很多情形都是有用的,所述情況包括替換整個(gè)頁(yè)面流或者將頁(yè)面流序列插入現(xiàn)有的頁(yè)面流中。在這些實(shí)施例的方面中,攔截器可以出現(xiàn)在頁(yè)面流的開(kāi)始或末尾,或者在動(dòng)作前和動(dòng)作后方法中進(jìn)行評(píng)估,并且創(chuàng)建可以動(dòng)態(tài)地確定其目的地頁(yè)面流的動(dòng)作轉(zhuǎn)發(fā)對(duì)象。作為說(shuō)明,這在用戶第一次導(dǎo)航到網(wǎng)頁(yè)的場(chǎng)景中可能是有用的,他們被提供以某種通知。在查看該通知后,可以使用戶自動(dòng)返回到原來(lái)的網(wǎng)頁(yè)。動(dòng)作前和動(dòng)作后頁(yè)面流在攔截前后具有對(duì)任何貼出的(posted)表單數(shù)據(jù)的訪問(wèn)權(quán)。在攔截后,頁(yè)面流還可以具有對(duì)由被攔截的動(dòng)作填充的表單的訪問(wèn)權(quán)。在各種實(shí)施例中,攔截器可以是規(guī)則驅(qū)動(dòng)的??梢杂萌魏螖?shù)目的方式來(lái)指定規(guī)則。本發(fā)明不依賴或限于用于指定攔截器規(guī)則的任何方法。作為說(shuō)明,規(guī)則可以指定將受到影響的網(wǎng)頁(yè)流的名稱、攔截器出現(xiàn)在動(dòng)作前方法還是動(dòng)作后方法中、以及目標(biāo)動(dòng)作/網(wǎng)頁(yè)流的標(biāo)識(shí)。在這些實(shí)施例的方面中,可以實(shí)時(shí)檢測(cè)攔截器規(guī)則的改變。也可以用"一次性"標(biāo)志來(lái)修改攔截器規(guī)則,所述"一次性"標(biāo)志意思是將僅第一次通過(guò)目標(biāo)頁(yè)面流時(shí)發(fā)生攔截。在一個(gè)實(shí)施例中,可以通過(guò)定義源和目標(biāo)動(dòng)作的XML文件加上象一次性那樣的對(duì)攔截的任何修改符來(lái)配置攔截。此配置信息也是運(yùn)行時(shí)可訪問(wèn)的,使得所配置的攔截的任何一個(gè)可以被有計(jì)劃地打開(kāi)和關(guān)閉,或者甚至使源和目標(biāo)信息被有計(jì)劃地更新圖4是在本發(fā)明各種實(shí)施例中的消息傳遞層的示例性圖解。盡管此圖將組件示出為在邏輯上是分離的,但是這樣的圖示只是出于說(shuō)明的目的。對(duì)于本領(lǐng)域技術(shù)人員將清楚的是在此圖中描繪的組件可以被組合或者劃分成分離的軟件、固件和/或硬件組件。而且,對(duì)本領(lǐng)域技術(shù)人員來(lái)說(shuō)還將清楚的是無(wú)論如何組合或劃分這種組件,它們都可以在同一計(jì)算設(shè)備上執(zhí)行、或者可以分布在由一個(gè)或多個(gè)網(wǎng)絡(luò)或其它合適的通信裝置連接的不同計(jì)算設(shè)備中。協(xié)作場(chǎng)景(以下稱為"協(xié)作"或"場(chǎng)景")可以包括在協(xié)作進(jìn)程的協(xié)調(diào)下一起工作的很多客戶端用戶和/或進(jìn)程(以下稱為"客戶端")。在各種實(shí)施例中,場(chǎng)景參與者(即,客戶端和協(xié)作進(jìn)程)可以使用在它們之間公知的協(xié)議來(lái)交互。在這些實(shí)施例的方面中,可以通過(guò)任何通信介質(zhì)來(lái)傳送協(xié)議,所述通信介質(zhì)包括但不限于一個(gè)或多個(gè)公共和/或?qū)S镁W(wǎng)絡(luò)、共享存儲(chǔ)器、文件系統(tǒng)、分布式對(duì)象和用于交換信息的任何其它合適的方式。在各種實(shí)施例中,消息傳遞層400向場(chǎng)景參與者提供通信介質(zhì)。參與者可以利用應(yīng)用編程接口(API)402、通過(guò)消息傳遞層來(lái)纟皮此交互。API顯露出消息傳遞功能性而不產(chǎn)生對(duì)任何下層通信設(shè)施的依賴性。API也可以包括被設(shè)計(jì)成執(zhí)行某些任務(wù)的一個(gè)或多個(gè)專門(mén)的API(未示出)。在這些實(shí)施例的方面中,可以使API功能性作為軟件庫(kù)、一個(gè)或多個(gè)對(duì)象、和/或通過(guò)任何其它合適的方式呈現(xiàn)給參與者。消息傳遞層還包括服務(wù)提供者接口(SPI)404,其允許一個(gè)或多個(gè)通信提供者(406-412)通過(guò)實(shí)現(xiàn)一些或所有SPI從而使它們的服務(wù)可以用于API來(lái)動(dòng)態(tài)地"插入"消息傳遞層。在這些實(shí)施例的方面中,SPI功能性可以作為庫(kù)、一個(gè)或多個(gè)對(duì)象、和/或通過(guò)任何其它合適的方式來(lái)呈現(xiàn)。在這些實(shí)施例的方面中,提供者可以由SPI工廠(factory)類在運(yùn)行時(shí)動(dòng)態(tài)地創(chuàng)建,所述SPI工廠(factory)類基于諸如所需帶寬、傳送可靠性、協(xié)議等的參數(shù)來(lái)構(gòu)造提供者實(shí)現(xiàn)。在各種實(shí)施例中,消息傳遞層可以同時(shí)支持多個(gè)通信提供者。這允許使用場(chǎng)景中的多個(gè)傳送(例如,即時(shí)消息傳遞和電子郵件)。在這些實(shí)施例的另一些方面中,當(dāng)多個(gè)提供者共存時(shí),可以將一個(gè)指派為"默認(rèn)"傳送以用于在沒(méi)有指定提供者時(shí)的通信。本領(lǐng)域技術(shù)人員將認(rèn)識(shí)到通信提供者不限于提供基于網(wǎng)絡(luò)的通信,而是可以基于用于交換信息的任何方法,例如(但不限于)進(jìn)程間通信、處理器間通信、通過(guò)共享存儲(chǔ)器或其它存儲(chǔ)系統(tǒng)的通信、以及給定計(jì)算設(shè)備中的其它合適的通信鏈路。SPI允許API以與提供者無(wú)關(guān)的方式訪問(wèn)提供者的功能性。由于每個(gè)提供者實(shí)現(xiàn)一些或所有SPI,因此可以改變提供者而無(wú)需改變API。由于下層通信提供者的性質(zhì)被SPI所隱藏,因此這允許在可以獲得新的通信設(shè)施和技術(shù)時(shí)容納它們。因此,本公開(kāi)不限于任何特定的通信協(xié)議或物理層傳送。本領(lǐng)域技術(shù)人員將認(rèn)識(shí)到許多這樣的提供者是可能的或完全處于本公開(kāi)的范圍和精神之內(nèi)。SPI可以包括一個(gè)或多個(gè)專門(mén)的SPI(未示出)。在這些實(shí)施例的方面中,SPI可以包括用于初始化、開(kāi)始和停止提供者的功能性。SPI也可以提供對(duì)被設(shè)計(jì)用于特定任務(wù)的專門(mén)的SPI的訪問(wèn)。在這些實(shí)施例的方面中,消息提供者SPI可以顯露出包括以下幾項(xiàng)的功能性■用于初始化提供者的功能性。這可以包括配置各個(gè)提供者的服務(wù)器或其它進(jìn)程(如果有的話)(例如,即時(shí)消息傳遞服務(wù)器)。薩用于獲得諸如能力的提供者屬性的功能性。例如,由給定提供者支持的加密方案和可靠性?!鲇糜讷@得用戶帳戶管理器API的功能性,其中,這種API顯露出與管理用戶帳戶相關(guān)的功能性。例如,改變用戶密碼和用戶權(quán)限?!鲇糜讷@得用戶在場(chǎng)(presence)管理器API的功能性,其中,這種API顯露出用來(lái)提供與用戶在場(chǎng)相關(guān)的信息的功能性?!鲇糜讷@得連接管理器API的功能性。作為說(shuō)明,這種SPI可以顯露出連接管理功能性,例如登錄到服務(wù)器中的能力、基于一組屬性(例如,要使用的加密方案的類型等)來(lái)獲得有效通信連接的能力、獲得用于連接的唯一標(biāo)識(shí)符的能力以及發(fā)送和接收消息的能力。■用于接收與通信有關(guān)的事件的功能性。在這些實(shí)施例的方面中,此方法允許當(dāng)準(zhǔn)備好在給定提供者連接上檢索消息時(shí)接收通知的方法、對(duì)象或功能("消息收聽(tīng)者")的注冊(cè)。在這些實(shí)施例的方面中,可以將多個(gè)消息收聽(tīng)者與給定的連接相關(guān)聯(lián)?!鲇糜谔幚硐⒌姆椒?例如,分析、提取信息等)。一種類型的SPI提供者是通道(channel)(例如408和410)。通道負(fù)責(zé)傳送消息并且使參與者可以獲得它們。通道可以提供異步和/或同步通信。在異步通信的情況下,通道可以將所接收的消息引導(dǎo)到一個(gè)或多個(gè)已注冊(cè)的消息收聽(tīng)者。在各種實(shí)施例中,通道可以基于可從Jabber軟件基金會(huì)(JabberSoftwareFoundation)(www.jabber.org)獲得的可擴(kuò)展消息傳遞和在場(chǎng)協(xié)議(XMPP)。XMPP是基于可擴(kuò)展標(biāo)記語(yǔ)言(XML)的即時(shí)消息傳遞協(xié)議?;赬MPP的通道提供者可以與外部XMPP服務(wù)器通信,以便與其它參與者交換消息并且傳播在場(chǎng)信息。在場(chǎng)信息允許參與者找到場(chǎng)景的其他參與者?;谙嗨苹虿煌ㄐ偶夹g(shù)的其它實(shí)現(xiàn)是有可能的,并且完全處于本公開(kāi)的范圍和精神內(nèi)。從消息傳遞層的立場(chǎng)來(lái)看所需要的是與SPI的符合。在即時(shí)消息傳遞(IM)的領(lǐng)域中使用在場(chǎng)的概念。在場(chǎng)的IM支持集中在為一個(gè)人的花名冊(cè)(也稱為"好友列表")中的所有用戶提供狀態(tài)("有空(available)","沒(méi)有空(unavailable)"、"離開(kāi)我的書(shū)桌")。在這些實(shí)施例的方面中,可以通過(guò)角色的使用將在場(chǎng)信息連結(jié)到關(guān)于用戶的信息或其它信息。除了發(fā)送和接收消息之外,如果SPI提供者支持消息傳遞層API(象在具有基于XMPP的提供者的情況中那樣),則消息傳遞層API也可以提供在場(chǎng)和狀態(tài)信息給參與者。在場(chǎng)信息可以由通道提供者或?qū)S迷趫?chǎng)提供者(406)提供,場(chǎng)景其中參與者可以使用所述專用在場(chǎng)提供者(例如通過(guò)向其它參與者廣播所述信息或者通過(guò)更新中央儲(chǔ)存庫(kù)(repository))來(lái)使得互相知道它們的在場(chǎng)和狀態(tài)。作為說(shuō)明,在場(chǎng)提供者可以使用通道提供者來(lái)傳送在場(chǎng)信息。在各種實(shí)施例中,存在兩種類型的在場(chǎng)信息用戶和應(yīng)用在場(chǎng)。用戶在場(chǎng)和狀態(tài)提供關(guān)于場(chǎng)景的參與者的可用性的信息。在這些實(shí)施例的方面中,用戶在場(chǎng)可以基于角色。應(yīng)用在場(chǎng)提供關(guān)于特定應(yīng)用的可用性的信息。在需要找到使所需要的應(yīng)用運(yùn)行的適當(dāng)參與者的場(chǎng)合下,應(yīng)用的在場(chǎng)可能是重要的。在各種實(shí)施例中,API能夠提供基于角色的在場(chǎng)功能性。這允許映射到特定角色和在場(chǎng)狀態(tài)的用戶被動(dòng)態(tài)地邀請(qǐng)到運(yùn)行的場(chǎng)景中。在這些實(shí)施例的方面中,在場(chǎng)功能性將能夠提供映射到給定角色并且"有空"參與場(chǎng)景的一組用戶。在這些實(shí)施例的方面中,角色是動(dòng)態(tài)的用戶組。角色可以基于其成員共有的屬性并且可以通過(guò)一個(gè)或多個(gè)成員資格標(biāo)準(zhǔn)來(lái)限定。角色映射是借以確定用戶是否滿足給定角色的成員資格標(biāo)準(zhǔn)的進(jìn)程。出于討論的目的,角色可以^^描述如下角色(Role)=PMembers+[成員資格標(biāo)準(zhǔn)]其中,PMembers是一組用戶、群組和/或形成服從成員資格標(biāo)準(zhǔn)的此角色的潛在成員池的其它角色(如果有的話)。對(duì)于要處于角色中的用戶和進(jìn)程,它們必須屬于PMembers并且滿足成員資格標(biāo)準(zhǔn)。成員資格標(biāo)準(zhǔn)可以包括一個(gè)或多個(gè)條件。作為說(shuō)明,這樣的條件可以包括但不限于一個(gè)或多個(gè)(有可能是嵌套的和混合的)布爾型、數(shù)學(xué)、函數(shù)、關(guān)系和/或邏輯表達(dá)式。因?yàn)榭梢栽谶\(yùn)行時(shí)動(dòng)態(tài)地評(píng)估角色,所以可以在場(chǎng)景參與者活動(dòng)的同時(shí)動(dòng)態(tài)地改變它們。由于可以改變場(chǎng)景的基礎(chǔ)操作參數(shù)而不重新編譯或重新啟動(dòng)所實(shí)現(xiàn)的程序,因此這賦予系統(tǒng)管理員極大的靈活性。作為說(shuō)明,考慮下面的管理員角色管理員-Joe、Mary、超級(jí)用戶+當(dāng)前時(shí)間>下午5:00管理員角色包括作為其潛在成員的兩個(gè)用戶(Joe和Mary)以及屬于名稱為超級(jí)用戶的用戶組的用戶。成員資格標(biāo)準(zhǔn)包括要求當(dāng)前時(shí)間在下午5:00之后的條件。因此,如果用戶是Joe、Mary或者屬于超級(jí)用戶組,并且當(dāng)前時(shí)間在下午5:00之后,那么用戶是管理員角色的成員。在各種實(shí)施例中,成員資格標(biāo)準(zhǔn)可以至少部分地基于用戶的性質(zhì)。作為說(shuō)明,考慮在下面的表1中定義的角色。角色名稱PMEMBERS成員資格標(biāo)準(zhǔn)<table>tableseeoriginaldocumentpage18</column></row><table>表l:各種實(shí)施例中的示例角色監(jiān)管者角色包括作為其潛在成員的用戶Joe、Mary、Paul和Timothy。為了有資格充任該角色,這些用戶必須滿足成員資格標(biāo)準(zhǔn),所述成員資格標(biāo)準(zhǔn)要求職稱為"經(jīng)理"、部門(mén)為"客戶支持"、在場(chǎng)狀態(tài)為"有空"。Service—Rep角色指定系統(tǒng)的所有用戶是其潛在成員,但僅僅是沒(méi)有資格充任監(jiān)管者角色并且有空的那些用戶?;诮巧南到y(tǒng)的商業(yè)實(shí)施例是可以從BEASystems公司得到的BEAWeblogic門(mén)戶。在各種實(shí)施例中,可以按照需要來(lái)評(píng)估基于角色的在場(chǎng)信息,這是因?yàn)檫@樣的確定可能引入處理延遲。在這些實(shí)施例的方面中,可以使用不同的機(jī)制來(lái)保持基于角色的在場(chǎng)信息為最新。在最壞情況的實(shí)施例中,角色的成員資格標(biāo)準(zhǔn)在每次引用角色時(shí)被重新計(jì)算。更智能的解決方案可以注意所述標(biāo)準(zhǔn)自身以確定需要多頻繁地重新計(jì)算角色。作為說(shuō)明,某個(gè)標(biāo)準(zhǔn)比其它標(biāo)準(zhǔn)改變得更頻繁。例如,組成員資格將不會(huì)那么經(jīng)常地改變,因?yàn)樗ǔH由系統(tǒng)管理員建立一次。因此,當(dāng)給定用戶登錄時(shí),不需要重新評(píng)估只具有組標(biāo)準(zhǔn)的角色一僅登錄時(shí)進(jìn)行一次。另一方面,日期/時(shí)間標(biāo)準(zhǔn)比組成員資格改變得更頻繁,所以(例如在場(chǎng)景的生命期期間)其成員資格標(biāo)準(zhǔn)依賴于日期/時(shí)間信息的角色可能很快變?yōu)槭r(shí)效。在這些實(shí)施例的方面中,可以通過(guò)以所設(shè)定的間隔重新評(píng)估依賴日期/時(shí)間標(biāo)準(zhǔn)的角色來(lái)使在場(chǎng)信息保持為新的。因此,給定一組角色成員資格標(biāo)準(zhǔn),被認(rèn)為是最易變的標(biāo)準(zhǔn)可以驅(qū)動(dòng)重新評(píng)估角色的頻率。在各種實(shí)施例中,消息傳遞API可以支持訂閱的特征,其中,客戶端進(jìn)程和協(xié)作進(jìn)程可以訂閱給定角色的在場(chǎng)信息。在這些實(shí)施例的方面中,在場(chǎng)提供者、通道提供者或其它進(jìn)程可以監(jiān)控角色成員資格的改變并且通知已經(jīng)注冊(cè)的客戶端進(jìn)程和/或協(xié)作進(jìn)程接收對(duì)任何這種變化的這種通知。消息傳遞API提供給定進(jìn)程訂閱一個(gè)或多個(gè)角色的能力。在這些實(shí)施例的方面中,處于給定角色的用戶可以拒絕或接受訂閱請(qǐng)求以便保護(hù)它們的隱私。在這些實(shí)施例的另外的方面中,可以通過(guò)使用規(guī)則和/或角色使這種許可自動(dòng)化,使得不需要用戶輸入。作為說(shuō)明,用戶可以選擇自動(dòng)接受由給定的一組角色中的進(jìn)程/用戶進(jìn)行的任何訂閱請(qǐng)求。再次參照?qǐng)D4,監(jiān)控器提供者412可以提供消息傳遞層監(jiān)控以便支持管理和審核活動(dòng)。作為非限制性的示例,監(jiān)控器提供者可以跟蹤其它提供者的消息流。在這些實(shí)施例的方面中,監(jiān)控器提供者可以使用確定它將跟蹤什么活動(dòng)的規(guī)則來(lái)進(jìn)行配置??梢杂米匀徽Z(yǔ)言、圖形化地、通過(guò)表達(dá)式或通過(guò)任何其它合適的方式來(lái)表示規(guī)則。規(guī)則可以包含可替換來(lái)自在場(chǎng)信息、用戶概況信息(例如姓名、地址、位置等)或任何其它信息的表達(dá)式變量的一個(gè)或多個(gè)表達(dá)式。在各種實(shí)施例中,規(guī)則可以包括數(shù)學(xué)、邏輯和布爾運(yùn)算符、函數(shù)/方法調(diào)用、宏、SQL(結(jié)構(gòu)化查詢語(yǔ)音)和任何其它合適的查詢語(yǔ)言。在各種實(shí)施例中,可以一次或多次預(yù)處理表達(dá)式以便執(zhí)行變量替換、常量合并和/或宏展開(kāi)。對(duì)于本領(lǐng)域技術(shù)人員來(lái)說(shuō)將清楚的是許多其它類型的表達(dá)式都是可能的并且完全處于此公開(kāi)的范圍和精神之內(nèi)。在一個(gè)實(shí)施例中,每次訪問(wèn)SPI中的功能性時(shí),SPI都能夠(例如通過(guò)事件)通知監(jiān)控器提供者,使得它可以(任選地)記錄該信息和/或按照該信息動(dòng)作??商鎿Q地或者附加地,提供者可以在事件發(fā)生時(shí)通過(guò)專門(mén)的監(jiān)控器SPI主動(dòng)將它們通知給監(jiān)控器提供者。以這一方式,無(wú)論參與者是否調(diào)用API,都可以跟蹤所有事件(例如,發(fā)送和接收消息、在場(chǎng)信息的傳播)。在這些實(shí)施例的方面中,監(jiān)控器提供者可以(例如,通過(guò)發(fā)送消息)向其它進(jìn)程通知觸發(fā)規(guī)則的事件。例如,如果進(jìn)程"A"想知道給定提供者發(fā)送的消息數(shù)目何時(shí)超過(guò)某個(gè)數(shù)目,則可以用這樣的條件來(lái)指定規(guī)則,該條件指定當(dāng)消息的數(shù)目超過(guò)限制時(shí)將通知進(jìn)程"A"。圖5是本發(fā)明各種實(shí)施例中的場(chǎng)景參與者的示例性圖解。盡管此圖將進(jìn)程和組件示出為在邏輯上分離,但是這樣的圖示只是出于說(shuō)明的目的。對(duì)于本領(lǐng)域技術(shù)人員來(lái)說(shuō)將清楚的是在此圖中描繪的組件可以被組合或者劃分成分離的軟件、固件和/或硬件組件。而且,對(duì)于本領(lǐng)域技術(shù)人員來(lái)說(shuō)還將清楚的是無(wú)論如何組合或劃分這種組件,它們都可以在同一計(jì)算設(shè)備上執(zhí)行,或者可以分布在由一個(gè)或多個(gè)網(wǎng)絡(luò)或其它合適的通信方式連接的不同的計(jì)算設(shè)備中。在各種實(shí)施例中并且作為說(shuō)明,場(chǎng)景參與者可以使用消息傳遞層506通過(guò)一個(gè)或多個(gè)網(wǎng)絡(luò)520互相通信。在這些實(shí)施例的方面中,消息傳遞層所基于的通信提供者(未示出)可以任選地利用一個(gè)或多個(gè)基于XMPP的IM服務(wù)器510來(lái)交換消息并且傳播在場(chǎng)信息。在此圖解中,存在由業(yè)務(wù)進(jìn)程500和516表示的兩個(gè)協(xié)作進(jìn)程、以及由網(wǎng)絡(luò)瀏覽器508和512表示的兩個(gè)客戶端進(jìn)程。盡管沒(méi)有要求,但是客戶端進(jìn)程的用戶接口可以由頁(yè)面流(其在服務(wù)器上執(zhí)行)驅(qū)動(dòng)。這里,瀏覽器508正由服務(wù)器A上的頁(yè)面流502驅(qū)動(dòng),而瀏覽器512正由服務(wù)器B上的頁(yè)面流514驅(qū)動(dòng)。在這些實(shí)施例的方面中,頁(yè)面流和瀏覽器可以使用超文本傳送協(xié)議(HTTP)和/或HTTP的安全版本HTTPS來(lái)通信。由于瀏覽器可以與HTTP和消息傳遞層二者通信,因此消息傳遞層使網(wǎng)絡(luò)瀏覽器可以接收HTTP流之外的數(shù)據(jù)。在各種實(shí)施例中,業(yè)務(wù)進(jìn)程可以由頁(yè)面流或者由來(lái)自瀏覽器的HTTP請(qǐng)求發(fā)起。在后面的情況中,在與瀏覽器通信的服務(wù)器處檢查該請(qǐng)求的URI,以便確定它是否匹配對(duì)應(yīng)于業(yè)務(wù)進(jìn)程的預(yù)先定義的URI。如果是這樣,則服務(wù)器可以代表瀏覽器發(fā)起該業(yè)務(wù)進(jìn)程。作為非限制性的說(shuō)明,新啟動(dòng)的業(yè)務(wù)進(jìn)程可以隨后將瀏覽器重新定向到與該業(yè)務(wù)進(jìn)程所需要的終端用戶應(yīng)用相對(duì)應(yīng)的適當(dāng)?shù)捻?yè)面流。扮演(impersonation)是系統(tǒng)部件代表用戶執(zhí)行操作的能力。此概念類似于基于Unix⑧的操作系統(tǒng)的用戶的概念。用于安全和權(quán)限目的的Unix⑧進(jìn)程利用特定用戶、典型為啟動(dòng)進(jìn)程的用戶的特權(quán)來(lái)執(zhí)行。特權(quán)(也稱為權(quán)利)管理用戶可以和不可以在系統(tǒng)上做什么。此方案防止由用戶啟動(dòng)的進(jìn)程執(zhí)行用戶將不會(huì)被授權(quán)的操作(例如,刪除文件系統(tǒng)中的所有文件、重新啟動(dòng)系統(tǒng)等)。這里,給定的協(xié)作進(jìn)程可以與一個(gè)或多個(gè)客戶端進(jìn)程交互,其中每個(gè)客戶端進(jìn)程由特定用戶啟動(dòng)或"擁有"。為了使協(xié)作進(jìn)程像給定用戶那樣執(zhí)行某些操作,它可以執(zhí)行這樣的命令,所述命令指示系統(tǒng)它將根據(jù)用戶的特權(quán)執(zhí)行操作。以這一方式,協(xié)作進(jìn)程可以在為客戶端進(jìn)程服務(wù)期間"扮演"不同用戶,并且因此保持系統(tǒng)的完整性。業(yè)務(wù)進(jìn)程可以與其它業(yè)務(wù)進(jìn)程、頁(yè)面流和客戶端進(jìn)程(例如,網(wǎng)絡(luò)瀏覽器)通信,不管它們駐留在與該業(yè)務(wù)進(jìn)程相同還是不同的計(jì)算設(shè)備上。同樣,頁(yè)面流可以與業(yè)務(wù)進(jìn)程和客戶端通信,不管它們駐留在與該頁(yè)面流相同還是不同的計(jì)算設(shè)備上。場(chǎng)景參與者也可以以異步的方式通信,這是因?yàn)橄鬟f層允許通信具有對(duì)此的直接支持。此特征的一個(gè)結(jié)果是可以將信息從協(xié)作進(jìn)程傳送至客戶端網(wǎng)絡(luò)瀏覽器,而無(wú)需HTTP(其為同步協(xié)議),并且不會(huì)使客戶端瀏覽器刷新或重新加載網(wǎng)頁(yè)。在這些實(shí)施例的方面中,場(chǎng)景參與者可以利用控制層504中的控件來(lái)幫助它們完成它們的任務(wù)。盡管以下討論根據(jù)不同的控件類型說(shuō)明了控件的功能性。但是將認(rèn)識(shí)到這樣的功能性可以被組合到更少的控件中或擴(kuò)展到更大數(shù)目的控件而不背離本公開(kāi)的范圍和精神。在各種實(shí)施例中,消息控件可以提供用于與消息傳遞層API交互的高級(jí)和筒化的方式。在這些實(shí)施例的方面中,消息控件可以自動(dòng)獲得協(xié)作進(jìn)程正試圖與之通信的每個(gè)客戶端的參與者標(biāo)識(shí)符("參與者id")。在各種實(shí)施例中,參與者id由場(chǎng)景中包含的參與者使用以便互相標(biāo)識(shí)。作為非限制性的說(shuō)明,可以將參與者id分配給網(wǎng)絡(luò)門(mén)戶用戶和應(yīng)用服務(wù)器。在這些實(shí)施例的方面中,可以從池?cái)?shù)據(jù)結(jié)構(gòu)中抽取參與者id并將其返回給池?cái)?shù)據(jù)結(jié)構(gòu),以方便它們的重新使用。在其它實(shí)施例中,當(dāng)使用諸如簡(jiǎn)單郵件傳送協(xié)議(SMTP)的傳送時(shí),參與者id實(shí)際上可以更"持久"。對(duì)于SMTP,參與者id可以等同于電子郵件地址。因此,由于電子郵件地址很少改變,因而參與者id實(shí)際上不會(huì)是短期的。在這些實(shí)施例的方面中,參與者id可以具有相關(guān)聯(lián)的密碼和狀態(tài)。狀態(tài)可以指的是參與者id在其創(chuàng)建時(shí)的狀態(tài)。這可以用來(lái)形成依賴于在場(chǎng)信息的決定的基礎(chǔ)。再次參照?qǐng)D5,客戶端自身可以包含被稱為"富UI,,應(yīng)用522("富ur,代表"富用戶接口,,)的一個(gè)或多個(gè)客戶端進(jìn)程。在各種實(shí)施例中,可以將應(yīng)用標(biāo)識(shí)符("應(yīng)用id,,)分配給每個(gè)客戶端進(jìn)程和每個(gè)協(xié)作進(jìn)程。在這些實(shí)施例的方面中,可以使用參與者id和應(yīng)用id的組合來(lái)指定場(chǎng)景消息的目的地(即"發(fā)送(routing)id,,》<發(fā)送id〉-〈參與者id>+<應(yīng)用id>圖6是本發(fā)明各種實(shí)施例中的示例性消息控件的類圖。參與者可以使用消息控件(M^sageCo"的/)600來(lái)發(fā)送和接收消息。它依賴于可使用參與者id從消息實(shí)體管理器(Me^age£""'(yMa"agw)602獲得的消息實(shí)體(Me^age五""(y)604實(shí)例。在創(chuàng)建時(shí),消息控件可以使用消息實(shí)體管理器來(lái)得到分配給它的消息實(shí)體。然后,它可以注冊(cè)它的應(yīng)用id和可用于將異步消息傳遞回該消息控件的消息回調(diào)(Me^ageOz//6ac^)608實(shí)現(xiàn)。在這些實(shí)施例的某一個(gè)中,由于可以在可不時(shí)地被中止和/或串行化的協(xié)作進(jìn)程中使用消息控件,因此消息控件只保持參與者id對(duì)象作為成員變量(即,用來(lái)存儲(chǔ)參與者id和相關(guān)聯(lián)的信息),并且使用它來(lái)以短期的方式訪問(wèn)其相關(guān)聯(lián)的消息實(shí)體。消息控件可以使用消息實(shí)體來(lái)直接發(fā)送和接收消息。利用超時(shí)參數(shù)來(lái)執(zhí)行消息的同步接收,使得如果沒(méi)有可供接收的消息,則操作將不會(huì)無(wú)限期地阻滯。為了異步地接收消息,可以使用消息回調(diào)。消息控件上的等待消息消息實(shí)體上的等待消,二、所述等待消:息將消息實(shí)體配置成當(dāng)對(duì)于特i的應(yīng)用id新的消息到達(dá)時(shí)使用所注冊(cè)的消息回調(diào)。然后,此回調(diào)可以觸發(fā)消息控件回調(diào)至調(diào)用(calling)進(jìn)程。消息實(shí)體使用連接(Ow"e"/oM)610對(duì)象來(lái)與用于發(fā)送消息和注冊(cè)回調(diào)的消息傳遞API交互。在這些實(shí)施例的某一個(gè)中,在回調(diào)當(dāng)前沒(méi)有向協(xié)作進(jìn)程的消息實(shí)體注冊(cè)并且消息從消息傳遞層到達(dá)時(shí),該消息被放入消息隊(duì)列(Mewage^wewe)606。隨后對(duì)同步或異步接收消息的嘗試可以從此隊(duì)列中使用消息。圖7是本發(fā)明各種實(shí)施例中的示例性在場(chǎng)控件的類圖。在場(chǎng)控件(尸myeweOwra/)700可以提供應(yīng)用和用戶在場(chǎng)信息給參與者。在這些實(shí)施例的方面中,應(yīng)用在場(chǎng)管理器(^/3/^加'0"尸^^"^〃朋^^)706實(shí)例負(fù)責(zé)保持所有場(chǎng)景的當(dāng)前在場(chǎng)狀態(tài)。場(chǎng)景門(mén)戶小服務(wù)程序(&£"^/0^0^^/&^/")702負(fù)責(zé)用參與者終端用戶標(biāo)識(shí)符(例如,網(wǎng)絡(luò)門(mén)戶用戶的登錄名稱)、與給定終端用戶相關(guān)聯(lián)的參與者id和當(dāng)前可用于給定參與者id的應(yīng)用類型之間的關(guān)聯(lián)填充應(yīng)用在場(chǎng)管理器。在各種實(shí)施例中,場(chǎng)景門(mén)戶小服務(wù)程序可以是小服務(wù)程序/進(jìn)程/線程,其檢查去往終端用戶的HTML響應(yīng)以便確定什么應(yīng)用類型對(duì)于該終端用戶可用/在場(chǎng)。這樣的響應(yīng)可以包含用來(lái)發(fā)起、呈現(xiàn)(render)應(yīng)用和/或與應(yīng)用交互的指令,所述應(yīng)用在終端用戶的網(wǎng)絡(luò)瀏覽器或其它客戶端進(jìn)程中在場(chǎng)。在一個(gè)實(shí)施例中,場(chǎng)景門(mén)戶小服務(wù)程序或系統(tǒng)的其它部件也可以通過(guò)檢查HTML響應(yīng)來(lái)跟蹤應(yīng)用狀態(tài),以便確定應(yīng)用何時(shí)進(jìn)入或離開(kāi)給定客戶端進(jìn)程的范圍(即,是活動(dòng)的還是被中止的)。作為說(shuō)明,如果在第一響應(yīng)中而不是在后續(xù)的響應(yīng)中呈現(xiàn)應(yīng)用,則由于應(yīng)用不再在當(dāng)前網(wǎng)頁(yè)上,因此它的狀態(tài)將具有"被中止,,狀態(tài)(即,不是"活動(dòng)的,,)。在其它實(shí)施例中,可以從客戶端進(jìn)程獲得應(yīng)用類型和狀態(tài)信息,所述客戶端進(jìn)程告訴消息傳遞層哪個(gè)應(yīng)用在場(chǎng)以及它們的狀態(tài)是什么??梢韵蚱渌鼌⑴c者轉(zhuǎn)播或廣播此信息,使得向所有參與者通知任何改變。應(yīng)用在場(chǎng)管理器中的信息可以由可與場(chǎng)景門(mén)戶小服務(wù)程序相關(guān)聯(lián)的應(yīng)用在場(chǎng)實(shí)體G4ppiV^^7ce五""(y)704實(shí)例來(lái)更新。例如,當(dāng)應(yīng)用不再在場(chǎng)時(shí),應(yīng)用在場(chǎng)實(shí)體可以從消息傳遞API(例如通過(guò)回調(diào))接收通知,使得可以更新應(yīng)用在場(chǎng)管理器以對(duì)此進(jìn)行反映。在各種實(shí)施例中,應(yīng)用在場(chǎng)實(shí)體可以接收與特定客戶端進(jìn)程相關(guān)聯(lián)的應(yīng)用類型的通知,并且相應(yīng)地更新應(yīng)用在場(chǎng)管理器。在場(chǎng)控件直接依賴于消息傳遞API以支持提供給定用戶的在場(chǎng)狀態(tài)的獲取用戶狀態(tài)(getUserStatus)方法。在場(chǎng)控件也依賴于應(yīng)用在場(chǎng)管理器來(lái)獲得應(yīng)作進(jìn)程獲得具有特定角色的、擁有與應(yīng)用類型(a;^r;;pe)匹配的活動(dòng)應(yīng)用的可用用戶列表。這對(duì)于基于角色和應(yīng)用類型找到適當(dāng)?shù)膮f(xié)作候選者的列表來(lái)說(shuō)是有用的。還提供了另一個(gè)變體,即獲取用戶狀態(tài)(ge^Z^nStows),其可以用來(lái)基于提供參與者id和應(yīng)用類型來(lái)確定用戶的實(shí)時(shí)狀態(tài)。在各種實(shí)施例中,場(chǎng)景控件可以提供對(duì)于與場(chǎng)景相關(guān)的活動(dòng)的抽象(abstraction),所述與場(chǎng)景相關(guān)的活動(dòng)包括場(chǎng)景會(huì)話創(chuàng)建和結(jié)束、參與者和組綁定、以及對(duì)共享狀態(tài)的訪問(wèn)。場(chǎng)景會(huì)話是用于參加場(chǎng)景的參與者的邏輯運(yùn)行時(shí)上下文。在場(chǎng)景的任何階段期間都可以建立會(huì)話,但是通常在早期階段創(chuàng)建。場(chǎng)景會(huì)話不一定與HTTP會(huì)話或門(mén)戶登錄會(huì)話相同。可能存在這樣的情況,在所述情況中,沒(méi)有門(mén)戶登錄會(huì)話(匿名用戶)或者在HTTP會(huì)話期間內(nèi)發(fā)生多個(gè)場(chǎng)景會(huì)話。場(chǎng)景會(huì)話提供允許會(huì)話中的參與者容易地共享信息的共享狀態(tài)機(jī)制。在這些實(shí)施例的方面中,會(huì)話可以實(shí)現(xiàn)為持久的映射。場(chǎng)景會(huì)話類似于HTTP會(huì)話或HTTP小服務(wù)程序請(qǐng)求(/77T尸5^v/"^^/e她),因?yàn)樗鼈兛梢杂脕?lái)存儲(chǔ)和獲取由字符串(string)標(biāo)識(shí)符鍵訪問(wèn)的對(duì)象屬性。會(huì)話中的所有參與者可以填充和檢索這些會(huì)話屬性,盡管在這些實(shí)施例的方面中,屬性數(shù)據(jù)的總的可見(jiàn)性可能取決于由創(chuàng)建該屬性的行動(dòng)者設(shè)置的權(quán)利信息。每個(gè)會(huì)話被分配了可在其它上下文中使用以獲得會(huì)話實(shí)例的唯一id。任何參與者都可以加入會(huì)話,然而在各種實(shí)施例中,會(huì)話將持續(xù)到所有參與者已經(jīng)從其退出為止。在另外的實(shí)施例中,當(dāng)系統(tǒng)檢測(cè)到其附著的參與者不再存在或者不活動(dòng)時(shí),會(huì)話可以自動(dòng)釋放它的資源。在這些實(shí)施例的方面中,當(dāng)參與者退出會(huì)話時(shí),可以通知加入該會(huì)話的任何其它參與者,使得它們有機(jī)會(huì)從其退出或者采取其它動(dòng)作。在各種實(shí)施例中,場(chǎng)景控件可以提供以下功能性■創(chuàng)建場(chǎng)景會(huì)話并提供相應(yīng)的場(chǎng)景會(huì)話id?!黾尤牒屯顺鰣?chǎng)景會(huì)話?!龃鎯?chǔ)、檢索和刪除共享狀態(tài)值。,綁定默認(rèn)的參與者?!鱿騾⑴c者分配參與者id。■提供將由消息控件用于消息傳遞活動(dòng)的參與者id。-提供一組可在場(chǎng)景中使用的被分析的輸入自變量(argument)。這些自變量可來(lái)自發(fā)起業(yè)務(wù)進(jìn)程的HTTP請(qǐng)求?!鰧?chǎng)景用戶綁定到場(chǎng)景別名?!鰧?chǎng)景組綁定到場(chǎng)景組別名。在各種實(shí)施例中,共享狀態(tài)功能性可被表現(xiàn)為共享狀態(tài)控件,其使用標(biāo)識(shí)符來(lái)訪問(wèn)包含共享的狀態(tài)數(shù)據(jù)的持久映射。該控件允許參與者在場(chǎng)景會(huì)話中訪問(wèn)和共享公共的一組信息。例如,如果圍繞文檔查看進(jìn)程的思想來(lái)建立場(chǎng)景,那么共享狀態(tài)的一個(gè)組件可以是對(duì)內(nèi)容管理系統(tǒng)中的文檔的引用。在這些實(shí)施例的方面中,共享狀態(tài)控件支持持久的集合(collection)功能性,其允許參與者將可串行化的對(duì)象與字符串鍵相關(guān)聯(lián)。參與者引用該控件所使用的場(chǎng)景會(huì)話id來(lái)定位和加載適當(dāng)?shù)某志糜成?。作為說(shuō)明,業(yè)務(wù)進(jìn)程通常將填充會(huì)話的共享狀態(tài),而頁(yè)面流通常將從該共享狀態(tài)中使用,以便將與該共享狀態(tài)相關(guān)聯(lián)的信息呈現(xiàn)為HTML文檔。其它實(shí)體也可以使用共享狀態(tài)控件,只要它們具有用來(lái)獲得會(huì)話id的手段即可。這對(duì)于處理來(lái)自客戶端進(jìn)程的異步數(shù)據(jù)請(qǐng)求可能是有用的,其中所述客戶端進(jìn)程使用消息傳遞層而不是執(zhí)行HTTP請(qǐng)求來(lái)檢索帶外(out-of-band)數(shù)據(jù)。在各種實(shí)施例中,共享狀態(tài)控件可以提供以下功能性■基于會(huì)話id將控件綁定到會(huì)話?!鰟?chuàng)建場(chǎng)景會(huì)話并且提供相應(yīng)的場(chǎng)景會(huì)話id?!黾尤牒屯顺鰣?chǎng)景會(huì)話。,存儲(chǔ)、檢索和刪除共享狀態(tài)值?!龇祷匕挟?dāng)前值鍵的組。共享狀態(tài)可以在協(xié)作進(jìn)程的整個(gè)生命周期內(nèi)持續(xù),并且可以從用于失敗轉(zhuǎn)移和負(fù)載平衡的目的的服務(wù)器集群中的任何節(jié)點(diǎn)訪問(wèn)。在各種實(shí)施例中,可以使用共享狀態(tài)控件來(lái)在內(nèi)容儲(chǔ)存庫(kù)或內(nèi)容管理系統(tǒng)中操縱對(duì)文檔的引用和生命周期。這允許共享信息比場(chǎng)景會(huì)話存活得更長(zhǎng),這是因?yàn)樗v留在單獨(dú)的系統(tǒng)中。內(nèi)容儲(chǔ)存庫(kù)可以使結(jié)構(gòu)化內(nèi)容和非結(jié)構(gòu)化內(nèi)容(例如,數(shù)字掃描的紙質(zhì)文檔、XML、便攜式文檔格式、HTML、電子郵件、圖像、視頻和音頻流、原始二進(jìn)制數(shù)據(jù)等)關(guān)聯(lián)到可搜索的語(yǔ)料庫(kù)。內(nèi)容儲(chǔ)存庫(kù)可以被耦合至內(nèi)容管理系統(tǒng)或者與其集成。內(nèi)容管理系統(tǒng)可以提供內(nèi)容生命周期管理、版本控制(versioning)、內(nèi)容查看和許可、自動(dòng)內(nèi)容分類、事件驅(qū)動(dòng)內(nèi)容處理、進(jìn)程跟蹤和向其它系統(tǒng)的內(nèi)容傳遞。在各種實(shí)施例中,客戶端可以支持終端用戶與一個(gè)或多個(gè)協(xié)作進(jìn)程的交互。在這些實(shí)施例的方面中,客戶端進(jìn)程也可以提供用戶接口。作為非限制性示例,用戶接口可以包括以下的一個(gè)或多個(gè)l)呈現(xiàn)在顯示設(shè)備上或者投影到用戶的視網(wǎng)膜上的圖形用戶接口(GUI)(例如,用超文本標(biāo)記語(yǔ)言呈現(xiàn));2)響應(yīng)聲音和/或語(yǔ)音命令的能力;3)響應(yīng)來(lái)自遠(yuǎn)程控制設(shè)備(例如,蜂窩電話、PDA或其它合適的遠(yuǎn)程控制器)的輸入的能力;4)響應(yīng)表情動(dòng)作(例如,面部和其它)的能力;5)響應(yīng)來(lái)自同一或另一計(jì)算設(shè)備上的進(jìn)程的命令的能力;以及6)響應(yīng)來(lái)自計(jì)算機(jī)鼠標(biāo)和/或鍵盤(pán)的輸入的能力。此公開(kāi)不限于任何特定的UI。本領(lǐng)域技術(shù)人員將認(rèn)識(shí)到許多其它用戶接口都是可能的并且完全處于本公開(kāi)的范圍和精神之內(nèi)。在這些實(shí)施例的方面中,可以在諸如可從Washington,Redmond的Microsoft^"司得到的MicrosoftInternetExplorer的網(wǎng)絡(luò)瀏覽器的幫助下呈現(xiàn)一個(gè)這樣的用戶接口。在一個(gè)實(shí)施例中,可以使用最低限度的(minimalist)Java腳本(JavaScript)/小應(yīng)用程序(applet)來(lái)實(shí)現(xiàn)客戶端進(jìn)程。此實(shí)施例可以使用嵌入在網(wǎng)頁(yè)中的Java⑧小應(yīng)用程序和Java腳本函數(shù)(ftmction)的組合來(lái)允許協(xié)作功能性。小應(yīng)用程序可以通過(guò)消息傳遞層發(fā)送和接收消息。當(dāng)場(chǎng)景消息到達(dá)時(shí),小應(yīng)用程序可以調(diào)用該頁(yè)上的Java腳本函數(shù)來(lái)處理該消息。嵌入在該頁(yè)中的Java腳本可以負(fù)責(zé)所有用戶接口更新、用戶交互、數(shù)據(jù)處理和(通過(guò)小應(yīng)用程序)發(fā)送消息。此方法的一個(gè)優(yōu)點(diǎn)在于它不需要修改網(wǎng)絡(luò)瀏覽器。在另一實(shí)施例中,可以下載重量級(jí)的客戶端,并且它在網(wǎng)絡(luò)瀏覽器中或者和網(wǎng)絡(luò)瀏覽器一起運(yùn)行,所述網(wǎng)絡(luò)瀏覽器已經(jīng)被增加有用于此目的瀏覽器助手或插件??蛻舳藗?cè)的編程模型可以包括客戶端側(cè)的頁(yè)面流和用于執(zhí)行全部應(yīng)用的一組豐富的能力,所述應(yīng)用可能由很多頁(yè)面構(gòu)成,而不與服務(wù)器交互。異步通信將允許場(chǎng)景所必需的事件的雙向通知。客戶端可以利用永久的或半永久的數(shù)據(jù)存儲(chǔ)器。客戶端中的用戶接口元素可以使用控件來(lái)表示,并且可以被(直接地或者通過(guò)腳本間接地)綁定到本地?cái)?shù)據(jù)存儲(chǔ)器??芍匦率褂玫目丶⑹勾a的重新使用最大化并且使應(yīng)用開(kāi)發(fā)簡(jiǎn)化。在另一實(shí)施例中,可以下載輕量級(jí)的客戶端,并且它在網(wǎng)絡(luò)瀏覽器中或者和網(wǎng)絡(luò)瀏覽器一起運(yùn)行,所述網(wǎng)絡(luò)瀏覽器已經(jīng)被增加有用于此目的瀏覽器助手或插件。瀏覽器助手將與嵌入在該頁(yè)上的Java腳本和動(dòng)態(tài)HTML(DHTML)—起工作,以便提供異步通信和綁定到客戶端數(shù)據(jù)存儲(chǔ)器上的用戶接口數(shù)據(jù)??蛻舳藗?cè)的編程模型將不包括客戶端側(cè)的頁(yè)面流。協(xié)作進(jìn)程將能夠?qū)⑿碌腏ava腳本疊加到瀏覽器上而不強(qiáng)制頁(yè)面的重新加載,并且客戶端將能夠通過(guò)激活HTML文檔中的不同DIV區(qū)域來(lái)示出多"頁(yè)"的內(nèi)容。客戶端中的用戶接口元素的文檔對(duì)象模型(DOM)可以用來(lái)讀取和操縱該用戶接口元素??梢园凑招枰獙?shù)據(jù)從本地?cái)?shù)據(jù)存儲(chǔ)器綁定到DOM性質(zhì)。圖8是本發(fā)明各種實(shí)施例中的網(wǎng)絡(luò)瀏覽器和應(yīng)用服務(wù)器的示例性圖解。盡管此圖將組件示出為在邏輯上分離,但這種圖示只是出于說(shuō)明的目的。對(duì)于本領(lǐng)域技術(shù)人員來(lái)說(shuō)將清楚的是在此圖中描繪的組件可以被組合或者劃分成分離的軟件、固件和/或硬件組件。而且,對(duì)于本領(lǐng)域技術(shù)人員來(lái)說(shuō)還將清楚的是無(wú)論如何組合或劃分這種組件,它們都可以在同一計(jì)算設(shè)備上執(zhí)行,或者可以分布在由一個(gè)或多個(gè)網(wǎng)絡(luò)或其它合適的通信方式連接的不同計(jì)算設(shè)備中。在此圖解中,應(yīng)用服務(wù)器830包括協(xié)作進(jìn)程800、802和804,所有進(jìn)程都可以同時(shí)執(zhí)行??蛻舳司W(wǎng)絡(luò)瀏覽器832包括也能夠同時(shí)執(zhí)行的一個(gè)或多個(gè)富UI客戶端824、826和828。消息傳遞層808支持參與者之間的通信。如先前討論的那樣,消息傳遞層提供允許不同的通信提供者以統(tǒng)一的方式向參與者提供服務(wù)的可擴(kuò)展的通信平臺(tái)。盡管在此圖中沒(méi)有示出,但是消息傳遞提供者允許參與者使用多個(gè)并且不同的下層通信通道。在這些實(shí)施例的方面中,協(xié)作進(jìn)程向消息管理器806注冊(cè),以便通過(guò)消息傳遞層發(fā)送和接收消息。在注冊(cè)之后,消息管理器可以提供路由選擇信息給協(xié)作進(jìn)程,然后它可以將其提供給希望與它通信的任何參與者。在這些實(shí)施例的方面中,路由選擇信息可以被嵌入到對(duì)客戶端向協(xié)作進(jìn)程做出的第一請(qǐng)求的響應(yīng)中。路由選擇信息可以包括協(xié)作進(jìn)程的路由選擇id以及參與者與它建立通信所需的任何其它信息。在另外的方面中,路由選擇信息可以包括XMPP服務(wù)器的名稱和將用于該服務(wù)器的IM標(biāo)識(shí)符。出于消息路由選擇的目的,消息管理器可以在臨時(shí)或持久映射810中保持客戶端進(jìn)程的路由選擇id和它們相應(yīng)的通用資源標(biāo)識(shí)符(URI)之間的關(guān)聯(lián)。在這些實(shí)施例的方面中,消息管理器可以在它從參與者接收到消息(例如,從消息傳遞層獲得源URI并且從消息自身獲得源路由選擇id)時(shí)填充該映射。該映射可以由消息管理器在向其發(fā)送消息時(shí)使用以查找參與者的URI。消息管理器接受來(lái)自協(xié)作進(jìn)程的外出消息,并且將它們提供給消息傳遞層。消息管理器可以基于協(xié)作進(jìn)程的路由選擇信息、目的地(destination)參與者的路由選擇信息(例如,其從在場(chǎng)控件或從消息傳遞層API獲得)和消息內(nèi)容來(lái)構(gòu)造消息。在這些實(shí)施例的方面中,默認(rèn)的通信提供者可以用來(lái)發(fā)送消息。在另外的實(shí)施例中,默認(rèn)的通信提供者可以通過(guò)目的地參與者正在使用的XMPP服務(wù)器來(lái)發(fā)送消息。消息管理器也可以從消息傳遞層接受進(jìn)入的消息,并且將它們發(fā)送至一個(gè)或多個(gè)適當(dāng)?shù)膮f(xié)作進(jìn)程。在各種實(shí)施例中,消息管理器可以作為其初始化的一部分來(lái)例示消息傳遞層通信提供者??梢詫⑴渲眯畔⑻峁┙o每個(gè)提供者,例如XMPP服務(wù)器地址和當(dāng)連接到該服務(wù)器時(shí)使用的IM標(biāo)識(shí)符。本領(lǐng)域技術(shù)人員將認(rèn)識(shí)到本公開(kāi)不依賴或限于任何用于傳遞配置信息的特定手段,并且很多這樣的方式存在并且完全處于本公開(kāi)的范圍和精神之內(nèi)。配置信息也可以指派一個(gè)提供者作為默認(rèn)的傳送。在各種實(shí)施例中,網(wǎng)絡(luò)瀏覽器助手816(例如,瀏覽器插件或者用于提供異步通信并顯示信息的其它合適的方式)可以使富UI和協(xié)作進(jìn)程之間的異步當(dāng)前網(wǎng)頁(yè)重新加載。瀏覽器助手與服務(wù)器上的消息管理器相似地發(fā)揮作用,因?yàn)樗梢詫⑾l(fā)送到富UI客戶端/從富UI客戶端發(fā)送消息,并且可以初始化消息傳遞層。在這些實(shí)施例的方面中,瀏覽器助手被顯露給它的主機(jī)瀏覽器的引擎,使得當(dāng)加載富UI使能的頁(yè)面時(shí)或者當(dāng)需要發(fā)送消息時(shí)將調(diào)用它。作為說(shuō)明,富UI客戶端可以從協(xié)作進(jìn)程接收要顯示的初始數(shù)據(jù)記錄集,并且當(dāng)數(shù)據(jù)集改變時(shí),該協(xié)作進(jìn)程可以將更新后的數(shù)據(jù)發(fā)送至富UI客戶端。當(dāng)更新后的數(shù)據(jù)到達(dá)時(shí),富UI客戶端可以更新它的用戶接口以便合并此數(shù)據(jù)。在各種實(shí)施例中,通過(guò)使用DHTML來(lái)在適當(dāng)?shù)馗聢D形用戶接口。如果例如需要向終端用戶通知某個(gè)事件,則協(xié)作進(jìn)程也可以選^^發(fā)送可執(zhí)行的代碼(例如,指令)至客戶端。在這些實(shí)施例的方面中,協(xié)作進(jìn)程可以生成定制的Java腳本功能來(lái)突出終端用戶網(wǎng)頁(yè)上的某物,或者顯示警告框,然后與執(zhí)行該功能的指令異步地發(fā)送代碼至富UI客戶端。在這些實(shí)施例的方面中,瀏覽器助手可以使用路由選擇信息820來(lái)與協(xié)作進(jìn)程交換消息。本領(lǐng)域技術(shù)人員將認(rèn)識(shí)到本公開(kāi)不依賴或限于任何用于傳遞路由選擇信息的特定手段,并且很多這樣的方式存在并且完全處于本公開(kāi)的范圍和精神之內(nèi)。出于消息路由選擇的目的,瀏覽器助手可以在臨時(shí)或持久映射820中保持協(xié)作進(jìn)程的路由選擇id和它們對(duì)應(yīng)的通用資源標(biāo)識(shí)符(URI)之間的關(guān)聯(lián)。在這些實(shí)施例的方面中,瀏覽器助手可以在它從協(xié)作進(jìn)程接收到消息(例如,從消息傳遞層獲得源URI并且從消息自身獲得源路由選擇id)時(shí)填充該映射。該映射可以由瀏覽器助手在向其發(fā)送消息時(shí)使用以查找協(xié)作進(jìn)程的URI。當(dāng)它接收到消息時(shí),瀏覽器助手可以從消息中提取路由選擇信息,并且利用消息主體和發(fā)送它的參與者的路由選擇信息(例如通過(guò)腳本方法)來(lái)調(diào)用富UI客戶端。在這些實(shí)施例的另外的方面中,瀏覽器助手可以使用被稱為Xpath的開(kāi)放源碼0++乂]\41^解析庫(kù)來(lái)解析進(jìn)入的消息。在這些實(shí)施例的方面中,富UI客戶端可以被表示為經(jīng)審視的(scoped)Java腳本方法和DHTML顯示組件。每個(gè)富UI客戶端具有它自己的應(yīng)用id并且知道它正在與其通信的協(xié)作進(jìn)程的應(yīng)用id。給定的富UI客戶端可以與多于一個(gè)協(xié)作進(jìn)程通信,反之亦然。為了響應(yīng)消息,富UI客戶端可以調(diào)用瀏覽器助手上的方法,并且向其提供消息主體和目的地參與者的路由選擇信息。然后,助手基于此信息構(gòu)造消息,并且通過(guò)消息傳遞層將其發(fā)送至目的地參與者。在各種實(shí)施例中,在參與者之間發(fā)送的消息可以包含采用任何格式和使用任何協(xié)議的任何信息。在這些實(shí)施例的方面中,XML片段可以包含路由選擇信息和去往參與者的信息凈荷。在這些實(shí)施例的另外的方面中,路由選擇信息可以包括源的應(yīng)用id和在某些情況下該應(yīng)用所使用的IM標(biāo)識(shí)符。凈荷可以包含類型字段,所述類型字段向目的地參與者指明該消息中包含的信息的類型。圖9是根據(jù)本發(fā)明各種實(shí)施例的富UI客戶端初始化的流程解。盡管此圖出于說(shuō)明的目的以特定順序示出功能步驟,但是此過(guò)程不一定限于任何特定的順序或步驟的排列。本領(lǐng)域技術(shù)人員將認(rèn)識(shí)到在此圖中描繪的各種步驟可以被省略、重新排列、并行執(zhí)行、以各種方式組合和/或修改。在步驟900中,確定富UI客戶端將要被呈現(xiàn)在將被發(fā)送給網(wǎng)絡(luò)瀏覽器的網(wǎng)頁(yè)上。(注意在給定頁(yè)面上可以存在多于一個(gè)富UI客戶端,在該情況下可以對(duì)于每個(gè)這樣的客戶端執(zhí)行此流程圖中的步驟)。一旦(例如通過(guò)檢測(cè)JSP標(biāo)簽的使用或其它方式)做出此確定,則在步驟卯2中,該系統(tǒng)可以包括或"嵌入"該頁(yè)面上的信息以便協(xié)助富UI客戶端初始化。在這些實(shí)施例的方面中,此信息可以包括表2中描述的一些或全部參數(shù)。對(duì)于給定頁(yè)面上的每個(gè)富UI客戶端,可以包括一次被稱為"富UI報(bào)頭"的此信息。<table>tableseeoriginaldocumentpage29</column></row><table>表2:各種實(shí)施例中的示例性富UI報(bào)頭信息當(dāng)網(wǎng)絡(luò)瀏覽器接收到此頁(yè)面時(shí),在步驟904中,瀏覽器助手可以初始化富UI客戶端。這可能需要根據(jù)所提供的通信協(xié)議和配置參數(shù)來(lái)初始化該消息傳遞層。如果指定超時(shí)周期,則將確定在瀏覽器助手關(guān)閉任何打開(kāi)的通信會(huì)話和/或退出場(chǎng)景會(huì)話之前必須經(jīng)過(guò)的不活動(dòng)周期。在這些實(shí)施例的方面中,有效的活動(dòng)可以包括終端用戶與網(wǎng)絡(luò)瀏覽器或其它用戶接口的交互、網(wǎng)絡(luò)瀏覽器的活動(dòng)(例如,頁(yè)面加載、刷新、重新定向等)以及所發(fā)送或接收的應(yīng)用/框架消息。此外,如果存在種子數(shù)據(jù),則可以將其放置在可由瀏覽器助手和所有富UI客戶端訪問(wèn)的數(shù)據(jù)存儲(chǔ)器814中。如果存在協(xié)作進(jìn)程路由選擇id,則在步驟906中可以將新初始化的富UI客戶端與其相關(guān)聯(lián)。最后,在步驟908中,可以用網(wǎng)絡(luò)瀏覽器來(lái)呈現(xiàn)富UI客戶端。在這些實(shí)施例的方面中,曾經(jīng)被初始化的富UI客戶端能夠通過(guò)瀏覽器助手接收和發(fā)送消息。消息可以被封裝在包含源和目的地路由選擇id的包封中,其中,目的地路由選擇id指定消息的最終目的地。瀏覽器助手接收的消息落入兩類應(yīng)用消息和框架消息。應(yīng)用消息意欲用于富UI客戶端,而框架消息意欲用于由瀏覽器助手自己使用并且用來(lái)控制參與者。在這些實(shí)施例的另外的方面中,一種類型的框架消息使得瀏覽器助手終止所有富UI客戶端并且退出任何場(chǎng)景會(huì)話??梢允冀K由瀏覽器助手接收和處理框架消息,即使瀏覽器當(dāng)前正在顯示"不在現(xiàn)場(chǎng)(off-site)"頁(yè)面或者處于頁(yè)面轉(zhuǎn)換中也是如此。在各種實(shí)施例中并且作為說(shuō)明,當(dāng)在瀏覽器上發(fā)生頁(yè)面轉(zhuǎn)換時(shí),瀏覽器助手允許富UI客戶端保持加入它們的場(chǎng)景會(huì)話(如果有的話)。瀏覽器助手接收的所有應(yīng)用消息被放置在隊(duì)列822中以供以后檢查。然而,在頁(yè)面轉(zhuǎn)換期間接收的任何框架消息可以立即由瀏覽器助手處理。當(dāng)瀏覽器加載新頁(yè)面時(shí),瀏覽器助手在其中檢查參與者id。在這些實(shí)施例的方面中,瀏覽器助手如圖10所示的那樣對(duì)新頁(yè)面做出反應(yīng)。圖IO是根據(jù)本發(fā)明各種實(shí)施例的富UI客戶端初始化的流程解。盡管此圖出于說(shuō)明的目而以特定順序示出功能步驟,但是此過(guò)程不一定限于任何特定順序或步驟的排列。本領(lǐng)域技術(shù)人員將認(rèn)識(shí)到在此圖中描繪的各種步驟可以被省略、重新排列、并行執(zhí)行、以各種方式組合和/或修改。除了報(bào)頭信息之外,發(fā)送給瀏覽器的頁(yè)面可以包括頁(yè)面上的網(wǎng)絡(luò)瀏覽器的參與者id,所述頁(yè)面不包含富UI報(bào)頭,使得瀏覽器助手可以保持它的富UI客戶端的狀態(tài)。當(dāng)頁(yè)面轉(zhuǎn)換時(shí),中止任何活動(dòng)的富UI客戶端,并且在步驟1000中檢查新頁(yè)面。如果在1002中不存在編碼在頁(yè)面上的參與者id,則在步驟1008中瀏覽器助手進(jìn)入"不在現(xiàn)場(chǎng)瀏覽"模式。如果瀏覽器被意外地重定向至外部網(wǎng)站,或者如果用戶進(jìn)入未被激活用于富UI的網(wǎng)站的一部分,則這可以發(fā)生。當(dāng)處于不在現(xiàn)場(chǎng)瀏覽模式中時(shí),瀏覽器助手可以保持其富UI客戶端所依賴的任何消息傳遞層通信會(huì)話。所接收的所有應(yīng)用消息可以被丟棄或者被排隊(duì)以供以后處理,但是框架消息可以被立即處理。在步驟1016中,瀏覽器助手等待頁(yè)面被加載到具有嵌入的參與者id的瀏覽器中或者等待超時(shí)發(fā)生。如果在超時(shí)到期之前頁(yè)面被加載到具有嵌入的參與者id的瀏覽器中,則結(jié)束不在現(xiàn)場(chǎng)瀏覽模式,并且處理在步驟1000處重新開(kāi)始。否則,可以在步驟1018關(guān)閉/退出任何消息傳遞層通信會(huì)話和/或場(chǎng)景會(huì)話。如果編碼在新頁(yè)面中的參與者id與當(dāng)前使用的參與者id不匹配,則施加步驟1004。作為非限制性示例,這可以發(fā)生在用戶沒(méi)有正確地離開(kāi)網(wǎng)頁(yè)并且設(shè)法向后瀏覽到相同的頁(yè)面的時(shí)候。在此情況下,在步驟1010中可以關(guān)閉/退出富UI客戶端所使用的任何消息傳遞層通信會(huì)話和/或場(chǎng)景會(huì)話。此外,可以丟棄隊(duì)列822中的任何消息。在步驟1014中,瀏覽器助手使用編碼在新頁(yè)面上的信息(如果有的話)來(lái)發(fā)起新的消息傳遞層通信會(huì)話。在步驟1006中,如果編碼在新頁(yè)面中的參與者id與當(dāng)前參與者id匹配,則瀏覽器助手可以^r查該新頁(yè)面以確定哪個(gè)富UI客戶端在場(chǎng)。在步驟1012中可以初始化每個(gè)客戶端。然后,可以由一個(gè)或多個(gè)適當(dāng)?shù)母籙I客戶端以接收的順序(或者以優(yōu)先級(jí)的順序)處理隊(duì)列822中的任何應(yīng)用消息。在一個(gè)實(shí)施例中,丟棄被發(fā)送給沒(méi)有出現(xiàn)在新頁(yè)面上的富UI客戶端的任何消息。每個(gè)客戶端進(jìn)程可以與一個(gè)或多個(gè)協(xié)作進(jìn)程相關(guān)聯(lián)。在這些實(shí)施例的方面中,客戶端進(jìn)程(例如,富UI進(jìn)程)具有在某種程度上管理它們的行為的狀態(tài)。作為說(shuō)明,在下面的表3中描述示例性狀態(tài)。狀態(tài)描述未力口載未加載的客戶端進(jìn)程可以被呈現(xiàn)(例如在瀏覽器窗中),但是沒(méi)有準(zhǔn)備好發(fā)送或接收消息。活動(dòng)的活動(dòng)的客戶端進(jìn)程可以與包括本地客戶端進(jìn)程(例如在同一網(wǎng)絡(luò)瀏覽器中的其它富UI客戶端)的任何參與者交換消息。在這些實(shí)施例的方面中,活動(dòng)的富UI客戶端進(jìn)程可以具有超過(guò)單個(gè)網(wǎng)頁(yè)的壽命,盡管如果當(dāng)前在頁(yè)面上呈現(xiàn)它則認(rèn)為它是"活動(dòng)的",但是活動(dòng)的富UI客戶端進(jìn)程被嵌入到當(dāng)前正顯示在網(wǎng)絡(luò)瀏覽器中的網(wǎng)頁(yè)內(nèi)。被中止被中止的客戶端進(jìn)程不能發(fā)送或接收任何消息并且當(dāng)前沒(méi)有被呈現(xiàn)。在這些實(shí)施例的方面中,被中止的富UI客戶端進(jìn)程沒(méi)有被顯示在當(dāng)前的瀏覽器頁(yè)面上,但是先前被顯示在另一頁(yè)面上。它不能影響任何UI改變或者執(zhí)行通信功能。如果以及當(dāng)被中止的富UI客戶端進(jìn)程被放置在當(dāng)前網(wǎng)頁(yè)上時(shí),它們_I可以重新開(kāi)始正常的操作。_表3:各種實(shí)施例中的示例性客戶端進(jìn)程狀態(tài)在各種實(shí)施例中,同一網(wǎng)絡(luò)瀏覽器中的富UI客戶端可以互相發(fā)送和接收消息。在一個(gè)實(shí)施例中,這可以通過(guò)向消息傳遞層添加環(huán)回(loop-back)功能性來(lái)完成,其中,消息傳遞層可以檢測(cè)路由選擇id是否是本地的(即,在消息傳遞層的進(jìn)程空間中識(shí)別富UI客戶端)。通過(guò)將目的地路由選才,id是本地的消息傳遞給本地目的地富UI客戶端而不通過(guò)通道發(fā)送該消息,將該消息"環(huán)回"至瀏覽器。在另一實(shí)施例中,瀏覽器助手自己可以捕捉本地通信并且在它到達(dá)消息傳遞層之前將它重新定向。從參與者的觀點(diǎn)來(lái)看,在用于本地通信的通信機(jī)制中需要沒(méi)有可辨識(shí)的差別。在各種實(shí)施例中,當(dāng)客戶端進(jìn)程處于活動(dòng)狀態(tài)時(shí),它也可以被認(rèn)為是"相關(guān)聯(lián)的"或者"不相關(guān)聯(lián)的"。不相關(guān)聯(lián)的客戶端進(jìn)程當(dāng)前與協(xié)作進(jìn)程不相關(guān)聯(lián)。在一個(gè)實(shí)施例中,它們可以從任何協(xié)作進(jìn)程接收消息,但是不能發(fā)送消息至協(xié)作進(jìn)程。從協(xié)作進(jìn)程接收消息的不相關(guān)聯(lián)的客戶端進(jìn)程可以始終選擇將它們自己與消息發(fā)送者相關(guān)聯(lián)。在各種實(shí)施例中,相關(guān)聯(lián)的客戶端進(jìn)程可以與單個(gè)協(xié)作進(jìn)程相關(guān)聯(lián),使得可以(例如通過(guò)瀏覽器助手或其它合適的方式)將從客戶端進(jìn)程發(fā)送的消息自動(dòng)引導(dǎo)至特定協(xié)作進(jìn)程。無(wú)論是否相關(guān)聯(lián),客戶端進(jìn)程都可以向相同進(jìn)程空間中的其它客戶端進(jìn)程發(fā)送消息/從其接收消息,并且可以從任何協(xié)作進(jìn)程一不僅僅是它與之相關(guān)聯(lián)的協(xié)作進(jìn)程一一接收消息。在各種實(shí)施例中,瀏覽器助手負(fù)責(zé)為每個(gè)相關(guān)聯(lián)的客戶端進(jìn)程(例如,富UI客戶端)跟蹤協(xié)作進(jìn)程的路由選擇id。在這些實(shí)施例的方面中,瀏覽器助手可以向它的富UI客戶端提供功能性。此功能性可以由助手以任何方式實(shí)現(xiàn),但在一個(gè)實(shí)施例中可以被實(shí)現(xiàn)為富UI客戶端可調(diào)用的可調(diào)用Java腳本函數(shù)和助手調(diào)用的富UI客戶端函數(shù)回調(diào)。在另外的方面中,富UI客戶端發(fā)起的功能性被表示為富UI客戶端可以調(diào)用的函數(shù),并且瀏覽器助手發(fā)起的功能性可以用函數(shù)、方法或者助手在富UI客戶端上調(diào)用的所引起的"事件"來(lái)表示。在各種實(shí)施例中,客戶端發(fā)起的功能性可以包括,將客戶端進(jìn)程與協(xié)作客戶端進(jìn)程路由選擇id相關(guān)聯(lián)的能力。這將客戶端進(jìn)程置于"相關(guān)聯(lián)的"狀態(tài)中。如果客戶端進(jìn)程先前與另一路由選擇id相關(guān)聯(lián),則新指定的路由選擇id成為客戶端進(jìn)程的新的默認(rèn)通信端點(diǎn)。■如果客戶端進(jìn)程與協(xié)作進(jìn)程的關(guān)聯(lián)存在則去除這種關(guān)聯(lián)的能力。這將客戶端進(jìn)程實(shí)例置于"不相關(guān)聯(lián)的"狀態(tài)中?!鰧⑾l(fā)送到相關(guān)聯(lián)的協(xié)作進(jìn)程的能力?!鰧⑾l(fā)送到同一進(jìn)程空間(例如同一網(wǎng)絡(luò)瀏覽器)中的另一客戶端進(jìn)程的能力。在各種實(shí)施例中,瀏覽器助手發(fā)起的功能性可以包括■任何客戶端發(fā)起的功能性?!龅谝淮位蛘咴谒臄?shù)據(jù)存儲(chǔ)器已經(jīng)被協(xié)作進(jìn)程重置之后初始化客戶端進(jìn)程實(shí)例的能力?!鲈陧?yè)面刷新后初始化客戶端進(jìn)程實(shí)例的能力。中止或者卸載客戶端進(jìn)程的能力。■傳遞由協(xié)作進(jìn)程或由另一客戶端進(jìn)程發(fā)送的、被發(fā)送給客戶端進(jìn)程的消息的能力。圖11是根據(jù)本發(fā)明各種實(shí)施例的富UI客戶端頁(yè)面加載的流程解。盡管此圖出于說(shuō)明的目的而以特定順序示出功能步驟,但是此過(guò)程不一定限于任何特定順序或步驟的排列。本領(lǐng)域技術(shù)人員將認(rèn)識(shí)到在此圖中描繪的各種步驟可以被省略、重新排列、并行執(zhí)行、以各種方式組合和/或修改。在給定頁(yè)面上可以存在多于一個(gè)富UI報(bào)頭,在這種情況下,可以對(duì)于每個(gè)這樣的報(bào)頭執(zhí)行此流程圖中的步驟。參見(jiàn)圖9和隨附的正文。在各種實(shí)施例中,當(dāng)新的頁(yè)面被加載到瀏覽器中時(shí),瀏覽器助手負(fù)責(zé)確保富UI客戶端正確地工作。在步驟1100中,如果在富UI報(bào)頭中發(fā)現(xiàn)路由選擇id,則對(duì)應(yīng)的富UI客戶端將與該路由選擇id相關(guān)聯(lián)。在步驟1102中,如果在富UI報(bào)頭中指定的應(yīng)用id與被中止的富UI客戶端的應(yīng)用id匹配,則在步驟1104中確定該報(bào)頭是否包含種子數(shù)據(jù)。如果是,則在步驟1108中將該數(shù)據(jù)復(fù)制到數(shù)據(jù)存儲(chǔ)器中。該復(fù)制將替代用于那個(gè)客戶端的任何先前存在的種子數(shù)據(jù)。如果不是,則跳過(guò)此步驟。在步驟1112中,被中止的富UI客戶端被帶出被中止?fàn)顟B(tài)。在步驟1116中,然后,現(xiàn)在為活動(dòng)的富UI客戶端可以發(fā)送和接收消息,所述消息包括在中止該富UI客戶端時(shí)被排隊(duì)的任何消息。在步驟1103中,富UI報(bào)頭中的應(yīng)用ID與被中止的客戶端的應(yīng)用ID不匹配。在步驟1106中,確定該報(bào)頭中是否包含種子數(shù)據(jù)。如果是,則在步驟1108中將該數(shù)據(jù)復(fù)制到數(shù)據(jù)存儲(chǔ)器中。如果不是,則跳過(guò)此步驟。在步驟1114中,創(chuàng)建并初始化富UI客戶端。在各種實(shí)施例中,可以使用前述系統(tǒng)和方法來(lái)組配無(wú)限種類的場(chǎng)景。作為說(shuō)明,一個(gè)這樣的場(chǎng)景是客戶呼叫中心。在此應(yīng)用中,客戶服務(wù)代表(CSR)承擔(dān)接聽(tīng)來(lái)自客戶的呼叫以便進(jìn)行各種動(dòng)作的任務(wù)。一個(gè)這樣的動(dòng)作是客戶想退款的退款請(qǐng)求。在此示例中,具有少于六個(gè)月的經(jīng)驗(yàn)的CSR在沒(méi)有經(jīng)理的實(shí)時(shí)批準(zhǔn)的情況下不可以處理數(shù)目超過(guò)$1000.00的退款。通過(guò)使用客戶端進(jìn)程(例如富UI客戶端),CSR可以實(shí)時(shí)聯(lián)系經(jīng)理以獲得幫助。經(jīng)理也使用被稱為"助手,,客戶端的客戶端進(jìn)程(例如富UI客戶端),所述進(jìn)程允許他們參加與很多不同CSR的很多"對(duì)話"。每個(gè)對(duì)話由管理CSR-經(jīng)理連接的協(xié)作進(jìn)程來(lái)表示。當(dāng)CSR客戶端進(jìn)程請(qǐng)求幫助時(shí),創(chuàng)建協(xié)作進(jìn)程(如果一方尚未退出的話)。通過(guò)使用在場(chǎng)信息進(jìn)行的協(xié)作進(jìn)程可以動(dòng)態(tài)地定位運(yùn)行助手客戶端的有空的經(jīng)理。為了與協(xié)作進(jìn)程通信,該經(jīng)理的助手客戶端可以將它自己與協(xié)作進(jìn)程的路由發(fā)送id相關(guān)聯(lián)。因?yàn)榭蛻舳诉M(jìn)程可以在任何時(shí)候從任何協(xié)作進(jìn)程接收消息,所以該協(xié)作進(jìn)程可以發(fā)送消息至經(jīng)理的助手客戶端以請(qǐng)求幫助。各個(gè)助手客戶端可以評(píng)估該請(qǐng)求消息并且選擇是否將它們自己與協(xié)作進(jìn)程相關(guān)聯(lián)。當(dāng)幫助會(huì)話完成時(shí),經(jīng)理的助手客戶端可以根據(jù)需要與該協(xié)作進(jìn)程解除關(guān)聯(lián)或者與另一協(xié)作進(jìn)程重新關(guān)聯(lián)。在這些實(shí)施例的方面中,為了支持關(guān)于與協(xié)作進(jìn)程的關(guān)聯(lián)(或重新關(guān)聯(lián))的基于客戶端的決定,客戶端負(fù)責(zé)接收和評(píng)估來(lái)自服務(wù)器的關(guān)聯(lián)請(qǐng)求。因?yàn)榉?wù)器可以將任意數(shù)據(jù)包括在被發(fā)送給客戶端的關(guān)聯(lián)請(qǐng)求中,所以對(duì)于關(guān)聯(lián)請(qǐng)求消息沒(méi)有標(biāo)準(zhǔn)的形式。取而代之的是,客戶端接收的任何消息都可能是關(guān)聯(lián)請(qǐng)求,并且客戶端可以通過(guò)調(diào)用由瀏覽器助手提供的關(guān)聯(lián)功能性來(lái)由它自己隨意決定關(guān)聯(lián)(或重新關(guān)聯(lián))。圖12a-c是根據(jù)本發(fā)明各種實(shí)施例的協(xié)作客戶呼叫中心場(chǎng)景的示例性圖解。盡管此圖將組件示出為在邏輯上分離,但是這樣的圖示只是出于說(shuō)明的目的。對(duì)于本領(lǐng)域技術(shù)人員來(lái)說(shuō)將清楚的是在此圖中描繪的組件可以被組合或者劃分成分離的軟件、固件和/或硬件組件。此外,對(duì)于本領(lǐng)域技術(shù)人員來(lái)說(shuō)還將清楚的是無(wú)論如何組合或劃分這種組件,它們都可以在同一計(jì)算設(shè)備上執(zhí)行,或者可以分布在由一個(gè)或多個(gè)網(wǎng)絡(luò)或其它適合的通信方式連接的不同計(jì)算設(shè)備中。在圖12a中,圖示了3個(gè)富UI客戶端("A"、"B"和"C")和兩個(gè)協(xié)作進(jìn)程('T,和"2")。使用虛線包圍的部分來(lái)指示這兩個(gè)之間的關(guān)聯(lián)。例如,客戶端"A"與協(xié)作進(jìn)程"l"相關(guān)聯(lián),而客戶端"B"與協(xié)作進(jìn)程"2"相關(guān)聯(lián)??蛻舳?C"是未關(guān)聯(lián)的。每個(gè)富UI進(jìn)程可以共享相同的網(wǎng)絡(luò)瀏覽器或使用不同的瀏覽器。在此場(chǎng)景中,與客戶端"B,,交互的終端用戶CSR接聽(tīng)來(lái)自客戶的呼叫。該CSR可以收集客戶信息,包括名和姓以及關(guān)于該呼叫的一些細(xì)節(jié)??梢酝ㄟ^(guò)使用共享狀態(tài)控件來(lái)將此信息置于場(chǎng)景會(huì)話的共享狀態(tài)中。如果客戶隨后請(qǐng)求數(shù)目大于$1000的退款并且該CSR具有少于六個(gè)月的經(jīng)驗(yàn),則客戶端"B"試圖與管理者相關(guān)聯(lián)以便得到批準(zhǔn)。在此情況下,"B"'(例如使用消息控件)將幫助請(qǐng)求發(fā)送到協(xié)作進(jìn)程"2"。該協(xié)作進(jìn)程使用要求用戶是經(jīng)理、具有"有空,,的在場(chǎng)狀態(tài)并且正在運(yùn)行經(jīng)理客戶端的角色來(lái)定位有空的經(jīng)理。在各種實(shí)施例中,協(xié)作進(jìn)程在此努力中可以使用在場(chǎng)控件。然后,協(xié)作進(jìn)程使用消息控件將關(guān)聯(lián)請(qǐng)求發(fā)送至通過(guò)所述角色識(shí)別的有空的經(jīng)理之一。在這些實(shí)施例的方面中,如果經(jīng)理在某個(gè)時(shí)間幀內(nèi)響應(yīng),則該經(jīng)理的"狀態(tài)"被改變成"忙碌"。如果沒(méi)有響應(yīng)或者存在否定響應(yīng),則協(xié)作進(jìn)程可以將關(guān)聯(lián)請(qǐng)求發(fā)送至另一個(gè)所識(shí)別的經(jīng)理,直到一個(gè)經(jīng)理接受該請(qǐng)求為止。在一個(gè)實(shí)施例中,協(xié)作進(jìn)程可以按照任何順序發(fā)送關(guān)聯(lián)請(qǐng)求。作為說(shuō)明,協(xié)作進(jìn)程可以首先將關(guān)聯(lián)請(qǐng)求發(fā)送至"最不忙"的經(jīng)理。在另一實(shí)施例中,協(xié)作進(jìn)程可以按照基于場(chǎng)景參與者的一個(gè)或多個(gè)性質(zhì)的排序來(lái)發(fā)送關(guān)聯(lián)請(qǐng)求。其它方案是有可能的(例如,循環(huán)),并且完全處于本公開(kāi)的范圍和精神內(nèi)。在圖12b中,經(jīng)理的客戶端"C"已經(jīng)將其自己與協(xié)作進(jìn)程"2"相關(guān)聯(lián)。如環(huán)繞的虛線所示,現(xiàn)在,客戶端"B,,和客戶端"C"都與協(xié)作進(jìn)程"2"相關(guān)聯(lián)。此時(shí),"B"可以通過(guò)協(xié)作進(jìn)程"2,,向"C,,發(fā)送其退款請(qǐng)求。使用共享狀態(tài)控件,經(jīng)理的富UI客戶端可以檢查關(guān)于該請(qǐng)求的任何相關(guān)信息,然后通過(guò)協(xié)作進(jìn)程"2"肯定地或否定地響應(yīng)"B"。隨后,客戶端"B"和客戶端"C"可以與該協(xié)作進(jìn)程解除關(guān)聯(lián),如圖12c所示。圖12c還圖示了客戶端"A"已經(jīng)向協(xié)作進(jìn)程"1"請(qǐng)求了幫助。("A,,可能也已經(jīng)向協(xié)作進(jìn)程"2"請(qǐng)求了幫助)。而協(xié)作進(jìn)程"l"已經(jīng)識(shí)別出經(jīng)理在場(chǎng)并且也正在運(yùn)行經(jīng)理客戶端。協(xié)作進(jìn)程向"C"發(fā)送關(guān)聯(lián)請(qǐng)求。如果"C"肯定地響應(yīng)該請(qǐng)求,貝'j"A"和"C"都將與協(xié)作進(jìn)程"l"相關(guān)聯(lián)并且因此將能夠進(jìn)行對(duì)話。作為進(jìn)一步的說(shuō)明,另一個(gè)可能的場(chǎng)景是群組聊天。在此應(yīng)用中,用戶具有顯示它們可以與之通信的其它用戶的活動(dòng)的"好友列表"。該好友列表也可以顯示每個(gè)用戶的狀態(tài)(例如,"在線"、"離線"、"忙碌,,等)。好友列表也可以是規(guī)則驅(qū)動(dòng)的,從而根據(jù)基于在場(chǎng)的規(guī)則來(lái)顯示用戶。例如,規(guī)則可以指定好友列表上的人在場(chǎng)、具有"在線,,狀態(tài)、并且住在洛杉磯地區(qū)。任何標(biāo)準(zhǔn)都是可能的。好友列表可以基于規(guī)則和已經(jīng)被手動(dòng)添加到該列表中的用戶的組合。為了與第二用戶聊天,第一用戶從它們的好友列表中選^奪第二用戶。然后,通過(guò)協(xié)作進(jìn)程聯(lián)系第二用戶,以查看他們是否愿意聊天。如果是,則在兩個(gè)用戶的瀏覽器(或其它合適的應(yīng)用)上激活聊天窗口。第一和/或第二用戶也可以通過(guò)從它們各自的好友列表中選擇另外的用戶來(lái)將他們帶入該聊天。聊天窗口允許用戶實(shí)時(shí)交換消息。在各種實(shí)施例中,每個(gè)用戶在他們的聊天窗口中看每個(gè)其它用戶的消息。在這些實(shí)施例的方面中,這可以通過(guò)發(fā)送所有消息至協(xié)作進(jìn)程來(lái)實(shí)現(xiàn),其中所述協(xié)作進(jìn)程隨后可以將該消息廣播至所有關(guān)聯(lián)的用戶(即該群組聊天中涉及的用戶)。由于在該聊天中涉及的用戶可以是同一場(chǎng)景會(huì)話的一部分,因此他們都具有對(duì)會(huì)話的共享狀態(tài)的訪問(wèn)權(quán)。共享狀態(tài)控件z使用戶能夠與他們的消息一起無(wú)縫地交換其它種類的信息(例如,聲音、圖像、視頻、文件等)。在另外的實(shí)施例中,聊天用戶也可以共享可被共同瀏覽(co-navigate)的網(wǎng)頁(yè)的公共視圖。在這些實(shí)施例的方面中,聊天窗口具有允許任何用戶指定URL的文本字段或其它用戶接口。一旦被指定,URL就可以通過(guò)協(xié)作進(jìn)程:故發(fā)送至所有用戶。這將使URL被加載到每個(gè)用戶的網(wǎng)頁(yè)的公共視圖中。在各種實(shí)施例中,協(xié)作進(jìn)程使群組聊天便利,所述協(xié)作進(jìn)程將消息從一個(gè)用戶傳遞至該組中的其它用戶。當(dāng)聊天客戶端進(jìn)程邀請(qǐng)新用戶加入時(shí),它可以通過(guò)向協(xié)作進(jìn)程發(fā)送聊天請(qǐng)求來(lái)這么做,其中所述協(xié)作進(jìn)程將把該邀請(qǐng)轉(zhuǎn)發(fā)給所述新用戶(假設(shè)該新用戶有空并且自己正在運(yùn)行聊天客戶端)。如果新用戶拒絕該邀請(qǐng),則協(xié)作過(guò)程可以將該失敗通知主會(huì)客戶端進(jìn)程。否則,新用戶將它自己與協(xié)作過(guò)程相關(guān)聯(lián),并且因此變成群組聊天的一部分。此時(shí),新用戶可以發(fā)送消息至該組并且從該組中的其它用戶接收消息。圖13a-e是根據(jù)本發(fā)明各種實(shí)施例的群組聊天場(chǎng)景的示例性圖解。盡管此圖將組件示出為在邏輯上分離,但是這樣的圖示只是出于說(shuō)明的目的。對(duì)于本領(lǐng)域技術(shù)人員來(lái)說(shuō)將清楚的是在此圖中描繪的組件可以被組合或者劃分成分離的軟件、固件和/或硬件組件。此外,對(duì)于本領(lǐng)域技術(shù)人員來(lái)說(shuō)還將清楚的是無(wú)論如何組合或劃分這樣的組件,它們都可以在同一計(jì)算設(shè)備上執(zhí)行,或者可以分布在通過(guò)一個(gè)或多個(gè)網(wǎng)絡(luò)或其它合適的通信方式連接的不同計(jì)算設(shè)備中。在圖13a中,圖示了3個(gè)富UI群組聊天客戶端("A"、"B"和"C")和兩個(gè)群組聊天協(xié)作進(jìn)程("1"和"2")。虛線包圍的部分用來(lái)指示這兩個(gè)之間的關(guān)聯(lián)。例如,客戶端"A"與協(xié)作進(jìn)程"1"相關(guān)聯(lián),而客戶端"B"與協(xié)作進(jìn)程"2"相關(guān)聯(lián)??蛻舳?C"是未關(guān)聯(lián)的。每個(gè)富UI客戶端可以共享同一網(wǎng)絡(luò)瀏覽器或使用不同的瀏覽器。參照?qǐng)D13a,與聊天客戶端"B"交互的用戶邀請(qǐng)兩個(gè)用戶來(lái)聊天。這導(dǎo)致客戶端"B"向協(xié)作進(jìn)程"2"做出請(qǐng)求以代表它邀請(qǐng)所述用戶。協(xié)作進(jìn)程確定這些用戶對(duì)應(yīng)聊天客戶端"A"和"C"。因此,協(xié)作進(jìn)程發(fā)送關(guān)聯(lián)請(qǐng)求至"A"和"C"。如果沒(méi)有來(lái)自任一個(gè)的響應(yīng)或者存在來(lái)自任一個(gè)的否定響應(yīng),則協(xié)作進(jìn)程可以向"B"提供對(duì)此的通知。如果"A,,和"C"中的一個(gè)或二者肯定地響應(yīng),則他們將使他們自己與協(xié)作進(jìn)程"2"相關(guān)聯(lián)。這在圖13b中示出?,F(xiàn)在由"A"、"B,,或"C"發(fā)送的聊天消息將通過(guò)協(xié)作進(jìn)程"2"被轉(zhuǎn)發(fā)至群組中的其它用戶。圖13c圖示了客戶端"A,,將它自己與協(xié)作進(jìn)程"2"解除關(guān)聯(lián)。這可能是想退出聊天的客戶端"A"的終端用戶的結(jié)果。圖13d圖示了客戶端"A"不再與協(xié)作進(jìn)程"2"相關(guān)聯(lián),并且試圖通過(guò)協(xié)作進(jìn)程"l"邀請(qǐng)客戶端"D"進(jìn)入群組聊天??蛻舳?D"接受該邀請(qǐng),并且兩個(gè)客戶端都與協(xié)作進(jìn)程'T,相關(guān)聯(lián)(圖13e)。協(xié)作進(jìn)程"2"所引導(dǎo)的群組聊天獨(dú)立于協(xié)作進(jìn)程'T,所引導(dǎo)的群組聊天。在另外的實(shí)施例中,客戶端可以與多于一個(gè)協(xié)作進(jìn)程相關(guān)聯(lián)。以這一方式,客戶端可以參與多于一個(gè)群組聊天。如計(jì)算機(jī)領(lǐng)域的技術(shù)人員將清楚的那樣,可以使用根據(jù)本公開(kāi)的教導(dǎo)編程的傳統(tǒng)的通用或?qū)S脭?shù)字計(jì)算機(jī)或處理器來(lái)實(shí)現(xiàn)各種實(shí)施例。如軟件領(lǐng)域的技術(shù)人員將清楚的那樣,可以根據(jù)本公開(kāi)的教導(dǎo)由熟練的程序員容易地準(zhǔn)備適當(dāng)?shù)能浖幋a。如本領(lǐng)域技術(shù)人員將容易地明白的那樣,也可以通過(guò)集各種實(shí)施例包括計(jì)算機(jī)程序產(chǎn)品,所述計(jì)算機(jī)程序產(chǎn)品是在其上/其中存儲(chǔ)了指令的存儲(chǔ)介質(zhì)(多個(gè)介質(zhì)),所述指令可用來(lái)將通用或?qū)S糜?jì)算處理器/設(shè)備編程以便執(zhí)行在此給出的任何特征。存儲(chǔ)介質(zhì)可以包括但不限于以下一種或多種任何類型的物理介質(zhì),包括軟盤(pán)、光盤(pán)、DVD、CD-ROM、微驅(qū)動(dòng)器、磁光盤(pán)、ROM、RAM、EPROM、EEPROM、DRAM、VRAM、快閃存儲(chǔ)設(shè)備、磁或光卡、納米系統(tǒng)(包括分子存儲(chǔ)器IC);紙質(zhì)或基于紙的介質(zhì);以及適于存儲(chǔ)指令和/或數(shù)據(jù)的任何類型的介質(zhì)或設(shè)備。各種實(shí)施例包括可以通過(guò)一個(gè)或多個(gè)公共和/或?qū)S芯W(wǎng)絡(luò)傳輸?shù)挠?jì)算機(jī)程序產(chǎn)品,其中,所述傳輸包括可用來(lái)將計(jì)算設(shè)備編程以執(zhí)行在此給出的任何特征的指令。存儲(chǔ)在一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì)(多個(gè)介質(zhì))中,本公開(kāi)包括用于控制通用/專用計(jì)算機(jī)或微處理器的硬件、并且用于使計(jì)算機(jī)或微處理器能夠與人類用戶或使用本發(fā)明的結(jié)果的其它機(jī)制交互的軟件。這樣的軟件可以包括但不限于設(shè)備驅(qū)動(dòng)程序、操作系統(tǒng)、執(zhí)行環(huán)境/容器和應(yīng)用程序。已經(jīng)出于說(shuō)明和描述的目的提供了對(duì)本發(fā)明優(yōu)選實(shí)施例的以上描述。其意圖不是毫無(wú)遺漏的或者將本發(fā)明限制于所公開(kāi)的精確形式。很多修改和變化對(duì)于本領(lǐng)域技術(shù)人員來(lái)說(shuō)將是顯而易見(jiàn)的。選擇和描述實(shí)施例以便最好地解釋本發(fā)明的原理和它的實(shí)際應(yīng)用,從而使本領(lǐng)域其他技術(shù)人員能夠理解本發(fā)明、各種實(shí)施例以及適合于所想到的特定用途的各種修改。其意圖是本發(fā)明的范圍由所附權(quán)利要求和它們的等同物來(lái)限定。優(yōu)先權(quán)要求2004年5月20日提交的、名稱為SYSTEMSANDMETHODSFORENTERPRISECOLLABORATION(BrodiBeartusketal.)的美國(guó)臨時(shí)專利申請(qǐng)第60/573189號(hào)(Atty.DocketNo.BEAS-01646US0);2005年2月10日提交的、名稱為SYSTEMSANDMETHODSFORENTERPRISECOLLABORATION(BrodiBeartusketal.)的美國(guó)專利申請(qǐng)第11/055038號(hào)(Atty.DocketNo.BEAS-01646US1);2004年5月20日提交的、名稱為SYSTEMSANDMETHODSFORACOLLABORATIONSERVER(BrodiBeartusketal.)的美國(guó)臨時(shí)專利申請(qǐng)第60/573190號(hào)(Atty.DocketNo.BEAS-01647US0);2005年2月10日提交的、名稱為SYSTEMSANDMETHODSFORACOLLABORATIONSERVER(BrodiBeartusketal.)的美國(guó)專利申請(qǐng)第11/055328號(hào)(Atty.DocketNo,BEAS-01647US1);2004年5月20日提交的、名稱為SYSTEMSANDMETHODSFORACOLLABORATIONCLIENT(BrodiBeartusketal.)的美國(guó)臨時(shí)專利申請(qǐng)第60/572942號(hào)(Atty.DocketNo.BEAS-01648US0);2005年2月10日提交的、名稱為SYSTEMSANDMETHODSFORACOLLABORATIONCLIENT(BrodiBeartusketal.)的美國(guó)專利申請(qǐng)第11/054929號(hào)(Atty.DocketNo.BEAS-01648US1);2004年5月20日提交的、名稱為SYSTEMSANDMETHODSFORACOLLABORATIONPRESENCEFRAMEWORK(BrodiBeartusketal.)的美國(guó)臨時(shí)專利申請(qǐng)第60/572941號(hào)(Atty.DocketNo.BEAS-01649US0);2005年2月10日提交的、名稱為SYSTEMSANDMETHODSFORACOLLABORATIONPRESENCEFRAMEWORK(BrodiBeartusketal.)的美國(guó)專利申請(qǐng)第11/054982號(hào)(Atty.DocketNo.BEAS-01649US1);2004年5月20日提交的、名稱為SYSTEMSANDMETHODSFORACOLLABORATIONMESSAGINGFRAMEWORK(BrodiBeartusketal.)的美國(guó)臨時(shí)專利申請(qǐng)第60/572839號(hào)(Atty.DocketNo.BEAS-01650US0);2005年2月10日提交的、名稱為SYSTEMSANDMETHODSFORACOLLABORATIONMESSAGINGFRAMEWORK(BrodiBeartusketal.)的美國(guó)專利申請(qǐng)第11/055430號(hào)(Atty.DocketNo.BEAS-01650US1);2004年5月21日提交的、名稱為SYSTEMSANDMETHODSFOR的美國(guó)臨時(shí)專利申請(qǐng)第60/573366號(hào)(Atty.DocketNo.BEAS-01651US0);2005年2月10日提交的、名稱為SYSTEMSANDMETHODSFOR的美國(guó)專利申請(qǐng)第u/055320號(hào)(Atty.DocketNo.BEAS-01651US1);2004年5月21日提交的、名稱為SYSTEMSANDMETHODSFORCOLLABORATIONSHAREDSTATEMANAGEMENT(BrodiBeartusketal,)的美國(guó)臨時(shí)專利申請(qǐng)第60/574010號(hào)(Atty.DocketNo.BEAS-01652US0);2005年2月10日提交的、名稱為SYSTEMSANDMETHODSFORCOLLABORATIONSHAREDSTATEMANAGEMENT(BrodiBeartusketal.)的美國(guó)專利申請(qǐng)第u/055048號(hào)(Atty.DocketNo.BEAS-01652US1);2004年5月21日提交的、名稱為SYSTEMSANDMETHODSFORCOLLABORATIONDYNAMICPAGEFLOWS(BrodiBeartusketal.)的美國(guó)臨時(shí)專利申請(qǐng)第60/573114號(hào)(Atty.DocketNo.BEAS-01653US0);2005年2月10日提交的、名稱為SYSTEMSANDMETHODSFORCOLLABORATIONDYNAMICPAGEFLOWS(BrodiBeartusketal.)的美國(guó)專利申請(qǐng)第11/054787號(hào)(Atty.DocketNo.BEAS-01653US1);2004年5月21日提交的、名稱為SYSTEMSANDMETHODSFORACOLLABORATIVECALLCENTER(BrodiBeartusketal.)的美國(guó)臨時(shí)專利申請(qǐng)第60/573484號(hào)(Atty.DocketNo.BEAS-01654US0);2005年2月10日提交的、名稱為SYSTEMSANDMETHODSFORACOLLABORATIVECALLCENTER(BrodiBeartusketal.)的美國(guó)專利申請(qǐng)第11/055436號(hào)(Atty.DocketNo.BEAS-01654US1);2004年5月21日提交的、名稱為SYSTEMSANDMETHODSFORACOLLABORATIVEGROUPCHAT(BrodiBeartusketal.)的美國(guó)臨時(shí)專利申請(qǐng)第60/573485號(hào)(Atty.DocketNo.BEAS-01655US0);2005年2月10日提交的、名稱為SYSTEMSANDMETHODSFORACOLLABORATIVEGROUPCHAT(byBrodiBeartusketal.)的美國(guó)專利申請(qǐng)第11/055135號(hào)(Atty.DocketNo.BEAS-0I655US1);2004年5月21日提交的、名稱為SYSTEMSANDMETHODSFORAN利申請(qǐng)第60/573486號(hào)(Atty.DocketNo.BEAS-01656US0);2005年2月10日提交的、名稱為SYSTEMSANDMETHODSFORANEMBEDDEDCOLLABORATIONCLIENT(BrodiBeartusketal.)的美國(guó)專利申請(qǐng)第11/054861號(hào)(Atty.DocketNo.BEAS-01656US1);2004年5月21日提交的、名稱為SYSTEMSANDMETHODSFORCOLLABORATIONIMPERSONATION(BrodiBeartusketal.)的美國(guó)臨時(shí)專利申請(qǐng)第60/574865號(hào)(Atty.DocketNo.BEAS-01657US0);2005年2月10日提交的、名稱為SYSTEMSANDMETHODSFORCOLLABORATIONIMPERSONATION(BrodiBeartusketal.)的美國(guó)專利申請(qǐng)第11/055327號(hào)(Atty.DocketNo.BEAS掘57US1);2004年5月21日提交的、名稱為SYSTEMSANDMETHODSFOR^國(guó)臨時(shí)專利申請(qǐng)第60/573365號(hào)(Atty.DocketNo.BEAS-01658US0);2005年2月10日提交的、名稱為SYSTEMSANDMETHODSFORCOLLABORATIONINTERCEPTORS(BrodiBeartusketal.)的美國(guó)專利申請(qǐng)第11/0552卯號(hào)(Atty.DocketNo.BEAS-01658US1);2004年5月21日提交的、名稱為SYSTEMSANDMETHODSFORCOLLABORATIVECO-NAVIGATION(BrodiBeartusketal.)的美國(guó)臨時(shí)專利申請(qǐng)第60/573140號(hào)(Atty.DocketNo.BEAS-01659US0);2005年2月10日提交的、名稱為SYSTEMSANDMETHODSFORCOLLABORATIVECO-NAVIGATION(BrodiBeartusketal.)的美國(guó)專利申請(qǐng)第11/055269號(hào)(Atty.DocketNo.BEAS-01659US1);2004年5月21日提交的、名稱為SYSTEMSANDMETHODSFOR利申請(qǐng)第60/573310號(hào)(Atty.DocketNo.BEAS-01660US0);2005年2月10日提交的、名稱為SYSTEMSANDMETHODSFOR請(qǐng)第11/055047號(hào)(Atty.DocketNo.BEAS-01660US1)。權(quán)利要求1.一種用于多個(gè)參與者之間的協(xié)作的方法,包括聯(lián)系協(xié)作進(jìn)程,其中由第一參與者進(jìn)行該聯(lián)系;基于角色來(lái)使一個(gè)或多個(gè)潛在參與者取得資格;從所述一個(gè)或多個(gè)潛在參與者中選擇第二參與者;邀請(qǐng)第二參與者加入該協(xié)作;以及接收第二參與者是否能加入該協(xié)作的指示。2.如權(quán)利要求l所述的方法,其中動(dòng)態(tài)地評(píng)估所述角色,并且其中該角色基于在場(chǎng)信息。3.如權(quán)利要求l所述的方法,其中所述角色基于潛在參與者的一個(gè)或多個(gè)屬性。4.如權(quán)利要求l所述的方法,其中,選擇步驟包括選擇最不忙的潛在參與者。5.—種用于協(xié)作的系統(tǒng),包括協(xié)作進(jìn)程,包括消息傳遞層;第一客戶端,包括第一消息傳遞層,其中第一客戶端和協(xié)作進(jìn)程能夠通過(guò)它們各自的消息傳遞層通信;第二客戶端,包括第二消息傳遞層,其中第二客戶端能夠與協(xié)作進(jìn)程通過(guò)它們各自的消息傳遞層通信;角色,用來(lái)動(dòng)態(tài)地識(shí)別第一客戶端和第二客戶端中的至少一個(gè);并且其中所述角色基于第一客戶端和第二客戶端中的至少一個(gè)的在場(chǎng)信息。6.如權(quán)利要求5所述的方法,其中動(dòng)態(tài)地評(píng)估所述角色,并且其中該角色基于在場(chǎng)信息。7.如權(quán)利要求5所述的方法,其中所述角色基于潛在參與者的一個(gè)或多個(gè)屬,陣。8.—種用于建立協(xié)作的方法,包括評(píng)估角色以便動(dòng)態(tài)地確定一組潛在參與者;從這組潛在參與者中選擇第一參與者;邀請(qǐng)第一參與者加入該協(xié)作;接收對(duì)該邀請(qǐng)的答復(fù);以及如果該答復(fù)指示加入該協(xié)作的愿望,則將第一參與者包括在該協(xié)作中。9.如權(quán)利要求8所述的方法,其中所述角色基于在場(chǎng)和狀態(tài)信息。10.如權(quán)利要求8所述的方法,其中第一參與者能夠訪問(wèn)共享狀態(tài),通過(guò)所述共享狀態(tài)能夠與其它參與者共享信息。11.如權(quán)利要求8所述的方法,其中所述角色基于潛在參與者的一個(gè)或多個(gè)屬性。12.如權(quán)利要求8所述的方法,其中將第一參與者與能夠網(wǎng)絡(luò)瀏覽的進(jìn)程集成。13.—種用于提供在場(chǎng)信息的方法,所述方法包括定義角色,所述角色定義動(dòng)態(tài)的一組用戶,其中這組用戶可以隨著時(shí)間變化,并且其中所述角色基于這組用戶的至少一個(gè)成員的在場(chǎng)信息;通過(guò)訂戶來(lái)訂閱所述角色,其中該訂戶將接收到對(duì)動(dòng)態(tài)的這組用戶的改變的通^口;向訂戶通知?jiǎng)討B(tài)的這組用戶的改變;并且其中訂閱的步驟包括從這組用戶中的至少一個(gè)成員獲得對(duì)訂閱的許可。14.如權(quán)利要求13所述的方法,其中通過(guò)一組潛在成員和成員資格標(biāo)準(zhǔn)來(lái)定義所述角色。15.如權(quán)利要求13所述的方法,其中所述角色可以包括一個(gè)或多個(gè)算術(shù)和/或邏輯表達(dá)式。16.—種方法,包括在協(xié)作中的多個(gè)參與者之間傳遞信息;顯露一組功能,所述功能允許進(jìn)程參與協(xié)作,這組功能包括第一功能,用來(lái)幫助發(fā)送和接收消息;和第二功能,用來(lái)幫助用戶在場(chǎng)信息的傳播和對(duì)用戶在場(chǎng)的確定,并且其中,第二功能包括用于基于角色確定用戶在場(chǎng)的一個(gè)或多個(gè)功能,其中可以動(dòng)態(tài)地評(píng)估所述角色。17.如權(quán)利要求16所述的方法,其中通過(guò)業(yè)務(wù)進(jìn)程來(lái)協(xié)調(diào)所述協(xié)作。18.—種用于提供涉及多個(gè)參與者和業(yè)務(wù)進(jìn)程的交互式群組聊天的方法,包括發(fā)起業(yè)務(wù)進(jìn)程以便協(xié)調(diào)所述多個(gè)參與者;基于對(duì)角色的動(dòng)態(tài)評(píng)估來(lái)確定所述多個(gè)參與者,其中所述角色基于所述多個(gè)參與者的在場(chǎng)信息;使所述多個(gè)參與者中的每一個(gè)加入該群組聊天;以及將消息從多個(gè)參與者之一分發(fā)給其它參與者。19.如權(quán)利要求18所述的方法,其中業(yè)務(wù)進(jìn)程允許所述多個(gè)參與者與一個(gè)或多個(gè)企業(yè)業(yè)務(wù)系統(tǒng)交互。20.如權(quán)利要求18所述的方法,其中所述多個(gè)參與者中的每一個(gè)可以訪問(wèn)共享狀態(tài),通過(guò)所述共享狀態(tài)能夠在他們之間共享信息。21.如權(quán)利要求18所述的方法,其中將所述多個(gè)參與者中的至少一個(gè)與能夠網(wǎng)絡(luò)瀏覽的進(jìn)程集成。22.如權(quán)利要求18所述的方法,還包括基于對(duì)所述角色的評(píng)估將參與者動(dòng)態(tài)地添加到群組聊天中。23.—種方法,包括與第一進(jìn)程通信,其中第一進(jìn)程是協(xié)作進(jìn)程;與第二進(jìn)程通信,其中第二進(jìn)程能夠組配第一網(wǎng)頁(yè)并且能夠動(dòng)態(tài)地控制在多個(gè)網(wǎng)頁(yè)上的導(dǎo)航;更新第一網(wǎng)頁(yè)以反映從第一進(jìn)程接收的信息,其中該更新不需要與第二進(jìn)程通信;并且其中第二進(jìn)程能夠動(dòng)態(tài)地改變?cè)谒龆鄠€(gè)網(wǎng)頁(yè)上的導(dǎo)航流。24.—種方法,包括在協(xié)作中的多個(gè)參與者之間共享信息;以及顯露一組功能,所述功能允許所述多個(gè)參與者中的參與者共享該信息,這組功能包括第一功能,用來(lái)幫助建立在其中與所述多個(gè)參與者交互的上下文;和第二功能,用來(lái)幫助存儲(chǔ)和從共享狀態(tài)中檢索一個(gè)或多個(gè)值,其中能夠在所述上下文中訪問(wèn)該共享狀態(tài)。全文摘要用于多個(gè)參與者(客戶端“A”、“B”和“C”)之間的協(xié)作的系統(tǒng)和方法,包括聯(lián)系協(xié)作進(jìn)程(進(jìn)程“2”),其中由第一參與者(客戶端“B”)進(jìn)行該聯(lián)系;基于角色來(lái)使一個(gè)或多個(gè)潛在參與者取得資格;從所述一個(gè)或多個(gè)潛在參與者中選擇第二參與者(客戶端“C”);邀請(qǐng)第二參與者加入該協(xié)作;以及接收第二參與者是否能夠加入該協(xié)作的指示。此摘要不意欲作為本發(fā)明的完整描述或者限制本發(fā)明的范圍??梢詮膶?duì)說(shuō)明書(shū)、附圖和權(quán)利要求的查看中獲得本發(fā)明的其它特征、方面和目的。文檔編號(hào)G06F17/30GK101421698SQ200580001066公開(kāi)日2009年4月29日申請(qǐng)日期2005年5月19日優(yōu)先權(quán)日2004年5月20日發(fā)明者克里斯托弗·喬利,凱文·B·弗倫德,布羅迪·比爾塔斯克,托馬斯·A·庫(kù)克,托馬斯·C·斯塔姆,格雷戈里·P·史密斯,沙恩·皮爾森,愛(ài)德華·K·奧尼爾,理查德·費(fèi)特,羅德尼·麥考利,蒂莫西·J·布里登,達(dá)里爾·B·奧蘭德,馬尼什·德夫甘申請(qǐng)人:Bea系統(tǒng)公司