应用程序类扩展的制作方法

文档序号:6428546阅读:244来源:国知局
专利名称:应用程序类扩展的制作方法
技术领域
本发明涉及扩展应用程序类的行为及特性,尤其涉及在运行时间内、在无需修改现有代码的情况下提供这些扩展。
背景技术
在C++或其他任何直接被编译成机器代码的编程语言中,没有对应用程序类进行运行时扩展的已知方法,以使得原始程序保持在未修改状态。现在,需要一个兼容于所有正在使用的系统的编译器,必须撰写并编译适当的应用程序代码,然后则必须要有联接最终可执行程序所需的二进制文件。这就导致了一个全新程序的出现,以及随之而来的对扩展性回归测试及验证的需求。
能够在不改变原始程序的情况下扩展应用程序类的行为及特性将是十分有利的,这样就排除了使用兼容的编译器及二进制文件的需要,也排除了对回归测试及验证的需要。

发明内容
本发明在于一种用于扩展应用程序类的技术,即改变一个现有类的结构,创建新的类,或者修改一个类实例的上下文结构。这些应用程序类扩展在运行时执行,而无需改变原始程序。
本发明的运作是通过在现有类中集成一个通用的、可调整大小的数据缓存,可用来保存由所述扩展特性所代表的数据,以及通过提供一个基于规则的引擎,该引擎能够根据应用程序类的特性确定其关系及行为,从而得到如下的机制,其中应用程序的用户可以在无需编程或修改原始程序的情况下修改应用程序系统的特性及行为。
在一个实施方式中,本发明包括一个方法,用于扩展第一应用程序类。此方法包括,在所述第一应用程序类中集成一个用于存放所扩展特性的第一数据缓存,以及利用一个基于规则的引擎来确定与所述第一应用程序类的一个或多个扩展特性相关联的值。
在另一个实施方式中,本发明在于一个计算机程序产品,包括一个具有计算机可读代码装置的计算机可用媒介,其中所包含的计算机可读代码装置用于使计算机扩展第一应用程序类。所述计算机程序产品中的计算机可读代码装置包括用于使计算机在所述应用程序类中集成一个用来存放所扩展特性的第一数据缓存的计算机可读程序代码装置,以及用于使计算机利用一个基于规则的引擎来确定与所述第一应用程序类相关联的一个或多个扩展特性的计算机可读程序代码装置。
在又一个实施方式中,本发明在于一个控制器,用于一个基底处理设备。所述控制器包括用于扩展第一应用程序类的第一电路,其包括用于在所述应用程序类中集成一个用来存放所扩展特性的第一数据缓存的电路,以及用于利用一个基于规则的引擎来确定与所述第一应用程序类相关联的一个或多个扩展特性的电路。


下面,联系

本发明的上述各方面及其他特征,其中图1是一个类结构图,示出了元数据和类属性的关系。
图2是一个类结构图,示出了一个类工厂及其与所述类元数据的集成。
图3是一个类结构图,示出了扩展类,永久对象以及动态扩展特性间的关系。
图4是一个典型设备的一个实施方式的框图,所述设备合并了本发明的各特征。
具体实施例方式
虽然下面将参照附图中所示的实施方式描述本发明,但应该了解到本发明可以实现于多种不同形式的实施方式。此外,可以使用任何大小、形状或类型合适的的元件或原材料。
图1是一个类结构图,示出了特性映射1005中的各特性,永久元数据1010,元数据1015,属性集1020,属性缺省值1025和对象值范围1035,属性类型1030,类型化属性1040,类型化永久属性1050,以及永久属性1045之间的关系。
图2示出了一个类工厂(class factory)1055,其与类元数据1015的集成,以及其与类初始化软件1060和一个工厂构造器1065的关系。
图3示出了扩展类1090,永久对象1075,虚拟对象1085,动态扩展特性1080,以及永久元数据1070之间的关系。
如图1中所示,本发明通常包括一个用充足的信息描述一个类结构的装置,以使得图2中所示的类工厂1055能构造出所述类的实例。图3描述了在运行时附加特性1080如何能够与一个对象1075动态关联,而无需修改该对象所属类的结构。图3还示出了扩展类1090,永久对象1075,以及动态扩展特性之间的关系。在面向对象编程中,一个类被定义成一个类型化的数据结构,其中包括用来定义所述类实例状态的特性。一个对象通常认为是一个类的实例,其状态特性确定了该对象的身份。至少是用于本发明的目的,属性1020、1040、1045、1050包括了关于一个特定类特性的信息,该信息允许在仅知道所述特性名称的情况下对其进行构造、访问、设置及消灭。一个特性可以是一个类属性,其设置组成了所述类的结构,其值确定了所述类的任何特定实例的状态。元数据1010、1015被定义成关于一个应用程序中数据的结构的信息。元数据可被表示成具有所有相关特性及属性的一个类的定义。
根据本发明,一个应用程序可以改变一个现有类的结构,创建可以像所述应用程序中任何其它的预定义类一样被使用的全新的类,或者在运行时根据特定对象运行时的上下文修改一个类实例的结构。依照本发明,这可以通过将这些改变列入一个储藏库并将其载入所述运行中的应用程序来实现,而无需编写代码、编译、或以任何形式改变所述应用程序自身的现有代码或结构。这就使得一个应用程序能够实现上述改变而无需修改现有计算机代码,也无需生成一个新的应用程序。这里描述的改变一个类、创建一个类或修改一个类的结构的这一能力被称为应用程序类扩展(ACE)。
举例来说,Java或Visual Basic语言要求把对一个应用程序的结构的修改写入所述适当的计算机语言并重编译。这改变了所述程序的基本结构及行为,反之,如下面所说明的一样,依照本发明的应用程序类扩展则无需这类改变。
ACE包括建立关于一个类的结构及其特性的详细信息,以及建立一个类工厂以使用这一结构和特性信息来改变结构、创建新类、或者根据上下文修改一个实例的结构。
关于类结构的信息可以被包括在元数据中。应用程序类的扩展要求关于一个类的结构及其特性的详细信息,即所述类元数据1010、1015。这一信息可以被编译入所述应用程序,也可以存储在一个储藏库中并在运行时被载入所述应用程序内存。当通过名称或ID被识别后,所述类元数据被类工厂1055利用来创建一个类的新实例,或当被类似的识别时访问类特性。换句话说,所述类工厂能够通过名称或ID查找所述元数据或任何类,然后能够使用该信息来正确构造所述类的一个新实例,其中包括了所述类的扩展特性。本发明允许一个应用程序往一个类的元数据添加新特性,这将会改变由所述类工厂构造的实例的结构。
在C++这样的编译语言中,一个类的布局在该类被编译时确定。这就需要一个为这些新特性分配存储空间并执行其初始化代码(必要时)的机制,以使得所述类的实例具有这些新特性。本发明提出了一个方法以使每个特性与一个属性类相关联。对于每个类特性都有一个属性类实例被生成,并与所述类元数据一同保存。所述属性实例是所述类元数据的实体,其中所述属性实例定义了属于所述类的各实例的每个特性。
用于各个类的所述元数据包括一般信息,首先是类名称及ID以使得所述类工厂能够通过名称或ID查找一个类。其他信息为isA(类)及isKindOf(类)之类的运行时类型识别函数提供支持,并提供到基类的链接,以及一个到所述类的一个属性集(特性定义)的链接。
一个类的每个特性都具有一个与所述类元数据相关联的属性对象。此对象包含的信息使得所述类构造器能够定位所述特性的内存并在所述构造器被终止前将其正确初始化。被编译入一个类的特性由所述编译器生成的代码初始化,但是用于ACE的特性则必须由所述属性类所操作的另一步骤初始化。每个属性对象至少包括以下信息所述特性的名称;所述特性的类型;一个用来定位所述特性数据的机制;以及所述特性的大小。可选地,一个属性对象还可以随意地包括用来正确构造及消灭所述特性的代码地址,以及一个用来设置所述特性的预设值。
此信息允许通过名称来访问一个特性,即使所述特性未被编译入所述类而是在运行时由应用程序类扩展添加。这是必要的,以便使得特性能够由应用程序代码查询或设置。
本发明还包括用于动态定义的类特性的管理存储。管理存储的程序包括为每个特性分配存储空间;初始化或构造每个特性对象;当不再需要时消灭(若恰当)每个特性对象;以及为每个特性解除分配的所述存储空间。
由于用于ACE的特性未编译入所述类的结构,那么其所使用的空间必须以某种方法与所述类的适当实例相关联,并在所述类实例被消灭时被解除分配。这通过所述类的一个隐藏(私有)特性实现,其封装了一个可变大小的通用内存缓存。所述私有特性包括所述类的所有动态(非编译)特性,当构造一个所述类的实例时所述缓存被分配。所述类元数据的各属性知道其特性在此缓存中的位置,这样它们就可以在适当时机正确初始化、访问、设置及消灭其所管理的数据。
如上面所提到的,本发明的一个特征是改变现有类结构的能力。前面所描述的任何具有代表性元数据的类都有潜力通过往一个类元数据添加新属性来改变其结构,从而表示每个新特性。一个用来包含所述新特性数据的缓存可能被创建并与所述类的每个实例相关联。然后所述缓存通利用所述已经登记属性的能力而被正确初始化。结果,所改变的类的新实例既包括已有特性,也包括与其元数据一同登记的新特性。
本发明的另一特征是创建新类的能力。创建一个新类与改变一个现有类非常类似,因为所述新类实际上是基于一个已有类。为使这一新类被所述系统识别,本发明以一个新名称和类ID创建并登记新的元数据。所述ACE系统还必须向所述类工厂登记所述正确构造方法。在创建并登记所述新的元数据及构造方法的基础上,一个应用程序就可以通过向所述类工厂指定其名称来构造这一新类的实例。
本发明还包括通过上下文改变对象结构的能力。为了根据一个特定对象运行时的上下文改变其结构,所述ACE应用程序确定地识别将与所述对象相关联的特性;设置所述特性值;删除不再与当前对象上下文相关联的先前的特性值。
上下文(context)可被定义成在任意给定时间点一个对象的状态连同所述系统的整体状态。所讨论的所述对象或所述系统中任何其他相关对象状态的改变,都会改变所述上下文,并潜在地改变与所述对象相关联的特性。下文就说明了一个对象状态改变的实例。
以一个制造系统为例,一个类建模了一个制造设备的状态。所述设备的一个正常特性可以是其名称、位置、容量以及工作状态。比方说,所述工作状态可以是“运行中”、“闲置”、“维护”或“不可用”。根据所述工作状态,我们可能想要将一组不同的特性与此设备相关联。当设备处于“运行中”状态时,我们可能想要知道相关的处理批量、制作方法及操作人员。当设备处于“闲置”状态时,我们可能想要知道是什么时候、由谁将其置于闲置状态的。当设备处于“维护”状态时,我们可能想要知道其所经历工作顺序以及负责维护的技师。这些是完全不同的信息,但在各个时间点对于所述设备来说却是适当的。这样,表示不同信息比特的不同特性在适当时就可以与所述设备的不同工作状态或上下文相关联。
确定上下文的一个方法是在运行时识别对象特性何时变化。当识别到特性中的一个变化时,可以运用规则来确定什么样的特性与哪些对象相关联,并按要求改变上下文特性。本发明包括确定一个对象的上下文,但是并不限于用于确定上下文的任何特定技术或结构。
当改变一个对象的所述上下文特性时,必须由所述应用程序或由用来确定新特性必须设为何值的某一框架工具来设置新特性的值。最好是由所述系统框架来施行这些变化,因为它们可能会以一种所述应用程序不易适应的方式随时间变化。为所述系统框架提供设置特性值的能力的一个方法是通过提供一组特性映射规则1005。这些规则可以存储在一个储藏库中,由所述应用程序在运行时载入,并在系统状态变化时应用于对象的所述相关类。
ACE可以在执行于一台或多台计算机的软件及计算机程序中实现。图4是一个典型设备4000的一个实施方式的框图,该设备合并了本发明的各个特征。如图所示,第一计算机系统4005可被连接到第二计算机系统4010,这样第一和第二计算机系统就能够互相交换信息。在一个实施方式中,第一计算机系统4005可以包括一个服务器,且第一和第二计算机系统能够通过一个网络通信,如在此实施方式中所示的因特网4015。第一和第二计算机系统4005和4010可以利用任何适当的用于交换数据的方法连接到一起,比方说包括一个调制解调器、硬件连接、无线连接或者光纤连接。一般来说,由第一和第二计算机系统4005、4010通过使用一个通信协议来进行信息交换。第一和第二计算机系统4005、4010通常使用程序存储装置4020、4025,其中包含了机器可读程序源代码,用来使第一和第二计算机系统4005、4010实现本发明的各方法。合并了本发明各特征的所述程序存储装置4020、4025可以作为一台机器的一个部件被设计、制造及使用,所述机器利用光学、磁学以及/或者电学特性来实现本发明的程序及方法。在其他实施方式中,所述程序存储装置4020、4025可以包括计算机可读可执行的磁媒介,比如磁盘或计算机硬盘。在另外不同的实施方式中,所述程序存储装置4020、4025可以包括一张软盘、一张光盘、只读存储器(ROM)、随机存取存储器(RAM)、任何类型的半导体存储器或者其他适于存储信息的存储装置。第一和第二计算机系统4005、4010,每个还可以包括一个用于执行所存储程序的处理器4030、4035,以及一个用户接口4040、4045,所述接口可以包括一个显示装置4050、4055及一个输入装置4060、4065。
在一个首选实施方式中,第二计算机系统4010连接到一个用于处理基底的设备4070,比如半导体晶片、平面显示基底或其他类型的基底。第二计算机系统4010可以包括硬件接口、用于控制基底处理设备4070的操作的软件及程序。所述软件和计算机程序最好合并本发明的宗旨及特征。
应该理解的是,前面的描述仅仅是对本发明的说明。熟悉技术的人在不背离本发明的前提下可以设计各种替代方案及修改。因此,本发明意在包含在所附权利要求书范围内的所有此类替代方案、修改及变动。
权利要求
1.一种方法,用于扩展一个第一应用程序类,包括将一个第一数据缓存集成到所述第一应用程序类中,用于存放扩展特性;以及利用一个基于规则的引擎来确定与所述第一应用程序类的一个或多个扩展特性相关联的值。
2.权利要求1的方法,还包括利用与所述第一应用程序类相关联的一个或多个扩展特性来改变所述第一应用程序类的一个结构。
3.权利要求2的方法,其中改变所述第一应用程序类的一个结构包括创建一个属性来表示与所述第一应用程序类相关联的一个或多个扩展特性中的每一个扩展特性;创建一个第二数据缓存,用于存放与所述第一应用程序类相关联的一个或多个扩展特性;以及将所述第二数据缓存与所述第一应用程序类的每个实例相关联。
4.权利要求1的方法,还包括利用与所述第一应用程序类相关联的一个或多个扩展特性来创建一个第二应用程序类。
5.权利要求1的方法,还包括利用与所述第一应用程序类相关联的一个或多个扩展特性来改变所述第一应用程序类的一个实例的结构。
6.权利要求5的方法,其中改变所述第一应用程序类的一个实例的结构包括识别所述第一应用程序类的所述实例的一个上下文;根据所识别的上下文识别一组所述扩展特性;以及将所述一组扩展特性应用于所述应用程序类的所述实例。
7.权利要求6的方法,其中识别实例的上下文包括识别一个系统状态何时改变,并且其中识别所述一组扩展特性包括生成特性映射规则;以及当识别到所述系统状态改变时,将所述特性映射规则应用于所述实例。
8.一种计算机程序产品,包括一个其中具有计算机可读代码装置的计算机可用媒介,用于使一台计算机扩展一个第一应用程序类,所述计算机程序产品中的所述计算机可读代码装置包括用于使一台计算机在所述应用程序类中集成一个用来存放扩展特性的第一数据缓存的计算机可读程序代码装置;以及用于使一台计算机利用一个基于规则的引擎来确定与所述第一应用程序类相关联的一个或多个扩展特性的计算机可读程序代码装置。
9.权利要求8的计算机程序产品,其中所述计算机程序产品中的所述计算机可读代码装置还包括用于利用与所述第一应用程序类相关联的一个或多个扩展特性来改变所述第一应用程序类的一个结构的计算机可读程序代码装置。
10.权利要求9的计算机程序产品,其中用来改变所述第一应用程序类的一个结构的所述计算机可读代码装置还包括用于创建一个属性来表示与所述第一应用程序类相关联的一个或多个扩展特性中的每一个扩展特性的计算机可读程序代码装置;用于创建一个第二数据缓存来存放与所述第一应用程序类相关联的一个或多个扩展特性的计算机可读程序代码装置;以及用于将所述第二数据缓存与所述第一应用程序类的每个实例相关联的计算机可读程序代码装置。
11.权利要求8的计算机程序产品,其中所述计算机程序产品中的所述计算机可读代码装置还包括用于利用与所述第一应用程序类相关联的一个或多个扩展特性来创建一个第二应用程序类的计算机可读程序代码装置。
12.权利要求8的计算机程序产品,其中所述计算机程序产品中的所述计算机可读代码装置还包括用于利用与所述第一应用程序类相关联的一个或多个扩展特性来改变所述第一应用程序类的一个实例的结构的计算机可读程序代码装置。
13.权利要求12的计算机程序产品,其中用来改变所述第一应用程序类的一个实例的结构的所述计算机可读程序代码装置还包括用于识别所述第一应用程序类的所述实例的一个上下文的计算机可读程序代码装置;用于根据所识别的上下文识别一组所述扩展特性的计算机可读程序代码装置;以及用于将所述一组扩展特性应用于所述应用程序类的所述实例的计算机可读程序代码装置。
14.权利要求13的计算机程序产品,其中用于识别所述实例的所述上下文的所述计算机可读程序代码装置包括用于识别一个系统状态何时改变的计算机可读程序代码装置,并且其中用于识别所述一组特性的计算机可读程序代码装置包括用于生成特性映射规则的计算机可读程序代码装置;以及当识别到所述系统状态改变时,用于将所述特性映射规则应用于所述实例的计算机可读程序代码装置。
15.一件制造设备,包括一个其中具有计算机可读程序代码装置的计算机可用媒介,用于使一台计算机扩展一个第一应用程序类,所述制造设备中的所述计算机可读代码装置包括用于使一台计算机在所述应用程序类中集成一个用来存放扩展特性的第一数据缓存的计算机可读程序代码装置;以及用于使一台计算机利用一个基于规则的引擎来确定与所述第一应用程序类相关联的一个或多个扩展特性的计算机可读程序代码装置。
16.权利要求15的制造设备,其中所述计算机程序产品中的所述计算机可读代码装置还包括用于利用与所述第一应用程序类相关联的一个或多个扩展特性来改变所述第一应用程序类的一个结构的计算机可读程序代码装置。
17.权利要求16的制造设备,其中用来改变所述第一应用程序类的一个结构的所述计算机可读代码装置还包括用于创建一个属性来表示与所述第一应用程序类相关联的一个或多个扩展特性中的每一个扩展特性的计算机可读程序代码装置;用于创建一个第二数据缓存来存放与所述第一应用程序类相关联的一个或多个扩展特性的计算机可读程序代码装置;以及用于将所述第二数据缓存与所述第一应用程序类的每个实例相关联的计算机可读程序代码装置。
18.权利要求15的制造设备,其中所述计算机程序产品中的所述计算机可读代码装置还包括用于利用与所述第一应用程序类相关联的一个或多个扩展特性来创建一个第二应用程序类的计算机可读程序代码装置。
19.权利要求15的制造设备,其中所述计算机程序产品中的所述计算机可读代码装置还包括用于利用与所述第一应用程序类相关联的一个或多个扩展特性来改变所述第一应用程序类的一个实例的结构的计算机可读程序代码装置。
20.权利要求19的制造设备,其中用来改变所述第一应用程序类的一个实例的结构的所述计算机可读程序代码装置还包括用于识别所述第一应用程序类的所述实例的一个上下文的计算机可读程序代码装置;用于根据所识别的上下文识别一组所述扩展特性的计算机可读程序代码装置;以及用于将所述一组扩展特性应用于所述应用程序类的所述实例的计算机可读程序代码装置。
21.权利要求20的制造设备,其中用于识别一个实例的所述上下文的所述计算机可读程序代码装置包括用于识别一个系统状态何时改变的计算机可读程序代码装置,并且其中用于识别所述一组特性的计算机可读程序代码装置包括用于生成特性映射规则的计算机可读程序代码装置;以及当识别到所述系统状态改变时,用于将所述特性映射规则应用于所述实例的计算机可读程序代码装置。
22.一个控制器,用于一个基底处理设备,包括用于扩展第一应用程序的第一电路,其包括用于在所述应用程序类中集成一个用来存放扩展特性的第一数据缓存的电路;以及用于利用一个基于规则的引擎来确定与所述第一应用程序类相关联的一个或多个扩展特性的电路。
23.权利要求22的控制器,还包括用于利用与所述第一应用程序类相关联的一个或多个扩展特性来改变所述第一应用程序类的一个结构的电路。
24.权利要求23的控制器,其中用来改变所述第一应用程序类的一个结构的所述电路包括用于创建一个属性来表示与所述第一应用程序类相关联的一个或多个扩展特性中的每一个特性的电路;用于创建一个第二数据缓存来存放与所述第一应用程序类相关联的一个或多个扩展特性的电路;以及用于将所述第二数据缓存与所述第一应用程序类的每个实例相关联的电路。
25.权利要求22的控制器,还包括用于利用与所述第一应用程序类相关联的一个或多个扩展特性来创建一个第二应用程序类的电路。
26.权利要求22的控制器,还包括用于利用与所述第一应用程序类相关联的一个或多个扩展特性来改变所述第一应用程序类的一个实例的结构的电路。
27.权利要求26的控制器,其中用来改变所述第一应用程序类的一个实例的结构的所述电路包括用于识别所述第一应用程序类的所述实例的一个上下文的电路;用于根据所识别的上下文识别一组所述扩展特性的电路;以及用于将所述一组扩展特性应用于所述应用程序类的所述实例的电路。
28.权利要求27的控制器,其中用于识别一个实例的所述上下文的所述电路包括用于识别一个系统状态何时改变的电路,并且其中用于识别所述一组特性的电路包括用于生成特性映射规则的电路;以及当识别到所述系统状态改变时,用于将所述特性映射规则应用于所述实例的电路。
全文摘要
一个用于扩展一个第一应用程序类的方法(图2)包括,在所述第一应用程序类中集成一个用来存放所扩展特性的第一数据缓存,以及利用一个基于规则的引擎来确定和所述第一应用程序类相关联的一个或多个所述扩展特性的值。
文档编号G06F9/44GK1561482SQ02819277
公开日2005年1月5日 申请日期2002年8月23日 优先权日2001年8月24日
发明者威廉·O.·博伊尔 申请人:布鲁克斯自动控制公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1