首页 / 专利库 / 人工智能 / 对话代理 / 一种向用户提供培训的用于多种计算机应用程序的软件代理

一种向用户提供培训的用于多种计算机应用程序的软件代理

阅读:56发布:2021-05-12

专利汇可以提供一种向用户提供培训的用于多种计算机应用程序的软件代理专利检索,专利查询,专利分析的服务。并且本 发明 提出了一种 计算机系统 ,它包括一个应用目标程序,一个以计算机为 基础 的培训程序(“INSTRUCTION目标程序”)和一个代理器。INSTRUCTION目标程序与应用目标程序同时运行。应用目标程序包括一个第一动作处理器和一个第一命令处理器。第一动作处理器接收说明由用户采取的语法动作的信息,并根据语法动作产生语义命令。第一命令处理器从第一动作处理器接收语义命令并执行语义命令。,下面是一种向用户提供培训的用于多种计算机应用程序的软件代理专利的具体信息内容。

1、一种计算系统,它包括:
一个监视器,
一个在监视器上显示信息的第一应用目标程序,它对用户采取的语法动作作出响应,第一应用目标程序包括:
第一动作处理器,用于接收表示用户采取的语法动作的信息和按语法动作产生语义命令;
第一命令处理器,用于从第一动作处理器接收语义命令并执行该语义命令;
一个对用户采取的语法动作作出响应的INSTRUCTION目标程序,它在监视器上显示有关第一应用程序运行的信息;
一个代理器,它与第一应用目标程序和INSTRUCTION目标程序相连接,用于向INSTRUCTION目标程序发送语义命令以便向该INSTRUCTION目标程序说明在监视器上显示那个信息,以及截听从第一动作处理器向第一命令处理器发送的语义命令。
2、一种按照权利要求1的计算系统,其中INSTRUCTION目标程序包括:
INSTRUCTION动作处理器,用于接收表明由用户采取的语法命令的信息并按语法动作产生语义命令;
INSTRUCTION命令处理器,用于从INSTRUCTION动作处理器和代理器接收语义命令并该执行语义命令。
3、在一种具有一个监视器、一个应用目标程序、一个INSTRUCTION目标程序和一个代理器的计算系统中,一种向用户提供以计算机为基础的培训方法,该方法由以下步骤组成:
(a)运行应用目标程序;
(b)把语义命令自代理器发送至INSTRUCTION目标程序,此命令控制INSTRUCTION目标程序以显示有关该应用程序的信息;
(c)利用INSTRUCTION目标程序,显示有关此应用目标程序的信息;以及,
(d)在应用目标程序执行语义命令之前,利用代理器截听由应用目标程序产生的语义命令。
4、按照权利要求3的方法还包括下述步骤:
(e)将由应用目标执行的语义命令从代理器发送至应用目标程序。
5、按照权利要求3的步骤还包括下述步骤:
(f)在INSTRUCTION目标程序执行语义命令之前,用代理器截听由INSTRUCTION目标程序产生的语义命令。
6、在一种有一个监视器和一个代理器的计算机系统中,一种提供演示的方法,它包括操纵在一个第一目标程序的窗口内所显示的一个个图形接口单元,这种方法包括下述步骤:
(a)从代理器发送一个询问信息至第一目标程序,要求第一目标程序向代理器发送有关图形接口单元的信息;
(b)从第一目标程序向代理器发送此信息;以及,
(c)进行演示。
7、按照权利要求6的一种方法,其中,询问信息包括图形接口单元的同一性,以及此信息包括图形接口单元在窗口的位置
8、按照权利要求6的一种方法,其中,询问信息包括图形接口单元的同一性,以及此信息包括由图形接口单元所表示的第二目标程序的状态信息。
9、按照权利要求6的一种方法,其中,询问信息包括图形接口单元的位置,以及此信息包括图形接口单元的同一性。
10、按照权利要求6的一种方法,其中,步骤(C)包括如下子步骤:
(C1)从代理器向INSTRUCTION目标程序发送信息,命令INSTRUCTION目标程序显示对话数据;以及,
(C2)由INSTRUCTION目标程序在监视器上显示对话数据。

说明书全文

发明属于以计算机为基础的培训(CBT),更具体地说,属于应用一个软件代理向用户提供培训。

目前在市场上已有许多CBT应用程序,它们补充或代替手册、书面辅导材料和其它普通的说明材料。CBT可以是交互式的,且常以一个辅导教师为模型,提供特定的反馈以对培训课期间用户的表现作出响应。

一般来说,CBT有两种实施方案。在“模拟的CBT”中,应用程序是由一个CBT程序所模拟;在“同时的CBT”中,应用程序则与一个CBT程序同时运行。

随着应用程序变得越来越复杂和更多地运用图形,使用模拟的CBT变得更为困难,这是因为一个应用程序的复杂性一般要求模拟此应用程序的程序的复杂性。

同时的CBT常比模拟的CBT简单,这是因为在同时的CBT中,应用程序本身在培训作业期间提供其自己的接口和功能。在一次同时的CBT作业期间,CBT程序一般将启动应用程序,围绕着应用程序起着一种“外壳”的作用。

在同时的CBT作业期间,CBT将打开应用程序,并控制它使此应用程序达到一种已知的所需状态。CBT应用其自己的子程序,通过在应用程序顶部画出的“窗口”向用户提供培训用正文和图形。正文和图形解释此应用程序的概念并提示用户作出响应。CBT监视 用户的输入,以确定用户是否正确地作出响应,还监视显示器屏幕以确定何时应用程序已结束对输入的处理。然后,根据用户作出的响应,CBT再使培训进展下去。

通常,CBT是在语法级上控制和监视应用程序的活动。这里所谓的“语法级”指的是用户为了与一个应用程序对话所进行的动作,如敲键或鼠标的动作。例如,在一个工作于语法级上的CBT中,其中一个应用程序受一个键盘和鼠标所控制,并且输出至一个阴极射线管监视器,CBT将检测出键和鼠标输入以及阴极射线管上象素的状态。这种程度的交互作用称为“语法的”,因为在此级别上,计算机并不从语义上解释与此动作有关的意图。

按照本发明的优选实施例,提出了一种计算机系统,它包括一个应用目标程序,一个以计算机为基础的培训指令目标程序(“INSTRUCTION目标”)和一个代理器。INSTRUCTION目标程序与应用目标程序同时运行。应用目标程序包括一个第一动作处理器和一个第一命令处理器。第一动作处理器接收表示用户所采取的语法动作的信息,并根据此语法动作产生出语义命令。第一命令处理器从第一动作处理器接收语义命令并执行语义命令。

INSTRUCTION目标程序通过语法动作接收用户的输入,并在监视器上显示信息。此信息告诉用户关于第一应用程序的工作。在该优选实施例中,INSTRUCTION目标程序包括一个INSTRUCTION动作处理器和一个INSTRUCTION命令处理器。INSTRUCTION动作处理器接收表明由用户所采取的语法动作,并根据此语法动作产生语义命令。INSTRUCTION命令处理器从INSTRUCTION动作处理器接收语义命令并执行语义命令。

操作一任务语言程序的软件代理,向INSTRUCTION目标程序发出语义命令,指示INSTRUCTION目标程序显示哪些信息。此软件代理还监视应用目标程序和INSTRUCTION目标程序,在语义命令被执行之前截听这些命令。

图1为一个方图,说明在一个应用程序、一个软件代理环境和一个求助环境之间的相互关系。

图2为一个方块图,说明按照本发明的优选实施例,一个任务语言文件是如何产生和执行的。

图3为一个方块图,表示按照本发明的优选实施例在图1所示的应用程序。

图4为一个方块图,表示按照本发明的优选实施例,通过图1所示的应用程序的数据流。

图5为一个方块图,表示按照本发明的优选实施例的编译程序。

图6表示按照本发明的优选实施例的一个计算机、监视器、键盘和鼠标。

图7为图6所示的鼠标的顶视图。

图8为图5所示的编译程序中的数据流。

图9为一个方块图,它表示把一个执行以计算机为基础的培训的应用程序加至图1所示的应用程序和软件代理环境。

图10~17表示,由于图9所示的系统执行一项任务的结果,在图6所示的监视器上显示的内容。

图1所示的为根据本发明的优选实施例的一种计算机系统的方块图。用户111通过一个软件环境112与计算机系统通信。例如,软件环境112可以是Microsoft    Windows(微软件窗口),即由 Microsoft公司所出售的一种程序,该公司的营业地址为16011NE    36th    Way,Redmond,WA    98073-9717。软件环境112与一个应用程序100相互作用。含有描述用户动作的信息被软件环境112送至应用程序100。在该优选实施例中,含有用户动作的信息为由Wicrosoft    Windows发送的标准信息。应用程序100含有一个动作处理器101,它将用户的语法动作转换成单个的语义命令。例如动作处理器101观察和收集用户的动作,如击键和由用户使用的鼠标的运动。只要用户的动作符合一个命令的语法,则产生一个语义命令。有多种可为用户动作使用以产生一个语义命令的方式。用户产生语义命令的方式可以不同,但语义命令的执行总是相同的。动作处理器101能从语法上说明用户用于构成一个特定的语义命令的许多方式。除用户的语法动作外,动作处理器101还处理输至应用程序100的其它信息。其中有些信息将会导致及产生一个语义命令;另一些则将完全由动作处理器101进行处理。

应用程序100还包括一个命令处理器102,它执行语义命令。命令处理器102接收内部形式的语义命令(内部形式在下文中还将详细介绍),如果一个命令不能被执行,则回送一个出错。

应用程序100和软件环境112在它们之间的接口层与求助环境119相互作用。求助环境119含有一个求助应用程序103,它使用一个求助文本104。求助环境119还包括一个求助工具105,它用于产生求助文本104。

软件环境112还与一个代理环境118相互作用。代理环境118包括一个代理任务107和一个代理器108。

代理器108与应用程序100在五种不同的概念类别上相互作 用以执行五种功能。代理器108与动作处理程序101通过一个数据通道113相互作用进行询问。代理器108通过一个数据通道114在动作处理器101和命令处理器102之间相互作用,以监视应用程序100的活动。代理器108通过一个数据通道115与命令处理器102相互作用,以使命令由应用程序100执行。代理器108通过一个数据通道116与命令处理器102相互作用,以处理在应用程序100中处理命令过程中的出错。代理器108通过一个数据通道117与命令处理器102相互作用,以记录应用程序100的执行和接收一个命令结束的通知。

