书签 分享 收藏 举报 版权申诉 / 54

使用多事务技术对面向对象环境中的对象执行几何变换的方法和装置.pdf

  • 上传人:111****11
  • 文档编号:626004
  • 上传时间:2018-02-26
  • 格式:PDF
  • 页数:54
  • 大小:8.63MB
  • 摘要
    申请专利号:

    CN201380007800.X

    申请日:

    2013.01.24

    公开号:

    CN104081400A

    公开日:

    2014.10.01

    当前法律状态:

    撤回

    有效性:

    无权

    法律详情:

    发明专利申请公布后的视为撤回IPC(主分类):G06F 17/50申请公布日:20141001|||实质审查的生效IPC(主分类):G06F 17/50申请日:20130124|||公开

    IPC分类号:

    G06F17/50; G06F17/30

    主分类号:

    G06F17/50

    申请人:

    鹰图公司

    发明人:

    S·D·赫罗尔德

    地址:

    美国阿拉巴马州

    优先权:

    2012.02.09 US 61/596,797

    专利代理机构:

    北京三友知识产权代理有限公司 11127

    代理人:

    吕俊刚;刘久亮

    PDF完整版下载: PDF下载
    内容摘要

    可以在模型数据库中通过根据准则将对象划分成许多有序分区并且作为原子操作变换每个分区中的对象来对诸如表示面向对象企业工程系统中的横梁和立柱的对象这样的大量对象进行几何变换。要变换的对象被组织成有序的分区,并且以顺序次序对分区进行变换,使得给定对象的所有前趋在该给定对象之前或者在与给定对象相同的操作中变换。如果大的变换操作在所有小的变换操作已完成之前异常地终止,则模型数据库仍然处于一致状态。可以从中断点恢复变换操作。此外,可以变换的对象的数量不受系统中可用的存储器的量约束。

    权利要求书

    1.  一种用于对在面向对象企业工程系统内表示的多个对象进行几何变换的由计算机实施的方法,其中所述多个对象中的至少一个对象是所述多个对象中的另一个对象的前趋,所述方法包括处理器执行以下操作:
    从用户接受选择要几何变换的所述多个对象的输入和要对所选对象执行的几何变换的类型的指示;
    对于每个所选对象,在所述多个对象中自动地标识所选对象的任何前趋对象,其中,所选对象的至少一个参数的值功能上依赖于所述任何前趋对象的至少一个参数;以及
    将所选对象自动地划分成多个有序的对象分区,使得对于任何给定对象,所述对象的前趋对象中的每个对象在以下至少一个中:与所述给定对象相同的分区和前面的分区。

    2.
      根据权利要求1的方法,所述方法进一步包括根据几何变换的所述类型的所述指示逐个对象分区以分区次序对所述对象进行几何变换。

    3.
      根据权利要求2的方法,所述方法进一步包括,在对给定分区中的所述对象进行几何变换时:
    暂时使所述分区中的每个对象的任何后继对象变得只读;以及
    暂时使所述分区中的每个对象的任何前趋对象变得只读。

    4.
      根据权利要求3的方法,所述方法进一步包括:
    对于暂时变得只读的每个对象,生成对应的待办项目;以及
    如果所述暂时变得只读的对象中的任一个对象随后被变换,则删除所述对应的待办项目。

    5.
      根据权利要求2的方法,所述方法进一步包括,在对给定分区中的所述对象进行几何变换时:
    标识所述分区中的所述对象的任何下级对象;
    将标识出的下级对象添加到所述分区;以及
    根据几何变换的所述类型的所述指示对所添加的下级对象进行几何变换。

    6.
      根据权利要求1的方法,所述方法进一步包括以分区次序处理所述分区中的 至少两个,其中,所述处理包括:
    保存关于所述分区的信息;以及
    在处理后续分区之前,根据几何变换的所述类型的所述指示对所述分区中的所述对象进行几何变换;
    其中,所保存的信息包括足以重新开始对所述分区中的所述对象进行几何变换的信息。

    7.
      根据权利要求1的方法,其中,将所选对象自动地划分成多个有序的对象分区包括生成将每个所选对象与所选对象的所有前趋对象联系起来的前趋图。

    8.
      根据权利要求1的方法,所述方法进一步包括:
    标识与所选对象中的任一个相关的至少一个外部对象;以及
    断开标识出的外部对象与所选对象之间的关系。

    9.
      一种用于对在面向对象企业工程系统内表示的多个对象进行几何变换的系统,其中所述多个对象中的至少一个对象是所述多个对象中的另一个对象的前趋,所述系统包括:
    用户接口,该用户接口被构造成从用户接受选择要几何变换的多个对象的第一输入并且用于从用户接受指示要对所选对象执行的几何变换的类型的第二输入;
    标识模块,该标识模块被耦接到所述用户接口并且构造成对于每个所选对象,自动地标识与所选对象相对应的任何前趋对象,其中,所选对象的至少一个参数的值功能上依赖于所述任何前趋对象的至少一个参数;
    分割模块,该分割模块耦接到所述标识模块并且构造成将所选对象自动地划分成多个有序的对象分区,使得对于任何给定对象,所述对象的前趋对象中的每个对象在以下至少一个中:与所述给定对象相同的分区和前面的分区。

    10.
      根据权利要求9的系统,所述系统进一步包括变换模块,该变换模块耦接到所述分割模块并且构造成根据所指示的几何变换的类型逐个对象分区以分区次序对所述对象进行几何变换。

    11.
      根据权利要求10的系统,所述系统进一步包括冻结模块,该冻结模块耦接到所述变换模块并且构造成,逐个分区:
    暂时使所述分区中的每个对象的任何后继对象变得只读;以及
    暂时使所述分区中的每个对象的任何前趋对象变得只读。

    12.
      根据权利要求11的系统,其中,所述冻结模块被构造成对于暂时变得只读的每个对象,生成对应的待办项目;并且所述系统进一步包括:
    清除模块,该清除模块耦接到所述变换模块并且构造成,如果所述暂时变得只读的对象中的任一个对象随后被变换,则删除所述对应的待办项目。

    13.
      根据权利要求10的系统,所述系统进一步包括传播模块,该传播模块耦接到所述标识模块并且构造成,对于每个分区:
    标识所述分区中的所述对象的任何下级对象;以及
    将标识出的下级对象添加到所述分区;其中:
    所述变换模块被构造成根据所指示的几何变换的类型对所添加的下级对象进行几何变换。

    14.
      根据权利要求9的系统,所述系统进一步包括处理控制模块,该处理控制模块耦接到所述变换模块并且构造成以分区次序处理所述分区中的至少两个,其中,所述处理控制模块被构造成,对于每个分区:
    保存关于所述分区的信息,其中,所保存的信息包括足以重新开始对所述分区中所述对象进行几何变换的信息;并且
    使所述变换模块在处理后续分区之前根据所指示的几何变换的类型对所述分区中的所述对象进行几何变换。

    15.
      根据权利要求9的系统,其中,所述分割模块被构造成生成将每个所选对象与所选对象的前趋对象联系起来的前趋图。

    16.
      根据权利要求9的系统,所述系统进一步包括修剪模块,该修剪模块被构造成:
    标识与所选对象中的任一个相关的至少一个外部对象;以及
    断开标识出的外部对象与所选对象之间的关系。

    17.
      一种用于在计算机系统上使用以复制在面向对象企业工程系统内表示的多个前趋和后继对象的计算机程序产品,其中每个后继对象与前趋对象具有前趋关系,所述计算机程序产品包括:
    非暂时性计算机可读介质,在该非暂时性计算机可读介质存储了计算机指令使得,当被处理器执行时,所述指令使所述处理器:
    从用户接受选择要几何变换的所述多个对象的输入和要对所选对象执行的几何 变换的类型的指示;
    对于每个所选对象,在所述多个对象中自动地标识所选对象的任何前趋对象,其中,所选对象的至少一个参数的值功能上依赖于所述任何前趋对象的至少一个参数;以及
    将所选对象自动地划分成多个有序的对象分区,使得对于任何给定对象,所述对象的前趋对象中的每个对象在以下至少一个中:与所述给定对象相同的分区和前面的分区。

    18.
      根据权利要求17的计算机程序产品,其中,所述指令使所述处理器根据几何变换的类型的指示逐个对象分区以分区次序对所述对象进行几何变换。

    19.
      根据权利要求18的计算机程序产品,其中,所述指令使所述处理器:
    暂时使所述分区中的每个对象的任何后继对象变得只读;以及
    暂时使所述分区中的每个对象的任何前趋对象变得只读。

    20.
      根据权利要求19的计算机程序产品,其中,所述指令使所述处理器:
    对于暂时变得只读的每个对象,生成对应的待办项目;并且
    如果所述暂时变得只读的对象中的任一个对象随后被变换,则删除所对应的待办项目。

    21.
      根据权利要求18的计算机程序产品,其中,所述指令使所述处理器在对给定分区中的所述对象进行几何变换时:
    标识所述分区中的所述对象的任何下级对象;
    将标识出的下级对象添加到所述分区;以及
    根据几何变换的所述类型的所述指示对所添加的下级对象进行几何变换。

    说明书

    使用多事务技术对面向对象环境中的对象执行几何变换的方法和装置
    相关申请的交叉引用
    本申请要求于2012年2月9日提交的发明名称为“Method and Apparatus for Performing a Geometric Transformation on Objects in an Object-Oriented Environment using a Multiple-Transaction Technique”的美国临时专利申请No.61/596,797的权益,其整个内容用于所有目的通过引用并入在本文中。
    技术领域
    本发明涉及计算机辅助设计和计算机辅助制造(CAD/CAM)软件系统,并且更具体地,涉及用于对这样的系统所使用的数据库中的大量对象和关系执行几何变换的方法和装置。
    背景技术
    企业工程系统,有时也被称为空间信息管理(SIM)系统,是帮助二维(2D)和三维(3D)建模与可视化的计算机辅助设计(CAD)系统。这些系统被用在工业工厂(诸如炼油厂和发电站)以及其它大型复杂结构(诸如高层建筑物、船舶以及采矿和其它材料处理设施)的设计、施工、运营以及改建中。利用它们的图形用户接口(GUI),企业工程系统使得设计者能够对结构、管道、电力、供暖、通风与空调(HAVC)以及其它复杂的系统进行布局并且在施工或运营的各种阶段使工程的所有或选择部分可视化。
    大多数现代企业工程系统利用面向对象范例,其中称作“对象”的软件构造表示现实项目,诸如横梁、墙壁、地板、管路、阀门、导管、开关、风扇、输送管等等。一些对象表示仅仅用于设计者的方便而不表示物理项目的项目,诸如坐标网格系统。
    对象典型地被用软件实施为数据结构(有序的数据元素组),其存储标识所表示的项目的类型的信息、以及关于由每个对象表示的特定项目的信息(诸如适合于每个 项目的长度、宽度、颜色、容量等)。对象典型地还包括“方法”,所述方法是对对象的数据元素进行操纵和/或将关于对象的信息返回给调用方的例程。表示用户的问题域内项目,并且为用户可见,并且能够由用户经由SIM系统用户接口(UI)操纵的对象有时被称为“设计对象”,以将它们和下级对象(在下面描述)或可能不为用户直接可见的但是仍然是模型所必需的对象进行区分。
    许多设计对象由其它(“下级”)对象组成。例如,横梁可以由单构件系统和许多下级对象组成,所述下级对象包括:框架连接件(表示横梁如何在每端连接到其它构件)、零件(表示最后的物理对象)、端口(表示沿着横梁的连接点)以及其它对象。横梁中的开口由相应的附加的对象表示。如果横梁的一端被修整,则修整操作也由对象表示。在一些情况下,当用户将对象添加到模型时,SIM系统自动地将适当的下级对象添加到模型。共同地,设计对象及其相关的下级对象被称为“设计对象组”。
    大多数对象借助于关系链接到其它对象。在不同的上下文中使用不同类型的关系。例如,一种关系被用来将对象布置成“系统”的逻辑层次。当管道被连接到设备上的喷嘴时,使用不同类型的关系。第三类型的关系被用来将横梁连接到立柱。
    对象之间的关系是有序的概念。关系可以指示对应的对象被添加到模型的逻辑次序,其可以不同于现实项目将被构造的次序。例如,当对发电厂建筑物建模时,设计者典型地建立网格坐标系统。接着设计者添加立柱并且将立柱放置在网格系统内的期望坐标处。稍后,设计者在立柱下面添加底脚。然而,当实际地构建发电厂时,在能够将立柱设置在底脚上之前,建造底脚。
    对象之间的另一类型的关系是“功能依赖”。功能依赖可以存在于相关对象(“独立”对象和一个或更多个“从属”对象)之间。当独立对象改变时,所有从属对象也自动地改变。在先前的立柱和底脚示例中,立柱是独立对象并且底脚依赖于它。如果立柱被移动或者它必须承受的重量改变,则企业工程系统根据需要自动地移动底脚或者自动地改变其尺寸或承重能力。此外,由企业工程系统自动地再计算作为立柱的从属的任何其它对象的特性。更新对象(即,重新计算对象的参数中的一个或更多个)有时被称为“重新计算”对象。
    如所指出的,在建模阶段,典型地在将对应的底脚对象添加到模型之前,将立柱对象添加到模型。然而,当构造物理结构(例如,发电厂)时,必须在立柱能够被附接到基础的顶部之前建造底脚。因此,对象添加到模型的次序未必与对应的现实项目 建造或者设置的次序相同。类似地,功能依赖关系未必指示现实项目建造或者设置的次序。
    许多现代企业工程系统利用关系数据库(RDB)或其它数据库管理系统(DBMS)来存储表示对象和关系的持久性数据结构。例如,RDB记录或表行可以被用来存储对象和关系数据结构。
    企业工程系统的一个特别有用的特点是对对象或用户选择的一组对象进行几何变换的能力。几何变换的示例包括移动对象和旋转对象。
    为了维持对象和关系在模型数据库中的有效性和一致性,对该数据库的每个操作在数据库事务内执行。事务具有两个主要目的:1)为了提供允许从系统故障正确恢复的可靠的工作单元;以及2)为了提供同时访问数据库的程序之间的隔离。事务提供“全有或全无”主张。要么对数据库的所有修改成功地完成,要么哪个都不完成。
    因此,为了确保模型的有效性和一致性,企业工程系统典型地在单个事务中执行几何变换。事务包括三个步骤。在第一步骤中,开始事务并且将表示要变换的对象和关系的所有数据结构从数据库带进存储器。在第二步骤中,在存储器中变换对象并且重新计算所有从属对象。接着,在第三步骤中,(现在修改的)表示对象和关系的数据结构被写回到数据库并且事务被确认。
    许多工业工厂模型涉及极大量的对象和关系,这会对企业工程系统造成问题。系统的(虚拟)存储器必须足够大以同时存储表示要被几何变换的对象和它们的关系的所有数据结构。针对几何变换选择模型的大部分,诸如移动石油化学工厂内的蒸馏器,会使系统的存储器容量被超过。
    发明内容
    本发明的实施方式提供用于对在面向对象企业工程系统内表示的多个对象进行几何变换的由计算机实施的方法。多个对象中的至少一个对象是多个对象中的另一个对象的前趋(predecessor)。该方法涉及处理器执行数个操作,这些操作包括从用户接受选择要几何变换的多个对象的输入以及接受将对所选对象执行的几何变换的类型的指示。对于每个所选对象,在多个对象中,自动地标识所选对象的任何前趋对象。所选对象的至少一个参数的值功能上依赖于任何前趋对象的至少一个参数。将所选对象自动地划分成多个有序的对象分区。对于任何给定对象,对象的前趋对象中的每个 对象在与给定对象相同的分区中或在前面的分区中。
    对象根据几何变换的类型的指示按照对象的分区以分区次序进行几何变换。当对给定分区中的对象进行几何变换时,暂时使分区中的每个对象的任何后继(successor)对象变得只读。暂时使分区中的每个对象的任何前趋对象变得只读。对于变得暂时只读的每个对象,可以生成对应的待办项目。如果暂时变得只读的对象中的任一个随后被变换,则可以删除所对应的待办项目。
    当对给定分区中的对象进行几何变换时,可以标识分区中的对象的任何下级对象。可以将标识出的下级对象添加到分区,并且可以根据几何变换的类型的指示对所添加的下级对象进行几何变换。
    可以以分区次序处理分区中的至少两个。处理包括在处理后续分区之前保存关于分区的信息并且根据几何变换的类型的指示对分区中的对象进行几何变换。所保存的信息可以包括足以重新开始对分区中的对象进行几何变换的信息。
    将所选对象自动地划分成多个有序的对象分区可以包括生成前趋图,所述前趋图将每个所选对象与所有所选对象的前趋对象联系起来。
    该方法可以包括标识与所选对象中的每个对象相关的至少一个外部对象并且断开标识出的外部对象与所选对象之间的关系。
    本发明的另一实施方式提供用于对在面向对象企业工程系统内表示的多个对象进行几何变换的系统。多个对象中的至少一个是多个对象中的另一个对象的前趋。该系统包括用户接口,该用户接口被构造成从用户接受选择要几何变换的多个对象的第一输入并且用于从用户接受指示要对所选对象执行的几何变换的类型的第二输入。标识模块耦接到用户接口并且被构造成对于每个所选对象,自动地标识与所选对象相对应的任何前趋对象。所选对象的至少一个参数的值功能上依赖于任何前趋对象的至少一个参数。分割模块耦接到标识模块并且被构造成自动地将所选对象划分成多个有序的对象分区。对于任何给定对象,对象的前趋对象中的每个对象在与给定对象相同的分区中或在前面的分区中。
    变换模块可以耦接到分割模块并且构造成根据所指示的几何变换的类型逐个对象分区以分区次序对对象进行几何变换。
    冻结模块可以耦接到变换模块并且构造成逐个分区,暂时使分区中的每个对象的任何后继对象变得只读并且暂时使分区中的每个对象的任何前趋对象变得只读。冻结 模块可以被构造成为暂时变得只读的每个对象生成对应的待办项目。
    清除模块可以耦接到变换模块并且构造成如果暂时变得只读的对象中的任一个对象随后被变换,则删除所对应的待办项目。
    传播模块可以耦接到标识模块并且构造成对于每个分区,标识分区中的对象的任何下级对象并且将标识出的下级对象添加到分区。变换模块被构造成根据所指示的几何变换的类型对所添加的下级对象进行几何变换。
    处理控制模块可以耦接到变换模块并且构造成以分区次序处理分区中的至少两个。处理控制模块可以被构造成对于每个分区,保存关于分区的信息。所保存的信息包括足以重新开始对分区中对象进行几何变换的信息。处理控制模块可以被构造成使变换模块在处理后续分区之前根据所指示的几何变换的类型对分区中的对象进行几何变换。
    分割模块可以被构造成生成将每个所选对象与所有所选对象的前趋对象联系起来的前趋图。
    修剪模块可以被构造成标识与所选对象中的任一个相关的至少一个外部对象并且断开标识出的外部对象与所选对象之间的关系。
    本发明的又一个实施方式提供用于在计算机系统上使用的计算机程序产品。计算机程序产品可以被用于复制在面向对象企业工程系统内表示的多个前趋和后继对象。每个后继对象与前趋对象具有前趋关系。计算机程序产品包括在其上存储了计算机指令的非暂时性计算机可读介质。当被处理器执行时,指令使处理器从用户接受输入。该输入选择要几何变换的多个对象,并且该输入提供要对所选对象执行的几何变换的类型的指示。对于每个所选对象,指令使处理器在多个对象中自动地标识所选对象的任何前趋对象。所选对象的至少一个参数的值功能上依赖于任何前趋对象的至少一个参数。指令还使处理器将所选对象自动地划分成多个有序的对象分区。对于任何给定对象,对象的前趋对象中的每个对象在与给定对象相同的分区或前面的分区中。
    指令可以使处理器根据几何变换的类型的指示逐个对象分区以分区次序对对象进行几何变换。
    指令可以使处理器暂时使分区中的每个对象的任何后继对象变得只读并且暂时使分区中的每个对象的任何前趋对象变得只读。
    对于暂时变得只读的每个对象,指令可以使处理器生成对应的待办项目。如果暂 时变得只读的对象中的任一个对象随后被变换,则指令可以使处理器删除所对应的待办项目。
    当对给定分区中的对象进行几何变换时,指令可以使处理器标识分区中的对象的任何下级对象并且将标识出的下级对象添加到分区。指令可以使处理器根据几何变换的类型的指示对所添加的下级对象进行几何变换。
    附图说明
    将通过与附图相结合地参照特定实施方式的以下具体描述来更全面地理解本发明,其中:
    图1是假设的对象集合和假设的在对象之间的关系的示意表示图。
    图2是根据本发明的实施方式为几何变换作准备而排序并且分割的、图1的设计对象的示意表示图;
    图3是根据本发明的实施方式的模块化企业工程系统的示意框图。
    图4是例示了本发明的实施方式的总体操作的流程图。
    图5-图13例示了本发明的实施方式的示例性用户接口的方面。
    图14是例示了图4的变换操作的子操作的高级别流程图。
    图15是例示了在图4操作上扩展的用来将对象标识符(OID)的列表划分成有序分区的操作的流程图。
    图16是根据本发明的实施方式的两个设计对象和对应的相应的下级对象的示意图。
    图17包含根据本发明的实施方式用于提供类信息以使得能实现诸如图16的对象中的关系路径的遍历的示例性XML文件片段。
    图18是根据本发明的实施方式的XML类描述符(XML class descriptor)文件的更完整的示例。
    图19例示了根据本发明的实施方式的示例性前趋图。
    图20示意性地例示了在对象之间或在对象中的关系中的循环的示例。
    图21是根据本发明的实施方式概括对分区进行排序并且依次处理分区的操作的流程图。
    图22是例示了根据本发明的实施方式在图21的这样的操作上扩展的处理选择分 区中的对象的流程图。
    图23是根据本发明的实施方式的变换图数据结构的示意图。
    图24是根据本发明的实施方式的图23的变换图数据结构的值条目阵列的示意图。
    图25是根据本发明的实施方式的图24的阵列的值条目的示意图。
    图26是根据本发明的实施方式的图23的变换图数据结构的关系条目的示意图。
    图27是例示了根据本发明的实施方式的数个假设对象及其之间的关系的示意图。
    图28是与图27的对象和关系相对应的前趋图的示意表示。
    图29是例示了根据本发明的实施方式在对象已被划分成分区之后图27和图28的对象的示意图。
    图30-图33例示了用来举例说明本发明的实施方式的操作的四个假设事务。
    图34A-图34B包含根据本发明的实施方式示意性地例示了用于对在面向对象企业工程系统内表示的多个对象进行几何变换的计算机化的方法的流程图。
    图35包含根据本发明的实施方式用于对在面向对象企业工程系统内表示的多个对象进行几何变换的系统的示意框图。
    具体实施方式
    根据本发明,公开了用于对大量对象进行几何变换、同时维持模型数据库的完整性但是没有现有技术的存储器约束的方法和装置。大的几何变换操作被划分成顺序执行的许多较小的原子操作(事务)。每个小的事务对对象的选择子集进行几何变换。因此,如果大的几何变换操作在所有小的几何变换事务已完成之前中断,则模型数据库仍然处于一致状态,并且可以从中断点恢复整个几何变换操作。
    我认识到对对象进行几何变换的次序是重要的。我以图1开始我的描述,图1示意性地表示多个假设对象A1、A2、A3、B1、...Z4和对象的对A1-Z4之间的关系(由实线表示)。图1为了说明的简单示出了相对数量少的对象。对象A1、B1、C1以及D1表示设计对象。如所指出的,设计对象可以由零个或多个下级对象组成。例如,对象C2和C3是设计对象C1的下级对象。下级对象的每个合集形成起源于它相应的设计对象的层次。每个设计对象及其相应的下级对象被相应的细虚线100、102、 104或106包围。
    如由箭头所指示的,对象A1-Z4的一些对处于功能上从属的关系。例如,对象B6依赖于对象B4。这意味着对象B6的至少一个参数依赖于对象B4的至少一个参数。因此,如果对象B4的参数改变,则应该基于对象B4的(一个或更多个)已改变参数重新计算对象B6的一个或更多个参数。因此,至少相对于对象B4与B6之间的关系,对象B6被称为是“从属的”并且对象B4被称为是“独立的”。注意,一些功能关系跨越设计对象边界。例如,作为设计对象A1的一部分的对象A3功能上依赖于对象B5(其是不同设计对象B1的一部分)。
    即使在设计对象A1与B1之间没有显式关系,下级对象A3依赖于对象B5的事实也暗示设计对象B1是设计对象A1的“前趋”(像该术语被用在本文中那样)。如本文中所用的那样,前趋对象是另一设计对象所依赖于的设计对象。也就是说,从属设计对象或其下级对象中的一个或更多个对象依赖于前趋设计对象或其下级对象中的一个或更多个对象。因此,如果前趋设计对象或其下级对象中的一个或更多个对象的参数改变,则应该重新计算从属设计对象或其下级对象中的一个或更多个对象的一个或更多个参数。所暗示的设计对象A1与B1之间的关系是由下级对象A3与B5之间的实际关系所引发的。然而,设计对象能够与其它设计对象有显式关系(未示出)。
    应该注意的是,前趋关系完全不同于来自面向对象编程范例的父-子(也被称为类-子类或广义层次或类-实例)关系。子类从其超类继承属性,诸如变量和方法。类似地,实例从其类定义继承属性。典型地,子类添加功能性,诸如附加的变量或方法,但是在一些情况下子类重载其超类的变量和/或方法。例如,可以为“车辆”定义类,其包括“weight(重量)”和“number_of_wheels(车轮数)”的变量并且可能包括“accelerate(加速)”的方法,其取油门被压低的距离作为输入。类的实例可以是表示各种汽车和卡车的对象。可以为“起重机”定义子类,其可能添加“max_lift_weight(最大_提升_重量)”和“max_lift_height(最大_提升_高度)”的变量以及可能能够被调用来执行功能(诸如提高或者降低负载)的方法。
    前趋关系与类-子类关系不相关。前趋关系不是从面向对象范例获知的;出于本申请中所描述的目的它们由本申请的发明人想象到。前趋关系不暗示继承。功能依赖不是继承。前趋对象不自动地从其从属对象继承属性(变量)或方法,或者反之亦然。相反,如果前趋设计对象或其下级对象中的一个或更多个对象的参数改变,则应该重 新计算从属设计对象或其下级对象中的一个或更多个对象的一个或更多个参数。
    前趋关系中的对象未必处于类-子类关系。典型地,前趋对象既不在它们的后继对象的子类中也不在超类中。例如,泵和管路典型地是在完全不同的类中,像横梁和立柱那样。此外,子类/超类关系不暗示功能关系。也就是说,如果一个类的对象被变更(诸如通过被移动到新的位置),则不需要再计算其子类和超类中的对象。
    假定设计对象A1、B1、C1以及D1被选择用于变换。将被变换的对象被粗虚线108包围。注意,诸如对象X1、Y1以及Z1的一些对象与将被变换的对象相关,但是对象X1-Z4未被选择用于变换。
    如果以任意次序对虚线108内的对象进行几何变换,并且几何变换操作异常地终止,则数据库可能处于不一致状态,因为可能对一些从属对象进行了几何变换,但是到变换操作异常终止,它们所依赖于的对象可能未被变换。
    根据我的方法和装置,对象根据特定规则被划分成所选对象的有序集合(也被称为“分区”),并且以顺序次序对分区进行几何变换。也就是说,分区的所有对象在任何后续分区中的对象中的任一个被变换之前被变换。对象被分配给分区,使得对从属对象的变换不早于对它们所依赖于的对象的变换。
    图2示出了根据我的规则的设计对象A1-D3成为有序分区200、202、204以及206的示例性划分。例如,直到由分区202(设计对象C1及其下级对象)和分区204(设计对象A1及其下级对象)已被变换为止,设计对象D1及其下级对象(即,分区206)未被变换,因为设计对象D1(或其下级对象中的至少一个)依赖于分区202中的对象和分区204中的对象。“后继分区”是包含依赖于另一分区中的对象的对象的分区。例如,分区206是分区202和204中的每个的后继分区。“前趋分区”是包含另一分区中的另一对象所依赖于的对象的分区。例如,分区204是分区206的前趋分区。
    每个分区200-206在对应不同的事务中变换。也就是说,对于每个分区200-206,执行一事务,并且在事务期间变换在分区内的所有设计对象和它们相应的下级对象。图2中所示出的示例每分区200-206包括仅一个设计对象,这是我优选的;然而,分区可以包括超过一个的设计对象。变换分区中的对象也被称为“变换分区”。如所指出的,分区被以顺序次序变换。例如,分区202在分区200之后被变换。
    随着每个分区被变换,后继分区中的所有对象(和它们相应的下级对象,若有的 话)被置于暂时“冻结”状态。例如,随着分区202被变换,分区206中的所有对象(和它们的下级对象)被冻结。冻结对象被认为是暂时只读的。也就是说,如果已冻结对象依赖于另一对象,则不响应于其独立对象被修改而立即重新计算已冻结对象。不是立即重新计算已冻结对象,而是系统为每个冻结对象生成“待办”记录,这有效地使已冻结对象的变换延期直到它相应的分区被变换为止。此外,可以冻结一些对象以支持断开到其它对象的关系。例如,不是正在被变换但是与将要变换的对象相关的对象被称为“外部对象”。在图1中所示出的示例中,对象X1、Y1以及Z1是外部对象,并且与外部对象相关的对象(诸如对象A2、B1以及D3)被冻结以促进断开关系。
    对象的每个分区在原子操作(事务)中进行几何变换,即使大的几何变换操作异常地终止,这也使数据库一致。如果大的几何变换操作被异常地终止,则可以在它终止的点恢复变换操作。例如,如果硬件故障引起了异常终止,则可以在已排除故障之后恢复变换操作。在另一示例中,如果要变换的对象中的一些对象在数据库中被标记为“只读”,则在这些对象的保护被修改成许可变更这些对象的参数(即,使这些对象变得“读-写”)之后,重新开始变换操作。此外,能够不顾可用存储器的量,通过将对象划分成足够小的分区来对极大量的对象进行几何变换,因为一次仅相对少量的对象需要被加载到存储器中。需要被加载到存储器中的对象包括:来自当前分区的对象、来自(一个或更多个)任何前趋分区的对象以及来自(一个或更多个)任何后继分区的对象。在将几何变换后的对象提交给数据库时,就可以再使用该存储器。
    为了支持重新开始大的几何变换,数据库中存储了关于变换的信息被存储,实际上作为“变换操作对象”。每个分区的变换事务的状态也被存储在变换操作对象中。因此,如果需要重新开始几何变换操作,则关于哪些分区已经被变换的信息以及关于哪些分区仍然尚未被变换的信息是可用的,所以变换操作能够在它停止的地方恢复。
    外部关系
    如所指出的,“外部关系”是跨越将被变换的对象与将不被变换的对象之间的边界的关系。例如,在图1中,跨越粗虚线108的任何关系是外部关系,而不管相关对象之间的任何功能依赖如何。在图1中,对象X1依赖于对象B1。然而,对象X1未被选择用于变换。因此,对象B1与X1之间的关系110是外部关系。如果从属对象(在该示例中,X1)能够在与其独立对象(在该示例中,B1)没有关系的情况下存 在,则外部关系被打破(即,对象从彼此断开),并且,在一个实施方式中,从属对象(X1)变得独立。另一方面,在该实施方式中,如果从属对象(X1)在与其独立对象(B1)没有关系的情况下不能够存在,则从属对象(X1)被删除。
    哪些对象能够在没有关系的情况下存在是域特定(domain specific)的。也就是说,企业工程系统的设计者确定哪些关系是外部关系。例如,管道的系统是用PipeRun制造出的。PipeRun是设计对象。因此,PipeRun是能够用多事务方法加以变换的最小的配管单元。PipeRun能够由多个逻辑“器件”组成,诸如直线器件、转向器件、循支线器件、支路器件等。每个器件能够对应于物理零件,诸如直管、肘管、阀门或T形部件。彼此相邻的物理零件借助于连接对象彼此相关。诸如焊接点或垫圈的连接项目能够与每个连接相关联。因此,单个PipeRun可以具有许多器件、零件、连接以及连接项目。PipeRun与这些对象之间的关系可以是内部关系。例如,如果PipeRun被变换(诸如被移动),则所有这些对象可以连同该PipeRun一起被变换(移动)。
    另一方面,第一PipeRun还能够被连接到第二PipeRun或者连接到一件设备上的喷嘴。第一PiprRun的构件与第二PipeRun或设备的构件之间的关系可以是外部关系。在这种情况下,如果第一PipeRun被变换(诸如移动),则不需要变换外部对象。例如,如果第一PipeRun被移动,则与第二PipeRun或设备的关系被标识为外部关系。因为第二PipeRun(和设备)能够作为独立对象而存在,所以能够打破该关系。
    架构概述
    可以在各种上下文(诸如企业工程系统)中实施本文中所描述的用于对对象进行几何变换的方法的装置。在图3中示意性的例示了模块化示例性企业工程系统300。核心软件平台301提供与各种设计对象有关地使用的公共服务(即,一个或更多个任务的服务),包括几何变换。核心平台301可以提供其它公共服务,诸如复制对象的组,如在共同转让的美国专利申请No.12/476,399(专利公开号US2009/0300083)中所描述的,其整个内容从而通过引用并入以用于所有目的。公共服务的其它示例可以包括事务管理、图形显示、编辑与撤销操作、修订管理以及DBMS界面。所有设计对象共享由核心平台301所提供的公共三维工作空间。
    由任务302、304以及306所举例说明的一个或更多个软件任务做出对核心平台301的调用,并且经由图形用户接口(GUI)308将问题域特定服务提供给用户。示例性软件任务包括实施结构系统、电气系统、设备系统以及配管系统的任务。每个任 务302-306包括它自己的菜单集、它自己的对象和关系集以及它自己的功能依赖集。当然,一些类型的关系能够跨越从一个任务302-306的对象到另一任务302-306的对象的边界。每个任务302-306实施由适于任务的需要的对象310、312以及314所举例说明的对象。对象310-314可以被存储在关系数据库(RDB)316或其它适合的数据库中。图3中所示出的软件架构促进在不影响现有任务的情况下将新的任务添加到企业工程系统。
    高级别操作概述
    图4包含例示了由核心平台301(图3)执行来对一个或更多个对象进行几何变换的主要操作的高级别流程图。在这里概括并且在下面更详细地描述了这些操作中的每个操作。在400处,收集用户输入以指定要变换的对象,以及对该对象的变换(诸如移动、旋转和/或镜像)的类型和变换的参数(视情况而定,诸如距离、旋转的角度、旋转的中心和/或用于镜像的轴)。用户接口308(图3)可以允许用户从选项菜单选择对象,或者输入或选择过滤准则,系统接着使用该过滤准则来自动地选择满足准则的对象。另选地,用户接口可以提供图形选择工具,诸如选择光标或“橡皮圈”选择矩形(或其它形状),或任何其它适合的选择比喻。参照图5-图12在下面描述用于提示用户并且用于接受用户的输入的示例性“向导”风格用户接口的方面。在402处,执行变换操作,如在下面所描述的那样。在404处,向用户呈现关于变换操作的信息的显示。在图13中示出了示例性概要显示。
    用来收集指定要变换的对象的用户输入的用户接口
    如相对于图4的流程图所指出的,收集用户输入(400)以指定要变换的对象。参照图5-图13,在下面描述了用于提示用户并且用于接受用户的输入以及显示关于变换操作的信息的示例性“向导”风格用户接口的方面。图5例示了引入模型数据变换系统向导的示例性对话框。
    使用图6中所示出的对话框,系统可以接受选择将被复制的现有模型的一部分的用户输入。如在示例性对话框中所使用的那样,术语“工厂”指的是数据库。因此,在图6中所示出的示例中,用户已选择命名“SDH_9059_ModelA”的源“工厂”600(即,数据库)。每个数据库将关于模型的信息存储在“系统”的层次中。示例性系统包括结构系统(其可以包括诸如基础、横梁以及立柱的对象)、电气系统(其可以包括导管、线路、开关等等)、设备系统(其可以包括泵和罐)以及配管系统(其可 以包括管道、肘管、T型连接、阀门等等)。层次的粒度依赖于正使用的特定企业工程系统和用户要求。
    如所指出的,企业工程系统可以包括通过用户接口被露出给用户的设计对象,以及未被露出的其它下级对象。例如,系统可以露出设计结构对象,诸如基础、立柱以及横梁。用户可以通过该用户接口操纵这些设计对象。例如,用户可以移动立柱或者指定其维度。系统可以使用未露出的下级对象来存储关于已露出对象的信息。例如,I-横梁设计对象可以与表示I-横梁的主轴、其横截面、逻辑连接端口等的下级对象相关。
    图7例示接受用户输入以在开始新的变换操作700与继续或者重新开始先前开始的(结束)变换操作702之间选择的对话框。如果新的操作700将开始,则用户可以命名操作704并且指定许可组706。另一方面,如果将重新开始现有操作702,则用户可以诸如通过其名称从选择器框708选择先前开始的变换操作。
    图8例示了允许用户基于它们属于哪一个系统800或者基于过滤器802来选择要变换的对象的对话框。如果对象将由系统选择,则图9例示了允许用户选择要变换的系统的对话框。
    另一方面,如果对象将由过滤器选择802(图8),则图10例示了允许用户选择预定义的过滤器1000并且可选地修改过滤器的准则1002或者为新的过滤器指定准则的对话框。过滤器可以由数据库316(图3)的查询来实施。示例性过滤器包括:“体”过滤器(其基于设计对象的几何位置来表示查询,即,在指定的三维体积或二维区域内的对象被选择)和“属性”过滤器(其基于属性的一个或更多个值来表示查询,所述属性诸如设计对象的尺寸、承重容量、成分或名称)。更复杂的过滤器可以通过将过滤器与布尔运算符(诸如“与”和“或”)组合来创建。优选地,在不用将所选对象绑定到存储器的情况下执行查询。相反,查询返回对象标识符(OID)的列表。OID是唯一地标识对象并且可以被用来将对象从数据库取出到存储器中(被称为“绑定”对象)的数、字符串、数据库密钥或其它量。
    图11例示了接收用户输入以指定将被应用于所选对象的变换的对话框。例如,可以在三个正交方向1102、1104以及1106上将对象移动1100由用户指定数目的单位。用户可以在1108中指定测量的单位。可以可选地或者另选地选择其它类型的变换。例如,用户可以选择旋转1110所选对象或者选择移动并且旋转1112所选对象。 其它类型的变换(诸如绕轴(未示出)镜像)可以作为选项被呈现给用户。如果用户选择执行操作,则变换操作对象被创建以跟踪关于每个事务的变换和状态的信息,所述变换将被划分成所述事务。
    图12例示了确认对话框。在用户启动1200变换操作时,系统可以显示进度指示1202。在所有分区变换操作成功地完成之后,或者如果变换操作被异常地终止,则可以向用户显示结果对话框以报告状态,如图13中所示。如所指出的,变换操作可能花费数分钟、数小时或更长时间完成。
    变换分区
    如相对于图4所指出的,在已收集到用户输入以指定要变换的设计对象400时,可以执行变换操作402。图14是例示了图4的变换操作402(图4)的子操作的高级别流程图。在1400,查询数据库316(图3)以获得由用户选择针对变换的设计对象的对象标识符(OID)。如上面所指出的,相对于图8-图10,在不用将所选对象绑定到存储器的情况下,执行查询。在1402,参照图15中的流程图,根据我的规则将OID的列表划分成有序分区,如在下面更详细地描述的。在1404,参照图21中的流程图,依次处理有序分区,如在下面更详细地描述的。
    图15是例示了用于将OID的列表划分成有序分区的操作的流程图。在1500,查询数据库316(图3)以标识针对选择进行变换的每个对象的所有前趋对象。如所指出的,前趋对象是另一设计对象所依赖于的设计对象。也就是说,从属设计对象或其下级对象中的一个或更多个对象依赖于前趋设计对象或其下级对象中的一个或更多个对象。在1502,构建前趋图以组织标识出的前趋对象,并且接着在1504对前趋图进行排序以生成链接起来的OID列表。在1506,将连接起来的OID链接列表划分成有序分区的序列。操作1502-1506的更详细描述如下。
    前趋图
    在一个实施方式中,通过构造有向图(“前趋图”)来标识前趋对象,该有向图将要变换的每个设计对象与其前趋联系起来。前趋图包括针对要变换的每个设计对象的节点。每个节点存储相应的对象的OID。图的有向边表示相应的对象节点的关系。在节点处起源的边的合集标识全部前趋节点。类似地,在节点处终止的边的合集标识后继节点。由前趋节点标识的对象应该全部在由当前节点标识的对象之前变换。
    这种图的遍历产生要变换的对象的有序列表。来自这种有序列表的相继的对象的 集合被分配给连续分区,该连续分区像本文中所描述的那样变换。要变换的所有设计对象因此被划分成分区的序列。将对这些操作进行详细的描述。
    如果两个设计对象彼此不相关,则对象变换的次序是不重要的。然而,两个设计对象之间的关系可以指示在对象之间存在优先级。该关系可以是处于设计对象之一或在该设计对象下面的下级对象与另一个设计对象或在该另一个设计对象下面的下级对象之间。
    如所指出的,被选择用于变换的设计对象常常具有应该连同所选对象一起被变换的下级对象。例如,横梁对象可以具有数个未露出的下级连接对象或其它下级对象。此外,横梁对象可以被连接到前趋立柱对象,其被露出给用户。连接可以通过与立柱对象相关的未露出的下级连接点对象来做出。如所指出的,共同地,设计对象及其相关的下级对象被称为“设计对象组”或简称为“组”。
    在图16中描绘了这样的情形的图形表示。组1表示横梁对象,并且组2表示立柱。设计横梁对象A与许多下级和/或露出对象A1、A2、A3以及A4相关,其中的全部应该连同已露出梁对象A一起变换。假定对象A4表示横梁上的连接点。类似地,设计立柱对象B与许多下级和/或露出的对象B1、B2以及B3相关。假定对象B3表示立柱上的连接点,并且关系X表示分别在横梁和立柱上的连接点A4与B3之间的连接。
    连接对象B3被称为“目标”对象,因为能够建立从另一对象到连接对象B3的关系。如果这样的关系将被建立,则出于对对象进行变换的目的,立柱对象B将成为前趋,并且另一个设计对象将成为后继。对象可以具有超过一个目标。此外,可以建立除物理连接以外的关系。例如,对象可以与坐标系对象或与测量对象的单元相关。类似地,诸如横梁的对象可以具有该对象通过其可以与另一对象相关的超过一个对象。
    如所指出的,企业工程系统典型地包括管理工厂或模型内的系统的一个或更多个软件任务302-306(图3)。这些软件任务响应于用户输入(诸如在用户将横梁或立柱添加到模型时)创建对象。在面向对象范例中,“类”是对象的定义或原型。面向对象系统针对可以被创建的每个类型的对象,具有类定义。
    关系的类型、关系存在于其间的对象以及意义,在前趋方面全部特定于每个软件任务302-306。每个任务302-306以元数据的形式提供关于其设计类的信息。这种元数据允许核心平台301对数据库316执行查询以针对将被变换的对象的列表中的每个 对象查找前趋。
    根据本发明,每个类定义提供使得核心平台301能够相对于对象遍历两种类型的路径的信息:(a)从对象起通过它自己的组的内部关系到该对象能够有关系的另一对象中的目标对象的路径,以及(b)从对象起通过它自己的组的内部关系到它自己的组内的目标(即,到可以通过其与该对象建立关系的目标对象)。根据这种信息,可以确定到前趋对象中的所有目标的路径,以及到它自己的下级对象组内的所有可能的目标的路径。每个路径包括有向关系的序列。
    在图16中举例说明了两种类型的路径。如所指出的,横梁可以被连接到另一设计对象,并且横梁的连接对象A4是将建立连接关系(关系X)的对象。如所指出的,横梁的对象A1-A4中的其它对象还可能是通过其可以建立关系的对象。因为对象A4能够被用来与另一对象建立关系,所以路径1600是第一类型的路径的示例,即,从对象A起通过它自己的对象组的内部关系到另一对象组中的目标对象B3的路径,对象A能够与目标对象B3有关系(关系X)。路径1602举例说明第二类型的路径,即,从对象B起通过它自己的组的内部关系到该组内的目标B3的路径。关系X的存在指示设计对象B是对象A的前趋,所以应该在对象A之前对对象B进行变换。
    在一些实施方式中,每个类定义提供“类描述符”文件,其包括变换应用可以使用的用于依赖于类的对象能够是目标还是对象能够与其它对象建立关系来标识两种类型的路径中的一个或两者的信息。在一些实施方式中,根据可扩展标记语言(XML)规范来格式化这种文件。这样的XML文件的更详细描述出现在下面。
    如所指出的,典型的企业工程系统将关于对象和关系的信息存储在关系数据库(RDB)中或在其它类型的数据库中。一些这样的系统为每个类型的对象维护单独的数据表。例如,这样的系统可以维护针对立柱对象的表和针对横梁对象的单独表。可以在对象表中或在单独表中维护关于对象之间的关系的信息。例如,由表1所举例说明的关系的表可以记录将对象的对和对象之间的关系记录在表的每行中。因此,对于系统中的两个对象之间的每个关系,表包含一行。表行字段可以包含对象标识符(OID)。名称“OID(B)”意指“对象B的对象标识符”。在表1的第二行中所示出的关系对应于图16中所示出的关系X,指示横梁A上的连接点A4是到立柱B上的点B3的端到中央连接。

    如由表1中的列标题(“原点”和“终点”)所指示的,关系是有向的。关系的方向可以但是不必暗示两个对应对象之间的后继/前趋关系。
    如所指出的,每个类定义提供类描述符文件,其包含使得软件能够相对于根据类所实例化的对象来遍历两种类型的路径的信息。图17包含用于提供这种信息的示例性XML文件片段。还可以使用其它适合的文件格式。
    对于给定的类别的对象,文件包含分别提供关于两种类型的路径的信息的两个部分1700和1703。第一部分1700(“TargetsInPredecessors(前趋中的目标)”)提供关于从对象起通过它自己的下级对象组的内部关系到该对象与其有关系的另一对象中的目标对象(即,到将是对象的前趋的对象)的每个可能的路径的信息。
    图17中所示出的示例定义了两个这样的路径1706和1710。每个路径包括至少一个“步骤”。步骤描述两个对象之间的关系,包括关系类型的描述(RelType)和关系的方向(Dir)。使用图16的横梁对象作为示例,路径1600将被描述为具有三个步骤,与关系1604、1606以及1608相对应。在对象处开始,和指定步骤的数目、所指定的关系类型(RelType)以及所指定的方向(Dir)匹配的任何路径取得TargetsInPredecessors路径资格。
    返回到图17,XML文件的第二部分1703(“TargetsInSelf(本身中的目标)”)提供关于从对象起通过它自己的组的内部关系到该组内的目标的每个可能的路径的信息。图18是XML类描述符文件的完整示例。
    当对象由用户选择或者由系统自动地标识为要变换的对象时,系统自动地标识所对应的设计对象的前趋。为了标识前趋,系统标识所选对象或其下级对象之一与其相关的前趋中的目标对象。为了标识目标对象,系统针对为对象类定义的每个TargetsInPredecessors路径构建查询。查询从针对给定类将被变换的所有设计对象的OID开始并且包含针对该路径的每个步骤的JOIN。查询对照数据库316(图3)中的关系表来执行。查询得到包含OID对的表。每对OID包括要变换的对象的OID,诸如横梁(OID“A”),以及目标对象的OID,诸如连接点(OID“B3”)。表2例示了 这样的查询的示例性结果的一部分。

    系统还针对为对象类定义的每个TargetInSelf路径构建查询。查询从针对给定类将被变换的所有设计对象的OID开始并且包含针对该路径的每个步骤的JOIN。查询对照数据库316(图3)中的关系表来执行。查询产生包含成对OID的表。每对OID包括要变换的对象的OID,诸如立柱(OID“B”),以及目标对象的OID,诸如连接点(OID“B3”)。表3例示了这样的查询的示例性结果的一部分。

    针对被选择用于变换的每类对象执行上面描述的查询,并且查询的结果在两个结果得到的表中累积。两个表接着在名为“目标对象的OID”的表列上结合以产生第三表。表4例示了这样的数据库JOIN操作的示例性结果的一部分。表4的行表示在将被变换的对象中的前趋关系。例如,根据表4的第一行,应该不晚于对象A对对象B进行变换,因为对象B是对象A的前趋。

    如所指出的,前趋图包括针对要变换的每个设计对象的节点,并且图的边表示相应的对象节点之间的关系。系统在这种图中为由用户所选择的每个设计对象创建节点。此外,系统针对在表4中被标识为前趋的每个设计对象将边添加到这种图中。
    联合表(表4)的每行表示将被变换的对象与前趋对象之间的前趋关系。系统将边添加到前趋图以得到这样的前趋关系。图19例示了示例性前趋图。应该注意的是,出于确定变换次序的目的,已创建了前趋关系1900。这种关系可以单独存在于前趋图中。也就是说,表示组1和组2(图16)中的对象的数据结构可能未必存储关于前 趋关系1900的信息。
    将对象排序成变换次序
    如在1504(图15)处所指出的,在将前趋关系添加到前趋图之后,图中的对象被排序成变换次序,使得每个前趋对象不晚于依赖于它的所有对象出现。变换次序可以由穿过前趋图的节点的链接列表(诸如正向和反向指针)、或者由单独的有序列表、或者由任何其它适合的指示器来表示。
    前趋图可以通过任何适合的方法排序。现将对两个示例性方法进行描述。在宽度优先排序方法中,可以通过将被变换的对象的列表进行多遍。在每遍期间,已经添加了其全部前趋对象的对象可以被添加到列表中。这种排序方法往往将彼此靠近的不相关对象放置在变换次序列表中。
    可以期望使用将彼此靠近的相关对象放置在变换次序列表中的深度优先排序方法。可以遍及前趋图进行单遍以标识没有后继对象的所有对象,即,以标识不作为针对任何其它对象的前趋的对象。对于没有后继的每个对象,可以调用递归函数来将对象添加到列表。函数针对对象的每个前趋调用它本身,并且接着函数将对象添加到列表。因此,对象的全部前趋在该对象本身被添加到列表之前被添加到列表。
    可以使两个或更多个对象相关关联以形成循环。在图20中示出了这样的关系的示例。可以在排序处理期间删除循环。如果循环被检测到,则给定循环的所有对象被分配给相同的分区,以被一起变换。
    两个对象(其中的每个都将另一个对象认为是其前趋)被称为“互前趋”。互前趋对象被分配给相同的分区。类似地,互前趋对象的循环被分配给相同的分区。
    在前趋图中的对象被排序时,对象可以被分配给从在已排序前趋图开始处的对象开始并且以种类次序继续到图的末端为止的连续分区。
    每个分区中的对象的数量可以依赖于循环或互前趋对象是否被找到。否则,可以基于一个或更多个准则来选择分区中的对象的数量。例如,较小的分区往往提高鲁棒性,因为如果分区变换操作失败,则引起失败的对象的身份比如果较大的变换操作失败更易于探知。然而,较小的分区变换操作暗示较大量的这样的操作,这可能负面地影响数据库性能。分区可以包括和一个一样少的设计对象。所有分区不必包含相等数目的对象。我发现了一个设计对象的分区尺寸在鲁棒性与性能之间提供良好的平衡。然而,可以使用其它组尺寸。
    对象可以被分配给在对象的已排序列表的头部处开始并且继续直到所有对象已被分配给相应分区为止的分区。
    变换每个分区中的对象
    如在1404(图14)处所指出的,在对象已被排序成变换次序并且划分成有序分区之后,有序分区如在图21中的流程图中所概括的和在下面更详细地描述的那样依次处理。流程图包括循环。每循环的遍历处理一个分区。在2100,选择下一个顺序分区,并且在2102处理所选分区。在图22中扩展并且在下面更详细地说明在2102的处理。在所选分区中的所有对象已被处理之后,在2104处重新计算依赖于已处理对象的对象,并且在2106,改变被提交给数据库。循环的每次遍历是原子操作。也就是说,在2106要么所有操作2100-2106完成,要么什么也没有被提交给数据库。
    随着对象的每个分区被变换,前趋和后继分区中的对象被置于暂时“冻结”(只读)状态,并且针对每个这样的冻结对象生成“待办”记录,这有效地使变换已冻结对象延期直到它相应的分区被变换为止。当冻结对象最后被变换时,它对应的待办记录被删除。因此,在所有分区已被变换之后,应不再保持待办记录。在操作2102中,生成并且删除待办记录。
    如果更多分区仍然待处理,则在2108控制返回到2100,其中选择下一个分区选择。在所有分区已处理之后,控制转到2110。在最后一个分区已变换之后,如果保持任何待办记录,则失败指示器被设置成指示至少一个冻结对象未被变换。另一方面,如果不保持待办记录,则设置成功指示器。
    图22是描述单个分区(“当前分区”)中对象的处理的流程图,即,流程图扩展在操作2102上(图21)。如果作为当前分区(“前趋分区”)的前趋的所有分区仍然尚未被变换,则在2202跳过当前分区。然而,如果所有前趋分区已被变换,则控制转到2204,其中由用户指定要变换的设计对象(“初始对象”)被从数据库316(图3)加载到存储器中(“绑定”)。
    在2206,来自任何前趋分区和任何后继分区的初始对象也被绑定到存储器,并且这些对象被冻结。已经变换了前趋分区中的对象,即,在较早的事务中。这些对象被冻结以防止双重变换它们,即,一次作为已由用户选择用于变换的结果并且第二次作为是被选择用于变换的对象的前趋对象的结果。
    前趋分区中的对象被绑定到存储器以促进外部关系的标识。后继分区中的对象由 于两个原因而被绑定到存储器:(1)所以它们能够被冻结以在当前分区正被变换时防止重新计算和(2)为了促进外部关系的标识。从当前分区中的对象到前趋分区或后继分区中的对象的任何关系不是外部的。然而,从当前分区中的对象到既不在前趋分区中也不在后继分区中的对象的关系是外部关系。
    如所指出的,一些对象具有下级对象。如果具有下级对象的对象被选择用于变换,则分区被放大以包括(一个或更多个)下级对象。在2208,从属于在2204或2206所绑定的对象中的任一个的任何对象被标识、绑定到存储器并且添加到当前分区。在下面提供了关于放大分区(被称为“传播”的处理)的更多细节。
    在2210处,如果当前分区中的所有对象是不可写的,则在2212处跳过当前分区,否则控制转到2214。
    如所指出的,外部关系可以存在于两个对象之间,其中一个对象被选择用于变换并且其中的另一个对象未被选择用于变换。例如,如果从属对象被选择用于几何变换,但是该从属对象所依赖于的对象(即,其前趋对象)不也被选择用于变换,则在外部关系中涉及所选对象。类似地,如果独立对象被选择用于几何变换,但是其从属对象中的一个或更多个还未被选择用于变换,则在外部关系中涉及所选对象。数个可选或另选方法可以被用来处理外部关系。
    在优选实施方式中,外部关系被打破,即,对象从彼此断开。从属对象的处理可以依赖于域特定要求。例如,在一些情况下,如果从属对象能够在与其前趋对象没有关系的情况下存在,则该从属对象变得独立。在另一方面,如果从属对象不能够在与其前趋没有关系的情况下存在,则该从属对象被删除。在其它情况下,从属对象像由域特定要求所要求的那样被不同地处理。在2214,外部关系被断开。
    在另一实施方式中,用户可以被提示并且给予将前趋对象添加到将被变换的对象的列表的机会。在另一实施方式中,在通知或者不通知用户的情况下,前趋对象可以被自动地添加到将被变换的对象的列表。企业工程系统可以包括用户可选参数或管理员可选参数(可以通过该参数来选择这些动作中的一个)。
    在2216,在当前分区中的对象被变换。可以以任何次序变换任何给定分区中的对象。在已成功地变换了当前分区中的所有对象之后,解冻被冻结的对象。如在2106(图21)处所指出的,表示已变换对象的数据结构被提交给数据库。如果所有操作成功,则分区的对象的状态被设置为“被变换”。
    变换图
    在每个分区的处理期间构建并且使用变换图数据结构,并且在分区已被处理之后可以解除分配该数据结构。在分区被变换时,变换图数据结构存储对对象和在对象中的关系的引用。图23是变换图数据结构2300的一个实施方式的示意图。变换图数据结构2300包括两部分:值部分2302和关系部分2304。
    值部分2302包括单独的值条目的阵列,如图24中所示。每个值条目表示对象。每个值条目可以由到值阵列中的索引唯一地标识。如图25中所示,每个值条目包括数个字段,包括源分区(Source Partition)、标志(Flags)以及对象指针(Object Pointer)。源分区标识对应的对象与其关联的分区。源分区的可能值是:前趋、当前、后继以及无。在对象已被加载到存储器中时,对象指针指向该对象。
    在表5中列举了可能的标志值。如所指出的,针对每个分区构建变换图数据结构2300。分区的所有对象的OID被输入到变换图数据结构2300中的相应条目中。这些OID被用来将所对应的对象加载到存储器中(绑定对象)。针对每个这样的对象,变换标志被设置成指示对象将被变换。此外,对于每个这样的对象,为每个初始对象设置初始标志。

    变换图的关系部分2304(图23)还包括条目的阵列,并且每个条目能够由索引唯一地标识。每个关系条目表示两个对象之间的关系,并且包括对具有由关系条目所表示的关系的两个对象的关系指针和两个索引(原点索引和终点索引),如图26所示。原点索引包含对处于关系的“原点”端的对象的值条目的对值阵列2302的索引。终点索引包含对处于关系的“终点”端的对象的值条目的对值阵列2302的索引。关系指针包含对已加载到存储器中的关系的指针。
    包含由变换图数据结构2300中的OID表示的对象的前趋对象和后继对象的分区也被绑定到存储器,并且用于这些对象的OID被添加到变换图数据结构2300。对于每个这样的对象,设置了初始标志和前趋标志或后继标志(视情况而定)。然而,变 换标志未被设置,因为这些对象将不与当前分区中的对象一起变换。已经在某个先前的事务中(即,在较早的分区中)变换了前趋对象,并且将在某个后续事务中(即,在后面的分区中)变换后继对象。信息被存储在变换图数据结构2300中以促进冻结这些对象并且用于其它目的。
    在变换图数据结构2300中最初表示的对象是由用户选择的设计对象。然而,这些设计对象中的一些或全部可以包括下级对象。从属于在当前分区中要变换的对象的对象也应在当前分区中变换。这些对象被绑定到存储器,并且关于这些下级对象的信息被添加到变换图数据结构2300以促进:(a)检查下级对象是否是可写访问的,(b)标识与其它对象的外部关系并且在必要时断开这些外部关系和(c)变换下级对象。
    称作“传播”的处理将下级对象添加到变换图数据结构2300。利用变换图数据结构2300中的对象的所有关系来标识要添加的下级对象。每个类型的关系包括定义变换图数据结构2300如何应该被扩展的元数据。创建设计对象的每个任务302-306(图3)负责其对象可能被涉及的关系并且负责为这些关系设置元数据。核心平台301(图3)使用这种元数据;因此,核心平台301不必配置有关于设计对象的这些关系或特定信息的预先知识。
    变换图2300的关系部分2304中的每个关系条目具有类型,很像对象具有类一样。每个关系类型(也被称为关系定义)具有一组属性。在表6中概括了这些属性。

    表7概括了表6中所列举的属性的可能值。

    如果在标志(Flags)中设置了变换标志,则表8支配传播。

    连接对象不属于任何设计对象。相反,为了连接它们,连接对象存处于设计对象之间。为了连接两个设计对象,创建了连接对象。在两个设计对象被断开时,它们被删除。连接对象既不是内部的也不是外部的。表8中的星号指的是对连接对象的这种特殊处理。
    如果在标志中设置了前趋标志或后继标志,则表9支配传播。

    当将目标对象添加到变换图数据结构2300时,从当前对象到目标对象的关系也被添加到变换图数据结构2300。
    尽管可以存在通过变换图数据结构2300到给定对象的多个关系通路,但是对象被添加到变换图数据结构2300不超过一次。然而,到对象的第二通路或后续通路有可能导致标志被更新。例如,当对象被首先添加到变换图数据结构2300时,可以不设置对象的标志。然而,在传播的后面阶段,可以发现同一对象为前趋对象或后继对象。在这样的情形下,视情况而定,设置了前趋和/或后继标志。
    如所指出的,将当前分区中的对象的下级对象绑定到存储器中并且检查下级对象的访问控制。如果发现任何下级对象为只读,则该分区被标记为包含只读对象,该分区的处理结束并且为该分区设置由于只读对象引起失败(Failed Due to Read-Only Object)的事务状态。
    扩展到外部对象(Expand to External Object)或扩展到连接对象(Expand to  Connection Object)的变换传播属性(Transformation Propagation Property)值指示关系横跨在设计对象之间并且是针对断开的候选。如果该关系的两个设计对象中的仅一个被选择用于变换,则应该断开该关系。如所指出的,在其它实施方式中,可以提供其它类型的处理。
    如所指出的,索引(Index)字段包含对变换图数据结构2300中的原点对象的条目和终点对象的条目的索引。为了判定关系是否应该被断开,检验在关系的两端处的标志值。如果在关系的一端处设置了变换(Transform)标志,则所对应的对象将在当前分区的变换期间变换。如果在关系的另一端处设置既未设置变换、前趋也未设置后继,则远端对象尚未被变换并且在当前操作期间它将不被变换。应该断开这样的关系。在表10中概括了这些规则。

    如所指出的,由任务302-306(图3)定义对象类。因此,任务302-306定义了用于对对象进行变换的方法。对于在变换图数据结构2300中被标记为变换的每个对象,调用了对象的变换方法。
    在计算依赖性之前,后继分区中的对象(即,标记为后继的对象)被冻结以防止作为当前分区中的对象被变换的结果而被重新计算。在后续事务中,将变换后继分区中的对象并且,作为该变换的一部分,将重新计算对象的值。每个对象可以实施用于冻结和解冻对象的方法。
    在对象被变换之后,计算功能依赖性。调用针对所有修改对象的依赖性(Dependency)功能。这些功能中的一些对当前分区内的其它(从属)对象进行更新。可以做到这个,因为当前分区中的对象是可写的。其它依赖功能将以其它方式对后继分区中的对象进行更新;然而,后继对象已被冻结。因此,相对于当前分区,后继分区中的这些对象变得“过时”。针对每个这样的过时对象生成“待办”记录。所有改变接着被提交给数据库316(图3)。
    典型地,在当前分区完成之后不久的分区中,过时对象被变换。因此,待办记录典型地被处理并且在它们已被创建之后就马上删除。然而,如果大的几何变换中断,诸如通过用户调用取消控制或者因硬件或软件故障,则该待办记录指示在重新开始操作时应该执行哪些操作。
    如所指出的,创建操作对象来促进操作的重新开始。此外,在对象的源列表已分割之后,创建分区对象来表示每个分区。在操作对象与分区对象之间建立关系。此外,分别在每个分区对象与其前趋和后继分区的对象之间建立关系。在处理每个分区时,所对应的分区对象被绑定到存储器中并且其事务结果属性的值被更新,如在表11中所概括的那样。

    如果发现失败的前趋分区,或者如果在当前分区中发现只读对象,则根据表11设置所对应的事务结果值。在另一方面,如果当前分区中的对象被成功地变换,则事务结果值被设置为成功。如果已修改对象被成功地提交给数据库,则针对该分区的处理被认为完成了。然而,如果向数据库的提交失败,则事务结果值被设置为失败。
    如果大的几何变换未能成功地完成,则操作和分区对象记录操作的当前状态。典型地,在重新开始操作之前,用户可以采取一些校正动作,诸如重新启动故障的服务器或者修改只读对象以使它们变得可写。可以按照与新的几何变换可以启动的方式相同的方式启动重新开始。开始新的几何变换的软件通过查询数据库以探知前一个变换操作的状态(即通过查询操作和分区对象)而开始。每个变换操作可以由经由名称(Name)字段704(图7)进行调用的用户来命名。用于启动几何变换的用户接口可以显示先前开始的操作的列表,并且用户可以选择失败的操作以重新开始操作。
    当操作被重新开始时,已重新开始操作的操作对象和所有分区对象被绑定到存储器中,并且处理在第一未处理的分区恢复。具有成功的或失败的事务结果值的分区被跳过。如上所述,其它分区被处理。失败的分区指示数据有问题,不是用户能够控制 的问题。能够被用户控制的问题(诸如只读数据)不被标记为失败。因为失败的操作不能够被用户校正,所以允许对失败的分区被再次处理没有意义。
    甚至在对应的操作成功地完成之后,也可以将操作和分区对象保持在数据库中以按照需要来提供历史记录,并且接着可以删除对象。
    以下假设的示例例示了上面所描述的装置和方法的操作。为了说明的简单,示例包含故意少量的对象。然而,所涉及的原理可以被应用于大量对象。
    示例涉及在图27中示意性地例示的五个有相互关系的设计对象:泵、管道、立柱、横梁以及吊管架。管道连接到泵上的喷嘴。管道由吊管架支承。吊管架附接到横梁。横梁连接到立柱。假定除泵外,由用户指定的所有这些对象将向东移动100米。还假定用户能够写访问对所有对象。
    变换处理包括标识每个设计对象的所有前趋。泵是管道的前趋。然而,因为将不移动泵,所以泵将不出现在前趋图中。立柱是已连接的横梁的前趋。横梁和管道两者都是吊管架的前趋。
    前趋图由针对每个设计对象(吊管架等)的前趋的列表构造。图28是对应于图27中的对象的前趋图的示意表示。箭头指向每个设计对象的前趋。
    前趋图的节点被排序成直线序列,使得如图29中所例示,前趋出现在后继之前。接着在所指定的序列中处理分区。当每个分区的处理完成时,修改后的对象被提交给数据库。每个分区在单独的原子事务中变换。现在将对每个事务进行详细的描述。
    事务1涉及移动分区1的对象,这涉及在图30中示意性地概括和指示的以下操作。因此,分区1在事务1期间是当前分区。来自当前分区的初始对象(立柱)和来自后继分区的初始对象(横梁)被加载到存储器中并且添加到变换图。变换图通过传播扩展。初始对象(立柱和横梁)的传播将下级对象(立柱的末端端口1、末端端口2以及物理零件;和横梁的末端端口1、末端端口2以及物理零件)绑定到存储器中并且绑定到变换图中。没有外部关系被标识。因此,没有关系被断开。立柱及其下级对象(末端端口1、末端端口2以及物理零件)被变换(向东移动100米)。后继分区(在这种情况下,仅存在一个后继分区,即,分区2)中的对象被冻结。因此,横梁对象及其下级对象(末端端口1、末端端口2以及物理零件)被冻结。计算功能依赖性。然而,横梁及其下级对象被冻结。因此,横梁及其下级对象不被重新计算。修改(变换)后的立柱对象及其下级对象被提交给数据库。
    事务2涉及移动分区2的对象,如在图31中示意性地概括和指示。分区2在事务2期间是当前分区。来自当前分区的初始对象(横梁)以及来自前趋分区(分区1)的初始对象(立柱)和来自后继分区(分区4)的初始对象(吊管架)加载到存储器中并且添加到变换图。请注意,后继分区是分区4,因为吊管架对象依赖于当前分区中的对象(横梁)。变换图通过传播扩展。初始对象(横梁、立柱以及吊管架)的传播将下级对象(立柱的末端端口1、末端端口2以及物理零件;横梁的末端端口1、末端端口2、物理零件以及正面端口;和吊管架的结构端口、零件1、零件2以及配管端口)绑定到存储器中并且绑定到变换图中。没有外部关系被标识。因此,没有关系被断开。横梁及其下级对象(末端端口1、末端端口2、物理零件以及正面端口)被变换(向东移动100米)。后继分区(在这种情况下,仅存在一个后继分区,即,分区4)中的对象被冻结。因此,吊管架对象及其下级对象(结构端口、零件1、零件2以及配管端口)被冻结。计算功能依赖性。然而,吊管架及其下级对象被冻结。因此,吊管架及其下级对象不被重新计算。修改(变换)后的横梁对象及其下级对象被提交给数据库。
    事务3涉及移动分区3的对象,如在图32中示意性地概括和指示。分区3在事务3期间是当前分区。来自当前分区的初始对象(管道)和来自后继分区(分区4)的初始对象(吊管架)被加载到存储器中并且添加到变换图。当前分区没有前趋分区。变换图通过传播扩展。初始对象(管道和吊管架)的传播将下级对象(管道的末端器件、法兰、连接、直线器件、直管以及末端器件;和吊管架的配管端口、零件1、零件2以及结构端口)绑定到存储器中并且绑定到变换图中。泵的泵喷嘴与管道的连接对象之间的关系3240被标识为外部关系,并且因此被断开。管道及其下级对象(末端器件、法兰、连接、直线器件、直管以及末端器件)被变换(向东移动100米)。后继分区(分区4)中的对象被冻结。因此,吊管架对象及其下级对象(结构端口、零件1、零件2以及配管端口)被冻结。计算功能依赖性。然而,吊管架及其下级对象被冻结。因此,吊管架及其下级对象不被重新计算。修改(变换)后的管道对象及其下级对象被提交给数据库。
    事务4涉及移动分区4的对象,如在图33中示意性地概括和指示。分区4在事务4期间是当前分区。来自当前分区的初始对象(吊管架)和来自前趋分区的初始对象(横梁和管道)被加载到存储器中并且添加到变换图。当前分区没有后继分区。变换图通过传播扩展。初始对象(吊管架、横梁以及管道)的传播将下级对象(吊管架 的配管端口、结构端口、零件1以及零件2;横梁的末端端口1、末端端口2、物理零件以及正面端口;和管道的末端器件、法兰、连接、直线器件、直管以及末端器件)绑定到存储器并且绑定到变换图。没有外部关系被标识。因此,没有关系被断开。吊管架及其下级对象(结构端口、零件1、零件2以及配管端口)被变换(向东移动100米)。不存在后继分区。因此,没有对象需要被冻结。计算功能依赖性。修改(变换)后的吊管架对象及其下级对象被提交给数据库。
    作为事务1-4的结果,所选对象已被移动。不被选择用于变换的泵对象已被从管道断开。
    图34A-图34B中的流程图示意性地例示了根据本发明的实施方式用于对在面向对象企业工程系统内表示的多个对象进行几何变换的计算机化方法。多个对象中的至少一个对象是多个对象中的另一个对象的前趋。在3400,接受用户输入以选择要变换的对象并且指示变换的类型(诸如移动或旋转)。在3402,对于每个所选对象,自动标识任何前趋对象。在3404,如果任何外部对象与所选对象相关,则控制转到3406,其中关系被断开。
    在3408,将所选对象自动地划分成有序的对象分区,使得每个对象的前趋对象(若有的话)是在同一分区中或在前面的分区中。在3410,生成前趋图。在3412,排除针对每个分区遍历一次的循环的循环依次开始。在3414处,保存足以重新开始分区的几何变换的、关于分区的信息。在3416,执行针对下级对象的搜索。如果发现从属于分区中的对象的任何对象,则控制转到3418,其中下级对象被添加到分区。在3420,根据由用户所指示的变换类型,对分区中的对象进行几何变换。对于分区中的每个对象,在3422,如果对象具有任何后继对象,则使后继对象变得只读。类似地,在3424,如果分区中的任何对象具有前趋对象,则使前趋对象变得只读。对于暂时做出的每个对象,在3426,生成待办项目。
    如果存在更多分区要处理,则在3428控制返回到3424,否则控制转到3430。在3430,如果暂时变得只读的对象中的任一个已被变换,则控制转到3434,其中与对象相对应的待办项目被删除。
    图35包含根据本发明的实施方式用于对在面向对象企业工程系统内表示的多个对象进行几何变换的系统的示意框图。多个对象中的至少一个对象是多个对象中的另一个对象的前趋。该系统包括被构造成从用户接受第一输入的用户接口3500。该输 入选择要进行几何变换的多个对象。用户接口3500也被构造成从用户接受指示将对所选对象执行的几何变换的类型的第二输入。标识模块3502耦接到用户接口3500。标识模块3502被构造成对于每个所选对象,自动地标识与所选对象相对应的任何前趋对象,即,其中所选对象的至少一个参数的值功能上依赖于任何前趋对象的至少一个参数。分割模块3504耦接到标识模块3502并且被构造成自动地将所选对象划分成多个有序的对象分区。对于任何给定对象,对象的前趋对象中的每个对象都是在与给定对象相同的分区中或在前面的分区中。分区信息可以被存储在分区列表3505中或在任何其它适合的储存器中。
    变换模块3506被耦接到分割模块3504并且被构造成根据所指示的几何变换的类型对对象进行几何变换。变换模块3506以分区次序按照分区来变换对象。冻结模块3508可以被耦接到变换模块3506并且被构造成在每分区基础上,暂时使分区中的每个对象的任何后继对象变得只读并且暂时使分区中的每个对象的任何前趋对象变得只读。对于变得暂时只读的每个对象,冻结模块3508被构造成在待办列表3510中生成对应的待办项目。清除模块3512被耦接到变换模块3506。清除模块3512被构造成如果暂时变得只读的对象中的任一个随后被变换,则删除对应的待办项目。
    传播模块3514耦接到标识模块3502。传播模块3514构造成对于每个分区,标识该分区中的对象的任何下级对象。标识模块3502将标识出的下级对象添加到分区。变换模块3506构造成根据所指示的几何变换的类型,对所添加的下级对象进行几何变换。
    处理控制模块3516耦接到变换模块3506并且构造成以分区次序处理分区中的至少两个分区。处理控制模块3516可以被构造成对于每个分区,保存关于该分区的信息。所保存的信息包括足以重新开始对分区中对象的几何变换的信息。该信息可以被保存在对象数据库3518或任何其它适合的储存器中。处理控制模块3516还使变换模块3506在处理后续分区之前根据所指示的几何变换的类型,对分区中的对象进行几何变换。
    分割模块3504构造成生成前趋图3520,该前趋图3520使每个所选对象与所选对象的前趋对象联系起来。
    修剪模块3522构造成标识与所选对象中的任一个对象相关的至少一个外部对象。修剪模块3522断开标识出的外部对象与所选对象之间的关系。
    尽管对象数据库3518、分区列表3505以及前趋图3520被示出为单独的数据库, 但是可以以任何适合的形式存储这些元素,所述形式诸如关系数据库中的表、存储器中的数据结构、非关系数据库文件等。此外,可以在单个数据暂存器中组合这些元素中的一些或全部,或者它们可以作为字段、指针、值等被实施在其它元素中。
    上面描述的方法可以由包括处理器的计算机系统通过执行在存储器中存储的适当指令来执行,并且上面描述的系统可以由包括处理器的计算机系统通过执行在存储器中存储的适当指令来实施。用于大量对象进行几何变换的装置已被描述为包括由在存储器中存储的指令所控制的处理器。存储器可以是适合于存储控制软件或其它指令和数据的随机存取存储器(RAM)、只读存储器(ROM)、闪速存储器或任何其它存储器或其组合。已经参照流程图和/或框图描述了由变换方法和装置所执行的功能中的一些。本领域的技术人员应该容易地了解,流程图或框图中的全部或每个框的一部分或框的组合的功能、操作、判定等可以被实施为计算机程序指令、软件、硬件、固件或其组合。本领域的技术人员还应该容易地了解,定义本发明的功能的指令或程序可以被以许多形式输送到处理器,所述许多形式包括但不限于在有形非暂时性非可写存储媒体(例如计算机内的只读存储器装置,诸如CD-ROM、DVD盘)上永久地存储的信息、在有形非暂时性可写存储媒体(例如软盘、可移动闪速存储器以及硬盘驱动器)上可变地存储的信息或通过通信媒体向计算机输送的信息,所述通信媒体包括有线或无线计算机网络。此外,虽然本发明可以用软件加以具体化,但是实施本发明所必需的功能可以可选地或者另选地部分地或整个地使用固件和/或硬件部件具体化,所述固件和/或硬件部件诸如组合逻辑、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它硬件或硬件、软件和/或固件部件的某种组合。
    虽然通过上面描述的示例性实施方式对本发明进行描述,但是本领域的普通技术人员将理解,在不背离本文中所公开的发明构思的情况下,可以做出对所例示的实施方式的修改或所例示的实施方式的变化。例如,尽管已经参照流程图描述了变换机制的一些方面,但是本领域的技术人员应该容易地了解,流程图中的全部或每个框的一部分或框的组合的功能、操作、判定等可以被组合、分成单独的操作或者以其它次序执行。而且,虽然连同各种说明性数据结构一起对实施方式进行了描述,但是本领域的技术人员将认识到,系统可以使用各种数据结构加以具体化。此外,可以以上面未列举的方式组合公开的方面或这些方面的各部分。因此,本发明不应该被视为限于所公开的实施方式。

    关 键  词:
    使用 多事 技术 面向 对象 环境 中的 执行 几何 变换 方法 装置
      专利查询网所有文档均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    0条评论

    还可以输入200字符

    暂无评论,赶快抢占沙发吧。

    关于本文
    本文标题:使用多事务技术对面向对象环境中的对象执行几何变换的方法和装置.pdf
    链接地址:https://www.zhuanlichaxun.net/p-626004.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
    经营许可证编号:粤ICP备2021068784号-1