CN1976352A - 用于提供远程软件应用的支持的方法和系统 - Google Patents

用于提供远程软件应用的支持的方法和系统 Download PDF

Info

Publication number
CN1976352A
CN1976352A CNA2006101467312A CN200610146731A CN1976352A CN 1976352 A CN1976352 A CN 1976352A CN A2006101467312 A CNA2006101467312 A CN A2006101467312A CN 200610146731 A CN200610146731 A CN 200610146731A CN 1976352 A CN1976352 A CN 1976352A
Authority
CN
China
Prior art keywords
gui
machine
daily record
text entry
service
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CNA2006101467312A
Other languages
English (en)
Inventor
V·S·森加尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN1976352A publication Critical patent/CN1976352A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了GUI日志文本记录布置(称为GLTR布置),其使支持服务提供者(SSP)机(101)与客户机(108)之间的问题诊断过程变得容易。关于客户端应用,在客户机(108)上以GUI日志文本记录的形式记录图形用户界面(GUI)屏幕及其相关的用户操作。SSP机(101)根据从客户机(108)传送来的所记录的GUI日志文本记录,再现应用GUI屏幕和用户操作。对于SSP机(101),提供用于浏览历史的应用GUI屏幕及其相关的用户操作的手段。该GLTR系统还提供用于对客户端应用远程地进行操作以进一步澄清问题和/或采取用于克服该问题的补救操作的手段。

Description

用于提供远程软件应用的支持的方法和系统
技术领域
本发明总体涉及对在远离服务支持设备的机器上运行的客户端应用提供技术支持,尤其涉及自动或半自动的支持技术。
背景技术
由于商业软件应用的复杂性及其所有权成本的增加,企业越来越意识到对运行在“客户端侧”的应用进行远程支持的需要。用于支持客户端侧的应用的当前方法是劳动密集的,这导致了增加的问题诊断时间,因而导致了增加的所有权成本。
发明内容
本发明的目的在于基本上克服、或至少改善现有布置的一个或多个缺点。
本发明公开一种称为GUI日志文本记录布置的布置,其通过使支持服务提供者(SSP)与客户之间的问题诊断过程变得容易,来解决上述问题。虽然在说明书中使用了术语“问题”和“问题解决方案”,但应该指出的是,即使不存在“问题”和“故障”,用户同样可以仅调用所公开的GUI日志文本记录布置(也称为GLTR布置),来获得帮助。本说明书应结合这一点来理解。该GLTR方法典型地大量减少应用问题诊断时间。关于应用,以GUI日志文本记录的形式记录图形用户界面(GUI)屏幕及其相关的用户操作。该GLTR系统根据所记录的GUI日志文本记录,准确或高度一致地再现应用GUI屏幕和用户操作。在某些情况下,所模拟的GUI屏幕可能不完全与历史的客户端GUI屏幕相同。然而,在大多数情况下,所公开的系统能够使用组件(即java.awt.component的孩子)再现至少应用GUI的一部分。对于SSP,提供用于浏览历史的应用GUI屏幕及其相关的用户操作的手段。该GLTR系统还提供用于对客户端应用远程地进行操作以进一步澄清问题和/或采取克服该问题的补救操作的手段。
所公开的GLTR布置以压缩的GUI日志文本记录的形式执行GUI屏幕和事件的日志记录,因此,网络和日志记录开销是最小的。例如,以GUI日志文本记录而不是图像的形式,对GUI屏幕进行日志记录。在组件(即图标和按钮)中使用的图像(即gif、jpg)被记录为图像,而使用GUI日志文本记录来记录显示有前述组件的屏幕。此外,一旦所讨论的客户端应用初始化了日志记录服务(见图5中的405),所公开的GLTR布置便不需要来自所讨论的客户端应用的任何支持。
根据本发明的第一方面,提供一种提供对于在第一机器上运行的客户端软件应用的支持的方法,所述方法包括以下步骤:
在第一机器处将图形用户界面显示和相关的用户操作记录为基于文本的日志记录;
在第二机器处根据涉及所述客户端软件应用在所述第一机器上的运行的支持请求而调用支持服务;
将所记录的日志文本记录发送至第二机器;以及
在第二机器处根据所记录的日志文本记录模拟图形用户界面显示和相关的用户操作;
其中所述支持是根据所述模拟而提供的。
根据本发明的另一方面,提供一种用于提供对于在第一机器上运行的客户端软件应用的支持的装置,所述装置包括:
用于存储程序的存储器;以及
用于执行该程序的处理器,所述程序包括:
用于在第一机器处将图形用户界面显示和相关的用户操作记录为基于文本的日志记录的代码;
用于在第二机器处根据涉及所述客户端软件应用在所述第一机器上的运行的支持请求而调用支持服务的代码;
用于将所记录的日志文本记录发送至第二机器的代码;以及
用于在第二机器处根据所记录的日志文本记录模拟图形用户界面显示和相关的用户操作的代码;
其中所述支持是根据所述模拟而提供的。
根据本发明的另一方面,提供一种用于提供对于在第一机器上运行的客户端软件应用的支持的装置,所述装置包括:
用于在第一机器处将图形用户界面显示和相关的用户操作记录为基于文本的日志记录的装置;
用于在第二机器处根据涉及所述客户端软件应用在所述第一机器上的运行的支持请求而调用支持服务的装置;
用于将所记录的日志文本记录发送至第二机器的装置;以及
用于在第二机器处根据所记录的日志文本记录模拟图形用户界面显示和相关的用户操作的装置;
其中所述支持是根据所述模拟而提供的。
根据本发明的另一方面,提供一种包括计算机可读介质的计算机程序产品,该计算机可读介质具有记录在其上的计算机程序,该计算机程序用于引导处理器执行一种提供对于在第一机器上运行的客户端软件应用的支持的方法,所述程序包括:
用于在第一机器处将图形用户界面显示和相关的用户操作记录为基于文本的日志记录的代码;
用于在第二机器处根据涉及所述客户端软件应用在所述第一机器上的运行的支持请求而调用支持服务的代码;
用于将所记录的日志文本记录发送至第二机器的代码;以及
用于在第二机器处根据所记录的日志文本记录模拟图形用户界面显示和相关的用户操作的代码;
其中所述支持是根据所述模拟而提供的。
本发明的其他方面也被公开。
附图说明
现在参照附图对现有技术的一些方面和本发明的一个或多个实施例进行描述,其中:
图1示出了在其中能够实现所公开的GLTR方法的计算机系统的功能框图;
图2示出了能够实现所公开的GLTR方法的通用计算机布置;
图3示出了能够在图1的系统上实现的现有技术远程支持过程;
图4示出了一布置,根据该布置能够在图1的系统上实现所公开的GLTR方法;
图5示出了用于实现所公开的GLTR方法的系统400的功能框图;
图6A和6B示出了表示客户端应用的正常操作的过程;
图7示出了图1的服务支持应用进行操作的处理流/数据流图;
图8示出了一过程,根据该过程在图6A和6B中初始化GUI日志记录服务;
图9示出了GUI日志记录服务过程的一个线程;
图10示出了GUI日志记录服务过程的另一个线程;
图11更详细地示出了图9中的步骤802;
图12更详细地示出了图9中的步骤803;
图13A和13B更详细地示出了图7中的步骤610;
图14更详细地示出了图7中的步骤605;以及
图15更详细地示出了图7中的步骤615。
具体实施方式
参照任意一个或多个附图中具有相同的参考标号的步骤和/或特征,除非出现相反的意思,否则这些步骤和/或特征对本说明书来说具有相同的功能或操作。
以下的描述的某些部分明确或隐含地呈现对于计算机存储器内数据的操作的算法和符号表示。这些算法描述和表示,是数据处理领域中的技术人员用于将其工作的内容最有效地传达给本领域的其他技术人员的手段。这里并且一般认为算法是获得所期望的结果的自相一致的步骤序列。这些步骤,是需要物理量的物理操作的。通常,但不是必须的,这些量采用能够被存储、传输、组合、比较和被进行其他操作的电或磁信号的形式。有时,主要是基于通用的原因,将这些信号称作位、值、元素、符号、特性、术语、数量等是方便的。
然而,应该指出,上述以及类似的术语是与适当的物理量相关的,且其仅是应用于这些物理量的方便标签。除非特别说明及从下面明显得出,否则可以理解的是,在整个本说明书中使用诸如“扫描”、“计算”、“确定”、“替代”、“生成”、“初始化”、“输出”等术语而进行的讨论是指计算机系统或类似电子设备的动作和处理,这些动作和处理对在计算机系统的寄存器和存储器内以物理(电子)量表示的数据进行操作,并将其转换为在该计算机存储器或寄存器或其他这样的信息存储设备、传输或显示设备内以物理量类似地表示的其他数据。
本说明书还公开了用于执行GLTR方法的操作的装置。该装置可以针对所需目的专门进行构建,或可以包括能被存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机或其他装置。这里提出的算法和表示并不是固有地与任何特定的计算机或其他装置相关。各通用机器都可与根据本文的教导的程序一起使用。可选地,对执行所需的GLTR方法步骤的多个专用装置的构建可是适宜的。下面对传统通用计算机的结构进行描述。
此外,本发明还隐含地公开了一种计算机程序,因为对于本领域的技术人员来说显而易见的,这里所描述的优选方法的各步骤将由计算机代码来实现。该计算机程序并不旨在限制于任何特定的编程语言及其实现,即使本说明书中是使用Java语言来呈现的。可以理解,可以使用多种编程语言及其编码来实现这里所包括的公开的教导。此外,该计算机程序并不旨在限制于任何特定的控制流。在不脱离本发明的精神或范围的情况下,存在该计算机程序的能够使用不同的控制流的多种其他变体。此外,该计算机程序的一个或多个步骤可以并行而不是顺序地执行。
这样的计算机程序可以存储在任何计算机可读介质上。该计算机可读介质可以包括诸如磁盘或光盘的存储设备、存储芯片或适用于与通用计算机接口的其他存储设备。该计算机可读介质还可以包括诸如在因特网系统中示例化的之类的硬接线的介质,或诸如在GSM移动电话系统中示例化的之类的无线介质。当在这样的通用计算机上加载并执行时,该计算机程序在效果上形成实现优选的GLTR方法的步骤的装置。
图1示出了在其中能够实现所公开的GLTR方法的计算机系统100的功能框图。客户端平台机108具有存储客户端应用110和相关数据111的存储器109。如113所示,客户机108连接至网络106。客户机108与前述组件一起被称为系统100的“客户端侧”,如参考标号107所示。
SSP平台101具有存储支持应用103和相关数据104的存储器102。如112所示,SSP机101连接至网络106。SSP机101与相关组件一起被称为系统100的“支持侧”,如箭头105所示。
图2示出了能够实现所公开的GLTR方法的通用计算机系统。该GLTR方法特别适合于在诸如图2中所示的通用计算机系统1100上实现,其中图4和6-15中的过程可以实现为软件,诸如在计算机系统1100中执行的应用程序。具体地,在由该计算机执行的软件中,利用指令来实现GLTR方法的步骤。这些指令可以形成为一个或多个代码模块,每一个模块用于执行一个或多个特定任务。
该软件也可以划分为两个单独的部分,其中第一部分执行GLTR方法,而第二部分管理第一部分与用户之间的用户接口。该软件可以存储在例如包括下述的存储设备在内的计算机可读介质中。该软件从该计算机可读介质被加载到计算机中,然后由该计算机执行。具有这样的记录在其上的软件或计算机程序的计算机可读介质是一种计算机程序产品。该计算机程序产品在计算机中的使用,优选地实现用于GLTR方法的有利装置。
计算机系统1100由SSP计算机模块101、诸如键盘1102和鼠标1103的输入设备、包括打印机1115的输出设备、显示设备1114和扬声器1117构成。调制解调器(Modem)收发设备1116由计算机模块101用于与通信网络1120进行相互通信,通信网络1120例如可经由电话线1121或其他功能介质连接至客户机108。调制解调器1116能够用于获得对因特网以及诸如局域网(LAN)或广域网(WAN)的其他网络系统的访问,并且在某些实现中其可以被合并到计算机模块101内。
计算机模块101通常包括至少一个处理器单元1105,以及例如由半导体随机存储器(RAM)和只读存储器(ROM)形成的存储器单元102。模块101还包括多个输入/输出(I/O)接口,包括连接至视频显示器1114和扬声器1117的音频-视频接口1107、用于键盘1102和鼠标1103以及可选的游戏杆(未示出)的I/O接口1113以及用于调制解调器1116和打印机1115的接口1108。
在一些实现中,调制解调器1116可以合并到计算机模块101中,例如合并到接口1108内。提供了存储设备1109,其通常包括硬盘驱动器1110和软盘驱动器1111。也可以使用磁带驱动器(未示出)。通常,提供CD-ROM驱动器1112作为非易失性数据源。计算机模块101的组件1105至1113,通常,经由互连总线1104并且以导致对于本领域技术人员而言所公知的计算机系统1100的传统模式的操作的方式进行通信。能够在其上实现所描述的布置的计算机的示例包括IBM-PC和兼容机、Sun Sparcstation或由此演变出的类似的计算机系统。
通常,应用程序驻留在硬盘驱动器1110上,并且在其执行过程中由处理器1105读取和控制。从网络1120获取的程序和任何数据的中间存储可使用半导体存储器1106、可能地协同硬盘驱动器1110来实现。在一些实例中,可以将应用程序编码在CD-ROM或软盘上提供给用户,且经由相应的设备1112或1111来读取其,可选地,用户可以经由调制解调设备1116从网络1120读取应用程序。
更进一步地,软件也可以从其他计算机可读介质被加载至计算机系统1100。这里所使用的术语“计算机可读介质”,指参与向计算机系统1100提供指令和/或数据以便执行和/或处理的任何存储或传输介质。存储介质的示例包括软盘、磁带、CD-ROM、硬盘驱动器、ROM或集成电路、磁-光盘或诸如PCMCIA卡之类的计算机可读卡等,而无论这样的设备位于计算机模块101的内部还是外部。传输介质的示例包括无线电或红外传输信道以及至另一台计算机或联网设备及包括电子邮件传输和记录在网站等上的信息的因特网或内联网的网络连接。
图3示出了能够在图1的系统100上实现的现有技术远程支持过程200。提供远程支持的过程包括三个主要步骤。首先,客户或客户端系统管理员尽其所能向SSP解释问题。然后SSP使用客户端系统管理员所提供的问题描述作为诊断该问题的基础。然后,SSP指导客户端系统管理员修复该问题。转至图3,在步骤214,在过程200的客户端侧201,客户在客户机108上运行应用110。
此外,在步骤203,只要应用110的运行未遇到问题,过程200便将沿“否”箭头返回步骤203。然而,当运行客户端应用110遇到问题时,过程200便沿“是”箭头从步骤203前进到步骤204。在步骤204,客户或客户端系统管理员请求SSP的帮助,之后在步骤205,客户解释客户端应用103正遇到的问题。通常,使用电话和/或电子邮件来执行步骤205,且由于客户经验、报告的准确性等该步骤的准确性易受影响。
然后,过程200前进到步骤209,其中,SSP确定就客户在步骤205所提供的解释是否需要进一步的澄清。如果需要进一步的澄清,则过程200由“是”箭头前进至步骤210,其中SSP请求进一步的澄清。在此情况下,过程200将返回至步骤205,以便客户进一步解释该问题。
返回至步骤209,如果SSP并不需要任何进一步的澄清,然后,系统200沿“否”箭头前进至步骤211,其中SSP确定是否需要对客户机108上的客户端应用110进行远程操作。如果需要,则过程200沿“是”箭头至步骤212。在步骤212,SSP在支持侧202使用平台101远程访问客户端侧201客户机108上的客户端应用110,并对客户机108上的客户端应用110进行远程操作。SSP还在步骤212中采取补救措施。然后,过程200前进至步骤207,以确定该问题是否已解决。如果未解决,则过程200沿“否”箭头返回至步骤205。如果步骤207确定该问题已解决,则过程200沿“是”箭头从步骤207前进至终止步骤208。
返回至步骤211,如果SSP确定不需要远程操作,则过程200沿“否”箭头至步骤213。在步骤213,SSP通常通过电话或电子邮件向客户解释怎样采取补救步骤。然后过程200从步骤213前进至步骤206,其中客户采取补救措施。然后,过程200从步骤206前进至步骤207。
图4示出了布置300,根据该布置能够在图1的系统100上实现所公开的GLTR方法。过程300开始于客户端侧301的步骤313,其中,客户在客户机108上运行客户端软件应用110。接下来的步骤303确定在运行前述客户端应用110时是否遇到故障,且只要没有遇到故障,过程300便将沿“否”箭头返回至步骤303。然而,当遇到问题时,过程300将沿“是”箭头前进至步骤304。在步骤304,客户请求帮助,且根据一种装置,过程300沿箭头308前进至支持侧302的步骤309。在该布置中,客户仅仅报告有问题出现的事实,而并不以任何方式解释该问题。
可选地,过程300能够从步骤304前进至步骤306(以虚线示出,表示该步骤是可选的),其中,客户通过电话或电子邮件向支持侧203的SSP解释该问题。在此情况下,过程300沿箭头307前进至步骤309。
在支持侧302,所公开的GLTR方法根据策略服务器419(见图5)中所存储的策略,确定该问题的性质,并决定策略服务器419中所存储的哪一个支持执行程序适合于解决该问题。然后,将GUI日志(见图5中的409)发送至诸如图5中的411之类的、在支持执行程序的计算机上运行的GUI模拟器,该模拟器根据该GUI日志模拟某些或所有被记入日志的用户屏幕历史操作。
返回图4。在步骤309,在支持侧302,所公开的GLTR系统模拟客户端应用110的图形用户界面(GUI)屏幕(也称为客户端GUI屏幕),并在接下来的步骤310,SSP浏览之前的客户端GUI屏幕和相关的客户端操作。在接下来的步骤311,为了检验步骤310中所显现的信息并且在需要时采取补救措施,SSP使用GLTR SSP软件应用103从支持机101执行对客户机108上的客户端应用110的远程操作。然后,过程300在结束步骤312终止。
图5示出了用于实现所公开的GLTR方法的系统400的功能框图。当在SSP机101上调用支持服务应用(SSA)103时,调用以虚线示出的系统组件(即SSP侧的411-413、415、418和419,以及客户端侧的402和410)。当SSP机101上调用支持服务应用(SSA)103时,调用以虚线示出的可选步骤(即客户端侧的401、404、420和409,以及SSP侧的414、416和417)。当SSP机101接收到支持请求时(图4中的308、307),在SSP机101上调用SSA 103。
在客户端应用110启动时,客户端应用110初始化GUI日志记录服务405,在本说明书中也称为GLOGGER(更多细节见图8-10)。在进行对于客户端应用110的每一GUI操作时执行步骤403、406。在SSP应用103的调用之后执行步骤409、414、416和417。在SSP进行每一GUI操作时执行步骤401和404。
通常,SSP应用103将GUI模拟器411-413(更多细节见图12)与支持协调器415(更多细节见图7)相结合。授权服务器418和策略服务器419驻留在SSP应用103中,或其他位置。监督用户服务402(更多细节见图14)和日志协调器服务410可能地作为客户端应用110的一部分驻留在客户机108上。具体地,监督用户服务402和GUI日志记录服务405典型地以这样的服务的形式作为客户端应用进程110(见图5)中的组件来运行,该服务由客户端应用110通过调用函数startLoggingService()而被调用。由GUI日志记录服务405来管理剩余部分的涉及GLTR方法的相关处理和GUI日志数据库408的管理(见图5)。GUI日志记录服务405作为客户端应用110中的独立的线程运行。这样,客户端应用110并不提供对于执行日志记录所需的所有处理的GUI日志记录服务405的任何支持。
GUI日志数据库408是客户机108中存储器109的数据111的一部分。
当客户运行客户端应用110时,接着GUI日志记录服务405(称为GLOGGER)被初始化。每当客户端应用110由于客户端应用110的自主操作或由于客户操作而发生GUI事件时,该GUI事件的对象便被提供给GUI日志记录服务405,如箭头403所表示的那样。前述的GUI事件的事件对象(即java.awt.event.ActionEvent)由Java事件管理器来提供。然而,应该指出的是,GUI日志记录服务405从客户端应用110中“拉出”该GUI事件对象,或者换句话说,客户端应用110无法将该GUI事件对象“推出”给GUI日志记录服务405。然后,如箭头406所表示的,GUI日志记录服务405在GUI日志数据库408中存储相应的GUI日志文本记录。
GUI日志记录服务405以GUI日志文本记录的形式将GUI屏幕和操作记入日志,并存储这些日志文本记录,如GUI日志数据库408中的箭头406所表示的。GUI日志记录服务405注册捕获前述GUI事件的事件处理器。在应用GUI上这些事件处理器被记录为不同的GUI组件。因此,GUI日志记录服务405将与客户端应用110相关的所有用户操作和应用GUI变化记入日志。GUI日志记录服务405只为客户端应用110所处理的那些事件记录事件处理器,从而大量减少了数据库408中所存储的日志的大小。
如箭头406所表示的,在GUI日志数据库408中所存储的GUI日志文本记录是存储关于应用GUI屏幕组件和用户操作的信息的文本记录。GUI日志文本记录属于三种不同的类型,即(a)组件GUI日志文本记录,(b)事件GUI日志文本记录,以及(c)快照GUI日志文本记录。
组件GUI日志文本记录存储该组件的所有属性、客户端应用110为该组件所记录的事件监听器的列表、GUI日志记录服务405所生成的GUI组件的布局和组件id,以便能够根据组件GUI日志文本记录重建相应的GUI组件。组件GUI日志文本记录还存储与GUI树中的其他组件相关的层次信息。
事件GUI日志文本记录存储关于GUI组件的用户操作和属性变化的信息。事件GUI日志文本记录存储涉及该事件的所有信息、唯一地标识该事件的事件id以及相应的组件id,以便能够在SSP侧根据该事件GUI日志文本记录再现相应的事件。
快照GUI日志文本记录是日志文本记录的一种类型,其具有构建之前在特定时间出现的应用GUI屏幕的充足信息。快照GUI日志文本记录通常用于将多个事件/操作打包为单个日志文本记录,典型地,为了减小存储器和通信传输带宽需求。
如所指出的,在服务支持被请求时,以虚线格式示出的系统400的元素被调用。相应地,在支持服务提供者侧,支持协调器415、授权服务器418、策略服务器419以及GUI模拟器411、412和413被调用。可以存在任何数量的GUI模拟器,其中至少一个具有每一支持执行程序。典型地,对于一个服务支持请求调用前述GUI模拟器之一。在客户端侧,当由于客户报告故障而调用支持服务时,监督用户服务402和日志协调器服务410被调用。
在客户端应用110的正常操作过程中,每一GUI操作都将引发如403所表示的GUI事件的日志记录以及如406所表示的相应GUI日志文本记录的存储。
在接收到支持请求以及随之发生的SSA 103的调用时,如虚线箭头420所表示的,日志协调器服务410访问GUI日志数据库408中所存储的GUI日志文本记录。然后,如虚线箭头409所表示的,日志协调器服务410将前述GUI日志文本记录提供给支持协调器415。如虚线箭头416所表示的,支持协调器415通过调用授权服务器418,确定该支持请求是否是授权的。如果这引发服务请求的授权,则支持协调器415调用策略服务器419,并从策略服务器419接收适当的支持服务执行程序以处理该支持请求,如虚线箭头417所表示的。然后,如虚线箭头414所表示的,支持协调器415将GUI日志文本记录传送至该支持执行程序的GUI模拟器411。
客户端应用GUI可能会响应于监督用户服务(见图4中的311)所实施的操作引发的程序化操作而在调用支持服务(见图7中的606)之后发生变化。这些变化需要反应在所模拟的GUI中(见图4中的309),为了确保这样的状态的实现,日志协调器服务410继续将调用支持服务之后所产生的、新的GUI日志文本记录发送至支持协调器415,支持协调器415将这些内容发送至相关的GUI模拟器。如图13A和13B所示的那样,这些新的GUI日志文本记录被应用。
GUI模拟器411使用GUI日志文本记录,使SSP能够重建客户端应用GUI屏幕。GUI日志文本记录捕获之前所有的客户端GUI屏幕和操作,并且使SSP能够为了理解客户端应用110的操作而浏览之前客户端应用GUI操作和屏幕。如虚线箭头401所表示的,SSP也能够使用监督用户服务402对客户端应用110实施如虚线箭头404所表示的针对所模拟的GUI采取的操作。这实现了SSP在支持侧对客户端应用110的远程操作。
所公开的GLTR系统和方法的实现使用了Java(1.3版)语言,这仅是代表性的实现。因此,所公开的实现支持以所提到的Java语言实现的应用。还可以使用Java Abstract Window ToolkitTM和SwingTM应用程序接口(API)。在基于提供者的体系结构的基础上,来实现GUI日志记录服务405(GLOGGER)、GUI监督用户服务402(GSHADOW)和GUI模拟器组件411-413(GSIM)。该体系结构具有一个主层以及针对每一GUI组件的提供者。该主层提供对提供者所支持的API的说明。该主层进行普通处理,并使用提供者功能以进行特定于GUI组件的处理。虽然本说明书使用了Java语言,但也可以使用提供功能上与结合Java所描述的API等价的事件处理API的其他语言。
图6A和6B示出了表示客户端应用110的正常操作(见图5)的过程片段500和500’。过程片段500和500’与客户端侧501相关。过程片段500以步骤313开始,其中客户在客户机108上运行客户端应用110(见图1)。在接下来的步骤504,客户端应用110初始化GUI日志记录服务405。在接下来的步骤518,GUI日志记录服务405获取最顶层客户端应用GUI组件的列表作为输入,并确定与该GUI相关的组件层次。在GUI日志记录服务405被初始化时,步骤505确定适当的事件处理器是否检测到GUI操作。如果未检测到,则过程500沿“否”箭头返回至步骤505。相反,如果发生了GUI操作,则过程500沿“是”箭头前进至步骤506。在步骤506,GUI日志记录服务405创建所检测到的相应GUI事件的GUI日志文本记录。随后的步骤515(图6B中示出)确定是否有组件从该组件层次中被移除或被添加到该组件层次中(见图12)。如果有,则过程500沿“是”箭头前进至步骤516,更新与GUI相关的组件层次。如果没有组件被移除或添加,则过程500沿“否”箭头从步骤515前进至步骤507。
随后的步骤507在GUI日志数据库408中存储GUI日志文本记录。在随后的步骤508,GUI日志记录服务405确定客户端应用110是否仍在运行。如果在运行,则过程500沿“是”箭头返回至图6A中的步骤505。返回到图6B中的步骤508,如果GUI日志记录服务405确定客户端应用110未在运行,则过程500从步骤508沿“否”箭头前进至终止步骤509。从实际的观点出发,在优选布置中,GUI日志记录服务405作为客户端应用110中的线程而运行,所以当客户端应用110终止时,GUI日志记录服务405也终止。
图7示出了处理流/数据流片段600和600’,服务支持应用103(见图1)根据该流程进行操作。诸如618之类的实线格式的箭头表示所讨论的过程从位于所讨论的箭头起点的步骤(例如步骤603位于箭头618的起点)前进到位于所讨论的箭头末端的步骤(例如步骤604位于箭头618的末端)的方式。相反,诸如617之类的虚线格式的箭头表示数据流从位于所讨论的箭头起点的步骤(例如步骤604位于箭头617的起点)前进到位于所讨论的箭头末端的步骤(例如步骤607位于箭头617的末端)的方式。
片段600从支持请求开始,如箭头308或箭头307(见图4)所表示的,该支持请求是在客户或可选地客户端应用110请求帮助时产生的。如箭头316(见图4)所表示的,片段600’也从支持请求开始。
在支持侧602接收到帮助请求时,步骤606调用支持侧的支持服务组件。这些支持服务组件是GUI模拟器411、412和413、支持协调器415、授权服务器418以及策略服务器419。然后,片段600前进至步骤607。步骤603调用客户端侧支持组件。这些组件包括日志协调器服务410和监督用户服务402。在随后的步骤604,日志协调器服务410访问GUI日志数据库408中的GUI日志文本记录,并如虚线箭头617所表示的,将该GUI日志文本记录发送至支持侧602的支持协调器415。在步骤607,支持协调器415接收前述GUI日志文本记录,之后在步骤608,支持协调器415询问授权服务器418,以确定是否该对该支持请求授权。如果授权,则过程600沿“是”箭头前进至步骤609。在步骤609,支持协调器415通过询问策略服务器419,确定合适的服务支持执行程序。返回至步骤608,如果授权服务器418指示并不对该支持请求授权,则过程600沿“否”箭头前进至步骤613,其中向支持协调器415发送消息,大意表示该服务请求未被授权,且不能被许可。支持协调器415将其作为出错消息传递至客户端应用110。
在步骤609,在策略服务器419向支持协调器415提供了适合的服务支持执行程序时,如箭头611所表示的,片段600前进至步骤610,其中诸如411之类的GUI模拟器使用客户端侧所发送的GUI日志文本记录重建应用GUI屏幕。在步骤610,SSP在支持侧602浏览历史GUI屏幕和用户操作信息,直到确定问题所在为止。
如虚线箭头614所表示的,在步骤610(结合图13A和13B更详细地进行描述)重建了应用GUI屏幕时,在SSP侧602可对所模拟的GUI屏幕进行操作,如步骤615所描述的。这将结合图15更详细地进行描述。
如虚线箭头618所表示的,SSP在步骤615对所模拟的GUI所采取的GUI操作,作为GUI日志文本记录,被传送至步骤605,其中客户端侧601上的监督用户服务402远程操作客户端应用110,如结合图14更详细地描述的。
在步骤605,监督用户服务402所进行的客户端应用的上述操作,将引起客户端应用GUI变化。这些变化需要被镜像至SSP所模拟的GUI。为了实现该操作,如虚线箭头616所表示的,监督用户服务402将GUI日志文本记录发送至日志协调器服务410。步骤610使用由日志协调器服务所传递的GUI日志文本记录,以更新所模拟的GUI屏幕,如关于图13A和13B更详细地描述的。
因此,步骤610处理由于监督用户服务402在步骤605中所采取的操作而产生的GUI日志文本记录的方式,与步骤610对在初始的支持调用时支持协调器服务415所发送的GUI日志文本记录进行处理的方式相同。
如前所述,为了反映响应于监督用户服务402所采取的程序化操作而发生的客户端应用GUI变化,GUI日志协调器服务410持续发送新的GUI日志文本记录(这些是在支持调用之后被存储的记录),该记录由GUI日志记录服务405存储在GUI日志数据库408中。应该指出的是,日志协调器服务410并不发送对应于监督用户服务402所采取的操作的GUI日志文本记录,而是仅发送对应于应用GUI变化的GUI日志文本记录,该变化是响应于监督用户服务402所采取的程序化操作而发生的。如616所示被发送的日志文本记录被用于区分与监督用户服务所采取的操作和客户端应用GUI变化对应的日志文本记录。
图8示出了一过程,根据该过程在图6A的步骤504和518初始化GUI日志记录服务405。GUI日志记录服务405执行GUI事件和屏幕的日志记录。在注册顶层GUI组件对象的客户端应用110列表时,初始化GUI日志记录服务405。GUI日志记录服务405执行注册之后出现的GUI操作和屏幕的日志记录。通常,客户端应用110在客户端应用110的启动时向GUI日志记录服务405注册,然而该注册能够在任何时间执行。如果在启动之后执行该注册,则GUI日志记录服务将不会获得在注册之前出现的任何应用GUI信息。因此,该系统将不能再现(即模拟)在注册之前出现的GUI屏幕/操作。
GUI日志记录服务405的初始化包括三个步骤。首先,GUI日志记录服务405使用Java所提供的GUI父子关系API来发现所有GUI组件及其相关层次。以这种方式,GUI日志记录服务405创建GUI树,该GUI树具有关于在客户端应用110的GUI中所存在的GUI组件的所有信息。应该指出的是,该GUI树具有关于GUI组件的信息,而不是GUI组件对象的信息,此外,每一GUI组件由GUI日志记录服务405所生成的唯一id来标识。
第二,GUI日志记录服务405发现按客户端应用110的GUI组件所注册的事件监听器的列表。由此,GUI日志记录服务405了解客户端应用110所处理的GUI事件。第三,GUI日志记录服务405向每一GUI组件注册其自身的事件监听器。换句话说,对于客户端应用110所注册的每一事件处理器,GUI日志记录服务405还注册单独的事件监听器。以这种方式,GUI日志记录服务405捕获客户端应用110所处理的所有用户操作。
GUI日志记录服务405还注册其他的监听器,以跟踪GUI组件的添加、移除和属性变化。GUI日志记录服务405向每一GUI组件注册属性变化监听器,以跟踪GUI组件的属性变化。GUI日志记录服务405注册组件监听器,以跟踪GUI组件移除和添加。大多数GUI组件提供都上述监听器。如果不提供,则使用探测机制和语言(即Java)所提供的事件监听器API来实现这些监听器。为了捕获这些变化,前述监听器探测不同的GUI组件。该探测可以是基于事件的(在此情况下,每一次刷新GUI屏幕,相应的顶层组件便发生变化)或者该探测可以是基于间隔的(在此情况下,用户能够指定两次探测之间的时间间隔)。属性变化监听器的一个可能的有效实现可以是,其在任一用户事件处理器报告事件时检查组件的属性(即JTextField中的文本)变化。这样的属性变化事件监听器将确保在用户进行由客户端应用所捕获到的操作时使日志得以更新。注意:术语“事件处理器”和“监听器”指捕获事件/操作并将它们送至日志记录服务的代码。
过程504从步骤701开始,其中GUI日志记录服务405发现所有的应用GUI组件及其相关层次。此后,在步骤702,GUI日志记录服务405创建GUI树。在随后的步骤703,GUI日志记录服务405发现每一应用GUI组件的所注册的事件监听器的列表。此后,在步骤704,GUI日志记录服务405向每一应用GUI组件注册其自身的事件监听器。随后,GUI日志记录服务405向每一应用GUI组件注册其自身的属性变化监听器。在随后的步骤706,GUI日志记录服务405注册其自身的组件监听器,以跟踪组件添加和/或移除。然后,过程504沿箭头512前进至图6A中的步骤505。
图9和10示出了在图6A中的步骤518之后开始前进到图6B中的步骤508的流程。该流程包括标记为800和800’的2个过程线程。过程800和800’以基本的格式示出,它们表示两个并发运行的过程。过程800结合图9来描述,并发过程800’结合图10来描述。
过程800从步骤801开始,其中GUI日志记录服务405确定所检测的GUI操作是否涉及属性变化和/或用户操作事件。如果涉及,则过程800沿“是”箭头前进至步骤802。在步骤802,GUI日志记录服务执行属性变化和/或用户操作事件日志记录过程,该过程结合图11更详细地被描述。在处理802完成时,过程800沿箭头513前进至图6B中的步骤508。
返回至步骤801,如果GUI日志记录服务405确定所出现的GUI操作与属性变化和/或用户操作事件无关,则过程800沿“否”箭头前进至步骤803。在步骤803,GUI日志记录服务405执行组件添加和/或移除日志记录操作,该操作结合图12更详细地被描述。在步骤803完成时,过程800经由箭头805,从步骤803前进至图6B中的步骤508。
图10示出了过程线程800’,其与结合图9所描述的过程800并发运行。在过程800’中,GUI日志记录服务405进行不同类型的事件日志记录,其中所讨论的事件的复合日志被压缩为快照。GUI屏幕和用户操作以文本记录的形式被记入日志,以使记录开销接近于最小,这通常是所公开的GLTR方法的情形。
利用以下示例对快照日志文本记录进行最佳描述。快照日志文本记录是日志文本记录的一种类型,其具有构建在之前的特定时间出现的应用GUI屏幕的充足信息。其通常用于将多个事件打包为单个日志文本记录,典型地,为了减少存储器和通信传输带宽需求。这样,例如,如果特定客户端应用具有4个按钮,且由于一系列用户和程序化操作,发生了下面的事件序列:
(1)按钮1被单击;
(2)按钮2被单击;
(3)按钮3被单击;
(4)按钮2被移除;
(5)文本框被添加。
考虑上述示例,如果捕获每一事件(即单独地进行日志记录),则必须以5个相应的事件日志文本记录的形式捕获5个单独的事件。然而,在客户端应用运行较长的一段时间且出现了大量操作的情况下,对每一事件存储单独的日志文本记录会消耗大量的存储器。在这种情况下,采用“快照事件记录”方法,能够有效地将多个事件压缩为单个快照日志文本记录。返回至上述具有5个单独事件的示例,相应的快照日志文本记录将以下面的格式存储信息:
按钮1(单击状态),按钮3(单击状态),按钮4(未单击状态),一个文本框。
明显地,上述快照日志文本记录并未存储任何各变化和/或操作何时发生的时间信息。该快照日志文本记录仅存储所有操作和/或变化的集合效果。从粒度的观点出发,快照记录可以按照客户端应用的用户所确定的时间间隔被记录。因此,能够以每小时、每天或任何方便的频率对快照日志记录进行记录。这使得能够从存储器中删除大量的单个日志文本记录,从而在某些情况下节省大量的存储器容量。在实际中,用户通常可保存最近(例如,前1天或2天)的各日志文本记录,而在该时间之前被记录的操作则以每小时被压缩为快照日志文本记录。
考虑前述的快照GLTR示例,显而易见,通过创建以客户端应用110的用户所定义的时间粒度生成的GUI快照,能够进一步使日志记录开销最小化。GUI快照日志文本记录是GUI树的日志,该GUI树具有与客户端应用110的GUI中、在快照生成时所存在的所有GUI组件相关的全部信息。GUI快照日志文本记录具有与客户端应用110的GUI中、在给定时间所存在的所有GUI组件相关的全部信息。该GUI快照并不以事件或操作的形式存储,而是以GUI树的编排后的副本的形式所存储。
在其他情况下,客户端应用GUI屏幕以与之前的屏幕的区别的形式进行存储。应该指出的是,通常,诸如鼠标单击之类的用户操作或诸如setText之类的程序化操作/属性变化事件,均被记录为相应的事件日志文本记录。因此,对于客户端应用GUI中的每一变化,GUI日志记录服务405通常会向日志添加日志文本记录。然而,如果日志文本记录的数量超过预定阈值,则GUI日志记录服务405通过创建将之前的日志文本记录组合的快照日志文本记录,来降低日志记录开销。日志文本记录被压缩为快照记录的粒度由客户端应用110的用户来设定。区别的示例,是(a)诸如鼠标单击之类的用户操作,或(b)诸如计划性地采取的操作的、例如setText的程序化操作。
过程线程800’从步骤1200开始,其中GUI日志记录服务确定是否应进行快照日志记录操作(根据客户端应用用户所定义的时间粒度)。如果不应进行,则过程800’沿“否”箭头返回至步骤1200。相反,如果应进行快照日志记录事件,则过程800’沿“是”箭头前进至步骤1201。在步骤1201,主层将当前GUI树中的每一GUI节点(组件)传送给相应的提供者。在随后的步骤1202,相应的提供者向主层返回组件日志文本记录。此后,在步骤1203,主层将组件日志文本记录与组件层次一起编排以形成快照记录,其中的组件日志文本记录是针对GUI树中的每一GUI节点被返回的。在随后的步骤1204,主层在数据库408中记录编排后的快照日志文本记录。然后,过程800’沿箭头513前进至图6B中的步骤508。
术语“编排”用于表示相应提供者将GUI组件对象转换为相应的组件GUI日志文本记录(即JButton)、将GUI事件对象(即java.util.ActionEvent或PropertyChangeEvent)转换为相应的事件GUI日志文本记录的步骤。
应该指出的是,从相应提供者返回的任一GUI组件的组件GUI日志文本记录,均具有相应GUI组件的所有属性。这就是在SSP侧之所以能够根据组件日志文本记录重建该GUI组件的原因。因此,例如,JButton提供者在组件日志文本记录中存储给定JButton组件的所有属性,从而在SSP侧能够根据组件日志文本记录重建相同的JButton GUI组件。
图11更详细地示出了图9的步骤802。用于属性变化和用户操作事件的处理包括三个步骤。首先,主层发现组件唯一id和提供者。然后,主层将事件对象(从Java事件管理器接收的)传输至所发现的提供者,该提供者将该GUI事件对象编排为事件日志文本记录。然后,主层将编排后的事件日志文本记录与主层所生成的组件id和事件id一起记录。应该指出的是,该事件日志文本记录存储了关于该事件的所有信息以及相应的组件id,以便在SSP侧能够根据该事件GUI日志文本记录再现该事件。
返回图11,过程802从步骤901开始,其中主层发现组件唯一id和适合的提供者。此后,在步骤902,主层将事件对象传输至所发现的提供者。随后,在步骤903,提供者将该GUI事件对象编排为事件日志文本记录。在随后的步骤904,主层将编排后的事件日志文本记录与组件id和事件id一起记录在GUI日志数据库408中,然后,箭头513将过程802引导至图6B中的步骤508。
图12更详细地示出了图9中的步骤803。组件添加/移除事件的处理包括基于组件的移除或添加的处理。在移除GUI组件的情况下,主层从GUI树中移除该条目,并记录该组件移除日志文本记录。该组件移除日志文本记录包括组件id和关于所删除的组件的层次信息。GUI组件添加事件的处理按三个步骤来执行。首先,主层生成GUI树节点以保存关于所添加的GUI组件的信息,并将其条目添加至GUI树中。这个步骤主要包括生成唯一id、确定其提供者以及确定父子关系。第二,将该GUI组件对象传送给该提供者,该提供者在组件日志文本记录中对该组件的所有属性进行编排。第三,主层将该组件日志文本记录与组件添加日志文本记录一起记录。该组件添加日志文本记录保存关于所添加的GUI组件的层次信息。应该指出的是,GUI日志记录服务405以多个组件添加事件(日志记录)的形式记录客户端应用GUI屏幕中的所有GUI组件。
返回图12,处理803从步骤1001开始,其中GUI日志记录服务405确定是否将有组件被添加或移除。如果组件将被移除,则过程803沿“移除”箭头前进至步骤1002。在步骤1002,主层从GUI树中移除该条目,并记录组件移除日志文本记录。然后,过程803沿箭头1007前进至图9中的箭头805。
返回步骤1001,如果GUI日志记录服务405确定有组件被添加,则过程803沿“添加”箭头从步骤1001前进至步骤1003。在步骤1003,主层生成GUI树节点,以保存关于所添加的GUI组件对象的信息。此后,主层在步骤1004、在GUI树中生成其条目。在随后的步骤1005,主层将GUI组件对象传送给适当的提供者。之后,在步骤1006,提供者在组件日志文本记录中对该组件的属性进行编排。在随后的步骤1007,主层将组件日志文本记录与组件添加日志文本记录一起记录在GUI日志数据库408中。为了捕获与新添加的组件相关的事件,主层还执行步骤703、704、705和706(图8中示出)。然后,步骤803沿箭头1007前进至图9中的箭头805。
图13A和13B更详细地示出了图7中的步骤610,其涉及GUI模拟器进程411。图7中的步骤610分别由图13A和13B中的过程片段610’和610”来示出。GUI模拟器进程411运行于支持提供者侧。GUI模拟器进程411使用从客户端侧接收的GUI日志文本记录来模拟客户端应用GUI。如已经描述过的,GUI日志记录服务405以可用于步进地生成客户端应用GUI的GUI组件添加、移除、用户操作和属性变化事件(日志文本记录)的形式,捕获客户端应用GUI屏幕。用户操作和属性变化事件(日志文本记录)也可逐一应用,以提供用于全部浏览之前所调用的客户端应用GUI屏幕的手段。GUI模拟器进程411还提供用于成组地应用用户操作的手段。这使得能够以低于在客户端侧出现的每一用户操作或事件的粒度来浏览用户操作和相应的GUI屏幕。
根据GUI日志文本记录模拟之前和当前的客户端应用GUI屏幕的过程包括一个初始化阶段,然后,步进地应用GUI日志文本记录。在初始化阶段,主层根据客户端侧GUI日志记录服务405所生成的日志文本记录创建顶层GUI组件。
每一GUI日志文本记录的处理,取决于其类型。下面是用于组件GUI日志文本记录的处理。主层将组件日志文本记录传输至相应的提供者,该提供者则创建并返回实际的GUI组件。将关于新组件的信息添加至GUI树,并在屏幕上显示该组件。在如Jpanel的容器组件的情况下,子GUI组件也与GUI日志文本记录一起被传送。
事件日志文本记录的处理包括三个步骤。首先,主层从GUI树中发现GUI组件和相应的提供者。第二,基于GUI事件日志文本记录中的信息,提供者对相应的GUI组件采取程序化操作。
GUI快照日志文本记录表示完整的GUI屏幕,所以,其处理如下。主层使用GUI快照日志文本记录中给出的GUI树的GUI组件树(即GUI屏幕),来创建完整的应用GUI。
GUI模拟器进程411还提供用于对当前所模拟的GUI屏幕(与客户端GUI相同)进行远程用户操作的手段。因此,以GUI日志文本记录的形式,将对所模拟的GUI采取的操作传输至客户端侧的监督用户服务402,该服务对实际的应用GUI进行程序化操作。
返回至图13A和13B,特别是图13A,在过程片段610’的初始化步骤1301,主层根据日志文本记录创建顶层GUI。此后,在步骤1303,GUI模拟器411确定所讨论的日志文本记录是组件类型、事件类型还是快照类型的。如果该日志文本记录是组件日志文本记录,则过程片段610’沿“组件”箭头1317前进至图13B中的步骤1318。步骤1318确定该日志文本记录涉及组件添加还是组件移除类型。如果步骤1318确定其是组件添加类型,则过程片段610”沿“添加”箭头前进至步骤1304。在步骤1304,主层将相应的组件GUI日志文本记录传输至相应的提供者。在随后的步骤1305,提供者创建并返回实际的GUI组件对象。提供者还注册用于新创建的GUI组件的事件监听器,要注意到的是监听器的列表存在于组件GUI日志文本记录之中。此后,在步骤1306,主层将关于该新GUI组件对象的信息添加至GUI树,且将提供者所返回的GUI组件添加至父组件,要注意的是层次信息是从组件添加日志文本记录中获得的。然后,过程片段610”前进至步骤1315,其中主层刷新屏幕1114,以便在屏幕1114上显示该新组件(见图2)。然后,过程片段610”沿箭头1316返回图13A。
返回至步骤1318,如果该步骤确定该日志文本记录是组件移除类型的,则过程片段610”沿“移除”箭头前进至步骤1319,其中移除所模拟的GUI的相应GUI组件。然后,过程片段610”沿箭头1320前进至步骤1315。
图15示出了怎样处理对于所模拟的GUI屏幕进行的SSP侧操作。图13A中的虚线箭头614表示对通过617从日志协调器服务410接收的GUI日志文本记录进行处理以通过步骤610(见图7)反映客户端侧GUI变化的情况。此后,在步骤1501,主层发现组件唯一id和提供者。在随后的步骤1502,提供者将事件对象(从Java事件管理器接收的)编排或转换为相应的事件GUI日志文本记录。
此后,在步骤1503,主层以GUI日志文本记录的形式,将对于所模拟的GUI进行的操作传输至监督用户服务402。因此,就对于SSP所模拟的GUI进行的每一操作来说,包括三个步骤。在第一步骤1501,主层发现组件唯一id和提供者。在第二步骤1502,相应的提供者将事件对象(从Java事件管理器接收的)编排或转换为相应的事件GUI日志文本记录。在第三步骤1503,将事件GUI日志文本记录传输至监督用户服务。
返回至图13A中的步骤1303,如果确定该日志文本记录是事件类型的,则过程610沿“用户”箭头前进至步骤1307。在步骤1307,主层从GUI树中发现GUI组件和相应的提供者。在随后的步骤1308,提供者对相应的GUI组件采取程序化操作。
返回至步骤1303,如果确定该日志文本记录是快照类型的,则过程610沿“快照”箭头前进至步骤1309。在步骤1309,主层从快照日志文本记录中获得GUI树层次信息,并创建GUI树。该快照日志文本记录具有对应于该GUI树中每一GUI节点的组件日志文本记录。在随后的步骤1312,对于该GUI树中的每一节点,主层将存在于该快照记录中的相应的组件日志文本记录传送至相应的提供者。此后,在步骤1313,各提供者返回GUI组件,该GUI组件与在步骤1312主层传送给它们的组件日志文本记录相对应。在随后的步骤1314,主层根据存在于快照日志文本记录中的层次信息添加和/或布置所返回的GUI组件,最后,主层刷新整个应用GUI。
图14更详细地示出了图7中的步骤605,该步骤涉及监督用户服务402。监督用户服务402运行于客户端应用侧。监督用户服务402从GUI模拟器411接收编排后的GUI日志文本记录。主层使用GUI日志记录服务405所准备的GUI树。GUI日志文本记录的处理包括2个步骤。首先,监督用户服务402根据存在于所接收的GUI日志文本记录中的信息,发现GUI组件对象和提供者。第二,监督用户服务402将编排后的GUI日志文本记录与所发现的GUI组件一起传送至相应的提供者。第三,该提供者对该GUI组件程序化地应用该事件(即相应的日志文本记录)。这样,例如,如果接收到按钮单击日志文本记录,则监督用户服务402对相应的组件调用doClick()方法。
例如,doClick()方法的调用,产生与客户端应用用户的操作相同的效果。这样,例如,doClick()方法的调用,对于GUI生成与用户的操作所会生成的相同的效果。一些GUI组件提供创建与用户操作相同的效果的API,但一些GUI组件可能不是这样。因此,该特征取决于这样的API的可用性。
返回图14,在初始化步骤1401,主层从GUI模拟器接收编排后的GUI日志文本记录,之后,在步骤1402,主层发现GUI组件对象和相应的提供者。此后,在步骤1403,主层将编排后的GUI日志文本记录与所发现的GUI组件一起,传送至相应的提供者。随后,在步骤1404,提供者将该事件(即日志文本记录)程序化地应用于该GUI组件。然后,过程605沿箭头1405返回至步骤1401。
因此,图14中的过程605循环步骤1401-1404,直到服务支持操作者完成对应用的远程操作。
所公开的GLTR方法的多个优点是显而易见的。所公开的方法并不强制需要与现有客户端应用结合,并且并不需要除了用于向GUI日志记录服务405进行注册所需的代码之外的任何代码变化。
GUI日志记录服务405以GUI日志文本记录的形式执行GUI屏幕和事件的日志记录,因此,网络和日志记录开销是最小的。GUI日志记录服务405以GUI日志文本记录、而不是图像的形式对GUI屏幕进行记录,(除了在组件(即图标、按钮)中使用的图像,即gif、jpg之外)。
由于以GUI日志文本记录的形式执行该日志记录,所以所公开的方法使客户端应用的程序化分析能够使用模式、简化的统计以及基于策略的支持服务。客户端应用用户能够通过在执行GUI再现/模拟时不记录组件中的确切数据(即正文)或不向SSP显示数据,来确保组件(即JTextField)中所存在的数据的保密性。应该指出的是,即使在这种情况下,GUI模拟器也将示出组件(即JTextField)但不会示出数据(即正文)。在一种有利的布置中,可示出“*”或已加密的数据,而不示出组件(即JTextField)中的实际数据(即正文)。
上面仅描述了本发明的一些实施例,在不脱离本发明的范围和精神的情况下,可对其进行修改和/或变换,这些实施例是说明性的,而不是限制性的。

Claims (5)

1.一种提供对于在第一机器上运行的客户端软件应用的支持的方法,所述方法包括以下步骤:
在第一机器处将图形用户界面显示和相关的用户操作记录为基于文本的日志记录;
在第二机器处根据涉及所述客户端软件应用在所述第一机器上的运行的支持请求而调用支持服务;
将所记录的日志文本记录发送至第二机器;以及
在第二机器处根据所记录的日志文本记录模拟图形用户界面显示和相关的用户操作;
其中所述支持是根据所述模拟而提供的。
2.根据权利要求1的方法,还包括以下步骤:
由第二机器处理从第一机器接收的所记录的日志文本记录;
将处理后的、表示对于所模拟的图形用户显示采取的操作的日志文本记录发送至第一机器;
根据第二机器所接收的处理后的日志文本记录,从第二机器对在所述第一机器上运行的客户端软件应用远程地进行操作;
其中所述支持是进一步根据从第二机器对在所述第一机器上运行的客户端软件应用进行的远程操作而提供的。
3.根据权利要求2的方法,其中所述记录图形用户界面显示和相关的用户操作的步骤包括以下步骤:
当所述客户端软件应用运行时,在第一机器处调用GUI日志记录服务;
检测GUI事件;
确定相关的组件层次;以及
将与所述GUI事件相关的GUI显示和相关的用户操作记录为所述基于文本的日志记录。
4.一种用于提供对于在第一机器上运行的客户端软件应用的支持的装置,所述装置包括:
用于存储程序的存储器;以及
用于执行该程序的处理器,所述程序包括:
用于在第一机器处将图形用户界面显示和相关的用户操作记录为基于文本的日志记录的代码;
用于在第二机器处根据涉及所述客户端软件应用在所述第一机器上的运行的支持请求而调用支持服务的代码;
用于将所记录的日志文本记录发送至第二机器的代码;以及
用于在第二机器处根据所记录的日志文本记录模拟所述图形用户界面显示和相关的用户操作的代码;
其中所述支持是根据所述模拟而提供的。
5.一种用于提供对于在第一机器上运行的客户端软件应用的支持的装置,所述装置包括:
用于在第一机器处将图形用户界面显示和相关的用户操作记录为基于文本的日志记录的装置;
用于在第二机器处根据涉及所述客户端软件应用在所述第一机器上的运行的支持请求而调用支持服务的装置;
用于将所记录的日志文本记录发送至第二机器的装置;以及
用于在第二机器处根据所记录的日志文本记录模拟所述图形用户界面显示和相关的用户操作的装置;
其中所述支持是根据所述模拟而提供的。
CNA2006101467312A 2005-11-29 2006-11-16 用于提供远程软件应用的支持的方法和系统 Pending CN1976352A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/292,096 2005-11-29
US11/292,096 US20070192700A1 (en) 2005-11-29 2005-11-29 Support of remote software applications