在本发明的优选实施例中,命令可以用四种方式表达:(1)任务语言的形式,以关键字和参数贮存;(2)P码形式,它是由代理器108翻译的外部形式的二进制码,并带有附加的标题;(3)外部形式,它是为应用程序所理解的二进制数据,并在代理器108和应用程序100之间传送;(4)内部形式,为二进制命令,这些命令在应用程序100中执行。这四种表示命令的方式在本文的附录A中将有进一步的介绍。

图2为说明整个代理系统工作的方块图。任务语言文件131是一个含有任务语言的文件。任务语言是描述一个应用程序功能的命令的文本形式。任务语言由类别相关的命令和类别无关的命令所组成。类别相关的命令为由一个应用程序执行的命令。在图2中仅示出一个应用程序100。但是,代理器108可与许多应用程序相互作用。

在本发明的优选实施例中,由应用程序操作的数据文件通过使用目标程序来进行访问。每个目标程序包括访问一个数据文件和访问一个应用程序。那些引用相同的应用程序的目标程序被称作是同一类别 的成员。每个应用程序执行一组不同的命令。因此,类别相关的命令对不同的应用程序是不一样的。

代理器108执行类别无关的命令,这些命令为代理器108所能理解。类别无关的命令由代理器108执行,而不是由应用程序所执行。

任务语言文件131由一个类别无关的分析程序122用于准备一个P码文件121。在准备P码文件121过程中,类别无关分析程序122调用类别相关分析程序123、124等。如下文还将进一步介绍的,一个类别相关的分析程序是这样的一个分析程序,它产生类别相关的命令,这些命令以P码形式封装。代理器108从P码形式提取其外部形式的命令,将这些命令送往适当的应用程序。P码内的一个类别域表明哪一个应用程序应接收一个特定的类别相关的命令。类别无关分析程序122是这样一个分析程序,它产生由代理器执行的P码。

任务语言文件131可由用户111用一个代理任务编辑程序132来准备。或者,任务语言文件也可用一个类别无关的记录装置125来准备,该记录装置则利用类别相关的记录装置126、127等。总的说来,记录装置记录应用程序的命令供以后读出之用。当计算系统处在记录工作方式时,代理任务编辑程序132从应用程序(如图示的应用程序100)接收输入,它详细说明代理器108和应用程序将采用什么动作。应用程序通过一个应用程序接口(API)130与代理任务编辑程序132连接。当计算系统处于记录工作方式时代理任务编辑程序132把数据输送到类别无关的记录装置125,当代理任务编辑程序被用户111所用时,则输送到 任务语言文件131。

类别无关的记录装置125接收此信息并构成任务语言文件131。当类别无关的记录装置125发现代理任务编辑程序132正在输送有关被一个应用程序所采取的动作的信息时,类别无关的记录程序就调用该应用程序的类别相关的记录程序,然后此记录程序产生用于该动作的任务语言形式。类别无关的记录程序125产生由代理器108采取的行动的任务语言形式。

在执行P码文件121时,代理器108读取每个P码命令,并确定此P码命令是否会有一个将由代理器108执行的类别无关的命令,或一个由一个应用程序执行的类别相关的命令。如果P码命令含有一个类别无关的命令,则代理器108执行此命令。如果P码命令含有一个类别相关的命令,代理器由P码命令确定将接收此命令的应用程序。然后代理器108提取一个插入在P码中的外部形式表示的类别相关的命令。此类别相关的命令再被送至该应用程序。例如,如果类别相关的命令是用于应用程序100,则此类别相关的命令被送至应用程序100。在应用程序100内,一个译成内部形式的

装置128被用来将类别相关的命令(以外部形式传送的)翻译至命令的内部形式。

API130用于在代理器108和应用程序100之间作为接口。API130为一组函数和信息,用于访问代理器108和其它部份。

当系统处于记录工作方式时,译成内部形式的装置128对来自代理器108的命令进行翻译,然后通过图3中的一个命令接口部件146将它们输送到命令处理器102。一个译成外部形式 的装置129接收已被命令处理器102执行的内部形式的命令。该命令通过回送接口部件147所接收,如图3所示。译成外部形式的装置129将内部形式的命令译成外部形式的命令。然后外部形式的命令再通过API130传送至任务编辑程序132。

图3示出的是本发明的优选实施例中应用程序100的详细组成。应用程序100包括一个用户动作接口单元145,它与软件环境112和命令接口单元146相互配合,命令接口单元146则与动作处理器101和命令处理器102连接。如图所示,动作处理程序101和命令处理程序102都访问应用程序数据144。一个回送接口单元147对命令处理器102作出响应,并把控制回送至软件环境112。图示的译成外部形式的装置129与回送接口单元147相互作用。只有在应用程序100处于读出或记录工作方式时,回送接口单元147才被调用。这些工作方式在下文中还将充分阐述。回送接口单元147向代理器108指明一个命令已被应用程序100所执行,应用程序100已准备好执行下一个命令。

