KR20060047250A - 완전한 유연성을 가진 자동화에 기초하여 사용자인터페이스를 생성하는 방법 및 장치 - Google Patents

완전한 유연성을 가진 자동화에 기초하여 사용자인터페이스를 생성하는 방법 및 장치 Download PDF

Info

Publication number
KR20060047250A
KR20060047250A KR1020050032614A KR20050032614A KR20060047250A KR 20060047250 A KR20060047250 A KR 20060047250A KR 1020050032614 A KR1020050032614 A KR 1020050032614A KR 20050032614 A KR20050032614 A KR 20050032614A KR 20060047250 A KR20060047250 A KR 20060047250A
Authority
KR
South Korea
Prior art keywords
logical
map
model
display object
logical form
Prior art date
Application number
KR1020050032614A
Other languages
English (en)
Other versions
KR101120815B1 (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
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20060047250A publication Critical patent/KR20060047250A/ko
Application granted granted Critical
Publication of KR101120815B1 publication Critical patent/KR101120815B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/38Creation or generation of source code for implementing user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/10Requirements analysis; Specification techniques
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99942Manipulating data structure, e.g. compression, compaction, compilation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99943Generating database or data structure, e.g. via user interface

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Stored Programmes (AREA)
  • Digital Computer Display Output (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

애플리케이션 모델을 표현하기 위한 모델 구동형 폼(form) 사용자 인터페이스를 생성하는 방법, 컴퓨터 판독가능 매체, 및 시스템이 제공된다. 이 방법은 복수의 서로 다른 논리 폼 타입(type) 중에서 애플리케이션 모델을 표현하기 위한 폼 사용자 인터페이스를 생성하는 데에 사용될 것을 선택하는 단계를 포함한다. 이 방법은 제1 맵을 제공하는 단계를 더 포함한다. 디스플레이 대상에 독립된 논리 폼은 애플리케이션 모델, 선택된 폼 타입 및 제1 맵을 이용하여 생성된다.
애플리케이션 모델, 폼 사용자 인터페이스, 논리 폼, 폼 타입, 맵

Description

완전한 유연성을 가진 자동화에 기초하여 사용자 인터페이스를 생성하는 방법 및 장치{METHOD AND APPARATUS FOR GENERATING USER INTERFACES BASED UPON AUTOMATION WITH FULL FLEXIBILITY}
도 1은 본 발명이 이용될 수 있는 한 예시적인 환경의 블럭도.
도 2는 본 발명이 구현될 수 있는 일반적인 모바일 컴퓨팅 환경의 블럭도.
도 3a는 논리 폼 및 물리적 폼을 생성하기 위한 본 발명의 폼 타입들의 사용을 도식적으로 설명함.
도 3b는 도 3a에서 도시한 바와 같이 폼 타입들의 사용을 도식적으로 설명하며, 폼 타입들과 논리 폼 및 물리적 폼의 생성 간의 관계를 더 도시함.
도 4a는 예시적인 기업 모델을 도시하는 블럭도.
도 4b는 폼에 매핑되는 엔티티 기업 모델을 도시하는 블럭도.
도 5a는 맵들 및 다른 모델들을 이용하여 모델을 생성하는 프로세스를 도시하는 블럭도.
도 5b는 일련의 매핑을 통하여 초기 애플리케이션 또는 기업 모델로부터 디스플레이 대상에 특정된 모델을 생성하는 프로세스를 도시하는 블럭도.
도 5c는 예시적인 실시예를 위해 도 4a 및 4b에 도시된 타입의 프로세스를 도시하는 블럭도.
도 5d는 기업 모델 엔티티가 처음으로 디스플레이 대상에 독립된 폼에 매핑되며, 이 엔티티 속성들은 디스플레이 대상에 독립된 논리 폼을 생성하는 제어에 매핑되며, 그 다음 이 논리 폼은 디스플레이 대상(들)에 매핑되는 예시적인 매핑 프로세스를 도시하는 블럭도.
도 6은 본 발명의 설계-시간 및 런타임(run-time)을 도시하고, 논리 계층이 기업 로직(logic)과 디스플레이 대상 간의 다리임을 도시하는 블럭도.
도 7은 디스플레이 대상에 특정된 렌더링(render) 기술들에 매핑되는 논리 폼들을 도시하는 블럭도.
도 8은 본 발명의 개념들을 도식적으로 설명하는 도면.
<도면의 주요 부분에 대한 부호의 설명>
144: 애플리케이션 프로그램
180: 원격 컴퓨터
208: 통신 인터페이스
300: 폼 타입
320: 디스플레이 대상
331: 레이아웃
380: 기업 모델
390: 사용자 인터페이스
615: 데이터베이스
905: 기업 프레임워크
관련된 애플리케이션의 상호-참조
계류중이며 동일 날짜에 출원된 특허 출원에 공통적으로 양도된, 발명의 명칭이 "폼 타입을 이용하여 폼을 생성하는 방법 및 장치"인 미국 특허 출원번호 ______ 및 발명의 명칭이 "데이터 모델을 사용자 인터페이스 모델에 매핑시키는 방법 및 장치"인 미국 출원번호 ______는, 둘 다 본 명세서에서 전체가 참조로서 포함된다.
본 발명은 폼의 형성에 관한 것으로, 보다 상세히는 사용자 인터페이스(UI) 폼을 생성하는 방법 및 장치에 관한 것이다.
ERP(enterprise resource planning) 시스템 및 CRM(customer relationship management) 시스템과 같은 통상적인 기업 소프트웨어 제품 및 애플리케이션에서, 다수의 폼 또는 폼 사용자 인터페이스들이 이용된다. 폼은 데이터를 보고/거나 입력하는 윈도우, 다이알로그(dialog), 페이지, 또는 다른 UI 엘리먼트이다. 기업 소프트웨어 애플리케이션에 관련하여 이용되는 폼의 수가 수천이 넘는 것은 드문 일이 아니다. 통상적으로 다수의 폼을 개발하는 것은 소프트웨어 개발자들에게는 큰 노동을 요하는 일이 되어왔다.
또한, 애플리케이션에 기초하는 ERP 시스템, CRM 시스템 및 다른 폼들과 같은 기업 애플리케이션의 복잡성은 증가하고 있다. 이는 (1) 증가된 기능에 의한 각 시스템에 증가하는 폼의 수, (2) 웹 페이지의 효용성에 익숙하게 된 말단 사용자로부터 발원되는 효용성에 점점 더 중점을 두는 경향, (3) 증가하는 서로 다른 플랫폼, 장치, 및 기술의 수, (4) 사용자 권한에 따라 다른 폼을 산출해 낼 수 있는 보안에 점점 더 중점을 두는 경향, (5) 증가하는 융통성, 효율성, 및 개별화 요구를 비롯하는 여러 요인에 의한다. 동시에 시스템을 고품질로 고속화로 개발하라는 압력도 있다.
실생활의 기업 애플리케이션의 예로서, 대략 3000개의 테이블을 가지며 대략 2000개의 폼을 생성해 내는, 마이크로소프트 기업 솔루션-아삽타®(Microsoft Business Solutions-Axapta®)를 들 수 있다. 각 폼은 런-타임 데이터가 바인딩(bind)되는 테이블 각각의 레이아웃(layout)으로 정렬되어야 한다. 폼들 및 관련된 폼 로직은 테이블 레이아웃이 변경될 때마다 그리고 기업 로직이 변경될 때 정렬되어야 한다. 서로 다른 클라이언트 플랫폼 기술의 수가 증가하면서 복잡함을 심화시킨다. 현재 고전적인 윈도우 UI에 웹 브라우저가 첨부되고 있다. 머지 않아, PDA, 셀룰러폰, 및 다른 UI 기술들이 복잡함을 심화시킬 것이다.
인터넷은 말단 사용자에게 이들이 애플리케이션을 사용하는 방법을 배우기 위해 14일의 과정이 필요하지 않다는 것을 알려주었다. 말단 사용자들은 애플리케이션들이 태스크(task)를 통해 자신들을 안내하기를 기대하고, 이 사용자들은 이 애플리케이션이 보기 좋은 형태이기를(look-appealing) 기대한다. 기업 애플리케이션을 통하여 나타난 정보 기술에는 사용자 역할이 보다 많이 드러나 있으므로, 폼들이 각 사용자가 필요한 정보 및 각 역할을 수행해야할 태스크를 반영하라는 요구가 증가하고 있다. 대체적으로, 사용자 경험에서의 모든 요구가 증가하고 있다.
통상적으로, 사용자 경험 및 개발자 경험은 서로 상반된 경향을 가지고 있다. 좋은 사용자 경험이란 애플리케이션 개발자가 생성하고 보유하는 데 시간을 좀 더 길게 걸린다는 것을 의미한다. 사용자 경험이 우수하며, 동시에, 높은 개발자 생산성을 지원하려는 시각은 모순되 보일 수 있다. 이 사실은 특히 기업 애플리케이션을 위한 폼 생성 분야에서 실감난다.
정보를 제시하는 애플리케이션들은 자신들의 사용자에게 매우 다양한 특성을 가지는 플랫폼(사용자의 데스크탑에서 실행되는 풍부한 클라이언트로부터, 사용자의 브라우저에서 실행되는 웹 클라이언트, PDA, 전화 기반 장치 및 심지어는 음성 인터페이스에 이르기까지) 상의 경험을 가능한 풍부하게 제공해야 한다. 기업 설계자는 기업 엔지니어링에 대한 그 또는 그녀의 지식을 이용하여 고객에 대한 문제를 해결한다. 이 사람은 컴퓨터 프로그램 개발자가 아니므로, 프로그램 개발에 따른 복잡한 일로부터 보호 받아야 한다.
본 발명은 상술한 하나 이상의 문제의 해결책을 제공하고/거나 그 밖에 종래 기술보다 향상된 이점을 제공한다.
(데이터 모델 또는 문제 도메인 모델이라고도 칭하는) 애플리케이션/기업 모델을 표현하기 위한, 모델 구동형 폼 사용자 인터페이스를 생성하는 방법, 컴퓨터 판독가능 매체 및 시스템이 제공된다. 이 방법은 복수의 서로 다른 논리 폼 타입 들 중 어느 것을 애플리케이션 모델을 표현하기 위한 폼 사용자 인터페이스를 생성하는 논리 폼에 적용할 지를 선택하는 단계를 포함한다. 이 방법은 또한 제1 맵(map)을 제공하는 단계를 포함한다. 디스플레이 대상에 독립된 논리 폼은 애플리케이션 모델, 선택된 폼 타입 및 제1 맵을 사용하여 생성된다. 본 발명의 실시예에 있어서, 제1 맵은 선언적인 맵이지만, 몇몇의 실시예에서 명령형으로 정의된 함수 또는 양태들(aspects)을 가질 수 있다.
제1 맵을 이용하여 디스플레이 대상에 독립된 논리 폼을 생성하는 단계는 애플리케이션 모델의 데이터들의 속성(property) 타입을 디스플레이 대상에 독립된 논리 폼 내의 디스플레이 대상에 독립된 논리 제어에 매핑시키는 단계를 포함한다. 몇몇의 실시예에서, 제1 맵은 디스플레이 대상에 독립된 논리 폼을 생성하는 데에 사용되는 매핑 엔진의 외부에 있다.
몇몇의 실시예에서, 선언적으로 적용된 행위들은 디스플레이 대상에 독립된 논리 폼에 기능을 추가한다. 선언적으로 적용된 행위들은 디스플레이 대상에 독립된 논리 폼에 첨부되고 이 폼에서 이벤트에 의해 활성화된다. 선언적인 행위들은 논리 제어의 값 및 속성들에 따라 다른 제어의 속성을 설정하는 로직들의 패턴들일 수 있다.
본 발명의 방법은 또한 제2 맵을 이용하여 논리 폼을 물리적 폼에 매핑시키는 단계를 더 포함할 수 있다. 논리 폼은 복수의 논리 제어를 포함하는 한편, 물리적 폼은 디스플레이 대상에 대한 논리 폼을 렌더링하는 용도로 이용가능한 복수의 물리적 제어를 가진다. 제2 맵을 이용하여 논리 폼을 물리적 폼에 매핑시키는 단계는 논리 폼의 논리 제어 각각을 복수의 이용가능한 물리적 제어중 하나에 매핑시키는 단계를 포함한다. 이 단계는 통상적으로 특정 디스플레이 대상의 특정 폼 타입에 대한 특정 레이아웃에 매핑시키는 단계 또한 포함한다.
본 발명의 실시예들을 특징짓는 다른 특징 및 이점은 이하의 상세한 설명을 읽고 관련된 도면을 검토함으로써 명백해질 것이다.
기업 애플리케이션들 및 다른 관리적이거나 폼 기반의 소프트웨어 애플리케이션이 끊임없이 점점 더 복잡해짐으로 인해, 자동화에 대한 요구가 증가하고 있다. 본 발명은 이러한 자동화를 촉진하고 향상시키는 방법을 제공한다. 본 발명은 혁신적으로 자유를 위태롭게 하지 않으면서 사용자 인터페이스를 개발하는 자동화되고 선언적인 접근법을 이용한다.
본 발명의 시스템 및 방법들을 이용하면, 애플리케이션 개발자는 기업 모델을 개발하는 데에 집중할 수 있다. 기업 모델(UML, ER 다이어그램, 클래스 등)은 추후에 기술에 독립적인 중간 포맷에 매핑되며, 이 포맷은 다시 - 하나 이상의 단계로 - 디스플레이 대상에 특정된 기술 및 레이아웃(윈도우, 웹 브라우저, PDA, 전화, 등)에 매핑된다. 그 다음, 프레임워크 개발자는 애플리케이션 개발자와는 독립적으로, 디스플레이 대상에 특정된 기술을 풍부하게 하고, 그 기술을 모든 개발된 애플리케이션에 적용시킨다. 중간 포맷은 폼 당 하나가 생성되며 몇몇의 디스플레이 대상에서 사용된다. 이 매핑은 본래부터 매핑 엔진에 의해 사용되는 공개적이고 변형될 수 있는 맵들 때문에 유연성있다. 중간 UI 모델 및 최후 디스플레 이 대상 포맷도 공개적이고 변형될 수 있어 고유한 레벨의 유연성을 허용한다. 이하의 설명이 본 발명의 개념을 더 나타낸다.
도 1은 본 발명이 구현될 수 있는 적절한 컴퓨팅 시스템 환경(100)의 예를 도시한다. 컴퓨팅 시스템 환경(100)은 단지 적절한 컴퓨팅 환경의 일 예이며 본 발명의 사용 또는 기능의 범위에 제한을 가하도록 의도된 것은 아니다. 컴퓨팅 환경(100)은 예시적인 오퍼레이팅 환경(100)에 도시된 컴포넌트들 중의 임의의 하나 또는 조합에 관하여 임의의 종속성(dependency) 또는 요구사항(requirement)을 갖는 것으로 해석되어서는 안된다.
본 발명은 많은 다른 범용 또는 특수목적 컴퓨팅 시스템 환경들 또는 구성들과 함께 동작될 수 있다. 본 발명과 함께 사용하기에 적합할 수 있는 잘 알려진 컴퓨팅 시스템, 환경, 및/또는 구성의 예로는, 퍼스널 컴퓨터, 서버 컴퓨터, 핸드헬드(hand-held) 또는 랩탑 장치, 멀티프로세서 시스템, 마이크로프로세서-기반 시스템, 셋 탑 박스(set top box), 프로그램가능한 가전제품(programmable consumer electronics), 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 상기의 시스템 또는 장치 중의 임의의 것을 포함하는 분산형 컴퓨팅 환경 등이 포함되지만, 이에 한정되지 않는다.
본 발명은 컴퓨터에 의해 실행되는, 프로그램 모듈과 같은 컴퓨터 실행가능 명령과 일반적으로 관련하여 기술될 수 있다. 일반적으로, 프로그램 모듈은 특정 태스크를 수행하거나 특정 추상 데이터 유형을 구현하는 루틴, 프로그램, 오브젝트, 컴포넌트, 데이터 구조 등을 포함한다. 본 발명은 또한 통신 네트워크를 통해 링크된 원격 프로세싱 장치에 의해 태스크를 수행하는 분산형 컴퓨팅 환경에서 실행될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 메모리 저장 장치를 포함하는 국부 및 원격 컴퓨터 저장 매체 내에 위치할 수 있다.
도 1을 참조하면, 본 발명을 구현하기 위한 예시적인 시스템은 컴퓨터(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)에 의해 현재 작동되는 프로그램 모듈 및/또는 데이터를 포함한다. 예로서, (한정하고자 하는 것은 아님) 도 1은 오퍼레이팅 시스템(134), 애플리케이션 프로그램(135), 기타 프로그램 모듈(136), 및 프로그램 데이터(137)를 도시한다. 애플리케이션 프로그램의 특정 그룹을 기업 애플리케이션이라 칭한다. 이 애플리케이션들은 일반 원장, 발명자, 샐러리, 고객, 세일즈, 판매, 재정 레포트 및 기업에 관련된 임의의 다른 데이터들의 처리를 포함하는 - 이에 한정되지 않음 - 회사의 관리를 목표로 한다.
컴퓨터(110)는 또한 다른 분리형/비분리형, 휘발성/비휘발성 컴퓨터 저장 매체를 포함할 수 있다. 단지 예로서, 도 1에는 비분리형 비휘발성 자기 매체로부터 판독하거나 그 자기 매체에 기록하는 하드 디스크 드라이브(141), 분리형 비휘발성 자기 디스크(152)로부터 판독하거나 그 자기 디스크에 기록하는 자기 디스크 드라이브(151), 및 CD-ROM 또는 기타 광 매체 등의 분리형 비휘발성 광 디스크(156)로부터 판독하거나 그 광 디스크에 기록하는 광 디스크 드라이브(155)가 도시되어 있다. 예시적인 오퍼레이팅 환경에서 사용될 수 있는 다른 분리형/비분리형, 휘발성/비휘발성 컴퓨터 저장 매체는 자기 테이프 카세트, 플래쉬 메모리 카드, DVD(Digital versatile disk), 디지털 비디오 테이프, 고체 RAM, 고체 ROM 등을 포함하지만 이에 한정되지 않는다. 하드 디스크 드라이브(141)는 일반적으로 인터페이스(140)와 같은 비분리형 메모리 인터페이스를 통해 시스템 버스(121)에 접속되고, 자기 디스크 드라이브(151) 및 광 디스크 드라이브(155)는 일반적으로 인터페이스(150)와 같은 분리형 메모리 인터페이스에 의해 시스템 버스(121)에 접속된다.
앞서 기술되고 도 1에 도시된 드라이브 및 그 관련 컴퓨터 저장 매체는 컴퓨 터(110)를 위한 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 및 기타 데이터의 저장을 제공한다. 도 1에서, 예를 들어, 하드 디스크 드라이브(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)에 관하여 상술한 구성요소 중 다수 또는 모든 구성요소를 일반적으로 포함할 수 있다. 도 1에 도시된 논리적 접속은 근거리 통신망(LAN; 171) 및 원거리 통신망(WAN; 173)을 포함하지만, 그 외의 네트워크를 포함할 수도 있다. 이러한 네트워크 환경은 사무실, 기업 광역 컴퓨터 네트워크(enterprise-wide computer network), 인트라넷, 및 인터넷에서 일반적인 것이다.
LAN 네트워킹 환경에서 사용되는 경우, 컴퓨터(110)는 네트워크 인터페이스 즉 어댑터(170)를 통해 LAN(171)에 접속된다. WAN 네트워킹 환경에서 사용되는 경우, 컴퓨터(110)는 일반적으로 인터넷 등의 WAN(173)을 통해 통신을 구축하기 위한 모뎀(172) 또는 기타 수단을 포함한다. 내장형 또는 외장형일 수 있는 모뎀(172)은 사용자 입력 인터페이스(160) 또는 기타 적절한 메카니즘을 통해 시스템 버스(121)에 접속될 수 있다. 네트워크 환경에서, 컴퓨터(110)에 관하여 도시된 프로그램 모듈 또는 그 일부분은 원격 메모리 저장 장치에 저장될 수 있다. 예로서 ( 한정하고자 하는 것은 아님), 도 1은 원격 컴퓨터(180)에 상주하는 원격 애플리케이션 프로그램(185)을 도시한다. 도시된 네트워크 접속은 예시적인 것이며, 컴퓨터들간의 통신 링크를 구축하는 그 외의 수단이 사용될 수 있다고 이해될 것이다.
도 2는 대안적이며 예시적인 컴퓨팅 환경인 모바일 장치(200)의 블럭도이다. 모바일 장치(200)는 마이크로프로세서(202), 메모리(204), 입출력(I/O) 컴포넌트(206) 및 원격 컴퓨터 또는 다른 모바일 장치들과 통신하는 통신 인터페이스(208)를 포함한다. 일 실시예에서, 상술한 컴포넌트는 적절한 버스(210)를 통한 서로간의 통신을 위해 연결된다.
메모리(204)는 모바일 장치(200)의 일반 전원이 꺼질 경우에도 메모리(204)에 저장된 정보가 상실되지 않는 (도시되지 않은) 배터리 백업 모듈을 구비한 RAM과 같은 비휘발성 전자 메모리로서 구현된다. 메모리(204)의 일부는 프로그램 실행을 위하여 주소를 불러낼 수 있도록(addressable) 할당되는 것이 바람직한 반면, 메모리(204)의 다른 부분은 디스크 드라이브 상의 저장 장치를 시뮬레이트하는 경우에서와 같이 저장 장치로 이용되는 것이 바람직하다.
메모리(204)는 오퍼레이팅 시스템(212), 애플리케이션 프로그램(214), 및 오브젝트 저장소(216)를 포함한다. 동작 중에, 오퍼레이션 시스템(212)은 메모리(204)로부터 프로세서(202)에 의해 실행되는 것이 바람직하다. 바람직한 일 실시예에서, 오퍼레이팅 시스템(212)은 마이크로소프트사로부터 상업적으로 이용가능한 WINDOWS® CE 브랜드 오퍼레이팅 시스템이다. 오퍼레이팅 시스템(212)은 모바일 장치용으로 설계되는 것이 바람직하며, 노출된 애플리케이션 프로그래밍 인터페이 스 및 메소드의 집합을 통하여 애플리케이션(214)에 의해 이용될 수 있는 데이터베이스 특징들을 구현한다. 오브젝트 저장소(216)의 오브젝트들은 적어도 일부는 노출된 애플리케이션 프로그래밍 인터페이스 및 메소드로의 호출에 응답하여 애플리케이션(214) 및 오퍼레이팅 시스템(212)에 의해 보유된다.
통신 인터페이스(208)는 모바일 장치(200)가 정보를 송신하고 수신하도록 하는 방대한 장치 및 기술을 나타낸다. 장치는, 몇가지 예를 들자면, 유선 및 무선 모뎀, 위성 수신기 및 방송 튜너를 포함한다. 모바일 장치(200)는 또한 컴퓨터에 직접적으로 접속되어 그 컴퓨터와 데이터를 교환할 수 있다. 이러한 경우에, 통신 인터페이스(208)는 적외선 송수신기 또는 직렬이나 병렬로된 통신 접속일 수 있으며, 이들 모두는 스트리밍 정보를 전송할 수 있다.
입/출력 컴포넌트(206)는 접촉-감응식 스크린, 버튼, 롤러, 및 마이크로폰 등의 다양한 입력 장치 및 오디오 생성기, 진동 장치, 및 디스플레이를 포함하는 다양한 출력 장치를 포함한다. 상기 열거된 장치들은 예이며 모바일 장치(200)에 이 모든 장치를 나타낼 필요는 없다. 또한, 다른 입/출력 장치가 모바일 장치(200)에 첨가되거나 발견될 수 있다.
계층화되고 매핑된 UI 아키텍처 및 방법
상술된 바와 같이, 정보를 나타내는 애플리케이션은 사용자에게 매우 다양한 특성을 가지는 플랫폼(예를 들면 디스플레이 대상) 상의 경험을 가능한 풍부하게 제공해야 한다. 이들 플랫폼은 사용자의 데스크탑에서 실행되는 풍부한 클라이언트에서, 사용자의 브라우저에서 실행되는 웹 클라이언트, PDA, 전화 기반 장치, 및 심지어는 음성 인터페이스까지의 범위이다. 다른 플랫폼들 또한 가능하다. 본 발명의 실시예에 따라서, 데이터 타입이 질의 중의 플랫폼 상의 본래의 제어에 매핑되는 방법을 규범적으로 정의하는 스키마가 채용된다.
기업 아키텍처는 그 또는 그녀의 기업 공학의 정보를 이용하여 그 또는 그녀의 고객을 위하여 문제를 해결한다. 그러나, 이 사람은 통상적으로 컴퓨터 프로그램 개발자가 아니며, 복잡한 프로그램을 개발하는 것으로부터 보호되는 것이 이상적이다. 본 발명은 기업 설계자(사용자)가 애플리케이션의 기업 로직에 집중하며 데이터를 소정의 플랫폼에 표시하는 방법은 상관하지 않을 수 있게 하는 방법 및 장치를 제공한다. 개시된 발명은 애플리케이션 개발자로 하여금, 기업의 모델에 기초하여, 복수의 디스플레이 대상을 목표로 하고 각 디스플레이 대상의 기술적인 기능을 이용하는 사용자 인터페이스를 유도하도록 한다.
이 유도 과정은 개발자가 "적절한" 레벨로 추상화된 계층에 지식적인 노력에 집중할 수 있도록 하는 계층화된 UI 정의에 의해 이루어질 수 있다. 패턴들은 각 추상화 레벨에서 캡쳐(capture)되고 재사용된다. 매핑 프로세스에서는 맵들이 - 보다 높은 레벨의 추상화로부터 보다 구체적인 레벨에 이르기까지 - 패턴들을 캡쳐하지만, 애플리케이션 개발자가 결과를 잘 조정할 수도 있게 한다. 본 발명은 제어, 논리 폼 타입 및 행위에 따라, 이들 맵을 이용하여 기업 모델을 디스플레이 대상에 특정된 물리적 모델에 매핑시킨다.
본 발명의 방법에 있어서, 기업 모델은 마스터(master)이다. 기업 모델에 적용되는 지식적인 작업은 보호되고 사용자 인터페이스를 생성하는 근간으로서 이 용된다. 이 모델은 UML(Unified Modeling Language), ER(enterprise resource) 다이어그램 또는 그 밖의 도표적이거나 도표적이지 않은 임의의 모델링 언어로 기술될 수 있다. 기업 모델은 또한 고전적인 오브젝트 지향 프로그램, 관계형 데이터 베이스, 또는 기타 포맷으로 작성될 수 있다. 아래에 기술한 바와 같이, 본 발명의 몇몇의 예시적인 실시예에서, 기업 모델은 속성들을 가지는 엔티티의 클래스 계층구조이다.
본 발명의 실시예에서, 기업 모델은 디스플레이 대상에 독립된 사용자 인터페이스의 중간 모델에 매핑된다. UI 모델은 애플리케이션 개발자가 마지막 디스플레이 대상의 어떠한 기술적인 지식도 필요 없이 이 모델을 검토하고 수정할 수 있도록 하는 상위 레벨의 추상화로 기술된다. 모든 디스플레이 대상에 대하여 작업할 UI 모델에 코드가 추가될 수 있다. UI 모델의 패턴들이 캡쳐되고 이 패턴은 재사용될 수 있어 동질성의 UI가 산출된다. UI 모델을 기술하는 데에 사용되는 빌딩 블럭들(building block) 또한 확장될 수 있다.
이하 보다 상세히 기술될 바와 같이, 본 발명의 몇몇의 실시예에서 엔티티들은 논리 제어들을 가지는 논리 폼을 포함하는 "논리 UI"라 칭하는 UI 모델에 매핑된다. 엔티티들 및 속성들은 설계 시간에 각각 논리 폼 및 논리 제어에 매핑된다. 런타임시에 논리 폼 및 논리 제어 데이터는 엔티티 및 속성에 바인딩된다. 폼의 패턴들은 폼 타입이라 칭한다. 이 폼 및 제어는 코어(core) 클라이언트 매핑 엔진에 의해 이용되지만 이 엔진의 일부는 아니다. 코어 클라이언트는 UI 클라이언트의 디스플레이 대상에 독립된 부분이다. 본 발명의 실시예에서, 논리 제어 및 폼 타입의 리스트는 확장될 수 있다. 아래에 본 발명의 이들 양태들의 추가적인 설명 또한 제공된다.
본 발명의 몇몇의 실시예에서, UI 모델은 ASP.NET(active server page language), WML(wireless markup language), HTML(hypertext markup language) 등과 같은 디스플레이 대상에 특정된 마크업 언어에 매핑된다. UI 모델은 또한 다른 디스플레이 기술들(예를 들면, Win32, WinForms, PocketPC)에 매핑될 수도 있다. 본 발명의 하나의 특정한 예시적인 실시예에서, 논리 폼들은 웹 클라이언트 디스플레이 대상, WinForms 클라이언트 디스플레이 대상 등에 매핑되고 새로운 디스플레이 대상이 동적으로 추가될 수 있다.
본 발명의 실시예에 따라서, 매핑은 개방되고 변경될 수 있는 선언적인 맵에 기초한다. UI의 패턴들은 이 맵에서 캡쳐된다. 맵은 높은 레벨의 유연성을 갖추도록 하는 몇가지 조건에 기초하여 작성될 수 있다. 모델들이 매핑된 이후에 서로 다른 모델들이 (코드 등을 통하여) 수동으로 수정될 수 있다. 이는 개발자에게 최종 레벨의 유연성을 부여한다. 이 맵들의 동적인 특성은 제어와 같은 새로운 UI 구성요소를 개발하고 사용할 수 있도록 한다. 새로운 제어는 단지 속성들을 새로운 제어에 매핑함으로써 폼 상에 동작 가능해진다. 새로운 제어는 - 이 실시예에서 새로운 제어가 특정 기본 클레스로부터 상속해야 하는 - 특정 계약을 준수해야 한다. 런타임시에, 논리 폼은 엔티티들에게 바인딩되고 디스플레이 대상은 논리 계층에 바인딩된다. 이는 디스플레이 대상들 간에 공통된 모든 기능(보안, 개별화, 내부 폼 논리)이 논리 계층에 한번 구현되고 여러 사례에서 이용되도록 한다.
폼 타입들
본 발명은 논리 폼 및 논리 폼 타입의 개념을 이용하여 기업 또는 다른 애플리케이션을 위한 사용자 인터페이스(폼)를 작성하는 새로운 방법을 제공한다. 본 발명의 예시적인 실시예 또는 구현물들에서, 논리 폼 및 논리 폼 타입이 이용되지만, 모든 실시예에서 논리 계층을 이용할 필요는 없다. 그러므로, 본 발명은 일반적으로 폼을 생성하는 폼 타입의 사용에 적합하다. 오늘날의 기업 애플리케이션은 통상적으로 종종 소수의 범주에 속하거나 유사한 패턴을 따르는 다수의 폼으로 구성된다. 범주의 개수는 통상적으로 2 내지 20 사이지만, 보다 많은 수로 정의될 수 있다. 본 발명의 폼 타입은 설계-시간 및 런타임시에 기업 또는 애플리케이션 모델을 보존하거나 따름으로써 모델-운영식 사용자 인터페이스를 용이하게 한다. 이는 소프트웨어 개발자에게 높은 레벨의 추상화를 제공한다. 또한, 본 발명에 따른 폼 타입의 사용은 재사용(한 레이아웃이 여러 번 사용될 수 있음), 모든 폼의 소수의 별개의 타입에 속하므로 보다 많은 동종의 폼 사용자 인터페이스 집합, 및 보다 보유하기 용이한 폼들(타입의 레이아웃은 폼을 변경하지 않고 변경될 수 있고 폼을 변경하지 않고 다른 타입을 적용할 수 있다)을 보장한다. 본 발명은 애플리케이션 개발자가 복수의 디스플레이 대상 상에서, 애플리케이션의 외관 및 감지와 애플리케이션 내에서 항해가 일어나는 방법의 완전한 제어를 가짐을 보장한다. 디스플레이 대상의 예로는 복수의 유형의 현재 및 추후의 오퍼레이팅 시스템 및 복수의 이용가능하거나 추후의 모바일 장치 각각을 포함한다. 다른 예로서, 특정 오퍼레이팅 시스템에서의 렌더링 기술도 디스플레이 대상이 될 수 있다.
본 발명의 개념을 이용하면, 논리 폼은 디스플레이 대상에 독립된 논리 제어를 포함하고, 이 제어들은 디스플레이 대상에 독립된 논리 폼을 직접 만든다. 논리 폼은 이 논리 폼이 따라야할 패턴을 정의하는 논리 폼 타입을 참조한다. 논리 폼이 참조하는 논리 폼 타입은 복수의 서로 다른 논리 폼 타입으로부터 선택되어 빠르게 논리 폼의 형태 및 내용을 구축할 수 있다. 본 발명의 실시예에서, 논리 폼 타입은 기업 또는 다른 애플리케이션 모델과 결합될 때 논리 폼의 생성을 일으키는 모델이다.
논리 폼 타입은 폼이 따라야할 스키마(이 스키마는 폼의 구조, 즉 이 폼이 포함할 수 있는 구성요소 등을 기술한다), 즉 (애플리케이션 개발자를 통하여 자동적으로 또는 수동적으로) 기업 모델을 논리 모델로, 이 논리 모델을 물리적 모델로 매핑시키는 맵 (또는 규칙)을 노출시킨다. 또한, 폼 타입은 (논리) 폼의 동적인 행위를 수정하는 코드를 포함할 수 있다. 그러므로, 폼 타입은 스타일과 레이아웃 정보, 및 다른 타입의 디스플레이 대상에 특정된 정보를 노출시킨다. 그러나, 이 폼 타입들은 논리 폼 및 이 폼의 내용에 대한 규칙 또한 기술하기 때문에 매우 중대한 역할을 한다. 본 발명의 폼 타입의 특정 양태들이 이하에 소개된다.
서로 다른 폼 타입들
상술한 바와 같이, 본 발명의 통상적인 사용에 있어서, 복수의 서로 다른 폼 타입이 애플리케이션 개발자에 의해 폼을 생성하는 데에 사용하기 위해 제공된다. 예를 들면, 한 예시적인 실시예에서, 폼 타입은 Dialog 폼 타입, Card 또는 CardView 폼 타입, ListView 폼 타입, EntityOverview 폼 타입, 및 ActivityCenter 폼 타입을 포함할 수 있다. 이들 폼 타입들은 예를 들면 기업 애플리케이션에서 사용되는 통상적인 서로 다른 범주의 폼에 대응한다. 그러므로, 복수의 폼 타입을 제공함에 의해 애플리케이션 개발자는 현 기술 수준의 기업 애플리케이션을 작성하는 모든 폼을 구축하게 된다. 본 기술 분야에서 숙련된 기술을 가진 자가 이해하는 바와 같이, 이들 특정 폼 타입은 단지 일 예이며, 본 발명은 임의의 특정 폼 타입 또는 임의의 폼 타입의 특정 개수에 한정되지 않는다.
폼 타입 레이아웃
레이아웃 정보의 내용 및 구조가 각 폼 타입에 따라 다를 수 있다. 또한, 레이아웃 정보는 디스플레이 대상에 특정될 수 있다. 예를 들면, ActivityCenter 폼 타입에 대한 레이아웃 정보는 특정 오퍼레이팅 시스템 플랫폼에 폼을 디스플레이하기 위하여 HTML(즉, WWW(World Wide Web) 또는 인터넷) 디스플레이 대상에 의해 이용될 Themes/Skins/Styles 및 마스터 페이지를 지원할 수 있다. 이는 기업 개발자에게 서로 다른 디스플레이 대상에서 시작하고 필요한 만큼 폼 사용자 인터페이스를 조정할 수 있는 자유를 부여한다.
플러그형(pluggable)이며 확장 가능함
독립적인 소프트웨어 벤더(ISV)가 폼 타입들을 수정하거나 확장하고 새로운 폼 타입들을 생성할 수는 바와 같이 폼 타입들은 완전한 유연성 및 확장성을 제공하여 전체 애플리케이션에 대한 형태 및 감지를 변경할 수 있다.
이제 도 3a 및 도 3b를 참조하면, 본 발명의 예시적인 실시예에 따른 Card 폼 타입을 이용하여 생성된 Sales Order 논리 폼의 도식적인 설명이 도시된다. 이 예에서, Sales Order 논리 폼은 3개의 서로 다른 논리 제어 그룹으로 그루핑(group)되는 논리 제어의 집합을 포함한다. 이하에 더 기술될 바와 같이, Card 폼 타입은 제어가 서로 다른 디스플레이 대상에서 물리적 폼에 나타나는 방법 및 위치를 정의한다. 도 3a 및 3b는 동일한 정보를 나타내며, 도 3b에는 논리 폼 타입과 논리 폼 간의 관계 및 정보의 출처를 도시하는 화살표 및 논리 폼에서 물리적 폼을 생성하는 것이 도시된다.
도 3a 및 3b는 폼 타입(300)을 이용하여 생성된 폼의 인스턴스(instance)(305)를 도식적으로 설명한다. 코어 클라이언트(310) 상에, 폼의 인스턴스(305)는 (폼의 개념적 모델이 도시한 바와 같이) 논리 폼(306)이며 폼 타입(300)은 논리 폼 타입(301)이다. 디스플레이 대상(320)에서, 폼(305)은 논리 폼(306)을 이용하여, 궁극적으로는 논리 폼 타입(301)으로부터 생성된 렌더링된 폼(370)이다. 렌더링된 폼(370)은 한 특정 구현물이지만, 다수의 다른 구현물 또는 렌더링이 수행될 수 있다. 렌더링된 폼(370)은 또한 물리적 폼이라 칭할 수 있다.
폼 타입(300)이 2개의 부분, 즉 폼 타입을 사용하는 특정 폼에 포함되어야 하는 것들을 정의하는 스키마(330), 및 폼이 특정 디스플레이 대상에 렌더링되고 드로잉(draw)되어야 하는 방법을 기술하는 제어를 포함하는 레이아웃(331)을 포함한다. 폼 타입은 코드의-배후에-있는(code-behind) 클래스 또한 포함할 수 있다. 폼 타입에 의해 이용될 수 있는 서로 다른 레이아웃을 가짐으로써, 폼 타입을 이용하여 생성된 폼들은 서로 다른 디스플레이 대상(예를 들면, 셀룰러폰 디스플레이, PDA 디스플레이, 퍼스널 컴퓨터 모니터, 등)으로 맞추어질 수 있다. 폼 타입(300) 이 복수의 폼에 이용되는 캡쳐된 패턴을 표현한다면, 복수의 폼 인스턴스(305)가 폼 타입(300)을 이용하여 생성될 수 있다.
이 예에 대하여 Sales Order 엔티티 또는 오브젝트 모델(즉, 기업 또는 애플리케이션 모델)에 대한 폼을 생성하는, 개발자가 진행할 수 있는 프로세스를 논한다. 우선, 개발자는 그 또는 그녀가 선택해야 하는 폼의 종류를 알기 위하여 관찰할 수 있다. 도 3a 및 3b의 참조번호(325)에 도시된 바와 같이, "Card" 폼 타입을 선택하면, 도 3b의 화살표(326)가 나타내는 바와 같이 Card 스키마(330)를 호출하거나 지정한다.
개발자가 특정 폼 타입 및 관련된 스키마를 지정하면, 몇몇의 실시예에서 그 또는 그녀는, 스키마에 의해 지시된 정보 및 필드들을 이 폼에 포함하는 것으로 결정하며, 사용자의 기업 또는 다른 모델로부터의 메타데이터가 이 필드값을 채운(populating)다. 예를 들면, Card 폼 타입(301) (및 관련된 Card 스키마(330))을 선택함으로써, 논리 폼(306)은 스키마(330)에 정의된 내용 영역(335)에 대응하는 내용 영역(336)을 포함할 것이다. 내용 영역(335)에 대응하는 내용 영역(336)의 출처는 도 3b의 화살표(337)가 나타낸다. 마찬가지로, Card 폼 타입의 스키마(330)가 UI 부분 영역(340), 관련 엔티티 UI 부분 영역(345), 및 액션 영역(350)을 포함하기 때문에, 논리 폼(306)은 참조번호(341, 346 및 351)에 도시된 바와 같이, 이들 영역 및 필드들을 포함한다. 또한, 이들 필드의 출처는 화살표(342, 347 및 352)에 의해 도식적으로 나타난다.
상술한 바와 같이, 각 폼 타입은 특정 디스플레이 대상에 폼이 렌더링되고 드로잉되어야 할 방법을 기술하는 제어들을 포함하는 적어도 하나의 레이아웃(331)(보통 각 디스플레이 대상마다 1개가 존재함) 또한 포함한다. 도 3a 및 3b에 도식적으로 설명된 바와 같이, 카드 폼 타입에 대한 레이아웃은 디스플레이 대상(320)이 내용 영역(339), UI 부분 영역(344), 관련 엔티티 UI 부분 영역(349), 및 액션 영역(354)를 포함하도록 하는 제어들을 포함한다. 화살표(338, 343, 348, 및 353)는 카드 레이아웃 내의 이들 영역의 Card 스키마 내의 이들 영역과 대응하는 영역들과의 상호관계를 도시한다. 애플리케이션 모델로부터 선택된 논리 폼 타입 및 메타데이터를 이용하여 생성된 논리 폼(306)은 (이 예에서는 Sales Order 엔티티) 디스플레이 대상(320)에 물리적 폼(370)으로 렌더링된다. 이 프로세스는 화살표(361 및 362)를 이용하여 도 3b에 도시된다.
모델들 및 맵들
복수의 정보 시스템이 모델들을 이용한다. 모델의 예로는 오브젝트도, XML(Extensible Markup Language) 스키마, 데이터베이스 정의들, 및 폼 정의들이다. 모델은 각각이 속성, 조합, 및 연관성을 가지는, 오브젝트의 집합으로서 종종 식별된다. 기업 UI들에서, 폼들을 렌더링하는 데에 이용되는 제어 계층구조는 윈도우즈 제어 트리 및 HTML 오브젝트 모델과 같은 모델로서 간주될 수 있다. 또한, 모델(예를 들면, 클래스 정의)들을 정의하는 데에 UML 등의 구문이 사용될 수 있다. 본 발명의 방법을 설명하는 데에 이용된 예시적인 프레임워크에서, 애플리케이션은 기업 엔티티를 이용하여 모델링된다. 그러므로, 비지니스 모델은 엔티티라 칭하는 이들 기업 오브젝트들, 엔티티들 간의 관계, 및 엔티티들의 속성을 포함한 다. 간단한 모델(380)의 예로, 도 4a에 도시된 엔티티(381, 382, 383, 및 384)를 들 수 있다. 엔티티는 속성(예로서 엔티티(381)의 속성(385)이 도시됨) 및 다른 엔티티와의 관계(예로서 엔티티들(381과 384) 간의 관계(386)가 도시됨)를 가진다.
모델이 다른 모델로 변환될 때, 맵은 명시적으로 또는 가끔은 묵시적으로 이용된다. 맵은 모델들 간의 관계를 기술한다. 몇몇의 예로는, XML을 XML에 매핑시키고자 하는 XSLT(Extensible Stylesheet Language Transformation), 특정 장치 표면에 오브젝트 모델을 렌더링하는 데에 이용되는 제어들, (서로 다른 애플리케이션의 순서가 다른 포맷을 가질 수 있기 때문에) 하나의 애플리케이션으로부터의 다른 애플리케이션으로의 순서의 매핑들, UML을 클래스 정의들로 매핑시키는 CASE(Computer Aided Software Engineering) 도구들을 포함할 수 있다.
현재 기업 애플리케이션에서, 맵은 대부분 한번의-오브젝트 매핑(object-at-a-time mapping)을 이용하여 프로그래밍되며, 이는 매핑이 코드에서 특정 오브젝트를 입력으로 취하고 다른 오브젝트를 반환하는 "전환"문(switch statement)으로 코딩됨을 의미하는 것이다. 그러므로, 종래의 기업 애플리케이션은 통상적으로 명령형의 맵, 즉 통상적인 프로그래밍 언어의 코드로 작성된 맵들을 이용한다. 본 발명에 따른 한번의-모델을 이용함으로써, 크기 순으로 생산성이 향상될 수 있음이 보고되었다. 생산성 이득 외에도, 맵들을 이용하여 모델들을 다른 모델들로 매핑함으로써 UI 생성 문제를 파악하는 것에 대한 정신적 이득도 있다. 또한, 본 발명의 선언적으로 정의된 맵에 발견되는 보다 높은 추상화 레벨은 다른 이점이다. 본 발명은 이 맵들이 명시적이고 선언적이도록 한다. 본 발명에서, (한 맵이 코드 내 의 매핑을 무효화(override)할 수 있다는 사실에 의해) 맵들은 선언적이거나 명령형일 수 있다.
맵의 명시적인 특성은 맵이 매핑 또는 렌더링하는 데에 이용되는 생성 엔진의 외부에 있으며, 맵은 그 자체가 모델이라는 것을 의미한다. 다시 말하자면, 맵의 명시적 특성은 이 맵들이 제어 및 폼과는 개별적으로 정의됨을 의미한다. 통상적으로, 이러한 매핑은 제어 코드 또는 폼 코드 내부에서 묵시적으로 이루어질 수 있다.
맵들의 선언적인 특성은 맵들이 (통상적인 프로그래밍 언어로 코딩된) 명령형이 아님을 의미한다. 본 명세서에서 사용된, "선언적이게 정의된"이란 용어는 맵이 통상적인 경우와 같이 코드에 바로 정의되지 않고, 맵들이 쉽게 변경될 수 있도록 하는 포맷으로 정의됨을 의미한다. 선언적으로 정의된 포맷의 예는 XML 문서, 콤마로 분리된 파일들, (하나의 데이터 스키마를 다른 데이터 스키마에 매핑시키는) 비즈톡(BizTalk) 맵, 및 (오브젝트 모델을 데이터베이스 스키마에 매핑시키는) MBF 엔티티 맵을 포함하지만 이에 한정되지 않는다. 본 발명에 따른 매우 다양한 선언적 매핑 포맷이 이용될 수 있으며, 어떤 포맷이 선택될 지에 대한 것은 특별히 중요하지 않다. 선언적 맵은 제한된 확률들의 집합을 가지므로, 맵을 정의하는 직관적인 설계 도구를 제공하는 것을 용이하게 한다는 점이 중요하다. 이와는 다르게, (코드를 이용하는) 명령형 맵은 프로그래밍 언어를 통해 거의 제한되지 않는 확률들을 가지므로, 직관적인 설계 도구를 만드는 것은 매우 어렵다. 대신에, 이러한 도구를 만드는 데에 프로그래밍 기술이 필요하다.
선언적인 맵들을 이용하는 본 발명의 실시예들에서, 맵은 선언적이어야만 할 필요는 없음을 유의한다. 예를 들면, 선언적으로 정의되기에는 너무 복잡한 맵을 생성할 필요가 있는 곳에, 명령형 매핑 양태들이 선언적인 맵 대신에 포함될 수 있다. 예를 들면, 복합 함수들이 생성되고 맵에 포함될 수 있다. 송장 송부 주소 및 운송 주소가 거의 동일하다면, 송장 송부 주소만이 폼에 나타날 수 있는 예를 들 수 있다. 2개의 주소가 거의 동일한지 여부를 판정하는 알고리즘은 맵에 이용된 묵시적으로 정의된 함수가 될 수 있다.
본 발명은 분산되고, 서비스 지향적인 아키텍처에 기초하여 기업 애플리케이션의 개발 및 배포에 적절한 프로그래밍 추상화 및 규범적인 아키텍처를 제공한다. 프레임워크는 이들 추상화에 작성된 기업 로직을 기본적인 기술의 변경으로부터 고립시켜, 기업 애플리케이션 개발 팀의 중요한 자산을 보호한다. 본 발명은 모델-운영식 개발로의 접근법을 확장시켜, 코드 생성을 하는 설계-시간 모델에서 런타임시에 기업 모델을 해석할 수 있는, 진정한 "모델 인식 애플리케이션 서비스"를 구비하는 모델로 나아갈 수 있다.
맵에 기초하는 모델-운영식 UI
본 발명의 일 실시예에 작성된 기업 애플리케이션에 대한 UI를 생성할 때 애플리케이션 모델을 구비하는 것은 중요한 특징이다. 대다수의 UI는 기업 로직의 모델 및 맵들에 기초하여 단독적으로 생성될 수 있다. 애플리케이션 개발자가 새로운 앤티티를 모델링 할 때, UI는 이 엔티티로부터 유도된다. 이 유도 과정은 (참조번호(388)로 도시된) UI 모델(390)에 매핑되고 있는 기업 모델(380)을 도시하 는 도 4b에 도식적으로 나타난다. 화살표(388)는 매핑 프로세스 및 이 매핑 프로세스를 수행하는 맵을 사용하는 적절히 구성된 매핑 엔진을 나타낸다.
이 매핑은 전통적인 코딩 기법을 이용하여 수행될 수 있지만, 매핑은 특정 도전에 기준할 경우 그리 간단한 것은 아니다. 이 도전은 새로운 속성 타입이 생성되고 엔티티에 이용되었을 때, 코딩된 변형이 이 새로운 타입을 처리하는 방법을 알지 못할 수 있으며 그러므로 이 변형은 수정되고 재컴파일되어야 하는 경우이다. 다른 도전은 제어들이 이 변형에 포함되는 경우에의 값들 만을 가질 새롭게 개발된 제어들을 처리하는 경우이다 - 이는 변형을 다시 프로그래밍하는 결과를 초래한다. 본 발명의 매핑 기법은 이들 문제를 만족시킬 수 있다. (코드를 통하여) 런타임시에 UI의 임의의 수정 또한 매핑이라고 간주될 수 있음을 유의한다. 본 발명에서 사용된 플랫폼은 계층화된 UI 모델을 노출시키고, 한 계층으로부터 다른 계층으로 모델을 변환하는 맵을 이용한다. 이는 이하에 보다 상세히 기술된다.
본 발명의 방법 및 장치는 소정의 플랫폼 상에서 기업 정보를 사용자에게 나타내는 방법을 계산하는 방식을 제공한다. 본 발명은 모델들의 다른 모델들로의 매핑에 의해, (대화하는 기업 엔티티를 기술하는) 매우 추상적인 모델로부터 (기업 정보를 렌더링하기 위해 어떤 장치에 특정된 제어가 이용되어야 하는지 정확하게 기술하는) 매우 구체적인 모델로 작업하는 것을 구축한다. 일반적으로, 이 매핑은 임의의 개수의 단계를 포함할 수 있다.
예를 들면, 2개의 명시적이고 선언적인 매핑 단계를 이용하여 마스터 모델(405)로부터 특정화된 모델(425)로 매핑시키는 프로세스를 도시하는 도 5a에 도시 된 블럭도(400)를 생각한다. 마스터 모델(405)(즉, "모델 A")은, 예를 들면, 사용자에게 특정된 문제 도메인 내의 데이터베이스, 테이블, 엔티티, 오브젝트, 또는 모델의 다른 타입일 수 있다. 마스터 모델(405)은 맵(410)(즉, "A-B 맵")을 이용하여 참조번호(411)에 도시된 매핑 단계에서 중간 모델(415)(즉, "모델 B")에 매핑된다. 이하에 보다 상세히 기술될 바와 같이, 중간 모델(415)은 논리 제어를 가지는 디스플레이 대상에 독립된 모델일 수 있다. 그 다음 중간 모델(415)은 제2 맵(420)(즉, "B-C 맵")을 이용하여 참조번호(421)에 도시된 매핑 단계에서 특정화된 모델(425)(즉, "모델 C")에 매핑된다. 마찬가지로 이하 보다 상세히 기술될 바와 같이, 특정화된 모델(425)은 물리적 제어를 가지는 디스플레이 대상에 특정된 모델일 수 있다. 매핑 단계(411 및 421)를 나타나는 데에 사용된 화살표들 또한 매핑 단계를 구현하는 맵(410 및 420)을 이용하도록 구성된 매핑 엔진을 나타낸다.
본 발명의 몇몇의 실시예에 따르면, 이하에 기술되고 도 5b의 블럭도(450)에 도식적으로 나타난 바와 같이, 사용자가 클라이언트 플랫폼 상에서 기업 정보와 대화하도록 하는 방법을 결정하는 것에 관련된 매핑 스킴은 적어도 3가지 단계를 포함한다. (도 5a의 마스터 모델(405)에도 도시된) 초기 모델(455)은 사용자가 대화해야하는 기업 엔티티에 대한 정보를 포함한다. 이 애플리케이션 모델의 각 데이터들은 특정 타입으로 되어 있다. 제1 단계는 표시할 데이터들의 소정의 타입(스트링, 정수형, 화폐값을 나타내는 10진수형, 다른 값들을 포함하는 주소 등)에 채용되는 논리 제어를 결정하는 단계를 포함한다.
소정의 타입에 이용되는 논리 제어는 모델(455)의 데이터 타입으로부터 모델 (465)의 논리 제어로 매핑하는 것을 이용하여 결정된다. 매핑 프로세스는 참조번호(461)에 도시되며, 맵(460)(즉, "데이터들의 타입으로부터 논리 제어들로의 맵")을 이용한다. 논리 제어는 몇몇의 유용한 속성을 가진다. 이 논리 제어들은 임의의 특정 디스플레이 대상에 종속성되는 것이 완전히 해방되지만, 장치에 특정된 물리적 제어의 행위를 관리하는 속성들은 유지하고 있는다. 타입 계층 구조들을 고려하는 논리 제어의 탐색이 수행된다. 특정 타입의 속성을 캡슐화하기에 특별히 적절한 논리 제어가 존재하지 않는다면, 이 타입을 처리하는 논리 제어가 발견될 때까지 검색은 기본 타입으로 계속된다.
일단 표시될 데이터의 타입으로부터 논리 제어가 식별되었다면, 소정의 플랫폼 상에서 렌더링을 실제로 수행하는 데에 이용되는 물리적 제어를 찾아야 한다. 이들 물리적 제어는 가끔 "어댑터"라 칭한다. 이러한 과정은 다른 매핑을 이용하여 이루어져, 논리 제어 및 디스플레이 대상으로부터 물리적 제어를 산출한다. 매핑 프로세스는 참조번호(471)에 도시되며, 맵(470)(즉, "논리 제어로부터 물리적 제어로의 맵")을 이용하여 논리 제어 모델(465)로부터 물리적 제어 모델(475)을 생성한다.
클라이언트가 사용자의 디스플레이 대상에서 실행되면, 물리적 제어는 사용자와 대화하는 데에 사용되는 본래의 제어의 인스턴스를 생성하는 데에 이용될 것이다. 이 과정은 제3 매핑에 의해 이루어져, 물리적 제어로부터 본래의 제어들의 집합을 산출한다. 예를 들면, 물리적 제어가 주소 제어였다면, 물리적 제어는 시가, 도시, 나라에 대한 본래의 제어로 매핑될 것이다. 이 매핑 프로세스는 참조번 호(481)에 도시되고 맵(480)(즉, "물리적 제어로부터 본래의 제어로의 맵")을 이용하여 물리적 제어 모델(475)로부터 본래의 제어 모델(485)을 생성한다. 몇몇의 실시예에서, 이 맵은 명령형 맵이지만, 반드시 명령형의 맵일 필요는 없다. 다시 말하자면, 화살표(461, 471 및 481)는 맵(460, 470 및 480)에 의해 기술된 바와 같이 매핑 함수를 구현하는 데에 이용되는 매핑 엔진(들) 또한 나타낸다.
상술한 매핑은 다른 매핑으로 확대되어 원하는 결과를 달성할 수 있다. 다른 요소들은 렌더링된 폼(카드 또는 리스트 뷰)의 타입, (사용자에게 제공된 정보를 가능한 제한하는) 사용자 역할을 포함할 수 있다. 추상 모델로부터 구체적 모델에 이르는 프로세스는 (관련된 매핑을 기술함으로써) 완전히 규범적이며, 이들 매핑을 변경할 수 있음으로써 유연성이 제공된다.
다른 예로서, 도 5c는 고객의 이름 및 식별 번호(ID)로부터 브라우저에 이 정보를 렌더링하는 데에 사용되는 HTML을 획득하는 매핑 프로세스를 도시하는 블럭도(500)를 도시한다. 마스터 및 초기 기업 모델(505)은 속성으로서 고객의 이름 및 ID를 가지는 엔티티(또는 오브젝트) 또는 엔티티들의 클래스(또는 오브젝트들의 클래스)이다. 모델(505)의 "Name" 및 "ID" 속성의 타입은 각각 "String" 및 "Number"이다. 모델(505)은 규범적인 맵(510)을 이용하여 모델의 논리 제어 계층(515)에 매핑된다. 매핑 프로세스는 참조번호(511)로 나타난다. 이러한 예에서, 데이터 타입 "String"은 "TextBox" 논리 제어에 매핑되는 한편, 데이터 타입 "Number"는 "NumberBox" 논리 제어에 매핑된다.
그 다음, 논리 제어 모델(515)은 맵(520)을 이용하여 HTML 모델(525)에 매핑 된다. 매핑 프로세스는 참조번호(521)에 나타난다. 이 예에서, 모델(525)은 HTML 모델의 폼에서의 물리적 제어 모델이다. 그러므로, 맵(520)은 모델(515)의 논리 제어를 모델(525)의 HTML 태그 또는 엘리먼트에 매핑한다. 그 다음 HTML 모델(525)은 브라우저에서 모델(505)로부터 정보를 렌더링하는 데에 이용된다. 다시, 매핑 단계(511 및 521)를 나타내는 데에 이용된 화살표는 맵(510 및 520)을 이용하여 매핑 프로세스를 구현하는 적절히 구성된 매핑 엔진도 나타낸다.
도 5d는 몇몇의 서로 다른 속성 타입들이 동일한 최종의 제어에 매핑될 수 있어서, 속성 타입의 수가 증가할 때 필요한 제어의 수가 반드시 증가할 필요는 없는 본 발명의 실시예의 다른 양태를 도시한다. 도 5의 블럭도(550)에 도시된 바와 같이, 서로 다른 타입의 속성(561)을 가지는 기업 모델(560)은 맵(555)을 이용하여 디스플레이 대상 모델(580)에 매핑된다. 상술한 예와 마찬가지로, 모델(560)은 논리 제어(571)를 가지는 논리 계층 모델(570)에 매핑된다. 맵(565)을 이용하는 매핑 엔진 및 매핑 프로세스가 참조번호(566)로 도시된다. 맵(565)은 모델(560)의 속성들(561)의 데이터 타입("IDType", "String", 및 "Float")을 논리 제어들("Number" 및 "String")에 매핑시킨다. 이 경우에서, "IDType" 및 "Float" 데이터 타입은 모두 "Number" 논리 제어 타입에 매핑되는 한편, "String" 데이터 타입은 "String" 논리 제어 타입에 매핑된다.
그 다음, 논리 계층 모델(570)이 특정 디스플레이 대상에 특정된 물리적 제어(581)를 가지는 디스플레이 대상 모델(580)에 매핑된다. 모델(570)은, 참조번호(576)에 나타나는 프로세스 및 매핑 엔진으로, 맵(575)을 이용하여 모델(580)에 매 핑된다. 맵(575)은 모델(570)의 논리 제어 타입 "Number" 및 "String"을 모델(580)의 물리적 제어 타입 "TextBox"에 매핑시키며, 이는 특정 모델로부터의 몇몇의 서로 다른 타입들이 다른 모델의 단일 타입으로 매핑될 수 있음을 다시 설명한다. 확대 해석하면, 기업 모델로부터의 몇몇의 서로 다른 속성 타입은 동일한 최종(예를 들면 "물리") 제어에 매핑될 수 있다.
개발자 경험
개발자가, 기존의 타입들로부터만 작성된, 새로운 엔티티를 생성할 때, 디폴트 UI는 맵을 통해서도 작성된다. 디폴트 UI가 원하는 사용자 경험을 제공하지 않는다면, 개발자는 다음을 행하는 것을 선택할 수 있다:
ㆍ 요구사항을 반영하도록 기업 모델을 수정한다. 예를 들면, 몇몇의 실시예에서, 일련의 속성들을 정렬하는 것이 잘못 되었다면, 이를테면 ID가 Name 이전에 디스플레이 되어야 한다면, 엔티티가 편집될 수 있다. 다른 실시예에서, 속성들의 순서는 외부 "행위"에 귀속된다. 그러나, 속성들의 정렬된 그루핑은 엔티티에 "추가될" 수 있고 - 이 그루핑은 그 추가를 하는 데에 이용될 수 있다. 그러므로, 이들 실시예에서, 그루핑 내에서 순서를 변경하는 것이 가장 바람직한 접근일 수 있다.
ㆍ 생성된 논리 폼 모델을 수정한다. 폼에서 이름과 ID의 교환이 이 폼에서 이루어질 수도 있다. 이는 기업 로직 내의 변경이 폼 내의 변경들을 겹쳐쓰는(overwrite) 경우에서와 같이, 이러한 수정은 기업 로직이 변경될 경우 추후에 몇몇의 보유 문제들이 일어날 가능성이 있다. 또한, 매 폼 마다 기업 로직을 변경할 필요가 있을 수 있다.
ㆍ 맵을 수정한다. ID가 Number 제어에 매핑되지만 String 제어가 보다 적합할 경우, 맵은 변경을 하기에 적절한 상황이다.
보다 통상적으로 모델을 수정 하는 대신에 맵을 변경하는 것은 복수의 이점을 갖는다. 무엇보다, 이 변경은 보다 넓은 범위를 수용할 수 있다. 상술한 예에서 사용된 맵 엔트리가 변경되었다면, "IDType"을 이용하는 모든 엔티티는 자동적으로 업데이트를 취할 것이다. 이러한 변경은 매우 일관된 UI를 산출할 것이며, 말단 사용자는 이 일관된 UI로부터 이득을 얻을 것이다.
다른 이점은 애플리케이션의 보유 및 추후의 버전을 볼 때 명백해진다. 모델이 생성되는 방식을 변경하지만, 생성된 모델은 변경하지 않음으로써, 마스터 모델은 업데이트될 수 있고, 그 후에는 이에 의존하는 모델들이 어떠한 충돌의 위험도 없이 재생성될 수 있다. 이 폼을 재생성하면 엔티티들과 이들 엔티티를 검토하고 편집하는 데에 사용되는 폼 간의 불일치가 결코 일어날 수 없다. 맵은 또한 대규모의 생성 태스크를 몇개의 소규모의 선언적인 맵 엔트리로 쪼갠다.
개발자가 "Money"와 같은 새로운 속성 타입을 생성하는 경우, 단일한 맵 엔트리만 추가되는 경우에 UI가 효과적으로 생성되기 때문에 이 속성은 즉시 이용될 수 있다. 이 예에서, 새로운 "Money" 속성은 "Number" 제어에 매핑될 수 있다. 개발자는 추가된 메타데이터 정보를 이용하고, "Money" 제어를 생성하고, 새로운 제어로의 속성 맵을 갖도록 선택할 수도 있다. 매핑 기술은 두 시나리오 모두를 유효하게 한다.
매핑 언어
매핑은 확장가능한 간단한 선언적인 매핑 언어를 이용한다. 매핑은 하나 이상의 토큰을 입력으로 취하고 하나 이상의 토큰을 출력으로 반환한다. 속성 타입이 입력으로 주어지면, 하나 이상의 논리 제어는 출력으로 지정될 수 있다. 출력을 널로 지정하는 것 또한 가능하여야 한다. 예를 들면, "IDType"은 컴퓨터가 생성된 필드일 수 있으며, 이 필드는 사용자가 편집하거나 볼 수 없고, 이러한 경우에는 타입에 어떤 것도 매핑되지 않는다. 또한, 매핑은 출력 상의 파라미터를 제어할 수 있다. 예를 들면, "String" 속성은 폼에서의 다른 TextBox들에 비해 더 넓은 TextBox를 만들 수 있다.
이전에 제시하였던 범위 문제를 처리하기 위하여, 범위 조건이 필요하다. - 이전에 기술된 예시적인 폼에서, "IDTypes"은 "IDControls"로 매핑되지만, 다른 모든 폼에서는 "Number" 제어가 사용된다. 기업 엔티티, 엔티티 스테레오타입, 폼 타입 등을 포함하는 다른 파라미터가 또한 범위로서 이용될 수 있다. 맵이 수행되려 할 때 고려한다면 이득이 될 수 있는 그 외의 조건들이 존재한다. 한 예로는 부모 제어이다. 부모 제어가 리스트라면, 열거자 속성은 라디오 버튼이 아닌 드롭-다운 리스트로 매핑되도록 선택할 수 있다. 다른 조건은 열거자에서의 가능한 선택의 개수가 될 수 있다; 선택이 2개 또는 3개인 경우에 라디오 버튼이 이용될 수 있지만, 리스트에 더 많은 선택을 하도록 할 수 있다. 이러한 방식을 따라가다 보면, 매핑 언어는 초기 요구사항에 비하여 매우 복잡한 상태로 종료될 것이고 맵의 최상부의 다른 추상화 레벨이 개발자가 맵들을 이해하도록 하는 데에 필요하다. 이러한 패턴은 복잡성을 감추기 위하여 몇몇의 도구가 구현되어 왔던, XSLT(Extensible Stylesheet Language Trasformation)로 나타내어 왔다.
논리 폼들 - UI 모델
기업 로직의 모델로부터 UI 모델로 매핑할 때, 논리 계층이라고도 칭하는 레이아웃에 독립된 계층이 삽입된다. 기업 로직의 모델이 디스플레이 대상에 관계없이 최종 UI에 매핑될 수 있다고 여겨진다면, 논리 계층은 직접적인 추상화이다. 몇몇의 메타데이터는 기업 엔티티 자체와 같이 모든 디스플레이 대상에 공통될 것이며, 몇몇 부분은 특정 디스플레이 대상에 특정될 것이다. 논리 계층은 공통된 부분이다.
도 6은 폼을 생성하는 데에 사용되는 설계 시간 활동 및 런타임 활동의 도식적인 설명이다. 설계 시간에서, 모델링 도구(605)는 상술한 바와 같이 모델이나 폼 정의 및 맵들을 생성하는 데에 이용된다. 이들 폼 정의들 및 맵들은 메타데이터 데이터베이스(610)에 저장될 수 있다.
런타임시에, 모델 및 폼은 논리 계층 모델(625)에 매핑된다. 또한 기업 로직(620)에 적용되는 데이터베이스(615)에 저장된 런타임 데이터를 이용하여 논리 계층 모델(625)도 생성된다. 또한 런타임시에는, 상술한 바와 같이 논리 계층 모델(625)이 디스플레이 대상 모델(630)에 매핑된다.
폼 및 제어를 포함하는 - 논리 계층은 기업 로직(620)과 디스플레이 대상(630) 간의 다리이다. 이 계층은 제한된 레이아웃의 지식 및 제한된 기업 로직의 지식을 가진다. 논리 계층은 기업 엔티티에 기초하여 폼의 내용을 정의하고, 폼들 을 기업 엔티티들의 런타임 인스턴스로의 데이터 바인딩과 같은 일반적인 런타임 문제를 처리한다. 또한, 논리 계층은 모든 디스플레이 대상에 공통된 보안을 처리하는데, 논리 계층은 각 디스플레이 대상에 메타데이터를 제공하고 논리 계층은 입력 검사를 처리할 수 있다.
기업 설계자 또는 개발자는 도메인에-특정된 기업 로직 및 데이터에 집중할 수 있다. 관심이 UI로 옮겨간다면, 레이아웃 세부사항, 데이터 바인딩 문제, 배관 코드(plumbing code), 입력 검사, 판독이-금지된 속성의 은닉, 에러 처리, 등은 모두 논리 계층에 존재하는 높은 레벨의 추상화로 숨겨진다. 도메인 전문가는 UI의 컨텐츠- 사용자에게 보여지기에 의미가 있는 것 - 에 집중할 수 있고 특정 디스플레이 대상 및 이 대상들의 서로 다른 렌더링 기술에 관한 상세한 지식을 가질 필요가 없다.
상술한 바와 같이, 논리 폼 또는 논리 계층 모델이 논리 제어를 이용하여 작성된다. 새로운 제어는 쉽게 추가될 수 있어, 논리 계층을 매우 유연성있고 확장가능하게 만든다. 새로운 제어가 개발된다면, 사용된 맵을 변경함으로써 이 제어는 기존의 폼에 간단하게 추가된다. 각 디스플레이 대상은 새로운 제어를 구현할 필요 없이 새로운 기능으로부터 혜택을 얻을 것이지만, 의미가 있다면, 새로운 제어가 도입될 수 있다.
디스플레이 대상들
논리 폼들 및 제어들은 디스플레이 대상에 의해 이용되는 특정 렌더링 기술에 매핑된다. 다른 도면에서와 같이, 도 7에는 논리 계층 모델 또는 폼(705)이 몇 몇의 특정 디스플레이 대상에 매핑됨을 도시한다. 이러한 특정 예에서, 디스플레이 대상(710)은 윈도우 렌더링 기술을 이용하는 한편, 디스플레이 대상(715)은 웹 렌더링 기술을 이용한다. 디스플레이 대상은 폼들 및 제어들을 렌더링하고 사용자 입력을 처리하는 등의, 모든 사용자 대화를 처리하는 역할을 한다. 각 디스플레이 대상은 논리 계층에 있는 제어가 의미있는 것에 매핑되도록 복수의 제어를 필요로 한다. 즉, 속성은 제어가 처리할 수 있는 값 타입들과 호환되어야 하며 제어는 적절한 방식으로 그 값을 렌더링해야 한다. 다시 말하면, 각 디스플레이 대상에 이용가능해야 하는 제어의 특정된 수의 제어는 없는데, 이는 매핑 기술이 이 제어 수에 큰 영향을 미치기 때문이다.
디스플레이 대상은 사용자 대화를 제어하고 필수적으로 대화 패러다임 또한 제어한다. 웹 페이지 및 윈도우즈 폼의 윈도우는 동일한 논리 폼에 기초하여 생성될 수 있지만, 이들이 채팅식 대화 정책(chatty interaction policy)을 사용하는지 청크식 포스트백 정책(chunky post back policy)을 사용하는지는 디스플레이 대상에 의해 자연스럽게 결정된다. 각 디스플레이 대상은 사용자에게 디스플레이되는 폼의 분량을 선택한다. 윈도우즈 폼은 텝 페이지에서 정보를 숨길 수 있는 한편, 웹 페이지는 한번에 모든 정보를 보여줄 수 있도록 선택할 수 있다. 이들 결정들은 논리 폼에 기초하여 이루어지고, 따라서 디스플레이 대상이 획득하는 폼 타입 또한 기초하게 된다. 서로 다른 디스플레이 대상은 이러한 페이징 결정을 하기 위하여 추가적인 정보를 필요로 하고, 마찬가지로 논리 폼 및 제어는 디스플레이 대상에 특정된 정보에 주석으로 첨부될 수 있다.
행위들 - 선언적인 폼 로직
폼들이 내용을 정의하는 논리 제어들로 구성되기 때문에, 이 폼에 동적인 것들을 추가할 필요도 있다. 이 추가 작업은 코드를 이용하여 이루어질 수 있다. 그러나 코드를 폼에 매핑하는 것은 쉬운일이 아니며, 따라서 선언적인 추상화 레벨이 필요하다. 동시에, 폼들에 추가되는 코드에는 복수의 패턴들이 존재한다. 예를 들면, 다른 필드가 채워지는 경우 필드를 사용 중지시키는 코드는 여러가지 폼으로 존재한다. 폼 상에 지불 타입으로서 "Cash"가 선택된다면, "Credit Card Number"는 회색이 되거나 숨겨지기도 한다.
이들 패턴은 "행위"라 칭하는 개념으로 캡쳐된다. 행위들은 폼들에 선언적으로 추가되고 폼에서 이벤트를 통하여 활성화된다. 제어들의 값들 및 속성들에 따라서, 행위는 다른 제어들의 속성들을 설정할 수 있으나, 행위는 이러한 용도로 제한되는 것은 아니다. 행위는 주로 엔티티에서의 제약사항 또는 다른 메타데이터 속성에 기초하여 매핑된다. 엔티티는 기업 로직을 처리하는 역할을 하며, 행위는 UI 로직을 담당한다. 다시 말하면, 행위가 기업 로직을 구현한다면 관심의 분리를 침해하기 때문에 어떠한 기업 논리도 구현하지 않아야 한다.
계층화된 시스템 및 방법의 예
이제 도 8을 참조하면, 상술한 다양한 개념(즉, 논리 폼 타입, UI 맵, 제어, 행위, 등)을 조합하여 구현하는 계층화된 시스템 및 방법의 도식적인 설명이 도시된다. 도 8에 도시된 바와 같이, 시스템 또는 방법(900)은 기업 애플리케이션 과 컴퓨팅 시스템, 코어 클라이언트 매핑 엔진 즉 컴포넌트(910) 및 하나 이상의 디스 플레이 대상(915)을 포함할 수 있는 기업 프레임워크(905)를 이용하여 구현된다. 도시를 위하여, 도 8은 (맵(921 및 922)을 포함하는) 맵들(920), (애플리케이션 또는 비지니스 모델(926), 논리 폼 모델(927) 및 물리적 모델(928)을 포함하는) 모델들(925), 및 라이브러리들(930)을 나타내도록 분할되었다.
라이브러리들(930)은 애플리케이션 모델(926)의 데이터들의 다양한 속성 타입(923)을 정의하는 기업 프레임워크(905) 내의 속성 타입 라이브러리(931)를 포함한다. 코어 클라이언트(910)에서, 라이브러리들(930)은 논리 제어 라이브러리(932), 행위 라이브러리(933), 및 논리 폼 타입 라이브러리(934)를 포함한다. 상술한 바와 같이, 논리 제어 라이브러리(932)는 모델(926)의 데이터들 또는 속성 타입(923)이 매핑될 수 있는 다양한 논리 제어(924)를 정의한다. 애플리케이션 모델(926)과 논리 폼 모델(927) 간의 이러한 매핑은 맵(921)을 이용하여 코어 클라이언트 매핑 엔진에 의해 수행된다.
행위 라이브러리(933) 및 논리 폼 타입 라이브러리(934)는 상술했던 바와 같이 코어 클라이언트 매핑 엔진(910)에 의해 폼을 설계하고 생성하는 프로세스에 이용된다. 라이브러리들(930)은 또한 디스플레이 대상(900)에 의해 이용되어 물리적 폼 모델(928)을 생성하여 물리적 폼을 렌더링하는, 스타일 라이브러리(935), 물리적 또는 본래의 제어 라이브러리(936) 및 폼 타입 라이브러리(937)를 포함한다. 제어 라이브러리(936)는 맵(922)을 이용하여 논리 제어(924)가 매핑될 수 있는 특정 디스플레이 대상을 위한 다양한 물리적 제어(925)를 정의한다.
본 발명은 특정 실시예를 참조하여 기술되었지만, 본 기술 분야에 숙련된 기 술을 가진 당업자라면 본 발명의 사상 및 범위를 벗어나지 않고 폼이나 세부 사항에 변형이 이루어질 수 있음을 인식할 것이다.
(데이터 모델 또는 문제 도메인 모델이라고도 칭하는) 애플리케이션/기업 모델을 나타내는, 모델 구동형 폼 사용자 인터페이스를 생성하는 방법, 컴퓨터 판독가능 매체 및 시스템이 제공된다. 이 방법은 애플리케이션 모델을 표현하기 위한 폼 사용자 인터페이스를 생성하기 위하여 복수의 서로 다른 논리 폼 타입들 중 논리 폼에 적용할 것을 선택하는 단계를 포함한다. 이 방법은 또한 제1 맵(map)을 제공하는 단계를 포함한다. 디스플레이 대상에 독립된 논리 폼은 애플리케이션 모델, 선택된 폼 타입 및 제1 맵을 사용하여 생성된다. 본 발명의 실시예에 있어서, 제1 맵은 선언적인 맵이지만, 몇몇의 실시예에서 명령형으로 정의된 함수 또는 양태들을 가질 수 있다.

Claims (24)

  1. 애플리케이션 모델을 표현하기 위한 모델 구동형 폼(form) 사용자 인터페이스를 생성하는 방법에 있어서,
    복수의 서로 다른 논리 폼 타입(type) 중에서 상기 애플리케이션 모델을 표현하기 위한 상기 폼 사용자 인터페이스를 생성하는 데에 사용될 것을 선택하는 단계,
    제1 맵을 제공하는 단계, 및
    상기 애플리케이션 모델, 상기 선택된 폼 타입 및 상기 제1 맵을 이용하여 디스플레이 대상에 독립된 논리 폼을 생성하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 제1 맵은 제1 선언적 맵이며, 상기 제1 선언적인 맵을 이용하여 상기 디스플레이 대상에 독립적인 논리 폼을 생성하는 단계는 상기 애플리케이션 모델의 데이터들의 속성 타입을 상기 디스플레이 대상에 독립된 논리 폼 내의 디스플레이 대상에 독립된 논리 제어에 매핑시키는 단계를 더 포함하는 방법.
  3. 제2항에 있어서,
    상기 디스플레이 대상에 독립된 논리 폼을 생성하는 단계는 디스플레이 대상 에 독립된 논리 폼 모델을 생성하는 단계를 포함하는 방법.
  4. 제2항에 있어서,
    상기 애플리케이션 모델, 상기 선택된 폼 타입 및 상기 제1 선언적 맵을 이용하여 상기 디스플레이 대상에 독립된 논리 폼을 생성하는 단계는 상기 디스플레이 대상에 독립된 논리 폼에 선언적으로 적용되는 행위들 또한 첨부하는 단계를 더 포함하는 방법.
  5. 제4항에 있어서,
    상기 선언적으로 적용되는 행위들은 상기 폼에서 이벤트에 의해 활성화되는 방법.
  6. 제5항에 있어서,
    상기 선언적으로 적용되는 행위들은 상기 논리적 제어의 값 및 속성에 따라서, 다른 제어의 속성을 설정하는 로직(logic)의 패턴인 방법.
  7. 제2항에 있어서,
    상기 제1 선언적인 맵은 상기 디스플레이 대상에 독립된 논리 폼을 생성하는 데에 이용되는 매핑 엔진의 외부에 있는 방법.
  8. 제7항에 있어서,
    상기 제1 선언적인 맵은 상기 논리 제어 모델을 생성하기 위하여 상기 매핑 엔진에 의해 사용되는 모델인 방법.
  9. 제2항에 있어서,
    제2 선언적 맵을 이용하여 상기 논리 폼을 물리적 폼에 매핑시키는 추가적인 단계를 더 포함하는 방법.
  10. 제9항에 있어서,
    상기 물리적 폼은 디스플레이 대상에 대한 상기 논리 폼을 렌더링하는 용도로 이용가능한 복수의 물리적 제어를 가지며, 상기 제2 선언적 맵을 이용하여 상기 논리 폼을 상기 물리적 폼에 매핑시키는 단계는 상기 제2 선언적 맵을 이용하여 상기 논리 폼의 상기 논리 제어 각각을 상기 복수의 이용가능한 물리적 제어 중 하나에 매핑시키는 단계를 더 포함하는 방법.
  11. 제10항에 있어서,
    상기 애플리케이션 모델이 런타임시에 동작하도록 상기 생성된 논리 폼을 이용하여 런타임시에 상기 폼 사용자 인터페이스를 렌더링하는 단계를 더 포함하는 방법.
  12. 제11항에 있어서,
    런타임시에 상기 폼 사용자 인터페이스를 렌더링하는 단계는 상기 선택된 논리 폼 타입 및 메타데이터를 둘다 이용하여 상기 애플리케이션 모델로부터 상기 논리 폼을 런타임시에 생성하는 단계를 더 포함하는 방법.
  13. 제12항에 있어서,
    상기 복수의 서로 다른 논리 폼 타입 각각은 상기 생성된 논리 폼에 포함될 애플리케이션 모델 데이터를 정의하는 관련 스키마를 가지며, 상기 논리 폼을 런타임시에 생성하는 단계는 상기 관련 스키마를 이용하여 상기 논리 폼을 생성하는 단계를 더 포함하는 방법.
  14. 제13항에 있어서,
    상기 복수의 서로 다른 논리 폼 타입 각각의 상기 스키마는 복수의 폼으로부터 캡쳐(capture)되는 패턴을 표현하는 방법.
  15. 제13항에 있어서,
    상기 복수의 논리 폼 타입 각각은 적어도 하나의 정의된 레이아웃(layout)을 가지고, 상기 방법은 상기 적어도 하나의 정의된 레이아웃을 이용하여 런타임시에 상기 물리적 폼을 생성하는 단계를 더 포함하는 방법.
  16. 폼 사용자 인터페이스 생성 단계를 수행하는 컴퓨터 실행가능 명령어를 가지는 컴퓨터 판독가능 매체에 있어서,
    상기 단계는
    선택 입력을 수신하여 복수의 서로 다른 논리 폼 타입 중에서 애플리케이션 모델을 표현하기 위한 폼 사용자 인터페이스를 생성하는 데에 사용될 것을 선택하는 단계,
    제1 맵을 제공하는 단계, 및
    상기 애플리케이션 모델, 상기 선택된 폼 타입 및 상기 제1 맵을 이용하여 디스플레이 대상에 독립된 논리 폼을 생성하는 단계
    를 포함하는 컴퓨터 판독가능 매체.
  17. 제16항에 있어서,
    상기 제1 맵은 제1 선언적인 맵이고, 상기 제1 선언적인 맵을 이용하여 상기 디스플레이 대상에 독립된 논리 폼을 생성하는 단계는 상기 애플리케이션 모델의 데이터들의 속성 타입을 상기 디스플레이 대상에 독립된 논리 폼 내의 디스플레이 대상에 독립된 논리 제어에 매핑시키는 단계를 더 포함하는 컴퓨터 판독가능 매체.
  18. 제17항에 있어서,
    상기 애플리케이션 모델, 상기 선택된 폼 타입 및 상기 제1 선언적 맵을 이용하여 상기 디스플레이 대상에 독립된 논리 폼을 생성하는 단계는 상기 디스플레 이 대상에 독립된 논리 폼에 선언적으로 적용되는 행위들 또한 첨부하는 단계를 더 포함하는 컴퓨터 판독가능 매체.
  19. 제17항에 있어서,
    상기 제1 선언적 맵은 상기 디스플레이 대상에 독립된 논리 폼을 생성하는 데에 이용되는 매핑 엔진의 외부에 있는 컴퓨터 판독가능 매체.
  20. 제17항에 있어서,
    제2 선언적 맵을 이용하여 상기 논리 폼을 물리적 폼에 매핑시키는 추가적인 단계를 수행하는 컴퓨터 실행가능 명령어를 더 가지는 컴퓨터 판독가능 매체.
  21. 제20항에 있어서,
    상기 물리적 폼은 디스플레이 대상에 대한 상기 논리 폼을 렌더링하는 용도로 이용가능한 복수의 물리적 제어를 가지며, 상기 제2 선언적 맵을 이용하여 상기 논리 폼을 상기 물리적 폼에 매핑시키는 단계는 상기 제2 선언적 맵을 이용하여 상기 논리 폼의 상기 논리 제어 각각을 상기 복수의 이용가능한 물리적 제어 중 하나에 매핑시키는 단계를 더 포함하는 컴퓨터 판독가능 매체.
  22. 제21항에 있어서,
    상기 복수의 서로 다른 논리 폼 타입 각각은 상기 생성된 논리 폼에 포함될 애플리케이션 모델 데이터를 정의하는 관련 스키마를 가지며, 상기 논리 폼을 생성하는 단계는 상기 관련 스키마를 이용하여 상기 논리 폼을 생성하는 단계를 더 포함하는 컴퓨터 판독가능 매체.
  23. 제22항에 있어서,
    상기 복수의 서로 다른 논리 폼 타입 각각의 상기 스키마는 복수의 폼으로부터 캡쳐되는 패턴을 표현하는 컴퓨터 판독가능 매체.
  24. 제22항에 있어서,
    상기 복수의 논리 폼 타입 각각은 적어도 하나의 정의된 레이아웃을 가지고, 상기 컴퓨터 판독가능 매체는 상기 적어도 하나의 정의된 레이아웃을 이용하여 런타임시에 상기 물리적 폼을 생성하는 추가적인 단계를 수행하는 컴퓨터 실행가능 명령어를 더 포함하는 컴퓨터 판독가능 매체.
KR1020050032614A 2004-06-03 2005-04-20 완전한 유연성을 가진 자동화에 기초하여 사용자인터페이스를 생성하는 방법 및 장치 KR101120815B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/860,306 US7424485B2 (en) 2004-06-03 2004-06-03 Method and apparatus for generating user interfaces based upon automation with full flexibility
US10/860,306 2004-06-03

Publications (2)

Publication Number Publication Date
KR20060047250A true KR20060047250A (ko) 2006-05-18
KR101120815B1 KR101120815B1 (ko) 2012-03-23

Family

ID=34940048

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050032614A KR101120815B1 (ko) 2004-06-03 2005-04-20 완전한 유연성을 가진 자동화에 기초하여 사용자인터페이스를 생성하는 방법 및 장치

Country Status (11)

Country Link
US (1) US7424485B2 (ko)
EP (1) EP1603034B1 (ko)
JP (1) JP5099982B2 (ko)
KR (1) KR101120815B1 (ko)
CN (1) CN1704900B (ko)
AU (1) AU2005201433B2 (ko)
BR (1) BRPI0501581A (ko)
CA (1) CA2504082C (ko)
ES (1) ES2692120T3 (ko)
MX (1) MXPA05004862A (ko)
RU (1) RU2390822C2 (ko)

Families Citing this family (99)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7412658B2 (en) 2002-11-14 2008-08-12 Sap Ag Modeling system for graphic user interface
US7665063B1 (en) 2004-05-26 2010-02-16 Pegasystems, Inc. Integration of declarative rule-based processing with procedural programming
US7424485B2 (en) 2004-06-03 2008-09-09 Microsoft Corporation Method and apparatus for generating user interfaces based upon automation with full flexibility
US7363578B2 (en) * 2004-06-03 2008-04-22 Microsoft Corporation Method and apparatus for mapping a data model to a user interface model
US7665014B2 (en) * 2004-06-03 2010-02-16 Microsoft Corporation Method and apparatus for generating forms using form types
US9038001B2 (en) * 2004-07-01 2015-05-19 Mindjet Llc System and method for graphically illustrating external data source information in the form of a visual hierarchy in an electronic workspace
US9047388B2 (en) 2004-07-01 2015-06-02 Mindjet Llc System, method, and software application for displaying data from a web service in a visual map
US20060026522A1 (en) * 2004-07-27 2006-02-02 Microsoft Corporation Method and apparatus for revising data models and maps by example
US20060074735A1 (en) * 2004-10-01 2006-04-06 Microsoft Corporation Ink-enabled workflow authoring
US8170901B2 (en) * 2004-10-01 2012-05-01 Microsoft Corporation Extensible framework for designing workflows
US7451432B2 (en) * 2004-10-01 2008-11-11 Microsoft Corporation Transformation of componentized and extensible workflow to a declarative format
US20060294006A1 (en) * 2005-06-28 2006-12-28 International Business Machines Corporation Business transaction process controller for composite transactions
US7774745B2 (en) * 2005-12-29 2010-08-10 Sap Ag Mapping of designtime to runtime in a visual modeling language environment
US20070192364A1 (en) * 2005-12-29 2007-08-16 International Business Machines Corporation Apparatus and method for porting of business logic among computer platforms
US8156469B2 (en) * 2005-12-29 2012-04-10 Sap Ag Single composition of pattern modules
US8561048B2 (en) * 2005-12-29 2013-10-15 Sap Ag Late and dynamic binding of pattern components
US7840936B2 (en) * 2005-12-29 2010-11-23 Sap Ag Support of a platform-independent model including descriptions of modeling language entities
US7757204B2 (en) * 2005-12-29 2010-07-13 Sap Ag Limiting extensibility of a visual modeling language
US7840935B2 (en) * 2005-12-29 2010-11-23 Sap Ag Restrictive visualization of a stereotype construct for entities in a visual modeling environment
US7584416B2 (en) * 2006-02-21 2009-09-01 Microsoft Corporation Logical representation of a user interface form
US7984416B2 (en) * 2006-03-24 2011-07-19 The Mathworks, Inc. System and method for providing class definitions in a dynamically typed array-based language
US8966456B2 (en) 2006-03-24 2015-02-24 The Mathworks, Inc. System and method for providing and using meta-data in a dynamically typed array-based language
US8924335B1 (en) 2006-03-30 2014-12-30 Pegasystems Inc. Rule-based user interface conformance methods
US7945891B2 (en) * 2006-04-12 2011-05-17 Microsoft Corporation Time business process validations within data context
US20070244910A1 (en) * 2006-04-12 2007-10-18 Microsoft Corporation Business process meta-model
US8379830B1 (en) 2006-05-22 2013-02-19 Convergys Customer Management Delaware Llc System and method for automated customer service with contingent live interaction
US7809663B1 (en) 2006-05-22 2010-10-05 Convergys Cmg Utah, Inc. System and method for supporting the utilization of machine language
US8887130B2 (en) * 2006-06-16 2014-11-11 Sony Corporation Software design and development in a service oriented environment
US20080005159A1 (en) * 2006-06-28 2008-01-03 International Business Machines Corporation Method and computer program product for collection-based iterative refinement of semantic associations according to granularity
US7730412B2 (en) * 2006-06-30 2010-06-01 Sap Ag System and method for model-based user interface using transformation nodes
US20080059944A1 (en) * 2006-08-15 2008-03-06 Zeligsoft Inc. Deployment-aware software code generation
US7844912B2 (en) * 2006-12-22 2010-11-30 Sap Ag System and method using transformation nodes with enhancement layers
US8689174B2 (en) * 2006-12-28 2014-04-01 Sap Ag Extensibility of pattern components
US8250525B2 (en) 2007-03-02 2012-08-21 Pegasystems Inc. Proactive performance management for multi-user enterprise software systems
US7917893B2 (en) * 2007-03-07 2011-03-29 Microsoft Corporation Using a system of annotations to generate views and adapters
US8010970B2 (en) * 2007-04-10 2011-08-30 Microsoft Corporation Developing controls for outlook add-ins
CN101316296B (zh) * 2007-05-29 2012-09-05 中兴通讯股份有限公司 管理多种电子工单生成的方法及系统
US20090043592A1 (en) * 2007-08-06 2009-02-12 Sap Ag Method and system for managing product development processes
US20090049025A1 (en) * 2007-08-16 2009-02-19 Oracle International Corporation System and method for harvesting service metadata from an architecture diagram into a metadata repository
US20090083697A1 (en) * 2007-09-21 2009-03-26 Honeywell International Inc. Integration of User Interface Design and Model Driven Development
US8458648B2 (en) * 2007-12-10 2013-06-04 International Business Machines Corporation Graphical modelization of user interfaces for data intensive applications
US9817540B2 (en) * 2007-12-31 2017-11-14 Intel Corporation Device, system, and method of composing logical computing platforms
US10304095B2 (en) * 2008-02-04 2019-05-28 Thomson Reuters Global Resources Unlimited Company System and method for accounting gateway
US20090319923A1 (en) * 2008-06-20 2009-12-24 International Business Machines Corporation Method for generating role-based user interfaces utilizing uml models
US20100070891A1 (en) * 2008-09-18 2010-03-18 Creekbaum William J System and method for configuring an application via a visual map interface
US9396455B2 (en) 2008-11-10 2016-07-19 Mindjet Llc System, method, and software application for enabling a user to view and interact with a visual map in an external application
EP2359363A1 (en) * 2008-12-19 2011-08-24 International Business Machines Corporation Method and system for generating vocal user interface code from a data meta-model
US8843435B1 (en) 2009-03-12 2014-09-23 Pegasystems Inc. Techniques for dynamic data processing
US8468492B1 (en) 2009-03-30 2013-06-18 Pegasystems, Inc. System and method for creation and modification of software applications
US8190499B1 (en) 2009-08-21 2012-05-29 Intuit Inc. Methods systems and articles of manufacture for collecting data for future electronic tax return
US8428984B2 (en) * 2009-08-31 2013-04-23 Sap Ag Transforming service oriented architecture models to service oriented infrastructure models
CA2679786A1 (en) * 2009-09-16 2009-12-16 Ibm Canada Limited - Ibm Canada Limitee Conceptual representation of business processes for cross-domain mapping
KR101277274B1 (ko) * 2009-11-27 2013-06-20 한국전자통신연구원 자원 간의 물리적/논리적 관계를 맵핑하는 방법 및 장치
US20110185294A1 (en) * 2010-01-22 2011-07-28 Microsoft Corporation Pattern-based user interfaces
US9513882B2 (en) * 2010-04-15 2016-12-06 Microsoft Technology Licensing, Llc Platform independent presentation composition
US8583517B1 (en) 2010-04-30 2013-11-12 Intuit Inc. Systems and methods for generating and sending electronic messages related to a tax return
DK177307B1 (en) * 2010-12-17 2012-11-12 Aquaporin As A liquid membrane
CN102004645B (zh) * 2010-12-17 2014-06-25 无锡永中软件有限公司 一种实现电子表格单变量求解的方法
US8560827B1 (en) * 2010-12-28 2013-10-15 Emc International Company Automatically determining configuration parameters for a system based on business objectives
RU2479867C2 (ru) * 2010-12-29 2013-04-20 Олег Владимирович Горохов Способ работы пользовательского лингвистического интерфейса
US9141403B2 (en) * 2011-02-15 2015-09-22 Microsoft Technology Licensing, Llc Data-driven schema for describing and executing management tasks in a graphical user interface
US8880487B1 (en) 2011-02-18 2014-11-04 Pegasystems Inc. Systems and methods for distributed rules processing
US20120284631A1 (en) * 2011-05-02 2012-11-08 German Lancioni Methods to adapt user interfaces and input controls
US20120284735A1 (en) * 2011-05-06 2012-11-08 Microsoft Corporation Interaction-Based Interface to a Logical Client
US20130067365A1 (en) * 2011-09-13 2013-03-14 Microsoft Corporation Role based user interface for limited display devices
US9720583B2 (en) 2011-09-22 2017-08-01 Microsoft Technology Licensing, Llc User interface for editing a value in place
US9195936B1 (en) 2011-12-30 2015-11-24 Pegasystems Inc. System and method for updating or modifying an application without manual coding
US20130290851A1 (en) * 2012-04-30 2013-10-31 Microsoft Corporation User interface web services
CN103473622B (zh) * 2012-06-07 2021-11-02 Sap欧洲公司 基于业务方案的范围界定
US10268662B2 (en) 2012-09-10 2019-04-23 The Boeing Company Panoptic visualization of a document according to the structure thereof
US9858624B2 (en) * 2012-10-04 2018-01-02 Qvinci Software, Llc Methods and apparatus for providing data normalization, scalability and maintainability
GB201300465D0 (en) 2013-01-11 2013-02-27 Aquaporin As A hollow fiber module having tfc-aquaporin modified membranes
DK177696B1 (en) 2013-02-25 2014-03-17 Aquaporin As Systems for water extraction
CN103713901B (zh) * 2013-12-24 2018-01-12 金蝶软件(中国)有限公司 单据的展示方法和系统
CN103809976A (zh) * 2014-02-19 2014-05-21 浪潮软件股份有限公司 工作流关联多终端类型表单的方法
US10469396B2 (en) 2014-10-10 2019-11-05 Pegasystems, Inc. Event processing with enhanced throughput
CN104391725B (zh) * 2014-12-08 2017-11-14 畅捷通信息技术股份有限公司 页面展示方法和页面展示装置
US10572129B2 (en) * 2014-12-24 2020-02-25 Sap Portals Isreal Ltd Declarative user interface representation conversion via hierarchical templates
RU2015116133A (ru) * 2015-04-29 2016-11-20 Общество с ограниченной ответственностью "1С" Способ автоматизированного генерирования интерфейса приложения
RU2613026C1 (ru) * 2015-09-30 2017-03-14 Общество с ограниченной ответственностью "Интерсофт" Способ подготовки документов на языках разметки при реализации пользовательского интерфейса для работы с данными информационной системы
US10657323B2 (en) 2015-09-30 2020-05-19 Obschestvo S Ogranichennoy Otvetstvennostyu “Intersoft” Method of preparing documents in markup languages
US10203939B2 (en) * 2015-10-30 2019-02-12 Sap Se Method and system for parameter model framework
CN105739984B (zh) * 2016-01-29 2019-08-06 中国人民解放军63811部队 一种基于Qt的高可维护性数据显示系统
WO2017137361A1 (en) 2016-02-08 2017-08-17 Aquaporin A/S Self-assembled nanostructures and separation membranes comprising aquaporin water channels and methods of making and using them
US10521721B2 (en) * 2016-04-08 2019-12-31 International Business Machines Corporation Generating a solution for an optimization problem
US10698599B2 (en) 2016-06-03 2020-06-30 Pegasystems, Inc. Connecting graphical shapes using gestures
US10698647B2 (en) 2016-07-11 2020-06-30 Pegasystems Inc. Selective sharing for collaborative application usage
US11625662B2 (en) 2016-09-22 2023-04-11 Qvinci Software, Llc Methods and apparatus for the manipulating and providing of anonymized data collected from a plurality of sources
US10372443B2 (en) 2016-10-18 2019-08-06 Oracle International Corporation Multi-platform pattern-based user interfaces
EP3462309A1 (en) * 2017-09-28 2019-04-03 Siemens Aktiengesellschaft Method for generating user interfaces from a manufacturing application model
US20200004798A1 (en) * 2018-06-27 2020-01-02 Q2 Software, Inc. Method and system for automating web processes utilizing an abstractable underlying platform layer
US11048488B2 (en) 2018-08-14 2021-06-29 Pegasystems, Inc. Software code optimizer and method
US11055073B2 (en) 2019-04-08 2021-07-06 Citrix Systems, Inc. Transforming validated user interface layouts using inter-platform design mapping data
CN110633459B (zh) * 2019-07-23 2023-10-10 石化盈科信息技术有限责任公司 数据报表的自动生成方法及系统、计算机可读存储介质
CN113050930A (zh) * 2019-12-27 2021-06-29 北京华为数字技术有限公司 用户图形界面修改方法以及相关设备
US11567945B1 (en) 2020-08-27 2023-01-31 Pegasystems Inc. Customized digital content generation systems and methods
CN112163049B (zh) * 2020-09-29 2024-04-09 北京中电普华信息技术有限公司 将业务对象映射为数据实体的方法及装置
CN113204329B (zh) * 2021-03-19 2024-06-14 浙江华云信息科技有限公司 统一数据模型驱动业务应用的控制方法及其应用系统
CN114064716B (zh) * 2021-10-29 2023-10-20 北京市农林科学院信息技术研究中心 基于元数据的web报表自动生成方法及装置

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5649190A (en) * 1994-06-14 1997-07-15 Harris Corporation Multi-model database system for dynamic creation and maintenance of complex objects in a real time environment
US6076051A (en) 1997-03-07 2000-06-13 Microsoft Corporation Information retrieval utilizing semantic representation of text
US5999948A (en) * 1997-09-03 1999-12-07 3Com Corporation Dynamic configuration forms in network management software
US6012098A (en) 1998-02-23 2000-01-04 International Business Machines Corp. Servlet pairing for isolation of the retrieval and rendering of data
CN1423786A (zh) 1999-03-02 2003-06-11 奎克斯塔投资公司 包含一种会员购买机会的行销系统内的电子商务交易
US6636242B2 (en) 1999-08-31 2003-10-21 Accenture Llp View configurer in a presentation services patterns environment
US6704743B1 (en) 1999-09-13 2004-03-09 Copernus, Inc. Selective inheritance of object parameters in object-oriented computer environment
AU2001281285A1 (en) 2000-06-23 2002-01-08 Sportvision, Inc. Locating an object using gps with additional data
US20020083068A1 (en) 2000-10-30 2002-06-27 Quass Dallan W. Method and apparatus for filling out electronic forms
WO2002037261A2 (en) * 2000-11-03 2002-05-10 Wilde Technologies Limited A software development process
AU2002239620A1 (en) 2000-11-06 2002-05-27 Terry Bernard Young Electronic markets business interchange system and metheo
US20020152118A1 (en) * 2000-11-06 2002-10-17 Hadjigeorgis George K. System of a computer-networked, point-of-sale rebate award program
US20020105548A1 (en) * 2000-12-12 2002-08-08 Richard Hayton Methods and apparatus for creating a user interface using property paths
CA2329559A1 (en) * 2000-12-22 2002-06-22 Ibm Canada Limited-Ibm Canada Limitee Method and apparatus for generating serialization code for representing a model in different type systems
US7194683B2 (en) 2001-03-02 2007-03-20 International Business Machines Corporation Representing and managing dynamic data content for web documents
US20020163538A1 (en) * 2001-05-07 2002-11-07 Koninklijke Philips Electronics N.V. Electronic mail guide
US7246326B2 (en) * 2001-06-25 2007-07-17 Siemens Medical Solutions Health Services Corporation System and procedure for providing a user interface display
US20030025732A1 (en) * 2001-07-31 2003-02-06 Prichard Scot D. Method and apparatus for providing customizable graphical user interface and screen layout
US7895522B2 (en) * 2001-09-28 2011-02-22 Ntt Docomo, Inc. Layout of platform specific graphical user interface widgets migrated between heterogeneous device platforms
US20030221165A1 (en) 2002-05-22 2003-11-27 Microsoft Corporation System and method for metadata-driven user interface
US20050005259A1 (en) * 2003-03-14 2005-01-06 Infowave Software, Inc. System and method for communication and mapping of business objects between mobile client devices and a plurality of backend systems
US7698176B2 (en) 2003-07-28 2010-04-13 At&T Intellectual Property I, L.P. Method, system, and computer-readable medium for updating inventory data in an inventory management system
US7933762B2 (en) 2004-04-16 2011-04-26 Fortelligent, Inc. Predictive model generation
US7424485B2 (en) 2004-06-03 2008-09-09 Microsoft Corporation Method and apparatus for generating user interfaces based upon automation with full flexibility

Also Published As

Publication number Publication date
MXPA05004862A (es) 2005-12-07
EP1603034B1 (en) 2018-07-25
CN1704900B (zh) 2012-09-05
ES2692120T3 (es) 2018-11-30
RU2390822C2 (ru) 2010-05-27
JP5099982B2 (ja) 2012-12-19
AU2005201433A1 (en) 2005-12-22
CA2504082A1 (en) 2005-12-03
CN1704900A (zh) 2005-12-07
RU2005116964A (ru) 2006-11-20
US20060004845A1 (en) 2006-01-05
AU2005201433B2 (en) 2010-04-08
EP1603034A3 (en) 2007-12-26
BRPI0501581A (pt) 2006-01-24
JP2005346719A (ja) 2005-12-15
KR101120815B1 (ko) 2012-03-23
EP1603034A2 (en) 2005-12-07
US7424485B2 (en) 2008-09-09
CA2504082C (en) 2012-02-07

Similar Documents

Publication Publication Date Title
KR101120815B1 (ko) 완전한 유연성을 가진 자동화에 기초하여 사용자인터페이스를 생성하는 방법 및 장치
AU2019291942B2 (en) Custom interactions with visualizations
JP4812337B2 (ja) フォームタイプを使用してフォームを生成する方法および装置
US10222951B2 (en) Modeling system for graphic user interface
AU2019291940B2 (en) Visualization customization
AU2019295794B2 (en) Autolayout of visualizations based on contract maps
US7363578B2 (en) Method and apparatus for mapping a data model to a user interface model
US9342272B2 (en) Custom and customizable components, such as for workflow applications
US8719773B2 (en) Workflow data binding
EP3931716A1 (en) Autolayout of visualizations based on graph data

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: 20150121

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160119

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20170119

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20180118

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20190116

Year of fee payment: 8