CN104750476B - 用于解决分层引用的数据中的冲突的方法和系统 - Google Patents

用于解决分层引用的数据中的冲突的方法和系统 Download PDF

Info

Publication number
CN104750476B
CN104750476B CN201410830814.8A CN201410830814A CN104750476B CN 104750476 B CN104750476 B CN 104750476B CN 201410830814 A CN201410830814 A CN 201410830814A CN 104750476 B CN104750476 B CN 104750476B
Authority
CN
China
Prior art keywords
component
override
offspring
sub
version
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201410830814.8A
Other languages
English (en)
Other versions
CN104750476A (zh
Inventor
M·拉加万
L·S·巴赫
D·里格
P·E·海恩斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Reach Cable System America Co
Original Assignee
Reach Cable System America Co
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Reach Cable System America Co filed Critical Reach Cable System America Co
Publication of CN104750476A publication Critical patent/CN104750476A/zh
Application granted granted Critical
Publication of CN104750476B publication Critical patent/CN104750476B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/185Hierarchical storage management [HSM] systems, e.g. file migration or policies thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44552Conflict resolution, i.e. enabling coexistence of conflicting executables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/197Version control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及一种用于解决分层引用的数据中的冲突的方法和系统。在一个方面,提供一种用于管理逻辑组件层次结构中的冲突的计算机实现的方法。所述逻辑组件层次结构包括祖先组件和与所述祖先组件关联的后代组件。所述方法使用与存储器通信的计算机设备。所述方法包括由所述计算机设备确定用于在所述逻辑组件层次结构中使用超控组件替换所述后代组件的要求。所述超控组件通过超控引用与所述祖先组件关联。所述方法还包括在所述逻辑组件层次结构中使用所述超控组件替换所述后代组件。

Description

用于解决分层引用的数据中的冲突的方法和系统
技术领域
本公开一般地涉及管理组件层次结构,更具体地说,涉及使用超控(overriding)引用替换组件层次结构中的子组件。
背景技术
当设计和开发大型集成系统(尤其是电路)时,通常没有一个工程师团队负责系统的整体设计。相反,通常工程师团队负责设计系统组件,整体设计是每个工程师团队提供的组件设计的总体。当系统变得更复杂时,将系统的越来越多的方面分成子组件。可以将父组件分解成多个子组件。组件和子组件的这种布置可以在表示整体系统的层次结构中相关。
某些开发人员和设计人员可能构建可重用组件,这能够减少组件层次结构的设计和实现次数。某些层次结构管理系统使用分层引用(“href”)将组件链接到可重用组件。当组件层次结构变得更复杂时,可重用组件之间的冲突概率增加。这种冲突可能因为例如以下情况导致:产品中的多个组件引用同一可重用组件,但它们可能引用不同版本。
发明内容
在一个方面,提供一种用于管理逻辑组件层次结构中的冲突的计算机实现的方法。所述逻辑组件层次结构包括祖先组件和与所述祖先组件关联的后代组件。所述方法使用与存储器通信的计算机设备。所述方法包括由所述计算机设备确定用于在所述逻辑组件层次结构中使用超控组件替换所述后代组件的要求。所述超控组件通过超控引用与所述祖先组件关联。所述方法还包括在所述逻辑组件层次结构中使用所述超控组件替换所述后代组件。
在另一个方面,提供一种用于管理逻辑组件层次结构中的冲突的计算设备。所述逻辑组件层次结构包括祖先组件和与所述祖先组件关联的后代组件。所述计算机设备包括以通信方式耦合到存储器的处理器。所述存储器包括所述逻辑组件层次结构。所述计算设备被编程为确定用于在所述逻辑组件层次结构中使用超控组件替换所述后代组件的要求。所述超控组件通过超控引用与所述祖先组件关联。所述计算设备还被编程为在所述逻辑组件层次结构中使用所述超控组件替换所述后代组件。
在另一个方面,提供至少一种非瞬时性计算机可读存储介质,其上包含计算机可执行指令。当由至少一个处理器执行时,所述计算机可执行指令导致所述处理器确定用于在逻辑组件层次结构中使用超控组件替换后代组件的要求。所述超控组件通过超控引用与所述后代组件的祖先组件关联。所述计算机可执行指令还导致所述处理器在所述逻辑组件层次结构中使用所述超控组件替换所述后代组件。
附图说明
图1-9示出在此描述的方法和系统的示例性实施例;
图1是示例性组件层次结构的框图;
图2是与图1中所示的组件层次结构关联的已版本化模块的框图;
图3是图2中所示的已版本化模块在第一时间的快照;
图4是图2中所示的已版本化模块的内容在第二时间的快照;
图5是包括超控引用的示例性组件层次结构的框图;
图6是包括超控引用的另一个示例性组件层次结构的框图;
图7是示出标识和集成超控引用的示例性层次结构加载过程的流程图;
图8是被配置为在图5和6中所示的组件层次结构中实现超控引用的示例性层次结构管理系统的框图;以及
图9是计算设备中可以用于管理图5和6中所示的组件层次结构的数据库以及其它相关计算组件的框图。
具体实施方式
以下详细描述通过实例的方式而不是通过限制的方式例示本公开的各实施例。构想了本公开具有用于管理组件层次结构的一般应用。
如在此使用的,以单数描述并且以单词“一”或“一个”开始的元素或步骤应该被理解为不排除多个元素或步骤,除非显式描述这种排除。此外,对本公开的“示例性实施例”或“一个实施例”的引用并非旨在被解释为排除也引入所描述特性的其它实施例的存在。
如在此使用的,术语“数据库”可以指数据主体、关系数据库管理系统(RDBMS)或者这两者。如在此使用的,数据库可以包括任何数据集合,其中包括分层数据库、关系数据库、平面文件数据库、对象关系数据库、面向对象的数据库;以及存储在计算机系统中的任何其它结构化记录或数据集合。上面的实例仅是例子,因此并非旨在以任何方式限制术语数据库的定义和/或含义。RDBMS的实例包括但不限于 Database、MySQL、DB2、 SQL Server、和PostgreSQL。但是,可以使用实现在此描述的系统和方法的任何数据库。(Oracle是位于加利福尼亚州红木海岸的甲骨文公司的注册商标;IBM是位于纽约阿蒙克的国际商业机器公司的注册商标;Microsoft是位于华盛顿州雷德蒙德的微软公司的注册商标;以及Sybase是位于加利福尼亚州都柏林的Sybase的注册商标。)
如在此使用的,处理器可以包括任何可编程系统,其中包括使用以下项的系统:微控制器、精简指令集电路(RISC)、专用集成电路(ASIC)、逻辑电路,以及能够执行在此描述的功能的任何其它电路或处理器。上面的实例仅是例子,因此并非旨在以任何方式限制术语“处理器”的定义和/或含义。
如在此使用的,术语“软件”和“固件”可互换,并且包括存储在存储器中以便由处理器执行的任何计算机程序,存储器包括RAM存储器、ROM存储器、EPROM存储器、EEPROM存储器和非易失性RAM(NVRAM)存储器。上面的存储器类型仅是实例,因此并非限制可用于存储计算机程序的存储器类型。
在一个实施例中,提供一种计算机程序,并且该程序包含在计算机可读介质上。在一个示例性实施例中,所述系统在单个计算机系统上执行,不需要连接到服务器计算机。在另一实施例中,所述系统在环境中运行(Windows是位于华盛顿州雷德蒙德的微软公司的注册商标)。在另一个实施例中,所述系统在大型机环境和服务器环境中运行(UNIX是位于英国伯克郡雷丁市的X/Open Company Limited的注册商标)。所述应用是灵活的并且被设计为在各种不同环境中运行而不影响任何主要功能。在某些实施例中,所述系统包括在多个计算设备中分布的多个组件。一个或多个组件可以采用包含在计算机可读介质中的计算机可执行指令的形式。所述系统和过程并不限于在此描述的特定实施例。此外,每个系统的组件和每个过程可以独立于在此描述的其它组件和过程而实现。还可以结合其它组件包和过程使用每个组件和过程。
当将系统设计分成更小并且更可管理的系统组件设计时,包括多个组件的硬件或软件系统的开发可以更高效。可以通过分层表示进一步改进系统设计,在分层表示中可以添加超控引用并且将它们用于使用其它版本替换子组件。
图1是示例性产品A 110的分层表示100。产品A 110包括第一组件A1 120和第二组件A2 130。第二组件A2 130包括两个子组件A2,1 140和A2,2 150。产品A 110分别与组件A1120和A2 130具有分层关联111和112。同样,组件A2 130分别与子组件A2,1 140和A2,2 150具有分层关联131和132。产品A 110可以包括其它组件(未示出),这些组件又可以包括其它子组件。子组件还可以包括进一步的子组件,依此类推。
还可以针对产品A 110的组件或子组件单独形成诸如100之类的分层表示(例如,是产品A 110的完整分层表示100的子集的表示)。此外,尽管在该实施例中元件A 110是产品,但元件A 110还可以被视为组件,其中元件A1 120和元件A2 130可以被视为元件A 110的子组件。同样,元件A2,1 140和元件A2,2 150可以被视为组件,与它们的子组件(未示出)具有分层关系。
产品A 110可以表示可以以模块化方式设计的任何硬件或软件系统。例如,产品A110可以是汽车,其中组件A1 120可以是框架,并且组件A2 130可以是汽车引擎。引擎的子组件A2,1 140和A2,2 150例如可以分别是引擎的曲柄轴和气缸。在另一个实例中,产品A 110可以是集成电路(IC)芯片,其中组件A1 120可以是随机存取存储器(RAM),并且组件A2 130可以是IC芯片的计算机处理单元(CPU)。CPU的子组件A2,1 140和A2,2 150例如可以分别是CPU的算术逻辑单元(ALU)和控制单元。
在开发过程中,特定组件的设计团队可以有权访问组件和/或组件的子组件的所有当前和先前设计。设计团队可以在分层表示100中的任何级别负责组件。例如,某个设计团队可以用于开发产品A 110,以及单独设计团队用于产品A 110的每个组件(例如,组件A1120和A2 130)。产品A 110的设计团队可以负责使用产品A 110的组件的特定设计,模拟和/或测试产品A 110。
产品A 110及其所有组件A1 120和A2 130以及子组件A2,1 140和A2,2 150的设计可以作为文件包括在模块中,这些模块存储在中央数据库或分布式数据库(未在图1中示出)中以便由任何设计团队检索。模块通常包括一个或多个文件,这些文件包括软件代码和/或设计数据。模块可以包含其它模块,并且它们可以被发布甚至被打包以便重用。在某些实现中,使用服务器侧数据库,例如,来自位于马萨诸塞州沃尔瑟姆的Dassault SystèmesENOVIA Corp.的业务对象数据库。但是,可以使用实现在此描述的系统和方法的操作的任何其它数据库或数据库组合。
为了有助于促进和跟踪组件开发,存储在模块中的每个组件设计可以具有与该模块关联的特定版本号,例如,模块和/或组件版本。
图2示出与特定组件关联的已版本化模块的框图200,这些特定组件使用如图1中所示的相同组件层次结构。产品A 110可以与具有不同模块版本号的多个模块关联,例如,模块A v1.0 211、A v1.1 212和A v1.2 213。
图200包括模块分支210、220、230、240和250。模块分支表示对象集合更新的时间进展,这些对象与特定产品、组件或子组件具有公共关联。例如,由模块分支210包括或引用的模块A v1.0 211、A v1.1 212和A v1.2 213的集合是产品A 110的不同已版本化模块,它们各自表示对先前已版本化模块的后续更新或更改。如在此使用的,共享公共模块分支的模块可以称为“相同模块”,例如,指示它们是公共底层模块版本谱系的相同或不同版本。同样,如果元件或组件共享公共底层版本谱系,例如分支210、220、230、240和250,则元件或组件也可以称为“相同”。模块分支220引用模块A1 v1.0 221和A1 v1.1 222的集合,这些模块是与组件A1 120关联的不同已版本化模块。模块分支230引用模块A2 v1.0 231、A2 v1.1232和A2 v1.2 233的集合,这些模块是与组件A2 130关联的不同已版本化模块。模块分支240引用与子组件A2,1 140关联的模块集合A2,1 v1.0 241。模块分支250引用模块A2,2 v1.0251和A2,2 v1.1 252的集合,这些模块是与子组件A2,2 150关联的不同已版本化模块。
已版本化模块(例如,模块A v1.0 211、A v1.1 212和A v1.2 213)表示在对组件(例如,产品A 110)设计的更新或更改的时间进展的特定时间点,更新或更改了模块。设计团队之一在一个模块中对组件设计的任何更改都可以导致创建新模块,其具有新模块版本号。例如,组件A2 130的设计团队对包括在模块A2 v1.1 232中的版本1.1的设计进行更改,并且创建具有新版本号1.2的模块A2 v1.2 233以便保存新设计。特定组件(例如,组件A2130)可以具有多个设计版本,每个版本存储在单独模块(例如,模块A2 v1.0 231、A2 v1.1232和A2 v1.2 233)中并且具有不同版本号(例如,v1.0、v1.1和v1.2)。
为了进一步促进产品或组件的开发,可以将一个或多个分层引用存储在组件的引用特定子模块的模块中。图3和4示出不同类型的分层引用的实例,它们可以在产品的特定设计模块和与该产品的组件关联的子模块之间存在并且从时间t1更改为t2。图3和4使用分层表示100的一部分,其中产品A 110包括两个组件A1 120和A2 130,并且组件A2包括一个子组件A2,1 140。子模块可以是已由另一模块引用并且与该模块相关的组件的子组件关联的任何模块。例如,在图3中,模块A1 v1.0 321和A2 v1.0 331是模块A v1.0 311的子模块,并且模块A2,1 v1.0 341是模块A2 v1.0 331的子模块。模块A v1.0 311与组件A 110关联,并且子模块A1 v1.0 321和A2 v1.0 331分别与子组件A1 120和A2 130关联。
图3是存储产品A 110的模块(在图2中示出)的数据库(未在图3中示出)的内容在时间t1时的示例性快照300。模块A v1.0 311包括产品A 110的设计版本1.0。模块A1 v1.0321和A2 v1.0 331分别包括组件A1 120和A2 130(都在图2中示出)的设计版本1.0。模块A2,1v1.0 341包括子组件A2,1 140(在图2中示出)的设计版本1.0。模块分支320指与组件A1 120关联的模块的时间进展,并且在时间t1包括或引用模块A1 v1.0 321。模块分支330指组件A2130的模块的时间进展,并且在时间t1包括或引用模块A2 v1.0 331。模块分支340指子组件A2,1 140的模块的时间进展,并且在时间t1包括或引用模块A2,1 v1.0 341。
时间t1例如可以是产品A 110的设计团队首次将模块A v1.0 311传输到数据库的时间。模块A v1.0 311包括产品A 110的第一设计,其被分配版本号1.0。设计团队在该时间或其之前定义对“α”标记380的动态分层引用351,并且定义对模块A2 v1.0 331的静态分层引用352。
在图3的实例中,创建指向模块A1 v1.0 321的静态分层引用352,模块A1 v1.0 321如下所述,是“α”标记380在时间t1引用的模块。因此,最初分层引用351和352(分组为350)都引用同一模块,尽管它们指向不同对象。通过在创建动态分层引用时自动定义静态分层引用,设计团队在将来可以有利地使用该静态分层引用以便确定动态分层引用的初始关联,即使在动态分层引用指向后续已版本化模块时也是如此。
通过类似的方式,在设计团队将模块A2 v1.0 331传输或提交到数据库之时或之前,该设计团队针对组件A2创建模块A2 v1.0 331的动态分层引用361。在该实例中,组件A2的设计团队将动态分层引用361定义为指向“黄金”标记390。黄金标记390最初指向模块A2,1v1.0 341。在过程550,自动将静态分层引用362定义为指向动态分层引用361最初指向的同一模块,其为模块A2,1 v1.0 341。最初,分层引用361和362(分组为360)都引用同一模块,尽管它们指向不同对象。
在图3的所示实例中,在将与组件关联的模块提交到数据库时,创建该模块的分层引用。但是,可以在已提交模块之后的任何时间,添加、删除或更改存储在模块中的分层引用。
图4是存储产品A 110的模块(在图2中示出)的数据库(未在图4中示出)的内容在随后时间t2时的快照400。在t1和t2之间的某一时间,组件A1 120、A2 130和A2,1 140的设计团队分别传输新模块A1 v1.1 421、A2 v1.1 431和A2,1 v1.1 441。此外,组件A2,1 140的设计团队将“黄金”标记390从模块A2,1 v1.0 341移动到A2,1 v1.1 441。
通常,分层引用可以是动态的或静态的。静态分层引用(例如,分层引用352、353和362)引用包括组件或子组件的特定版本的模块。例如,静态分层引用352引用模块A1 v1.0321,该模块包括组件A1 120的设计版本1.0。另一方面,动态分层引用(例如,分层引用351和361)可以引用标记或模块分支,标记或模块分支则引用特定模块。标记和模块分支可以更改,因此动态分层引用最终引用的模块可以更改。用户可以手动更改标记以便引用不同模块。例如,组件A2,1 140的设计团队将“黄金”标记390从模块A2,1 v1.0 341移动到A2,1v1.1 441。可以通过向模块分支中添加新模块(例如,新模块版本),更改模块分支。例如,当组件A1 120的设计团队将新模块A1 v1.1 421传输到数据库时,模块分支320更改以便它额外包括或引用新模块A1 v1.1 421(例如,模块分支指向最新版本)。
可以定义不同类型的标记。例如,任何组件的最新模块可以与“α”标记关联,该标记可以表示组件的“过程中”版本。在图3中所示的实例中,通过定义“α”标记380以便引用分支320,“α”标记380引用具有模块分支320引用或包括的最新版本的模块。在一个备选实施例中,动态分层引用351可以直接指向模块分支320,并且产生相同结果。在另一个实例(未示出)中,可以将组件的模块标记为“β”,其可以表示组件的“测试”版本。还可以将组件的模块标记为“黄金”,其可以表示组件的最新“稳定”版本。在图3中所示的实例中,组件A2,1 140的设计团队最初将组件A2,1 140的版本1.0定义为“黄金”版本。“α”、“β”和“黄金”标记的每一个都是动态的,因为它们可更改(例如,设计团队可以将标记更改为指向不同的已版本化模块),因此不会随着时间而始终引用同一模块。
图5是包括超控引用的示例性产品A 511的分层表示500。产品A 511包括第一组件A1 521和第二组件A2 531。产品A 511可以类似于产品A 110(在图1和2中示出),或者类似于产品A v1.0 311(在图3和4中示出),并且组件A1 521和A2 531可以类似于产品A1 120和A2130(在图1和2中示出),或者类似于A1 v1.0 321和A2 v1.0 331(在图3和4中示出)。第一组件A1 521包括一个子组件B v1.1 522。产品A 511分别与组件A1 521和A2 531具有分层关联512和513。同样,组件A1 521与子组件B v1.1 522具有分层关联514。应该理解,尽管层次结构500中的每个组件可以包括诸如版本号之类的版本标识符,但为了专注性和可读性目的,未包括组件A 511、A1 521和A2 531的版本号。
术语“后代”、“祖先”、“父”和“子”如在此使用的,指组件之间的逻辑家族、分层关系(例如,组件的树结构)。例如,组件B v1.1 522可以称为其祖先A1 521和A 511的后代。组件A1 521是组件B v1.1 522的父代(即,第一邻近、直接祖先),同样,组件B v1.1 522是组件A1 521的子代。此外,组件A1 521本身是组件A 511(即,其父代)的后代(在这种情况下,为子代)。这样,这些术语可以用于方便地定义和描述组件之间的这些逻辑关系。
在所述示例性实施例中,产品A 511包括对超控组件B 550的引用540。超控引用540用作使用超控组件B 550替换任何匹配组件的指示符。换言之,在组件A 511(即,A1521、A2 531和B v1.1 522的祖先组件)中存在超控引用540导致系统在其任何后代中,替换层次结构500中对组件B的自身以下的其它实例的任何引用,如下面更详细描述的那样。
在所述示例性实施例中,引用540不是关联512、513和514之类的分层关联514,而是用作并且在此称为超控引用540。超控组件B 550包括版本1.0,在图5中所示的实例中,其不同于针对组件B v1.1 522所示的版本(即,版本1.1)。在所述示例性实施例中,超控组件B550与组件A 511没有家族关系(即,组件B 550不是层次结构的直接成员),因此超控引用540不描述家族关系。相反,超控引用540是到另一个组件的链接,或者在某些实施例中,是到组件的特定版本的链接,将在下面更详细描述其使用。
在操作期间,计算系统(未在图5中示出)将组件模块加载到系统的工作存储器(未在图5中示出)内的数据结构中,该计算系统负责在计算机辅助制图系统中读取和构建产品和/或组件的分层表示,例如产品A 511的分层表示500。在某些实施例中,可以将某些子组件存储在单独模块中(例如,组件A 511可以在一个模块中,并且引用存储在不同模块中的子组件A1 521)。在其它实施例中,可以将某些子组件存储在同一模块中(例如,可以将组件A 511和子组件A1 521存储在同一模块中)。在所述示例性实施例中,将每个组件A 511、A1521、A2 531和B v1.1 522存储在单独模块中。
在所述示例性实施例中,系统首先加载与组件A 511关联的模块。与组件A 511关联的模块标识组件A 511包括两个子组件A1 521和A2 531,以及对超控组件550的附加超控引用540。系统然后检查和/或导入与A1 521关联的模块。当检查组件A1 521的模块时,系统注意到存在子组件B v1.1 522(即,A1 521的子组件,如在与A1 521关联的模块中定义的那样)。
在某些已知系统中,直接处理子组件(即,基于父组件A1 521的分层引用,直接将子组件B v1.1 522的数据结构加载到层次结构中)。但是,在所述示例性实施例中,在加载子组件B v1.1 522之前,系统检查是否存在组件B的任何超控组件。更具体地说,系统检查子组件B v1.1 522的一个或多个祖先,以便确定是否存在组件B的超控引用,例如超控引用540。组件B的超控引用的存在向系统指示,要使用超控组件550(即,由超控引用540引用的组件)代替父代(例如,组件A1 521)明确引用的组件(例如,组件B v1.1 522)。这样,系统禁止组件B v1.1 522引用(即,引用514)并代之以加载超控引用540所引用的超控组件550(例如,组件B的版本1.0),而不是加载与组件B v1.1 522(即,组件B的版本1.1)关联的模块。此外,在某些实施例中,标记组件A1 521(即,被超控子组件的父组件)的数据结构,以便将引用514指示为被超控。该被超控引用514既不被处理,也不进一步参与设计。
在该示例性实施例中,超控引用540先占加载特定类型组件的子组件,并且使用指定的超控组件。换言之,仅当子组件与超控组件匹配但具有不同版本(即,它们共享公共组件版本谱系,类似于分支210、220、230、240和250,但调用不同版本)时,才使用超控引用540。在某些实施例中,每个不同组件具有唯一URL或其它标识符,该标识符可以用于标识组件之间,或者组件和超控引用/组件之间的匹配。换言之,例如,组件B的每个版本共享公共URL,并且其它组件未共享该同一URL。这样,超控引用是具有匹配URL的祖先链上的引用。因此,超控引用版本先占在超控引用链接到的祖先的后代中发现的超控组件的任何不同版本。
在某些实施例中,多个祖先具有针对同一组件(例如组件B)定义的超控组件。为了解决这些情况,在某些实施例中,系统从B v1.1 522的父代(即,A1 521)开始,查找每个组件的每个父代/祖先,直至到达树的顶部(即,组件A 511)。在某些实施例中,使用针对组件B发现的第一超控引用。在所述示例性实施例中,使用针对组件B发现的最高超控引用(即,来自最高级祖先的引用)。
此外,在其它实施例中,在加载之前,系统针对每个组件/子组件的超控引用执行这些检查。换言之,在图5中所示的实例中,当首次加载组件A1 521,当加载组件A2 531以及当加载组件B v1.1 522时,系统可以检查超控引用。因此,即使更高阶组件(即,具有子代的组件)也可能被更高祖先先占。
此外,在某些实施例中,用户定义对超控组件550的超控引用540。在某些实施例中,超控引用540是到存储在与组件A 511关联的模块中的超控组件550的链接或其它引用。例如,用户可以将超控引用540定义为指向与超控组件550关联的数据结构的存储器指针,或者用户可以将超控引用540定义为对超控组件550的分层引用(href)。在其它实施例中,超控引用540是数据结构中与祖先组件(例如,组件A 511)关联的字段,其包括先占标识准则以便判定超控引用540和超控组件550是否和/或何时可以用于先占子组件。例如,存储器或模块文件中的祖先组件的数据结构可以包括字段信息,其定义对具有版本“v1.0”的“组件B”的超控引用。这样,超控引用540可以通过存储器字段中存在的数据来标识,并且超控组件550可以通过以下操作标识:使用字段数据访问组件模块,这些组件模块使用在这些字段中标识的组件名称和版本。
图6是包括超控引用的示例性产品A 611的组件的另一个示例性层次结构600的框图。产品A 611包括第一组件A1 621和第二组件A2 631。第一组件A1 621包括一个子组件Bv1.1 622,其表示具有版本1.1的组件B。第二组件A2 631包括一个子组件B v1.2 632,其表示具有版本1.2的组件B。产品A 611分别与组件A1 621和A2 631具有分层关联612和613。同样,组件A1 621与子组件B v1.1 622具有分层关联614,并且第二组件A2 631与第二子组件Bv1.2 632具有分层关联615。
在所述示例性实施例中,产品A 611包括对超控组件B v1.1 650的引用640。在某些实施例中,超控引用640和超控组件B v1.1 650可以分别类似于引用540和组件550(在图5中示出)。超控组件B v1.1 650包括版本1.1,在图6中所示的实例中,其与组件B v1.1 622(即,版本1.1)相同,但不同于针对组件B v1.2 632所示的版本(即,版本1.2)。在所述示例性实施例中,超控引用640用于给定祖先组件(例如组件A 611)下面的冲突组件之间的冲突解决。换言之,仅当两个子组件匹配但具有不同版本(即,它们是同一组件版本谱系,类似于分支210、220、230、240和250,但调用不同版本)时,才使用超控引用640。在两个冲突子组件的公共祖先中存在超控引用640将导致系统使用超控组件650替换两个冲突子组件之一或全部。
在操作期间,计算系统(未在图6中示出)将组件模块加载到系统的工作存储器(未在图6中示出)内的数据结构中,该计算系统负责在计算机辅助制图系统中读取和构建产品和/或组件的分层表示,例如产品A 611的分层表示600。在某些实施例中,可以将某些子组件存储在单独模块中(例如,组件A 611可以在一个模块中,并且引用存储在不同模块中的子组件A1 621)。在其它实施例中,可以将某些子组件存储在同一模块中(例如,可以将组件A 611和子组件A1 621存储在同一模块中)。在所述示例性实施例中,将每个组件A 611、A1621、A2 631、B v1.1 622和B v1.2 632存储在单独模块中。
在所述示例性实施例中,系统首先加载或导入与组件A 611关联的模块(即,读取与组件A 611的结构关联的数据,并且在该组件的存储器中构建数据结构)。与组件A 611关联的模块标识组件A 611包括两个子组件A1 621和A2 631,以及对超控组件B v1.1 650的超控引用640。系统然后标识A1 621包括子代子组件B v1.1 622,并且A2 631包括冲突的子代子组件B v1.2 632。系统在祖先层次结构中向上搜索每个子组件B v1.1 622和B v1.2632,以便查找具有组件B(例如,超控组件B v1.1 650)的超控引用(例如,引用640)的共享祖先(例如,组件A 611)。在发现超控引用640时,系统基于每个子代子组件B的超控组件Bv1.1 650(即,组件B的版本1.1)加载组件B版本。换言之,将组件B版本1.1的数据结构作为子代子组件加载到图6中所示的位置622和632中。此外,在某些实施例中,将引用614和615被标记为被超控。
上面针对图5和6的实例被描述为在新结构加载期间(即,在存储器中最初构建组件层次结构期间)进行。但是,应该理解,超控引用的其它实现是可能的并且在本公开的范围内。例如,可以使用已经构建的结构执行超控引用分析。可以添加或删除组件,并且可以针对生成的结构执行超控引用分析,以便检查可能引入的新冲突。可以向/从现有结构中添加/删除超控引用,并且可以执行超控引用分析以便发现冲突和/或替换子组件。在某些实施例中,当添加或删除组件时,分析这些组件以便确定对超控引用的影响,以及对层次结构进行后续更改。
在此处描述的示例性实施例中,基于对组件进行匹配并且比较版本中的差异,确定组件先占。在所述示例性实施例中,先占标识准则包括基于诸如URL之类的组件标识符以及诸如版本号之类的版本标识符,在两个组件之间进行匹配。通常,可以将版本标识符视为组件的特定属性。系统使用先占标识准则判定是否使用超控组件先占子组件。如果组件具有相同组件标识符,但具有不同版本标识符,则系统将使用超控引用而不是本机引用。但是,应该理解,可以使用其它先占标识准则。例如,先占标识准则可以包括其它组件标识符,例如共享诸如图2中所示的模块分支的每个组件的唯一索引编号,或者组件标识符集合。先占解决信息还可以包括组件的其它单个属性,或者组件属性组合,或者属性范围。
在某些实施例中,先占标识准则不仅包括组件标识符(例如,URL)和版本标识符(例如,版本号),而且还包括组件在层次结构中的相对路径。组件的相对路径指组件在层次结构中的位置,并且可以相对于应用超控引用的祖先组件,或者相对于到组件的其它相对或绝对路径。在先占标识准则中包括相对路径将允许在确定超控引用应该何时替换子组件中存在另一个粒度层。更具体地说,包括相对路径允许系统替换特定子组件(即,位于特定相对路径处的子组件)。这样,如果子组件匹配URL(即,它是同一组件)和路径(即,它是该位置处的特定组件),并且版本标识符不同,则系统使用超控组件替换子组件。这样,仅替换在由超控引用指定的相对路径处的特定子组件,并且不一定是具有超控引用的祖先的任何其它后代。
在其它实施例中,超控引用可以指示例如使用“空”超控组件(例如,超控组件版本=“空”)删除组件。这样,超控引用可以包括先占标识准则,其标识要匹配的某些组件,但因为超控组件版本为“空”,将删除匹配子组件(即,无替换)。
图7是示出用于标识和集成超控引用的示例性层次结构加载过程700的流程图。在所述示例性实施例中,使用诸如层次结构管理系统(HMS)820(在图8中示出)之类的计算系统或计算设备910(在图9中示出)执行过程700。设计团队输入对其模块(例如,组件层次结构)的版本,例如对产品A 511(在图6中示出)的请求。HMS 820开始702过程700,检索704与设计团队处理的最高级组件关联的模块。顶级模块和随后引用的每个模块可以包括对一个或多个子组件的引用。每个子组件还可以具有关联模块,该关联模块还可以包括对一个或多个子组件的引用,依此类推。
HMS 820从顶部模块(即,顶部组件)开始,在所述示例性实施例中该顶部模块表示产品A 511。产品A 511结合到层次结构500(在图5中示出)中,如由元件511表示的那样(即,在存储器中创建顶级产品的数据结构,包括从顶部模块导入的数据)。在所述示例性实施例中,顶部模块引用组件A1 521和A2 531。在步骤710,HMS 820检查正在处理的当前模块(即,与产品A 511关联的顶部模块)是否具有尚未处理的任何子组件(即,尚未导入到层次结构500(在图5中示出)中的子组件)。如果剩余一个或多个未检查的子组件,则HMS 820选择720未检查的子组件以便导入。
例如,在一个实施例中,HMS 820选择720组件A1 521。在完全导入子组件A1 521之前,HMS 820分析子组件以便检查是否存在匹配的任何超控引用。HMS 820在层次结构500中搜索引用与组件A1匹配的超控组件的超控引用。在某些实施例中,HMS 820从后代组件的父代开始,在逻辑组件层次结构中以升序检查后代组件的一个或多个祖先,并且在检查祖先组件时标识超控引用,其中标识超控引用包括检查祖先组件以便查找与匹配后代组件的组件关联的引用。在某些实施例中,使用在祖先中遇到的第一个匹配超控引用。换言之,使用具有匹配超控引用的最近祖先。在其它实施例中,使用在祖先中遇到的最高匹配超控引用。换言之,使用具有匹配超控引用的最远祖先。
在所述示例性实施例中,HMS 820针对引用与被检查的特定子组件(即,A1)匹配的超控组件的超控引用,搜索730子组件的祖先。在该实例中,当前在层次结构500中的A1的仅有祖先是其父代,即组件A 511。组件A 511确实具有已定义的超控引用(即,超控引用540(在图5中示出))。但是,超控引用540引用超控元件550,超控元件550与正在被分析的当前子组件不匹配(即,超控引用540是对组件B的引用,其中正在被分析的子组件是组件A1的子组件)。如果740未发现匹配超控引用,则HMS 820选择744与被分析的子组件(即,组件A1v1.0 521)关联的模块,检索746该模块并且将其导入到层次结构中(例如,将组件A1 v1.0521添加为A 511的子代等)。
在所述示例性实施例中,作为检索746子组件模块的一部分,该子组件变成检查的当前模块。HMS 820向上循环以便考虑组件A1 v1.0 521的子组件。在该实例中,组件A1 v1.0521具有一个子组件B v1.1 522。在步骤710,HMS 820开始分析子组件B v1.1 522,并且搜索730该子组件的所有祖先。在该阶段,层次结构500包括两个节点(即,两个组件)A1 v1.0521和A 511,它们的每一个都是子组件B v1.1 522的祖先。在所述示例性实施例中,HMS820沿着祖先树上升,从而搜索匹配超控引用。检查组件A1 v1.0 521以便查找超控引用,但是没有找到。但是,组件A 511确实具有超控引用540(即,HMS 820已标识检查的子组件的超控引用)。此外,超控引用540指向的超控组件550确实与检查的当前模块匹配。换言之,超控组件550用于组件B,并且子组件B v1.1 522也用于组件B。这样,HMS 820确定用于在逻辑组件层次结构(即,层次结构500)中使用超控组件(即,超控组件550)替换后代组件(即,子组件B v1.1 522)的要求,该超控组件通过超控引用(即,超控引用540)与祖先(即,产品A511)关联。因此,发现740匹配的超控引用。相应地,HMS 820选择742与超控引用关联的模块(即,组件B v1.0),而不是与被检查的子组件关联的模块。换言之,HMS 820在逻辑组件层次结构中使用超控引用替换后代组件。
在所述示例性实施例中,超控组件和后代组件是单个组件的不同版本。例如,子组件B v1.1 522和超控组件B v1.0 550是单个组件B的不同版本。HMS 820可以基于这些不同版本,确定选择742超控组件以便替换后代组件。在某些实施例中,后代组件包括后代版本标识符,超控组件包括超控版本标识符,并且确定用于替换后代组件的要求进一步包括比较后代版本标识符与超控版本标识符。这样,基于比较确定替换要求。在某些实施例中,替换后代组件包括删除父组件和后代组件之间的任何关联,并且在逻辑组件层次结构中将超控组件附加到父组件。
继续该实例,检索746与超控组件(即,组件B v1.0)关联的模块,并且在层次结构500中使其作为子代附加到组件A1 v1.0 521。换言之,将超控组件550的一个实例(即,组件B v1.0的一个实例)加载到层次结构500内组件B v1.1 522将所在的位置。该子组件然后在步骤710变成处于检查下的当前模块。但是,因为组件B v1.1 522没有定义的子代(即,没有子组件),所以HMS 820然后完成750当前模块。HMS 820接下来检查760顶部模块是否完成。如果未完成,则HMS 820返回到770当前(即,刚完成的)组件的父代以便进一步分析。换言之,在完全检查组件的每个子组件之后,HMS 820在步骤770上升到该组件的父代,以便继续处理父代的其它子组件。当在步骤760完全检查顶部模块时(即,当已检查顶部模块的所有子组件时),HMS 820完成780。
这样,组件B的超控引用不会篡改没有匹配超控引用的任何组件导入(即,组件A511、A1 v1.0 521和A2 v1.0 531)。相反,超控引用用于仅使用由超控引用指示的组件(即,组件B v1.0)替换最初由A1 v1.0 521指定的组件(即,组件B v1.1)。
在所述示例性实施例中,HMS 820描述一种用于检查和构造层次结构500的深度优先方法(即,在检查每个新组件时,HMS 820逐步向下并且完全检查第一个子组件,然后检查其它子组件)。但是,应该理解,可以使用用于遍历和构建实现在此描述的系统和方法的操作的层次结构500的任何其它方法,例如宽度优先方法(即,在逐步向下到任何子组件之前,检查某一级别的所有组件)。此外,在某些实施例中,逻辑组件层次结构还包括与祖先组件关联的包括冲突版本的另一个后代组件。这样,确定用于替换后代组件的要求可以进一步包括检测所述后代组件和所述另一个后代组件之间的冲突。
图8是用于在诸如层次结构500(在图5中示出)和层次结构600(在图6中示出)之类的组件设计层次结构中,实现超控引用的示例性层次结构管理系统820的框图800。备选地,可以使用实现如在此描述的层次结构管理系统820的操作的任何计算机体系架构。在所述示例性实施例中,层次结构管理系统820促进在存储器设备850内的数据结构中构造组件设计层次结构,并且通过参考图7的过程700实现超控引用和组件替换。
在所述示例性实施例中,层次结构管理系统820包括存储器设备850和在操作上耦合到存储器设备850的处理器852以便执行指令。在某些实施例中,将可执行指令存储在存储器设备850中。层次结构管理系统820可被配置为通过编程处理器852执行在此描述的一个或多个操作。例如,可以通过以下操作对处理器852进行编程:将操作编码为一个或多个可执行指令,并且在存储器设备850中提供可执行指令。处理器852可以包括一个或多个处理单元,例如但不限于采用多核配置。
在所述示例性实施例中,存储器设备850是能够存储和检索信息(例如可执行指令和/或其它数据)的一个或多个设备。存储器设备850可以包括一个或多个有形的非瞬时性计算机可读介质,例如但不限于随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、固态磁盘、硬盘、只读存储器(ROM)、可擦式可编程ROM(EPROM)、电可擦式可编程ROM(EEPROM)和/或非易失性RAM(NRAM)存储器。上面的存储器类型仅是实例,因此不作为对可用于存储计算机程序的存储器类型的限制。
在所述示例性实施例中,存储器设备850可以被配置为在数据结构、文件或其它存储器区域中,存储各种组件以及与各种组件和子组件关联的模块数据。此外,存储器设备850还可以存储组件关系数据和层次结构数据(例如层次结构500和600),或者诸如图1-4中所示的其它组件相关数据。此外,存储设备850还可以存储诸如图5和6中所示的超控引用和超控组件数据。
在某些实施例中,层次结构管理系统820包括耦合到处理器852的呈现接口854。呈现接口854向用户856呈现信息,例如用户界面和/或警报。例如,呈现接口854可以包括显示适配器(未示出),其可以耦合到显示设备(未示出),例如阴极射线管(CRT)、液晶显示器(LCD)、有机LED(OLED)显示器,和/或耦合到具有显示器的手持设备。在某些实施例中,呈现接口854包括一个或多个显示设备。此外或备选地,呈现接口854可以包括音频输出设备(未示出),例如音频适配器和/或扬声器。
在某些实施例中,层次结构管理系统820包括用户输入接口858。在所述示例性实施例中,用户输入接口858耦合到处理器852并且从用户856接收输入。用户输入接口858例如可以包括键盘、指点设备、鼠标、触笔和/或触敏控制板,例如触摸板或触摸屏。诸如触摸屏之类的单个组件可以用作呈现接口854和用户输入接口858的显示设备。
在所述示例性实施例中,通信接口860耦合到处理器852,并且被配置为耦合以便与一个或多个其它设备通信,这些设备例如包括另一个计算系统,或者能够访问层次结构管理系统820的任何设备,包括但不限于便携式膝上型计算机、个人数字助理(PDA)和智能电话。通信接口860可以包括但不限于有线网络适配器、无线网络适配器、移动电信适配器、串行通信适配器和/或并行通信适配器。通信接口860可以从一个或多个远程设备接收数据和/或将数据传输到一个或多个远程设备。层次结构管理系统820可以支持Web,以便例如与远程台式计算机(未示出)进行远程通信。
在所述示例性实施例中,呈现接口854和/或通信接口860能够例如向用户856或另一个设备提供信息,该信息适合于与在此描述的方法一起使用。因此,呈现接口854和/或通信接口860可以称为输出设备。同样,用户输入接口858和/或通信接口860能够接收适合于与在此描述的方法一起使用的信息,并且可以称为输入设备。
此外,处理器852和/或存储器设备850还可以在操作上耦合到存储设备862。存储设备862是适合于存储和/或检索数据(例如但不限于与数据库864关联的数据)的任何计算机操作的硬件。在所述示例性实施例中,存储设备862集成在层次结构管理系统820中。例如,层次结构管理系统820可以包括一个或多个硬盘驱动器作为存储设备862。此外,例如存储设备862可以包括多个存储单元,例如采用廉价磁盘冗余阵列(RAID)配置的硬盘和/或固态磁盘。存储设备862可以包括存储区域网络(SAN)、网络附加存储(NAS)系统和/或基于云的存储装置。备选地,存储设备862在层次结构管理系统820外部,并且可以由存储接口(未示出)访问。
此外,在所述示例性实施例中,数据库864包含各种静态和动态操作数据,这些数据与组件、模块、超控引用和超控组件以及层次结构关联。
在此示出和描述的实施例,以及未在此具体描述但在本公开各个方面的范围内的实施例构成用于管理包括超控引用的组件层次结构的示例性装置。例如,层次结构管理系统820,以及添加到其中或包括在其中的任何其它类似计算机设备当集成在一起时,包括足够的计算机可读存储介质,这个/这些介质使用足够的计算机可执行指令进行编程,以便通过如在此描述的处理器执行过程和技术。具体地说,层次结构管理系统820,以及添加到其中或包括在其中的任何其它类似计算机设备当集成在一起时,构成用于管理包括超控引用的组件层次结构的示例性装置。
图9示出计算设备910中可以用于管理包括超控引用的组件层次结构的数据库920以及其它相关计算组件的示例性配置900。在某些实施例中,计算设备910类似于层次结构管理系统820(在图8中示出)。数据库920耦合到计算设备910中执行特定任务的若干单独组件。
在所述示例性实施例中,数据库920包括组件和模块数据922、层次结构数据924以及超控引用数据926。在某些实施例中,数据库920类似于数据库864(在图8中示出)。组件和模块数据922包括与如在上面参考图1-6描述的设计组件和模块关联的信息。层次结构数据924包括层次结构组件数据和定义组件之间关系的数据,例如在层次结构500和600(分别在图5和6中示出)中所示。超控引用数据926包括与超控引用和超控组件关联的数据,超控引用和超控组件例如包括超控引用540和640(分别在图5和6中示出)以及超控组件550和650(分别在图5和6中示出)。
计算设备910包括数据库920以及数据存储设备930。计算设备910包括用于导入模块并构建诸如层次结构500和600之类的管理层次结构的层次结构管理组件940。计算设备910还包括用于处理与层次结构组件关联的模块的模块加载组件950。还包括用于处理超控引用处理的各个方面的分析组件960,如参考过程700和800(分别在图7和8中示出)描述的那样。处理组件970有助于执行与令牌化系统关联的计算机可执行指令。
应该理解,基于上面的说明书,本公开的上述实施例可以使用计算机编程或工程技术实现,这些技术包括计算机软件、固件、硬件或其任意组合或子集,其中技术效果是一种用于管理组件层次结构、实现超控引用以及使用超控组件替换底层组件的系统。具有计算机可读代码装置的任何此类生成的程序可以在一个或多个计算机可读介质中包含或提供,从而形成根据所讨论的本公开实施例的计算机程序产品,即制造品。计算机可读介质例如可以是但不限于固定(硬盘)驱动器、磁盘、光盘、磁带、诸如只读存储器(ROM)之类的半导体存储器,和/或诸如因特网或其它通信网络或链路之类的任何发送/接收介质。可以通过以下操作形成和/或使用包含计算机代码的制造品:直接从一个介质执行代码,将代码从一个介质复制到另一个介质,或者通过网络发送代码。
这些计算机程序(也称为程序、软件、软件应用、“app”或代码)包括用于可编程处理器的机器指令,并且可以以高级过程式和/或面向对象的编程语言和/或汇编/机器语言实现。如在此使用的,术语“机器可读介质”、“计算机可读介质”指用于为可编程处理器提供机器指令和/或数据的任何计算机程序产品、装置和/或设备(例如,磁盘、光盘、存储器、可编程逻辑器件(PLD)),其中包括接收机器指令作为机器可读信号的机器可读介质。但是,“机器可读介质”和“计算机可读介质”不包括瞬时信号。术语“机器可读信号”指用于为可编程处理器提供机器指令和/或数据的任何信号。
在此描述的系统和方法的技术效果包括以下至少一个:(a)计算机设备确定用于在逻辑组件层次结构中使用超控组件替换后代组件的要求,所述超控组件通过超控引用与祖先组件关联;(b)在逻辑组件层次结构中使用超控组件替换后代组件;(c)删除父组件和后代组件之间的任何关联;(d)在逻辑组件层次结构中将超控组件附加到父组件;(e)比较后代版本标识符与超控版本标识符,其中基于比较确定替换要求;(f)检测后代组件和另一个后代组件之间的冲突;(g)比较后代版本标识符与另一个版本标识符,其中基于比较确定替换要求;(h)标识要在替换期间使用的超控组件;(i)从后代组件的父代开始,在逻辑组件层次结构中以升序检查后代组件的一个或多个祖先;(j)在检查祖先组件时标识超控引用,其中标识超控引用包括检查祖先以查找与匹配后代组件的组件关联的引用。
所述示例性方法和系统促进使用其它组件替换子组件,这些其它组件使用在组件层次结构中定义的超控引用。例如,在层次结构加载期间,可以通过在链接到具有不同版本的超控组件的祖先组件中定义超控引用,替换子组件的一个版本。在层次结构构建期间,在此描述的系统和方法使用超控组件替换超控引用下面的匹配子组件。这样,通过使用超控组件而不是原始子组件,使冲突组件标准化(即,消除冲突)。
本书面描述使用实例介绍本公开(包括最佳模式),并且还使所属技术领域的任何技术人员能够实现本公开,包括形成和使用任何设备或系统并且执行任何引入的方法。本公开的可专利范围由权利要求限定,并且可以包括所属技术领域的技术人员想到的其它实例。此类其它实例旨在在权利要求的范围内,前提是它们具有与权利要求的文字语言相同的结构元素,或者它们包括与权利要求的文字语言具有非实质性差异的等效结构元素。

Claims (17)

1.一种用于管理逻辑组件层次结构中的冲突的计算机实现的方法,所述逻辑组件层次结构包括祖先组件、与所述祖先组件关联的第一后代组件、以及与所述第一后代组件关联的第一子组件,所述方法使用与存储器通信的计算机设备,所述方法包括:
在所述存储器中构建所述逻辑组件层次结构的分层表示,所述分层表示包括所述祖先组件、在所述祖先组件和所述第一后代组件之间的第一后代引用、以及在所述第一后代组件和与所述第一后代组件关联的所述第一子组件之间的第二后代引用;
所述计算机设备确定用于在所述逻辑组件层次结构中使用超控组件的超控版本替换超控组件的要求,替换所述超控组件的所述要求与所述祖先组件关联;
向所述分层表示添加所述超控组件和超控引用,所述超控组件标识所述超控组件的所述超控版本,所述超控引用在所述超控组件和所述祖先组件之间,所述超控引用表示发生在所述分层表示中所述祖先组件下面的所述超控组件由所述超控组件的所述超控版本替换;
检测存在作为所述分层表示中所述祖先组件的后代的所述超控组件以及存在与所述祖先组件关联的所述超控引用,所述第一子组件为所述超控组件;以及
通过基于所述检测将所述超控组件的所述超控版本加载到所述逻辑组件层次结构中,在所述逻辑组件层次结构中使用所述超控组件替换所述第一子组件。
2.根据权利要求1的方法,其中替换所述第一子组件包括:
从所述分层表示中删除所述第二后代引用;
在所述分层表示中添加所述超控组件的所述超控版本;以及
在所述分层表示中的所述第一后代组件和所述超控组件之间添加第三后代引用。
3.根据权利要求1的方法,其中确定用于替换所述第一子组件的要求进一步包括比较后代版本标识符与所述超控版本的超控版本标识符,其中基于所述比较确定替换要求。
4.根据权利要求1的方法,其中所述逻辑组件层次结构还包括与所述祖先组件关联的另一个后代组件,其中确定用于替换所述第一子组件的要求进一步包括检测所述第一后代组件和所述另一个后代组件之间的冲突。
5.根据权利要求1的方法,还包括在所述逻辑组件层次结构中定义所述超控引用,从而将所述祖先组件与所述超控组件关联。
6.根据权利要求1的方法,还包括标识要在所述替换期间使用的所述超控组件,所述标识包括:
针对与匹配所述第一后代组件的组件关联的超控引用,从所述第一后代组件的父代开始,在所述逻辑组件层次结构中以升序检查所述第一后代组件的一个或多个祖先;以及
在检查所述祖先组件时标识所述超控引用,其中标识所述超控引用包括检查所述祖先以便查找与匹配所述第一后代组件的组件关联的引用。
7.一种用于管理逻辑组件层次结构中的冲突的计算设备,所述逻辑组件层次结构包括祖先组件、与所述祖先组件关联的第一后代组件、以及与所述第一后代组件关联的第一子组件,所述计算机设备包括以通信方式耦合到存储器的处理器,所述计算设备被编程为:
在所述存储器中构建所述逻辑组件层次结构的分层表示,所述分层表示包括所述祖先组件、在所述祖先组件和所述第一后代组件之间的第一后代引用、以及在所述第一后代组件和与所述第一后代组件关联的所述第一子组件之间的第二后代引用;
确定用于在所述逻辑组件层次结构中使用超控组件的超控版本替换超控组件的要求,替换所述超控组件的所述要求与所述祖先组件关联;
向所述分层表示添加所述超控组件和超控引用,所述超控组件标识所述超控组件的所述超控版本,所述超控引用在所述超控组件和所述祖先组件之间,所述超控引用表示发生在所述分层表示中所述祖先组件下面的所述超控组件由所述超控组件的所述超控版本替换;
检测存在作为所述分层表示中所述祖先组件的后代的所述超控组件以及存在与所述祖先组件关联的所述超控引用,所述第一子组件为所述超控组件;以及
通过基于所述检测将所述超控组件的所述超控版本加载到所述逻辑组件层次结构中的所述第一子组件的位置,在所述逻辑组件层次结构中使用所述超控组件替换所述第一子组件。
8.根据权利要求7的计算设备,其中替换所述第一子组件包括:
从所述分层表示中删除所述第二后代引用;
在所述分层表示中添加所述超控组件的所述超控版本;以及
在所述分层表示中的所述第一后代组件和所述超控组件之间添加第三后代引用。
9.根据权利要求7的计算设备,其中确定用于替换所述第一子组件的要求进一步包括比较后代版本标识符与所述超控版本的超控版本标识符,其中基于所述比较确定替换要求。
10.根据权利要求7的计算设备,其中所述逻辑组件层次结构进一步包括是所述祖先组件的后代的另一个后代组件,其中确定用于替换所述第一子组件的要求进一步包括检测所述第一后代组件和所述另一个后代组件之间的冲突。
11.根据权利要求7的计算设备,其中所述处理器还被编程为在所述逻辑组件层次结构中定义所述超控引用,从而将所述祖先组件与所述超控组件关联。
12.根据权利要求7的计算设备,其中所述处理器还被编程为标识要在所述替换期间使用的所述超控组件,所述标识包括:
从所述第一后代组件的父代开始,在所述逻辑组件层次结构中以升序检查所述第一后代组件的一个或多个祖先;以及
在检查所述祖先组件时标识所述超控引用,其中标识所述超控引用包括检查所述祖先以便查找与匹配所述第一后代组件的组件关联的引用。
13.至少一种非瞬时性计算机可读存储介质,其上包含计算机可执行指令,其中当由至少一个处理器执行时,所述计算机可执行指令导致所述处理器:
在所述存储器中构建逻辑组件层次结构的分层表示,所述逻辑组件层次结构包括祖先组件、与所述祖先组件关联的第一后代组件,以及与所述第一后代组件关联的第一子组件、以及与所述祖先组件关联的第二后代组件,所述分层表示包括祖先组件、在所述祖先组件和所述第一后代组件之间的第一后代引用、以及在所述第一后代组件和与所述第一后代组件关联的所述第一子组件之间的第二后代引用;
确定用于在所述逻辑组件层次结构中使用超控组件的超控版本替换所述超控组件的要求,替换所述超控组件的所述要求与所述第一子组件的祖先组件关联;
向所述分层表示添加所述超控组件和超控引用,所述超控组件标识所述超控组件的所述超控版本,所述超控引用在所述超控组件和所述祖先组件之间,所述超控引用表示发生在所述分层表示中所述祖先组件下面的所述超控组件由所述超控组件的所述超控版本替换;
检测存在作为所述分层表示中所述祖先组件的后代的所述超控组件以及存在与所述祖先组件关联的所述超控引用,所述第一子组件为所述超控组件;以及
通过基于所述检测将所述超控组件的所述超控版本加载到所述逻辑组件层次结构中的所述第一子组件的位置,在所述逻辑组件层次结构中使用所述超控组件替换所述第一子组件。
14.根据权利要求13的计算机可读存储介质,其中所述计算机可执行指令还导致所述处理器:
删除所述第二后代引用;
在所述分层表示中添加所述超控组件的所述超控版本;以及
在所述分层表示中的所述第一后代组件和所述超控组件之间添加第三后代引用。
15.根据权利要求13的计算机可读存储介质,其中所述逻辑组件层次结构进一步包括是所述祖先组件的后代的另一个后代组件,其中所述计算机可执行指令进一步导致所述处理器确定用于替换所述第一子组件的要求进一步包括检测所述第一后代组件和所述另一个后代组件之间的冲突。
16.根据权利要求13的计算机可读存储介质,其中所述计算机可执行指令还导致所述处理器在所述逻辑组件层次结构中定义所述超控引用,从而将所述祖先组件与所述超控组件关联。
17.根据权利要求13的计算机可读存储介质,其中所述计算机可执行指令还导致所述处理器标识要在所述替换期间使用的所述超控组件,所述标识包括:
从所述第一后代组件的父代开始,在所述逻辑组件层次结构中以升序检查所述第一后代组件的一个或多个祖先;以及
在检查所述祖先组件时标识所述超控引用,其中标识所述超控引用包括检查所述祖先以便查找与匹配所述第一后代组件的组件关联的引用。
CN201410830814.8A 2013-12-31 2014-12-26 用于解决分层引用的数据中的冲突的方法和系统 Active CN104750476B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/145004 2013-12-31
US14/145,004 US10127261B2 (en) 2013-12-31 2013-12-31 Methods and systems for resolving conflicts in hierarchically-referenced data

Publications (2)

Publication Number Publication Date
CN104750476A CN104750476A (zh) 2015-07-01
CN104750476B true CN104750476B (zh) 2019-08-23

Family

ID=52338779

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410830814.8A Active CN104750476B (zh) 2013-12-31 2014-12-26 用于解决分层引用的数据中的冲突的方法和系统

Country Status (6)

Country Link
US (1) US10127261B2 (zh)
EP (1) EP2889763B1 (zh)
JP (1) JP6573452B2 (zh)
KR (1) KR20150079467A (zh)
CN (1) CN104750476B (zh)
CA (1) CA2874357A1 (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9940486B2 (en) * 2015-02-23 2018-04-10 Cisco Technology, Inc. Detection of hardware tampering
JP6547452B2 (ja) 2015-06-29 2019-07-24 株式会社デンソー 車線逸脱回避装置
JP6880590B2 (ja) * 2016-08-02 2021-06-02 いすゞ自動車株式会社 操舵補助装置及び操舵補助方法
US10572675B2 (en) 2016-11-02 2020-02-25 Cisco Technology, Inc. Protecting and monitoring internal bus transactions
CN108733353B (zh) * 2017-04-21 2023-08-08 中兴通讯股份有限公司 一种界面构造方法和装置
CN112148725B (zh) * 2019-06-26 2022-12-06 金篆信科有限责任公司 一种实现全局唯一索引的方法及装置
KR102584355B1 (ko) * 2023-05-02 2023-10-05 쿠팡 주식회사 Ui 컴포넌트를 생성하는 방법 및 장치

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102436441A (zh) * 2010-10-26 2012-05-02 微软公司 同步在线文档编辑
CN102934096A (zh) * 2010-03-18 2013-02-13 甲骨文国际公司 使用虚拟化信息加速存储器操作

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5499365A (en) 1993-08-04 1996-03-12 International Business Machines Corporation System and method for controlling versions of objects in an object oriented computing environment
US6185734B1 (en) * 1998-07-21 2001-02-06 Hewlett-Packard Company Hierarchical registry structure for managing multiple versions of software components
WO2000070417A1 (en) * 1999-05-17 2000-11-23 The Foxboro Company Process control configuration system with parameterized objects
US8521736B2 (en) * 2005-10-26 2013-08-27 Dassault Systemes Enovia Corp. Managing hierarchies of components
US20100125839A1 (en) * 2008-11-20 2010-05-20 Gebis Michael J Specifying, Determining and Overriding Software Dependencies
US8495621B2 (en) * 2009-06-15 2013-07-23 Microsoft Corporation Catalog-based software component management
US8627311B2 (en) * 2011-02-01 2014-01-07 Hewlett-Packard Development Company, L.P. Systems, methods, and apparatus to deploy software
JP5905313B2 (ja) * 2012-03-28 2016-04-20 ニフティ株式会社 情報処理装置、情報処理方法、情報処理システム、及び、プログラム
US20130297657A1 (en) * 2012-05-01 2013-11-07 Gajanan Chinchwadkar Apparatus and Method for Forming and Using a Tree Structured Database with Top-Down Trees and Bottom-Up Indices

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102934096A (zh) * 2010-03-18 2013-02-13 甲骨文国际公司 使用虚拟化信息加速存储器操作
CN102436441A (zh) * 2010-10-26 2012-05-02 微软公司 同步在线文档编辑

Also Published As

Publication number Publication date
CN104750476A (zh) 2015-07-01
US10127261B2 (en) 2018-11-13
EP2889763B1 (en) 2018-05-02
JP2015130161A (ja) 2015-07-16
EP2889763A1 (en) 2015-07-01
CA2874357A1 (en) 2015-06-30
KR20150079467A (ko) 2015-07-08
US20150186449A1 (en) 2015-07-02
JP6573452B2 (ja) 2019-09-11

Similar Documents

Publication Publication Date Title
CN104750476B (zh) 用于解决分层引用的数据中的冲突的方法和系统
US11907247B2 (en) Metadata hub for metadata models of database objects
US11275758B2 (en) Exporting and importing database containers
US10102229B2 (en) Validating data integrations using a secondary data store
US11487721B2 (en) Matching metastructure for data modeling
US8768902B2 (en) Unified concurrent changes to data, schema, and application
US9898502B2 (en) System and method for executing a SPARQL query
US10956386B2 (en) Methods and apparatuses for automated performance tuning of a data modeling platform
CN104866300B (zh) 在分层引用数据中过滤组件的方法和系统
US11100131B2 (en) Simulation of a synchronization of records
Enaya An Experimental Performance Comparison of NoSQL and RDBMS Data Storage Systems in the ERP System Odoo
US20150120605A1 (en) Virtual data write-back for business intelligence reporting
US10452659B2 (en) Compatibility check for execution of joins
US20230315751A1 (en) Propagation of extensions of data artifacts
US20240143808A1 (en) Access controls for modelled content using namespaces
Gobert et al. Modeling, manipulating and evolving hybrid polystores with HyDRa
Mancas et al. Architecture, Design, Development, and Usage of ODBDetective 1.0

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant