模型效果分析的制作方法

文档序号:6419198阅读:613来源:国知局
专利名称:模型效果分析的制作方法
本申请要求1998年10月16日提交的题为“建模工具的系统和方法”的美国专利申请No.60/104,682的申请日的权益。
本申请涉及共同待审的题为“用于建模工具的装置和方法”的美国专利申请No.__(代理人卷号#22074661-25535),在此将其全部引入作为参考。
本申请涉及共同待审的题为“确定两个或多个模型之间区别的方法”的美国专利申请No.__(代理人卷号#22074661-25531),在此将其全部引入作为参考。
本申请涉及共同待审的题为“可扩展宏语言的方法和系统”的美国专利申请No.__(代理人卷号#22074661-25533),在此将其全部引入作为参考。
本申请涉及共同待审的题为“用于通过SQL输入对分级数据存储进行访问的方法及装置”的美国专利申请No.__(代理人卷号#22074661-25534),在此将其全部引入作为参考。
图2显示了本发明一个典型实施例的功能框图。
图3显示了根据本发明元模型的一个典型实施例的数据模型。
图4的流程图显示了根据本发明的用于启动一个对象语义的方法的典型实施例。
图5的流程图显示了根据本发明的用于启动一个特性语义的方法的典型实施例。
图6的流程图显示了根据本发明的用于构筑一个建模工具的方法的典型实施例。
图7的流程图显示了根据本发明的执行示范功能的典型实施例。
图8的流程图显示了根据本发明的用于确定作为事务结果的模型净变化的方法的典型实施例。
图9的流程图显示了根据本发明用于从作为事务结果的模型变化记录中确定净操作类型变化的方法的典型实施例。


图10显示了根据本发明用于从事务的模型变化记录中确定净操作类型变化的规则的一个示范集。
图11的流程图显示了根据本发明用于从为事务结果的模型变化记录中确定作净数据变化的方法的典型实施例。
图12显示了根据本发明用于从事务的模型变化记录中确定净数据变化的规则的一个示范集。
详细说明图1显示了一个采用了本发明的传统计算机系统101。在一个典型实施例中,本发明在例如由SUN MICROSYSTEMSTM制造的SUNTM工作站上得以实现。另外的实施例可在例如由IBM公司制造的IBMTM个人电脑或由APPLETM计算机公司制造的MACINTOSHTM计算机上实现。本领域技术人员应该理解,也可以采用其它的计算机系统结构。一般来说,这种如图1所示的计算机系统包括用于传送信息的总线102、与总线102相连用于处理信息的处理器103(如中央处理器)、以及与总线102相连用于为处理器103存储信息和指令的主存储器104。只读存储器105被连接在总线102上,用于保存处理器103的信息和指令。与总线102相连的显示设备106用于为例如开发者显示信息。
一字母数字输入设备107(如键盘)与总线102相连,用于将信息和命令选择发送给处理器103。调制解调器110与总线102相连,用于提供例如与其它计算机系统或数据库以及海量存储介质108(如与总线102相连用于保存信息和指令的磁盘或相应的磁盘驱动器)之间的通信。含有数字信息的数据存储介质109被设置成例如能够与海量存储介质协同工作以允许处理器103通过总线102存取数据存储介质109上的数字信息。另外,也可采用一个用于保存高分辨率图像的CD-ROM(未示出)以供在显示设备106上显示图像。
本发明的一个实施例是由(例如)一种用C++编程语言编写的软件模块实现的,该软件模块可在如计算机系统101的计算机系统中以传统的方式得到执行。利用众所周知的技术,应用软件可被保存在数据存储介质109中,随后被调入计算机系统101中并得到执行。一旦被启动,本优选实施例所述的软件将以如下说明的方式进行操作。统一建模结构(UMA)是一种数据驱动建模引擎,它能够在各种基于元模型外部定义的问题域中工作,上述元模型可由开发者提供并扩充以提供一个基于UMA的产品。元模型的外部定义是例如对要在问题域中被寻找的对象类型以及与各对象相关的特性的一系列说明。这些说明可通过调用一套由具体实现(implementation)所公开的功能来提供,并且可通过函数参数传入说明性信息。典型的问题域可包括数据建模,如数据库列表、数列以及索引;过程建模,如活动和箭头;访问建模,如数据控制语言语句和文件;以及组件建模,如接口、实现以及从属关系。
在本发明的一个典型实施例中,基于UMA的产品是一种建模工具。该基于UMA的产品可以是一个基于UMA的应用程序,如一个含有UMA的用户接口。基于UMA的产品也可含有一个例如由开发者提供的基于元模型的外部定义的对象/特性模型的一个例子。
如图2所示,在本发明的一个典型实施例中,UMA200包括一个元模型210、对象和特性厂家注册表260、对象/特性接口280、事务管理程序285、日志文件295以及对象/特性模型290。元模型210可包括含有多个语义集230的语义注册表220以及一个含有对象/特性说明250的元数据管理程序240。对象/特性说明250是多套用于描述对象或特性的特征的信息。在描述对象的情况下,它包括了对象的名称、可由人读取的说明性文本、一般化信息以及与其中可能包含的其它类型的对象有关的信息。一般化信息描述了例如细化部分/子分类,如同义词信息。
对象/特性说明可由开发者或用户提供以作为外部定义的元模型。元模型210是对求解问题域的对象和特性以及多套语义集230的描述说明,这些语义集对在对象和特性被请求改变时,要被分别调用以改变这些对象和特性。
图3显示了本发明元模型210的一个典型实施例。如图3所示,该元模型201包括多个类,如对象、特性和语义,并且建立了对象、特性以及语义之间的关系。类型310与一个类型代码键、名称属性以及定义属性相关。类型310可以是例如一个目录330或者也可是一个项目320。目录330与类型代码键相关并且包括多个项目。目录成员340与目录键和成员键相关。项目320与类型代码键相关并且可以是特性或对象。
特性350与类型代码键、缺省值属性以及数据类型属性相关。特性350也与特性用途375相关。对象360与类型代码键、对象实现属性以及超类型属性相关。超类型属性为对象360提供了进一步的规定性。对象360可以拥有(例如,含有一个组件)其它对象也可被其它对象拥有。对象所有权370与拥有者键和被拥有者键相关。特性用途375与特性键和对象键相关。
特性用途375也将特性350和对象360关联起来。对象语义用途390与类型代码键和身份(ID)键相关联。对象语义用途390将对象360和对象语义395关联起来。对象语义395与ID键相关联。特性语义用途380与ID键、特性键以及对象键相关联。对象语义用途390将特性语义385与特性用途375关联起来。特性语义385与语义ID键相关联。
如图2所示,元模型210的元数据管理程序240通过一个基于UMA的应用程序225接收例如从开发者发出的元数据(例如,对象和特性的描述)。元数据由开发者提供用来解决其问题域的对象和特性。元数据管理程序240从对象和特性厂家注册表260中接收有效创建请求。
如图2所示,元模型210的语义注册表220包括多个语义集230,这些语义集230可以含有例如一个预定集以及由开发者通过基于UMA的应用程序所提供的附加集。语义230是封装进语义对象的建模规则,语义对象对外有一个接口,如一个纯粹虚拟的类,它从语义230的细节中隐含了建模引擎。预定义语义集可提供规则以加强建模工具基础的完整性,而且在本发明的一个典型实施例中,预定语义集不能够被开发者改动。由开发者提供的额外语义集可以被开发者改动。语义的一个例子是一个对规则“单一数据库中的两个列不能具有相同的名称”进行加强的语义。
语义230通过对象/特性接口280获取对于对象/特性模型290的访问。语义注册表220可以包括一个对象语义注册表以用于确定是否有一个特定的对象语义集存在、以及在存在该语义集的情况下对各对象语义集进行定位。语义注册表220也可包括一个特性语义注册表以用于确定是否有一个特定的特性语义集存在、并在当存在该语义集的情况下对各特性语义集进行定位。语义注册表220通过例如对象/特性接口280找出被请求使用的各个语义集。语义注册表220根据调入的语义来对各个对象和特性做出修改,并向对象/特性接口280提供经修改的对象和特性。语义注册表220还提供了对对象/特性接口280的处理操作的状态。例如,被调入用于一个操作的语义之一可能被违反,这就表示该操作已经失败。
对象和特性厂家注册表260可以包括厂家270,如对象厂家和特性厂家。对象和特性厂家注册表260通过一基于UMA的应用程序225接收(例如)开发者所发出的创建对象和特性的请求。厂家270能够创建对象和特性。对象和特性厂家注册表260能够确定是否有一个特定的厂家存在,并且能够在当存在该厂家的情况下找出各个厂家以创建被请求的各个对象和特性。对象和特性厂家注册表260还可向元数据管理程序240提供一个有效创建请求。其有效性可以包括(例如)创建对象或特性的请求是否成功。对象和特性厂家注册表260能够举例分别说明对象和特性,并能够将这些对象和特性提供给对象/特性接口280。
如图2所示,对象/特性280通过基于UMA的应用程序225接收(例如)开发者所发出的用于修改和删除对象及特性的请求。这些请求调用可使从元模型210的语义注册表220提供给对象/特性接口280的对象和特性发生改变的元模型210中的各个语义。对象/特性280可以从多个分立事件(例如,在表1中所显示的多个事件)中识别一个分立的事件,并且能够确定应该调用一个语义或者一个语义集。上述分立事件指的是其中对象/特性模型290可被修改的情况。在本发明的一个典型实施例中,UMA的作者可以提供多个分立事件。
表1常量 说明PostCreation 正在创建一个对象PreDestmction正在破坏一个对象PreEdit 将创建和/或修改一个特性PostEdit 刚创建和/或修改一个特性PreNull 将破坏一个特性PreOwnerDestruction 将破坏拥有一个特性的对象对象/特性接口280可根据调入的各个语义集的结果而提供由语义注册表220处理操作的状态。例如,如果一个操作使得任何一套调入的语义集被违反,则语义注册表220将提供一个指示以说明操作是失败的。但是,如果一个操作并未使得任何一套调入的语义集被违反,则语义注册表220将提供一个指示以说明操作是成功的。对象/特性接口280向事务管理程序285提供对象和特性的变化,并且如果对象/特性接口280确定一个操作已失败,则它将提供一个指示以说明该操作不能处理管理程序285。对象/特性接口280还向对象/特性模型290提供了对象和特性。对象/特性接口280接口还能从对象/特性模型290中检索对象和特性,从而例如根据请求将这些对象和特性提供给一个基于UMA的应用程序225。
图4显示了对象/特性接口280用于启动一个对象语义的典型方法的流程图。在410中,对象/特性接口280打开与事务管理程序285的事务处理。对模型的各个变化都要打开一个事务处理,如果变化被发现是无效的,则它将被取消。在415中,对象/特性接口280与对象本身进行通信。所有的对象都获知它们的类型用以确定此对象的类型。在420中,对象/特性接口280从元模型210中以(例如)从上向下的顺序为一个对象获取完整的超类型路径。在425中,第一对象类型(最终超类型)被对象/特性接口280从元模型中获取。在430中,对象/特性接口280从对象语义注册表220中为对象类型获取语义列表。在435中,对象/特性接口280与语义注册表进行交流以确定列表中是否还有更多的语义。如果是,则对象/特性接口280将在455中获取并在460中启动下一个语义。在465中,对象/特性接口280确定语义是否失败。如果是,则在470中,事务处理将按照对象/特性接口280所发出的请求而被事务管理程序285重新运行(roll back)。但是,如果语义并未失败,则在435中,对象/特性接口280将再次确定列表中是否还有更多的语义。
如果列表中没有更多的语义,则在440中,对象/特性接口280将与元模型进行通信,并且确定父路径中是否还有更多的对象类型。如果确定为没有,则在450中,事务处理将被省略。如果在父路径中还有更多的对象类型,则在445中,下一个对象类型将被获取并且对象/特性接口280将再次在430中从对象语义注册表中为对象类型获取语义列表。
图5的流程图显示了对象/特性接口280用于启动一个特性语义的典型方法的流程图。在510中,对象/特性接口280打开与事务管理程序285的事务处理。在515中,对象/特性接口280与对象进行通信以确定对象的类型。在520中,对象/特性接口280从元模型210中以(例如)从上向下的顺序为各个对象获取完整的超类型路径。在525中,第一对象类型(最终超类型)被对象/特性接口280从元模型中获取。在527中,对象/特性接口280为对象和特性类型构筑一个对象/特性对。在530中,对象/特性接口280从特性语义注册表530中为对象/特性对类型获取语义列表。
在535中,对象/特性接口280确定列表中是否有更多的语义。如果是,则对象/特性接口280将在555中获取并在560中启动下一个语义。在565中,如果对象/特性接口280确定语义已经失败,则在570中,事务处理将被重新运行。但是,如果语义并未失败,对象/特性接口280将返回至535以再次确定列表中是否还有更多的语义。
如果列表中没有更多的语义,则在540中,对象/特性接口280将与元模型进行通信并确定父路径中是否还有更多的对象类型。如果没有,则在550中,事务处理将被省略。如果父路径中还有更多的对象类型,则在545中,下一个对象类型将被获取并且对象/特性接口280将再次在527中为对象和特性类型构筑一个对象特性对。
在本发明的一个典型实施例中,对象/特性模型290包括预先定义的对象和特性集。该预先定义的对象和特性集可以由例如UMA的开发者来提供以减少产品开发者的工作量。对象/特性模型290还从对象/特性接口280检索对象特性。从对象/特性接口接收到的对象和特性是以由开发者提供的元数据的外部定义为根据的。在对象/特性模型290中包含的是由例如开发者请求创建和修改的对象和特性。另外,对象/特性模型290通过对象/特性接口280将事务管理程序285的模型改变记录下来。
但是,在本发明的一个典型实施例中,对象/特性模型290中作为操作失败结果的对象和特性被从对象/特性模型290中删除。因此,在本发明的一个典型实施例中,由开发者提供的保留在对象/特性模型290之中的对象和特性是作为操作成功结果的对象和特性。这样,开发者就不需要直接访问并且也不能够直接改变对象/特性模型290。所以,对模型的改变就被建模引擎获知,并且一致性和有效状态也可在所有时间上得到保证。如果开发者已经直接访问基本数据结构,则不正确的修改将会在模型中产生无效的状态。
事务管理程序285将各个对象和特性置于它们被一个错误操作改变之前的状态。例如,当对象/特性接口280的操作失败时,事务管理程序285将被提供一个标志以表明操作已经失败。任何失败的操作都会被撤销或清除。事务管理程序285可以通过例如将对象/特性模型290的改变记录进日志文件295、从日志文件295中获取撤销数据、并根据事务处理中由对象/特性接口280所确定的操作成功和失败状态来执行撤销操作,从而完成上述工作。因此对象/特性模型290就被保持处于有效状态。在本发明的一个典型实施例中,事务管理程序285也可接收一个从基于UMA的应用程序225所发出的请求以撤销或重复一个操作。如果一个重复操作被请求执行,则事务管理程序285可以请求从日志文件295中获取重复信息并且按照已知的方式来执行重复操作。
事务处理可由例如开发者通过用一个基于UMA的应用程序225识别出各个事务的开始和结尾而被提供。事务处理包括一个或多个活动,每个活动都可改变例如基于UMA的应用程序225的对象/特性模型290。事务管理程序285能够通过例如建立一个起始位置而在事务日志文件295中识别出事务处理的开始。在本发明的一个典型实施例中,事务管理程序285将事务中各个改变对象/特性模型290的活动都作为一个模型变化而记录在事务日志文件295中。事务管理程序285还能够通过例如建立一个结束位置而在事务日志文件295中识别出事务处理的结尾。在本发明的一个典型实施例中,各个事务的起始和结束位置都被保存在一个位置上,通过对该位置进行搜索就可获取各个事务的所在位置以及它们在事务日志文件295中的相应模型变化记录。因此,就可在事务日志文件295中识别出一个或多个事务。这样,作为一个或多个事务处理结果的对象/特性模型290的净变化就可被确定。
在本发明的一个典型实施例中,UMA工作于一个访问建模问题域(例如数据控制语言语句(DML)和文件)中。对象/特性模型290可以包括例如多个对象、表A、表B,DML语句(例如从A、B中选取A.X+B.Y,其中,A为表A,A.X指的是表A中的第X列,B为表B,B.Y指的是表B中的第Y列)以及文件C(一个使用DML语句“从A、B中选取A.X+B.Y”的文件)。这些对象将被例如包含在对象/特性模型290之中。元数据210的语义230将包括例如说明对象/特性模型290的变化是如何影响各个DML语句的语义。例如,语义(1)可提供这样一个说明,即,对一个表格的删除将导致所有与该表格有关的内容都被删除,并且应对各个DML语句进行语法修正。语义(2)可提供这样一个说明,即,对象/特性模型290中的所有代表使用被修改或删除了的DML语句的文件的对象都被指定为正在接触的对象。一个正在接触的对象或特性被标记为经过逻辑修改,即使它并未受到实际修改。
向对象/特性接口280提供一个包含有破坏一个对象(如DELETETable A删除表A)的事务是一个分立的事件(PreDestruction)。因此,各个语义(例如,语义(1)和语义(2))都将被调用。所以,根据语义(1),对象的内容(从A、B中选取A.X+B.Y)被修改为从B中选取B.Y。另外,根据语义(2),含有文件C的对象被指定为正在接触的对象。这样,对象/特性模型290就被改变。当语义获得成功时,变化将不被重新运行。作为“删除表A”这个事务处理的结果,以下各个活动(1)删除表A、(2)含有“从A、B中选取A.X+B.Y”内容的对象被修改以及(3)含有文件C的对象被指定为正在接触一都被包含在事务日志文件295当中,作为模型变化记录。另外,事务和开头和结尾也在事务日志文件295中被指定。
在本发明的一个典型实施例中,UMA200还可包括一个内部服务单元以及一个外部服务接口。内部服务单元可以含有例如公开给开发者用以协助创建和控制一个模型并且用于解决开发者的问题域的服务或功能。在本发明的一个典型实施例中,内部服务可以包括附录1中所描述的那些服务或功能。
外部服务接口是一个允许外部服务与UMA200进行通信的接口。外部服务接口可以是例如一个连接和植入有一个附加应用程序接口的对象,它允许第三方模块扩展工具的建模能力,从而通过扩展建模环境和建模规则来增加功能(如可自动由用户定义的功能)。因此,开发者也可访问UMA200的内部服务之外的服务。外部服务可以是例如一个以由用户输入的全部姓名为基础的用于增强协作命名标准的模块。另外,当用户接口(如基于UMA的应用程序225)被和语义分离开之后,UMA200是可测量的。
图6显示了根据本发明用于构筑建模工具的方法的一个典型实施例。在610中,通过为开发者所提供的对象/特性定义一个第一类集以作为元数据,完成对一个对象/特性模型290构筑。在本发明的一个典型实施例中,对象/特性模型290可以包括一套预定的一个或多个对象和特性。对象为施加给它的特性提供存储机制。在本发明的一个典型实施例中,一个用于对象的接口类可以是(例如)UMEObjectI。特性可以被用作一个基本类,它需要编程人员再进行细分类。在本发明的一个典型实施例中,基本类可以提供不含数据存储的管理服务。在本发明的一个典型实施例中,开发者可以提供一个子类以说明用于创建一个访问程序所需的数据单元和方法。
在620中,元模型210是(例如)通过定义一个第二类集而被构筑成的。该第二类集被设计用来保存对特性、对象和语义的说明。例如,在本发明的一个典型实施例中,有两个语义接口类被指定。第一个语义接口类(例如UMEObjectSemanticI)是用于能够影响一个对象的创建或破坏的任何语义的接口。第二个语义接口类(例如UMEPropertySemanticI)则是用于能够影响一个特性的创建、破坏或修改的任何语义的接口。在本发明的一个典型实施例中,元模型210的表示的实现包括一个单元素对象集合,它公开了用于注册元数据和语义的静态方法。
建模规则(例如,语义230)可被结合进元模型210的语义注册表220中,以象在640中那样,作为一个预定语义集和/或是附加语义集,该附加语义集例如由开发者在启动时或者在启动之后的任何时间提供。为了将一个建模规则结合进元模型210以用于一个对象,开发者可对适当的调用(例如,用于对象建模规则的UMEObjectSemanticI以及用于特性建模规则的UMEPropertySemanticI)进行细分类。开发者还能够利用一种启动方法来对对象/特性模型290执行所需的操作和检查。一个数值将被返回以说明操作是否成功。例如,一个TRUE(真)返回值说明操作已经成功,而一个FALSE(假)返回值则说明该操作不能被成功地执行或者是模型正处于一种无效状态。访问点(例如,对象/特性模型修改点)也可被包含进元模型210以用于调用语义230。各个模型修改点(例如,CreateObject)都能够在适当的点上调用各个语义。如果从语义的启动中接收到表明有一个或多个语义不能成功完成的标志(例如,FALSE),则操作将退出。
在630中,类型代码被与第一和第二类集相关联起来。类型代码是一个独特的标识符,它指定了元数据所代表的类型。元模型中所规定的每个项目(对象和特性)都只有一个唯一的类型代码。在本发明的一个典型实施例中,UMA200含有一个变量类型TypeCode_t,它被声明用来保存类型代码。在640中,一个预定义的语义集被提供给元模型210的语义注册表220。
在650中,多个分立的事件(例如,如表1中所示)被识别出来。这些分立事件表示对象/特性模型290可能被修改的情况。在本发明的一个典型实施例中,各个分立事件都被分配了一个代表其自身的常量,而且声明了一个变量类型(例如,Event_t)用来保存事件常量。
在660中,提供对象/特性接口280。对象/特性接口280能够例如防止开发者直接访问对象/特性模型290,并且可以限制开发者修改对象/特性模型290时必须使用的代码路径数。例如,如果一个开发者想要破坏对象/特性模型290中的一个对象,则必须向对象/特性接口280发出一个请求,例如附录1中所列出的UMEObjectI:DestroyObject。
图7显示了对象/特性接口280执行DestroyObject(对象破坏)请求的一个典型实施例,如图7所示,对对象/特性模型290的访问受到控制着DestroyObject请求的对象/特性接口280的限制。例如,在710中,在接收到一个破坏对象的请求之后,对象/特性接口280将与事务管理程序285进行通信以打开一个事务处理进程(例如,DestroyObject功能)。在715中,对象/特性接口280与对象/特性模型290进行通信以找出被请求破坏的对象。在720中,对象/特性接口280将确定是否已找到这个对象。如果没有,则在725中,事务管理程序285将按照对象/特性接口280的请求重新运行事务处理,并且在730中,事务管理程序将向调用模块(例如,用户界面)返回一个故障代码。但是,在735中,如果该对象被找到,则对象/特性接口280将为事务管理程序285提供对象破坏信息,并且事务管理程序285会将对象破坏情况记录进事务处理日志295。在740中,对象/特性接口280在各个对象的所有特性上启动PreOwnerDestruetion语义。在745中,对象/特性接口280确定是否全部语义都已成功。如果没有,则在725中,事务管理程序285将按照对象/特性接口280的请求撤回事务处理,并且在730中,事务管理程序将向调用模块返回一个故障代码。
如果所有的PreOwnerDestruction语义都已成功,则在750中,对象/特性接口280将启动PreDestruction语义。在755中,对象/特性接口280确定是否全部PreDestruction语义都已成功。如果是,则对象将在760中被破坏,然后,在765中,对象/特性接口280与事务管理程序285进行通信以结束该事务处理,并且在770和730中,事务管理程序285将向调用模块返回一个成功代码。但是,如果PreDestruction语义失败,则在725中,事务管理程序285将按照对象/特性接口280的请求撤回事务处理,并且在730中,事务管理程序将向调用模块返回一个故障代码。
为了限制对象的构筑和破坏,例如,对象的构筑者或破坏者将受到保护以防止开发者直接启用或破坏对象。为了限制特性的创建、破坏及修改,例如,特性的数据组成将被做成私人性的。在本发明的一个典型实施例中,UMA200包括一个被称为访问程序的类,它含有一个接口类,例如,UMEAccessorI。访问程序接口类是一个对特性友好的类,而且正是通过访问程序才使数据成员获得访问。访问程序装有数据值以及指令(例如,“设定数值”或“删除特性”),并且被植入到特性当中。访问程序执行它们的活动并且返回一个说明活动成功或失败的标志。访问程序是通过要求特性提供一个访问程序而被形成的。这样就允许用特性来构筑一个能够控制特性的数据类型的访问程序。一个特性上的所有操作都是通过访问程序来执行的。因此,语义所需的任何代码都可被放置在所提供的访问程序基本类中。对访问程序进行细分的开发者只需简单地提供一个数据单元和方法就可对其执行读和写。方法是被提供到访问程序基本类上的,这样就允许将其与一个特性捆绑在一起。
如图6所示,在670中,提供一个事务管理程序285。该事务管理程序285管理着事务处理的活动,而且如果活动失败,则可使该活动被撤销或清除。通过在模型操纵的初始阶段启动一个事务处理,然后对各个语义的出错状态进行监视,事务管理程序285就可使对象/特性模型290保持在一个有效状态中。在本发明的一个典型实施例中,事务管理程序285在根据活动而实现修改之前记录下了对象/特性模型290的一个确切图像。如果活动已获成功,则各个变化就被允许保留。如果出现错误,则事务管理程序285将恢复旧的图像。事务管理程序285可以随着模型的变化而递增地保存图像。
作为一个例子,在一个用户将要创建一个对象并为其设定名称的单一事务处理中,当对象创建成功时,对象被创建的实事以及对该对象的控制被保存进事务处理日志295。如果用户随后将该对象的名称设定为“Customer”,则特性的创建也被记录下来,并且旧的数值(空数值)被保存进日志。如果用户随后又将名称设定为“Cust”,则旧的数值(“Customer”)也会被保存进日志。如果这一切全部成功,则会存在一个名为“Cust”的对象。但是,如果对象创建失败,则事务管理程序285将开始重新运行首先,将名称从“Cust”改回“Customer”;其次,将已存在的名称特性一起删除;最后,删除对象。此举可将对象/特性模型290恢复至失败的事务处理运行之前所处的状态。
在本发明的一个典型实施例中,作为一次活动结果的被改动的对象和特性通过对象/特性接口280被提供给对象/特性模型290。如果该活动所涉及到的语义出错,则对象/特性接口280将通知事务管理程序285以撤销该操作。结果,对象/特性模型290被恢复至作为失败操作结果的受改动的对象和特性被从对象/特性接口280提供给对象/特性模型290之前所处的状态。
图8的流程图显示了根据本发明用于确定作为事务处理结果的对象/特性模型290净变化的方法的一个典型实施例。在810中,事务管理程序285例如为作为事务处理结果的对象/特性模型290的净变化接收一个请求。该作为事务处理结果的对象/特性模型290的净变化指的是例如对象/特性模型290在事务处理结束时与开始事务处理之前的差异。在820中,事务管理程序285识别出与该事务有关的多个模型变化记录。在830中,事务管理程序285根据与该事务有关的多个模型变化记录中的每一个记录来确定对象/特性模型290的净变化。在本发明的一个典型实施例中,在840中,对象/特性模型290的净变化可通过显示在一显示器上而被提供给一个请求者,如基于UMA的应用程序225。事务管理程序285可以例如通过为事务的多个模型变化记录中的每一个,记录确定一个与对象交互作用的各模型变化记录中活动的净活动类型变化、以及确定一个与该对象相关的数据的净数据变化,从而确定对象/特性模型290的净变化。
活动的类型是例如一个用于识别一个事务的活动的数字代码。各模型变化记录中活动的净活动类型变化是由事务管理程序285的一个功能(即,活动一类型功能)所确定的活动类型名称,它与各个模型变化记录的活动相关联,并且被保存在与该事务相关的delta位置中。在本发明的一个典型实施例中,delta位置中含有对象/特性模型290的净模型变化,该净模型变化是事务的各个模型变化记录中每个记录的事务管理程序285都完成检查所得到的事务处理结果。
与对象相关的数据指的是保存在delta位置中的数据,它可包括对象本身、执行与对象交互作用的各模型变化记录的活动之前对象的图像(pre-image)、执行与对象交互作用的各模型变化记录的活动之后对象的图像(post-image)、以及对象的特性。对象的净数据变化指的是由事务管理程序285的一个功能(例如,数据功能)所确定的数据,它通过各模型变化记录的活动而与有关的对象相关联起来,并且被保存在与该事务有关的delta位置中。在本发明的一个典型实施例中,delta位置中含有对象/特性模型290的净模型变化,该净模型变化是事务的各个模型变化记录中每个记录的事务管理程序285都完成检查所得到的事务处理结果。务管理程序285将前进至940。但是,如果有与该对象有关的先前活动被记录在delta位置中,则在930中,事务管理程序285将在(例如)该delta位置中识别出此先前活动的先前活动类型。先前活动类型指的是与先前活动有关的活动类型。先前活动则指的是与同一对象有关并且在执行各个模型变化记录的活动之前受到事务管理程序285检查的模型变化记录的活动。
在940中,事务管理程序285根据当前活动类型、先前活动是否被记录入delta位置以及先前活动类型而执行一个活动类型功能。该活动类型功能可以包括以下内容中的至少一项,即为各模型变化记录确定一个新的活动类型,在delta位置中记录新的活动类型,从delta位置中删除先前活动类型,在delta位置中保留先前活动类型,在delta位置中记录当前活动类型以及在delta位置中记录活动无效。
delta位置可以是例如一个其中保存有模型变化信息的对象或文件,它可用于例如一个事务或多个事务。在事务管理程序285检查各事务的每个模型变化记录时,delta位置的内容可以发生变化。在事务管理程序285完成对所有的模型变化的检查之后,delta位置的内容可导致对象/特性模型290发生作为事务处理结果的净变化。在本发明的一个典型实施例中,事务管理程序285对事务的各个模型变化记录重复执行910至940。在本发明的一个典型实施例中,当事务的所有模型变化记录完成之后,delta位置的内容就包含了作为事务处理结果的活动类型变化。
图10显示了根据本发明用于从事务的模型变化记录中确定净操作类型变化的规则的一个示范集。在图10中,列A、行b、c和d含有示范性的当前活动类型(添加、更新、删除),它们可以分别对应于与一个对象交互作用的各个模型变化记录的活动。行a、列C、D和E含有先前活动类型,它们可以分别对应于记录在与该对象交互作用的delta位置中的先前活动。行a、列B含有先前活动是否存在于delta位置之中。行b、列B、C、D和E;行c、列B、C、D和E;行d、列B、C、D和E包括了一个可由事务管理程序285执行的活动类型功能的示范集。
在对作为上述示范性DELETE表A事务处理结果的净活动变化的确定过程中,事务管理程序285检查“DELETE Table A”事务的第一模型变化记录(删除表A)以识别当前活动类型(如添加、更新或删除之一)。因为活动是删除A,所以当前活动类型就是删除。事务管理程序285确定是否一个与对象(表A)相匹配的先前活动被记录在与“DELETE Table A”事务相关的delta位置中。由于delta位置当前是空的,所以先前活动并不存在于delta位置中。因此,参考图10,事务管理程序285将执行一个活动类型功能(列B、行d),从而为该活动确定一个新的类型“删除”,并将“DELETE Table A”记录入delta位置。
这个功能是根据作为一个删除(列A、行d)类型的当前活动类型以及先前活动未被记录入delta位置(列B、行a)中而完成的。事务管理程序285对“DELETE Table A”事务中剩余的两个模型变化记录重复进行分析。当事务管理程序285对最后一个模型变化记录完成分析之后,delta位置的内容中将包含对象/特性模型290的净活动类型变化以作为“DELETE Table A”事务的处理结果。
图11的流程图显示了根据本发明用于从模型变化记录中确定作为事务处理结果的净数据变化的方法的一个典型实施例。在图11中,事务管理程序285为与对象有关的数据确定净数据变化。在1110中,事务管理程序285为与对象交互作用的各个模型变化记录的活动确定一个当前活动类型。
在1120中,事务管理程序285确定出是否有先前活动被记录在与该事务有关的delta位置中。如果没有,则事务管理程序285将前进至1150。如果有先前活动被记录在delta位置中,则在1130中,事务管理程序285将在delta位置中识别出此先前活动的先前活动类型。如果有先前活动被记录在与该事务相关的delta位置中,则在1140中,事务管理程序285还将在与对象相关联的delta位置中识别出先前活动所产生的数据。
在1150中,事务管理程序285根据delta位置中的当前活动类型、先前活动是否被记录在delta位置中、先前活动类型以及与对象有关的数据来执行一个数据功能。数据功能可包含以下内容中的至少一项,即从delta位置中删除与对象有关的数据、在delta位置中记录该活动无效、在delta位置中替换与对象有关的数据、以及在delta位置中记录与对象相对应的新的数据。
新的数据可以包括(例如)pre-image(当前受到检查的模型变化记录活动执行之前的对象图像)和post-image(当前受到检查的模型变化记录活动执行之后的对象图像)中的至少一个。在本发明的一个典型实施例中,事务管理程序285对事务的各个模型变化记录重复执行1110至1150。在本发明的一个典型实施例中,当事务的全部模型变化记录完成之后,delta位置的内容中将包含净数据变化以作为事务处理的结果。
图12显示了根据本发明用于从事务的模型变化记录中确定净数据变化的规则的一个示范集。在图12中,列V、行w、x和y包含了示范性的当前活动类型(添加、更新、删除),它们可以分别对应于与一个对象交互作用的各模型变化记录的活动。行v、列X、Y和Z包含有先前活动的类型,它们分别被与记录在和对象交互作用的delta位置中的先前活动相关联。行v、列W包含有与各模型变化记录的对象有关的先前活动是否存在于delta位置中。行w、列W、X、Y和Z;行x、列W、X、Y和Z;行y、列W、X、Y和Z包含了可由事务管理程序285执行的数据功能的一个示范集。
在对作为上述示范性“DELETE Table A”事务处理结果的净活动变化的确定过程中,事务管理程序285检查“DELETE Table A”事务的第一模型变化记录(删除表A)以识别当前活动类型(如添加、更新或删除之一)。因为活动是删除A,所以当前活动类型就是删除。事务管理程序285确定是否一个与对象(表A)交互作用的先前活动被记录在与“DELETE Table A”事务相关的delta位置中。由于delta位置中并不存在与表A有关的先前活动已被确定,因此,参考图12,事务管理程序285将执行一个数据类型功能(列W、行y),从而在delta位置中为该活动记录一个“DELETE Table A”的pre-image。
这个功能是根据当前活动类型是一个删除(列V、行y)类型以及先前活动未被记录入delta位置(列W、行v)中而完成的。事务管理程序对“DELETE Table A”事务中剩余的两个模型变化记录重复进行分析。当事务管理程序285对最后一个模型变化记录完成分析之后,delta位置的内容中将包含对象/特性模型290的净数据变化以作为“DELETE Table A”事务的处理结果。
上述实施例是本发明的说明性范例,不应将这些特定实施例看作是对本发明的限制。本领域的技术人员可对其做出各种变换和修改,但它们都不会脱离由所附权利要求所定义的本发明的精神或范围。
权利要求
1.一种方法,包括以下步骤接收一个对作为事务结果的模型净变化的请求;对与事务相关的多个模型变化记录进行识别;根据与事务相关的多个模型变化记录中的各个记录来确定模型的净变化。
2.如权利要求1所述的方法,还包括以下步骤显示模型的净变化。
3.如权利要求1所述的方法,其中上述对与事务相关的多个模型变化记录进行识别的步骤包括在事务日志上找出与事务的开头相对应的起始位置;在事务日志上找出与事务的结尾相对应的结束位置;以及对起始位置与结束位置之间的多个模型变化记录之中的每个记录进行识别。
4.如权利要求3所述的方法,其中上述为事务的多个模型变化记录中的每个记录确定模型净变化的步骤包括为与对象有关的各模型变化记录的活动确定净活动类型变化;和为与该对象有关的数据确定净数据变化。
5.如权利要求4所述的方法,其中上述为事务的多个模型变化记录中的每一个记录的活动确定净活动类型变化的步骤包括为与对象有关的各模型变化记录的活动识别出一个当前活动类型;确定与该对象有关的先前活动是否被记录在与该事务有关的delta位置之中,如果是的话,在delta位置中为先前活动识别出先前活动类型;以及根据当前活动类型、先前活动是否被记录在delta位置中以及先前活动类型来执行一个活动类型功能。
6.如权利要求5所述的方法,其中上述活动类型功能包括以下内容中的至少一项为各模型变化记录的活动确定一个新的活动类型,在delta位置中记录新的活动类型,从delta位置中删除先前活动类型,在delta位置中保留先前活动类型,在delta位置中记录当前活动类型以及在delta位置中记录活动无效。
7.如权利要求4所述的方法,其中上述为事务的多个模型变化记录中的每一个记录中与该对象有关的数据确定净数据变化的步骤包括为与对象交互作用的各模型变化记录的活动识别当前活动类型;确定与该对象有关的先前活动是否被记录在与该事务有关的delta位置之中,如果是的话,在delta位置中为先前活动识别出先前活动类型;在与对象有关的delta位置中识别出先前活动所产生的数据;以及根据当前活动类型、先前活动是否被记录在delta位置中、先前活动类型以及delta位置中与对象有关的数据来执行数据功能。
8.如权利要求7所述的方法,其中上述数据功能包括以下内容中的至少一项从delta位置中删除与对象有关的数据,在delta位置中记录该活动无效,在delta位置中替换与对象有关的数据,以及在delta位置中记录与对象相对应的新的数据。
9.如权利要求8所述的方法,其中上述记录在delta位置中的新的数据至少包括活动执行之前对象的pre-image和活动执行之后对象的post-image之中的一个。
全文摘要
本发明提供了一种方法以用来确定作为事务结果的模型的净变化。该方法包括接收一个对于作为事务结果的模型净变化的请求的步骤(图中,250)。该方法还包括对与事务相关的多个模型变化记录进行识别的步骤。该方法还包括根据与事务相关的多个模型变化记录中的各个记录来确定并显示模型的净变化的步骤(图中,225)。
文档编号G06F17/30GK1323416SQ99812225
公开日2001年11月21日 申请日期1999年10月15日 优先权日1998年10月16日
发明者塔德A·德弗勒, 马克A·鲁索, 托马斯R·比尔博维尔 申请人:联合想象计算机公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1