KR20140110072A - 객체 지향 환경에서 다중 트랜잭션 기법을 이용하여 객체들에 대한 기하학적인 변환을 수행하기 위한 방법 및 장치 - Google Patents

객체 지향 환경에서 다중 트랜잭션 기법을 이용하여 객체들에 대한 기하학적인 변환을 수행하기 위한 방법 및 장치 Download PDF

Info

Publication number
KR20140110072A
KR20140110072A KR1020147022207A KR20147022207A KR20140110072A KR 20140110072 A KR20140110072 A KR 20140110072A KR 1020147022207 A KR1020147022207 A KR 1020147022207A KR 20147022207 A KR20147022207 A KR 20147022207A KR 20140110072 A KR20140110072 A KR 20140110072A
Authority
KR
South Korea
Prior art keywords
objects
partition
dependent
geometrically
transformation
Prior art date
Application number
KR1020147022207A
Other languages
English (en)
Inventor
스티븐 디. 헤롤드
Original Assignee
인터그래프 코포레이션
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 인터그래프 코포레이션 filed Critical 인터그래프 코포레이션
Publication of KR20140110072A publication Critical patent/KR20140110072A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
    • G06F3/04842Selection of displayed objects or displayed text elements
    • 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
    • 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/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/289Object oriented databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2111/00Details relating to CAD techniques
    • G06F2111/04Constraint-based CAD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2113/00Details relating to the application field
    • G06F2113/14Pipes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Hardware Design (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Computer Security & Cryptography (AREA)
  • Human Computer Interaction (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Processing Or Creating Images (AREA)

Abstract

객체 지향 기업 엔지니어링 시스템에서 보나 기둥으로 표현되는 객체들과 같은 많은 수의 객체들은, 상기 객체들을 기준에 따라 다수의 순서화된 파티션들로 분할하고 각 파티션의 객체들을 원자 조작(atomic operation)으로 변환함으로써, 모델 데이터베이스 내에 기하학적으로 변환될 수 있다. 변환될 객체들은 순서화된 파티션들로 구조화되고, 이 파티션들은 순차적인 순서대로 변환되어, 주어진 객체의 모든 선행자들은 주어진 객체 변환 이전에 변환되거나 주어진 객체와 동일한 변환 작업에서 변환된다. 만약 모든 작은 변환 작업이 완료되기 전에, 큰 변환 작업이 비정상적으로 종료되어도, 모델 데이터베이스는 일관성 상태를 유지한다. 변환 작업은 중단 시점으로부터 재개된다. 더욱이, 변환될 수 있는 객체의 수는 시스템의 가용 메모리 용량에 제약을 받지 않는다.

Description

객체 지향 환경에서 다중 트랜잭션 기법을 이용하여 객체들에 대한 기하학적인 변환을 수행하기 위한 방법 및 장치{METHOD AND APPARATUS FOR PERFORMING A GEOMETRIC TRANSFORMATION ON OBJECTS IN AN OBJECT ORIENTED ENVIRONMENT USING A MULTIPLE TRANSACTION TECHNIQUE}
본 발명은 CAD(Computer-Aided Design)/CAM(Computer-Aided Manufacturing) 소프트웨어 시스템에 관한 것으로서, 보다 구체적으로는, 그러한 시스템에 의해 사용되는 데이터베이스에서 다수의 객체들과 관계들에 대한 기하학적인 변환들을 수행하기 위한 방법 및 장치에 관한 것이다.
본 출원은 “Method and Apparatus for Performing a Geometric Transformation on Objects in an Object-Oriented Environment using a Multiple-Transaction Technique,”란 명칭으로 2012년 2월 9일 출원된 미국 가 특허출원번호 제61/596,797호의 이익을 주장하며, 그 전체 내용이 사실상 참조로 본 명세서에 포함된다.
공간 정보 관리(Spatial Information Management, SIM) 시스템이라고 지칭되기도 하는 기업 엔지니어링 시스템은 2, 3차원(2D, 3D) 모델링과 시각화를 용이하게 하는 CAD 시스템이다. 이 시스템은 고층 건물들, 선박들과 채굴 및 다른 자재 운반 설비와 같은 다른 크고 복잡한 구조물들 뿐만 아니라, 정유 공장, 발전소와 같은 산업 설비들에 대한 설계, 건설, 운용 및 수정에 이용된다. 기업 엔지니어링 시스템은, 그래픽 사용자 인터페이스(GUIs)를 통해, 설계자가 구조, 배관, 전기, 냉난방 및 공기조화 계통(HVAC) 및 다른 복잡한 계통들을 배치할 수 있게 하고, 건설이나 운용 상의 여러 단계에서 프로젝트의 전체나 선택된 부분을 시각화할 수 있게 한다.
대부분의 현대 기업 엔지니어링 시스템들은 객체 지향 방식을 이용하며, 이 방식에서는, 소프트웨어가 빔(beam), 벽, 바닥, 배관, 밸브, 도관, 스위치, 팬, 덕트 등과 같은 실세계 항목을 나타내는 소위 "객체들"를 구성한다. 어떤 객체들은 설계자에게 도움이 되지만 물리적인 물품을 나타내지는 않는 좌표 격자계와 같은 항목들을 나타낸다.
객체들은 소프트웨어에서 전형적으로 데이터 구조들(데이터 요소들의 순서화된 그룹)로 구현되는데, 이 데이터 구조들은 각각의 객체에 의해 표현되는 특정 항목에 대한 정보 즉, 길이, 폭, 색깔, 용량 등과 같이 각각의 항목에 적절한 정보뿐만 아니라, 표현되는 항목의 유형을 식별케 하는 정보를 저장한다. 객체들은 또한 전형적으로 "방법들"을 포함하는데, 이 방법들은 객체의 데이터 요소들을 처리하거나 객체들에 대한 정보를 호출자에게 반환하는 루틴들(routines)이다. 사용자의 문제 영역(problem domain) 내의 항목들을 표현하고, 사용자에게 시각적으로 보여지고, SIM 시스템 사용자 인터페이스(UI)를 통해 사용자에 의해 처리될 수 있는 객체들은 후술하는 종속 객체들(subordinate objects) 또는 사용자에게 직접적으로 보이지는 않지만 모델에 있어서 필요한 객체들과의 구별을 위해 간혹 "설계 객체들(design objects)"로 지칭된다.
많은 설계 객체들은 다른("종속") 객체들로 구성된다. 예를 들어, 빔은 단일 멤버 시스템(single member system)과 많은 종속 객체들로 구성될 수 있으며, 종속 객체들은 프레임 연결들(frame connections), 부분들(parts), 포트들(ports) 및 다른 객체들을 포함하고, 프레임 연결들은 빔이 각 종단에서 다른 멤버들과 어떻게 연결되는지를 나타내고, 부분들은 마지막 물리적인 객체들을 나타내고, 포트들은 빔을 따라 있는 연결점들을 나타낸다. 빔의 시작 부분들은 각각의 추가적인 객체들로 표현된다. 만약 빔의 끝 부분이 정형되면, 이 정형 작업 또한 객체로 표현된다. 어떤 경우, 사용자가 객체를 모델에 추가할 때, SIM 시스템은 자동적으로 적절한 종속 객체들을 그 모델에 추가한다. 집합적으로, 설계 객체와 그 관련 종속 객체들은 "설계 객체 그룹"으로 지칭된다.
대부분의 객체들은 관계들에 의해 다른 객체들과 연결된다. 관계들의 다른 유형들은 다른 상황들(contexts)에서 사용된다. 예를 들어, 관계의 한 유형은 객체들을 "시스템"의 논리 체계로 배열하는데 사용된다. 관계의 다른 유형은 한 장비에서 파이프가 노즐에 연결될때 사용된다. 관계의 세번째 유형은 빔(beam)을 기둥(column)에 연결할때 사용된다.
객체들간의 관계들은 개념들로 정리된다. 관계는 해당하는 객체들이 모델에 추가되는 논리적 순서를 가리킬 수 있으며, 이 논리적 순서는 실세계 항목들이 구성되는 순서와 다를 수 있다. 예를 들어, 전력 설비 건물을 모델링할때, 설계자는 전형적으로 격자 좌표계를 설정한다. 그 후, 설계자는 기둥들을 추가하고 그 기둥들을 격자계 내의 원하는 좌표들에 배치한다. 그 후, 설계자는 기둥들 아래에 기초들을 추가한다. 그러나, 실제 전력 설비가 만들어질 때에는, 기둥들이 기초들 위에 설치될 수 있도록, 기초들이 먼저 건축된다.
객체들 사이의 관계의 다른 유형은 "기능적 의존성(functional dependency)"이다. 기능적 의존성은 관련 객체들(하나의 "독립(independent) 객체"와 몇개의 "의존(dependent) 객체들") 사이에 존재할 수 있다. 하나의 독립 객체가 바뀔때, 모든 의존 객체들도 자동적으로 바뀐다. 이전의 기둥과 기초의 예에서, 기둥은 독립 객체이고, 기초는 그것에 의존적이다. 기둥이 이동되거나 기둥이 지지해야 할 하중이 변하면, 기업 엔지니어링 시스템들은 자동적으로 기초를 이동시키거나 자동적으로 기초의 사이즈를 변경하거나 요구되는 하중 지지력을 변경한다. 추가적으로, 상기 기둥에 의존적인 객체들의 특성치들은 상기 기업 엔지니어링 시스템에 의해 자동적으로 재계산(recalculate)된다. 어느 객체를 업데이트하는 행위 즉, 상기 객체의 매개변수들 중에서 하나 이상을 재계산하는 행위는 간혹 상기 객체를 "재계산(recomputing)"하는 것으로 지칭된다.
언급한 바와 같이, 모델링 단계에서, 기둥 객체는 전형적으로 상응하는 기초 객체가 모델에 추가되기 전에 모델에 추가된다. 그러나, 물리적 구조물(예, 전력 설비)이 건축될 때, 기둥이 기초의 상부에 부착될 수 있도록, 기초는 기둥보다 먼저 만들어져야 한다. 이와 같이, 객체들이 모델에 추가되는 순서는 상응하는 실세계 항목들이 만들어거나 배치되는 순서와 반드시 동일할 필요는 없다. 유사하게, 기능적 의존성 관계들도 반드시 실세계 항목들이 만들어지거나 배치되는 순서를 가리킬 필요는 없다.
많은 현대 기업 엔지니어링 시스템들은 객체들과 관계들을 표현하는 일관된 데이터 구조들을 저장하기 위해 관계형 데이터베이스들(RDBs) 또는 다른 데이터베이스 관리 시스템들(DBMSs)을 활용한다. 예를 들어, RDB 레코드들 또는 테이블 행들은 객체와 관계 데이터 구조들을 저장하는데 사용될 수 있다.
기업 엔지니어링 시스템의 하나의 특별하게 유용한 특징은 객체 또는 사용자가 선택한 객체들의 그룹을 기하학적으로 변환하는 능력이다. 기하학적인 변환의 예는 객체를 이동시키거나 회전시키는 것을 포함한다.
모델 데이터베이스에서 객체들과 관계들의 유효성과 일관성을 유지하기 위하여, 그 데이터베이스에서의 모든 작업(operation)은 데이터베이스 트랜잭션 내에서 수행된다. 트랜잭션(transaction)은 두가지 주 목적을 갖고 있는데, 첫째는, 시스템 고장으로부터의 정확한 복구를 고려한 신뢰성있는 작업 단위를 제공하는 것이고, 둘째는, 하나의 데이터베이스에 동시에 접근하는 프로그램들간에 격리를 제공하는 것이다. 트랜잭션은 "전부 아니면 제로(all or nothing)"라는 명제를 제공한다. 데이터베이스에 대한 모든 수정이 성공적으로 완료될 수도 있고, 하나도 완료되지 않을 수도 있다.
이와 같이, 모델의 유효성과 일관성을 보장하기 위하여, 기업 엔지니어링 시스템은 전형적으로 단일 트랜잭션에서 기하학적인 변환을 수행한다. 이 트랜잭션은 3 단계를 포함한다. 첫번째 단계에서, 트랜잭션이 개시되고 변환될 객체들과 관계들을 나타내는 모든 데이터 구조들이 데이터베이스로부터 메모리로 로드된다. 두번째 단계에서, 객체들은 메모리에서 변환되고, 모든 의존 객체들은 재계산(recomputed)된다. 그 다음으로, 세번째 단계에서는, 객체들과 관계들을 나타내는 (지금은 수정된) 데이터 구조들이 데이터베이스에 다시 기록되어 트랜잭션이 반영된다.
많은 산업 플랜트 모델들은 매우 많은 수의 객체들과 관계들을 포함하기 때문에, 이로 인해 기업 엔지니어링 시스템들에 문제들이 제기될 수 있다. 시스템의 (가상)메모리는 기하학적으로 변환될 객체들과 이들의 관계들을 가리키는 모든 데이터 구조들을 동시에 저장할 수 있을 정도로 커야 한다. 기하학적인 변환을 위해, 석유화학 설비 내에서 증류장치를 이동시키는 것과 같이 모델의 큰 부분을 선택하면, 시스템의 메모리 용량이 초과될 수 있다.
본 발명은 예를 들어 CAD/CAM 등과 같은 객체 지향 기업 엔지니어링 시스템에서 표현되는 매우 많은 수의 객체들에 대한 기하학적 변환을 효과적으로 수행할 수 있도록 하는 것을 목적으로 한다.
본 발명의 일 실시 예는 객체 지향 기업 엔지니어링 시스템에서 표현되는 복수의 객체들을 기하학적으로 변환하기 위한 컴퓨터 실행 방법을 제공한다. 상기 복수의 객체들 중의 적어도 하나는 상기 복수의 객체들 중의 다른 것의 선행자이다. 상기 방법은 선택된 객체들에 대하여 수행될 기하학적 변환의 유형에 대한 지시를 받아들일 뿐만 아니라, 기하학적으로 변환될 복수의 객체들을 선택하는 입력을 사용자로부터 받아들이는 동작을 포함하는 몇가지 동작을 수행하는 프로세서를 포함한다. 상기 복수의 객체들 사이에서 선택된 각각의 객체에 대하여, 상기 선택된 객체의 임의의 선행 객체들은 자동적으로 식별된다. 상기 선택된 객체의 적어도 한 매개변수의 값은 임의의 선행 객체들의 적어도 하나의 매개변수에 기능적으로 의존한다. 상기 선택된 객체들은 복수의 순서화된 객체 파티션들로 자동적으로 분할된다. 임의의 주어진 객체에 대하여, 상기 주어진 객체의 선행 객체들 각각은 상기 주어진 객체와 동일한 파티션에 있거나 이에 선행하는 파티션에 있다.
상기 객체들은 파티션 순서에 따라, 객체들의 파티션 별로, 기하학적 변환 유형에 대한 지시에 따라, 기하학적으로 변환된다. 상기 객체들을 주어진 파티션에서 기하학적으로 변환하는 동안, 상기 파티션 내의 각각의 객체에 대한 임의의 후행 객체는 일시적으로 읽기 전용으로 만들어진다. 상기 파티션 내의 각각의 객체에 대한 임의의 선행 객체도 일시적으로 읽기 전용으로 만들어진다. 일시적으로 일기 전용으로 만들어진 각각의 객체에 대하여, 대응하는 수행 예정 항목이 생성될 수 있다. 일시적으로 읽기 전용으로 만들어진 객체들 중에서 임의의 것이 추후에 변환되면, 상기 대응하는 수행 예정 항목은 삭제될 수 있다.
주어진 파티션 내의 객체들을 기하학적으로 변환하는 동안, 상기 파티션 내의 객체들에 대한 임의의 종속 객체들이 식별될 수 있다. 식별된 종속 객체들은 상기 파티션에 추가될 수 있으며, 추가된 종속 객체들은 기하학적 변환 유형에 대한 지시에 따라, 기하학적으로 변환될 수 있다.
파티션들 중에서 적어도 두개는 파티션 순서에 따라 처리될 수 있다. 상기 처리는 파티션에 대한 정보를 저장하는 단계 및 이어지는 파티션을 처리하기 전에, 기하학적 변환 유형에 대한 지시에 따라, 파티션 내의 객체들을 기하학적으로 변환하는 단계를 포함한다. 저장된 정보는 파티션 내의 객체들에 대한 기하학적 변환을 재시작하기에 충분한 정보를 포함할 수 있다.
상기 선택된 객체들을 복수의 순서화된 객체 파티션들로 자동적으로 분할하는 단계는 각각의 선택된 객체를 상기 선택된 객체의 모든 선행 객체들에 연관시키는 선행자 그래프를 생성하는 단계를 포함할 수 있다.
상기 방법은 상기 선택된 객체들 중 임의의 것과 관련된 적어도 하나의 외부 객체를 식별하는 단계 및 식별된 외부 객체와 상기 선택된 객체 사이의 관계를 단절시키는 단계를 포함할 수 있다.
본 발명의 다른 실시 예는 객체 지향 기업 엔지니어링 시스템에서 표현되는 복수의 객체들을 기하학적으로 변환하기 위한 시스템을 제공한다. 상기 복수의 객체들 중에서 적어도 하나는 상기 복수의 객체들 중 다른 것의 선행자이다. 상기 시스템은 사용자로부터 기하학적으로 변환될 복수의 객체들을 선택하는 제1 입력을 받아들이고, 상기 사용자로부터 상기 선택된 객체들에 대해 수행될 기하학적 변환의 유형을 지시하는 제2 입력을 받아들이도록 구성된 사용자 인터페이스를 포함한다. 식별 모듈은 상기 사용자 인터페이스에 결합되어 있으며, 각각의 선택된 객체에 대하여 상기 선택된 객체에 대응하는 선행 객체들을 자동적으로 식별하도록 구성된다. 상기 선택된 객체의 적어도 하나의 매개변수의 값은 상기 선행 객체들의 적어도 하나의 매개변수에 기능적으로 의존적이다. 파티셔닝 모듈은 상기 식별 모듈에 결합되어 있으며, 상기 선택된 객체들을 복수의 순서화된 객체 파티션들로 자동적으로 분할하도록 구성된다. 임의의 주어진 객체에 대하여, 상기 주어진 객체의 선행 객체들 각각은 상기 주어진 객체가 속한 파티션과 선행 파티션 중에서 적어도 하나의 파티션에 있다.
변환 모듈은 상기 파티셔닝 모듈에 결합될 수 있으며, 상기 기하학적 변환의 지시된 유형에 따라 상기 객체들을 파티션 순서대로 객체 파티션마다 기하학적으로 변환하도록 구성된다.
동결(freezing) 모듈은 상기 변환 모듈에 결합될 수 있으며, 파티션 별 원칙에 따라, 상기 파티션 내의 각 객체의 임의의 후행 객체를 일시적으로 읽기 전용으로 만들고, 상기 파티션 내의 각 객체의 임의의 선행 객체를 일시적으로 읽기 전용으로 만들도록 구성된다. 상기 동결 모듈은, 일시적으로 읽기 전용으로 만들어진 각각의 객체에 대하여, 대응 수행 예정 항목을 생성하도록 구성될 수 있다.
클린업(clean-up) 모듈은 상기 변환 모듈에 결합될 수 있으며, 일시적으로 읽기 전용으로 만들어진 객체들 중에서 하나라도 이후에 변환되는 경우, 상기 대응 수행 예정 항목을 제거하도록 구성될 수 있다.
전파(propagation) 모듈은 상기 식별 모듈에 결합될 수 있으며, 각 파티션에 대하여, 상기 파티션에 속한 객체들의 종속 객체들을 식별하고, 식별된 종속 객체들을 상기 파티션에 추가하도록 구성될 수 있다. 상기 변환 모듈은 상기 추가된 종속 객체들을 상기 기하학적 변환의 지시된 유형에 따라 기하학적으로 변환하도록 구성된다.
처리 제어 모듈은 상기 변환 모듈에 결합될 수 있으며, 파티션 순서대로 상기 파티션들 중에서 적어도 2개를 처리하도록 구성될 수 있다. 상기 처리 제어 모듈은 각각의 파티션에 대하여, 상기 파티션에 대한 정보를 저장하도록 구성될 수 있다. 상기 저장되는 정보는 상기 파티션에 속한 객체들에 대한 기하학적 변환의 재시작을 위해 충분한 정보를 포함한다. 상기 처리 제어 모듈은 다음 파티션을 처리하기 전에, 상기 변환 모듈이 상기 기하학적 변환의 지시된 유형에 따라 상기 파티션에 속한 상기 객체들을 기하학적으로 변환시키도록 구성될 수 있다.
상기 파티셔닝 모듈은 각각의 선택된 객체를 상기 선택된 객체의 모든 선행 객체들에 연관시키는 선행자 그래프를 생성하도록 구성될 수 있다.
전정(pruning) 모듈은 상기 선택된 객체들과 관련된 적어도 하나의 외부 객체를 식별하고, 식별된 외부 객체와 상기 선택된 객체 사이의 관계를 단절시키도록 구성될 수 있다.
본 발명의 또 다른 실시 예는 컴퓨터 시스템에서의 사용을 위한 컴퓨터 프로그램 제품을 제공한다. 상기 컴퓨터 프로그램 제품은 객체 지향 기업 엔지니어링 시스템에서 표현되는 복수의 선행 및 후행 객체들을 복사하기 위해 사용될 수 있다. 각각의 후행 객체는 선행 객체와 선행자 관계를 갖는다. 상기 컴퓨터 프로그램 제품은 컴퓨터 명령들이 저장된 비일시적인 컴퓨터 판독가능 매체를 포함한다. 상기 명령들이 프로세서에 의해 실행될 때, 상기 명령들은 상기 프로세서가 사용자로부터 입력을 받아들이도록 한다. 상기 입력은 기하학적으로 변환될 복수의 객체들을 선택한다. 또한, 상기 입력은 선택된 객체들에 대해 수행될 기하학적 변환의 유형에 대한 지시를 제공한다. 각각의 선택된 객체에 대하여, 상기 명령들은 상기 프로세서가 상기 선택된 객체에 대한 임의의 선행 객체들을 상기 복수의 객체들 중에서 자동적으로 식별하도록 한다. 상기 선택된 객체의 적어도 한 매개변수의 값은 상기 선행 객체들의 적어도 하나의 매개변수에 기능적으로 의존적이다. 상기 명령들은 또한 상기 프로세서가 선택된 객체들을 복수의 순서화된 객체 파티션들로 자동적으로 분할하도록 한다. 주어진 임의의 객체에 대하여, 상기 주어진 객체의 선행 객체들 각각은 상기 주어진 객체와 동일한 파티션 또는 선행하는 파티션에 있다.
상기 명령들은 상기 프로세서가 상기 기하학적 변환의 유형에 대한 지시에 따라 상기 객체들을 파티션 순서대로 객체 파티션마다 기하학적으로 변환하도록 할 수 있다.
상기 명령들은 상기 프로세서가 상기 파티션 내의 각 객체의 임의의 후행 객체를 일시적으로 읽기 전용으로 만들도록 하고, 상기 파티션 내의 각 객체의 임의의 선행 객체를 일시적으로 읽기 전용으로 만들도록 할 수 있다.
일시적으로 읽기 전용으로 만들어진 각 객체에 대하여, 상기 명령들은 상기 프로세서가 대응 수행 예정 항목을 생성하도록 할 수 있다. 일시적으로 읽기 전용으로 만들어진 객체들 중에서 임의의 것이 이후에 변환되는 경우, 상기 명령들은 상기 프로세서가 상기 대응 수행 예정 항목을 제거하도록 할 수 있다.
상기 객체들을 주어진 파티션에서 기하학적으로 변환하는 동안, 상기 명령들은 상기 프로세서가 상기 주어진 파티션에 속한 객체들에 대한 임의의 종속 객체들을 식별하도록 하고, 상기 식별된 종속 객체들을 상기 특정 파티션에 추가하도록 할 수 있다. 상기 명령들은 상기 프로세서가 상기 추가된 종속 객체들을 상기 기하학적 변환의 유형에 대한 지시에 따라 기하학적으로 변환하도록 할 수 있다.
본 발명에 따르면, 예를 들어 CAD/CAM 등과 같은 객체 지향 기업 엔지니어링 시스템에서 표현되는 매우 많은 수의 객체들에 대한 기하학적 변환을 효과적으로 수행할 수 있게 되는 효과가 있다.
이하의 구체적인 실시 예들에 대한 상세한 설명을 도면들과 함께 참조하면 본 발명에 대하여 보다 충분히 이해될 것이다.
도 1은 객체들의 가상의 집합과 이 객체들간의 가상의 관계들에 대한 개략적인 표현이다.
도 2는 도 1의 설계 객체들에 대한 개략적인 표현이며, 이 설계 객체들은 본 발명의 일 실시 예에 따라 기하학적인 변환을 위해 분류되어 구획되어 있다.
도 3은 본 발명의 일 실시 예에 따른 모듈식의 기업 엔지니어링 시스템에 대한 개략적인 블록 다이어그램이다.
도 4는 본 발명의 일 실시 예의 전반적인 동작을 보여주는 플로우차트이다.
도 5 내지 도 13은 본 발명의 일 실시 예에 있어서의 사용자 인터페이스의 예들을 보여준다.
도 14는 도 4의 변환 동작의 세부 동작들을 보여주는 상위 플로우차트이다.
도 15는 도 4의 동작을 보다 구체적으로 보여주는 것으로서, 객체 식별자들(OIDs)의 리스트를 순서화된 파티션들로 분할하는 동작들을 보여주는 플로우차트이다.
도 16은 본 발명의 일 실시 예에 따른, 두개의 설계 객체들과 상응하는 각각의 종속 객체들에 대한 개략적인 다이어그램이다.
도 17은 본 발명의 일 실시 예에 따른, 도 16의 객체들에서와 같이, 관계 패스들을 통과할 수 있게 해주는 클래스 정보를 제공하기 위한 예시적인 XML 파일 단편을 포함한다.
도 18은 본 발명의 일 실시 예에 따른, XML 클래스 디스크립터 파일의 보다 완전한 예이다.
도 19는 본 발명의 일 실시 예에 있어서, 예시적인 선행자 그래프를 보여준다.
도 20은 객체들 간의 관계들에 있어서의 루프들의 예들을 개략적으로 보여준다.
도 21은 본 발명의 일 실시 예에 따라, 파티션들을 순서화하고, 이 파티션들을 순서대로 처리하는 동작들을 요약한 플로우차트이다.
도 22는 본 발명의 일 실시 예에 따라, 도 21과 같은 동작에서 확장하여, 선택된 파티션에서 객체들을 처리하는 것을 보여주는 플로우차트이다.
도 23은 본 발명의 일 실시 예에 따른, 변환 그래프 데이터 구조의 개략적인 다이어그램이다.
도 24는 본 발명의 일 실시 예에 따른, 도 23의 변환 그래프 데이터 구조의 값 항목 배열의 개략적인 다이어그램이다.
도 25는 본 발명의 일 실시 예에 따른, 도 24의 배열의 값 항목의 개략적인 다이어그램이다.
도 26은 본 발명의 일 실시 예에 따른, 도 23의 변환 그래프 데이터 구조의 관계 항목의 개략적인 다이어그램이다.
도 27은 본 발명의 일 실시 예에 따른, 몇개의 가상 객체들과 이들 간의 관계들을 보여주는 개략적인 다이어그램이다.
도 28은 도 27의 객체들과 관계들에 대응하는, 선행자 그래프의 개략적인 표현이다.
도 29는 본 발명의 일 실시 예에 따른, 도 27과 도 28의 객체들이 파티션들로 분할된 상태를 보여주는 개략적인 다이어그램이다.
도 30 내지 도 33은 본 발명의 일 실시 예의 동작을 예시하는 4개의 가상 트랜잭션들을 보여준다.
도 34a와 도 34b는 본 발명의 일 실시 예에 따른, 객체 지향 기업 엔지니어링 시스템 내에서 표현되는 복수의 객체들을 기하학적으로 변환하기 위한 컴퓨터화된 방법을 개념적으로 보여주는 플로우차트를 포함한다.
도 35는 본 발명의 일 실시 예에 따른, 객체 지향 기업 엔지니어링 시스템 내에서 표현되는 복수의 객체들을 기하학적으로 변환하기 위한 시스템의 개념적인 블록 다이어그램을 포함한다.
본 발명에 따르면, 모델 데이터베이스의 완전성을 유지하는 반면, 종래 기술에서와 같은 메모리 제한 없이, 많은 수의 객체들을 기하학적으로 변환하기 위한 방법과 장치가 개시된다. 큰 기하학적 변환 동작은 순차적으로 수행되는 많은 수의 작은 원자 조작들(atomic operation) 즉, 트랜잭션들(transactions)로 분할된다. 각각의 작은 트랜잭션은 객체들의 선택된 부분집합을 기하학적으로 변환한다. 이에 따라, 많은 작은 기하학적 변환 트랜잭션들이 완료되기 전에 큰 기하학적 변환 동작이 중단되는 경우에도, 모델 데이터베이스는 일관성 상태(consistent state)를 유지하고, 전반적인 기하학적 변환 동작은 중단 지점에서 시작될 수 있다.
본 발명자는 객체들이 기하학적으로 변환되는 순서가 중요하다는 것을 깨달았다. 다수의 가상 객체들인 A1, A2, A3, B1, ... Z4와 실선으로 표현되는 객체 A1-Z4 사이의 관계들을 개략적으로 표현하는 도 1부터 설명한다. 도 1은 설명의 편의를 위해, 상대적으로 작은 수의 객체들을 보여준다. 객체 A1, B1, C1 및 D1은 설계 객체들을 나타낸다. 위에서 언급한 바와 같이, 설계 객체들은 종속 객체가 없거나 하나 이상의 종속 객체들로 구성될 수 있다. 예를 들어, 객체들 C2와 C3는 설계 객체 C1의 종속 객체들이다. 각각의 종속 객체 모음은 그 각각의 설계 객체로부터 유래하는 계층을 형성한다. 각각의 설계 객체와 그 각각의 종속 객체들은 각각의 얇은 파선 100, 102, 104 및 106에 의해 둘러싸인다.
화살표들에 의해 지시되는 바와 같이, 객체 A1-Z4 중 어떤 쌍들은 기능적으로 의존적인 관계들에 있다. 예를 들어, 객체 B6는 객체 B4에 의존적이다. 이는 객체 B6의 적어도 한 매개변수가 객체 B4의 적어도 한 매개변수에 의존적이라는 것을 의미한다. 그러므로, 객체 B4의 한 매개변수가 변하면, 객체 B6의 하나 이상의 매개변수들이 객체 B4의 변화된 매개변수에 기초하여 재계산(recomputed)되어야 한다. 그러므로, 적어도 객체들 B4와 B6 간의 관계에 대하여는, 객체 B6는 의존적이고, 객체 B4는 독립적이다. 어떤 기능적인 관계들은 설계 객체 영역들에 걸쳐있다는 점에 주의하라. 예를 들어, 설계 객체 A1의 일부인 객체 A3는 다른 설계 객체 B1의 일부인 객체 B5에 의존적이다.
설계 객체들 A1과 B1 사이에는 명백한 관계가 없더라도, 종속 객체 A3가 객체 B5에 의존적이라는 사실은 설계 객체 B1이 설계 객체 A1의 선행자(predecessor, 본 명세서에서는 이 용어가 사용된다.)라는 것을 암시한다. 본 명세서에서 사용되는 바와 같이, 선행 객체는 다른 설계 객체가 의존하는 설계 객체이다. 즉, 의존적인 설계 객체 또는 그것의 하나 이상의 종속 객체들은 선행 설계 객체 또는 그것의 하나 이상의 종속 객체들에 의존적이다. 그러므로, 선행 설계 객체 또는 그것의 하나 이상의 종속 객체들의 매개변수가 변하면, 의존적인 설계 객체 또는 그것의 하나 이상의 종속 객체들의 하나 이상의 매개변수들이 재계산(recomputed)되어야 한다. 설계 객체들 A1과 B1 간의 암시적인 관계는 종속 객체들 A3와 B5 간의 실제 관계에 의해 유도된다. 설계 객체들은 그러나, 다른 설계 객체들과 명백한 관계들(도시하지 않음)을 가질 수 있다.
선행 관계는 객체 지향 프로그래밍 체계(paradigm)에서의 부모-자녀(클래스-서브 클래스, 일반화된 체계, 클래스-인스턴스라고도 알려진) 관계와는 완전히 다르다는 점에 주의해야 한다. 아강(subclass)은 그것의 상강(superclass)으로부터 변수나 방법과 같은 속성들을 물려받는다. 유사하게, 인스턴스(instance)는 그것의 클래스 정의로부터 속성들을 물려받는다. 서브 클래스가 변수들이나 그것의 슈퍼 클래스의 방법들을 무효화하는 경우도 있지만, 일반적으로, 서브 클래스는 추가적인 변수들이나 방법들과 같은 기능성을 추가한다. 예를 들어, "차량"에 대한 클래스가 정의될 수 있는데, 이 클래스는 "무게"와 "휠의 수"에 대한 변수를 포함하고, "가속"의 방법을 포함할 수 있으며, 가속은 방법은 가속 페달을 밟은 거리를 입력으로 갖는다. 이 클래스의 인스턴스들은 다양한 승용차와 트럭들을 표현하는 객체들일 수 있다. 서브 클래스는 "크레인"에 대해 정의될 수 있고, "최대 인양 중량"과 "최대 인양 높이"에 대한 변수들 및 짐을 올리고 내리는 것과 같은 기능들을 수행하는 데에 적용될 수 있는 가능한 방법들을 추가할 수 있다.
선행 관계들은 클래스-서브 클래스 관계들과 관련이 없다. 선행 관계들은 객체 지향 체계(paradigm)로부터는 알 수 없으며, 본 출원에 기술된 목적을 위해 본 출원의 발명자에 의해 창안되었다. 선행 관계는 물려받는 것을 암시하지는 않는다. 가능적 의존은 물려받는 것이 아니다. 선행 객체는 그것의 의존 객체로부터 특성들(변수들)이나 방법들을 자동적으로 물려받지는 않으며, 그 역도 마찬가지다. 대신에, 선행 설계 객체나 그것의 하나 이상의 종속 객체들의 매개변수가 변하면, 그 의존 설계 객체나 그것의 하나 이상의 종속 객체들의 하나 이상의 매개변수들이 재계산(recomputed)되어야 한다.
선행 관계들에 있는 객체들이 반드시 클래스-서브 클래스 관계들에 있지는 않다. 일반적으로, 선행 객체들은 그 후행 객체들의 서브 클래스도 아니고 슈퍼 클래스도 아니다. 예를 들어, 펌프와 파이프는 일반적으로 빔과 기둥이 속한 클래스와는 전혀 다른 클래스에 속한다. 더욱이, 서브 클래스/슈퍼 클래스 관계는 기능적인 관계를 의미하지는 않는다. 즉, 한 클래스의 객체가 새로운 위치로 이동되는 등과 같이 변경되어도, 그것의 서브 클래스의 객체들은 재계산(recalculated)될 필요가 없다.
설계 객체들 A1, B1, C1 및 D1이 변환을 위해 선택된다고 가정하자. 변환될 객체들은 굵은 파선 108에 의해 둘러싸인다. 객체 X1, Y1 및 Z1과 같은 객체들은 변환될 객체들과 관련되지만, 이 객체 X1-Z4는 변환을 위해 선택되지는 않는다.
파선 108 내의 객체들이 임의의 순서대로 기하학적으로 변환되고, 그 기하학적 변환 동작이 비정상적으로 종료되었다면, 변환 동작이 비정상적으로 종료될 때, 어떤 의존 객체들은 기하학적으로 변환될 수 있는 반면, 그들이 의존하는 객체들은 변환되지 않을 수 있기 때문에, 변환 작업이 비정상적으로 종료되는 시점에서, 데이터베이스는 비일관성 상태(inconsistent state)에 놓여질 수 있다.
본 발명의 방법과 장치에 따르면, 객체들은 어떤 규칙들에 따라 파티션이라 불리는 선택된 객체들의 순서화된 세트들로 분할되고, 이 파티션들은 순차적인 순서로 기하학적으로 변환된다. 즉, 어떤 파티션의 모든 객체들은 그 다음 파티션에 속하는 객체들이 변환되기 전에 변환된다. 객체들은 파티션들로 할당되는데, 의존 객체들은 그들이 의존하는 객체들이 변환되기 이전에는 변화되지 않는다.
도 2는 본 발명의 규칙들에 따라, 설계 객체 A-D3가 순서화된 파티션 200, 202, 204 및 206으로 분할되는 예를 보여준다. 예를 들어, 설계 객체 D1 또는 그 종속 객체들 중 적어도 하나가 파티션 202에 속한 객체나 파티션 204에 속한 객체에 의존하기 때문에, 설계 객체 D1과 그 종속 객체들 즉, 파티션 206은 파티션 202(설계 객체 C1과 그 종속 객체들)와 파티션 204(설계 객체 A1과 그 종속 객체들)로 표현되는 객체들이 변환될 때 까지는 변환되지 않는다. "후행 파티션(successor partition)"은 다른 파티션에 속한 객체에 의존하는 객체를 갖는 파티션이다. 예를 들어, 파티션 206은 파티션 202, 204에 대해 후행 파티션이다. "선행 파티션(predecessor partition)"은 다른 파티션의 다른 객체가 의존하는 객체를 갖는 파티션이다. 예를 들어, 파티션 204는 파티션 206에 대해 선행 파티션이다.
각 파티션 200-206은 대응하는 서로 구별되는 트랜잭션대로(in a corresponding distinct transaction) 변환된다. 즉, 각 파티션 200-206에 대해, 프랜잭션이 수행되고, 그 파티션 내의 모든 설계 객체들과 그들의 각각의 종속 객체들이 트랜잭션 동안 변환된다. 도 2에 개시된 예는 파티션 200-206 마다 하나의 설계 객체만을 포함하지만, 파티션은 하나 이상의 설계 객체를 포함할 수 있다. 파티션 내의 객체들에 대한 변환은 "파티션 변환"으로 불리기도 한다. 언급한 바와 같이, 파티션들은 순차적인 순서대로 변환된다. 예를 들어, 파티션 202는 파티션 200 다음에 변환된다.
각 파티션이 변환되는 동안, 후행 파티션들의 모든 객체들(그리고 있다면, 그들의 각각의 종속 객체들)은 일시적인 "동결(frozen)" 상태에 놓인다. 예를 들어, 파티션 202가 변환되는 동안, 파티션 206의 모든 객체들(그리고 그들의 종속 객체들)은 동결된다. 동결 객체는 일시적인 읽기 전용으로 간주된다. 즉, 동결 객체가 다른 객체에 의존적이면, 그 동결 객체는 그것의 독립 객체의 변경에 응답하여 즉시 재계산(recomputed)되지는 않는다. 동결 객체를 즉시 재계산(recomputed)하는 대신, 시스템은 각 동결 객체에 대하여 수행 예정 기록(“to-do” record)을 생성하며, 이는 동결 객체의 변환을 그것의 각각의 파티션이 변환될 때까지 효과적으로 미룬다. 추가적으로, 어떤 객체들은 다른 객체들과의 관계들을 단절시키는 것을 지원하기 위해 동결될 수 있다. 예를 들어, 변환중이지는 않지만 변환될 객체와 관련된 객체들은 "외부 객체들(external objects)"로 불리운다. 도 1에 개시된 예에서, 객체 X1, Y1, Z1은 외부 객체들이고, 객체 A2, B1 및 D3와 같이 외부 객체들과 관련된 객체들은 관계들을 단절시키는 것을 가능케하기 위해 동결된다.
객체들의 각 파티션은 원자 조작(atomic operation) 즉, 트랜잭션(transaction)으로 기하학적으로 변환되고, 이에 따라, 큰 기하학적인 변환 동작이 비정상적으로 종료되어도, 데이터베이스의 일관성이 유지된다. 만약 큰 기하학적인 변환 동작이 비정상적으로 종료되면, 그 변환 동작은 종료되었던 지점에서 재개될 수 있다. 예를 들어, 하드웨어 고장이 비정상적인 종료를 야기한 경우, 변환 동작은 그 고장이 수리된 이후 재개될 수 있다. 다른 예로, 변환될 객체들의 일부가 데이터베이스에서 "읽기 전용"으로 마크되는 경우, 변환 동작은 이 객체들에 대한 보호가 변경되어 이 객체들의 매개변수들에 대한 변경을 허가한 이후 즉, 이 객체들을 "읽기-쓰기"로 만든 이후에 재개될 수 있다. 뿐만 아니라, 객체들을 충분히 작은 파티션들로 분할함으로써, 한번에 상대적으로 작은 수의 객체들이 메모리에 로드될 필요가 있기 때문에, 매우 많은 수의 객체들이 가용 메모리 용량에 상관없이 기하학적으로 변환될 수 있다. 메모리에 로드될 필요가 있는 객체들은 현재 파티션으로부터의 객체들, 선행 파티션으로부터의 객체들 및 후행 파티션으로부터의 객체들을 포함한다. 기하학적으로 변환된 객체들이 데이터베이스에 반영되고 나면, 메모리는 재사용될 수 있다.
큰 기하학적 변환 재개를 지원하기 위해, 변환에 대한 정보가 기본적으로 "변환 동작 객체"로 데이터베이스에 저장된다. 각 파티션의 변환 트랜잭션 상태도 변환 동작 객체에 저장된다. 이와 같이, 기하학적 변환 동작이 재시작될 필요가 있다면, 어떤 파티션들이 아직 변환되지 않았는지에 대한 정보뿐만 아니라, 어떤 파티션들이 이미 변환되었는지에 대한 정보도 변환 동작이 중단된 곳에서 재개되기 위해 이용될 수 있다.
<외부 관계들(External Relationships)>
언급한 바와 같이, "외부 관계"는 변환될 객체와 변환되지 않을 객체 사이의 경계를 가로지르는 관계이다. 예를 들어, 도 1에서, 관련된 객체들 간의 기능적인 의존성과 관계없이, 굵은 파선 108을 가로지르는 관계는 외부 관계이다. 도 1에서, 객체 X1은 객체 B1에 의존적이다. 그러나, 객체 X1은 변환을 위해 선택되지 않는다. 이와 같이, 객체 B1과 X1 사이의 관계 110은 외부 관계이다. 만약 의존 객체(이 예에서는, X1)가 그것의 독립 객체(이 예에서는, B1)와의 관계를 갖지 않고 존재할 수 있다면, 외부 관계는 깨어진다. 즉, 객체들이 서로 단절된다. 그리고, 하나의 실시 예에 있어서, 의존 객체 X1은 독립적으로 된다. 반면, 이 실시 예에서, 의존 객체 X1이 그것의 독립 객체 B1와의 관계를 갖지 않고는 존재할 수 없다면, 의존 객체 X1은 삭제된다.
어떤 객체들이 관계들 없이 존재할수 있는지는 영역 특수적(domain specific)이다. 즉, 기업 엔지니어링 시스템 설계자는 어떤 관계들이 외부 관계들인지를 결정한다. 예를 들어, 배관 시스템들은 배관부들(PipeRuns)로 만들어진다. 배관부는 설계 객체이다. 그러므로, 배관부는 다중 트랜잭션 방법으로 변환될 수 있는 배관의 가장 작은 단위이다. 배관부는 곧은 특징부들(straight features), 꺽인 특징부들(turn features), 어롱-레그 특징부들(along-leg features), 가지 특징부들(branch features) 등과 같은 다수의 논리적인 "특징부들(features)"로 구성될 수 있다. 각 특징부는 직선 파이프, 엘보(elbow), 밸브 또는 티(tee) 부품과 같은 물리적인 부분에 대응될 수 있다. 서로 인접한 물리 부품들은 연결 객체들에 의해 서로 연관된다. 용접부나 가스켓과 같은 연결 부재는 각각의 연결과 관련될 수 있다. 이와 같이, 하나의 배관부도 많은 특징부들, 부분들, 연결들 및 연결 부재들을 가질 수 있다. 배관부와 이 객체들 간의 관계들은 내부 관계가 될 것이다. 예를 들어, 만약 배관부가 (이동되는 것과 같이)변환되면, 이 모든 객체들은 배관부를 따라 (이동되는 것과 같이)변환될 수 있다.
반면, 제1 배관부는 제2 배관부 또는 어느 장비의 노즐에 연결될 수도 있다. 제1 배관부의 구성요소들과 제2 배관부 또는 장비의 구성요소들 간의 관계들은 외부 관계들이다. 이 경우, 제1 배관부가 (이동되는 것과 같이)변환되어도, 외부 객체들은 변환될 필요가 없다. 예를 들어, 제1 배관부가 이동되면, 제2 배관부 또는 장비와의 관계가 외부 관계로 식별된다. 제2 배관부와 장비는 독립 객체로 존재할 수 있기 때문에, 관계는 깨어질 수 있다.
<구성 개관(Architectural overview)>
여기서 설명되는 객체들을 기하학적으로 변환하기 위한 방법들과 장치들은 기업 엔지니어링 시스템과 같은 다양한 환경에서 구형될 수 있다. 모듈 단위의 예시적인 기업 엔지니어링 시스템(300)이 도 3에 개념적으로 제시되어 있다. 코어 소프트웨어 플랫폼(301)은 다양한 설계 객체들과 관련하여 사용되는, 기하학적 변환을 포함하는 공통 서비스들(즉, 하나 이상의 태스크로의 서비스)을 제공한다. 코어 플랫폼(301)은 객체들의 그룹들을 복사하는 것과 같은 다른 공통 서비스를 제공할 수도 있는데, 이는 공통적으로 양도된 미국 특허출원번호 12/476,399(미국 특허공개번호 2009/0300083)에 설명되어 있으며, 그 전체 내용이 모든 목적을 위해 상호 참조된다. 트랜잭션 관리, 그래픽 디스플레이, 편집과 철회 동작, 교정 관리 및 DBMS 인터페이스 등이 공통 서비스의 다른 예에 포함된다. 모든 설계 객체들은 코어 플랫폼(301)에 의해 제공되는 공통 3차원 작업공간을 공유한다.
태스크 302, 304, 306으로 예시되는 하나 이상의 소프트웨어 태스크들은 코어 플랫폼(301)을 호출하고 그래픽 유저 인터페이스(GUI, 308)를 통해 사용자에게 특정 문제 영역에 대한 서비스들(problem domain-specific services)을 제공한다. 예시적인 소프트웨어 태스크들은 구조적인 시스템들, 전기적인 시스템들, 장비 시스템들 및 배관 시스템들을 구현하는 태스크들을 포함한다. 각각의 태스크 302-306는 자체적인 메뉴 세트와, 자체적인 객체와 관계 세트 및 자체적인 기능 의존성 세트를 포함한다. 물론, 어떤 유형의 관계들은 태스크 302-306 중 하나의 태스크의 객체들로부터 태스크 302-306 중 다른 하나의 객체들로 경계를 가로지를 수 있다. 각각의 태스크 302-306는 객체 310, 312 및 314로 예시되는 객체들을 구현하는데, 이 객체들은 태스크의 요구에 적합하다. 객체들(310, 312, 314)은 관계형 데이터베이스(RDB, 316) 또는 다른 적당한 데이터베이스에 저장될 수 있다. 도 3에 개시된 소프트웨어 구성은 기존 태스크들을 손상시키지 않으면서 새로운 태스크들을 기업 엔지니어링 시스템에 추가하는 것을 가능케 한다.
<상위-레벨 동작 개관(High-Level Operations Overview)>
도 4는 하나 이상의 객체들을 기하학적으로 변환하기 위해 도 3의 코어 플랫폼(301)에 의해 수행되는 주요 동작들을 보여주는 상위-레벨 플로우차트이다. 이 동작들은 여기서 요약되고 이하에서 보다 구체적으로 설명된다. 400에서는, 객체들에 대해 수행될 변환의 유형(경우에 따라, 이동, 회전, 이중화(mirror)와 같은)과 변환의 매개변수들(거리, 회전각, 회전중심, 이중화(mirroring)를 위한 축과 같은)뿐만 아니라, 변환될 객체들을 특정하기 위해, 사용자 입력이 수집된다. 도 3의 사용자 인터페이스는 사용자가 선택 메뉴에서 객체를 선택하거나 필터 기준을 입력하거나 선택할 수 있게 한다. 시스템은 이 기준을 충족시키는 객체를 자동적으로 선택하는데에 이를 이용한다. 대안으로, 사용자 인테페이스는 선택 커서 또는 "러버 밴드(rubber band)" 선택 사각형(또는 다른 형상) 또는 다른 어떤 적당한 선택 메타포(metaphor)와 같은 그래픽 선택 툴을 제공할 수 있다. 아래에서는 사용자를 유도하고 사용자의 입력을 받아들이기 위한 예시적인 "마법사" 방식의 사용자 인터페이스가 도 5 내지 도 12를 참조하여 설명된다. 402에서는, 아래에서 상세히 설명되는 바와 같이 변환 동작이 수행된다. 404에서는, 변환 동작에 대한 정보가 사용자에게 시각적으로 제공된다. 예시적인 요약 디스플레이가 도 13에 개시된다.
<변환될 객체를 특정하는 사용자 입력을 수집하기 위한 사용자 인터페이스>
도 4의 플로우차트에 대해 설명한 바와 같이, 변환될 객체들을 특정하기 위해 사용자 입력이 수집된다(400). 아래에서는 사용자를 유도하고 사용자의 입력을 받아들이기 위한 예시적인 "마법사" 방식의 사용자 인터페이스와 변환 동작에 대한 정보 표시가 도 5 내지 도 13을 참조하여 설명된다. 도 5는 모델 데이터 변환 시스템 마법사(model data transform system wizard)를 소개하는 예시적인 대화 박스를 보여준다.
도 6에 개시된 대화 박스를 이용하여, 시스템은 복사될 기존 모델 영역을 선택하는 사용자 입력들을 받아들일 수 있다. 예시적인 대화 박스에서 사용된 바와 같이, "플랜트(plant)"는 데이터베이스를 가리킨다. 따라서, 도 6에 개시된 예에서, 사용자는“SDH_9059_ModelA”으로 명명된 소스 플랜트(600) 즉, 데이터베이스를 선택하였다. 각각의 데이터베이스는 "시스템" 체계의 모델에 대한 정보를 저장하고 있다. 예시적인 시스템들은 구조적인 시스템들과, 전기적인 시스템들과, 장비 시스템들 및 배관 시스템들을 포함하고, 구조적인 시스템들은 기초, 보 및 기둥과 같은 객체들을 포함할 수 있고, 전기적인 시스템들은 전선관, 전선, 스위치 등을 포함할 수 있고, 장비 시스템들은 펌프와 탱크를 포함할 수 있고, 배관 시스템들은 파이프와, 엘보(elbow)와, T-연결부와, 밸브 등을 포함할 수 있다. 계층도는 사용되는 특정 기업 엔지니어링 시스템과 사용자 요구 조건에 달려있다.
전술한 바와 같이, 기업 엔지니어링 시스템은 노출되지 않은 종속 객체들뿐만 아니라, 사용자 인터페이스를 통해 사용자에게 노출된 설계 객체들을 포함할 수 있다. 예를 들어, 시스템은 기초, 기둥 및 보와 같은 설계 구조 객체들을 노출시킬 수 있다. 사용자는 사용자 인터페이스를 통해 이 설계 객체들을 조작할 수 있다. 예를 들어, 사용자는 기둥을 이동시키거나 그 차원을 특정할 수 있다. 시스템은 노출 객체들에 대한 정보를 저장하기 위해 비노출 종속 객체들을 이용할 수 있다. 예를 들어, I-빔 설계 객체는 I-빔의 중심축, 그 단면, 논리적인 연결 포트들 등을 나타내는 종속 객체들과 관련될 수 있다.
도 7은 신규 변환 동작(700)을 시작할지 아니면 이전에 시작되었던 즉, 현재 존재하는 변환 동작(702)을 계속하거나 재시작할지를 선택하는 사용자 입력을 받아들이는 대화 박스를 보여준다. 신규 동작(704)이 시작되게 하려면, 사용자는 동작을 명명(704)하고, 허가 그룹을 특정(706)할 수 있다. 반면, 기존의 동작이 재시작되도록 하려면, 사용자는 이전에 시작되었던 변환 동작을 선택 박스(708)로부터 그 명칭을 선택하는 등의 방식으로 선택할 수 있다.
도 8은 객체들이 속한 시스템(800)에 기초하거나 필터(802)에 기초하여, 사용자가 변환될 객체를 선택할 수 있도록 하는 대화 박스를 보여준다. 객체들이 시스템에 의해 선택되는 경우, 도 9는 사용자가 변환될 시스템을 선택할 수 있도록 하는 대화 박스를 보여준다.
반면, 객체들이 도 8의 필터(802)에 의해 선택되는 경우, 도 10은 사용자가 미리 정의된 필터(1000)를 선택할 수 있도록 하고, 선택적으로 필터의 기준(1002)을 수정하거나 새로운 필터에 대하여 기준을 특정할 수 있도록 하는 대화 박스를 보여준다. 필터는 도 3의 데이터베이스(316) 질의에 의해 구현될 수 있다. 예시적인 필터는 "볼륨" 필터와 "속성(property)" 필터를 포함한다. 볼륨 필터는 설계 객체들의 기하학적인 위치에 기초한 질의를 나타내는데, 여기서, 설계 객체들은 특정된 3차원 볼륨 또는 2차원 영역 내의 객체들이다. 또한, 속성 필터는 사이즈, 지지 하중, 구성 또는 설계 객체들의 명칭과 같은 하나 이상의 속성값들에 기초한 질의를 나타낸다. 더 복잡한 필터들은 "AND"나 "OR"와 같은 불 연산자들(Boolean operators)로 필터들을 결합함으로써 생성될 수 있다. 바람직하게는, 질의는 선택된 객체들을 메모리에 바인딩(binding)하지 않고 수행된다. 대신에, 질의는 객체 식별자들(OIDs)의 리스트를 반환한다. OID는 객체를 고유하게 구별하고 객체를 데이터베이스로부터 메모리로 페치(fetch)시키는(객체를 바인딩한다고 지칭됨) 데에 사용될 수 있는 숫자, 열, 데이터베이스 키 또는 기타 다른 양이다.
도 11은 선택된 객체들에 적용될 변환들을 특정하는 사용자 입력들을 받아들이는 대화 박스를 나타낸다. 예를 들어, 객체들은 사용자에 의해 특정된 단위 수치만큼 세 직교 방향들(1102, 1104, 1106)로 이동(1100)될 수 있다. 사용자는 1108에서 단위를 특정할 수 있다. 변환의 다른 유형들은 선택적으로 또는 대체적으로 선택될 수 있다. 예를 들어, 사용자는 선택된 객체들에 대한 회전(1110)을 선택하거나 이동 및 회전(1112)을 선택할 수 있다. 도시하지는 않았으나 축에 대한 이중화(mirroring)와 같은 변환의 다른 유형들은 사용자에게 옵션으로 제공될 수 있다. 사용자가 동작을 선택하면, 변환 동작 객체가 생성되어 변환 및 이 변환이 분할되는 각각의 트랜잭션의 상태에 대한 정보를 기록한다.
도 12는 확인 대화 박스를 보여준다. 사용자가 변환 동작을 개시(1200)하면, 시스템은 진행 지시자(1202)에 진행율을 표시할 수 있다. 모든 파티션 변환 동작들이 성공적으로 완료된 이후, 또는 변환 동작이 비정상적으로 종료되는 경우, 도 13에 개시된 바와 같이, 사용자에게 상태를 보고하는 결과 대화 박스가 표시될 수 있다. 전술한 바와 같이, 변환 동작의 완료를 위해서는 수분, 수시간 또는 그 이상의 시간이 걸릴 수 있다.
<파티션 변환(Transforming the Partitions)>
도 4에 관하여 전술한 바와 같이, 변환될 설계 객체들을 특정하기 위한 사용자 입력이 수집되면(400), 변환 동작들이 수행될 수 있다(402). 도 14는 도 4의 변환 동작(402)의 부분 동작들을 보여주는 상위 레벨 플로우차트이다. 1400에서, 도 3의 데이터베이스(316)는 변환을 위해 사용자에 의해 선택된 설계 객체들의 객체 식별자들(OIDs)을 획득하기 위해 질의(query)를 받는다. 도 8 내지 도 10에 관하여 전술한 바와 같이, 질의는 선택된 객체들을 메모리에 바인딩(binding)하지 않고 수행된다. 1402에서, 객체 식별자들의 리스트가 본 발명에 따른 규칙들에 따라 순서화된 파티션들로 분할되며, 이에 대해서는 도 15의 플로우차트를 참조하여 보다 구체적으로 설명된다. 1404에서, 순서화된 파티션들이 순차적으로 처리되며, 이에 대해서는 도 21의 플로우차트를 참조하여 보다 구체적으로 설명된다.
도 15는 객체 식별자들의 리스트를 순서화된 파티션들로 분할하는 동작들의 예를 보여주는 플로우차트이다. 1500에서, 도 3의 데이터베이스(316)는 변환을 위해 선택된 각 설계 객체에 대한 모든 선행 객체들을 식별하기 위해 질의를 받는다. 전술한 바와 같이, 선행 객체는 다른 설계 객체가 의존하는 설계 객체이다. 즉, 의존 설계 객체 또는 그것의 하나 이상의 종속 객체들은 선행 설계 객체 또는 그것의 하나 이상의 종속 객체들에 의존한다. 1502에서는, 식별된 선행 객체들을 체계화하기 위해 선행자 그래프가 만들어지고, 1504에서는, 선행자 그래프가 정렬되어 객체 식별자들의 연결 리스트가 생성된다. 1506에서는, 객체 식별자들의 연결 리스트가 순서화된 파티션들의 시퀀스로 분할된다. 1502 내지 1506의 동작에 대한 보다 구체적인 설명은 다음과 같다.
<선행자 그래프(Predecessor Graph)>
본 발명의 일 실시 예에 있어서, 선행 객체들은 변환될 각각의 설계 객체들을 그것의 선행자들에 관련시키는 유도(directed) 그래프 즉, 선행자 그래프를 구성함으로써, 식별된다. 선행자 그래프는 변환될 각각의 설계 객체들에 대한 노드를 포함한다. 각 노드는 각가의 객체에 대한 객체 식별자를 저장한다. 그래프의 유도된 에지들(edges)은 각 객체 노드들 사이의 관계들을 나타낸다. 노드에서 비롯되는 에지들에 대한 수집을 통해 모든 선행 노드들을 식별할 수 있다. 유사하게, 노드에서 끝나는 에지들에 대한 수집을 통해 후행 노드들을 식별할 수 있다. 선행 노드들에 의해 식별되는 객체들은 모두 현재 노드에 의해 식별되는 객체보다 먼저 변환되어야 한다.
이 그래프에 대한 순회(traversal)를 통해 변환될 객체들에 대한 순서화된 리스트가 도출된다. 이 순서화된 리스트로부터의 연속된 객체 세트들은 이어지는 파티션들로 할당되며, 이 파티션들은 여기서 설명되는 바와 같이 변환된다. 이렇게 하여, 변환될 모든 설계 객체들은 파티션 열(a sequence of partitions)로 분할된다. 이 동작들은 이하에서 구체적으로 설명된다.
두 설계 객체들이 서로 관련이 없다면, 이 객체들이 변환되는 순서도 관련이 없다. 그러나, 두 설계 객체들 사이의 관계는 이 객체들 사이의 우선 출구들(precedence exits)을 가리킬 수 있다. 관계는 설계 객체들 중의 하나 또는 이 설계 객체의 하위의 종속 객체와 다른 설계 객체 또는 이 다른 설계 객체의 하위의 종속 객체 사이에 존재할 수 있다.
전술한 바와 같이, 변환을 위해 선택된 설계 객체는 종종 선택된 객체와 함께 변환되어야 하는 종속 객체들을 갖는다. 예를 들어, 빔 객체는 몇개의 노출되지 않은 종속 연결 객체들 또는 다른 종속 객체들을 가질 수 있다. 추가적으로, 빔 객체는 사용자에게 노출된 선행 기둥 객체에 연결될 수 있다. 이 연결은 상기 기둥 객체에 관련된 비노출 종속 연결점 객체를 통해 만들어질 수 있다. 전술한 바와 같이, 집합적으로, 설계 객체와 그 관련 종속 객체들은 "설계 객체 그룹" 또는 단순히 "그룹"으로 지칭된다.
그러한 상황의 도해적 표현이 도 16에 묘사되어 있다. 그룹 1은 빔 객체를 나타내고, 그룹 2는 기둥 객체를 나타낸다. 설계 빔 객체 A는 다수의 종속 및/또는 노출 객체들 A1, A2, A3 및 A4에 관련되며, 이들 모두는 노출 빔 객체 A와 함께 변환되어야 한다. 객체 A4가 빔의 연결점을 나타낸다고 가정하자. 유사하게, 설계 기둥 객체 B는 다수의 종속 및/또는 노출 객체들 B1, B2 및 B3와 관련된다. 각각, 객체 B3가 기둥의 연결점을 나타내고, 관계 X가 각각 빔과 기둥의 연결점 A4와 B3 사이의 연결을 나타낸다고 가정하자.
다른 객체로부터 연결 객체 B3로의 관계가 수립될 수 있기 때문에, 연결 객체 B3는 "타겟(target)" 객체로 지칭된다. 만약 그런 관계가 수립된다면, 그 객체들을 변환하기 위해, 기둥 객체 B는 선행자가 될 것이고, 다른 설계 객체는 후행자가 될 것이다. 객체는 하나 이상의 타켓을 가질 수 있다. 추가적으로, 물리적 연결들 보다는 관계들이 수립될 수 있다. 예를 들어, 객체는 좌표계 객체 또는 단위 객체와 관련될 수 있다. 유사하게, 빔과 같은 객체는 다른 객체와 관련되는 하나 이상의 객체를 가질 수 있다.
전술한 바와 같이, 기업 엔지니어링 시스템은 플랜트 또는 모델 내에서 시스템을 관리하는 하나 이상의 소프트웨어 태스크들(도 3의 302-306)을 전형적으로 포함한다. 이 소프트웨어 태스크들은, 사용자가 모델에 빔이나 기둥을 추가할 때와 같은, 사용자 입력들에 응답하여 객체들을 생성한다. 객체 지향 체계에서, "클래스(class)"는 객체의 정의 또는 원형이다. 객체 지향 시스템들은 생성될 수 있는 각 유형의 객체들에 대한 클래스 정의들을 갖고 있다.
관계의 유형, 이 관계로 연결된 객체들 및 이 객체들의 의미는, 우선적으로, 각 소프트웨어 태스크 302-306에 대해 모두 특정되어 있다. 각 태스크 302-306은 메타데이터의 형식으로 그 설계 클래스들에 대한 정보를 공급한다. 이 메타데이터는, 변환될 객체들의 리스트에 있는 각각의 객체에 대한 선행자들을 찾기 위해, 코어 플랫폼(301)이 데이터베이스(316)에 대해 질의를 수행할 수 있도록 한다.
본 발명에 따르면, 각 클래스 정의는 코어 플랫폼(301)은 객체들에 대해 상대적으로 두가지 유형의 경로들(paths)을 순회(traverse)할 수 있도록 하는 정보를 제공한다. 그 중 하나는 (a) 객체로부터 시작해서, 이 객체 그룹의 내부 관계들을 통해, 이 객체가 관계를 가질 수 있는 다른 객체의 타겟 객체로 이어지는 경로이다. 다른 하나는 (b) 객체로부터 시작해서, 이 객체 그룹의 내부 관계들을 통해, 이 객체 그룹 내의 타겟 즉, 관계가 수립될 수 있는 타겟 객체로 이어지는 경로이다. 이 정보로부터, 종속 객체 그룹 내의 모든 가능한 타겟들로의 경로들뿐만 아니라, 선행 객체들에서의 모든 타겟들로의 경로들이 결정될 수 있다. 각 경로는 유도된 관계들의 시퀀스를 포함한다.
경로의 두가지 유형이 도 16에 예시된다. 전술한 바와 같이, 빔은 다른 설계 객체에 연결될 수 있으며, 빔의 연결 객체 A4는 연결 관계(관계 X)가 수립될 수 있는 객체이다. 전술한 바와 같이, 빔의 다른 객체들 A1-A4를 통해서도 관계들이 수립될 수 있다. 객체 A4가 다른 객체와의 관계 수립을 위해 사용될 수 있기 때문에, 경로 1600은 첫번째 경로 유형의 예이다. 즉, 경로 1600은 객체 A에서 시작해서, 이 객체 그룹의 내부 관계들을 통해, 이 객체가 관계를 가질 수 있는 다른 객체 그룹의 타겟 객체 B3로 이어지는 경로이고, 객체 A는 타겟 객체 B3와 관계(관계 X)를 가질 수 있다. 경로 1602는 두번째 경로 유형을 예시한다. 즉, 경로 1602는 객체 B에서 시작해서, 그 객체 그룹의 내부 관계들을 통해, 그 그룹 내의 타겟 B3로 이어지는 경로이다. 관계 X의 존재는 설계 객체 B가 객체 A의 선행자라는 사실을 가리키기 때문에, 객체 B는 객체 A보다 먼저 변환되어야 한다.
어떤 실시 예에서는, 각각의 클래스 정의는 변환 어플리케이션이 두가지 경로 유형 중 하나 또는 모두를 식별하기 위해 이용할 수 있는 정보를 포함하는 "클래스 디스크립터(class descriptor)" 파일을 제공하는데, 어떤 경로 유형인지는 그 클래스의 객체들이 타겟들이 될 수 있는지 또는 객체들이 다른 객체들에 대해 수립된 관계들을 가질 수 있는지에 달려있다. 어떤 실시 예에서는, 이 파일은 XML(extensible markup language) 규격에 따라 포맷될 수 있다. 이러한 XML 파일에 대한 보다 구체적인 설명이 아래에 개시된다.
전술한 바와 같이, 전형적인 기업 엔지니어링 시스템은 객체들에 대한 정보 및 관계를 관계형 데이터베이스(RDB) 또는 다른 유형의 데이터베이스에 저장한다. 이러한 시스템들 중에서 어떤 것들은 각각의 객체 유형에 대해 분리된 데이터베이스 테이블들을 유지한다. 예를 들어, 이러한 시스템은 기둥 객체들에 대한 테이블과 빔 객체들에 대한 분리 테이블을 유지할 수 있다. 객체들 사이의 관계들에 대한 정보는 객체 테이블들 또는 분리 테이블들에 유지될 수 있다. 예를 들어, 표 1에 의해 예시되는 관계들에 대한 테이블은 한쌍의 객체와 이들 사이의 관계를 표의 각 줄에 기록할 수 있다. 이와 같이, 테이블은, 시스템의 두 객체들 사이의 각각의 관계들에 대해, 하나의 줄을 갖는다. 테이블의 열 영역에는 객체 식별자들이 들어있을 수 있다. "OID (B)라는 명명법은 "객체 B의 객체 식별자"를 의미한다. 표 1의 두번째 줄에 개시된 관계는 도 16에 개시된 관계 X에 대응되는데, 이는 빔 A의 연결점 A4는 기둥 B의 점 B3와의 종단-중간(end-to-mid) 연결이라는 것을 가리킨다.
출발지(Origin) 목적지(Destination) 관계 유형(Relation Type)
OID (X) OID (Y) 종단-종단 연결(End-to-end connection)
OID (A4) OID (B3) 종단-중간 연결(End-to-mid connection)
표 1의 세로줄 제목("출발지" 및 "목적지")에 의해 지시되는 바와 같이, 관계들은 방향성이 있다. 반드시 그럴 필요는 없으나, 관계의 방향은 두개의 해당하는 객체들 사이의 후행자/선행자 관계를 내포한다.
전술한 바와 같이, 각각의 클래스 정의는 클래스에 따라 예시된 객체들에 관하여, 소프트웨어가 두가지 유형의 경로들을 순회(traverse)할 수 있도록 하는 정보를 담고있는 클래스 디스크립터 파일을 제공한다. 도 17은 이 정보를 제공하는 예시적인 XML 파일 단편을 포함한다. 적당한 다른 파일 포맷들도 사용가능하다.
주어진 객체 클래스에 있어서, 이 파일은 두가지 경로 유형에 대한 정보를 각각 제공하는 두 영역 1700, 1703을 포함한다. 첫번째 영역(1700)인 선행자내부객체(TargetsInPredecessors) 영역은 객체로부터 시작해서, 그 종속 객체 그룹의 내부 관계들을 통해, 이 객체가 관계를 가질 수 있는 다른 객체의 타겟 객체 즉, 이 객체의 선행자가 될 수 있는 객체로 이어지는 각각의 가능한 경로에 대한 정보를 제공한다.
도 17에 개시된 예는 그러한 두가지 경로 1706, 1710을 정의한다. 각 경로는 적어도 하나의 "스텝(step)"을 포함한다. 스텝은 관계 유형(RelType)과 관계의 방향(Dir)에 대한 설명을 포함하여, 두 객체들 사이의 관계를 설명한다. 도 16의 빔 객체를 예로 이용하여, 경로 1600은 관계 1604, 1606 및 1608에 대응하는 세 스텝을 갖는다고 설명될 수 있다. 객체에서 출발하여, 특정된 스텝 수, 관계 유형(RelType) 및 방향(Dir)을 만족시키는 경로는 선행자내부객체(TargetsInPredecessors) 경로로서의 자격이 주어진다.
도 17로 돌아가서, XML 파일의 두번째 영역(1703)인 자체내부타겟(TargetsInSelf) 영역은 객체에서 출발하여, 이 객체 그룹의 내부 관계들을 거쳐, 그 그룹 내의 타겟으로 이어지는 각각의 가능한 경로들에 대한 정보를 제공한다. 도 18은 XML 클래스 디스크립터 파일의 보다 완전한 예이다.
객체가 변환될 객체인 것으로 사용자에 의해 선택되거나 시스템에 의해 자동적으로 식별될 때, 시스템은 대응하는 설계 객체의 선행자들을 자동적으로 식별한다. 선행자들을 식별하기 위하여, 시스템은 선행자들에서 선택된 객체 또는 그것의 종속 객체들 중 하나에 관련된 타겟 객체들을 식별한다. 타겟 객체들을 식별하기 위하여, 객체 클래스에 대해 정의된 각각의 선행자내부타겟(TargetsInPredecessors) 경로에 대한 질의를 만든다. 이 질의는 주어진 변환될 클래스에 대한 모든 설계 객체들의 객체 식별자로 시작되고, 경로의 각각의 스텝에 대한 조인(JOIN)을 포함한다. 이 질의는 도 3의 데이터베이스(316)에 있는 관계 테이블에 대해 수행된다. 이 질의는 객체 식별자 쌍을 갖는 테이블로 귀결된다. 각각의 객체 식별자 쌍은 빔(OID “A”)과 같은 변환될 객체의 객체 식별자와 연결점(OID “B3”)과 같은 타겟 객체의 객체 식별자를 포함한다. 표 2는 그러한 질의의 예시적인 결과의 일부를 보여준다.
변환될 객체의 객체 식별자
(OID of Object to be Transformed)
타겟 객체의 객체 식별자
(OID of Target Object)
A B3
시스템은 또한 객체 클래스에 대해 정의된 각각의 자체내부타겟(TargetsInSelf)에 대한 질의를 만든다. 이 질의는 주어진 변환될 클래스에 대한 모든 설계 객체들의 객체 식별자로 시작되고, 경로의 각각의 스텝에 대한 조인(JOIN)을 포함한다. 이 질의는 도 3의 데이터베이스(316)에 있는 관계 테이블에 대해 수행된다. 이 질의는 객체 식별자 쌍을 갖는 테이블을 낳는다. 객체 식별자들의 각각의 쌍은 기둥(OID “B”)과 같은 변환될 객체의 객체 식별자와 연결점(OID “B3”)과 같은 타겟 객체의 객체 식별자를 포함한다. 표 3은 그러한 질의의 예시적인 결과의 일부를 보여준다.
변환될 객체의 객체 식별자
(OID of Object to be Transformed)
타겟 객체의 객체 식별자
(OID of Target Object)
B3 B
앞서 설명된 질의들은 변환을 위해 선택된 객체의 각각의 클래스에 대해 수행되고, 이 질의들에 대한 결과들은 두개의 결과 테이블에 누적된다. 이 두 테이블은 "타겟 객체의 객체 식별자(OID of Target Object)"라는 세로줄 명칭을 가진 테이블로 합쳐져서 세번째 테이블이 만들어진다. 표 4는 그러한 데이터베이스의 조인(JOIN) 동작의 예시적인 결과의 일부를 보여준다. 표 4의 열들은 변환될 객체들 사이의 선행 관계들을 보여준다. 예를 들어, 표 4의 첫번째 열에 따르면, 객체 B는 객체 A의 선행자이기 때문에, 객체 B는 객체 A보다 늦게 변환되어서는 안된다.
변환될 객체의 객체 식별자
(OID of Object to be Transformed)
선행 객체의 객체 식별자
(OID of Predecessor Object)
A B
전술한 바와 같이, 선행자 그래프는 변환될 각각의 설계 객체에 대한 노드를 포함하고, 이 그래프의 에지들은 각각의 객체 노드들 사이의 관계들을 나타낸다. 시스템은 사용자에 의해 선택된 각각의 설계 객체에 대한 노드를 이 그래프 안에 생성한다. 추가적으로, 시스템은 표 4에서 선행자로 식별된 각각의 설계 객체에 대한 에지를 이 그래프에 추가한다.
결합된 테이블(표 4)의 각각의 열은 변환될 객체와 선행 객체 사이의 선행 관계를 나타낸다. 시스템은 각각의 이러한 선행 관계들에 대하여 에지를 선행자 그래프에 추가한다. 도 19는 예시적인 선행자 그래프를 보여준다. 선행 관계 1900은 변환 순서를 결정하기 위해 생성되었다는 점에 유의해야 한다. 이 관계는 선행자 그래프에 단독으로 존재할 수 있다. 즉, 도 16의 그룹 1과 그룹 2 내의 객체들을 나타내는 데이터 구조들은 선행 관계 1900에 대한 정보를 반드시 저장하지는 않을 수도 있다.
<변환 순서로의 객체 정렬(Sorting Objects into Transformation Order)>
도 15의 1504에서 설명한 바와 같이, 선행 관계들이 선행자 그래프에 추가된 이후에는, 각각의 선행 객체들이 그에 의존하는 모든 객체들보다 늦게 나타나지 않도록, 이 그래프에 추가된 객체들은 변환 순서대로 정렬된다. 변환 순서는 선행자 그래프의 노드들을 거쳐 확장되는 (순방향 또는 역방향의 포인터들과 같은)연결 리스트에 의해 또는 분리된 순서화된 리스트에 의해 또는 다른 어떤 적당한 지시자에 의해 표현될 수 있다.
선행자 그래프는 적당한 방법으로 정렬될 수 있다. 두가지 예시적인 방법에 대해 설명된다. 넓이-우선 정렬 방법에서는, 변환될 객체 리스트를 통해 다중 경로들이 만들어질 수 있다. 각 경로 중에, 이미 모든 선행 객체들이 추가된 객체들이 리스트에 추가될 수 있다. 이 정렬 방법은 변환 순서 리스트 내에 관련되지 않은 객체들을 서로의 근처에 배치하는 경향이 있다.
변환 순서 리스트에 관련된 객체들을 서로의 근처에 배치하는 깊이-우선 정렬 방법을 이용하는 것이 바람직하다. 후행 객체들을 가지지 않는 모든 객체들을 식별하기 위해 즉, 다른 어떤 객체에 대해서도 선행자가 아닌 객체들을 식별하기 위해, 선행자 그래프에 대해 단일 경로가 만들어진다. 후행자들을 갖지 않는 각각의 객체에 대하여 반복되는 기능은 리스트에 객체를 추가한다고 불릴 수 있다. 이 기능은 객체의 각각의 선행자에 대해 자신을 호출한 후, 객체를 리스트에 추가한다. 이와 같이 하여, 객체의 모든 선행자들이 객체 자신이 리스트에 추가되기 전에 리스트에 추가된다.
두개 이상의 객체들이 루프를 형성하기 위해 관련될 수 있다. 그러한 관계들의 예들이 도 20에 개시되어 있다. 루프들은 정렬 과정에서 탐색될 수 있다. 루프가 탐색되면, 주어진 루프의 모든 객체들은 함께 변환되기 위해, 동일한 파티션에 할당된다.
서로간에 다른 객체를 자신의 선행자로 여기는 두개의 객체는 상호 선행자들(mutual predecessors)로 지칭된다. 상호 선행 객체들은 동일한 파티션에 할당된다. 유사하게, 상호 선행 객체들의 루프들은 동일한 파티션에 할당된다.
선행자 그래프에서 객체들이 정렬되면, 이 객체들은 이어지는 파티션에 할당될 수 있으며, 이 파티션은 정렬된 선행자 그래프의 시작점에서의 객체로 시작해서, 이 그래프의 종단점까지 정렬 순서대로 계속된다.
각 파티션의 객체의 수는 루프나 공동 선행 객체들이 발견되는지 여부에 의존할 수 있다. 아니면, 파티션의 객체의 수는 하나 이상의 기준에 따라 선택될 수 있다. 예를 들어, 파티션 변환 동작에 오류가 생기면, 이 오류를 야기한 객체를 확인하기가 큰 변환 동작에 오류가 생긴 경우보다 쉽다는 점에서, 파티션이 작을수록 강건성이 증대되는 경향이 있다. 그러나, 파티션 변환 동작이 작아질수록 그런 동작의 수는 커지기 때문에, 데이터베이스의 성능에 부정적 영향을 끼칠 수 있다. 파티션들은 하나의 설계 객체만을 포함할 수도 있다. 모든 파티션들이 같은 수의 객체들을 포함할 필요는 없다. 본 발명을 통해, 한 설계 객체의 파티션 사이즈는 강건성과 성능 사이의 좋은 균형을 제공한다는 것을 알 수 있다. 그러나 다른 그룹 사이즈도 사용될 수 있다.
객체들은 객체들의 정렬된 리스트의 헤드에서 사작해서 모든 객체들이 각각의 파티션에 할당될 때까지 계속되는 파티션들에 할당될 수 있다.
<각 파티션에서의 객체 변환(Transforming Objects in each Partition)>
도 14의 1404에서 설명한 바와 같이, 객체들이 변환 순서대로 정렬되어 순서화된 파티션으로 분할된 후에는, 도 21의 플로우차트에서 요약 설명되고 아래에서 보다 구체적으로 설명되는 바와 같이, 순서화된 파티션들이 순차적으로 처리된다. 이 플로우차트는 루프를 포함한다. 루프 순회마다 하나의 파티션이 처리된다. 2100에서, 다음 순서의 파티션이 선택되고, 이 선택된 파티션은 2102에서 처리된다. 2102에서의 처리는 도 22에서 구체화되어 아래에서 보다 상세하게 설명된다. 선택된 파티션 내의 모든 객체들이 처리된 후에는, 처리된 객체들에 의존하는 객체들이 2104에서 재계산(re-computed)되고, 2106에서 데이터베이스에 대한 변화가 일어난다. 루프에 대한 각각의 순회는 원자 조작(atomic operation)이다. 즉, 2100 내지 2106의 모든 동작들이 완료되거나 2106에서 데이터베이스에 아무 일도 일어나지 않는다.
객체들의 각각의 파티션들이 변환되면서, 선행 파티션들과 후행 파티션들 내의 객체들은 일시적인 동결(frozen) 상태 즉, 읽기 전용(read-only) 상태가 되고, 수행 예정 기록(“to-do” record)이 각각의 그러한 동결 객체에 대해 생성되어, 동결 객체에 대한 변환은 그 각각의 파티션이 변환될때까지 효과적으로 미루어지게 된다. 동결 객체가 궁극적으로 변환될 때, 그에 대응하는 수행 예정 기록은 삭제된다. 이리하여, 모든 파티션들이 변환된 이후에는, 어떤 수행 예정 기록이 남지 않게 된다. 이 수행 예정 기록은 동작 2102에서 생성되고 삭제된다.
처리되어야 하는 파티션들이 남아있으면, 2108에서 2100으로 복귀되어, 다음 파티션이 선택된다. 모든 파티션들에 대한 처리가 완료된 후에는, 2110으로 전환된다. 만약 마지막 파티션이 변환된 후에 어떤 수행 예정 기록이 남아 있다면, 실패 지시자가 적어도 하나의 동결 객체가 변환되지 않았다는 것을 가리키게 된다. 반면, 수행 예정 기록이 남지 않으면, 성공 지시자가 세팅된다.
도 22는 단일 파티션("현재 파티션(current partition)") 내의 객체들에 대한 처리를 설명하는 플로우차트이다. 즉, 이 차트는 도 21의 2102를 구체적으로 설명한다. 만약 현재 파티션의 선행자들인 모든 파티션들 즉, "선행 파티션들(predecessor partitions)"에 대한 변환이 아직 완료되지 않았다면, 현재 파티션은 2202에서 생략된다. 그러나, 모든 선행 파티션들에 대한 변환이 완료되면, 2204로 전환되어, 사용자에 의해 변환 대상으로 특정된 설계 객체들("초기 객체들(initial objects)")이 데이터베이스(도 3의 316)로부터 메모리로 로드("바운드(bound)")된다.
2206에서는, 임의의 선행 파티션들과 임의의 후행 파티션들로부터의 초기 객체들도 또한 메모리로 바운드되고, 이 객체들은 동결된다. 선행 파티션들 내의 객체들은 앞선 트랜잭션에서 이미 변환되었다. 이 객체들은 변환을 위해 사용자에 의해 이전에 선택되었었는데, 재차 변환을 위해 선택된 객체의 선행 객체인 결과로, 이중 변환 방지를 위해 동결된다.
선행 파티션들 내의 객체들은 외부 관계들에 대한 식별을 가능케하기 위해 메모리에 바운드된다. 후행 파티션들 내의 객체들은 두가지 이유로 메모리에 바운드된다. 첫번째 이유는 이 객체들이 현재 파티션이 변환되는 동안 재계산 방지를 위해 동결될 수 있도록 하기 위한 것이고, 두번째 이유는 외부 관계들에 대한 식별을 가능케하기 위한 것이다. 현재 파티션 내의 객체로부터 선행 또는 후행 파티션 내의 객체로의 관계는 그 어떤 것도 외부 관계가 아니다. 그러나 현재 파티션 내의 객체로부터 선행 파티션 내의 객체도 아니고 후행 파티션 내의 객체도 아닌 객체로의 관계는 외부 관계이다.
전술한 바와 같이, 어떤 객체들은 종속 객체들을 갖고 있다. 만약 종속 객체를 갖는 객체가 변환을 위해 선택되면, 파티션은 이 종속 객체를 포함하기 위해 확대된다. 2208에서는, 2204 또는 2206에서 바운드된 객체들에 종속적인 객체들이 식별되고, 메모리로 바운드되고, 현재 파티션에 추가된다. 아래에 파티션 확대에 대한 보다 구체적인 설명이 제공된다. 파티션 확대를 위한 프로세스는 "전파(propagation)"로 명명한다.
2210에서 현재 파티션 내의 모든 객체들에 대한 쓰기가 불가능하다면, 2212에서 현재 파티션이 생략되고, 그렇지 않다면 2214로 전환된다.
전술한 바와 같이, 두 객체 즉, 변환을 위해 선택된 한 객체와 선택되지 않은 다른 하나의 객체 사이에 외부 관계가 존재할 수 있다. 예를 들어, 어떤 의존 객체가 기하학적 변환을 위해 선택되었으나 이 의존 객체가 의존하는 객체(즉, 이 의존 객체의 선행 객체)가 변환을 위해 선택되지 않았다면, 이 선택된 객체는 외부 관계에 관련된다. 유사하게, 독립 객체가 기하학적 변환을 위해 선택되었으나 그 독립 객체의 하나 이상의 의존 객체가 변환을 위해 선택되지 않았다면, 이 선택된 객체는 외부 관계에 관련된다. 외부 관계들을 처리(handle)하기 위해, 몇가지 선택적이거나 대체적인 접근법들이 사용될 수 있다.
바람직한 실시 예에 있어서, 외부 관계는 깨어진다는 것은 객체들이 서로 단절된다는 것을 의미한다. 의존 객체에 대한 조치는 각 상황에서의 요구조건에 달려있다. 예를 들어, 어떤 경우에, 의존 객체가 자신의 선행 객체와의 관계없이 존재할 수 있다면, 이 의존 객체는 독립적으로 된다. 반면, 의존 객체가 자신의 선행 객체와의 관계없이 존재할 수 없다면, 이 의존 객체는 삭제된다. 다른 경우들에 있어서는, 상황 특수적인 요구조건들(domain specific requirements)에 의해 요구되듯이, 의존 객체는 다르게 처리된다. 2214에서는, 외부 관계들이 단절된다.
다른 실시 예에 있어서, 사용자에게는 변환될 객체들의 리스트에 선행 객체를 추가할 수 있는 기회가 주어질 수 있다. 다른 실시 예에 있어서, 선행 객체는, 사용자에게 알리거나 알리지 않은 상태에서, 변환될 객체들의 리스트에 자동적으로 추가될 수 있다. 기업 엔지니어링 시스템은 사용자가 선택할 수 있거나 관리자가 선택할 수 있는 매개변수를 포함할 수 있다.
2216에서는, 현재 파티션 내의 객체들이 변환된다. 주어진 파티션 내의 객체들은 특정 순서대로 변환될 수 있다. 현재 파티션 내의 모든 객체들이 성공적으로 변환된 후에, 동결된 객체들이 해제된다. 도 21의 2106에서 설명한 바와 같이, 변환된 객체들을 나타내는 데이터 구조들은 데이터베이스에 반영된다. 모든 동작들이 성공되면, 파티션의 객체에 대한 상태는 "변환됨(Transformed)"으로 설정된다.
<변환 그래프(Transform Graph)>
변환 그래프 데이터 구조가 각 파티션이 처리되는 동안 만들어져 사용될 수 있으며, 파티션에 대한 처리가 끝나면 이 데이터 구조에 대한 할당이 해제될 수 있다. 변환 그래프 데이터 구조는 파티션이 변환되는 동안 객체들에 대한 레퍼런스들과 이 객체들 간의 관계들을 저장한다. 도 23은 변환 그래프 데이터 구조(2300)의 하나의 실시 예에 대한 개념적인 다이어그램이다. 이 변환 그래프 데이터 구조(2300)는 두 부분 즉, 값 부분(2302)과 관계 부분(2304)을 포함한다.
도 24에 개시된 바와 같이, 값 부분(2302)은 개별적인 값 항목들의 배열을 포함한다. 각각의 값 항목은 객체를 나타낸다. 각각의 값 항목은 값 배열로의 인덱스(index)에 의해 고유하게 식별될 수 있다. 도 25에 개시된 바와 같이, 각각의 값 항목은 소스 파티션, 플래그들 및 객체 포인터를 포함한 몇개의 필드들을 포함한다. 소스 파티션은 대응하는 객체가 관련된 파티션을 식별케 한다. 소스 파티션의 가능한 값들은 선행(Predecessor), 현재(Current), 후행(Successor) 및 없음(None)이다. 객체 포인터는 객체가 메모리에 로드되고 나면 이 객체를 가리킨다.
표 5에 가능한 플래그들의 값들이 실려있다. 전술한 바와 같이, 변환 그래프 데이터 구조(2300)는 각각의 파티션에 대하여 만들어진다. 파티션의 모든 객체들에 대한 객체 식별자들은 변환 그래프 데이터 구조(2300) 내의 각각의 항목들로 입력된다. 이 객체 식별자들은 대응하는 객체들을 메모리에 로드하기 위해 즉, 객체들을 메모리에 바인드하기 위해 이용된다. 각각의 그러한 객체들에 대하여, 변환 플래그가 변환될 객체를 가리키도록 설정된다. 추가적으로, 각각의 그러한 객체에 대하여, 초기 플래그가 각각의 초기 객체에 대하여 설정된다.
변환(Transform)
초기(Initial)
선행자(Predecessor)
후행자(Successor)
변환 그래프의 관계 부분(도 23의 2304)도 항목들의 배열을 포함하고 있으며, 각각의 항목은 인덱스에 의해 고유하게 식별될 수 있다. 도 26에 개시된 바와 같이, 각각의 관계 항목은 두 객체 사이의 관계를 나타내고, 관계 포인터 및 관계 항목에 의해 표현되는 관계를 갖는 두 객체들에 대한 두 인덱스(출발지 인덱스(Origin Index), 목적지 인덱스(Destination Index))를 포함한다. 출발지 인덱스는 관계의 "출발지" 종단에 있는 객체에 대한 값 항목에 대해 값 배열 2302로의 인덱스를 포함한다. 목적지 인덱스는 관계의 "목적지" 종단에 있는 객체에 대한 값 항목에 대해 값 배열 2302로의 인덱스를 포함한다. 관계 포인터는 메모리에 로드된관계를 가리키는 포인터를 포함한다.
변환 그래프 데이터 구조(2300) 내의 객체 식별자들에 의해 표현되는 객체들의 선행 객체들과 후행 객체들을 포함하는 파티션들도 메모리에 바운드되고, 이 객체들에 대한 객체 식별자들은 변호나 그래프 데이터 구조(2300)에 추가된다. 각각의 그러한 객체에 대하여, 초기 플래그와 선행 또는 후행 플래그가 상황에 따라 설정된다. 그러나, 이 객체들은 현재 파티션 내의 객체들과 함께 변환되지는 않을 것이므로, 변환 플래그는 설정되지 않는다. 선행 객체들은 이미 이전의 몇몇 트랜잭션 즉, 이전의 파티션에서 변환되었고, 후행 객체들은 이어지는 몇몇 트랜잭션 즉, 이후의 파티션에서 변환될 것이다. 이 객체들에 대한 동결을 가능케하고 그밖의 다른 목적들을 위한 정보가 변환 그래프 데이터 구조(2300)에 저장된다.
초기에 변환 그래프 데이터 구조(2300)에 표현되는 객체들은 사용자에 의해 선택되는 설계 객체들이다. 그러나, 이 설계 객체들의 일부 또는 전부는 종속 객체들을 포함할 수 있다. 현재 파티션 내에서 변환될 객체들에 종속적인 객체들은 현재 파티션 내에서 함께 변환되어야 한다. (a) 이 종속 객체들에 대한 쓰기 접근이 가능한지 여부를 확인하고, (b) 다른 객체들과의 외부 관계들을 식별하여 가능하다면, 이 외부 관계들을 단절시키고, (c) 종속 객체들을 변환하는 것을 가능케하기 위하여, 이 종속 객체들은 메모리에 바운드되고 이 종속 객체들에 대한 정보는 변환 그래프 데이터 구조(2300)에 추가된다.
"전파(propagation)"로 명명된 프로세스에서, 종속 객체들이 변환 그래프 데이터 구조(2300)에 추가된다. 변환 그래프 데이터 구조(2300) 내의 객체들의 모든 관계들이 추가될 종속 객체 식별을 위해 탐색된다. 각각의 유형의 관계는 변환 그래프 데이터 구조가 어떻게 확장되는지를 정의하는 메타데이터를 포함한다. 설계 객체를 생성하는 각각의 태스크(도 3의 302-306)는 객체들이 관련될 수 있는 관계들 및 이 관계들에 대한 메타데이터 설정을 담당한다. 코어 플랫폼(도 3의 301)은 이 메타데이터를 사용한다. 이와 같이 하여, 코어 플랫폼(301)은 이 관계들에 대한 예견지식(foreknowledge) 또는 설계 객체들에 대한 특정 정보로 구성될 필요가 없다.
변환 그래프(2300)의 관계 부분(2304) 내의 각각의 관계 항목은 객체가 클래스를 갖는 것과 매우 유사한 유형을 갖는다. 관계 정의라고도 명명되는 각각의 관계 유형은 일련의 속성들을 갖는다. 이 속성들이 표 6에 요약되어 있다.
순방향 변환 확장
(Expands Transform Forward)
만약 현재 객체가 관계의 출발지에 있다면, 이 속성은 관계의 목적지 종단의 객체가 변환 그래프에 추가될지 여부를 제어한다.
역방향 변환 확장
(Expands Transform Backward)
만약 현재 객체가 관계의 목적지에 있다면, 이 속성은 관계의 출발지 종단의 객체가 변환 그래프에 추가될지 여부를 제어한다.
표 7은 표 6에 실린 속성들에 대한 가능한 값들을 요약한다.
확장 없음
(No Expand)
타겟 객체는 변환 동작에 관련되지 않는다.
내부 객체로의 확장
(Expand to Internal Object)
타겟 객체는 현재 설계 객체의 종속 객체이다.
외부 객체로의 확장
(Expand to External Object)
타겟 객체는 다른 설계 객체의 일부이다.
연결 객체로의 확장
(Expand to Connection Object)
타겟 객체는 두 설계 객체들이 서로 연결되었을때에만 존재하는 연결 객체이다.
만약 변환 플래그가 설정되면, 표 8에 따라 전파가 제어된다.
관계 정의에 대한 변환 속성 타겟 객체를 그래프에 추가? 변환 플래그 설정?
확장 없음
(No Expand)
No No
내부 객체로의 확장
(Expand to Internal Object)
Yes Yes
외부 객체로의 확장
(Expand to External Object)
Yes No
연결 객체로의 확장
(Expand to Connection Object)
Yes No*
연결 객체들은 어떤 설계 객체에도 속하지 않는다. 대신에, 연결 객체들은 설계 객체들을 연결하기 위한 목적으로 이들 사이에 존재한다. 연결 객체들은 두 설계 객체들을 연결하기 위한 목적으로 생성된다. 이들은 두 설계 객체들이 단절되었을때 삭제된다. 연결 객체들은 내부적이지도 않고 외부적이지도 않다. 표 8의 별표는 연결 객체들에 대한 이러한 특별한 처리를 가리킨다.
만약 선행 또는 후행 플래그가 플래그 내에설정되면, 표 9에 따라 전파가 제어된다.
관계 정의에 대한 변환 속성 타겟 객체를 그래프에 추가? 현재 객체와 동일 플래그 설정?
확장 없음
(No Expand)
No No
내부 객체로의 확장
(Expand to Internal Object)
Yes Yes
외부 객체로의 확장
(Expand to External Object)
No No
연결 객체로의 확장
(Expand to Connection Object)
Yes Yes
타겟 객체가 변환 그래프 데이터 구조(2300)에 추가되면, 현재 객체로부터 타겟 객체로의 관계도 또한 변환 그래프 데이터 구조(2300)에 추가된다.
주어진 객체에 대해 변환 그래프 데이터 구조(2300)를 통해 여러 관계 경로들이 있을 수 있더라도, 객체는 변환 그래프 데이터 구조에 두번 이상 추가되지는 않는다. 그러나, 한 객체로의 두번째 또는 차후의 경로는 플래그를 업데이트 할 수 있다. 예를 들어, 한 객체가 변환 그래프 데이터 구조(2300)에 처음으로 추가되었을 때, 그 객체의 플래그는 설정되지 않을 수 있다. 그러나, 그 이후의 전파 상황에서는, 동일한 객체가 선행 또는 후행 객체로 발견될 수 있다. 그러한 상황에서는, 경우에 따라, 선행 및/또는 후행 플래그가 설정된다.
전술한 바와 같이, 현재 파티션의 객체들의 종속 객체들이 메모리에 바운드되고 종속 객체에 대한 접근 제어가 체크된다. 만약, 어떤 종속 객체가 읽기 전용인 것으로 밝혀지면, 그 파티션은 읽기 전용 객체를 포함하는 것으로 표시되고, 그 파티션에 대한 처리가 끝나고, 읽기 전용 객체로 인한 실패(Failed Due to Read-Only Object)라는 트랜잭션 상태가 파티션에 대하여 설정된다.
외부 객체로의 확장 또는 연결 객체로의 확장에 대한 변환 전파 속성 값은 관계가 설계 객체들 사이를 가로지르고 단절될 가능성이 크다는 사실을 가리킨다. 관계의 두 설계 객체 중의 하나만이 변환을 위해 선택된다면, 관계는 단절되어야 한다. 전술한 바와 같이, 다른 실시 예에서는, 다른 유형의 처리들이 제공될 수 있다.
전술한 바와 같이, 인덱스 필드는 변환 그래프 데이터 구조(2300) 내의 출발지 객체의 항목과 목적지 객체의 항목에 대한 인덱스들을 포함한다. 관계가 단절되어야 하는지를 결정하기 위해서는, 관계의 양 종단의 플래그 값들이 검사되어야 한다. 만약 변환 플래그가 관계의 한 종단에 설정되면, 그에 대응되는 객체가 현재 파티션에 대한 변환 중에 변환된다. 만약 변환, 선행 및 후행 플래그 중 어떤 것도 이 관계의 다른 종단에 설정되지 않는다면, 가장 먼 종단 객체가 아직 변환되지 않았으며 그것은 현재 동작중에는 변환되지 않을 것이다. 그러한 관계는 단절되어야 한다. 이 규칙들이 표 10에 요약되어 있다.
If one object is to be transformed and the related object is: Then:
변환(Transformed) 관계를 단절시키지 마시오.
선행(Predecessor) 이 객체는 이전 트랜잭션에서 이미 변환되었으므로 단절되어서는 안된다.
후행(Successor) 이 객체는 후속 트랜잭션에서 변환될 예정이므로 단절되어서는 안된다.
변환, 선행, 후행 아님(Not Transformed, Not Predecessor and Not Successor) 이 객체는 현재 동작중에는 변환되지 않을 것이므로, 이 관계는 단절되어야 한다.
전술한 바와 같이, 객체 클래스들은 태스크(도 3의 302-306)에 의해 정의된다. 이와 같이, 태스크(302-306)는 객체들을 변환하는 방법들을 정의한다. 변환 그래프 데이터 구조(2300) 내의 변환으로 플래그된 각각의 객체에 대하여, 그 객체에 대한 변환 방법이 호출된다.
의존성을 계산하기 전에, 후행 파티션들 내의 객체들 즉, 후행자로 플래그된 객체들은 현재 파티션 내의 객체들이 변환중인 것으로 인하여 재계산되는 것을 방지하기 위하여 동결된다. 이어지는 트랜잭션들에서, 후행 파티션들 내의 객체들은 변환될 것이고, 그 변환의 일부로서, 객체 값들이 재계산될 것이다. 각각의 객체는 그 객체를 동결시키거나 동결을 해제하기 위한 방법을 실행한다.
객체들이 변환된 이후에는, 기능적 의존성들이 계산된다. 모든 수정된 객체들에 대한 의존 기능들이 호출된다. 이 기능들 중의 어떤 것은 현재 파티션 내의 다른 (의존) 객체들을 업데이트한다. 이는 현재 파티션 내의 객체들에 대한 쓰기가 가능하기 때문에, 수행될 수 있다. 다른 의존 기능들은 후행 파티션들 내의 객체들을 업데이트하지만, 후행 객체들은 동결된 상태이다. 결과적으로, 현재 파티션과 비교하여 상대적으로, 후행 파티션들 내의 이 객체들은 업데이트되지 않은("out of date") 상태이다. 수행 예정 기록(“to do” record)이 각각의 이러한 업데이트되지 않은 객체에 대하여 생성된다. 이러한 모든 변화들이 데이터베이스(도 3의 316)에 반영된다.
전형적으로, 업데이트되지 않은 객체들은 현재 파티션에 대한 작업이 완료된 직후에 파티션에서 변환된다. 이와 같이, 수행 예정 기록들은 이들이 생성된 직후 전형적으로 처리되고 삭제된다. 그러나, 만약 큰 기하학적 변환이 사용자에 의한 취소 제어 동작 입력 또는 하드웨어 또는 소프트웨어 고장에 의해 중단되면, 이 수행 예정 기록들은 동작을 재개할 때, 어떤 동작들이 수행되어야 하는지를 가리킨다.
전술한 바와 같이, 동작 객체가 동작 재개를 가능케하기 위하여 생성된다. 추가적으로, 객체들의 소스 리스트가 구획된(partitioned) 이후, 파티션 객체가 각각의 파티션을 나타내기 위해 생성된다. 관계들이 동작 객체와 파티션 객체들 사이에 수립된다. 추가적으로, 관계들이 각각의 파티션 객체와 그것의 선행 및 후행 파티션의 객체들 사이에 각각 수립된다. 각각의 파티션을 처리하는 동안, 해당하는 파티션 객체는 메모리에 바운드되고, 그것의 트랜잭션 결과 속성 값들(values of its Transaction Result property)은 표 11에 요약된 바와 같이 업데이트된다.
트랜잭션 결과값 설명
시도하지 않음 각 파티션에 대한 기본값임.
파티션이 업데이트되지 않는다면, 이 값은 유지됨.
성공 이 파티션은 성공적으로 변환되었음.
선행자가 변환되지 않음 하나 이상의 선행 파티션들이 성공적으로 변환되지 않았음.
그러므로, 이 파티션은 변환되지 않았음.
읽기 전용 객체 이 파티션은 하나 이상의 읽기 전용 객체들을 포함함.
그러므로, 이 파티션은 변환되지 않았음.
실패 이 파티션에 대한 변환을 시도하는 중에 고장이 생겼음.
이 고장은 소프트웨어 결함이나 데이터 변형으로 유발되었을 수 있음.
만약 실패한 선행 파티션이 발견되거나, 현재 파티션에서 읽기 전용 객체가 발견되면, 그에 해당하는 트랜잭션 결과값이 표 11에 따라 설정된다. 반면, 현재 파티션 내의 객체들이 성공적으로 변환되면, 트랜잭션 결과값은 성공(Succeeded)으로 설정된다. 수정된 객체들이 데이터베이스에 성공적으로 반영되면, 이 파티션에 대한 처리는 완료된 것으로 간주된다. 그러나, 데이터베이스 반영에 실패하면, 트랜잭션 결과값은 고장으로 설정된다.
만약 큰 기하학적 변환이 성공적으로 완료되는 데에 실패하면, 이 동작과 파티션 객체들은 동작의 현재 상태를 기록한다. 전형적으로, 동작을 재시작하기 전에, 사용자는 고장난 서버를 재기동하거나 읽기 전용 객체들을 쓰기 가능하게 하기 위해 수정하는 갓과 같은 교정 조치를 취할 수 있다. 재시작은 새로운 기하학적 변환이 개시되는 것과 같은 방식으로 개시될 수 있다. 새로운 기하학적 변환을 시작시키는 소프트웨어는 이전 변환 동작의 상태를 확인하기 위하여 데이터베이스에 질의하는 식으로 즉, 동작과 파티션 객체들을 질의하는 식으로 시작된다. 각각의 변환 동작은 호출 사용자(invoking user)에 의해 명칭 필드(도 7의 704)를 통해 명명된다. 기하학적 변환을 개시하기 위한 사용자 인터페이스는 이전에 시작된 동작들의 리스트를 표시할 수 있으며, 사용자는 재시작을 위해 실패한 동작을 선택할 수 있다.
동작이 재시작되면, 그 동작 객체와 재시작된 동작의 모든 파티션 객체들이 메모리에 바운드되며, 첫번째로 처리되지 않은 파티션에 대한 처리가 재개된다. 성공 또는 실패의 트랜잭션 결과값을 갖는 파티션들은 생략된다. 다른 파티션들은 전술한 바와 같이 처리된다. 실패 파티션은 그 데이터와 함께 문제를 가리키며, 이 문제는 사용자가 제어할 수 있는 문제가 아니다. 읽기 전용 데이터와 같이 사용자에 의해 제어될 수 있는 문제들은 실패로 표시되지 않는다. 실패한 동작들은 사용자들에 의해 교정될 수 없으므로, 실패한 파티션이 다시 처리되도록 허용하는 것은 의미가 없다.
동작 및 파티션 객체들은 필요한 동안 이력에 대한 기록(historical record)을 제공하기 위하여 대응하는 동작이 성공적으로 완료된 이후에도 데이터베이스에 보존되며, 그 이후에는 객체들이 삭제될 수 있다.
다음의 가상의 예는 전술한 장치와 방법들의 동작을 보여준다. 이 예는 설명의 단순성을 위하여 임의의 작은 수의 객체들을 포함한다. 그러나 이에 포함된 원칙들은 큰 수의 객체들에도 적용될 수 있다.
이 예는 도 27에 개략적으로 개시된 바와 같이, 펌프(Pump), 파이프(Pipe), 기둥(Column), 빔(Beam) 및 파이프 행거(Pipe Hanger)의 다섯개의 상호 관련된 설계 객체들을 포함한다. 파이프는 펌프의 노즐(Nozzle)에 연결되어 있다. 이 파이프는 파이프 행거에 의해 지지된다. 파이프 행거는 빔에 부착되어 있다. 빔은 기둥에 연결되어 있다. 펌프를 제외하고는, 사용자에 의해 특정된 이 모든 객체들이 100미터 이동될 것이라고 가정한다. 또한 사용자가 모든 객체들에 대하여 쓰기 접근 권한을 가진 것으로 가정한다.
변환 프로세스는 각각의 설계 객체의 모든 선행자들을 식별하는 것을 포함한다. 펌프는 파이프의 선행자이다. 그러나, 펌프가 움직이지 않을 것이기 때문에, 펌프는 선행자 그래프에 나타나지 않을 것이다. 기둥은 연결된 빔의 선행자이다. 빔과 파이프는 모두 파이프 행거의 선행자이다.
선행자 그래프는 각각의 설계 객체(파이프 행거 등)에 대한 선행자들의 리스트로부터 구성된다. 도 28은 도 27의 객체들에 대응하는 선행자 그래프의 개념적인 표현이다. 화살표들은 각각의 설계 객체에 대한 선행자들을 가리킨다.
도 29에 개시된 바와 같이, 선행자들이 후행자들보다 먼저 나타나도록, 선행자 그래프의 노드들은 선형 순서로 정렬된다. 그후 파티션들은 특정된 순서대로 처리된다. 각각의 파티션에 대한 처리가 완료되었을 때, 수정된 객체들이 데이터베이스에 반영된다. 각각의 파티션은 분리된 원자 트랜잭션(atomic transaction)으로 변환된다. 각각의 트랜잭션이 상세히 설명될 것이다.
트랜잭션 1은 파티션 1의 객체들을 이동시키는 것을 포함하고, 도 30에 요약되어 개념적으로 개시된 다음의 동작들을 포함한다. 이와 같이, 파티션 1은 트랜잭션 1 동안 현재 파티션이다. 현재 파티션으로부터의 시초 객체(기둥)와 후행 파티션으로부터의 시초 객체(빔)가 메모리에 로드되고, 변환 그래프에 추가된다. 변환 그래프는 전파(propagation)에 의해 확장된다. 시초 객체들(기둥과 빔)의 전파는 종속 객체들(기둥에 대한 엔드 포트 1, 엔드 포트 2 , 물리 부분 및 빔에 대한 엔드 포트 1, 엔드 포트 2 , 물리 부분)을 메모리와 변환 그래프에 바인드한다. 외부 관계는 식별되지 않는다. 그러므로, 어떤 관계도 단절되지 않는다. 기둥과 그 종속 객체들(엔드 포트 1, 엔드 포트 2 및 물리 부분)은 변환된다(동쪽으로 100미터 이동). 후행 파티션(이 경우, 단 하나의 후행 파티션 즉, 파티션 2) 내의 객체들은 동결된다. 이와 같이, 빔 객체와 그 종속 객체들(엔드 포트 1, 엔드 포트 2 및 물리 부분)은 동결된다. 기능적 의존성들이 계산된다. 그러나, 빔과 그 종속 객체들은 동결된다. 그러므로, 빔과 그 종속 객체들은 재계산되지 않는다(not re-computed). 수정된(변환된) 기둥 객체 및 그 종속 객체들은 데이터베이스에 반영된다.
트랜잭션 2는 파티션 2의 객체들을 이동시키는 것을 포함하고, 도 31에 요약되어 개념적으로 개시되어 있다. 파티션 2는 트랜잭션 2 동안 현재 파티션이다. 현재 파티션으로부터의 시초 객체(빔)와 선행 파티션(파티션 1)으로부터의 시초 객체(기둥) 및 후행 파티션(파티션 4)으로부터의 시초 객체(파이프 행거)가 메모리에 로드되고, 변환 그래프에 추가된다. 파이프 행거 객체가 현재 파티션의 객체(빔)에 의존하기 때문에, 후행 객체는 파티션 4인 것에 주목해야 한다. 변환 그래프는 전파에 의해 확장된다. 시초 객체들(빔, 기둥 및 파이프 행거)의 전파는 종속 객체들(기둥에 대한 엔드 포트 1, 엔드 포트 2 , 물리 부분, 빔에 대한 엔드 포트 1, 엔드 포트 2 , 물리 부분, 페이스 포트 및 파이프 행거에 대한 구조 포트, 파트 1, 파트 2 , 파이핑 포트)을 메모리와 변환 그래프에 바인드한다. 외부 관계는 식별되지 않는다. 그러므로, 어떤 관계도 단절되지 않는다. 빔과 그 종속 객체들(엔드 포트 1, 엔드 포트 2 , 물리 부분 및 페이스 포트)은 변환된다(동쪽으로 100미터 이동). 후행 파티션(이 경우, 단 하나의 후행 파티션 즉, 파티션 4) 내의 객체들은 동결된다. 이와 같이, 파이프 행거 객체와 그 종속 객체들(구조 포트, 파트 1, 파트 2, 파이핑 포트)은 동결된다. 기능적 의존성들이 계산된다. 그러나, 파이프 행거와 그 종속 객체들은 동결된다. 그러므로, 파이프 행거와 그 종속 객체들은 재계산되지 않는다(not re-computed). 수정된(변환된) 빔 객체 및 그 종속 객체들은 데이터베이스에 반영된다.
트랜잭션 3은 파티션 3의 객체들을 이동시키는 것을 포함하고, 도 32에 요약되어 개념적으로 개시된 다음의 동작들을 포함한다. 파티션 3은 트랜잭션 3 동안 현재 파티션이다. 현재 파티션으로부터의 시초 객체(파이프)와 후행 파티션(파티션 4)으로부터의 시초 객체(파이프 행거)가 메모리에 로드되고, 변환 그래프에 추가된다. 현재 파티션은 선행 파티션을 가지지 않는다. 변환 그래프는 전파(propagation)에 의해 확장된다. 시초 객체들(파이프와 파이프 행거)의 전파는 종속 객체들(파이프에 대한 엔드 피쳐(End Feature), 플랜지(Flange), 연결(Connection), 직선 피쳐(Straight Feature), 직선 파이프(Straight Pipe), 엔드 피쳐(End Feature), 파이프 행거에 대한 파이핑 포트, 파트 1, 파트 2, 구조 포트)을 메모리와 변환 그래프에 바인드한다. 펌프의 펌프 노즐과 파이프의 연결 객체 사이의 관계(3240)는 외부 관계로 식별되므로, 단절된다. 파이프와 그 종속 객체들(엔드 피쳐, 플랜지, 연결, 직선 피쳐, 직선 파이프 및 엔드 피쳐)은 변환된다(동쪽으로 100미터 이동). 후행 파티션(파티션 4) 내의 객체들은 동결된다. 이와 같이, 파이프 행거 객체와 그 종속 객체들(구조 포트, 파트 1, 파트 2 및 파이핑 포트)은 동결된다. 기능적 의존성들이 계산된다. 그러나, 파이프 행거와 그 종속 객체들은 동결된다. 그러므로, 파이프 행거와 그 종속 객체들은 재계산되지 않는다(not re-computed). 수정된(변환된) 파이프 객체 및 그 종속 객체들은 데이터베이스에 반영된다.
트랜잭션 4는 파티션 4의 객체들을 이동시키는 것을 포함하고, 도 33에 요약되어 개념적으로 개시되어 있다. 파티션 4는 트랜잭션 4 동안 현재 파티션이다. 현재 파티션으로부터의 시초 객체(파이프 행거)와 선행 파티션(파티션 2 및 파티션 3)으로부터의 시초 객체(빔과 파이프)가 메모리에 로드되고, 변환 그래프에 추가된다. 현재 파티션은 후행 파티션을 가지지 않는다. 변환 그래프는 전파에 의해 확장된다. 시초 객체들(파이프 행거, 빔 및 파이프)의 전파는 종속 객체들(파이프 행거에 대한 파이핑 포트, 구조 포트, 파트 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에서, 수행 예정 항목(to-do item)이 생성된다.
처리할 파티션들이 더 있으면, 3428에서 3424로 전환되고, 없다면 3430으로 전환된다. 3430에서는, 일시적으로 읽기 전용으로 만들어진 객체들 중에서 어떤 것이라도 변환되었다면, 3434로 전환되어, 그 객체에 대응하는 수행 예정 항목이 삭제된다.
도 35는 본 발명의 일 실시 예에 따라, 객체 지향 기업 엔지니어링 시스템 내에서 표현되는 복수의 객체들을 기하학적으로 변환하기 위한 시스템의 개념적인 블록 다이어그램이다. 이 복수의 객체들 중에서 적어도 하나는 다른 객체들의 선행자이다. 시스템은 사용자로부터의 제1 입력을 받아들이도록 구성된 사용자 인터페이스(3500)를 포함한다. 이 입력은 기하학적으로 변환될 복수의 객체들을 선택한다. 또한 사용자 인터페이스(3500)는 사용자로부터 선택된 객체들에 대해 수행될 기하학적 변환의 유형을 지시하는 제2 입력을 받아들이도록 구성된다. 식별 모듈(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)를 생성하도록 구성된다.
전정 모듈(pruning module, 3522)은 선택된 객체들 중 어떤 것과 관련된 적어도 하나의 외부 객체를 식별하도록 구성된다. 이러한 전정 모듈(3522)은 식별된 외부 객체와 선택된 객체 사이의 관계를 단절한다.
객체 데이터베이스(3518), 파티션 리스트(3505) 및 선행자 그래프(3520)는 분리된 데이터베이스들로 표현되었으나, 이 요소들은 관계형 데이터베이스 내의 테이블들, 내장 메모리 데이터 구조들, 비관계형 데이터베이스 파일들 등의 가능한 적당한 형식으로 저장될 수 있다. 또한, 이 요소들의 일부 또는 전부는 단일 데이터 저장소에 결합되거나(combined), 필드들, 포인터들, 값들 등의 다른 요소들로 구현될 수 있다.
이상에서 설명한 방법들과 시스템들은, 프로세서를 포함하는 컴퓨터 시스템에 의해, 메모리에 저장된 적절한 명령들을 실행시킴으로써, 수행되고 구현될 수 있다. 매우 많은 수의 객체들을 기하학적으로 변환하기 위한 장치는 메모리에 저장된 명령들에 의해 제어되는 프로세서를 포함하는 것으로 설명되었다. 이 메모리는 제어 소프트웨어와 다른 명령들과 데이터를 저장하기에 적합한, RAM(random access memory), ROM(read-only memory), 플래시 메모리, 기타 다른 메모리 또는 이들의 조합일 수 있다. 변환 방법과 장치에 의해 수행되는 기능들 중의 일부가 플로우차트들 및/또는 블록 다이어그램들과 관련하여 설명되었다. 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 플로우차트들이나 블록 다이어그램들의 모든 블록 또는 각 블록의 일부 또는 블록들의 조합의 기능들, 동작들, 결정들 등이 컴퓨터 프로그램 명령들, 소프트웨어, 하드웨어, 펌웨어 또는 이들의 조합으로 구현될 수 있다는 것을 용이하게 알 수 있을 것이다. 또한, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 기능들을 정의하는 명령들과 프로그램들은 많은 형태로 프로세서에 전달될 수 있다는 것을 용이하게 알 수 있을 것이다. 한정되지는 않으나 상기 형태는 실재하고 비일시적이며 쓰기가 금지된 저장 매체(즉, ROM과 같은 컴퓨터 내의 읽기 전용 메모리 장치 또는 CD-ROM이나 DVD 디스크와 같은 컴퓨터 I/O 장치에 의해 읽을 수 있는 장치들)에 영구적으로 저장된 정보 또는 실재하고 비일시적이고 쓰기 가능한 저장 매체(즉, 플로피 디스크, 소거 가능한 플래시 메모리 및 하드 드라이브)에 변경 가능하게 저장된 정보 또는 유선 또는 무선 컴퓨터 네트워크를 포함하는 통신 매체를 통해 컴퓨터에 전달된 정보를 포함할 수 있다. 추가적으로, 본 발명이 소프트웨어에 구현되는 과정에서, 본 발명을 실행하기 위하여 필요한 기능들은 부분적으로 또는 전체적으로, 조합 로직(combinatorial logic), ASICs(Application Specific Integrated Circuits), FPGAs(Field-Programmable Gate Arrays) 또는 다른 하드웨어 또는 하드웨어, 소프트웨어 및/또는 펌웨어 요소들의 조합과 같은 펌웨어 및/또는 하드웨어 요소들을 사용하여 선택적으로 또는 대체적으로 구현될 수 있다.
이상의 실시 예들을 통해 본 발명이 설명되었으나, 이상에 개시된 본 발명의 개념들에서 벗어나지 않으면서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자(당업자)에 의해, 예시된 실시 예들에 대한 수정 및 변형이 가능하다는 사실이 이해될 것이다. 예를 들어, 변환 메카니즘의 몇몇 측면들이 플로우차트를 참조하여 설명되었지만, 당업자는 이 플로우 차트의 각 블록의 전부 또는 일부, 또는 블록들의 조합의 기능들, 동작들, 결정들 등이 결합되거나, 분리된 동작들로 분리되거나, 기차 다른 순서에 따라 수행될 수 있다는 사실을 용이하게 이해할 수 있을 것이다. 또한, 실시 예들이 여러 가지의(various) 예시적인 데이터 구조들과 관련하여 설명되었지만, 당업자는 시스템이 다양한(a variety of) 데이터 구조들을 이용하여 구현될 수 있다는 것을 인식할 수 있을 것이다. 뿐만 아니라, 개시된 측면들과 이 측면들의 부분들은 이상에서 개시되지 않은 방식들로 결합될 수 있다. 따라서, 본 발명은 개시된 실시 예들로 한정되는 것으로 여겨져서는 안된다.
3500: 사용자 인터페이스
3502: 식별 모듈
3504: 파티셔닝 모듈
3506: 변환 모듈
3508: 동결 모듈
3510: 수행 예정 리스트
3512: 클린업 모듈
3514: 전파 모듈
3516: 처리 제어 모듈
3518: 객체 데이터베이스
3520: 선행자 그래프
3522: 전정 모듈

Claims (21)

  1. 복수의 객체-지향 기업 엔지니어링 시스템(object-oriendted enterprise engineering system) 내에서 표현되는 복수의 객체들을 기하학적으로 변환하기 위한 컴퓨터 실행 방법으로서, 상기 복수의 객체들 중 적어도 하나는 상기 복수의 객체들 중 다른 것의 선행자이며, 프로세서를 포함하는 상기 방법은,
    사용자로부터 기하학적으로 변환될 상기 복수의 객체들을 선택하는 입력과 상기 선택된 객체들에 대해 수행될 기하학적 변환의 유형에 대한 지시를 받아들이는 단계;
    각각의 선택된 객체에 대하여 상기 선택된 객체의 임의의(any) 선행 객체들을 상기 복수의 객체들 중에서 자동적으로 식별하는 단계, 여기서, 상기 선택된 객체의 적어도 하나의 매개변수의 값은 상기 임의의 선행 객체들의 적어도 하나의 매개변수에 기능적으로 의존적이고; 및
    임의의 주어진 객체에 대해 상기 주어진 객체의 선행 객체들 각각이 상기 주어진 객체가 속한 파티션과 선행 파티션 중에서 적어도 하나의 파티션에 속하도록, 상기 선택된 객체들을 복수의 순서화된 객체들의 파티션들로 자동적으로 분할하는 단계를 포함하는, 컴퓨터 실행 방법.
  2. 제1항에 있어서,
    상기 기하학적 변환의 유형에 대한 상기 지시에 따라 상기 객체들을 파티션 순서대로 객체들의 파티션마다 기하학적으로 변환하는 단계를 더 포함하는, 컴퓨터 실행 방법.
  3. 제2항에 있어서,
    상기 객체들을 주어진 파티션에서 기하학적으로 변환하는 동안,
    상기 파티션 내의 각 객체의 임의의 후행 객체를 일시적으로 읽기 전용으로 만드는 단계; 및
    상기 파티션 내의 각 객체의 임의의 선행 객체를 일시적으로 읽기 전용으로 만드는 단계를 포함하는, 컴퓨터 실행 방법.
  4. 제3항에 있어서,
    일시적으로 읽기 전용으로 만들어진 각 객체에 대해, 대응 수행 예정 항목(to-do item)을 생성하는 단계; 및
    상기 일시적으로 생성된 읽기 전용 객체들 중에서 임의의 하나라도 이후에 변환되는 경우, 상기 대응 수행 예정 항목을 제거하는 단계를 포함하는, 컴퓨터 실행 방법.
  5. 제2항에 있어서,
    상기 객체들을 주어진 파티션에서 기하학적으로 변환하는 동안,
    상기 주어진 파티션에 속한 상기 객체들의 임의의 종속 객체들을 식별하는 단계;
    상기 식별된 종속 객체들을 상기 주어진 파티션에 추가하는 단계; 및
    상기 추가된 종속 객체들을 상기 기하학적 변환의 유형에 대한 지시에 따라 기하학적으로 변환하는 단계를 포함하는, 컴퓨터 실행 방법.
  6. 제1항에 있어서,
    파티션 순서대로 상기 파티션들 중에서 적어도 2개를 처리하는 단계를 더 포함하고,
    상기 처리하는 단계는
    상기 파티션에 관한 정보를 저장하는 단계; 및
    상기 파티션에 속한 객체들을 상기 기하학적 변환의 유형에 대한 지시에 따라, 다음 파티션을 처리하기 전에, 기하학적으로 변환하는 단계를 포함하고,
    상기 저장되는 정보는 상기 파티션에 속한 객체들을 기하학적으로 변환하는 것을 재시작하는데 충분한 정보를 포함하는, 컴퓨터 실행 방법.
  7. 제1항에 있어서,
    상기 선택된 객체들을 복수의 순서화된 객체들의 파티션들로 자동적으로 분할하는 단계는 각각의 선택된 객체를 상기 선택된 객체의 선행 객체들에 연관시키는 선행자 그래프를 생성하는 단계를 포함하는, 컴퓨터 실행 방법.
  8. 제1항에 있어서,
    상기 선택된 객체들 중 임의의 것과 관련된 적어도 하나의 외부 객체를 식별하는 단계; 및
    식별된 외부 객체와 상기 선택된 객체 사이의 관계를 단절시키는 단계를 더 포함하는, 컴퓨터 실행 방법.
  9. 복수의 객체들 중에서 적어도 하나가 다른 객체들의 선행자인 객체 지향 기업 엔지니어링 시스템에서 표현되는 복수의 객체들을 기하학적으로 변환하기 위한 시스템으로서,
    객체-지향 엔터프라이즈 엔지니어링 시스템내의 표현되는 복수의 객체들을 기하학적으로 변환하기 위한 시스템으로서, 상기 복수의 객체들 중 적어도 하나는 상기 복수의 객체들 중 다른 것의 선행자이며, 상기 시스템은:
    사용자로부터 기하학적으로 변환될 복수의 객체들을 선택하는 제1 입력을 받아들이고, 상기 사용자로부터 상기 선택된 객체들에 대해 수행될 기하학적 변환의 유형을 지시하는 제2 입력을 받아들이도록 구성된 사용자 인터페이스;
    상기 사용자 인터페이스에 결합되어 있으며, 각각의 선택된 객체에 대하여 상기 선택된 객체에 대응하는 임의의 선행 객체들을 자동적으로 식별하도록 구성된 식별 모듈, 여기서, 상기 선택된 객체의 적어도 하나의 매개변수의 값은 상기 선행 객체들의 적어도 하나의 매개변수에 기능적으로 의존적이고; 및
    상기 식별 모듈에 결합되어 있으며, 임의의 주어진 객체에 대해 상기 주어진 객체의 선행 객체들 각각이 상기 주어진 객체가 속한 동일한 파티션과 선행 파티션 중에서 적어도 하나의 파티션에 속하도록, 상기 선택된 객체들을 복수의 순서화된 객체 파티션들로 자동적으로 분할하도록 구성된 파티셔닝 모듈을 포함하는, 시스템.
  10. 제9항에 있어서,
    상기 파티셔닝 모듈에 결합되어 있으며, 상기 기하학적 변환의 지시된 유형에 따라 상기 객체들을 파티션 순서대로 객체들의 파티션마다 기하학적으로 변환하도록 구성된 변환 모듈을 더 포함하는, 시스템.
  11. 제10항에 있어서,
    상기 변환 모듈에 결합되어 있으며, 파티션 별 원칙(on a per-partition basis)에 따라,
    상기 파티션 내의 각 객체의 임의의 후행 객체를 일시적으로 읽기 전용으로 만들고,
    상기 파티션 내의 각 객체의 임의의 선행 객체를 일시적으로 읽기 전용으로 만들도록 구성된 동결(freezing) 모듈을 더 포함하는, 시스템.
  12. 제11항에 있어서,
    상기 동결 모듈은, 일시적으로 읽기 전용으로 만들어진 각각의 객체에 대하여, 대응 수행 예정 항목을 생성하도록 구성되고,
    상기 변환 모듈에 결합되어 있으며, 일시적으로 읽기 전용으로 만들어진 객체들 중에서 임의의 것이 이후에 변환되는 경우, 상기 대응 수행 예정 항목을 제거하도록 구성된 클린업(clean-up) 모듈을 더 포함하는, 시스템.
  13. 제10항에 있어서,
    상기 식별 모듈에 결합되어 있으며, 각 파티션에 대하여, 상기 파티션에 속한 상기 객체들의 임의의 종속 객체들을 식별하고, 식별된 종속 객체들을 상기 파티션에 추가하도록 구성된 전파(propagation) 모듈을 더 포함하고,
    상기 변환 모듈은 상기 추가된 종속 객체들을 상기 기하학적 변환의 지시된 유형에 따라 기하학적으로 변환하도록 구성되어 있는, 시스템.
  14. 제9항에 있어서,
    상기 변환 모듈에 결합되어 있으며, 파티션 순서대로 상기 파티션들 중에서 적어도 2개를 처리하도록 구성된 처리 제어 모듈을 더 포함하고,
    상기 처리 제어 모듈은, 각 파티션에 대하여,
    상기 파티션에 대한 정보를 저장하도록 구성되고, 여기서, 상기 저장되는 정보는 상기 파티션에 속한 객체들을 기하학적으로 변환하는 것을 재시작하는데 충분한 정보를 포함하고,
    다음 파티션을 처리하기 전에, 상기 변환 모듈이 상기 기하학적 변환의 지시된 유형에 따라 상기 파티션에 속한 상기 객체들을 기하학적으로 변환시키도록 구성되어 있는, 시스템.
  15. 제9항에 있어서,
    상기 파티셔닝 모듈은 각각의 선택된 객체를 상기 선택된 객체의 모든 선행 객체들에 연관시키는 선행자 그래프를 생성하도록 구성되어 있는, 시스템.
  16. 제9항에 있어서,
    상기 선택된 객체들 중 임의의 것과 관련된 적어도 하나의 외부 객체를 식별하고,
    상기 식별된 외부 객체와 상기 선택된 객체 사이의 관계를 단절시키도록 구성된 전정(pruning) 모듈을 더 포함하는, 시스템.
  17. 객체-지향 기업 엔지니어링 시스템 내에 표현되는 복수의 선행 및 후행 객체들을 복사하기 위한 컴퓨터 시스템의 사용을 위한 컴퓨터 프로그램 제품이며, 각각의 후행 객체는 선행 객체와 선행 관계를 가지며, 상기 컴퓨터 프로그램 제품은:
    컴퓨터 명령들이 저장된 비일시적인 컴퓨터 판독가능 매체를 포함하고,
    프로세서에 의해 실행될 때, 상기 명령들은 상기 프로세서가
    사용자로부터 기하학적으로 변환될 복수의 객체들을 선택하는 입력과 선택된 객체들에 대해 수행될 기하학적 변환의 유형에 대한 지시를 받아들이도록 하고,
    각각의 선택된 객체에 대하여 상기 선택된 객체에 대한 임의의 선행 객체들을 상기 복수의 객체들 중에서 자동적으로 식별하도록 하고, 여기서, 상기 선택된 객체의 적어도 하나의 매개변수의 값은 상기 임의의 선행 객체들의 적어도 하나의 매개변수에 기능적으로 의존적이고,
    임의의 주어진 객체에 대해, 상기 주어진 객체의 선행 객체들 각각이 상기 주어진 객체가 속한 파티션과 선행 파티션 중에서 적어도 하나에 속하도록, 상기 선택된 객체들을 복수의 순서화된 객체들의 파티션들로 자동적으로 분할하도록 하는, 컴퓨터 프로그램 제품.
  18. 제17항에 있어서,
    상기 명령들은 상기 프로세서가
    상기 기하학적 변환의 유형에 대한 지시에 따라, 상기 객체들을 파티션 순서대로 객체들의 파티션마다 기하학적으로 변환하도록 하는, 컴퓨터 프로그램 제품.
  19. 제18항에 있어서,
    상기 명령들은 상기 프로세서가
    상기 파티션 내의 각 객체의 임의의 후행 객체를 일시적으로 읽기 전용으로 만들도록 하고,
    상기 파티션 내의 각 객체의 임의의 선행 객체를 일시적으로 읽기 전용으로 만들도록 하는, 컴퓨터 프로그램 제품.
  20. 제19항에 있어서,
    상기 명령들은 상기 프로세서가
    일시적으로 읽기 전용으로 만들어진 각 객체에 대해, 대응 수행 예정 항목을 생성하도록 하고,
    일시적으로 읽기 전용으로 만들어진 객체들 중에서 임의의 것이 이후에 변환되는 경우, 상기 대응 수행 예정 항목을 제거하도록 하는, 컴퓨터 프로그램 제품.
  21. 제18항에 있어서,
    상기 명령들은 상기 프로세서가
    상기 객체들을 주어진 파티션에서 기하학적으로 변환하는 동안,
    상기 주어진 파티션에 속한 객체들에 대한 임의의 종속 객체들을 식별하도록 하고,
    상기 식별된 종속 객체들을 상기 주어진 파티션에 추가하도록 하고,
    상기 추가된 종속 객체들을 상기 기하학적 변환의 유형에 대한 지시에 따라 기하학적으로 변환하도록 하는, 컴퓨터 프로그램 제품.
KR1020147022207A 2012-02-09 2013-01-24 객체 지향 환경에서 다중 트랜잭션 기법을 이용하여 객체들에 대한 기하학적인 변환을 수행하기 위한 방법 및 장치 KR20140110072A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201261596797P 2012-02-09 2012-02-09
US61/596,797 2012-02-09
PCT/US2013/022851 WO2013119390A1 (en) 2012-02-09 2013-01-24 Method and apparatus for performing a geometric transformation on objects in an object-oriented environment using a multiple-transaction technique

Publications (1)

Publication Number Publication Date
KR20140110072A true KR20140110072A (ko) 2014-09-16

Family

ID=47722547

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147022207A KR20140110072A (ko) 2012-02-09 2013-01-24 객체 지향 환경에서 다중 트랜잭션 기법을 이용하여 객체들에 대한 기하학적인 변환을 수행하기 위한 방법 및 장치

Country Status (8)

Country Link
US (1) US20130212505A1 (ko)
EP (1) EP2812823A1 (ko)
JP (1) JP2015510638A (ko)
KR (1) KR20140110072A (ko)
CN (1) CN104081400A (ko)
AU (1) AU2013217676A1 (ko)
CA (1) CA2863640A1 (ko)
WO (1) WO2013119390A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180030480A (ko) * 2015-06-05 2018-03-23 헥사곤 테크놀로지 센터 게엠베하 다중 트랜잭션 기술을 사용하여 객체 지향 환경에서 객체들에 대한 기하학적 변환을 수행하기 위한 방법 및 장치

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10719537B2 (en) 2012-02-09 2020-07-21 Hexagon Technology Center Gmbh Method and apparatus for performing a geometric transformation on objects in an object-oriented environment using a multiple-transaction technique
US9015073B2 (en) 2012-06-06 2015-04-21 Addepar, Inc. Controlled creation of reports from table views
US9105062B2 (en) * 2012-12-13 2015-08-11 Addepar, Inc. Transaction effects
USD743981S1 (en) 2013-05-14 2015-11-24 Life Technologies Corporation Display screen with graphical user interface for automated sample incubator
US9355123B2 (en) 2013-07-19 2016-05-31 Nant Holdings Ip, Llc Fast recognition algorithm processing, systems and methods
US20150113453A1 (en) * 2013-10-18 2015-04-23 Apple Inc. Methods and devices for simplified graphical object editing
US9586110B2 (en) * 2014-01-21 2017-03-07 A. Alex Wortman System to improve swinging motion
WO2015123647A1 (en) 2014-02-14 2015-08-20 Nant Holdings Ip, Llc Object ingestion through canonical shapes, systems and methods
US9424333B1 (en) 2014-09-05 2016-08-23 Addepar, Inc. Systems and user interfaces for dynamic and interactive report generation and editing based on automatic traversal of complex data structures
US9244899B1 (en) 2014-10-03 2016-01-26 Addepar, Inc. Systems and user interfaces for dynamic and interactive table generation and editing based on automatic traversal of complex data structures including time varying attributes
US9218502B1 (en) 2014-10-17 2015-12-22 Addepar, Inc. System and architecture for electronic permissions and security policies for resources in a data system
US10732810B1 (en) 2015-11-06 2020-08-04 Addepar, Inc. Systems and user interfaces for dynamic and interactive table generation and editing based on automatic traversal of complex data structures including summary data such as time series data
US11443390B1 (en) 2015-11-06 2022-09-13 Addepar, Inc. Systems and user interfaces for dynamic and interactive table generation and editing based on automatic traversal of complex data structures and incorporation of metadata mapped to the complex data structures
US10372807B1 (en) 2015-11-11 2019-08-06 Addepar, Inc. Systems and user interfaces for dynamic and interactive table generation and editing based on automatic traversal of complex data structures in a distributed system architecture

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06195398A (ja) * 1992-12-22 1994-07-15 Taisei Corp Cadシステム
JPH07103400A (ja) * 1993-10-07 1995-04-18 Toshiba Corp 配管系統のモデリング方法
US5692184A (en) * 1995-05-09 1997-11-25 Intergraph Corporation Object relationship management system
US6633869B1 (en) * 1995-05-09 2003-10-14 Intergraph Corporation Managing object relationships using an object repository
JP3897948B2 (ja) * 2000-02-14 2007-03-28 富士通株式会社 支援システムおよび支援プログラムを記録したコンピュータ読み取り可能な記録媒体
US7313504B2 (en) * 2001-10-15 2007-12-25 Solidworks Corporation Model management technology using grouping of features
US7590643B2 (en) * 2003-08-21 2009-09-15 Microsoft Corporation Systems and methods for extensions and inheritance for units of information manageable by a hardware/software interface system
US7467268B2 (en) * 2006-04-14 2008-12-16 Hewlett-Packard Development Company, L.P. Concurrent data restore and background copy operations in storage networks
AU2009256381B2 (en) 2008-06-03 2014-09-18 Hexagon Technology Center Gmbh Method and apparatus for copying objects in an object-oriented environment using a multiple-transaction technique

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180030480A (ko) * 2015-06-05 2018-03-23 헥사곤 테크놀로지 센터 게엠베하 다중 트랜잭션 기술을 사용하여 객체 지향 환경에서 객체들에 대한 기하학적 변환을 수행하기 위한 방법 및 장치

Also Published As

Publication number Publication date
JP2015510638A (ja) 2015-04-09
US20130212505A1 (en) 2013-08-15
EP2812823A1 (en) 2014-12-17
CA2863640A1 (en) 2013-08-15
AU2013217676A1 (en) 2014-08-14
CN104081400A (zh) 2014-10-01
WO2013119390A1 (en) 2013-08-15

Similar Documents

Publication Publication Date Title
KR20140110072A (ko) 객체 지향 환경에서 다중 트랜잭션 기법을 이용하여 객체들에 대한 기하학적인 변환을 수행하기 위한 방법 및 장치
EP2281253B1 (en) Method and apparatus for copying objects in an object-oriented environment using a multiple-transaction technique
US7492364B2 (en) System and method for creating and updating a three-dimensional model and creating a related neutral file format
US5984511A (en) Knowledge driven composite design optimization process and system therefor
JP2753085B2 (ja) 形状モデリング方法及びその装置
EP0738965A2 (en) Method and apparatus for representing data dependencies in software modeling systems
US20140278283A1 (en) Editable clipping planes for cad systems
EP1050396A1 (en) Knowledge driven composite design optimization process and system therefor
US10719537B2 (en) Method and apparatus for performing a geometric transformation on objects in an object-oriented environment using a multiple-transaction technique
CN110349262B (zh) 一种基于bim的隧道超前地质预报三维建模方法及系统
Chen et al. An interface object model for interface management in building construction
KR102499332B1 (ko) 다중 트랜잭션 기술을 사용하여 객체 지향 환경에서 객체들에 대한 기하학적 변환을 수행하기 위한 방법 및 장치
EP2698734A2 (en) Model for managing variations in a product structure for a product
JP2001195256A (ja) オブジェクトの生成支援方法および装置
JP2545474B2 (ja) 複合プログラムの構成装置
Haymaker et al. Perspectors: Composable, reusable reasoning modules to automatically construct a geometric engineering view from other geometric engineering views
KR20230086965A (ko) 배관응력해석 결과 관리 방법 및 이를 컴퓨터에서 실행하기 위한 컴퓨터 프로그램이 기록된, 컴퓨터 판독이 가능한 기록 매체
JP2002149725A (ja) 3次元展開データ作成装置及び3次元展開データ作成方法
Nyirenda et al. A multi-level freeform surface feature model
JPH03231374A (ja) メツシユ生成装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application