欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

用于提供遠(yuǎn)程軟件應(yīng)用的支持的方法和系統(tǒng)的制作方法

文檔序號(hào):7971312閱讀:189來(lái)源:國(guó)知局
專利名稱:用于提供遠(yuǎn)程軟件應(yīng)用的支持的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明總體涉及對(duì)在遠(yuǎn)離服務(wù)支持設(shè)備的機(jī)器上運(yùn)行的客戶端應(yīng)用提供技術(shù)支持,尤其涉及自動(dòng)或半自動(dòng)的支持技術(shù)。
背景技術(shù)
由于商業(yè)軟件應(yīng)用的復(fù)雜性及其所有權(quán)成本的增加,企業(yè)越來(lái)越意識(shí)到對(duì)運(yùn)行在“客戶端側(cè)”的應(yīng)用進(jìn)行遠(yuǎn)程支持的需要。用于支持客戶端側(cè)的應(yīng)用的當(dāng)前方法是勞動(dòng)密集的,這導(dǎo)致了增加的問(wèn)題診斷時(shí)間,因而導(dǎo)致了增加的所有權(quán)成本。

發(fā)明內(nèi)容
本發(fā)明的目的在于基本上克服、或至少改善現(xiàn)有布置的一個(gè)或多個(gè)缺點(diǎn)。
本發(fā)明公開一種稱為GUI日志文本記錄布置的布置,其通過(guò)使支持服務(wù)提供者(SSP)與客戶之間的問(wèn)題診斷過(guò)程變得容易,來(lái)解決上述問(wèn)題。雖然在說(shuō)明書中使用了術(shù)語(yǔ)“問(wèn)題”和“問(wèn)題解決方案”,但應(yīng)該指出的是,即使不存在“問(wèn)題”和“故障”,用戶同樣可以僅調(diào)用所公開的GUI日志文本記錄布置(也稱為GLTR布置),來(lái)獲得幫助。本說(shuō)明書應(yīng)結(jié)合這一點(diǎn)來(lái)理解。該GLTR方法典型地大量減少應(yīng)用問(wèn)題診斷時(shí)間。關(guān)于應(yīng)用,以GUI日志文本記錄的形式記錄圖形用戶界面(GUI)屏幕及其相關(guān)的用戶操作。該GLTR系統(tǒng)根據(jù)所記錄的GUI日志文本記錄,準(zhǔn)確或高度一致地再現(xiàn)應(yīng)用GUI屏幕和用戶操作。在某些情況下,所模擬的GUI屏幕可能不完全與歷史的客戶端GUI屏幕相同。然而,在大多數(shù)情況下,所公開的系統(tǒng)能夠使用組件(即java.awt.component的孩子)再現(xiàn)至少應(yīng)用GUI的一部分。對(duì)于SSP,提供用于瀏覽歷史的應(yīng)用GUI屏幕及其相關(guān)的用戶操作的手段。該GLTR系統(tǒng)還提供用于對(duì)客戶端應(yīng)用遠(yuǎn)程地進(jìn)行操作以進(jìn)一步澄清問(wèn)題和/或采取克服該問(wèn)題的補(bǔ)救操作的手段。
所公開的GLTR布置以壓縮的GUI日志文本記錄的形式執(zhí)行GUI屏幕和事件的日志記錄,因此,網(wǎng)絡(luò)和日志記錄開銷是最小的。例如,以GUI日志文本記錄而不是圖像的形式,對(duì)GUI屏幕進(jìn)行日志記錄。在組件(即圖標(biāo)和按鈕)中使用的圖像(即gif、jpg)被記錄為圖像,而使用GUI日志文本記錄來(lái)記錄顯示有前述組件的屏幕。此外,一旦所討論的客戶端應(yīng)用初始化了日志記錄服務(wù)(見圖5中的405),所公開的GLTR布置便不需要來(lái)自所討論的客戶端應(yīng)用的任何支持。
根據(jù)本發(fā)明的第一方面,提供一種提供對(duì)于在第一機(jī)器上運(yùn)行的客戶端軟件應(yīng)用的支持的方法,所述方法包括以下步驟在第一機(jī)器處將圖形用戶界面顯示和相關(guān)的用戶操作記錄為基于文本的日志記錄;在第二機(jī)器處根據(jù)涉及所述客戶端軟件應(yīng)用在所述第一機(jī)器上的運(yùn)行的支持請(qǐng)求而調(diào)用支持服務(wù);將所記錄的日志文本記錄發(fā)送至第二機(jī)器;以及在第二機(jī)器處根據(jù)所記錄的日志文本記錄模擬圖形用戶界面顯示和相關(guān)的用戶操作;其中所述支持是根據(jù)所述模擬而提供的。
根據(jù)本發(fā)明的另一方面,提供一種用于提供對(duì)于在第一機(jī)器上運(yùn)行的客戶端軟件應(yīng)用的支持的裝置,所述裝置包括用于存儲(chǔ)程序的存儲(chǔ)器;以及用于執(zhí)行該程序的處理器,所述程序包括用于在第一機(jī)器處將圖形用戶界面顯示和相關(guān)的用戶操作記錄為基于文本的日志記錄的代碼;用于在第二機(jī)器處根據(jù)涉及所述客戶端軟件應(yīng)用在所述第一機(jī)器上的運(yùn)行的支持請(qǐng)求而調(diào)用支持服務(wù)的代碼;
用于將所記錄的日志文本記錄發(fā)送至第二機(jī)器的代碼;以及用于在第二機(jī)器處根據(jù)所記錄的日志文本記錄模擬圖形用戶界面顯示和相關(guān)的用戶操作的代碼;其中所述支持是根據(jù)所述模擬而提供的。
根據(jù)本發(fā)明的另一方面,提供一種用于提供對(duì)于在第一機(jī)器上運(yùn)行的客戶端軟件應(yīng)用的支持的裝置,所述裝置包括用于在第一機(jī)器處將圖形用戶界面顯示和相關(guān)的用戶操作記錄為基于文本的日志記錄的裝置;用于在第二機(jī)器處根據(jù)涉及所述客戶端軟件應(yīng)用在所述第一機(jī)器上的運(yùn)行的支持請(qǐng)求而調(diào)用支持服務(wù)的裝置;用于將所記錄的日志文本記錄發(fā)送至第二機(jī)器的裝置;以及用于在第二機(jī)器處根據(jù)所記錄的日志文本記錄模擬圖形用戶界面顯示和相關(guān)的用戶操作的裝置;其中所述支持是根據(jù)所述模擬而提供的。
根據(jù)本發(fā)明的另一方面,提供一種包括計(jì)算機(jī)可讀介質(zhì)的計(jì)算機(jī)程序產(chǎn)品,該計(jì)算機(jī)可讀介質(zhì)具有記錄在其上的計(jì)算機(jī)程序,該計(jì)算機(jī)程序用于引導(dǎo)處理器執(zhí)行一種提供對(duì)于在第一機(jī)器上運(yùn)行的客戶端軟件應(yīng)用的支持的方法,所述程序包括用于在第一機(jī)器處將圖形用戶界面顯示和相關(guān)的用戶操作記錄為基于文本的日志記錄的代碼;用于在第二機(jī)器處根據(jù)涉及所述客戶端軟件應(yīng)用在所述第一機(jī)器上的運(yùn)行的支持請(qǐng)求而調(diào)用支持服務(wù)的代碼;用于將所記錄的日志文本記錄發(fā)送至第二機(jī)器的代碼;以及用于在第二機(jī)器處根據(jù)所記錄的日志文本記錄模擬圖形用戶界面顯示和相關(guān)的用戶操作的代碼;其中所述支持是根據(jù)所述模擬而提供的。
本發(fā)明的其他方面也被公開。


