專(zhuān)利名稱(chēng)::公共組件框架的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明一般地涉及在軟件應(yīng)用中的對(duì)象間進(jìn)行通信的方法。更具體地說(shuō),本發(fā)明涉及在容器應(yīng)用與容器內(nèi)的組件軟件對(duì)象之間建立的通用通信框架。
背景技術(shù):
:基于在軟件容器應(yīng)用內(nèi)執(zhí)行的模塊化組件,軟件應(yīng)用通常被實(shí)現(xiàn)為多層應(yīng)用。這些容器-組件應(yīng)用在開(kāi)發(fā)、可移植性和可擴(kuò)展性方面提供了優(yōu)勢(shì)。容器應(yīng)用可以處理事務(wù)、安全以及組件管理功能,使得組件開(kāi)發(fā)者能夠?qū)W⒂谟伤麄兊慕M件所實(shí)現(xiàn)的特定功能。此外,容器可以通過(guò)與每個(gè)其組件同時(shí)通信的方式在多個(gè)組件之間進(jìn)行協(xié)調(diào)并對(duì)行為進(jìn)行同步。在實(shí)現(xiàn)這些優(yōu)勢(shì)之前,必須在容器應(yīng)用及其組件之間建立有效的通信標(biāo)準(zhǔn)。這是一個(gè)挑戰(zhàn),因?yàn)榻M件和容器可以是多個(gè)不同對(duì)象類(lèi)型中的任何一個(gè)。例如,組件可以?xún)羝?shí)現(xiàn)為簡(jiǎn)單的HTML頁(yè)面、基于Web的對(duì)象,或應(yīng)用對(duì)象的實(shí)例。對(duì)于任何基于Web的組件,容器可以是另一個(gè)Web頁(yè)面,或桌面容器應(yīng)用。對(duì)于通信難題的一種先前解決方案涉及使用具有本地組件的容器。當(dāng)桌面容器應(yīng)用包括專(zhuān)門(mén)為在該容器內(nèi)使用而設(shè)計(jì)的本地組件時(shí),這些所謂的"智能"組件可以被緊密地集成到容器環(huán)境中。例如,智能組件可以被直接置于一層FLEX容器實(shí)例中(例如,作為容器窗口中的瓦片(tile)或選項(xiàng)卡(tab)),而不是在單獨(dú)的彈出窗口中啟動(dòng)。類(lèi)似地,所述組件可以支持更健全的功能并且可以被完整地集成到容器的FLEX范例中。但是,基于Web的組件不能被緊密地集成到類(lèi)似本地智能組件的容器中。因此,在典型的容器架構(gòu)中,基于Web的組件通常支持有限的功能并提供不是很一致的用戶(hù)體驗(yàn)。此外,如上所述,通常必須為特定的容器應(yīng)用專(zhuān)門(mén)設(shè)計(jì)在容器內(nèi)運(yùn)行的本地智能組件。結(jié)果,智能組件通常不能在其他容器內(nèi)工作,使得容器-組件軟件應(yīng)用的許多主要優(yōu)勢(shì)蕩然無(wú)存。因此,需要一種在多層軟件應(yīng)用中的容器和組件之間進(jìn)行通信的系統(tǒng)。
發(fā)明內(nèi)容根據(jù)上述問(wèn)題,本發(fā)明涉及一種在多層軟件應(yīng)用中的容器和組件軟件對(duì)象之間進(jìn)行通信的公共組件框架(CCF)系統(tǒng)。在一個(gè)方面中,組件請(qǐng)求所述容器上的注冊(cè)函數(shù)調(diào)用。使用此函數(shù),容器和組件可以交換彼此用于執(zhí)行通用函數(shù)調(diào)用和數(shù)據(jù)請(qǐng)求的CCF接口指針。在特定實(shí)施例中,由于此接口指針交換可以在接近組件實(shí)例化時(shí)發(fā)生,所以可以在注冊(cè)函數(shù)的稍后使用第二函數(shù)調(diào)用來(lái)通知所述組件已準(zhǔn)備好從容器接收調(diào)用和數(shù)據(jù)請(qǐng)求。一旦組件和容器建立了這些接口,每一方就可以通知另一方在其范圍內(nèi)發(fā)生的用戶(hù)操作或某些其他狀態(tài)更改,使得被通知的容器或組件能夠根據(jù)所述更改采取適當(dāng)?shù)牟僮鱽?lái)協(xié)調(diào)其行為。根據(jù)另一個(gè)方面,在已交換CCF接口指針之后,用戶(hù)可以例如通過(guò)單擊或選擇組件中的用戶(hù)接口控件來(lái)導(dǎo)致所述組件中的上下文更改。作為一件中的金融實(shí)體(例如,公司、股票、債券、市場(chǎng)等)。響應(yīng)于所述上下文更改,所述組件可以發(fā)送事件以通知容器所述更改并提供新的上下文。所述容器可以轉(zhuǎn)換所述上下文數(shù)據(jù)(如果需要)并將新的上下文數(shù)據(jù)轉(zhuǎn)發(fā)到該容器內(nèi)運(yùn)行的一個(gè)或多個(gè)其他組件。因此,即使是單獨(dú)設(shè)計(jì)和開(kāi)發(fā)以提供不同功能的組件也可以通過(guò)CCF接口由所述容器來(lái)協(xié)調(diào)和同步,這向用戶(hù)提供了更加無(wú)縫和一致的體驗(yàn)。根據(jù)再一個(gè)方面,所述上下文更改可以源自用戶(hù)將所述組件中的一個(gè)用戶(hù)接口控件拖放到同一容器內(nèi)運(yùn)行的其他組件中的拖放操作。組件之間或甚至可以允許用戶(hù)將特定數(shù)據(jù)字段從一個(gè)組件的用戶(hù)接口拖入另一個(gè)組件的用戶(hù)接口。作為此功能的一個(gè)示例,可以將金融數(shù)據(jù)檢索組件返回的搜索結(jié)果拖入同一容器內(nèi)運(yùn)行的鄰近電子表格組件(例如,MicrosoftExcel對(duì)象實(shí)例)。從本發(fā)明的以下詳細(xì)說(shuō)明、所附權(quán)利要求以及附圖,本發(fā)明的這些以及其他優(yōu)點(diǎn)和方面將是顯而易見(jiàn)和可以理解的。通過(guò)示例的方式示出了本發(fā)明并且本發(fā)明并不限于附圖,在附圖中,相同的標(biāo)號(hào)指示相同的元素,這些附圖是圖1示出了才艮據(jù)本^Hf的各方面的計(jì)算環(huán)境的框圖2示出了才艮據(jù)4^^開(kāi)的各方面的軟件組件架構(gòu)的框圖3是示出才艮據(jù)本公開(kāi)的各方面的組件和容器之間的通信的流程圖4是示出才艮據(jù)本公開(kāi)的各方面的公共組件框架(CCF)功能的執(zhí)行的流程圖;以及圖5-9是示出根據(jù)本公開(kāi)的各方面的用戶(hù)與CCF容器內(nèi)啟用CCF的組件的交互的示例性屏幕快照。具體實(shí)施例方式在以下對(duì)各個(gè)實(shí)施例的說(shuō)明中,參考了形成本說(shuō)明書(shū)一部分的附圖,例。應(yīng)當(dāng)理解,可以采用其他實(shí)施例并且可以4故出結(jié)構(gòu)和功能修改而不偏離本發(fā)明的范圍。由于本發(fā)明涉及軟件對(duì)象通信,因此首先將描述適合的通用計(jì)算系統(tǒng)環(huán)境。其上可以實(shí)現(xiàn)一個(gè)或多個(gè)示例性方面的計(jì)算機(jī)100只是適合的計(jì)算環(huán)境的一個(gè)示例并且并非旨在暗示與在此描述的使用范圍或特性功能相關(guān)的任何限制。圖1示出了其中可以實(shí)現(xiàn)在此描述的一個(gè)或多個(gè)方面的計(jì)算環(huán)境。諸如計(jì)算機(jī)ioo的計(jì)算設(shè)備可以容納有用于輸入、輸出、存儲(chǔ)和處理數(shù)據(jù)的各種組件。例如,處理器105可以執(zhí)行多種任務(wù),包括執(zhí)行一個(gè)或多個(gè)應(yīng)用、從存儲(chǔ)裝置115之類(lèi)的存儲(chǔ)設(shè)備檢索數(shù)據(jù)和/或?qū)?shù)據(jù)輸出到諸如顯示器120之類(lèi)的設(shè)備。處理器105可以連接到隨M取存儲(chǔ)器(RAM)模塊110,后者可以臨時(shí)存儲(chǔ)應(yīng)用數(shù)據(jù)和/或指令。可以以任何順序存儲(chǔ)和存取RAM模塊110,這提供了對(duì)RAM模塊110中的存儲(chǔ)單元的同等可存取性。計(jì)算機(jī)100還可以包括只讀存儲(chǔ)器(ROM)112,其允許存儲(chǔ)在其上的數(shù)據(jù)在關(guān)閉計(jì)算機(jī)100之后保持不變或繼續(xù)存在。ROM112可用于各種用途,包括存儲(chǔ)計(jì)算機(jī)100的基本輸入/輸出系統(tǒng)(BIOS)。ROM112還可以存儲(chǔ)日期和時(shí)間信息,以便即使在關(guān)機(jī)和重新啟動(dòng)之后信息仍保持不變。此外,存儲(chǔ)裝置115可以為包括應(yīng)用和數(shù)據(jù)文件的各種數(shù)據(jù)提供長(zhǎng)期存儲(chǔ)。在一個(gè)示例中,處理器105可以從存儲(chǔ)裝置115檢索應(yīng)用并當(dāng)應(yīng)用正在執(zhí)行時(shí)將與應(yīng)用關(guān)聯(lián)的指令臨時(shí)存儲(chǔ)在RAM模塊110中。計(jì)算機(jī)100可以通過(guò)各種組件和設(shè)備輸出數(shù)據(jù)。如上所述,一個(gè)此類(lèi)設(shè)備可以是顯示器120。另一個(gè)輸出設(shè)備可以包括諸如揚(yáng)聲器125之類(lèi)的音頻輸出設(shè)備。每個(gè)輸出設(shè)備120和125都可以與諸如顯示適配器l22和音頻適配器127之類(lèi)的輸出適配器關(guān)聯(lián),后者將處理器指令轉(zhuǎn)換成相應(yīng)的音頻和視頻信號(hào)。除了輸出系統(tǒng)以外,計(jì)算機(jī)100還可以從各種輸入設(shè)備(如鍵盤(pán)130、存儲(chǔ)介質(zhì)驅(qū)動(dòng)器135和/或麥克風(fēng)(未示出))接收和/接受輸入。與輸出設(shè)備120和125—樣,每個(gè)輸入設(shè)備130和135都可以與適配器140關(guān)聯(lián)以便將輸入轉(zhuǎn)換成計(jì)算機(jī)可讀/可識(shí)別的數(shù)據(jù)。在一個(gè)示例中,通過(guò)麥克風(fēng)(未示出)接收的語(yǔ)音輸入可以被轉(zhuǎn)換成數(shù)字格式并存儲(chǔ)在數(shù)據(jù)文件中。在一種或多種情況下,諸如介質(zhì)驅(qū)動(dòng)器135之類(lèi)的設(shè)備可以用作輸入和輸出設(shè)備兩者,使得用戶(hù)能夠向/從存儲(chǔ)介質(zhì)(例如,DVD-R,CD-RW等)寫(xiě)入/讀取數(shù)據(jù)。計(jì)算機(jī)100還可以包括一個(gè)或多個(gè)通信組件以便通過(guò)網(wǎng)絡(luò)接收和發(fā)送數(shù)據(jù)。各種類(lèi)型的網(wǎng)絡(luò)包括蜂窩網(wǎng)絡(luò)、數(shù)字廣播網(wǎng)、網(wǎng)際協(xié)議(IP)網(wǎng)絡(luò)等。計(jì)算機(jī)100可以包括適于通過(guò)一個(gè)或多個(gè)這些網(wǎng)絡(luò)通信的適配器。具體地說(shuō),計(jì)算機(jī)100可以包括網(wǎng)絡(luò)適配器150以便通過(guò)IP網(wǎng)絡(luò)160(例如,局域網(wǎng)、廣域網(wǎng)或因特網(wǎng))與一個(gè)或多個(gè)其他計(jì)算機(jī)或計(jì)算設(shè)備通信。在一個(gè)示例中,適配器150可以幫助通過(guò)^^司或組織的網(wǎng)絡(luò)160傳輸數(shù)據(jù)(如電子郵件消息和/或金融數(shù)據(jù))。在另一個(gè)示例中,適配器150可以幫助從諸如因特網(wǎng)160的萬(wàn)維網(wǎng)傳輸或接收信息。適配器150可以包括與一種或多種聯(lián)網(wǎng)協(xié)議有關(guān)的一組或多組指令。例如,適配器150可以包括處理IP網(wǎng)絡(luò)分組的第一組指令以及包括與處理蜂窩網(wǎng)絡(luò)分組關(guān)聯(lián)的第二組指令。在一個(gè)或多個(gè)布置中,網(wǎng)絡(luò)適配器150可以為計(jì)算機(jī)100提供無(wú)線(xiàn)網(wǎng)^入。本領(lǐng)域的技術(shù)人員將理解,諸如計(jì)算機(jī)100的計(jì)算設(shè)備可以包括各種其他組件并且不限于圖1中描述的設(shè)備和系統(tǒng)。在描述^^共組件框架(CCF)的軟件架構(gòu)和接口細(xì)節(jié)之前,將給出初始描述。CCF是一種可用于使一個(gè)或多個(gè)基于web的軟件組件以及與這些組件關(guān)聯(lián)的容器之間的通信標(biāo)準(zhǔn)化的接口?;趙eb的組件可以例如是簡(jiǎn)單的HTML網(wǎng)頁(yè),或更復(fù)雜的基于web的對(duì)象,如ActiveX對(duì)象或Java小應(yīng)用程序。容器也可以是網(wǎng)頁(yè)或基于web的父對(duì)象,但可以實(shí)際是在計(jì)算機(jī)100上運(yùn)行的桌面軟件應(yīng)用。作為一個(gè)示例,Reuter的Xtra桌面軟件應(yīng)用可以被實(shí)現(xiàn)為用作啟用CCF的容器。桌面應(yīng)用CCF容器的一個(gè)潛在優(yōu)勢(shì)涉及使得HTML組件能夠展示與嵌入桌面容器內(nèi)的本地組件的行為類(lèi)似的行為。這些所謂的"智能"本地組件通常由容器應(yīng)用來(lái)定義,并且因此容器通常是應(yīng)用特定的。參考圖2,其中示出了軟件組件架構(gòu)的框圖。在圖2中,容器應(yīng)用210的單個(gè)實(shí)例可以容納許多不同的組件,包括一個(gè)或多個(gè)啟用CCF的組件(例如,組件240)以及非CCF組件(其他對(duì)象250-280)。如上所述,其他對(duì)象250-280可以是本地的容器特定的組件,用于在容器內(nèi)提供特定功能。在此示例中容器220可以是在容器應(yīng)用210中運(yùn)行的客戶(hù)端應(yīng)用對(duì)象,其實(shí)現(xiàn)CCF接口的容器方。容器220可以使用與應(yīng)用210所容納的所有其他組件250-280相同或類(lèi)似的方式與容器應(yīng)用210通信。與容器220通信的基于web的CCF組件240可以在因特網(wǎng)瀏覽器應(yīng)用230(如MicrosoftInternetExplorer(IE)瀏覽器)的實(shí)例中運(yùn)行。當(dāng)然,可以使用其他瀏覽器應(yīng)用。在此示例中瀏覽器230是可嵌入IE的對(duì)象的已嵌入副本。如以下詳細(xì)說(shuō)明的,由于組件240直接與CCF容器220通信,所以組件240無(wú)需依賴(lài)于任何特定品牌或配置的瀏覽器230。應(yīng)指出的是,如果容器220容納了多個(gè)CCF組件240,則其可能需要額外的專(zhuān)用存儲(chǔ)裝置和邏輯以便同時(shí)協(xié)調(diào)其與多個(gè)組件240的通信。完成此協(xié)調(diào)的一種方式是為每個(gè)包含的組件240維護(hù)CCF接口的一個(gè)單獨(dú)實(shí)例。在與圖2所示略為不同的配置中,多個(gè)CCF組件(如組件240)可以在同一瀏覽器對(duì)象230中運(yùn)行。在此類(lèi)配置中,在瀏覽器230中運(yùn)行的父網(wǎng)頁(yè)可以將自身向容器220呈現(xiàn)為單個(gè)組件,同時(shí)還支持CCF接口的容器方以便它可以將自身向多個(gè)內(nèi)部CCF組件240呈現(xiàn)為容器。在容器與組件之間傳遞的對(duì)象和數(shù)據(jù)可以是由瀏覽器230實(shí)現(xiàn)的JavaScript解釋器的本地對(duì)象和數(shù)據(jù)。例如,在InternetExplorer瀏覽器中,IE自動(dòng)地將IDispatch對(duì)象和VARIANTS轉(zhuǎn)換為本地JavaScript類(lèi)型以及從本地JavaScript類(lèi)型來(lái)轉(zhuǎn)換IDispatch對(duì)象和VARIANTS。因此,可以實(shí)現(xiàn)CCF組件以利用此瀏覽器功能。如上所述,組件240無(wú)需依賴(lài)于任何特定品牌或配置的瀏覽器230。但是,在一種配置中,CCF容器220接口可以假設(shè)組件240位于MicrosoftInternetExplorer瀏覽器的實(shí)例中,更具體地說(shuō),位于可嵌入IECOM的對(duì)象的實(shí)例中。在此示例中,CCF組件240可以訪(fǎng)問(wèn)InternetExplorer特定的對(duì)象"window.external"以定位容器220。但是,如果組件240無(wú)法訪(fǎng)問(wèn)此對(duì)象,則它可能斷定它沒(méi)有"window.external"容器220,并且然后嘗試定位瀏覽器(例如,HTML)容器220。為了定位瀏覽器容器220,組件240可以搜索全局JavaScript函數(shù),這指示其沒(méi)有瀏覽器容器220。備選地,組件240可以嘗試首先訪(fǎng)問(wèn)瀏覽器容器220,然后再?lài)L試訪(fǎng)問(wèn)"window.external"容器220。當(dāng)然,使用其他用于定位和訪(fǎng)問(wèn)容器或組件的技術(shù),容器220與組件240之間的CCF通信也是可能的,只要在兩者之間至少存在某些通信路徑即可。如果組件240無(wú)法建立與容器220的通信,則它仍然可以繼續(xù)運(yùn)行,盡管特定組件會(huì)提供簡(jiǎn)化的功能,這取決于組件240的類(lèi)型和實(shí)施方式。還可以這樣配置CCF接口使用公知的技術(shù),僅在容器220與組件240之間傳遞COM對(duì)象。這些COM對(duì)象可以實(shí)現(xiàn)IDispatch接口,并且傳遞具有VARIANT數(shù)據(jù)類(lèi)型的數(shù)據(jù)。應(yīng)指出的是,雖然"window.external"接口可能需要此COM/IDispatch通信,但是其他通信方法可能并不需要此通信。例如,瀏覽器容器220可以使用本地JavaScript對(duì)象和函數(shù)來(lái)實(shí)現(xiàn)上述接口。參考圖3,其是示出容器220與組件240之間的通信的步驟的流程圖。在步驟301,組件240啟動(dòng)容器220的注冊(cè)函數(shù),或所謂的握手函數(shù)。以下示出了可能的握手函數(shù)定義的一個(gè)示例HRt:SULTregisterWithCCFContainer(卩n〗iCCF*componentInterface,卩njBS丁RcomponentSessionXML,[out,retval〗ICCF**containerlnterface)在此示例中,通過(guò)新的組件240在CCF容器220上調(diào)用該函數(shù)。返回給組件240的非空值指示握手過(guò)程成功。此外,如果容器220在基于web的對(duì)象(例如,如圖2所示在IE瀏覽器內(nèi)運(yùn)行的HTML容器)內(nèi)運(yùn)行,則registerWithCCFContainer握手函數(shù)在瀏覽器內(nèi)可以是全局的。但是,如果容器220未在瀏覽器對(duì)象內(nèi)運(yùn)行,則替代地可以使用window.external.registerWithCCFContainer來(lái)實(shí)現(xiàn)registerWithCCF-Container函數(shù)。如上所示,registerWithCCFContainer函數(shù)允許啟用CCF的組件240調(diào)用該函數(shù)以及啟用CCF的容器220接收該調(diào)用以交換接口指針。此夕卜,12在處理此握手函數(shù)時(shí),容器220可以例如通過(guò)解析componentSessionXML參數(shù)來(lái)確定在組件240上運(yùn)行的CCF版本。在特定實(shí)施方式中,版本號(hào)可以包括三個(gè)由句點(diǎn)分隔的單獨(dú)部分(例如,數(shù)字)。例如,容器220可以解析componentSessionXML參數(shù)來(lái)確定組件240正在運(yùn)行CCF接口版本"3.4.5"。在此示例中,第一個(gè)數(shù)字("3")代表只有當(dāng)新的CCF實(shí)施方式與先前版本不兼容時(shí)才更改的主要版本。第二個(gè)數(shù)字("4")代表指示CCF實(shí)施方式中與先前版本的向后兼容更改的次要版本。第三個(gè)數(shù)字("5")用于反映不改變CCF接口本身,但是修復(fù)程序錯(cuò)誤或細(xì)化特定結(jié)構(gòu)的含義的實(shí)施方式更改。如果容器220確定其自己的CCF實(shí)施方式不支持組件240所運(yùn)行的CCF版本,則容器220可以只是通過(guò)向組件240返回空值來(lái)拒絕握手請(qǐng)求。在可能時(shí),新版本的CCF接口可以被設(shè)計(jì)為向后兼容先前版本。為了在新版本的CCF容器和組件接口中更好地實(shí)現(xiàn)向后和未來(lái)兼容性,函數(shù)可以被設(shè)計(jì)為忽略任何意外的或未被識(shí)別的輸入,因?yàn)榇祟?lèi)輸入很可能是與較近版本的CCF接口通信的結(jié)果。返回圖3,一旦成功完成握手函數(shù),容器220就準(zhǔn)備好接收來(lái)自組件240的CCF調(diào)用。因此,在步驟302,組件240通過(guò)調(diào)用在CCF容器接口內(nèi)定義的函數(shù)來(lái)請(qǐng)求容器220上的功能。以下參考圖4更詳細(xì)地描述了可用的CCF函數(shù)調(diào)用。在步驟303,組件240向容器220發(fā)送"onLoad"事件。onLoad事件(其在以下詳細(xì)說(shuō)明)向容器220指示發(fā)出調(diào)用的組件240現(xiàn)在準(zhǔn)備好接收CCF函數(shù)調(diào)用。因此,在步驟304,容器220可以調(diào)用CCF組件接口內(nèi)定義的函數(shù),同時(shí)繼續(xù)接收和支持容器接口函數(shù)以便由組件240或容器220中的其他組件進(jìn)行調(diào)用。然后,在步驟305,組件240向容器220發(fā)送"onUnload"事件,通過(guò)向容器220指示組件240將不再接受CCF調(diào)用來(lái)取消注冊(cè)組件。雖然通常由組件240在其解構(gòu)期間發(fā)送onUnload,但是組件240可以繼續(xù)存在并隨后嘗試重新建立與容器220的通信。但是,在特定實(shí)施方式中,可能不允許組件240重用在步驟301中獲得的容器接口指針。在此情況下,可能需要組件240再次請(qǐng)求容器的握手函數(shù)(registerWithCCFContainer),然后才能重新開(kāi)始與組件240的通信。參考圖4,其是示出CCF函數(shù)的執(zhí)行的流程圖。在步驟401,在CCF容器220處或者在啟用CCF的組件240處接收函數(shù)調(diào)用。如上所述,CCF容器220可以支持在CCF容器接口內(nèi)定義的一組函數(shù),該組函數(shù)不同于由組件240支持的在CCF容器接口中定義的函數(shù)。在步驟402,接收方確定所述調(diào)用請(qǐng)求哪個(gè)CCF函數(shù)。在此示例中,容器220和組件240僅支持兩個(gè)可能的CCF函數(shù),即"GetData()"和"ProcessEventO"函數(shù)。盡管容器接口和組件接口可以定義一組相同的CCF函數(shù),甚至所述CCF函數(shù)可以具有相同的函數(shù)定義(即,相同數(shù)量和數(shù)據(jù)類(lèi)型的輸入/輸出參數(shù)),但是這并不意味著組件接口所支持的實(shí)際功能與容器接口所支持的實(shí)際功能相同。例如,在容器220和組件240支持多組不同的事件的情況下,CCFProcessEvent()函數(shù)可以接受對(duì)應(yīng)于事件名稱(chēng)的字符串輸入?yún)?shù)。以下說(shuō)明了潛在地由CCF容器接口和CCF組件接口支持的一系列事件。通過(guò)以下接口定義例示了針對(duì)CCF接口實(shí)現(xiàn)此事件和數(shù)據(jù)檢索功能的一種方式interfaceICCF:IDispatchHRESULTgetData(ICCFObj*requestObj,〖o(jì)ut,retval〗BSTR*result);[id(2)〗HRESULTp瞎ssEvent(ICCFObj*eventObj,jout,mvallVARIANT—BOOL*result);interfaceICCFObj:IDispatchHRESULT細(xì)e(〖加t,retval]BSTR*value);[propgedd(2)]HRESULTxmiData(BSTR*value);在此示例中,ICCF對(duì)象支持getData或processEvent函數(shù)。如函數(shù)定義中所示,指向ICCFObj的指針是兩個(gè)ICCF方法都需要的輸入?yún)?shù)。作為參數(shù)傳遞的所引用的ICCFObj包含與(processEvent函數(shù))發(fā)送的事件或(getData事件)請(qǐng)求的數(shù)據(jù)對(duì)應(yīng)的'name'字符串(例如,BSTR)。所引用的ICCFObj還包含'xmldata,字符串,以便以XML文檔的形式提供附加的信息,容器220或組件240可以解析和使用該XML文檔以處理所述事件和請(qǐng)求。許多不同配置的事件和可檢索數(shù)據(jù)是可能的,并且下一節(jié)中詳細(xì)討論了某些類(lèi)似的事件和請(qǐng)求名稱(chēng)。但是應(yīng)指出的是,在特定配置中,與CCF函數(shù)調(diào)用一起傳遞的ICCFObj中的名稱(chēng)標(biāo)識(shí)符永遠(yuǎn)不能為空值。也就是說(shuō),任何在未指定事件名稱(chēng)或所請(qǐng)求數(shù)據(jù)的情況下的請(qǐng)求數(shù)據(jù)或發(fā)送事件的嘗試都會(huì)導(dǎo)致將錯(cuò)誤返回給調(diào)用方。相比之下,xmldata標(biāo)識(shí)符可能經(jīng)常為空值,因?yàn)樵S多事件或數(shù)據(jù)請(qǐng)求不需要附加的數(shù)據(jù)來(lái)使CCF容器220或組件240成功處理所述事件或請(qǐng)求。因此,在步驟403,無(wú)論函數(shù)調(diào)用為何,接收調(diào)用的CCF對(duì)象都解析名稱(chēng)和xmldata參數(shù),以^f更能夠處理期望的事件或數(shù)據(jù)請(qǐng)求。在步驟404,執(zhí)行所請(qǐng)求的功能,并且在步驟405,函數(shù)返回值和/或數(shù)據(jù)被發(fā)送回函數(shù)調(diào)用方。如以上參考圖3和4所述,容器220和組件240可以通過(guò)經(jīng)由它們相應(yīng)的CCF接口發(fā)送事件并做出數(shù)據(jù)請(qǐng)求來(lái)進(jìn)行交互。當(dāng)做出這些事件和/或數(shù)據(jù)請(qǐng)求時(shí),可以在由CCF模式文件專(zhuān)門(mén)定義的復(fù)雜定制數(shù)據(jù)類(lèi)型(例如,信息類(lèi)型)中傳遞數(shù)據(jù)。CCF模式文件通常被實(shí)現(xiàn)為XML文檔(例如,XML模式定義(XSD)文件)并且與實(shí)現(xiàn)CCF容器和組件功能的JavaScript文件一起^L下載到計(jì)算機(jī)100。如公知的,XSD文件能夠根據(jù)XML元素和屬性連同元素和屬性可存儲(chǔ)何種數(shù)據(jù)值和類(lèi)型的約束一起來(lái)定義信息類(lèi)型。類(lèi)似于其他XML文檔,XSD可由接收的軟件組件來(lái)解析并用于填充適當(dāng)類(lèi)型的對(duì)象實(shí)例。以下包括了定義信息類(lèi)型的樣例XSD文件。在此示例中,由ContextData.XSD文件完整地描述ContextData信息。由xs:complexType元素的"name"屬性來(lái)指定類(lèi)型名稱(chēng),并且由此xs:complexType標(biāo)簽中包含的內(nèi)容來(lái)定義類(lèi)型的結(jié)構(gòu)。因此,在以下示例中</xsxomplexType>省略號(hào)代表ContextData類(lèi)型的結(jié)構(gòu),其可以包括諸如數(shù)字或字符串的簡(jiǎn)單數(shù)據(jù)類(lèi)型的集合,并且還可以包括更復(fù)雜的嵌入數(shù)據(jù)類(lèi)型。在以下的ContextData.XSD文件中可以看到,contextdata類(lèi)型包括一系列實(shí)體對(duì)象(由〈xs:sequencemaxOccurs="unbounded">標(biāo)簽內(nèi)的〈xs:elementref="Entity">標(biāo)簽表示),以及可選的名為searchID的字符串屬性(由<xs:attributename="searchID"type="xs:string"use="optional">標(biāo)簽表示)。在ContextData.XSD文件的更下方,以類(lèi)似方式定義了實(shí)體對(duì)象類(lèi)型。因此,從發(fā)送方接收XML數(shù)據(jù)的軟件組件可以解析該XML以確定其代表類(lèi)型為"contextdata"的對(duì)象,然后訪(fǎng)問(wèn)ContextData.XSD文件以驗(yàn)證所接收的數(shù)據(jù),構(gòu)造contextdata軟件對(duì)象,并且使用從XML文件解析的值來(lái)填充該對(duì)象。在此處描述的許多可能的CCF事件和數(shù)據(jù)請(qǐng)求中,"ContextData"數(shù)據(jù)類(lèi)型的實(shí)例是在CCF容器和組件之間最頻繁地傳遞的信息。在其最簡(jiǎn)單的形式中,ContextData實(shí)例可以通過(guò)存儲(chǔ)單個(gè)實(shí)體(例如,諸如公司、股票、債券、市場(chǎng)、國(guó)家等的金融實(shí)體)的一個(gè)或多個(gè)標(biāo)識(shí)符(例如,RIC、CUSIP、ISIN等)來(lái)描述該實(shí)體。在其他情況下,ContextData的實(shí)例可以保存更復(fù)雜的數(shù)據(jù)以表示與主要實(shí)體關(guān)聯(lián)的字段(即,名稱(chēng)-值對(duì))和/或子實(shí)體對(duì)象。ContextData實(shí)例還可以包括一系列實(shí)體,它們或者存儲(chǔ)為平鋪列表或者存儲(chǔ)為實(shí)體的分層樹(shù)結(jié)構(gòu)。當(dāng)組件240在容器220中運(yùn)行時(shí),組件240通常具有主要上下文,可以根據(jù)組件240的用戶(hù)接口內(nèi)呈現(xiàn)的數(shù)據(jù)的焦點(diǎn)來(lái)設(shè)置此主要上下文。當(dāng)組件240的用戶(hù)例如通過(guò)單擊組件用戶(hù)接口中的不同實(shí)體項(xiàng)而設(shè)置新的焦點(diǎn)時(shí),組件240應(yīng)相應(yīng)地更新其主要上下文,從而允許容器220獲得當(dāng)前上下文并且與其他組件同步顯示/活動(dòng)。除了只是維護(hù)其自己的主要上下文16以外,組件240還可以以用戶(hù)鼠標(biāo)單擊、雙擊、拖動(dòng)或右擊以便進(jìn)行上下文菜單選擇的形式向容器220輸出附加上下文。容器220可以使用這些附加上下文來(lái)向其他組件提供輸入。<formula>formulaseeoriginaldocumentpage17</formula>"s:加加tMi加〉<xs:doc,entatkm>ThiidocumentdefinesschemafortheXMLinstancei.baiiscreatedbythecompcm《nt/slorK)Ufylhecontainerandtheocml邁inertonotifylhecomponentsU>indicateacontextchange<xs:elementname,化Entities"typcyConlcxtData"/><xs:cornplexTypename^'ConteTdData'')<xs:scquencemaxOcc;urs=''unbciuiided"><xs:c:leme.rHrf'EmH/'/></xs:sequence><xs:attrib*nam『"searciiID''typ『"xs:string"use^"豐iorm[V<xs:annotaUon><p)Th(sattributeisoriiyusedinconjunction、vithasynehronoustX)mponemin^EUeclsearch(tharequestedwhhagetData(,'search",&U;Se.archTm'gei>)).</p>lfthecontainerchoosesloreturnthesearchresuttsasynduomxjsly,itwillreturnan"Entities"deniemwi〖hthisaUdbuteHlkdwithauniquekkntifier,andwillret匿N(xiāo)O"Entity1'e(ements.WhenUksearchiscompleu:,itvv川return(inthe"onSearchResuks"event)an"etu"ies"e化m抓withLheSAM£ideruifk"and、vi"includealofthe"Kn—"elementsrepresentingtheresu〗tofthesearch.</p><Zxs:docimientaUon></xs:iinr<M3Uon><xs:dcrnerUrtatnt^"EnUy"〉<xs:documt:nlation〉ThisdementrepresentsabusinessenUtysuchasabusinesssector,c'o'npany/issuer,Irisu'畫(huà)erU'Quoie,etc.</p><xs:complexType><xs:dementref--F"dcmifief"rninO"ursyQ',maxOccurs^"unboundecT/><xs:ekmemrdWri£mit》'"minOccurs""0"maxOccurs="unbcmnded"/>〈xs:atthbutename="datasourcefltype,"xs:string"useoptitina!"/><xs:documenUU[on>Thisdementrepresentafieldname/v由epairandassodateddats歸ceifanysuchasiDN,NDA,£JV<7p><xs:a〖tributen細(xì)e-"oame"type^'x^string"認(rèn)一'requitt:d"</xs:eompkxType><xs:annotalion><xs:docurnenta"on>TOselementrepresentsseeurifesymbologyrmniespace:R!C,SEDOL,£JV,腦,etc.</p></:doctJn,entation><xs:complex丁ypemixed菜"true"></xs:compJexT)'pc></xs;sehema>與容器-組件CCF通信兼容的信息類(lèi)型的若干附加示例3皮披露為XSD文件并在以下附錄中進(jìn)行了描述。如上所述,一旦容器220和組件240交換了CCF接口指針,它們就可以通過(guò)相應(yīng)的接口進(jìn)行交互。此交互可以采取彼此之間發(fā)送的事件和請(qǐng)求的形式,如以上在圖4中所示。以下章節(jié)提供了與可以包括在CCF接口中的特定事件和數(shù)據(jù)請(qǐng)求有關(guān)的信息。雖然可以以?xún)蓚€(gè)方向(即,容器接口和組件接口兩者)實(shí)現(xiàn)一組相同的事件和數(shù)據(jù)請(qǐng)求,但是可以存在其他僅在一個(gè)方向?qū)崿F(xiàn)的事件和/或數(shù)據(jù)請(qǐng)求。例如,可以將組件至容器事件作為組件240的當(dāng)前狀態(tài)的指示發(fā)送到其容器220,同時(shí)并不支持容器至組件事件。以下的許多組件至容器事件通過(guò)組件中的某些用戶(hù)操作來(lái)觸發(fā)。組件至容器事件的示例1.onLoad-在此示例中,onLoad事件是在握手函數(shù)之后第一個(gè)發(fā)送到容器220的事件。此事件指示組件240現(xiàn)在已初始化并準(zhǔn)備好從容器220接收事件和請(qǐng)求。與此事件一起發(fā)送的數(shù)據(jù)是組件240的描述,其作為XML文檔祐發(fā)送到容器220。2.onUnload-onUnload事件是從組件240的實(shí)例發(fā)送到容器220的最后一個(gè)事件。隨此事件沒(méi)有發(fā)送數(shù)據(jù)。在processEvent函數(shù)調(diào)用返回此事件后,組件240將不再?gòu)娜萜?20接受事件和請(qǐng)求。但是,容器220可以在正在處理此事件時(shí)向組件240發(fā)送請(qǐng)求和/或事件。3.onClick-onClick事件通知容器220在組件240的用戶(hù)接口上發(fā)生用戶(hù)鼠標(biāo)單擊操作。此事件是組件240向其他組件提供數(shù)據(jù)鏈接(即,組件240的輸出被用作其他組件的輸入)的機(jī)制,如果容器240希望使用此數(shù)據(jù)用于數(shù)據(jù)鏈接的話(huà)。此事件的數(shù)據(jù)描述了用戶(hù)單擊的組件(例如,用戶(hù)接口控件按鈕、下拉菜單等)內(nèi)的實(shí)體,并且可以采取如以上在ContextData.XSD文件中定義的ContextData實(shí)例的形式。4.onDoubleClick-onDoubleClick事件類(lèi)似于onClick事件,但是通知容器220用戶(hù)在組件240的用戶(hù)接口上進(jìn)行了雙擊。5.onContextDragStart-onContextDragStart事件通知容器220用戶(hù)正在試圖拖動(dòng)組件240中顯示的某些實(shí)體。與onCliek事件相似,此事件的數(shù)據(jù)也可以是描述了用戶(hù)正在拖動(dòng)的實(shí)體(例如,描述實(shí)體上下文)的ContextData數(shù)據(jù)結(jié)構(gòu)。類(lèi)似于onClick事件,此事件可用于將來(lái)自組件240的數(shù)據(jù)輸出提供給其他組件。6.onComponentDragStart—onComponentDragStart事件由組件240發(fā)送以通知容器220用戶(hù)正在試圖拖動(dòng)整個(gè)組件。此組件可以是組件240,也可以是其他組件(例如,組件240的子顯示)。例如,通過(guò)顯示拖動(dòng)"句柄,,以便用戶(hù)在用戶(hù)接口上單擊并拖動(dòng),某些組件可以支持拖動(dòng)。此事件提供了描述組件的當(dāng)前狀態(tài)的數(shù)據(jù)結(jié)構(gòu),并且可由容器220使用以在容器220內(nèi)的其他位置處克隆組件240。7.onContextMenu—onContextMenu事件通知容器220用戶(hù)在組件240內(nèi)進(jìn)行了右擊。在接收到此事件后,容器220可以通過(guò)在組件240用戶(hù)接口上顯示其上下文來(lái)做出響應(yīng)。此事件可以提供諸如右擊位置的屏幕相對(duì)坐標(biāo)之類(lèi)的數(shù)據(jù),以及指示組件240希望添加到上下文菜單的菜單選項(xiàng)的信息。此外,如果用戶(hù)在用戶(hù)接口實(shí)體上進(jìn)行右擊,則可以隨所述事件一起發(fā)送描述該實(shí)體的數(shù)據(jù)。8.onUpdateCommandBars-可以發(fā)送onUpdateCommandBars事件以響應(yīng)用戶(hù)操作。事件數(shù)據(jù)描述了上下文菜單、工具欄和/或服務(wù)菜單。使用此事件,組件240可以在組件240正在運(yùn)行時(shí)定制這些菜單或工具欄。例如,組件240可以在onUpdateCommandBars事件中提供新的值以替換在onContextMenu事件中指定的值。9.onContextChange-onContextChange事件通知容器220組件240最近已更改了其主要焦點(diǎn)。事件數(shù)據(jù)描述了新的上下文。10.onProperyChange-onProperyChange事件通知容器220—個(gè)或多個(gè)其屬性的值已更改。此事件的數(shù)據(jù)描述了已更改的屬性并且可以包括新的值。11.onP叩up-當(dāng)容器220希望在組件240的用戶(hù)接口上創(chuàng)建啟用CCF的彈出窗口時(shí),容器220將onPopup事件發(fā)送到組件。容器220隨事件一起發(fā)送的數(shù)據(jù)可以對(duì)應(yīng)于彈出窗口的優(yōu)選大小和位置。所述數(shù)據(jù)還可以包含要載入彈出窗口的CCF組件240的描述。12.onLog-組件240發(fā)送onLog事件以請(qǐng)求容器220的日志文件中的表項(xiàng)(如果有)。組件240可以使用此事件來(lái)記錄組件的重要的意外事件(例如,錯(cuò)誤發(fā)生、用戶(hù)事務(wù)等)。事件數(shù)據(jù)包^^要記錄的消息的文本和嚴(yán)重度(例如,關(guān)鍵、高、警告、信息、調(diào)試等)。某些記錄的消息可以被本地化以便為用戶(hù)提供額外的便利,如果用戶(hù)要閱讀這些消息以便例如調(diào)試CCF組件240中的4晉誤的話(huà)。組件至容器數(shù)據(jù)請(qǐng)求的示例1.persistdata-例如,當(dāng)容器220從保存的副本、組件放置、組件粘貼或響應(yīng)于onPopup事件而創(chuàng)建組件240時(shí),可以4吏用persistdata數(shù)據(jù)請(qǐng)求。組件240不隨此數(shù)據(jù)請(qǐng)求發(fā)送任何數(shù)據(jù)。此請(qǐng)求的返回值可以包括組件恢復(fù)其狀態(tài)所需的組件240的所有狀態(tài)信息。例如,組件MO可以在成功的握手函數(shù)調(diào)用之后,但是在發(fā)送onLoad之前做出此請(qǐng)求。容器220可以在組件240的整個(gè)生命周期中保存此狀態(tài)數(shù)據(jù)的副本。2.search-組件240可以發(fā)送search數(shù)據(jù)請(qǐng)求以使容器220代表組件240執(zhí)行搜索。隨此請(qǐng)求提供的數(shù)據(jù)描述了要執(zhí)行的搜索。容器至組件事件的示例以下是容器220可以在上述的onLoad與onUnload事件之間發(fā)送到組件240的事件的示例。1.onContextChange-onContextChange事件向組件240的實(shí)例提供由其容器220發(fā)送的上下文。如果隨事件一起傳遞的上下文數(shù)據(jù)不匹配組件240的當(dāng)前現(xiàn)有的上下文信息,則此事件可用作組件240上的相應(yīng)地更改其上下文的請(qǐng)求。所述事件可以與其他啟用CCF的組件一起產(chǎn)生,并且可以通過(guò)容器220被傳送到預(yù)定組件240而無(wú)需由容器220進(jìn)行轉(zhuǎn)換。在其他onContextChange事件調(diào)用中,容器220可能需要先轉(zhuǎn)換上下文,然后才能將其發(fā)送到組件240,或者它可以使用未知類(lèi)型的標(biāo)識(shí)符構(gòu)造上下文并仍然將該標(biāo)識(shí)符傳遞給組件240以便解釋該標(biāo)識(shí)符。2.onProperyChange-onProperyChange事件允許容器220更改組件240的一個(gè)或多個(gè)屬性值。可以隨此事件一赴良送與要更改的屬性對(duì)應(yīng)的數(shù)據(jù)。組件240可以被配置為忽略容器220更改組件240的只讀屬性或不存在屬性的嘗試。3.onCommand-容器220發(fā)送onCommand事件以通知組件240用戶(hù)已從菜單或工具欄(例如,Reuters工具欄、服務(wù)菜單或上下文菜單)進(jìn)行了選擇。隨此事件一起提供的數(shù)據(jù)描述了用戶(hù)選擇。容器至組件數(shù)據(jù)請(qǐng)求的示例1.context-容器220可以使用context數(shù)據(jù)請(qǐng)求來(lái)檢索組件240的當(dāng)前上下文。隨此數(shù)據(jù)請(qǐng)求沒(méi)有提供數(shù)據(jù)。容器220可以在組件啟動(dòng)期間使用此信息以便將組件240與容器220可能同時(shí)顯示的其他組件進(jìn)行同步。2.description—description數(shù)據(jù)請(qǐng)求將組件240的描述返回給容器220。其可以是在組件240發(fā)送的onLoad事件中傳遞的同一描述。因此,如果容器220未緩存此值,則容器220可以使用此數(shù)據(jù)請(qǐng)求獲取此值。3.persistdata—persistdata數(shù)據(jù)請(qǐng)求允許容器220檢索組件240的當(dāng)前狀態(tài)的副本。當(dāng)用戶(hù)希望保存組件240時(shí)可以使用persistdata數(shù)據(jù)請(qǐng)求。4.properties-容器220發(fā)送properties數(shù)據(jù)請(qǐng)求以檢索組件240的所有屬性的當(dāng)前值。5.helpurl-在實(shí)現(xiàn)容器級(jí)用戶(hù)幫助功能時(shí),helpurl數(shù)據(jù)請(qǐng)求返回幫助統(tǒng)一資源定位符(URL)的副本以便為容器220提供方便。6.inputowner—inputowner數(shù)據(jù)請(qǐng)求返回字符串"component"或"container",并由容器220用于控制用戶(hù)輸入。只要輸入焦點(diǎn)在組件240內(nèi)的用戶(hù)接口控件上,該值就被設(shè)置為"component",在所有其他時(shí)間將被設(shè)置為"container"。容器220可以使用此值來(lái)確定是自身處理用戶(hù)輸入(例如,鍵盤(pán)和菜單輸入),還是繼續(xù)傳遞該用戶(hù)輸入以便由組件240處理。應(yīng)指出的是,上述用于容器和組件兩者的CCF功能可以被實(shí)現(xiàn)為以腳本編制語(yǔ)言(例如,NetscapeJavaScript)編寫(xiě)的可以?xún)羝で度刖W(wǎng)頁(yè)并由瀏覽器230執(zhí)行的客戶(hù)端方框架。在此類(lèi)實(shí)施方式中,需要隨每個(gè)組件包括CCFJavaScript文件。但是,組件創(chuàng)建者也可以潛在地使用其他技術(shù)(例如,MicrosoftVisualBasic)來(lái)實(shí)現(xiàn)JavaScript事件轉(zhuǎn)發(fā)和應(yīng)用編程接口(API)。此外,組件創(chuàng)建者可以以JavaScript實(shí)現(xiàn)其自己的接口?,F(xiàn)在參考圖5和6,它們是示出可以使用用于組件-容器通信的上述啟用CCF的函數(shù)來(lái)支持的用戶(hù)功能的示例。在圖5中,在組件用戶(hù)接口顯示窗格510中顯示了啟用CCF的股票跟蹤器組件240。同時(shí),配置為顯示新聞標(biāo)題的另一組件241在同一容器220中運(yùn)行并顯示在臨近組件240的瀏覽器上。在此示例中,容器是Reuter的3000Xtra容器應(yīng)用的一個(gè)實(shí)例,而股票跟蹤器組件240是3000Xtra報(bào)價(jià)對(duì)象。如圖5所示,組件241的顯示窗格520是空的,因?yàn)槲催x擇要顯示新聞的目標(biāo)公司。換言之,組件241正在運(yùn)行,但是沒(méi)有當(dāng)前上下文。同樣如圖5所示,股票跟蹤器組件240的當(dāng)前上下文是"IBM.N",其對(duì)應(yīng)于IBM^^司。22在此示例中,股票跟蹤器組件240是通過(guò)使用上述onContextDragStart事件來(lái)支持上下文拖放的啟用CCF的組件。因此,用戶(hù)可以單擊顯示窗格510中的高亮的"IBM.N"行,將其拖出當(dāng)前組件240并;^UV相鄰組件241的顯示窗格520中,如圖5所示。當(dāng)用戶(hù)拖動(dòng)組件240內(nèi)的實(shí)體時(shí),可以將被拖動(dòng)的實(shí)體作為輸出發(fā)送到容器220,使得容器220可以存儲(chǔ)上下文并在放置實(shí)體時(shí)使用該上下文。當(dāng)用戶(hù)將實(shí)體放置在不同的啟用CCF的組件241上時(shí),新的上下文被從容器220傳遞到目標(biāo)組件241。作為響應(yīng),組件241將采取必要的(通常是組件特定的)操作來(lái)更改其主要上下文以匹配容器220提供的新的上下文。如果新的上下文使用另一啟用CCF的組件產(chǎn)生(如此示例中那樣),則事件通常將傳遞上下文而不做更改。但是,如果新的上下文來(lái)自其他來(lái)源,例如非啟用CCF的組件,則容器220會(huì)嘗試將輸入轉(zhuǎn)換成適合的上下文。容器220可以嘗試自己將所提供的輸入轉(zhuǎn)換成上下文數(shù)據(jù)(例如,使用搜索功能),或者可以只是將來(lái)自非啟用CCF的組件的具有未知類(lèi)型標(biāo)識(shí)符的上下文傳遞給目標(biāo)組件,以期目標(biāo)組件理解該上下文。在此示例中,由于源組件240和目標(biāo)組件241都啟用了CCF,所以上下文傳遞過(guò)程可以相當(dāng)簡(jiǎn)單。目標(biāo)組件241可以向容器220描述其可以接受的上下文數(shù)據(jù)的類(lèi)型,例如,使用隨onLoad事件一起傳遞的描述數(shù)據(jù)。如果是這樣,則容器220可以與組件24進(jìn)行協(xié)調(diào)以便獲取目標(biāo)組件2"的正確類(lèi)型的上下文。此外,如果需要,容器220可以將上下文轉(zhuǎn)換成目標(biāo)組件241可以接受的形式和數(shù)據(jù)類(lèi)型?,F(xiàn)在參考圖6,新的上下文已被傳遞到新聞標(biāo)題組件241,并且調(diào)用組件特定的功能以響應(yīng)該新的上下文,從而更新顯示窗格520以顯示與IBM相關(guān)的新的事件?,F(xiàn)在參考圖7和8,它們是示出可以通過(guò)^f吏用啟用CCF的組件和容器來(lái)支持的用戶(hù)功能的其他示例。在圖7中,啟用CCF的組件2邾被實(shí)現(xiàn)為顯示與用戶(hù)選擇的發(fā)布者關(guān)聯(lián)的評(píng)級(jí)數(shù)據(jù)。當(dāng)用戶(hù)從組件240內(nèi)的下拉用戶(hù)接口控件輸入或選擇發(fā)布者名稱(chēng)(例如,GeneralMotors)時(shí),組件240檢索關(guān)聯(lián)的評(píng)級(jí)數(shù)據(jù)并將其顯示在顯示窗格730中。組件240的此基本功能可以完全是組件240的內(nèi)部功能并且可以在沒(méi)有與容器220的交互的情況下發(fā)生。但是,除了組件240實(shí)現(xiàn)的基本功能和用戶(hù)接口控件之外,還將使用MicrosoftExcel圖標(biāo)720定制的標(biāo)準(zhǔn)工具欄710結(jié)合到組件240中。Excel圖標(biāo)720指示啟用CCF的組件240支持將來(lái)自組件顯示窗格730的數(shù)據(jù)導(dǎo)出到Excel電子表格。在此示例中,組件240可以向容器220指示要在工具欄720上顯示Excel圖標(biāo)720,方法是在隨onLoad事件發(fā)送到容器220的描述中傳遞此信息(甚至可能傳遞圖標(biāo)720本身)。當(dāng)用戶(hù)在顯示窗格730中的評(píng)級(jí)數(shù)據(jù)的情況下單擊圖標(biāo)720時(shí),新的MicrosoftExcel應(yīng)用窗口241被實(shí)例化并顯示給用戶(hù),如圖8所示。在此示例中,在檢測(cè)到用戶(hù)單擊之后,容器220可以向組件240發(fā)送onCommand事件,指示單擊了Excel圖標(biāo)720。在接收到此事件后,組件240可以向遠(yuǎn)程數(shù)據(jù)服務(wù)器發(fā)送請(qǐng)求以檢索與顯示窗格730中的評(píng)級(jí)數(shù)據(jù)對(duì)應(yīng)的Excel工作表,然后使用現(xiàn)有的IE功能在新的彈出窗口241中啟動(dòng)具有該工作表的Excel的實(shí)例。因此,在此示例中,容器2M只是向組件240提供選擇工具欄項(xiàng)或菜單選項(xiàng)的通知,然后允許組件處理該選擇而沒(méi)有任何進(jìn)一步的容器-組件通信。當(dāng)然,在其他組件-容器實(shí)施方式中,兩者之間的通信可以繼續(xù)支持用于數(shù)據(jù)檢索、呈現(xiàn)等的不同技術(shù)。例如,使用CCF通信,容器-組件可以協(xié)調(diào)容器內(nèi)新的組件的創(chuàng)建,并且使用從遠(yuǎn)程服務(wù)器檢索的數(shù)據(jù)來(lái)填充該新的組件,或者直接使用組件顯示窗格730中的數(shù)據(jù)來(lái)填充該新的組件。此外,容器220可以創(chuàng)建新的組件并建立組件間的直接組件至組件通信。例如,組件可以作為隨onPopup或onComponentDragStart事件發(fā)送的persistData的一部分向同一容器內(nèi)運(yùn)行的另一組件傳遞任意數(shù)據(jù),。在其他實(shí)施方式中,一個(gè)組件可以包含另一組件并且兩者可以相互同意擴(kuò)展CCF接口以提供它們自己的私有數(shù)據(jù)格式的事件。除了圖7-8所示的導(dǎo)出到Excel功能以外,啟用CCF的組件和容器能夠支持若干不同的用戶(hù)交互特性。以下包括了列出這些潛在特性中的某些特性的表:<table>tableseeoriginaldocumentpage25</column></row><table>現(xiàn)在參考圖9,其中示出了與CCF容器220內(nèi)運(yùn)行的啟用CCF的組件240的用戶(hù)交互(涉及維護(hù)和傳送屬性值)的另一變型。如上所述,組件240可以向其容器220提供屬性信息并且反之亦然,這允許容器220根據(jù)組件240所支持的用戶(hù)功能來(lái)定制標(biāo)題欄910、工具欄920以及菜單930。當(dāng)然,組件240所支持的屬性的屬性名稱(chēng)、值、類(lèi)型和訪(fǎng)問(wèn)許可取決于特定的組件240。但是,在特定實(shí)施例中,需要組件240維護(hù)一組預(yù)定的最小屬性。例如,在圖9中,組件240在Reuter的3000Xtra容器220中運(yùn)行,并需要向容器220暴露至少三個(gè)屬性。首先,"Title"屬性是容器220用于設(shè)置標(biāo)題欄910中的標(biāo)簽的只讀(即,只能由組件240自身設(shè)置)字符串值。在此示例中,組件240設(shè)置了標(biāo)題"IssueInformation",使得容器220能夠檢索該值并相應(yīng)地更新標(biāo)題欄910。第二個(gè)屬性"HelpURL"是由組件240設(shè)置并由容器220檢索的另一個(gè)只讀屬性。如果HelpURL屬性具有非空值,則容器220可以提供到所提供URL的鏈接(例如,作為工具欄920上的幫助按鈕或幫助菜單項(xiàng)),該鏈接將用戶(hù)重定向到組件240提供的幫助內(nèi)容。因此,可以在容器220的菜單和工具欄內(nèi)提供組件特定的用戶(hù)幫助。在此示例中的第三個(gè)所需屬性是布爾型"SelectorVisible"屬性。SelectorVisible屬性由容器220i殳置以響應(yīng)用戶(hù)選擇容器菜單930內(nèi)的ShowComponentHandles項(xiàng)940。當(dāng)此屬性被設(shè)置為T(mén)RUE時(shí),組件240將暴露其句柄,在組件240可供拖動(dòng)的情況下,將允許用戶(hù)選擇并拖動(dòng)容器220內(nèi)的組件240。因此,可以由容器220、組件240或兩者:&置特定屬性以便在容器220的框架內(nèi)提供組件特定的支持,這向用戶(hù)提供了更加無(wú)縫和一致的體驗(yàn)。在一種布置中,支持在組件軟件對(duì)象和軟件容器對(duì)象之間進(jìn)行電子通信的方法,類(lèi)似于以上參考圖3和4所述的技術(shù)。所述方法可以包括在容器對(duì)象220上啟動(dòng)注冊(cè)函數(shù),向所述函數(shù)傳遞與容器對(duì)象220內(nèi)的組件對(duì)象240支持的通用組件接口對(duì)應(yīng)的第一接口指針。所述方法還包括從容器220接收與容器220支持的通用容器接口對(duì)應(yīng)的第二接口指針,其中所述第一和所述第二接口支持用于組件240和容器220之間的一般通信的一組預(yù)定函數(shù)。所述方法還包括在組件240內(nèi)運(yùn)行的用戶(hù)接口控件上接收用戶(hù)輸入,確定所述容器接口支持的與所接收的用戶(hù)輸入關(guān)聯(lián)的函數(shù),以及使用所述第二接口指針在所述容器接口中調(diào)用所述函數(shù)。在特定實(shí)施例中,容器220和第一組件240可以在瀏覽器應(yīng)用230的實(shí)例中執(zhí)行。此外,所述方法可以包括經(jīng)由所述第二接口從容器220接收包括實(shí)體標(biāo)識(shí)符的組件上下文數(shù)據(jù)。所述實(shí)體標(biāo)識(shí)符可以與諸如公司、股票、債券、市場(chǎng)或國(guó)家的金融實(shí)體關(guān)聯(lián)。此外,所述方法可以包括響應(yīng)于從容器220接收所述組件上下文數(shù)據(jù),根據(jù)所述組件上下文數(shù)據(jù)從遠(yuǎn)程數(shù)據(jù)存儲(chǔ)區(qū)檢索數(shù)據(jù),使用所檢索的數(shù)據(jù)執(zhí)行組件特定的功能,以及根據(jù)所執(zhí)行的組件特定的功能更新組件240的用戶(hù)接口。26在另一種布置中,提供了在多個(gè)組件軟件對(duì)象240和241以及容器軟件對(duì)象220之間進(jìn)行電子通信的第二方法,類(lèi)似于以上參考圖5所述的技術(shù)。所述第二方法包括將第一接口指針從容器220傳送到第一組件240,所述第一接口指針定義了關(guān)于第一組件240的由容器240支持的多個(gè)函數(shù),以及在容器240處接收來(lái)自第二組件對(duì)象的第二接口指針,所述第二接口指針定義了關(guān)于容器240的由第二組件241支持的多個(gè)函數(shù)。所述方法還可以包括經(jīng)由所述第一接口接收第一用戶(hù)操作已在第一組件240內(nèi)發(fā)生的指示,所述指示包括組件上下文數(shù)據(jù),檢測(cè)與第二組件241關(guān)聯(lián)的第二用戶(hù)操作,以及經(jīng)由所述第二接口將所述組件上下文數(shù)據(jù)傳送到第二組件241。所述第二方法還可以包括啟動(dòng)所述組件上下文數(shù)據(jù)是否與第二組件241兼容,以及如果所述組件上下文數(shù)據(jù)與所述第二組件不兼容,則根據(jù)所存儲(chǔ)的描述第二組件241的信息來(lái)轉(zhuǎn)換所述組件上下文數(shù)據(jù)。在特定實(shí)施例中,所述第一用戶(hù)操作可以對(duì)應(yīng)于從第一組件240(如7>司、股票、債券、市場(chǎng)或國(guó)家)內(nèi)的用戶(hù)接口選擇實(shí)體。所述第一用戶(hù)操作還可以對(duì)應(yīng)于與第一組件240內(nèi)的用戶(hù)接口中的實(shí)體關(guān)聯(lián)的拖動(dòng)事件,或與所述實(shí)體關(guān)聯(lián)的放下事件,所述放下事件在第二組件241內(nèi)的用戶(hù)接口上發(fā)生。此外,所述第一用戶(hù)操作可以指定第一組件240的用戶(hù)接口內(nèi)的一個(gè)或多個(gè)數(shù)據(jù)字段,并且所述第二用戶(hù)操作可以對(duì)應(yīng)于將所指定的數(shù)據(jù)字段放入第二組件241的用戶(hù)接口的放下事件。所述第一或第二用戶(hù)^^作還可以對(duì)應(yīng)于將所選擇的數(shù)據(jù)字段導(dǎo)出到電子表格軟件應(yīng)用的用戶(hù)命令。在一個(gè)實(shí)施例中,容器220以及第一組件240可以在瀏覽器應(yīng)用230的實(shí)例中執(zhí)行。在此描述的方法、模型和架構(gòu)的各個(gè)方面可以以計(jì)算機(jī)可讀指令的形式存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)中。計(jì)算機(jī)可讀介質(zhì)的類(lèi)型可以包括磁帶驅(qū)動(dòng)器、光存儲(chǔ)裝置、閃存盤(pán)、隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)等。此外,在此描述的方法、模型和架構(gòu)的各方面也可以與其他行業(yè)和應(yīng)用一起4吏用。根據(jù)本發(fā)明的優(yōu)選和示例性實(shí)施例描述了本發(fā)明。通過(guò)回顧本公開(kāi),本領(lǐng)域技術(shù)人員將想到在所附權(quán)利要求的范圍和精神之內(nèi)的大量其他實(shí)施例、修改和變型。附錄以上詳細(xì)說(shuō)明了ContextData信息類(lèi)型并且其在先前披露的ContextData.XSD模式文件中定義。但是,使用在此披露的CCF接口和其他方面的容器-組件通信并不限于在容器與組件之間傳遞ContextData??梢詡魉驮S多其他信息類(lèi)型,現(xiàn)在說(shuō)明這些類(lèi)型的幾個(gè)示例并將其公開(kāi)為此附錄中的XSD文件。例如,以下的Properties.XSD文件定義了"Properties"信息類(lèi)型的才莫式,其對(duì)應(yīng)于組件240響應(yīng)于容器220的屬性請(qǐng)求而創(chuàng)建和發(fā)送到容器220的XML實(shí)例。Properties,XSD<〖"edkedby-、><xs:schemaxrnlns:>i;^l1http:〃www,vvO,org/2(KH/XMLScht;ma"w"lnsyhUp:〃vnvw.namespaceserv'er.com/cc廣targetNamesp-aces''hUp:〃www,rvamespaccserver,com/c.crelemenformDefault:"quaiifiWwsicm=,'2,0n><xs:documeniaticm〉Thisdocu艦rudefinessehen,afortheXMLinsu匿ethatiscreatedbylhecc)mpcment/swhenpropertiesarerequestedby〔hecontainer<yp〉</,、s:documerttaii加><x,s:complexType><xs:c.hoic.e><xs:elememProperty"minOcd',maxOcxu「?"unbounci<xr><xs:dociiniemaUon>Bhitlsavaluetoaname.Aisoprovidesaddition^typearidacc咖trolinfbrrm"ion,</xs:doc,urnerua[ion></.、's:annotalion><xs:eomp〗exTypernixed^"true">^xs:倉(cāng)ibutenam—'name"typero"xs:s.uing"use=;"r,ired''><x_s:documenation>Specifiestheproperlyname,</xs:docume-ntaticm>々xs加nota〖ion》</xs:aUribute><formula>formulaseeoriginaldocumentpage29</formula>以下的SearchTarget.XSD文件定義了用于將變?cè)峁┙o搜索引擎的"SearchTarget"信息類(lèi)型以及要應(yīng)用于搜索結(jié)果的變換。SearchTarget數(shù)據(jù)幫助容器220(其支持至少一個(gè)指定的搜索引擎)搜索組件220的輸入。<!—cdiwd—:'《X5:SelwmaxmnS..xSs;:"ht1fW',Vw%v-v*J,rp'2CI0l,>CMLSi;heiur>:[71』一'11^/''^1^'.。遂^|^|>^5《1^^'0)^1,'£<^'■Oes'clement,ranfic'ScarcHVg"'、<xs:>dccuniCTratioR>Co,cudcscftoia容>奮r鵬dctftjc傲々":teuntensaii加》々'XS:,術(shù)1i慣》given;<As:《lo"Jn,;ilior^《、s:cUjt娜鵬fIMsRitiWwr》rd:['rsg;na'toiU.akLiXa'.i:iKTt、Vx、丄u:Li化nUU":^'t-xs:anrK、鵬i!淵》《L、o:!niiScx〗'Ypi^〉、':、^:siinpI。二anji;i!v.-"'—r。im'XSI,TLr,rw,m;i:'n〖imihc!jOCT"mtc:、'《!■'二xvdo^nrr,!mi;id加浙c!、.idraa3iJix^ufH、-.'、s:dc'd'.nlai'io''::'、,'x,,:a.nn。Ui1":m:'《":c、'柳piesTy|je>《&iS:判ui;r'"n,inOc《ud'々'.":S叫固oe》;.議膨tee嫌fuf'rt,in^'〉々乂s:齒i一(K.l'y^e>以下的Description.XSD文件定義了由容器220創(chuàng)建以允許容器220訪(fǎng)問(wèn)組件240所支持的功能的XML實(shí)例的模式。(、;rn!vmkm'!,i:".c"iC0ding,"01卩-W')々"diicdti》'lrg^.Niin,csp"Gt""!'.tmp:''>\v/wvv.mime!ip£ii:dnr.':';jm/i>:cr"ukmLnF':i:ri'4)efaLl;—''qi^WwiT、im':。n—。W>《Wiinn^it3t:i、"irr:.,Thisctosifeers'扭flrw;sw-henvifor!hfXML,,ftce1h站;ser糊cdby"imfi)L'nL''smailow:nr,"im,"Wq"《ry['npiih「l'ii'4'ssuppledb>t'icccsmporie、K''|i》'-7xs:;kn;umwti',r)^rlHrrn;U.ui;mi'.:fn".''CJ':inkiy.U>^l;i-、;id''*>;^el^;irrLU.ut;;L:K!n:"''>ie;sr[:hT;ir[^^.w:r':-xs.cwpk",、'(X'..—--<,"S,n-ar)—》'x3—br,b;u加》re、lrii:."i;icibir":-'':".、l"i<,'〉"-Tw、to一》um:aa,"fo,ACO!Icct柳r";um、卩0f[Wcr—1i"pcW.'、s-dn:.i:5r丄'n::!賓i':in:'、!一Scf"OCM-SR、1^x5:dojrnenuitii-in:''rhi:sderie"de""bcsl卜'fservicemenukGORlpc:'Tien!;':/;w,dc《'iini[x"ii'^fi,'<formula>formulaseeoriginaldocumentpage32</formula>最后,UpdateCommandBars,XSD文件定義了由組件240創(chuàng)建的XML實(shí)例的模式,其將在組件240需要更新或修改當(dāng)前在容器220中顯示的工具欄、服務(wù)菜單和/或上下文菜單時(shí)被發(fā)送到容器220。在特定實(shí)施例中,組件可能只有修改容器220內(nèi)其自己的組件特定的菜單的權(quán)限。.<formula>formulaseeoriginaldocumentpage32</formula>權(quán)利要求1.一種在組件軟件對(duì)象和軟件容器對(duì)象之間進(jìn)行電子通信的計(jì)算機(jī)實(shí)現(xiàn)的方法,包括在容器對(duì)象上啟動(dòng)注冊(cè)函數(shù),向所述函數(shù)傳遞與所述容器對(duì)象內(nèi)的組件對(duì)象支持的通用組件接口對(duì)應(yīng)的第一接口指針;從所述容器對(duì)象接收與所述容器對(duì)象支持的通用容器接口對(duì)應(yīng)的第二接口指針,其中所述第一和所述第二接口支持用于組件和容器之間的一般通信的一組預(yù)定函數(shù);在所述組件對(duì)象內(nèi)運(yùn)行的用戶(hù)接口控件上接收用戶(hù)輸入;確定所述容器接口支持的與所接收的用戶(hù)輸入關(guān)聯(lián)的函數(shù);以及使用所述第二接口指針在所述容器接口中調(diào)用所述函數(shù)。2.根據(jù)權(quán)利要求l的方法,其中所述容器對(duì)象和所述第一組件在瀏覽器應(yīng)用的實(shí)例中執(zhí)行。3.根據(jù)權(quán)利要求l的方法,還包括經(jīng)由所述第二接口從所述容器對(duì)象接收組件上下文數(shù)據(jù),所述組件上下文數(shù)據(jù)包括實(shí)體標(biāo)識(shí)符。4.根據(jù)權(quán)利要求3的方法,其中所述實(shí)體標(biāo)識(shí)符與公司名稱(chēng)、股票名稱(chēng)、債券名稱(chēng)、市場(chǎng)名稱(chēng)以及國(guó)家名稱(chēng)中的一個(gè)關(guān)聯(lián)。5.根據(jù)權(quán)利要求3的方法,還包括響應(yīng)于從所述容器對(duì)象接收所述組件上下文數(shù)據(jù),根據(jù)所述組件上下文數(shù)據(jù)從遠(yuǎn)程數(shù)據(jù)存儲(chǔ)區(qū)檢索數(shù)據(jù);使用所檢索的數(shù)據(jù)執(zhí)行組件特定的功能;以及根據(jù)所執(zhí)行的組件特定的功能更新所述組件對(duì)象的用戶(hù)接口。6.—種在組件軟件對(duì)象和容器軟件對(duì)象之間進(jìn)行電子通信的計(jì)算機(jī)實(shí)現(xiàn)的方法,包括將第一接口指針從容器傳送到第一組件對(duì)象,所述第一接口指針定義了關(guān)于所述第一組件的由所述容器支持的多個(gè)函數(shù);在所述容器處接收來(lái)自第二組件對(duì)象的第二接口指針,所述第二接口指針定義了關(guān)于所述容器的由所述第二組件支持的多個(gè)函數(shù);經(jīng)由所述第一接口接收第一用戶(hù)操作已在所述第一組件內(nèi)發(fā)生的指示,所述指示包括組件上下文數(shù)據(jù);檢測(cè)與所迷第二組件關(guān)聯(lián)的第二用戶(hù)操作;以及經(jīng)由所述第二接口將所述組件上下文數(shù)據(jù)傳送到所述第二組件。7.根據(jù)權(quán)利要求6的方法,還包括確定所述組件上下文數(shù)據(jù)是否與所述第二組件兼容;以及如果所述組件上下文數(shù)據(jù)與所述第二組件不兼容,則根據(jù)所存儲(chǔ)的描述所述第二組件的信息來(lái)轉(zhuǎn)換所述組件上下文數(shù)據(jù)。8.根據(jù)權(quán)利要求6的方法,其中所述第一用戶(hù)操作包括從所述第一組件內(nèi)的用戶(hù)接口選擇實(shí)體。9.根據(jù)權(quán)利要求8的方法,其中所選擇的實(shí)體包括公司名稱(chēng)、股票名稱(chēng)、債券名稱(chēng)、市場(chǎng)名稱(chēng)以及國(guó)家名稱(chēng)中的一個(gè)。10.根據(jù)權(quán)利要求6的方法,其中所述第一用戶(hù)操作包括與所述第一組件內(nèi)的用戶(hù)接口中的實(shí)體關(guān)聯(lián)的拖動(dòng)事件。11.根據(jù)權(quán)利要求10的方法,其中所述第二用戶(hù)操作包括與所述實(shí)體關(guān)聯(lián)的放下事件,所述力文下事件在所述第二組件內(nèi)的用戶(hù)接口上發(fā)生。12.根據(jù)權(quán)利要求6的方法,其中所述第一用戶(hù)操作指定所述第一組件的用戶(hù)接口內(nèi)的一個(gè)或多個(gè)數(shù)據(jù)字段,并且其中所述第二用戶(hù)操作包括將所指定的數(shù)據(jù)字賴(lài)^支入所述第二組件的用戶(hù)接口的放下事件。13.根據(jù)權(quán)利要求6的方法,其中所述第一和所述第二用戶(hù)操作中的14.根據(jù)權(quán)利要求6的方法,其中所述容器、所述第一組件以及所述第二組件在瀏覽器應(yīng)用的實(shí)例中執(zhí)行。15.—個(gè)或多個(gè)存儲(chǔ)計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì),當(dāng)所述指令在計(jì)算機(jī)系統(tǒng)上執(zhí)行時(shí),將執(zhí)行包括以下步驟的方法將第一接口指針傳送到第一組件對(duì)象,所述第一接口指針定義了關(guān)于所述第一組件所支持的多個(gè)函數(shù);接收來(lái)自笫二組件對(duì)象的第二接口指針,所述笫二接口指針定義了所述第二組件所支持的多個(gè)函數(shù);經(jīng)由所述第一接口接收第一用戶(hù)操作已在所述第一組件內(nèi)發(fā)生的指示,所述指示包括組件上下文數(shù)據(jù);檢測(cè)與所述第二組件關(guān)聯(lián)的第二用戶(hù)操作;以及經(jīng)由所述第二接口將所述組件上下文數(shù)據(jù)傳送到所述第二組件。16.根據(jù)權(quán)利要求15的計(jì)算機(jī)可讀介質(zhì),其中所述方法還包括確定所述組件上下文數(shù)據(jù)是否與所述第二組件兼容;以及如果所述組件上下文數(shù)據(jù)與所述第二組件不兼容,則根據(jù)所存儲(chǔ)的描述所述第二組件的信息來(lái)轉(zhuǎn)換所述組件上下文數(shù)據(jù)。17.根據(jù)權(quán)利要求15的計(jì)算機(jī)可讀介質(zhì),其中所述第一用戶(hù)操作包括從所述第一組件內(nèi)的用戶(hù)接口選擇實(shí)體。18.根據(jù)權(quán)利要求17的計(jì)算機(jī)可讀介質(zhì),其中所選擇的實(shí)體包括公司、股票、債券、市場(chǎng)以及國(guó)家中的一個(gè)。19.根據(jù)權(quán)利要求15的計(jì)算機(jī)可讀介質(zhì),其中所述第一用戶(hù)操作包括與所述第一組件內(nèi)的用戶(hù)接口中的實(shí)體關(guān)聯(lián)的拖動(dòng)事件。20.根據(jù)權(quán)利要求19的計(jì)算機(jī)可讀介質(zhì),其中所述第二用戶(hù)操作包括與所述實(shí)體關(guān)聯(lián)的放下事件,所述》文下事件在所述第二組件內(nèi)的用戶(hù)接口上發(fā)生。21.根據(jù)權(quán)利要求15的計(jì)算機(jī)可讀介質(zhì),其中所述第一用戶(hù)操作指定所述第一組件的用戶(hù)接口內(nèi)的一個(gè)或多個(gè)數(shù)據(jù)字段,并且其中所述第二用戶(hù)操作包括將所指定的數(shù)據(jù)字段放入所述第二組件的用戶(hù)接口的放下事件。22.根據(jù)權(quán)利要求15的計(jì)算機(jī)可讀介質(zhì),其中所述第一和所述第二用戶(hù)操作中的一個(gè)操作包括將所選擇的數(shù)據(jù)字段導(dǎo)出到電子表格軟件應(yīng)用的用戶(hù)命令。23.根據(jù)權(quán)利要求15的計(jì)算機(jī)可讀介質(zhì),其中所述方法在瀏覽器應(yīng)用的實(shí)例中執(zhí)行,并且其中所述第一組件和所述第二組件在同一因特網(wǎng)瀏覽器應(yīng)用實(shí)例中執(zhí)行。全文摘要公共組件框架(CCF)提供了容器接口和組件接口以便在多層軟件應(yīng)用中進(jìn)行通信??梢韵?從描述正在其中執(zhí)行的組件的當(dāng)前狀態(tài)的容器傳送組件上下文數(shù)據(jù)。上下文數(shù)據(jù)可以對(duì)應(yīng)于由與所述組件交互的用戶(hù)標(biāo)識(shí)的特定實(shí)體(例如,金融實(shí)體,如公司或股票)。所述容器可以在不同的組件之間傳送所述上下文數(shù)據(jù)以同步和協(xié)調(diào)組件行為,從而提供更健全和一致的用戶(hù)體驗(yàn)。除了組件上下文數(shù)據(jù)以外,還可以在容器和組件之間傳送諸如屬性、菜單選項(xiàng)以及數(shù)據(jù)字段之類(lèi)的其他信息,從而甚至支持將基于Web的組件更完整地集成到容器中。文檔編號(hào)G06F9/46GK101529382SQ200780038751公開(kāi)日2009年9月9日申請(qǐng)日期2007年9月21日優(yōu)先權(quán)日2006年9月21日發(fā)明者A·赤·策·侯,K·P·洛伊格,M·蒂爾德斯勒,N·科爾巴,R·D·霍姆斯申請(qǐng)人:路透美國(guó)公司