动态向导界面系统和方法

文档序号:6367077阅读:249来源:国知局
专利名称:动态向导界面系统和方法
技术领域
本发明通常涉及用户界面,尤其是涉及一种用于向终端用户提供动态向导界面的系统和方法。
背景技术
在计算机通信领域中通信网络是非常公知的。根据定义,网络是通过通信设备或者链接连接的一组计算机和相关的设备。网络通信能够具有永久特性,诸如经由电缆,或者能够具有暂时特性,诸如通过电话或者无线链接进行的连接。网络可以在尺寸方面、从包含几个计算机或者工作站以及相关设备的局域网(“LAN”)变化到把计算机和位置上分散的多个LAN互连到经由暂时通信链路互连远程计算机的远程访问服务(“RAS”)上的广域网(“WAN”)。互联网络反过来借助于便于从各个网络中传输和转换数据的网关或者路由器把多个相似的和不相似的计算机网络连接起来。众所周知的术语“互联网络”的缩写是“Internet”。如当前了解的那样,大写的术语“Internet”是使用网际协议(“IP”)、以及诸如传输控制协议/网际协议(“TCP/IP”)或者统一数据报分组/网际协议(“UDP/IP”)之类的更高级协议来进行相互通信的网络和路由器的集合。
近来已经发现,由于Internet连接遍布全世界的计算机的性能,Internet有了迅速增长。其它交互式环境可以包括专有环境,诸如由Microsoft Network(MSN)或者其它在线服务供应商提供的那些专有环境,以及由各种无线联网供应商、尤其是蜂窝电话产业中的那些供应商提供的“无线Web”。从下列描述中将会理解,本发明能够应用在任何一种这样的交互式环境中;然而,为了讨论起见,Internet被用作一个用于实现本发明的示范性的交互式环境。
在很大程度上由于Internet以多种格式传递信息的性能,而使Internet已经很快地成为一种散布信息的普及方法。为了使信息在Internet上可用,用户一般编写一个驻留在一台连接到Internet的服务器上的文档或者其它数据,该服务器具有用于存储文档和/或数据的海量存储设备,并且运行用于处理对那些所存储文档的请求的管理软件。一种寻址一个文档的常用方法是通过一个相关的统一资源定位符(″URL″),其提供了在一台连接到Internet的服务器上的一个链接文件的确切位置。
在Internet刚开始的时候,存储在Internet上的信息实质上通常是静态的,而且如果一个人想要改变包含在一个位于服务器上的文档中的信息,则必须通过重写该文档来人工配置该文档。然而,在Internet发展的现阶段,许多服务器提供了能够根据用户消费者设备和服务器之间的用户交互作用而进行改变的动态内容。
同时随着Internet的发展,已经出现了对用于计算机系统的图形用户界面(“GUI”)的很多改进。一个这样的GUI被称为向导界面,在有些情况下亦称为助理界面。向导界面通常是一系列结构化的页面或者对话框,其与一个向导引擎交互作用以允许用户生成一个结果。向导界面和向导引擎在此一起被称为向导。不同于其他形式的GUI、诸如教程和联机帮助屏幕,向导还完成一个或多个任务。自从引入了向导界面以来,如美国专利5,301,326所示(其文本和附图被包含在此作为参考),它们作为一种指导终端用户完成复杂任务的方法已经获得了广泛的认可。随着它们的接受度的增长,调用向导所执行的任务的复杂度也是如此。此外,由于所增加的用途,不同类型的个体被调用以帮助向导的创建。
传统的向导界面通常是硬件编码的图形用户界面组件,其需要大量在软件开发方面的专家来设计。随着对向导的需求的增加,能够创建和/或监督向导界面创建的有经验的开发者的供应并没有成比例地增加。因此,就需要一种无需有经验的软件开发者即可设计向导的方法。
传统的向导界面,当处于完整形式中时,即使对于无经验的终端用户来说也是容易导航和使用的。然而,通过增加、删除、或者改变该向导界面的页面来改变一个向导界面需要进行多级难以执行的改变。例如,添加另一个分支页面到一个向导界面中可能需要更新所有先前和/或随后的页面以反映新的页面次序。另外,用于在该向导界面中所有页面的所有组件需要被事先确定下来并且与该向导一起封装。一个具有五个分支页面、其中每个分支页面具有三个可能分支的向导界面,可能需要超过200个页面节点,而且仅仅第五个页面就可能具有100种以上变化。当添加了更多被包含在一个复杂向导界面中的页面以及当向导在一个页面中提供了超过三个的选项时,这个复杂度反而剧增了。更进一步,在传统的向导中集成实况数据(例如,可用服务器的列表或者其它实时信息)的性能受动态改变一个向导界面的多个页面的困难所限制。此外,所有可能的组合需要事先确定下来。这要求更大和更繁重的传统向导的开发和使用,或者简单地阻碍一个向导以有效方式响应/交互作用的性能。希望具有一个增强向导界面而不需要增加由先前开发的向导界面所需要的复杂度和/或资源的、易于使用的系统和方法。
发明概述本发明旨在向一个向导引擎提供一个动态的向导界面。在一个实施例中,服务器计算机接收一个动态向导请求,并且确定应当被包含在该动态向导界面中的多个包。初始包被封装在一个容器中,而且该容器被发送给一个通常位于另一个计算设备中的向导引擎,用于解释和转换成为向导界面。该容器和包使用一种自描述数据格式,诸如XML,以描述它们的组件。在本发明的一个特定实施例中,一组特定术语用来描述在这些包和容器中的组件;这组术语称为经验生成语言(“XGL”)。通常,该包包含进一步描述向导界面的页面和对象。
依据本发明的附加方面,终端用户向向导界面提供某种形式的标识信息。动态向导使用该标识信息以检索用于预先填充该向导界面的任何已知部分的相关用户数据。该预先填充通常包含把在该包中的自描述数据字段与在包含用户信息的数据结构中的自描述数据字段进行匹配。
依据这个发明的另外方面,初始的封装容器包含一组初始包。更可取地是,该组初始包是不具有到下一个包或者页面的逻辑分支的包。例如,如果一个包被设计成收集名称信息、而下一个包被设计成收集地址信息、且下一个包被设计成收集计算机设备详细资料,则因为使用这些包检索的所有信息是相关信息,所以没有分支转移到其它类型包的必要。相反,如果一个页面包含在信用卡支付或者支票支付之间进行的判定,则将基于用户的判定,逻辑上假定仅仅需要支票或者信用卡信息。因此,向导的流程将在这个判断点处进行分支转移。
即使在一个在该组初始包中没有分支的实施例中,如果包含了分支,或者在当其它包包含分支的任何情况中,也仍然希望终端用户能够在他们已经做出的选择上向前或者向后导航。因此,在本发明的一个实施例中,包含在包中、并且访问其它包中的页面的每个页面都包括前向和后向指针。前向指针可以包含多个不同的可能下一页和/或包,而后向指针总是指向单个“先前”的页面。当然,一个向导界面的第一页没有到前一页的链接。
依据这个发明还有的其它方面,在经由一个向导导航的过程中,如果在一个分支处确定需要一个新包,则基于该分支判定为下一个包或者包流发送请求。
依据这个发明还有的其它方面,某些包可以包含或者封装包含实况数据的子包。当终端用户查看向导界面时,检索在一个包含实况数据的子包中所包含的信息。这样一种应用的例子是当用户查看一个依据本发明形成的动态向导界面时用户选择一个与之交互作用的特定服务器。在这样的应用中,实况数据将提供与之交互作用的可用服务器的列表,由此确保终端用户在做出选择时使用最新的信息。
依据这个发明还有的其它方面,高速缓存从一个分支点被检索的下一个包。在向导界面的一个特定页面向终端用户给出三种不同支付类型的选择的情况下,这个方面是有用的。在这种情况中,下载包含所有三个选项到一个高速缓存中、而不是在做出一个判定之后动态地下载选择的包可能是更加时间有效的,借此消除由后一种下载包的方式所产生的任何延迟。当例如由于终端用户具有一个低带宽连接而导致终端用户的连接速度较慢时,这是尤其有益的。
依据本发明还有的更多方面,用于初始容器的包是预先确定的。向向导引擎提供初始容器要求确定多个容器中的哪一个包含所期望的向导,由此减轻了确定包含在初始容器中的包的需要。
如从上述概述中很容易理解到的那样,本发明提供了一种以改善向导界面的效率和可管理性的方式提供动态向导组件的新的改进方法,以及一种相关的系统和计算机可读介质。


