移动对象,控制移动对象的方法,生成移动对象组的方法和装置,及存储用于生成移动对...的制作方法

文档序号:6412728阅读:192来源:国知局
专利名称:移动对象,控制移动对象的方法,生成移动对象组的方法和装置,及存储用于生成移动对 ...的制作方法
技术领域
本发明涉及用于计算机网络的数据处理方法,尤其涉及一种移动代理技术,其中一个移动代理被移到位于一个分布计算机环境中的一个网络中的一个远程服务器以在该远程服务器准备一条指令。
现有技术中有一种移动代理技术,其中一个移动代理被移到位于一个分布计算机环境中的一个网络中的一个服务器以准备一条指令(日本未审查专利公开平No.7-182174(USP5,603,031),“最新因特网技术”,西田文彦,藤原进等,Nikkei Communication Extra Issue,Nikkei BP Co.,Ltd.,pp.104 to 117)。
这种移动代理主要包括两部分,“移动代理”和“地点”。移动代理可以在存在于一个网络中的地点间移动,而保持该移动代理的内部状态。在一个地点,移动代理可以与另一个代理(另一个移动代理或非移动代理)联系并接受必要的服务。该地点是由存在于一个网络中的并且是代理所移动的一个目标位置的服务器提供的,该位置支持代理间的联系并消除硬件和平台方面的差异。
移动代理技术使移动代理执行更多的需要花费劳力的工作,例如根据参加者的时间表和会议房间的使用条件进行室内会议设置的动态调整,及获取分布在网络中的所需信息。
假设一个常规的移动代理在多个参加者的时间表中搜索开会时间并且预订会议房间。移动代理连续地从存在与参加者的时间表相关的信息的地点转移到与预订会议房间相关的信息所在的地点;搜索参加者的开会时间,某个会议房间的未占用时间期间;临时预订参加者的开会时间和会议房间未占用时间;最后搜索对于所有的参加者都可接受的时间段。如果找到了这种时间段,则必须向参加者报告临时的预订作为一个确定预订并且必须预订会议房间。
但是,当参加者的数目或可用的会议房间数目很大时,在临时预订和确定预订之间有时间延迟。结果,进行另一个室内会议预订的代理必须等待,或者可以找到可用的时间段的时间区间将缩短。在这种情况下,如果多个代理并行地执行处理,则将缩短处理时间,而且移动代理为进行临时预订而锁定的时间也可以缩短。另外由于处理复杂而必须并行处理时,客户现场必须发送多个移动对象以顺序执行处理,以向客户现场重新发送获得的结果并且使用结果手动地执行所希望的处理。
尽管要求移动代理可以执行并行处理,常规的基于Java的移动代理(“Java”是Sunmicro系统公司的商标)在执行期间不能被分离以执行并行处理,因为该移动代理在维持处理状态过程中不支持延网络移动的功能。尽管Telescript移动代理(“Telescript”是General Magic公司的商标)可以在保持一个处理状态时在一个网络中移动,但它不支持在保持管理信息的同时进行移动的功能,例如转换用于执行的行为。结果,不能将移动代理分离处理进行并行处理。
即使对于不执行并行处理并执行通常的串行处理的移动代理,其准备和执行也要求用于定义代理的目的地和行为的程序。因此需要程序员使用高级编程语言,并且程序的开发要求投入大量的时间和精力。
本发明的一个目的是提供一种在执行期间可以对其他资源的需求减少到最小的移动代理。
本发明的另一个目的是提供一种可以有效地执行处理的移动代理。
本发明的一个附加目的是在发出一个移动代理之后减少要返回的结果所需的处理时间。
本发明进一步的目的是使得不需高级的编程语言就可以开发一个移动代理。
本发明另一个目的是尽可能地降低开发一个移动代理所需的时间和精力。
本发明再一个目的是提供一种用户友好的移动代理开发程序,其功能可以令一个开发者启发性地理解。
根据本发明,提供了一种模板(调节者模板),其中用于一个移动代理的复杂动作被分类为基本的动作模式,可以使用这些基本模式的组合来定义移动代理所希望的动作通知调节这模式。该模板管理在移动到代理所去往的地点发布请求的动作,这些动作作为一个前继者(在前面的地点执行一个作业的动作)或一个后继者(在下一个地点执行一个作业的动作)。
根据一个移动代理的移动方式准备多个种类的模板例如链接,“与”分离(AND-Split)及“与”联合(AND-Join)。根据模板类型,向位于前一个地点(源)和后一个地点(目的地)的移动代理发送一条指令。响应该指令,移动代理准备一个复制,移动到另一个地点或组合复制。
根据本发明一个方面,提供一个对象,所述对象是移动对象组的一个元素,在一个调节者代理的控制下,所述组被从一个第一地点移动到一个第二地点,并在所述第一地点执行一个第一动作,在所述第二地点执行一个第二动作,所述对象包括(a)一个前继列表,具有涉及所述第一动作的链接信息;(b)一个后续列表,具有涉及所述第二动作的链接信息;及(c)一个调节模块,用于请求所述调节者代理从所述第一地点移动到所述第二地点。根据这个方面的对象对应于本发明优选实施例中的调节者模板。
根据本发明另一个方面,提供一个对象,所述对象是移动对象组的元素,在一个调节者代理的控制下,所述组被从一个第一地点移动到一个第二地点,并在所述第一地点执行一个第一动作,在所述第二地点执行一个第二动作,所述对象包括(a)一个前继列表,具有涉及所述第一动作的链接信息;(b)一个后续列表,具有涉及所述第二动作的链接信息;(c)一个状态管理者,用于确定所述条件模块是存在于所述第一地点还是所述第二地点;及(d)一个调节者模块,用于请求所述调节者代理从所述第一地点移动到所述第二地点。根据这个方面的对象对应于本发明优选实施例中的调节者模板。
根据本发明另一方面,提供一个对象,所述对象是移动对象组的一个元素,在一个调节者代理的控制下,所述组被从一个第一地点移动到一个第二地点,并在所述第一地点执行一个第一动作,在所述第二地点执行一个第二动作,所述对象包括(a)一个调节者模板包括(a-1)一个前继列表,具有涉及所述第一动作的链接信息;(a-2)一个后续列表,具有涉及所述第二动作的链接信息;(a-3)一个状态管理者,用于确定所述条件模块是存在于所述第一地点还是所述第二地点;及(a-4)一个调节者模块,用于请求所述调节者代理从所述第一地点移动到所述第二地点;(b)一个计划循环者,用于确定当前执行的权利存在于所述第一动作,所述第二动作和所述调节者模板哪一个;及(c)一个计划对象,用于管理所述第一动作,所述第二动作和所述调节者模板轮流执行。
根据本发明的进一步的一个方面,提供一种用于控制一个移动对象组的方法,所述组用于在一个调节者代理的控制下移动到由一个第一地址所指定的一个第一地点及由一个第二地址所指定的一个第二地点,并在所述第一地点执行一个第一动作,在所述第二地点执行一个第二动作,所述方法包括步骤(a)请求所述调节者代理准备一个具有涉及所述第一动作的链接信息的一个第一移动调节者代理及具有涉及所述第二动作的链接信息的一个第二移动调节者代理;(b)获得所述第一地址;(c)获得所述第二地址;(d)请求所述第一移动调节者代理移动到所述第一地点;(e)请求所述第二移动调节者代理移动到所述第二地点;在本发明的权利要求中,请求准备第一移动调节者代理和第二移动功能代理调节者代理不仅包括准备对应于第一和第二调节者代理的两个复制,还包括对应于第一或第二调节者代理的一个复制并且当前被处理的移动调节者代理将移动到第二或第一地址。
根据本发明另一方面,提供一种用于控制一个移动对象组的方法,所述组用于在一个调节者代理的控制下移动到由一个第一地址所指定的一个第一地点、由一个第二地址所指定的一个第二地点及由一个第三地址所指定的一个第三地点,并在所述第一地点执行一个第一动作,在所述第二地点执行一个第二动作,在所述第三地点执行一个第三动作,所述方法包括步骤(a)请求所述调节者代理在所述第一地点准备具有与所述第二动作相关的链接信息的一个第一移动调节者代理及具有与所述第三动作相关的链接信息的一个第二移动调节者代理;(b)获得所述第一地址;(c)获得所述第二地址;(d)请求所述第一移动调节者代理从所述第一地点移动到所述第二地点;(e)请求所述第二移动调节者代理从所述第一地点移动到所述第三地点;(f)请求在所述第二地点执行所述第二动作;及(g)请求在所述第三地点执行所述第三动作。
根据本发明另一发明,提供一种用于控制一个移动对象组的方法,所述组在一个调节者代理的控制下移动到多个地点并在每个所述地点执行适当的动作,所述方法包括步骤(a)在一个第一地点执行与一个第一移动调节者代理相链接的一个第一动作以获得第一处理结果;(b)请求存在于所述第一地点并且保持所述第一处理结果的所述第一移动调节者代理移动到一个第二地点;(c)在一个第三地点执行与一个第二移动调节者代理相链接的一个第二动作以获得第二处理结果;(d)请求存在于所述第三地点并且保持所述第二处理结果的所述第二移动调节者代理移动到所述第二地点;(e)请求位于所述第二地点的所述第二移动调节者代理将所述第二处理结果发送到所述第一移动调节者代理;及(f)位于所述第二地点的所述第一移动调节者代理具有所述第一和所述第二处理结果。在本发明的说明书的权利要求书中,通过第二移动调节者代理将第二处理结果发送到第一移动调节者代理不仅包括发送一个计划节点复制,还包括发送结果内容。
根据本发明另一方面,提供一种用于控制一个移动对象组的方法,所述组在一个调节者代理的控制下移动到多个地点并在每个所述地点执行适当的动作,所述方法包括步骤(a)在一个第一地点执行与一个具有代理识别信息的第一移动调节者代理相链接的一个第一动作以获得第一处理结果;(b)请求存在于所述第一地点并且保持所述第一处理结果的所述第一移动调节者代理移动到一个第二地点;(c)在一个第三地点执行与一个具有和所述第一移动调节者代理相同的代理识别信息的第二移动调节者代理相链接的一个第二动作以获得第二处理结果;(d)请求存在于所述第三地点并且保持所述第二处理结果的所述第二移动调节者代理移动到所述第二地点;(e)请求位于所述第二地点的所述第二移动调节者代理将所述第二处理结果发送到所述第一移动调节者代理;及(f)为具有和所述代理识别信息相同的识别信息的一个移动调节者代理搜索所述第二地点;及(g)位于所述第二地点的所述第一移动调节者代理具有所述第一和所述第二处理结果。
根据本发明再一个方面,提供一个移动对象组,所述组从一个第一地点移动到一个第二地点并在所述第一地点执行一个第一动作及在所述第二地点执行一个第二动作,所述移动对象组包括(a)一个计划对象,用于管理所述第一动作,所述第二动作轮流执行。(b)一个计划循环者,用于确定当前所述第一动作和所述第二动作哪一个具有执行权利。
根据本发明进一步的一个方面,提供一种用于生成一个移动对象组的方法,所述组包括(i)一个在一个第一地点执行的第一动作,(ii)一个在一个第二地点执行的第二动作,(iii)一个请求一个调节者代理移动到所述第二地点的调节者模板,所述调节者代理控制在所述第一地点所述移动组的移动,所述方法包括步骤(a)在所述第一动作期间,生成包括与所述调节者模板相关的链接信息的一个后续列表;(b)通过所述调节者模板,生成包括与所述第一动作向的链接信息的一个前继列表及包括与所述第二动作相关的链接信息的一个后续列表;及(c)在所述第二动作期间,生成包括与所述调节者模板相关的链接信息的一个前继列表。
根据本发明再一个方面,提供一种用于生成一个移动对象组的方法,所述组包括(i)一个在一个第一地点执行的第一动作,(ii)一个在一个第二地点执行的第二动作,(iii)一个请求一个调节者代理移动到所述第二地点的调节者模板,所述调节者代理控制在所述第一地点所述移动组的移动,所述方法包括步骤(a)生成一个用于管理所述第一动作,所述调节者模板和所述第二动作的轮流执行的列表;(b)在所述第一动作期间,生成包括与所述调节者模板相关的链接信息的一个后续列表;(c)通过所述调节者模板,生成包括与所述第一动作向的链接信息的一个前继列表及包括与所述第二动作相关的链接信息的一个后续列表;及(d)在所述第二动作期间,生成包括与所述调节者模板相关的链接信息的一个前继列表。
根据本发明又一个方面,提供一种用于生成一个移动对象组的装置,所述组包括(i)一个在一个第一地点执行的第一动作,(ii)一个在一个第二地点执行的第二动作,(iii)一个请求一个调节者代理移动到所述第二地点的调节者模板,所述调节者代理控制在所述第一地点所述移动组的移动,所述装置包括(a)在所述第一动作期间,生成包括与所述调节者模板相关的链接信息的一个后续列表的装置;(b)通过所述调节者模板,生成包括与所述第一动作向的链接信息的一个前继列表及包括与所述第二动作相关的链接信息的一个后续列表的装置;及(c)在所述第二动作期间,生成包括与所述调节者模板相关的链接信息的一个前继列表的装置。
根据本发明另一个方面,提供一种计算机可读存储介质,存储用于生成一个移动对象组的程序,所述组包括(i)一个在一个第一地点执行的第一动作,(ii)一个在一个第二地点执行的第二动作,(iii)一个请求一个调节者代理移动到所述第二地点的调节者模板,所述调节者代理控制在所述第一地点所述移动组的移动,所述程序包括(a)用于指示所述计算机在所述第一动作期间,生成包括与所述调节者模板相关的链接信息的一个后续列表的程序代码;(b)用于指示所述计算机通过所述调节者模板,生成包括与所述第一动作向的链接信息的一个前继列表及包括与所述第二动作相关的链接信息的一个后续列表的程序代码;及(c)用于指示所述计算机在所述第二动作期间,生成包括与所述调节者模板相关的链接信息的一个前继列表的程序代码。


图1是示出一个分布式网络环境的框图,其中本发明的一个移动代理在该网络中移动。
图2是示出本发明的移动代理在分布式网络中移动时的一个示例方式的框图。
图3是示出根据本发明的一个客户系统或一个服务器系统的硬件配置例子的方框4是根据本发明在客户现场的处理部件的例子的方框图。
图5是根据本发明在服务器现场的处理部件的例子的方框图。
图6是示出根据本发明的优选实施例的对象的框图。
图7是示出根据本发明的优选实施例的一个对象的框图。
图8是示出根据本发明的优选实施例的在对象之间交换消息的流程图的框图。
图9是示出根据本发明的优选实施例的开发支持工具的用户界面的框图。
图10是示出根据本发明的优选实施例的开发支持工具的用户界面的框图。
图11是示出根据本发明的优选实施例的开发支持工具的用户界面的框图。
图12是示出根据本发明的优选实施例的处理的框图,其中一个事件被发送到一个移动代理并被执行。
图13是示出根据本发明的优选实施例的示出为一个计划对象增加一个计划节点的处理的流程图。
图14是示出一个计划对象与计划节点对象链接的一个条件例子的概略框图。
图15是示出一个计划对象与计划节点对象链接的一个条件例子的概略框图。
图16是示出一个计划对象与计划节点对象链接的一个条件例子的概略框图。
图17是根据本发明的优选实施例的用于执行一个计划对象的处理的流程图。
图18是根据本发明的优选实施例的示出一个调节者模板的功能方框图。
图19是示出根据本发明的优选实施例的一个地点的概略框图。
图20是根据本发明的优选实施例的调节者模板的处理的概略流程图。
图21是示出根据本发明的优选实施例的条件的概略框图,其中一个移动对象组从一个源地点移动到一个目的地点。
图22是示出根据本发明的优选实施例的条件的概略框图,其中一个移动对象组从一个源地点移动到一个目的地点。
图23是根据本发明的优选实施例的一个循环模板在源处的处理的流程图。
图24是示出根据本发明的优选实施例的条件的概略框图,其中一个移动对象组从一个源地点移动到一个目的地点。
图25是示出根据本发明的优选实施例的条件的概略框图,其中一个移动对象组从一个源地点移动到一个目的地点。
图26是根据本发明的优选实施例的一个“与”分离模板在源处的处理的流程图。
图27是根据本发明的优选实施例的用于确定当前节点的逻辑的流程图。
图28是根据本发明的优选实施例的一个“与”联合模板在目的地处的处理的流程图。
图29是根据本发明的优选实施例的一个“与”联合模板在目的地处的处理的流程图。
图30是根据本发明的优选实施例的一个“与”联合模板在目的地处的处理的概略框图。
图31是示出根据本发明的优选实施例的条件的概略框图,其中一个移动对象组从一个源地点移动到一个目的地点。
图32是根据本发明的优选实施例的一个“或”分离(OR-Split)模板在源处的处理的流程图。
图33是示出根据本发明的优选实施例的条件的概略框图,其中一个移动对象组从一个源地点移动到一个目的地点。
图34是根据本发明的优选实施例的一个“或”分离模板在目的地处的处理的流程图。
A.分布式网络环境及每个节点的硬件布局现在将参考所附的附图描述本发明的一个实施例。在图1中示出了一个根据本发明用于执行一个移动代理的分布式网络环境150。在服务器112至117准备了可以为移动代理125,135和141提供服务的地点102至107。在分布式网络环境中一组这种地点称为一个群集(crowd)。
在客户系统101存在一个计划者代理113以生成移动代理。计划者代理113将所生成的计划发送给一个调节者代理111,该代理执行计划以将移动代理移动到一个指定地点。
移动代理125可以与其他存在于地点102至107的代理联系(尤其是与一个移动代理联系并提供服务的一个称为动作者代理的代理),并可以发送请求及接收作为请求的响应所得到的结果。移动代理125可以保持结果139,143,153和163,它们都是在继续移动时作为从一个动作者代理接收的请求的一个响应所得到的结果。另外,在移动期间,可以对结果进行合成、分离或其他不同的处理。
在该发明中,由调节者模板181-187控制一个移动代理的移动、分离及处理。用户可以根据处理的类型组合不同的模板,并可以容易地定义如图2所示的复杂工作。
图3是示出存在于示于图1中的分布式网络环境中的每个节点(服务器现场或客户现场)的硬件配置的概略视图。每个节点100包括一个中央处理单元(CPU)1和一个存储器4。CPU1和存储器4通过总线2与作为辅助存储设备的硬盘驱动器13通信。通过软盘控制器19将软盘驱动器(或存储介质驱动器如MO或CD-ROM)20连接到总线2。
软盘(或存储介质如MO或CD-ROM)被插入软盘驱动器20,在软盘或硬盘驱动器13及ROM14中记录当向CPU给出指令时用于与操作系统合作和用于完成本发明的计算机软件。通过将计算机软件装入存储器4来执行它。计算机软件可以被压缩或分为多个部分以在多个介质上记录。
节点系统100也可以包括用户接口硬件。例如用户接口硬件部件可以是用于进行数据输入的指点设备(鼠标或操纵杆等)7和键盘6,用于向用户提供可视数据的显示器12。另外,在并行端口16可以将打印机连接到系统100上。可以具有一个连接到一个串行端口15上的调制解调器的节点系统100通过串行端口15和调制解调器或通过与另外的计算机系统进行通信的令牌环或通信适配器18与一个网络相连接。
可以理解,本发明可以通过一个通常的个人计算机(PC)、一个工作站、一个通用装置或其三者的组合来实现。应该注意这些组件仅是例子,对于本发明来说并不是所有的都需要。尤其是,由于可以远程控制一个服务器,仅有基本数据处理功能例如CPU和存储器及通信功能是需要的。
用于客户系统和服务器系统的操作系统可以是支持标准GUI多窗口环境的操作系统,例如WindowsNT(微软公司的商标)、Windows95(微软公司的商标)、Windows3.x(微软公司的商标)、OS/2(IBM公司的商标)或用于AIX(IBM公司的商标)的X-Windows(MIT的商标);可以是基于字符环境的操作系统,例如PC-DOS(微软公司的商标)、MS-DOS(IBM公司的商标);实时OS,例如OS/Open(IBM公司的商标)或VxWorks(Wind River系统公司的商标),总之不限于特定的操作系统环境。
B.系统配置现在将参照图4和5的方框图描述本发明的优选实施例的客户和服务器的系统配置。
图4是描述客户系统210中的处理部件的方框图。计划者代理211包括计划定义者213和计划ID生成器215。计划ID生成器215为一个计划分配一个唯一的网络计划ID。在本发明的优选实施例中,计划ID生成器215合成一个因特网URL,一个端口号,一个代理ID(分配给计划者代理)和一个序列号(每次分配计划者代理生成一个计划ID)以生成一个计划ID。
计划定义者213从计划节点库201获得调节者模板203和动作205,并生成一个调节者代理和一个计划。如此生成的计划包括一个用于为调节者模板管理信息的计划结构部分223和要执行的动作及用于为一个调节者模板定义顺序的顺序列表225和动作。计划结构部分223具有用于将计划节点对象(调节者模板和动作的总称)相互关联的信息并形成一个网络拓扑231。
图5是示出位于服务器系统250中的处理部件功能方框图。移动对象组270包括调节者代理251、计划对象261、调节者模板271和动作281。调节者代理251具有移动代理生命周期控制者253和计划执行者255。移动代理生命周期控制者253控制移动对象组270的移动、复制和处理。计划执行者255确认在一个新地点的到达及指示计划对象261执行一个计划。
计划对象261包括计划执行控制者263、当前节点267和顺序列表265。当计划执行控制者263从位于调节者代理251的计划执行者255接收到一个执行一个计划的指令时,计划执行控制者263参考当前节点267和顺序列表265并确定当前可以使用哪些计划节点对象271和281来执行处理,并然后请求计划节点对象271和281执行计划。
当前节点267对应于一个以后将描述的计划节点循环者(iterator),并监控正在执行哪个计划节点对象。顺序列表265是指定由哪些计划节点对象271和281来执行计划的列表。当没有出现分支时,根据顺序列表265中的入口顺序请求计划节点对象271和281来执行计划。
调节者模板271包括调节者代理控制者273、计划步骤执行者275和地址参照部分277。调节者代理控制者273请求调节者代理251中的移动代理生命周期控制者273移动、复制或处理移动对象组270。计划步骤执行者275根据调节者模板来进行不同的定义并管理在移动前后被执行的指令。地址参照部分277从一个动作获得一个地址并通知调节者代理控制者273要移动到哪个地址。
动作281具有动作执行者283和消息功能285。动作执行者283存储在各个地点执行的指令,移动代理将移动到这些地点,并存储移动代理在这些地点获得的结果。消息功能285与动作者代理291交换消息。
动作者代理291是存在于该地点的另一个代理,并提供动作281所请求的服务。动作者代理291具有用于与对象281交换消息的消息功能293及用于确认一个请求的内容的意思的消息处理器295并提供服务。
已经解释了图4和5的功能框图。这些功能框图是逻辑功能框图,不是由一组硬件或软件部件实现的。但是它们可以用通用的硬件或软件组件实现。另外,对于本发明并不是图4和5中的所有功能都需要。例如由于当前节点管理者267直接管理当前节点,并不特别需要顺序列表265,并且由于在“与”联合处理等,仅需定义用于获得其他结果的调节者代理。
C.对象配置图6和7是示出一个移动对象的框图。用于调节者代理303、计划305、计划ID309和计划循环者307每一个的类具有一个方法,用于模板321-326例如计划节点311、动作313、调节者模板315和链接321的类具有数据和方法。
在图6和7中,三角符号302、314和316标识父类的数据和方法被继承,黑点312标识有多个子类存在。作为抽象类的计划节点311通过使用一个公共接口来定义调节者模板类315和动作类313。因此计划305在生成一个计划或在一个计划执行期间可以平等地处理两个类。
移动代理301是当前在分布式计算机环境中在各地点提供的功能(地点类)。用户通过向这个类发送一个用于指示准备一个移动代理的API可以容易地生成一个移动代理(调节者代理)。现在,该功能由基于Java的移动代理和TeleScript移动代理支持,它们在背景技术中均有描述。
计划节点类311具有后续列表和前继列表,并管理多个计划节点间的关系。计划节点类311提供“设置前继者”和“设置后继者”方法并定义节点间的关系。具体的计划节点类可以识别方法之间的关系。
由于调节者模板类315与在不同地点执行的动作类313相连,调节者模板类315具有分辨源(orgin)(移动之前的地点)和目的地(destination)(移动之后的地点)的状态信息。在本发明的优选实施例中,调节者模板仅能与一个动作对象相连。为调节者模板提供链接和其他模板,从而可以提供用于在多个分离调节者代理等之间分配工作的基本机制。
图8是示出为根据本发明的优选实施例的类的消息的基本流程的框图。调节者代理351向计划353发送“下一步骤”(nextStep)(执行下一个步骤的指令)。接收到该指令后,计划353向一个计划节点对象(调节者模板357或动作355)发送“下一步骤”(nextStep)。动作355向动作者代理359发送“发送消息”(sendMessage)(发送一个消息的请求)以执行由一个用户指定的请求。根据消息类型和条件,调节者模板357向动作355发送“获取ARL”(getARL)(地址的发送命令)或“是标记的”(isMarked)(标志)。另外,调节者模板357向调节者代理351发送复制(复制的准备请求)、分发(分发请求)和处理(处理请求)请求。
D.计划者代理的准备计划者代理是将要由客户现场执行的指令组。当执行指令时,发送调节者代理生成请求,并且生成用于定义一系列要执行的动作的计划对象并将其发送到调节者代理。
如上所述,通过使用当前为各个地点提供的功能(地点类)生成调节者代理。在本发明的优选实施例中,向基于Java的移动代理的Aglets类发送指示准备移动代理的API以生成一个调节者代理。
计划生成处理粗略地划分为用于生成一个计划ID的过程和建立与位于比一个计划对象低的位置的对象相关的链接条件的过程。
在优选实施例中,为一个计划对象分配由一个全球网络特别确定的唯一的计划ID。在优选实施例中,计划ID生成器215(图4)通过合成一个因特网URL、一个端口号、一个代理ID(为一个计划者代理分配)和一个序列号(每次分配计划者代理生成一个计划ID)准备一个计划ID。
由计划ID生成器215使用的例示编码示于表1。在本发明的优选实施例中,为用户提供计划ID生成器的指令组作为程序部分。<pre listing-type="program-listing"><![CDATA[public class Planner extends StationaryAgent{  private Plan plan;  private PlannerFrame f;  private URL_home;  private AgletIdentifier_id;  private int_planIndex=0;public void onCreation(Object args){  //生成选择计划的窗口  f=new PlannerFrame(″JMT-PlannerAgent″,this);  f.show();  try{  //获取存在计划者代理的URL   _home=getAgletContext().getHostingURL();  //获取计划者代理ID   _id=getIdentifier();  }catch(InvalidAgletExceptione){   Utility.print(this,e.getMessage());  }}]]></pre>
表2示出当使用计划定义者213中的链接模板(图4)时的编码。在本发明的优选实施例的一个方式下,为用户(编程者)提供包括一个模板类型的样本代码。用户通过使用样本代码再生成所希望的编码以形成该指令组。<pre listing-type="program-listing"><![CDATA[public void doPlanl(){//生成计划对象 Plan plan=new Plan(generatePlanID());//generate activity//生成动作 actl=new Activity(″atp//kazu.yamamoto.ibm.com434/″,″JMT.samples.TextFieldAgent″,newMessage(Activity.REQUEST));  act2=new Activity(″atp/″+home.getHost()+″434/″,″JMT.samples.ReportAgent″,new Message(Activity.REPORT));  //向计划增加动作和模板 try{  Vector predecessorIndexList;  predecessorIndexList=new Vector(); //向计划增加链接模板  Integer hwd1=plan.addNode(null,new Chain()); //向计划增加动作1  predecessorIndexList.addElement(hwd1);   Integer hwd2=plan.addNode(predecessorIndexList,act1); //向计划增加链接模板  predecessorIndexList.removeAllElements();  predecessorIndexList.addElement(hwd2);   Integer hwd3=plan.addNode(predecessorIndexList,newChain()); //向计划增加动作2  predecessorIndexList.removeAllElements();  predecessorIndexList.addElement(hwd3);   Integer hwd4=plan.addNode(predecessorIndexList,act2); }catch(BlockedByIteratorException e){  Utility.print(this,e.getMessage());  } //生成调节者代理  createModeratorAgent(plan); }]]></pre>
在本发明的优选实施例的另一个方式中,提供一个开发支持供给使用户可以容易地进行这种编码。图9-11是示出根据本发明的优选实施例的用于开发支持供给的用户接口的框图。用户可以通过使用开发支持工具生成上述编码。
由于开发支持工具组成了由工作流自动化(“工作流自动化(Workflow Automation)”是zultimus LLC公司的商标)等(在http//www.ultimus1.com等可获得信息)提供的已知方法,用于实现功能的具体手段不再描述而仅解释由用户执行的过程。
首先,用户从一个下拉菜单选择创建371,并使用一个指点设备点击它。然后计划者代理开发支持工具显示一个对话框以输入一个计划名称。于是,用户可以使用与一个计划ID不同并且对用户来说容易且熟知的名称管理计划。当用户在一个输入框374中输入计划名称并按下一个确认按钮373时,一个计划定义窗口380被打开。
通过使用指点设备,用户从一个计划节点框390拖动一个动作计划图标399并将其放入计划定义窗口380。接着,如图10所示,一个动作属性编辑器窗口381被打开。
为动作属性编辑器窗口381准备用于动作名称382、地址名称(执行一个动作的地点的地址)383、一个动作者代理名称384和消息385的输入框。用户在各输入框中输入所希望的数据并点击确认按钮386来定义动作。
相似地,从计划节点框390将链接图标391拖动到计划定义窗口380动作1(act1)的右侧或下面的位置,并放到那里。在本发明的优选实施例中,当“或”分离之外的模板图标被放下时,不显示模板属性编辑器窗口。当放下“或”分离图标时,则显示模板属性编辑器窗口,并且输入一个动作的选择条件。然后和动作1一样,将一个动作2(act2)拖动并放到链接(Chain)的下面,从而设置一个属性。
接着,用户在计划定义窗口380中点击并选择要链接的两个对象(即动作1375和链接376),并在编辑菜单选择链接(Link)379。接着两个对象被链接在一起(生成一个前继列表及一个后续列表)。
当所有的对象链接起来时,用户在计划定义窗口380中点击构成(Construction)397。计划者代理开发支持工具将这些元素添加到计划对象以生成一个计划者代理。
当用户点击计划定义窗口380中的执行(Execution)398时,一个事件被发送给所获得的计划者代理和一个地点类,生成一个调节者代理,计划者代理生成一个计划并将其发送到调节者代理。调节者代理自动地执行所接收的计划。
该处理示于图12,在计划定义窗口380中发生的事件被发送到计划者代理470。计划者代理470分析事件并执行对应于表1和2的对象代码,然后开始一个计划的定义472和构成473。然后生成的计划477被发送到调节者代理351,该代理然后执行计划的每一步。
在本发明的优选实施例中,在准备了一个计划对象后,通过在计划类中使用方法“增加节点(addNode)”可以增加多个计划节点。另外,在准备了计划对象后,通过在计划类中使用方法“删除节点(RemoveNode)”可以删除多个计划节点并且可以更新后续列表。
D.计划的生成D-1.包括链接模板的情形的拓扑下面将通过使用作为一个例子的计划对象来解释示于表1和2中的计划者代理生成一个计划对象的处理,其中计划对象包括参考图9-11示出的由开发支持工具生成的链接模板。图13是用于向一个计划对象增加一个计划节点的处理的流程图,图14是示出一个计划对象与一个计划节点对象相互链接的条件的概略图。
最简单的模板---链接模板用于链接位于不同地点的两个动作。在源地点,“链接”接收后继者的一个动作通知调节这的ARL(地址),并将一个移动对象组移到一个目的地。源地点和目的地点可以相同。
当执行该计划者代理时,首先生成一个计划对象并设定一个计划ID。接着,组成一个计划的动作对象520和540将被生成。如图14所示被请求服务的代理的名称521和用于执行的服务器的地址523及请求的内容524被存储在每个动作中。在图14中例子中,准备了两个动作对象。
接着,在计划对象510中存储两个动作对象。以后将描述的链接模板530被使用以耦合两个动作。在动作被存储在计划对象510中之前,必须指定其后将耦合这些动作的元素。因此要使用前继索引列表515。在本发明的优选实施例中,作为列表使用前继索引列表515。
当在计划对象510中生成前继索引列表515时,计划者代理将第一个动作对象(动作1520)增加到计划对象510。在图13示出了用于将一个计划节点增加到计划对象510的处理。计划者代理检查前继索引列表515以确定它是否为空(块803)。由于动作1520是第一元素并且前继索引列表515为空,动作1520被增加到计划节点列表513(块815)。计划对象510向计划者代理返回计划节点列表513中的一个索引作为一个返回值(块817)。然后,返回程序控制(块819)。在该例子中,索引“0”被作为返回值返回。
接着,链接对象530被增加到计划对象510。在此例子中,重新开始图13中的处理。计划者代理检查前继索引列表515以确定它是否为空(块803),由于动作1520已经被登记,程序控制前进到块805。在块805和807,检查是否前继索引列表515中的所有元素都已经被处理。
然后链接对象530被增加到计划对象510(块809)。首先,增加动作1时获得的返回值“0”被输入前继索引列表515以指定其后耦合动作的动作1520。
前继索引列表
链接对象被增加到动作1之后。计划对象510在动作1的后继列表529中存储链接对象,该对象是在前继索引列表515中指定的(块809)。接着在链接530的前继列表531中存储动作1(块811)。最后,链接523被存储在计划对象510的计划节点列表513中,并且其索引被作为返回值(此处为“1”)返回计划者代理。
接着,动作2540被增加到计划对象510。首先,清理前继索引列表515(清除与动作1相关的信息),当增加链接时设置所获得的返回值(1)。
前继索引列表[1]接着,动作2被增加到链接之后。与链接的情况相同,计划对象510将动作2对象存储在在前继索引列表515中指定的链接的后续列表529中(块809)。然后,在动作2540中的前继列表531中存储链接(块811)。最后,在计划对象510的计划节点列表513中存储动作2,并且其索引被作为返回值(此处为“2”)返回计划者代理。
D-2.包括循环模板的情况的拓扑图15是示出计划对象510与计划节点对象链接的情况下的概略框图。这些对象是按照包括链接模板的情况下的拓扑的方式来链接的。应该注意到,如图15所述,循环模板570包括一个返回索引575作为一个循环返回目的地的信息。在本发明的优选实施例中,在返回索引575中设置前继索引列表515中的对应于返回目的地对象(链接550)的对象对象510的值。表3示出一个计划者代理为包括循环模板的情况的拓扑进行的编码的例子。<pre listing-type="program-listing"><![CDATA[public void doPlan2(){  //生成计划   Plan plan=new Plan(generatePlanID());  //生成动作   Activity act1,act2;   act1=new Activity(″atp//kazu.yamamoto.ibm.com434″,″JMT.samples.TextFieldAgent″,newMessage(Activity.REQUEST));  act2=new Activity(″atp//″+home.getHost()+″434/″,″JMT.samples.ReportAgent″,new Message(Activity.REPORT));//向计划增加动作和模板 try{   Vector predecessorIndexList;   predecessorIndexList=new Vector();   Integer hwd1=plan.addNode(null,new Chain());   predecessorIndexList.removeAllElements();   predecessorIndexList.addElement(hwd1);  Integer hwd2=plan.addNode(predecessorIndexList,act1);   predecessorIndexList.removeAllElements();   predecessorIndexList.addElement(hwd2);   Integer hwd3=plan.addNode(predecessorIndexList,newChain());   predecessorIndexList.removeAllElements();   predecessorIndexList.addElement(hwd3);  Integer hwd4=plan.addNode(predecessorIndexList,act2); //通过指定返回节点生成一个StringengthIteration模板 //  StringLengthIteration iteration=new StringLengthIteration(hwd1);predecessorIndexList.removeAllElements();  predecessorIndexList.addElement(hwd4);  Integer hwd5=plan.addNode(predecessorIndexList,iteration); }catch(BlockedByIteratorException e){  Utility.print(this,e.getMessage()); }   //生成调节者代理  createModeratorAgent(plan);}]]></pre>D-3.包括“与”分离和“与”联合模板的情况下的拓扑图16是示出计划对象410与计划节点对象链接的情况下的概略框图。对象组是按照包括链接模板的情况下的拓扑的方式来链接的。应该注意到,“与”分离模板具有一个前继动作和多个后续动作。可以由“与”分离模板并行地在不同的地点执行后继动作。
另一方面,“与”联合模板具有多个前继动作和一个后续动作。在目的地,多个调节者代理被联合以在“与”联合模板的控制下构成一个代理。表4示出一个计划者代理为包括“与”分离和“与”联合的情况下的拓扑进行的编码的例子。<pre listing-type="program-listing"><![CDATA[public void doPlan3(){//生成计划  Plan plan=new Plan(generatePlanID());//生成动作  Activity act1=new Activity(″atp//kazu.yamamoto.ibm.com434/″,″JMT.samples.TextFieldAgent″,new Message(Activity.REQUEST)); Activity act2=new Activity(″atp/″+_home.getHost()+″600/″,″JMT.samples.TextFieldAgent″,new Message(Activity.REQUEST)); Activity act3=new Activity(″atp//″+_home.getHost()+″434/″,″JMT.samples.ReportAgent″,new Message(Activity.REPORT));//向计划增加动作和模板 try{  Vector predecessorIndexList;  predecessorIndexList=new Vector(); //向计划增加″与″分离  Integer hwd1=plan.addNode(null,new ANDSplit());  predecessorIndexList.addElement(hwd1); //增加3个动作作为″与″分离后续者Integer hwd2=plan.addNode(predecessorIndexList,act1);  Integer hwd3=plan.addNode(predecessorIndexList,act2); //向″与″联合前继列表增加3个动作索引  predecessorIndexList.removeAllElements();  predecessorIndexList.addElement(hwd2);  predecessorIndexList.addElement(hwd3); //向计划增加″与″联合   Integer hwd4=plan.addNode(predecessorIndexList,newANDJoin());  predecessorIndexList.removeAllElements();  predecessorIndexList.addElement(hwd4); //向计划增加动作作为″与″联合后续者  Integer hwd5=plan.addNode(predecessorIndexList,act3); }catch(BlockedByIteratorExceptione){  Utility.print(this,e.getMessage()); }//生成调节者代理并向调节者代理发送计划  createModeratorAgent(plan); }]]></pre>
D-4.包括“或”联合(OR-Join)模板的情况下的拓扑“或”联合模板与“与”联合模板一样,具有多个前继动作和一个后继动作。应该注意到,对于“或”联合模板选择一个前继动作而废弃另外一些。该功能,例如用于为几个本地航空公司检查Haneda和Sapporo之间的航班的预订情况并且获得预订情况的第一个航空公司被使用。图5示出了一个计划者代理为包括“或”联合模板的情况下的拓扑进行编码的例子。<pre listing-type="program-listing"><![CDATA[public void doPlan4(){//生成计划  Plan plan=new Plan(generatePlanID());//生成动作  Activity act1,act2,act3;  act1=new Activity(″atp//kazu.yamamoto.ibm.com434/″,″JMT.samples.TextFieldAgent″,new Message(″request″));  act2=new Activity(″atp//″+home.getHost()+″600″,″JMT.samples.TextFieldAgent″,new Message(″request″));  act3=new Activity(″atp//″+_home.getHost()+″434″,″JMT.samples.ReportAgent″,new Message(″report″));//向计划增加动作和模板  try{Vector predecessorIndexList;  predecessorIndexList=new Vector(); //向计划增加″与″分离  Integer hwd1=plan.addNode(null,new ANDSplit());  predecessorIndexList.addElement(hwd1);  //增加3个动作作为″与″,分离后续者   Integer hwd2=plan.addNode(predecessorIndexList,act1);   Integer hwd3=plan.addNode(predecessorIndexList,act2); //向″与″联合前继列表增加3个动作索引  predecessorIndexList.removeAllElements();  predecessorIndexList.addElement(hwd2);  predecessorIndexList.addElement(hwd3); //向计划增加″或″联合  Integer hwd4=plan.addNode(predecessorIndexList,newORJoin());  predecessorIndexList.removeAllElements();  predecessorIndexList.addElement(hwd4); //增加动作作为″或″联合后续者  Integer hwd5=plan.addNode(predecessorIndexList,act3); }catch(BlockedByIteratorExceptione){  Utility.print(this,e.getMessage()); }  //生成调节者代理-48-  createModeratorAgent(plan);} private void createModeratorAgent(plan plan){  try{ getAgletContext().createAglet(null,″JMT.Moderator Agent″,(Object)plan);   }catch(AgletException e){   Utility.print(this,e.getMessage());   }catch(10Exception e){   Utility.print(this,e.getMessage());   } } private PlanID generatePlanID(){//generate plan ID   PlanID planID=new PlanID(_home.toString(),_id.toString()+(new Integer(_planIndex)).toString()); -planIndex++; return planID; }}]]></pre>
E.执行计划E-1包括链接模板的情况下的拓扑(图14)现在将参考图17-21描述一个移动对象组为其中包括链接模板的情况下的拓扑的操作。图17是示出用于执行一个计划的处理的流程图;图18是示出一个调节者模板的功能方框图。图21是示出一个移动对象组从源移动到目的地的情况下的概略框图。首先,参考图17,当生成一个调节者代理351并为它分配了一个计划对象353时(块843),调节者代理351自动执行计划(块845)。
指令“下一步骤”被从调节者代理351发送到计划对象353,并响应于此,计划对象353首先抽取一个当前计划节点(块847)。在本发明的优选实施例中,实施一个计划节点的管理步骤,其中该节点中存在一个计划循环者对象352,并且响应于来自于计划对象353的一个查询,为其中存在计划循环者对象352的当前计划节点步骤提供信息。
当响应于当前查询,计划循环者对象352返回“0”(第一步骤)时,计划对象353抽取动作1。接着,计划对象353请求在动作1中定义的一个动作通知调节者执行由该动作管理的一个请求(块849)。
该动作确定一个代理内部保持的类名(代理名称)是否存在于相同的地点。如图19所示,当调节者代理351到达地点360时,它告诉地点360它自己的代理名称,地点360使用一个代理列表369管理代理名称。存在于地点360的代理可以通过向地点360发送“获得代理列表(getAgentList)”来查询它。由于地点360具有用于返回代理列表(AgentList)的功能,代理可以确认在相同的地点存在哪些代理。
动作向被找到的代理(动作者代理)361发送一个内部保持的消息(一个请求)。接到请求之后,动作者代理361向发出请求的代理350发送一个返回对象。请求代理在结果记录525中存储所接收的对象(图14)。
动作通知计划对象353结束了所请求的作业,响应于此,计划对象353为动作1增加一个标识处理结束的标记(块855)。计划对象353请求计划循环者352前进一个步骤(块859)。计划循环者352为计划对象353提供当前信息。
由于当前信息是“1”(第二步骤),计划对象353抽取一个链接模板对象(块845和847)。计划对象353请求链接执行处理(块849)。
链接调节管理者603向状态管理者601请求当前状态。由于在缺省情况下状态管理者601的状态被设定为源,它将此通知给调节管理者603。当调节管理者603从状态管理者601获得状态信息时,它请求状态管理者1切换状态。响应于此,状态管理者601将其状态从源改变为目的地。
图20是示出由链接模板所执行的切换状态及在源或目的地执行的处理的流程图。该流程图示出由所存在的多种模板所共同执行的操作的流程图。根据模板类型,在块827在源处所执行的处理与在块831在目的地处所执行的处理不同。
调节管理者603请求源调节模块605执行处理。源调节模块605和目的地调节模块670管理用于在不同地点操作一个模板的指令集。
另外,源调节模块605请求后续列表609发送登录在后续列表609中的动作地址。后续列表609从登录动作(动作2)获得地址,并将其发送到源调节模块605。
源调节模块605将所接收的动作地址与调节者代理351当前所在的地点的地址相比较。如果两个地址不同,源调节模块605将调节者代理351移动到动作地址。尤其是,源调节模块605通过调节者代理参考模块599发送移动指令。当两个地址相同时,处理结束。
在调节者代理351所移动的目的地点,调节者代理351请求计划对象353执行一个步骤。按照相似的方式抽取当前计划节点。计划对象353请求链接执行下一个步骤。链接为目的地确认状态信息并执行处理。状态信息改变为源的状态。
当计划对象353确认链接已经完成目的地处理时,计划对象353抽取下一个当前计划节点(动作2),并请求动作2执行一个动作。动作2获得动作1在内部所持有的结果。
在本发明的优选实施例中,目的地模块607参考一个前继列表591并向链接发送指令“获取结果(getResult)”以请求结果的发送。响应接收到指令,链接执行搜索以确定它是否保持着结果。由于链接未保持结果,它参考前继列表591并获取登记在该前继列表591中的一个对象(动作1)的结果。然后该链接将结果发送到动作2。如果在前继列表591没有登记对象,该链接向动作2发送标识结果未保持的哑数据。该处理可以用另一种处理代替,其中为模板准备一个用于存储结果的记录。
动作2使用内部保持的代理类名称作为一个参考存在于相同地点的一个报告代理时的关键字。该动作2通过使用从动作1获得的结果作为一个参数将一个内部所保持的消息发送到报告代理。计划对象353抽取下述当前节点。在该例子中,由于没有当前节点,计划对象353检查到该情况,处理然后结束。目的地调节模块607将用于处置调节者代理351的一个指令通过调节者代理参考模块599发送到调节者代理351。
E-2.包括循环模板的情况下的拓扑(图15)图22示出由一个循环模板所控制的移动对象组的操作的概略框图。现在将参考图18描述其中包括循环模板的情况下的拓扑的处理。与涉及链接的情况相似,生成调节者代理351,并生成一个计划对象353作为一个参数,并且将其发送到调节者代理351以使计划对象353执行每个步骤。另外,与涉及链接模板的情况相似,计划对象353抽取一个当前的计划节点(链接),并且在源处该链接执行处理。在目的地,如先前在“E-1.包括链接模板的情况下的拓扑”中所描述的那样,为目的地和动作1的动作执行处理。
当完成动作1的处理时,计划对象353请求循环模板执行下一个步骤。图23是示出在循环模板的源所执行的处理的流程图。在循环模板的源处的执行中,首先执行一个检查以确定处理是否可以前进到下一步骤,即动作1的结果信息是否匹配一个预定条件(块873)。
当结果信息与预定条件相匹配时,在内部保持的后继信息被存储到后继列表中(块875)。在后继列表中的动作2中抽取一个地址(块877),并且将调节者代理351移动到该地址(块879)。当结果信息与预定条件不匹配时,向源设定状态(块881),通过使用一个返回节点索引参考一个计划节点并使用之来替换后继列表中的元素(块883)。程序控制接着前进到下一个步骤。接着,执行动作2的处理,其执行方式与在“E-21包括链接模板的情况下的拓扑”中所描述的一样,然后处理结束。
E-3.包括“与”分离和“与”联合模板的情况下的拓扑(图16)图24和25示出由“与”分离和“与”联合所控制的移动对象组的操作的概略框图。现在将参考图18描述其中包括“与”分离和“与”联合模板的情况下的拓扑的处理。与涉及链接模板的情况相似,生成调节者代理351,并生成一个计划对象353作为一个参数,并且将其发送到调节者代理351。在每个步骤执行计划对象353。
与链接的情况相似,计划对象353抽取“与”分离,它是当前计划节点。计划对象353请求“与”分离执行下一个步骤。图26是示出由“与”分离模板在一个源所执行的处理的流程图。
调节管理者603检查状态管理者601中的状态信息并获取“源”信息。调节管理者603请求源调节模块605在源处执行处理。调节管理者603请求状态管理者601将状态改变为目的地(块893)。“与”分离参考后继列表(块897),从后继列表抽取第一个动作并在一个标记的索引595中设置“0”(块899)。
接着,调节管理者603通过调节者代理参考模块599请求调节者代理351准备调节者代理的复制(块901)。响应于此,调节者代理351生成调节者代理351的复制及保持在调节者代理351中所有对象例如计划、模板、和动作的复制。
响应于复制生成的完成,生成复制调节者代理,向调节者代理参考模块599报告它的代理ID。调节者代理参考模块599通知源调节模块605已经准备好复制。
响应于此,源调节模块605从后继列表609获得对应于一个标记的索引值(0)的动作(动作1)的地址。源调节模块605通过调节者代理参考模块599请求调节者代理351将复制移动到动作1的地址(块903)。
源调节模块605参考后继列表609确定是否登记了下一个动作。当下一个动作被登记时,以相同的方式执行准备另一个复制的处理,并且复制被移动到动作2的地点(块897-903)。此时,要移动到动作2的复制的标记索引595应该与要移动到动作1的复制不同,并被设置为“1”(块899)。
当已经准备了另一个复制并将其移动到动作2时,源调节模块605参考后继列表609确定下一个动作是否被登记(块897)。在该例子中,由于在后继类别609中不再存在动作,源调节模块605确认已经结束复制的准备和移动。
源调节模块605通过调节者代理参考模块599向调节者代理351发送一个处理保持在源处的调节者代理351的指令(块905)。
复制调节者代理在不同的地点执行下一个计划步骤。这时再次抽取“与”分离模板作为一个当前节点。在图27中示出了用于确定下一个当前节点的逻辑的流程图。调节管理者603参考状态管理者601以获取状态信息,确认当前状态是一个目的地,并请求目的地调节模块607执行处理。
调节管理者603向原始状态返回状态信息。当计划对象353确认已由“与”分离执行了目的地处理时,调节管理者603抽取对应于一个标记索引的计划节点(动作1或动作2)并请求计划节点执行动作。
计划对象353参考计划循环者352抽取下一个当前节点。此时,计划循环者352参考后继列表609及标记索引595来检查一个登记值(图27)。
动作1和动作2获得已经执行的由动作所保持的结果。在该例子中,由于在“与”分离模板之前没有动作被执行,动作1和动作2不获得已经执行的由动作所保持的结果。
首先,对应于动作1的复制代理选择“与”联合作为下一个当前节点。计划对象353请求“与”联合模板中的调节管理者603执行下一个步骤。调节管理者603检查状态管理者601中的信息以确定在当前源的处理是否应该执行,并将一个执行请求发送到源调节模块605。另外,调节管理者603请求状态管理者601改变状态。
源调节模块605参考后继列表609并获得登记在后继列表609中的动作(动作3)的地址。源调节模块605通过调节者代理参考模块599指示调节者代理351移动到对应于所获得的地址信息的地点。
对应于动作2的一个复制代理执行的处理与动作1的方式相同,并移动到动作3的地点。由于两个调节者代理已经到达新的地点,它们执行下面的步骤。计划对象353抽取“与”联合模板作为当前节点并执行下一个步骤。
图28和29是示出为“与”联合模板在目的地执行的处理的流程图。“与”联合调节管理者603参考状态管理者601确定当前状态是一个目的地,并请求目的地调节模块607执行处理。
每个调节管理者603将状态返回原始条件。对应于动作1的复制的目的地条件模块参考前继列表591并抽取被提供结束标记的动作(在此例子中是动作1)(块913)。执行检查以确定所抽取的动作在前继索引列表中是否具有最小的索引(块915)。当动作具有最小的索引时,执行用于接收另一个复制代理的处理。
更具体地,目的地调节模块607在相同的地点请求代理参考模块597以从该地点获得所具有的代理列表。响应于此,在相同地点的代理参考模块597通过向地点360发送“获得代理列表(getAgentList)”指令来询问该地点。地点360将代理列表(AgentList)返回给代理参考模块597以确认存在于相同地点的代理列表。
接着,位于相同地点的代理参考模块597将该列表发送到目的地调节模块607,目的地调节模块607搜索列表查找具有相同的计划ID的代理(块921)。
当找到具有相同计划ID的代理时,获得该代理的计划。检查所获得的计划的当前节点(块929)。如果当前节点是同一个“与”联合,则执行接收代理结果的处理。在本发明的优选实施例中,执行进一步的检查以确定当前节点索引是否是同一个(块931和933)。只有当当前节点是同一个时,才开始进一步的处理。执行该处理以防止误解“与”联合的处理目标。此时,目的地调节模块607参考前继列表以确认前继者的个数,并根据前继者的个数执行接收结果的处理。
更具体地,目的地调节模块607参考所接收的计划的前继列表591,抽取增加了结束标记的动作并接收该动作所保持的结果。将该结果设置为相应的动作的结果。可以执行用于替换计划节点的处理(块935)。图30示出标识用于接收结果的处理的概略图。
目的地调节代理607检测到已设置结果,并通过调节者代理参考模块599将一个处理指令发送到调节者代理351(块937)。在接收到该指令之后,调节者代理351自己处理调节者代理及它所管理的对象(计划,模板,动作等)。
另一方面,对应于动作2的代理一到达一个新地点就执行下一个步骤。代理的目的地调节模块607也参考前继列表591并抽取增加了接收标记的动作(该例中为动作2)(块913)。执行检查以确定抽取的动作是否在前继索引列表中具有最小的索引(块915)。当动作不具有最小的索引时,程序控制输入睡眠状态以等待发送另一个复制代理结果(块925)。
根据动作1回过来参考复制,目的地调节模块607根据前继列表的计数(前继列表中元素的个数,在该例中为1)接收结果。在完成处理复制的处理后,计划对象353抽取下一个当前计划节点(动作3),并请求动作3执行一个动作。
动作3获得由动作1和动作2在内部保持的结果。在本发明的优选实施例中,目的地调节模块607参考前继列表591,向复制动作1和动作1发送“获取结果(getResult)”指令以请求处理结果的发送。响应该指令,动作1和动作2输出它们的结果。
动作3使用内部所保持的代理的类名称作为关键字参考存在于相同地点的代理(在本例中为报告代理)。代理3使用从动作1和动作2所获得的结果作为参数向报告代理发送内部所保持的消息。
计划对象353抽取下一个当前节点。在该例中,由于不存在当前节点,计划对象353检查到该情况并终止处理。调节者代理351检查到处理的终止并处理调节者代理和它所管理的对象。然后结束处理。
E-4.包括“或”分离模板的情况下的拓扑图31是示出由“或”分离模板所控制的移动对象组的操作的概略图。“或”分离模板与链接及“与”分离模板的不同之处在于它执行图32所示的处理作为对源的处理。“或”分离模板具有一个前继动作和多个后续动作。在源地点,通过调用方法“选择动作(chooseActivity)”从后继列表选择一个动作,并且仅执行所选择的动作。
在“或”分离源的处理中,首先,状态改变为目的地(块982)。调用功能“选择动作”并选择一个与一个预定调节相匹配的动作(块983)。动作的索引被作为标记索引(块984)。获得所选动作的地址,请求调节者代理351移动到该地址(块985)。
E-5.包括“或”联合模块的情况下的拓扑图33示出由一个“或”联合模板所控制的移动对象组的操作的概略图。“或”联合与链接和“与”联合模板不同之处在于它执行示于图34的处理作为为目的地的处理。“或”联合模板具有多个前继动作和一个后续动作。第一个到达目的地的移动代理生成一个处理代理并处理其他移动代理。
首先,“或”联合模板694为到达目的地690的第一个移动对象组发送方法“查找处理代理(findDisposeAgent)”,并确定在相同的地点是否存在一个处理代理(块943)。当不存在处理代理时,生成一个处理其他代理的处理代理(块945)。此时,计划和前继列表中(总计-1)个动作被作为参数发送。处理代理等待在前继列表中具有(总计-1)个动作的移动对象组,并处理那个组。当对象组已经被处理之后,处理对象处理它自己。在本发明的优选实施例中,将是否使用第一个到达目的地690的代理作为一个选择幸存者的条件。但是,可以通过使用结果内容作为条件来确定继续处理的代理。
另一个移动对象组的“或”联合模板696也发送方法“查找处理代理”,并确定在相同的地点是否存在一个处理代理(块943)。在此例中,由于已经存在处理代理,于是开始处理处理代理的处理。更具体地,执行检查以确定处理代理是否具有相同的计划(块947),或当前节点索引是否是同一个(块949)。结果处理代理确认处理代理自己应被处理。
当它确认自己应被处理时,消息“减少总计(countdown)”被发送到处理代理以减少它所执行的处理个数(块951)。接着,“或”联合模板696向调节者代理692发送一个请求以处理调节者代理692。
在本发明的优选实施例中,也提供了具有多个前继动作和个数比前继动作少的多个后续动作的部分联合模板(partial Join template)。由于这些模板可以通过上述模板的组合得以实现,因此不再解释。例如可以通过组合如下内容实现部分联合模板,即组合链接多个前继动作和一个后续动作的“或”联合模板;确定执行所希望个数的“或”联合模板的动作;根据那个动作是否清除预定条件的确定返回“或”联合模板的循环模板;哑数据动作及将动作分离为预定的部分的“与”分离模板。
如上所述,根据本发明,可以减少在移动代理执行期间所使用的其他资源的最小量。
另外,根据本发明,由于由一个用户发送一个移动代理,可以通过有效处理减少在结果被返回之前的处理时间。
另外,根据本发明,可以在不需要高级编程语言的情况下开发一个移动代理,并且也节省了开发程序所需的精力和时间。
进一步地,根据本发明,提供了一个用户友好的移动代理开发程序,其功能可以被开发者启示性地理解。
权利要求
1.一个对象,所述对象是移动对象组的元素,在一个调节者代理的控制下,所述组被从一个第一地点移动到一个第二地点,并在所述第一地点执行一个第一动作,在所述第二地点执行一个第二动作,所述对象包括(a)一个前继列表,具有涉及所述第一动作的链接信息;(b)一个后续列表,具有涉及所述第二动作的链接信息;及(c)一个调节者模块,用于请求所述调节者代理从所述第一地点移动到所述第二地点。
2.一个对象,所述对象是移动对象组的元素,在一个调节者代理的控制下,所述组被从一个第一地点移动到一个第二地点,并在所述第一地点执行一个第一动作,在所述第二地点执行一个第二动作,所述对象包括(a)一个前继列表,具有涉及所述第一动作的链接信息;(b)一个后续列表,具有涉及所述第二动作的链接信息;(c)一个状态管理者,用于确定所述条件模块是存在于所述第一地点还是所述第二地点;及(d)一个调节者模块,用于请求所述调节者代理从所述第一地点移动到所述第二地点。
3.一个对象,所述对象是一些移动对象组,在一个调节者代理的控制下,所述组被从一个第一地点移动到一个第二地点,并在所述第一地点执行一个第一动作,在所述第二地点执行一个第二动作,所述对象包括(a)一个调节者模板包括(a-1)一个前继列表,具有涉及所述第一动作的链接信息;(a-2)一个后续列表,具有涉及所述第二动作的链接信息;(a-3)一个状态管理者,用于确定所述条件模块是存在于所述第一地点还是所述第二地点;及(a-4)一个调节者模块,用于请求所述调节者代理将所述移动对象组从所述第一地点移动到所述第二地点;(b)一个计划循环者,用于确定当前所述第一动作,所述第二动作和所述调节者模板哪一个具有执行的权利;及(c)一个计划对象,用于管理所述第一动作,所述第二动作和所述调节者模板轮流执行。
4.一种用于控制一个移动对象组的方法,所述组用于在一个调节者代理的控制下移动到由一个第一地址所指定的一个第一地点及由一个第二地址所指定的一个第二地点,并在所述第一地点执行一个第一动作,在所述第二地点执行一个第二动作,所述方法包括步骤(a)请求所述调节者代理准备一个具有涉及所述第一动作的链接信息的一个第一移动调节者代理及一个具有涉及所述第二动作的链接信息的一个第二移动调节者代理;(b)获得所述第一地址;(c)获得所述第二地址;(d)请求所述第一移动调节者代理移动到所述第一地点;(e)请求所述第二移动调节者代理移动到所述第二地点;
5.一种用于控制一个移动对象组的方法,所述组用于在一个调节者代理的控制下移动到由一个第一地址所指定的一个第一地点、由一个第二地址所指定的一个第二地点及由一个第三地址所指定的一个第三地点,并在所述第一地点执行一个第一动作,在所述第二地点执行一个第二动作,在所述第三地点执行一个第三动作,所述方法包括步骤(a)请求所述调节者代理在所述第一地点准备具有与所述第二动作相关的链接信息的一个第一移动调节者代理及具有与所述第三动作相关的链接信息的一个第二移动调节者代理;(b)获得所述第一地址;(c)获得所述第二地址;(d)请求所述第一移动调节者代理从所述第一地点移动到所述第二地点;(e)请求所述第二移动调节者代理从所述第一地点移动到所述第三地点;(f)请求在所述第二地点执行所述第二动作;及(g)请求在所述第三地点执行所述第三动作。
6.一种用于控制一个移动对象组的方法,所述组在一个调节者代理的控制下移动到多个地点并在每个所述地点执行适当的动作,所述方法包括步骤(a)在一个第一地点执行与一个第一移动调节者代理相链接的一个第一动作以获得第一处理结果;(b)请求存在于所述第一地点并且保持所述第一处理结果的所述第一移动调节者代理移动到一个第二地点;(c)在一个第三地点执行与一个第二移动调节者代理相链接的一个第二动作以获得第二处理结果;(d)请求存在于所述第三地点并且保持所述第二处理结果的所述第二移动调节者代理移动到所述第二地点;(e)请求位于所述第二地点的所述第二移动调节者代理将所述第二处理结果发送到所述第一移动调节者代理;及(f)位于所述第二地点的所述第一移动调节者代理具有所述第一和所述第二处理结果。
7.一种用于控制一个移动对象组的方法,所述组在一个调节者代理的控制下移动到多个地点并在每个所述地点执行适当的动作,所述方法包括步骤(a)在一个第一地点执行与一个具有代理识别信息的第一移动调节者代理相链接的一个第一动作以获得第一处理结果;(b)请求存在于所述第一地点并且保持所述第一处理结果的所述第一移动调节者代理移动到一个第二地点;(c)在一个第三地点执行与一个具有和所述第一移动调节者代理相同的代理识别信息的第二移动调节者代理相链接的一个第二动作以获得第二处理结果;(d)请求存在于所述第三地点并且保持所述第二处理结果的所述第二移动调节者代理移动到所述第二地点;(e)请求位于所述第二地点的所述第二移动调节者代理将所述第二处理结果发送到所述第一移动调节者代理;及(f)为具有和所述代理识别信息相同的识别信息的一个移动调节者代理搜索所述第二地点;及(g)位于所述第二地点的所述第一移动调节者代理具有所述第一和所述第二处理结果。
8.一个移动对象组,所述组从一个第一地点移动到一个第二地点并在所述第一地点执行一个第一动作及在所述第二地点执行一个第二动作,所述移动对象组包括(a)一个计划对象,用于管理所述第一动作,所述第二动作轮流执行。(b)一个计划循环者,用于确定当前所述第一动作和所述第二动作哪一个具有执行权利。
9.一种用于生成一个移动对象组的方法,所述组包括(i)一个在一个第一地点执行的第一动作,(ii)一个在一个第二地点执行的第二动作,(iii)一个请求一个调节者代理移动到所述第二地点的调节者模板,所述调节者代理控制在所述第一地点所述移动组的移动,所述方法包括步骤(a)在所述第一动作期间,生成包括与所述调节者模板相关的链接信息的一个后续列表;(b)通过所述调节者模板,生成包括与所述第一动作向的链接信息的一个前继列表及包括与所述第二动作相关的链接信息的一个后续列表;及(c)在所述第二动作期间,生成包括与所述调节者模板相关的链接信息的一个前继列表。
10.一种用于生成一个移动对象组的方法,所述组包括(i)一个在一个第一地点执行的第一动作,(ii)一个在一个第二地点执行的第二动作,(iii)一个请求一个调节者代理移动到所述第二地点的调节者模板,所述调节者代理控制在所述第一地点所述移动组的移动,所述方法包括步骤(a)生成一个用于管理所述第一动作,所述调节者模板和所述第二动作的轮流执行的列表;(b)在所述第一动作期间,生成包括与所述调节者模板相关的链接信息的一个后续列表;(c)通过所述调节者模板,生成包括与所述第一动作向的链接信息的一个前继列表及包括与所述第二动作相关的链接信息的一个后续列表;及(d)在所述第二动作期间,生成包括与所述调节者模板相关的链接信息的一个前继列表。
11.一种用于生成一个移动对象组的装置,所述组包括(i)一个在一个第一地点执行的第一动作,(ii)一个在一个第二地点执行的第二动作,(iii)一个请求一个调节者代理移动到所述第二地点的调节者模板,所述调节者代理控制在所述第一地点所述移动组的移动,所述装置包括(a)在所述第一动作期间,生成包括与所述调节者模板相关的链接信息的一个后续列表的装置;(b)通过所述调节者模板,生成包括与所述第一动作向的链接信息的一个前继列表及包括与所述第二动作相关的链接信息的一个后续列表的装置;及(c)在所述第二动作期间,生成包括与所述调节者模板相关的链接信息的一个前继列表的装置。
12.一种计算机可读存储介质,存储用于生成一个移动对象组的程序,所述组包括(i) 一个在一个第一地点执行的第一动作,(ii)一个在一个第二地点执行的第二动作,(iii)一个请求一个调节者代理移动到所述第二地点的调节者模板,所述调节者代理控制在所述第一地点所述移动组的移动,所述程序包括(a)用于指示所述计算机在所述第一动作期间,生成包括与所述调节者模板相关的链接信息的一个后续列表的程序代码;(b)用于指示所述计算机通过所述调节者模板,生成包括与所述第一动作向的链接信息的一个前继列表及包括与所述第二动作相关的链接信息的一个后续列表的程序代码;及(c)用于指示所述计算机在所述第二动作期间,生成包括与所述调节者模板相关的链接信息的一个前继列表的程序代码。
全文摘要
提供一种高效的移动代理,它仅需极短的处理时间,并可以减少对于其他资源的最少使用量。根据本发明,提供一个模板,借此将由一个移动代理所执行的复杂动作分类为基本的动作模式。在任何移动开始前模板与发生在一个地点的一个动作的执行相链接,在移动开始之后与所发生的一个动作的执行相链接。根据其类型,模板定义在移动前后要执行的指令并将其发送到移动代理。响应指令,移动代理准备一个复制,移动到另外的地点或组合复制。另外,移动代理所保持的代理对象指定模板和动作执行的顺序。
文档编号G06F9/44GK1251666SQ9718210
公开日2000年4月26日 申请日期1997年12月25日 优先权日1997年4月10日
发明者南和宏, 铃木俊宏 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1