KR20060087392A - 엔터티 패턴들을 사용하여 데이터 모델의 구조를 캡처하는시스템 및 방법 - Google Patents

엔터티 패턴들을 사용하여 데이터 모델의 구조를 캡처하는시스템 및 방법 Download PDF

Info

Publication number
KR20060087392A
KR20060087392A KR1020050120670A KR20050120670A KR20060087392A KR 20060087392 A KR20060087392 A KR 20060087392A KR 1020050120670 A KR1020050120670 A KR 1020050120670A KR 20050120670 A KR20050120670 A KR 20050120670A KR 20060087392 A KR20060087392 A KR 20060087392A
Authority
KR
South Korea
Prior art keywords
entity
pattern
entity pattern
application
role
Prior art date
Application number
KR1020050120670A
Other languages
English (en)
Other versions
KR101219960B1 (ko
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
Priority claimed from US11/046,127 external-priority patent/US7698293B2/en
Priority claimed from US11/045,756 external-priority patent/US7636911B2/en
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20060087392A publication Critical patent/KR20060087392A/ko
Application granted granted Critical
Publication of KR101219960B1 publication Critical patent/KR101219960B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management

Abstract

엔터티 패턴들을 사용하여 데이터 모델의 구조를 캡처하는 시스템 및 방법이 제공되며, 엔터티 패턴은 루트 레벨에서 프레임워크의 모델 에디터 내에 표면화되고(surface), 모델의 구조적 패턴을 함께 정의하는 하나 이상의 엔터티 롤들로 이루어지는, 예를 들어, MICROSOFT BUSINESS FRAMEWORK®(MBF)에 있는 추상화(abstraction)이다. 엔터티 패턴은 uber-모델, 또는 모델을 위한 모델 템플릿으로 간주될 수 있다. 다른 엔터티들(엔터티 롤들)에 대한 속성 및 관계를 필요로 하는, 엔터티들의 설계에 규범적인 규칙들이 추가된다. 엔터티 패턴들의 애플리케이션들은 설계 시에 검증된다. 런타임 프레임워크는 임의의 적용된 패턴을 지원하고 패턴 특정 코드를 호출한다. 런타임 동작이 모델 구동되고 런타임 시에 모델 데이터를 해석한다는 점이 일반적인 이점이다. 패턴의 애플리케이션 및 사용은 애플리케이션/소프트웨어 프로그램의 모델의 일부이다.
엔터티 패턴, 프레임워크, 데이터 모델 구조, 엔터티 롤

Description

엔터티 패턴들을 사용하여 데이터 모델의 구조를 캡처하는 시스템 및 방법{SYSTEM AND METHODS FOR CAPTURING STRUCTURE OF DATA MODELS USING ENTITY PATTERNS}
도 1은 본 발명에 따른 Entity Pattern을 생성 및 사용하기 위한 프로세스의 하이 레벨 순서도이다.
도 2는 본 발명의 가능한 실시예에 따른 Model Editor에서 나타날 수 있는 예시적인 Entity Pattern을 나타내는 샘플 스크린 샷이다.
도 3은 본 발명의 가능한 실시예에 따른 BED(Business Entity Designer)를 사용하는 Entity Role의 애플리케이션의 예를 나타내는 샘플 스크린 샷이다.
도 4a는 본 발명에 따른 Entity Pattern Role과 대조하여 구체적 엔터티를 검증하는 것에 대응하는, 도 1의 블럭 내에 포함된 프로세스의 보다 자세한 뷰를 나타내는 순서도이다.
도 4b는 엔터티가 본 발명에 따른 롤을 만족시키는지 여부를 결정하는 것에 대응하는, 도 4a의 블럭 내에 포함된 프로세스의 보다 자세한 뷰를 나타내는 순서도이다.
도 5는 가능한 실시예 내에서 각 Entity Pattern에 대해 생성된 코드의 아키텍처를 나타내는 블럭도이다.
도 6은 본 발명의 다양한 양태들에 관련하여 사용에 적절한 예시적인 컴퓨팅 장치를 표현하는 블럭도이다.
도 7은 많은 컴퓨터화된 프로세스들이 구현될 수 있는 예시적인 네트워크된 컴퓨팅 환경을 도시한다.
<도면의 주요 부분에 대한 부호의 설명>
122, 125 : 엔터티 롤
123 : 런타임 프로그래밍 인터페이스 클래스
126 : 메타데이터를 포함하는 클래스
<저작권 공지 및 허가>
본 특허 문서의 개시의 일부는 저작권 보호에 속하는 자료(materials)를 포함할 수 있다. 저작권 소유자는, 특허 및 상표청 특허 파일 또는 기록에서 나타나는 것과 같은, 누군가에 의한 이 특허 문서 또는 이 특허 개시의 복사 복제에 대해 이의를 제기하지 않지만, 그 밖에는 어떤 경우에라도 모든 저작권을 보호한다. 다음의 공지는 본 문서에 적용될 것이다: Copyright ⓒ Microsoft Corp.
<기술 분야>
본 발명은 소프트웨어 개발을 위한 비즈니스 프레임워크(framework)에 관한 것이다. 보다 구체적으로, 본 발명은 재사용 가능한 방식으로 데이터 모델의 구조 적 패턴을 표현하는 방법으로 애플리케이션 또는 컴퓨터 프로그램 내의 로직의 유연한 구현(flexible implementation)을 가능하게 하는 프레임워크에 관한 것이다.
<배경 기술>
비즈니스 애플리케이션을 위한 소프트웨어를 만드는데 있어서, 고려해야될 점은 회계, 임금 대장(payroll), 인적 자원, 판매 주문, 종업원 추적(employee tracking), 소비자 관계 추적 등과 같은 비즈니스 전략(business operations)을 제어하고 분석하기 위해 비즈니스는 통상적으로 다양한 메커니즘을 사용하고 있다는 점이다. 이들 기능들을 제공하는 툴은 종종 컴퓨터 소프트웨어를 사용하여 구현되어 지고, 프레임워크 또는 비즈니스 프레임워크라고 불리는 컴퓨터 자동화 보조 장치(assistance) 유형을 사용하여 구축될 수 있다. 사용자가 다양한 비즈니스 전략에 대응하는 데이터를 손쉽게 입력하고 볼 수 있도록 소프트웨어 패키지는 사용자 인터페이스를 제공할 수 있다. 이 소프트웨어 패키지는 또한 데이터베이스 내에 저장된 데이터를 액세스하고 갱신하도록 구성된다.
비즈니스 애플리케이션은, 주문 완료 및 출하(shipment)와 같은, 다양한 비즈니스 이벤트를 처리하도록 설계된다. 비즈니스 애플리케이션은 코드를 사용하여 구현된 애플리케이션 특징을 포함한다. 코드에 더하여, 비즈니스 애플리케이션은 이 비즈니스 애플리케이션을 실행할 때 코드와 상호작용하는 다수의 추상화(abstraction)를 포함한다. MICROSOFT BUSINESS FRAMEWORK®(MBF)는, 예를 들어, 프레임 정의된 추상화(Entity, Operation,...)의 넓은 범주를 비즈니스 개발자에게 제공하고, 비즈니스 개발자가 재사용가능성을 위한 비즈니스 로직을 캡처하도록 하 는 단일 추상화(Property Pattern)를 제공한다. 예를 들면, 하나의 추상화는 소비자 또는 판매 주문에 관련된 저장 데이터를 만드는(model) 비즈니스 엔터티이다. 이들 엔터티들(또는 객체들)은 데이터를 저장하기 위한 클래스(class)를 포함한다.
비즈니스 애플리케이션은 하나 이상의 이들 엔터티들, 즉 Entity Pattern을 포함하는 많은 다른 패턴들을 포함한다. 동일한 패턴은 동일한 애플리케이션 내에서 패턴을 캡처하는 방법없이 종종 수동으로 무수히 반복된다. 그러므로, 원시 패턴(original pattern)은 실제로는 결국 블러링(blur)될 것이다. 개발자가 동일한 패턴을 다시 적용하고 싶다면, 애플리케이션들 중 어느 것이 원본이라고 말할 수 없다. 원시 패턴이 변화하면, 모든 애플리케이션은 이 패턴과 대조하여 수동적으로 검증되고 적절하게 변화되어야 한다.
이점에 있어서, 설계 시에 엔터티들의 자동 검증(validation)을 갖는 다중 엔터티들 및 관련된 로직을 구성하는 구조 패턴들을 캡처하는 방식을 개발자들에게 제공하는 시스템 및 방법에 대한 요구가 있다.
이 기술의 상기 인정된 단점들을 고려해서, 본 발명은 설계 시에 엔터티들의 검증(validation)을 갖는 다중 엔터티들 및 관련된 로직을 구성하는 구조 패턴들을 캡처하는 것은 물론, 임의의 적용된 패턴을 지원하고 패턴 특정 코드를 호출(invoke)하는 런타임 프레임워크를 제공하는 시스템 및 방법을 제공한다. 개발자들은 소프트웨어를 개발할 때 캡처된 패턴을 선언적으로(declaratively) 재사용할 수 있다. 런타임 시에 애플리케이션이 모델 구동되고 모델 데이터를 런타임 시에 해석한다는 점은 일반적인 이점이다. 패턴의 적용 및/또는 사용은 애플리케이션 또는 소프트웨어 프로그램의 모델의 일부이다.
본 발명의 여러 실시예들에 있어서, 데이터 모델 내에 있는 적어도 하나의 엔터티 구조에 기초한 Entity Pattern을 작성하는 단계를 포함하는 데이터 모델들의 구조를 캡처하는 방법이 제공된다. Entity Pattern의 애플리케이션은 애플리케이션이 Entity Pattern을 준수하는(comply with)지를 보증하도록 검증된다. 검증 프로세스는 Entity Pattern의 애플리케이션의 일부로서 Entity Pattern 정보를 유지하는 단계와 애플리케이션이 상기 유지된 엔터티 패턴 정보를 사용하여 엔터티 패턴을 고수(adhere)하는지 여부를 체크하는 단계를 포함할 수 있다.
Entity Pattern은 애플리케이션이 Entity Pattern을 고수하는지 여부를 체크하는데 사용되는 적어도 하나의 Entity Role을 갖는다. 추가적으로, 이 프로세스는 Entity Role에 대한 제1 대응 클래스를 포함할 수 있으며, 이 클래스는 Entity Role에 의해 기술된 구조를 갖는다. 제1 클래스는 런타임 시에 Entity Pattern의 다른 롤들에 대한 탐색을 허용한다. 개발자들로부터 감춰질 수 있는 메타데이터(metadata)를 검색하는 하나의 방법은 런타임 시에 이용가능한 메타데이터를 포함하는 Entity Role에 대해 제2 대응 클래스를 생성하는 것이다. 본 발명의 다른 이점들 및 특징들이 이하 기술된다.
본 발명에 따라서 Entity Pattern을 사용하여 데이터 모델들의 구조를 캡처하는 시스템 및 방법은 첨부한 도면을 참조하여 더욱 상세히 기술된다.
어떤 특정한 상세 설명은 본 발명의 다양한 실시예들의 완벽한 이해를 제공하도록 다음의 상세한 설명 및 도면에서 설명된다. 종종 컴퓨팅 및 소프트웨어 기술과 관련된 어떤 공지된 상세 설명은 본 발명의 다양한 실시예들을 불필요하게 모호하게 하지 않기 위해서 다음의 설명서에서 설명되지 않는다. 또한, 당업자는 아래 기술된 하나 이상의 상세한 설명 없이 본 발명의 다른 실시예들을 실시할 수 있다는 것을 이해할 것이다. 마지막으로, 다양한 방법들이 다음 설명서의 단계들과 시퀀스를 참조하여 기술되는 한편, 이러한 설명은 본 발명의 실시예들의 분명한 구현을 제공하며, 이 단계들 및 단계들의 시퀀스는 본 발명을 실시하기 위해서 요구되는 것으로 받아들여서는 않된다.
개요(Overview)
엔터티 패턴들을 사용하여 데이터 모델의 구조를 캡처하는 시스템 및 방법들이 기술된다. 본 발명은 예를 들어, MICROSOFT BUSINESS FRAMEWORK®(MBF)를 사용하여 구현될 수 있는 엔터티 패턴들과 관련된다. 그러나, 본 발명이 예시적인 구현 논의를 위해 MBF에 관련된 용어로 종종 기술될 수 있다고 해도, 특정 프레임워크에 한정되지 않으며, 여기서 논의된 개념은 예를 들어, ORACLE APPLICATION DEVELOPMENT FRAMEWORK®(ADF)와 같은 다른 개발 프레임워크에서 일반적으로 적용가능하다. 여기서 개시된 바와 같은 Entity Pattern은 엔터티 그래프에 대한 구조적 및 기능적 정보 모두를 포함할 수 있으며, 엔터티 패턴에 기초한 애플리케이션 내의 전체 품질과 일관성(consistency)을 향상시키는 구체적인 애플리케이션에 적용될 때 이 정보를 검증할 수 있다.
먼저, Entity Pattern Role을 적용하고 적용된 Entity Pattern Role을 검증하는, Entity Pattern을 설계하는 프로세스는 Entity Pattern Role에 대한 프로그래밍 모델을 논의한 후에 기술될 것이다. 다음으로, 엔터티 패턴 아키텍처를 정의하는 생성된 코드 및 런타임 프레임워크는 제공된 샘플 생성된 코드 리스팅과 함께 기술될 것이다. 마지막으로, 도 6 및 도 7은 여기서 설명되는 시스템 및 방법과 관련하여 일반적으로 사용에 적합하다고 인식되는 컴퓨팅 및 네트워크된 환경을 제공한다. 도 6 및 도 7 내의 자료는 일반적으로 예시적인 목적을 위한 것이기 때문에, 대응하는 설명은 본 명세서의 끝부분에, "예시적인 컴퓨팅 및 네트워크 환경"이라는 제목의 섹션에 남겨둔다. 여기서 사용된 정의와 용어의 짧은 리스트는 부록 A에 제공되어 있다.
엔터티 패턴의 설계와 엔터티 패턴 롤의 적용
먼저, 도 1을 참조하면, 본 발명에 따른 Entity Pattern을 생성 및 사용하기 위한 프로세스의 하이 레벨 순서도가 도시되어 있다. 보통, 패턴의 사용은 개발자만이 알거나 기껏해야 생성 마법사에 의해 공지된다. 적용된 패턴에 대한 지식은 애플리케이션을 따라가지 않는다. Entity Pattern은 이 지식을 애플리케이션의 일부로서 보유하고; 그러므로 애플리케이션 또는 패턴이 변화할 때마다 적용된 패턴에 대한 임의의 애플리케이션의 고수(adherence)를 다시 검증할 수 있다.
먼저, 엔터티 패턴은 MBF 모델 에디터(Model Editor) 내에서 설계된다(101). 다음으로, 엔터티 패턴 롤은 구체적 엔터티에 적용된다(102). 이후에, 구체적 엔 터티는 엔터티 패턴을 준수하는 것을 보장하도록 엔터티 패턴 롤과 대조하여 검증된다(103). Entity Pattern은 임의의 다른 MBF 추상화로서 모델 에디터 내에서 설계된다. BED와 매우 유사한 시각적 설계는 Entity Pattern을 설계하는데 사용될 수 있다.
다음으로, 패턴 특정된 코드의 런타임 실행이 일어난다(140). 런타임 프레임워크는 임의의 적용된 패턴을 지원하고 패턴 특정된 코드를 호출한다. 런타임 동작이 모델 구동되고 런타임 시에 모델을 해석하며, 엔터티들이 런타임 시에 적용된 롤들에 대해 쿼리(query)될 수 있으며 리턴되는 롤 클래스의 인스턴스를 갖는다는 것은 일반적인 이점이다. 패턴의 애플리케이션 및 사용은 애플리케이션/소프트웨어 프로그램의 모델의 일부이다.
다음으로 도 2를 참조하면, Model Editor(107)에서 나타날 수 있는 예시적인 엔터티 패턴들(104)을 나타내는 샘플 스크린 샷이 도시되어 있다. Entity Patterns(104)은 Entity Role Class(105)를 포함하는 최상위 레벨 요소이다. 일례로서, HeaderLinePattern(106)이 도시되어 있다. Entity Role은 Property Pattern과 동일한 Class(Type)/Instance 패턴을 따른다. Property Pattern이 Property Pattern Type의 인스턴스인 것과 동일한 방식으로 Entity Role은 EntityRoleClass(105)의 인스턴스이다. 모델 에디터 내의 클래스와 인스턴스 모두에 대해서 텀(term) Entity Role을 사용함으로써 개발자로부터 이를(명명식(naming-wise)) 감추기 위해서 Property Pattern으로서 하나가 선택될 수 있다. 다음으로, 텀 Entity Role이 클래스와 인스턴스 모두에 대해 사용될 것이다.
Entity Role(105)은 당연하게, Properties(108), Association(109), Composition(110) 및 Property Patterns와 같은 Entities과 동일한 많은 모델 구성 요소들로 구성된다. 대부분의 구성 요소들은 그들의 구체적인 대상체(counterpart)와 동일한 특성(attribute)의 서브셋을 가질 것이다. Properties(108)에 대해서, Entity Role(105)에 대한 속성(properties)의 정의는, 정의된 속성을 들어내고 런타임 메타데이터를 사용하여 이들을 호스팅 엔터티에서 대응하는 속성으로 맵핑하는 Entity Role(105) 런타임 클래스를 생성하기에 충분한 정보를 포함해야 한다. 예를 들어, Accessor, AllowNull, ArrayLength, 및 Type이다. Association(109) 및 Composition(110)에 관해서, 이들은 다른 Entity Role과의 관계를 정의하는 Entity Role(105) 레벨에 있다. 이 특정된 관계는 Entity Role(105)을 실제 Entities에 적용할 때 만족(fulfill)되어야 한다. Decoration(111)은 Entity Role(105)이 구체적인 Entity에 적용될 때 특정되어야 하는 메타데이터의 정의이다. 생성된 Entity Role Classes(105)는 이 메타데이터를 감싸는(wrap) 속성을 가질 것이다. Decorations은 Property Patterns에 이미 사용되었다.
호스팅 Entity 내의 다른 Entity Roles의 존재는 Entity Role(105)에서 정의될 수 있다. 이는 Entity Roles 간의 상속(inheritance)이 기술되는 방법이다. 예를 들어, Company Entity Role은 Party Entity Role이 호스팅 Entity 상에도 존재해야 함을 규정한다.
호스팅 Entity에서의 Property Patterns의 존재는 Entity Role(105)에서 정 의될 수 있다. Apply Entity Role Wizard의 일부로서, 이하 더 설명되는 바와 같이, 정의된 Property Patterns을 맵핑하거나 생성하는 선택이 제공된다. Property Patterns Roles은 이 레벨에서 정의된 속성과 관계를 사용하여 탐색함으로써 Entity Pattern(104) 내에 구속(bind)될 수 있다. Roles은 또한 이들을 구속하기 위해서 Entity Role(105)의 소비자에 대해서 "해방된(unbound)"체 유지될 수 있다. 마지막으로, Property Validators의 존재는 Property Patterns이 정의될 수 있는 동일한 방식으로 Entity Role Class 속성에서 정의될 수 있다. 추가적으로, 동작은 Entities가 사용될 수 있는 방식으로 Entity Roles(105)와 함께 작업하도록 설계될 수 있다. 또한, 생성된 Entity Role Class는 일부분이고, 추가 메소드 및 Entity Role Class(105) 모델 요소 내에 정의된 속성 추상화에서 작동하는 CLR(Common Language Runtime) 속성을 가지고 연장될 수 있다. CLR은 .NET 프로그램 코드의 실행을 관리하고, 메모리 및 예외 관리(exception management), 디버깅 및 프로필링(profiling)과 같은 서비스 및 보안을 제공하는 런타임 환경이다. CLR은 .NET 프레임워크의 주요 컴포넌트이다. CLR은 또한 VES(Virtual Execution System)으로 알려져 있다.
Entity Role은 드래그 및 드롭(drag and drop)을 사용하여 Model Editor(107) 내의 Entity에 적용된다. Entity Role(105)은 Entity Pattern(106)으로부터 드래그되어 Entity내의 EntityRoles 폴더로 드롭된다. Entity Roles 노드(105)에서의 정확한 클릭킹(clicking)은 모델 내에서 이용가능한 Entity Patterns으로부터 Entity Role을 뽑는(pick) 다이얼로그(dialog)를 실행할 것이다.
다음으로 도 3을 참조하면, 본 발명에 따른 BED(Business Entity Designer;112)를 사용하여 엔터티 롤의 애플리케이션의 예를 나타내는 샘플 스크린 샷을 도시한다. Entity Roles은 드래그 및 드롭을 사용하여 BED(112) 내에서 적용될 수 있다. Designed Entity Patterns(113)은 일등 시민(first class citizen)으로서 Toolbox(114) 내에 표면화(surface)될 것이다. 예를 들어, Toolbox(114)로부터 Entity Role(115)을 드래그하는 것과 이를 Entity(116)에 드롭하는 것이 Entity Role(115)에 적용될 것이다. 드롭 동작은 Entity Role 마법사를 트리거할 수 있다. 이 마법사는 모든 필요한 Property, Association, Composition 및 Entity Role에 대해 기술된 다른 구성 요소를 맵핑하거나 작성(create)하기 위해 손쉬운 사용자 경험을 제공할 수 있다.
다음으로 도 4a를 참조하면, 본 발명에 따른 Entity Pattern Role에 대해 구체적 엔터티를 검증하게 하는 것에 대응하는, 도 1의 블럭 내에 포함된 프로세스의 보다 자세한 뷰를 나타내는 순서도이다. 적용된 Entity Roles을 갖는 Entities의 설계는 적용된 Entity Roles와의 일치(conformity)를 위해 설계 시에 검증된다. Entity Role의 규정적 성격(prescriptive nature)은 엔터티 롤과 대조하여 엔터티를 검증하고(117) 이 엔터티가 롤을 만족시키는지 여부를 결정하는(118) Model Validation Engine을 사용함으로써 구현된다. 엔터티가 롤을 만족시키지 않으면(119), 에러 메시지가 개발자에게 주어진다. 적용된 Entity Role이 검증에 실패하면, 이 모델은 컴파일할 수 없을 것이다. 엔터티가 롤을 만족시키면(120), 검증이 완료되어(121) 성공한다. Entity Pattern 설계자는 또한 개발자에게 Entity Pattern에 대한 도움이 되는 정보를 제공하기 위해서 설명서를 기록하고 및 정보에 대한 추가 리소스로의 하이퍼링크를 포함(embed)할 수 있다.
Entity Role은 Entity Role에 대한 관계(Associations & Compositions)를 특정할 수 있다. 모델 검증동안, 호스팅 엔터티에 대한 구체적인 관계는 정확한 다양성(multiplicity) 및 적용된 정확한 Entity Roles을 갖기 위해 검증된다. 관계는 양 방향에서 검증된다. Header/Line Pattern에서, 적용된 HeaderRole을 갖는 엔터티는 적용된 LineRole을 갖는 엔터티의 구성을 가져야하지만, LineRole을 갖는 엔터티는 또한 적용된 HeaderRole을 갖는 엔터티에 의해 구성되는 지에 대해 검증된다.
다음으로 도 4b를 참조하면, 엔터티가 롤을 만족시키는지 여부를 결정하는 것에 대응하는, 도 4a의 블럭 내에 포함된 프로세스의 보다 자세한 뷰를 나타내는 순서도가 도시되어 있다. Entity Role Property 및 구체적인 Entity Property 간의 맵의 존재에 대해 속성이 검증될 것이다. Entity Role Property에 설정된 속성에 대한 준수, 예를 들면, AllowNull, Type 등이 또한 검증된다. 먼저, 롤의 속성이 검증된다(141). 이후에, 엔터티 롤의 이들 속성들이 실제적으로 구체적인 엔터티 속성과 일치하는지 여부가 결정된다. 이들이 일치한다면, 검증이 완료되고, 그렇지않으면, 예를 들어 에러 메시지가 개발자에게 주어질 수 있다.
프로그래밍 모델(programming Model)
임의의 Entity Role은 정의된 속성들 및 관계들을 갖는 대응하는 클래스를 가질 것이다. 이것은 개발자들이 더 높은 Entity Role 레벨에서 Entity 데이터를 가지고 작업하는 것을 허용한다. Entity Roles에 기입된 코드는 그 자체의 정의된 속성들 및 관련된 Entity Roles가지고 적용된 Property Patterns을 통해 직접 또는 간접적으로 작동할 수 있다. 그러나, Entity Pattern의 설계 및 검증은 여기서 기술된 특정 프로그래밍 모델없이 사용될 수 있다.
Entity Roles vs. 인터페이스에 관해서, 인터페이스는 코드 구현을 숨기기 위해 사용되는 반면, Entity Roles은 데이터의 다른 애플리케이션을 숨기고 있다. Entity Roles은 "Marker Interface" Pattern을 적용하는데 사용될 수 있다. Entity Roles은 또한 (다중) 상속을 어느 정도 닮는다. 몇몇 시나리오들은 표준 상속을 사용하여 해결될 수 있지만, Entity Roles는 또한 다중-상속 시나리오를 가지고 작업하고, Entity Role과 해당하는(underlying) Entity 사이에 놓인 추가 맵핑층(extra mapping layer)을 가질 것이다. 다중 상속과 대조적으로, Entity Roles은 이미 컴파일된 엔터티들에서 선언적으로 적용될 수 있다.
Entity Roles은 구체적 애플리케이션에 의해 시작된(fired) 이벤트에 가입할 수 있다. 예를 들면, Firstname, Lastname 및 Fullname의 3가지 속성이 정의된 고객 Entity Role은 Firstname 및 Lastname에서 변경된 이벤트에 가입할 수 있다. 가입된 이벤트가 호스팅 엔터티에서 시작될 때, Entity Role Class(123)에 기입된 코드가 실행될 것이다.
적용된 소정의 Entity Role을 갖는 Entity 타입에 대해 쿼리될 수 있다. 예를 들어, 적용된 Resource Entity Role을 갖는 모든 Entities에 대해 쿼리될 수 있 다. 이것은 적용된 Entity Roles의 런타임 디스커버리(runtime discovery)를 허용한다. 적용된 롤의 리스트 또는 특정 롤의 존재를 알기 위해 엔터티의 인스턴스를 쿼리할 수 있다. 이것은 CLR 인터페이스를 위한 프로그래밍 모델을 닮은 프로그래밍 모델을 제시할 것이다.
첫번째 보기(glimpse)에서는, CLR 인터페이스를 사용하여 Entity에 적용된 Entity Roles을 나타내고 싶을 수 있지만, 이것은 Entity의 재컴파일(recomplilation)을 요구하고, 사용자 지정(customization) 시나리오에 적합하지 않은, 아래와 같은 코드에 이르게 할 것이다.
Figure 112005072134613-PAT00001
대신, Entity가 메소드를 통해 쿼리될 수 있는 프로그래밍 모델은 아래의 코드로 표현된 것과 같이 구현된다:
인터페이스를 위한 키워드와 마찬가지로, Entity는 아래의 코드로 표현된 것과 같 은 특정 Entity Role의 인스턴스에 대해 쿼리될 수 있다:
Figure 112005072134613-PAT00003
특정 Entity Role 클래스의 리스트의 리스트를 알기 위해 Entity를 쿼리하기 위한 지원은 아래 도시된 바와 같이 지원되기 때문에, Entity Roles은 (매번 다른 맵핑으로) 여러번 적용될 수 있다:
Figure 112005072134613-PAT00004
Entity에 대한 모든 Entity Roles의 리스트를 검색하는 것은 또한 아래 도시된 바와 같이 지원된다:
Figure 112005072134613-PAT00005
생성된 코드 및 런타임 프레임워크
다음으로 도 5를 참조하면, Entity Pattern(113)에 대해 생성된 코드의 아키텍처를 나타내는 블럭도가 도시되어 있다. 각 Entity Pattern(113) 내의 각각의 Entity Role(122)에 있어서, 두 개의 대응하는 클래스들은 프레임워크에 의해 생성된다. 하나의 클래스는, Role에 의해 기술된 구조를 가지며 동일한 패턴(113)의 다른 Roles(125)에 대한 탐색(navigating;124)을 허용하는 런타임 프로그래밍 인터페이스(123)이다. 또 다른 클래스(126)는 각 Role과 관련된 런타임에서(127) 이용가능한 메타데이터를 포함한다. 상술한 설명은 하나의 특정 실시예에 대한 프레임워크 내에서 클래스가 생성되는 방법을 기술하지만, 메타데이터 클래스(126)는 다른 방식으로 구현될 수 있다(클래스(123)의 일부 그대로). 또한, 상술한 바와 같이, Entites는 런타임 시에 적용된 roles에 대해 쿼리될 수 있으며, 리턴된 롤 클래스의 인스턴스를 가질 수 있다.
예를 들어, 클래스(<EntityRoleName>)는 정의된 Properties, Associations 및 Compositions을 들어내고, 클래스(<EntityRoleName>Info)는 메타데이터 내에 저장된 Decorations에 대한 값을 액세스하는 속성을 포함한다. <EntityRoleName>Info 클래스는 Entity Role Properties, Association 및 Composition, 및 그들의 Entity 대상체 간의 맵핑을 위한 데이터와 Decoration 값과 함께 메타데이터-서비스로부터 포퓰레이트(populate)되는 런타임 클래스이다. Entity Role 클래스에 특정된 모든 Decoration에 대해서, 이 Decoration과 관련된 메타데이터 정보를 액세스하도록 CLR 속성이 생성된다.
모든 Property, Association 및 Composition에 대해서, 후위(postfix) "Map"을 갖는 스트링 타입 CLR 속성이 이 클래스에서 생성된다. 호스팅 Entity 클래스에 타깃 속성을 반영하기 위해서 이들 스트링 속성들이 프레임워크에 의해 생성된다. 정의된 SumFormatString decoration, Sum property 및 Lines composition을 갖는 Header Entity Role에 대한 정보 클래스를 위해 생성된 코드의 일례는, 아래 제공된다:
Figure 112005072134613-PAT00006
Figure 112005072134613-PAT00007
정의된 Properties, Association 및 Compositions을 들어내는 <EntityRoleName> 클래스에 대해서, 정의된 SumFormatString decoration, Sum property 및 Lines composition을 갖는 Header Entity Role에 대한 런타임 클래스를 위해 생성된 코드의 일례는 아래 제공된다:
Figure 112005072134613-PAT00008
Figure 112005072134613-PAT00009
런타임 프레임워크는 세가지 메소드, Entity 클래스 및 몇몇 기본 클래스로 구현된다. 이것은 경량(lightweight)이며 Entity 클래스에 메모리 공간(footprint)를 가지지 않는다. 또한, 이들이 이벤트에 가입한다면, 각 엔터티에 대한 Entity Roles을 인스턴스화할 수 있다. Entity Role 클래스는, 예를 들어, 적용된 Entity Roles의 런타임 표현을 위한 기본 클래스이다. 대응하는 EntityRoleInfo 객체 및 호스팅 엔터티를 얻는(get) 것은 두가지 메소드에 대해 추상적이다. EntityRole 클래스에 대한 예시적인 코드 리스팅이 아래 제공된다:
Figure 112005072134613-PAT00010
예를 들어, EntityRoleInfo는 메타데이터-서비스로부터 추출된 맵핑에 대한 캐시 정보를 포함하는 런탄임 메타데이터 정보 클래스에 대한 기본 클래스이다. EntityRoleInfo에 대한 예시적인 코드 리스팅은 아래 제공된다:
Figure 112005072134613-PAT00011
EntityRoleCollection 클래스는 EntityRole 레벨에서 EntityCollections에 액세스를 허용하는 EntityCollection 주변의 래퍼(wrapper)이며, EntityPatternManager 클래스는 적용된 Entities에 대해 메타데이터-서비스를 쿼리할 책임이 있으며, 필요시에 인스턴스화한다. EntityPatternManager 클래스는 메타데이터-서비스에 접속할 것이고, 모든 적용된 Entity Role에 대해서 대응하는 EntityRoleInfo 클래스를 필요한 맵핑 정보 및 대응하는 Entity Role 클래스로 하 이드레이트(hydrate)할 것이다. Entity 기본 클래스는 또한 Entity에 적용된 Entity Roles을 액세스하는 방법을 갖는다. EntityRoleInfo 클래스들이 소정의 레이트로 인스턴스화되도록 캐싱이 사용될 수 있다.
Entity Patterns에 기초하여 자동 생성된 UI
Entity Pattern의 존재는 사용자 인터페이스(UI:user interface)를 자동 생성할 때 영향을 받을 수 있는 가변 정보를 보유한다. Entity Role의 일부로서 모델링된 속성들 및 관계는 종종 엔터티의 키 구성 요소가 될 것이고 UI에서 주된 위치가 주어질 수 있다.
이용가능한 제한된 공간을 갖는 UI에서 적용된 PartyRole을 갖는 고객 엔터티를 나타낼 때, 자동 생성 메커니즘은 나타낼 속성들을 선택하기 위해서 PartyRole의 존재를 이용할 수 있다.
UI 레이아웃은 Entity Patterns에 링크될 수 있으며 그에 의해, 그들의 적용된 Entity Roles을 검사함으로써 구체적 엔터티들에 대한 일관된 UI를 제공할 수 있다.
예시적인 컴퓨팅 및 네트워크 환경
도 6을 참조하면, 본 발명의 다양한 특징들과 함께 사용에 적절한 예시적인 컴퓨팅 장치를 표현하는 블럭도가 도시되어 있다. 예를 들어, 트리 뷰에서 인라인 속성 편집을 위한 프로세스와 방법을 실행하는 컴퓨터 실행가능 명령어는 도 6에 도시한 바와 같은 컴퓨팅 환경에서 존재하거나 실행될 수 있다. 컴퓨팅 시스템 환경(220)은 적합한 컴퓨팅 환경의 일례일 뿐이고 본 발명의 사용 또는 기능성의 범주에 대한 임의의 제한을 제안하려고 의도되지 않는다. 컴퓨팅 환경(220)은 예시적인 운영 환경(220)에 도시한 컴포넌트들 중 어느 하나 또는 그 조합에 관하여 임의의 종속성(dependency) 또는 요구사항(requirement)을 갖는 것으로 해석되어서는 안된다.
본 발명의 양태는 많은 다른 범용 또는 특수목적 컴퓨팅 시스템 환경들 또는 구성들과 함께 동작된다. 본 발명과 함께 사용하기에 적합할 수 있는 잘 알려진 컴퓨팅 시스템, 환경, 및/또는 구성의 예로는, 퍼스널 컴퓨터, 서버 컴퓨터, 핸드헬드(hand-held) 또는 랩탑 장치, 멀티프로세서 시스템, 마이크로프로세서-기반 시스템, 셋 탑 박스(set top box), 프로그램가능한 가전제품(programmable consumer electronics), 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 상기의 시스템 또는 장치 중의 임의의 것을 포함하는 분산형 컴퓨팅 환경 등이 포함될 수 있지만, 이에 한정되지 않는다.
본 발명의 양태는 컴퓨터에 의해 실행되는, 프로그램 모듈과 같은 컴퓨터 실행가능 명령어의 일반적인 관점에서 구현될 수 있다. 일반적으로, 프로그램 모듈은 특정 태스크를 수행하거나 특정 추상 데이터 유형을 구현하는 루틴, 프로그램, 객체, 컴포넌트, 데이터 구조 등을 포함한다. 본 발명의 양태는 또한 통신 네트워크를 통해 링크된 원격 프로세싱 장치에 의해 태스크를 수행하는 분산형 컴퓨팅 환경에서 실행될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 메모리 저장 장 치를 포함하는 국부 및 원격 컴퓨터 저장 매체 내에 위치할 수 있다.
본 발명의 양태를 구현하기 위한 예시적인 시스템은 컴퓨터(241)의 형태의 범용 컴퓨팅 장치를 포함한다. 컴퓨터(241)의 컴포넌트들로는, 프로세싱 유닛(259), 시스템 메모리(222), 및 시스템 메모리를 포함하는 다양한 시스템 컴포넌트를 프로세싱 유닛(259)에 연결시키는 시스템 버스(221)가 포함되지만, 이에 한정되는 것은 아니다. 시스템 버스(221)는 다양한 버스 아키텍처 중의 임의의 것을 사용하는 로컬 버스, 주변 버스, 및 메모리 버스 또는 메모리 컨트롤러를 포함하는 몇 가지 유형의 버스 구조 중의 임의의 것일 수 있다. 예로서, 이러한 아키텍처는 산업 표준 아키텍처(ISA) 버스, 마이크로 채널 아키텍처(MCA) 버스, 인핸스드 ISA(Enhanced ISA; EISA) 버스, 비디오 일렉트로닉스 표준 어소시에이션(VESA) 로컬 버스, 및 메자닌(Mezzanine) 버스로도 알려진 주변 컴포넌트 상호접속(PCI) 버스를 포함하지만, 이에 한정되는 것은 아니다.
컴퓨터(241)는 통상적으로 다양한 컴퓨터 판독가능 매체를 포함한다. 컴퓨터 판독가능 매체는 컴퓨터(241)에 의해 액세스될 수 있는 임의의 이용가능한 매체일 수 있으며, 휘발성 및 비휘발성 매체, 분리형(removable) 및 비분리형(non-removable) 매체를 둘다 포함한다. 예로서, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함할 수 있지만, 이에 한정되는 것은 아니다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 다른 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 둘다 포함한다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 기타 메모리 기술, CD-ROM, DVD(digital versatile disk) 또는 기타 광 디스크 저장장치, 자기 카세트, 자기 테이프, 자기 디스크 저장 장치 또는 기타 자기 저장 장치, 또는 컴퓨터(241)에 의해 액세스될 수 있고 원하는 정보를 저장하는 데 사용될 수 있는 임의의 기타 매체를 포함하지만, 이에 한정되지 않는다. 통신 매체는 통상적으로 반송파 또는 기타 전송 메커니즘 등의 변조된 데이터 신호에 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈, 또는 다른 데이터를 구현하며, 임의의 정보 전달 매체를 포함한다. "변조된 데이터 신호"라는 용어는 신호 내의 정보를 인코딩하도록 하나 또는 그 이상의 특성을 설정 또는 변경시킨 신호를 의미한다. 예로서, 통신 매체는 유선 네트워크 또는 직접 유선 접속 등의 유선 매체와, 음향, RF, 적외선 및 기타 무선 매체 등의 무선 매체를 포함하지만, 이에 한정되지 않는다. 상술한 것들 중의의 임의의 조합이 컴퓨터 판독가능 매체의 범위 내에 포함되어야 한다.
시스템 메모리(222)는 ROM(223) 및 RAM(260) 등의 휘발성 및/또는 비휘발성 메모리의 형태의 컴퓨터 저장 매체를 포함한다. 시동중과 같은 때에 컴퓨터(241) 내의 구성요소들 간에 정보를 전송하는 것을 돕는 기본 루틴을 포함하는 기본 입출력 시스템(224; BIOS)은 일반적으로 ROM(223)에 저장된다. RAM(260)은 일반적으로 프로세싱 유닛(259)에 즉시 액세스할 수 있고 및/또는 프로세싱 유닛(259)에 의해 현재 작동되는 프로그램 모듈 및/또는 데이터를 포함한다. 예로서, (한정하고자 하는 것은 아님) 도 6은 운영 체제(225), 애플리케이션 프로그램(226), 기타 프로그램 모듈(227), 및 프로그램 데이터(228)를 도시한다.
컴퓨터(241)는 또한 다른 분리형/비분리형, 휘발성/비휘발성 컴퓨터 저장 매체를 포함할 수 있다. 단지 예로서, 도 6에는 비분리형 비휘발성 자기 매체로부터 판독하거나 그 자기 매체에 기록하는 하드 디스크 드라이브(238), 분리형 비휘발성 자기 디스크(254)로부터 판독하거나 그 자기 디스크에 기록하는 자기 디스크 드라이브(239), 및 CD-ROM 또는 기타 광 매체 등의 분리형 비휘발성 광 디스크(253)로부터 판독하거나 그 광 디스크에 기록하는 광 디스크 드라이브(240)가 도시되어 있다. 예시적인 운영 환경에서 사용될 수 있는 다른 분리형/비분리형, 휘발성/비휘발성 컴퓨터 저장 매체는 자기 테이프 카세트, 플래시 메모리 카드, DVD(Digital versatile disk), 디지털 비디오 테이프, 고체 RAM, 고체 ROM 등을 포함하지만 이에 한정되지 않는다. 하드 디스크 드라이브(238)는 일반적으로 인터페이스(234)와 같은 비분리형 메모리 인터페이스를 통해 시스템 버스(221)에 접속되고, 자기 디스크 드라이브(239) 및 광 디스크 드라이브(240)는 일반적으로 인터페이스(235)와 같은 분리형 메모리 인터페이스에 의해 시스템 버스(221)에 접속된다.
앞서 기술되고 도 6에 도시된 드라이브 및 그 관련 컴퓨터 저장 매체는 컴퓨터(241)를 위한 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 및 기타 데이터의 저장을 제공한다. 도 6에서, 예를 들어, 하드 디스크 드라이브(238)는 운영 체제(258), 애플리케이션 프로그램(257), 기타 프로그램 모듈(256), 및 프로그램 데이터(255)를 저장하는 것으로 도시된다. 이들 컴포넌트는 운영 체제(225), 애플리케이션 프로그램(226), 기타 프로그램 모듈(227), 및 프로그램 데이터(228)와 동일할 수도 있고 다를 수도 있다. 운영 체제(228), 애플리케이션 프로그램 (257), 다른 프로그램 모듈(256), 및 프로그램 데이터(255)는 최소한 다른 복사본(different copies)임을 나타내기 위하여 다른 번호를 부여하였다. 사용자는 일반적으로 마우스, 트랙볼, 또는 터치 패드라 불리는 포인팅 장치(252) 및 키보드(251)와 같은 입력 장치를 통해 컴퓨터(241)에 명령 및 정보를 입력할 수 있다. (도시되지 않은) 기타 입력 장치는 마이크로폰, 조이스틱, 게임 패드, 위성 안테나, 스캐너 등을 포함할 수 있다. 이들 입력 장치 및 그외의 입력 장치는 시스템 버스에 연결된 사용자 입력 인터페이스(236)를 통해 종종 프로세싱 유닛(259)에 접속되지만, 병렬 포트, 게임 포트 또는 유니버설 시리얼 포트(USB)와 같은 기타 인터페이스 및 버스 구조에 의해 접속될 수 있다. 모니터(242) 또는 다른 유형의 디스플레이 장치는 또한 비디오 인터페이스(232) 등의 인터페이스를 통해 시스템 버스(221)에 접속된다. 모니터 외에도, 컴퓨터는 또한 출력 주변 인터페이스(233)를 통해 접속될 수 있는 스피커(244) 및 프린터(243) 등의 기타 주변 출력 장치를 포함할 수 있다.
컴퓨터(241)는 원격 컴퓨터(246)와 같은 하나 이상의 원격 컴퓨터로의 논리적 접속을 이용한 네트워크 환경에서 동작할 수 있다. 원격 컴퓨터(246)는 퍼스널 컴퓨터, 서버, 라우터, 네트워크 PC, 피어(peer) 장치, 또는 기타 공통 네트워크 노드일 수 있으며, 비록 도 6에는 메모리 저장 장치(247)만이 도시되어 있지만, 컴퓨터(241)에 관하여 상술한 구성요소 중 다수 또는 모든 구성요소를 일반적으로 포함한다. 도 6에 도시된 논리적 접속은 근거리 통신망(LAN; 245) 및 원거리 통신망(WAN; 249)을 포함하지만, 그 외의 네트워크를 포함할 수도 있다. 이러한 네트워 크 환경은 사무실, 기업 광역 컴퓨터 네트워크(enterprise-wide computer network), 인트라넷, 및 인터넷에서 일반적인 것이다.
LAN 네트워크 환경에서 사용되는 경우, 컴퓨터(241)는 네트워크 인터페이스, 즉, 어댑터(237)를 통해 LAN(245)에 접속된다. WAN 네트워크 환경에서 사용되는 경우, 컴퓨터(241)는 일반적으로 인터넷 등의 WAN(249)을 통해 통신을 구축하기 위한 모뎀(250) 또는 기타 수단을 포함한다. 내장형 또는 외장형일 수 있는 모뎀(250)은 사용자 입력 인터페이스(236) 또는 기타 적절한 메커니즘을 통해 시스템 버스(221)에 접속될 수 있다. 네트워크 환경에서, 컴퓨터(241)에 관하여 도시된 프로그램 모듈 또는 그 일부분은 원격 메모리 저장 장치에 저장될 수 있다. 예로서 (한정하고자 하는 것은 아님), 도 6은 메모리 장치(247)에 상주하는 원격 애플리케이션 프로그램(248)을 도시한다. 도시된 네트워크 접속은 예시적인 것이며, 컴퓨터들간의 통신 링크를 구축하는 그 외의 수단이 사용될 수 있다고 인식될 것이다.
본원에 기술된 다양한 기법은 하드웨어 또는 소프트웨어, 적절한 경우, 이 둘의 조합에 관련하여 구현될 수 있다고 이해되어야 한다. 그러므로, 본 발명의 방법 및 장치 또는 그 특정 양태들 또는 그 일부는, 플로피 디스켓, CD-ROM, 하드 드라이브, 또는 임의의 다른 기기-판독가능 저장 매체와 같은, 실질적인 매체에 구현되는 프로그램 코드(즉, 명령어)의 형태를 취할 수 있으며, 여기에서 프로그램 코드가 컴퓨터와 같은 기기에 로딩되고 이러한 기기에 의해 실행될 때, 기기는 본 발명을 실행하는 장치가 된다. 프로그램 코드를 프로그램가능한 컴퓨터에서 실행 시킬 경우, 컴퓨팅 장치는 일반적으로 프로세서, (휘발성 및 비휘발성 메모리 및/또는 저장 구성 요소를 포함하는) 프로세서에 의해 판독가능한 저장 매체, 적어도 하나의 입력 장치, 및 적어도 하나의 출력 장치를 포함한다. 예를 들면, API, 재사용 가능한 제어, 등의 사용을 통하여, 본 발명과 관련하여 기술된 프로세스들을 구현하거나 이용할 수 있는 하나 이상의 프로그램들이 존재한다. 이러한 프로그램들은 컴퓨터 시스템과 통신하기 위하여 고급 프로시저 언어 또는 객체 지향 프로그래밍 언어로 구현되는 것이 바람직하다. 그러나, 프로그램(들)은 원한다면, 어셈블리어 또는 기기어로 구현될 수 있다. 임의의 경우에서, 언어는 컴파일되는 언어 또는 해석되는 언어일 수 있고, 하드웨어 구현물과 결합될 수 있다.
예시적인 실시예는 하나 이상의 독립형 컴퓨터 시스템의 관점에서 본 발명의 양태를 이용하기로 간주하지만, 본 발명은 이에 제한되지 않으며, 오히려 네트워크 또는 분산형 컴퓨팅 환경과 같은 임의의 컴퓨팅 환경에 관련하여 구현될 수 있다. 또한, 본 발명의 양태는 복수의 프로세싱 칩 또는 장치에서 또는 이들을 통하여 구현될 수 있고, 마찬가지로 저장 장치는 복수의 장치를 통하여 영향을 받을 수 있다. 이러한 장치는 퍼스널 컴퓨터, 네트워크 서버, 핸드헬드 장치, 수퍼컴퓨터, 또는 자동차나 비행기와 같은 다른 시스템에 통합된 컴퓨터를 포함할 수 있다.
도 7에는 예시적인 네트워크 컴퓨팅 환경이 제공된다. 본 기술 분야에서 일반적인 기술을 가진 자라면 네트워크는 임의의 컴퓨터 또는 다른 클라이언트나 서버 장치에, 또는 분산형 컴퓨팅 환경으로 접속될 수 있음을 인식할 수 있다. 이 점에 있어서, 임의의 개수의 프로세싱 유닛, 메모리 유닛, 또는 저장 유닛을 구비 한 임의의 컴퓨터 시스템 또는 환경, 및 동시에 일어나는 임의의 개수의 애플리케이션 또는 프로세스가 제공되는 시스템 및 방법에 관련하여 사용하기에 적절하다고 간주된다.
분산형 컴퓨팅은 컴퓨팅 장치와 시스템 간의 교환에 의하여 컴퓨터 자원 및 서비스의 공유를 제공한다. 이들 자원 및 서비스는 정보의 교환, 파일을 위한 디스크 저장 장치 및 캐쉬 저장 장치를 포함한다. 분산형 컴퓨팅은 네트워크 접속을 이용하여, 클라이언트가 기업 전체에 이익을 주기 위하여 이들의 총 능력을 강화할 수 있게 한다. 이러한 점에서, 다양한 장치는 본원에 기술된 프로세스들을 포함할 수 있는 자원, 객체, 또는 애플리케이션을 포함할 수 있다.
도 7은 예시적인 네트워크 또는 분산형 컴퓨팅 환경의 개략도를 제공한다. 이 환경은 컴퓨팅 장치(271, 272, 276, 및 277), 객체(273, 274, 및 275), 및 데이터베이스(278)를 포함한다. 이들 엔티티(271, 272, 273, 274, 275, 276, 277 및 278) 각각은 프로그램, 방법, 데이터 저장, 프로그램가능한 로직 등을 이용하거나 포함할 수 있다. 엔티티(271, 272, 273, 274, 275, 276, 277 및 278)는 PDA, 오디오/비디오 장치, MP3 플레이어, 퍼스널 컴퓨터, 등과 같은 서로 다르거나 동일한 장치 중 일부분을 스패닝(span)할 수 있다. 각각의 엔티티(271, 272, 273, 274, 275, 276, 277 및 278)는 통신 네트워크(270)에 의하여 다른 엔티티(271, 272, 273, 274, 275, 276, 277 및 278)와 통신할 수 있다. 이러한 점에서, 임의의 엔티티가 데이터베이스(278) 또는 다른 저장 구성 요소의 보유 및 갱신을 담당할 수 있다.
이 네트워크(270)는 도 7의 시스템에 서비스를 제공하는 다른 컴퓨팅 엔티티를 직접 포함할 수 있고, 그 자체가 복수의 상호접속된 네트워크를 직접 나타낼 수 있다. 본 발명의 양태에 따르면, 각각의 엔티티(271, 272, 273, 274, 275, 276, 277 및 278)는, 하나 이상의 다른 엔티티(271, 272, 273, 274, 275, 276, 277 및 278)의 서비스를 요청하기 위한, API 또는 다른 객체를 이용할 수 있는 이산 기능적 프로그램 모듈, 소프트웨어, 펌웨어 및/또는 하드웨어를 포함할 수 있다.
참조번호(275)와 같은 객체는 다른 컴퓨팅 장치(276)에 호스팅될 수 있음을 또한 인식할 수 있다. 그러므로, 도시된 물리적 환경이 컴퓨터와 같은 접속된 장치를 도시할 수 있지만, 이러한 도시는 단지 예시적이며 대안으로 PDA, 텔레비전, MP3 플레이어 등과 같은 다양한 디지털 장치, 인터페이스와 같은 소프트웨어 객체, COM 객체, 등을 포함하는 물리적 환경이 도시되거나 기술될 수 있다.
분산형 컴퓨팅 환경을 지원하는 다양한 시스템, 컴포넌트, 네트워크 구성이 존재한다. 예를 들면, 컴퓨팅 시스템은 로컬 네트워크 또는 원격적으로 분산된 네트워크를 통해, 유선 또는 무선 시스템에 함께 접속될 수 있다. 동시에, 다수의 네트워크가 인터넷에 접속되며, 이 인터넷은 원격적으로 분산된 컴퓨팅에 대한 인프라스트럭처(infrastructure)를 제공하며 다양한 다른 네트워크를 포함한다. 임의의 이러한 인프라스트럭처는, 인터넷에 연결되었든 연결되지 않았든, 제공되는 시스템 및 방법에 관련하여 이용될 수 있다.
네트워크 인프라스트럭처는 클라이언트/서버, 피어투피어(peer-to-peer), 및 복합적인 아키텍처와 같은 네트워크 토폴로지를 호스트(host)할 수 있게 할 수 있 다. "클라이언트"는 관련되지 않은 다른 클래스 또는 그룹의 서비스를 이용하는 클래스 또는 그룹의 멤버이다. 컴퓨팅할 때, 클라이언트는 프로세스, 즉, 대략적으로 다른 프로그램이 제공하는 서비스를 요청하는 명령어 또는 태스크 세트이다. 클라이언트 프로세스는 다른 프로그램 또는 서비스에 대한 임의의 동작적인 상세한 사항을 직접 "알아야" 할 필요 없이 요청된 서비스를 이용한다. 클라이언트/서버 아키텍처, 구체적으로는 네트워크 시스템에서, 클라이언트는 일반적으로 다른 컴퓨터, 즉, 서버가 제공하는 공유 네트워크 자원을 액세스하는 컴퓨터이다. 도 7의 예에서, 임의의 엔티티(271, 272, 273, 274, 275, 276, 277 및 278)는 환경에 따라, 클라이언트, 서버, 또는 이 두 가지 모두가 고려될 수 있다.
서버는 통상적으로 인터넷과 같은 원격 또는 로컬 네트워크를 통하여 액세스될 수 있는 원격 컴퓨터 시스템이지만, 반드시 이렇게 되어야 할 필요는 없다. 클라이언트 프로세스가 제1 컴퓨터 시스템에서 활성화될 수 있고, 서버 프로세스가 제2 컴퓨터 시스템에서 활성화될 수 있어, 통신 매체를 통하여 서로 통신하므로, 분산된 기능을 제공하고 복수의 클라이언트가 서버의 기능들이 수집된 정보를 이용할 수 있게 한다. 임의의 소프트웨어 객체는 복수의 컴퓨팅 장치 또는 객체를 통하여 분산될 수 있다.
클라이언트(들) 및 서버(들)는 프로토콜 계층(들)에 의해 제공되는 기능을 이용하여 서로 통신한다. 예를 들면, HTTP(HyperText Transfer Protocal)는 WWW(World Wide Web), 또는 "웹"에 관련하여 이용되는 일반적인 프로토콜이다. 통상적으로, 서버 또는 클라이언트 컴퓨터가 서로를 식별하기 위하여 IP(Internet Protocol) 주소와 같은 컴퓨터 네트워크 주소 또는 URL(Universal Resource Locator)와 같은 다른 참조자를 이용할 수 있다. 네트워크 주소는 URL 주소를 말할 수 있다. 예를 들면, 고용량 통신을 위하여 클라이언트(들) 및 서버(들)가 TCP/IP 접속(들)을 통해 서로 연결될 수 있는 통신 매체를 통하여 통신이 제공될 수 있다.
도 6에 제공된 일반적인 프레임워크에 따라서 구축될 수 있는 다양한 컴퓨팅 환경 및 도 7에 제공된 일 네트워크 환경과 같은 네트워크 환경에서 컴퓨팅할 때 일어날 수 있는 또 다른 변형에 비추어 보면, 본원에서 제공된 시스템 및 방법은 절대 특정 컴퓨팅 아키텍처에 제한되는 것으로 해석될 수 없다. 대신, 본 발명은 임의의 하나의 실시예로 제한되지 않아야 하며, 오히려 특허 청구 범위에 따른 범위 및 넓이로 해석되어야 한다.
결론
본원에 기술된 다양한 시스템, 방법 및 기법은 하드웨어 또는 소프트웨어, 적절한 경우, 이 둘의 조합으로 구현될 수 있다. 그러므로, 본 발명의 방법 및 장치 또는 그 특정 양태들 또는 그 일부는, 플로피 디스켓, CD-ROM, 하드 드라이브, 또는 임의의 다른 기기-판독가능 저장 매체와 같은, 실질적인 매체에 구현되는 프로그램 코드(즉, 명령어)의 형태를 취할 수 있으며, 여기에서 프로그램 코드가 컴퓨터와 같은 기기에 로딩되고 이러한 기기에 의해 실행될 때, 기기는 본 발명을 실행하는 장치가 된다. 프로그램 코드를 프로그램가능한 컴퓨터에서 실행시킬 경우, 컴퓨터는 일반적으로 프로세서, (휘발성 및 비휘발성 메모리 및/또는 저장 구성 요소를 포함하는) 프로세서에 의해 판독가능한 저장 매체, 적어도 하나의 입력 장치, 및 적어도 하나의 출력 장치를 포함할 것이다. 하나 이상의 프로그램은 컴퓨터 시스템과 통신하기 위하여 고급 프로시저 언어 또는 객체 지향 프로그래밍 언어로 구현되는 것이 바람직하다. 그러나, 프로그램(들)은 원한다면, 어셈블리어 또는 기계어로 구현될 수 있다. 임의의 경우에서, 언어는 컴파일되는 언어 또는 해석되는 언어일 수 있고, 하드웨어 구현물과 결합될 수 있다.
본 발명의 방법 및 장치는 또한 전선이나 케이블, 광섬유, 또는 임의의 다른 형태의 전송 등과 같은 몇몇의 전송 매체를 통하여 전송되는 프로그램 코드 형태로 구현될 수 있으며, 여기에서, 프로그램 코드가 수신되고 EPROM, 게이트 어레이, PLD(programmable logic device), 클라이언트 컴퓨터, 비디오 레코더, 등과 같은 기기에 로딩되고 이 기기에 의해 실행될 때, 기기는 본 발명을 실행하는 장치가 된다. 범용 프로세서에서 구현될 경우, 프로그램 코드는 프로세서와 결합하여 본 발명의 인덱싱 기능을 수행하도록 동작하는 고유한 장치를 제공한다.
본 발명은 다양한 도면의 바람직한 실시예에 관련하여 기술되었지만, 다른 유사한 실시예가 이용될 수 있거나 본 발명의 동일한 기능을, 본 발명으로부터 벗어나지 않고 수행하도록 변형 및 추가가 기술된 실시예에 이루어질 수 있다고 이해되어야 한다. 예를 들면, 본 발명의 예시적인 실시예가 퍼스널 컴퓨터의 기능을 에뮬레이션하는 디지털 장치의 관점에서 기술되었지만, 본 기술 분야에서 숙련된 기술을 가진 자라면 본 발명은 이러한 디지털 장치로 한정되지 않으며, 본 명세서 에서 기술된 바와 같이, 게임 콘솔, 핸드헬드 컴퓨터, 휴대용 컴퓨터 등과 같은 유선 또는 무선일 수 있는, 임의의 개수의 기존의 또는 새로운, 컴퓨팅 장치 또는 환경에 적용할 수 있으며, 통신 네트워크를 통해 접속되고 이 네트워크를 통해 대화하는 임의의 개수의 컴퓨팅 장치에 적용될 수 있다. 또한, 특히 무선 네트워크 장치의 개수가 계속하여 증가하고 있기 때문에 본원에서는 핸드헬드 장치 운영 체제 및 다른 애플리케이션 특정 하드웨어/소프트웨어 인터페이스 시스템을 포함하는 다양한 컴퓨터 플랫폼을 고려한다는 것이 강조되어야 한다. 그러므로, 본 발명은 임의의 하나의 실시예에 제한되지 않아야 하며, 오히려 특허 청구 범위와 관련된 범위 및 넓이 내에서 해석되어야 한다.
마지막으로, 본원에 기술된 개시된 실시예들은 다른 프로세서 아키텍처, 컴퓨터-기반 시스템, 또는 시스템 가상화용으로 구성될 수 있고, 이러한 실시예는 본원에 이루어진 게시물에 의해 예측될 수 있다고 나타나므로, 본 발명은 본원에 기재된 특정 실시예로 제한되는 것이 아니라 보다 광범위하게 해석되어야 한다. 마찬가지로, 프로세서 가상화 이외의 목적으로 종합적인 명령어를 이용하는 것 또한 본원에 이루어진 게시물에 의해 예측될 수 있고, 프로세서 가상화 이외의 다른 관점으로 종합적인 명령어를 이렇게 이용하는 것은 어느 경우나 본원에 이루어진 게시물로 보다 광범위하게 해석되어야 한다.
본 발명은 설계 시에 엔터티들의 검증을 갖는 다중 엔터티들 및 관련된 로직을 구성하는 구조 패턴들을 캡처하는 것은 물론, 임의의 적용된 패턴을 지원하고 패턴 특정 코드를 호출하는 런타임 프레임워크를 제공하는 시스템 및 방법을 제공한다. 개발자들은 소프트웨어를 개발할 때 캡처된 패턴을 선언적으로 재사용할 수 있으며, 런타임 시에 애플리케이션이 모델 구동되고 모델 데이터를 런타임 시에 해석한다는 이점이 있다.
부록 A: 정의 및 용어
REA Resource, Events and Agent - 비즈니스 도메인을 위해 설정된 온톨로지(ontology)
Entity Pattern 하나 이상의 엔터티 롤들로 구성된 개념 패턴. 본원에 기술된 Header-Line 패턴은 Entity Pattern의 일례이다.
Entity Role Class 다른 Entity Roles에 대해 요구되는 속성들 및 관계를 기술한다. Header-Line 패턴은 적용된 Line Entity Role을 갖는 Entity에 대한 구성을 요구하는 Header Entity Role로 구성될 것이다. Entity Role은 여러 목적을 위해 Entity Role Class와 함께 교환할 수 있게 사용될 것이다.
Entity Role 적용된 Entity Role Class의 인스턴스이다.
BED Business Entity Designer - 엔터티를 설계하는데 사용되는 시각적 설계 표면.
Hosting Entity Entity Role이 적용되는 Entity.
Entity Type Category Entity Role을 위해 사용되는 원시/이전의 용어.
Property Pattern PARAMETERIZED AND REUSABLE IMPLEMENTATIONS OF BUSINESS LOGIC PATTERNS 특허의 MBF 구현

Claims (32)

  1. 데이터 모델들의 구조를 캡처하는 방법으로서,
    상기 데이터 모델 내의 적어도 하나의 엔터티(entity) 구조에 기초하여 엔터티 패턴을 작성하는 단계를 포함하는 방법.
  2. 제1항에 있어서, 상기 엔터티 패턴의 애플리케이션이 상기 엔터티 패턴을 준수하는(comply with)지를 보증하기 위해서 상기 애플리케이션을 검증하는(validating) 메커니즘을 제공하는 단계를 더 포함하는 방법.
  3. 제2항에 있어서, 검증 메커니즘을 제공하는 상기 동작(act)은,
    상기 엔터티 패턴의 상기 애플리케이션의 일부로서 엔터티 패턴 정보를 보유하기 위한 메커니즘을 제공하는 단계와,
    상기 보유된 엔터티 패턴 정보를 사용하여 상기 애플리케이션이 상기 엔터티 패턴을 고수(adhere to)하는지 여부를 체크하는 메커니즘을 제공하는 단계
    를 포함하는 방법.
  4. 제2항에 있어서, 상기 엔터티 패턴은 상기 애플리케이션이 상기 엔터티 패턴을 고수하는지 여부를 체크하는데 사용되는 적어도 하나의 엔터티 롤(entity role)을 갖는 방법.
  5. 제4항에 있어서,
    상기 엔터티 롤에 대한 대응 클래스를 생성하는 단계 - 상기 클래스는 상기 엔터티 롤에 의해 기술되는 구조를 가지며, 첫번째 클래스는 상기 엔터티 패턴의 다른 롤들에 대한 탐색(navigating)을 허용함 - 를 더 포함하는 방법.
  6. 제1항에 있어서, 엔터티 패턴을 작성하는 상기 동작은,
    상기 엔터티 패턴 설계의 일부로서 선언적으로(declaratively) 적용된 프로그래밍 모델을 생성하는 단계와,
    상기 프로그래밍 모델에 관련하여, 상기 엔터티 패턴의 애플리케이션에 대한 지식을 필요로 하지 않고 상기 엔터티 패턴을 정의하는 소프트웨어 코드를 기입하는 단계를 포함하는 방법.
  7. 제6항에 있어서, 상기 엔터티 패턴 내에 선언적으로 적용된 기능(funtionality)을 포함하는 단계를 더 포함하는 방법.
  8. 데이터 모델들의 구조를 캡처하는 방법을 수행하기 위한 명령어를 저장한 컴퓨터 판독 가능 매체로서, 상기 방법은 상기 데이터 모델 내의 적어도 하나의 엔터티 구조에 기초하여 엔터티 패턴을 작성하는 단계를 포함하는 컴퓨터 판독 가능 매체.
  9. 제8항에 있어서, 상기 엔터티 패턴의 애플리케이션이 상기 엔터티 패턴을 준수하는지를 보증하기 위해서 상기 애플리케이션을 검증하는 또 하나의 동작을 수행하기 위한 명령어를 저장하는 컴퓨터 판독 가능 매체.
  10. 제9항에 있어서, 상기 검증 동작은,
    상기 엔터티 패턴의 상기 애플리케이션의 일부로서 엔터티 패턴 정보를 보유하는 단계와,
    상기 보유된 엔터티 패턴 정보를 사용하여 상기 애플리케이션이 상기 엔터티 패턴을 고수하는지 여부를 체크하는 단계
    를 포함하는 컴퓨터 판독 가능 매체.
  11. 제9항에 있어서, 상기 엔터티 패턴은 상기 애플리케이션이 상기 엔터티 패턴을 고수하는지 여부를 체크하는데 사용되는 적어도 하나의 엔터티 롤을 갖는 컴퓨터 판독 가능 매체.
  12. 제11항에 있어서,
    상기 엔터티 롤에 대한 대응 클래스를 생성하기 위해 저장된 명령어를 더 포함하고, 상기 클래스는 상기 엔터티 롤에 의해 기술되는 구조를 가지며, 첫번째 클래스는 상기 엔터티 패턴의 다른 롤들에 대한 탐색을 허용하는 컴퓨터 판독 가능 매체.
  13. 제9항에 있어서, 엔터티 패턴을 작성하는 상기 동작은,
    상기 엔터티 패턴 설계의 일부로서 선언적으로 적용된 프로그래밍 모델을 생성하는 단계와,
    상기 프로그래밍 모델에 관련하여, 상기 엔터티 패턴의 애플리케이션에 대한 지식을 필요로 하지 않고 상기 엔터티 패턴을 정의하는 소프트웨어 코드를 기입하는 단계
    를 포함하는 컴퓨터 판독 가능 매체.
  14. 제13항에 있어서, 상기 엔터티 패턴 내에 선언적으로 적용된 기능을 포함하기 위해 저장된 명령어를 더 포함하는 컴퓨터 판독 가능 매체.
  15. 데이터 모델들의 구조를 사용하는 방법으로서,
    상기 데이터 모델 내의 적어도 하나의 엔터티 구조에 기초하여 엔터티 패턴을 작성하는 단계, 및
    엔터티 패턴-특정 코드를 생성하는 메커니즘을 제공하는 단계
    를 포함하는 방법.
  16. 제15항에 있어서, 엔터티 롤들이 엔터티 패턴의 애플리케이션에 의해 점화된 (fired) 이벤트들에 가입(subscribe to)하기 위한 메커니즘을 제공하는 단계를 더 포함하며, 상기 엔터티 롤은 정의된 속성들(properties) 및 관계들(relations)을 갖는 대응하는 클래스를 갖는 방법.
  17. 제15항에 있어서, 적용된 엔터티 롤들의 리스트를 알기 위해 상기 엔터티 구조의 인스턴스를 쿼리하는 메커니즘을 제공하는 단계를 더 포함하는 방법.
  18. 제15항에 있어서, 특정 엔터티 롤의 존재(presence)를 알기 위해 상기 엔터티 구조의 인스턴스를 쿼리하는 메커니즘을 제공하는 단계를 더 포함하는 방법.
  19. 제15항에 있어서, 상기 엔터티 패턴의 애플리케이션이 상기 엔터티 패턴을 준수하는지를 보증하기 위해서 상기 애플리케이션을 검증하는 메커니즘을 제공하는 단계를 더 포함하는 방법.
  20. 제15항에 있어서, 상기 엔터티 패턴의 구성 요소들에 기초하여 사용자 인터페이스(UI)를 자동적으로 생성하는 단계를 더 포함하는 방법.
  21. 제20항에 있어서, 상기 UI를 생성하는 상기 동작은,
    상기 UI의 레이아웃을 상기 엔터티 패턴에 링크하는 단계와,
    일관된 UI를 제공하기 위해서 상기 엔터티 패턴의 적용된 엔터티 롤을 검사 하는 단계
    를 포함하는 방법.
  22. 제15항에 있어서,
    상기 엔터티 패턴의 정의의 일부로서 사용자 지정 메타데이터(custom metadata)를 정의하는 단계,
    상기 엔터티 패턴을 적용할 때 상기 메타데이터를 특정하는 메커니즘을 제공하는 단계, 및
    런타임(runtime) 시에 상기 사용자 지정 메타데이터를 판독하는 메커니즘을 제공하는 단계
    를 더 포함하는 방법.
  23. 제15항에 있어서, 상기 데이터 모델 내의 적어도 하나의 엔터티 구조에 기초하여 작성된 상기 엔터티 패턴의 구성 요소들을 사용하여 사용자 인터페이스(UI)를 자동으로 생성하는 단계를 더 포함하는 방법.
  24. 데이터 모델들의 구조를 사용하는 방법을 수행하기 위한 명령어를 저장한 컴퓨터 판독 가능 매체로서, 상기 방법은,
    상기 데이터 모델 내의 적어도 하나의 엔터티 구조에 기초하여 엔터티 패턴을 작성하는 단계, 및
    엔터티 패턴-특정 코드를 생성하는 메커니즘을 제공하는 단계
    를 포함하는 컴퓨터 판독 가능 매체.
  25. 제24항에 있어서, 엔터티 롤들이 엔터티 패턴의 애플리케이션에 의해 점화된 이벤트들에 가입하기 위한 메커니즘을 제공하는 또 다른 동작을 수행하는 명령어를 저장하며, 상기 엔터티 롤은 정의된 속성들 및 관계들을 갖는 대응하는 클래스를 갖는 컴퓨터 판독 가능 매체.
  26. 제24항에 있어서, 적용된 엔터티 롤들의 리스트를 알기 위해 상기 엔터티 구조의 인스턴스를 쿼리하는 메커니즘을 제공하는 또 다른 동작을 수행하는 명령어를 저장한 컴퓨터 판독 가능 매체.
  27. 제24항에 있어서, 특정 엔터티 롤의 존재를 알기 위해 상기 엔터티 구조의 인스턴스를 쿼리하는 메커니즘을 제공하는 또 다른 동작을 수행하는 명령어를 저장한 컴퓨터 판독 가능 매체.
  28. 제24항에 있어서, 상기 엔터티 패턴의 애플리케이션이 상기 엔터티 패턴을 준수하는지를 보증하기 위해서 상기 애플리케이션을 검증하는 메커니즘을 제공하는 또 다른 동작을 수행하는 명령어를 저장한 컴퓨터 판독 가능 매체.
  29. 제24항에 있어서, 상기 엔터티 패턴의 구성 요소들에 기초하여 사용자 인터페이스(UI)를 자동적으로 생성하는 또 다른 동작을 수행하는 명령어를 저장한 컴퓨터 판독 가능 매체.
  30. 제29항에 있어서, 상기 UI를 생성하는 상기 동작은,
    상기 UI의 레이아웃을 상기 엔터티 패턴에 링크하는 단계와,
    일관된 UI를 제공하기 위해서 상기 엔터티 패턴의 적용된 엔터티 롤을 검사하는 단계
    를 포함하는 컴퓨터 판독 가능 매체.
  31. 제24항에 있어서,
    상기 엔터티 패턴의 정의의 일부로서 사용자 지정 메타데이터를 정의하고,
    상기 엔터티 패턴을 적용할 때 상기 메타데이터를 특정하는 메커니즘을 제공하며,
    런타임 시에 상기 사용자 지정 메타데이터를 판독하는 메커니즘을 제공하는 또 다른 동작을 수행하는 명령어를 저장한 컴퓨터 판독 가능 매체.
  32. 제24항에 있어서, 상기 데이터 모델 내의 적어도 하나의 엔터티 구조에 기초하여 작성된 상기 엔터티 패턴의 구성 요소들을 사용하여 사용자 인터페이스(UI)를 자동으로 생성하는 또 다른 동작을 수행하는 명령어를 저장한 컴퓨터 판독 가능 매 체.
KR1020050120670A 2005-01-28 2005-12-09 엔터티 패턴들을 사용하여 데이터 모델의 구조를 캡처하는시스템 및 방법 KR101219960B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US11/046,127 US7698293B2 (en) 2005-01-28 2005-01-28 System and methods for capturing structure of data models using entity patterns
US11/045,756 2005-01-28
US11/046,127 2005-01-28
US11/045,756 US7636911B2 (en) 2005-01-28 2005-01-28 System and methods for capturing structure of data models using entity patterns

Publications (2)

Publication Number Publication Date
KR20060087392A true KR20060087392A (ko) 2006-08-02
KR101219960B1 KR101219960B1 (ko) 2013-01-09

Family

ID=36569658

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050120670A KR101219960B1 (ko) 2005-01-28 2005-12-09 엔터티 패턴들을 사용하여 데이터 모델의 구조를 캡처하는시스템 및 방법

Country Status (3)

Country Link
EP (1) EP1686522A1 (ko)
JP (1) JP5214108B2 (ko)
KR (1) KR101219960B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100943294B1 (ko) * 2007-10-11 2010-02-18 중소기업은행 데이터 포털 서비스 시스템 및 방법

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7089530B1 (en) 1999-05-17 2006-08-08 Invensys Systems, Inc. Process control configuration system with connection validation and configuration
US6973640B2 (en) 2000-10-04 2005-12-06 Bea Systems, Inc. System and method for computer code generation

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100943294B1 (ko) * 2007-10-11 2010-02-18 중소기업은행 데이터 포털 서비스 시스템 및 방법

Also Published As

Publication number Publication date
JP2006209780A (ja) 2006-08-10
JP5214108B2 (ja) 2013-06-19
EP1686522A1 (en) 2006-08-02
KR101219960B1 (ko) 2013-01-09

Similar Documents

Publication Publication Date Title
US7698293B2 (en) System and methods for capturing structure of data models using entity patterns
Reussner et al. Modeling and simulating software architectures: The Palladio approach
US8122106B2 (en) Integrating design, deployment, and management phases for systems
JP5099982B2 (ja) 完全な柔軟性を有する自動化に基づくユーザインターフェースを生成する方法および装置
US7945596B2 (en) Programming model for customized data objects
Morin et al. An aspect-oriented and model-driven approach for managing dynamic variability
US7684964B2 (en) Model and system state synchronization
US7836055B2 (en) XNA relationship management
US20200012485A1 (en) Package installation on a host file system using a container
US20100058331A1 (en) Automated deployment of defined topology in distributed computing environment
US20020144256A1 (en) Method of deployment for concurrent execution of multiple versions of an integration model on an integration server
US7665014B2 (en) Method and apparatus for generating forms using form types
US20060259386A1 (en) Building digital assets for use with software applications
US7636911B2 (en) System and methods for capturing structure of data models using entity patterns
US20060026506A1 (en) Test display module for testing application logic independent of specific user interface platforms
US9373093B2 (en) Gateway service manager for business object applications
US8677319B2 (en) Computer method and system for composite state management of software change requests
KR101219960B1 (ko) 엔터티 패턴들을 사용하여 데이터 모델의 구조를 캡처하는시스템 및 방법
Schattkowsky et al. Uml model mappings for platform independent user interface design
Rubio Pro Spring Dynamic Modules for OSGi Service Platforms
Ramgir et al. Java 9 High Performance: Practical techniques and best practices for optimizing Java applications through concurrency, reactive programming, and more
Driscoll et al. Using the Entity Framework in N-Tier Applications
Szpuszta et al. Pro ASP. NET 3.5 in C# 2008: Includes Silverlight 2
Liu et al. Performance Study

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20151217

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20161220

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20171219

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee