用于构筑建模工具的装置和方法

文档序号:6419197阅读:378来源:国知局

专利名称::用于构筑建模工具的装置和方法相关申请的交叉引用本申请要求1998年10月16日提交的题为“建模工具的系统和方法”的美国专利申请No.60/104,682的申请日的权益。本申请涉及共同待审的题为“用于模型效果分析的方法”的美国专利申请No.___________(代理人卷号#22074661-25532),在此将其全部引入作为参考。本申请涉及共同待审的题为“确定两个或多个模型之间的区别的方法”的美国专利申请No._________(代理人卷号#22074661-25531),在此将其全部引入作为参考。本申请涉及共同待审的题为“可扩展宏语言的方法和系统”的美国专利申请No.___________(代理人卷号#22074661-25533),在此将其全部引入作为参考。本申请涉及共同待审的题为“用于通过SQL输入对分级数据存储进行访问的方法及装置”的美国专利申请No._______(代理人卷号#22074661-25534),在此将其全部引入作为参考。对文件附录的参考本申请含有一个附录,它用于对被引入作为本发明参考的实施例的服务和函数进行举例说明。本专利申请所揭示的一部分内容含有与版权保护有关的材料。版权的所有者不反对在任何一个专利说明中被引用,就像在美国专利商标局的专利文件或记录中一样,但是却要求保留所有的版权。因此,需要有这样一种用于构筑建模工具的方法和装置,它能够使用一个统一的框架以构筑用来支持产生多个完全不同的建模方法论。这种用于构筑建模工具的新装置和方法将减少完成一个新的建模工具所需的努力和时间。本发明的另一个方面提供一种用于构筑建模工具的装置。该装置包括(例如)元模型,它含有一个语义注册表以及一元数据管理程序;一对象/特性接口;以及一对象/特性厂家注册表。对象/特性厂家注册表与元模型和对象/特性接口相连。该装置还含有一个与对象/特性接口相连的对象/特性模型。本发明的另一个方面提供了一种用于构筑建模工具的方法。该方法包括通过定义一个第一类集以构筑一个对象/特性模型以及通过定义一个第二类集以构筑一个元模型的步骤。该方法还包括将一类型代码与第一和第二类集关联起来、并且向元模型提供一个预定的语义集的步骤。该方法还包括用被调用至多个分立事件环境中的语义集当中的至少一个语义来对多个分立事件进行识别的步骤。该方法还包括提供一对象/特性接口以限制开发者对上述对象/特性模型的访问。图1显示了传统计算机系统的功能框图。图2显示了本发明一个实施例的功能框图。图3显示了本发明所述元模型的一个实施例的数据模型。图4的流程图显示了本发明的用于启动一个对象语义的方法的典型实施例。图5的流程图显示了本发明的用于启动一个特性语义的方法的典型实施例。图6的流程图显示了本发明的用于构筑一个建模工具的方法的典型实施例。图7的流程图显示了本发明的执行一个示范功能的典型实施例。图1显示了一个本发明工作于其中的传统计算机系统101。在一个典型实施例中,本发明在(例如)一个由SUNMICROSYSTEMSTM制造的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的产品。元模型的外部定义是(例如)对在问题域中寻找的对象类型以及与各对象相关的特性的一系列说明。这些说明可通过调用一套由应用开发公开的功能来提供,并且可通过功能参数来传递进描述信息。典型的问题域可包括数据建模,如数据库列表、数栏以及索引;过程建模,如活动和箭头;访问建模,如数据控制语言语句和文件;以及单元建模,如接口、应用以及从属关系。在本发明的一个典型实施例中,基于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正在创建一个对象PreDestruction正在破坏一个对象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重新运行(rollback)。但是,如果语义并未失败,则在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将各个对象和特性置于它们被一个错误操作改变之前的状态。例如,事务管理程序285由对象/特性接口280提供说明操作已经失败的标志。任何失败的操作都会被撤销或清除。事务管理程序285可以通过(例如)将对象/特性模型290的改变记录进日志文件295、从日志文件295中获取撤销数据、并根据事务处理中由对象/特性接口280所确定的操作成功和失败状态来执行撤销操作,从而完成上述工作。因此对象/特性模型290就被保持处于有效状态。在本发明的一个典型实施例中,事务管理程序285也可接收一个从基于UMA的应用程序225发出的请求以撤销或重复一个操作。如果一个重复操作被请求执行,则事务管理程序285可以请求从日志文件295中获取重复信息并且按照已知的方式来执行重复操作。在本发明的一个典型实施例中,UMA200还可包括一个内部服务单元以及一个外部服务接口。内部服务单元可以含有(例如)公开给开发者用以协助创建和控制一个模型并且用于解决开发者的问题域的服务或功能。在本发明的一个典型实施例中,上述服务可以包括附录1中所描述的那些服务或功能。外部服务接口是一个允许外部服务与UMA200进行通信的接口。外部服务接口可以是(例如)一个连接和植入有一个附加应用程序接口的对象,它允许第三方模块扩展工具的建模能力,从而通过扩充建模环境和建模规则以增加功能(如可自动由用户定义的功能)。因此,开发者也可访问UMA200的内部服务之外的服务。外部服务可以是(例如)一个以由用户输入的全部姓名为基础的用于增强协作命名标准的模块。另外,当用户接口(如基于UMA的应用程序225)被和语义分离开之后,UMA200是可测量的。图6显示了根据所述用于构筑建模工具的方法的一个典型实施例。在610中,通过为开发者所提供的对象/特性定义一个第一类集以作为元数据,完成对一个对象/特性模型290的构筑。在本发明的一个典型实施例中,对象/特性模型290可以包括一套预定义的一个或多个对象和特性。对象为施加给它的特性提供存储机制。在本发明的一个典型实施例中,一个用于对象的接口类可以是(例如)UMEObjectI。特性可以实现为一个基本类,它需要编程人员再进行细分类。在本发明的一个典型实施例中,基本类可以提供不含数据存储的管理服务。在本发明的一个典型实施例中,开发者可以提供一个子类以说明用于创建一个访问程序所需的数据单元和方法。在620中,元模型210是(例如)通过定义一个第二类集而被构筑成的。该第二类集被设计用来保存对特性、对象和语义的说明。例如,在本发明的一个典型实施例中,有两个语义接口类被指定。第一个语义接口类(例如UMEObjectSemanticI)是用于能够影响一个对象的创建或破坏的任何语义的接口。第二个语义接口类(例如UMEPropertySemanticI)则是用于能够影响一个特性的创建、破坏或修改的任何语义的接口。在本发明的一个典型实施例中,元模型210的代表应用包括一个单元素对象集合,它公开了用于注册元数据和语义的静态方法。建模规则(例如,语义230)可被结合进元模型210的语义注册表中,以象在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中所列出的UMEObjectIDestroyObject。图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在各个对象的所有特性上启动PreOwnerDestruction语义。在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之前所处的状态。上述实施例是本发明的说明性举例,不应该认为本发明被限制于这些特殊的实施例之内。熟练人员可以对其进行各种变换和修改,但是这些变换和修改都不会脱离由附加权利要求所定义的本发明的精神或范围。附录1.1.1无约束函数MetamodelReadInteface说明在单个元模型实体中检索读取接口。特征标记extern″C″UMEMetaModelReadI*MetamodelReadInterface(void)参数名称类型说明<return>RUMA元模型的读取接口。MetamodelWriteInteface说明在单个元模型实体中检索写接口。特征标记extern″C″UMEMetaModelReadI*MetamodelWriteInterface(void)参数名称类型说明<return>RUMA元模型的写接口。MetamodelUseInteface说明在单个元模型实体中检索使用接口。特征标记extern″C″UMEMetaModelReadI*MetamodelUseInterface(void)参数名称类型说明<return>RUMA元模型的使用接口。1.1.2UMEReferenceCountedI用于参考计数对象的接口。风个其它的接口扩展该接口。从概念上说,参考计数对象在计数达到零时应当是不占内存的。在实际当中取决于对象的实现,并且其可以简单地返回至储存区。AddReference说明对参考计数递增特征标记voidUMEReferenceCountedIAddReference(void)RemoveReference说明对参考计数递减特征标记voidUMEReferenceCountedIRemoveReference(void)1.1.3UMEPublisherI发布/用户对的发布方Subscribe说明在通知对象列表中增加/删除用户特征标记Return_tUMEPublisherISubscribe(UMESubscriberI*Subscriber,boolActivate)参数名称类型说明<return>R用于调用的错误码SubscriberI要求通知事件的用户ActivateI增加用户为真,删除用户为假1.1.4UMESubscriberI发布/用户对的用户方Notify说明发布方通知事件的用户时使用的复查。特征标记voidUMESubscriberINotify(UMEPublisher*Publisher,UMEEventI*Event)参数名称类型说明PublisherI发出事件通知的一方EventI事件通知1.1.5UMEEventI扩展UMEReferenceCountedI在发布/用户对之间发送的事件。用户在想要保持对事件的访问时,必须在其Notify方法中将参考计数递增;发布方将在完成通知后消除其参考计数。1.1.6UMEValueI为数据类型封装提供基本接口。数据类型封装在数据值需要被传送至元模型时使用(例如validvalid列表)。1.1.7UMEMetamodelReadI用于查询元模型的接口。尽管UMA2.0用静态方法以C++单条程序的形式实现了元模型,这种接口的存在使其它部分在可查询的接口上标准化。BuildVersion说明检索制作编号。特征标记LWTStringUMEMetamodelReadIBuildVersion(void)参数名称类型说明<return>RDLL的版本串ConstructSignature说明为特定的用户构造特定的特征标记。特征标记Return_tUMEMetamodelReadIConstructSignature(UMEObjectI*Object,constSignatureGeneratorId_t&Generator,LWTString&Signature)参数名称类型说明<return>R用于用于调用的错误代码ObjectI想要特征标记的对象GeneratorI要采用的特定发生器SignaturesO特征标记ConstructSignatures说明为特定的对象构造所有特征标记。返回的阵列将始终具有相同的元素数,并且有已注册的特征标记发生器。如果特征标记发生器不支持给定的对象类型,则其参数项将是空串。特征标记Return_tUMEMetamodelReadIConstructSignatures(UMEObjectI*Object,LWTOrderedvectorT<LWTString>&Signatures)参数名称类型说明<return>R用于调用的错误代码ObjectI想要特征标记的对象SignaturesO特征标记GetClipFlags说明检索与对象/特性对相关的剪切板标志。特征标记Return_tUMEMetamodelReadIGetClipFlags(TypeCode_tObject,TypeCode_tProperty,ClipFlags_t&ClipFlags)参数名称类型说明<return>R如果注册则为真ObjectI对象的类型码PropertyI特性的类型码CilpFlagsO剪切标志GetDatatype说明检索特性数据类型的类型码。特征标记Return_tUMEMetamodelReadIGetDatatype(TypeCode_tCode,TypeCode_t&DataType)参数名称类型说明<return>R用于调用的错误码CodeI特性的类型码DatatypeO数据类型的类型码GetDefinition说明检索储存在项目的元模型中的定义。特征标记Return_tUMEMetamodelReadIGetDatatype(TypeCode_tCode,LWTString&Definition)参数名称类型说明<return>R用于调用的错误码CodeI项目的类型码DefinitionO定义说明检索被注册的用户的列表,以在元模型入口的破坏后接收通知。特征标记Return_tUMEMetamodelReadIGetEntrySubscribers(TypeCode_tCode,LWTOrderedVectorT<TypeCode_t>&Subscribers)参数名称类型说明<return>R用于调用的错误码CodeI入口的类型码SubscribersO目前注册的用户GetFlags说明检索项目上的元模型标记。NB这些标志不应当与由UMEObjectIFiags()或UMEPropertyIFlags()返回的项目标志相混淆。特征标记Return_tUMEMetamodelReadIGetFlags(TypeCode_tCode,MetamodelFlags_t&Flags)参数名称类型说明<return>R用于调用的错误码CodeI项目的类型码FlagsO元模型标志GetInheritableProperties说明检索特定对象类型可以继承的特性的类型码。特征标记Return_tUMEMetamodelReadIGetlnheritableProperties(TypeCode_tCode,LWTOrderedVectorT<TypeCode_t>&Properties)参数名称类型说明<return>R用于调用的错误码CodeI对象的类型码PropertiesO可继承的特性类型码的阵列GetItemSize说明按字节检索项目的大小。特征标记Return_tUMEMetamodelReadIGetItemSize(TypeCode_tCode,size_t&Size)参数名称类型说明<return>R用于调用的错误码CodeI项目的类型码SizeO由项目制造者定义的项目大小GetObjectTypes说明检索为特定产品定义的对象的类型码。该结果通过各种标志字段过滤。特征标记Return_tUMEMetamodelReadIGetObiectTypes(MetamodelFlags_tFlagsOn,MetamodeIFIags_tFlagsOff,constProductId_t&Product,MetamodelFlags_tProductFlagsOn,MetamodelFlags_tProductFlagsoff,LWTOrderedVectorT<TypeCode_t>&Objects)参数名称类型说明<return>R用于调用的错误码FlagsOnI必须为要包括的对象设置的标志FlagsOffI不必为要包括的对象设置的标志ProductI用于产品的标识符。根据大小作为参考传递。ProductFlagsOnI产品专用标志,对要包括的对象必须为OnProductFlagsOffI产品专用标志,对要包括的对象不必为OnObjectsO与标准一致的类型码GetOwneeTypes说明检索特定对象可拥有的类型码特征标记Return_tUMEMetamodelReadIGetOwneeTypes(TypeCode_Code,LWTOrderedVectorT<TypeCode_t>&Ownees)参数名称类型说明<return>R用于调用的错误码CodeI对象的类型码OneesO类型码拥有者的阵列GetOwnerTypes说明检索可作为特定对象拥有者的对象的类型码特征标记Return_tUMEMetamodelReadIGetOwnerTypes(TypeCode_tCode,LWTOrderedVectorT<TypeCode_t>&Owners)参数名称类型说明<return>R用于调用的错误码CodeI对象的类型码OwnersO类型码拥有者的阵列说明检索为特定产品定义的特性的类型码。该结果由各种标志字段过滤。特征标记Return_tUMEMetamodelReadIGePropertyTypes(MetamodelFlags_tFlagsOn,MetamodelFlags_tFlagsOff,ProductId_t&Product,MetamodelFlags_tProductFlagsOn,MetamodelFlags_tProductFlagsOff,LWTOrderedVectorT<TypeCode_t>&Properties)参数名称类型说明<return>R用于调用的错误码FlagsOnI必须为要包括的特性设置的标志FlagsOffI不必为要包括的特性设置的标志ProductI用于产品的标识符。根据大小作为参考传递。ProductFlagsOnI产品专用标志,对要包括的对象必须为OnProductFlagsOffI产品专用标志,对要包括的对象不必为OnObjectsO与标准一致的类型码GetPropertvUsages说明检索可以在特定对象上设置的特性类型列表。特征标记Return_tUMEMetamodelReadIGetPropertyUsages(TypeCode_tCode,LWTOrderedVectorT<TypeCode_t>&Usages)参数名称类型说明<return>R用于调用的错误码CodeI对象的类型码UsagesO特性类型码的阵列GetSubtypes说明检索特定对象的子类型的类型码。特征标记Return_tUMEMetamodelReadIGetSubtypes(TypeCode_tCode.LWTOrderedVectorTypeCode_t>&SubTypes)参数名称类型说明<return>R用于调用的错误码CodeI对象的类型码SubtypesO子类型类型码的阵列GetSupertype说明检索特定对象的紧接超类型的类型码。特征标记Return_tUMEMetamodelReadIGetSupertype(TypeCode_tCode,TypeCode_t&Supertype)参数名称类型说明<return>R用于调用的错误码CodeI对象的类型码SupertypeO超类型类型码IsInheritable说明确定是否特定的特性对于特定的对象是可继承的。特征标记booleanUMEMetamodelReadIIsInheritable(TypeCodc_tObject,Typecode_tProperty)参数名称类型说明<return>R如果可继承则为真ObjectI对象的类型码PropertyI特性的类型码IsRegistered说明确定类型码是否用元模型注册。特征标记booleanUMEMetamodelReadIIsRegistered(TypeCode_tCode)参数名称类型说明<return>R如果注册为真CodeI对于项目的类型码IsUserDefined说明确定是否特定的类型码由用户或Add-In码注册,即其是UDP还是UDO?特征标记booleanUMEMetamodelReadIIsUserDefined(TypeCode_tCode)参数名称类型说明<return>R如果用户定义则为真CodeI项目的类型码Lookup说明提供类型码和元模型入口名称之间的转换。所提供或读取的名称将通过术语指定来解释。特征标记VariantATypeCode_tUMEMetamodelReadILookup(constLWTString&Name,NomenclatureId_t&Nomenclature)VariantBLWTStringUMEMetamodelReadILookup(TypeCode_tCode,NomenciatureId_t&Nomenclature)参数名称类型说明<return>RVariantA与名称相关的类型码VariantB与类型码相关的名称NameI元模型入口的名称CodeI元模型入口的类型码NomenclatureI对于术语的标识符。根据大小作为参考传递M2Type说明确定元模型入口的哪种类型与类型码相应。返回值将是跟在UMEMetamodelReadI常数后面的值常数说明kIsUnknown对元模型是求知的类型码kIsObjecImplementation代表对象实现类型的类型码kIsObject代表对象的类型码klsPropertyDatatype代表特性数据类型的类型码kIsProperty代表特性的类型码kIsCategory代表目录的类型码特征标记longUMEMetamodelReadIM2Type(TypeCode_tCode)const参数名称类型说明<return>R表示类型码的M2类型的常数CodeI被检查的类型码ResolveId说明将对象转换为对该对象的指针特征标记VariantAUMEObjectI*UMEMetamodelReadIResolveId(Id_tId)VariantBUMEObjectIUMEMetamodelReadIResolveId(ObjectId_tId)参数名称类型说明<return>R指向具有特定ID的对象的指针,如果未找到则为NULLIdI对象的ID1.1.8UMEMetamodelWriteI写接口一般支持两种对各注册方法的变量。一种是用原始的C++类型,诸如constchar*和TypeCodet*。第二种变量使用封装类如constLWTstring&和constLWTOrderedVectorT<TypeCode_t>&。前一种类型构造得更快,但更危险,并适宜于由MMGen.exe产生的代码。后一种由于需要构造封装和外壳程序类,所以较慢,但也更安全,并且其适用于“手写编码”。用于OOPPCbbrrajjooteepeeccepgtttroIytRmDyYkSequenceImportant√特性中的值序列是有效的并且必须保持kpreFetchType√作为PreFetch特性开始kCalculated√特性值由语义算出并且不应当被设置kPersistenceUnit√该对象是一致的单元kWorkspace√对象是空间kStrict√特性可包含只有在有效值列表中找到的值DefaultSemanticPackage说明检索在元模型中内建的语义包。该包用于保持那些对建模引擎必须的语义,以及任何用户想要添加的语义。特征标记UMESemanticPackageI&UMESemanticPackageIDefaultSemanticPackage(void)const参数名称类型说明<return>R内置在元模型中的语义包DefaultSemanticPackage说明在元模型中注册一个新的目录。任何提供的成员类型码应当已经用元模型注册。在以后可以用UMEMetamodelWriteIRegisterCategoryMembers增加新的成员。传递的数据被复制进元模型中;源存储器可以在该调用返回后被释放。特征标记VariantAReturn_tUMEMetamodelWriteIRegisterCategory(TypeCode_tCode,constChar_t*NameBuffer,constChar_t*DescriptionBuffer,TypeCode_t*MembersBuffer,MetamodeIFlags_tFlags)VariantBReturn_tUMEMetamodelWriteIRegisterCategory(TypeCode_tCode,constLWTString&Name,constLWTString&Description,constLWTOrderedVectorT<TypeCode_t>&Members,MetamodelFlags_tFlags)参数名称类型说明<return>R用于调用的错误码CodeI目录的类型码NameI目录的内部名NameBufferI用于目录的具有内部名的以零终止的缓冲器。所有元模型入口必须具有名称;这里的零指针将防止注册。DescriptionI目录的说明DescriptionBufferI具有目录说明的以零终止的缓冲器。如果没有说明,则传递零指针MembersI成员类型码的列表MembersBufferI成员类型码的列表,其必须用入口设置TypeCodesUndefined来终止。FlagsI元模型标志(见上面的说明)RegisterCategoryMembers说明从已有的目录中增加或减少成员。成员类型码应当已经用元模型被注册。传递的数据被复制入元模型中;源存储器可以在该调用返回后被释放。特征标记VariantAReturn_tUMEMetamodelWriteIRegisterCategoryMembers(TypeCode_tCode,TypeCode_t*MembersBuffer,boolAdd)VariantBReturn_tUMEMetamodelwriteIRegisterCategoryMembers(TypeCode_tCode,constLWTOrderedVectorT<TypeCodet>&Members,boolAdd)参数名称类型说明<return>R用于调用的错误码CodeI目录的类型码MembersI成员类型码的列表MembersBufferI成员类型码的列表,其必须用入口设置TypeCodesUndefined来终止。AddI对于从列表中加入成员为真,去掉成员为假RegisterNomenclature说明用元模型注册术语。传递的数据被复制入元模型中;源存储器可以在该调用返回后被释放。特征标记ReturntUMEMetamodelwriteIRegisterNomenclature(constNomenclatureId_t&Nomenclature,constLWTString&Name)参数名称类型说明<return>R用于调用的错误码NomenclatureI术语的IDNameI术语的名称RegisterNomenclatureEntry说明将一个入口注册为一个术语。传递的数据被复制入元模型中;源存储器可以在该调用返回后被释放。特征标记Return_tUMEMetamodelwriteIRegisterNomenclatureName(constNomenclatureId_t&Nomenclature,TypeCode_tCode,constLWTString&Name)参数名称类型说明<return>R用于调用的错误码NomenclatureI术语的IDCodeI元模型项目的类型码NameI与类型码相关的名称RegisterNomenclatureNames说明允许对术语的名称进行块注册。缓冲器应当包含交替的类型码和以零终止的串。缓冲器必须以TypeCodesUndefined的值来终止。传递的数据被复制入元模型中;源存储器可以在该调用返回后被释放。特征标记Retum_tUMEMetamodelwriteIRegisterNomenclatureNames(constNomenclatureId_t&Nomenclature,char*Buffer)参数名称类型说明<return>R用于调用的错误码NomenclatureI术语的IDBufferI类型码/零终止串对的缓冲器RegisterObiect说明在元模型中注册一个新的对象。传递的数据被复制入元模型中;源存储器可以在该调用返回后被释放。特征标记VariantAReturn_tUMEMetamodelwriteIRegisterObject(TypeCode_tCode,constChar_t*NameBuffer,constChar_t*DescriptionBuffer,TypeCode_tImplementation,TypeCode_tSuperType,TypeCode_t*OwnersBuffer.MetamodelFlags_tFlags,TypeCode_t*UDOCode=NULL)VariantBReturn_tUMEMetamodelwriteIRegisterObject(TypeCode_tCode,constLWTString&Name,constLWTString&Description,TypeCode_tImplementation,TypeCode_tSupertype,constLWTOrderedVectorT<TypeCode_t>&Owners,MetamodelFlags_tFlags,TypeCode_t*UDOCode=NULL)参数名称类型说明<return>R用于调用的错误码CodeI对象的类型码NameI对象的内部名NameBufferI用于对象的具有内部名的以零终止的缓冲器。所有元模型入口必须具有名称;这里的零指针将防止注册。DescriptionI对象的说明DescriptionBufferI具有对象说明的以零终止的缓冲器。如果没有说明,则传递零指针ImplementationI将使用其对象的对象实现的类型码SupertypeI对象的超类型OwnersI用于此对象的有效拥有者的列表。所有对象(除了UOEnvironment外)必须具有至少一个有效拥有者类型。OwnersBufferI用于此对象的有效拥有者的列表。所有对象(除了UOEnvironment外)必须具有至少一个有效拥有者类型。该缓冲器必须以设置为TypeCodesUndefined的入口终止。FlagsI元模型标志(见上面的说明)UDOCodeO如果代码是TypeCodesUndefined的,则用分配给UDO的类型码组装。RegisterObiectImplementation说明为对象注册一个新的实现。元模型不负责清除厂家—这使这些对象分配在堆外或静态地分配在数据段中。相反,如果提供了用户,元模型将在对特性数据类型的入口被破坏时,通知该用户;用户可以在那时采取适当的清除措施。所有其它信息被复制到元模型中被当此方法返回时被释放。特征标记VariantAReturn_tUMEMetamodelwriteIRegisterObjectImplementation(TypeCode_tCode,constChar_t*NameBuffer,constChar_t*DescriptionBuffer,UMEObjectFactoryI*Factory,MetamodelFlags_tFlags,UMESubscriberI*Subscriber=NULL)VariantBReturn_tUMEMetamodelwriteIRegisterObjectImplementation(TypeCode_tCode,constLWTstring&Name,constLWString&Description,UMEObjectFactoryI*Factory,MetamodelFlags_tFlags,UMESubseriberI*Subscriber=NULL)参数名称类型说明<return>R用于调用的错误码CodeI对象实现的类型码NameI对象实现的内部名NameBufferI用于对象的具有内部名的以零终止的缓冲器。所有元模型入口必须具有名称;这里的零指针将防止注册。DescriptionI对象的说明DescriptionBufferI具有对象说明的以零终止的缓冲器。如果没有说明,则传递零指针FactoryI能够构造对象实现的实例的厂家FlagsI元模型标志(见上面的说明)SubscriberI当此元模型入口被破坏时发出通知的用户RegisterProperty说明在元模型中注册一个新的特性。对于应用软件定义的特性,应当指定类型码。为了注册一个UDP,规定对于代码的TypeCodesUndefined类型码;所分配的类型码将放在UDPCode中。传递的数据被复制入元模型中;源存储器可以在该调用返回后被释放。特征标记VariantAReturn_tUMEMetamodelWriteIRegisterProperty(TypeCode_tCode,constChar_t*NameBuffer,constChar_t*DescriptionBuffer,TypeCode_tDatatype,MetamodelFlags_Flags,constchar*DefaultBuffer,constchar*ValidValuesBuffer,TypeCode_t*UDPCode=NULL)VariantBReturn_tUMEMetamodelWriteIRegisterObjectImplementation(TypeCode_tCode,constLWTString&Name,constLWTString&Description,TypeCode_tDatatype,MetamodelFlags_tFlags,UMEVaIueI*DefaultNULL,constLWTOrderedVectorT<UMEValueI*>*ValidValues=NULL,TypeCode_t*UDPCode=NULL)参数名称类型说明<return>R用于调用的错误码TypeCodesUndefined以注册一UDP。CodeI特性的类型码NameI特性的内部名NameBufferI用于特性的具有内部名的以零终止的缓冲器。所有元模型入口必须具有名称;这里的零指针将防止注册DescriptionI特性的说明DescriptionBufferI具有特性说明的以零终止的缓冲器。如果没有说明,则传递零指针DatatypeI由该特性使用的数据的类型码FlagsI元模型标志(见上面的说明)DefaultI用于该特性的缺省值DefaultBufferI数据类型的厂家能够解释以确定缺省值的缓冲器ValidValuesI对该特性的有效值的列表ValidValuesBufferI数据类型的厂家能够解释以确定有效值的缓冲器UDOCodeO如果代码是TypeCodesUndefined的,则用分配给UDO的类型码组装。RegisterPropertyDatatype说明为具有元模型的特性寄存注册一个新的数据类型。元模型不负责清除厂家—这使这些对象分配在堆外或静态地分配在数据段中。相反,如果提供了用户,元模型将在对特性数据类型的入口被破坏时,通知该用户;用户可以在那时采取适当的清除措施。所有其它信息被复制到元模型中被当此方法返回时被释放。特征标记VariantAReturn_tUMEMetamodelWriteIRegisterPropertyDatatype(TypeCode_tCode,constChar_t*NameBuffer,constChar_t*Buffer,UMEPropertyFactoryI*Factory,MetamodeIFlags_tFlags,UMESubscriberI_Subscriber=NULL)VariantBReturn_tUMEMetamodelWriteIRegisterPropertyDatatype(TypeCode_tCodeconstLWTString&Name,constLWTString&Description,UMEPropertyFactoryI*Factory,MetamoddFlags_tFlags,UMESubscriberI*Subscriber=NULL)参数名称类型说明<return>R用于调用的错误码ObjectI对象NameI数据类型的内部名NameBufferI用于对象的具有内部名的以零终止的缓冲器。所有元模型入口必须具有名称;这里的零指针将防止注册。DescriptionI数据类型的说明DescriptionBufferI具有数据类型说明的以零终止的缓冲器。如无说明,则传递零指针FactoryI能够构造数据类型实例的厂家FlagsI元模型标志(见上面的说明)SubscriberI当此元模型入口被破坏时发出通知的用户RegisterPropertyUsage说明注册或取消注册指定对象和特性之间的关联。该信息将复制到元模型中,从而所有的缓冲器能够在该方法返回时被释放。用Add等于真来连续调用此方法将增补信息。特征标记VariantAReturn_tUMEMetamodelwriteIRegisterPropertyUsage(TypeCode_tObject,TypeCode_t*PropertiesBuffer,boolAdd)VariantBReturn_tUMEMetamodelwriteIRegisterPropertyUsage(TypeCode_tObject,constLWTOrderedVectorT<TypeCode_T>&Properties,boolAdd)参数名称类型说明<return>R用于调用的错误码ObjectI对象PropertiesI与对象类型相关的特性列表PropertiesBufferI与对象类型相关的特性列表缓冲器必须以具有TypeCodesUndefined值的入口来终止AddI增加关联为真,去除关联为假RegisterPropertyUsages说明允许对象/特性关联的块注册。该信息将复制到元模型中,从而所有的缓冲器能够在该方法返回时被释放。该方法只能增加关联。下面这组语法将说明缓冲器的格式Buffer-EntryList终止符EntryList-入口EntryList-EntryList入口Entry-对象PropertyList终止符PropertyList-特性PropertyList-PropertyList特性Terminator-TypeCodesUndefinedObject-任何对象的类型码Property-任何对象的类型码特征标记Return_tUMEMetamodelwriteIRegisterPropertyUsages(TypeCode_t*Buffer)参数名称类型说明<return>R用于调用的错误码BufferI类型码的缓冲器RegisterSignatureGenerator说明将特征标记注册入模型中。特征标记Return_tUMEMetamodelwriteIRegisterSignatureGenerator(constSignatureGeneratorId_t&Id,UMESignatureGeneratorI*Generator,constLWTString&Name)参数名称类型说明<return>R用于调用的错误码IdI特征标记发生器的IDGeneratorI发生器NameI用于显示目的的发生器名称1.1.9UMEMetamodelUseI这是用于除读和写元模型外的元模型操作的接口CreateAccessor说明建立用于特性类型的访问器。这使得在没有特性存在的情况下构造访问器。这种方法采用由特性厂家公开的CreateAccessor方法。特征标记UMEAccessorI*UMEMetamodelUseICreateAccessor(TypeCode_tCode)参数名称类型说明<return>R用于调用的错误码CodeI需要访问器的类型码CreateObject说明构造新的对象。如果指定没有拥有的对象,则该对象作为环境中的子对象(如果合法的话)。特征标记Result_tUMEMetamodelReadICreateObiect(TypeCode_tCode,UMEObjectI*Owner,UMEObjectI*&Object,UMEConstructionContext*Reserved=NULL)参数名称类型说明<return>R用于调用的错误码CodeI需要访问器的类型码OwnerI拥有对象ObjectO创建的对象,如果未创建则为NULLReserved保留以备将来使用GetInstances说明检索在UMA中存在的指定对象类型的实例。该列表不过滤为给定的一致性单元;该过滤可以用UMEObjectIOwner来很快地实现。1注1UMEObjectIOwner()被优化以检索一致性单元。参见关于这一问题的UMA制作书的说明。!编程注意由于性能的原因,由该方法中的VariantA返回的指针可以是对由元模型使用的实际数据储存区的指针。用户必须注意const修改符,在任何情况下都不要修改数据。如果用户想改变数据,则必须使用VariantB。特征标记VariantAReturn_tUMEMetamodelUseIGetInstances(TypeCode_tCode,constLWTOrderedVectorT<UMEObjectI*>*&Instances)VariantBReturn=tUMEMetamodelUseIGetInstances(TypeCode_tCode,LWTOrderedVectorT<.UMEObjectI*>&Instances)参数名称类型说明<return>R用于调用的错误码CodeI对象的类型码InstancesO实例的列表1.1.10UMESemanticPackageI语义包是逻辑上相关的语义组。例如,“Oracle”语义。存在建立在元模型中的缺省包,以处理建模引擎功能所要求的语义。根据需要可以构造其它包并将其注册为模型元素。Identifier说明检索包的识别符特征标记SemanticPackageId_tUMESemanticPackageIIdentifier(void)const参数名称类型说明<return>R包的idRegisterObjectSemantic说明在包中加入对象语义。特征标记Return_tUMESemanticPackageIRegisterObjectSemantic(TypeCode_tCode,UMEObjectSemanticI&Semantic,boolInternal)参数名称类型说明<return>R用于调用的错误码CodeI施加语义的对象的类型码SemanticI语义InternalI该语义在内部调用(真)还是通过API调用(假)RegisterPropertySemantic说明在包中加入特性语义。特征标记Return_tUMESemanticPackageIRegisterPropertySemantic(TypeCode_tObject,TypeCode_tProperty,UMEObjectSemanticI&Semantic,boolInternal)参数名称类型说明<return>R用于调用的错误码ObjectI施加语义的对象的类型码PropertyI施加语义的特性的类型码SemanticI语义InternalI该语义在内部调用(真)还是通过API调用(假)1.1.11UMEObjectFactoryI用于在建立对象实现的实例中所用的所有厂家类的接口。这些实现再由元模型更名为所要的对象类型。ClassSize说明检索此将由CreateObject()分配的对象。这是由UMEMetamodelReadIGetItemSize()方法使用的。特征标记size_tUMEObjectFactoryIClassSize(TypeCode_tCode)参数名称类型说明<return>R对象的大小CodeI项目的类型码CreatObject建立对象的实例。特征标记UMEObjectI*UMEObjectFactoryICreateObject(TypeCode_tCode,UMEObjectI*Owner,UMEFactoryContext*Reserved=NULL)参数名称类型说明<return>R新创建的对象CodeI要创建的对象的类型码OwnerI将拥有该项目的对象Reserved保存以备将来使用DestroyObject说明由元模型调用来取消为对象分配的存储器。该方法与CreateObject()结合,允许厂家实现客户存储器分配方案,和留下标记。特征标记voidUMEObjectFactoryIDestroyObject(UMEObjectI*Object)参数名称类型说明ItemI要破坏的对象1.1.12UMEpropertyFactoryI用于在建立特性数据类型实例时所用的所有厂家类的接口。这些实现再由元模型更名为所要的对象类型。ClassSize说明检索将由CreateProperty()分配的特性。这是由UMEMetamodelReadIGetltemSize()方法使用的。特征标记size_tUMEPropertyFactoryIClassSize(TypeCode_tCode)参数名称类型说明<return>R类的大小CodeI特性的类型码CreatProperty说明创建特性的实例。特征标记UMEPropertyI*UMEPropertyFactoryICreateProperty(TypeCode_tCode,UMEObjectI*Owner,UMEFactoryContextReserved=NULL)参数名称类型说明<return>R新创建的特性CodeI要创建的特性的类型码OwnerI将拥有特性的对象Reserved保留以备将来使用CreatAccessor说明创建适合于特性的访问器。特征标记UMEAccessorI*UMEPropertyFactoryICreateAccessor(TypeCode_tCode)参数名称类型说明<return>R访问器CodeI需要访问器的类型码DestroyAccessor说明由元模型调用以取消存储器对访问器的分配。特征标记voidUMEPropertyFactoryIDestroyAccessor(UMEAccessor*Object)参数名称类型说明ItemI要破坏的访问程序DestroyProperty说明由元模型调用以取消对一特性的存储器分配。该方法与CreateProperty()相结合,使厂家实现客户存储器分配方案,和留下标记等。特征标记voidUMEPropertyFactoryIDestroyProperty(UMEPropertyI*Object)参数名称类型说明ItemI要破坏的特性1.1.13UMEObjectI用于UMA模型内所有对象的接口FindProperty说明找到关于对象的所需特性。特征标记UMEPropertyI*UMEObjectIFindProperty(TypeCode_tType,BooleanConstructIfNull=False,BooleanConstructIfPreFetch=False)参数名称类型说明<return>R特性,如果未找到或构造则为NULLTypeI所需特性的类型码ConstructNullI如果设为真,而未发现特性,则将被构造和返回ConstructIfPreFetchI如果设为真,而未发现特性,并且其将在元模型中标为PreFetch特性,则将被构造和返回Flags说明检索在对象上设置的标志。该标志由各位进行OR运算来表示。NB这些标志不应当与元模型的关于项目类型的标志相混淆。特征标记ItemFlags_tUMEObjectIFlags(void)const参数名称类型说明<return>R项目上的位标志GetProperty说明检索对象特定特性的值。特征标记Return_tUMEObjectIGetProperty(TypeCode_t类型,UMEAccessori&Accessor)参数名称类型说明<return>R用于调用的错误码TypeI所需特性的类型码AcessorI/O用于检索值的访问器Id说明从对象中检索局部ID。特征标记Id_tUMEObjectIId(void)const参数名称类型说明<return>R对象的局部IDIsEqual说明确定是否两个对象相等同。特征标记BooleanUMEobjectIIsEqual(UMEObjectI&Object,UMEObjectEqualityStrategyI*ObjectStrategy=NULL,UMEpropertyEqualityStrategyI*PropertyStrategy=NULL)参数名称类型说明<return>R如果对象测试相等同则为真ObiectI比较的另一方ObjectStrategyI用于对象的包住比较算法的策略对象。如果未提供,则使用默认算法PropertyStrategyI用于特性的包住比较算法的策略对象。如果未提供,则使用默认算法IsPropertyEqual说明确定是否两个特性相等。根据缺省,如果它们属于相同的对象类型、具有相同的类型码和具有相同的值,则特性相同。注意在缺省策略中向量特性是不被执行分类的。特征标记Return_tUMEObjecIIsPropertyEqual(UMEObjectI&Object,TypeCode_tType,UMEPropertyEqualityStrategyI*Strategy=NULL)参数名称类型说明<return>R如果特性测试相等同则为真ObjectI拥有其它特性的对象TypeI特性的类型码PropertyStrategyI用于特性的包住比较算法的策略对象。如果未提供,则使用默认算法IsType说明确定是否对象属于特定的类型。特征标记bodleanUMEObjectIIs类型(TypeCode_tType)const参数名称类型说明<return>R如果项目为特定类型则为真TypeI测试的类型码NullProperty说明从对象中删除特性。特征标记Return_tUMEObjectINullProperty(TypeCode_tType,UMEAccessor&Accessor)参数名称类型说明<return>R用于调用的错误码TypeI所需特性的类型码AccessorI用于破坏特性的访问器Owner说明找到所需类型的拥有者。该方法可以遍历拥有关系的多个层以找到正确的对象。特征标记UMEObjectI*UMEObjectIsType(TypeCode_tType=TypeCodesUndefined)const参数名称类型说明<return>R拥有指定类型的对象,如果没找到则为NULLTypeI所需拥有者的类型码。如果使用缺省值,则返回紧接的拥有者Setproperty说明设定对于对象的指定特性的值特征标记Return_tUMEObjectISetProperty(TypeCode_tType.UMEAccessorI&Accessor)参数名称类型说明<return>R拥有指定类型的对象,如果没找到则为NULLTypeI所需拥有者的类型码。如果使用缺省值,则返回紧接的拥有者AccessorI用于设置值的访问器Touch说明允许语义代码作为逻辑地改变的对象的标志,以使对象在事务日志中体现。接触一个对象,即使其特性未变化,也将其标为修改过的。该接触可以通过调用参数设为False的方法来消除。特征标记voidUMEObjectITouch(BooleanOn)参数名称类型说明OnI真=修改过,假=未修改TouchProperty说明允许语义代码作为逻辑地改变的对象的标志,以使对象在事务日志中体现。接触一个特性,即使其特性未变化,也将其标为修改过的。该接触可以通过调用参数设为False的方法来消除。特征标记voidUMEobjectITouch(BooleanOn)参数名称类型说明<return>R用于调用的错误码TypeI特性的类型码OnI真=修改过,假=未修改TxMgr说明检索监视对象的事务管理程序特征标记UMETxMgr*UMEObjectITxMgr(void)const参数名称类型说明<return>R事务管理程序,如果未激活则为NULLType说明检索对象的类型码特征标记TypeCode_tUMEObjectIType(void)const参数名称类型说明<return>R项目的类型码VisitProperty说明找到所要的特性并调用对其的访问程序。特征标记Return_tUMEObjectIVisitProperty(TypeCode_tType,UMEVisitorl&Visitor)参数名称类型说明<return>R用于调用的错误码TypeI所需特性的类型码VisitorI要使用的访问者程序1.1.14UMEPropertyICreateAccessor说明构造用于特性的访问程序。此举重复了在特性厂家中找到的功能(其通过UMEMetamodelUseI公开),并且为该性能提供。由于这一原因,最好其不是简单地实现为对UMEMetamodelUseICreateAccessor的调用。特征标记UMEAccessorI*UMEPropertyICreateAccessor(void)参数名称类型说明<return>R访问程序Flags说明检索在项目上设置的标志。这些标志由位的一起或运算来表示。NB这些标志不应当与项目类型的元模型标志相混淆。特征标记ItemFlags_tUMEPropertyIFlags(void)const参数名称类型说明<return>R关于该特性的位标志IsType说明确定该项目是否特定的类型。特征标记booleanUMEPropertyIIsType(TypeCode_tType)const参数名称类型说明<return>R如果特性是特定类型的,则为真TypeI测试的类型码Type说明检索项目的类型码。特征标记TypeCode_tUMEPropertyI类型(void)const参数名称类型说明<return>R特性的类型码1.1.15UMEAccessorI访问程序控制对特性的访问,设置值、得到值、以及破坏特性。它们保证事务管理程序和语义机制被正确地管理。UMEAccessorI定义了下面的动作常数。当用于SetProperty调用时,动作常数确定访问程序将要做什么。常数说明kReplace用访问程序中的值代替特性中的值kAppend将访问程序中的值增补到特性的值中。对于标量特性,这与kReplace相同。KDelete从特性的值中删除访问器中的值KOverwriteFlags改变关于该特性的标志以与访问器中的标志匹配KForceRefresh根据缺省,如果新值与旧值匹配,则访问程序将不会去修改特性中的值。如果该动作码被设置,则将强行进行修改ActionCodes说明检索当前设置的关于访问程序的动作代码。特征标记unsignedlongUMEAccessorIActionCodes(void)const参数名称类型说明<return>R当前动作码Flags说明检索在访问程序上设置的动作码。特征标记ItemFIags_tUMEAccessorIFlags(void)const参数名称类型说明<return>R当前标志GetPropertyVaIue说明检索指定特性的值。如果可以对特性加以参考的话,该方法使用户绕过在UMEObjectIGetProperty中必需的特性查找。特征标记Return_tUMEAccessorIGetpropertyValue(UMEObjectI*Object,UMEPropertyI*Property)参数名称类型说明<return>R当前标志ObjectI对拥有特性的对象的参考PropertyI对特性的参考NullPropertyValue说明逻辑删除指定的特性。2如果可以对特性加以参考的话,该方法使用户绕过在UMEObjectINullProperty中必需的特性查找。注2有些特性实际上不根据指令来删除。相反是设置一个空标志。特征标记Return_tUMEAccessorINullPropertyValue(UMEObjectI*Object,UMEPropertyI*Property)参数名称类型说明<return>R用于调用的错误码ObjectI对拥有特性的对象的参考PropertyI对特性的参考SetActionCode说明指示访问程序在SetProperty调用时采取什么动作。代码可以是上述动作常数在位上的或运算。特征标记voidUMEAccessorISetActionCode(unsignedlongCode)参数名称类型说明FlagsI关于特性所要的标志SetFlags说明设置关于特性所要的标志。这用于与kOverwriteFlags动作代码结合使用来设置关于特性的新标志。注意调用该方法将对特性没有影响,除非设置了kOverwriteFlags动作代码。特征标记voidUMEAccessorISetFlags(ItemFlags_tFlags)参数名称类型说明FlagsI关于特性所要的标志SetPropertyValue说明设置指定特性的值。如果可以对特性加以参考的话,该方法使用户绕过在UMEObjectISetProperty中必需的特性查找。特征标记Return_tUMEAccessorISetPropertyValue(UMEObjectI*Object,UMEPropertyI*Property)参数名称类型说明<return>R用于调用的错误码ObjectI对拥有特性的对象的参考PropertyI对特性的参考SetRaw控制访问程序在原始代码在操作还是在加工代码中操作。在原始代码的方式下,语义不起动。在加工方式下,语义被起动。如果访问程序是在工作的,该方法将不做任何事情,即在修改特性之间。!编程警告在使用原始访问程序时要非常小心。当这么做时,用户绕过为维护模型完整而设计的机制时。UMA制作书包含一些用户可能想采用的例子。如果有问题的话,就不要去做。特征标记boolUMEAccessorISetRaw(boolOn)参数名称类型说明<return>R访问程序的旧状态真=原始,假=加工OnI访问程序所要的状态真=原始,假=加工1.1.16UMESCaIarACCessorTI扩展UMEACCessorI用于标量访问程序的模板化的接口。SetValue说明将值设置到访问程序中。特征标记voidUMEScaIarAccessorTI<I>SetValue(constT&Value)参数名称类型说明valueI设置在访问程序中的值Value说明检索访问程序中的值特征标记TUMEScalarAccessorTI<I>Value(void)const参数名称类型说明<return>R在访问程序中的值1.1.17UMEVectorAccessorTI扩展UMEAccessorI用于向量访问的模板接口。向量访问程序是任何包含标量组的程序(例如阵列,列表,散列组)。它们不支持非标量值的集(例如散列词典)向量访问程序支持提供对它们的值的内部迭代因子。Clear说明从访问程序中消除所有的值。特征标记voidUMEVectorAccessorTI<r>Clear(void)Contains说明确定如果指定的值是否在访问程序中。特征标记boolUMEVectorAccessorTI<I>Contains(constT&Value)const参数名称类型说明<return>R在访问程序中的值Count说明确定在访问程序中的项目数特征标记unsignedlongUMEVectorAccessorTI<T>Count(void)const参数名称类型说明<return>R在访问程序中的项目数目GetNextValue说明前置内部迭代因子并检索下一值。特征标记boolUMEVectorAccessorTI<T>GetNextValue(T&Value)参数名称类型说明<return>R如果有另外的值则为真,如果不再有则为假ValueO值ResetIterator说明重设内部迭代因子。特征标记voidUMEVectorAccessorTI<T>ResetIterator(void)SetValue说明向访问程序加入一个值或多个值。特征标记VariantAvoidUMEVeetorAccessorTI<I>SetValue(constT&Value)VariantBvoidUMEVectorAccessorTI<I>SetValue(constLWTOrderedVectorT<T>&Values)参数名称类型说明ValueI增补给访问程序的单个值ValueI增补给访问程序的一组值1.1.18UMEObjectSemanticI为所有对象语义定义接口。对象语义事件由一系列位标志识别。UMEObjectSemanticI定义了如下事件的ID常数能否退出说明kPostCreation否在由用户创建后立即起动kPreDestruction是在对象被破坏之前立即起动kPreTypeCodeChange是在子类型迁移之前立即起动kPostTypeCodeChange是在子类型迁移之后立即起动kManageCache否在对象创建后由来自恒久存储装置的负载或事务处理管理程序立即起动Fire说明调用语义特征标记Return_tUMEObjectSemanticIFirc(SemanticEvent_tEvent,UMEObjectI&Object,UMEObjectSemanticContext*Reserved=NULL)参数参数名称类型说明<return>R用于调用的错误码EventI被触发的语义事件ObjectI对象被影响Reserved保留以备将来使用Interests说明检索语义处理的语义事件。这用于增强特性。该方法仅在用元模型注册语义后被调用一次。被语义处理的事件不能在运行时改变。特征标记SemanticEvent_tUMEObjectSemanticInterests(void)const参数名称类型说明<return>R用于指示处理的语义事件的标志1.1.19UMEPropertySemanticI定义了所有特性语义的接口。特性语义事件由一系列位标志识别。UMEPropertySemanticI定义了下面的事件的ID常数能否退出说明kPreEdit是在特性值被改变之前立即起动kPostEdit是在特性值被改变之后立即起动kPreDestruction是在特性被破坏之前立即起动kPreFetch否对于在元模型中被标志为预取类型并且kPreFetch实例标志有效的特性,在读取特性值之前立即起动kPostClip否特性刚被剪切kPreOwnerDestruction否破坏作为拥有者的对象Fire说明调用语义。特征标记Return_tUMEPropertySemanticIFire(SemanticEvent_tEvent,UMEObjectI&Object,UMEpropertyI&Property,UMEPropertySemanticContext*Reserved=NULL)参数名称类型说明<return>R用于调用的错误码EventI被触发的语义事件ObjectI被影响的对象PropertyI被影响的特性Reserved保留以备将来使用Interests说明检索语义所处理的语义事件。这用于性能增强。该方法仅在用元模型注册语义后被调用一次。被语义处理的事件不能在运行时改变。特征标记SemanticEvent_tUMEPropertySemanticInterests(void)const参数名称类型说明<return>R用于指示处理的语义事件的标志1.1.20UMETxCommandI事务命令用于指定一组要在当前事务的结尾发生的动作。例如,语义机制不允许一个作为语义起动的主题的特性在事件中间被破坏。为了这个目的,要在所有语义具有完成的机会之前从内存中去掉该特性。在该环境中破坏一特性的结果导致在事务管理程序中对破坏指令进行排队。在所有的语义起动后,将破坏该特性。Do说明执行命令。特征标记boolUMETxCommandIDO(void)参数名称类型说明<return>R如果成功执行命令即为真1.1.21UMETxMgrI用于管理事务的接口。AdoptCommand说明将一条指令放入管理程序的队列中,以在事务结束时执行。该命令必须分配到堆上,并且其破坏的责任传递给事务管理程序。特征标记Result_tUMETXMgrIAdoptComrnand(UMETxCornmandI*Command)参数名称类型说明<return>R用于调用的错误码commaneI命令对象排队Begin说明开始一项事务处理。特征标记VariantAResult_tUMETxMgrIBegin(UMETxIdI*&Id,booleanNotify=false,UMETxDataI*Data,boolAutoDestruct=false)VariantBResult_tUMETxMgrIBegin(UMETxIdI*&Id,UMESubscriberI*Subscriber)参数名称类型说明<return>R用于调用的错误码IdO接收分配给新事务的事务IDNotifyI指示是否事务管理程序的用户应在此事务关闭前被通知DataI编程者定义的与事务一同存储的数据AutoDestructI指示该事务在关闭后是否能被撤销SubscriberI非零值使得对事务管理程序进行一次登记CurrentTxId说明检索当前事务的ID特征标记constUMETxIdI*UMETxMgrICurrenTxId(void)参数名称类型说明<return>R当前事务的IDEnd说明结束事务并造成其内部事件的提交特征标记Result_tUMETxMgrIEnd(UMETxIdI*Id)参数名称类型说明<return>R用于调用的错误码IdI标识要结束的事务Fail说明使一个事务失败并使其内部的事件重新开始。特征标记Result_tUMETxMgrIFail(UMETxIdI*Id)参数名称类型说明<return>R用于调用的错误码IdI标识要失败的事务GetTxData说明检索与指定的事务所带的事务数据。特征标记Return_tUMETxMgrIGetTxData(UMETxIdI*Id,UMETxData*&Data)参数名称类型说明<return>R用于调用的错误码IdI事务IDDataO接收事务数据GetOutTxList说明检索最外层(用户)事务的列表特征标记Return_tUMETxMgrIGetOuterTxList(LwTOrderedVectorT<UMETxIdI*>&Transactions)const参数名称类型说明<return>R用于调用的错误码TransactionsO外层事务的列表GetTxId说明检索被命名的事务的事务ID。特征标记Return_tUMETxMgrIGetTxId(constLWTString&名称,UMETxIdI*&Id)const参数名称类型说明<return>R用于调用的错误码NameI事务的名称IdO事务的IDGetTxName说明检索事务的名称。特征标记Return_tUMETxMgrIGetTxName(UMETxIdI*Id,LWTString&Name)const参数名称类型说明<return>R用于调用的错误码IdI事务的IDNameO事务的名称IsLogging说明确定事务管理程序当前是否可联机。特征标记boolUMETxMgrIIsLogging(void)const参数名称类型说明<return>R如果联机则为真IsOk说明确定事务管理程序是否在良好的状态。特征标记boolUMETxMgrIIsOk(void)const参数名称类型说明<return>R如果Ok则为真IsTxOpen说明确定是否事务在当前开放。特征标记boolUMETxMgrIIsTxOpen(void)const参数名称类型说明<return>R如果事务开放则为真NextTxId说明检索下一事务的ID特征标记boolUMETxIdI*UMETxMgrINextTxId(void)参数名称类型说明<return>R下一事务的IDPause说明使事务管理程序暂停联机特征标记Result_tUMETxMgrIPause(void)参数名称类型说明<return>R用于调用的错误码PreviousTxId说明检索前一事务的ID。特征标记UMETxIdI*UMETxMgrIPreviousTxId(void)参数名称类型说明<return>R前一事务的IDResume说明使事务管理程序恢复联机。特征标记Result_tUMETxMgrIResume(void)参数名称类型说明<return>R用于调用的错误码SetTxName说明为一项事务指定一个用户可读的名称。特征标记Return_tUMETxMgrISetTxName(UMETxIdI*Id,constLWTString&Name)参数名称类型说明<return>R用于调用的错误码IdI事务的IDNameI设置给该事务的名称Redo说明使事务管理程序重新处理特定的事务。特征标记Result_tUMETxMgrIRedo(UMETxIdI*Id)参数名称类型说明<return>R用于调用的错误码IdI识别要重新处理的事务Reset说明使事务管理程序刷新所有的事务并返回其初始状态。特征标记Result_tUMETxMgrIReset(void)参数名称类型说明<return>R用于调用的错误码Undo说明使事务管理程序取消指定的事务。特征标记Result_tUMETxMgrIUndo(UMETxIdI*Id)参数名称类型说明<return>R用于调用的错误码IdI识别要取消的事务1.1.22UMEVisitorIVisit说明调用访问者程序去操作指定项目。特征标记VariantAReturn_tUMEVisitorIVisit(UMEObjectI*Object)VariantBReturn_tUMEVisitorIVisit(UMEPropertyI*Property)参数名称类型说明<return>R用于调用的错误码ObjectI要访问的对象PropertyI要访问的特性1.1.23UMEPropertyIteratorI用于在由对象拥有的特性中迭代。就象对所有UMA迭代因子那样,其使用“移动然后读取”的隐意一用户必须在读下一个值之前增量。对此迭代因子支持过滤程序和分类。Count说明返回将被迭代的特性号。注意,如果使用过滤器,迭代因子将必须遍历特性表必须确定实际计数。特征标记longUMEUMEPropertyIteratorICount(void)const参数名称类型说明<return>R将被迭代的项目数Reset说明重新初始化迭代因子。特征标记voidUMEUMEPropertyIteratorIReset(boolRecalculate)参数名称类型说明RecalculateI如果为真,将重新执行分类和过滤(如果有的话)。如果为假,则使旧的过滤和分类保持有效。SetFilter说明设置分类程序用于迭代因子。一旦迭代开始就改变分类程序将使得在迭代因子上执行复位。特征标记voidUMEUMEpropertyIteratorISetFilter(UMEFilterTI<UMEPropertyI*>*Filter)参数名称类型说明FilterI在迭代时将要使用的过滤器SetSorter说明设置在迭代因子上将要使用的分类程序。一旦迭代开始就改变分类程序将使得在迭代因子上执行复位。特征标记voidUMEUMEpropertyIteratorISetSorter(UMESorterTI<UMEPropertyI*>*Sorter)参数名称类型说明SorterI当迭代时要被使用的分类程序Value说明在当前迭代因子位置检索值。如果迭代因子是在外壳程序开始之前,则结果是未定义的。特征标记UMEPropertyI*UMEUMEPropertyIteratorIValue(void)const参数名称类型说明<return>R迭代因子的当前值Operator++说明递增迭代因子。特征标记boolUMEUMEPropertyIteratorIoperator++(void)参数名称类型说明<return>R如果迭代成功则为真,如果不再有入口则为假1.1.24UMEFilterTI这是用于由UMA模块中各种迭代因子所使用的模板化的过滤器的接口Test说明测试项目以看看是否其应当纳入迭代中。特征标记boolUMEFilterTI<I>Test(T&Item)参数名称类型说明<return>R如果该项目应当被纳入则为真,否则为假ItemI被测试的项目1.1.25UMESorterTI这是用于UMA模块中各迭代因子使用的模板化分类程序的接口。Sort说明将项目缓冲器分类为想要的顺序。特征标记boolUMESorterTI<I>Sort(T*Buffer,longCount)参数名称类型说明BufferI要被分类的项目的缓冲器CountI缓冲器中项目的数目1.1.26UMESignatureGeneratorI特征标记发生程序在概念上与访问者程序相似,它们将用于操作对象的算法封装。在它们的情况下,它们提取特性标记用于该对象。特征标记是唯一地识别模型中对象的串。多个特征标记的发生程序可以用元模型注册,以提供用于对对象进行匹配的不同算法。特征标记发生程序必须将其发生的值的等级进行广告。特征标记的等级指示其唯一性的范围。等级是通过下面表中的常数指示的。对于每个等级,提供一个例子指示用于数据库表的特征标记。常数说明kUniversal该特征标记是在时间和空间中唯一的。一个例子是串表达GUIDCB5BDC81-93Cl-11cf-8F20_00805F2CD064kInstallation该特征标记是在时间上唯一的,但其唯一性限制于模型的特定库中。例如一个表示为ModelMart3.0id的串。12323123kSession该特征标记在内存是唯一的,但是在当前环节结束后就不是唯一的了。例如表示为UMAlocalid的串。298kPersistenceUnit该特征标记是在内存的永久性单元中是唯一的,例如将类型码、项目名称、模型名称、拥有者名称和表名称连接的串。43.ProjectI.OracleModel.tdeffler.CustomerkWorkspace在存储器工作空间上特征标记是唯一的。例如将类型码、项目名称和表名称连接的串。43tdefflerCustomerGetSignature说明为对象构造一特征标记。如果对象类型是不受支持的,则将返回空串。特征标记voidUMESignatureGeneratorIGetSignature(UMEObjectI*Object,LWTString&Signature)const参数名称类型说明ObjectI被产生特征标记的对象SignatureO特征标记Id说明检索id。特征标记SignatureGeneratorId_tUMESignatureGeneratorIId(void)const参数名称类型说明<return>RidSignatureLevel说明将表示所产生特征标记类型的常数返回。特征标记longUMESignatureGeneratorISignatureLevel(void)const参数名称类型说明<return>R特征标记等级权利要求1.一种用于构筑建模工具的装置,包括元模型,包含有语义注册表以及元数据管理程序;对象/特性接口;对象/特性厂家注册表,它与上述元模型和对象/特性接口相连;以及与上述对象/特性接口相连的对象/特性模型。2.如权利要求1所述的装置,还包括事务管理程序,与上述对象/特性相连,用于撤销一个将对象/特性模型置于一无效状态下的操作。3.如权利要求1所述的装置,其中所述元模型的语义注册表包括至少一个预定的语义集。4.如权利要求1所述的装置,其中所述元模型的语义注册表包括至少一个由开发者提供的语义集。5.如权利要求1所述的装置,其中所述元模型的语义注册表包括至少一个用于创建一对象实例的对象厂家以及用于创建一特性实例的特性厂家。6.如权利要求1所述的装置,其中所述对象/特性模型包括由多个对象及多个特性中的至少一个所构成的一个预定集。7.如权利要求1所述的装置,其中所述对象/特性模型包括基于元模型的一个外部定义而产生的对象和特性的实例。8.如权利要求2所述的装置,还包括一个与事务管理程序的对象/特性接口相连接的日志文件。9.如权利要求1所述的装置,其中所述对象/特性接口限制对上述对象/特性模型的访问。10.一种用于构筑建模工具的方法,包括以下步骤通过定义第一类集构筑对象/特性模型;通过定义第二类集构筑元模型;将一类型代码与第一和第二类集关联起来;向上述元模型提供预定的语义集;对多个分立事件进行识别,其中在多个分立事件的每一个发生时,调用语义集当中的至少一个语义;以及提供一对象/特性接口以限制对上述对象/特性模型的访问。11.如权利要求10所述的方法,还包括以下步骤提供一事务管理程序,以用于撤销一个将对象/特性模型置于无效状态下的操作。12.如权利要求10所述的方法,其中上述对象/特性模型包括由多个对象及多个特性中的至少一个所构成的一个预定义集。13.如权利要求10所述的方法,其中上述对象/特性模型包括基于由开发者所提供的元模型的外部定义而产生的对象和特性的示例。14.如权利要求10所述的方法,其中上述元模型包括至少一个由开发者提供的语义集。15.一种用于构筑建模工具的装置,包括第一模型,其包含注册表和数据管理程序;接口;与第一模型和接口相连的厂家注册表;以及与上述接口相连的第二模型;其中上述注册表中含有语义。16.一种用于构筑建模工具的方法,包括以下步骤通过定义第一类集以构筑第一模型;通过定义第二类集以构筑第二模型;将类型代码与上述第一和第二类集关联起来;向上述第一模型提供预定的语义集;对多个分立事件进行识别,其中在多个分立事件的每一个发生时,调用语义集当中的至少一个语义;以及提供接口以限制对上述第一模型的访问。全文摘要本发明提供了一种用于构筑建模工具的装置,包括:一元模型,其含有一个语义注册表(图2中的#220)以及一个元数据管理程序(图2中的#240);一个对象/特性接口(图2中的#260);以及一个与上述元模型和对象/特性接口相连的对象/特性厂家注册表。语义注册表包括至少一个预定的语义集(图2中的#230)。文档编号G06F9/44GK1359489SQ99812224公开日2002年7月17日申请日期1999年10月15日优先权日1998年10月16日发明者塔德·A·德弗勒申请人:联合想象计算机公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1