买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】面向对象环境中的对象进行几何变换的方法、系统和介质_赫克斯冈技术中心_201580081741.X 

申请/专利权人:赫克斯冈技术中心

申请日:2015-06-05

公开(公告)日:2022-01-21

公开(公告)号:CN107851133B

主分类号:G06F30/12(20200101)

分类号:G06F30/12(20200101);G06F16/28(20190101)

优先权:

专利状态码:有效-授权

法律状态:2022.01.21#授权;2018.06.29#实质审查的生效;2018.03.27#公开

摘要:本发明涉及面向对象环境中的对象进行几何变换的方法、系统和介质。在诸如表示面向对象的企业工程系统中的横梁和柱的对象的大量对象可以通过根据准则将对象分成多个有序分区且作为原子操作变换各分区中的对象来在模型数据库中进行几何变换。可以被变换的对象的数量不受系统中可用的存储量限制。要变换的对象被组织成有序分区,并且按顺序对分区进行变换,使得给定对象的全部前驱在给定对象之前或在与给定对象相同的操作中被变换。如果大变换操作在已完成所有小变换操作之前异常终止,则尽管如此模型数据库被留于一致状态。变换操作可以从中断点恢复。

主权项:1.一种用于对在存储受限的面向对象的企业工程系统内表示的对象的子集进行几何变换的计算机实施的方法,所述方法包括处理器进行以下步骤:在计算机上从用户接受输入,所述输入指定要进行几何变换的多个所选对象和要对所述所选对象执行的几何变换的类型的指示,其中,所述所选对象的表示被存储在面向对象的企业工程系统数据库中,但所述计算机具有不足以同时存储所有所述所选对象的所述表示的主存储;对于各所选对象,根据以下内容在所述所选对象中自动识别所述所选对象与其具有前驱-后继关系的所有前驱对象:a在所述前驱对象的参数的对应值变为变化值时根据工程关系必须重新计算所述所选对象的参数的值,以及b所述前驱-后继关系从所述方法的开始之前到所述方法的完成之后存在;基于所述所选对象的前驱自动生成所述所选对象的有序列表;将所述列表自动分成一组有序分区,其中,各所选对象是不比所有其前驱对象的分区更早的分区的成员;在第一途径中,对于按顺序的各分区:从所述面向对象的企业工程系统数据库将所述分区的各对象的表示加载到所述计算机的所述主存储中;自动识别所述分区的所述对象与不是所述多个所选对象的成员的任何对象之间的任何关系;对于各自动识别的关系,自动修改所述主存储中的对应对象的表示,以切断所述关系,从而在所述主存储中创建对象的多个第一经修改表示;将对象的所述多个第一经修改表示从所述主存储存储到所述面向对象的企业工程系统数据库中;以及释放各对象的所述表示被加载到的所述主存储;如果在所述第一途径中至少一个分区尚未被成功处理,则无法开始第二途径,并且如果在所述第一途径中已经成功处理了所有分区,则开始所述第二途径,在所述第二途径中,对于按顺序的各分区:从所述面向对象的企业工程系统数据库将所述分区的各对象的表示加载到所述计算机的所述主存储中;对于所述分区的各对象,修改所述主存储中的所述对象的所述表示,以根据要执行的几何变换的所述类型对所述对象进行几何变换,从而在所述主存储中创建对象的多个第二经修改表示;将对象的所述多个第二经修改表示从所述主存储存储到所述面向对象的企业工程系统数据库中;以及释放各对象的所述表示被加载到的所述主存储,其中,在所述第一途径期间,对于关系被切断的各对象,自动重新计算该对象的函数依赖,并且在所述第二途径期间,不需要对所述对象执行函数依赖重新计算。

全文数据:用于使用多事务技术对面向对象环境中的对象执行几何变换的方法和设备技术领域[0001]本发明涉及计算机辅助设计和计算机辅助制造CADCAM软件系统,并且更具体地,涉及用于对在由这种系统使用的数据库中的大量对象和关系执行几何变换的方法和设备。背景技术[0002]有时还被称为空间信息管理(SIM系统的企业工程系统是促进二维(2D和三维3D建模和可视化的计算机辅助设计CAD系统。这些系统用于工业厂房诸如,炼油厂和发电站)以及其他大型复杂结构诸如,高层建筑物、海上钻井平台、船以及采矿和其他材料处理设施)的设计、建设、运营以及改造中。凭借它们的图形用户界面GUI,企业工程系统使得设计者能够布置结构、管道系统、电气、采暖、通风与空调HVAC以及其他复杂系统,并且能够在建设或运营的各种阶段使项目的全部或所选部分可视化。[0003]大多数现代企业工程系统使用面向对象的范例,在这些范例中,被称为“对象”的软件构建表示真实世界物品(诸如,横梁、墙壁、地板、管路、阀、导管、开关、电扇、管道等)。一些对象表示仅仅是设计者的便利且不表示物理物品(诸如,坐标网格系)。[0004]对象通常在软件中被实施为存储标识所表示的物品的类型的信息、以及与由各对象表示的特定物品有关的信息诸如,如适于各物品的长度、宽度、颜色、容量等)的数据结构有序的多组数据元素)。对象通常还包括为操纵对象的数据元素和或向调用者返回与对象有关的信息的例程的“方法”。表示在用户的问题域内的物品并由SIM系统使得对用户可见且可以由用户经由S頂系统用户界面UI操纵的对象有时被称为“设计对象”,以将它们与可能不直接对用户可见但然而对于模型而言必要的其他对象被称为“商业对象”)区分。[0005]许多设计对象由其他对象组成。例如,管路可以包括一个或更多个直管段、弯管、法兰、垫圈等。管路可以包括两个或更多个管口,通过这些管口,管路的端部可以连接到设备诸如,栗、水箱、阀等KSIM可以将管路显露为用户可以操纵的设计对象。例如,用户可以使管路伸展、弯曲、缩短或移动。然而,SIM可能不必为了直接操纵而向用户显露独立的直管段、弯管等。相反,SIM可以响应于设计对象的用户操纵按需自动添加或去除这些对象,或者改变它们的特性诸如,弯管的角度)。[0006]在另一个示例中,横梁可以由单个构件系统组成,并且许多其他对象包括:框架连接表示横梁如何在各端处连接到其他构件)、零件表示最终物理对象)、孔表示沿着横梁的连接点)以及其他对象。横梁中的开口可以由各另外的对象来表示。如果横梁的端部被修整或开槽来嵌合柱,则修整或开槽操作也可以由对象来表示。共同地,设计对象及其相关对象被称为“设计对象组”。[0007]大多数对象借助于关系联系到其他对象。不同类型的关系用于不同的背景下。例如,一种关系用于将对象设置为“系统”的逻辑层次。不同类型的关系在管连接到一件设备上的管口时使用。第三种关系用于将横梁连接到柱。[0008]对象之间的关系是有序概念。关系可以指示对应对象被添加到模型的逻辑顺序,该逻辑顺序可以与真实世界物品将构造的顺序不同。例如,在对发电厂建筑进行建模时,设计者通常创建网格坐标系。设计者然后添加柱并将柱放置于网格系统内的期望坐标处。随后,设计者在柱下方添加基础footing。然而,在实际建造发电厂时,基础在可以将柱放置于基础顶部上到位之前来构造。[0009]对象之间的另一种关系是“函数依赖functionaldependency”。函数依赖可能存在于相关的对象之间(“独立”对象和一个或更多个“依赖”对象)。在改变独立对象时,也自动改变所有依赖对象。在之前的柱和基础示例中,柱是独立对象,并且基础依赖它。如果移动柱或它必须承载的重量变化,则企业工程系统按需自动移动基础或自动改变其尺寸或承重能力。另外,由企业工程系统自动重新计算依赖柱的任何其他对象的特性。更新对象即,重新计算对象参数中的一个或更多个有时被称为“重新计算”对象。[0010]如所指出的,在建模阶段期间,通常在向模型添加对应的基础对象之前向模型添加柱对象。然而,在构造物理结构不包括发电厂时,必须在柱可以附接到基础的顶部之前建造基础。由此,对象被添加到模型的顺序不必与对应的真实世界物品被构造或放置到位的顺序相同。类似地,函数依赖关系不必指示真实世界物品被构造或放置到位的顺序。[0011]许多现代企业工程系统使用关系数据库RDB或其他数据库管理系统DBMS来存储表示对象和关系的永久数据结构。例如,RDB记录或表行可以用于存储对象和关系数据结构。[0012]企业工程系统的一个特别有用的特征是对用户选择的对象或对象的组进行几何变换的能力。几何变换的示例包括移动、旋转以及镜像。[0013]为了维持模型数据库中的对象和关系的有效性和一致性,在数据库事务内执行对该数据库的每一个操作。事务具有两个主要目的:1提供允许从系统故障正确恢复的可靠工作单元;和2提供同时访问数据库的程序之间的隔离。事务提供“所有或没有”提议。对数据库的所有修改都成功完成或没有完成。[0014]由此,为了确保模型的有效性和一致性,企业工程系统在单个事务中执行几何变换。事务包括三个步骤。在第一步骤中,启动事务,并且将表示要变换的对象和关系的所有数据结构从数据库带入计算机的(真实或虚拟的、总称为“主”)存储中。在第二步骤中,在主存储中对对象进行变换,并且重新计算所有依赖对象。然后,在第三步骤中,将表示对象和关系的现在修改的数据结构写回到数据库,并且提交事务。[0015]许多工业厂房模型涉及非常大量的对象和关系,这对于企业工程系统可能提出问题。系统的主存储必须大至足以同时存储表示要进行几何变换的对象和它们的关系的所有数据结构。众所周知,数据库可以远远大于计算机的主存储。因此,对于几何变换诸如,移动石化工厂内的蒸馏器选择模型的大部分可能导致超过计算机的主存储容量,在这种情况下,无法完成变换。发明内容[0016]本发明的实施方式提供了一种用于对对象的子集进行几何变换的计算机实施的方法。对象在面向对象的企业工程系统内被表示。方法包括执行一组操作的处理器。[0017]操作包括在计算机上从用户接受输入。输入指定要进行几何变换的一组所选对象。输入还指示要对所选对象执行的几何变换的类型。所选对象的表示被存储在面向对象的企业工程系统数据库中。然而,计算机具有不足以同时存储所有所选对象的表示的主存储。[0018]对于各所选对象,处理器在所选对象中自动识别所选对象与其具有前驱-后继predecessor-successor关系的所有前驱对象。前驱-后继关系意指:(a在前驱对象的参数的对应值变为变化值时根据工程关系必须重新计算所选对象的参数的值,以及⑹前驱-后继关系从方法的开始之前到方法的完成之后存在。[0019]处理器自动生成所选对象的有序列表。列表中的所选对象的顺序基于所选对象的前驱。[0020]处理器将列表自动分成一组有序分区。各所选对象是不比所有其前驱对象的分区更早的分区的成员。[0021]处理器针对分区执行两个途径pass。[0022]在第一途径中,对于按顺序的各分区,处理器执行以下操作:[0023]a处理器从数据库将分区的各对象的表示加载到计算机的主存储中。[0024]⑹处理器自动识别分区的对象与不是多个所选对象的成员的任何对象之间的任何关系。[0025]C对于各自动识别的关系,处理器自动修改主存储中的对应对象的表示,以切断sever关系。由此,处理器在主存储中创建对象的多个第一经修改表示。[0026]d处理器将对象的多个第一经修改表示从主存储存储到数据库中。[0027]e处理器释放各对象的表示被加载到的主存储。[0028]在完成第一途径之后,处理器针对分区执行第二途径。在第二途径中,对于按顺序的各分区,处理器执行以下操作:[0029]a处理器从数据库将分区的各对象的表示加载到计算机的主存储中。[0030]⑹对于分区的各对象,处理器修改主存储中的对象的表示,以根据要执行的几何变换的类型对对象进行几何变换。由此,处理器在主存储中创建对象的多个第二经修改表不。[0031]c处理器将对象的多个第二经修改表示从主存储存储到数据库中。[0032]d处理器释放各对象的表示被加载到的主存储。[0033]自动生成所选对象的有序列表的步骤可以包括自动生成有序列表,以使得各所选对象不早于所有其前驱对象地出现在列表中。[0034]自动生成所选对象的有序列表的步骤可以包括自动生成所选对象的对象标识符的有序列表。[0035]方法还可以包括以下步骤:对于有序的一组分区中的至少一个分区执行另外的操作。方法可以包括以下步骤:识别分区中的所选对象的任何下级对象。方法可以包括以下步骤:将所识别的下级对象添加到分区。方法可以包括以下步骤:从数据库将分区的各下级对象的表示加载到计算机的主存储中。方法可以包括以下步骤:修改主存储中的下级对象的表示,以根据要执行的几何变换的类型来对下级对象进行几何变换。方法可以包括以下步骤:释放各下级对象的表示被加载到的主存储。[0036]方法还可以包括以下步骤:将与一组有序分区有关的信息自动保存在非易失性存储器中。信息可以足以使得能够在系统故障之后重新启动主存储中的对象的表示的修改,以根据要执行的几何变换的类型来对对象进行几何变换。[0037]将列表自动分成一组有序分区的步骤可以包括生成使各所选对象与所有所选对象的前驱对象有关的前驱图(predecessorgraph。[0038]方法还可以包括以下步骤:对于关系被切断的各对象,自动重新计算对象的函数依赖。[0039]本发明的另一个实施方式提供了一种用于对在存储受限的面向对象的企业工程系统内表示的对象的子集进行几何变换的系统。系统包括面向对象的企业工程系统数据库,该面向对象的企业工程系统数据库存储对象的表示。用户界面从用户接受输入。输入指定要进行几何变换的、在数据库中表示的对象中的一组所选对象。输入还包括要对所选对象执行的几何变换的类型的指示。[0040]计算机包括主存储。然而,主存储不足以同时存储所有所选对象的表示。[0041]系统包括识别模块,该识别模块联接到用户界面和数据库。对于各所选对象,识别模块在所选对象中自动识别所选对象与其具有前驱-后继关系的所有前驱对象。前驱-后继关系意指:(a在前驱对象的参数的对应值变为变化值时根据工程关系必须重新计算所选对象的参数的值,以及⑹前驱-后继关系从接收用户输入之前到已经对所选对象进行几何变换之后存在。[0042]系统还包括对象排序模块,该对象排序模块联接到识别模块。对象排序模块基于所选对象的前驱自动生成所选对象的有序列表。[0043]分割模块联接到对象排序模块。分割模块将列表自动分成一组有序分区。各所选对象是不比所有其前驱对象的分区更早的分区的成员。[0044]关系终止器联接到分割模块。关系终止器自动处理按顺序的各分区。在第一途径期间,关系终止器从数据库将分区的各对象的表示加载到计算机的主存储中。关系终止器自动识别分区的对象与不是多个所选对象的成员的任何对象之间的任何关系。对于各自动识别的关系,关系终止器自动修改主存储中的对应对象的表不,以切断关系。从而,关系终止器在主存储中创建对象的多个第一经修改表示。关系终止器将对象的多个第一经修改表示从主存储存储到数据库中。关系终止器释放各对象的表示被加载到的主存储。[0045]系统还包括联接到关系终止器的几何变换器。几何变换器自动处理按顺序的各分区。在完成第一途径之后,在第二途径期间,几何变换器从数据库将分区的各对象的表示加载到计算机的主存储中。对于分区的各对象,几何变换器修改主存储中的对象的表示,以根据要执行的几何变换的类型对对象进行几何变换。从而,几何变换器在主存储中创建对象的多个第二经修改表示。几何变换器释放各对象的表示被加载到的主存储。[0046]几何变换器将对象的多个第二经修改表示从主存储存储到数据库中。[0047]对象排序模块可以自动生成有序列表,以使得各所选对象不早于所有其前驱对象地出现在列表中。[0048]对象排序模块可以自动生成所选对象的对象标识符的有序列表。[0049]系统可以包括传播模块,该传播模块联接到识别模块。传播模块可以对于各分区:识别分区中的所选对象的任何下级对象,并且将所识别的下级对象添加到分区。传播模块可以从数据库将分区的各下级对象的表示加载到计算机的主存储中。传播模块可以修改主存储中的下级对象的表示,以根据要执行的几何变换的类型来对下级对象进行几何变换。传播模块释放各下级对象的表示被加载到的主存储。[0050]系统还可以包括处理控制模块,该处理控制模块联接到几何变换器。处理控制模块可以在非易失性存储器中自动保存与一组有序分区有关的信息。信息可以足以使得能够在系统故障之后重新启动主存储中的对象的表示的修改,以根据要执行的几何变换的类型来对对象进行几何变换。[0051]分割模块可以生成使各所选对象与所有所选对象的前驱对象有关的前驱图。[0052]系统可以包括对象重新计算器,该对象重新计算器联接到关系终止器。对象计算器可以对于关系被切断的各对象,自动重新计算对象的函数依赖。[0053]本发明的又一个实施方式提供了一种用于对在存储受限的面向对象的企业工程系统内表示的对象的子集进行几何变换的计算机程序产品。计算机程序产品包括非暂时性计算机可读介质。计算机指令被存储在介质上。在由处理器执行时,指令使得处理器在计算机上从用户接受输入。输入指定要进行几何变换的一组所选对象。输入还包括要对所选对象执行的几何变换的类型的指示。所选对象的表示被存储在面向对象的企业工程系统数据库中。然而,计算机具有不足以同时存储所有所选对象的表示的主存储。[0054]对于各所选对象,处理器在所选对象中自动识别所选对象与其具有前驱-后继关系的所有前驱对象。前驱-后继关系意指:(a在前驱对象的参数的对应值变为变化值时根据工程关系必须重新计算所选对象的参数的值,以及⑹前驱-后继关系从指令的执行之前到指令的执行之后存在。[0055]处理器基于所选对象的前驱自动生成所选对象的有序列表。[0056]处理器将列表自动分成一组有序分区。各所选对象是不比所有其前驱对象的分区更早的分区的成员。[0057]在第一途径中,对于按顺序的各分区,处理器从数据库将分区的各对象的表示加载到计算机的主存储中。处理器自动识别分区的对象与不是多个所选对象的成员的任何对象之间的任何关系。对于各自动识别的关系,处理器自动修改主存储中的对应对象的表示,以切断关系。从而,处理器在主存储中创建对象的多个第一经修改表示。处理器还将对象的多个第一经修改表示从主存储存储到数据库中。处理器释放各对象的表示被加载到的主存储。[0058]在完成第一途径之后,在第二途径中,对于按顺序的各分区,处理器从数据库将分区的各对象的表示加载到计算机的主存储中。对于分区的各对象,处理器修改主存储中的对象的表示,以根据要执行的几何变换的类型对对象进行几何变换。从而,处理器在主存储中创建对象的多个第二经修改表示。处理器将对象的多个第二经修改表示从主存储存储到数据库中。处理器释放各对象的表示被加载到的主存储。[0059]本发明的实施方式提供了一种用于对在面向对象的企业工程系统内表示的多个对象进行几何变换的计算机实施的方法。多个对象中的至少一个是多个对象中的另一个的前驱。方法涉及处理器执行多个操作,这些操作包括:从用户接受输入,该输入选择要进行几何变换的多个对象;以及接受要对所选对象执行的几何变换的类型的指示。对于各所选对象,在多个对象中,自动识别所选对象的任何前驱对象。所选对象的至少一个参数的值函数地依赖于任何前驱对象的至少一个参数。将所选对象自动分成对象的多个有序分区。对于任何给定对象,对象的前驱对象中的每一个处于与给定对象相同的分区中或之前的分区中。[0060]按分区顺序每对象分区地根据几何变换的类型的指示对对象进行几何变换。在对给定分区中的对象进行几何变换的同时,临时地使得分区中各对象的任何后继对象只读。临时地使得分区中各对象的任何前驱对象只读。对于被临时使得只读的各对象,可以生成对应的待办项(to-doitem。如果随后对被临时使得只读的对象中的任何一个进行变换,则可以删除对应的待办项。[0061]在对给定分区中的对象进行几何变换的同时,可以识别分区中对象的任何下级对象。可以将所识别的下级对象添加到分区,并且可以根据几何变换的类型的指示来对所添加的下级对象进行几何变换。[0062]可以按分区顺序处理分区中的至少两个。处理包括在处理随后分区之前保存与分区有关的信息,并且根据几何变换的类型的指示对分区中的对象进行几何变换。所保存的信息可以包括足以重新启动对分区中的对象进行的几何变换的信息。[0063]将所选对象自动分成对象的多个有序分区的步骤可以包括生成使各所选对象与所有所选对象的前驱对象有关的前驱图。[0064]方法可以包括以下步骤:识别与所选对象中的任何一个有关的至少一个外部对象;以及断开所识别的外部对象与所选对象之间的关系。[0065]本发明的另一个实施方式提供了一种用于对在面向对象的企业工程系统内表示的多个对象进行几何变换的系统。多个对象中的至少一个是多个对象中的另一个的前驱。系统包括用户界面,该用户界面被配置为从用户接受选择要进行几何变换的多个对象的第一输入,并且被配置为从用户接受指示要对所选对象执行的几何变换的类型的第二输入。识别模块联接到用户界面,并且被配置为对于各所选模块自动识别与所选对象对应的任何前驱对象。所选对象的至少一个参数的值函数地依赖于任何前驱对象的至少一个参数。分割模块联接到识别模块,并且被配置为将所选对象自动分成对象的多个有序分区。对于任何给定对象,对象的前驱对象中的每一个处于与给定对象相同的分区中或之前的分区中。[0066]变换模块可以联接到分割模块,并且被配置为按分区顺序每对象分区地根据几何变换的所指示类型来对对象进行几何变换。[0067]冻结模块freezingmodule可以联接到变换模块,并且被配置为每分区地临时使得分区中各对象的任何后继对象只读,并且临时地使得分区中各对象的任何前驱对象只读。冻结模块可以被配置为对于被临时使得只读的各对象生成对应的待办项。[0068]清理模块可以联接到变换模块,并且被配置为在随后对被临时使得只读的对象中的任何一个进行变换时删除对应的待办项。[0069]传播模块可以联接到识别模块,并且被配置为对于各分区,识别分区中的对象的任何下级对象,并且将所识别的下级对象添加到分区。变换模块被配置为根据几何变换的所指示类型对所添加的下级对象进行几何变换。[0070]处理控制模块可以联接到变换模块,并且被配置为按分区顺序处理分区中的至少两个。处理控制模块可以被配置为对于各分区保存与分区有关的信息。所保存的信息可以包括足以重新启动分区中的对象的几何变换的信息。处理控制模块可以被配置为使得变换模块在处理随后分区之前根据几何变换的所指示类型来对分区中的对象进行几何变换。[0071]分割模块可以被配置为生成使各所选对象与所有所选对象的前驱对象有关的前驱图。[0072]修剪模块pruningmodule可以被配置为识别与所选对象中的任何一个有关的至少一个外部对象,并且断开所识别的外部对象与所选对象之间的关系。[0073]本发明的又一实施方式提供了一种用于计算机系统上的计算机程序产品。计算机程序产品可以用于复制在面向对象的企业工程系统内表示的多个前驱对象和后继对象。各后继对象与前驱对象具有前驱关系。计算机程序产品包括上面存储有计算机指令的非暂时性计算机可读介质。在由处理器执行时,指令使得处理器从用户接受输入。输入选择要进行几何变换的多个对象,并且输入提供要对所选对象执行的几何变换的类型的指示。对于各所选对象,指令使得处理器在多个对象中自动识别所选对象的任何前驱对象。所选对象的至少一个参数的值函数地依赖于任何前驱对象的至少一个参数。指令还使得处理器将所选对象自动分成对象的多个有序分区。对于给定对象,对象的前驱对象中的每一个处于与给定对象相同的分区中或之前的分区中。[0074]指令可以使得处理器按分区顺序每对象分区地根据几何变换的类型的指示对对象进行几何变换。[0075]指令可以使得处理器临时使得分区中各对象的任何后继对象只读,并且临时地使得分区中个对象的任何前驱对象只读。[0076]对于被临时使得只读的各对象,指令可以使得处理器生成对应的待办项。如果随后对被临时使得只读的对象中的任何一个进行变换,则指令可以使得处理器删除对应的待办项。[0077]在对给定分区中的对象进行几何变换的同时,指令可以使得处理器识别分区中的对象的任何下级对象,并且将所识别的下级对象添加到分区。指令可以使得处理器根据几何变换的类型的指示对所添加的下级对象进行几何变换。附图说明[0078]本发明将通过连同附图参照特定实施方式的以下详细描述来更完全地理解,附图中:[0079]图1是假设的一组对象和对象中的假设关系的示意图。[0080]图2是根据本发明的实施方式的、在几何变换的准备中分类并划分的图1的设计对象的不意图。[0081]图3是根据本发明的实施方式的模块化企业工程系统的示意框图。[0082]图4是例示了本发明的实施方式的整体操作的流程图。[0083]图5至图13例示了根据本发明的实施方式的示例性用户界面的方面。[0084]图14是例示了图4的变换操作的子操作的高级流程图。[0085]图15是例示了扩展图4的操作的、将对象标识符OID的列表分成有序分区的操作的流程图。[0086]图16是根据本发明的实施方式的两个设计对象和对应的各下级对象的示意图。[0087]图17包含根据本发明的实施方式的、用于提供使得能够遍历关系路径诸如,图16的对象中)的类信息的示例性XML文件段。[0088]图18是根据本发明的实施方式的XML类描述符文件的更完整示例。[0089]图19例示了根据本发明的实施方式的示例性前驱图。[0090]图20示意性例示了对象之间的关系的循环的示例。[0091]图21是根据本发明的实施方式的、概括对分区排序并按顺序处理分区的操作的流程图。[0092]图22是例示了根据本发明的实施方式的、扩展图21的这种操作的、处理所选分区中的对象的流程图。[0093]图23是根据本发明的实施方式的变换图数据结构的示意图。[0094]图24是根据本发明的实施方式的、图23的变换图数据结构的值条目阵列的示意图。[0095]图25是根据本发明的实施方式的、图24的阵列的值条目的示意图。[0096]图26是根据本发明的实施方式的、图23的变换图数据结构的关系条目的示意图。[0097]图27是例示了根据本发明的实施方式的、多个假设对象及其之间的关系的示意图。[0098]图28是与图27的对象和关系对应的前驱图的示意表示。[0099]图29是例示了根据本发明的实施方式的、在对象已经被分成区间之后的、图27和图28的对象的不意图。[0100]图30至图33例示了例证本发明的实施方式的操作的四个假设事务。[0101]图34A至图34B包含流程图,该流程图示意性例示了根据本发明的另选实施方式的、用于对在面向对象的企业工程系统内表示的多个对象进行几何变换的计算机化方法。[0102]图35包含根据本发明的实施方式的系统的示意框图,该系统用于对在面向对象的企业工程系统内表示的多个对象进行几何变换。[0103]图36至图38包含流程图,该流程图示意性例示了根据本发明的实施方式的、用于对在面向对象的企业工程系统内表示的多个对象进行几何变换的计算机化方法。具体实施方式[0104]根据本发明,公开了用于在维持模型数据库的完整性的同时但在没有现有技术的存储限制的情况下对大量对象进行几何变换诸如,移动、旋转或镜像的方法和设备。大几何变换操作被分成顺序执行的多个较小原子操作事务)。即使大几何变换的所有对象不同时嵌合在主存储中,各小事务也对可以在计算机的主存储中同时表示的对象的所选子集进行几何变换。由此,如果在已经完成所有小几何变换事务之前中断大几何变换操作,则尽管如此模型数据库留于一致状态,并且可以从中断点恢复总几何变换操作。[0105]根据本发明的实施方式,在两个途径中执行一大组对象的几何变换。在第一途径期间,断开要被变换的对象与不被变换的对象之间的关系这里被称为“外部关系”)。这留下全部要同样变换(即,全部移动、全部旋转或全部镜像等相等量的多个对象。在第二途径期间,对对象进行几何变换。[0106]全部要变换的对象中的关系在这里被称为“内部关系”。虽然在第一途径期间断开外部关系可能需要重新计算由这些外部关系定义的函数依赖,但一旦进行这一点,因为所有对象被几何变换相等的量,所以剩余对象可以在不重新计算由内部关系定义的函数依赖的情况下被变换。因此,几何变换的对象的位置相对于其他几何变换的对象不变。它们全部被一起移动、旋转、镜像等相等量。[0107]例如,如果横梁和柱都被一起几何变换,则横梁和柱的位置通过几何变换变更相等的量。然而,横梁的位置相对于柱不变。因此,不需要重新计算一个的位置对另一个的函数依赖。记住,如果横梁或柱中的一个相对于另一个被移动,则因为相对于另一个改变了一个的位置,所以必须重新计算函数依赖。[0108]通常,存在比内部关系更少的外部关系。因此,虽然在第一途径期间需要执行一些函数依赖重新计算(即,对于被切断的外部关系),但一旦断开外部关系,则在第二途径期间就不需要对对象执行函数依赖重新计算(即,对于内部关系)。因此,两个途径方法提供相对于现有技术的显著性能改进,现有技术不切断外部关系,并且因此需要重新计算所有关系的函数依赖。[0109]我认识到,对对象进行几何变换的顺序是重要的。我以图1开始我的描述,图1示意性地表示了多个假设对象△1、42、43、81、...24和对象41-24对之间的关系(由实线来表示)。为了说明的简单起见,图1示出了相对少量的对象。对象A1、B1、C1以及Dl表示设计对象。设计对象可以由零个或更多个下级对象组成。例如,对象C2和C3是设计对象Cl的下级对象。下级对象的各集合形成从其各设计对象下降的层次。各设计对象及其各下级对象被各浅虚线100、102、104或106围绕。[0110]函数依赖[0111]对象A1-Z4的一些对如由箭头指示的处于函数依赖关系。例如,对象B6依赖对象B4。这意味着对象B6的至少一个参数的值依赖对象M的至少一个参数的值。由此,如果对象B4的参数的值变为改变值,则应基于对象M的参数的改变值和对象之间的工程关系重新计算对象B6的一个或更多个参数的值。由此,至少关于对象M与B6之间的关系,对象B6被称为“依赖的”,并且对象M被称为“独立的”。注意,一些函数关系跨设计对象边界。例如,为设计对象Al的一部分的对象A3函数地依赖为不同设计对象Bl的一部分的对象B5。[0112]即使设计对象Al与Bl之间没有明确的关系,下级对象A3依赖对象B5的事实也暗示设计对象Bl是设计对象Al的“前驱”(如这里使用该术语)。如这里所用的,前驱对象是另一个设计对象依赖的设计对象。即,依赖设计对象或其下级对象中的一个或更多个依赖前驱设计对象或其下级对象中的一个或更多个。由此,如果前驱设计对象或其下级对象中的一个或更多个的参数的值变为改变值,则应重新计算依赖设计对象或其下级对象中的一个或更多个的一个或更多个参数的值。设计对象Al与Bl之间的暗示关系由下级对象A3与B5之间的实际关系来诱导。然而,设计对象可以具有与其他设计对象的明确关系未示出)。[0113]应注意的是,前驱关系与来自面向对象的编程范例的父子亦称类-子类或广义层次或类实例关系完全不同。子类继承来自其超类的属性诸如,变量和方法)。类似地,实例继承来自其类定义的属性。通常,子类添加函数诸如,另外的变量或方法),但在一些情况下,子类覆盖其超类的变量和或方法。例如,类可以对于“车辆”来定义,该类包括用于“重量”和“number_of_wheels”的变量,并且可以包括用于“加速”的方法,该方法把油门被压下的距离当作输入。类的实例可以为表示各种汽车和卡车的对象。子类可以对于“起重机crane”来定义,该子类可以添加用于“max_lift_weight”和“max_lift_height”的变量且可能可以被调用来执行功能诸如,提升或降低负载的方法。[0114]前驱关系与类-子类关系不相关。前驱关系不从面向对象的范例已知;它们由本申请的发明人为了本申请所描述的目的而设想。前驱关系不暗示继承。函数依赖不是继承。前驱对象作为是前驱对象的结果不从其依赖对象自动继承特性变量或方法,反之亦然。相反,如果前驱设计对象或其下级对象中的一个或更多个的参数的值变化,则应重新计算依赖设计对象或其下级对象中的一个或更多个的一个或更多个参数的值。[0115]前驱关系中的对象不必处于类-子类关系。通常,前驱对象既不在它们的后继对象的子类中,也不在它们后继对象的超类中。例如,栗和管路通常在完全不同的类中,同样的是横梁和柱。此外,子类超类关系不暗示函数关系。即,如果诸如,通过被移动至新位置)改变一类的对象,则不需要重新计算其子类和超类中的对象。[0116]假定对于变换选择设计对象A1、B1、C1以及D1。要变换的对象被粗虚线108围绕。注意,诸如对象XI、Yl以及Zl的一些对象与要变换的对象有关,但对象X1-Z4不被选择为变换。[0117]如果按随机顺序对虚线108内的对象进行几何变换,并且异常终止几何变换操作,则因为到变换操作异常终止的时候可能对一些依赖对象进行几何变换,但无法对它们依赖的对象进行变换,所以数据库可能被留在不一致状态。[0118]此外,被选择为变换的对象及其下级对象的数量可能超过执行几何变换的计算机的主存储(即,真实或虚拟存储)。即,主存储可能不足以同时存储要进行几何变换的对象的表不。[0119]分区[0120]根据我的方法和设备,对象根据特定规则被分成所选对象的有序组还被称为“分区”),并且在两个途径中的每个中按顺序处理分区。为了处理对象,例如为了断开关系或使对象移动、旋转或镜像,对象的表示必须在主存储中。一旦已经将表示从数据库下载到主存储中,就可以改变表示中的值,以实现关系的变化或几何处理。[0121]如所指出的,对于要进行几何变换的大组对象,可能不可以在主存储中同时存储所有对象的表示。根据本发明的实施方式,一次仅将这些表示的子集从数据库加载到存储中。子集的对象成员资格和处理顺序通过分区来定义。因此,可以被几何变换的对象的数量不受主存储的尺寸限制。[0122]如以上所讨论的,在第一途径期间,断开外部关系。在第二途径期间,对分区中的对象进行几何变换。在每一途径期间,按顺序处理分区。在途径期间按顺序处理分区意味着在处理任何随后分区中的任何对象之前处理分区的所有对象。例如,在第二途径期间,在对任何随后分区中的任何对象进行变换之前对分区的所有对象进行几何变换。对象被分配到分区,使得依赖对象不比对它们依赖的对象进行变换更早地被变换。如这里所描述的,对象的依赖可以通过查询数据库但不必将对象加载到主存储中来确定。[0123]图2示出了根据我的规则进行的设计对象A1-D3到有序分区200、202、204以及206的示例性划分。例如,不对设计对象Dl及其下级对象(S卩,分区206进行变换,直到已经对由分区202表示的对象设计对象Cl及其下级对象和由分区204表示的对象设计对象Al及其下级对象进行变换为止,因为设计对象Dl或其下级对象中的至少一个依赖于分区202中的对象和分区204中的对象。“后继分区”是包含依赖于另一个分区中的对象的对象的分区。例如,分区206是分区202和204中的每一个的后继分区。“前驱分区”是包含另一个分区中的另一个对象所依赖的对象的分区。例如,分区204是分区206的前驱分区。[0124]各分区200-206在对应的不同事务中被变换。即,对于各分区200-206,执行事务,并且在事务期间对分区内的所有设计对象及其各下级对象进行变换。图2所示的示例每分区200-206仅包括一个设计对象,这是我优选的;然而,分区可以包括多于一个设计对象。对分区中的对象进行变换还被称为“对分区进行变换”。如所指出的,按顺序对分区进行变换。例如,在分区200之后对分区202进行变换。[0125]在原子操作事务)中对对象的各分区进行几何变换,这使得即使大几何变换操作异常终止也一致的数据库。如果异常终止大几何变换操作,则可以在它终止的点处恢复变换操作。例如,如果硬件故障引起异常终止,则可以在已经改正故障之后恢复变换操作。在另一个示例中,如果要变换的对象中的一些在数据库中被标记为“只读”,则可以在修改这些对象的保护以允许改变这些对象的参数(即,使得这些对象“读-写”)之后重新启动变换操作。此外,因为一次仅需要将相对少量的对象加载到存储中,所以可以通过将对象分成足够小的分区来在不考虑可用存储的量的情况下对非常大量的对象进行几何变换。需要被加载到存储中的对象包括:来自当前分区的对象、来自任何前驱分区的对象以及来自任何后继分区的对象。一旦向数据库提交几何变换的对象,则可以重新使用存储。[0126]为了支持重新启动大几何变换,将与变换有关的信息存储在数据库中,本质上作为“变换操作对象”。各分区的变换事务的状态也被存储在变换操作对象中。由此,如果需要重新启动几何变换操作,则与哪些分区已经被变换有关的信息以及与哪些分区尚未被变换有关的信息是可用的,因此变换操作可以在它停止的地方恢复。[0127]外部关系[0128]如所指出的,“外部关系”是横跨与要变换的对象与将不进行变换的对象之间的边界的关系。例如,在图1中,横跨粗虚线108的任何关系是外部关系,而不管相关对象之间的任何函数依赖如何。在图1中,对象Π依赖于对象Bl。然而,对象Π不被选择为变换。由此,对象Bl与Xl之间的关系110是外部关系。如果依赖对象在该示例中为XI可以在没有到其独立对象在该示例中为BI的关系的情况下存在,则破坏外部关系(S卩,对象与彼此断开),并且在一个实施方式中,依赖对象Xl变得独立。另一方面,在该实施方式中,如果依赖对象Xl无法在没有到其独立对象BI的关系的情况下存在,则删除依赖对象Xl。[0129]哪些对象在没有关系的情况下可以存在是域特定的。即,企业工程系统的设计者确定哪些关系是外部关系。例如,管道系统由管路piperun组成。管路是设计对象。因此,管路是可以利用多事务方法进行变换的管道系统的最小单位。管路可以由多个逻辑“特征”诸如,直线特征、拐弯特征、沿腿along-leg特征、分支特征等组成。各特征可以与物理零件诸如,直管、弯管、阀或三通部件对应。彼此相邻的物理零件借助于连接对象彼此相关。连接物品诸如,焊点或垫圈)可以与各连接相关联。由此,单个管路可以具有许多特征、零件、连接以及连接物品。管路与这些对象之间的关系可以是内部关系。例如,如果对管路进行变换诸如,移动),则可以连同管路一起对所有这些对象进行变换移动)。[0130]另一方面,第一管路还可以连接到第二管路或一个设备上的管口。第一管路的构件与第二管路或设备的构件之间的关系可以为外部关系。在这种情况下,如果对第一管路进行变换诸如,移动),则不需要对外部对象进行变换。例如,如果移动第一管路,则与第二管路或设备的关系被识别为外部关系。因为第二管路和设备可以作为独立对象而存在,所以可以破坏关系。[0131]架构概述[0132]这里所描述的用于对对象进行几何变换的方法和设备可以在诸如企业工程系统的各种背景下来实施。图3中示意性地例示了模块化示例性企业工程系统300。核心软件平台301提供关于各种设计对象使用的、包括几何变换的公共服务(S卩,对一个或更多个任务的服务)。核心平台301可以提供如在共同转让美国第8,793,218号专利中描述的、诸如复制多组对象的其他公共服务,在此为了所有目的而以引证的方式将该专利的整体内容并入。公共服务的其他示例可以包括事务管理、图形显示、编辑和撤销操作、修正管理以及DBMS界面。所有设计对象共享由核心平台301提供的公共三维工作空间。[0133]由任务302、304以及306例证的一个或更多个软件任务进行对核心平台301的调用,并且经由图形用户界面GUI308向用户提供问题域特定服务。示例性软件任务包括实施结构系统、电气系统、设备系统以及管道系统的任务。各任务302-306包括其自己的一组菜单、其自己的一组对象和关系以及其自己的一组函数依赖。当然,一些类型的关系可以横跨从一个任务302-306的对象到另一个任务302-306的对象的边界。各任务302-306实施适于任务需要的、由对象310、312以及314例证的对象。对象310-314可以被存储在关系数据库RDB316或另一个合适的数据库中。图3所示的软件架构促进在不影响现有任务的情况下向企业工程系统添加新任务。[0134]高级操作概述[0135]图4包含例示了由核心平台301图3执行的用语对一个或更多个对象进行几何变换的主操作的高级流程图。这里概括这些操作中的每一个,并且在下面更详细地描述这些操作中的每一个。在400处,收集指定要变换的对象以及要对对象执行的变换的类型诸如,移动、旋转和或镜像和变换的参数根据具体情况诸如为移动的距离、旋转的角度、旋转的中心和或镜像的轴)的用户输入。用户界面308图3可以允许用户从选择菜单选择对象或输入或选择过滤准则,系统然后使用该准则来自动选择满足准则的对象。[0136]另选地,用户界面可以提供诸如选择光标或“橡皮筋”选择矩形或其他形状的图形选择工具或任何其他合适的选择象征(selectionmetaphor。以下参照图5至图12描述用于提示用户且用于接受用户的输入的示例性“向导”式用户界面的方面。在402处,如这里详细描述的执行变换操作。在404处,向用户呈现与变换操作有关的信息的显示。图13中示出了示例性概括显示。[0137]收集指定要变换的对象的用户输入的用户界面[0138]如关于图4的流程图所指出的,收集指定要变换的对象的用户输入400。以下参照图5至图13描述利用于提示用户且用于接受用户的输入并显示与变换操作有关的信息的示例性“向导”式用户界面的方面。图5例示了引入模型数据变换系统向导的示例性对话框。[0139]使用图6所示的对话框,系统可以接受选择要复制的现有模型的一部分的用户输入。如在示例性对话框中使用的,术语“厂房plant”指的是数据库。由此,在图6所示的示例中,用户已选择被命名为“SDH_9059_Mode1A”的源“厂房”600即,数据库)。各数据库存储与“系统”的层次中的模型有关的信息。示例性系统包括结构系统可以包括诸如基础、横梁以及柱的对象)、电气系统可以包括导管、线段、开关等)、设备系统可以包括栗和水箱)以及管道系统可以包括管、弯管、T形连接、阀等)。层次的间隔尺寸granularity依赖于所用的特定企业工程系统和用户要求。[0140]如所指出的,企业工程系统可以包括通过用户界面显露给用户的设计对象、以及未显露的其他对象。例如,系统可以显露诸如基础、柱以及横梁的设计结构对象。用户可以通过用户界面操纵这些设计对象。例如,用户可以移动柱或指定其尺寸。系统可以使用未显露的下级对象来存储与显露对象有关的信息。例如,工字梁设计对象可以与表示工字梁的主轴线、其横截面、逻辑连接端口等的下级对象有关。[0141]图7例示了接受在开始新变换操作700与继续或重新启动之前启动现有)的变换操作702之间选择的用户输入的对话框。如果要开始新操作700,则用户可以命名操作704并指定权限组706。另一方面,如果要重新启动现有操作702,则用户可以从选择器框708诸如通过其名称选择之前启动的变换操作。[0142]图8例示了允许用户基于要变换的对象属于哪个系统800或基于过滤器802来选择要变换的对象的对话框。如果要由系统来选择对象,则图9例示了允许用户选择要变换的系统的对话框。[0143]另一方面,如果要通过过滤器802图8来选择对象,则图10例示了允许用户选择预定义过滤器1000且可选地修改过滤器的准则1002或指定用于新过滤器的准则的对话框。过滤器可以通过数据库316图3的查询来实施。示例性过滤器包括:“体积”过滤器表示基于设计对象的几何位置的查询,即,选择指定三维体积或二维区域内的对象和“特性”过滤器表示基于诸如设计对象的尺寸、承重能力、成分或名称的特性的一个或更多个值的查询)。更复杂的过滤器可以通过组合过滤器与诸如“AND”和“0R”的布尔运算符来创建。优选地,查询在不将所选对象绑定到存储中的情况下来执行。相反,查询返回对象标识符OID的列表。OID是唯一标识对象且可以用于将对象从数据库取至存储中(被称为“绑定”对象)的数字、字符串、数据库关键字或其他量。[0M4]图11例示了接受指定要应用于所选对象的变换的用户输入的对话框。例如,可以使对象沿三个正交方向1102、1104以及1106移动1100用户指定数量的单位。用户可以在1108中指定度量单位。可以可选地或另选地选择其他类型的变换。例如,用户可以选择使所选对象旋转1110或使所选对象移动并旋转1112。诸如围绕轴线未示出)的镜像的其他类型的变换可以作为选项呈献给用户。如果用户选择执行操作,则创建变换操作对象,以记录与变换和变换将被分成的各事务的状态有关的信息。[0145]图12例示了确认对话框。一旦用户发起1200变换操作,则系统可以显示进度指示器1202。在所有分区变换操作成功完成之后,或者如果变换操作被异常终止,则如图13所示,可以向用户显示结果对话框,以报告状态。如所指出的,变换操作可能花费数分钟、数小时或更长时间来完成。[0146]变换分区[0147]如关于图4所指出的,一旦已收集指定要变换的设计对象的用户输入400,则可以执行变换操作402。图14是例示了变换操作402图4的子操作的高级流程图。在1400处,查询数据库316图3,以获得由用户选择为变换的设计对象的对象标识符OID。如以上所指出的,关于图8至图10,查询在不将所选对象绑定到存储中的情况下来执行。在1402处,如这里更详细描述的(诸如,参照图15的流程图)根据我的规则将OID的列表分成有序分区。在1404处,在第一途径中按顺序处理有序分区,以断开外部关系。在1406处,再次在第二途径中按顺序处理有序分区,以如这里更详细描述的(诸如,参照图21中的流程图)对分区的对象进行几何变换。[0148]图15是例示了将OID列表分成有序分区的操作的流程图。将OID列表分成分区的处理可以在两个途径之前执行。在1500处,查询数据库316图3,以识别被选择为变换的各设计对象的所有前驱对象。如所指出的,前驱对象是另一个设计对象所依赖的设计对象。即,依赖设计对象或其下级对象中的一个或更多个依赖前驱设计对象或其下级对象中的一个或更多个。在1502处,建立组织所识别前驱对象的前驱图(数据结构),并且然后在1504处将前驱图分类,以生成OID的链表。在1506处将OID的链表分成有序分区的序列。下面是操作1502-1506的更详细描述。[0149]前驱图[0150]在一个实施方式中,通过构造使要变换的各设计对象与其前驱有关的有向图(“前驱图”)来识别前驱对象。前驱图包括用于要变换的各设计对象的节点。各节点存储用于各对象的〇ID。图的有向边缘表示各对象节点之间的关系。在节点处开始的边缘的集合标识所有前驱节点。类似地,在节点处终止的边缘的集合标识后继节点。由前驱节点标识的对象应全部在由当前节点标识的对象之前来变换。[0151]该图的遍历产生要变换的对象的有序列表。来自该有序列表的多组连续对象被分配到如这里所述变换的连续分区。由此,要变换的所有设计对象被分成分区的序列。现在将详细描述这些操作。[0152]如果两个设计对象彼此不相关,则变换对象的顺序不相关。然而,两个设计对象之间的关系可以指示对象之间存在优先级。关系可以处于设计对象或设计对象下的下级对象中的一个与另一个设计对象或另一个设计对象下的下级对象之间。[0153]如所指出的,被选择为变换的设计对象经常具有应连同所选对象一起变换的下级对象。例如,横梁对象可以具有多个未显露(向用户)的下级连接对象或其他下级对象。另夕卜,横梁对象可以连接到显露给用户的前驱柱对象。连接可以通过与柱对象有关的未显露下级连接点对象来进行。如所指出的,共同地,设计对象及其相关下级对象被称为“设计对象组”或简称为“组”。[0154]图16中描绘了这种情形的图形表示。组1表示横梁对象,并且组2表示柱。设计横梁对象A与全部应连同所显露横梁对象A—起变换的多个下级和或显露对象A1、A2、A3以及A4有关。假定对象A4表示横梁上的连接点。类似地,设计柱对象B与多个下级和或显露对象BI、B2以及B3有关。假定对象B3表示柱上的连接点,并且关系X表示分别在横梁和柱上的连接点A4与B3之间的连接。[0155]因为可以从另一个对象到连接对象B3创建关系,所以连接对象B3被称为“目标”对象。如果要创建这种关系,则为了变换对象,柱对象B将变成前驱,并且另一个设计对象将变成后继。对象可以具有多于一个目标。另外,可以创建除了物理连接之外的关系。例如,对象可以与坐标系对象或测量单位对象有关。类似地,诸如横梁的对象可以具有对象可以与另一个对象有关所借助的多于一个对象。[0156]如所指出的,企业工程系统通常包括管理厂房或模型内的系统的一个或更多个软件任务302-306图3。这些软件任务诸如在用户向模型添加横梁或柱时响应于用户输入创建对象。在面向对象的范例中,“类”是对象的定义或原型。面向对象的系统具有可以创建的各种对象的类定义。[0157]关系的类型、关系存在于其间的对象以及意义按照优先级全部特定于各软件任务302-306。各任务302-306以元数据的形式提供与其设计类有关的信息。该元数据允许核心平台301对数据库316执行查询,以找到在要变换的对象的列表中的各对象的前驱。[0158]根据本发明,各类定义提供使得核心平台301能够相对于对象遍历两种路径的信息,该两种路径为:(a从对象穿过其自己的组的内部关系到对象可以与其具有关系的、另一个对象中的目标对象的路径;以及b从对象穿过其自己组的内部关系到其自己组内的目标即,到该对象建立关系可以借助的目标对象)的路径。从该信息,可以确定到前驱对象中的所有对象的路径、以及到其下级对象的自己组内的所有可能目标的路径。各路径包括定向关系的序列。[0159]图16中例证了这两种路径。如所指出的,横梁可以连接到另一个设计对象,并且横梁的连接对象A4是将创建连接关系(关系X的对象。如所指出的,横梁对象A1-A4中的其他对象也可以为创建关系可以借助的对象。因为对象A4可以用于创建与另一个对象的关系,所以路径1600是第一种路径的示例(S卩,从对象A穿过其自己组的对象的内部关系到对象A可以与其具有关系(关系X的、另一个对象组中的目标对象B3的路径)。路径1602例证了第二种路径(即,从对象B穿过其自己组的内部关系到组内的目标B3的路径)。关系X的存在指示设计对象B是对象A的前驱,因此对象B应在对象A之前被变换。[0160]在一些实施方式中,各类定义提供“类描述符”文件,该类描述符文件包括变换应用可以用于依赖类的对象是否可以是目标或对象是否可以具有到其他对象创建的关系来识别两种路径中的一个或两个的信息。在一些实施方式中,根据可扩展标记语言XML规范格式化该文件。下面呈现这种XML文件的更详细描述。[0161]如所指出的,典型企业工程系统在关系数据库RDB中或在另一种数据库中存储与对象和关系有关的信息。一些这种系统维持针对各种对象的单独数据库表。例如,这种系统可以维持针对柱对象的表和针对横梁对象的单独表。与对象之间的关系有关的信息可以被维持在对象表中或单独表中。例如,由表1例证的关系表可以在表的各行中记录一对对象和对象之间的关系。由此,对于系统中的两个对象之间的各关系,表包含一行。表行字段可以包含对象标识符OID。术语“0ID⑻”意指“对象B的对象标识符”。表1的第二行所示的关系与图16所示的关系X对应,这指示横梁A上的连接点A4是到柱B上的点B3的端部到中间连接。[0163]如由表1中的列标题(“原点”和“目的地”)指示的,定向关系。关系的方向可以但不需要暗示两个对应对象之间的后继前驱关系。[0164]如所指出的,各类定义提供包含使得软件能够相对于根据类实例化的对象遍历两种路径的信息的类描述符文件。图17包含用于提供该信息的示例性XML文件片段。还可以使用其他合适的文件格式。[0165]对于给定类的对象,文件包含分别提供与两种路径有关的信息的两部分1700和1703。第一部分1700“TargetsInPredecessors”)提供与从对象穿过其自己组的下级对象的内部关系到目标可以与其具有关系的另一个对象中的目标对象(即,到将为对象的前驱的对象的各可能路径有关的信息。[0166]图17所示的示例定义两个这种路径1706和1710。各路径包括至少一个“步骤”。步骤描述了两个对象之间的关系,包括关系类型的描述RelType和关系的方向(Dir。将图16的横梁对象用作示例,路径1600将被描述为具有与关系1604、1606以及1608对应的三个步骤。在对象处开始,与所指定步骤的数量、指定的关系类型(RelType以及指定的方向Dir匹配的任何路径作为TargeIsInPredecessor路径合适。[0167]返回到图1741^文件的第二部分17031作的811^61〇提供与从对象穿过其自己组的内部关系到组内的目标的各可能路径有关的信息。图18是XML类描述符文件的更完整示例。[0168]在对象由用户来选择或由系统自动识别为要变换的对象时,系统自动识别对应设计对象的前驱。为了识别前驱,系统识别所选对象或其下级对象中的一个相关到的前驱中的目标对象。为了识别目标对象,系统建立用于对于对象类定义的各TargetsInPredecessor路径的查询。查询以用于要变换的给定类的所有设计对象的OID开始,并且包含用于路径的各步骤的结合JOIN。查询针对数据库316图3中的关系表来执行。查询产生包含OID对的表。各对OID包括诸如横梁0ID“A”)的要变换的对象的OID和诸如连接点〇ID“B3”)的目标对象的0ID。表2例示了这种查询的示例性结果的一部分。[0170]系统还建立用于对于对象类定义的各TargetsInSeIf路径的查询。查询以用于要变换的给定类的所有设计对象的OID开始,并且包含用于路径的各步骤的JOIN。查询针对数据库316图3中的关系表来执行。查询产生包含OID的对的表。各对OID包括诸如柱(0ID“B”)的要变换的对象的OID和诸如连接点0ID“B3”)的目标对象的0ID。表3例示了这种查询的示例性结果的一部分。[0172]对于被选择为变换的各类对象执行以上所描述的查询,并且在两个产生的表中累积查询的结果。然后在被命名为“目标对象的01D”的表列上结合两个表,以产生第三表。表4例示了这种数据库JOIN操作的示例性结果的一部分。表4的行表示要变换的对象之间的前驱关系。例如,根据表4的第一行,因为对象B是对象A的前驱,所以对象B应不迟于对象A来变换。[0174]如所指出的,前驱图包括用于要变换的各设计对象的节点,并且图的边缘表示各对象节点之间的关系。系统针对由用户选择的各设计对象在该图中产生节点。另外,系统针对被识别为表4中的前驱的各设计对象向该图添加边缘。[0175]所结合表表4的各行表示要变换的对象与前驱对象之间的前驱关系。系统针对各这种前驱关系将边缘添加到前驱图。图19例示了示例性前驱图。应注意,已经为了确定变换顺序的目的而产生前驱关系1900。该关系可以仅存在于前驱图中。即,表示组1和组2图16中的对象的数据结构可以不必须存储与前驱关系1900有关的信息。[0176]将对象排序为变换顺序[0177]如1504处指出的(图15,在前驱关系已经被添加到前驱图之后,图中的对象被排序为变换顺序,以使得各前驱对象不迟于依赖它的所有对象出现。变换顺序可以由延伸穿过前驱图的节点的链表诸如正向和反向指针)、或由单独的有序列表、或由任何其他合适的指示符来表示。变换顺序在分区上的第一途径期间用于断开外部关系,并且它在第二途径期间用于对对象进行几何变换。[0178]前驱图可以通过任何合适的方法来排序。现在将描述两个示例性方法。在宽度优先方法中,可以借助要变换的对象的列表来进行多个途径不与被描述为对这里所述的对象进行变换的两途径方法混淆)。在各途径期间,可以向列表添加已经添加所有前驱对象的对象。该排序方法在变换顺序列表中趋向于将不相关的对象放置在彼此附近。[0179]可以期望使用在变换顺序列表中将相关对象放置在彼此附近的深度优先排序方法。单途径可以通过前驱图来进行,以识别没有后继对象的所有对象(即,以识别不是任何其他对象的前驱的对象)。对于没有后继的各对象,可以调用递归函数来将对象添加到列表。函数对于对象的各前驱来调用自己,然后函数将对象添加到列表。由此,在将对象本身添加到列表之前将所有对象的前驱添加到列表。[0180]可以使两个或更多个对象相互关联,以便形成循环。图20中示出了这种关系的示例。循环可以在排序过程期间来检测。如果检测到循环,则给定循环的所有对象被分配到同一分区,以便一起来变换。[0181]每一个认为另一个对象是其前驱的两个对象被称为“互相前驱”。互相前驱对象被分配到同一分区。类似地,互相前驱对象的循环被分配到同一分区。[0182]一旦前驱图中的对象被排序,则可以从在经排序前驱图的开始处的对象开始且按排序顺序向图的末端继续来向连续分区分配对象。[0183]各分区中的对象的数量可以依赖是否发现循环或互相前驱对象。否则,可以基于一个或更多个准则选择分区中的对象的数量。例如,因为如果分区变换操作失败,则引起失败的对象的身份可能比较大变换操作失败时更容易确定,所以较小的分区趋于提高鲁棒性。然而,较小的分区变换操作暗示较大量的这种操作,这可能不利地影响数据库性能。分区可以包括少至一个设计对象。所有分区需要包含相等数量的对象。我发现一个设计对象的分区尺寸提供鲁棒性与性能之间的良好平衡。然而,可以使用其他组尺寸。[0184]对象可以被分配到在对象的经排序列表的头部处开始且继续直到所有对象被分配到各分区为止的分区。[0185]分区上的两个途径[0186]如在1404图14处指出的,在对象已经被排序为变换顺序且分成有序分区之后,按顺序处理有序分区,以如在图21中的流程图中概括且在这里更详细描述的在第一途径中断开外部关系,并且在第二途径中对对象进行几何变换。在第一途径期间,在第一循环中处理分区。循环的每个遍历处理一个分区。在2100处,选择下一顺序分区,并且在2102处处理所选分区,以切断分区中的对象的外部关系。图22中扩展2102处的处理,并且在下面更详细地说明。在2104处,重新计算依赖所处理对象的对象。在已经处理所选分区中的所有对象之后,在2106处向数据库提交变换,并且在2107处释放各对象的表示被加载到的主存储。循环的各遍历是原子操作。即,完成所有操作2100-2104或在2106处没有任何东西被提交到数据库。[0187]如果更多分区留待处理,则在2108处,控制返回到选择下一分区的2100。在已经处理了所有分区之后,控制转到2110。在2110处,如果至少一个分区尚未被成功处理,则控制转到2112。例如,如果在第一途径期间应被处理的一个或更多个对象只读,则未能完成处理,并且无法开始第二途径。另一方面,如果诸如由于停电而中断两途径处理,则在开始第二途径之后,在重新启动时不应再次执行第一途径。[0188]如果在2110处,在第一途径期间成功处理了所有分区,则控制转到第二途径的2114。在第二途径期间,在第二循环中处理分区。循环的每个遍历处理一个分区。在2114处,选择下一顺序分区,并且在2116处处理所选分区,以对分区中的对象进行几何变换。图22中扩展了2114处的处理,并且在下面更详细地说明。没有经处理对象依赖于任何外部对象,并且没有外部对象依赖于任何经处理对象。这是在第一途径期间执行的断开的结果。内部依赖可以存在于分区中的对象中。然而,这些依赖不受几何变换影响。因此,在该途径中对于各分区不需要依赖的重新计算。在已经处理了所选分区中的所有对象之后,在2118处向数据库提交变换,并且在2119处释放各对象的表示被加载到的主存储。循环的各遍历是原子操作。即,完成所有操作2114-2116或在2118处没有任何东西被提交到数据库。如果更多分区留待处理,则在2120处,控制返回到选择下一分区的2114。在已经处理了所有分区之后,控制转到2122。[0189]图22是描述了单个分区(“当前分区”)中的对象的处理的流程图(S卩,流程图在操作2102和2116图21上扩展)。图22所示的处理在两个途径中都执行,除了如所指出的。在2204处,将由用户指定为要被变换的设计对象(“初始对象”)从数据库316图3加载到存储中(“绑定”)。在2206处,来自任何前驱分区和任何后继分区的初始对象也绑定到存储中。[0190]在第一途径期间,前驱和后继分区中的对象被绑定到存储中,以促进外部关系的识别。从当前分区中的对象到前驱分区或后继分区中的对象的任何关系不是外部的。然而,从当前分区中的对象到既不在前驱分区也不在后继分区中的对象的关系是外部关系。[0191]如所指出的,一些对象具有下级对象。如果具有下级对象的对象被选择为变换,则放大分区,以包括下级对象。在2208处,将是在2204处或2206处被绑定的任何一个对象的下级的任何对象识别、绑定到存储中并添加到当前分区。下面提供与放大分区被称为“传播”的处理有关的更多细节。[0192]在2210处,如果当前分区中的所有对象不可写,则在2212处跳过当前分区。[0193]如所指出的,外部关系可以存在于两个对象之间。这两个对象中的一个被选择为变换,并且另一个不被选择为变换。例如,如果依赖对象被选择为几何变换,但依赖对象所依赖的对象(即,其前驱对象不被选择为变换,则在外部关系中涉及所选对象。类似地,如果独立对象被选择为几何变换,但其依赖对象中的一个或更多个不被选择为变换,则在外部关系中涉及所选对象。多个可选或另选方法可以用于处理外部关系。[0194]在优选实施方式中,外部关系被破坏(S卩,对象在2214处在第一途径期间与彼此断开)。依赖对象的处理可以依赖于域特定要求。例如,在一些情况下,如果依赖对象可以在没有到其前驱对象的关系的情况下存在,则依赖对象变得独立。另一方面,如果依赖对象在没有到其前驱的关系的情况下不存在,则删除依赖对象。在其他情况下,如由域特定要求所要求的不同地处理依赖对象。[0195]在另一个实施方式中,可以提示用户并给予用户将前驱对象添加到要变换的对象的列表的机会。在另一个实施方式中,可以在通知或不通知用户的情况下将前驱对象自动添加到要变换的对象的列表。企业工程系统可以包括用户可选或管理员可选参数,通过该参数,可以选择这些动作中的一个。[0196]在2216处,在第二途径期间,对当前分区中的对象进行变换。任何给定分区中的对象可以按任何顺序来变换。向数据库提交依赖于途径而表示外部关系已经断开的对象或已变换的对象的数据结构,如在2106和2118图21处指出的。如果所有操作成功,可以将分区的对象的状态设置为“已变换”。[0197]变换图[0198]在两个途径中的各分区的处理期间建立并使用变换图数据结构。可以在已处理分区之后解除分配数据结构。变换图数据结构在断开外部关系的同时且在对分区进行变换的同时存储对对象和对象之间的关系的参考。图23是变换图数据结构2300的一个实施方式的示意图。变换图数据结构2300包括两个部分:值部分2302和关系部分2304。在两个途径期间构造并使用同一种变换图数据结构2300。因此,以下描述应用于两个途径,加以必要的变更。[0199]值部分2302如图24所示的包括独立值条目的阵列。各值条目表示对象。各值条目可以由到值阵列的索引来唯一地标识。各值条目包括多个字段,这些字段包括源分区、旗标以及对象指针,如图25所示。源分区标识了对应对象所关联到的分区。源分区的可能值是:前驱、当前、后继以及无。旗标包含与分区有关的另外信息诸如,该值是初始对象还是下级对象)。一旦对象已被加载到存储中,则对象指针指向对象。[0200]如所指出的,针对各分区建立变换图数据结构2300。当前分区的所有对象的OID被输入到变换图数据结构2300中的各条目中。这些OID用于将对应的对象加载到存储中(绑定对象)。对于各个这种对象,将源分区设置为当前,以指示要变换的对象。另外,对于各个这种对象,针对各初始对象设置初始旗标。[0201]变换图的关系部分2304图23还包括条目的阵列,并且各条目可以由索引来唯一地标识。各关系条目表示两个对象之间的关系,并且包括关系指针和到具有由关系条目表示的关系的两个对象的两个索引(原点索引和目的地索引),如图26所示。原点索引将到关系的“原点”端处的对象的值条目的索引包含到值阵列2302中。目的地索引将到关系的“目的地”端处的对象的值条目的索引包含到值阵列2302中。关系指针包含到已经加载到存储中的关系的指针。[0202]包含由变换图数据结构2300中的OID表示的对象的前驱对象和后继对象的分区也绑定到存储中,并且这些对象的OID被添加到变换图数据结构2300。对于各个这种对象,设置初始旗标,并且将源分区设置为前驱或后继(根据具体情况)。前驱对象将已经在某一之前事务中(即,在较早的分区中)被变换,并且后继对象将在某一随后事务中(即,在稍后分区中被变换。[0203]在变换图数据结构2300中初始表示的对象是由用户选择的设计对象。然而,这些设计对象中的一些或所有可以包括下级对象。为当前分区中要变换的对象的下级的对象也应在同一分区中被变换。这些对象被绑定到存储中,并且将与这些下级对象有关的信息添加到变换图数据结构2300,以促进:(a检查下级对象是否可写访问;⑹必要时识别与其他对象的外部关系并断开这些外部关系,以及c对下级对象进行变换。[0204]被称为“传播”的处理将下级对象添加到变换图数据结构2300。探索变换图数据结构2300中的对象的所有关系来识别要添加的下级对象。各种关系包括定义应如何扩展变换图数据结构2300的元数据。创建设计对象的各任务302-306图3负责可以涉及其对象的关系并负责设置用于这些关系的元数据。核心平台301图3使用该元数据;由此,不需要利用这些关系的预知或与设计对象有关的特定信息构造核心平台301。[0205]变换图2300的关系部分2304中的各关系条目具有类型,这很像对象具有类。各关系类型还被称为关系定义具有一组特性。在表5中概括了这些特性。[0207]表6概括了表5中列出的特性的可能值。[0209]如果源分区被设置为当前,则表7管理传播。表7[0211]连接对象不属于任何设计对象。相反,连接对象为了连接设计对象的目的而存在于它们之间。连接对象为了连接两个设计对象的目的而创建。在断开两个设计对象时删除连接对象。连接对象既不是内部的,也不是外部的。表7中的星号指连接对象的该特殊处理。[0212]如果源分区是前驱或后继二者之一,则表8管理传播。[0213]表8[0214]在将目标对象添加到变换图数据结构2300时,也将从当前对象到目标对象的关系添加到变换图数据结构2300。[0215]虽然可以存在穿过变换图数据结构2300到给定对象的多个关系路径,但不将对象添加到变换图数据结构2300多于一次。然而,可以使到对象的第二路径或随后路径产生被更新的源分区。例如,在将对象第一次添加到变换图数据结构2300时,可以不设置对象的源分区。然而,在稍后的传播阶段,同一对象可以被发现为前驱对象或后继对象。在这种情形下,根据具体情况设置前驱分区和或后继分区。[0216]如所指出的,当前分区中的对象的下级对象被绑定到存储中,并且检查下级对象的访问控制。如果任何下级对象被发现为只读,则将分区标记为包含只读对象,结束分区的处理并针对分区设置由于只读对象而失败的事务状态。[0217]扩展到外部对象或扩展到连接对象的变换传播特性值指示关系在设计对象之间交叉且是用于断开的候选。如果关系的两个设计对象中的仅一个被选择为变换,则应断开关系。如所指出的,在其他实施方式中,可以提供其他类型的处理。[0218]如所指出的,索引字段包含到变换图数据结构2300中的原点对象的条目和目的地对象条目的索引。为了决定是否应断开关系,检查处于关系两端处的源分区值。如果在关系的一端处设置当前分区,则在当前分区的变换期间要对对应的对象进行变换。如果在关系的另一端处既未设置当前、前驱分区,也未设置后继分区,则尚未对远端对象进行变换,并且它将不在当前操作期间被变换。应断开这种关系。表9中概括了这些规则。表9[0220]如所指出的,对象类通过任务302-306图3来定义。由此,任务302-306定义用于对对象进行变换的方法。对于加旗标当前的变换图数据结构2300中的各对象,在第二途径期间调用对象的变换方法。[0221]在第一途径期间,在断开到对象的关系之后,计算函数依赖。对于已经使关系断开的所有对象调用依赖函数。这些函数中的一些更新当前分区内的其他依赖对象。这因为当前分区中的对象可写而可以进行。其他依赖函数将以其他方式更新后继分区中的对象。因此,后继分区中的这些对象相对于当前分区变得“过时(outofdate”。然后向数据库316图3提交所有变化。[0222]如所指出的,创建操作对象,以促进重新启动操作。例如,当前处理哪一个途径第一或第二)的指示被存储在操作对象中。另外,在已经分割对象的源列表之后,创建分区对象来表示各分区。在操作对象与分区对象之间创建关系。另外,在各分区对象分别与其前驱分区和后继分区的对象之间创建关系。在处理各分区的同时,将对应的分区对象绑定到存储中,并且更新其事务结果特性的值,如表10中概括的。_^no_[0224]如所指出的,在第二途径开始之前应满足特定条件。在第一途径期间应已经成功处理所有分区。各分区应具有断开或失败的事务结果值。如果任何一个分区具有只读1的事务结果值,则在第一途径期间遇到只读对象,并且可能需要用户介入来修正问题并重新启动操作。[0225]如果大几何变换未能成功完成,则操作和分区对象记录操作的当前状态。通常,在重新启动操作之前,用户可以采取一些修正行动诸如,重新启动出故障的服务器或修改只读对象,以使得它们可写)。重新启动可以以与可以发起新几何变换相同的方式来发起。开始新几何变换的软件通过查询数据库以确定之前变换操作的状态(即,通过查询操作和分区对象来开始。各变换操作可以由调用用户经由名称字段704图7来命名。用于发起几何变换的用户界面可以显示之前启动的操作的列表,并且用户可以选择失败的操作来重新启动操作。[0226]在重新启动操作时,将重新启动的操作的操作对象和所有分区对象绑定到存储中,并且处理从当前途径中的第一未处理的分区恢复。如上所述处理其他分区。失败的分区指示数据的问题,而不是用户可以控制的问题。可以受用户控制的、诸如只读数据的问题不被标记为失败。因为失败的操作无法由用户来改正,所以允许再次处理失败的分区几乎没有任何意义。[0227]只要需要,操作和分区对象即使在对应的操作成功完成之后也可以保持在数据库中,以提供历史记录,并且然后可以删除对象。[0228]示例[0229]以下假设示例例示了以上所描述的设备和方法的操作。为了说明的简单起见,示例包含随机少量的对象。然而,所涉及的原理可以应用于较大量的对象。[0230]示例涉及图27示意性例示的五个相互关联的设计对象:栗、管、柱、横梁以及管吊架PipeHanger。管连接到栗上的管口。管由管吊架支撑。管吊架附接到横梁。横梁连接到柱。假定用户指定所有这些对象除了栗)向东移动100米。同样假定用户具有到所有对象的写访问。[0231]变换处理包括识别各设计对象的所有前驱。栗是管的前驱。然而,因为将不移动栗,所以栗将不出现在前驱图中。柱是已连接横梁的前驱。横梁和管这两者是管吊架的前驱。[0232]前驱图由用于各设计对象管吊架等)的前驱的列表来构造。图28是与图27的对象对应的前驱图的示意表示。箭头指向各设计对象的前驱。[0233]前驱图的节点被排序成线性顺序,使得前驱如图29例示出现在后继之前。然后在两个通过中按指定顺序处理分区。在各途径期间,在各分区的处理完成时,向数据库提交经修改的对象。在第一途径期间,断开到外部对象(即,栗的关系。在第二途径期间,对各剩余的对象进行几何变换(即,向东移动100米)。各分区在单独的原子事务中被变换。现在将详细描述各事务。[0234]事务1涉及使分区1的对象移动,这涉及图30中示意性概括并指示的以下操作。在事务1的第一途径期间,切断外部关系,并且在第二途径期间,移动对象。在图30至图33中,由期间执行操作的途径识别两个途径中的仅一个途径期间执行的操作。图30至图33所示的其他操作在两个途径中的每一个途径期间执行。由此,分区1是事务1期间的当前分区。来自当前分区的初始对象柱和来自后继分区的初始对象横梁被加载到存储中并被添加到变换图。变换图通过传播来扩展。初始对象柱和横梁的传播将下级对象柱的端部端口1、端部端口2以及物理零件;和横梁的端部端口1、端部端口2以及物理零件绑定到存储中并绑定到变换图中。没有外部关系被识别到;因此,在第一途径期间没有关系被断开。在第一途径期间针对关系被断开的任何对象在该示例中为没有计算函数依赖。在第二途径期间对柱及其下级对象端部端口1、端部端口2以及物理零件进行变换(向东移动100米)。向数据库提交经修改经变换柱对象及其下级对象。[0235]如图31示意概括并指示的,事务2涉及使分区2的对象移动。在事务2的第一途径期间,切断外部关系,并且在第二途径期间,移动对象。分区2在事务2期间是当前分区。来自当前分区的初始对象柱和来自前驱分区(分区1的初始对象柱)以及来自后继分区(分区4的初始对象管吊架被加载到存储中并被添加到变换图。注意,因为管吊架对象依赖于当前分区中的对象横梁),所以后继分区是分区4。变换图通过传播来扩展。初始对象横梁、柱以及管吊架的传播将下级对象柱的端部端口1、端部端口2以及物理零件;横梁的端部端口1、端部端口2、物理零件以及面端口;以及管吊架的结构端口1、零件1、零件2以及管道系统端口)绑定到存储中并绑定到变换图中。没有外部关系被识别到;因此,在第一途径期间没有关系被断开。在第一途径期间针对关系被断开的任何对象在该示例中为没有计算函数依赖。在第二途径期间对横梁及其下级对象端部端口1、端部端口2、物理零件以及面端口)进行变换(向东移动100米)。向数据库提交经修改经变换)横梁对象及其下级对象。[0236]如图32示意概括并指示的,事务3涉及使分区3的对象移动。在事务3的第一途径期间,切断外部关系,并且在第二途径期间,移动对象。分区3是事务3期间的当前分区。来自当前分区的初始对象管和来自后继分区(分区4的初始对象管吊架被加载到存储中并被添加到变换图。当前分区没有前驱分区。变换图通过传播来扩展。初始对象管和管吊架)的传播将下级对象管的端部特征、法兰、连接、直线特征、直管以及端部特征;和管吊架的管道系统端口、零件1、零件2以及结构端口)绑定到存储中且绑定到变换图中。栗的栗管口与管的连接对象之间的关系3240被识别为外部关系,并且因此在第一途径期间断开。计算函数依赖。因为栗可以作为独立对象而存在,所以栗管口和或栗的参数在途径1期间被重新计算并被存储在数据库中。在第二途径期间对管及其下级对象端部特征、法兰、连接、直线特征、直管以及端部特征进行变换(向东移动100米)。向数据库提交经修改经变换管对象及其下级对象。[0237]如图33示意概括并指示的,事务4涉及使分区4的对象移动。在事务4的第一途径期间,切断外部关系,并且在第二途径期间,移动对象。分区4是事务4期间的当前分区。来自当前分区的初始对象管吊架和来自前驱分区(分区2和分区3的初始对象横梁和管被加载到存储中并被添加到变换图。当前分区没有后继分区。变换图通过传播来扩展。初始对象管吊架、横梁以及管)的传播将下级对象管吊架的管道系统端口、结构端口、零件1以及零件2;横梁的端部端口1、端部端口2、物理零件以及面端口;以及管的端部特征、法兰、连接、直线特征、直管以及端部特征绑定到存储中并绑定到变换图中。没有外部关系被识别到;因此,在第一途径期间没有关系被断开。在第一途径期间针对关系被断开的任何对象在该示例中为没有计算函数依赖。在第二途径期间对管吊架及其下级对象端部端口、零件1、零件2以及管道系统端口)进行变换(向东移动100米)。没有后继分区。向数据库提交经修改经变换管吊架对象及其下级对象。[0238]作为事务1-4的结果,已经移动了所选对象。已经将未被选择为变换的栗对象与管断开。[0239]两途径实施方式[0240]图36至38包含示意性地例示本发明的两途径实施方式的操作的流程图。在3600处,接受选择要进行几何变换的对象和要执行的几何变换的类型的指示的用户输入。在3602处,对于各所选对象,自动识别所有前驱。在3604处,自动生成前驱图。在3606处,自动生成所选对象的有序列表,使得对象不早于它们的前驱出现在列表中。[0241]在3608处,将有序列表自动分成分区,以使得所选对象是不早于它们各自前驱的分区的成员。在3610处,自动识别任何下级对象,并且在3612处,如这里关于“传播”讨论的,将下级对象添加到它们各自的设计对象出现的分区。[0242]在3614处,将足以使得能够在系统故障后重新启动几何变换的、与有序分区有关的信息被自动存储在非易失性存储中。[0243]在3616处,在分区上的第一途径中,自动断开外部关系。在3618处,对于具有断开关系的各对象,自动重新计算函数依赖。在3620处,在分区上的第二途径中,对对象进行几何变换。[0244]图37的流程图中更详细地示意性例示了第一途径3616的处理。在3700处,将所选对象的表示从数据库加载到主存储中。在3702处,将下级对象的表示从数据库加载到主存储中。在3704处,自动识别外部关系。在3706处,修改对象的表示,以切断外部关系。在3708处,将对象的经修改表示存储回数据库中。[0245]图38的流程图中更详细地示意性例示了第二途径3620图36的处理。在3800处,将所选对象的表示从数据库加载到主存储中。在3802处,将下级对象的表示从数据库加载到主存储中。在3804处,修改所选对象的表示,以对对象进行几何变换。在3806处,修改下级对象的表示,以对对象进行几何变换。在3708处,将对象的经修改表示存储回数据库中。[0246]另选实施方式:分区上的单途径[0247]在本发明的另选实施方式中,在分区上仅进行一个途径。随着处理各分区,断开与分区中的对象的外部关系。在同一事务中,切断关系,并且对对象进行变换。每当切断关系时,应重新计算依赖对象。在该实施方式中,在各事务结束时执行重新计算。“冻结”后继分区中的对象,以防止在错误的时间重新计算它们。随着对各分区进行变换,将后继分区中的所有对象及其各自的下级对象,若有的话置于冻结状态。代替立即重新计算被冻结的对象,系统生成各被冻结对象的“待办”记录,这有效地推迟对被冻结的对象进行变换,直到对其各分区进行变换为止。将信息存储在变换图数据结构2300图23中,以促进冻结这些对象和其他目的。[0248]将后继分区中的对象绑定到存储中,因此可以冻结它们,以在正对当前分区进行变换的同时防止重新计算。例如,随着对分区202图2进行变换,冻结分区206中的全部对象。如果被冻结的对象依赖于另一个对象,则不响应于被冻结对象的独立对象被修改而立即重新计算被冻结的对象。因此,可以认为与对象有关的信息过时。[0249]通常,过时对象在完成当前分区之后不久在分区中被变换。由此,待办记录通常在它们被创建之后不久被处理并删除。然而,如果诸如通过用户调用取消控制或由于硬件或软件故障而中断大几何变换,则待办记录指示在重新启动操作时应执行哪些操作。[0250]在已经对最后一个分区进行变换之后,如果任何待办记录剩余,则将故障指示器设置为指示至少一个被冻结的对象未被变换。另一方面,如果没有待办记录留下,则设置成功指示器。[0251]可以冻结一些对象以支持断开到其他对象的关系。例如,未被变换但与要变换的对象有关的对象被称为外部对象。在图1所示的示例中,对象Π、Υ1以及Zl是外部对象,并且冻结与外部对象有关的对象诸如,对象Α2、Β1以及D3,以促进断开关系。[0252]随着处理对象的各分区,前驱和后继分区中的对象被置于冻结状态,并且对于各这种冻结对象生成待办记录,该待办记录有效地推迟对被冻结的对象进行变换,直到对其各分区进行变换为止。在最终对被冻结的对象进行变换时,删除其对应的待办记录。由此,在已经对所有分区进行变换之后,没有待办记录应剩余。待办记录在操作2102图21内生成并删除。[0253]在2206图22处,来自任何前驱分区和任何后继分区的初始对象也绑定到存储中,并且这些对象被冻结。已经对前驱分区中的对象进行变换(即,在较早的事务中)。冻结这些对象,以防止双重地对它们进行变换(即,第一次作为由用户选择为变换的结果以及第二次作为是被选择为变换的对象的前驱对象的结果)。[0254]图34A至图34B中的流程图示意性地例示了根据该另选实施方式的、用于对在面向对象的企业工程系统内表示的多个对象进行几何变换的计算机化方法。[0255]多个对象中的至少一个是多个对象中的另一个的前驱。在3400处,接受选择要变换的对象并指示变换的类型诸如,移动或旋转)的用户输入。在3402处,对于各所选对象,自动识别任何前驱对象。在3404处,如果任何外部对象与所选对象有关,则控制转到断开关系的3406。[0256]在3408处,将所选对象自动分成对象的顺序分区,以使得各对象的前驱对象若有的话处于同一分区中或处于之前的分区中。在3410处,生成前驱图。在3412处,循环开始执行,并且按顺序对于各分区遍历循环一次。在3414处,保存足以重新启动分区的几何变换的、与分区有关的信息。在3416处,执行下级对象的搜索。如果发现为分区中的对象下级的任何对象,则控制转到将下级对象添加到分区的3418。在3420处,根据由用户指示的变换对分区中的对象进行几何变换。对于分区中的各对象,在3422处,如果对象具有任何后继对象,则临时地使得后继对象只读冻结)。类似地,在3424处,如果分区中的任何对象具有前驱对象,则临时地使得前驱对象只读。对于被临时使得只读的各对象,在3426处,生成待办项。[0257]如果存在更多的分区要处理,则在3428处,控制返回到3424,否则,控制转到3430。在3430处,如果已经对被临时使得只读的对象中的任何一个进行变换,则控制转到删除与对象对应的待办项的3434。[0258]几何变换系统[0259]图35包含根据本发明的实施方式的系统的示意框图,该系统用于对在面向对象的企业工程系统内表示的多个对象进行几何变换。多个对象中的至少一个是多个对象中的另一个的前驱。系统包括用户界面3500,该用户界面被配置为从用户接受第一输入。输入选择要进行几何变换的多个对象。用户界面3500还被配置为从用户接受第二输入,该第二输入指示要对所选对象执行的几何变换的类型。识别模块3502联接到用户界面3500。识别模块3502被配置为对于各所选对象,自动识别与所选对象对应的任何前驱对象(S卩,其中,所选对象的至少一个参数的值函数地依赖于任何前驱对象的至少一个参数。)分割模块3504联接到识别模块3502,并且被配置为将所选对象自动分成对象的多个有序分区。对于任何给定对象,对象的前驱对象中的每一个处于与给定对象相同的分区中或之前的分区中。分区信息可以被存储在分区列表3505中或任何其他合适的储存器中。[0260]变换模块3506联接到分割模块3504,并且被配置为根据几何变换的所指示类型来对对象进行几何变换。变换模块3506在分区上进行两个途径,每个途径按分区顺序进行。在第一途径中,变换模块3506断开外部关系,并且重新计算受外部关系的断开影响的函数依赖。在第二途径中,变换模块3506按分区顺序每分区地对对象进行变换。可选的冻结模块3508联接到变换模块3506,并且被配置为每分区地临时使得分区中各对象的任何后继对象只读,并且临时地使得分区中各对象的任何前驱对象只读。对于被临时地使得只读的各对象,冻结模块3508被配置为生成可选的待办列表3510中的对应待办项。可选的清理模块3512联接到变换模块3506。清理模块3512被配置为在随后对被临时使得只读的对象中的任何一个进行变换时删除对应的待办项。[0261]传播模块3514联接到识别模块3502。传播模块3514被配置为对于各分区,识别分区中的对象的任何下级对象。识别模块3502将所识别的下级对象添加到分区。变换模块3506被配置为根据所指示类型的几何变换对所添加的下级对象进行几何变换。[0262]处理控制模块3516联接到变换模块3506,并且被配置为按分区顺序处理分区中的至少两个。处理控制模块3516被配置为对于各分区保存与分区有关的信息。所保存的信息可以包括足以重新启动对分区中的对象进行几何变换的信息。信息可以被保存在对象数据库3518中或任何其他合适的储存器中。处理控制模块3516还使得变换模块3506在处理随后分区之前根据所指示类型的几何变换来对分区中的对象进行几何变换。[0263]分割模块3504被配置为生成使各所选对象与所有所选对象的前驱对象有关的前驱图3520。[0264]修剪模块3522被配置为识别与所选对象中的任何一个有关的至少一个外部对象。修剪模块3522断开所识别外部对象与所选对象之间的关系。[0265]虽然对象数据库3518、分区列表3505以及前驱图3520被示出为单独的数据库,但这些元素可以以任何合适的形式诸如,一个或更多个相关数据库中的表、存储器中的数据结构、非相关数据库文件等来存储。此外,这些元素中的一些或全部可以被组合在单个数据储存器中,或者它们可以在元素的其他元素中被实施为字段、指针、值等。[0266]以上所描述的方法可以通过计算机系统执行在存储器中存储的适当指令来执行,并且以上所描述的系统可以通过计算机系统执行在存储器中存储的适当指令来实施,该计算机系统包括处理器。用于对大量对象进行几何变换的设备已经被描述为包括受存储器中存储的指令控制的处理器。存储器可以为适于存储控制软件或其他指令和数据的随机存取存储器RAM、只读存储器ROM、闪存或任何其他存储器或其组合。已经参照流程图和或框图描述了由变换方法和设备执行的功能中的一些。本领域技术人员应容易地理解,流程图或框图的各块或块的组合的全部或部分的功能、操作、决策等可以被实施为计算机程序指令、软件、硬件、固件或其组合。本领域技术人员还应容易地理解,定义本发明的功能的指令或程序可以以许多形式递送到处理器,这些形式包括但不限于:永久存储在有形非暂时性不可写存储介质例如,诸如ROM的计算机内的只读存储装置、或诸如CD-ROM或DVD盘的可由计算机IO附件读取的装置的信息、可变地存储在有形非暂时性可写存储介质例如,软盘、可移动闪存以及硬盘驱动器上的信息或借助通信介质包括有线或无线计算机网络)输送到计算机的信息。另外,虽然本发明可以在软件中具体实施,但实施本发明所必需的功能可以可选地或另选地部分或整体使用固件和或硬件部件诸如,组合逻辑、专用集成电路ASIC、现场可编程门阵列FPGA或其他硬件或硬件、软件和或固件部件的某一组合)来具体实施。[0267]虽然借助以上所描述的示例性实施方式描述了本发明,但本领域普通技术人员将理解,可以在不偏离这里所公开的发明概念的情况下进行对所例示实施方式的修改和变化。例如,虽然已经参照流程图描述了变换机制的一些方面,但本领域技术人员应容易地理解,流程图的各块或块的组合的全部或部分的功能、操作、决策等可以被组合、分成单独的操作或按其他顺序来执行。而且,虽然关于各种例示性数据结构描述了实施方式,但本领域技术人员将认识到,系统可以使用各种数据结构来具体实施。此外,可以以以上未列出的方式组合所公开的方面、或者这些方面的部分。因此,本发明不应被视为限于所公开的实施方式。

权利要求:1.一种用于对在存储受限的面向对象的企业工程系统内表示的对象的子集进行几何变换的计算机实施的方法,所述方法包括处理器进行以下步骤:在计算机上从用户接受输入,所述输入指定要进行几何变换的多个所选对象和要对所述所选对象执行的几何变换的类型的指示,其中,所述所选对象的表示被存储在面向对象的企业工程系统数据库中,但所述计算机具有不足以同时存储所有所述所选对象的所述表不的主存储;对于各所选对象,根据以下内容在所述所选对象中自动识别所述所选对象与其具有前驱-后继关系的所有前驱对象:(a在所述前驱对象的参数的对应值变为变化值时根据工程关系必须重新计算所述所选对象的参数的值,以及b所述前驱-后继关系从所述方法的开始之前到所述方法的完成之后存在;基于所述所选对象的前驱自动生成所述所选对象的有序列表;将所述列表自动分成一组有序分区,其中,各所选对象是不比所有其前驱对象的分区更早的分区的成员;在第一途径中,对于按顺序的各分区:从所述数据库将所述分区的各对象的表示加载到所述计算机的所述主存储中;自动识别所述分区的所述对象与不是所述多个所选对象的成员的任何对象之间的任何关系;对于各自动识别的关系,自动修改所述主存储中的对应对象的表示,以切断所述关系,从而在所述主存储中创建对象的多个第一经修改表示;将对象的所述多个第一经修改表示从所述主存储存储到所述数据库中;以及释放各对象的所述表示被加载到的所述主存储;在完成所述第一途径之后,在第二途径中,对于按顺序的各分区:从所述数据库将所述分区的各对象的表示加载到所述计算机的所述主存储中;对于所述分区的各对象,修改所述主存储中的所述对象的所述表示,以根据要执行的几何变换的所述类型对所述对象进行几何变换,从而在所述主存储中创建对象的多个第二经修改表示;将对象的所述多个第二经修改表示从所述主存储存储到所述数据库中;以及释放各对象的所述表示被加载到的所述主存储。2.根据权利要求1所述的方法,其中,自动生成所述所选对象的所述有序列表的步骤包括自动生成所述有序列表,以使得各所选对象不早于所有其前驱对象地出现在所述列表中。3.根据权利要求1所述的方法,其中,自动生成所述所选对象的所述有序列表的步骤包括自动生成所述所选对象的对象标识符的有序列表。4.根据权利要求1所述的方法,所述方法还包括以下步骤:对于有序的一组分区中的至少一个分区:识别所述分区中的所述所选对象的任何下级对象;将所识别的下级对象添加到所述分区;从所述数据库将所述分区的各下级对象的表示加载到所述计算机的所述主存储中;修改所述主存储中的所述下级对象的所述表示,以根据要执行的几何变换的所述类型来对所述下级对象进行几何变换;以及释放各下级对象的所述表示被加载到的所述主存储。5.根据权利要求1所述的方法,所述方法还包括以下步骤:在非易失性存储器中自动保存与所述一组有序分区有关的信息,其中,所述信息足以使得能够在系统故障之后重新启动所述主存储中的所述对象的所述表示的修改,以根据要执行的几何变换的所述类型来对所述对象进行几何变换。6.根据权利要求1所述的方法,其中,将所述列表自动分成一组有序分区的步骤包括生成前驱图,所述前驱图使各所选对象与所有所述所选对象的前驱对象有关。7.根据权利要求1所述的方法,所述方法还包括以下步骤:对于关系被切断的各对象,自动重新计算所述对象的函数依赖。8.—种用于对在存储受限的面向对象的企业工程系统内表示的对象的子集进行几何变换的系统,所述系统包括:面向对象的企业工程系统数据库,该面向对象的企业工程系统数据库存储对象的表示;用户界面,该用户界面从用户接受输入,其中,所述输入指定要进行几何变换的、在所述数据库中表示的所述对象中的多个所选对象和要对所述所选对象执行的几何变换的类型的指示;计算机,该计算机包括主存储,其中,所述主存储不足以同时存储所有所述所选对象的所述表示;识别模块,该识别模块联接到所述用户界面和所述数据库,对于各所选对象,该识别模块根据以下内容在所述所选对象中自动识别所述所选对象与其具有前驱-后继关系的所有前驱对象:(a在所述前驱对象的参数的对应值变为变化值时根据工程关系必须重新计算所述所选对象的参数的值,以及⑹所述前驱-后继关系从接收所述用户输入之前到已经对所述所选对象进行几何变换之后存在;对象排序模块,该对象排序模块联接到所述识别模块,该对象排序模块基于所述所选对象的前驱自动生成所述所选对象的有序列表;分割模块,该分割模块联接到所述对象排序模块,该分割模块将所述列表自动分成一组有序分区,其中,各所选对象是不比所有其前驱对象的分区更早的分区的成员;关系终止器,该关系终止器联接到所述分割模块,该关系终止器自动处理按顺序的各分区,在第一途径期间,所述关系终止器:从所述数据库将所述分区的各对象的表示加载到所述计算机的所述主存储中;自动识别所述分区的所述对象与不是所述多个所选对象的成员的任何对象之间的任何关系;对于各自动识别的关系,自动修改所述主存储中的对应对象的表示,以切断所述关系,从而在所述主存储中创建对象的多个第一经修改表示;将对象的所述多个第一经修改表示从所述主存储存储到所述数据库中;以及释放各对象的所述表示被加载到的所述主存储;几何变换器,该几何变换器联接到所述关系终止器,该几何变换器自动处理按顺序的各分区,在完成所述第一途径之后,在第二途径期间,所述几何变换器:从所述数据库将所述分区的各对象的表示加载到所述计算机的所述主存储中;对于所述分区的各对象,修改所述主存储中的所述对象的所述表示,以根据要执行的几何变换的所述类型对所述对象进行几何变换,从而在所述主存储中创建对象的多个第二经修改表示;将对象的所述多个第二经修改表示从所述主存储存储到所述数据库中;以及释放各对象的所述表示被加载到的所述主存储。9.根据权利要求8所述的系统,其中,所述对象排序模块自动生成所述有序列表,以使得各所选对象不早于所有其前驱对象地出现在所述列表中。10.根据权利要求8所述的系统,其中,所述对象排序模块自动生成所述所选对象的对象标识符的有序列表。11.根据权利要求8所述的系统,所述系统还包括传播模块,该传播模块联接到所述识别模块,对于各分区,该传播模块:识别所述分区中的所述所选对象的任何下级对象;将所识别的下级对象添加到所述分区;从所述数据库将所述分区的各下级对象的表示加载到所述计算机的所述主存储中;修改所述主存储中的所述下级对象的所述表示,以根据要执行的几何变换的所述类型来对所述下级对象进行几何变换;以及释放各下级对象的所述表示被加载到的所述主存储。12.根据权利要求8所述的系统,所述系统还包括处理控制模块,该处理控制模块联接到所述几何变换器,该处理控制模块将与所述一组有序分区有关的信息自动保存在非易失性存储器中,其中,所述信息足以使得所述系统能够在系统故障之后重新启动所述主存储中的所述对象的所述表示的修改,以根据要执行的几何变换的所述类型来对所述对象进行几何变换。13.根据权利要求8所述的系统,其中,所述分割模块生成前驱图,所述前驱图使各所选对象与所有所述所选对象的前驱对象有关。14.根据权利要求8所述的系统,所述系统还包括对象重新计算器,该对象重新计算器联接到所述关系终止器,对于关系被切断的各对象,该对象重新计算器自动重新计算所述对象的函数依赖。15.—种用于对在存储受限的面向对象的企业工程系统内表示的对象的子集进行几何变换的计算机程序产品,所述计算机程序产品包括上面存储有计算机指令的非暂时性计算机可读介质,所述计算机指令在由处理器执行时,使得所述处理器:在计算机上从用户接受输入,所述输入指定要进行几何变换的多个所选对象和要对所述所选对象执行的几何变换的类型的指示,其中,所述所选对象的表示被存储在面向对象的企业工程系统数据库中,但所述计算机具有不足以同时存储所有所述所选对象的所述表不的主存储;对于各所选对象,根据以下内容在所述所选对象中自动识别所述所选对象与其具有前驱-后继关系的所有前驱对象:(a在所述前驱对象的参数的对应值变为变化值时根据工程关系必须重新计算所述所选对象的参数的值,以及⑹所述前驱-后继关系从所述指令的执行之前到所述指令的执行之后存在;基于所述所选对象的前驱自动生成所述所选对象的有序列表;将所述列表自动分成一组有序分区,其中,各所选对象是不比所有其前驱对象的分区更早的分区的成员;在第一途径中,对于按顺序的各分区:从所述数据库将所述分区的各对象的表示加载到所述计算机的所述主存储中;自动识别所述分区的所述对象与不是所述多个所选对象的成员的任何对象之间的任何关系;对于各自动识别的关系,自动修改所述主存储中的对应对象的表示,以切断所述关系,从而在所述主存储中创建对象的多个第一经修改表示;将对象的所述多个第一经修改表示从所述主存储存储到所述数据库中;以及释放各对象的所述表示被加载到的所述主存储;在完成所述第一途径之后,在第二途径中,对于按顺序的各分区:从所述数据库将所述分区的各对象的表示加载到所述计算机的所述主存储中;对于所述分区的各对象,修改所述主存储中的所述对象的所述表示,以根据要执行的几何变换的类型对所述对象进行几何变换,从而在所述主存储中创建对象的多个第二经修改表示;将对象的所述多个第二经修改表示从所述主存储存储到所述数据库中;以及释放各对象的所述表示被加载到的所述主存储。

百度查询: 赫克斯冈技术中心 面向对象环境中的对象进行几何变换的方法、系统和介质

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。