現(xiàn)在參照附圖對(duì)現(xiàn)有技術(shù)的一些方面和本發(fā)明的一個(gè)或多個(gè)實(shí)施例進(jìn)行描述,其中圖1示出了在其中能夠?qū)崿F(xiàn)所公開的GLTR方法的計(jì)算機(jī)系統(tǒng)的功能框圖;圖2示出了能夠?qū)崿F(xiàn)所公開的GLTR方法的通用計(jì)算機(jī)布置;圖3示出了能夠在圖1的系統(tǒng)上實(shí)現(xiàn)的現(xiàn)有技術(shù)遠(yuǎn)程支持過(guò)程;圖4示出了一布置,根據(jù)該布置能夠在圖1的系統(tǒng)上實(shí)現(xiàn)所公開的GLTR方法;圖5示出了用于實(shí)現(xiàn)所公開的GLTR方法的系統(tǒng)400的功能框圖;圖6A和6B示出了表示客戶端應(yīng)用的正常操作的過(guò)程;圖7示出了圖1的服務(wù)支持應(yīng)用進(jìn)行操作的處理流/數(shù)據(jù)流圖;圖8示出了一過(guò)程,根據(jù)該過(guò)程在圖6A和6B中初始化GUI日志記錄服務(wù);圖9示出了GUI日志記錄服務(wù)過(guò)程的一個(gè)線程;圖10示出了GUI日志記錄服務(wù)過(guò)程的另一個(gè)線程;圖11更詳細(xì)地示出了圖9中的步驟802;圖12更詳細(xì)地示出了圖9中的步驟803;圖13A和13B更詳細(xì)地示出了圖7中的步驟610;圖14更詳細(xì)地示出了圖7中的步驟605;以及圖15更詳細(xì)地示出了圖7中的步驟615。
具體實(shí)施例方式
參照任意一個(gè)或多個(gè)附圖中具有相同的參考標(biāo)號(hào)的步驟和/或特征,除非出現(xiàn)相反的意思,否則這些步驟和/或特征對(duì)本說(shuō)明書來(lái)說(shuō)具有相同的功能或操作。
以下的描述的某些部分明確或隱含地呈現(xiàn)對(duì)于計(jì)算機(jī)存儲(chǔ)器內(nèi)數(shù)據(jù)的操作的算法和符號(hào)表示。這些算法描述和表示,是數(shù)據(jù)處理領(lǐng)域中的技術(shù)人員用于將其工作的內(nèi)容最有效地傳達(dá)給本領(lǐng)域的其他技術(shù)人員的手段。這里并且一般認(rèn)為算法是獲得所期望的結(jié)果的自相一致的步驟序列。這些步驟,是需要物理量的物理操作的。通常,但不是必須的,這些量采用能夠被存儲(chǔ)、傳輸、組合、比較和被進(jìn)行其他操作的電或磁信號(hào)的形式。有時(shí),主要是基于通用的原因,將這些信號(hào)稱作位、值、元素、符號(hào)、特性、術(shù)語(yǔ)、數(shù)量等是方便的。
然而,應(yīng)該指出,上述以及類似的術(shù)語(yǔ)是與適當(dāng)?shù)奈锢砹肯嚓P(guān)的,且其僅是應(yīng)用于這些物理量的方便標(biāo)簽。除非特別說(shuō)明及從下面明顯得出,否則可以理解的是,在整個(gè)本說(shuō)明書中使用諸如“掃描”、“計(jì)算”、“確定”、“替代”、“生成”、“初始化”、“輸出”等術(shù)語(yǔ)而進(jìn)行的討論是指計(jì)算機(jī)系統(tǒng)或類似電子設(shè)備的動(dòng)作和處理,這些動(dòng)作和處理對(duì)在計(jì)算機(jī)系統(tǒng)的寄存器和存儲(chǔ)器內(nèi)以物理(電子)量表示的數(shù)據(jù)進(jìn)行操作,并將其轉(zhuǎn)換為在該計(jì)算機(jī)存儲(chǔ)器或寄存器或其他這樣的信息存儲(chǔ)設(shè)備、傳輸或顯示設(shè)備內(nèi)以物理量類似地表示的其他數(shù)據(jù)。
本說(shuō)明書還公開了用于執(zhí)行GLTR方法的操作的裝置。該裝置可以針對(duì)所需目的專門進(jìn)行構(gòu)建,或可以包括能被存儲(chǔ)在計(jì)算機(jī)中的計(jì)算機(jī)程序選擇性地激活或重新配置的通用計(jì)算機(jī)或其他裝置。這里提出的算法和表示并不是固有地與任何特定的計(jì)算機(jī)或其他裝置相關(guān)。各通用機(jī)器都可與根據(jù)本文的教導(dǎo)的程序一起使用。可選地,對(duì)執(zhí)行所需的GLTR方法步驟的多個(gè)專用裝置的構(gòu)建可是適宜的。下面對(duì)傳統(tǒng)通用計(jì)算機(jī)的結(jié)構(gòu)進(jìn)行描述。
此外,本發(fā)明還隱含地公開了一種計(jì)算機(jī)程序,因?yàn)閷?duì)于本領(lǐng)域的技術(shù)人員來(lái)說(shuō)顯而易見的,這里所描述的優(yōu)選方法的各步驟將由計(jì)算機(jī)代碼來(lái)實(shí)現(xiàn)。該計(jì)算機(jī)程序并不旨在限制于任何特定的編程語(yǔ)言及其實(shí)現(xiàn),即使本說(shuō)明書中是使用Java語(yǔ)言來(lái)呈現(xiàn)的??梢岳斫?,可以使用多種編程語(yǔ)言及其編碼來(lái)實(shí)現(xiàn)這里所包括的公開的教導(dǎo)。此外,該計(jì)算機(jī)程序并不旨在限制于任何特定的控制流。在不脫離本發(fā)明的精神或范圍的情況下,存在該計(jì)算機(jī)程序的能夠使用不同的控制流的多種其他變體。此外,該計(jì)算機(jī)程序的一個(gè)或多個(gè)步驟可以并行而不是順序地執(zhí)行。
這樣的計(jì)算機(jī)程序可以存儲(chǔ)在任何計(jì)算機(jī)可讀介質(zhì)上。該計(jì)算機(jī)可讀介質(zhì)可以包括諸如磁盤或光盤的存儲(chǔ)設(shè)備、存儲(chǔ)芯片或適用于與通用計(jì)算機(jī)接口的其他存儲(chǔ)設(shè)備。該計(jì)算機(jī)可讀介質(zhì)還可以包括諸如在因特網(wǎng)系統(tǒng)中示例化的之類的硬接線的介質(zhì),或諸如在GSM移動(dòng)電話系統(tǒng)中示例化的之類的無(wú)線介質(zhì)。當(dāng)在這樣的通用計(jì)算機(jī)上加載并執(zhí)行時(shí),該計(jì)算機(jī)程序在效果上形成實(shí)現(xiàn)優(yōu)選的GLTR方法的步驟的裝置。
圖1示出了在其中能夠?qū)崿F(xiàn)所公開的GLTR方法的計(jì)算機(jī)系統(tǒng)100的功能框圖??蛻舳似脚_(tái)機(jī)108具有存儲(chǔ)客戶端應(yīng)用110和相關(guān)數(shù)據(jù)111的存儲(chǔ)器109。如113所示,客戶機(jī)108連接至網(wǎng)絡(luò)106??蛻魴C(jī)108與前述組件一起被稱為系統(tǒng)100的“客戶端側(cè)”,如參考標(biāo)號(hào)107所示。
SSP平臺(tái)101具有存儲(chǔ)支持應(yīng)用103和相關(guān)數(shù)據(jù)104的存儲(chǔ)器102。如112所示,SSP機(jī)101連接至網(wǎng)絡(luò)106。SSP機(jī)101與相關(guān)組件一起被稱為系統(tǒng)100的“支持側(cè)”,如箭頭105所示。
圖2示出了能夠?qū)崿F(xiàn)所公開的GLTR方法的通用計(jì)算機(jī)系統(tǒng)。該GLTR方法特別適合于在諸如圖2中所示的通用計(jì)算機(jī)系統(tǒng)1100上實(shí)現(xiàn),其中圖4和6-15中的過(guò)程可以實(shí)現(xiàn)為軟件,諸如在計(jì)算機(jī)系統(tǒng)1100中執(zhí)行的應(yīng)用程序。具體地,在由該計(jì)算機(jī)執(zhí)行的軟件中,利用指令來(lái)實(shí)現(xiàn)GLTR方法的步驟。這些指令可以形成為一個(gè)或多個(gè)代碼模塊,每一個(gè)模塊用于執(zhí)行一個(gè)或多個(gè)特定任務(wù)。
該軟件也可以劃分為兩個(gè)單獨(dú)的部分,其中第一部分執(zhí)行GLTR方法,而第二部分管理第一部分與用戶之間的用戶接口。該軟件可以存儲(chǔ)在例如包括下述的存儲(chǔ)設(shè)備在內(nèi)的計(jì)算機(jī)可讀介質(zhì)中。該軟件從該計(jì)算機(jī)可讀介質(zhì)被加載到計(jì)算機(jī)中,然后由該計(jì)算機(jī)執(zhí)行。具有這樣的記錄在其上的軟件或計(jì)算機(jī)程序的計(jì)算機(jī)可讀介質(zhì)是一種計(jì)算機(jī)程序產(chǎn)品。該計(jì)算機(jī)程序產(chǎn)品在計(jì)算機(jī)中的使用,優(yōu)選地實(shí)現(xiàn)用于GLTR方法的有利裝置。
計(jì)算機(jī)系統(tǒng)1100由SSP計(jì)算機(jī)模塊101、諸如鍵盤1102和鼠標(biāo)1103的輸入設(shè)備、包括打印機(jī)1115的輸出設(shè)備、顯示設(shè)備1114和揚(yáng)聲器1117構(gòu)成。調(diào)制解調(diào)器(Modem)收發(fā)設(shè)備1116由計(jì)算機(jī)模塊101用于與通信網(wǎng)絡(luò)1120進(jìn)行相互通信,通信網(wǎng)絡(luò)1120例如可經(jīng)由電話線1121或其他功能介質(zhì)連接至客戶機(jī)108。調(diào)制解調(diào)器1116能夠用于獲得對(duì)因特網(wǎng)以及諸如局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)的其他網(wǎng)絡(luò)系統(tǒng)的訪問(wèn),并且在某些實(shí)現(xiàn)中其可以被合并到計(jì)算機(jī)模塊101內(nèi)。
計(jì)算機(jī)模塊101通常包括至少一個(gè)處理器單元1105,以及例如由半導(dǎo)體隨機(jī)存儲(chǔ)器(RAM)和只讀存儲(chǔ)器(ROM)形成的存儲(chǔ)器單元102。模塊101還包括多個(gè)輸入/輸出(I/O)接口,包括連接至視頻顯示器1114和揚(yáng)聲器1117的音頻-視頻接口1107、用于鍵盤1102和鼠標(biāo)1103以及可選的游戲桿(未示出)的I/O接口1113以及用于調(diào)制解調(diào)器1116和打印機(jī)1115的接口1108。
在一些實(shí)現(xiàn)中,調(diào)制解調(diào)器1116可以合并到計(jì)算機(jī)模塊101中,例如合并到接口1108內(nèi)。提供了存儲(chǔ)設(shè)備1109,其通常包括硬盤驅(qū)動(dòng)器1110和軟盤驅(qū)動(dòng)器1111。也可以使用磁帶驅(qū)動(dòng)器(未示出)。通常,提供CD-ROM驅(qū)動(dòng)器1112作為非易失性數(shù)據(jù)源。計(jì)算機(jī)模塊101的組件1105至1113,通常,經(jīng)由互連總線1104并且以導(dǎo)致對(duì)于本領(lǐng)域技術(shù)人員而言所公知的計(jì)算機(jī)系統(tǒng)1100的傳統(tǒng)模式的操作的方式進(jìn)行通信。能夠在其上實(shí)現(xiàn)所描述的布置的計(jì)算機(jī)的示例包括IBM-PC和兼容機(jī)、Sun Sparcstation或由此演變出的類似的計(jì)算機(jī)系統(tǒng)。
通常,應(yīng)用程序駐留在硬盤驅(qū)動(dòng)器1110上,并且在其執(zhí)行過(guò)程中由處理器1105讀取和控制。從網(wǎng)絡(luò)1120獲取的程序和任何數(shù)據(jù)的中間存儲(chǔ)可使用半導(dǎo)體存儲(chǔ)器1106、可能地協(xié)同硬盤驅(qū)動(dòng)器1110來(lái)實(shí)現(xiàn)。在一些實(shí)例中,可以將應(yīng)用程序編碼在CD-ROM或軟盤上提供給用戶,且經(jīng)由相應(yīng)的設(shè)備1112或1111來(lái)讀取其,可選地,用戶可以經(jīng)由調(diào)制解調(diào)設(shè)備1116從網(wǎng)絡(luò)1120讀取應(yīng)用程序。
更進(jìn)一步地,軟件也可以從其他計(jì)算機(jī)可讀介質(zhì)被加載至計(jì)算機(jī)系統(tǒng)1100。這里所使用的術(shù)語(yǔ)“計(jì)算機(jī)可讀介質(zhì)”,指參與向計(jì)算機(jī)系統(tǒng)1100提供指令和/或數(shù)據(jù)以便執(zhí)行和/或處理的任何存儲(chǔ)或傳輸介質(zhì)。存儲(chǔ)介質(zhì)的示例包括軟盤、磁帶、CD-ROM、硬盤驅(qū)動(dòng)器、ROM或集成電路、磁-光盤或諸如PCMCIA卡之類的計(jì)算機(jī)可讀卡等,而無(wú)論這樣的設(shè)備位于計(jì)算機(jī)模塊101的內(nèi)部還是外部。傳輸介質(zhì)的示例包括無(wú)線電或紅外傳輸信道以及至另一臺(tái)計(jì)算機(jī)或聯(lián)網(wǎng)設(shè)備及包括電子郵件傳輸和記錄在網(wǎng)站等上的信息的因特網(wǎng)或內(nèi)聯(lián)網(wǎng)的網(wǎng)絡(luò)連接。
圖3示出了能夠在圖1的系統(tǒng)100上實(shí)現(xiàn)的現(xiàn)有技術(shù)遠(yuǎn)程支持過(guò)程200。提供遠(yuǎn)程支持的過(guò)程包括三個(gè)主要步驟。首先,客戶或客戶端系統(tǒng)管理員盡其所能向SSP解釋問(wèn)題。然后SSP使用客戶端系統(tǒng)管理員所提供的問(wèn)題描述作為診斷該問(wèn)題的基礎(chǔ)。然后,SSP指導(dǎo)客戶端系統(tǒng)管理員修復(fù)該問(wèn)題。轉(zhuǎn)至圖3,在步驟214,在過(guò)程200的客戶端側(cè)201,客戶在客戶機(jī)108上運(yùn)行應(yīng)用110。
此外,在步驟203,只要應(yīng)用110的運(yùn)行未遇到問(wèn)題,過(guò)程200便將沿“否”箭頭返回步驟203。然而,當(dāng)運(yùn)行客戶端應(yīng)用110遇到問(wèn)題時(shí),過(guò)程200便沿“是”箭頭從步驟203前進(jìn)到步驟204。在步驟204,客戶或客戶端系統(tǒng)管理員請(qǐng)求SSP的幫助,之后在步驟205,客戶解釋客戶端應(yīng)用103正遇到的問(wèn)題。通常,使用電話和/或電子郵件來(lái)執(zhí)行步驟205,且由于客戶經(jīng)驗(yàn)、報(bào)告的準(zhǔn)確性等該步驟的準(zhǔn)確性易受影響。
然后,過(guò)程200前進(jìn)到步驟209,其中,SSP確定就客戶在步驟205所提供的解釋是否需要進(jìn)一步的澄清。如果需要進(jìn)一步的澄清,則過(guò)程200由“是”箭頭前進(jìn)至步驟210,其中SSP請(qǐng)求進(jìn)一步的澄清。在此情況下,過(guò)程200將返回至步驟205,以便客戶進(jìn)一步解釋該問(wèn)題。
返回至步驟209,如果SSP并不需要任何進(jìn)一步的澄清,然后,系統(tǒng)200沿“否”箭頭前進(jìn)至步驟211,其中SSP確定是否需要對(duì)客戶機(jī)108上的客戶端應(yīng)用110進(jìn)行遠(yuǎn)程操作。如果需要,則過(guò)程200沿“是”箭頭至步驟212。在步驟212,SSP在支持側(cè)202使用平臺(tái)101遠(yuǎn)程訪問(wèn)客戶端側(cè)201客戶機(jī)108上的客戶端應(yīng)用110,并對(duì)客戶機(jī)108上的客戶端應(yīng)用110進(jìn)行遠(yuǎn)程操作。SSP還在步驟212中采取補(bǔ)救措施。然后,過(guò)程200前進(jìn)至步驟207,以確定該問(wèn)題是否已解決。如果未解決,則過(guò)程200沿“否”箭頭返回至步驟205。如果步驟207確定該問(wèn)題已解決,則過(guò)程200沿“是”箭頭從步驟207前進(jìn)至終止步驟208。
返回至步驟211,如果SSP確定不需要遠(yuǎn)程操作,則過(guò)程200沿“否”箭頭至步驟213。在步驟213,SSP通常通過(guò)電話或電子郵件向客戶解釋怎樣采取補(bǔ)救步驟。然后過(guò)程200從步驟213前進(jìn)至步驟206,其中客戶采取補(bǔ)救措施。然后,過(guò)程200從步驟206前進(jìn)至步驟207。
圖4示出了布置300,根據(jù)該布置能夠在圖1的系統(tǒng)100上實(shí)現(xiàn)所公開的GLTR方法。過(guò)程300開始于客戶端側(cè)301的步驟313,其中,客戶在客戶機(jī)108上運(yùn)行客戶端軟件應(yīng)用110。接下來(lái)的步驟303確定在運(yùn)行前述客戶端應(yīng)用110時(shí)是否遇到故障,且只要沒有遇到故障,過(guò)程300便將沿“否”箭頭返回至步驟303。然而,當(dāng)遇到問(wèn)題時(shí),過(guò)程300將沿“是”箭頭前進(jìn)至步驟304。在步驟304,客戶請(qǐng)求幫助,且根據(jù)一種裝置,過(guò)程300沿箭頭308前進(jìn)至支持側(cè)302的步驟309。在該布置中,客戶僅僅報(bào)告有問(wèn)題出現(xiàn)的事實(shí),而并不以任何方式解釋該問(wèn)題。
可選地,過(guò)程300能夠從步驟304前進(jìn)至步驟306(以虛線示出,表示該步驟是可選的),其中,客戶通過(guò)電話或電子郵件向支持側(cè)203的SSP解釋該問(wèn)題。在此情況下,過(guò)程300沿箭頭307前進(jìn)至步驟309。
在支持側(cè)302,所公開的GLTR方法根據(jù)策略服務(wù)器419(見圖5)中所存儲(chǔ)的策略,確定該問(wèn)題的性質(zhì),并決定策略服務(wù)器419中所存儲(chǔ)的哪一個(gè)支持執(zhí)行程序適合于解決該問(wèn)題。然后,將GUI日志(見圖5中的409)發(fā)送至諸如圖5中的411之類的、在支持執(zhí)行程序的計(jì)算機(jī)上運(yùn)行的GUI模擬器,該模擬器根據(jù)該GUI日志模擬某些或所有被記入日志的用戶屏幕歷史操作。
返回圖4。在步驟309,在支持側(cè)302,所公開的GLTR系統(tǒng)模擬客戶端應(yīng)用110的圖形用戶界面(GUI)屏幕(也稱為客戶端GUI屏幕),并在接下來(lái)的步驟310,SSP瀏覽之前的客戶端GUI屏幕和相關(guān)的客戶端操作。在接下來(lái)的步驟311,為了檢驗(yàn)步驟310中所顯現(xiàn)的信息并且在需要時(shí)采取補(bǔ)救措施,SSP使用GLTR SSP軟件應(yīng)用103從支持機(jī)101執(zhí)行對(duì)客戶機(jī)108上的客戶端應(yīng)用110的遠(yuǎn)程操作。然后,過(guò)程300在結(jié)束步驟312終止。
圖5示出了用于實(shí)現(xiàn)所公開的GLTR方法的系統(tǒng)400的功能框圖。當(dāng)在SSP機(jī)101上調(diào)用支持服務(wù)應(yīng)用(SSA)103時(shí),調(diào)用以虛線示出的系統(tǒng)組件(即SSP側(cè)的411-413、415、418和419,以及客戶端側(cè)的402和410)。當(dāng)SSP機(jī)101上調(diào)用支持服務(wù)應(yīng)用(SSA)103時(shí),調(diào)用以虛線示出的可選步驟(即客戶端側(cè)的401、404、420和409,以及SSP側(cè)的414、416和417)。當(dāng)SSP機(jī)101接收到支持請(qǐng)求時(shí)(圖4中的308、307),在SSP機(jī)101上調(diào)用SSA 103。
在客戶端應(yīng)用110啟動(dòng)時(shí),客戶端應(yīng)用110初始化GUI日志記錄服務(wù)405,在本說(shuō)明書中也稱為GLOGGER(更多細(xì)節(jié)見圖8-10)。在進(jìn)行對(duì)于客戶端應(yīng)用110的每一GUI操作時(shí)執(zhí)行步驟403、406。在SSP應(yīng)用103的調(diào)用之后執(zhí)行步驟409、414、416和417。在SSP進(jìn)行每一GUI操作時(shí)執(zhí)行步驟401和404。
通常,SSP應(yīng)用103將GUI模擬器411-413(更多細(xì)節(jié)見圖12)與支持協(xié)調(diào)器415(更多細(xì)節(jié)見圖7)相結(jié)合。授權(quán)服務(wù)器418和策略服務(wù)器419駐留在SSP應(yīng)用103中,或其他位置。監(jiān)督用戶服務(wù)402(更多細(xì)節(jié)見圖14)和日志協(xié)調(diào)器服務(wù)410可能地作為客戶端應(yīng)用110的一部分駐留在客戶機(jī)108上。具體地,監(jiān)督用戶服務(wù)402和GUI日志記錄服務(wù)405典型地以這樣的服務(wù)的形式作為客戶端應(yīng)用進(jìn)程110(見圖5)中的組件來(lái)運(yùn)行,該服務(wù)由客戶端應(yīng)用110通過(guò)調(diào)用函數(shù)startLoggingService()而被調(diào)用。由GUI日志記錄服務(wù)405來(lái)管理剩余部分的涉及GLTR方法的相關(guān)處理和GUI日志數(shù)據(jù)庫(kù)408的管理(見圖5)。GUI日志記錄服務(wù)405作為客戶端應(yīng)用110中的獨(dú)立的線程運(yùn)行。這樣,客戶端應(yīng)用110并不提供對(duì)于執(zhí)行日志記錄所需的所有處理的GUI日志記錄服務(wù)405的任何支持。
GUI日志數(shù)據(jù)庫(kù)408是客戶機(jī)108中存儲(chǔ)器109的數(shù)據(jù)111的一部分。
當(dāng)客戶運(yùn)行客戶端應(yīng)用110時(shí),接著GUI日志記錄服務(wù)405(稱為GLOGGER)被初始化。每當(dāng)客戶端應(yīng)用110由于客戶端應(yīng)用110的自主操作或由于客戶操作而發(fā)生GUI事件時(shí),該GUI事件的對(duì)象便被提供給GUI日志記錄服務(wù)405,如箭頭403所表示的那樣。前述的GUI事件的事件對(duì)象(即java.awt.event.ActionEvent)由Java事件管理器來(lái)提供。然而,應(yīng)該指出的是,GUI日志記錄服務(wù)405從客戶端應(yīng)用110中“拉出”該GUI事件對(duì)象,或者換句話說(shuō),客戶端應(yīng)用110無(wú)法將該GUI事件對(duì)象“推出”給GUI日志記錄服務(wù)405。然后,如箭頭406所表示的,GUI日志記錄服務(wù)405在GUI日志數(shù)據(jù)庫(kù)408中存儲(chǔ)相應(yīng)的GUI日志文本記錄。
GUI日志記錄服務(wù)405以GUI日志文本記錄的形式將GUI屏幕和操作記入日志,并存儲(chǔ)這些日志文本記錄,如GUI日志數(shù)據(jù)庫(kù)408中的箭頭406所表示的。GUI日志記錄服務(wù)405注冊(cè)捕獲前述GUI事件的事件處理器。在應(yīng)用GUI上這些事件處理器被記錄為不同的GUI組件。因此,GUI日志記錄服務(wù)405將與客戶端應(yīng)用110相關(guān)的所有用戶操作和應(yīng)用GUI變化記入日志。GUI日志記錄服務(wù)405只為客戶端應(yīng)用110所處理的那些事件記錄事件處理器,從而大量減少了數(shù)據(jù)庫(kù)408中所存儲(chǔ)的日志的大小。
如箭頭406所表示的,在GUI日志數(shù)據(jù)庫(kù)408中所存儲(chǔ)的GUI日志文本記錄是存儲(chǔ)關(guān)于應(yīng)用GUI屏幕組件和用戶操作的信息的文本記錄。GUI日志文本記錄屬于三種不同的類型,即(a)組件GUI日志文本記錄,(b)事件GUI日志文本記錄,以及(c)快照GUI日志文本記錄。
組件GUI日志文本記錄存儲(chǔ)該組件的所有屬性、客戶端應(yīng)用110為該組件所記錄的事件監(jiān)聽器的列表、GUI日志記錄服務(wù)405所生成的GUI組件的布局和組件id,以便能夠根據(jù)組件GUI日志文本記錄重建相應(yīng)的GUI組件。組件GUI日志文本記錄還存儲(chǔ)與GUI樹中的其他組件相關(guān)的層次信息。
事件GUI日志文本記錄存儲(chǔ)關(guān)于GUI組件的用戶操作和屬性變化的信息。事件GUI日志文本記錄存儲(chǔ)涉及該事件的所有信息、唯一地標(biāo)識(shí)該事件的事件id以及相應(yīng)的組件id,以便能夠在SSP側(cè)根據(jù)該事件GUI日志文本記錄再現(xiàn)相應(yīng)的事件。
快照GUI日志文本記錄是日志文本記錄的一種類型,其具有構(gòu)建之前在特定時(shí)間出現(xiàn)的應(yīng)用GUI屏幕的充足信息。快照GUI日志文本記錄通常用于將多個(gè)事件/操作打包為單個(gè)日志文本記錄,典型地,為了減小存儲(chǔ)器和通信傳輸帶寬需求。
如所指出的,在服務(wù)支持被請(qǐng)求時(shí),以虛線格式示出的系統(tǒng)400的元素被調(diào)用。相應(yīng)地,在支持服務(wù)提供者側(cè),支持協(xié)調(diào)器415、授權(quán)服務(wù)器418、策略服務(wù)器419以及GUI模擬器411、412和413被調(diào)用??梢源嬖谌魏螖?shù)量的GUI模擬器,其中至少一個(gè)具有每一支持執(zhí)行程序。典型地,對(duì)于一個(gè)服務(wù)支持請(qǐng)求調(diào)用前述GUI模擬器之一。在客戶端側(cè),當(dāng)由于客戶報(bào)告故障而調(diào)用支持服務(wù)時(shí),監(jiān)督用戶服務(wù)402和日志協(xié)調(diào)器服務(wù)410被調(diào)用。
在客戶端應(yīng)用110的正常操作過(guò)程中,每一GUI操作都將引發(fā)如403所表示的GUI事件的日志記錄以及如406所表示的相應(yīng)GUI日志文本記錄的存儲(chǔ)。
在接收到支持請(qǐng)求以及隨之發(fā)生的SSA 103的調(diào)用時(shí),如虛線箭頭420所表示的,日志協(xié)調(diào)器服務(wù)410訪問(wèn)GUI日志數(shù)據(jù)庫(kù)408中所存儲(chǔ)的GUI日志文本記錄。然后,如虛線箭頭409所表示的,日志協(xié)調(diào)器服務(wù)410將前述GUI日志文本記錄提供給支持協(xié)調(diào)器415。如虛線箭頭416所表示的,支持協(xié)調(diào)器415通過(guò)調(diào)用授權(quán)服務(wù)器418,確定該支持請(qǐng)求是否是授權(quán)的。如果這引發(fā)服務(wù)請(qǐng)求的授權(quán),則支持協(xié)調(diào)器415調(diào)用策略服務(wù)器419,并從策略服務(wù)器419接收適當(dāng)?shù)闹С址?wù)執(zhí)行程序以處理該支持請(qǐng)求,如虛線箭頭417所表示的。然后,如虛線箭頭414所表示的,支持協(xié)調(diào)器415將GUI日志文本記錄傳送至該支持執(zhí)行程序的GUI模擬器411。
客戶端應(yīng)用GUI可能會(huì)響應(yīng)于監(jiān)督用戶服務(wù)(見圖4中的311)所實(shí)施的操作引發(fā)的程序化操作而在調(diào)用支持服務(wù)(見圖7中的606)之后發(fā)生變化。這些變化需要反應(yīng)在所模擬的GUI中(見圖4中的309),為了確保這樣的狀態(tài)的實(shí)現(xiàn),日志協(xié)調(diào)器服務(wù)410繼續(xù)將調(diào)用支持服務(wù)之后所產(chǎn)生的、新的GUI日志文本記錄發(fā)送至支持協(xié)調(diào)器415,支持協(xié)調(diào)器415將這些內(nèi)容發(fā)送至相關(guān)的GUI模擬器。如圖13A和13B所示的那樣,這些新的GUI日志文本記錄被應(yīng)用。
GUI模擬器411使用GUI日志文本記錄,使SSP能夠重建客戶端應(yīng)用GUI屏幕。GUI日志文本記錄捕獲之前所有的客戶端GUI屏幕和操作,并且使SSP能夠?yàn)榱死斫饪蛻舳藨?yīng)用110的操作而瀏覽之前客戶端應(yīng)用GUI操作和屏幕。如虛線箭頭401所表示的,SSP也能夠使用監(jiān)督用戶服務(wù)402對(duì)客戶端應(yīng)用110實(shí)施如虛線箭頭404所表示的針對(duì)所模擬的GUI采取的操作。這實(shí)現(xiàn)了SSP在支持側(cè)對(duì)客戶端應(yīng)用110的遠(yuǎn)程操作。
所公開的GLTR系統(tǒng)和方法的實(shí)現(xiàn)使用了Java(1.3版)語(yǔ)言,這僅是代表性的實(shí)現(xiàn)。因此,所公開的實(shí)現(xiàn)支持以所提到的Java語(yǔ)言實(shí)現(xiàn)的應(yīng)用。還可以使用Java Abstract Window ToolkitTM和SwingTM應(yīng)用程序接口(API)。在基于提供者的體系結(jié)構(gòu)的基礎(chǔ)上,來(lái)實(shí)現(xiàn)GUI日志記錄服務(wù)405(GLOGGER)、GUI監(jiān)督用戶服務(wù)402(GSHADOW)和GUI模擬器組件411-413(GSIM)。該體系結(jié)構(gòu)具有一個(gè)主層以及針對(duì)每一GUI組件的提供者。該主層提供對(duì)提供者所支持的API的說(shuō)明。該主層進(jìn)行普通處理,并使用提供者功能以進(jìn)行特定于GUI組件的處理。雖然本說(shuō)明書使用了Java語(yǔ)言,但也可以使用提供功能上與結(jié)合Java所描述的API等價(jià)的事件處理API的其他語(yǔ)言。
圖6A和6B示出了表示客戶端應(yīng)用110的正常操作(見圖5)的過(guò)程片段500和500’。過(guò)程片段500和500’與客戶端側(cè)501相關(guān)。過(guò)程片段500以步驟313開始,其中客戶在客戶機(jī)108上運(yùn)行客戶端應(yīng)用110(見圖1)。在接下來(lái)的步驟504,客戶端應(yīng)用110初始化GUI日志記錄服務(wù)405。在接下來(lái)的步驟518,GUI日志記錄服務(wù)405獲取最頂層客戶端應(yīng)用GUI組件的列表作為輸入,并確定與該GUI相關(guān)的組件層次。在GUI日志記錄服務(wù)405被初始化時(shí),步驟505確定適當(dāng)?shù)氖录幚砥魇欠駲z測(cè)到GUI操作。如果未檢測(cè)到,則過(guò)程500沿“否”箭頭返回至步驟505。相反,如果發(fā)生了GUI操作,則過(guò)程500沿“是”箭頭前進(jìn)至步驟506。在步驟506,GUI日志記錄服務(wù)405創(chuàng)建所檢測(cè)到的相應(yīng)GUI事件的GUI日志文本記錄。隨后的步驟515(圖6B中示出)確定是否有組件從該組件層次中被移除或被添加到該組件層次中(見圖12)。如果有,則過(guò)程500沿“是”箭頭前進(jìn)至步驟516,更新與GUI相關(guān)的組件層次。如果沒有組件被移除或添加,則過(guò)程500沿“否”箭頭從步驟515前進(jìn)至步驟507。
隨后的步驟507在GUI日志數(shù)據(jù)庫(kù)408中存儲(chǔ)GUI日志文本記錄。在隨后的步驟508,GUI日志記錄服務(wù)405確定客戶端應(yīng)用110是否仍在運(yùn)行。如果在運(yùn)行,則過(guò)程500沿“是”箭頭返回至圖6A中的步驟505。返回到圖6B中的步驟508,如果GUI日志記錄服務(wù)405確定客戶端應(yīng)用110未在運(yùn)行,則過(guò)程500從步驟508沿“否”箭頭前進(jìn)至終止步驟509。從實(shí)際的觀點(diǎn)出發(fā),在優(yōu)選布置中,GUI日志記錄服務(wù)405作為客戶端應(yīng)用110中的線程而運(yùn)行,所以當(dāng)客戶端應(yīng)用110終止時(shí),GUI日志記錄服務(wù)405也終止。
圖7示出了處理流/數(shù)據(jù)流片段600和600’,服務(wù)支持應(yīng)用103(見圖1)根據(jù)該流程進(jìn)行操作。諸如618之類的實(shí)線格式的箭頭表示所討論的過(guò)程從位于所討論的箭頭起點(diǎn)的步驟(例如步驟603位于箭頭618的起點(diǎn))前進(jìn)到位于所討論的箭頭末端的步驟(例如步驟604位于箭頭618的末端)的方式。相反,諸如617之類的虛線格式的箭頭表示數(shù)據(jù)流從位于所討論的箭頭起點(diǎn)的步驟(例如步驟604位于箭頭617的起點(diǎn))前進(jìn)到位于所討論的箭頭末端的步驟(例如步驟607位于箭頭617的末端)的方式。
片段600從支持請(qǐng)求開始,如箭頭308或箭頭307(見圖4)所表示的,該支持請(qǐng)求是在客戶或可選地客戶端應(yīng)用110請(qǐng)求幫助時(shí)產(chǎn)生的。如箭頭316(見圖4)所表示的,片段600’也從支持請(qǐng)求開始。
在支持側(cè)602接收到幫助請(qǐng)求時(shí),步驟606調(diào)用支持側(cè)的支持服務(wù)組件。這些支持服務(wù)組件是GUI模擬器411、412和413、支持協(xié)調(diào)器415、授權(quán)服務(wù)器418以及策略服務(wù)器419。然后,片段600前進(jìn)至步驟607。步驟603調(diào)用客戶端側(cè)支持組件。這些組件包括日志協(xié)調(diào)器服務(wù)410和監(jiān)督用戶服務(wù)402。在隨后的步驟604,日志協(xié)調(diào)器服務(wù)410訪問(wèn)GUI日志數(shù)據(jù)庫(kù)408中的GUI日志文本記錄,并如虛線箭頭617所表示的,將該GUI日志文本記錄發(fā)送至支持側(cè)602的支持協(xié)調(diào)器415。在步驟607,支持協(xié)調(diào)器415接收前述GUI日志文本記錄,之后在步驟608,支持協(xié)調(diào)器415詢問(wèn)授權(quán)服務(wù)器418,以確定是否該對(duì)該支持請(qǐng)求授權(quán)。如果授權(quán),則過(guò)程600沿“是”箭頭前進(jìn)至步驟609。在步驟609,支持協(xié)調(diào)器415通過(guò)詢問(wèn)策略服務(wù)器419,確定合適的服務(wù)支持執(zhí)行程序。返回至步驟608,如果授權(quán)服務(wù)器418指示并不對(duì)該支持請(qǐng)求授權(quán),則過(guò)程600沿“否”箭頭前進(jìn)至步驟613,其中向支持協(xié)調(diào)器415發(fā)送消息,大意表示該服務(wù)請(qǐng)求未被授權(quán),且不能被許可。支持協(xié)調(diào)器415將其作為出錯(cuò)消息傳遞至客戶端應(yīng)用110。
在步驟609,在策略服務(wù)器419向支持協(xié)調(diào)器415提供了適合的服務(wù)支持執(zhí)行程序時(shí),如箭頭611所表示的,片段600前進(jìn)至步驟610,其中諸如411之類的GUI模擬器使用客戶端側(cè)所發(fā)送的GUI日志文本記錄重建應(yīng)用GUI屏幕。在步驟610,SSP在支持側(cè)602瀏覽歷史GUI屏幕和用戶操作信息,直到確定問(wèn)題所在為止。
如虛線箭頭614所表示的,在步驟610(結(jié)合圖13A和13B更詳細(xì)地進(jìn)行描述)重建了應(yīng)用GUI屏幕時(shí),在SSP側(cè)602可對(duì)所模擬的GUI屏幕進(jìn)行操作,如步驟615所描述的。這將結(jié)合圖15更詳細(xì)地進(jìn)行描述。
如虛線箭頭618所表示的,SSP在步驟615對(duì)所模擬的GUI所采取的GUI操作,作為GUI日志文本記錄,被傳送至步驟605,其中客戶端側(cè)601上的監(jiān)督用戶服務(wù)402遠(yuǎn)程操作客戶端應(yīng)用110,如結(jié)合圖14更詳細(xì)地描述的。
在步驟605,監(jiān)督用戶服務(wù)402所進(jìn)行的客戶端應(yīng)用的上述操作,將引起客戶端應(yīng)用GUI變化。這些變化需要被鏡像至SSP所模擬的GUI。為了實(shí)現(xiàn)該操作,如虛線箭頭616所表示的,監(jiān)督用戶服務(wù)402將GUI日志文本記錄發(fā)送至日志協(xié)調(diào)器服務(wù)410。步驟610使用由日志協(xié)調(diào)器服務(wù)所傳遞的GUI日志文本記錄,以更新所模擬的GUI屏幕,如關(guān)于圖13A和13B更詳細(xì)地描述的。
因此,步驟610處理由于監(jiān)督用戶服務(wù)402在步驟605中所采取的操作而產(chǎn)生的GUI日志文本記錄的方式,與步驟610對(duì)在初始的支持調(diào)用時(shí)支持協(xié)調(diào)器服務(wù)415所發(fā)送的GUI日志文本記錄進(jìn)行處理的方式相同。
如前所述,為了反映響應(yīng)于監(jiān)督用戶服務(wù)402所采取的程序化操作而發(fā)生的客戶端應(yīng)用GUI變化,GUI日志協(xié)調(diào)器服務(wù)410持續(xù)發(fā)送新的GUI日志文本記錄(這些是在支持調(diào)用之后被存儲(chǔ)的記錄),該記錄由GUI日志記錄服務(wù)405存儲(chǔ)在GUI日志數(shù)據(jù)庫(kù)408中。應(yīng)該指出的是,日志協(xié)調(diào)器服務(wù)410并不發(fā)送對(duì)應(yīng)于監(jiān)督用戶服務(wù)402所采取的操作的GUI日志文本記錄,而是僅發(fā)送對(duì)應(yīng)于應(yīng)用GUI變化的GUI日志文本記錄,該變化是響應(yīng)于監(jiān)督用戶服務(wù)402所采取的程序化操作而發(fā)生的。如616所示被發(fā)送的日志文本記錄被用于區(qū)分與監(jiān)督用戶服務(wù)所采取的操作和客戶端應(yīng)用GUI變化對(duì)應(yīng)的日志文本記錄。
圖8示出了一過(guò)程,根據(jù)該過(guò)程在圖6A的步驟504和518初始化GUI日志記錄服務(wù)405。GUI日志記錄服務(wù)405執(zhí)行GUI事件和屏幕的日志記錄。在注冊(cè)頂層GUI組件對(duì)象的客戶端應(yīng)用110列表時(shí),初始化GUI日志記錄服務(wù)405。GUI日志記錄服務(wù)405執(zhí)行注冊(cè)之后出現(xiàn)的GUI操作和屏幕的日志記錄。通常,客戶端應(yīng)用110在客戶端應(yīng)用110的啟動(dòng)時(shí)向GUI日志記錄服務(wù)405注冊(cè),然而該注冊(cè)能夠在任何時(shí)間執(zhí)行。如果在啟動(dòng)之后執(zhí)行該注冊(cè),則GUI日志記錄服務(wù)將不會(huì)獲得在注冊(cè)之前出現(xiàn)的任何應(yīng)用GUI信息。因此,該系統(tǒng)將不能再現(xiàn)(即模擬)在注冊(cè)之前出現(xiàn)的GUI屏幕/操作。
GUI日志記錄服務(wù)405的初始化包括三個(gè)步驟。首先,GUI日志記錄服務(wù)405使用Java所提供的GUI父子關(guān)系A(chǔ)PI來(lái)發(fā)現(xiàn)所有GUI組件及其相關(guān)層次。以這種方式,GUI日志記錄服務(wù)405創(chuàng)建GUI樹,該GUI樹具有關(guān)于在客戶端應(yīng)用110的GUI中所存在的GUI組件的所有信息。應(yīng)該指出的是,該GUI樹具有關(guān)于GUI組件的信息,而不是GUI組件對(duì)象的信息,此外,每一GUI組件由GUI日志記錄服務(wù)405所生成的唯一id來(lái)標(biāo)識(shí)。
第二,GUI日志記錄服務(wù)405發(fā)現(xiàn)按客戶端應(yīng)用110的GUI組件所注冊(cè)的事件監(jiān)聽器的列表。由此,GUI日志記錄服務(wù)405了解客戶端應(yīng)用110所處理的GUI事件。第三,GUI日志記錄服務(wù)405向每一GUI組件注冊(cè)其自身的事件監(jiān)聽器。換句話說(shuō),對(duì)于客戶端應(yīng)用110所注冊(cè)的每一事件處理器,GUI日志記錄服務(wù)405還注冊(cè)單獨(dú)的事件監(jiān)聽器。以這種方式,GUI日志記錄服務(wù)405捕獲客戶端應(yīng)用110所處理的所有用戶操作。
GUI日志記錄服務(wù)405還注冊(cè)其他的監(jiān)聽器,以跟蹤GUI組件的添加、移除和屬性變化。GUI日志記錄服務(wù)405向每一GUI組件注冊(cè)屬性變化監(jiān)聽器,以跟蹤GUI組件的屬性變化。GUI日志記錄服務(wù)405注冊(cè)組件監(jiān)聽器,以跟蹤GUI組件移除和添加。大多數(shù)GUI組件提供都上述監(jiān)聽器。如果不提供,則使用探測(cè)機(jī)制和語(yǔ)言(即Java)所提供的事件監(jiān)聽器API來(lái)實(shí)現(xiàn)這些監(jiān)聽器。為了捕獲這些變化,前述監(jiān)聽器探測(cè)不同的GUI組件。該探測(cè)可以是基于事件的(在此情況下,每一次刷新GUI屏幕,相應(yīng)的頂層組件便發(fā)生變化)或者該探測(cè)可以是基于間隔的(在此情況下,用戶能夠指定兩次探測(cè)之間的時(shí)間間隔)。屬性變化監(jiān)聽器的一個(gè)可能的有效實(shí)現(xiàn)可以是,其在任一用戶事件處理器報(bào)告事件時(shí)檢查組件的屬性(即JTextField中的文本)變化。這樣的屬性變化事件監(jiān)聽器將確保在用戶進(jìn)行由客戶端應(yīng)用所捕獲到的操作時(shí)使日志得以更新。注意術(shù)語(yǔ)“事件處理器”和“監(jiān)聽器”指捕獲事件/操作并將它們送至日志記錄服務(wù)的代碼。
過(guò)程504從步驟701開始,其中GUI日志記錄服務(wù)405發(fā)現(xiàn)所有的應(yīng)用GUI組件及其相關(guān)層次。此后,在步驟702,GUI日志記錄服務(wù)405創(chuàng)建GUI樹。在隨后的步驟703,GUI日志記錄服務(wù)405發(fā)現(xiàn)每一應(yīng)用GUI組件的所注冊(cè)的事件監(jiān)聽器的列表。此后,在步驟704,GUI日志記錄服務(wù)405向每一應(yīng)用GUI組件注冊(cè)其自身的事件監(jiān)聽器。隨后,GUI日志記錄服務(wù)405向每一應(yīng)用GUI組件注冊(cè)其自身的屬性變化監(jiān)聽器。在隨后的步驟706,GUI日志記錄服務(wù)405注冊(cè)其自身的組件監(jiān)聽器,以跟蹤組件添加和/或移除。然后,過(guò)程504沿箭頭512前進(jìn)至圖6A中的步驟505。
圖9和10示出了在圖6A中的步驟518之后開始前進(jìn)到圖6B中的步驟508的流程。該流程包括標(biāo)記為800和800’的2個(gè)過(guò)程線程。過(guò)程800和800’以基本的格式示出,它們表示兩個(gè)并發(fā)運(yùn)行的過(guò)程。過(guò)程800結(jié)合圖9來(lái)描述,并發(fā)過(guò)程800’結(jié)合圖10來(lái)描述。
過(guò)程800從步驟801開始,其中GUI日志記錄服務(wù)405確定所檢測(cè)的GUI操作是否涉及屬性變化和/或用戶操作事件。如果涉及,則過(guò)程800沿“是”箭頭前進(jìn)至步驟802。在步驟802,GUI日志記錄服務(wù)執(zhí)行屬性變化和/或用戶操作事件日志記錄過(guò)程,該過(guò)程結(jié)合圖11更詳細(xì)地被描述。在處理802完成時(shí),過(guò)程800沿箭頭513前進(jìn)至圖6B中的步驟508。
返回至步驟801,如果GUI日志記錄服務(wù)405確定所出現(xiàn)的GUI操作與屬性變化和/或用戶操作事件無(wú)關(guān),則過(guò)程800沿“否”箭頭前進(jìn)至步驟803。在步驟803,GUI日志記錄服務(wù)405執(zhí)行組件添加和/或移除日志記錄操作,該操作結(jié)合圖12更詳細(xì)地被描述。在步驟803完成時(shí),過(guò)程800經(jīng)由箭頭805,從步驟803前進(jìn)至圖6B中的步驟508。
圖10示出了過(guò)程線程800’,其與結(jié)合圖9所描述的過(guò)程800并發(fā)運(yùn)行。在過(guò)程800’中,GUI日志記錄服務(wù)405進(jìn)行不同類型的事件日志記錄,其中所討論的事件的復(fù)合日志被壓縮為快照。GUI屏幕和用戶操作以文本記錄的形式被記入日志,以使記錄開銷接近于最小,這通常是所公開的GLTR方法的情形。
利用以下示例對(duì)快照日志文本記錄進(jìn)行最佳描述。快照日志文本記錄是日志文本記錄的一種類型,其具有構(gòu)建在之前的特定時(shí)間出現(xiàn)的應(yīng)用GUI屏幕的充足信息。其通常用于將多個(gè)事件打包為單個(gè)日志文本記錄,典型地,為了減少存儲(chǔ)器和通信傳輸帶寬需求。這樣,例如,如果特定客戶端應(yīng)用具有4個(gè)按鈕,且由于一系列用戶和程序化操作,發(fā)生了下面的事件序列(1)按鈕1被單擊;(2)按鈕2被單擊;(3)按鈕3被單擊;(4)按鈕2被移除;(5)文本框被添加。
考慮上述示例,如果捕獲每一事件(即單獨(dú)地進(jìn)行日志記錄),則必須以5個(gè)相應(yīng)的事件日志文本記錄的形式捕獲5個(gè)單獨(dú)的事件。然而,在客戶端應(yīng)用運(yùn)行較長(zhǎng)的一段時(shí)間且出現(xiàn)了大量操作的情況下,對(duì)每一事件存儲(chǔ)單獨(dú)的日志文本記錄會(huì)消耗大量的存儲(chǔ)器。在這種情況下,采用“快照事件記錄”方法,能夠有效地將多個(gè)事件壓縮為單個(gè)快照日志文本記錄。返回至上述具有5個(gè)單獨(dú)事件的示例,相應(yīng)的快照日志文本記錄將以下面的格式存儲(chǔ)信息按鈕1(單擊狀態(tài)),按鈕3(單擊狀態(tài)),按鈕4(未單擊狀態(tài)),一個(gè)文本框。
明顯地,上述快照日志文本記錄并未存儲(chǔ)任何各變化和/或操作何時(shí)發(fā)生的時(shí)間信息。該快照日志文本記錄僅存儲(chǔ)所有操作和/或變化的集合效果。從粒度的觀點(diǎn)出發(fā),快照記錄可以按照客戶端應(yīng)用的用戶所確定的時(shí)間間隔被記錄。因此,能夠以每小時(shí)、每天或任何方便的頻率對(duì)快照日志記錄進(jìn)行記錄。這使得能夠從存儲(chǔ)器中刪除大量的單個(gè)日志文本記錄,從而在某些情況下節(jié)省大量的存儲(chǔ)器容量。在實(shí)際中,用戶通??杀4孀罱?例如,前1天或2天)的各日志文本記錄,而在該時(shí)間之前被記錄的操作則以每小時(shí)被壓縮為快照日志文本記錄。
考慮前述的快照GLTR示例,顯而易見,通過(guò)創(chuàng)建以客戶端應(yīng)用110的用戶所定義的時(shí)間粒度生成的GUI快照,能夠進(jìn)一步使日志記錄開銷最小化。GUI快照日志文本記錄是GUI樹的日志,該GUI樹具有與客戶端應(yīng)用110的GUI中、在快照生成時(shí)所存在的所有GUI組件相關(guān)的全部信息。GUI快照日志文本記錄具有與客戶端應(yīng)用110的GUI中、在給定時(shí)間所存在的所有GUI組件相關(guān)的全部信息。該GUI快照并不以事件或操作的形式存儲(chǔ),而是以GUI樹的編排后的副本的形式所存儲(chǔ)。
在其他情況下,客戶端應(yīng)用GUI屏幕以與之前的屏幕的區(qū)別的形式進(jìn)行存儲(chǔ)。應(yīng)該指出的是,通常,諸如鼠標(biāo)單擊之類的用戶操作或諸如setText之類的程序化操作/屬性變化事件,均被記錄為相應(yīng)的事件日志文本記錄。因此,對(duì)于客戶端應(yīng)用GUI中的每一變化,GUI日志記錄服務(wù)405通常會(huì)向日志添加日志文本記錄。然而,如果日志文本記錄的數(shù)量超過(guò)預(yù)定閾值,則GUI日志記錄服務(wù)405通過(guò)創(chuàng)建將之前的日志文本記錄組合的快照日志文本記錄,來(lái)降低日志記錄開銷。日志文本記錄被壓縮為快照記錄的粒度由客戶端應(yīng)用110的用戶來(lái)設(shè)定。區(qū)別的示例,是(a)諸如鼠標(biāo)單擊之類的用戶操作,或(b)諸如計(jì)劃性地采取的操作的、例如setText的程序化操作。
過(guò)程線程800’從步驟1200開始,其中GUI日志記錄服務(wù)確定是否應(yīng)進(jìn)行快照日志記錄操作(根據(jù)客戶端應(yīng)用用戶所定義的時(shí)間粒度)。如果不應(yīng)進(jìn)行,則過(guò)程800’沿“否”箭頭返回至步驟1200。相反,如果應(yīng)進(jìn)行快照日志記錄事件,則過(guò)程800’沿“是”箭頭前進(jìn)至步驟1201。在步驟1201,主層將當(dāng)前GUI樹中的每一GUI節(jié)點(diǎn)(組件)傳送給相應(yīng)的提供者。在隨后的步驟1202,相應(yīng)的提供者向主層返回組件日志文本記錄。此后,在步驟1203,主層將組件日志文本記錄與組件層次一起編排以形成快照記錄,其中的組件日志文本記錄是針對(duì)GUI樹中的每一GUI節(jié)點(diǎn)被返回的。在隨后的步驟1204,主層在數(shù)據(jù)庫(kù)408中記錄編排后的快照日志文本記錄。然后,過(guò)程800’沿箭頭513前進(jìn)至圖6B中的步驟508。
術(shù)語(yǔ)“編排”用于表示相應(yīng)提供者將GUI組件對(duì)象轉(zhuǎn)換為相應(yīng)的組件GUI日志文本記錄(即JButton)、將GUI事件對(duì)象(即java.util.ActionEvent或PropertyChangeEvent)轉(zhuǎn)換為相應(yīng)的事件GUI日志文本記錄的步驟。
應(yīng)該指出的是,從相應(yīng)提供者返回的任一GUI組件的組件GUI日志文本記錄,均具有相應(yīng)GUI組件的所有屬性。這就是在SSP側(cè)之所以能夠根據(jù)組件日志文本記錄重建該GUI組件的原因。因此,例如,JButton提供者在組件日志文本記錄中存儲(chǔ)給定JButton組件的所有屬性,從而在SSP側(cè)能夠根據(jù)組件日志文本記錄重建相同的JButton GUI組件。
圖11更詳細(xì)地示出了圖9的步驟802。用于屬性變化和用戶操作事件的處理包括三個(gè)步驟。首先,主層發(fā)現(xiàn)組件唯一id和提供者。然后,主層將事件對(duì)象(從Java事件管理器接收的)傳輸至所發(fā)現(xiàn)的提供者,該提供者將該GUI事件對(duì)象編排為事件日志文本記錄。然后,主層將編排后的事件日志文本記錄與主層所生成的組件id和事件id一起記錄。應(yīng)該指出的是,該事件日志文本記錄存儲(chǔ)了關(guān)于該事件的所有信息以及相應(yīng)的組件id,以便在SSP側(cè)能夠根據(jù)該事件GUI日志文本記錄再現(xiàn)該事件。
返回圖11,過(guò)程802從步驟901開始,其中主層發(fā)現(xiàn)組件唯一id和適合的提供者。此后,在步驟902,主層將事件對(duì)象傳輸至所發(fā)現(xiàn)的提供者。隨后,在步驟903,提供者將該GUI事件對(duì)象編排為事件日志文本記錄。在隨后的步驟904,主層將編排后的事件日志文本記錄與組件id和事件id一起記錄在GUI日志數(shù)據(jù)庫(kù)408中,然后,箭頭513將過(guò)程802引導(dǎo)至圖6B中的步驟508。
圖12更詳細(xì)地示出了圖9中的步驟803。組件添加/移除事件的處理包括基于組件的移除或添加的處理。在移除GUI組件的情況下,主層從GUI樹中移除該條目,并記錄該組件移除日志文本記錄。該組件移除日志文本記錄包括組件id和關(guān)于所刪除的組件的層次信息。GUI組件添加事件的處理按三個(gè)步驟來(lái)執(zhí)行。首先,主層生成GUI樹節(jié)點(diǎn)以保存關(guān)于所添加的GUI組件的信息,并將其條目添加至GUI樹中。這個(gè)步驟主要包括生成唯一id、確定其提供者以及確定父子關(guān)系。第二,將該GUI組件對(duì)象傳送給該提供者,該提供者在組件日志文本記錄中對(duì)該組件的所有屬性進(jìn)行編排。第三,主層將該組件日志文本記錄與組件添加日志文本記錄一起記錄。該組件添加日志文本記錄保存關(guān)于所添加的GUI組件的層次信息。應(yīng)該指出的是,GUI日志記錄服務(wù)405以多個(gè)組件添加事件(日志記錄)的形式記錄客戶端應(yīng)用GUI屏幕中的所有GUI組件。
返回圖12,處理803從步驟1001開始,其中GUI日志記錄服務(wù)405確定是否將有組件被添加或移除。如果組件將被移除,則過(guò)程803沿“移除”箭頭前進(jìn)至步驟1002。在步驟1002,主層從GUI樹中移除該條目,并記錄組件移除日志文本記錄。然后,過(guò)程803沿箭頭1007前進(jìn)至圖9中的箭頭805。
返回步驟1001,如果GUI日志記錄服務(wù)405確定有組件被添加,則過(guò)程803沿“添加”箭頭從步驟1001前進(jìn)至步驟1003。在步驟1003,主層生成GUI樹節(jié)點(diǎn),以保存關(guān)于所添加的GUI組件對(duì)象的信息。此后,主層在步驟1004、在GUI樹中生成其條目。在隨后的步驟1005,主層將GUI組件對(duì)象傳送給適當(dāng)?shù)奶峁┱?。之后,在步驟1006,提供者在組件日志文本記錄中對(duì)該組件的屬性進(jìn)行編排。在隨后的步驟1007,主層將組件日志文本記錄與組件添加日志文本記錄一起記錄在GUI日志數(shù)據(jù)庫(kù)408中。為了捕獲與新添加的組件相關(guān)的事件,主層還執(zhí)行步驟703、704、705和706(圖8中示出)。然后,步驟803沿箭頭1007前進(jìn)至圖9中的箭頭805。
圖13A和13B更詳細(xì)地示出了圖7中的步驟610,其涉及GUI模擬器進(jìn)程411。圖7中的步驟610分別由圖13A和13B中的過(guò)程片段610’和610”來(lái)示出。GUI模擬器進(jìn)程411運(yùn)行于支持提供者側(cè)。GUI模擬器進(jìn)程411使用從客戶端側(cè)接收的GUI日志文本記錄來(lái)模擬客戶端應(yīng)用GUI。如已經(jīng)描述過(guò)的,GUI日志記錄服務(wù)405以可用于步進(jìn)地生成客戶端應(yīng)用GUI的GUI組件添加、移除、用戶操作和屬性變化事件(日志文本記錄)的形式,捕獲客戶端應(yīng)用GUI屏幕。用戶操作和屬性變化事件(日志文本記錄)也可逐一應(yīng)用,以提供用于全部瀏覽之前所調(diào)用的客戶端應(yīng)用GUI屏幕的手段。GUI模擬器進(jìn)程411還提供用于成組地應(yīng)用用戶操作的手段。這使得能夠以低于在客戶端側(cè)出現(xiàn)的每一用戶操作或事件的粒度來(lái)瀏覽用戶操作和相應(yīng)的GUI屏幕。
根據(jù)GUI日志文本記錄模擬之前和當(dāng)前的客戶端應(yīng)用GUI屏幕的過(guò)程包括一個(gè)初始化階段,然后,步進(jìn)地應(yīng)用GUI日志文本記錄。在初始化階段,主層根據(jù)客戶端側(cè)GUI日志記錄服務(wù)405所生成的日志文本記錄創(chuàng)建頂層GUI組件。
每一GUI日志文本記錄的處理,取決于其類型。下面是用于組件GUI日志文本記錄的處理。主層將組件日志文本記錄傳輸至相應(yīng)的提供者,該提供者則創(chuàng)建并返回實(shí)際的GUI組件。將關(guān)于新組件的信息添加至GUI樹,并在屏幕上顯示該組件。在如Jpanel的容器組件的情況下,子GUI組件也與GUI日志文本記錄一起被傳送。
事件日志文本記錄的處理包括三個(gè)步驟。首先,主層從GUI樹中發(fā)現(xiàn)GUI組件和相應(yīng)的提供者。第二,基于GUI事件日志文本記錄中的信息,提供者對(duì)相應(yīng)的GUI組件采取程序化操作。
GUI快照日志文本記錄表示完整的GUI屏幕,所以,其處理如下。主層使用GUI快照日志文本記錄中給出的GUI樹的GUI組件樹(即GUI屏幕),來(lái)創(chuàng)建完整的應(yīng)用GUI。
GUI模擬器進(jìn)程411還提供用于對(duì)當(dāng)前所模擬的GUI屏幕(與客戶端GUI相同)進(jìn)行遠(yuǎn)程用戶操作的手段。因此,以GUI日志文本記錄的形式,將對(duì)所模擬的GUI采取的操作傳輸至客戶端側(cè)的監(jiān)督用戶服務(wù)402,該服務(wù)對(duì)實(shí)際的應(yīng)用GUI進(jìn)行程序化操作。
返回至圖13A和13B,特別是圖13A,在過(guò)程片段610’的初始化步驟1301,主層根據(jù)日志文本記錄創(chuàng)建頂層GUI。此后,在步驟1303,GUI模擬器411確定所討論的日志文本記錄是組件類型、事件類型還是快照類型的。如果該日志文本記錄是組件日志文本記錄,則過(guò)程片段610’沿“組件”箭頭1317前進(jìn)至圖13B中的步驟1318。步驟1318確定該日志文本記錄涉及組件添加還是組件移除類型。如果步驟1318確定其是組件添加類型,則過(guò)程片段610”沿“添加”箭頭前進(jìn)至步驟1304。在步驟1304,主層將相應(yīng)的組件GUI日志文本記錄傳輸至相應(yīng)的提供者。在隨后的步驟1305,提供者創(chuàng)建并返回實(shí)際的GUI組件對(duì)象。提供者還注冊(cè)用于新創(chuàng)建的GUI組件的事件監(jiān)聽器,要注意到的是監(jiān)聽器的列表存在于組件GUI日志文本記錄之中。此后,在步驟1306,主層將關(guān)于該新GUI組件對(duì)象的信息添加至GUI樹,且將提供者所返回的GUI組件添加至父組件,要注意的是層次信息是從組件添加日志文本記錄中獲得的。然后,過(guò)程片段610”前進(jìn)至步驟1315,其中主層刷新屏幕1114,以便在屏幕1114上顯示該新組件(見圖2)。然后,過(guò)程片段610”沿箭頭1316返回圖13A。
返回至步驟1318,如果該步驟確定該日志文本記錄是組件移除類型的,則過(guò)程片段610”沿“移除”箭頭前進(jìn)至步驟1319,其中移除所模擬的GUI的相應(yīng)GUI組件。然后,過(guò)程片段610”沿箭頭1320前進(jìn)至步驟1315。
圖15示出了怎樣處理對(duì)于所模擬的GUI屏幕進(jìn)行的SSP側(cè)操作。圖13A中的虛線箭頭614表示對(duì)通過(guò)617從日志協(xié)調(diào)器服務(wù)410接收的GUI日志文本記錄進(jìn)行處理以通過(guò)步驟610(見圖7)反映客戶端側(cè)GUI變化的情況。此后,在步驟1501,主層發(fā)現(xiàn)組件唯一id和提供者。在隨后的步驟1502,提供者將事件對(duì)象(從Java事件管理器接收的)編排或轉(zhuǎn)換為相應(yīng)的事件GUI日志文本記錄。
此后,在步驟1503,主層以GUI日志文本記錄的形式,將對(duì)于所模擬的GUI進(jìn)行的操作傳輸至監(jiān)督用戶服務(wù)402。因此,就對(duì)于SSP所模擬的GUI進(jìn)行的每一操作來(lái)說(shuō),包括三個(gè)步驟。在第一步驟1501,主層發(fā)現(xiàn)組件唯一id和提供者。在第二步驟1502,相應(yīng)的提供者將事件對(duì)象(從Java事件管理器接收的)編排或轉(zhuǎn)換為相應(yīng)的事件GUI日志文本記錄。在第三步驟1503,將事件GUI日志文本記錄傳輸至監(jiān)督用戶服務(wù)。
返回至圖13A中的步驟1303,如果確定該日志文本記錄是事件類型的,則過(guò)程610沿“用戶”箭頭前進(jìn)至步驟1307。在步驟1307,主層從GUI樹中發(fā)現(xiàn)GUI組件和相應(yīng)的提供者。在隨后的步驟1308,提供者對(duì)相應(yīng)的GUI組件采取程序化操作。
返回至步驟1303,如果確定該日志文本記錄是快照類型的,則過(guò)程610沿“快照”箭頭前進(jìn)至步驟1309。在步驟1309,主層從快照日志文本記錄中獲得GUI樹層次信息,并創(chuàng)建GUI樹。該快照日志文本記錄具有對(duì)應(yīng)于該GUI樹中每一GUI節(jié)點(diǎn)的組件日志文本記錄。在隨后的步驟1312,對(duì)于該GUI樹中的每一節(jié)點(diǎn),主層將存在于該快照記錄中的相應(yīng)的組件日志文本記錄傳送至相應(yīng)的提供者。此后,在步驟1313,各提供者返回GUI組件,該GUI組件與在步驟1312主層傳送給它們的組件日志文本記錄相對(duì)應(yīng)。在隨后的步驟1314,主層根據(jù)存在于快照日志文本記錄中的層次信息添加和/或布置所返回的GUI組件,最后,主層刷新整個(gè)應(yīng)用GUI。
圖14更詳細(xì)地示出了圖7中的步驟605,該步驟涉及監(jiān)督用戶服務(wù)402。監(jiān)督用戶服務(wù)402運(yùn)行于客戶端應(yīng)用側(cè)。監(jiān)督用戶服務(wù)402從GUI模擬器411接收編排后的GUI日志文本記錄。主層使用GUI日志記錄服務(wù)405所準(zhǔn)備的GUI樹。GUI日志文本記錄的處理包括2個(gè)步驟。首先,監(jiān)督用戶服務(wù)402根據(jù)存在于所接收的GUI日志文本記錄中的信息,發(fā)現(xiàn)GUI組件對(duì)象和提供者。第二,監(jiān)督用戶服務(wù)402將編排后的GUI日志文本記錄與所發(fā)現(xiàn)的GUI組件一起傳送至相應(yīng)的提供者。第三,該提供者對(duì)該GUI組件程序化地應(yīng)用該事件(即相應(yīng)的日志文本記錄)。這樣,例如,如果接收到按鈕單擊日志文本記錄,則監(jiān)督用戶服務(wù)402對(duì)相應(yīng)的組件調(diào)用doClick()方法。
例如,doClick()方法的調(diào)用,產(chǎn)生與客戶端應(yīng)用用戶的操作相同的效果。這樣,例如,doClick()方法的調(diào)用,對(duì)于GUI生成與用戶的操作所會(huì)生成的相同的效果。一些GUI組件提供創(chuàng)建與用戶操作相同的效果的API,但一些GUI組件可能不是這樣。因此,該特征取決于這樣的API的可用性。
返回圖14,在初始化步驟1401,主層從GUI模擬器接收編排后的GUI日志文本記錄,之后,在步驟1402,主層發(fā)現(xiàn)GUI組件對(duì)象和相應(yīng)的提供者。此后,在步驟1403,主層將編排后的GUI日志文本記錄與所發(fā)現(xiàn)的GUI組件一起,傳送至相應(yīng)的提供者。隨后,在步驟1404,提供者將該事件(即日志文本記錄)程序化地應(yīng)用于該GUI組件。然后,過(guò)程605沿箭頭1405返回至步驟1401。
因此,圖14中的過(guò)程605循環(huán)步驟1401-1404,直到服務(wù)支持操作者完成對(duì)應(yīng)用的遠(yuǎn)程操作。
所公開的GLTR方法的多個(gè)優(yōu)點(diǎn)是顯而易見的。所公開的方法并不強(qiáng)制需要與現(xiàn)有客戶端應(yīng)用結(jié)合,并且并不需要除了用于向GUI日志記錄服務(wù)405進(jìn)行注冊(cè)所需的代碼之外的任何代碼變化。
GUI日志記錄服務(wù)405以GUI日志文本記錄的形式執(zhí)行GUI屏幕和事件的日志記錄,因此,網(wǎng)絡(luò)和日志記錄開銷是最小的。GUI日志記錄服務(wù)405以GUI日志文本記錄、而不是圖像的形式對(duì)GUI屏幕進(jìn)行記錄,(除了在組件(即圖標(biāo)、按鈕)中使用的圖像,即gif、jpg之外)。
由于以GUI日志文本記錄的形式執(zhí)行該日志記錄,所以所公開的方法使客戶端應(yīng)用的程序化分析能夠使用模式、簡(jiǎn)化的統(tǒng)計(jì)以及基于策略的支持服務(wù)??蛻舳藨?yīng)用用戶能夠通過(guò)在執(zhí)行GUI再現(xiàn)/模擬時(shí)不記錄組件中的確切數(shù)據(jù)(即正文)或不向SSP顯示數(shù)據(jù),來(lái)確保組件(即JTextField)中所存在的數(shù)據(jù)的保密性。應(yīng)該指出的是,即使在這種情況下,GUI模擬器也將示出組件(即JTextField)但不會(huì)示出數(shù)據(jù)(即正文)。在一種有利的布置中,可示出“*”或已加密的數(shù)據(jù),而不示出組件(即JTextField)中的實(shí)際數(shù)據(jù)(即正文)。
上面僅描述了本發(fā)明的一些實(shí)施例,在不脫離本發(fā)明的范圍和精神的情況下,可對(duì)其進(jìn)行修改和/或變換,這些實(shí)施例是說(shuō)明性的,而不是限制性的。
權(quán)利要求
1.一種提供對(duì)于在第一機(jī)器上運(yùn)行的客戶端軟件應(yīng)用的支持的方法,所述方法包括以下步驟在第一機(jī)器處將圖形用戶界面顯示和相關(guān)的用戶操作記錄為基于文本的日志記錄;在第二機(jī)器處根據(jù)涉及所述客戶端軟件應(yīng)用在所述第一機(jī)器上的運(yùn)行的支持請(qǐng)求而調(diào)用支持服務(wù);將所記錄的日志文本記錄發(fā)送至第二機(jī)器;以及在第二機(jī)器處根據(jù)所記錄的日志文本記錄模擬圖形用戶界面顯示和相關(guān)的用戶操作;其中所述支持是根據(jù)所述模擬而提供的。
2.根據(jù)權(quán)利要求1的方法,還包括以下步驟由第二機(jī)器處理從第一機(jī)器接收的所記錄的日志文本記錄;將處理后的、表示對(duì)于所模擬的圖形用戶顯示采取的操作的日志文本記錄發(fā)送至第一機(jī)器;根據(jù)第二機(jī)器所接收的處理后的日志文本記錄,從第二機(jī)器對(duì)在所述第一機(jī)器上運(yùn)行的客戶端軟件應(yīng)用遠(yuǎn)程地進(jìn)行操作;其中所述支持是進(jìn)一步根據(jù)從第二機(jī)器對(duì)在所述第一機(jī)器上運(yùn)行的客戶端軟件應(yīng)用進(jìn)行的遠(yuǎn)程操作而提供的。
3.根據(jù)權(quán)利要求2的方法,其中所述記錄圖形用戶界面顯示和相關(guān)的用戶操作的步驟包括以下步驟當(dāng)所述客戶端軟件應(yīng)用運(yùn)行時(shí),在第一機(jī)器處調(diào)用GUI日志記錄服務(wù);檢測(cè)GUI事件;確定相關(guān)的組件層次;以及將與所述GUI事件相關(guān)的GUI顯示和相關(guān)的用戶操作記錄為所述基于文本的日志記錄。
4.一種用于提供對(duì)于在第一機(jī)器上運(yùn)行的客戶端軟件應(yīng)用的支持的裝置,所述裝置包括用于存儲(chǔ)程序的存儲(chǔ)器;以及用于執(zhí)行該程序的處理器,所述程序包括用于在第一機(jī)器處將圖形用戶界面顯示和相關(guān)的用戶操作記錄為基于文本的日志記錄的代碼;用于在第二機(jī)器處根據(jù)涉及所述客戶端軟件應(yīng)用在所述第一機(jī)器上的運(yùn)行的支持請(qǐng)求而調(diào)用支持服務(wù)的代碼;用于將所記錄的日志文本記錄發(fā)送至第二機(jī)器的代碼;以及用于在第二機(jī)器處根據(jù)所記錄的日志文本記錄模擬所述圖形用戶界面顯示和相關(guān)的用戶操作的代碼;其中所述支持是根據(jù)所述模擬而提供的。
5.一種用于提供對(duì)于在第一機(jī)器上運(yùn)行的客戶端軟件應(yīng)用的支持的裝置,所述裝置包括用于在第一機(jī)器處將圖形用戶界面顯示和相關(guān)的用戶操作記錄為基于文本的日志記錄的裝置;用于在第二機(jī)器處根據(jù)涉及所述客戶端軟件應(yīng)用在所述第一機(jī)器上的運(yùn)行的支持請(qǐng)求而調(diào)用支持服務(wù)的裝置;用于將所記錄的日志文本記錄發(fā)送至第二機(jī)器的裝置;以及用于在第二機(jī)器處根據(jù)所記錄的日志文本記錄模擬所述圖形用戶界面顯示和相關(guān)的用戶操作的裝置;其中所述支持是根據(jù)所述模擬而提供的。
全文摘要
本發(fā)明公開了GUI日志文本記錄布置(稱為GLTR布置),其使支持服務(wù)提供者(SSP)機(jī)(101)與客戶機(jī)(108)之間的問(wèn)題診斷過(guò)程變得容易。關(guān)于客戶端應(yīng)用,在客戶機(jī)(108)上以GUI日志文本記錄的形式記錄圖形用戶界面(GUI)屏幕及其相關(guān)的用戶操作。SSP機(jī)(101)根據(jù)從客戶機(jī)(108)傳送來(lái)的所記錄的GUI日志文本記錄,再現(xiàn)應(yīng)用GUI屏幕和用戶操作。對(duì)于SSP機(jī)(101),提供用于瀏覽歷史的應(yīng)用GUI屏幕及其相關(guān)的用戶操作的手段。該GLTR系統(tǒng)還提供用于對(duì)客戶端應(yīng)用遠(yuǎn)程地進(jìn)行操作以進(jìn)一步澄清問(wèn)題和/或采取用于克服該問(wèn)題的補(bǔ)救操作的手段。
文檔編號(hào)H04L29/08GK1976352SQ20061014673
公開日2007年6月6日 申請(qǐng)日期2006年11月16日 優(yōu)先權(quán)日2005年11月29日
發(fā)明者V·S·森加爾 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
嘉义市| 铜山县| 万宁市| 河西区| 黄浦区| 岳普湖县| 抚顺县| 万源市| 九台市| 长治市| 玉山县| 青川县| 枣阳市| 临澧县| 黎川县| 沧源| 黑龙江省| 余庆县| 宜宾县| 盐源县| 西和县| 昌图县| 牟定县| 滕州市| 秭归县| 自贡市| 和田市| 敖汉旗| 安丘市| 昌平区| 溧水县| 宁蒗| 临沧市| 贵港市| 万盛区| 正阳县| 大化| 卢湾区| 治县。| 高雄县| 闽清县|