KR101331260B1 - 메타데이터를 이용하여 사용자 인터페이스를 렌더링하기위한 장치, 사용자 인터페이스를 생성하는 방법, 및 컴퓨터판독 가능 매체 - Google Patents

메타데이터를 이용하여 사용자 인터페이스를 렌더링하기위한 장치, 사용자 인터페이스를 생성하는 방법, 및 컴퓨터판독 가능 매체 Download PDF

Info

Publication number
KR101331260B1
KR101331260B1 KR1020087010883A KR20087010883A KR101331260B1 KR 101331260 B1 KR101331260 B1 KR 101331260B1 KR 1020087010883 A KR1020087010883 A KR 1020087010883A KR 20087010883 A KR20087010883 A KR 20087010883A KR 101331260 B1 KR101331260 B1 KR 101331260B1
Authority
KR
South Korea
Prior art keywords
metadata
controls
user interface
computer
control
Prior art date
Application number
KR1020087010883A
Other languages
English (en)
Other versions
KR20080071133A (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 KR20080071133A publication Critical patent/KR20080071133A/ko
Application granted granted Critical
Publication of KR101331260B1 publication Critical patent/KR101331260B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • G06F9/449Object-oriented method invocation or resolution

Landscapes

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

Abstract

애플리케이션을 위한 사용자 지정 UI 부분들을 생성하기 위해 메타데이터가 이용된다. 메타데이터는 XML 기반일 수 있을 것이고 해석된 후 데이터와 UI 컨트롤들 사이의 데이터 바인딩을 지원하는 사용자 지정 UI를 구현하기 위해 렌더링된다. 생성되면, UI 컨트롤들을 디스플레이하기 위해 메타데이터가 렌더링 엔진에 의해 처리된다. 렌더링 엔진에 보내지기 전에 메타데이터 파일을 해석하기 위해 인터프리터가 이용될 수 있을 것이다. 렌더링 엔진이든 인터프리터든 호스트 애플리케이션에 관해 알 필요가 없고 임의의 메타데이터 구동 UI를 위한 지원이 가능하게 한다. 메타데이터 스키마는 UI를 위한 사용자 지정 컨트롤들을 생성하고 코드 비하인드 어셈블리에 대한 액세스를 제공함으로써 UI 컨트롤들을 프로그램적으로 변경할 뿐만 아니라 UI 컨트롤들을 위한 이벤트 처리를 지원하기 위한 메커니즘들을 포함할 수 있을 것이다.
애플리케이션, 사용자, 인터페이스, 메타데이터, 렌더링, 액세스, 이벤트, 컨트롤

Description

메타데이터를 이용하여 사용자 인터페이스를 렌더링하기 위한 장치, 사용자 인터페이스를 생성하는 방법, 및 컴퓨터 판독 가능 매체{METADATA DRIVEN USER INTERFACE}
일부의 애플리케이션 개발자들은 자신들의 애플리케이션들을 워드 프로세싱 애플리케이션, 전자메일 애플리케이션 등과 같은 특정한 광범위하게 이용되는 기존의 애플리케이션들과 상호운용하도록 사용자 지정하고자 한다. 일부의 경우에, 애플리케이션 개발자는 애플리케이션을 위해 사용자 지정되지만 애플리케이션이 변화함에 따라 용이하게 변경 또는 확장될 수 있는 사용자 인터페이스를 제공하고자 할 것이다. 오늘날, 애플리케이션 개발자는 이 기능을 애플리케이션에 과도하게 코드화해 넣음으로써 변경 및 업데이트가 번거롭게 한다.
이 개요는 아래의 상세한 설명에서 더 기술되는 개념들의 선택을 간단히 소개하기 위해 제공된다. 이 개요는 청구대상의 주요 특징 또는 본질적인 특징을 식별하려는 것도 아니고, 청구대상의 범위를 판정함에 있어서의 보조로서 이용되려는 것도 아니다.
메타데이터는 어떤 애플리케이션을 위해 사용자 지정된 UI(user interface) 부분들을 생성하기 위해 정해진다. 메타데이터는 애플리케이션 데이터를 UI의 컨트롤에 대해 데이터 바인딩하기 위한 메커니즘을 정하는 메타데이터 스키마에 따라 생성된다. 메타데이터는 XML 기반일 수 있을 것이고, 데이터와 UI 컨트롤들 사이의 데이터 바인딩을 지원하기도 하는 사용자 지정된 UI를 구현하기 위해 해석되어 렌더링된다. 예를 들어, 애플리케이션 개발자는 기본값뿐만 아니라 사용자 지정 UI 컨트롤, 컨트롤들의 속성, 컨트롤들의 레이아웃 들을 정하는 메타데이터 파일을 쓸 수 있다. 생성되면, 메타데이터가 렌더링 엔진에 의해 처리되어 UI 컨트롤들을 디스플레이한다. 메타데이터 파일을 렌더링 엔진에 보내기 전에 해석하기 위해 인터프리터가 이용될 수 있을 것이다. 렌더링 엔진이든 인터프리터든 호스트 애플리케이션에 관해 알 필요가 없고 임의의 메타데이터 구동되는 UI를 위한 지원이 가능하게 한다. 메타데이터 스키마는 UI를 위한 사용자 지정 컨트롤들을 생성하기 위한, 즉 코드 비하인드 어셈블리(code-behind assembly)에 대한 액세스를 제공함으로써 UI 컨트롤들을 프로그램적으로 변경할 뿐만 아니라 UI 컨트롤들을 위한 이벤트 처리를 지원하기 위한 메커니즘들을 포함할 수 있다.
도 1은 예시적 컴퓨팅 환경을 도시한다.
도 2는 사용자 인터페이스 메타데이터 시스템을 도시한다.
도 3A 및 3B는 메타데이터 파일에 의해 기술되는 예시적 UI 양식을 도시한다.
도 4는 메타데이터를 이용하여 UI 양식을 기술하기 위한 프로세스를 도시한다.
도 5는 대응 메타데이터에 의해 UI 양식을 렌더링하기 위한 프로세스를 도시한다.
이제, 유사한 숫자들은 유사한 요소들을 나타내는 도면을 참조하여, 다양한 실시예들이 기술될 것이고, 특히, 도 1 및 대응하는 설명은 실시예들이 구현될 수 있는 적합한 컴퓨팅 환경의 간단하고 일반적인 기술을 제공하려는 것이다.
일반적으로, 프로그램 모듈들은 특정한 작업들을 수행하거나 또는 특정한 추상 데이터 유형들을 구현하는 루틴, 프로그램, 구성요소, 데이터 구조, 및 기타 유형의 구조들을 포함한다. 핸드헬드 장치, 멀티프로세서 시스템, 마이크로프로세서 기반 또는 프로그래머블 가전기기, 미니컴퓨터, 메인프레임 컴퓨터 등을 포함하는 기타의 컴퓨터 시스템 구성들도 이용될 수 있을 것이다. 통신 네트워크를 통해 연결된 원격 처리 장치에 의해 작업이 수행되는 분산 컴퓨팅 환경들이 이용될 수도 있을 것이다. 분산 컴퓨팅 환경에서, 프로그램 모듈들은 로컬 및 원격 메모리 저장 장치 모두에 배치될 수 있을 것이다.
도 1은 여기에 기술된 기술들을 구현하기 위해 이용될 수 있는 예시적 컴퓨터 환경(100)을 도시한다. 컴퓨터 환경(100)은 컴퓨팅 환경의 단지 한 예일 뿐이며, 컴퓨터 및 네트워크 아키텍처들의 이용 또는 기능의 범위에 대한 어떤 제한을 제안하려는 것이 아니다. 컴퓨터 환경(100)은 예시적 컴퓨터 환경(100)에 도시된 구성요소들 중 어느 하나 또는 결합에 관해 어떤 종속성 또는 요구조건을 갖는 것으로 해석되지 않아야 한다.
컴퓨터 환경(100)은 컴퓨터(102) 형태의 범용 컴퓨팅 장치를 포함한다. 컴퓨터(102)의 구성요소들은 하나 이상의 프로세서 또는 처리 장치(104), 시스템 메모리(106), 및 프로세서(104)를 포함하는 다양한 시스템 구성요소들을 시스템 메모리(106)에 연결하는 시스템 버스(108)를 포함할 수 있을 것이지만, 제한적인 것은 아니다.
시스템 버스(108)는 다양한 버스 아키텍처들 중 어떤 것이든 이용하는 메모리 버스 또는 메모리 컨트롤러, 주변장치 버스, AGP(accelerated graphics port) 및 프로세서 또는 로컬 버스를 포함하는 몇몇 유형의 버스 구조들 중 하나 이상의 어떤 것이든 나타낸다. 예를 들어, 그러한 아키텍처들은 ISA(Industry Standard Architecture) 버스, MCA(Micro Channel Architecture) 버스, EISA(Enhanced ISA) 버스, VESA(Video Electronics Standards Association) 로컬 버스, 메자닌(Mezzanine) 버스라고도 알려진 PCI(Peripheral Component Interconnects) 버스, PCI 익스프레스 버스, USB(Universal Serial Bus), SD(Secure Digital) 버스, 또는 IEEE 1394, 즉, 파이어와이어(FireWire) 버스를 포함할 수 있다.
컴퓨터(102)는 다양한 컴퓨터 판독 가능 매체를 포함할 수 있을 것이다. 그러한 매체는 컴퓨터(302)에 의해 액세스 가능한 어떤 이용 가능한 매체든 될 수 있으며, 휘발성 및 비휘발성 매체, 이동식 및 비이동식 매체를 포함한다.
시스템 메모리(106)는 RAM(random access memory)(110) 등과 같은 휘발성 메모리, 및/또는 ROM(read only memory)(112) 또는 플래시 RAM 등과 같은 비휘발성 메모리 형태의 컴퓨터 판독 가능 매체를 포함한다. 시동 등과 같은 때에 컴퓨 터(102) 내의 요소들 사이의 정보 전송을 돕는 기본 루틴들을 포함하는 BIOS(basic input/output system)(114)가 ROM(112) 또는 플래시 RAM에 저장된다. RAM(110)은 통상적으로 처리 장치(304)에 의해 즉시 액세스 가능하거나 및/또는 현재 동작하고 있는 데이터 및/또는 프로그램 모듈들을 수용한다.
컴퓨터(102)는 또한 기타의 이동식/비이동식, 휘발성/비휘발성 컴퓨터 저장 매체를 포함할 수도 있을 것이다. 예를 들어, 도 1은 비이동식, 비휘발성 자기 매체(도시 안됨)로부터 읽고 쓰는 하드 디스크 드라이브(116), 이동식, 비휘발성 자기 디스크(120)(예를 들어, "플로피 디스크")로부터 읽고 쓰는 자기 디스크 드라이브(118), CD-ROM, DVD-ROM, 또는 기타의 광 매체 등과 같은 이동식, 비휘발성 광 디스크(124)로부터 읽고 쓰는 광 디스크 드라이브(122)를 도시한다. 하드 디스크 드라이브(116), 자기 디스크 드라이브(118) 및 광 디스크 드라이브(122)는 하나 이상의 데이터 매체 인터페이스(125)에 의해 시스템 버스(108)에 각각 접속된다. 대안적으로, 하드 디스크 드라이브(116), 자기 디스크 드라이브(118) 및 광 디스크 드라이브(122)는 하나 이상의 인터페이스(도시 안됨)에 의해 시스템 버스(108)에 접속될 수 있다.
디스크 드라이브 및 그들과 관련된 컴퓨터 판독 가능 매체는 컴퓨터(102)를 위한 컴퓨터 판독 가능 명령어, 데이터 구조, 프로그램 모듈 및 기타 데이터의 비휘발성 저장이 가능하게 한다. 예시가 하드 디스크(116), 이동식 자기 디스크(120) 및 이동식 광 디스크(124)를 도시할지라도, 자기 카세트 또는 기타의 자기 저장 장치, 플래시 메모리 카드, CD-ROM, DVD(digital versatile disks) 또는 기타 의 광 저장장치, RAM, ROM, EEPROM(electrically erasable programmable read-only memory) 등과 같이 컴퓨터에 의해 액세스 가능한 데이터를 저장할 수 있는 기타 유형의 컴퓨터 판독 가능 매체도 예시적 컴퓨팅 시스템 및 환경을 구현하기 위해 이용될 수 있음을 알아야 한다.
예를 들어, 운영 체제(126)(일부의 실시예에서는 앞서 기술된 높고 낮은 우선권을 갖는 I/O 파일 시스템 및 인덱싱 시스템들을 포함), 하나 이상의 애플리케이션 프로그램(128), 인터프리터(130) 및 렌더링 엔진(132)을 포함하는 어떤 수의 프로그램 모듈들이든 하드 디스크(116), 자기 디스크(120), 광 디스크(124), ROM(112) 및/또는 RAM(110) 상에 저장될 수 있다. 그러한 운영 체제(126), 하나 이상의 애플리케이션 프로그램(128), 메타데이터 인터프리터(130), UI 렌더링 엔진(132) 및 메타데이터(133)의 각각(또는 그 중의 일부의 결합)이 상주하는 구성요소들의 전부 또는 일부를 구현할 수 있을 것이다. 메타데이터 리포지토리(133)는 애플리케이션 프로그램(128)들과 관련이 있는 UI 상의 UI 요소들의 사용자 지정을 가능하게 하는 정보를 포함한다. 예를 들어, 메타데이터는 모니터(142) 상에 디스플레이되는 UI(164)를 위한 UI 양식들의 사용자 지정을 가능하게 하는 정보를 포함할 수 있다. 메타데이터 리포지토리(133)는 다양하게 연결된 컴퓨팅 장치들의 다수의 애플리케이션들을 위한 정보를 포함할 수 있을 것이다.
사용자는 키보드(134) 및 포인팅 장치(136)(예를 들어, "마우스") 등과 같은 입력 장치들에 의해 명령 및 정보를 컴퓨터(102)에 입력할 수 있다. 기타의 입력 장치(138)(자세하게 도시 안됨)는 마이크, 조이스틱, 게임 패드, 위성 안테나, 직 렬 포트, 스캐너 등을 포함할 수 있을 것이다. 이러한 및 기타의 입력 장치들은 시스템 버스(108)에 연결된 입력/출력 인터페이스(140)들에 의해 처리 장치(104)에 접속될 수 있지만, 병렬 포트, 게임 포트, 또는 USB 등과 같은 기타의 인터페이스 및 버스 구조들에 의해 접속될 수도 있을 것이다.
모니터(142) 또는 기타 유형의 디스플레이 장치가 비디오 어댑터(144) 등과 같은 인터페이스에 의해 시스템 버스(108)에 접속될 수도 있을 것이다. 모니터(142) 외에, 기타의 출력 주변 장치들은 I/O 인터페이스(140)들에 의해 컴퓨터(102)에 접속될 수 있는 스피커(도시 안됨) 및 프린터(146) 등과 같은 구성요소들을 포함할 수 있다.
컴퓨터(102)는 원격 컴퓨팅 장치(148) 등과 같은 하나 이상의 원격 컴퓨터에 대한 논리 접속을 이용하여 네트워크 환경에서 동작할 수 있다. 예를 들어, 원격 컴퓨팅 장치(148)는 PC, 포터블 컴퓨터, 서버, 라우터, 네트워크 컴퓨터, 피어 장치 또는 기타의 보편적인 네트워크 노드 등일 수 있다. 원격 컴퓨팅 장치(148)는 컴퓨터(102)와 관련하여 여기에 기술된 요소 및 기능들의 다수 또는 전부를 포함할 수 있는 포터블 컴퓨터로서 도시된다.
컴퓨터(102)와 원격 컴퓨터(348) 사이의 논리 접속은 LAN(local area network)(150) 및 일반적인 WAN(wide area network)(152)으로서 도시되어 있다. 그러한 네트워킹 환경은 사무실, 전사적 컴퓨터 네트워크, 인트라넷 및 인터넷에서 보편적인 것이다.
LAN 네트워킹 환경에서 구현될 때, 컴퓨터(102)는 네트워크 인터페이스 또는 어댑터(154)에 의해 로컬 네트워크(150)에 접속된다. WAN 네트워킹 환경에서 구현될 때, 컴퓨터(102)는 통상적으로 광역 네트워크(152)를 통한 통신을 설정하기 위한 모뎀(156) 또는 기타의 수단을 포함한다. 컴퓨터(102)에 대해 내장 또는 외장일 수 있는 모뎀(156)이 I/O 인터페이스(140) 또는 기타의 적절한 메커니즘들에 의해 시스템 버스(108)에 접속될 수 있다. 도시된 네트워크 접속은 예시이고, 컴퓨터(102 및 148)들 사이에 적어도 하나의 통신 연결을 설정하기 위한 기타의 수단이 채택될 수 있다.
컴퓨팅 환경(100)에 도시된 바와 같은 네트워크 환경에서, 컴퓨터(102)와 관련하여 도시된 프로그램 모듈, 또는 그 일부가 원격 메모리 저장 장치에 저장될 수 있다. 예를 들어, 원격 애플리케이션 프로그램(158)들은 원격 컴퓨터(148)의 메모리 장치에 상주한다. 예시를 위해, 애플리케이션 또는 프로그램 및 운영 체제 등과 같은 기타의 실행 가능한 프로그램 구성요소들이 여기에서는 별개의 블록들로 도시되지만, 그러한 프로그램 및 구성요소들이 다양한 시각에 컴퓨팅 장치(102)의 상이한 저장장치 구성요소들에 상주하고 컴퓨터의 적어도 하나의 데이터 프로세서에 의해 실행됨을 알고 있다.
다양한 모듈 및 기술들은 여기에서 하나 이상의 컴퓨터 또는 기타의 장치들에 의해 실행되는 프로그램 모듈 등과 같은 컴퓨터 실행 가능한 명령어의 일반적 콘텍스트로 기술될 수 있을 것이다. 일반적으로, 프로그램 모듈들은 특정한 작업들을 수행하기 위한 루틴, 프로그램, 개체, 구성요소, 데이터 구조 등을 포함하거나 또는 특정한 추상 데이터 유형들을 구현한다. 통상적으로, 프로그램 모듈들의 기능은 다양한 실시예에서 원하는 대로 결합 또는 분산될 수 있을 것이다.
이러한 모듈 및 기술들의 구현은 일부의 형태의 컴퓨터 판독 가능 매체에 저장되거나 또는 그것을 통해 전송될 수 있을 것이다. 컴퓨터 판독 가능 매체는 컴퓨터에 의해 액세스될 수 있는 어떤 이용 가능한 매체든 될 수 있다. 예를 들어, 컴퓨터 판독 가능 매체는 "컴퓨터 저장 매체" 및 "통신 매체"를 포함할 수 있을 것이지만, 제한적인 것은 아니다.
"컴퓨터 저장 매체"는 컴퓨터 판독 가능 명령어, 데이터 구조, 프로그램 모듈, 또는 기타의 데이터 등과 같은 정보 저장을 위한 어떤 방법 또는 기술로든 구현되는 휘발성 및 비휘발성, 이동식 및 비이동식 매체를 포함한다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 기타의 메모리 기술, CD-ROM, DVD 또는 기타의 광 저장장치, 자기 카세트, 자기 테이프, 자기 디스크 저장장치 또는 기타의 자기 저장 장치, 또는 원하는 정보를 저장하기 위해 이용될 수 있고 컴퓨터에 의해 액세스될 수 있는 기타의 어떤 매체든 포함하지만 제한적인 것은 아니다.
"통신 매체"는 통상적으로 컴퓨터 판독 가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타의 데이터를 반송파 또는 기타의 전송 메커니즘 등과 같은 변조된 데이터 신호로 구현한다. 통신 매체는 또한 어떤 정보 전달 매체든 포함한다. "변조된 데이터 신호"라는 용어는 신호의 하나 이상의 특성들이 신호에 있는 정보를 인코딩하는 방식으로 설정 또는 변경된 신호를 의미한다. 제한적인 것이 아니라, 단지 예시적으로, 통신 매체는 유선 네트워크 또는 직접 유선 접속 등과 같은 유선 매체, 및 음향, RF, 적외선 및 기타의 무선 매체 등과 같은 무선 매체를 포함한다. 위 어떤 것들의 결합이든 컴퓨터 판독 가능 매체의 범위 내에 포함된다.
도 2는 사용자 인터페이스 메타데이터 시스템을 도시한다. 도시된 바와 같이, 시스템(200)은 사용자 인터페이스(240) 및 백 엔드 데이터 소스(250)를 렌더링하는 메타데이터(210), 인터프리터(220), 코드 비하인드 어셈블리(225), 렌더링 엔진(230)을 포함한다. 초기에, 개발자, 또는 일부의 기타 사용자는 정해진 UI 양식을 위한 메타데이터(210)를 정의한다. 일반적으로, 메타데이터가 생성 및 정의되었으면, 인터프리터(220)는 메타데이터에 액세스하고 UI(240)가 사용자에게 디스플레이될 수 있도록 UI 정보를 렌더링 엔진(230)에 전달한다. 인터프리터(220)가 렌더링 엔진(230)과 별도로 도시되어 있을지라도, 인터프리터(220) 및 렌더링 엔진(230)을 둘러싸는 점선 박스로 도시된 바와 같이, 그 기능은 렌더링 엔진(230) 내에 포함될 수 있을 것이다.
메타데이터(210)는 개발자가 사용자 인터페이스(240) 상에 포함된 각각의 컨트롤(241-243)을 위해 한 세트의 이벤트(215)들을 정의하게 한다. 메타데이터(210)는 UI 양식 개발자가 UI에 추가될 컨트롤들을 정의하고, 이러한 추가된 컨트롤들에 대한 사용자 지정 이벤트들을 정하며(또는 기존의 컨트롤들에 이벤트들을 추가하며), 이러한 새로운 사용자 지정 이벤트들을 위해 코드 비하인드 어셈블리(225)에서의 코드에 의해 이벤트 처리기들을 정하게(또는 기본 상태를 무효화(overriding)함으로써 기존의 사용자 지정 처리기들을 변경하게) 한다. 개발자가 컨트롤들의 속성들을 읽고 코드 비하인드 어셈블리(225)에서 이벤트-처리기들이 정해지게 하는 형태로 컨트롤들의 속성들을 변경하게 하는 OM(Object Model)이 노 출된다. 코드 비하인드 어셈블리(225)의 이름 및 위치는 메타데이터(210)의 일부로서 캡처된다.
한 실시예에 따르면, 이벤트들은 WINFORMS 환경에서의 동일한 유형의 컨트롤을 위해 지원되는 통상적 이벤트들을 미러링한다. 컨트롤에 의해 초기에 지원될 수 있을 것인 표준 이벤트들에 더하여, 또다른 컨트롤 및 사용자 지정 이벤트들이 메타데이터(210)를 통해 추가될 수 있을 것이다.
도시된 바와 같이, 렌더링 엔진(230)은 인터프리터(220)를 통해 UI를 정하는 메타데이터를 수신하고 UI 양식(240)을 렌더링한다. 한 실시예에 따르면, 렌더링 엔진(230)은 IBF 작업 틀(task pane) 또는 MICROSOFT OUTLOOK 사용자 지정 양식으로 UI 양식을 렌더링한다. 이 실시예에 따르면, 렌더링 엔진(230)은 메타데이터(210)에 의해 정해진 UI에 대응하는 .NET 컨트롤 개체를 생성하며, 그 .NET 컨트롤은 IBF 작업 틀 또는 OUTLOOK 사용자 지정 양식으로 호스트된다. 이 실시예에서는, 렌더링 엔진(230)이 인터프리터(220)에 의해 공급되는 메타데이터를 구문분석하고 메타데이터(210)에 의해 기술되는 상이한 컨트롤(즉 241-243)들을 인스턴스화하며, UI 양식을 기술하는 .NET 컨트롤을 출력한다.
한 실시예에 따르면, 렌더링 엔진(230)은 메타데이터(210)를 이용하여 UI 양식을 디자인하면서 UI 양식 개발자가 이용할 수 있는 10개의 기본적 컨트롤들을 제공한다. 이러한 10개의 기본적 컨트롤들은 패널(Panel), 라벨(Label), 링크라벨(LinkLabel), 텍스트박스(TextBox), 버튼(Button), 목록박스(ListBox), 콤보박스(ComboBox), 라디오버튼(RadioButton), 체크박스(CheckBox) 및 이미지(Image) 컨 트롤을 포함한다. 앞서 설명했듯이, 사용자 지정 컨트롤 및 이벤트들이 생성될 수도 있을 것이다. 기타의 기본적 컨트롤들이 제공될 수도 있을 것이다.
각각의 컨트롤은 컨트롤(즉, 원시 WINFORM(.NET) 컨트롤)을 래핑(wrap)하는 래퍼 클래스(wrapper class)를 포함한다. 래퍼는 프로그램적 OM을 통해 코드 비하인드 어셈블리(225)에 대해 데이터 바인딩하고 컨트롤 속성들을 노출하는 기능을 제공한다. 아래는 TextBox 컨트롤을 위한 예시적 래퍼 클래스이다.
Figure 112008032225231-pct00001
'IXamlTextBox' 인터페이스는 코드 비하인드 파일에 대한 TextBox 특수 속성들을 노출한다. 애플리케이션 개발자는 'IXamlTextBox' 인터페이스를 이용하여 코드 비하인드에서의 UI 상의 TextBox 컨트롤에 액세스하여 컨트롤 속성들을 읽고 쓸수 있다.
'XamlControl'은 렌더링 엔진(230)에 의해 렌더링되는 컨트롤들을 위한 베이스 클래스를 제공한다.
Figure 112008032225231-pct00002
'IXamlControl' 인터페이스는 코드 비하인드 파일에 대한 컨트롤을 노출한 다. 애플리케이션 개발자는 코드 비하인드 어셈블리(225)에서의 이 인터페이스를 통해 컨트롤의 속성들에 액세스할 수 있다. 'IBindable' 인터페이스는 데이터 소스에서의 속성들에 바인딩되는 컨트롤 속성들을 설정하기 위해 'Binder' 구성요소에 의해 이용된다. 'XamlControl' 클래스는 컨트롤을 정하는 의사 XAML 메타데이터(XML)를 수신하고, 원시 .NET WINFORM 컨트롤을 인스턴스화(유형에 따라)하며, 컨트롤을 위해 메타데이터에서 정의되는 컨트롤 속성들을 설정한다.
Figure 112008032225231-pct00003
렌더링 엔진(230)이 UI 양식을 정하는 의사 XAML 메타데이터를 수신할 때, 그것은 입력 XML을 읽고 구문분석하며, 컨트롤을 정하는 메타데이터에서 전달되는 컨트롤들을 위한 래퍼 클래스들을 인스턴스화한다. 한 실시예에 따르면, 구문분석은 깊이 우선 방식(depth first manner)으로 수행된다. 다른 방법들이 이용될 수도 있을 것이다. 래퍼 클래스는 원시 WINFORM(.NET) 컨트롤을 인스턴스화하고 메타데이터에서 정해진 바와 같은 컨트롤 속성들을 설정한다. 각각의 컨트롤을 위한 래퍼 클래스는 메타데이터에 정의된 바와 같은 컨트롤 속성들을 설정한다. 베이스 'XamlControl' 클래스는 모든 컨트롤에 대해 보편적인 속성(예를 들어, Background, Foreground, Anchor, Font 등)들을 설정한다. 'XamlTextBox' 등과 같은 특수한 파생 클래스들은 컨트롤(textbox) 특수 속성들을 처리한다. 특정한 컨트롤 속성이 데이터 소스(250) 등과 같은 데이터 소스에서의 속성에 바인딩되면, 래퍼 클래스가 컨트롤, 속성명 및 바인딩 식을 'Binder'에 전달하며, 그것은 데이터 소스로부터 속성 값을 얻고 'IBindable' 인터페이스를 통해 특수한 컨트롤 속성을 설정한다. 각각의 컨트롤을 위한 래퍼 클래스는 의사 XAML 메타데이터에 의해 노출되는 컨트롤 이벤트(SubscribeToEvents())들에 섭스크라이브(subscribe)하기도 한다. 그 후, 컨트롤 상의 이벤트가 코드 비하인드 어셈블리(225)에 정해진 이벤트 처리기에 대한 이벤트를 향해 렌더링 엔진(230)을 시작(fire)한다. 래퍼 클래스는 또한 컨트롤을 위한 자식 컨트롤들을 인스턴스화하는 'GetChildControls()' 방법을 호출하기도 한다.
양식 상에서 발생하는 컨트롤 이벤트들을 위해 이벤트 처리기(226)들이 개발될 수도 있을 것이다. 컨트롤 상의 특수한 이벤트를 처리하기 위해, 개발자는, 이벤트 처리기 코드를 포함하는 코드 비하인드 어셈블리(225)를 개발하고, 메타데이터에서의 코드 비하인드 어셈블리를 정의하며, 컨트롤을 위한 특정한 이벤트를 처리하는 이벤트 처리기(방법) 이름을 정의하는 것을 포함하는 단계들을 수행한다. 한 실시예에 따르면, 컨트롤 상의 이벤트를 위한 메타데이터에서의 이벤트 처리기를 정의하기 위해 개발자는 코드 비하인드 어셈블리에 존재하는 이벤트 처리기 방법 이름을 컨트롤 상의 이벤트에 대응하는 특성 값으로서 공급한다. 메타데이터(210)는 버튼 컨트롤을 위한 "Click" 이벤트가 코드 비하인드 어셈블리에서 공개적 방법으로서 존재하는 "ButtonClick"이라는 방법에 의해 처리된다는 것을 정의한다. 한 실시예에 따르면, 이벤트 처리기를 위한 서명(signature)은 .NET WINFORMS 환경의 경우에서 그 특정한 컨트롤에 대한 그 이벤트를 위한 것과 동일하다. 예를 들어, 버튼에 대한 클릭 이벤트를 위한 이벤트 처리기는 다음의 서명을 가질 것이다: public void ButtonClick(object sender, System.EventArgs e) { }. 한 실시예에 따르면, 이것은 프로그래머의 이해 및 일치를 위해 제공하는 오리지널 버튼 컨트롤과 동일한 서명이다.
렌더링 엔진(230)은 그것이 인터프리터(220)에 의해 제공된 메타데이터(210)를 구문분석하고 리플렉션(reflection)을 통해 코드 비하인드 클래스를 인스턴스화할 때 코드 비하인드 어셈블리(225)를 로드한다. 컨트롤 상의 메타데이터를 통해 노출하는 이벤트들은 메타데이터의 구문분석 동안에 그 컨트롤이 인스턴스화될 때 섭스크라이브된다. 한 실시예에서, 컨트롤 이벤트들을 위한 이벤트 처리기들은 이벤트를 "Page" 레벨로 버블 업(bubble up)하고 코드 비하인드 어셈블리에서의 이벤트 처리기가 리플렉션을 통해 호출된다. 하나 이상의 "코드 비하인드" 어셈블리가 "페이지" 또는 양식에 결합될 수 있다. 하나 이상의 "코드 비하인드" 어셈블리를 제공하는 것은 다수의 레벨(다수의 관계자)의 확장성을 허용한다.
데이터는 백 엔드 데이터 소스(250)로부터 하나 이상의 컨트롤(예를 들어 컨트롤(241-243))들에 바인딩될 수도 있을 것이다. 한 실시예에 따르면, 데이터 소스(250)를 하나 이상의 컨트롤(예를 들어, 컨트롤(241-243))들에 바인딩하는 바인딩 식들은 메타데이터에 정의된다. 컨트롤의 각각의 속성(즉 컨트롤(241-243))은 데이터 소스로부터 오는 데이터에 바인딩될 수 있다. 그래서, 데이터 소스는 데이터 소스(250)가 변경될 때 컨트롤들과 관련이 있는 컨트롤 속성들을 변경한다. 하나 이상의 데이터 소스가 바인딩될 수 있을 것이다. 예를 들어, 컨트롤 1(241)이 한 데이터 소스에 바인딩되는 동안, 컨트롤 2(242)는 상이한 데이터 소스에 바인딩될 수 있을 것이다. 한 실시예에 따르면, 개체 데이터 소스 및 XML 데이터 소스를 포함하는 두개의 상이한 유형의 데이터 소스들이 있다. 개체 데이터 소스는 UI 상의 컨트롤들을 위한 데이터 소스로서 작용하는 .NET 어셈블리에 상주하는 .NET 클래스이다. XML 데이터 소스는 UI를 정하는 XAML 메타데이터에서 인라인(inline)으로 정의되는 XML 데이터의 소스로서 작용한다.
한 실시예에 따르면, 개체 데이터 소스는 메타데이터에서 다음과 같이 정의될 수 있다: <xaml:ObjectDataSource Name="myDataSource" TypeName="DataSourceNamespace.DataSourceClass, DataSourceAssembly"/>. "DataSourceClass"는 'IBindData" 및 "INotifyPropertyChanged" 인터페이스들을 구현한다. 이러한 인터페이스들의 예시적 실시예들이 아래에 기술되어 있다.
Figure 112008032225231-pct00004
이 실시예에서는, "IBindData" 인터페이스가 표준 .NET 이벤트 델리게이트 모델(delegate model)을 통해 데이터 소스와 컨트롤 속성(아래에서 설명됨)들 사이에 데이터를 바인딩하는 것을 허용한다.
Figure 112008032225231-pct00005
"INotifyPropertyChanged" 인터페이스는 데이터 소스가 그 데이터 소스에 바인딩되는 UI 속성들이 업데이트될 수 있도록 데이터 소스 상에서 일어나는 어떤 변화든 시그널링하게 한다. 데이터 소스는 데이터 소스에서의 속성이 변할 때마다 "PropertyChanged" 이벤트를 일으킨다. 그리고, 이 이벤트가 시작될 때마다 UI 상의 관련 속성들이 업데이트된다. 메타데이터에서 데이터 소스들이 정의되면, 컨트롤의 어떤 속성이든 데이터 소스로부터 오는 데이터에 바인딩될 수 있다.
컨트롤 속성을 위한 바인딩을 정의하기 위해, 개발자는 바인딩 식을 그 속성에 대응하는 특성 값으로서 공급한다. 예를 들어, 텍스트 박스의 "텍스트" 속성을 바인딩하기 위해, 개발자는 메타데이터(210)에서의 바인딩 식을 다음과 같이 정의할 수 있다: <xaml:TextBox Name="textBox1" Top="40" Left="8" Width="200" Text="{Binding Source=DataSourceName, Path=CustomerName, Mode=TwoWay}" Anchor="Top,Left,Right"/>. Text="{Binding Source=DataSourceName, Path=CustomerName, Mode=TwoWay}"이라는 식은 'Text' 속성을 위한 바인딩 식이다. 'Source' 절(clause)은 메타데이터에 정해진 데이터 소스를 지칭한다. 이것은 개 체 데이터 소스 또는 XML 데이터 소스일 수 있다. 개체 데이터 소스인 경우에, 'Path' 절의 값은 바인딩된 속성을 위한 값을 검색할 때 데이터 소스의 "GetData(string path)" 방법에 전달된다. XML 데이터 소스인 경우에, 'Path' 절은 이 실시예에서는 Xpath 식이고, 그것은 컨트롤 속성에 바인딩될 값을 갖는 XML 데이터에서의 특정한 노드/특성(node/attribute)을 선택한다. 'Mode' 절은 'OneWay' 또는 'TwoWay' 바인딩을 표시한다. 데이터가 데이터 소스로부터 UI 상의 컨트롤들로 흐르면, 바인딩은 'OneWay'이지만, UI 속성 변화들도 데이터 소스로 되돌려 전파되면, 바인딩은 'TwoWay'이다. 'UpdateSourceTrigger'는 UI 속성이 변했고 변경된 속성 값이 데이터 소스로 전파될 필요가 있음을 언제(어떤 이벤트에) 데이터 소스에게 시그널링할지를 정의하는 표시(enumeration)이다. 기본적으로, 이 실시예에서는, 이 절을 위한 값이 바인딩된 속성이 변할 때 그것이 데이터 소스에게 시그널링됨을 의미하는 'PropertyChanged'이다. 한 실시예에 따르면, 이것은 단지 'TwoWay' 바인딩인 경우에만 유효하다.
목록 컨트롤의 'ItemsSource' 특성은 목록에서의 항목들을 데이터 소스로부터 오는 개체들의 집합에 바인딩하는 것을 허용한다. 'ItemsSource' 속성이 바인딩될 때 데이터 소스는 'System.Collections.IEnumerable' 인터페이스를 구현하는 .NET 집합을 반환한다. 목록 컨트롤의 'DisplayMemberPath' 특성은 목록 컨트롤에서의 항목을 위한 디스플레이 텍스트로서 이용되는 값을 갖는 집합을 이루는 .NET 개체들의 속성을 지정한다. 'DisplayMemberPath'가 널(null)이면, 기본값 'ToString()' 방법이 .NET 개체 상에 호출되고 반환되는 문자열은 디스플레이 텍스 트로서 이용된다. 예를 들어, 데이터 소스가 목록 컨트롤에 보이는 'Customer' 개체들의 집합을 반환하면, 'Customer' 개체는 목록 컨트롤에서 디스플레이 텍스트로서 이용될 값을 갖는 'Name' 속성을 가질 수 있을 것이다. 이 경우에는, 'DisplayMemberPath'가 'Name'으로 설정된다. 마찬가지로, 'SelectedValuePath'는 목록 컨트롤에서 특정한 항목이 선택될 때 목록 컨트롤의 'SelectedValue' 속성에 의해 반환될 값을 갖는 집합을 이루는 .NET 개체들의 속성으로 설정된다. 예를 들어, 목록 컨트롤에서의 'SelectedValuePath' 속성이 'CustomerID'로 설정될 때 'SelectedValue' 속성에 의해 반환될 값을 갖는 'CustomerID' 속성을 'Customer' 개체가 갖는다고 가정하자. 아무런 'SelectedValuePath' 특성도 제공되지 않으면, 모든 개체('Customer' 개체)가 목록 컨트롤의 'SelectedValue' 속성에 의해 반환된다.
XML 데이터 소스인 경우에, 목록 컨트롤의 'ItemsSource' 특성을 위한 바인딩 식은 XML 노드들의 목록을 반환한다. 예를 들어, 아래의 것이 XML 데이터 소스라고 가정하자.
Figure 112008032225231-pct00006
Figure 112008032225231-pct00007
북(book) 목록을 나타내는 목록의 'ItemsSource' 속성을 위한 바인딩 식은 다음과 같다: <ListBox ItemsSource="{Binding Source=BookData, Path=/Books/Book}"/>. 위 바인딩 식에서 'Path' 절은 실제로 XML 데이터 소스로부터 목록 컨트롤에 삽입되는 노드들의 목록을 반환하는 Xpath 식이다. 목록 컨트롤의 'DisplayMemberPath' 특성은 목록 컨트롤에서의 디스플레이 텍스트로서 이용될 값을 갖는 노드/특성을 선택하는 Xpath(XmlDataSource인 경우)이어야 한다. 예를 들어, UI 양식 개발자가 목록 컨트롤에서의 각각의 북을 위한 'Title'을 디스플 레이하고 싶다면, 사용자의 XML은 다음과 같을 것이다: <ListBox ItemsSource="{Binding Source=BookData, Path=/Books/Book}" DisplayMemberPath="Title"/>. 마찬가지로, 목록 컨트롤의 'SelectedValuePath' 특성은 목록의 'SelectedValue' 특성에 의해 반환되는 값을 갖는 목록 항목의 노드/특성을 가리킨다.
예를 들어, UI 양식 개발자가 특정한 북이 목록에서 선택될 때 목록 컨트롤의 'SelectedValue' 속성에서 북을 위한 'ISBN' 값을 반환하고자 한다고 가정하면, 'SelectedValuePath' 특성은 북 항목의 'ISBN' 특성을 가리키는 Xpath일 수 있을 것이다.
<ListBox ItemsSource="{Binding Source=BookData, Path=/Books/Book} "DisplayMemberPath="Title" SelectedValuePath="@ISBN"/>
데이터 바인딩을 이용하는 컨트롤들은 아래에 도시된 바와 같은 'IBindable' 인터페이스를 구현한다.
Figure 112008032225231-pct00008
UI 양식(240)이 초기에 렌더링될 때, 모든 바인딩된 속성에 대해, 관련 데이터 소스의 'GetData(string path)' 방법(바인딩 식에 정의됨)은 바인딩 식에서의 'Path' 절의 값에서 인수(argument)로서 전달되면서 호출된다. 이 방법은 'object'라는 유형의 값을 반환한다. 다음에, 데이터 소스에 의해 반환되는 'Value' 및 바인딩된 속성의 이름에서 전달되어 바인딩되는 속성을 갖는 컨트롤 상에 'SetBoundValue(string propName, object value)'가 호출된다. 컨트롤은 'Value' 개체를 이해하고 그것을 해석하여 바인딩된 속성을 업데이트할 책임이 있다. UI 양식의 초기 렌더링 외에, 데이터 소스가 변할 때마다 데이터 소스가 바인더에게 데이터 소스(INotifyPropertyChanged)에서의 변화를 시그널링한다. 바인더는 어떤 컨트롤 속성들이 변경된 데이터 소스에 바인딩되는지를 찾아내고 그러한 속성들을 업데이트한다. 'TwoWay' 바인딩의 경우에, 바인딩된 UI 속성이 UI 양식 상에서 변할 때마다, 바인더에게 알려지며 바인더는 변경된 속성 값을 데이터 소스에 되돌려 전파한다.
앞서 간략히 설명했듯이, 렌더링 엔진(230)은 사용자 지정 빌트 컨트롤(custom built control)들을 호스팅하기 위해 일반적인 프레임워크를 제공하기도 한다. 한 실시예에 따르면, 프레임워크는 사용자 지정 .NET winform 컨트롤들을 지원한다. 한 실시예에 따르면, 어떤 사용자 지정 컨트롤들이든 'System.Windows.Forms.UserControl'이라는 클래스로부터 파생된다. 각각의 사용자 지정 컨트롤은 기본값 컨트랙터(default contractor)를 가지며, 또한 그것이 데이터 바인딩에 참여할 수 있도록 ICustomControl 인터페이스 및 'IBindable' 인터페이스를 구현하기도 한다. 아래는 예시적 'ICustomControl' 인터페이스이다.
Figure 112008032225231-pct00009
컨트롤을 위한 사용자 지정 속성들을 설정하기 위해 렌더링 엔진(230)에 의해 'SetControlProperty(string propName, string propValue)' 방법이 이용된다. 사용자 지정 컨트롤이 노출되고 컨트롤의 기본적 속성(예를 들어 Width, Height, Top, Left 등)에는 포함되지 않은 각각의 사용자 지정 속성을 위해, 렌더링 엔진(230)이 사용자 지정 컨트롤 상에 'SetControlProperty' 방법을 호출하며, 그것은 사용자 지정 컨트롤이 'SetControlProperty' 방법에 전달될 메타데이터에 정의된 'string' 속성 값을 이해 및 해석하려는 것이다.
컨트롤에 의해 노출되는 사용자 지정 이벤트가 시작될 때 사용자 지정 컨트롤에 의해 'ControlEventFired' 이벤트가 일어난다. 이것은 사용자 지정 컨트롤 상에서 이벤트가 시작되었고 렌더링 엔진이 코드 비하인드 어셈블리(225)에서의 그 이벤트를 위한 이벤트 처리기(만일 있다면)를 호출할 필요가 있음을 렌더링 엔진(230)에게 시그널링하려는 것이다. 렌더링 엔진(230)은 컴파일 시점에서 사용자 지정 컨트롤에 의해 지원된 이벤트(및 이벤트 서명)가 무엇인지를 알지 못한다. 그와 같이, 렌더링 엔진(230)은 사용자 지정 컨트롤에게 언제 사용자 지정 이벤트가 사용자 지정 컨트롤 상에서 시작하는지를 알려줄 것을 요청한다. 사용자 지정 컨트롤은 'ControlEventFiredArgs' 클래스의 인스턴스를 생성하고 그것을 렌더링 엔진(230)에 의해 수신되는 'ControlEventFired' 이벤트에 전달한다. 'ControlEventFiredArgs'는 시작된 이벤트의 이름, 송신자 및 그 이벤트를 위한 이벤트 처리기에 전달될 필요가 있는 이벤트 인수들에 관한 정보를 포함한다. 렌더링 엔진(230)이 이 정보를 가지면, 그것은 코드 비하인드 어셈블리(225)에 정의된 그 이벤트를 위한 이벤트 처리기를 호출할 수 있다.
한 실시예에 따르면, 사용자 지정 컨트롤들은 런타임에 .NET 어셈블리에 상주한다. 메타데이터에서의 사용자 지정 컨트롤 어셈블리는 다음과 같이 정의될 수 있을 것이다: <xaml:Mapping XmlNamespace="urn-Mendocino/CustomControls" ClrNamespace="CustomControlNamespace" Assembly="CustomControlAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"/>. 'Mapping' 요소는 XML 요소라기보다는 처리 지시(processing directive)이다. 사용자 지정 컨트롤 어셈블리를 정의하는 다른 방식이 이용될 수도 있을 것이다.
사용자 지정 컨트롤은 다음의 예시적 메타데이터를 통해 메타데이터에서 정의될 수 있다: <custom:CustomControl xmlns:custom="urn-Mendocino/CustomControls" Top="0" Left="0" Height="100" Width="100" .../>. 이 실시예에서는, 렌더링 엔진(230)이 리플렉션을 통해 사용자 지정 컨트롤을 인스턴스화하고, 먼저 Height, Width, Top, Left 등과 같은 기본적 속성들을 설정하며, 이어서 기타의 속성(사용자 지정 속성)들을 위해 렌더링 엔진(230)이 사용자 지정 컨트롤 상에 'SetControlProperty()' 방법을 호출한다.
메타데이터 스키마 내의 메커니즘은 UI 양식 개발자가 코드 비하인드 어셈블리에서의 UI 컨트롤 및 그들의 속성들에 액세스하게 한다. 코드 비하인드 클래스는 아래에 기술된 'IPageCodeBehind' 인터페이스를 구현한다.
Figure 112008032225231-pct00010
'PageControls' 속성은 렌더링 엔진(230)이 UI 양식을 렌더링하고 컨트롤들을 인스턴스화할 때 렌더링 엔진(230)에 의해 삽입(populate)된다. 'Application' 속성은 UI 양식들이 렌더링되고 있는 호스트 애플리케이션(즉 OUTLOOK)을 나타낸다. 한 실시예에 따르면, 'Mediator' 속성은 코드 비하인드 개발자가 메타데이터에 정해진 IBF 동작들을 실행하게 한다. 'ReturnValue'는 양식을 렌더링하는 호출자에게 되돌려보내지는 코드 비하인드 개발자에 의해 설정될 수 있는 변수이다. 이것은 모달 대화 상자(modal dialog)들인 경우에 호출자에게 대화 상자로부터의 값을 되돌려보내기 위해 이용된다.
아래는 예시적 'IPageControlCollection' 인터페이스이다.
Figure 112008032225231-pct00011
'IXamlControl' 인터페이스는 양식 상에 컨트롤을 위한 속성들을 노출한다.
Figure 112008032225231-pct00012
이것은 UI 양식 개발자가 다음과 같은 방식으로 양식 상의 컨트롤에 액세스하게 한다: MessageBox.Show(this.PageControls["myButton"].Text); 'IXamlControl' 인터페이스는 모든 컨트롤에 대해 보편적인 컨트롤의 기본적 속성들을 노출한다. 컨트롤을 위한 특수 속성(예를 들어, CheckBox 컨트롤을 위한 IsChecked)들에 액세스하기 위해 개발자는 'IXamlControl' 개체를 'IXamlCheckBox', 'IXamlTextBox', 등과 같은 특수한 컨트롤 인터페이스로 강제 변환(cast)할 수 있다. ((IXamlCheckBox)this.PageControls["myCheckBox"]).IsChecked
아래는 예시적 'IXamlControl' 인터페이스로부터 파생된 'IXamlCheckBox' 인 터페이스이다.
Figure 112008032225231-pct00013
마찬가지로, UI 양식 개발자가 컨트롤 특수 속성들에 액세스하게 하는 컨트롤들을 위한 특수한 인터페이스들이 노출된다.
한 실시예에 따르면, 렌더링 엔진(230)은 UI 양식이 IBF 작업 틀, OUTLOOK 사용자 지정 양식 또는 대화 상자에서 호스트되는지에 무관하게 UI 양식을 기술하는 메타데이터로부터 동일한 .NET 컨트롤을 발생시킨다. 아래 시나리오들은 .NET 컨트롤이 호스트될 수 있을 것인 방법의 예를 제공한다.
한 실시예에 따르면, IBF 작업 틀은 'IRegion' 인터페이스를 구현하는 어떤 .NET 컨트롤이든 호스팅하는 것을 지원한다. 렌더링 프레임워크는 'IRegion' 인터페이스를 구현하고 UI 메타데이터로부터 UI 렌더링 엔진에 의해 발생된 .NET 컨트롤을 호스팅하는 블랭크(텅 빈) .NET 컨트롤을 포함한다. 메타데이터에 의해 정해진 UI 양식을 IBF 작업 틀에서 디스플레이하기 위해 UI 렌더링 프레임워크의 블랭크 .NET 호스트 컨트롤 부분을 디스플레이하는 'MSIBF.UI.ShowRegion' 사용자 지정 동작이 이용된다. 이 'MSIBF.UI.ShowRegion' 동작에 전달되는 입력은 IBF 작업 틀에서 호스트될 UI 양식을 정하는 메타데이터이다. MSIBF.UI.ShowRegion' 동작은 블랭크 호스트 .NET 컨트롤을 인스턴스화하고, UI 양식을 정하는 메타데이터를 'Data'로서 블랭크 호스트 .NET 컨트롤에 전달한다. 호스트 컨트롤은 UI 양식을 정하는 메타데이터에서 전달되는 렌더링 엔진(230)을 호출하고, 그것은 UI 양식을 기술하는 .NET 컨트롤을 반환하며, 그 후 IBF 작업 틀에서의 UI 양식의 디스플레이로 귀결되는 호스트 컨트롤에 추가된다.
다른 한 실시예에 따르면, OUTLOOK에서 UI 양식을 기술하는 .NET 컨트롤을 호스팅하기 위해, .NET 컨트롤들을 호스팅할 수 있는 ActiveX 컨테이너 컨트롤이 OUTLOOK 양식에 추가되고, 그 후 .NET 컨트롤이 컨테이너 컨트롤의 자식 컨트롤로서 UI 양식을 기술하는 것에 추가된다. ActiveX 컨테이너 컨트롤은 UI 렌더링 프레임워크의 일부이다. 한 실시예에 따르면, Forms 2.0이 메타데이터에 의해 기술된 .NET WinForms 컨트롤을 호스팅하는 ActiveX 컨테이너를 호스팅한다.
메타데이터에 의해 정해진 양식들은 모달 .NET Winform 대화 상자들로도 생성될 수 있을 것이다. 이 실시예에서는, 애드인(addin) 내에 포함된 것 등과 같은 프로그램 코드가 양식을 정하는 XAML 메타데이터에서 전달되는 렌더링 엔진(230)을 호출하고, 렌더링 엔진(230)은 IBF 작업 틀, OUTLOOK 사용자 지정 양식 또는 대화 상자에서 호스팅될 수 있는 XAML 메타데이터로부터 발생된 .NET 컨트롤을 되돌려 보낸다. 애드인은 'IRenderingEngine' 인터페이스를 구현하는 'RenderingEngine' 클래스의 인스턴스를 만든다.
Figure 112008032225231-pct00014
호출자는 양식을 기술하는 XAML 메타데이터에서 전달되는 'CreateXamlForm' 방법을 호출할 수 있다. 렌더링 엔진(230)은 필요한 컨트롤들을 인스턴스화하고 'xaml' 양식을 나타내는 개체('IXamlPage')를 되돌려 보낸다.
Figure 112008032225231-pct00015
이 실시예에서는, 위에서의 'NativeControl' 속성이 IBF 작업 틀, OUTLOOK 사용자 지정 양식 또는 대화 상자에서 호스팅될 수 있는 메타데이터 UI 양식을 기술하는 .NET 컨트롤을 나타낸다. 'ReturnValue' 속성은 코드 비하인드 파일로부터 설정될 수 있고 모달 대화 상자로부터 값을 반환하기 위해 이용될 것인 변수이다.
도 3A 및 3B는 메타데이터 파일에 의해 기술되는 예시적 UI 양식을 도시한다. 도 3A를 보면, UI 양식(300)은 라벨(305), 페이지(310), 패널(315), 텍스트 박스(320), 체크 박스(325), 링크(330), 버튼(335), 목록 박스(340) 및 라디오 버튼 목록(345)을 포함한다.
도 3B는 도 3A에 도시된 바와 같이 UI 양식(300)을 정하기 위해 이용될 수 있는 예시적 UI 메타데이터 파일(360)을 도시한다. 예시적 UI 메타데이터 파일(360)은 컨트롤의 속성들이 대응하는 XML 노드의 특성들에 의해 정의되는 것을 도시한다. 한 실시예에 따르면, 대부분의 속성들은 기본 값을 가지며 특별히 정의될 필요가 없다. 도 3B에 도시된 바와 같이, 표시기(362)는 패널(310)의 기술을 도시하고, 표시기(364)는 라벨(305)의 기술을 도시하며, 표시기(366)는 텍스트 박스(320)의 기술을 도시하고, 표시기(368)는 체크 박스(325)의 기술을 도시하며, 표시기(370)는 버튼(335)의 기술을 도시하고, 표시기(372)는 링크(330)의 기술을 도시하며, 표시기(374)는 목록 박스(340)의 기술을 도시하고, 표시기(376)는 라디오 버튼 목록(345)의 기술을 도시한다.
도 4는 메타데이터를 이용하여 UI 양식을 기술하기 위한 프로세스를 도시한다. 시작 동작 후에, 프로세스는 메타데이터 파일이 정해지는 동작(410)으로 이동한다. 앞서 설명했듯이, 파일 내의 메타데이터는 UI를 기술하고 컨트롤 상의 정보, 데이터 바인딩 및 사용자 인터페이스에 관한 기타의 관련 정보를 포함한다.
동작(420)으로 이동하여, 메타데이터 파일이 저장된다. 한 실시예에 따르면, 메타데이터 파일은 하드 드라이브 등과 같은 컴퓨터 판독 가능 매체 상에 저장된다. 메타데이터 파일은 관련된 UI를 디스플레이하는 컴퓨팅 장치로부터 로컬 및/또는 원격으로 저장될 수 있을 것이다.
동작(430)으로 이동하여, 메타데이터 파일이 액세스된다. 한 실시예에 따르면, 메타데이터 파일이 렌더링 엔진에 의해 액세스된다. 대안적으로, 앞서 설명했듯이, 메타데이터 파일에 액세스하기 위해 인터프리터가 이용될 수 있을 것이다.
동작(440)으로 이동하여, 0개 이상의 데이터 소스들이 메타데이터를 통해 UI를 위해 정해진 하나 이상의 컨트롤들에 대해 바인딩될 수 있을 것이다.
동작(450)으로 이동하여, 메타데이터가 해석되고, UI를 디스플레이하기 위해 렌더링된다. UI 양식의 각각의 컨트롤이 UI(도 5 및 관련 설명을 참조) 상에 렌더 링된다.
그 후, 프로세스는 종료 동작으로 이동하고 기타의 동작들을 처리하는 동작으로 복귀한다.
도 5는 대응 메타데이터에 의해 UI 양식을 렌더링하기 위한 프로세스를 도시한다. 시작 동작 후에, 프로세스는 컨트롤이 인스턴스화되는 동작(510)으로 이동한다. 컨트롤은 컨트롤의 유형(즉, 라벨, 텍스트 박스 등)에 기반하여 인스턴스화된다.
동작(520)으로 이동하여, 컨트롤의 기본 속성들이 설정된다. 예를 들어, 상단, 좌단, 높이, 폭 등과 같은 속성들이 설정된다.
동작(530)으로 이동하여, 컨트롤 속성들이 설정된다. 설정되는 컨트롤 속성들은 컨트롤의 유형에 따른다.
다음에, 동작(540)에서, 메타데이터 내에서 정의되는 컨트롤 이벤트들이 섭스크라이브된다. 동작(550)으로 이동하여, 컨트롤을 위한 어떤 자식 컨트롤들이든 인스턴스화된다. 그 후, 프로세스는 종료 동작으로 이동하고, 기타의 동작들을 처리하는 동작으로 복귀한다.
아래는 메타데이터를 이용하여 UI 양식을 정하기 위해 이용될 수 있는 예시적 스키마이다.
Figure 112008032225231-pct00016
Figure 112008032225231-pct00017
Figure 112008032225231-pct00018
Figure 112008032225231-pct00019
Figure 112008032225231-pct00020
Figure 112008032225231-pct00021
Figure 112008032225231-pct00022
Figure 112008032225231-pct00023
Figure 112008032225231-pct00024
위 설명, 예시 및 데이터는 본 발명의 구성의 제조 및 이용에 관한 완전한 기술을 제공한다. 본 발명의 정신 및 범위로부터 벗어남이 없이 본 발명의 많은 실시예들이 이루어질 수 있으므로, 본 발명은 첨부된 특허청구의 범위에 속한다.

Claims (20)

  1. 메타데이터 구동 사용자 인터페이스(metadata driven user interface)를 생성하기 위한 컴퓨터 실행 가능 명령어를 갖는 컴퓨터 판독 가능 매체에 있어서,
    사용자 인터페이스를 정의하는데 이용되는 XML(extensible markup language)에 의해 표현되는 파일로부터 메타데이터에 액세스하는 명령어- 상기 메타데이터는 상기 사용자 인터페이스 내에서의 컨트롤들을 정의하고, 상기 컨트롤들 각각은 래퍼 클래스(wrapper class)에 의해 래핑되고, 상기 래퍼 클래스는 코드 비하인드 어셈블리(code-behind assembly)에 대해 데이터 바인딩하고 상기 컨트롤의 속성들을 노출시키는 기능을 제공하고, 상기 컨트롤들 중 하나 이상에 대한 메타데이터는 상기 하나 이상의 컨트롤 각각에 대해 이벤트의 이름 및 이벤트를 처리하기 위한 메소드 이름을 상기 메타데이터 내에 지정함으로써 상기 이벤트를 노출시키고,
    상기 메타데이터는,
    바인딩 식(binding expression)을 사용하여 상기 사용자 인터페이스의 컨트롤의 속성에 데이터를 바인딩하는 XML 요소- 상기 바인딩 식은 상기 데이터에 대한 데이터 소스를 포함함 -; 및
    상기 코드 비하인드 어셈블리에서 컨트롤의 이벤트에 대한 이벤트 처리기를 지정하는 XML 요소- 상기 이벤트는 상기 코드 비하인드 어셈블리에 노출되고, 상기 컨트롤의 속성은 상기 코드 비하인드 어셈블리를 통해 액세스됨 -를 포함함 -; 및
    상기 메타데이터에 따라 상기 사용자 인터페이스를 렌더링하는 명령어
    를 포함하는 컴퓨터 판독 가능 저장 매체.
  2. 제1항에 있어서,
    상기 메타데이터는 또한 상기 컨트롤들을 프로그램적으로 변경하는 메커니즘들을 지원하는
    컴퓨터 판독 가능 저장 매체.
  3. 제2항에 있어서,
    메타데이터 스키마에 따라 상기 사용자 인터페이스에 대한 상기 메타데이터를 생성하고 상기 메타데이터를 파일에 저장하는 명령어를 더 포함하는
    컴퓨터 판독 가능 저장 매체.
  4. 제3항에 있어서,
    상기 메타데이터는 상기 사용자 인터페이스 내에서의 상기 컨트롤들과 관련이 있는 속성들을 정의하고 상기 사용자 인터페이스 내에서의 상기 컨트롤들의 레이아웃을 정의하는
    컴퓨터 판독 가능 저장 매체.
  5. 제2항에 있어서,
    상기 메타데이터는 사용자 지정 컨트롤들(custom controls)을 정의하고 상기 사용자 인터페이스 내에 표준 컨트롤들을 포함하는 능력을 제공하는
    컴퓨터 판독 가능 저장 매체.
  6. 제2항에 있어서,
    상기 컨트롤들을 프로그램적으로 변경하는 것은 상기 코드 비하인드 어셈블리에 의해 정의된 유형에 대한 액세스를 제공하는 것을 포함하는
    컴퓨터 판독 가능 저장 매체.
  7. 제6항에 있어서,
    상기 코드 비하인드 어셈블리에 의해 정의된 상기 유형은 상기 메타데이터에서 지정되는
    컴퓨터 판독 가능 저장 매체.
  8. 제6항에 있어서,
    상기 컨트롤들의 속성들이 판독 및 변경되게 하도록 구성된 개체 모델을 노출하는 명령어를 더 포함하는
    컴퓨터 판독 가능 저장 매체.
  9. 제5항에 있어서,
    상기 메타데이터 내의 상기 바인딩 식은 데이터 바인딩을 위한 양식(mode)을 지정하는 것을 더 포함하는
    컴퓨터 판독 가능 저장 매체.
  10. 제9항에 있어서,
    상기 바인딩 식은 데이터로의 경로를 더 포함하는
    컴퓨터 판독 가능 저장 매체.
  11. 제10항에 있어서,
    상기 데이터 소스는 개체 데이터 소스와 XML 데이터 소스 중 적어도 하나를 포함하는
    컴퓨터 판독 가능 저장 매체.
  12. 제10항에 있어서,
    메타데이터 스키마는 XML 스키마이고 텍스트 박스 유형, 버튼 유형, 링크 유형, 이미지 유형, 체크 박스 유형, 목록 컨트롤 유형, 및 라디오 목록 유형을 제공하는
    컴퓨터 판독 가능 저장 매체.
  13. 메타데이터를 이용하여 사용자 인터페이스를 생성하기 위한, 컴퓨터로 구현된 방법에 있어서,
    상기 방법은 컴퓨터에 의해 실행되는 경우,
    사용자 인터페이스를 위한 컨트롤들을 정의하는 파일로부터 메타데이터에 액세스하는 단계로서, 상기 컨트롤들 각각은 래퍼 클래스에 의해 래핑되고, 상기 래퍼 클래스는 코드 비하인드 어셈블리에 대해 데이터 바인딩하고 상기 컨트롤의 속성들을 노출하는 기능을 제공하고, 상기 메타데이터는 메타데이터 스키마에 따라 생성되고, 상기 컨트롤들 중 하나 이상에 대한 메타데이터는 상기 메타데이터 내에 이벤트의 이름 및 이벤트를 처리하기 위한 메소드 이름을 지정함으로써 상기 이벤트를 노출시키는, 상기 액세스하는 단계;
    바인딩 식을 지정함으로써 상기 사용자 인터페이스 내에서의 상기 컨트롤들 중 적어도 하나에 대해 데이터 소스를 바인딩하는 단계 - 상기 바인딩 식은 상기 메타데이터 내에 데이터 소스를 포함하고, 상기 데이터 소스는 개체 데이터 소스 및 XML 데이터 소스로부터 선택될 수 있으며, 상기 바인딩 식은 변경들을 상기 사용자 인터페이스로부터 상기 데이터 소스로 되돌려 전파하는데 사용될 수 있음 -; 및
    상기 메타데이터에 따라 상기 사용자 인터페이스를 렌더링하는 단계
    를 포함하는 사용자 인터페이스 생성 방법.
  14. 제13항에 있어서,
    상기 컨트롤들을 프로그램적으로 변경하기 위해 상기 메타데이터 스키마를 이용하고 상기 컨트롤들을 위한 이벤트 처리를 지원하는 단계를 더 포함하는
    사용자 인터페이스 생성 방법.
  15. 제14항에 있어서,
    상기 컨트롤들에 대한 베이스 클래스를 제공하는 단계를 더 포함하는
    사용자 인터페이스 생성 방법.
  16. 제15항에 있어서,
    상기 래퍼 클래스는 각각의 사용자 지정 컨트롤을 래핑하는
    사용자 인터페이스 생성 방법.
  17. 제14항에 있어서,
    상기 메타데이터에 따라 상기 사용자 인터페이스를 렌더링하는 단계는 각각의 컨트롤에 대해 상기 메타데이터에 지정된 대로 컨트롤 속성들을 설정하는 단계를 포함하는 사용자 인터페이스 생성 방법.
  18. 제17항에 있어서,
    상기 코드 비하인드 어셈블리는 이벤트 처리기 코드를 포함하고, 상기 메타데이터에서의 상기 코드 비하인드 어셈블리를 정의하는 단계, 및 컨트롤을 위해 특정한 이벤트를 처리하는 이벤트 처리기를 정의하는 단계를 더 포함하는 사용자 인터페이스 생성 방법.
  19. 메타데이터를 이용하여 사용자 인터페이스를 렌더링하기 위한 장치에 있어서,
    프로세서 및 컴퓨터 판독 가능 매체;
    상기 컴퓨터 판독 가능 매체 상에 저장되고 상기 프로세서 상에서 실행되는 운영 환경;
    사용자 인터페이스 내에서의 컨트롤들을 지정하는 메타데이터 파일을 저장하도록 구성된 데이터 저장소- 상기 컨트롤들 각각은 래퍼 클래스에 의해 래핑되고, 상기 래퍼 클래스는 데이터 바인딩하고 상기 컨트롤의 속성들을 노출하는 기능을 제공하며, 상기 파일 내의 상기 메타데이터는 상기 사용자 인터페이스의 하나 이상의 컨트롤에 데이터를 바인딩하는데 사용되는 바인딩 식을 포함하고, 상기 바인딩 식은 데이터 소스를 포함하며, 상기 바인딩 식은 변경들을 상기 사용자 인터페이스로부터 상기 데이터 소스로 되돌려 전파하는데 사용될 수 있고, 상기 컨트롤들 중 하나 이상에 대한 상기 메타데이터는 이벤트의 이름 및 이벤트를 처리하기 위한 메소드 이름을 상기 메타데이터 내에 지정함으로써 상기 이벤트를 노출시킴 -; 및
    상기 메타데이터를 해석하고 상기 메타데이터에 따라 상기 사용자 인터페이스를 렌더링하도록 구성된 기능을 포함하는 렌더링 엔진
    을 포함하는 사용자 인터페이스 렌더링 장치.
  20. 제19항에 있어서,
    상기 메타데이터는, 상기 사용자 인터페이스 내에서의 상기 컨트롤들을 생성하고, 상기 컨트롤들을 프로그램적으로 변경하며, 상기 컨트롤들을 위한 이벤트 처리를 지원하기 위한 메커니즘들을 포함하는 메타데이터 스키마에 따라 생성되는
    사용자 인터페이스 렌더링 장치.
KR1020087010883A 2005-12-05 2006-12-05 메타데이터를 이용하여 사용자 인터페이스를 렌더링하기위한 장치, 사용자 인터페이스를 생성하는 방법, 및 컴퓨터판독 가능 매체 KR101331260B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US74224005P 2005-12-05 2005-12-05
US60/742,240 2005-12-05
US11/418,829 2006-05-05
US11/418,829 US8095565B2 (en) 2005-12-05 2006-05-05 Metadata driven user interface
PCT/US2006/046464 WO2007067578A1 (en) 2005-12-05 2006-12-05 Metadata driven user interface

Publications (2)

Publication Number Publication Date
KR20080071133A KR20080071133A (ko) 2008-08-01
KR101331260B1 true KR101331260B1 (ko) 2013-11-19

Family

ID=38120015

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087010883A KR101331260B1 (ko) 2005-12-05 2006-12-05 메타데이터를 이용하여 사용자 인터페이스를 렌더링하기위한 장치, 사용자 인터페이스를 생성하는 방법, 및 컴퓨터판독 가능 매체

Country Status (4)

Country Link
US (1) US8095565B2 (ko)
KR (1) KR101331260B1 (ko)
CN (1) CN101322096B (ko)
WO (1) WO2007067578A1 (ko)

Families Citing this family (87)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2451164C (en) 2003-09-11 2016-08-30 Teamplate Inc. Customizable components
CA2443454A1 (en) * 2003-09-11 2005-03-11 Teamplate Inc. Data binding method in workflow system
WO2007134265A2 (en) 2006-05-12 2007-11-22 Captaris, Inc. Workflow data binding
US7987443B2 (en) * 2006-10-30 2011-07-26 Hewlett-Packard Development Company, L.P. Declarative association of dialog fields
US8839232B2 (en) * 2007-02-23 2014-09-16 Sugarcrm Inc. Customer relationship management portal system and method
US8316309B2 (en) * 2007-05-31 2012-11-20 International Business Machines Corporation User-created metadata for managing interface resources on a user interface
US20080313291A1 (en) * 2007-06-12 2008-12-18 Smartmicros Usa, Llc Method and apparatus for encoding data
US20080313210A1 (en) * 2007-06-15 2008-12-18 Microsoft Corporation Content Publishing Customized to Capabilities of Device
US20090037829A1 (en) * 2007-08-01 2009-02-05 Microsoft Corporation Framework to integrate web services with on-premise software
US8560938B2 (en) * 2008-02-12 2013-10-15 Oracle International Corporation Multi-layer XML customization
US8281287B2 (en) * 2007-11-12 2012-10-02 Finocchio Mark J Compact, portable, and efficient representation of a user interface control tree
US20090199112A1 (en) * 2008-02-04 2009-08-06 Deserranno Allen Simplified opc to wpf xaml binding method
US8966465B2 (en) * 2008-02-12 2015-02-24 Oracle International Corporation Customization creation and update for multi-layer XML customization
US8875306B2 (en) * 2008-02-12 2014-10-28 Oracle International Corporation Customization restrictions for multi-layer XML customization
US8538998B2 (en) * 2008-02-12 2013-09-17 Oracle International Corporation Caching and memory optimizations for multi-layer XML customization
US8788542B2 (en) * 2008-02-12 2014-07-22 Oracle International Corporation Customization syntax for multi-layer XML customization
US8229976B2 (en) * 2008-03-27 2012-07-24 Microsoft Corporation Data binding for XML schemas
US8782604B2 (en) * 2008-04-11 2014-07-15 Oracle International Corporation Sandbox support for metadata in running applications
US8082494B2 (en) 2008-04-18 2011-12-20 Microsoft Corporation Rendering markup language macro data for display in a graphical user interface
US9164737B2 (en) * 2008-05-16 2015-10-20 Microsoft Technology Licensing, Llc Augmenting programming languages with a type system
US8667031B2 (en) * 2008-06-13 2014-03-04 Oracle International Corporation Reuse of shared metadata across applications via URL protocol
US9298684B2 (en) * 2008-06-18 2016-03-29 Microsoft Technology Licensing, Llc Implementing custom user interface forms in a personal information manager
KR101502096B1 (ko) 2008-07-22 2015-03-12 삼성전자 주식회사 공기 조화기의 제어 방법
US8209355B2 (en) * 2008-07-28 2012-06-26 Microsoft Corporation Automatic user interface generation for entity interaction
US8996658B2 (en) * 2008-09-03 2015-03-31 Oracle International Corporation System and method for integration of browser-based thin client applications within desktop rich client architecture
US8799319B2 (en) 2008-09-19 2014-08-05 Oracle International Corporation System and method for meta-data driven, semi-automated generation of web services based on existing applications
US9122520B2 (en) * 2008-09-17 2015-09-01 Oracle International Corporation Generic wait service: pausing a BPEL process
US8332654B2 (en) * 2008-12-08 2012-12-11 Oracle International Corporation Secure framework for invoking server-side APIs using AJAX
GB2458755A (en) * 2009-02-24 2009-10-07 Promethean Ltd Creating a document using a software application by associating content with a state of the software application
US9727320B2 (en) * 2009-02-25 2017-08-08 Red Hat, Inc. Configuration of provisioning servers in virtualized systems
US9529648B2 (en) * 2009-06-26 2016-12-27 International Business Machines Corporation Generic declaration of bindings between events and event handlers regardless of runtime structure
US8595236B2 (en) * 2009-11-05 2013-11-26 International Business Machines Corporation Searching existing user interfaces to enable design, development and provisioning of user interfaces
US8869108B2 (en) * 2009-11-18 2014-10-21 Oracle International Corporation Techniques related to customizations for composite applications
US20110138335A1 (en) * 2009-12-08 2011-06-09 Sybase, Inc. Thin analytics for enterprise mobile users
US10845962B2 (en) * 2009-12-14 2020-11-24 Ab Initio Technology Llc Specifying user interface elements
CN102118652A (zh) * 2009-12-31 2011-07-06 康佳集团股份有限公司 网络电视界面中元素位置切换的方法、装置及系统
US20110185294A1 (en) * 2010-01-22 2011-07-28 Microsoft Corporation Pattern-based user interfaces
US20110246913A1 (en) * 2010-03-30 2011-10-06 Microsoft Corporation Automated User Interface Generator
US9513882B2 (en) 2010-04-15 2016-12-06 Microsoft Technology Licensing, Llc Platform independent presentation composition
US8756488B2 (en) 2010-06-18 2014-06-17 Sweetlabs, Inc. Systems and methods for integration of an application runtime environment into a user computing environment
CN101976194A (zh) 2010-10-29 2011-02-16 中兴通讯股份有限公司 一种设置用户界面的方法及装置
CN102081361B (zh) * 2010-11-29 2012-08-29 广东威创视讯科技股份有限公司 一种硬件设备控制方法及其系统
US8793706B2 (en) * 2010-12-16 2014-07-29 Microsoft Corporation Metadata-based eventing supporting operations on data
US9141314B2 (en) 2011-01-20 2015-09-22 Canon Kabushiki Kaisha Systems and methods for updating a user interface for a printing device
US8994985B2 (en) 2011-01-20 2015-03-31 Canon Kabushiki Kaisha Systems and methods for updating printing device capabilities
US9013510B2 (en) * 2011-07-29 2015-04-21 Google Inc. Systems and methods for rendering user interface elements in accordance with a device type
US8954942B2 (en) 2011-09-30 2015-02-10 Oracle International Corporation Optimizations using a BPEL compiler
EP2584445A1 (en) * 2011-10-18 2013-04-24 Research In Motion Limited Method of animating a rearrangement of ui elements on a display screen of an eletronic device
CN102571934A (zh) * 2011-12-22 2012-07-11 深圳华强电子交易网络有限公司 一种web页面数据绑定的方法
US9031922B2 (en) 2012-05-02 2015-05-12 Microsoft Technology Licensing, Llc Code regeneration determination from selected metadata fingerprints
US8775925B2 (en) * 2012-08-28 2014-07-08 Sweetlabs, Inc. Systems and methods for hosted applications
CN103019693A (zh) * 2012-11-21 2013-04-03 用友软件股份有限公司 用户界面的生成系统和生成方法
CN103092625B (zh) * 2013-01-28 2016-01-20 中国航空结算有限责任公司 一种基于.NET Framework平台的处理民航客运客票票证数据的方法和装置
US10296562B2 (en) 2013-02-12 2019-05-21 Oath Inc. Dynamic generation of mobile web experience
CN104007907B (zh) * 2013-02-26 2018-08-10 北京三星通信技术研究有限公司 一种对应用程序进行快捷操作的方法和智能终端
US9116766B2 (en) 2013-07-31 2015-08-25 Sap Se Extensible applications using a mobile application framework
US10254931B2 (en) * 2013-09-20 2019-04-09 Sap Se Metadata-driven list user interface component builder
KR102146557B1 (ko) * 2013-11-06 2020-08-21 삼성전자주식회사 어플리케이션의 데이터를 렌더링하는 방법, 장치 및 기록매체
US9772755B2 (en) * 2013-11-15 2017-09-26 Microsoft Technology Licensing, Llc Remote control for displaying application data on dissimilar screens
US9857947B2 (en) * 2014-03-03 2018-01-02 Microsoft Technology Licensing, Llc Metadata driven dialogs
US20150248227A1 (en) * 2014-03-03 2015-09-03 Microsoft Technology Licensing, Llc Configurable reusable controls
US20150347352A1 (en) * 2014-06-02 2015-12-03 Microsoft Technology Licensing, Llc Form preview in a development environment
US9729606B2 (en) 2014-09-10 2017-08-08 Benefitfocus.Com, Inc. Systems and methods for a metadata driven user interface framework
US20160259840A1 (en) * 2014-10-16 2016-09-08 Yahoo! Inc. Personalizing user interface (ui) elements
US9996230B2 (en) 2014-11-13 2018-06-12 Microsoft Technology Licensing, Llc Using sections for customization of applications across platforms
US10152558B2 (en) * 2014-12-23 2018-12-11 Intel Corporation Graph operations
US10579354B2 (en) * 2015-03-10 2020-03-03 Kordata, Llc Method and system for rapid deployment and execution of customized functionality across multiple distinct platforms
US10909186B2 (en) 2015-09-30 2021-02-02 Oracle International Corporation Multi-tenant customizable composites
US11238220B1 (en) 2015-11-13 2022-02-01 Wells Fargo Bank, N.A. Dynamic user interface framework
GB201522914D0 (en) * 2015-12-24 2016-02-10 Atom Bank Plc Update method
CN105824625B (zh) * 2016-03-14 2019-07-23 北京中电普华信息技术有限公司 一种基于云环境的业务应用构造装置及方法
US10921952B2 (en) * 2016-05-11 2021-02-16 Sap Se Dynamic button with visual indication of application action result
KR102588633B1 (ko) * 2016-12-14 2023-10-12 현대오토에버 주식회사 화면 미러링 장치 및 방법
US11138595B2 (en) 2017-05-30 2021-10-05 Visa International Service Association System, method, and computer program product for maintaining transaction integrity over public networks
US11501201B2 (en) * 2017-07-17 2022-11-15 MetiStream, Inc. Systems, methods, and apparatuses for training, storage, and interaction with machine learning models
US11423083B2 (en) 2017-10-27 2022-08-23 Ab Initio Technology Llc Transforming a specification into a persistent computer program
CN108549570B (zh) * 2018-04-28 2021-10-26 北京小米移动软件有限公司 用户界面的更新方法及装置
US10795698B2 (en) 2018-07-24 2020-10-06 Microsoft Technology Licensing, Llc User interface based on metadata
CN109582647B (zh) * 2018-11-21 2022-09-30 珠海市新德汇信息技术有限公司 一种面向非结构化证据文件的分析方法及系统
US10725798B2 (en) 2018-12-05 2020-07-28 Visa International Service Association Method, system, and computer program product for dynamic development of an application programming interface
CN110569025B (zh) * 2019-08-26 2020-09-22 珠海格力电器股份有限公司 变量处理方法、装置、可读存储介质及电子设备
US11403079B2 (en) * 2020-01-28 2022-08-02 Salesforce, Inc. Integrated system for designing a user interface
US11397567B2 (en) 2020-01-28 2022-07-26 Salesforce, Inc. Integrated system for designing a user interface
CN111752563A (zh) * 2020-05-18 2020-10-09 深圳市东微智能科技股份有限公司 动态修改界面方法、装置、终端及计算机可读存储介质
US10963272B1 (en) 2020-07-09 2021-03-30 Coupang Corp. Systems and methods for deploying low-application-impact user interfaces
CN113687881A (zh) * 2021-08-20 2021-11-23 广东电网有限责任公司 元数据调用方法、装置、电子设备及存储介质
KR102579484B1 (ko) * 2021-09-07 2023-09-15 네이버 주식회사 위지위그 편집 도구를 제공하는 방법 및 시스템

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050091576A1 (en) 2003-10-24 2005-04-28 Microsoft Corporation Programming interface for a computer platform

Family Cites Families (98)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5257577A (en) 1991-04-01 1993-11-02 Clark Melvin D Apparatus for assist in recycling of refuse
US5606609A (en) 1994-09-19 1997-02-25 Scientific-Atlanta Electronic document verification system and method
US5594660A (en) 1994-09-30 1997-01-14 Cirrus Logic, Inc. Programmable audio-video synchronization method and apparatus for multimedia systems
US5642502A (en) 1994-12-06 1997-06-24 University Of Central Florida Method and system for searching for relevant documents from a text database collection, using statistical ranking, relevancy feedback and small pieces of text
US5933851A (en) 1995-09-29 1999-08-03 Sony Corporation Time-stamp and hash-based file modification monitor with multi-user notification and method thereof
US5974455A (en) * 1995-12-13 1999-10-26 Digital Equipment Corporation System for adding new entry to web page table upon receiving web page including link to another web page not having corresponding entry in web page table
US5745890A (en) * 1996-08-09 1998-04-28 Digital Equipment Corporation Sequential searching of a database index using constraints on word-location pairs
JP4025379B2 (ja) 1996-09-17 2007-12-19 株式会社ニューズウオッチ 検索システム
US6285999B1 (en) * 1997-01-10 2001-09-04 The Board Of Trustees Of The Leland Stanford Junior University Method for node ranking in a linked database
US5960383A (en) * 1997-02-25 1999-09-28 Digital Equipment Corporation Extraction of key sections from texts using automatic indexing techniques
US5848404A (en) 1997-03-24 1998-12-08 International Business Machines Corporation Fast query search in large dimension database
US6256675B1 (en) * 1997-05-06 2001-07-03 At&T Corp. System and method for allocating requests for objects and managing replicas of objects on a network
US6158044A (en) * 1997-05-21 2000-12-05 Epropose, Inc. Proposal based architecture system
US6012053A (en) * 1997-06-23 2000-01-04 Lycos, Inc. Computer system with user-controlled relevance ranking of search results
JPH1125119A (ja) 1997-06-30 1999-01-29 Canon Inc ハイパーテキスト閲覧システム
US6070191A (en) * 1997-10-17 2000-05-30 Lucent Technologies Inc. Data distribution techniques for load-balanced fault-tolerant web access
US6351467B1 (en) * 1997-10-27 2002-02-26 Hughes Electronics Corporation System and method for multicasting multimedia content
US6128701A (en) * 1997-10-28 2000-10-03 Cache Flow, Inc. Adaptive and predictive cache refresh policy
US6594682B2 (en) * 1997-10-28 2003-07-15 Microsoft Corporation Client-side system for scheduling delivery of web content and locally managing the web content
US6389436B1 (en) * 1997-12-15 2002-05-14 International Business Machines Corporation Enhanced hypertext categorization using hyperlinks
US6145003A (en) * 1997-12-17 2000-11-07 Microsoft Corporation Method of web crawling utilizing address mapping
US6185558B1 (en) * 1998-03-03 2001-02-06 Amazon.Com, Inc. Identifying the items most relevant to a current query based on items selected in connection with similar queries
US6125361A (en) * 1998-04-10 2000-09-26 International Business Machines Corporation Feature diffusion across hyperlinks
US6151595A (en) 1998-04-17 2000-11-21 Xerox Corporation Methods for interactive visualization of spreading activation using time tubes and disk trees
JPH11328191A (ja) 1998-05-13 1999-11-30 Nec Corp Wwwロボット検索システム
US6098064A (en) * 1998-05-22 2000-08-01 Xerox Corporation Prefetching and caching documents according to probability ranked need S list
US6182085B1 (en) * 1998-05-28 2001-01-30 International Business Machines Corporation Collaborative team crawling:Large scale information gathering over the internet
ATE263988T1 (de) * 1998-06-08 2004-04-15 Kcsl Inc Methode und verfahren um relevante dokumente in einer datenbank zu finden
US6638314B1 (en) * 1998-06-26 2003-10-28 Microsoft Corporation Method of web crawling utilizing crawl numbers
US6549897B1 (en) * 1998-10-09 2003-04-15 Microsoft Corporation Method and system for calculating phrase-document importance
US6385602B1 (en) * 1998-11-03 2002-05-07 E-Centives, Inc. Presentation of search results using dynamic categorization
US6360215B1 (en) * 1998-11-03 2002-03-19 Inktomi Corporation Method and apparatus for retrieving documents based on information other than document content
US6922699B2 (en) * 1999-01-26 2005-07-26 Xerox Corporation System and method for quantitatively representing data objects in vector space
US6418433B1 (en) * 1999-01-28 2002-07-09 International Business Machines Corporation System and method for focussed web crawling
US6304864B1 (en) * 1999-04-20 2001-10-16 Textwise Llc System for retrieving multimedia information from the internet using multiple evolving intelligent agents
US6327590B1 (en) 1999-05-05 2001-12-04 Xerox Corporation System and method for collaborative ranking of search results employing user and group profiles derived from document collection content analysis
US6973490B1 (en) * 1999-06-23 2005-12-06 Savvis Communications Corp. Method and system for object-level web performance and analysis
US6547829B1 (en) * 1999-06-30 2003-04-15 Microsoft Corporation Method and system for detecting duplicate documents in web crawls
US6631497B1 (en) * 1999-07-19 2003-10-07 International Business Machines Corporation Binding data from data source to cells in a spreadsheet
US7181438B1 (en) * 1999-07-21 2007-02-20 Alberti Anemometer, Llc Database access system
US6442606B1 (en) * 1999-08-12 2002-08-27 Inktomi Corporation Method and apparatus for identifying spoof documents
US6356933B2 (en) * 1999-09-07 2002-03-12 Citrix Systems, Inc. Methods and apparatus for efficiently transmitting interactive application data between a client and a server using markup language
US6351755B1 (en) * 1999-11-02 2002-02-26 Alta Vista Company System and method for associating an extensible set of data with documents downloaded by a web crawler
US6418453B1 (en) * 1999-11-03 2002-07-09 International Business Machines Corporation Network repository service for efficient web crawling
US6418452B1 (en) * 1999-11-03 2002-07-09 International Business Machines Corporation Network repository service directory for efficient web crawling
US6539376B1 (en) * 1999-11-15 2003-03-25 International Business Machines Corporation System and method for the automatic mining of new relationships
US7016540B1 (en) * 1999-11-24 2006-03-21 Nec Corporation Method and system for segmentation, classification, and summarization of video images
US6883135B1 (en) * 2000-01-28 2005-04-19 Microsoft Corporation Proxy server using a statistical model
US7240067B2 (en) * 2000-02-08 2007-07-03 Sybase, Inc. System and methodology for extraction and aggregation of data from dynamic content
US20010030667A1 (en) * 2000-04-10 2001-10-18 Kelts Brett R. Interactive display interface for information objects
US6871344B2 (en) * 2000-04-24 2005-03-22 Microsoft Corporation Configurations for binding software assemblies to application programs
US6741986B2 (en) * 2000-12-08 2004-05-25 Ingenuity Systems, Inc. Method and system for performing information extraction and quality control for a knowledgebase
US6772160B2 (en) * 2000-06-08 2004-08-03 Ingenuity Systems, Inc. Techniques for facilitating information acquisition and storage
US7080073B1 (en) * 2000-08-18 2006-07-18 Firstrain, Inc. Method and apparatus for focused crawling
US20030217052A1 (en) * 2000-08-24 2003-11-20 Celebros Ltd. Search engine method and apparatus
US6961900B1 (en) * 2000-08-28 2005-11-01 Microsoft Corporation Rendering data according to a present schema from an origin response message
US6598051B1 (en) * 2000-09-19 2003-07-22 Altavista Company Web page connectivity server
US6560600B1 (en) * 2000-10-25 2003-05-06 Alta Vista Company Method and apparatus for ranking Web page search results
US6622140B1 (en) * 2000-11-15 2003-09-16 Justsystem Corporation Method and apparatus for analyzing affect and emotion in text
US6842761B2 (en) * 2000-11-21 2005-01-11 America Online, Inc. Full-text relevancy ranking
US6826581B2 (en) * 2000-12-06 2004-11-30 Intel Corporation Upgrading a device over a network by downloading results of command execution from script file
US20020078045A1 (en) * 2000-12-14 2002-06-20 Rabindranath Dutta System, method, and program for ranking search results using user category weighting
US7356530B2 (en) * 2001-01-10 2008-04-08 Looksmart, Ltd. Systems and methods of retrieving relevant information
US20020103798A1 (en) * 2001-02-01 2002-08-01 Abrol Mani S. Adaptive document ranking method based on user behavior
US20020107886A1 (en) * 2001-02-07 2002-08-08 Gentner Donald R. Method and apparatus for automatic document electronic versioning system
US7203678B1 (en) * 2001-03-27 2007-04-10 Bea Systems, Inc. Reconfigurable query generation system for web browsers
US7188106B2 (en) * 2001-05-01 2007-03-06 International Business Machines Corporation System and method for aggregating ranking results from various sources to improve the results of web searching
US6738764B2 (en) * 2001-05-08 2004-05-18 Verity, Inc. Apparatus and method for adaptively ranking search results
US20040230572A1 (en) * 2001-06-22 2004-11-18 Nosa Omoigui System and method for semantic knowledge retrieval, management, capture, sharing, discovery, delivery and presentation
US7076483B2 (en) * 2001-08-27 2006-07-11 Xyleme Sa Ranking nodes in a graph
US6766422B2 (en) * 2001-09-27 2004-07-20 Siemens Information And Communication Networks, Inc. Method and system for web caching based on predictive usage
US7062502B1 (en) * 2001-12-28 2006-06-13 Kesler John N Automated generation of dynamic data entry user interface for relational database management systems
US7693830B2 (en) * 2005-08-10 2010-04-06 Google Inc. Programmable search engine
US20030221165A1 (en) * 2002-05-22 2003-11-27 Microsoft Corporation System and method for metadata-driven user interface
AU2003243533A1 (en) * 2002-06-12 2003-12-31 Jena Jordahl Data storage, retrieval, manipulation and display tools enabling multiple hierarchical points of view
US20040056894A1 (en) * 2002-09-19 2004-03-25 Igor Zaika System and method for describing and instantiating extensible user interfaces
US6886010B2 (en) * 2002-09-30 2005-04-26 The United States Of America As Represented By The Secretary Of The Navy Method for data and text mining and literature-based discovery
US7650572B2 (en) * 2003-02-28 2010-01-19 Bea Systems, Inc. Graphical user interface navigation method
US20040181515A1 (en) * 2003-03-13 2004-09-16 International Business Machines Corporation Group administration of universal resource identifiers with members identified in search result
US7028029B2 (en) * 2003-03-28 2006-04-11 Google Inc. Adaptive computation of ranking
US7451130B2 (en) * 2003-06-16 2008-11-11 Google Inc. System and method for providing preferred country biasing of search results
US7293253B1 (en) * 2003-09-12 2007-11-06 Nortel Networks Limited Transparent interface migration using a computer-readable mapping between a first interface and a second interface to auto-generate an interface wrapper
US7346839B2 (en) * 2003-09-30 2008-03-18 Google Inc. Information retrieval based on historical data
US7693827B2 (en) * 2003-09-30 2010-04-06 Google Inc. Personalization of placed content ordering in search results
US20050071328A1 (en) * 2003-09-30 2005-03-31 Lawrence Stephen R. Personalization of web search
US7552109B2 (en) * 2003-10-15 2009-06-23 International Business Machines Corporation System, method, and service for collaborative focused crawling of documents on a network
US20050086192A1 (en) * 2003-10-16 2005-04-21 Hitach, Ltd. Method and apparatus for improving the integration between a search engine and one or more file servers
US20050144162A1 (en) * 2003-12-29 2005-06-30 Ping Liang Advanced search, file system, and intelligent assistant agent
US20060047649A1 (en) * 2003-12-29 2006-03-02 Ping Liang Internet and computer information retrieval and mining with intelligent conceptual filtering, visualization and automation
US7483891B2 (en) * 2004-01-09 2009-01-27 Yahoo, Inc. Content presentation and management system associating base content and relevant additional content
US7499913B2 (en) * 2004-01-26 2009-03-03 International Business Machines Corporation Method for handling anchor text
US7310632B2 (en) * 2004-02-12 2007-12-18 Microsoft Corporation Decision-theoretic web-crawling and predicting web-page change
US7281002B2 (en) * 2004-03-01 2007-10-09 International Business Machine Corporation Organizing related search results
US7257577B2 (en) * 2004-05-07 2007-08-14 International Business Machines Corporation System, method and service for ranking search results using a modular scoring system
US7363296B1 (en) * 2004-07-01 2008-04-22 Microsoft Corporation Generating a subindex with relevant attributes to improve querying
US7472375B2 (en) * 2005-03-29 2008-12-30 Intel Corporation Creating managed code from native code
US7774713B2 (en) * 2005-06-28 2010-08-10 Microsoft Corporation Dynamic user experience with semantic rich objects
US7945531B2 (en) * 2005-09-16 2011-05-17 Microsoft Corporation Interfaces for a productivity suite application and a hosted user interface

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050091576A1 (en) 2003-10-24 2005-04-28 Microsoft Corporation Programming interface for a computer platform

Also Published As

Publication number Publication date
CN101322096B (zh) 2012-10-10
CN101322096A (zh) 2008-12-10
WO2007067578A1 (en) 2007-06-14
US8095565B2 (en) 2012-01-10
US20070130205A1 (en) 2007-06-07
KR20080071133A (ko) 2008-08-01

Similar Documents

Publication Publication Date Title
KR101331260B1 (ko) 메타데이터를 이용하여 사용자 인터페이스를 렌더링하기위한 장치, 사용자 인터페이스를 생성하는 방법, 및 컴퓨터판독 가능 매체
Blanchette et al. C++ GUI programming with Qt 4
Hashimi et al. Pro Android 3
US6854123B1 (en) Method, system, and program for mapping standard application program interfaces (APIs) to user interface APIs
EP3053028B1 (en) Rendering interpreter for visualizing data provided from restricted environment container
US6957439B1 (en) Method, system, and program for mapping objects in different language formats
US9910833B2 (en) Automatically rendering web and/or hybrid applications natively in parallel
US9536023B2 (en) Code generation for using an element in a first model to call a portion of a second model
JP5697661B2 (ja) プラットフォームの拡張性フレームワーク
KR20050039551A (ko) 컴퓨터 플랫폼용 프로그래밍 인터페이스
US20080127060A1 (en) Dynamic mating of a modified user interface with pre-modified user interface code library
US6941520B1 (en) Method, system, and program for using a user interface program to generate a user interface for an application program
Michaelis Essential C# 7.0
KR20060047998A (ko) 문서에 문맥 정보를 삽입하는 방법 및 시스템
Himschoot Microsoft Blazor
JP2006526192A (ja) ユーザインターフェースプロパティをデータにより制御するためのシステムおよび方法
Chaganti Google Web Toolkit GWT Java AJAX Programming
JP2007538314A (ja) 汎用ユーザインターフェースコマンドアーキテクチャ
CN114489619A (zh) 一种界面视图显示方法及终端设备、计算机可读存储介质
Sunderaraman Practical Ext JS 4
JP5010625B2 (ja) ユーザインターフェースプロパティをデータにより制御するためのプログラムを格納した記録媒体およびシステム
Fergus et al. The Definitive Guide to the. NET Compact Framework
Chernetskyi Web application for organizing and administrating of language courses
Aimonetti MacRuby: The Definitive Guide: Ruby and Cocoa on OS X
Moroney Foundations of Atlas: Rapid Ajax Development with ASP. NET 2.0

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

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20171018

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20181018

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20191016

Year of fee payment: 7