在应用程序100内还有一个模态对话区处理器148和一个出错对话区单元149。这两部份都与软件环境112相互作用以控制对话区的显示,对话区则与用户111通信。

一些应用程序能同时在一个以上的窗口工作。当这样工作时,对应用程序在其中工作的多个窗口的每一个加有一个无模式用户动作接口单元、一个无模式动作处理器和一个无模式命令接口单元。例如,在应用程序100中示出有一个无模式用户动作接口单元141、一个无模式动作处理器142和一个无模式命令接口单元143。

图4所示的是应用程序100内的数据流。送给应用程序100 的信息由一个用户动作接口单元145所接收。对于某些类型的信息,如来自求助应用程序103的信息,用户动作接口单元145使应用程序100立即返回。否则,此信息将送至读出信息测试单元150。

如果此信息是用于读出已由记录或分析而产生的命令,则此信息将送至译成内部形式的装置128,128再将此信息中的命令由外部形式转换至内部形式。然后此命令再输至命令接口单元146。

如果此信息不是一个读出信息,则此信息被送至动作处理器101,以便(例如)从语法上解释引起产生此信息的一个用户动作。如果没有由动作处理器101或由内部处理程序108产生的语义命令,则读出信息测试单元150使得应用程序100返回。如果有一个所产生的语义命令,则此命令被送至命令接口单元146。

如果代理器108正在监视应用程序100执行命令,则命令接口单元146将所接收到的任何数据送至译成内部形式的装置129,该装置129把命令译成外部形式,再将命令传输至代理器108。命令接口单元146还将数据送至一个模态对话区测试单元152。

如果被传送的数据含有一个用于对话区的请求,则模态对话区测试单元152把数据送至模态对话区处理器148进行处理。否则模态对话区测试单元152将此数据送到命令测试单元151。

如果数据含有一个命令,则命令测试单元151将该命令送至命令处理器102执行。命令测试单元151把数据送往回送接口单元147。

如果代理器108正在记录命令,回送接口单元147把数据送 至译成外部形式的装置129以便转换为外部形式,并通过回送接口单元147传送至代理器108。回送接口单元在下一个信息收到时返回。

图5示出的是在任务语言编译程序120中的数据流。任务语言编译程序120用来产生P码文件121,它由用户用任务语言编写。任务语言文件131包含有用户所写的命令。在本发明的优选实施例中,任务语言是按照本文的附录B中的代理任务语言准则来编写的。

任务语言编译程序120是一个两遍编译程序。在第一遍时,所用的程序包括有一个输入流处理器164、一个表达式分析程序166、一个类别相关的分析程序122、一个保存文件缓存器171、第二遍程序174和类别相关的语法分析程序(所示出的有类别相关语法分析程序123、一个现行的类别相关的语法分析程序167和一个类别相关的语法分析程序168)。由于第一遍扫描的结果,建立起一个暂时文件176。

类别无关的语法分析程序122分析类别无关的任务语言命令。在系统内运行的每个应用程序还有它执行的特殊命令。因此,对每个应用程序都开发了一个单独的类别相关的语法分析程序。此语法分析程序能分析它为之开发的应用程序将执行的命令。随着应用程序加入系统或从系统删去时,类别相关的分析程序可加入到任务语言编辑程序120或从其中删去。

此外,图上还示出有一个CBT语法分析程序125。当执行CBT时,CBT语法分析程序被用来分析由代理器108运行而产生的码。

当编译开始时,类别无关的语法分析程序122从输入流处理器 164要求一个标记。输入流处理器164对任务语言文件131进行扫描并产生标记。然后,类别无关的语法分析程序122完成下列几件事之一。类别无关的语法分析程序122可能产生送至保存文件缓存器171的P码。如果类别无关的语法分析程序122期待的下一个标记是一个表达式,则类别无关的语法分析程序122将调用一个用程序Makeexpression(完成表达式)(),它调用表达式语法分析程序166。表达式语法分析程序166从输入流处理器164请求标记直至表达式结束。然后表达式语法分析程序166产生P码以送至保存文件缓存器171,再保存在暂时文件176中。此外,表达式语法分析程序166产生一个表达式标记,此记号被回送至输入流处理器164。输入流处理程序164在类别无关的语法分析程序122要求此表达式时,将此表达式送至类别无关的语法分析程序122。

由于执行一个Focus命令的结果,一个特定的类别相关的语法分析程序将具有优先权。因此,在它的语法分析环中,类别无关的扫描程序122a将调用当时有Focus命令的应用程序的类别相关的语法分析程序。此类别相关的语法分析程序将从输入流处理程序164请求标记,直至它接收到一个类别相关的命令,从而由类别相关的语法分析程序调用的语义程序转换为外部命令形式,或直至类别相关的语法分析程序确定它不能分析所接收到的表达式。如果类别相关的语法分析程序遇到一个表达式,它可通过调用Makeexpression()来调用表达式语法分析程序166。如果类别相关的语法分析程序不能分析它所接收到的标记,则类别相关的语法分析程序回送一个出错,类别无关的语法分析程序将试图分析这些标记。