通过结合附图并参考以下的详细说明,这个发明的上述方面以及许多伴随的优点将变为更加容易理解同时能够得到更好的理解。
图1(现有技术)是一个互联网络、诸如Internet的典型部分的示意图。
图2是多个连接到一个互联网络的设备的直观图,该互联网络向一个客户机设备提供了依据本发明的一个向导界面。
图3是一个个人计算机的框图,该个人计算机提供了一个适于在实现本发明中使用的示例客户机设备。
图4是一个计算机的框图,该计算机提供了一个适于在实现本发明中使用的示例服务器。
图5是一个框图,说明了由客户机设备、XGL服务器和用户数据库采取以依据本发明向客户机设备提供一个向导界面的动作。
图6是一个概述流程图,说明了一个依据本发明由服务器实现、以向客户机设备提供一个向导界面的向导准备例程。
图7是一个框图,说明了由客户机设备、XGL服务器和XGL数据库和用户数据库采取以依据本发明向客户机设备提供一个动态向导界面的动作。
图8是一个概述流程图,说明了一个依据本发明由XGL服务器实现、以向客户机设备提供一个向导的向导准备例程。
图9是一个概述流程图,说明了一个依据本发明由客户机设备实现、以向终端用户提供一个向导界面的向导界面例程。
图10是一个概述流程图,说明了一个依据本发明由客户机设备实现的容器处理子例程。
图11是一个概述流程图,说明了一个依据本发明由客户机设备实现的包分析子例程。
图12是一个概述流程图,说明了一个依据本发明由客户机设备实现的布局子例程。
图13是一个概述流程图,说明了一个依据本发明由客户机设备实现的对象转换子例程。
图14是一个概述流程图,说明了一个依据本发明由客户机设备实现的数据字段填充子例程。
图15是一个概述流程图,说明了一个依据本发明由客户机设备实现的资料清单创建子例程。
图16是一个概述流程图,说明了一个依据本发明由客户机设备实现的向导页面显示子例程。
图17是一个概述流程图,说明了一个依据本发明由客户机设备实现、用于处理用户输入的子例程。
图18A-18C显示了依据本发明的示例向导界面页面。
图19是一个概述流程图,说明了一个依据本发明由客户机设备实现的事件检测例程。
图20是一个概述流程图,说明了一个依据本发明由客户机设备实现的包事件检测子例程。
图21是一个概述流程图,说明了一个依据本发明由客户机设备实现的页面事件检测子例程。
图22是一个概述流程图,说明了一个依据本发明由客户机设备实现的动作对象处理子例程。
图23是一个概述流程图,说明了一个依据本发明由客户机设备实现的探测例程。
图24A显示了依据本发明的一个示例向导界面页面。
图24B显示了依据本发明的、具有增强的可访问性的一个示例向导界面页面。
具体实施例方式
随后的详细说明主要是根据传统计算机元件、包含处理器、用于处理器的存储器设备、连接的显示设备、和输入设备的处理过程和操作的符号表示来描述的。此外,这些处理过程和操作可以利用在异类的分布式计算环境中的传统计算机元件,包括远程文件服务、计算机服务器和存储器设备。这些传统的分布式计算组件中的每一个可由处理器经由一通信网络访问。
如先前所阐明的那样,大写的术语“Internet”是指彼此相互通信的网络和路由器的集合。在图1中显示了Internet100的示意部分。现有技术,更具体地说,在图1中显示的Internet100的典型部分包含通过路由器110互连的多个LAN120和WAN130。路由器110通常是用于把一个LAN或者WAN连接到另一个的专用计算机。在LAN内的通信链接可以由对绞线、同轴电缆、或者任何其它众所周知的通信连接技术、包括无线技术形成。在网络之间的通信链接可以由56Kbps(千位/秒)模拟电话线路、或者1Mbps(兆位每秒)的数字T-1线路和/或45Mbps的T-3线路或者任何其它众所周知的通信连接技术、包括无线技术所形成。此外,计算机及其它相关电子设备140能够经由一个调制解调器和临时电话链路、包括无线电话链路远程连接到LAN120或者WAN130。这样的计算机和电子设备140在图1中被显示为与LAN120中的一个相连接。应当理解,Internet100包含许许多多这样的互联网络、计算机和路由器,而图1中仅仅显示了Internet100的一个很小的典型部分。
图2说明了一个用于提供动态向导界面的系统200的功能框图。虽然系统200通常在一个包含经由网络(诸如Internet100)互连的独立计算机系统的分布式计算环境中进行操作,但是本领域技术人员将会理解系统200同样能够起单个独立计算机系统的作用。在图2中显示的系统200包含经由互联网络、诸如Internet100互连的客户机设备300、XGL服务器400、和用户数据库210。在图2中还显示了一个与XGL服务器400通信的XGL数据库449。本领域普通技术人员将会理解XGL数据库449可以驻留在XGL服务器400上,或者它可以驻留在另一个计算设备上。在下面分别参照图3和4进一步描述了客户机设备300和XGL服务器400。另外,虽然仅仅显示了一个客户机设备300,但是应当明白在系统200中可以包含多个客户机设备300。
图3说明了一个适于形成一个客户机设备300的示例计算系统。该计算系统仅仅是一个适当的计算环境的例子,而非任何关于本发明的使用范围或功能的限制。该计算环境也不应当被解释为具有与在示例操作环境中说明的任何一个元件或它们的组合有关的任何相关性要求。
本发明可在许多其它通用或者特定的计算系统环境或者配置中操作。可以适于实现本发明的众所周知的计算系统、环境、和/或配置的示例包含但不局限于个人计算机、服务器计算机、膝上型设备、多处理器系统、基于微处理器的系统、网络PC、微型计算机、大型计算机、以及包含任何以上系统或类似设备的分布式计算环境。
由本发明使用的客户机设备可以在计算机可执行指令、诸如由在图3中所示类型的计算机320执行的程序模块的通用环境中进行描述。通常,程序模块包含执行一个特定任务或者实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。本发明还可以在分布式计算环境中实现,其中在分布式计算环境中任务由通过一个通信网络连接的远程处理设备执行。在分布式计算环境中,程序模块可以位于包含存储器设备的本地和远程计算机存储介质中。
参见图3,适于在实现本发明中使用的示例客户机设备300是一个以计算机320形式的通用计算设备。计算机320的组件包含但不局限于处理单元322、系统存储器324、显示器390、连接包括系统存储器324在内的各个系统组件到处理器322的系统总线326。系统总线326可以是几种类型的总线结构中的任何一种,其中这几种类型的总线结构包含使用各种总线体系结构中任何一种的存储器总线或存储控制器、外围总线、和本地总线。通过举例而不是限制,这样的体系结构包括工业标准结构(“ISA”)总线、微信道体系结构(“MCA”)总线、增强的ISA(“EISA”)总线、视频电子标准协会(“VESA”)本地总线、也被称为附加板(mezzanine)总线的外设组件互连(“PCI”)总线、和加速图形端口(“AGP”)总线。
计算机320一般包含多种计算机可读介质。计算机可读介质能够是能由计算机320访问的任何可用介质,而且包含易失/非易失性介质、以及可移动/不可移动介质。举例来说,而不是限制,计算机可读介质可以包含计算机存储介质和通信介质。计算机存储介质包含但不局限于RAM、ROM、EEPROM、闪速存储器或者其它存储器技术、CD-ROM、数字通用磁盘(“DVD”)或者其它光学存储器、磁带盒、磁带、磁盘存储器或者其它磁存储设备、或者任何其它能够被用来存储或者传递所需信息并且能够由计算机320访问的介质。
通信介质一般具体化为计算机可读指令、数据结构、程序模块、或者一个调制数据信号、诸如载波或者其它典型传输机构中的其它数据,并且包含某些信息传递介质。术语“调制的数据信号”是指以编码该信号中的信息的方式来设置或改变其一个或多个特性的信号。举例来说而不是限制,通信介质包含有线介质、诸如有线网络或者直接有线连接,以及无线介质、诸如声学射频、红外或者其它无线介质。以上任何一个的组合也应当被包含在计算机可读介质的范围之内。
系统存储器324包含以易失性和非易失性存储器、诸如只读存储器(“ROM”)328和随机存取存储器(“RAM”)330形式的计算机存储介质。基本输入/输出系统(“BIOS”)332一般被保存在ROM 328中,其中该基本输入/输出系统(BIOS)包含有助于例如在启动过程中在计算机320内部的元件之间传输信息的基本例程。RAM330一般包含可由处理单元322立即访问和/或当前由处理单元322进行操作的数据和/或程序模块。举例来说,而不是限制,图3说明了一个操作系统346、应用程序348、用于处理动态向导的向导引擎349、其它程序模块350、和程序数据352。计算机320还可以包含可移动/不可移动的和易失性/非易失性的计算机存储介质。仅仅举例来说,图3说明了一个从不可移动、非易失性磁介质336中读取或者写入到其中的硬盘驱动器334、从一个可移动、非易失性磁盘340中读取或者写入到其中的磁盘驱动器338、和一个从一个可移动、非易失性光盘344、诸如CD-ROM或者其它光介质中读取或者写入到其中的光盘驱动器342。在该示例操作环境中使用的其它可移动/不可移动、易失性/非易失性的计算机存储介质包含但是不局限于磁带盒、闪速存储卡、DVD、数字视频磁带、伯努里帽式卡带、固态RAM、固态ROM、等等。硬盘驱动器334、磁盘驱动器338和光盘驱动器342可以分别通过硬盘驱动器接口354、磁盘驱动器接口356、和光盘驱动器接口358连接到系统总线326。做为选择,硬盘驱动器334、磁盘驱动器338、或者光盘驱动器342可以通过一个小型计算机系统接口(“SCSI”)连接到系统总线326。
以上讨论的和在图3中说明的驱动器及其相关计算机存储介质为来自计算机320的计算机可读指令、数据结构、程序模块、及其它数据提供了存储。在图3中,例如,硬盘驱动器334还可以存储操作系统346、应用程序348、向导引擎349、其它程序350、和程序数据352。应当注意这些组件可以和操作系统346、其它程序模块350、和程序数据352相同或者不同。用户可以经由一个输入设备、诸如键盘360和/或通常形式为鼠标、跟踪球、或者接触板的指示设备362,输入命令和信息到计算机320中。其它输入设备(未显示)可以包含麦克风、操纵杆、游戏垫、卫星反射器、扫描仪等。这些及其它输入设备经常经由用户输入接口364连接到系统总线326,并且可以通过其它接口和总线结构、诸如并行端口、串行端口、游戏端口、通用串行总线(“USB”)或者其它接口进行连接。
计算机320可以在使用到一个或多个远程计算机140的逻辑连接的网络环境中进行操作。远程计算机140可以是一台个人计算机、服务器、路由器、网络PC、等同设备、或者其它公用网络节点,而且一般包含许多或者所有上述与计算机320相关的单元。在图3中描述的逻辑连接不仅包含LAN120和WAN130,并且还包含其它网络。这种网络环境在办公室、企业范围的计算机网络、企业内部局域网和Internet中是很平常的。
当在LAN网络环境中使用时,计算机320经由网络接口368连接到LAN120。当使用WAN网络环境时,计算机一般包含调制解调器或者其它用于经由WAN130建立通信的装置,这些装置包含经由WAN130、诸如Internet100的网络接口368。可以内置或者外置的调制解调器369可经由用户输入接口364或者其它适当的机构连接到系统总线326。应当明白,所显示的网络连接是示范性的,也可以使用在计算机之间建立通信的其它装置。尽管没有显示计算机320中的许多其它内部组件,但是本领域普通技术人员应当明白这样的组件和它们的互连是众所周知的。因此,不需要公开与本发明有关的涉及计算机320的内部构造的细节。
本领域技术人员应当明白,程序模块、诸如操作系统346、应用程序348、向导引擎349、数据352经由计算机320的存储器设备中的一个提供到计算机320,其中这些存储器设备可以包含ROM 328、RAM 330、硬盘334、磁盘驱动器338、或者光盘驱动器342。硬盘驱动器334用来存储数据352和程序,包括操作系统346和应用程序348。
当计算机320被打开或者重启时,保存在ROM中的BIOS332指示处理单元322从硬盘驱动器334中加载操作系统346到RAM330中。一旦操作系统346被加载到RAM330中,处理单元322就执行操作系统代码,并且使与操作系统的用户界面有关的元件可视地被显示在监视器上。当应用程序348由用户打开时,从硬盘驱动器334中读取程序代码和相关数据,并且把它们保存在RAM330中。
虽然已经描述了一个通常与单个传统的通用计算设备一致的示例客户机设备300,但是本领域技术人员应当明白,客户机设备300实际上可以是用以经由网络和XGL服务器400通信的计算设备或者组件的组合。
参见图4,适于实现本发明的一个示例服务器400也是一个以计算机420形式的通用计算设备。计算机420的组件包含但不局限于处理单元422、系统存储器424、显示器490、和连接包括系统存储器424在内的各个系统组件到处理器422的系统总线426。系统总线426可以是几种类型的总线结构中的任何一种,其中这几种类型的总线结构包含使用各种总线体系结构中任何一种的存储器总线或存储器控制器、外围总线、和本地总线。举例来说,但不是限制,这样的体系结构包括ISA总线、MCA总线、EISA总线、VESA本地总线、也被称为附加板总线的PCI总线、和AGP总线。
计算机420一般包含多种计算机可读介质。计算机可读介质可以是能够由计算机420访问的任何可用介质,包括易失/非易失性介质以及可移动/不可移动介质。举例来说,而不是限制,计算机可读介质可以包含计算机存储介质和通信介质。计算机存储介质包含但不局限于RAM、ROM、EEPROM、闪速存储器或者其它存储器技术、CD-ROM、DVD或者其它光学存储器、磁带盒、磁带、磁盘存储器或者其它磁存储设备、或者任何其它能够被用来存储或者传递所需信息并且能够由计算机420访问的介质。
通信介质一般具体化为一个调制的数据信号、诸如载波或者其它典型传输机构中的计算机可读指令、数据结构、程序模块、或者其它数据,并且包含任何信息传递介质。术语“调制的数据信号”是指以编码该信号中的信息的方式来设置或改变其一个或多个特性的信号。举例来说而不是限制,通信介质包含有线介质、诸如有线网络或者直接有线连接,以及无线介质、诸如声学射频、红外或者其它无线介质。以上任何一个的组合也应当被包含在计算机可读介质的范围之内。
系统存储器424包含以易失性和非易失性存储器、诸如ROM428和RAM430形式的计算机存储器介质。BIOS系统432一般被保存在ROM428中,其中BIOS432包含有助于例如在启动过程中在计算机420内的元件之间传输信息的基本例程。RAM430一般包含可由处理单元422立即访问和/或当前由处理单元422进行操作的数据和/或程序模块。举例来说而不是限制,图4说明了一个操作系统446、应用程序448、其它程序模块450、和程序数据452。还显示出一个XGL数据库449驻留在系统存储器424中。
计算机420还可以包含可移动/不可移动、易失性/非易失性的计算机存储介质。仅仅举例来说,图4说明了一个从不可移动、非易失性磁介质436中读取或者写入到其中的硬盘驱动器434、从一个可移动、非易失性磁盘440中读取或者写入到其中的磁盘驱动器438、和一个从一个可移动、非易失性光盘444、诸如CD-ROM或者其它光学介质中读取或者写入到其中的光盘驱动器442。可在该示例操作环境中使用的其它可移动/不可移动、易失性/非易失性计算机存储介质包含但是不局限于盒式磁带、闪速存储卡、DVD、数字视频磁带、伯努里帽式卡带、固态RAM、固态ROM、等等。硬盘驱动器434、磁盘驱动器438、或者光盘驱动器442可以分别通过硬盘驱动器接口454、磁盘驱动器接口456、或者光盘驱动器接口458连接到系统总线426。做为选择,硬盘驱动器434、磁盘驱动器438、或者光盘驱动器442可以通过SCSI连接连接到系统总线426。
以上讨论的和在图4中说明的驱动器及其相关计算机存储介质为来自计算机420的计算机可读指令、数据结构、程序模块、及其它数据提供了存储。例如,在图4中,硬盘驱动器434还可以存储操作系统446、应用程序448、其它程序450、程序数据452、和XGL数据库449。应当注意这些组件可以与操作系统446、其它程序模块450、和程序数据452相同或者不同。用户可以经由一个输入设备、诸如键盘460和/或通常形式为鼠标、跟踪球、或者触垫的指示设备462,输入命令和信息到计算机420中。其它输入设备(未显示)可以包含麦克风、操纵杆、游戏垫、卫星反射器、扫描仪等。这些及其它输入设备经常经由用户输入接口464连接到系统总线426,并且可以通过其它接口和总线结构、诸如并行端口、串行端口、游戏端口、通用串行总线(“USB”)、或者其它接口进行连接。
计算机420可以在使用与一个或多个远程计算机140的逻辑连接的网络环境中进行操作。远程计算机140可以是一台个人计算机、服务器、路由器、网络PC、等同设备、或者其它公用网络节点,而且一般包含许多或者所有上述与计算机420相关的单元。在图4中描述的逻辑连接不仅包含LAN120和WAN130,还包含其它网络。这样的网络环境在办公室、企业范围的计算机网络、企业内部局域网和Internet中是很平常的。
当在LAN网络环境中使用时,计算机420经由网络接口468连接到LAN120。当使用WAN网络环境时,计算机一般包含调制解调器或者其它用于经由WAN130建立通信的装置,这些装置包含经由WAN130、诸如Internet100的网络接口468。可以内置或者外置的调制解调器469可以经由用户输入接口464或者其它适当的机构连接到系统总线426。应当明白,所显示的网络连接是示范性的,而且可以使用在计算机之间建立通信的其它装置。尽管没有显示计算机420的许多其它内部组件,但是本领域普通技术人员可以理解这样的组件和它们的互连是众所周知的。因此,不需要公开与本发明有关的涉及计算机420的内部构造的细节。
本领域技术人员应当明白,程序模块、诸如操作系统446、应用程序448、数据452经由计算机420的存储器设备中的一个提供到计算机420,这些存储器设备可以包含ROM428、RAM430、硬盘434、磁盘驱动器438、或者光盘驱动器442。硬盘驱动器434用来存储数据452和程序,包括操作系统446和应用程序448。
当计算机420被打开或者重启时,保存在ROM中的BIOS332指示处理单元422从硬盘驱动器434中加载操作系统446到RAM430中。一旦操作系统446被加载到RAM430中,处理单元422就执行操作系统代码,并且使与操作系统的用户界面有关的元件可视地被显示在监视器上。当应用程序448由一个用户打开时,从硬盘驱动器434中读取程序代码和有关信息,而且把它们保存在RAM430中。
虽然已经描述了一个通常与单个传统的通用计算设备一致的示例XGL服务器400,但是本领域普通技术人员应当明白XGL服务器400实际上可以是用以经由一个网络和客户机设备300进行通信的计算设备或者组件的组合。
为了说明依据本发明形成的一个动态向导界面的操作,图5说明了图2所示的系统200的设备之间的交互作用的一个序列。图5所述的系统200中的设备包含客户机设备300、XGL服务器400、和用户数据库210。结合图6、和9-17更详细地说明和描述了由各个设备执行的例程以及各设备的交互作用。
回到图5,当客户机设备300发送一个向导请求502到XGL服务器400时,启动动态向导准备和解释。在XGL服务器400接收到向导请求502之后,XGL服务器请求包含在用户数据库210中的任何相关的资料清单(“BOM”)504。资料清单是在本地或者在一个远程设备上存储的数据,它可以用来填充(complete)一个向导界面中的字段。在某些实施例中,所存储的数据是用户特定的。BOM数据结构使在向导界面中的字段名称和在BOM数据结构中的字段名称相互对应。
假定在用户数据库210中有信息,则把BOM506返回到XGL服务器400。因此,XGL服务器返回一个描述该向导初始包的XGL容器以及BOM508到客户机设备300。使用向导引擎349的客户机设备300然后分析XGL容器和它的内容(510)。接下来,客户机设备依据分析的XGL容器创建一个向导界面,在这之后,用BOM中的任何匹配字段填充该向导界面(514)。然后在客户机设备300上描述该向导界面(516)。接收任何用户选择(518)。如果用户的选择需要一个附加的包,诸如依据一个分支请求,则一个新包请求被发送到XGL服务器400(520)。作为响应,XGL服务器400返回一个具有所请求的包的XGL容器到客户机设备300(522)。再次分析XGL容器和内容(524),并且用附加的分析信息更新该向导界面(526)。接下来,如果在向导中的附加信息与在BOM中的字段相匹配,则用匹配字段填充该向导(528)。然后,在客户机设备300上描述更新后的向导界面(530)。当终端用户完成他们与向导的交互作用时,终端用户指示完成(532)。此后,客户机设备300经由XGL服务器400发送一个更新的BOM中的附加信息到用户数据库210(534),在那儿存储更新后的BOM(536)。其间,XGL服务器400分析该更新后的BOM,并对任何需要动作的信息进行动作。例如,如果用户签订一个帐号,则XGL服务器400可以检查从用户接收的所有帐号信息,并且一旦通过验证,就提供一个确认返回到客户机设备300(540)。
本领域普通技术人员应当明白,图5描述了在系统200的设备之间的一组示范性的交互作用。因此还应当明白,附加包请求和/或高速缓存包请求可以被包含在这样的交互作用中。另外,假定检索的任何包都包含实况数据,就可以有和一个或多个设备(没有显示)进行的附加通信,用于在该实况数据中提供这样的要被显示的信息。另外本领域普通技术人员应当明白,在图5中说明的动作可以以其它次序执行或者可以被组合。例如,分析XGL容器及其内容可以与填充一个向导和匹配字段相组合。
如图2、4、和5说明的那样,在此描述的动态向导系统200的实施例包含一个XGL服务器400,其用于提供描述由客户机设备300所请求的向导界面的容器和包。图6中显示了依据本发明一个实施例说明了由XGL服务器400实现的向导准备例程600的流程图。向导准备例程600从块601开始,并且继续到块605,在那儿从客户机设备300接收一个向导请求。接下来,在块610中,从用户数据库210中检索任何BOM信息。然后,在判定块615中,就任何BOM信息是否可用进行确定。如果BOM信息是可用的,则在块620中,一个包含用于向导界面的初始包的XGL容器和BOM被发送给客户机。否则,如果在判定块615中确定没有BOM是可用的,则XGL服务器400在块625中仅仅发送XGL容器到客户机。XGL服务器400然后等待来自客户机设备300的下一次通信,即等待接收一个更新的BOM,如判定块630所示。如果在判定块630中确定已经接收到一个更新后的BOM,则例程600继续到块635,在那儿XGL服务器400对更新的BOM进行动作。然后,如块640所示,更新后的BOM被发送到用户数据库210。例程600然后在块699处结束。然而,如果在判定块630中确定没有接收到一个更新后的BOM并以如上所述方式结束例程600,则在判定块645确定是否接收了一个新包请求。如果没有的话,则处理返回到判定块630,否则,处理继续到块650,在那儿所请求的包在一个容器中被发送回到客户机设备300。例程600返回到判定块630。
如本领域和其它领域普通技术人员理解的那样,向导准备例程600说明了在单个客户机设备和XGL服务器400之间的通信。应当理解在多种环境中,例程600将在与多个客户机设备300相连的XGL服务器400上以多线程或者多过程的方式发生。
为了进一步说明依据本发明形成的一个动态向导界面的操作,图7说明了图2所示的系统200的设备之间的交互作用的另一个序列。图7所述的系统200中的设备包含客户机设备300、XGL服务器400、XGL数据库449和用户数据库210。结合图8、和9-17更详细地说明和描述了由各个设备执行的例程和各设备的交互作用。
回到图7,当客户机设备300发送一个向导请求702到XGL服务器400时,启动动态向导准备和解释。在XGL服务器400接收了该向导请求702之后,XGL服务器确定哪些包将作为初始包被包含在一个向导容器中(703)。XGL服务器400然后从XGL数据库449请求这些包(704),XGL数据库449返回所请求的初始包(705)。然后XGL服务器向用户数据库210请求任何BOM信息(706)。假定在用户数据库210中没有相关的信息,则缺少BOM交互作用被返回到XGL服务器400(707)。因此,XGL服务器返回一个描述了该向导初始包的XGL容器到客户机设备300(708)。
客户机设备300然后分析XGL容器和它的内容(710)。接下来,客户机设备依据分析后的XGL容器创建一个向导界面(712)。在这之后创建一个新的BOM(714)。然后在客户机设备300上描述向导界面(716)。接下来,接收任何用户选择(718)。如果用户选择需要一个附加的包,诸如依据一个分支请求,则一个新包请求被发送到XGL服务器400(720)。作为响应,XGL服务器400返回一个具有请求的包的XGL容器到客户机设备300(722)。再次分析XGL容器及其内容(724),并且用附加的分析信息更新该向导界面(726)。然后,在客户机设备300上描述更新后的向导界面(730)。当终端用户完成与向导的交互作用时,终端用户指示完成(732)。此后,客户机设备300经由XGL服务器400发送一个更新的BOM中的任何附加信息到用户数据库210(734),在那儿存储更新后的BOM(736)。其间,XGL服务器400分析该更新后的BOM,并对任何需要动作的信息进行动作。例如,如果用户签订一个帐号,则XGL服务器400可以检查从用户接收的所有帐号信息,并且一旦通过验证,就提供一个确认返回到客户机设备300(740)。
本领域普通技术人员应当明白图7只表示在系统200的设备之间的一组示范性的交互作用。因此还应当明白,附加包请求和/或高速缓存包请求可以被包含在这样的交互作用中。另外,假定检索的任何一个包包含实况数据,则可以有和一个或多个设备(没有显示)进行的附加通信,用于在该实况数据中提供这样的要被显示的信息。另外,本领域普通技术人员应当明白图7所述的动作可以以其它次序被执行或被组合。例如,创建一个向导界面可以和创建一个BOM组合。
如图2、4、和5说明的那样,在此描述的动态向导系统200的实施例包含一个XGL服务器400,其用于提供描述由一个客户机设备300所请求的向导界面的容器和包。图8中显示了依据本发明一个替换实施例、说明了由XGL服务器400实现的另一向导准备例程800的流程图。向导准备例程800从块801开始,并且继续到块805,在那儿从客户机设备300接收一个向导请求。然后在块810中确定一组初始包。在一个实施例中,这是构成一个向导界面初始部分的一组所有不分支转移的包。然后在块815处从XGL数据库449中检索这些初始包。接下来,在块820中,从用户数据库210检索任何BOM信息。然后,在判定块825中,确定BOM信息是否可用。如果BOM信息是可用的,则在块830中,一个包含用于向导界面的初始包的XGL容器和BOM被发给客户。否则,如果在判定块825中确定没有BOM是可用的,则XGL服务器400在块835中仅仅发送XGL容器到客户机。XGL服务器400然后等待来自客户机设备300的下一次通信。如果在判定块840中确定接收到一个更新后的BOM,则例程800继续进行到块845,在那儿XGL服务器400然后可以对更新后的BOM进行动作,并且在块850中发送更新后的BOM到用户数据库210。例程800然后在块899处结束。然而,如果在判定块840中确定没有接收到一个更新后的BOM(例如,结束例程800),则在判定块855确定是否接收到一个新包(或者多个新包)请求。如果没有,则处理返回到判定块840,否则,处理过程继续到块860,在那儿从XGL数据库499中检索所请求的包。接下来,这些包在一个容器中被发送回到客户机设备300,而且例程800继续到判定块840。
如本领域和其它领域普通技术人员理解的那样,向导准备例程800说明了在单个客户机设备和XGL服务器400之间的通信。应当理解在多种环境中,例程800将在与许多客户机设备300相连的XGL服务器400上以多线程或者多过程的方式发生。
图9说明了作为向导引擎349的一部分的、在一个客户机设备300上实现的向导例程900。向导例程900从块901处开始,并且继续到块905,在那儿客户机设备300接收初始的向导容器以及诸如BOM数据的任何附加数据。接下来,在子例程块1000中,向导容器被处理。下面结合图10更详细地描述子例程1000。接下来,流程继续到子例程块1600,在那儿显示来自容器的一个页面。以下再结合图16更详细地描述子例程块1600。在显示页面之后,子例程块1700接收和处理任何用户输入。在下面结合图17更详细地描述子例程1700。一旦用户输入已经被接收和/或处理了,则流程继续到判定块910,在那儿确定是否已经接收了一个完成信号。如果是这样的话,则处理继续到块915,在那儿最终的BOM被发送给XGL服务器400。例程900然后在块999处结束。
如果在判定块910中确定没有接收到一个完成信号,则处理继续到判定块920,在那儿判定是否接收到一个取消信号。如果接收到一个取消信号,则处理在块999处结束。应注意在收到取消信号的情况下,由于终端用户尚未认可该向导中的输入,BOM没有被发送给XGL服务器。
如果在判定块920中确定没有接收到取消信号,则在判定块925中判定是否接收到一个后退信号。如果是这样的话,则逻辑继续到块930,在那儿向导使指针在该向导流中后退一个页面。处理过程然后返回到子例程块1600,在那儿再次显示先前一个页面。
如果在判定块925中确定没有接收到一个后退信号,则在判定块935中,判断是否接收到一个下一步信号。如果在判定块935中接收到一个下一步信号,则逻辑继续到判定块940,在那儿判定下一步信号是否启动一条分支转移指令。如上所述,当当前包具有一个分支点时,需要一个分支转移指令来继续该向导流,其中在所述分支点有一个或多个其它包和/或页面。
如果在块945中指示了一条分支转移指令,则从XGL服务器400中检索满足在该分支请求条件的、具有包的新容器。然后通过返回到子例程块1000来处理该新容器。
如果在判定块940中确定该下一步信号不启动一条分支转移指令,则在块955中保存指向当前页的指针,并且检索下一页(块960)。该处理过程然后返回到子例程块1600以显示下一页。然而,如果在判定块935中没有接收到下一步信号,则在块950中,例程900通过返回到子例程块1700以等待用户的进一步输入。
虽然在图9中仅仅把传统的完成、取消、后退、和下一步选择或者命令描述为包含在例程900中,但是本领域普通技术人员应当明白其它命令也可以被包含在一个向导界面中。因此,例程900应当被视作是说明性的而非限制性的。
图10说明了容器处理子例程1000。子例程1000在块1001处开始,并且继续到块1005,在那儿从该容器中提取一个包。然后在一个包处理子例程1100中处理所提取的包,将在下面结合图11对其进行更详细的描述。在处理之后,在判定块1010中判定该容器是否具有更多的包。如果在判定块1010中确定该容器包含更多的包,则处理返回到块1005,在那儿从该容器中提取另一个包。否则,如果在判定块1010中判定没有更多的包被包含在该容器中,则在判定块1015中判定一个伴随该容器或者作为该容器的一部分的BOM是否可用。如果在判定块1015中确定没有BOM是可用的,则在子例程块1500中创建一个新的BOM,将在下面结合图15对块1500进行更详细的描述。处理过程在块1099处结束。否则,如果在判定块1015中判定BOM是可用的,则处理过程继续到子例程块1400,在那儿用这些最新可用的数据填充该向导中与BOM中的字段相应的数据部分,将在下面结合图14对该子例程块1400进行更详细的描述。无论如何,子例程1000通过返回到调用它的例程而在块1099处结束。
图11说明了一个示例性的包分析子例程1100。子例程1100在块1101处开始并且继续到判定块1105,在那儿确定一个包是否包含实况数据。如果在判定块1105中确定一个包中包含了实况数据,则处理过程继续到块1110,在那儿从XGL服务器400下载XGL信息的一个实况包。接下来,递归地调用子例程1100来处理该实况包。处理过程然后继续到子例程块1200。如果在判定块1105中判定该包不包含实况数据,则处理过程也继续到子例程块1200,在那儿用户界面组件的布局从XGL包转换成为一个或多个向导页面。在下面结合图12更详细地描述子例程1200。一旦该用户界面组件的布局已经从XGL中被转换了,则处理过程继续到子例程1300,在那儿把在XGL包中的对象转换成为依据先前在子例程块1200中转换的布局组件布置的用户界面组件。在下面结合图13更详细地描述子例程1300。布局和组件的一起转换产生一组标记的页面,这些页面在块1199中被返回到调用包分析子例程1100的例程。
图12说明了一个示范性的布局转换子例程1200。布局转换子例程1200从块1201开始,并继续到块1205,在那儿检查XGL布局数据以定位用户界面组件。接下来,在判定块1210中进行一次测试,以查看是否有剩余组件需要被检查。如果没有的话,则布局标记页面在块1299中被返回给调用子例程1200的例程。如果在判定块1210中确定剩余有更多的布局组件,则在块1215中定位下一个组件。在定位期间,在判定块1220中判定一个特定模板是否应当被用于定位下一个组件。如果是这样的话,则在块1225中,下一个组件的定位是基于一个对象指定的布局模板的描述。这用于需要对一种特定类型的向导和/或在一个向导中的组件进行特殊布局时。处理过程然后返回到判定块1210。如果在判定块1220中判定不需要特定的模板,如块1230所示,则组件的定位是基于依据由客户机设备300上的向导引擎使用的一个标准布局模板的一个标准对象布局模板的XGL描述。处理过程再次返回到判定块1210,在那儿进行是否有剩余组件用于布局的判定。
图13说明了一个XGL对象变换子例程1300的一个示范实施例。子例程1300在块1301开始,并且继续到块1305,在那儿分析XGL包以获得对象的一个分级列表。接下来,在判定块1310中判定该列表中是否有剩余对象。如果没有的话,则子例程1300在块1399中返回用于向导的用户界面组件。
如果在判定块1310中发现在该列表中仍然有剩余对象,则在块1315中,从该列表中提取、即删除下一个对象。然后,在判定块1320中,进行检测以确定是否有一个可用于所提取对象的子类型。如果有一个子类型是可用的,则处理过程继续到块1325,在那儿标识该对象的子类型。如果在判定块1320中确定没有子类型是可用的,或者在块1325中标识了对象的子类型之后,处理过程继续到判定块1330,在那儿判定是否有一个可用于该对象的类。如果有一个类是可用的,则处理过程继续到块1335,在那儿标识该对象的类。在块1335中标识了一个对象的类之后,或者如果在判定块1330中没有找到可用的类,则处理过程向上返回到判定块1310,在那儿判定在该列表上是否剩余有对象。
如上所述,图14说明了用于根据一个BOM来填充一个向导中的数据字段的向导填充子例程。子例程1400在块1401处开始,并且继续到判定块1405,在那儿判定是否有任何数据可用来填充该向导中的组件。如果没有的话,则处理过程继续到块1495,其向调用例程返回一个没有组件可用的通知。然而,如果在判定块1405中确定有数据可用来填充组件,则在块1410中,则比较BOM中的数据名称和向导中的数据名称以进行匹配。接下来,在块1415中,用BOM的数据字段中的值来填充与在BOM中的名称相匹配的向导组件的数据部分。然后在块1499中把这些最新填充的组件返回到调用例程。
图15说明了一个新BOM创建子例程1500。子例程1500从块1501开始,并且继续到块1505,在那儿为具有保存在BOM中的数据字段的对象分析用来创建向导的容器或者多个容器。接下来,在块1510处,在BOM中为所有将被存储的数据字段创建条目(entry)。然后,在块1515处,本地保存BOM,而且在块1599中结束子例程1500并且返回到调用它的例程。
图16说明了一个向导页面显示子例程1600。子例程1600从块1601开始,并且继续到块1605,在那儿以一种页面标记格式接收一个页面。然后在块1610中,解释在该页面中的标记语言。接下来,在块1615中,在客户机设备300上描述已格式化的页面。(图18A-C及其后的描述说明和描述了一个向导界面的示例页面。)例程1600在块1699处结束而且返回到调用它的例程。
图17说明了用于处理用户输入的子例程。用户输入处理子例程1700从块1701开始,并且继续到块1705,在那儿子例程等待用户输入。接下来,在判定块1710中,判定用户是否已经完成输入信息。如果没有的话,则处理返回到块1705,在那儿例程1700进一步等待用户输入。然而,如果在判定块1710中确定用户正在进行输入,则在块1715中,子例程1700等待诸如用户点击或者按压一个标准向导按钮之类的触发信号以切换页面。如果在判定块1720中确定接收到一个触发信号,则处理过程继续到判定块1725。然而,如果在判定块1720中没有发现接收到触发信号,则处理过程返回到块1715,在那儿例程1700等待一个触发信号。
在判定块1725中,判定所接收的触发信号是否是一个“取消触发信号”。如果是这样的话,则处理过程继续到块1799,在那儿把触发信号返回到调用例程。然而,如果在判定块1725中确定接收到一个取消触发信号,则处理过程继续到判定块1730,在那儿判定是否需要有更多的输入或者在用户的输入中是否有错误。如果是这样的话,处理过程返回到块1705。然而,如果不需要有更多的输入而且在用户的输入中没有错误,则处理过程继续到块1735,在那儿把向导页面中的输入保存到BOM的本地拷贝中。处理过程然后在块1799结束,在那儿结束该处理过程的触发信号被返回到调用例程。
如本领域和其它领域那些技术人员从图7-17和上述描述中很容易地理解的那样,在本发明的一种类型的实施例中,客户机设备300能够动态地检索可以在检索时间被创建和/或定制的向导,以便向导界面与用以形成向导界面的可用包一样保持最新。
另外,因为最好是从XGL容器和包中构造动态向导界面,所以使用本发明这个方面的实施例提供了一种有效(在存储和传输方面)和简易的方式来导航用户界面。
图18A-C说明了由本发明的一个示范实施例创建的示范性向导界面页面。图18A显示了一个仅仅包含位于向导页面框1810中的下一步按钮1844、取消按钮1848、左面板1820、和右面板1830的初始向导页面1850。图18B显示了一个向导页面1855。除了图18B还包含一个后退按钮1842之外,图18B与图18A类似。图18C显示了一个最后的向导页面1860。除了将图18B中显示的下一步按钮1844替换为一个完成按钮1846之外,图18C类似于图18B。本领域普通技术人员当然应当理解许多和在图18A-C中显示的那些不同的其它组件可以被包含在一个向导界面中。在这个示范实施例中,向导界面页面包含用于在该向导界面的页面当中向前或者向后遍历的遍历按钮。因此,图18A并未包含一个后退按钮,因为没有从一个初始页面退回的位置。因为图18B显示了一个中间状态,所以图18B包含一个后退和下一步按钮。因为图18C显示了一个最后的页面,所以图18C包含一个完成按钮1846。
如本领域和其它领域的那些技术人员很容易明确的那样,组件的加载与卸载可以触发能够被使用以增强本发明的动态向导界面的事件。图19-22说明了本发明的一个替换的示范实施例,其说明了依据这样产生的事件的处理和/或动作的触发。图19说明了用于检测事件的一个例程1900。例程1900在块1901处开始,而且继续到块1905,在那儿检测一个容器加载事件。接下来,在判定块1910中,判定该容器或者任何先前加载的容器中的指令是否正在监视容器加载事件以产生动作;如果是这样的话,则处理过程继续到子例程块2200,在那儿处理适当的一个或者多个动作。下面将结合图22更详细地描述子例程2200。在子例程2200结束之后,处理过程继续到子例程块2000。做为选择,如果在判定块1910中没有找到容器加载事件动作,则处理过程直接继续到子例程块2000,在那儿检测和处理包事件。下面将结合图20更详细地讨论子例程2000。
在子例程2200结束之后,处理过程继续到块1915。在块1915处检测一个容器的卸载。如果一个容器卸载事件正由任何具有相关动作的XGL代码所监视,则判定块1920通过进行对子例程2200的另一次调用来处理该动作。在子例程2200结束之后,处理过程继续到判定块1925。做为选择,如果没有容器卸载事件动作被监视(判定块1920),则处理过程直接继续进行到判定块1925。在判定块1925中,判定是否要加载更多容器。例如,这个事件例程1900可以在加载和运行一个动态向导的同时被连续地处理。如果是这样的话,则判定块1925将导致该处理过程等待,直到取得一个没有更多的容器将出现的明确答案、诸如当动态向导完成或者被取消时为止。如果还有更多的容器可用,则处理过程返回到块1905。如果在判定块1925中确定没有更多的可用容器,则处理过程在块1999处结束。
如上所述,子例程2000检测和处理包事件。子例程2000在块2001处开始,而且继续到块2005,在那儿检测一个包加载事件。处理过程然后继续到判定块2010,在那儿判定是否存在与一个检测到的包加载事件有关的动作;如果是这样的话,则这些动作由子例程2200处理。如上所述,图22示出并且在下面描述了子例程2200。在从子例程2200返回之后,或者如果没有与一个包加载事件有关的动作(判定块2010),则处理过程继续到子例程块2100,在那儿处理页面事件。下面参考图21更详细地讨论子例程2100。在从子程序2100返回之后,处理过程继续到块2015,在那儿检测包卸载事件。
接下来,判定块2020中进行一个检测以确定是否有与检测到的包卸载事件有关的动作。如果是这样的话,则处理过程继续到子例程2200,在那儿处理这些动作。在从子程序块2200返回之后,或者如果没有发现与包卸载事件有关的动作(块2020),则处理过程继续到判定块2025,在那儿判定是否有更多包可用。如果是这样的话,则处理过程返回到块2005,否则处理过程在块2099结束,在那儿子例程2000返回到调用它的例程。
图21说明了一个类似于图20所示的包事件处理子例程2000的页面事件处理子例程2100。子例程2100在块2101处开始,并且继续到块2105,在那儿检测一个页面加载事件。接下来,在块2110中,判定是否存在与检测的页面加载事件有关的动作;如果有的话,则处理过程继续到子例程2200,在那儿处理这些动作。在从子例程块2200返回之后,或者如果发现没有与检测到的页面加载事件有关的动作,则处理过程继续到块2115,在那儿检测一个页面卸载事件。接下来,在判定块2120中进行一个检测以确定是否有与所检测的页面卸载事件有关的动作。如果有的话,则处理过程继续到子例程2200,在那儿处理这些动作。在从子例程2200返回之后,或者没有发现与检测到的页面卸载事件有关的动作,则处理过程继续到判定块2125,在那儿判定是否有更多的页面要被处理。如果有的话,则处理过程返回到块2105。否则,在块2199处结束处理过程,并且子例程2100返回到调用它的例程。
图22说明了一个动作处理子例程2200。子例程2200在块2201处开始,并且继续到块2205,在那儿从一个XGL动作对象中提取用于一个动作的脚本。XGL动作对象是特定的XGL对象,其包含可以被下载并且在该客户机设备300端的一个XGL向导引擎中被执行的程序和/或脚本。本领域普通技术人员应当明白要被执行的脚本可以以各种脚本语言和/或形式。例如,Javascript、VBscript、C#(“C-SHARP”)、等等。在从XGL动作对象中提取了脚本之后,在块2210中,解释和执行该脚本。然后在判定块2215中,判定是否有更多动作已经被触发。如果有的话,则处理过程返回到块2205。然而,如果在判定块2215中确定没有更多的动作已经被触发,则子例程2200在块2299处结束,并且处理过程返回到调用动作处理子例程2200的例程。
本领域普通技术人员应当明白虽然组件加载与卸载事件已经被用来说明在此描述的本发明的示范实施例,但是许多其它类型的事件也可以被用来触发一个向导界面中的动作。例如,事件可以通过验证故障排字错误和/或用户动作来触发。这些示例应当被认为是说明性的而非限制性的。
除了动态地创建一个向导界面之外,本发明还能够用于探测,诸如跟踪用户与一个向导界面的交互作用。图23说明了一个示范的探测例程,其用于跟踪用户与依据本发明形成的一个动态向导界面的交互作用。例程2300从块2301开始,并且继续到块2305,在那儿检测事件。接下来,在判定块2310中判断该事件是否是一个用于某些向导组件的加载事件。如果是这样的话,则在块2315中,探测例程2300开始记录与加载事件有关的用户动作。例如,如果用户在一个向导界面中加载了一个页面,则记录与那个页面有关的动作将从该页面加载事件开始。处理过程然后返回到块2305,并且等待直到检测到下一个事件为止。
如果在判定块2310中确定没有检测到一个加载事件,则在判定块2320中判定所检测到的事件是否为一个卸载事件。如果是这样的话,则在块2325中,卸载事件导致例程2300停止记录用于对应于卸载事件的加载事件的用户动作。例如,如果用户加载一个包然后卸载该包,则包的卸载停止在加载该包时创建的记录。接下来,在块2330中,记录数据被保存到一个与该用户有关的会话记录中。处理过程然后返回到块2305。
如果在判定块2320中,判定没有检测到卸载事件,则处理过程继续到判定块2335,在那儿判定该事件是否为一个结束事件。如果不是的话,则在块2340中记录该事件数据,而且处理过程返回到块2305以等待一个将要被检测的新事件。然而,如果判定块2335中检测到一个结束事件,则处理过程继续到块2345,在那儿停止所有的记录。接下来,在块2350中保存所有的记录数据,并且然后,处理过程在块2399处结束。
依据在此描述的本发明的示范实施例而形成的一个动态向导界面的XGL结构极大地增强了动态向导界面的定制性、局部性和可访问性。例如,图24A说明了依据本发明形成的一个示例向导页面2400。该页面包含一个后退按钮2442、下一步按钮2444、和一个取消按钮2448、以及一个左面板2410、右面板2430,所有这些都由向导页面框2405所包围。在左面板2410中包含的是说明性正文2412。右面板2430包含很多标记的字段2420。虽然在图24A中说明的向导页面2400可以很容易被一个向导界面的大多数用户理解,但是具有特殊需要的某些用户可能需要改进以提高他们与这样一个向导界面交互作用的性能。因此,图24B显示了在图24A中显示的向导页面2400的一个高对比度版本2450。高对比度向导页面2450实质上包含和在图24A中显示的向导页面2400相同的信息,除了左面板2410的文本2412a不具有着色背景而且具有放大字体之外。这些改变都被设计成能提高对比度和增强可读性。同样地,高对比度向导页面2450的右面板2430的标记字段2420a以一种高对比度方式给出。另外,在后退按钮2442a、下一步按钮2444a、和取消按钮2448a中的文本也为增强可视化而增加了字体大小。以XGL编码动态向导界面组件允许向导引擎的客户机端确定将使用哪个模板,而且由此规定将如何向一个终端用户呈现动态向导。
本领域普通技术人员应当明白即使比那些在图24A-24B中显示的更生动的示例也在本发明的范围之内。例如,由于在向导包被汇编到一个容器中的同时,客户机设备300与XGL服务器400处于通信状态,所以可以收集与位于客户机设备300的向导引擎部分的特定需要相符的特定页面和/或包。如果客户机设备使用法语作为选择的语言,则在动态向导的XGL容器中聚集到一起的包将包含用于在动态向导界面中显示的法语。某些局部化和定制可以简单地由驻留在客户机设备300上的模板和/或向导引擎确定。如上所述,高对比度模板可以驻留在客户机设备上。其它模板可以包含位于客户机设备300上的一个文本-音频转换器或者一个可视显示到盲文变换模板。这些改进都不会影响哪些包和/或页面被组合以形成向用户呈现的动态向导界面。更确切些,它们简单地把该呈现适度调整为一种可由终端用户更好使用的形式。
虽然已经说明和描述了本发明的最佳实施例,但是应当明白,能够在其中进行各种改变而不背离本发明的精神和范围。
权利要求
1.一种用于提供一个向导界面的计算机实现方法,包含确定用于创建向导界面一部分的一个包;在一个容器中封装所述包;以及传送所述容器到一个向导引擎以转换成为向导界面。
2.如权利要求1所述的方法,其中所述容器和所述包以一种自描述数据格式给出。
3.如权利要求2所述的方法,其中所述自描述数据格式是XML。
4.如权利要求1所述的方法,其中所述包包含描述向导界面的页面和对象。
5.如权利要求4所述的方法,其中所述对象以一种自描述数据格式给出。
6.如权利要求4所述的方法,其中 所述页面包含用于保持在所述页面之间前向和后向流动的前向和后向指针。
7.如权利要求4所述的方法,其中所述对象包含一个动作对象。
8.如权利要求1所述的方法,进一步包含在向导界面标识一个用户,并且检索用于预填充该向导界面的相关用户数据。
9.如权利要求7所述的方法,其中预填充该向导界面包含把一个数据结构中的自描述数据字段和所述包中的自描述对象进行匹配。
10.如权利要求1所述的方法,其中确定一个包包含收集多个要被封装在所述容器中的包,直至包含第一个分支包为止。
11.如权利要求10所述的方法,其中在一个分支包已经被传送给向导引擎之后,当选择所述被传送的包时重新使用所述被传送的分支包。
12.如权利要求11所述的方法,其中通过进一步把分支包封装到所述容器中,可以高速缓存所述分支包。
13.如权利要求10所述的方法,其中所述第一分支包包含指向多个分支包的多个指针。
14.如权利要求13所述的方法,其中响应于在向导界面中的选择,所述分支包中的一个被封装到一个分支容器中,用于传送到所述向导引擎。
15.如权利要求14所述的方法,其中所述封装的分支包包含一个指向所述分支包中的一个页面的指针,该分支包中包含进行所述选择的一个选择对象。
16.如权利要求1所述的方法,其中所述包封装一个附加包。
17.如权利要求16所述的方法,其中所述附加包包含实况数据对象。
18.如权利要求17所述的方法,其中所述附加包是一个分支包,而且所述实况数据对象是一个选择对象,其选择结果确定哪个分支包将被传送给所述向导引擎。
19.一种用于动态地提供一个描述所需向导界面的向导容器的计算机实现方法,包含接收对向导容器的请求;从所述请求中标识多个容器中的哪一个包含所需的向导界面;以及从所述多个容器中传送所标识的容器到一个向导引擎以转换成为所需的向导界面。
20.如权利要求19所述的方法,其中所述容器包含一个能够请求辅助容器以进一步转换所期望的向导界面的包。
21.如权利要求19所述的方法,其中所述容器包含多个自描述包,其中所述自描述包包含用于描述所需向导界面的组件的页面和对象。
22.一种计算机服务器装置,其具有一个处理器和存储器,所述存储器中包含用于提供一个向导界面的可执行指令,所述计算机服务器装置可操作用于确定用于创建向导界面一部分的一个包;从包含多个包的一个数据库中检索所述包;在一个容器中封装所述包;以及传送所述容器到包含一个向导引擎的客户机设备,以转换成为向导界面。
23.如权利要求22所述的计算机服务器装置,其中所述容器和所述包以一种自描述数据格式提供。
24.如权利要求23所述的计算机服务器装置,其中所述自描述数据格式是XML。
25.如权利要求22所述的计算机服务器装置,其中所述包包含进一步描述了向导界面的页面和对象。
26.如权利要求25所述的计算机服务器装置,其中所述对象以一种自描述数据格式给出。
27.如权利要求25所述的计算机服务器装置,其中所述页面包含用于保持在所述页面之间前向和后向流动的前向和后向指针。
28.如权利要求25所述的计算机服务器装置,其中所述对象包含一个动作对象。
29.如权利要求22所述的计算机服务器装置,进一步被操作用于在该向导界面处标识一个用户,并且检索用于预填充该向导界面的相关用户数据。
30.如权利要求29所述的计算机服务器装置,其中预填充该向导界面包含把一个数据结构中的自描述数据字段和所述包中的自描述对象进行匹配。
31.如权利要求22所述的计算机服务器装置,其中所述确定一个包包含收集多个将要被封装在所述容器中的包,直至包含第一个分支包为止。
32.如权利要求31所述的计算机服务器装置,其中在一个分支包已经被传送给向导引擎之后,当选择所述传送的包时重新使用所述传送的分支包。
33.如权利要求32所述的计算机服务器装置,其中可以通过进一步把该分支包封装在所述容器中以高速缓存所述分支包。
34.如权利要求31所述的计算机服务器装置,其中所述第一分支包包含指向多个分支包的多个指针。
35.如权利要求34所述的计算机服务器装置,其中响应于在该向导界面中的选择,所述分支包中的一个被封装在一个分支容器中,以传送给所述向导引擎。
36.如权利要求35所述的计算机服务器装置,其中所述封装的分支包包含一个指向所述分支包中的一个页面的指针,所述分支包包含进行所述选择的一个选择对象。
37.如权利要求22所述的计算机服务器装置,其中所述包可以封装一个附加包。
38.如权利要求37所述的计算机服务器装置,其中所述附加包可以包含实况数据对象。
39.如权利要求38所述的计算机服务器装置,其中所述附加包是一个分支包而且所述实况数据对象是一个选择对象,其选择结果确定哪个分支将被传送给所述向导引擎。
40.一种具有处理器和包含指令的存储器的计算机服务器装置,用于通过以下操作动态地提供一个描述一个所需向导界面的向导容器接收对向导容器的请求;从所述请求中标识多个自描述容器中的哪一个包含所需的向导界面;以及向一个向导引擎传送所标识的容器以转换成为所需的向导界面。
41.如权利要求40所述的计算机服务器装置,其中所述容器包含一个能够请求辅助容器进一步转换所需的向导界面的包。
42.如权利要求40所述的计算机服务器装置,其中所述容器包含多个自描述包,所述自描述包包含用于描述所期望向导界面的组件的页面和对象。
43.一种计算机可读介质,包含用于通过以下步骤提供一个向导界面组件的计算机可执行代码确定用于创建向导界面一部分的一个包;在一个容器中封装所述包;以及传送所述容器到一个向导引擎用于转换成为向导界面。
44.如权利要求43所述的计算机可读介质,其中所述容器和所述包以一种自描述数据格式给出。
45.如权利要求44所述的计算机可读介质,其中所述自描述数据格式是XML。
46.如权利要求43所述的计算机可读介质,其中所述包包含进一步描述了该向导界面的页面和对象。
47.如权利要求46所述的计算机可读介质,其中所述页面包含用于保持在所述页面之间前向和后向流动的前向和后向指针。
48.如权利要求46所述的计算机可读介质,其中所述对象包含一个动作对象。
49.如权利要求46所述的计算机可读介质,其中所述对象以一种自描述数据格式给出。
50.如权利要求49所述的计算机可读介质,进一步包含计算机可执行代码,用于标识该向导界面的一个用户,并且检索用于预填充该向导界面的相关用户数据。
51.如权利要求47所述的计算机可读介质,其中预填充该向导界面包含把一个数据结构中的自描述数据字段和在所述包中的自描述对象进行匹配。
52.如权利要求43所述的计算机可读介质,其中所述确定一个包包含收集要被封装到所述容器中的多个包,直至包含第一个分支包为止。
53.如权利要求52所述的计算机可读介质,其中在一个分支包已经被传送给向导引擎之后,当选择所述传送的包时重新使用所述传送的分支包。
54.如权利要求53所述的计算机可读介质,其中所述第一分支包包含指向多个分支包的多个指针。
55.如权利要求54所述的计算机可读介质,其中可以通过进一步把该分支包封装在所述容器中,高速缓存所述分支包。
56.如权利要求54所述的计算机可读介质,其中响应于在向导界面中的选择,所述分支包中的一个被封装在一个分支容器中,用于传送给所述向导引擎。
57.如权利要求55所述的计算机可读介质,其中所述封装的分支包包含一个指向在所述分支包中的一个页面的指针,所述分支包包含进行所述选择的一个选择对象。
58.如权利要求43所述的计算机可读介质,其中所述包可以封装一个附加包。
59.如权利要求58所述的计算机可读介质,其中所述附加包可以包含一个实况数据对象。
60.如权利要求59所述的计算机可读介质,其中所述附加包是一个分支包,而且所述实况数据对象是一个选择对象,其中的选择结果确定哪个分支将被传送给所述向导引擎。
61.一种包含计算机可执行代码的计算机可读介质,该可执行代码用于通过以下步骤动态地提供一个描述所需向导界面的向导容器接收对向导容器的请求;从所述请求中标识多个自描述容器中的哪一个包含所需的向导界面;以及向一个向导引擎传送所标识的容器以转换成为期望的向导界面。
62.如权利要求61所述的计算机可读介质,其中所述容器包含一个能够请求辅助容器进一步转换所需向导界面的附加包。
63.如权利要求61所述的计算机可读介质,其中所述容器包含多个自描述包,其中所述自描述包包含用于描述所需向导界面的组件的页面和对象。
全文摘要
本发明涉及一种用于向终端用户提供动态向导界面的系统和方法。在一个实施例中,一个客户机设备从一个远程服务器检索一个封装了多个使用自描述数据格式包的容器。在客户机设备上的向导引擎解释该容器和包以产生一个向导界面。更可取地是,本发明利用一个兼容的数据结构用于接收、保存、和传输所获取的与向导界面有关的信息。
文档编号G06TGK1475901SQ03140680
公开日2004年2月18日 申请日期2003年6月2日 优先权日2002年6月3日
发明者安德鲁·G·拜彼, 克里斯托弗·A·伊万斯, 恰德·C·尼夫, 普里特维纳斯·奥布拉, 莱斯利·S·耶, S 耶, C 尼夫, 安德鲁 G 拜彼, 托弗 A 伊万斯, 维纳斯 奥布拉 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1