Publications (1)

Publication Number Publication Date
CN1976352A true CN1976352A (zh) 2007-06-06

Family

ID=38126138

Family Applications (1)

Application Number Title Priority Date Filing Date
CNA2006101467312A Pending CN1976352A (zh) 2005-11-29 2006-11-16 用于提供远程软件应用的支持的方法和系统

Country Status (2)

Country Link
US (1) US20070192700A1 (zh)
CN (1) CN1976352A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102054051A (zh) * 2009-11-04 2011-05-11 英特尔公司 记录显示屏幕的内容
CN103034456A (zh) * 2012-12-14 2013-04-10 南京南瑞继保电气有限公司 基于非易失sram存储的虚拟终端的实现方法
CN103927243A (zh) * 2013-01-15 2014-07-16 株式会社日立制作所 图形用户界面操作的监控方法和监控装置
WO2017045190A1 (zh) * 2015-09-18 2017-03-23 华为技术有限公司 指导终端设备操作的方法、装置和设备

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8185819B2 (en) 2005-12-12 2012-05-22 Google Inc. Module specification for a module to be incorporated into a container document
US20070136201A1 (en) * 2005-12-12 2007-06-14 Google Inc. Customized container document modules using preferences
US8849913B2 (en) * 2006-06-23 2014-09-30 Sony Corporation Method and system for triggering activation of IMS applications on a mobile radio terminal
US8407250B2 (en) 2006-08-07 2013-03-26 Google Inc. Distribution of content document to varying users with security customization and scalability
US8185830B2 (en) 2006-08-07 2012-05-22 Google Inc. Configuring a content document for users and user groups
US8954861B1 (en) 2006-08-07 2015-02-10 Google Inc. Administrator configurable gadget directory for personalized start pages
US20090037935A1 (en) * 2006-08-07 2009-02-05 Shoumen Saha Updating The Configuration of Container Documents
US20080235277A1 (en) * 2007-03-22 2008-09-25 Sonolink Communications Systems, Llc System and method for temporal recall of related items in an information workspace
US7895519B1 (en) * 2007-09-28 2011-02-22 Emc Corporation Tracking use of interface and online assistance
CN101387949B (zh) * 2008-08-29 2013-01-09 北京恒泰实达科技股份有限公司 应急系统客户端界面显示方法及系统
US9064043B2 (en) * 2008-12-19 2015-06-23 Ncr Corporation Fault replay system and method
CN102118215B (zh) * 2009-12-30 2013-03-27 杭州华三通信技术有限公司 距离增强型以太网设备支持超长传输距离的方法及设备
US8990122B2 (en) * 2010-03-16 2015-03-24 Sony Corporation Method and system for providing computer application support
US8677253B2 (en) 2010-05-25 2014-03-18 International Business Machines Corporation Replicating recorded actions across computer systems in a collaborative environment
US8910049B2 (en) * 2010-08-20 2014-12-09 Hewlett-Packard Development Company, L.P. User-initiated mode for remote support
US20120173997A1 (en) * 2010-12-30 2012-07-05 International Business Machines Corporation System and method for capturing a state of a running application
US10922307B2 (en) * 2017-12-11 2021-02-16 NextWorld, LLC Automated transaction engine
CN116633991B (zh) * 2023-07-24 2023-10-13 成都中科合迅科技有限公司 用于远程场景的用户界面显示控制方法和系统

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10228311A (ja) * 1997-02-18 1998-08-25 Shimadzu Corp 機器故障の遠隔診断システム
US6298457B1 (en) * 1997-10-17 2001-10-02 International Business Machines Corporation Non-invasive networked-based customer support
US6317788B1 (en) * 1998-10-30 2001-11-13 Hewlett-Packard Company Robot policies for monitoring availability and response of network performance as seen from user perspective
JP3450756B2 (ja) * 1999-09-08 2003-09-29 松下電器産業株式会社 誤り訂正方法および誤り訂正装置
US20030025732A1 (en) * 2001-07-31 2003-02-06 Prichard Scot D. Method and apparatus for providing customizable graphical user interface and screen layout
US7065640B2 (en) * 2001-10-11 2006-06-20 International Business Machines Corporation System for implementing a diagnostic or correction boot image over a network connection
US20040128583A1 (en) * 2002-12-31 2004-07-01 International Business Machines Corporation Method and system for monitoring, diagnosing, and correcting system problems
JP2004286663A (ja) * 2003-03-24 2004-10-14 Shimadzu Corp 自動分析装置
US20040199828A1 (en) * 2003-04-01 2004-10-07 International Business Machines Corporation Method and apparatus for tracing troubleshooting events for aiding technical assistance
US20050060719A1 (en) * 2003-09-12 2005-03-17 Useractive, Inc. Capturing and processing user events on a computer system for recording and playback

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102054051A (zh) * 2009-11-04 2011-05-11 英特尔公司 记录显示屏幕的内容
CN102054051B (zh) * 2009-11-04 2014-08-06 英特尔公司 记录显示屏幕的内容
CN103034456A (zh) * 2012-12-14 2013-04-10 南京南瑞继保电气有限公司 基于非易失sram存储的虚拟终端的实现方法
CN103034456B (zh) * 2012-12-14 2015-09-02 南京南瑞继保电气有限公司 基于非易失sram存储的虚拟终端的实现方法
CN103927243A (zh) * 2013-01-15 2014-07-16 株式会社日立制作所 图形用户界面操作的监控方法和监控装置
WO2017045190A1 (zh) * 2015-09-18 2017-03-23 华为技术有限公司 指导终端设备操作的方法、装置和设备

Also Published As

Publication number Publication date
US20070192700A1 (en) 2007-08-16

Similar Documents

Publication Publication Date Title
CN1976352A (zh) 用于提供远程软件应用的支持的方法和系统
US10033832B2 (en) Systems and methods for providing a client agent for delivery of remote services
CN1229715C (zh) 信息控制系统和信息处理方法
US8245124B1 (en) Content modification and metadata
CN1176427C (zh) 显示Web文件的方法以及系统
US11503356B2 (en) Intelligent multi-device content distribution based on internet protocol addressing
US20090327915A1 (en) Automatic GUI Reconfiguration Based On User Preferences
CN1805369A (zh) 呈现名称空间和一组计算资源之间的映射的设备、系统和方法
US20120084399A1 (en) Reconfigurable Download Manager
US10303445B2 (en) Network service providing method and network service station using same
CN1512408A (zh) 记录图像文件的方法以及记录和提供图像文件的装置
US20140229868A1 (en) Multi-modal/multi-channel application tool architecture
CN1673963A (zh) 用于不良对策的网络技术
CN1916874A (zh) 用于修改数据存储器配置的设备、系统和方法
CN1728094A (zh) 智能ui记录和重放结构
CN1653444A (zh) 投影设备的网络管理系统
CN1682183A (zh) 在客户机-服务器通信中处理增量数据的方法和计算机系统
CN1905455A (zh) 基于互联网和流媒体技术的开放式多媒体传输系统
CN1487446A (zh) 服务器端应用为浏览器客户端提供用户界面的方法
CN1968283A (zh) 一种网络管理的系统和方法
US20100162183A1 (en) System and Method for Displaying Images and Videos Found on the Internet as a Result of a Search Engine
CN1820514A (zh) 管理电信网络的系统体系结构、方法和计算机程序产品
CN101662463A (zh) 为用户定制服务流程的装置和方法
US20120311538A1 (en) Capturing Rich Actionable Feedback on Working Software
CN102163204A (zh) 文档管理装置及文档管理方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Open date: 20070606