KR20040081790A - 애스펙트 패턴 내의 일반 기능과 개체와의 연결 - Google Patents

애스펙트 패턴 내의 일반 기능과 개체와의 연결 Download PDF

Info

Publication number
KR20040081790A
KR20040081790A KR10-2004-7012483A KR20047012483A KR20040081790A KR 20040081790 A KR20040081790 A KR 20040081790A KR 20047012483 A KR20047012483 A KR 20047012483A KR 20040081790 A KR20040081790 A KR 20040081790A
Authority
KR
South Korea
Prior art keywords
event
pattern
type
business object
types
Prior art date
Application number
KR10-2004-7012483A
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 KR20040081790A publication Critical patent/KR20040081790A/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/316Aspect-oriented programming techniques

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Digital Computer Display Output (AREA)

Abstract

태스크 지향 사용자 인터페이스(208)는 사용자가 시스템을 통해 안내되기 때문에 시스템의 사용 편의성을 향상시킨다. 태스크는 사용자가 작업을 어떻게 수행하려고 생각하는지와 유사하다. 이것은 사용자의 작업 수행을 돕고 지원한다.

Description

애스펙트 패턴 내의 일반 기능과 개체와의 연결{CONNECTING ENTITIES WITH GENERAL FUNCTIONALITY IN ASPECT PATTERNS}
아주 복잡하면서도 아주 유연성있는 광범위한 컴퓨터 애플리케이션을 프로그래밍할 때, 공통 기능을 추출해내는 것이 요망된다. 기능은 통상 "오려 붙이기"(cut and paste) 방식으로 재사용되며, 명확한 기능의 캡슐화 및 데이터와 메소드의 분리가 없기 때문에 서로 다른 구성 컴포넌트 사이의 인터페이스가 어렵다. 이것은 재사용된 기능이 지능을 갖지 않고, 즉 그 기능이 어디서 왔는지를 모르고 또 그의 선조(progenitor)와 자동적으로 동기화되지 않기 때문에 일관성 결여 및 품질 저하를 가져온다. 게다가, 동일한 기능이 아마도 약간 변형되어 많은 서로 다른 곳에서 반복되어 있기 때문에 유지보수가 힘들다. 따라서, 업데이트가 요구되는 곳을 모두 식별하는 데 시간이 걸리며, 그 과정은 수작업 개입을 필요로 하고 따라서 에러가 발생하기 쉽다.
이들 문제점의 일부를 극복하는 한가지 방법은 객체 지향 프로그래밍(Object Oriented programming)을 사용하는 것이다. 객체 지향 프로그래밍에서는,
· 공통 기능이 잘 정의된 인터페이스를 갖는 객체로 추출될 수 있기 때문에재사용(reuse)이 어느 정도 제어된다.
· 객체가 잘 정의되고 잘 기술된 인터페이스를 가지기 때문에, 상호 운용성(interoperability)이 용이하게 된다.
· 변동성(variance)이 상속(inheritance)의 사용에 의해 제어될 수 있다. 상속은 선조에 대한 어떤 변경도 그의 자손에 적용되도록 해준다.
· 객체가 이상적으로는 "컴퓨터" 영역이 아니라 비지니스 문제 영역에 근간을 두고 있어야 하기 때문에, 추상화의 레벨이 아마도 향상된다.
그렇지만, 여전히 문제점이 존재한다. 예를 들어, 프로그래머가 기반 구조를 책임져야 하고 그 기반 구조 없는 애플리케이션이 없기 때문에, 솔루션을 확장시키는 것이 애로 사항이 될 수 있다.
객체 지향 프로그래밍을 사용하는 보다 구조화된 방식은 "프레임워크" (framework)에 제공될 수 있다. 애플리케이션 개발에 있어서의 "프레임워크"의 이점은 공통 기능이 라이브러리 또는 유틸리티 클래스가 아니라 프레임워크에 제공되어 있다는 것이다. 이 프레임워크는 기본적으로 작업 프로그램의 기반 구조를 구축하는 것 이외에 공통 기능을 제공하는 것에 의해 프레임워크가 된다. 그렇지만, 이러한 종류의 프로그래밍도 상속에 기초하고 있으며, 따라서 용이하게 업그레이드할 수 없다.
최근 수년동안, 프로그래머를 위해 프로그래밍 코드를 체계화한 프레임-기반(frame-based) 프로그래밍 언어를 창안하려는 몇번의 시도가 제안되어 왔다. 이러한 프로그래밍 기술을 도입함으로써 알려지게 된 전체적인 구상은 모든 객체가 사전 정의된 코드에 기초하고 있다는 것이다. 그 중에서도 특히, 이러한 시스템은 IBM에 의한 "주체 지향 프로그래밍(Subject-Oriented Programming)" 및 Xerox PARC Software에 의한 "애스펙트 지향 프로그래밍(Aspect-Oriented Programming)"에서 제시되어 있다.
이러한 프로그래밍 방식이 프로그래머가 객체를 체계화하는 데 도움은 될지라도, 프로그래머는 여전히 스크래치(scratch)로부터 코드를 기록하고 또 이들 기능이 어떻게 결합되는지를 기록함으로써 이들 기능이 어떻게 상호작용하는지를 기술해야 한다. 이 과정은 "위빙"(weaving)이라고도 한다.
이러한 프레임워크-기반 프로그래밍 언어의 단점은 기능들이 변할 때마다 기본적으로 모든 위빙(weaving)을 다시 해야만 하거나 적어도 검사해야만 한다는 것이다. 이것은 프레임워크의 업그레이드를 복잡하고 고비용으로 만든다.
게다가, 객체의 어떤 기능이 위빙 코드(weaving code)에 제공되어진다. 따라서, 위빙 코드가 무엇을 하는지를 프레임워크가 알 방법이 없기 때문에, 프레임워크가 시스템 전반적인 애플리케이션 품질을 보장하는 것은 불가능하다.
본 발명은 하나 이상의 태스크의 구성을 위한 컴퓨터 시스템에 관한 것이다.
도 1은 이벤트 유형, 애스펙트 패턴, 및 애스펙트 유형에 기초한 비지니스 객체 유형의 구성을 나타낸 도면.
도 2는 전달값을 더 포함하는, 도 1에서와 같은 비지니스 객체 유형의 구성을 나타낸 도면.
도 3은 본 발명이 실시될 수 있는 컴퓨터 환경의 일 실시예의 블록도.
도 4는 애플리케이션을 실행하는 데 사용되는 컴포넌트들 뿐만 아니라 애플리케이션을 설계하는 데 사용되는 컴포넌트들의 개요를 제공하는 도면.
도 5는 데이터 스토리지 컴포넌트 뿐만 아니라 저장소 컴포넌트를 포함하는 데이터베이스의 일례를 나타낸 도면.
도 6은 비지니스 객체 콘트롤러(BOC)를 나타낸 도면.
도 7 및 도 8은 이벤트 인스턴스의 실행을 처리하는 여러가지 방법을 나타낸 순서도의 일례를 나타낸 도면.
도 9는 전달값 메카니즘이 어떻게 동작하는지를 나타낸 순서도.
도 10은 규칙 메카니즘이 어떻게 동작하는지를 나타낸 순서도.
도 11은 UI 컴포넌트를 나타낸 도면.
도 12는 태스크 시퀀스의 자동 생성의 일부가 어떻게 수행되는지를 나타낸 순서도.
도 13은 이벤트 유형의 질의를 나타낸 순서도.
태스크 지향(task oriented) 사용자 인터페이스는 사용자가 시스템을 통해 안내되기 때문에 시스템의 사용 용이성을 향상시킨다. 태스크는 사용자가 작업을 어떻게 수행하려고 생각하는지와 유사하다. 이것은 사용자의 작업 수행을 돕고 지원한다.
웹 기반 환경에서, 각각의 정보가 서버로 보내져야만 하기 때문에, 페이지는간단하고 태스크 기반이어야 한다. 서버는 이들 정보에 그 다음 단계로 응답하고, 이하 마찬가지이다. 양호한 웹 디자인은 페이지당 하나의 태스크에 초점을 맞추고 페이지들 전체에 걸쳐 명시적인 (즉, 단지 앞으로 및 뒤로 버튼이 아닌) 앞으로 및 뒤로 내비게이션을 제공하는 것을 의미할 수 있다. 이와 마찬가지로, 귀납적 내비게이션(inductive navigation)은 각 페이지 상에서의 활동을 하나의 1차적 태스크로 집중시키는 것으로 시작한다. 귀납적 내비게이션의 주요 원리는 이하의 4 단계로 요약될 수 있다.
1. 각 페이지를 단일 태스크에 초점을 맞춘다.
2. 태스크를 기술 또는 지명한다.
3. 페이지의 내용을 태스크에 적합하게 만든다. 태스크가 페이지 상에 기술된다. 페이지 상의 콘트롤을 가지고 태스크를 어떻게 수행할지가 명확해야 한다.
4. 2차적 태스크로의 링크를 제공한다.
웹 디자인과 유사한 방식으로, 이전의 태스크에 응답하여 그 다음 태스크가 생성되어 사용자에게 제공된다. 각각의 태스크 시퀀스는 사용자에게 올바른 태스크 순서를 제공할 수 있도록 하기 위해 미리 프로그램되어야만 한다. 이것은 사용자 인터페이스(UI)를 제어하는 컴포넌트에서 행해진다. 모든 가능한 태스크 시퀀스가 프로그램되어야만 한다는 것이 단점이다.
본 발명의 한 특징은 태스크 시퀀스를 제공하기 위해 UI를 제어하는 컴포넌트에서의 코드량을 감소시킨다. 이것은 UI를 프로그래밍하거나 구성하고 프로그래밍을 용이하게 하거나 애플리케이션을 구성하는 데 소비하는 시간을 감축시킨다.
본 발명의 광의의 특징에 있어서, 태스크를 구성하기 위한 컴퓨터 시스템이 제공되며, 상기 컴퓨터 시스템은 태스크를 구성하기 위한 디자인 컴포넌트를 포함하고, 이 디자인 컴포넌트는,
- 비지니스 객체 유형들(Business Object Types)의 세트, 및
- 태스크 패턴들(Task Patterns)의 세트
에 액세스하거나 이들을 구비하고 있으며, 상기 태스크 패턴들 중 적어도 하나는,
* 비지니스 객체 인스턴스(Business Object Instance) 상에서 상호작용할 수 있는 런타임 기능을 포함하는 태스크 스텝 패턴(task step pattern)을 적어도 하나 포함하고,
상기 디자인 컴포넌트는 비지니스 객체 유형과 태스크 패턴 사이의 연결을 설정하도록 되어 있다.
다른 광의적 특징에 있어서, 태스크를 구성하는 방법이 제공되며, 상기 방법은,
- 하나 이상의 태스크 패턴을 비지니스 객체 유형과 연결시키는 단계를 포함한다.
컴퓨터 시스템을 사용하여 태스크 시퀀스를 자동적으로 생성하는 방법이 제공되며, 이 방법은,
1. 컴퓨터 시스템을 사용하여 양호하게는 비지니스 객체 유형의 정보를 포함하는 제1 태스크를 애플리케이션의 사용자에게 제공하는 단계,
2. 컴퓨터로의 입력에 응답하여 이벤트 인스턴스(Event Instance)를 기동(fire)시키는 단계,
3. a. 비지니스 객체 유형의 엘리먼트가 상기 이벤트 인스턴스에 반응할 수 있는 상태에 있는지 여부를 식별하고,
b. 반응할 수 없는 경우, 상기 엘리먼트를 상기 이벤트 인스턴스에 반응할 수 있는 상태로 만들기 위해 완료할 필요가 있는 것이 무엇인지를 식별하는 것에 의해 상기 제1 태스크가 완료될 수 있는지 여부를 식별하는 단계, 및
4. 단계 3b에 응답하여, 상기 엘리먼트를 상기 이벤트 인스턴스에 반응할 수 있는 상태로 만들기 위해 완료할 필요가 있는 것이 무엇인지에 관한 정보를 포함하는 태스크를 제공하는 단계를 포함한다.
본 방법의 이점은 애플리케이션 개발자가 모든 가능한 태스크 시퀀스를 구성/프로그램할 필요가 없으며, 따라서 애플리케이션의 프로그래밍/구성을 용이하게 해준다는 것이다. 또한, 이와 같이 하여 태스크 시퀀스의 보다 일관성있는 생성이 보장되어진다. 게다가, 태스크 시퀀스의 자동 생성으로 인해 프로그램 개발자가 태스크 시퀀스를 식별하지 못할(따라서 태스크 시퀀스가 누락될) 위험이 감소된다. 비지니스 객체 유형은 하나 이상의 엘리먼트를 포함할 수 있다. 엘리먼트는 비지니스 객체 유형의 비지니스 객체 인스턴스일 수 있거나, 엘리먼트는 데이터, 메타데이터, 기능, 또는 상태 등의 엘리먼트에 관한 정보를 포함할 수 있다.
본 발명의 일 실시예에서, 이벤트 인스턴스에 반응할 수 없는 상태에 있는 비지니스 객체 유형의 엘리먼트가 더 이상 없을 때까지 단계 3이 반복되는 방법이제공된다.
본 방법의 다른 실시예에서, 단계 1에서의 제1 태스크는 메타데이터, 데이터 등의 정보, 또는 비지니스 객체 유형의 기능에 관한 정보를 포함한다.
또한, 제1 태스크가 비지니스 객체 유형으로 구성된 이벤트 유형의 정보를 포함하는 방법도 본 발명의 범위에 속한다.
본 발명의 다른 실시예는 단계 1이 완전한 또는 부분적으로 생성된 비지니스 객체 인스턴스를 제공하는 단계를 더 포함하는 방법을 제공한다.
또한, 단계 2가 UI 컴포넌트로부터의 제1 메시지를 비지니스 객체 콘트롤러(Business Object Controller)(BOC)로 전송하는 단계를 더 포함하는 방법도 본 발명의 범위에 속한다. 예시적으로, 제1 메시지가 비지니스 객체 인스턴스 등의 이벤트 유형 및 비지니스 객체 유형의 식별 및/또는 상태 정보를 포함하는 방법이 제공된다.
본 발명의 또다른 실시예들에서, 비지니스 객체 유형의 엘리먼트가 애스펙트 인스턴스(Aspect Instance)인 방법이 제공된다. 예시적으로, 단계 3a가 제2 메시지를 애스펙트 인스턴스의 애스펙트 패턴(Aspect Pattern)으로 전송하는 단계를 포함하는 방법이 제공된다. 또한, 제2 메시지가 이벤트 유형의 식별 및/또는 상태 정보를 포함하는 방법이 제공된다. 양호하게는 제2 메시지는 BOC에 의해 전송된다.
또한, 엘리먼트가 이벤트 인스턴스에 대해 반응할 수 있는 상태에 있는지 여부의 정보를 포함하는 제3 메시지를 반환하는 단계를 더 포함하는 방법도 본 발명의 범위 내에 속한다.
또한, 컴퓨터를 사용하여 하나 이상의 엘리먼트를 포함하는 비지니스 객체에 대해 수행할 가능한 태스크의 리스트의 자동 생성 방법도 제공되며, 이 방법은,
1. 컴퓨터로의 입력에 응답하여 비지니스 객체와 관련된 하나 이상의 이벤트 인스턴스를 기동시키는 단계 - 각각의 이벤트 인스턴스는 태스크와 관련됨 -,
2. 비지니스 객체의 하나 이상의 엘리먼트가 이벤트 인스턴스에 반응할 수 있는 상태에 있는지 여부를 식별함으로써 각각의 태스크가 완료될 수 있는지 여부를 식별하는 단계, 및
3. 태스크가 완료될 수 있는 경우, 비지니스 객체에 대해 수행할 가능한 태스크를 포함하는 리스트 상의 태스크를 제공하는 단계를 포함한다.
시스템의 사용자가 비지니스 객체 유형의 하나 이상의 엘리먼트의 상태로 인해 현재 수행될 수 있는 가능한 태스크의 리스트를 제공받는다는 것이 이점이다.
또한, 태스크 시퀀스의 생성에 따라 동작을 수행하도록 프로그램되어 있는 하나 이상의 중앙 처리 장치 등의 프로세서 수단, 태스크 시퀀스의 생성에 있어서 사용되는 데이터를 저장하는 RAM 및 하드 디스크 등의 저장 수단을 포함하는 컴퓨터 시스템을 사용하여 태스크 시퀀스의 자동 생성을 제공하는 단계를 포함하는 방법이 제공되며, 상기 방법은,
1. 컴퓨터 시스템을 사용하여 제1 태스크를 제공하는 단계,
2. 컴퓨터 시스템으로의 입력에 응답하여 컴퓨터 시스템을 사용하여 제1 태스크가 완료될 수 있는지 여부를 질의하는 단계를 포함하며, 이 질의 단계는,
a. 비지니스 객체 유형의 엘리먼트가 제1 이벤트 유형의 이벤트 인스턴스에 반응할 수 있는 상태에 있는지를 질의하는 단계, 및
b. 반응할 수 없는 경우, 그 엘리먼트를 제1 이벤트 유형의 이벤트 인스턴스에 반응할 수 있는 상태로 만들기 위해 컴퓨터 시스템을 사용하여 완료될 필요가 있는 것이 무엇인지를 식별하는 단계를 포함한다.
컴퓨터 시스템은 예를 들면 독립형 컴퓨터 또는 분산 컴퓨터 시스템으로서 구현될 수 있다. 양호하게는, 제1 태스크를 제공하는 단계는 컴퓨터 시스템의 사용자에 의해 행해지는 태스크의 선택에 기초한다.
본 발명의 실시예에서, 단계 2b는 또한, 완료될 필요가 있는 것이 무엇인지의 식별의 결과로서, 그 엘리먼트를 제1 이벤트 유형의 이벤트 인스턴스에 반응할 수 있는 상태로 만들기 위해 완료될 필요가 있는 것이 무엇인지에 관한 정보를 포함하는 태스크를 제공한다.
본 발명의 다른 실시예에서, 엘리먼트에 대한 질의의 결과가 엘리먼트가 이용가능한 기능에 의해 획득되고, 상기 기능은 엘리먼트에 질의함으로써 트리거되는 방법이 제공된다. 양호하게는, 그 기능은 엘리먼트 내에 있다.
또한, 단계 2b의 식별하는 단계가 문제의 엘리먼트가 이용가능한 기능에 의해 행해짐으로써 문제의 엘리먼트를 반응할 수 있는 상태로 만들기 위해 행해질 필요가 있는 것이 무엇인지에 관한 정보를 제공하는 방법도 본 발명의 범위 내에 속한다.
본 발명의 또다른 실시예들에서, 컴퓨터 시스템으로의 입력이 사용자 입력인방법이 제공된다. 또한, 이 입력은 키보드, 보이스 콘트롤(voice control), 컴퓨터 마우스 등을 통해 사용자에 의해 제공될 수 있다. 입력은 또한 연결된 컴퓨터 시스템으로부터 온 것일 수도 있다. 게다가, 입력은 인터넷을 통해 도착할 수 있다.
본 발명의 또다른 실시예에서, 단계 2가 비지니스 객체 유형의 모든 엘리먼트에 대해 반복되는 방법이 제공된다.
또한, 본 발명의 범위 내에서, 비지니스 객체 유형의 엘리먼트가 제1 이벤트 유형의 이벤트 인스턴스에 반응할 수 있는 상태에 있는 경우 단계 2a의 결과로서 제1 이벤트 유형의 이벤트 인스턴스를 기동시키는 단계 3을 더 포함하는 방법이 제공된다.
본 발명의 또다른 실시예에서, 단계 2b의 결과로서, 제공된 태스크가 제1 태스크가 되도록 재귀적으로 할당되고 단계 1 및 단계 2를 반복함으로써 제공된 태스크가 제1 태스크가 되는 방법이 제공된다. 양호하게는, 단계 1 및 단계 2는 1회 이상 반복된다. 또한, 단계 1 및 단계 2의 반복이 제한된 횟수만큼 반복되는 것은 본 발명의 범위 내에 속한다. 양호하게는, 이 제한된 횟수는 1 내지 10인 제한 횟수 등과 같이 사전 정의된다. 또한, 제1 태스크의 모든 태스크 및 모든 그의 부차적 태스크가 성공적으로 완료될 때까지 단계 1 및 단계 2가 반복되는 방법이 제공된다.
본 발명의 다른 실시예들에서, 본 방법을 취소하는 단계를 더 포함하는 방법이 제공된다. 양호하게는, 본 방법은 컴퓨터 시스템으로의 입력으로 인해 취소된다. 본 방법은 키보드, 컴퓨터 마우스, 보이스 콘트롤 등을 통한 입력 등과 같은 사용자 입력으로 인해 취소될 수 있다. 본 방법은 또한 인터넷을 통해 취소될 수 있다. 또한, 본 방법은 연결된 컴퓨터 시스템을 통해 취소될 수 있다.
또한 본 발명의 범위 내에서, 제2 이벤트 유형의 이벤트 인스턴스를 기동시킴으로써 단계 2b에서 제공된 태스크가 완료되며 그에 따라 엘리먼트 유형의 상태를 그 엘리먼트 유형이 제1 이벤트 유형의 이벤트 인스턴스에 반응할 수 있는 상태로 변경하는 단계 2c를 더 포함하는 방법이 제공된다.
본 발명의 또다른 실시예에서, 비지니스 객체 유형의 모든 엘리먼트들이 제1 이벤트 유형의 이벤트 인스턴스에 반응할 수 있을 때까지 단계 2가 반복되는 방법이 제공된다.
또다른 실시예에서, 제1 이벤트 유형의 이벤트 인스턴스가 기동되는 단계 3을 더 포함하는 방법이 제공된다.
또다른 실시예에서, 단계 1에서의 제1 태스크가 메타데이터, 데이터 등의 정보 또는 비지니스 객체 유형의 기능에 관한 정보를 포함하는 방법이 제공된다.
또한, 본 발명의 범위 내에서, 제1 태스크가 비지니스 객체 유형으로 구성된 이벤트 유형의 정보를 포함하는 방법이 제공된다. 양호하게는, 단계 1은 완전한 또는 부분적인 비지니스 객체 인스턴스를 제공하는 단계를 더 포함한다.
본 발명의 또다른 실시예들에서, 단계 2가 사용자 인터페이스(UI)로부터의 제1 메시지를 비지니스 객체 콘트롤러(Business Object Controller, BOC)로 전송하는 단계를 더 포함하는 방법이 제공된다. 양호하게는, 제1 메시지는 비지니스 객체 인스턴스 등의 이벤트 유형 및 비지니스 객체 유형의 식별 및/또는 상태 정보를 포함한다.
본 발명의 실시예에서, 비지니스 객체 유형의 엘리먼트가 애스펙트 인스턴스인 방법이 제공된다.
또한, 단계 2a가 제2 메시지를 애스펙트 인스턴스의 애스펙트 패턴으로 전송하는 단계를 포함하는 방법도 본 발명의 범위 내에 속한다. 양호하게는, 제2 메시지는 이벤트 유형의 식별을 포함한다. 또한, 제2 메시지는 비지니스 객체 콘트롤러(BOC)에 의해 전송된다.
본 발명의 또다른 실시예에서, 단계 2a가 엘리먼트가 이벤트 인스턴스에 반응하는 것이 가능한 상태에 있는지의 정보를 포함하는 제3 메시지를 반환하는 단계를 더 포함하는 방법이 제공된다.
다른 특징에 따른 방법을 실행하는 컴퓨터 시스템이 제공되며, 상기 컴퓨터 시스템은,
- 태스크 시퀀스의 생성에 따라 동작을 수행하도록 프로그램된 하나 이상의 중앙 처리 장치 등의 프로세서 수단,
- 태스크 시퀀스의 생성에 사용되는 데이터를 저장하는 RAM 및 하드 디스크 등의 저장 수단,
- 제1 태스크를 생성하는 BOC 컴포넌트, 및
- 태스크 정보를 한 디바이스로 렌더링하는 UI 컴포넌트를 포함한다.
비지니스 객체 유형을 구성하는 시스템이 제공되며 이 시스템은 본 발명에서유용할 수 있고, 상기 시스템은 비지니스 객체 유형을 구성하는 디자인 컴포넌트(design component)를 포함하며, 이 디자인 컴포넌트는 비지니스 객체 유형 연결 수단, 애스펙트 패턴의 세트, 하나 이상의 기능들이 트리거될 수 있게 해주는 하나 이상의 애스펙트 이벤트 유형 연결 수단, 및 이벤트 유형의 세트에 액세스하거나 이들을 구비하고 있고, 상기 애스펙트 패턴 중 적어도 하나는 애스펙트 연결 수단, 하나 이상의 일반화된 기능들을 포함하고, 상기 일반화된 기능들은 지정됨으로써 특정의 기능들을 제공하도록 구성되어 있으며, 상기 이벤트 유형 중 적어도 하나는 이벤트 유형 연결 수단을 포함한다.
시스템의 이점은, 하나 이상의 애스펙트 패턴 내의 미리 정의된 기능들을 구성하고, 하나 이상의 애스펙트 패턴으로 비지니스 객체 유형을 구성하고, 비지니스 객체 유형으로 하나 이상의 이벤트 유형을 구성하고, 하나 이상의 애스펙트 패턴 내의 하나 이상의 기능들로 이벤트 유형을 구성함으로써 하나 이상의 기능들이 애스펙트 패턴 내에서 트리거될 수 있게 해주는 것에 의해, 비지니스 객체 유형이 보다 용이하게 생성될 수 있다는 것이다. 본 시스템의 다른 이점은 구성 이전에 애스펙트 패턴과 비지니스 객체 유형 사이에 또는 이벤트 유형과 비지니스 객체 유형 사이에 어떤 연결도 존재하지 않는다는 것이다. 또한, 구성 이전에 애스펙트 패턴들 중 어느 것도 상호 연결을 갖지 않는다. 이것이 이점인 이유는 그것이 시스템의 업그레이드를 용이하게 해주기 때문이다. 게다가, 추상화의 레벨은 종래의 구성에 비해 더 높으며, 따라서 애플리케이션의 고속 모델링 및 고품질을 지원한다.
이하에서, 다수의 기술 용어가 사용된다. 이들 용어의 사용은 그 용어의 통상의 사용과 상반되지 않는 것으로 생각되지만, 본 발명의 이해가 용이하도록, 일부 용어에 대한 짧은 리스트가 이들 용어의 의미의 표시와 함께 이하에 제공되어 있다.
메타데이터[동의어: 유형 데이터, 2차 데이터(second order data)]: 데이터 자체가 아니라 데이터의 유형에 관련된 데이터. 예를 들어, 우편 주소는 엘리먼트들, 즉 거리(street), 번지(number), 우편번호(zip), 도시(city) 및 국가(country)를 포함할 수 있다. 우편 주소가 어느 엘리먼트를 포함하는지에 관한 정보가 메타데이터이다. 다른 일례는 주어진 시스템에서 직원의 이름이 최대 50 문자로 이루어질 수 있는 것으로 정의된다는 것이다. 허용되는 최대 문자수가 메타데이터이다.
한편, 1차 데이터(first order data)는 인스턴스들에만 적용되는 구체적인 사항, 즉 실제 우편 주소(Frydenlunds alle 6, 2950 Vedbaek), 실제의 직원 이름(Lars Hansen) 또는 실제의 엔진 번호(S/N 45 55 666)를 기술한다. 데이터는 항상 그의 메타데이터에 정해져 있는 사양에 따라 동작해야만 하는 것으로 암시되어 있다. 예를 들어, 직원 이름은 문자의 수가 50을 초과하지 않는다는 규칙에 부합되어야만 한다.
구성은 하나 이상의 일반화된 기능들 및/또는 메타데이터의 완전한 또는 부분적인 사양이다.
애스펙트 패턴은 일반적 문제에 대한 구성가능한 해결 방안을 나타낸다는 의미에서 또 일반적 문제의 해결 방안에 대한 비지니스 로직을 포함한다는 의미에서일종의 확장된 데이터 유형이다. 애스펙트 패턴은 하나 이상의 일반화된 기능들을 포함한다. 애스펙트 패턴은 또한 그 패턴에 대해 구성될 수 있는 메타데이터의 세트를 정의한다. 애스펙트 패턴은 애플리케이션에서의 다수의 메타데이터의 해석을 정의한다. 애스펙트 패턴은 애스펙트 연결 수단 및 애스펙트 이벤트 유형 연결 수단을 더 포함한다.
예를 들어, 애플리케이션은 "이정표(milestone) 애스펙트 패턴" 뿐만 아니라 "주소 애스펙트 패턴"도 사용할 수 있다. 주소 애스펙트 패턴은 예를 들어 전화 주소를 어떻게 처리하는지를 알고 있는 하나 이상의 기능들을 포함할 수 있다. 예를 들어, 주소 애스펙트 패턴은 전화 번호로 전화를 거는 방법, 국내 전화번호부에 대조하여 그 번호를 확인하는 방법, 출력을 위해 그 번호를 포맷하는 방법 등을 알고 있는 기능을 포함한다. 주소 애스펙트 패턴은 또한 예를 들어 주소를 확인할 수 있는 기능을 비롯한 우편 주소를 처리하는 방법을 알고 있는 하나 이상의 기능들을 포함할 수 있다. 모든 애스펙트 패턴은 특정의 애스펙트 패턴의 기능에 의해 해결될 수 있는 문제들 모두도 이 패턴에 속하도록 넓게 해석될 필요가 있다. 예를 들어, 값 애스펙트 패턴은 다른 값들에 기초하여 여러가지 값들을 계산하거나 비용을 평가하기 위해 사용될 수 있다. 값이란 가격, VAT 및 할인가 등의 종래의 값을 의미하지만 근무 시간 등의 보다 추상적인 값도 의미한다.
애스펙트 패턴은 하나 이상의 애스펙트 유형을 포함한다. 애스펙트 유형은 애스펙트 패턴의 사양이다. 따라서, 여러가지 애스펙트 유형에 대해, 애스펙트 유형이 어느 기능을 사용할 수 있는지가 결정된다. 각각의 애스펙트 유형은 런타임시에 1차 데이터의 메타데이터를 정의한다.
예를 들어, 전술한 바와 같이 "주소 애스펙트 패턴"을 사용하는 애플리케이션은 또한 "주소 애스펙트 패턴"의 어떤 사양, 예를 들어 애스펙트 유형 "집 주소" 및 애스펙트 유형 "대금 지불자 주소(Bill to address)"를 사용할 수 있다. 각각의 주소 유형에 대해, 주소 애스펙트 패턴 내의 기능이 보다 상세히 규정된다. 주소 유형 "집 주소"는 예를 들어 주소 애스펙트 패턴 내의 "우편 주소" 기능만을 사용할 수 있도록 정의될 수 있는 반면, 애스펙트 유형 "대금 지불자 주소"는 "우편 주소" 기능이나 "이메일 주소" 기능 중 어느 하나를 사용할 수 있다. 즉, 기능들이 애스펙트 유형 내에 구성되어 있다. 예를 들어, 주소 유형 "집 주소"는 "우편 주소" 기능만을 포함하도록 구성되어 있다. 식별자의 자동 생성을 가능하게 해주는 기능을 포함하는 식별 애스펙트 패턴에 있어서, 애스펙트 유형은 식별자가 생성되는 특정의 방식(예를 들어, 식별자가 수열 또는 난수 발생기로부터 생성된 수를 사용하는지)에 의해 규정될 수 있다.
비지니스 객체 유형: 비지니스 객체 유형은 실제 세계의 범위 내의 개념 또는 개체를 표현하는 객체 유형이다. 비지니스 객체 유형의 일반적인 예는 직원, 제품, 송장(送狀), 지불액, 채무자, 채권자, 및 주문이다. 비지니스 객체 유형은 비지니스 객체 유형 연결 수단을 포함한다.
하나 이상의 애스펙트 유형을 비지니스 객체 유형과 연결시킴으로써, 하나 이상의 구성된 애스펙트 유형을 갖는 구성된 비지니스 객체 유형이 생성된다. 즉, 애스펙트 유형의 애스펙트 연결 수단은 비지니스 객체 유형 연결 수단과 연결되어있다.
예를 들어 애플리케이션에서 비지니스 객체 유형 "고객"은 집 주소를 필요로 할 수 있으며, 따라서 애스펙트 유형 "집 주소"는 비지니스 객체 유형 "고객"으로 구성되어야만 한다. 이와 같이 하여, 구성된 비지니스 객체 유형 "고객"이 획득된다. 그러면, 구성된 애스펙트 유형은 "고객의 집 주소"가 된다.
비지니스 객체 인스턴스는 구성된 비지니스 객체 유형의 인스턴스이다. 예를 들어, 구성된 비지니스 객체 유형 "고객"의 비지니스 객체 인스턴스는 덴마크의 Navision로부터 이용가능한 Navision Software A/S가 될 수 있다.
애스펙트 인스턴스는 런타임 시에 생성되는 구성된 애스펙트 유형의 하나 이상의 1차 데이터이다. 예를 들어, "특정 고객의 집 주소"는 "Frydenlunds Alle 6, 2950 Vedbaek"일 수 있다.
애플리케이션은 다수의 구성된 비지니스 객체 유형을 포함한다. 구성하는 방식의 원리에 대한 개요가 도 1에 설명되어 있다. 이 방식은 다음과 같이 해석되어야만 한다.
이벤트 유형(10, 12, 14)은 구성된 비지니스 객체 유형(16)으로 구성되며, 애스펙트 패턴(18, 20, 22)이 반응할 수 있는 가능한 사건들을 정의한다. 각각의 이벤트 유형(10)은 이벤트 유형 연결 수단(24)을 포함한다. 사용자나 시스템 중 어느 하나는 이벤트 유형을 트리거하여 이벤트 인스턴스를 기동시킬 수 있다. 이벤트 인스턴스는 이벤트 유형의 한 사건이다. 이벤트 유형은 0번 또는 다수번 기동될 수 있다. 애스펙트 인스턴스들 간의 실제 통신은 이벤트 인스턴스를 통해 행해진다. 이벤트 유형(10, 12, 14)은 구체적인 비지니스 객체 유형으로 구성된다. 따라서, 이벤트 유형(10, 12, 14)은 비지니스 객체 유형(16)의 동작(dynamics)을 제어한다. 예를 들어, 비지니스 객체 유형 "송장"에 대한 이벤트 유형은 "지불 기한"일 수 있으며, 그러면 그의 이벤트 인스턴스는 "지불 기한" 이벤트 유형, 비지니스 객체 인스턴스(즉, 특정의 송장)가 지불 기한을 갖는 실제 날짜로 구성된 애스펙트 패턴 내의 한 기능에 의해 트리거된다. 또한, 주소 애스펙트 패턴은 원부(原簿, official register) 내의 우편 주소의 검사를 가능하게 해주는 한 기능을 가질 수 있다. 그러면 원부 내의 우편 주소를 검사하는 그 기능을 트리거하는 이벤트 유형을 생성하는 것이 가능하다. 이어서, 구성된 비지니스 객체 유형 "고객"에 대한 이벤트 유형은 "주소 확인"(Address verification)일 수 있으며, 이 이벤트 유형은 우편 주소 검사를 트리거한다. 그 다음에, 이벤트 유형은 시스템 트리거(system triggered) 이벤트 유형 또는 사용자 트리거(user triggered) 이벤트 유형 중 어느 하나가 되도록 구성될 수 있다.
비지니스 로직(즉, 애스펙트 패턴의 기능)은 애스펙트 패턴의 애스펙트 인스턴스가 특정의 이벤트 인스턴스를 수신할 때 조치를 취할 수 있다. 이벤트 메카니즘은 애스펙트 유형을 완전히 분리시키는 기능을 한다. 본 설명에서, 애스펙트 유형은 예시적으로 디스조인트(disjoint)라고 하며, 이는 단일 애스펙트 유형이 다른 애스펙터 유형이 존재할지라도 나머지 애스펙트 유형들 중 임의의 것의 데이터 또는 로직에 관해 모른다는 것을 의미한다. 이와 마찬가지로, 애스펙트 패턴도 예시적으로 디스조인트이다. 이것이 이점인 이유는 새로운 애스펙트 패턴 및 그의 애스펙트 유형에 관한 것 이외의 시스템에 대한 변경을 할 필요없이 실행 중인 시스템으로의 새로운 애스펙트 패턴의 플러깅(plugging)을 제공하고 그에 따라 나머지 애스펙트 유형들의 어느 것도 재구성될 필요가 없으므로 있을 수 있는 부작용을 제거함으로써 업그레이드를 용이하게 해주기 때문이다.
예를 들어, 사용자 트리거 이벤트 유형으로서 구성된 이벤트 유형 "주소 확인"의 이벤트 인스턴스를 기동시키는 것은 애플리케이션의 사용자가 된다. 이벤트 인스턴스가 기동될 때, 그 이벤트 인스턴스는 주소 애스펙트 패턴에서의 우편 주소 검사를 트리거한다. 따라서, 이벤트 유형이나 이벤트 인스턴스는 어떤 기능도 갖지 않는다. 이들은 그 자신이 이벤트 유형 연결 수단의 구성에 의해 어느 구성된 애스펙트 유형을 트리거할 수 있는지에 관한 정보만을 포함하고 있으며, 따라서 도 1에 도시한 바와 같이 구성된 애스펙트 유형의 애스펙트 패턴 내의 기능을 트리거한다.
이하의 내용에 대한 이해를 돕기 위해, 비지니스 객체 유형(16)을 구성하는 방식의 원리의 개요가 도 1에 도시한 바와 같이 본 발명에서 적용될 수 있다. 도 1에 도시한 바와 같이, 각각의 애스펙트 패턴(18, 20, 22)에 대해, 하나 이상의 애스펙트 유형(26, 28, 30)이 존재할 수 있다. 앞서 설명한 바와 같이, 애스펙트 유형은 애스펙트 패턴의 사양이다. 이벤트 유형이 트리거될 때 실행되어야만 하는 지정된 기능은 애스펙트 이벤트 유형 연결 수단(32)을 포함한다. 본 발명에 따른 실시예에서, 애스펙트 이벤트 유형 연결 수단(32) 및 이벤트 유형 연결 수단(24) 각각은 고유의 애스펙트 이벤트 유형 ID 및 고유의 이벤트 유형 ID를 포함한다.이벤트 유형 ID를 설정하고 이벤트 유형이 트리거될 때 하나 이상의 애스펙트 유형(하나 이상의 애스펙트 패턴에 포함되어 있음) 내의 어느 지정된 기능들이 반응해야만 하는지를 식별하는 것은 이벤트 유형의 효과를 구성한다. 따라서, 이벤트 유형 연결 수단(24)과 애스펙트 이벤트 유형 연결 수단(32) 사이의 화살표들은 그 구성을 나타낸다. 그러면, 이들 지정된 기능에 대응하는 애스펙트 이벤트 유형 ID는 이벤트 유형 ID와 동일하게 설정된다. 예를 들어, "우편 주소" 애스펙트 유형은 이벤트 유형 ID, 예를 들어 "1"을 갖는 이벤트 유형 "고객 생성"(Create customer)이 트리거될 때 트리거되어야만 하는 "확인"(verification) 기능을 포함하며, 따라서 "확인" 기능에 포함되어 있는 애스펙트 이벤트 유형 ID도 "1"이 되어야만 한다. "우편 주소" 및/또는 다른 애스펙트 유형 내의 다른 기능들도 트리거될 필요가 있을 수 있으며, 따라서 그들의 애스펙트 이벤트 유형 ID도 "1"이 되어야만 한다.
비지니스 객체 유형(16)의 실제 구성은 비지니스 객체 유형 연결 수단(34)을 애스펙트 연결 수단(36) 및 이벤트 유형 연결 수단(24)에 결합시킴으로써 행해진다. 본 발명의 유용한 실시예에서, 비지니스 객체 유형 연결 수단(34) 및 애스펙트 연결 수단(36) 각각은 비지니스 객체 유형 ID 및 애스팩트 ID를 포함한다. 이어서, 예를 들어 도 5에 관하여 도시되고 이하에 보다 상세히 기술되는 데이터베이스 내의 비지니스 객체 유형 ID, 하나 이상의 애스펙트 ID, 및 하나 이상의 이벤트 유형 ID를 갖는 엔트리를 생성함으로써 비지니스 객체 유형(16)의 구성이 수행된다. 애스펙트 연결 수단(36)과 비지니스 객체 연결 수단(34) 사이의 화살표 및 비지니스 객체 유형(16)과 이벤트 유형(10, 12, 14) 사이의 화살표는 구성을 나타낸다.
도 1에, 단지 하나의 비지니스 객체 유형(16)의 구성이 도시되어 있지만, 실제로 다수의 비지니스 객체 유형이 동일한 방식으로 (즉, 동일한 애스펙트 패턴 및 그의 애스펙트 유형을 사용하여) 구성될 수 있다.
본 발명의 유용한 실시예에서, 2개 이상의 비지니스 객체 인스턴스가 상호작용하도록 하기 위해, "관계"(Relation) 애스펙트 패턴이 구현된다. 애스펙트 연결 수단(36) 이외에, "관계" 애스펙트 패턴은 하나 이상의 (관계) 애스펙트 연결 수단(36)에 대해 구성되어 비지니스 객체 유형들 간의 연결을 생성할 수 있는 관련된 관계 연결 수단(관련된 관계 유형 ID)을 더 포함한다.
"관계" 애스펙트 패턴은 비지니스 객체 인스턴스가 이벤트 인스턴스를 수신할 때 반응할 수 있는 하나 이상의 기능 및 그 관계 애스펙트 패턴이 또하나의 이벤트 인스턴스를 관련된 비지니스 객체 인스턴스로 전달할 수 있게 해주는 하나 이상의 기능을 더 포함한다. 예를 들어, 기술자가 서비스 작업에 배당되는 경우, "관계" 애스펙트 패턴을 양쪽 비지니스 객체 유형으로 구성함으로써 비지니스 객체 유형 "직원"은 비지니스 객체 유형 "서비스 작업"(Service Job)과 관련되어야만 한다. 따라서, 비지니스 객체 유형 "직원"의 비지니스 객체 인스턴스 "Kim Jensen"은 구성된 "관계" 애스펙트 패턴의 애스펙트 인스턴스를 갖는 비지니스 객체 인스턴스 "SJ334455"와 관련될 수 있다. 이벤트 인스턴스가 비지니스 객체 인스턴스들 중 하나에 대해 기동될 때마다, 또하나의 이벤트 인스턴스가 다른 비지니스 객체인스턴스로 전달된다.
어떤 상황에서는 한 구성된 애스펙트 유형의 애스펙트 인스턴스로부터의 값을 검색하고 구성된 애스펙트 유형의 또하나의 애스펙트 인스턴스에 대해 그 값을 설정하는 것이 유용할 수 있다. 이것은 도 2에 관하여 기술되는 바와 같이 비지니스 객체 유형에 대해 "전달값"(40, 42, 44)을 구성함으로써 달성된다. 애스펙트 인스턴스가 탐색되어야만 하는 경우의 구성된 애스펙트 유형 및 애스펙트 인스턴스가 변경되어야만 하는 경우의 구성된 애스펙트 유형은 구성 동안에 지정된다. 애스펙트 패턴은 그의 애스펙트 인스턴스로부터 하나 이상의 값을 제공할 수 있으며, 그의 일반화된 기능(33) 내에 표현식(Expression) 기능을 포함한다. 이 표현식 기능은 애스펙트 인스턴스의 어느 부분이 전달되어야만 하는지에 대한 사양을 제공한다. 애스펙트 패턴은 그의 애스펙트 인스턴스에 대한 하나 이상의 값을 설정할 수 있으며, 채널 기능을 포함한다. 채널 기능은 애스펙트 인스턴스의 어느 부분이 변경되어야만 하는지에 대한 사양을 제공한다. 전달값(예를 들어, 40)은 소스 애스펙트(Source Aspect) 연결 수단(46) 및 타겟 애스펙트(Target Aspect) 연결 수단(48)을 포함한다. 모든 값들이 최신의 것으로 되도록 하기 위해, 모든 전달값(40, 42, 44)은 소스(46)가 변할 때 계산된다.
도 2에 도시한 바와 같은 전달값의 구성 동안, 비지니스 객체 유형(16)은 0 또는 다수의 전달값(40, 42, 44)으로 구성된다. 전달값 각각에 대해, 소스 애스펙트 연결 수단(46)은 애스펙트 유형(26, 28, 30)의 애스펙트 연결 수단(36)에 연결되어 있으며, 값은 이 애스펙트 유형(26, 28, 30)으로부터 검색되어야만 한다. 이와 마찬가지로, 타겟 애스펙트 연결 수단(48)은 애스펙트 유형(26, 28, 30)의 애스펙트 연결 수단(36)에 연결되어 있으며, 값은 이 애스펙트 유형에 대해 설정되어야만 한다.
소스 애스펙트 연결 수단(46) 및 타겟 애스펙트 연결 수단(48)이 각각 구성된 애스펙트 유형(26, 28, 30)은 동일한 비지니스 객체 유형(16) 또는 서로 다른 비지니스 객체 유형들로 구성될 수 있다. 따라서, 전달값을 사용하여, 2개의 비지니스 객체 인스턴스 사이에서 뿐만 아니라 하나의 비지니스 객체 인스턴스 내에서 값이 교환될 수 있다.
본 발명에서 유용한 시스템의 일 실시예에서, 소스 애스펙트 연결 수단(46)은 물론 타겟 애스펙트 연결 수단(48) 각각은 고유의 식별자를 포함하며, 또한 전술한 바와 같이 애스펙트 연결 수단(36)은 물론 비지니스 객체 유형 연결 수단(34)도 고유의 식별자를 포함한다. 이어서, 구성의 수행은 비지니스 객체 ID, 그 구성이 값을 그로부터 검색해야 하는 애스펙트 유형과 동일한 ID로 설정되는 소스 애스펙트 ID, 및 그 구성이 그에 대한 값을 설정해야만 하는 애스펙트 유형과 동일한 ID로 설정되는 타겟 애스펙트 ID를 포함하는 엔트리를 생성함으로써 행해진다. 또한, 전달값에서, 그 값이 그로부터 검색되어지고 또 설정되는 애스펙트 인스턴스의 일부가 각각 지정된다.
예를 들어, 서비스 주문(service order)의 가격이 서비스 주문의 응답 시간(response time)에 의존해야만 하고 따라서 "짧은"(short), "중간"(medium) 및 "긴"(long) 응답 시간의 결과 가격이 서로 다르게 되는 경우, 비지니스 객체 유형 "서비스 주문"은 서비스 주문의 응답 시간을 포함하는 "응답 시간" 애스펙트 유형 및 서비스 주문의 가격을 포함하는 "가격" 애스펙트 유형으로 구성될 수 있다. "응답 시간" 애스펙트 인스턴스 내의 서비스 주문의 응답 시간이 변경될 때마다, 대응하는 "가격" 애스펙트 인스턴스 내의 서비스 주문의 가격이 응답 시간에 기초하여 재계산되어야만 한다. 이것은 "응답 시간"에 관한 표현식, 즉 값 "긴", "짧은" 또는 "중간" 중 하나를 반환할 수 있는 "길이"(Length)라고 하는 애스펙트 유형을 가짐으로써 행해질 수 있다. 그것은 "응답 시간", 즉 "응답 시간" 애스펙트 인스턴스 내의 서비스 주문의 응답 시간이 "긴", "짧은" 또는 "중간"으로 간주되는지를 결정하게 되는 애스펙트 유형의 구성의 일부가 된다. "가격" 애스펙트 유형은 값 "긴", "짧은" 또는 "중간" 중 임의의 것을 수신할 수 있는 "서비스 품질"(Quality of Service)이라는 채널을 가질 수 있다. 입력에 기초하여, "가격" 애스펙트 유형은 그의 구성 및 그의 애스펙트 패턴 내의 기능에 따라 "가격" 애스펙트 인스턴스를 재계산한다. 전달값 메카니즘은 값을 "응답 시간" 애스펙트 인스턴스로부터 "가격" 애스펙트 인스턴스로 전달하는 임무를 맡고 있다.
애스펙트 인스턴스들 사이에서 값을 전달하기 위한 전달값 메카니즘을 사용하는 것 이외에, 규칙-메카니즘(Rule-mechanism)이라고 하는 또하나의 메카니즘도 사용될 수 있다. 규칙-메카니즘은 전술한 바와 같은 표현식에 기초하고 있지만, 애스펙트 인스턴스들 사이에 적극적으로 값을 푸시하는 대신에 애스펙트 인스턴스가 값을 필요로 할 때만 그 표현식이 계산된다. 규칙은 구성된 애스펙트 패턴(18, 20, 22)에 저장되어 그에 의해 처리되는 표현식이다. 규칙 메카니즘은 일반적으로값을 푸싱하는 것이 고비용일 때 전달값 메카니즘 대신에 사용된다.
예를 들어, 비지니스 객체는 "주소" 애스펙트 패턴 및 "가격" 애스펙트 패턴으로 구성될 수 있다. "가격" 애스펙트 인스턴스는 "송장 준비"(prepare invoice) 이벤트 유형의 이벤트 인스턴스를 수신할 때, 가격을 계산하기 위해 본사로부터 "주소" 애스펙트 인스턴스에 주어진 주소까지의 거리를 알 필요가 있다. "가격" 애스펙트 인스턴스는 "송장 준비" 이벤트 유형의 이벤트 인스턴스를 수신할 때에만 그의 규칙을 호출하고 "주소" 애스펙트 패턴의 "거리" 표현식을 검색한다. 이 메카니즘의 결과 "가격" 애스펙트 인스턴스가 "송장 준비" 이벤트 유형의 이벤트 인스턴스를 수신할 때까지 정의되지 않은 값을 갖게 되는 반면, 이 메카니즘은 한편으로 잠재적으로 고비용인 거리 계산이 실제로 필요하게 될 때까지 그 계산이 일어나지 않도록 한다.
규칙은 애스펙트 패턴으로 구성될 수 있다. 규칙은 하나 이상의 규칙 소스 연결 수단을 포함한다. 규칙은 또한 동일한 또는 다른 애스펙트 인스턴스에 대한 다른 값에 기초하여 값을 계산하기 위한 표현식을 포함한다. 규칙 소스 연결 수단은 계산의 기초가 되는 값들이 어디에서 발견될 수 있는지의 정보를 포함한다.
본 발명의 양호한 실시예에서, 애스펙트 패턴의 세트는 관계 애스펙트 패턴을 포함하고, 이 관계 애스펙트 패턴은 애스펙트 연결 수단(36), 지정되도록 구성되어 있음으로써 특정의 기능들을 제공하는 하나 이상의 일반화된 기능(33), 관련된 관계 애스펙트 연결 수단, 및 하나 이상의 기능(33)이 트리거될 수 있도록 해주는 하나 이상의 애스펙트 이벤트 유형을 포함한다. 본 발명에서 적용가능한 시스템의 이점은 하나 이상의 비지니스 객체 유형(16) 사이의 연결이 관계 애스펙트 패턴을 구성함으로써 생성될 수 있다는 것이다. 이와 같이, 비지니스 객체 유형들 사이의 모든 관계 및 결과적으로 모든 그의 비지니스 객체 인스턴스들이 동일한 방식으로 처리될 수 있는 이유는 관계 애스펙트 패턴이 한번만 구현되면 되고 그에 따라 더 적은 코드 및 보다 안정된 시스템을 제공하기 때문이다. 추가의 이점은 비지니스 객체 유형들(16) 사이의 모든 관계가 애플리케이션 개발자를 위해 동일한 방식으로 구성되어 있다는 것이다.
태스크가 UI에서 애플리케이션의 사용자에게 제공된다. 태스크는 예를 들어 "서비스 작업 시작"(Start service job) 또는 "송장 생성"(Create Invoice)일 수 있다. 사용자가 태스크를 완료하도록 돕기 위해, 예시된 바와 같이 하나 이상의 태스크를 포함하는 태스크 시퀀스가 제공될 수 있다. 예를 들어, "송장 생성" 태스크를 완료하기 위해, 사용자는 예를 들어 고객을 위해 수행된 특정 작업을 선택하거나, 송장의 수신자를 기입해 넣는 등을 할 필요가 있을 수 있다. 따라서, "송장 생성" 태스크 동안 사용자를 안내하기 위한 태스크 시퀀스는 먼저 완료된 서비스 작업의 리스트를 더 포함하는 "서비스 작업 선택"(Choose service job) 태스크를 사용자에게 제공함으로써 수행될 수 있다. 그 후에, 예를 들어 고객과 관련된 여러가지 주소 또는 연락자(contact person)의 리스트를 포함하는 "수신자 선택"(Choose recipient) 및 "수신자 생성"(Create recipient) 태스크와 같은 제2 태스크가 사용자에게 제공될 수 있다. 따라서, 태스크는 물론 태스크 시퀀스 내의 태스크는 새로운 태스크 시퀀스를 개시할 수 있다. 또한, 상기한 예에서의 "송장 생성"과 같은 포괄적 태스크일 수 있는 것은 또하나의 태스크 시퀀스를 위한 태스크 시퀀스 내의 태스크일 수 있다. 예를 들어, "서비스 작업 종료"(Close Service Job) 태스크는 "송장 생성" 태스크를 포함하는 태스크 시퀀스를 개시할 수 있다.
애플리케이션의 구성과 관련된 본 발명의 특징에 있어서, 태스크 패턴의 세트가 제공될 수 있다. 태스크 패턴은 하나 이상의 태스크 스텝 패턴(task step pattern)의 세트를 포함한다. 태스크 스텝 패턴은 하나 이상의 태스크 패턴에서 사용될 수 있다. 예를 들어, "선택"(Select) 태스크 스텝 패턴은 "수정"(Modify) 태스크 패턴에서는 물론 "삭제"(Delete) 태스크 패턴에서도 사용될 수 있다.
태스크 패턴(애스펙트 패턴의 세트)을 비지니스 객체 유형(16)과 연결시키고 그 연결을 위한 이름을 지정함으로써, 태스크가 적어도 부분적으로 구성될 수 있다. 예를 들어, 비지니스 객체 유형 "송장"이 태스크 패턴 "생성"(태스크 스텝 "생성" 및 "보기"를 포함하는 태스크 패턴)과 연결되어 있고 "송장 생성"으로 지명되는 경우, 태스크 스텝 "생성" 및 "보기"를 포함하는 "송장 생성" 태스크가 구성된다. 런타임 시에, "송장 생성" 태스크는 이어서 애플리케이션의 사용자에게 제공될 수 있다. 그 태스크를 선택함으로써, "송장 생성" 태스크로 시작하는 태스크 시퀀스가 사용자에게 제공되어진다. 사용자가 송장의 생성을 완료한 경우, 그 다음 태스크 스텝 "송장 보기"가 사용자에게 제공되어진다.
게다가, 본 발명에 따른 컴퓨터 시스템은 태스크의 세트(즉, 구성된 태스크 패턴)를 선택하여 원래의 태스크의 모든 태스크 스텝을 포함하는 연결된 태스크를 형성함으로써 구성될 수 있는 연결된 태스크 패턴(concatenated task pattern)을포함할 수 있다. 그렇지만, 이들 태스크 스텝 중 하나 이상은 애플리케이션의 사용자에게 중복되는 것일 수 있다. 애플리케이션의 사용자에게 중복되는 태스크 스텝을 덜어주기 위해, 연결된 태스크 패턴은 그 다음 태스크 스텝으로 진행하기 위해 이미 충분한 정보가 있는지를 알아내는 기능을 포함한다. 태스크 스텝이 중복되는 것인지를 결정하는 방법은 이후의 태스크 스텝이 이용가능 정보로 그의 기능을 수행할 수 있는지를 검사하는 것에 의할 수 있다. 예를 들어, 애플리케이션의 사용자가 "송장 생성 및 인쇄" 태스크를 이용할 수 있는 경우, 이 태스크는 "생성" 태스크 패턴과 "인쇄" 태스크 패턴의 사용에 의한 연결된 태스크에 의해 구성될 수 있다. "생성" 태스크 패턴은 태스크 스텝 "생성" 및 "보기"를 포함하며, "인쇄" 태스크 패턴은 태스크 스텝 "선택" 및 "인쇄"를 포함하고, 따라서 "인쇄" 태스크 패턴 에서의 "선택" 태스크는 비지니스 객체 인스턴스가 이전의 태스크 스텝("생성" 및 "보기")에서 이미 식별되기 때문에 생략될 수 있다.
본 발명의 일 실시예에서, 중복되는 태스크 스텝은 구성이 디자인될 때 식별되고 제외된다. 이것이 이점인 이유는 태스크가 애플리케이션의 사용자에게 어떻게 제공되는지를 애플리케이션 개발자가 검토할 수 있기 때문이다. 본 발명의 다른 실시예에서, 임의의 중복되는 태스크 스텝은 런타임 시에 식별된다. 이것이 이점인 이유는 사용자에게 제공되어야만 하는 태스크 스텝이 제외될 위험이 최소화되기 때문이다.
활동 센터(activity center)는 애플리케이션의 사용자에게 제공될 수 있는 일군의 태스크를 포함한다. 활동 센터를 구성할 때, 이름이 할당되고(예를 들어,"판매") 사용자 프로파일(애플리케이션에 대한 허가를 받은 애플리케이션 사용자의 프로파일)도 또한 설정될 수 있다. 본 발명의 예시적인 실시예에서, 사용자들은 서로 다른 역할로 그룹화되며, 이 때 주어진 역할의 사용자는 하나 이상의 활동 센터에 액세스한다. 애플리케이션 개발자는 어느 태스크(구성된 태스크 패턴 등)가 활동 센터에서 사용되는지를 구성한다. 태스크 패턴에 기초한 태스크는 태스크 패턴에서의 제1 태스크 스텝이 사용자에게 즉각 제공됨을 의미하는 핫 태스크(hot task)로서 구성될 수 있다. 핫 테스크가 아닌 태스크(non-hot task)는 사용자로의 하이퍼링크로서 나타날 수 있다.
구성의 일부로서, 예시적으로 뷰(view)가 각각의 태스크 스텝에 연결되어 있으며, 그 뷰는 비지니스 객체의 어느 정보가 태스크 스텝에서 애플리케이션의 사용자에게 제공되는지를 정의한다. 그 정보는 예를 들어 비지니스 객체 인스턴스의 데이터 및 그의 대응하는 메타데이터가 표시되어야만 하는지와 같은 엘리먼트가 표시되어야만 하는지일 수 있다. 본 발명의 예시적인 실시예에서, 애스펙트 패턴의 일부[예시적으로 비지니스 객체 유형(16)으로 구성된 애스펙트 유형(26, 28, 30)의 일부]는 뷰의 디폴트 멤버로서 설정될 수 있다. 또한 애플리케이션 개발자가 커스터마이즈된 뷰를 생성하는 것도 가능하다. 본 발명의 예시적인 실시예에서, 태스크 스텝별 디폴트 뷰가 (예를 들어, 뷰 마법사를 사용하여) 자동적으로 생성될 수 있다. 이어서, 애플리케이션 개발자는 단일 태스크 스텝에 대한 뷰를 변경할 수 있다.
본 발명의 실시예에서, 애스펙트 패턴(18, 20, 22)의 세트가 복수의 애스펙트 패턴을 더 포함하며, 상기 애스펙트 패턴 각각이 지정되도록 구성되어 있음으로써 특정의 기능들을 제공하는 하나 이상의 일반화된 기능(33), 애스펙트 연결 수단(36), 및 하나 이상의 기능들(33)이 트리거될 수 있게 해주는 하나 이상의 애스펙트 이벤트 유형 연결 수단(32)을 포함하는 시스템이 제공된다. 복수의 애스펙트 패턴(18, 20, 22)을 제공함으로써, 애플리케이션 개발자는 더 많은 사전 정의된 기능을 제공받으며, 따라서 애플리케이션의 실제 구성을 용이하게 해준다.
예시적으로, 애스펙트 패턴의 세트 내의 복수의 애스펙트 패턴은 메타데이터(50)를 포함한다. 이와 같이, 기능(33)과 애스펙트 패턴(18, 20, 22) 내의 메타데이터(50) 사이의 연결이 제공될 수 있다. 이것은 메타데이터(50)를 지정 및/또는 추가하는 것만으로 구성할 때 지정될 애스펙트 패턴 내의 기능(33)을 제공한다.
게다가, 적어도 하나의 애스펙트 패턴(18, 20, 22)은 예시적으로 애스펙트 인터페이스(52)를 포함할 수 있다. 예시적으로, 애스펙트 패턴의 세트 내의 복수의 애스펙트 패턴(18, 20, 22)은 애스펙트 인터페이스(52)를 포함한다. 이것이 이점인 이유는 새로운 애스펙트 패턴이 동일한 애스펙트 인터페이스(50)를 구현하는 한 애스펙트 패턴의 세트에 용이하게 부가될 수 있기 때문이다.
본 발명에서 적용될 수 있는 예시적인 실시예 또는 다른 실시예들에서, 디자인 컴포넌트(이하의 도면들에 관해 보다 상세히 기술됨)는 또한 소스 애스펙트 연결 수단 및 타겟 애스펙트 연결 수단에 액세스하거나 예시적으로 이들을 구비하고 있으며, 애스펙트 패턴의 세트는 또한 표현 기능을 포함하는 하나 이상의 애스펙트 패턴 및 채널 기능을 포함하는 하나 이상의 애스펙트 패턴을 포함함으로써 애스펙트 인스턴스들 사이의 값의 교환을 제공한다. 이것이 이점인 이유는 이와 같이 구성된 모든 값들이 소스 값의 변경이 있을 때마다 갱신되도록 하기 때문이다. 또한, 이것이 이점인 이유는 애스펙트 인스턴스가 다른 애스펙트 인스턴스 내의 값들을 검색할 수 있으며 여전히 애스펙트 유형들(26, 28, 30)과 애스펙트 패턴들(18, 20, 22) 뿐만 아니라 애스펙트 인스턴스들을 느슨하게 결합되도록 할 수 있다.
본 발명의 유용한 실시예에서, 애스펙트 패턴의 세트가 규칙 소스 연결 수단을 포함하는 하나 이상의 애스펙트 패턴들을 더 포함하는 시스템이 제공된다. 예를 들어 표현식을 계산하기 위해 검색되어야만 하는 값의 개수가 많은 경우 및 애스펙트 인스턴스 내의 값이 사용되기 전에 그 값을 갱신할 이유가 없는 경우에 규칙(또는 규칙들)을 사용하는 것은 이점이 된다.
본 발명에서 적용가능한 실시예들에서, 디자인 컴포넌트가 복수의 비지니스객체 유형(16)을 구성하기 위해 사용되거나 사용되도록 구성되어 있는 시스템이 제공된다. 동일한 애스펙트 패턴의 세트를 사용하여 복수의 비지니스 객체 유형(16)을 구성하는 것이 이점인 이유는 시스템의 업그레이드를 용이하게 해주기 때문이다.
또한, 본 발명에서 애스펙트 패턴의 세트 내의 적어도 하나의 애스펙트 패턴(18, 20, 22)이 하나 이상의 애스펙트 유형(26, 28, 30)을 포함하고, 각각의 애스펙트 유형이 애스펙트 패턴(18, 20, 22)의 사양인 시스템이 유용하다. 이와 같이, 애플리케이션 개발자는 하나 이상의 애스펙트 패턴의 하나 이상의 부분적인 구성을 제공받음으로써 애플리케이션 개발자의 구성을 용이하게 해줄 수 있다. 예시적으로, 애스펙트 유형이 하나 이상의 비지니스 객체 유형으로 구성되도록 설계되어 있는 시스템이 제공된다. 이것이 이점인 이유는 비지니스 객체 유형(16) 사이의 애스펙트 유형(26, 28, 30)의 재사용을 제공하기 때문이다.
본 발명에 따른 실시예들에서, 비지니스 객체 유형 연결 수단(34)이 비지니스 객체 유형(16)을 일의적으로 식별하는 식별자 BOTID를 포함하는 시스템이 제공된다. 본 발명은 또한 애스펙트 연결 수단(36)이 적어도 하나의 애스펙트 패턴을 일의적으로 식별하는 식별자 ATID를 포함하는 시스템, 및 애스펙트 이벤트 유형 연결 수단(32)이 상기 애스펙트 패턴에서 트리거될 수 있는 하나 이상의 기능(33)을 일의적으로 식별하는 식별자 (A1ETID1, A1ETID2,...,ANETID1, ANETID2)를 포함하는 시스템에서 유용하다. 본 발명은 이벤트 유형 연결 수단(24)이 이벤트 유형(10, 12, 14)을 일의적으로 식별하는 식별 번호 ETID를 포함하는 시스템에서 적용될 수 있다. 애플리케이션의 실제 구성이 예를 들면 관계형 데이터베이스에서 구현될 때 식별 번호 ID를 사용하는 것이 유리하다.
또한, 본 발명에서 이벤트 유형(10, 12, 14)이 사용자 기동(user fired)될 수 있는 시스템이 유용할 수 있다. 이와 같이 사용자는 실행될 하나 이상의 애스펙트 패턴 내의 하나 이상의 기능(33)을 개시할 수 있다. 또한, 본 발명에서 이벤트 유형이 그를 구성하고 있는 애스펙트 패턴 내의 기능(33)에 의해 기동될 수 있는 시스템들이 적용가능하다. 이것이 이점인 이유는 시스템이 실행될 하나 이상의 애스펙트 패턴 내의 하나 이상의 기능(33)을 개시할 수 있기 때문이다. 이벤트 유형(10, 12, 14)을 사용자 기동이나 시스템 기동 또는 둘다로서 구성함으로써, 어느 기능이 사용자, 시스템 또는 둘다에 의해 트리거될 수 있는지를 제어하는 것이 가능하다.
본 발명에 따른 실시예들에서, 디자인 컴포넌트가 사전 구성된 비지니스 객체 유형의 세트에 액세스하거나 그를 구비하는 시스템이 제공된다. 사전 구성된 비지니스 객체 유형은 유익하게는 완전히 또는 부분적으로 구성된 하나 이상의 애스펙트 패턴, 완전히 또는 부분적으로 구성된 하나 이상의 애스펙트 유형, 비지니스 객체 유형이 반응할 수 있는 하나 이상의 이벤트 유형, 하나 이상의 애스펙트 패턴 내의 하나 이상의 이벤트 기능 구성, 또는 하나 이상의 애스펙트 유형으로 구성될 수 있다. 게다가, 사전 구성된 비지니스 객체 유형은 하나 이상의 디폴트값 또는 규칙으로 구성될 수 있다. 이것이 이점인 이유는 애플리케이션 개발자가 처음부터 애플리케이션을 구성할 필요가 없기 때문이다.
게다가, 본 발명은 디자인 컴포넌트가 애플리케이션의 메타데이터를 포함하는 저장소 컴포넌트에 액세스하거나 그를 더 포함하는 시스템에서 유용하다. 그에 따라, 디자인 컴포넌트는 애플리케이션의 실제 구성을 포함한다.
본 발명은 비지니스 객체 유형이 적어도 하나의 구성된 애스펙트 패턴에 기초하고 있는 애플리케이션의 저장소로서, 구성된 비지니스 객체 유형의 하나 이상의 엔트리를 포함하는 저장소에서 적용가능하다. 각각의 엔트리는 구성된 비지니스 객체 유형을 일의적으로 정의하는 구성된 비지니스 객체 유형 ID(BOTID), BOTID 및 구성된 애스펙트 패턴을 일의적으로 정의하는 구성된 애스펙트 유형 ID(ATID)를각각 포함하는 구성된 애스펙트 패턴의 하나 이상의 엔트리, ATID 및 애스펙트 패턴의 구성을 지정하는 메타데이터를 각각 포함하는 구성된 애스펙트 패턴의 하나 이상의 엔트리, 및 BOTID 및 구성된 이벤트 유형을 일의적으로 정의하는 이벤트 유형 ID(ETID)를 각각 포함하는 구성된 이벤트 유형의 하나 이상의 엔트리를 포함할 수 있다. 애플리케이션의 저장소가 이와같이 구성되는 것이 이점인 이유는 비지니스 객체 유형이 모든 애스펙트 패턴을 알 필요가 없으며 따라서 애플리케이션의 업그레이드를 용이하게 해주기 때문이다.
일 실시예에서, 애스펙트 패턴 내의 구성된 이벤트 기능의 하나 이상의 엔트리를 더 포함하는 저장소가 제공되며, 상기 엔트리 각각은 애스펙트 이벤트 유형 ID를 포함한다. 이것이 이점인 이유는 이벤트 유형이 미리 애스펙트 패턴 내의 모든 이벤트 기능에 관해 알 필요가 없기 때문이다.
본 발명은 구성된 비지니스 객체 유형을 일의적으로 정의하는 구성된 비지니스 객체 유형 ID(BOTID), 소스 애스펙트 ID(ATID) 및 타겟 애스펙트 ID(ATID)를 각각 포함하는 구성된 전달값의 하나 이상의 엔트리를 더 포함하는 전술한 유형의 저장소에서 유용하다. 이와 같이, 애스펙트 패턴들이 서로를 미리 알 필요가 없는 이유는 모든 애스펙트 패턴들이 값을 전달하기 위해 동일한 메타니즘을 사용하기 때문이다.
게다가, 저장소의 일부가 데이터베이스인 것인 저장소가 제공될 수 있다. 이것이 이점인 이유는 현재 데이터베이스가 데이터를 저장하는 보다 체계화된 방법을 제공하기 때문이다. 예시적으로 각각의 엔트리는 테이블 내의 레코드이다. 이와 같이, 새로운 애스펙트 패턴이 용이하게 추가될 수 있다.
또한, 저장소 컴포넌트가 전술한 실시예들 중 임의의 것에서와 같은 저장소인 것인 시스템이 제공될 수 있다.
본 발명은 또한 하나 이상의 애스펙트 패턴 내의 하나 이상의 기능을 지정하는 단계, 하나 이상의 애스펙트 패턴을 비지니스 객체 유형과 연결시키는 단계, 하나 이상의 이벤트 유형을 하나 이상의 애스펙트 패턴 내의 하나 이상의 기능과 연결시킴으로써 하나 이상의 이벤트 유형에 의해 트리거될 하나 이상의 애스펙트 패턴 내의 하나 이상의 기능을 지정/인에이블하는 단계를 포함하며, 그에 따라 구성된 비지니스 객체 유형이 획득되는, 비지니스 객체 유형을 구성하는 방법에서 적용가능하다. 이점은 애플리케이션 개발자가 애스펙트 패턴 및 비지니스 객체 유형이 어떻게 연결되어 있는지, 이벤트 유형 및 비지니스 객체 유형이 어떻게 연결되어 있는지, 이벤트 유형이 애스펙트 패턴 내의 기능 및 하나 이상의 애스펙트 패턴 내의 기능의 사양과 어떻게 연결되어 있는지의 미리 정해진 순서를 따를 필요가 없다는 것이다.
본 발명은 또한 애스펙트 패턴을 비지니스 객체 유형과 연결시키는 단계 및 n회 반복되는 애스펙트 패턴들 각각 내의 하나 이상의 기능을 지정하는 단계를 포함하는 방법에서 유용하다. 이와 같이, 애스펙트 패턴 내의 기능이 재사용된다. 일예에서, n이 (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 또는 그 이상)으로 이루어지는 그룹 내의 한 숫자인 방법이 사용된다.
또한, 본 발명은 하나의 이벤트 유형이 하나 이상의 애스펙트 패턴 내의 하나 이상의 기능에 연결되어 있는 방법에서 적용가능하다. 이것이 이점인 이유는 이벤트 유형의 복잡성이 애플리케이션에 따라 변할 수 있기 때문이다.
이벤트 유형을 비지니스 객체 유형에 연결시키는 단계가 m회 반복되는 본 발명에 따른 방법이 제공된다. 이와 같이, 비지니스 객체 유형의 비지니스 객체 인스턴스는 이벤트 유형의 여러가지 이벤트 인스턴스를 실행할 수 있다. 일례로서, m은 (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40 또는 그 이상)으로 이루어지는 그룹 내의 한 숫자이다.
본 발명은 관계 애스펙트 패턴을 제1 비지니스 객체 유형과 연결시키는 단계 및 관계 애스펙트 패턴을 제2 비지니스 객체 유형과 연결시키는 단계를 더 포함함으로써 2개의 비지니스 객체 유형 사이의 연결을 제공하는 방법에서 유용하다. 이것이 이점인 이유는 비지니스 객체 유형들 사이의 통신을 제공하기 때문이다.
본 발명은 애스펙트 패턴 내의 복수의 메타데이터를 지정하는 단계를 더 포함하는 방법에서 적용가능하다. 이와 같이, 런타임 시의 데이터의 입력이 정의된다.
또한, 비지니스 객체 유형 연결 수단을 전달값 메카니즘으로 구성하는 단계, 소스값 연결 수단을 애스펙트 연결 수단으로 구성하여 값이 어디에서 검색되어야만 하는지를 지정하는 단계, 및 타겟값 연결 수단을 애스펙트 연결 수단으로 구성하여 검색된 값이 어디에 설정되어야만 하는지를 지정하는 단계를 더 포함하는 방법이본 발명에서 적용가능하다. 이와 같이, 런타임 시에 애스펙트 인스턴스들 사이의 값의 전달이 수행될 수 있다. 또한, 타겟값으로서 구성된 모든 값은 소스값이 변할 때 갱신되도록 한다.
게다가, 본 발명은 애스펙트 패턴을 규칙 소스 연결 수단으로 구성하여 값이 어디에서 검색되어야만 하는지 및 런타임 시에 구성된 애스펙트 패턴에 대해 값이 계산되어 설정될 수 있도록 검색된 값을 포함하는 표현식을 지정하는 단계를 더 포함하는 방법에서 유용하다. 이것이 이점인 이유는 규칙으로 구성된 애스펙트 인스턴스에 대한 값이 필요할 때에만 갱신되어지기 때문이다.
본 발명은 또한 구성된 비지니스 객체 유형을 저장소에 저장하는 단계를 포함하는 방법을 포함할 수 있다. 예로서, 저장소는 전술한 실시예들 중 임의의 것에 따른 저장소이다.
본 발명은 구성된 비지니스 객체 유형, 구성된 애스펙트 패턴 및 이벤트 유형의 메타데이터를 포함하는 저장소 컴포넌트와, 비지니스 객체 인스턴스, 애스펙트 인스턴스 및 이벤트 인스턴스의 1차 데이터를 포함하는 데이터 스토리지 컴포넌트와, 애스펙트 인스턴스들 사이에서의 이벤트 인스턴스의 전달을 처리하는 비지니스 객체 콘트롤러(BOC) 컴포넌트를 포함하는, 애플리케이션을 실행시키는 시스템에서 적용가능하다. 이와 같이, 애플리케이션의 실제 구성은 저장소에 들어 있으며, 그의 인스턴스들은 데이터 스토리지 컴포넌트에 들어 있다. 동작은 BOC에 의해 제어된다. 이것이 이점인 이유는 애스펙트 패턴이 다른 애스펙트 패턴의 구성을 알 필요가 없기 때문이다. 예로서, 저장소는 전술한 실시예들 중 임의의 것에 기술된저장소이다.
본 발명에서 유용한 예시적인 실시예들에서, BOC 컴포넌트가 BO 컴포넌트 및 애스펙트 패턴 컴포넌트를 더 포함하는 시스템이 제공된다. BO 컴포넌트 및 애스펙트 패턴 컴포넌트는 저장소 컴포넌트 및 데이터 스토리지 컴포넌트 내의 데이터에 대해 동작한다. 이것이 이점인 이유는 새로운 애스펙트 패턴이 추가될 때 BOC에서 행해져야 할 변경만이 애스펙트 패턴 컴포넌트에 있게 되기 때문이다.
본 발명에 따른 이 실시예 및 다른 실시예들에서, 저장소 컴포넌트가 애플리케이션에서의 구성된 전달값에 대한 메타데이터를 더 포함하고 BOC 컴포넌트가 또한 구성된 전달값의 전달을 처리하는 시스템이 제공된다. 이것은 전달값에서의 타겟값으로서 구성되어 있는 애스펙트 인스턴스에 대한 모든 값이 그의 소스값이 변할 때 갱신되도록 한다.
본 발명은 저장소 컴포넌트 및 데이터 스토리지 컴포넌트로부터 데이터를 로드하기 위한 임시 메모리를 더 포함하는 시스템에서 적용가능하다. 이와 같이, 더욱 높은 성능이 달성될 수 있다.
본 발명의 이러한 실시예 및 또다른 실시예들에서, 시스템은 이벤트 큐를 더 포함한다. 이것이 이점인 이유는 예를 들어 이벤트 인스턴스들이 다수의 비지니스 객체 인스턴스들로부터 기동될 때 이벤트 큐가 이벤트 인스턴스들을 기동시키는 순서를 처리하기 때문이다.
본 발명은 이벤트 유형을 일의적으로 식별하는 이벤트 유형 ID를 포함하고 또 이벤트 인스턴스가 연결되어 있는 비지니스 객체 인스턴스를 일의적으로 식별하는 비지니스 객체 인스턴스 ID를 더 포함하는 이벤트 인스턴스를 기동시키는 단계, 및 비지니스 객체 인스턴스와 연결된 하나 이상의 애스펙트 인스턴스에 이벤트 인스턴스를 전송하는 단계를 포함하는, 애플리케이션을 실행하는 방법에서 유용하다. 이것이 이점인 이유는 애스펙트 인스턴스만이 기동된 이벤트 인스턴스에 어떻게 반응해야하는지를 알면 되기 때문이다.
본 발명은 예로서 이벤트 인스턴스가 기동되어야 하는 순서를 처리하는 이벤트 큐 컴포넌트로 이벤트 인스턴스를 포워딩하는 단계를 포함하는 방법에서 적용가능하다. 이것이 이점인 이유는 이와 같이 하여 이벤트 인스턴스가 올바른 순서로 기동되기 때문이다.
본 발명은 또한 전송된 이벤트 인스턴스가 기동된 이벤트 인스턴스와 동일한 방법에서 유용하다.
본 발명은 이벤트 인스턴스가 사용자 기동 이벤트 인스턴스인 방법에서 적용가능하다. 이와 같이, 애플리케이션의 사용자는 애스펙트 패턴에서의 하나 이상의 기능을 트리거할 수 있다.
본 발명에 따른 이러한 실시예 및 다른 실시예들에서, 이벤트 인스턴스가 시스템 기동 이벤트 인스턴스인 방법이 제공된다. 이와 같이, 애플리케이션은 애스펙트 패턴에서의 하나 이상의 기능의 실행을 개시할 수 있다.
본 발명은 기동된 이벤트 인스턴스에 대한 응답으로서 수행된 기능에 응답하여 애스펙트 인스턴스에 대한 값을 설정하는 단계를 더 포함하는 방법에서 유용하다. 이것이 이점인 이유는 애스펙트 인스턴스에 대한 변경이 이벤트 기능의 사용에 의해 추가될 수 있기 때문이다.
이러한 실시예 및 다른 실시예들에서, 본 발명은 비지니스 객체 인스턴스들 사이에서의 이벤트 인스턴스의 전달이 관계 애스펙트 패턴의 구성에 기초하는 것인 방법에서 유용하다. 이와 같이, 한 비지니스 객체 인스턴스에 대한 이벤트 인스턴스는 다른 비지니스 객체 인스턴스들에 대한 하나 이상의 이벤트 인스턴스들을 트리거할 수 있으며, 따라서 하나 이상의 비지니스 객체 인스턴스들 사이에서의 통신을 가능하게 해준다.
본 발명은,
1. 전달값 내의 소스로서 구성된 애스펙트 인스턴스 내의 제1 값의 변경을 등록하는 단계,
2. 애스펙트 인스턴스 내의 제1 값을 검색하는 단계, 및
3. 제1 값에 기초한 타겟으로 구성된 애스펙트 인스턴스에 대한 제2 값을 설정하는 단계를 포함하는 방법에서 유용하다.
이와 같이, 전달값에서의 타겟값으로서 구성된 값들은 그의 소스값이 변할 때 갱신되게 된다.
본 발명에서 적용가능한 본 방법은 예로서
1. 소스로서 구성된 애스펙트 인스턴스 내의 제3 값을 검색하는 것,
2. 제3 값에 대한 응답으로서 제4 값을 계산하는 것, 및
3. 규칙으로 구성된 애스펙트 인스턴스에 대해 제4 값을 설정하는 것에 의해 애스펙트 인스턴스로 구성된 규칙을 처리하는 단계를 더 포함한다. 이와 같이 규칙으로 구성된 애스펙트 인스턴스에 대한 값은 사용될 때만 갱신된다.
본 발명에 따른 이러한 실시예들에서, 방법은 BOID 및 BOID를 포함하는 그의 구성된 비지니스 객체 유형을 포함하는 비지니스 객체 인스턴스에 관련된 데이터, 정보 및 기능을 임시 메모리에 로드하는 단계를 더 포함한다. 예로서 비지니스 객체 인스턴스에 관련된 데이터, 정보 및 기능을 로드하는 단계가 비지니스 객체 인스턴스 및 그의 구성된 비지니스 객체 유형(BOID를 포함함)에 관련된 데이터, 정보 및 기능을 임시 메모리에 로드하는 단계를 더 포함하는 방법이 제공된다. 대부분의 경우에, 이것은 트랜잭션에서 사용될 수 있는 모든 관련 정보가 저장소 및/또는 데이터 스토리지로부터 한번 로드되기만 하면 되도록 한다.
본 발명에서 유용한 이러한 예시적인 실시예 및 다른 예시적인 실시예에서, 임시 메모리로부터 데이터 스토리지 컴포넌트로 1차 데이터를 로드하는 단계를 더 포함하는 방법이 제공된다. 이와 같이, 데이터 스토리지 컴포넌트는 트랜잭션이 성공적으로 실행되었을 때에 갱신될 수 있게 된다.
이하에서, 전술한 조건들에 기초한 시스템 아키텍처의 구현이 제공된다.
도 1은 본 발명이 구현될 수 있는 적절한 컴퓨팅 시스템 환경(100)의 예를 나타낸다. 컴퓨팅 시스템 환경(100)은 단지 적절한 컴퓨팅 환경의 일 예이며 본 발명의 사용 또는 기능의 범위에 제한을 가하도록 의도된 것은 아니다. 컴퓨팅 환경(100)은 예시적인 오퍼레이팅 환경(100)에 도시된 컴포넌트들 중의 임의의 하나 또는 조합에 관하여 임의의 종속성(dependency) 또는 요구사항(requirement)을 갖는 것으로 해석되어서는 안된다.
본 발명은 많은 다른 범용 또는 특수목적 컴퓨팅 시스템 환경들 또는 구성들과 함께 동작될 수 있다. 본 발명과 함께 사용하기에 적합할 수 있는 잘 알려진 컴퓨팅 시스템, 환경, 및/또는 구성의 예로는, 퍼스널 컴퓨터, 서버 컴퓨터, 핸드헬드(hand-held) 또는 랩탑 장치, 멀티프로세서 시스템, 마이크로프로세서-기반 시스템, 셋 탑 박스(set top box), 프로그램가능한 가전제품(programmable consumer electronics), 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 상기의 시스템 또는 장치 중의 임의의 것을 포함하는 분산형 컴퓨팅 환경 등이 포함될 수 있지만, 이에 한정되지 않는다.
본 발명은 컴퓨터에 의해 실행되는, 프로그램 모듈과 같은 컴퓨터 실행가능 명령과 일반적으로 관련하여 기술될 수 있다. 일반적으로, 프로그램 모듈은 특정 태스크를 수행하거나 특정 추상 데이터 유형을 구현하는 루틴, 프로그램, 오브젝트, 컴포넌트, 데이터 구조 등을 포함한다. 본 발명은 또한 통신 네트워크 또는 다른 데이터 전송 매체를 통해 링크된 원격 프로세싱 장치에 의해 태스크를 수행하는 분산형 컴퓨팅 환경에서 실행될 수 있다. 분산형 컴퓨팅 환경에서, 프로그램 모듈은 메모리 저장 장치를 포함하는 국부 및 원격 컴퓨터 저장 매체 내에 위치할 수 있다.
도 3을 참조하면, 본 발명을 구현하기 위한 예시적인 시스템은 컴퓨터(110)의 형태의 범용 컴퓨팅 장치를 포함한다. 컴퓨터(110)의 컴포넌트들로는, 프로세싱 유닛(120), 시스템 메모리(130), 및 시스템 메모리를 포함하는 다양한 시스템 컴포넌트를 프로세싱 유닛(120)에 연결시키는 시스템 버스(121)가 포함될 수 있지만, 이에 한정되는 것은 아니다. 시스템 버스(121)는 다양한 버스 아키텍처 중의 임의의 것을 사용하는 로컬 버스, 주변 버스, 및 메모리 버스 또는 메모리 컨트롤러를 포함하는 몇가지 유형의 버스 구조 중의 임의의 것일 수 있다. 예로서, 이러한 아키텍처는 산업 표준 아키텍처(ISA) 버스, 마이크로 채널 아키텍처(MCA) 버스, 인핸스드 ISA(Enhanced ISA; EISA) 버스, 비디오 일렉트로닉스 표준 어소시에이션(VESA) 로컬 버스, 및 메자닌(Mezzanine) 버스로도 알려진 주변 컴포넌트 상호접속(PCI) 버스를 포함하지만, 이에 한정되는 것은 아니다.
컴퓨터(110)는 통상적으로 다양한 컴퓨터 판독가능 매체를 포함한다. 컴퓨터 판독가능 매체는 컴퓨터(110)에 의해 액세스될 수 있는 임의의 이용가능한 매체일 수 있으며, 휘발성 및 비휘발성 매체, 분리형(removable) 및 비분리형(non-removable) 매체를 둘다 포함한다. 예로서, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함할 수 있지만, 이에 한정되는 것은 아니다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령, 데이터 구조, 프로그램 모듈 또는 다른 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 둘다 포함한다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래쉬 메모리 또는 기타 메모리 기술, CD-ROM, DVD(digital versatile disk) 또는 기타 광학 디스크 저장장치, 자기 카세트, 자기 테이프, 자기 디스크 저장장치 또는 기타 자기 저장장치, 또는 컴퓨터(110)에 의해 액세스될 수 있고 원하는 정보를 저장하는 데 사용될 수 있는 임의의 기타 매체를 포함할 수 있지만, 이에 한정되지 않는다. 통신 매체는 통상적으로 반송파 또는 기타 전송 메카니즘 등의 변조된 데이터 신호에 컴퓨터 판독가능 명령, 데이터 구조, 프로그램 모듈, 또는 다른 데이터를 구현하며, 임의의 정보 전달 매체를 포함한다. "변조된 데이터 신호"라는 용어는 신호 내의 정보를 인코딩하도록 설정되거나 변환된 특성을 하나 또는 그 이상을 갖는 신호를 의미한다. 예로서, 통신 매체는 유선 네트워크 또는 직접 유선 접속 등의 유선 매체와, 음향, RF, 적외선 및 기타 무선 매체 등의 무선 매체를 포함하지만, 이에 한정되지 않는다. 상술한 것들 중의의 임의의 조합이 컴퓨터 판독가능 매체의 범위 내에 포함되어야 한다.
시스템 메모리(130)는 ROM(131) 및 RAM(132) 등의 휘발성 및/또는 비휘발성 메모리의 형태의 컴퓨터 저장 매체를 포함한다. 시동중과 같은 때에 컴퓨터(110) 내의 구성요소들간에 정보를 전송하는 것을 돕는 기본 루틴을 포함하는 기본 입출력 시스템(133; BIOS)은 일반적으로 ROM(131)에 저장된다. RAM(132)은 일반적으로 프로세싱 유닛(120)에 즉시 액세스될 수 있고 및/또는 프로세싱 유닛(120)에 의해 현재 작동되는 프로그램 모듈 및/또는 데이터를 포함한다. 예로서, (한정하고자 하는 것은 아님) 도 3은 오퍼레이팅 시스템(134), 애플리케이션 프로그램(135), 기타 프로그램 모듈(136), 및 프로그램 데이터(137)를 도시한다.
컴퓨터(110)는 또한 다른 분리형/비분리형, 휘발성/비휘발성 컴퓨터 저장 매체를 포함할 수 있다. 단지 예로서, 도 3에는 비분리형 비휘발성 자기 매체로부터 판독하거나 그 자기 매체에 기록하는 하드 디스크 드라이브(141), 분리형 비휘발성 자기 디스크(152)로부터 판독하거나 그 자기 디스크에 기록하는 자기 디스크 드라이브(151), 및 CD-ROM 또는 기타 광학 매체 등의 분리형 비휘발성 광학 디스크(156)로부터 판독하거나 그 광학 디스크에 기록하는 광학 디스크 드라이브(155)가 도시되어 있다. 예시적인 오퍼레이팅 환경에서 사용될 수 있는 다른 분리형/비분리형, 휘발성/비휘발성 컴퓨터 저장 매체는 자기 테이프 카세트, 플래쉬 메모리 카드, DVD(Digital versatile disk), 디지털 비디오 테이프, 반도체 RAM, 반도체 ROM 등을 포함하지만 이에 한정되지 않는다. 하드 디스크 드라이브(141)는 일반적으로 인터페이스(140)와 같은 비분리형 메모리 인터페이스를 통해 시스템 버스(121)에 접속되고, 자기 디스크 드라이브(151) 및 광학 디스크 드라이브(155)는 일반적으로 인터페이스(150)와 같은 분리형 메모리 인터페이스에 의해 시스템 버스(121)에 접속된다.
앞서 기술되고 도 3에 도시된 드라이브 및 그 관련 컴퓨터 저장 매체는 컴퓨터(110)를 위한 컴퓨터 판독가능 명령, 데이터 구조, 프로그램 모듈 및 기타 데이터의 저장을 제공한다. 도 3에서, 예를 들어, 하드 디스크 드라이브(141)는 오퍼레이팅 시스템(144), 애플리케이션 프로그램(145), 기타 프로그램 모듈(146), 및 프로그램 데이터(147)를 저장하는 것으로 도시된다. 이들 컴포넌트는 오퍼레이팅 시스템(134), 애플리케이션 프로그램(135), 기타 프로그램 모듈(136), 및 프로그램 데이터(137)와 동일할 수도 있고 다를 수도 있다. 오퍼레이팅 시스템(144), 애플리케이션 프로그램(145), 다른 프로그램 모듈(146), 및 프로그램 데이터(147)는 최소한 다른 복사본(different copies)임을 나타내기 위하여 다른 번호를 부여하였다.
사용자는 일반적으로 마우스, 트랙볼, 또는 터치 패드라 불리우는 포인팅 장치(161), 키보드(162), 및 마이크로폰(163)과 같은 입력 장치를 통해 컴퓨터(110)에 명령 및 정보를 입력할 수 있다. (도시되지 않은) 기타 입력 장치는 조이스틱, 게임 패드, 위성 안테나, 스캐너 등을 포함할 수 있다. 이들 입력 장치 및 그외의 입력 장치는 시스템 버스에 연결된 사용자 입력 인터페이스(160)를 통해 종종 프로세싱 유닛(120)에 접속되지만, 패럴렐 포트, 게임 포트 또는 유니버설 시리얼 포트(USB) 와 같은 기타 인터페이스 및 버스 구조에 의해 접속될 수 있다. 모니터(191) 또는 다른 유형의 디스플레이 장치는 또한 비디오 인터페이스(190) 등의 인터페이스를 통해 시스템 버스(121)에 접속된다. 모니터외에도, 컴퓨터는 또한 출력 주변 인터페이스(195)를 통해 접속될 수 있는 스피커(197) 및 프린터(196) 등의 기타 주변 출력 장치를 포함할 수 있다.
컴퓨터(110)는 원격 컴퓨터(180)와 같은 하나 이상의 원격 컴퓨터로의 논리적 접속을 이용한 네트워크 환경에서 동작할 수 있다. 원격 컴퓨터(180)는 퍼스널 컴퓨터, 서버, 라우터, 네트워크 PC, 피어(peer) 장치, 또는 기타 공통 네트워크 노드일 수 있으며, 컴퓨터(110)에 관하여 상술한 구성요소 중 다수 또는 모든 구성요소를 일반적으로 포함할 수 있다. 도 3에 도시된 논리적 접속은 근거리 통신망(LAN; 171) 및 원거리 통신망(WAN; 173)을 포함하지만, 그 외의 네트워크를 포함할 수도 있다. 이러한 네트워크 환경은 사무실, 기업 광역 컴퓨터 네트워크(enterprise-wide computer network), 인트라넷, 및 인터넷에서 일반적인 것이다.
LAN 네트워크 환경에서 사용되는 경우, 컴퓨터(110)는 네트워크 인터페이스 또는 어댑터(170)를 통해 LAN(171)에 접속된다. WAN 네트워크 환경에서 사용되는경우, 컴퓨터(110)는 일반적으로 인터넷 등의 WAN(173)을 통해 통신을 구축하기 위한 모뎀(172) 또는 기타 수단을 포함한다. 내장형 또는 외장형일 수 있는 모뎀(172)은 사용자 입력 인터페이스(160) 또는 기타 적절한 메카니즘을 통해 시스템 버스(121)에 접속될 수 있다. 네트워크 환경에서, 컴퓨터(110)에 관하여 도시된 프로그램 모듈 또는 그 일부분은 원격 메모리 저장 장치에 저장될 수 있다. 예로서 (한정하고자 하는 것은 아님), 도 3은 메모리 장치(181)에 상주하는 원격 애플리케이션 프로그램(185)을 도시한다. 도시된 네트워크 접속은 예시적인 것이며, 컴퓨터들간의 통신 링크를 구축하는 그 외의 수단이 사용될 수 있다.
도 4에, 시스템 아키텍처의 컴포넌트들이 도시되어 있다. 이 아키텍처는 디자인 컴포넌트(200), 저장소 컴포넌트(202), 비지니스 객체 콘트롤러(204), 데이터 스토리지 컴포넌트(206), 및 사용자 인터페이스(UI) 컴포넌트(208)를 포함한다. 모든 애스펙트(애스펙트 인스턴스, 애스펙트 유형, 구성된 애스펙트 유형, 또는 애스펙트 패턴 등) 및 비지니스 객체(비지니스 객체 인스턴스, 비지니스 객체 유형, 또는 구성된 비지니스 객체 유형 등)가 동 도면에 도시된 컴포넌트들 각각에 존재한다. 동 도면은 화살표(즉, 한 컴포넌트에서 다른 컴포넌트로 향하는 화살표는 전자의 컴포넌트가 후자의 컴포넌트의 기능을 사용함을 나타냄)로 표시된 컴포넌트들의 의존 관계를 나타내고 있다.
애플리케이션 개발자는 애플리케이션을 생성하기 위해 디자이너 컴포넌트(200)를 사용할 수 있다. 따라서, 디자이너(200)는 애플리케이션을 달성하기 위해 구성될 수 있는 시스템 아키텍처의 요소들을 애플리케이션 개발자에 제공한다.
사용자 인터페이스(208)는 런타임 데이터(1차 데이터)를 포함한 실제 애플리케이션의 일부를 최종 사용자에게 제공한다.
저장소(202)는 시스템의 메타데이터(즉, 애스펙트 패턴, 애스펙트 유형, 애스펙트 유형 구성, 비지니스 객체 유형, 및 구성된 비지니스 객체 유형의 데이터)를 유지하고 있다.
데이터 스토리지(206)는 애플리케이션의 1차 데이터(즉, 애스펙트 인스턴스로 이루어진 비지니스 객체 인스턴스)를 유지한다.
비지니스 객체 콘트롤러 컴포넌트(204)는 시스템의 비지니스 로직을 제어한다[즉, 저장소(202)에 저장된 메타데이터에 따라 시스템의 1차 데이터를 제어한다]. 따라서, 비지니스 객체 콘트롤러(204)는 시스템의 동작을 제어한다.
시스템 아키텍처의 예시적인 실시예에서, 저장소(202) 내의 모든 데이터는 데이터베이스에 저장되지만, 그 데이터는 또한 예를 들면 파일(XML 파일 등)에 저장될 수도 있다. 이러한 후자의 실시예는 애플리케이션의 사용자가 한명 이상 애플리케이션의 데이터베이스에 영속적인 액세스를 하지 않는 경우(예를 들어, 오프라인 상황에서) 및 사용자가 사용하는 장비 상에 관계형 데이터베이스를 설치할 수 없는 경우에 이점이 될 수 있다.
저장소 컴포넌트(202)는 물론 데이터 스토리지 컴포넌트(206)를 포함하는 데이터베이스의 일 실시예의 예시적인 레이아웃이 도 5에 도시되어 있다. 프레임워크 부분(210), 애스펙트 플러그 부분(212), 및 애스펙트 패턴(18, 22)을 갖는 데이터베이스가 도시되어 있다. 프레임워크 부분(210) 및 애스펙트 플러그 부분(212)은 구성된 비지니스 객체 유형 및 비지니스 객체 인스턴스를 처리한다. 각각의 애스펙트 패턴 부분은 대응하는 애스펙트 패턴의 데이터 특성을 포함한다. 데이터베이스 내의 데이터는 모든 메타데이터를 포함하는 저장소 부분(202)과 1차 데이터를 포함하는 데이터 스토리지 부분(206)으로 분할된다. 각 부분은 하나 이상의 테이블을 포함한다.
데이터베이스의 저장소 부분(202) 내에서, 각각의 애스펙트 패턴은 이 특정의 애스펙트 패턴에 고유한 메타데이터를 포함한다. 각각의 애스펙트 패턴은 애스펙트 패턴의 고유 메타데이터의 구조에 따라 하나 이상의 관련 테이블을 포함할 수 있다. 본 발명에서 유용한 예시적인 실시예에서, 애스펙트 연결 수단(36)은 그의 대응하는 애스펙트 패턴 부분 내의 구성된 애스팩트 유형의 메타데이터를 식별하는 데 사용되는 애스펙트 유형 ID(ATID)이다. 따라서, 각각의 애스펙트 패턴은 애스펙트 유형 ID(ATID) 및 고유의 애스펙트 패턴에 대한 하나 이상의 메타데이터 특성을 포함한 0 또는 다수의 엔트리를 포함하는 그 애스펙트 패턴에 대한 구성된 애스펙트 유형의 테이블을 포함한다.
각각의 구성된 애스펙트 유형은 고유의 이벤트 유형의 이벤트 인스턴스가 수신될 때 그의 애스펙트 패턴 내에서 어느 기능(33)이 실행될 수 있는지에 대한 정보를 포함한다. 또한, 구성된 애스펙트 유형은 애스펙트 패턴 내의 어느 기능(33)으로부터 이벤트 인스턴스가 기동될 수 있는지를 알고 있다. 이를 위해, 애스펙트 패턴은 하나 이상의 애스펙트 이벤트 유형 연결 수단(32)을 포함할 수 있다. 본 발명에서 적용가능한 예시적인 실시예에서, 애스펙트 이벤트 유형 연결 수단(32)은하나 이상의 애스펙트 이벤트 유형 ID(A1ETID1, A1ETID2, ..., ..., ANETID1, ANETID2, ...)(도 5에 도시되어 있지 않음)일 수 있고, 이벤트 유형 연결 수단(24)은 이벤트 유형 ID이다. 이벤트 유형은 이어서 이벤트 유형 ID(ETID)를 갖는 하나 이상의 애스펙트 이벤트 유형 ID 사이에서 참조를 행함으로써 하나 이상의 애스펙트 패턴 내의 하나 이상의 기능(33)으로 구성된다.
예를 들어, 주소가 검사될 필요가 있는 경우, 이벤트 유형 ID "주소 확인"은 이를 주소를 국내 전화부와 비교하여 확인하는 주소 애스펙트 패턴 내의 한 기능과 연결된 애스펙트 이벤트 유형 ID(예를 들어, 도 5에서 M25일 수 있는 A2TID5)와 관련시킴으로써 구성될 수 있다. 따라서, 구성된 주소 애스펙트 패턴은 이벤트 유형 ID "주소 확인"을 참조하는 애스펙트 이벤트 유형 ID(예를 들어, A2TID5) "주소 확인"을 갖는다.
프레임워크(210)의 저장소 부분(202)은 모든 구성된 비지니스 객체 유형 및 각각의 구성된 비지니스 객체 유형에 대한 이벤트 유형의 도메인의 정보를 포함한다. 본 발명에서 유용한 예시적인 실시예에서, 비지니스 객체 유형 연결 수단(34)은 구성된 비지니스 객체 유형 ID(BOTID)이다. 프레임워크 부분(210)의 저장소(202)는 애플리케이션에서의 모든 구성된 비지니스 객체 유형을 포함한 하나 이상의 테이블을 포함하며, 이 하나 이상의 테이블은 비지니스 객체 유형 ID(BOTID)를 갖는 0 또는 다수의 엔트리를 포함한다. 저장소 부분(202)은 또한 애플리케이션에서의 모든 이벤트 유형의 하나 이상의 테이블을 포함하며, 이 하나 이상의 테이블은 BOTID 및 이벤트 유형 ID(ETID)를 갖는 0 또는 다수의 엔트리를 포함한다. 저장소 부분(202)은 또한 전달값의 하나 이상의 테이블을 포함한다. 이 하나 이상의 테이블은 소스 애스펙트 ID(ATID1), 타겟 애스펙트 ID(ATID2), 및 BOTID를 포함한 0 또는 다수의 엔트리를 포함한다.
애스펙트 플러그(212)는 여러가지 비지니스 객체 유형이 여러가지 애스펙트 패턴의 애스펙트 유형으로 어떻게 구성되는지의 정보를 포함한다. 저장소 부분(202)의 애스펙트 플러그(212)는 애플리케이션에서의 모든 비지니스 객체 유형이 애스펙트 유형으로 어떻게 구성되는지의 하나 이상의 테이블을 포함한다. 이들 테이블은 구성된 비지니스 객체 유형 ID(BOTID)는 물론 구성된 애스펙트 유형 ID(ATID)를 포함한 0 또는 다수의 엔트리를 포함한다.
본 발명의 예시적인 실시예에서, 애스펙트 플러그(212)는 또한 구성된 애스펙트 유형 및 따라서 또한 그의 애스펙트 인스턴스가 여러가지 상황에서 UI에 포함될 수 있는지 여부를 식별하는 하나 이상의 엔트리, 예를 들어 그것을 구성하고 있는 비지니스 객체 유형 및 그의 비지니스 객체 인스턴스의 캡션, 그것을 구성하고 있는 비지니스 객체 유형 및 그의 비지니스 객체 인스턴스의 요약, 또는 그것을 구성하고 있는 비지니스 객체 유형 및 그의 비지니스 객체 인스턴스의 개요를 포함한다. 예를 들어, "집 주소"는 물론 "이메일 주소" 둘다를 포함하는 비지니스 객체 유형 "직원"이 생성되는 경우, 비지니스 객체 유형은 애스펙트 플러그(212)에서 예를 들어 BOTID(예를 들어, "직원") 및 ATID "집 주소"를 포함하는 한 엔트리와BOTID "직원" 및 ATID "이메일 주소"를 포함하는 또하나의 엔트리를 만듦으로써 구성될 것이다. 애스펙트 플러그(212)에서의 ATID "집 주소"는 "주소" 애스펙트 패턴(예를 들어, 도 5의 애스펙트 패턴 1에 대응함) 내의 ATID "집 주소"에 의해 참조되고, 이는 우편 주소가 구성될 수 있게 해준다. 이와 마찬가지로, 애스펙트 플러그(212)에서의 ATID "이메일 주소"는 ATID "이메일 주소"를 갖는 "주소" 애스펙트 패턴 부분에서 참조된다. "주소" 애스펙트 패턴에서의 "집 주소"와 "이메일 주소"의 실제 구성은 ATID "집 주소" 및 "이메일 주소"를 각각 참조하는 하나 이상의 테이블에서의 하나 이상의 엔트리에서 찾아볼 수 있다.
본 발명에서 유용한 예시적인 실시예에서, "관계" 애스펙트 패턴의 관련된 관계 애스펙트 연결 수단은 관련된 관계 유형 ID이다. 예를 들어, "관계" 애스펙트 패턴이 도 5의 애스펙트 패턴 1에 대응하는 경우, 관련된 관계 유형 ID는 M11일 수 있다. 그러면, 2개의 비지니스 객체 유형 사이의 관계는 "관계" 애스펙트 패턴에서의 ATID "1"을 참조하는 ATID "1"로 BOTID "1"을 구성하고 또한 "관계 애스펙트 패턴"에서의 ATID "2"를 참조하는 ATID "2"로 BOTID "2"를 구성함으로써 구성된다. 그러면, BOTID 1에 의해 식별되는 구성된 비지니스 객체 유형과 BOTID 2에 의해 식별되는 구성된 비지니스 객체 유형 사이의 관계는 ATID "1"을 포함한 엔트리에 대해 관련된 관계 유형 ID(예를 들어, M11)를 "2"로 설정하고 ATID "2"를 포함한 엔트리에 대해 M11을 "1"로 설정함으로써 구성된다.
애스펙트 플러그(212)의 이점은 새로운 애스펙트 패턴이 데이터베이스의 재설계없이 데이터베이스에 추가될 수 있다는 것이며, 그 이유는 전체 데이터베이스의 레이아웃에 대한 변경만이 새로운 애스펙트 패턴(애스펙트 패턴 n+1)이 되어 새로운 애스펙트 패턴에 관한 표준 정보를 애스펙트 플러그(212)에 추가하게 되기 때문이다. 이것은 시스템의 업그레이드를 용이하게 해준다. 예시적인 실시예에서, 새로운 애스펙트 패턴에 관한 표준 정보는 하나의 테이블에 한 줄을 추가하는 것만으로 애스펙트 플러그(212)에 추가된다.
데이터 스토리지 컴포넌트(206)의 일 실시예가 또한 도 5에 도시되어 있다. 데이터베이스의 데이터 스토리지 부분(206)은 하나 이상의 테이블에서의 애플리케이션의 1차 데이터를 포함한다. 프레임워크 부분(210)은 애플리케이션의 모든 비지니스 객체 인스턴스의 하나 이상의 테이블 및 기동된 이벤트 인스턴스가 무엇인지의 하나 이상의 테이블을 포함한다. 실제의 애스펙트 인스턴스는 데이터베이스에서의 데이터 스토리지 부분(206)의 대응하는 애스펙트 패턴 부분에 저장된다.
도 5로부터, 프레임워크 부분(210)의 데이터 스토리지 부분(206)이 비지니스 객체 인스턴스를 포함하는 하나 이상의 테이블을 포함하고, 테이블은 BOTID 및 비지니스 객체 유형의 비지니스 객체 인스턴스의 비지니스 객체 인스턴스 ID(BOID)를 갖는 0 또는 다수의 엔트리를 포함한다는 것을 알 수 있다. 데이터 스토리지(206)는 또한 기동된 모든 이벤트 인스턴스의 하나 이상의 테이블을 가질 수 있으며, 이 테이블은 BOID, ETID 및 이벤트 인스턴스 ID(EID)를 갖는 0 또는 다수의 엔트리를 포함한다. 데이터 스토리지 (또는 런타임) 부분(206)에서의 애스펙트 패턴 부분들 각각은 0 또는 다수의 ATID, 애스펙트 인스턴스 ID(AID) 및 BOID를 포함한 그의 애스펙트 인스턴스들의 하나 이상의 테이블을 포함한다.
프레임워크(210)의 레이아웃은 애플리케이션에 독립적이다. 예를 들어, 프레임워크는 현장 서비스 관리 애플리케이션 및 원장(元帳) 애플리케이션(General Ledger Application) 등에 대해 동일할 수 있다.
도 6에, 비지니스 객체 콘트롤러(BOC)(204)의 보다 상세한 개요가 제공되어 있다. BOC(204)는 예로서 BO 컴포넌트(220), BOC 인터페이스 컴포넌트(222), 이벤트 큐(224), 전달값 컴포넌트(222), 및 하나 이상의 애스펙트 패턴 컴포넌트(228)를 포함한다. BOC(204)는 외부 컴포넌트[UI(208) 등]와 문서를 교환한다. 이러한 동작들을 처리하는 것이 BOC 인터페이스 컴포넌트(222)이다. 본 시스템의 아키텍처에서, BOC(204)는 (비쥬얼 베이직, C#, 자바 등) 코드로 개발되고 애플리케이션 서버 상에서 실행된다.
단일 애스펙트 패턴의 1차 데이터와 메타데이터를 서로 링크시키는 코드가 애스펙트 패턴 컴포넌트(228)에 포함되어 있다. 예를 들어, 애스펙트 패턴 컴포넌트(228)는 저장소(202)에서 읽혀지고 데이터 스토리지(206)에서 동작한다. 시스템 아키텍처의 예시적인 실시예에서, 애스펙트 패턴 컴포넌트(228)는 애스펙트 패턴들 각각에 대해 하나의 컴포넌트를 포함하며, 이 때 애스펙트 패턴 컴포넌트(228) 각각은 동일한 애스펙트 인터페이스를 구현한다. 이것은 BOC(204)의 다른 컴포넌트들이 임의의 애스펙트 패턴 컴포넌트(228)와 그의 인터페이스를 통해 그의 구현을 모른채로 상호작용할 수 있게 해준다. 이것이 이점인 이유는 새로운 애스펙트 패턴이 생성될 때 구현되어야 하는 변경만이 애스펙트 패턴 컴포넌트(228)에 있게 되기 때문이다. 따라서, BOC(204)는 새로운 애스펙트 패턴이 구현되어야 할 때 용이하게 업데이트될 수 있다. 애스펙트 인터페이스는 이벤트 인스턴스의 전송 및 수신, 표현식 및 채널을 통한 값의 전달은 물론 규칙 표현식의 계산 등의 기능에 액세스한다.
BOC(204)의 주요 기능 중 하나는 시스템의 동작을 제어하는 것이다. 전술한 바와 같이, 시스템의 동작은 이벤트 및 전달값에 의해 관리된다. 이를 위해, BOC(204)는 이벤트를 관리하는 이벤트 큐(224) 및 전달값을 관리하는 전달값 컴포넌트(226)를 더 포함한다. 이벤트는 비지니스 객체의 동작을 제어한다(즉, 이벤트 인스턴스는 도 5에 도시된 실제의 비지니스 객체 인스턴스에 연결되어 있다). 이벤트 큐(224)는 이벤트 인스턴스가 기동되어야 하는 순서를 관리한다. 일 실시예에서, 이벤트 큐(224)는 제1 착신 이벤트 인스턴스가 특정의 비지니스 객체 인스턴스에 대해 기동될 제1 이벤트 인스턴스가 되도록 한다. 그 다음 이벤트 인스턴스들은 제1 이벤트 인스턴스가 완료될 때까지 기동되지 않는다.
이벤트 큐(224)는 비지니스 객체(BO) 컴포넌트(220)를 통해 이벤트 인스턴스를 수신하고, BO 컴포넌트(220)는 이어서 데이터 스토리지(206)로부터 또는 이 데이터 스토리지(206)로부터 이벤트 인스턴스를 수신하는 애스펙트 패턴 컴포넌트(228)로부터 이벤트 인스턴스를 수신한다. 이어서, 이벤트 큐(204)는 이벤트 인스턴스를 큐에 넣는다. BO 컴포넌트(220)는 어느 이벤트 유형이 어느 애스펙트 유형으로 구성되어 있는지를 알기 위해 저장소(202)를 검사하는 일을 맡고 있다.
본 발명의 예시적인 실시예에서, BOC 인터페이스 컴포넌트(222)는 다른 태스크를 완료하기 이전에 애플리케이션 사용자에 의해 기동되는 소위 서브 태스크를 추적하는 태스크 스택(230)과 상호작용한다. 서브 태스크가 그로부터 기동되는 것인 제1 태스크는 호출측 태스크라고 한다. 예로서, 이러한 실시예는 사용자가 "판매 주문 수정" 태스크의 "수정" 스텝 내로부터 "고객 탐색" 태스크를 시작하고 이어서 "고객 탐색" 태스크의 "선택" 스텝 내로부터 "고객 등록" 태스크를 시작할 수 있게 해준다. 태스크 스택(230)은 3가지 태스크 상태, 즉 수정 스텝에서의 판매 주문 수정 -> 선택 스텝에서의 고객 탐색 -> 등록 스텝에서의 고객 등록을 포함한다.
예시적인 실시예에서, 태스크 스택(230)은 존속되어 각 사용자가 미완료 태스크를 찾아내 재시작할 수 있게 해준다.
태스크 패턴의 어떤 일례들이 이하의 표 1에 나타내어져 있다. 표 1에 나타내어져 있는 바와 같이, 태스크 패턴은 태스크 스텝 "생성" 및 "보기"를 포함하는 "생성"일 수 있다. 다른 태스크 패턴은 태스크 스텝 "선택", "가능하게 함(Make possible)", "실행"(Do) 및 "보기"를 포함한 "메소드 실행"(Do Method)일 수 있다.
태스크 패턴의 예
태스크 패턴 태스크 스텝 1 태스크 스텝 2 태스크 스텝 3 태스크 스텝
생성 생성 보기
수정 선택 수정 보기
삭제 선택 삭제
인쇄 선택 인쇄
보기 선택 보기
탐색 선택
일관성 부여 선택 일관성 부여 보기
변환 선택 변환 생성 보기
메소드 실행 선택 가능하게 함 실행 보기
태스크 스텝은 태스크 스텝이 데이터를 처리하는지 여부에 따라 2개의 그룹으로 분할될 수 있다. 본 발명의 일 실시예에서, 태스크에서 (예를 들어, 구성된 태스크 패턴에서) 획득된 정보는 데이터를 처리하는 각 태스크 스텝을 완료한 후에 저장된다. 본 발명의 다른 실시예에서, 정보는 전체 태스크가 수행되었을 때 저장된다.
본 발명의 예시적인 실시예에서, 모든 태스크 스텝은 사용자로 하여금,
a) 태스크 스텝을 수행함으로써 그 태스크의 태스크 스텝들의 시퀀스가 계속되도록 하거나
b) 태스크 스텝을 취소함으로써 현재의 태스크를 중단하고 스택 상의 호출 태스크로 복귀할 수 있도록 해주는 기능을 포함한다.
이들 방법 이외에, 단일 태스크 스텝은 이하의 표 2에 제공된 기능을 포함할 수 있다.
태스크 스텝에 대한 기능의 일례
태스크 스텝의 리스트 기능
생성 애플리케이션의 사용자가 비지니스 객체 유형의 비지니스 객체 인스턴스를 생성할 수 있게 함.
선택 (태스크를 구성하고 있는 동일한 비지니스 객체 유형으로부터 나온) 비지니스 객체 인스턴스의 세트를 제공하여 사용자가 제공된 비지니스 객체 인스턴스 중 하나를 선택할 수 있도록 함.
보기 애플리케이션의 사용자에게 비지니스 객체 인스턴스를 제공함.
일관성 부여 (예를 들어 구성의 일부로서 정의된) 모든 필요한 정보가 비지니스 객체 인스턴스에 제공되었는지를 검사함.
변환 생성 한 비지니스 객체 유형으로부터 나온 비지니스 객체 인스턴스를 새로운 비지니스 객체 인스턴스로 변환함(예를 들어, 시세 등의 비지니스 객체 유형은 주문으로 변환될 수 있음).
인쇄 비지니스 객체 인스턴스의 인쇄를 가능하게 함.
수정 애플리케이션의 사용자가 비지니스 객체 인스턴스를 변경할 수 있게 함.
삭제 애플리케이션의 사용자가 비지니스 객체 인스턴스를 삭제할 수 있게 함.
가능하게 함 비지니스 객체 인스턴스의 하나 이상의 기능을 수행할 수 있기 위해 태스크 시퀀스를 개시함. 예시적인 실시예에서, 이것은 사용자로 하여금 비지니스 객체 인스턴스의 하나 이상의 애스펙트 인스턴스를 비지니스 객체 유형으로 구성된 이벤트 유형의 이벤트 인스턴스 및 태스크에 반응할 수 있는 상태로 만들게 함으로써 행해짐.
실행 이벤트 유형의 이벤트 인스턴스를 기동시킴으로써 비지니스 객체 유형의 기능이 수행됨.
본 발명의 예시적인 실시예에서, 이하의 뷰 중 일부는 여러가지 태스크 스텝에 대한 디폴트 뷰로서 할당될 수 있지만, 이들 뷰는 예시적인 것에 불과하며 다른 뷰들도 역시 할당될 수 있다. "탐색 결과 뷰"는 태스크 스텝 "선택"에서의 디폴트 뷰로서 사용될 수 있다. 이 뷰는 비지니스 객체 인스턴스의 이름 및 ID에 관한 정보를 포함한다. "편집 뷰"는 태스크 스텝 "보기", "수정", "생성", 및 "인쇄"에서의 디폴트 뷰로서 사용될 수 있다. 이 뷰는 비지니스 객체 유형으로 구성된 애스펙트 유형의 모든 애스펙트 인스턴스를 제공한다. 비어있는 페이지 타이틀을 보여주고 또 "탐색 결과 뷰"로부터의 필드를 포함하는 "삭제 뷰"는 태스크 스텝 "삭제"에 대한 디폴트 뷰로서 사용될 수 있다.
도 7은 이벤트 인스턴스의 기동을 처리하는 한 순서도를 나타낸 것이다. 이벤트 인스턴스를 기동할 시간이 되면, 이벤트 인스턴스를 애스펙트 패턴 인터페이스를 거쳐 애스펙트 패턴 컴포넌트(228)로 전달하는 비지니스 객체 컴포넌트(220)에 대해 이벤트 인스턴스가 기동된다. 이어서, 애스펙트 패턴 컴포넌트(228)는 이벤트 인스턴스가 특정의 비지니스 객체 인스턴스 내의 단일 애스펙트 인스턴스에 대해 기동되도록 한다. 이어서, 단일 애스펙트 인스턴스는 이러한 이벤트 인스턴스가 그의 인스턴스인 이벤트 유형으로 그 자신이 구성되어 있는지 여부를 결정한다. 도 7에서, 이벤트 인스턴스 "1"은 BO 컴포넌트(220)에 대해, 이어서 애스펙트 패턴 1의 애스펙트 패턴 컴포넌트(228)에 대해, 그 후에 애스펙트 패턴(2)에 대해 기동된다. 애스펙트 패턴 2는 이어서 이벤트 인스턴스 "2"를 이벤트 인스턴스 "1"을 수신한 것에 응답하여 BO 컴포넌트(220)에 대해 기동시킨다. 이벤트 인스턴스 "2"는 이어서 이벤트 큐(224)에 넣어진다. BO 컴포넌트(220)는 계속하여 이벤트 인스턴스를 [그의 대응하는 애스펙트 패턴 컴포넌트(228)를 통해] 나머지 애스펙트 패턴, 이 경우 애스펙트 패턴 3으로만 전달한다. 이어서, 이벤트 큐(224)는 그의큐 내의 첫번째 이벤트 인스턴스를 BO 컴포넌트(220)로 전달하고, 이 BO 컴포넌트(220)는 그 이벤트 인스턴스를 모든 애스펙트 패턴으로 전달한다. 다른 실시예에서, 이벤트 인스턴스는 그 자신에 연결된 애스펙트 인스턴스로만 전송된다.
BOC(204)의 다른 실시예에서, BOC(204)는 이벤트 큐(224)를 포함하지 않는다. 이러한 시스템에서의 이벤트의 처리가 도 8에 도시된 순서도로 나타내어져 있다. 도 8에서, 이벤트 인스턴스 "1"은 BO 컴포넌트(220)에 대해 기동된다. 이벤트 인스턴스 "1"은 이어서 [또다시 대응하는 컴포넌트(228)를 통해] 애스펙트 패턴 1 및 애스펙트 패턴 2로 전달된다. 애스펙트 패턴 2는 이어서 그에 응답하여 이벤트 인스턴스 "2'를 BO 컴포넌트(220)에 대해 기동시킨다. 그 후에, BO 컴포넌트(220)는 이벤트 인스턴스 "2"를 모든 애스펙트 패턴으로, 이 경우 먼저 애스펙트 패턴 1로, 이어서 애스펙트 패턴 2로, 마지막으로 애스펙트 패턴 3으로 전달하기 시작한다. 이어서, BO 컴포넌트(220)는 이벤트 인스턴스 "1"을 나머지 애스펙트패턴, 이 경우 애스펙트 패턴 3에 대해서만 기동시킴으로써 이벤트 인스턴스 "1"의 처리를 완료한다.
이벤트 인스턴스의 기동은 트랜잭셔널(transactional)하다. 즉, 이벤트 인스턴스의 기동의 전체 프로세스를 수행하는 것이 가능하지 않으면, 시스템은 이벤트 인스턴스가 기동되지 않은 것처럼 초기 상태로 복귀한다. 이벤트 인스턴스에 대한 응답 동안, 애스펙트 패턴은 또하나의 이벤트 인스턴스를 기동시키고, 이는 이어서 전자의 이벤트 인스턴스가 주어진 비지니스 객체 인스턴스로 구성된 애스펙트 인스턴스의 모든 애스펙트 패턴에 응답할 때까지 큐잉된다. 최초의 이벤트 인스턴스에 의해 스폰된(spawn) 트랜잭션은 그 이벤트 인스턴스에 반응하여 기동된 이벤트 인스턴스들을 포함한다. 이와 마찬가지로, 이벤트 큐(224)를 포함하지 않는 BOC(204)의 실시예에 있어서도, 최초의 이벤트 인스턴스에 의해 스폰된 트랜잭션은 그 이벤트 인스턴스에 반응하여 기동된 이벤트 인스턴스들을 포함한다.
트랜잭션이 개시될 때마다, 그 트랜잭션과 관련된 하나 이상의 비지니스 객체 인스턴스에 관한 정보를 포함하는 모든 엔트리의 복사본이 BOC(204)에 로드된다. 즉, 현재의 트랜잭션에서 사용되는 모든 관련된 비지니스 객체 인스턴스가 로드된다. 비지니스 객체 인스턴스가 로드될 때, 모든 관련 정보도 로드된다. 이것은 예를 들어 구성된 비지니스 객체 유형, 이벤트 유형, 구성된 애스펙트 유형, 전달값, 비지니스 객체 인스턴스, 애스펙트 인스턴스, 및 이벤트 인스턴스를 포함할 수 있다. 값을 전달하는 것도 트랜잭션의 일부로서 간주될 수 있다.
도 9에, 값을 전달하는 프로세스를 나타낸 순서도가 나타내어져 있다. 애스펙트 인스턴스가 변경될 때, BOC(204) 내의 BO 컴포넌트(220)로 메시지가 전송된다. BO 컴포넌트(220)는 이어서 어느 애스펙트 인스턴스가 변경되었는지의 정보를 포함하는 메시지를 전달값 컴포넌트(226)로 전달한다. 이어서, 전달값 컴포넌트(226)는 이 변경에 대한 타겟이 있는 경우 그 타겟인 모든 애스펙트 인스턴스를 찾아내어 이들 애스펙트 인스턴스의 식별 번호를 BO 컴포넌트(220)로 반환한다. 이어서, BO 컴포넌트(220)는 그 값들을 소스 애스펙트 패턴으로부터 타겟 애스펙트 패턴으로 컴포넌트(228)를 통해 푸시한다.
도 10에, 규칙을 계산하는 프로세스를 나타내는 순서도가 나타내어져 있다. 애스펙트 인스턴스에 대한 값이 요청되는 경우, 계산될 표현식 및 어디에서 하나 이상의 값을 탐색해야 하는지에 관한 정보를 포함하는 메시지가 BOC(204) 내의 BO 컴포넌트(220)으로 전송된다. 이어서, BO 컴포넌트(220)는 지정된 값 이름을 갖는 값을 탐색하기 위해 메시지를 지정된 애스펙트 인스턴스로 [컴포넌트(228)를 통해] 전송한다. 그 후에, 애스펙트 인스턴스는 이 값을 BO 컴포넌트(220)로 반환한다. BO 컴포넌트(220)는 표현식을 계산하고 계산된 값을 애스펙트 인스턴스로 반환한다.
도 11에, UI 컴포넌트(208)의 보다 상세한 개요가 도시되어 있다. UI 컴포넌트(208)는 메타 UI 생성기(300), 디바이스 검출 컴포넌트(302), 및 렌더링 컴포넌트(304)를 포함한다. UI 컴포넌트(208)는 BOC 인터페이스(222)와 eXML 문서 등의 문서를 교환한다. BOC(204)로부터의 문서는 BOC(204)로부터의 문서의 정보를 해석하고 사용자에게 어느 정보가 제공되는지 및 애플리케이션과 연결될 수 있는다수의 디바이스에 대해 그 정보가 제공되는 방식을 기술하는 (XML 문서 등) 문서를 생성하는 메타 UI 생성기(300)에 의해 처리된다. 메타 UI 생성기(300)로부터의 문서는 디바이스 검출기(302)로 전송되며, 이 디바이스 검출기(302)는 그 정보가 어떤 종류의 디바이스 상에서 제공되는지를 결정하고 검출된 디바이스에 고유한 정보를 포함하는 문서를 검출된 디바이스의 렌더 컴포넌트(304)로 전송한다. 여러가지 디바이스의 렌더 컴포넌트(304)는 데이터의 레이아웃(예를 들어, 헤더 등으로서 제공되어야 하는 스트링의 레이아웃)을 정의하는 기능을 포함한다. 디바이스의 렌더 컴포넌트(304)는 HTML 문서 등의 문서를 그 디바이스로 전송한다. 제공된 시스템의 아키텍처에서, UI 컴포넌트(208)는 (XML, XSLT, 비주얼 베이직, C#, 자바 등의) 코드로 개발되어 애플리케이션 서버 상에서 실행된다.
예를 들어, 비지니스 객체 인스턴스가 사용자에게 제공되어지는 실시예에서, 비지니스 객체 인스턴스, 그의 애스펙트 인스턴스, 그의 구성된 비지니스 객체 유형 및 그의 구성된 애스펙트 유형에 관한 정보를 포함하는 BOC(204)로부터의 정보는 컴포넌트(208)에 의해 사용된다. 이 정보는 구성된 애스펙트 유형 및 따라서 그의 애스펙트 인스턴스가 비지니스 객체 인스턴스의 캡션으로서 및/또는 요약에서 및/또는 개요에서 사용자에게 제공될 수 있는지를 포함할 수 있다. 이어서, 메타 UI 생성기(300)는 그 정보를 해석한다. 예를 들어, 이 구성에서, 구성된 비지니스 객체 유형 및 그의 구성된 애스펙트 유형에 관련된 정보는 그 정보가 어느 디바이스상에서 제공되는 것인지에 따라 서로 다르게 정의될 수 있다. 따라서, 비지니스 객체 유형의 이름은 PC 상에서 제공되는 때에는"고객의 송장"일 수 있고 예를 들어제한된 공간으로 인해 핸드헬드 디바이스 상에서 제공되는 때에는 "송장"일 수 있다. 또한, 애스펙트 유형은 어떤 상황에서 선택된 수의 디바이스 상에서만 제공되도록 구성될 수 있다. 모든 이러한 정보는 이어서 생성기(300)에 의해 해석되고, 문서가 생성되며 그 프로세스의 나머지는 전술한 바와 같이 실행된다.
예로서, 모든 애스펙트 패턴 내의 모든 이벤트 기능의 일부는 이벤트 기능으로 구성된 이벤트 유형의 이벤트 인스턴스에 대해 반응될 수 있는지를 평가할 수 있다. 이러한 평가를 트리거하는 것은 질의로서 알려져 있다. 애스펙트 패턴은 반응할 수 있는지 여부를 알려주는 메시지를 반환할 수 있다. 게다가, 애스펙트 패턴은 예를 들어 애스펙트 인스턴스의 상태 때문에 등의 그 이벤트 기능이 왜 반응할 수 없는지를 나타내는 메시지를 반환할 수 있다. 게다가, 애스펙트 패턴은 현재 반응할 수 없는 경우 반응할 수 있도록 하기 위해 태스크를 반환할 수 있다.
도 12는 태스크 시퀀스 내의 태스크의 일부가 어떻게 실행되는지의 일례를 도시한 순서도를 나타내고 있다. 제1 구성된 비지니스 객체 유형은 관련된 관계 연결 수단을 통해 관계 애스펙트 패턴으로, 따라서 제2 비지니스 객체 유형으로 구성된다. 그의 비지니스 객체 인스턴스는 제2 비지니스 객체 유형의 다른 비지니스 객체 인스턴에 대한 하나 이상의 관계를 필요로 할 수 있다. 제1 비지니스 객체 유형의 비지니스 객체 인스턴스의 관계가 예를 들어 제2 비지니스 객체 유형의 다른 비지니스 객체 인스턴스와 관계를 갖지 않는 경우, 관계 애스펙트 패턴은 제1 구성된 비지니스 객체 유형으로 구성되어 있는 제2 비지니스 객체 유형의 모든 비지니스 객체 이니스턴스를 찾아내도록 BOC(204) 내의 탐색 컴포넌트에게 요청할 수있다. 이어서, 관계 애스펙트 패턴은 UI 컴포넌트(208)가 이벤트 인스턴스를 기동시킬 수 없음을 의미하는 것으로 해석하는 정보 및 UI 컴포넌트가 비지니스 객체 인스턴스와 관련될 수 있는 가능한 비지니스 객체 인스턴스의 리스트로서 해석하는 정보를 포함하는 메시지를 반환한다.
UI에서의 태스크 시퀀스는 이하의 방식으로 생성될 수 있다. 그의 애스펙트 패턴 내의 이벤트 기능이 반응할 수 없는 상태에 있는 애스펙트 인스턴스 각각에 대해, 사용자에 대해 아마도 애스펙트 인스턴스를 어떻게 반응할 수 있는 상태로 만드는지의 표시 또는 가이드와 함께 태스크가 제공된다. 애스펙트 인스턴스를 사용자에게 제공하는 순서는 그 구성에 정의되어 있을 수 있다. 예를 들어, "서비스 작업"은 식별 애스펙트 패턴의 애스펙트 유형 "식별" 및 관계 애스펙트 패턴의 애스펙트 유형 "기술자"로 구성될 수 있으며, 애스펙트 유형의 순서는 "식별"이 "기술자"보다 앞에 와야 한다. 따라서, 이러한 구성에서, 비지니스 객체 유형 "서비스 작업"의 새로운 비지니스 객체 인스턴스를 생성하는 태스크 시퀀스는 사용자가 먼저 "식별" 애스펙트 유형에 정의된 애스펙트 인스턴스의 정보를 생성(예를 들어, 식별 번호를 선택)하도록 사용자를 안내하는 태스크를 제공받고, 그 후에 "기술자" 애스펙트 유형의 애스펙트 인스턴스의 관계를 생성하도록 사용자를 안내하는 태스크를 제공받는 것일 수 있다.
본 발명의 일 실시예에서, 이벤트 유형과 관련된 정보와 이벤트 유형을 구성하는 비지니스 객체 유형과 관련된 정보를 결합시킴으로써 태스크가 생성될 수 있다. 예를 들어, 사용자에게 제공된 태스크 "서비스 작업 시작"은 이벤트 유형 "시작"에 포함된 "시작" 스트링 및 이벤트 유형 "시작"을 구성하고 있는 특정의 비지니스 객체 유형 "서비스 작업"의 "서비스 작업" 스트링의 사용에 의해 생성될 수 있다.
본 발명의 일 실시예에서, 비지니스 객체 유형에 대해 기동될 수 있는 가능한 이벤트 유형의 리스트가 획득되어 사용자에게 제공될 수 있다. 이와 같이, 사용자는 현재 어느 이벤트 유형에 대해 반응할 수 있는지 또는 반응할 수 없는지의 표시를 제공받는다. 이것을 수행하는 메카니즘의 일 실시예는 다음과 같다. BO 컴포넌트(220)는 식별된 비지니스 객체 유형으로 구성된 모든 기지의 이벤트 유형을 통해 실행된다. BO 컴포넌트는 이어서 애스펙트 인스턴스가 이벤트 유형에 반응할 수 있는 상태에 있는지를 (그의 애스펙트 인터페이스를 통해) 애스펙트 패턴 각각에게 질문한다. 즉, 이벤트 유형으로 구성되어 있는 하나 이상의 애스펙트 패턴 내의 이벤트 기능이 그 요청에 반응하여 이벤트 인스턴스를 실행시키는 것이 가능한지 여부를 반환한다. 애스펙트 패턴 컴포넌트는 그 결과에 따라 "예" 또는 "아니오"로 응답한다. 애스펙트 패턴 컴포넌트는 또한 이벤트 유형에 응답할 수 없는 이유를 나타내는 데이터 구조(예를 들어, 스트링)를 반환할 수 있다. 이와 같이, 애플리케이션의 사용자는 이벤트 유형의 이벤트 인스턴스를 애스펙트 패턴에 대해 기동시키는 것이 가능한지, 현재 가능하지 않은지 또는 결코 가능하지 않을 것인지를 통지받을 수 있다.
또한, 애스펙트 패턴은 이러한 이벤트 유형에 상관하지 않음을 나타내는 정보를 갖는 메시지를 반환할 수 있다. 이것은 예를 들어 이벤트 유형이 애스펙트패턴으로 구성되어 있지 않은 경우에 그럴 수 있다.
도 13에, 이벤트 유형의 질의를 나타낸 순서도가 도시되어 있다. 동 도면에서, 이벤트 유형 1의 질의는 BO 컴포넌트(220)에 의해 개시된다. 이어서, 이벤트 유형 1의 질의는 애스펙트 패턴 1 및 애스펙트 패턴 2로 전달된다. 애스펙트 패턴 2는 이벤트 유형 1에 응답하여 이벤트 유형 2의 이벤트 인스턴스를 기동시키도록 구성되어 있기 때문에 이벤트 유형 2의 질의를 개시한다. 그 후에, BO 컴포넌트(220)는 이벤트 유형 2의 질의를 모든 애스펙트 패턴, 이 경우에 먼저 애스펙트 패턴 1로, 이어서 애스펙트 패턴 2로, 마지막으로 애스펙트 패턴 3으로 전달하기 시작한다. BO 컴포넌트(220)는 이어서 이벤트 유형 1의 질의를 나머지 애스펙트 패턴으로, 이 경우 애스펙트 패턴 3으로만 전달함으로써 이벤트 유형 1의 질의의 처리를 완료한다.
이벤트 유형에 관한 질의를 행하는 대체 방법은 이벤트 유형의 질의가 처리되는 순서를 처리하는 큐를 사용함으로써 구현될 수 있다. 상기한 예에서, 이것은 이벤트 유형 2의 질의가 모든 애스펙트 패턴에 대한 이벤트 유형 1의 질의가 처리된 후까지 지연됨을 의미한다.
본 발명의 일 실시예에서, 애스펙트 인스턴스가 이벤트 유형에 반응할 수 없는 상태에 있는 이유가 수행할 태스크로서 UI로 전송된다. 예를 들어, 애스펙트 인스턴스는 이벤트 유형에 응답하도록 요청받을 경우 수행하게 될 동작을 나타내는 (스트링 등의) 데이터 구조를 반환할 수 있다. 이어서, 애스펙트 인스턴스가 이벤트 유형에 반응할 수 있는 상태에 있을 때, 그 다음 애스펙트 인스턴스의 애스펙트패턴은 이벤트 유형에 반응할 수 있는지 여부의 질문을 받으며, UI는 애스펙트 인스턴스가 애스펙트 패턴이 반응할 수 없는 상태에 있는 경우에 수행할 태스크를 수신할 수 있다. 이와 마찬가지로, 나머지 애스펙트 인스턴스의 애스펙트 패턴은 반응할 수 있는지에 대해 질문을 받으며, 그 요청에 응답하여 UI에 태스크가 반환될 수 있다. 이와 같이, 태스크 시퀀스는 자동적으로 생성될 수 있다. 본 발명의 예시적인 실시예에서, 이것은 태스크 패턴 "메소드 실행"에서의 "가능하게 함"/"태스크 시퀀스" 태스크 스텝에 의해 구성될 수 있다.
예를 들어, "현장 서비스 관리" 애플리케이션의 사용자가 장비의 수리를 필요로 하는 고객으로부터의 호출에 응답하는 것으로 가정하자. 비지니스 객체 유형 "서비스 작업"의 새로운 비지니스 객체 인스턴스가 생성되어 채워지고, 고객이 서비스 작업에 기재되어 있는 바와 같이 서비스 방문에 대해 요금을 지불할 것임을 확인한 후에, 사용자는 "서비스 작업" 비지니스 객체 유형으로 구성되어 있는 "수락" 이벤트 유형의 인스턴스를 기동시킬 필요가 있다. 이것은 태스크 "서비스 작업 수락"을 시작함으로써 달성된다. 이 태스크는 서비스 작업 비지니스 객체 인스턴스의 모든 애스펙트 인스턴스, 및 애스펙트 인스턴스에 질의를 한다. 애스펙트 패턴 관계의 "기술자"는 이벤트 유형 "수락"의 이벤트 인스턴스가 기동되는 것을 허용하지 않는데, 그 이유는 그 작업에 어떤 기술자도 배정되어 있지 않기 때문이다. 따라서, 사용자는 그 작업에 대한 기술자를 선택함으로써 비지니스 객체 인스턴스를 수정하며, 이제 이벤트 유형 "수락"의 이벤트 인스턴스를 기동시키는 것이 가능하며, 사용자는 예를 들어 비지니스 객체 인스턴스가 제공되어 있는 스크린 상의 전송 버튼을 눌러 수정된 비지니스 객체 인스턴스 및 이벤트 유형 "수락"의 식별번호를 포함하는 메시지를 BOC로 전송함으로써 이것을 행한다. 이 메시지에 응답하여, BOC는 "수락" 이벤트 유형의 이벤트 인스턴스를 생성하고, 전술한 바와 같이 실제로 그 이벤트 인스턴스를 기동시킨다. 이벤트 인스턴스를 기동시키는 것은 구성된 태스크 패턴에서의 "메소드 실행"에서의 "실행" 태스크 스텝에 대응한다.
본 발명이 특정 실시예를 참조하여 기술되어 있지만, 당업자라면 본 발명의 사상 및 범위를 벗어나지 않고 형태 및 상세에 변경이 행해질 수 있음을 잘 알 것이다.

Claims (29)

  1. 태스크를 수행하는 컴퓨터 애플리케이션을 개발하는 방법으로서,
    객체 유형의 세트를 제공하는 단계,
    상기 객체 유형의 세트 중 적어도 일부의 객체 유형에 대해 구현될 수 있는 일반화된 기능을 포함하는 애스펙트 패턴(aspect pattern)의 세트를 제공하는 단계, 및
    상기 객체 유형의 세트 내의 선택된 객체 유형들과 상기 애스펙트 패턴의 세트 내의 선택된 애스펙트 패턴들 사이에 원하는 연결을 설정하는 단계를 포함하는 방법.
  2. 제1항에 있어서, 원하는 연결을 설정하는 상기 단계는,
    선택된 애스펙트 패턴의 애스펙트 패턴 식별자를 상기 선택된 애스펙트 패턴에 연결되어 있는 선택된 객체 유형의 메타데이터에 저장하는 단계, 및
    상기 선택된 객체 유형의 객체 유형 식별자를 상기 선택된 애스펙트 패턴의 메타데이터에 저장하는 단계를 포함하는 방법.
  3. 제2항에 있어서, 애스펙트 패턴 및 객체 유형이 반응할 수 있는 가능한 사건들을 식별하는 이벤트 유형의 세트를 제공하는 단계,
    선택된 이벤트 유형들과 선택된 객체 유형들 사이에 원하는 연결을 설정하는단계, 및
    선택된 이벤트 유형들과 선택된 애스펙트 패턴들 사이에 원하는 연결을 설정하는 단계를 더 포함하는 방법.
  4. 제3항에 있어서, 선택된 이벤트 유형들과 선택된 객체 유형들 사이에 원하는 연결을 설정하는 상기 단계는,
    선택된 이벤트 유형의 이벤트 유형 식별자를 상기 선택된 이벤트 유형에 연결되어 있는 선택된 객체 유형의 메타데이터에 저장하는 단계, 및
    상기 선택된 객체 유형의 객체 유형 식별자를 상기 선택된 이벤트 유형의 메타데이터에 저장하는 단계를 포함하는 방법.
  5. 제4항에 있어서, 선택된 이벤트 유형들과 선택된 애스펙트 패턴들 사이에 원하는 연결을 설정하는 상기 단계는,
    선택된 이벤트 유형의 이벤트 유형 식별자를 상기 선택된 이벤트 유형에 연결되어 있는 선택된 애스펙트 패턴의 메타데이터에 저장하는 단계, 및
    상기 선택된 애스펙트 패턴의 애스펙트 패턴 식별자를 상기 선택된 이벤트 유형의 메타데이터에 저장하는 단계를 포함하는 방법.
  6. 제5항에 있어서, 선택된 이벤트 유형들과 선택된 애스펙트 패턴들 사이에 원하는 연결을 설정하는 상기 단계는,
    상기 선택된 이벤트 유형에 응답하여 수행되어질 상기 선택된 애스펙트 패턴 내의 선택된 기능을 식별하는 단계를 포함하는 방법.
  7. 제5항에 있어서, 전달값의 세트를 제공하는 단계, 및
    선택된 객체 유형들과 선택된 전달값들 사이에 원하는 연결을 설정하는 단계를 더 포함하는 방법.
  8. 제7항에 있어서, 상기 전달값은 소스 애스펙트 패턴 - 새로운 전달값이 상기 소스 애스펙트 패턴으로부터 수신됨 - 을 식별하는 소스 애스펙트 패턴 식별자, 및 상기 새로운 전달값이 배치되는 타겟 애스펙트 패턴을 식별하는 타겟 애스펙트 패턴 식별자를 포함하는 방법.
  9. 제8항에 있어서, 선택된 객체 유형들과 선택된 전달값들 사이에 원하는 연결을 설정하는 상기 단계는,
    선택된 객체 유형의 객체 유형 식별자를 상기 전달값의 메타데이터에 저장하는 단계를 포함하는 것인 방법.
  10. 제9항에 있어서, 상기 소스 및 타겟 애스펙트 패턴과 적어도 하나의 객체 유형 사이에 연결을 설정하는 단계를 더 포함하는 방법.
  11. 제10항에 있어서, 상기 소스 및 타겟 애스펙트 패턴과 복수의 서로 다른 객체 유형들 사이에 연결을 설정하는 단계를 더 포함하는 방법.
  12. 제2항에 있어서, 상기 선택된 애스펙트 패턴은 관계 애스펙트 패턴을 포함하고,
    제2 선택된 객체 유형의 객체 유형 식별자를 상기 관계 애스펙트 패턴의 메타데이터에 저장하여 상기 선택된 객체 유형과 상기 제2 선택된 객체 유형이 상기 관계 애스펙트 패턴을 통해 연결되도록 하는 단계를 더 포함하는 방법.
  13. 제1항에 있어서, 상기 애스펙트 패턴의 세트 중 하나의 애스펙트 패턴은 규칙 표현식(rule expression) 및 규칙 소스 식별자를 포함하며, 상기 규칙 표현식은 적어도 하나의 지정된 값에 대해 수행될 계산을 정의하고, 상기 규칙 소스 식별자는 상기 지정된 값이 검색되어질 장소를 식별하는 방법.
  14. 제13항에 있어서, 상기 하나의 애스펙트 패턴의 상기 규칙 소스 식별자에서의 제2 애스펙트 패턴을 식별함으로써 상기 하나의 애스펙트 패턴을 상기 제2 애스펙트 패턴에 연결시키는 단계를 더 포함하는 방법.
  15. 제1항에 있어서, 애스펙트 패턴의 세트를 제공하는 상기 단계는,
    상기 애스펙트 패턴들과 관련된 메타데이터를 제1 스토어(store)에 저장하는단계, 및
    상기 애스펙트 패턴들의 인스턴스들과 관련된 1차 데이터를 제2 스토어에 저장하는 단계를 포함하는 방법.
  16. 제1항에 있어서, 객체 유형의 세트를 제공하는 상기 단계는,
    상기 객체 유형들과 관련된 메타데이터를 제1 스토어에 저장하는 단계, 및
    상기 객체 유형들의 인스턴스들과 관련된 1차 데이터를 제2 스토어에 저장하는 단계를 포함하는 방법.
  17. 제3항에 있어서, 이벤트 유형의 세트를 제공하는 상기 단계는,
    상기 이벤트 유형들과 관련된 메타데이터를 제1 스토어에 저장하는 단계, 및
    상기 이벤트 유형들의 인스턴스들과 관련된 1차 데이터를 제2 스토어에 저장하는 단계를 포함하는 방법.
  18. 애플리케이션 프로그램을 실행하도록 구성된 컴퓨터 시스템으로서,
    복수의 애스펙트 패턴들과 관련된 애스펙트 패턴 메타데이터 및 복수의 객체 유형들과 관련된 객체 유형 메타데이터를 저장하는 제1 스토어 - 상기 애스펙트 패턴들은 상기 객체 유형들에 대한 기능을 구현하고 상기 애스펙트 패턴 메타데이터 및 객체 유형 메타데이터는 상기 애스펙트 패턴들과 상기 객체 유형들 사이의 연결을 기술함 -,
    상기 애스펙트 패턴들의 애스펙트 패턴 인스턴스들 및 상기 객체 유형들의 객체 인스턴스들을 저장하는 제2 스토어, 및
    상기 애스펙트 패턴 메타데이터 및 객체 유형 메타데이터에 기초하여 상기 객체 인스턴스들과 상기 애스펙트 패턴 인스턴스들 사이의 상호작용을 제어하는 객체 콘트롤러를 포함하는 컴퓨터 시스템.
  19. 제18항에 있어서, 상기 제1 스토어는 복수의 이벤트 유형들과 관련된 이벤트 메타데이터를 저장하고, 상기 제2 스토어는 상기 이벤트 유형들의 이벤트 인스턴스들을 저장하는 컴퓨터 시스템.
  20. 제19항에 있어서, 상기 객체 콘트롤러는 상기 이벤트 메타데이터에 기초하여 이벤트 인스턴스들을 수신하여 이 이벤트 인스턴스들을 상기 애스펙트 패턴들에 제공하도록 구성된 객체 컴포넌트를 포함하는 컴퓨터 시스템.
  21. 제20항에 있어서, 상기 객체 콘트롤러는 애스펙트 패턴 인터페이스 - 상기 객체 컴포넌트가 이벤트 인스턴스들을 상기 애스펙트 패턴 인터페이스를 통해 상기 애스펙트 패턴들로 전달함 - 를 구현하는 애스펙트 패턴 컴포넌트를 더 포함하는 컴퓨터 시스템.
  22. 제21항에 있어서, 상기 객체 콘트롤러는 이벤트 인스턴스들을 수신하고 또상기 이벤트 인스턴스들이 상기 객체 컴포넌트에 제공되는 순서를 관리하는 이벤트 관리자 컴포넌트를 더 포함하는 컴퓨터 시스템.
  23. 제22항에 있어서, 상기 제1 데이터 스토어는 복수의 전달값들과 관련된 전달값 메타데이터를 저장하는 컴퓨터 시스템.
  24. 제23항에 있어서, 상기 전달값 메타데이터는 각각의 전달값의 소스 애스펙트 패턴 및 타겟 애스펙트 패턴을 식별하고, 상기 소스 애스펙트 패턴은 대응하는 전달값이 검색될 애스펙트 패턴이고, 상기 타겟 애스펙트 패턴은 상기 전달값이 전달될 애스펙트 패턴인 컴퓨터 시스템.
  25. 제24항에 있어서, 상기 객체 콘트롤러는 전달값 컴포넌트를 더 포함하고, 상기 전달값 컴포넌트는 상기 객체 컴포넌트에 결합되어 상기 객체 컴포넌트로부터 상기 전달값 컴포넌트로 제공되는 소스 애스펙트 패턴들에 대한 타겟 애스펙트 패턴들을 식별하는 컴퓨터 시스템.
  26. 제25항에 있어서, 상기 객체 컴포넌트는 상기 전달값을 상기 전달값 컴포넌트에 의해 식별된 상기 타겟 애스펙트 패턴으로 푸시(push)하도록 구성되어 있는 컴퓨터 시스템.
  27. 제26항에 있어서, 상기 객체 컴포넌트는 값에 대해 수행될 계산을 나타내는 규칙 표현식(rule expression), 및 상기 값이 검색될 소스 애스펙트 인스턴스를 식별하는 소스를 요청측 애스펙트 패턴 인스턴스로부터 수신하도록 구성되어 있는 컴퓨터 시스템.
  28. 제27항에 있어서, 상기 객체 컴포넌트는, 상기 값을 상기 소스 애스펙트 인스턴스로부터 획득하고 또 새로운 값을 획득하기 위해 상기 값을 사용하여 상기 계산을 수행하도록 구성되어 있는 컴퓨터 시스템.
  29. 제28항에 있어서, 상기 객체 컴포넌트는 상기 새로운 값을 상기 요청측 애스펙트 패턴 인스턴스로 반환하도록 구성되어 있는 컴퓨터 시스템.
KR10-2004-7012483A 2002-02-13 2003-02-13 애스펙트 패턴 내의 일반 기능과 개체와의 연결 KR20040081790A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US35580802P 2002-02-13 2002-02-13
US60/355,808 2002-02-13
US10/365,824 US20030204503A1 (en) 2000-11-09 2003-02-13 Connecting entities with general functionality in aspect patterns
US10/365,824 2003-02-13
PCT/US2003/004391 WO2003069468A2 (en) 2002-02-13 2003-02-13 Connecting entities with general functionality in aspect patterns

Publications (1)

Publication Number Publication Date
KR20040081790A true KR20040081790A (ko) 2004-09-22

Family

ID=27737506

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2004-7012483A KR20040081790A (ko) 2002-02-13 2003-02-13 애스펙트 패턴 내의 일반 기능과 개체와의 연결

Country Status (7)

Country Link
US (1) US20030204503A1 (ko)
EP (1) EP1474743A2 (ko)
JP (1) JP2006507550A (ko)
KR (1) KR20040081790A (ko)
CN (1) CN100483339C (ko)
AU (1) AU2003217408A1 (ko)
WO (1) WO2003069468A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101013056B1 (ko) * 2006-07-26 2011-02-14 한국산업기술평가관리원 내장된 이벤트 구동형 솔루션의 설계 및 연산을 용이하게하는 시스템 및 방법

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005096146A1 (en) * 2004-03-19 2005-10-13 Ntt Docomo, Inc. Method and apparatus for weaving aspects into a changing base system
US20050256942A1 (en) * 2004-03-24 2005-11-17 Mccardle William M Cluster management system and method
US20060168522A1 (en) * 2005-01-24 2006-07-27 Microsoft Corporation Task oriented user interface model for document centric software applications
US8418132B2 (en) * 2005-04-29 2013-04-09 Microsoft Corporation Application description language
US8799857B2 (en) 2005-04-29 2014-08-05 Microsoft Corporation XML application framework
US20060245096A1 (en) * 2005-04-29 2006-11-02 Microsoft Corporation Application framework phasing model
US8132148B2 (en) 2005-04-29 2012-03-06 Microsoft Corporation XML application framework
US8275793B2 (en) * 2005-04-29 2012-09-25 Microsoft Corporation Transaction transforms
US8990766B2 (en) * 2005-07-10 2015-03-24 International Business Machines Corporation Construction of object-oriented programming (OOP) patterns by behavior delegation
US7681133B2 (en) * 2005-10-14 2010-03-16 Oracle International Corporation Declarative task-based user interfaces
US8296727B2 (en) * 2005-10-14 2012-10-23 Oracle Corporation Sub-task mechanism for development of task-based user interfaces
US8112394B2 (en) * 2005-10-14 2012-02-07 Oracle International Corporation Long-lived data transactions
US7640260B2 (en) 2005-12-12 2009-12-29 Microsoft Corporation Valid transformation expressions for structured data
US8832641B2 (en) * 2008-09-05 2014-09-09 International Business Machines Corporation Model-operative pattern representation and operational enablement using declarative componential-driven domain-specific programming language
US20110016421A1 (en) * 2009-07-20 2011-01-20 Microsoft Corporation Task oriented user interface platform
US8522198B2 (en) * 2009-11-05 2013-08-27 International Business Machines Corporation Model-operative pattern representation harvesting using an automated exemplar-directed approach
US20110185294A1 (en) * 2010-01-22 2011-07-28 Microsoft Corporation Pattern-based user interfaces
US8626543B2 (en) * 2011-10-08 2014-01-07 Sap Ag Tracing software execution of a business process

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5913022A (en) * 1995-08-31 1999-06-15 Schlumberger Technologies, Inc. Loading hardware pattern memory in automatic test equipment for testing circuits
US6640238B1 (en) * 1999-08-31 2003-10-28 Accenture Llp Activity component in a presentation services patterns environment
US20030163329A1 (en) * 1999-09-21 2003-08-28 David Bolene Method for defining an executable business model
WO2001025860A1 (en) * 1999-10-05 2001-04-12 Togethersoft Corporation Method for generating and defining a pattern
US6976020B2 (en) * 2000-01-27 2005-12-13 Poppet International, Inc. Software composition using graph types, graph, and agents
WO2002035351A1 (en) * 2000-10-26 2002-05-02 Navision A/S A system and method supporting configurable object definitions
DE60136216D1 (de) * 2000-11-09 2008-11-27 Navision As Automatisch erzeugte task-sequenz

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101013056B1 (ko) * 2006-07-26 2011-02-14 한국산업기술평가관리원 내장된 이벤트 구동형 솔루션의 설계 및 연산을 용이하게하는 시스템 및 방법

Also Published As

Publication number Publication date
WO2003069468A3 (en) 2004-04-08
EP1474743A2 (en) 2004-11-10
CN1633638A (zh) 2005-06-29
WO2003069468A2 (en) 2003-08-21
AU2003217408A1 (en) 2003-09-04
CN100483339C (zh) 2009-04-29
US20030204503A1 (en) 2003-10-30
JP2006507550A (ja) 2006-03-02

Similar Documents

Publication Publication Date Title
US10565223B2 (en) Integrated workflow and database transactions
KR20040081790A (ko) 애스펙트 패턴 내의 일반 기능과 개체와의 연결
US7353494B2 (en) System and method supporting configurable object definitions
JP2538719B2 (ja) サ―バデ―タベ―スのアクセス方法
US7376663B1 (en) XML-based representation of mobile process calculi
US8056091B2 (en) Systems and methods for using application services
EP1342157B1 (en) An auto-generated task sequence
US7571185B2 (en) Tree system diagram output method, computer program and recording medium
US5873094A (en) Method and apparatus for automated conformance and enforcement of behavior in application processing systems
US7043714B2 (en) Method, system, and program for using objects in data stores during execution of a workflow
CN101146106B (zh) 级联发现web服务
US20050004973A1 (en) Reflection-based processing of input parameters for commands
EP1536326A2 (en) Multi-language support at runtime and design
US6658644B1 (en) Services-based architecture for a telecommunications enterprise
WO2011118003A1 (ja) ウェブアプリケーション構築システム、ウェブアプリケーション構築方法、ウェブアプリケーション構築プログラムおよびウェブアプリケーション構築プログラムを記録した記録媒体
JP4624044B2 (ja) プログラム間通信システム、プログラム間通信方法、データ構造生成システムおよびプログラム
WO2003042821A2 (en) A method and system for configuration of business object types by use of business object patterns
JP2003150765A (ja) 現場経理システムおよび現場経理実現方法
Joshi et al. Behavioral Patterns: Chain of Responsibility, Command, Interpreter, and Iterator
JP2008165495A (ja) 情報処理装置及びプログラム
CN104067253A (zh) 库存数据访问层
JP2007172645A (ja) データ更新装置、データ更新方法、及びデータ更新プログラム

Legal Events

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