一个Focus    OFF命令将立即使类别无关的语法分析程序122分析所有的命令,而不将它们送往一个类别相关的语法分析程序。当分析一组类别无关的命令时,这样做可避免类别相关的语法分析程序软件不必要的运行,从而节省为编译任务语言所需的计算时间。

CBT编译程序指令使得CBT编译程序的一个标志为“通”或“断”。CBT编译程序标志确定CBT语法分析程序125是否可被调用来分析命令。分析的优先次序将在下文讨论。

命令将先将送至有Focus命令的任何类别相关的语法分析程序。如果没有具有Focus命令的类别相关的语法分析程序,或者如果具有Focus命令的类别相关的语法分析程序不能分析此命令,则只要CBT编译程序的标志为“通”,该命令将送到CBT语法分析程序125进行分析。如果CBT编译程序的标志为“断”,或者CBT语法分析程序125不能分析此命令,则此命令将被类别无关的语法分析程序122所分析。

图6所示为一个INSTRUCTION目标程序可以运行的计算机18。还出出有一个监视器14,一个鼠标20和一个键盘19。图7所示为带有按钮27、28及鼠标20。

图8为类别无关的语法分析程序122和类别相关的语法分析程序之间的数据流,类别相关的分析程序示出的是语法分析程序123和124。为了集中讨论语法分析程序之间的关系,在图8的说明中,扫描程序122a对表达式语法分析程序166的调用不予考虑。

同样,图上画出CBT语法分析程序125和CBT语法分析程序125的类别相关的扫描程序125a。当CBT标志为“通”时,如上所述,分析程序的优先顺序为带有Focus命令的类别相关的语 法分析程序,然后是CBT语法分析程序,最后为类别无关的语法分析程序122。在以下的讨论中,为便于说明,假定CBT标志为“断”。

当类别无关的语法分析程序122准备好接收一个标记时,它调用一个扫描程序122a。扫描程序122a检查是否有一个Focus命令相对一个应用程序。如果在一个应用程序中没有一个Focus命令扫描程序122a就调用输入流处理程序164,它向扫描程序122a回送一个标记。扫描程序122a再将此标记回送给类别无关的语法分析程序122。

如果在一个应用程序中有一个Focus命令,该应用程序的类别相关的语法分析程序具有优先权并被调用。例如,当有Focus于语法分析程序123的应用程序时,语法分析程序123通过一个类别相关的扫描器123a调用扫描程序122a。扫描程序122a检查它的状态,并确认它正在被一个类别相关的语法分析程序所调用,因此它不递归地调用另一个类别相关的语法分析程序。扫描程序122a调用输入流处理程序164,它向扫描程序122a回送一个标记。扫描程序122a通过类别相关的扫描程序123a向类别相关的语法分析程序123回送此标记。虽然本发明的执行过程中包括有相关的扫描程序123a,在其它的执行过程中也可能没有相关的扫描程序123a,语法分析程序123可直接调用扫描程序122a。

只要相关的语法分析程序123能分析它所接收的标记,相关的语法分析程序123就能继续通过相关的扫描程序123a请求标记。用这些标记,相关的语法分析程序将调用语义程序,后者将产生插入 在P码中的类别相关的外部指令。当相关的语法分析程序123不能分析它所接收的一个标记时,相关的语法分析程序将向扫描程序122a回送一个出错。扫描程序122a然后再调用输入流处理程序164并从它接收相关的语法分析程序123不能分析的标记。此标记被回送到无关的语法分析程序122。无关的语法分析程序122分析此标记,调用语义程序来产生P码供代理器108执行。下一次无关的语法分析程序122从扫描程序122a请求一个标记,扫描程序122a将重新调用相关的语法分析程序123直至存在一个Focus    OFF命令或在另一个应用程序上有一个Focus命令。

当Focus命令是对相关的语法分析程序124的应用程序上时,扫描程序122a将调用相关的语法分析程序124。相关的语法分析程序124调用一个相关的扫描程序124a并按类似于相关的语法分析程序123进行工作。

图5中所示的保存文件缓存器171从类别无关的语法分析程序122和从表达式分析程序166接收P码,也从类别相关的语法分析程序接收插入P码中的外部形式命令。保存文件缓存器171将此信息贮存在一个暂时文件176中。第二遍程序174接收贮存在暂时文件176中的这个P码和外部形式命令并完成内务操作,如确定地址等,以便产生P码文件121。

在图9中,应用程序100被包含于(例如)一个目标程序“NewWave    Office”中。窗口300为用户与目标程序“NewWave    Office”之间的接口。为了培训用户如何使用目标程序“NewWave    Office”,一个INSTRUCTION应用程序200与应用程序100同时运行。INSTRUCTION应用程序200 被包含在一个INSTRUCTION目标程序中,INSTRUCTION应用程序200与其它应用程序或系统在设计上相似。如图所示,INSTRUCTION应用程序200有一个动作处理器201和一个命令处理器202。

代理器108与INSTRUCTION应用程序200的相互作用与系统中其它应用程序相同。例如,代理器108通过一个数据通道213与动作处理器201相互作用进行询问。代理器108通过一个数据通道214在动作处理器201和命令处理器202之间相互作用,以便监视应用程序200的活动。代理器108通过一个数据通道215与命令处理器202相互作用以便使命令为INSTRUCTION应用程序200所执行。代理器108通过一个数据通道216与命令处理器202相互作用以便处理在INSTRUCTION应用程序200中执行一项命令的出错。代理器108通过一个数据通道217与命令处理器202相互作用,以便记录INSTRUCTION应用程序200的执行和接收一个命令结束的通知。

INSTRUCTION应用程序200在执行应用程序100的命令时与用户相互作用,例如通过显示对话区(如窗口302)的方式进行。INSTRUCTION应用程序200还可通过使用其它方法(如话音)来通信。

图10~17表示的是一个简明的CBT对话过程。在对话期间,用户被告知如何打开一个档案文件“Fred”,在图10中它用一个图象301来表示。在图10上还示出一个图象304,它表示代理器108。图象309表示一个目标程序“Lesson    Task” (“课程任务”),它包括如下表1所示的任务语言文件的已编译的P码形式。任务语言文件的编译的P码形式被代理器108所运行。如果目标程序“Lesson    Task”(“课程任务”)在编译之前已被打开,则可以对任务语言文件的P码形式的源码进行编辑。

一个图象305表示一个被称为“Lesson    Instruction”(“课程说明”)目标程序,它包括被称为对话数据的数据,含有向用户显示数据的库程序的INSTRUCTION应用程序200。目标程序“Lesson    Instruction”(“课程说明”)在被代理器108命令时显示此数据。受鼠标20控制的箭头303在图上指示图象309。

当箭头303处于图象309上时,用户可通过按钮27来选择目标程序“Lesson    Task”(“课程任务”)。同时,图象309最亮,如图11所示。图象309的阴影307将跟随着箭头303。当阴影307被置于图象305上、并且按钮27被释放,则图象309将从窗口300消失,如图12所示,而代理器108将开始运行包含在目标程序“Lesson    Task”(“课程任务”)中的任务语言程序。下表1中给出的例子是包含在Lesson    Task(“课程任务”)中的该任务语言程序的源程序。

表1

1    task

2    cbt    on

3    OPEN#    =    1

4    SELECT#=    211

5    focus    on    office    "NewWave    Office"

6    select    instruction"Losson    Instruction"

7    open

8    focus    on    instruction"Lesson    Instruction"

9    show_window    1

10    on    command    do    process    button

11    button_flag#    =    0

12    set    command    on

13    while    button_flag#    =    0

14    wait

15    endwhile

16    set    command    off

17    hide_window    1

18    show_window    2

19    on    command    do    process_open

20    open_flag#    =    0

21    set    command    on

22    while    open_flag#    =    0

23    wait

24    endwhile

25    set    command    off

26    hide_window    2

27    show_window    3

28    on    command    do    process_button

29    button_flag#    =    0

30    set    command    on

31    while    button_flag#    =    0

32    wait

33    endwhile

34    set    command    off

35    hide_window    3

36    end    task

37

38    procedure    process_button

39    if    sys_cmdclass()="INSTRUCTION"

40    button_flag#    =    1

41    endif

42    ignore

43    endproc

44

45    procedure    process_open

46    if    sys_cmdclass()="INSTRUCTION"

47    do    demo

48    open_flag#    =    1

49    ignore

50    else

51    cmd#    =    sys_command()

52    if    cmd#    =    SELECT#

53    class#    =    sys_commandparm(1,0)

54    title#    =    sys_commandparm(1,len(class#))

55    execute

56    else

57    if    cmd#    =    OPEN#    and    class#    ="FOLDER"and

title#    ="Fred"

58    open_flag#    =    1

59    execute

60    else

61    ignore

62    endif

63    endif

64    endif

65    endproc

66

67

68    procedure    demo

69    focus    on    office"NewWave    Office"

70    object_region#    =    where_is("FOLDER","Fred")

71    point    to    center(object_region#)

72    double_click    left    button

73    pause    5

74    endproc

在表1中的任务语言是通过使用一个类别无关的语法分析程序122、一个用于目标程序“NewWave    Office”的类别相关的语法分析程序、一个用于目标程序“Lesson    Instruction”(“课程说明”)的类别相关的语法分析程序和一个CBT分析程序125,由任务语言编译程序120所编译。例如,第5行中的“Focus”命令由类别无关的语法分析程序122所分析,第6行中的“Select    Instruction”(选择指令)命令是由目标程序“NewWave    Office”的类别相关的语法分析程序所分析,第9行中的“Show-Wnidow”(显示窗口)命令由目标程序“Lesson    Instruction”(“课程说明”)的类别相关的语法分析程序所分析,第71行中的“Point    to    Center”(指向中心)命令由CBT语法分析程序125所分析。

表1中程序的第1行含有字“task”(任务),因为每个任务语言程序的第1行都含有指令“task”。同样,表1程序的第36行含有字“end    task”(任务结束),表示这是任务程序中的最后一条指令。

第2行的指令将CBT编译程序标记“通”。第3和4行的指令 设定变量。第5行的指令将Focus置于目标程序“NewWave    Office”上。第6行和第7行的指令将被代理器108送至目标程序“NewWave    Office”。当被目标程序“NewWave    Office”执行时,这些指令将使目标程序“Lesson    Instruction”(“课程说明”)被选择和打开。当目标程序“Lesson    Instruction”(“课程说明”)被打开时,它运行INSTRUCTION应用程序200。在图13上显示最亮的图象305表明选择了“Lesson    Instruction”(“课程说明”)。

第8行的指令将Focus命令置于目标程序“Lesson    Instruction”(“课程说明”)上。第9行的指令,当由代理器108执行时,将被代理器送往目标程序“Lesson    Instruction”(“课程说明”)。当由目标程序“Lesson    Instruction”(“课程说明”)执行时,此指令将在窗口300的顶部打开窗口302,如图14所示。窗口302告诉用户关于如何打开一个目标程序。当用户读完窗口302后,他利用鼠标将箭头置于一个按钮308上,再按压按钮27。实质上代理器108等待用户选择按钮308,其中标有“继续”字样。代理器108将使其它每个命令都被忽略。代理器108是通过监视被其它运行的目标程序所执行的应用程序和截听被执行之前的命令实现这一点的。为此所需的程序将在下文中介绍。

当用户读窗口302时,第10~14行中的指令被代理器108所执行。第10行中的指令确定一个监视过程。在第11行中,变量“Button-flag”(按钮-标志)为清“零”。第12行的指令“接通命令”接通监视。当监视接通时,在用户执行任何命令时,过程“Process-button”将被执行。这相应于在一个应用程序中在一 个动作处理器和一个命令处理器之间沿着一条数据通路传送任何命令,例如,沿着应用程序100的动作处理器101和命令处理器102之间的数据通道114,这称作命令陷阱。因为代理器108能监视“NewWave    Office”应用程序100和INSTRUCTION应用程序200,故能产生命令陷阱。当代理器产生一个命令陷阱时,从动作处理器101送至命令处理器102的命令和动作处理器201送至命令处理器202的命令被代理器108所截听,从而使目标程序“NewWave    Office”和“课程1”被代理器108所监视。从这二个目标程序来的语义命令在执行之前被监听,并形成一个命令陷阱。

过程“Process-button”表示在表1第38~43行,函数“Sys-cmdclass()”(系统命令类别)回送一个从用户接收此命令的目标程序的类别字符串。在第39行中,目标程序为INSTRUCTION应用程序200,也就是说,如果由于用户已把箭头303置于按钮308上并按压按钮27使过程“Process    button”被调用,则函数“Syo-cmdclass()”将回送字符串“INSTRUCTION”,并且第40行中变量“Button-flag#”被置成“1”。在另一方面,如果任何其它的目标程序从用户接收一个命令,例如,如果用户把箭头303置于窗口300并按压按钮27,则目标程序的类别字符串将被回送且不等于“INSTRUCTION”,并且变量“Button-flag”将不置为“1”。

在第42行的“Ignore”(忽略)命令表明,不管那个目标程序(即不管是目标程序“NewWave    Office”或“课程1”)回 送从用户来的命令,该命令本身被忽略。也就是说,不管命令来自“NewWave    Office”应用程序100或INSTRUCTION应用程序200,该命令不被回送至命令处理器102或命令处理器202作进一步处理。反之,通过把命令设置API-NO-CMD而回送一个NULL(零)命令。

在第12行中接通监视后,代理器执行第13行中的命令,进入一个While(短时)循环(指令13~15),等待用户用箭头303选择按钮308。处于此循环中,当在一个应用程序中产生任何命令时,过程“Process-button”运行。在过程“Process-button”结束时,如果Button-flag#=0,代理器108继续处于如第13~15行中的指令所确定的循环中。如果Button-flag#=1,代理器108继续执行程序,从第16行的指令开始。

在第16行中,监视被“断”。第17和第18行的指令被代理器108送至目标程序“Lesson    Instruction”(“课程说明”)以便由INSTRUCTION应用程序200执行。这二个指令的执行使INSTRUCTION应用程序200从显示器14上移去窗口302和显示窗口311,如图15所示。第19行的指令被代理器108执行时,重新定义监视器过程为过程“Process-open”。

在第20行,变量“Open-flag#”(打开标记)被置为“0”。在第21行,指令“Set    Command    on”把监视“接通”,使命令在被系统中运行的任何目标程序执行之前,被代理器108所截听。

第22~24行中的指令通知代理器108在继续执行程序之前等待,直至过程“Process-Open”中的变量“Open-flag”被 置为“1”。当在一个应用程序中产生一个命令时,由于用户动作的结果,过程“Process-open”被运行。在结束时,如果Open-flag#=0,代理器继续处于由第22~24行所确定的循环中。如果Open-flag#=1,代理器108继续执行程序,从第25行的指令开始。

过程“Process-Open”在第45~65行中表示。如果在第46行中,函数“Sys-cmdclass()”回送“INSTRUCTION”,这表示它是曾试图执行一个命令的INSTRUCTION应用程序200。这意味着用户已选择按键314,请求一个演示。因此在第47行,过程“demo”(演示)被调用。在第48行,变量“Open-flag#”被置“1”。在第49行,代理器108被指示忽略正被监视的命令。

过程“demo”表示在第68~74行,它向用户表明如何打开档案文件“Fred”。第68行的指令把“Focus”置于目标程序“NewWave    Office”。询问函数“Where-is”(那里是…)(“档案文件”,“Fred”)询问目标程序“NewWave    Office”在它的显示上(即窗口300)那里是档案文件Fred。当代理器108执行此指令时,代理器发送一个API-INTERROGATE-MSG信息给目标程序“NewWave    Office”,后者以档案文件Fred在窗口300的位置座标作出响应。

在第70行的指令中,变量“Object-negiob”(目标程序范围”被置为由函数“Where-is”(“FOLDER”,“Fred”)所回送的值。第71和72行的指令产生有顺序的用户动作级别的信息,它通过用户动作接口送至目标程序“NewWave、Office”供执行。 如图16所示第71行的指令使箭头303移动以指向档案文件Fred的中心。在图16中,箭头303的运动是由表示在运动途径310的起点和终点上的箭头303所表示。在第72行,一个用户动作(相当于按压鼠标20的按钮27二次)被送至目标程序“NewWave    Office”进行处理。在第73行,一个5秒的暂停使用户有机会去对他所看到的作出响应。

总的来说,存在三种类型的询问功能。功能“Where-is()”具有一个目标程序的类别和标题的标识符作为参数,并要求在监视器14的图象显示器内的长方形区域代表该目标程序。功能“Whats-at()”(什么在那里())有显示器上的一个点作为功能,并要求在该点由一个图象所表示的任何目标程序的同性。功能“Status()”(状态)具有一个目标程序的标识符作为一个功能,并要求该目标程序的状态,如该目标程序是否有Focns命令或是否有一个供该目标程序用的打开的窗口。每一个这类功能的指令,当被代理器108执行时,会导致从具有Focus的目标请求信息的代理器发送一个API-INTERROGATE-MSG信息。

询问信息的使用使得演示程序的使用有很大的灵活性。由于采用一个询问功能,演示程序就能定位一个目标程序,确定那些目标程序处于特定位置上,并确定一个目标程序的状态。这些询问功能的采用可使演示程序执行这样一项演示,即使该演示程序开始并不知道在演示中使用的目标程序的位置、标识符和/或状态。

如果用户想打开档案文件Fred,而不是接收一个演示,则过程“Process-open”的51~64行的指令将使代理器108在执行由“NewWave    Office”应用程序100产生的命令之前先监 视这些命令。用户所产生的一个命令,当被从动作处理器101送至命令处理器102时被截听。

第51~64行中的指令使用户能以多种方式打开档案文件Fred。例如,用户可以把箭头303置于档案文件Fred处并二次按压按键27,或者,用户可以选择档案文件Fred并从一个下移的菜单中选用命令“Open”。不管用户选用何种打开档案文件Fred的方法,两个命令必须依次发生。首先,在用户已选用档案文件Fred的情况下,“选择”命令必须回送到命令处理器102。当发生这种情况时,在第53行中的Class#被赋以值“FOLDER”(档案文件),第54行中的Title#被赋以值“Fred”,此“选择”命令在第55行执行。其次,一个“Open”命令必须回送到命令处理器102供执行。当一个“Open”命令被回送时,并且,如果Class#=Folder和Title#=Fred,则第58行中的Open-flag#将被置“1”,此Open命令将在第59行执行。

所有其它的命令被代理器108所忽略。当用户成功地打开档案文件Fred时,窗口319出现,如图17所示。

在第25行,监视被关闭。第26和27行的指令被代理器108送至目标程序“Lesson    Instruction”(“课程说明”)供执行。执行这些指令时,窗口311从显示器14移去,窗口316出现,如图17所示。在第28行的指令重新定义监视过程为过程“Process-button”,使得在用户执行任何命令时,过程“Process-button”被执行,但是仅当监视被接通时才如此。

在第29行,变量“button-flag#”被置“0”。在第30行,指令“Set    Command    on”(接通命令)使得监视接通,以 便在任何一个应用程序中产生一个命令时也产生一个命令陷阱。

只要button-flag#保持为0,代理器108就循环执行第31~33行之间的指令。在第32行指令处,代理器108等待从任何应用程序截听来的一个命令。当一个来自INSTRUCTION应用程序200的命令被截听时,button-flag#设置为“0”,代理器108退出循环,继续执行第34行的指令。

在第34行,监视被关闭。第35行的指令被代理器108送至目标程序“Lesson    Instruetion”(“课程说明”)执行。执行此指令时,窗口316从显示器14移去。

附录A含有API130的介绍(程序员使用指南第4章)。

附录B为开发代理任务语言的准则(代理任务语言准则)。

附录C含有任务语言详细说明。

附录D含有API-INTERROGATE-MSG介绍。

附录E为一篇题为“可扩展的代理任务语言”的论文。

附录F含有HP公司的内部文件,题为“在NewWave上实施以计算机为基础的培训的工具和策略”。

附录G含有一篇刊登在HP公司杂志上的文章,题为“以计算机为基础的培训设施(“Cousteau”)”。

高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