KR20070008542A - 멀티-타이어 네트워크화된 서비스를 생성 및 제공하기 위한방법 및 시스템 - Google Patents

멀티-타이어 네트워크화된 서비스를 생성 및 제공하기 위한방법 및 시스템 Download PDF

Info

Publication number
KR20070008542A
KR20070008542A KR1020067014098A KR20067014098A KR20070008542A KR 20070008542 A KR20070008542 A KR 20070008542A KR 1020067014098 A KR1020067014098 A KR 1020067014098A KR 20067014098 A KR20067014098 A KR 20067014098A KR 20070008542 A KR20070008542 A KR 20070008542A
Authority
KR
South Korea
Prior art keywords
presentation
tag
component
application
tire
Prior art date
Application number
KR1020067014098A
Other languages
English (en)
Other versions
KR101145476B1 (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 KR20070008542A publication Critical patent/KR20070008542A/ko
Application granted granted Critical
Publication of KR101145476B1 publication Critical patent/KR101145476B1/ko

Links

Images

Classifications

    • AHUMAN NECESSITIES
    • A47FURNITURE; DOMESTIC ARTICLES OR APPLIANCES; COFFEE MILLS; SPICE MILLS; SUCTION CLEANERS IN GENERAL
    • A47GHOUSEHOLD OR TABLE EQUIPMENT
    • A47G9/00Bed-covers; Counterpanes; Travelling rugs; Sleeping rugs; Sleeping bags; Pillows
    • A47G9/02Bed linen; Blankets; Counterpanes
    • DTEXTILES; PAPER
    • D03WEAVING
    • D03DWOVEN FABRICS; METHODS OF WEAVING; LOOMS
    • D03D1/00Woven fabrics designed to make specified articles
    • DTEXTILES; PAPER
    • D03WEAVING
    • D03DWOVEN FABRICS; METHODS OF WEAVING; LOOMS
    • D03D15/00Woven fabrics characterised by the material, structure or properties of the fibres, filaments, yarns, threads or other warp or weft elements used
    • D03D15/50Woven fabrics characterised by the material, structure or properties of the fibres, filaments, yarns, threads or other warp or weft elements used characterised by the properties of the yarns or threads
    • D03D15/54Woven fabrics characterised by the material, structure or properties of the fibres, filaments, yarns, threads or other warp or weft elements used characterised by the properties of the yarns or threads coloured
    • DTEXTILES; PAPER
    • D03WEAVING
    • D03DWOVEN FABRICS; METHODS OF WEAVING; LOOMS
    • D03D5/00Selvedges
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/958Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
    • 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/445Program loading or initiating
    • G06F9/44568Immediately runnable code
    • G06F9/44578Preparing or optimising for loading
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • DTEXTILES; PAPER
    • D10INDEXING SCHEME ASSOCIATED WITH SUBLASSES OF SECTION D, RELATING TO TEXTILES
    • D10BINDEXING SCHEME ASSOCIATED WITH SUBLASSES OF SECTION D, RELATING TO TEXTILES
    • D10B2503/00Domestic or personal
    • D10B2503/06Bed linen
    • D10B2503/062Fitted bedsheets
    • 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/99944Object-oriented database structure

Abstract

PC 또는 PDA 상의 브라우저와 같이, 사용자 인터페이스와의 상호작용을 위한 멀티-타이어 애플리케이션에 관한 것이다. 이 애플리케이션은 (JSP/서브렛 엔진을 갖는 웹 서버와 같은) 프리젠테이션 타이어와, 사용자 인터페이스 상에서 후속 프리젠테이션을 위한 데이터를 조작하기 위한 (애플리케이션 서버와 같은) 비지니스 로직 타이어를 포함한다. 방향 모듈은, 비지니스 로직 타이어를 이용하여 데이터 처리 함수를 수행하고 데이터 처리 출력을 제공하기 위한 대응하는 함수 컴포넌트를 지시하는 함수 방향과, 사용자 인터페이스를 위한 프리젠테이션 요소를 생성하기 위하여, 적용 가능하다면, 데이터 처리 출력을 프리젠테이션 템플릿에 포함하기 위한 대응하는 프리젠테이션 컴포넌트를 지시하는 프리젠테이션 방향을 포함하는 복수의 결합된 방향을 가진다. 함수 컴포넌트 및 프리젠테이션 컴포넌트는 독립적이고 서로 분리되어 있으며, 함수 컴포넌트인 접속은 데이터를 생성하고 프리젠테이션 컴포넌트는 출력 데이터를 소비한다. 프리젠테이션 컴포넌트는 일반적인 종류의 프리젠테이션 요소의 추상 표현이고, 각각의 특정 프리젠테이션 요소는 상이한 프리젠테이션 템플릿에 저장된 레이아웃 및 (마크업 언어와 같은) 포맷을 가지며, 프리젠테이션 컴포넌트를 위한 특정 프리젠테이션 템플릿에 대한 레퍼런스는 프리젠테이션 타이어에서의 처리시에 결정될 수 있다.
멀티-타이어 애플리케이션, 프리젠테이션 타이어, 비지니스 로직 타이어, 방향 모듈, 함수 컴포넌트, 프리젠테이션 컴포넌트

Description

멀티-타이어 네트워크화된 서비스를 생성 및 제공하기 위한 방법 및 시스템{METHOD AND SYSTEM FOR CREATING AND PROVIDING A MULTI-TIER NETWORKED SERVICE}
본 발명은 멀티-타이어(multi-tier) 네트워크화된 서비스를 생성 및 제공하기 위한 방법 및 시스템에 관한 것이다.
네트워크화된 서비스를 전달하기 위한 인터넷 또는 웹 기반 클라이언트 애플리케이션은 일반적으로 2개의 주요 컴포넌트(component)를 가진다. 첫 번째는 클라이언트 애플리케이션의 "룩 앤드 필(look and feel)" 컴포넌트이다. 두 번째 컴포넌트는 클라이언트의 애플리케이션 기능이다. "룩 앤드 필"은 전통적으로, 애플리케이션의 프리젠테이션(presentation) 요소를 준비 및 생성하기 위한 필수적인 기술을 가진 웹 설계자의 영역이었다. 클라이언트 애플리케이션의 기능은 전통적으로, 클라이언트 애플리케이션의 기능적인 요소를 생성, 이행 및 수집하는 웹 개발자에 의해 취급되었다.
클라이언트 애플리케이션의 프리젠테이션(presentation) 및 함수 요소(functional element)는 통상적으로 동일한 애플리케이션 파일에 포함되며, 그 결과, 설계자 및 개발자는 동일한 파일 상에서 작업한다. 이러한 접근법과 연관된 몇 가지 잠재적인 단점이 있다. 예를 들어, 클라이언트 애플리케이션의 임의의 요소(프리젠테이션 또는 함수)가 변경되면, 전체 클라이언트 애플리케이션 클라이언트는 다시 컴파일(compile) 되어야 할 수도 있다. 또한, 버전 제어(version control), 작업의 중복 및 클라이언트 애플리케이션 확장성과 관련된 잠재적인 문제도 있을 수 있다.
자바(Java) 및 자바 서버 페이지(Java Server Page)의 출현은 이러한 문제의 일부를 해결하였다. 자바 빈(Java Bean) 또는 엔터프라이즈 자바 빈(enterprise Java Bean)과 관련된 자바 서버 페이지는 클라이언트 애플리케이션의 다수의 함수 요소가 프리젠테이션 요소와 분리되는 것을 허용함으로써, 자바 서버 페이지의 프리젠테이션 요소를 웹 설계자에 대하여 자유롭게 하면서, 개발자가 함수 유닛(예를 들어 자바 빈)을 생성 및 수정하도록 허용하였다. 그러나, 이 방식은 전통적인 클라이언트 애플리케이션 방식과 동일한 다수의 단점을 계속 경험한다. 프리젠테이션 또는 함수 요소가 변경되면, 자바 서버 페이지를 보정하고 가능하다면, 재생성하는 것이 필요할 수도 있다. 자바 서버 페이지는 함수 및 프리젠테이션 요소를 여전히 포함하므로, 버전 제어 및 작업 중복의 문제가 잠재적으로 남아있다.
본 발명의 목적은 상기 제시된 단점의 적어도 일부를 제거하거나 경감시키기 위한 멀티-타이어 애플리케이션을 제공하는 것이다.
클라이언트 애플리케이션의 프리젠테이션 및 함수 요소는 통상적으로 동일한 애플리케이션 파일에 포함되며, 그 결과, 설계자 및 개발자는 동일한 파일 상에서 작업할 수 있다. 이 방식과 연관된 몇몇 잠재적인 단점이 있다. 예를 들어, 클라이언트 애플리케이션의 임의의 요소(프리젠테이션 또는 함수)가 변경되면, 전체 클라이언트 애플리케이션 클라이언트는 다시 컴파일되어야 할 수도 있다. 또한, 버전 제어, 작업의 중복, 및 클라이언트 애플리케이션 확장성에 관한 잠재적인 문제가 있을 수도 있다. 현재의 클라이언트 애플리케이션과 반대로, PC 또는 PDA 상의 브라우저(browser)와 같이, 사용자 인터페이스와의 상호작용을 위한 멀티-타이어 애플리케이션이 제공된다. 이 애플리케이션은 (JSP/서브렛(servlet) 엔진을 갖는 웹 서버와 같은) 프리젠테이션 타이어와, 사용자 인터페이스 상에서 후속 프리젠테이션을 위한 데이터를 조작하기 위한 (애플리케이션 서버와 같은) 비지니스 로직 타이어(business logic tier)를 포함한다. 방향 모듈은, 비지니스 로직 타이어를 이용하여 데이터 처리 함수를 수행하고 데이터 처리 출력을 제공하기 위한 대응하는 함수 컴포넌트(function component)를 지시하는 함수 방향과, 사용자 인터페이스를 위한 프리젠테이션 요소를 생성하기 위하여, 적용 가능하다면, 데이터 처리 출력을 프리젠테이션 템플릿(template)에 포함하기 위한 대응하는 프리젠테이션 컴포넌트를 지시하는 프리젠테이션 방향을 포함하는 복수의 결합된 방향을 가진다. 함수 컴포넌트 및 프리젠테이션 컴포넌트는 독립적이고 서로 분리되어 있으며, 함수 컴포넌트인 접속은 데이터를 생성하고 프리젠테이션 컴포넌트는 출력 데이터를 소비한다. 프리젠테이션 컴포넌트는 일반적인 종류의 프리젠테이션 요소의 추상 표현(abstract representation)이고, 각각의 특정 프리젠테이션 요소는 상이한 프리젠테이션 템플릿에 저장된 레이아웃 및 포맷(예를 들어, 마크업 언어(markup language))를 가지며, 프리젠테이션 컴포넌트를 위한 특정 프리젠테이션 템플릿에 대한 레퍼런스는 프리젠테이션 타이어에서의 처리시에 결정될 수 있다.
본 발명에 따르면, 네트워크 상에서 사용자 인터페이스와의 상호작용을 위한 컴퓨터 실행가능 멀티-타이어 애플리케이션으로서, 애플리케이션 프리젠테이션 타이어를 포함하는 애플리케이션을 호스팅(hosting)하기 위한 방법이 제공된다. 이 방법은, 대응하는 제1 프리젠테이션 요소를 정의하기 위한 제1 프리젠테이션 명령을 포함하는 제1 프리젠테이션 템플릿을 선택하는 단계; 제1 프리젠테이션 명령을 처리하기 위한 애플리케이션 프리젠테이션 타이어의 제1 프리젠테이션 컴포넌트를 선택하는 단계; 제1 프리젠테이션 컴포넌트를 제1 템플릿에 링크(link)하고, 사용자 인터페이스에 대한 후속 전달을 위한 멀티-타이어 애플리케이션의 실행중에, 제1 컴포넌트는 제1 프리젠테이션 명령을 처리하여 제1 프리젠테이션 요소를 생성하는 단계를 포함한다.
이 방법은, 대응하는 제2 프리젠테이션 요소를 정의하기 위한 제2 프리젠테이션 명령을 포함하는 제2 프리젠테이션 템플릿을 선택하는 단계; 제2 프리젠테이션 명령을 처리하기 위한 제1 프리젠테이션 컴포넌트를 선택하는 단계; 제1 컴포넌트를 제2 템플릿에 링크하고, 사용자 인터페이스에 대한 후속 전달을 위한 멀티-타이어 애플리케이션의 실행중에, 제1 컴포넌트는 제2 프리젠테이션 명령을 처리하여 제2 프리젠테이션 요소를 생성하는 단계를 더 포함한다.
바람직한 실시예에서, 프리젠테이션 템플릿은 파일 시스템의 컴퓨터 판독가능 파일이며, 프리젠테이션 명령은 제1 프리젠테이션 요소의 레이아웃, 스타일 및 포맷을 포함하는 그룹으로부터 선택된다. 또 다른 실시예에서, 프리젠테이션 명령은 HTML, HDML 및 WML을 포함하는 그룹으로부터 선택되는 마크업 언어로 기술되어 있다.
제1 프리젠테이션 컴포넌트는 컴퓨터 실행가능 파일이다. 바람직한 실시예에서, 컴퓨터 실행가능 파일은 자바 빈이다.
상기 방법은 애플리케이션 로직 타이어를 포함할 수도 있으며, 입력 데이터를 선택하는 단계; 입력 데이터를 처리하기 위한 애플리케이션 로직 타이어의 제1 함수 컴포넌트를 선택하는 단계; 입력 데이터를 제1 함수 컴포넌트에 링크하고, 멀티-타이어 애플리케이션의 실행중에, 제1 함수 컴포넌트가 입력 데이터를 처리하여 출력 데이터를 생성하는 단계; 출력 데이터를 포함하기 위하여, 대응하는 제1 프리젠테이션 요소를 더 정의하기 위한 출력 데이터 프리젠테이션 명령을 처리하는 제1 프리젠테이션 컴포넌트를 지시하고, 멀티-타이어 애플리케이션의 실행중에, 제1 프리젠테이션 컴포넌트가 출력 데이터 프리젠테이션 명령을 처리하여 출력 데이터를 포함하는 제1 프리젠테이션 요소를 생성하는 단계를 더 포함한다.
제1 함수 컴포넌트는 컴퓨터 실행가능 파일이다. 바람직한 실시예에서, 컴퓨터 실행가능 파일은 자바 빈이다.
또한, 본 발명은, 네트워크 상에서 사용자 인터페이스와의 상호작용을 위한 컴퓨터 실행가능 멀티-타이어 애플리케이션으로서, 애플리케이션 프리젠테이션 타이어를 포함하는 애플리케이션을 호스팅하기 위한 시스템을 제공한다. 이 시스템은, 대응하는 제1 프리젠테이션 요소를 정의하기 위한 제1 프리젠테이션 명령을 포함하는 제1 프리젠테이션 템플릿; 제1 프리젠테이션 명령을 처리하기 위한 애플리케이션 프리젠테이션 타이어의 제1 프리젠테이션 컴포넌트; 및, 제1 프리젠테이션 컴포넌트를 제1 템플릿에 링크하기 위한 제1방향 요소를 포함하고, 사용자 인터페이스에 대한 후속 전달을 위한 멀티-타이어 애플리케이션의 실행중에, 제1 컴포넌트는 제1 프리젠테이션 명령을 처리하여 제1 프리젠테이션 요소를 생성한다.
또한, 상기 시스템은, 대응하는 제2 프리젠테이션 요소를 정의하기 위한 제2 프리젠테이션 명령을 포함하는 제2 프리젠테이션 템플릿; 및, 제1 컴포넌트를 제2 템플릿에 링크하기 위한 제2방향 요소를 포함하고, 사용자 인터페이스에 대한 후속 전달을 위한 멀티-타이어 애플리케이션의 실행중에, 제1 컴포넌트는 제2 프리젠테이션 명령을 처리하여 제2 프리젠테이션 요소를 생성한다.
상기 시스템은, 입력 데이터를 처리하기 위한 애플리케이션 로직 타이어의 제1 함수 컴포넌트; 및, 입력 데이터를 제1 함수 컴포넌트에도 링크하는 제1방향 요소를 더 포함할 수도 있고, 멀티-타이어 애플리케이션의 실행중에, 제1 함수 컴포넌트는 입력 데이터를 처리하여 출력 데이터를 생성한다. 출력 데이터 프리젠테이션 명령은 출력 데이터를 포함하기 위하여, 대응하는 제1 프리젠테이션 요소를 더 정의한다.
발명의 바람직한 실시예의 이러한 그리고 다른 특징은 부속된 도면을 참조하여 이루어지는 아래의 상세한 설명에서 더욱 명확해질 것이다.
도 1은 본 발명의 일 실시예에 따른 시스템의 개략도이다.
도 2는 도 1의 시스템을 확대한 개략도이다.
도 3은 본 발명의 일 실시예에 따른 요구된 자원을 처리하는 단계의 개략도이다.
도 4는 본 발명의 일 실시예에 따른 멀티-타이어 애플리케이션의 각 타이어 내부의 요소의 개략도이다.
도 5는 도 1의 시스템의 대안적인 실시예의 개략도이다.
도 6a는 자바 서버 페이지를 개략적으로 예시한 것이다.
도 6b는 본 발명의 일 실시예에 따른 자바 서버 페이지를 개략적으로 예시한 것이다.
도 7은 본 발명의 일 실시예에 따른 함수 컴포넌트의 논리도이다.
도 8의 (a)는 본 발명의 일 실시예에 따른 정적 프리젠테이션 컴포넌트를 개략적으로 예시한 것이다.
도 8의 (b)는 본 발명의 일 실시예에 따른 동적 프리젠테이션 컴포넌트를 개략적으로 예시한 것이다.
도 9는 본 발명의 일 실시예에 따른 자바 서버 페이지를 처리하는 출력을 개략적으로 예시한 것이다.
도 10은 본 발명의 일 실시예에 따른 자바 서버 페이지를 이용한 클라이언트 애플리케이션의 논리도이다.
도 11은 본 발명의 일 실시예에 따른 클라이언트 애플리케이션의 처리 단계의 논리도이다.
도 12는 본 발명의 일 실시예에 따른 클라이언트 애플리케이션의 처리 단계의 출력의 개략도이다.
도 13은 본 발명의 일 실시예에 따라 예시된 시스템과, 클라이언트 애플리케이션의 처리된 출력을 확대한 개략도이다.
도 14는 본 발명의 일 실시예에 따른 클라이언트 애플리케이션의 요소와, 연관된 시스템의 개략도이다.
도 15는 본 발명의 일 실시예에 따른 방법의 단계를 예시하는 순서도이다.
도 16은 본 발명의 일 실시예에 따른 도 15의 방법의 다른 단계를 예시하는 순서도이다.
도 17은 본 발명의 일 실시예에 따른 도 15의 방법의 또 다른 단계를 예시하는 순서도이다.
도 18은 본 발명의 일 실시예에 따른 도 17의 방법의 다른 단계를 예시하는 순서도이다.
도 1을 참조하면, 시스템(10)의 개략도가 예시되어 있다. 시스템(10)은 당업자에게 알려져 있는 것과 같은 컴퓨팅 네트워크이다. 개별적으로 동작하는 네트워크 단말(11)은 통신 네트워크(13)를 통해 원격지에 위치한 자원을 액세스할 수 있다. 통신 네트워크(13)는 인터넷, 월드 와이드 웹(World Wide Web), LAN, WAN, VPN 일 수 있다.
네트워크 단말(11)은, 퍼스널 컴퓨터, 랩톱(lap top) 컴퓨터, 팜톱(palm top) 컴퓨터, 핸드헬드(hand held) 장치, 무선 텍스트 메신저 셀룰러 폰 등과 같이, 원격지에 위치한 자원과 통신하는 수단과, 통신 네트워크(13)를 통해 요구를 송신하는 수단을 포함하는, 당업자에게 알려져 있는 네트워크 어플라이언스(network appliance)일 수 있다.
원격지에 위치한 자원은, 웹 서버(15)에 접속되어 있는(또는 통신하는) 애플리케이션 서버(19)에 의해 (데이터베이스 서버(119)를 통해) 액세스되는 데이터베이스(17)에 위치하고 있는 웹 서버(15) 상에 위치한 웹 페이지 또는 데이터일 수 있다.
다른 방안으로서, 애플리케이션 서버(19) 및 연관된 데이터베이스(17)는 웹 서버(15)를 필요로 하지 않고, 통신 네트워크(13)를 통해 직접 액세스될 수도 있다. 예를 들어, 개별적으로 동작하는 퍼스널 컴퓨터(즉, 단말(11))는, 네트워크(13)를 통해 통신하기 위한 수단(예를 들어, 모뎀)과, 자원을 위한 요구를 자원 호스트에 송신하기 위한 실행가능 소프트웨어를 포함한다면, 인터넷(즉, 통신 네트워크(13))을 통해 원격지에 위치한 자원을 액세스할 수도 있다.
원격지에 위치한 자원은 정적 HTML 문서(static HTML document)와 같이 간단할 수도 있다. 이와 달리, 요구된 자원은, 주어진 사용자의 현재의 세션(session)에 특수한 몇몇 응답의 생성을 필요로 하는 온라인 거래를 완료하는 것과 같은, 더 큰 서비스의 작은 부분을 포함할 수도 있다. 이 거래에 포함된 데이터는 정적이지 않고 동적이며, 다시 말하면, 그 데이터는 사용자의 특수한 요구에 응답하여 생성된다. 요구된 데이터는 데이터베이스 서버(119)를 통해 애플리케이션 서버(19)에 의해 액세스 가능한 데이터베이스(17)에 상주(reside)할 수도 있다. 사용자가 미가공 데이터(raw data)를 요구하거나, 그 데이터가 처리될 수도 있으며, 처리된 결과는 사용자의 요구에 대한 응답에 포함된다. 요구된 데이터가 처리되거나 응답으로 포함되도록 하는 몇 개의 방법이 존재한다.
도 2를 참조하면, 시스템(10)을 확대한 개략도는 요구가 처리되는 이러한 하나의 방법으로서, 자바 웹 서버 및 자바 서버 페이지(JSP : Java Server Page) 기술을 채용하는 방법을 예시한 것이다. 웹 서버(15)는, 요구된 자원(즉, JSP(25))을 처리하고, 단말(11)에 리턴(return)되는 응답을 생성하는 자바 서버 페이지 엔진(21) 및 서브렛 엔진(23)을 포함한다.
도 3은 요구된 자원(25), 생성된 응답, 데이터 출력(27)의 확대 도면을 개략적으로 예시한 것이다. 단말(11)을 동작시키는 사용자는 통신 네트워크(13)를 통해 원격지에 위치한 자원(자바 서버 페이지(25))을 요구한다. JSP 엔진(21)을 실행하는 웹 서버(15)는 자원 요구를 수신하고, 요구된 자바 서버 페이지(25)를 검색하며, 그것을 판독하여 JSP 요소를 자바 코드(29)(.java)로 변환한다. 자바 코드 변환(29)은 당업자에게 알려져 있는 표준 컴파일러(compiler)를 이용하여 자바 서브렛(31)(.class)으로 컴파일된다. 다음으로, 서브렛(31)은 서브렛 엔진(23)과 같은 표준 API를 이용하여 실행된다. 서브렛이 실행될 때, 서브렛은 입력 데이터(33)를 처리하여 데이터 출력(27)을 생성하며, 바꾸어 말하면, 서브렛이 요구를 처리하여 응답을 생성한다. 다음으로, 출력(27)은 네트워크(13)를 통해 단말(11)로 보내진다.
도 4 및 도 13을 참조하면, 네트워크 상에서 사용자 인터페이스(11)와의 상호작용을 위한 컴퓨터 실행가능 멀티-타이어 애플리케이션(191)을 호스팅(hosting)하기 위한 시스템과, 애플리케이션 프리젠테이션 타이어(171) 및 애플리케이션 로직 타이어(181)를 포함하는 애플리케이션(191)과, 연관된 요소들이 본 발명의 바람직한 실시예에 따라 예시되어 있다. 시스템은, 대응하는 제1 프리젠테이션 요소 또는 출력(79)을 정의하기 위한 제1 프리젠테이션 명령을 포함하는 제1 프리젠테이션 템플릿(65); 제1 프리젠테이션 명령을 처리하기 위한 애플리케이션 프리젠테이션 타이어(171)의 제1 프리젠테이션 컴포넌트(61); 및, 제1 프리젠테이션 컴포넌트(161)를 제1 템플릿(65)에 링크하기 위한 제1방향 요소(161)를 포함하며, 사용자 인터페이스(11)에 대한 후속 전달을 위한 멀티-타이어 애플리케이션의 실행중에, 제1 컴포넌트(161)는 제1 프리젠테이션 명령을 처리하여 제1 프리젠테이션 요소를 생성한다.
바람직한 실시예에서, 시스템은, 대응하는 제2 프리젠테이션 요소 또는 출력(79)을 정의하기 위한 제2 프리젠테이션 명령을 포함하는 제2 프리젠테이션 템플릿(67); 및, 제1 프리젠테이션 컴포넌트(161)를 제2 템플릿(67)에 링크하기 위한 제2방향 요소를 포함하며, 사용자 인터페이스(11)에 대한 후속 전달을 위한 멀티-타이어 애플리케이션의 실행중에, 제1 컴포넌트(161)는 제2 프리젠테이션 명령을 처리하여 제2 프리젠테이션 요소 또는 출력(79)을 생성한다.
또 다른 실시예에서, 시스템은, 입력 데이터(33)를 처리하기 위한 애플리케이션 로직 타이어(181)의 제1 함수 컴포넌트(59); 및, 입력 데이터(33)를 제1 함수 컴포넌트(59)에 더 링크하는 제1방향 요소를 포함하며, 멀티-타이어 애플리케이션의 실행중에, 제1 함수 컴포넌트는 입력 데이터(33)를 처리하여 출력 데이터(27)를 생성한다. 출력 데이터 프리젠테이션 명령은 출력 데이터(27)를 포함하기 위하여, 대응하는 제1 프리젠테이션 요소 또는 출력을 더 정의한다.
도 4 및 도 15를 참조하면, 네트워크 상에서 사용자 인터페이스와의 상호작용을 위한 컴퓨터 실행가능 멀티-타이어 애플리케이션(191)으로서, 애플리케이션 프리젠테이션 타이어(171)를 포함하는 애플리케이션(191)을 호스팅하기 위한 방법의 순서도가 본 발명의 바람직한 실시예에 따라 예시되어 있다. 상기 방법은, 대응하는 제1 프리젠테이션 요소를 정의하기 위한 제1 프리젠테이션 명령을 포함하는 제1 프리젠테이션 템플릿(65)을 선택하는 단계(단계 100); 제1 프리젠테이션 명령을 처리하기 위한 애플리케이션 프리젠테이션 타이어(171)의 제1 프리젠테이션 컴포넌트(161)를 선택하는 단계(단계 200); 및, 제1 프리젠테이션 컴포넌트를 제1 템플릿(65)에 링크하는 단계(단계 300)를 포함하며, 사용자 인터페이스에 대한 후속 전달을 위한 멀티-타이어 애플리케이션의 실행중에, 제1 컴포넌트(161)는 제1 프리젠테이션 명령을 처리하여 제1 프리젠테이션 요소 또는 출력(79)을 생성한다.
도 4 및 도 16을 참조하면, 도 15의 방법의 추가적인 단계의 순서도가 예시되어 있다. 상기 단계는, 대응하는 제2 프리젠테이션 요소 또는 출력(79)을 정의하기 위한 제2 프리젠테이션 명령을 포함하는 제2 프리젠테이션 템플릿(67)을 선택하는 단계(단계 101); 제2 프리젠테이션 명령을 처리하기 위한 제1 프리젠테이션 컴포넌트(161)를 선택하는 단계(단계 201); 및, 제1 컴포넌트(161)를 제2 템플릿(67) 에 링크하는 단계(단계 301)를 더 포함하며, 사용자 인터페이스에 대한 후속 전달을 위한 멀티-타이어 애플리케이션(191)의 실행중에, 제1 컴포넌트(161)는 제2 프리젠테이션 명령을 처리하여 제2 프리젠테이션 요소 또는 출력(79)을 생성한다.
바람직한 실시예에서, 프리젠테이션 템플릿(65, 67)은 파일 시스템의 컴퓨터 판독가능 파일이며, 프리젠테이션 명령은 이하의 것으로 한정되지는 않지만, 제1 프리젠테이션 요소의 레이아웃, 스타일 및 포맷과 같은 것이다. 바람직한 실시예에서, 프리젠테이션 명령은 이하의 것에 한정되지는 않지만, HTML, HDML 및 WML과 같은 것을 포함하는 그룹으로부터 선택된 마크업 언어로 기술된다.
제1 프리젠테이션 컴포넌트(161)는 컴퓨터 실행가능 파일이다. 바람직한 실시예에서, 컴퓨터 실행가능 파일은 자바 빈이다.
제1 프리젠테이션 컴포넌트(161)는 방향 요소(57)에 의해 제1 프리젠테이션 템플릿(65)에 링크된다. 방향 요소(57)는 제1 프리젠테이션 템플릿(65)의 위치를 지정하고, 제1 프리젠테이션 컴포넌트(161)를 지정된 위치에 지시한다. 바람직한 실시예에서, 방향 요소(57)는 제1 프리젠테이션 컴포넌트 태그(57)이며, 이 태그는 이하의 것에 한정되지는 않지만, 페이지 태그(page Tag), 제어 태그(control Tag), 속성 태그(attribute Tag), 페이지생성 태그(producePage Tag), 클리어 태그(clear Tag), 및 인터셉터 태그(interceptor Tag)와 같은 태그이다.
제1 프리젠테이션 컴포넌트 태그(57)는 멀티-타이어 애플리케이션을 구현하는 방향 모듈의 지시자(directive)로서 표현된다. 바람직한 실시예에서, 방향 모듈은 자바 서버 페이지(49)이다.
도 4 및 도 17을 참조하면, 도 15의 방법의 추가적인 단계의 순서도가 예시되어 있으며, 멀티-타이어 애플리케이션(191)은 애플리케이션 로직 타이어(181)를 더 포함한다. 상기 단계는, 입력 데이터(33)를 선택하는 단계(단계 102); 입력 데이터(33)를 처리하기 위한 애플리케이션 로직 타이어(181)의 제1 함수 컴포넌트(59)를 선택하는 단계(단계 202); 및, 입력 데이터(33)를 제1 함수 컴포넌트(59)에 링크하는 단계(단계 302)를 더 포함하며, 멀리-타이어 애플리케이션(191)의 실행중에, 제1 함수 컴포넌트(59)는 입력 데이터(33)를 처리하여 출력 데이터(27)를 생성한다.
도 4 및 도 18을 참조하면, 도 17의 방법의 추가적인 단계의 순서도가 예시되어 있으며, 제1 템플릿은, 출력 데이터(27)를 포함하기 위하여, 대응하는 제1 프리젠테이션 요소를 더 정의하기 위한 출력 데이터 프리젠테이션 명령을 더 포함한다. 상기 방법은, 제1 프리젠테이션 컴포넌트(161)가 출력 데이터 프리젠테이션 명령을 처리하도록 지시하는 단계(단계 403)를 더 포함하며, 멀티-타이어 애플리케이션(191)의 실행중에, 제1 프리젠테이션 컴포넌트(161)는 출력 데이터 프리젠테이션 명령을 처리하여 출력 데이터(33)를 포함하는 제1 프리젠테이션 요소 또는 출력(79)을 생성한다.
바람직한 실시예에서, 출력 데이터 프리젠테이션 명령은, 출력 데이터가 제시되는 제어(control)로서, 이하의 것에 한정되지는 않지만, 텍스트 필드(Text field), 패스워드 필드(Password field), 숨겨진 필드(Hidden field), 텍스트 영역(Text area), 테이블(Table), 리스트 박스(List box), 체크 박스(Check box), 라 디오 버튼(Radio button), 이미지(Image), 푸시 버튼(Push button), 이미지 버튼(Image button), 제출 버튼(Submit button), 리셋 버튼(Reset button), 링크(Link) 및 스팬(Span)과 같은 제어를 정의한다.
제1 함수 컴포넌트(59)는 컴퓨터 실행가능 파일이다. 바람직한 실시예에서, 컴퓨터 실행가능 파일은 자바 빈이다.
제1 함수 컴포넌트(59)는 방향 요소(55)에 의해 입력 데이터(33)에 링크된다. 방향 요소(55)는 입력 데이터(33)의 위치를 지정하며, 제1 함수 컴포넌트를 지정된 위치로 지시한다. 바람직한 실시예에서, 방향 요소(55)는, 이하의 것에 한정되지는 않지만, 초기화 태그(init Tag), 호출 태그(call Tag), 필수 태그(prerequisite Tag), 디버그 태그(debug Tag), 에러 태그(error Tag), 값 취득 태그(getValue Tag), 이프 태그(if Tag)와 같은 제1 함수 컴포넌트 태그(55)이다.
바람직한 실시예에서, 제1 함수 컴포넌트 태그(55)는 멀티-타이어 애플리케이션을 구현하는 방향 모듈의 지시자로서 표현된다. 방향 모듈은 자바 서버 페이지(49)이다.
도 5를 참조하면, 시스템(10)의 또 다른 대안적인 실시예가 애플리케이션 서버 서브렛 시스템(200)으로서 개략적으로 예시되어 있다. JSP 엔진(21)은 애플리케이션 서버(19) 상에 상주한다. 서브렛 엔진(23)은, 자바 서버 페이지(25)의 변환, 컴파일 및 실행시에, JSP 엔진(21)과 협력한다. 시스템(200)의 원격지에 위치한 자원은, 데이터베이스 서버(119)를 통해 애플리케이션 서버(19)에 의해 직접 액세스되며 서브렛(31)에 의해 처리되는 로컬 데이터베이스(17) 상에 위치한 데이터를 포 함할 수도 있다. 이 경우의 출력은 이메일(e-mail)과 같은 또 다른 메커니즘을 통해 사용자에게 리턴된다.
도 6a를 참조하면, 당업자에게 알려져 있는 것과 같은 자바 서버 페이지 JSP(39)의 개략도가 예시되어 있다. JSP(39)는, (HTML, WML 및 XML과 같은 텍스트 기반 포맷으로 표현될 수 있는) 정적 템플릿 데이터 및 (JSP 엔진(21)에 의해 번역되는) JSP 요소를 포함하는 텍스트 문서이다.
처리된 출력의 룩 앤드 필(look and feel)을 정의하는 정적 컨텐츠(static content)는, JSP(39)의 이러한 부분을 마크업(ML : markup) 문장(statement)을 이용하여 기술하여 생성된다. 예를 들어, HTML이 ML로서 선택되면, JSP의 템플릿 부분은 HTML 문장 및 구문(syntax)을 이용하여 스크립트(script) 된다.
동적 컨텐츠(dynamic content)는 자바 프로그래밍 언어 객체 특성을 액세스하여 생성된다. JSP(39)의 동적 요소는, 정보를 JSP 엔진(21)에 전달하는 JSP 지시자(41)와, 예를 들어, 자바 빈을 서버 상에서 인스턴스화(instantiate) 하기 위하여 상용되는 표준 태그 또는 주문형 태그로서 구현될 수도 있는 JSP 태그(45)와, 태그에 의해 지원되지 않는 함수를 수행하는 자바 코드의 작은 스크립트(script)인 스크립트렛(scriptlet)(47)을 대표적으로 포함한다.
JSP 지시자(41)는 (버퍼 및 스레드(thread) 정보 또는 에러 핸들링과 같은 페이지 특정 정보를 전달하는) page_directive(페이지_지시자)와, (JSP 스크립트 언어를 지정하는) language_directive(언어_지시자)와, (페이지에 외부 문서를 포함하기 위하여 사용될 수 있는) include_directive(포함_지시자)와, (페이지가 호 출할 수 있는 주문형 태그(custom tag)의 라이브러리(library)를 나타내는) taglib_directive(태그리브_지시자)를 포함할 수도 있다.
JSP 태그(45)는 JSP 처리의 대부분을 구현하는 것을 담당하고 있다. 이것은 다수의 표준 태그(예를 들어, useBean, setProperty 및 getProperty)를 포함한다. 주문형 태그는 특수한 목적을 위해 설계 및 구현될 수도 있다.
도 6b를 참조하면, 본 발명의 바람직한 실시예에 따른 JSP(49)가 예시되어 있다. 본 발명의 바람직한 실시예에서, JSP(49)는 임의의 마크업 언어 문장(43)을 포함하지 않으며, 자바 스크립트렛(47)도 포함하지 않는다. JSP(49)의 모든 동작 또는 함수 요소와, 프리젠테이션 요소는 별개의 함수 컴포넌트 및 프리젠테이션 컴포넌트로서 각각 저장된다. 컴포넌트(59 및 61)는 각각의 주문형 함수 컴포넌트 태그 확장자(55) 및 프리젠테이션 컴포넌트 태그 확장자(57)를 통해 액세스되며, 이 확장자들은 함수 컴포넌트 태그리브-지시자(51) 및 프리젠테이션 컴포넌트 태그리브-지시자(53)를 각각 이용하여 차례로 지정된다.
따라서, 본 발명에 따라 조립된, 서브렛 클라이언트 애플리케이션의 아키텍처 내의 자바 서버 페이지(49)는 JSP 지시자 및 주문형 태그 확장자(55 및 57)만을 포함한다.
JSP 지시자
JSP(49) 지시자는 다음의 형태를 취한다: <%@directiveName
attribute="value"%>
여기서:
directiveName은 특정 지시자 명칭
attribute는 이 특정 지시자에 대한 속성이며,
지시자는 제로(zero) 또는 그 이상의 속성을 가질수도 있다.
value는 특정된 속성에 대한 특정 값이며,
속성은 정확하게 하나의 값을 가질 수도 있다.
JSP (49) 페이지 지시자
바람직한 실시예에서, 모든 JSP 처리 페이지(49)는 다음의 페이지 지시자와 함께 시작한다:
<%@ page session="true" buffer="buffer size kb"
autoFlush="true"
1 isThreadSafe="true" errorPage=".../errorPage.jsp" %>
여기서:
.../errorPage.jsp는 포착되지 않은 실행시간 예외일 경우에 호출될 또 다른 JSP 페이지에 대한 URL이다.
이것이 에러 JSP 페이지이면, 다음 속성이 페이지 지시자에 포함되어야 한다: isErrorPage="true"
JSP (49) taglib 지시자
taglib(태그리브) 지시자는 주문형 태그 확장자를 지정한다. 아래의 태그리브 지시자는 (페이지 지시자 바로 다음에) 모든 JSP 처리 페이지(49)에서 지정된다.
<%@ taglib uri="/servlet/FCTagsClient.jar" prefix="FC" %>
<%@ taglib uri="/servlet.PCTagsClient.jar" prefix="PC" %>
JSP (49) include 지시자
include(포함) 지시자는 또 다른 JSP 처리 페이지(49)의 컨텐츠를 삽입, 인라인(inline) 하기 위해 사용될 수 있다:
<%@ include file=".../otherPage.jsp" %>
여기서:
.../otherPage.jsp는 포함될 또 다른 JSP 페이지에 대한 경로이다.
함수 컴포넌트( FC : Function Component):
도 7을 참조하면, 함수 컴포넌트(59)의 논리도가 예시되어 있다.
함수 컴포넌트(59)는 비지니스 기능의 분명한, 독립적인 부분이다. 각 함수 컴포넌트(59)는 필수 데이터(33)의 세트(set)를 수신하고, 수신된 데이터(33)를 이용하여 처리 함수를 수행하며, 결과 데이터(27)의 세트를 리턴한다. 바람직한 실시예에서, 모든 함수 컴포넌트(59)는 일반 기저 클래스(generic base class)에 기초하고 있는 자바 클래스(Java class)로서 존재한다. 클라이언트 애플리케이션이 함수 컴포넌트(59)를 필요로 하면, 함수 컴포넌트(59)의 로직 명칭에 기초하여, 자바 리플렉션(Java reflection)을 이용하여 간단하게 인스턴스화(instantiate) 된다. 함수 컴포넌트(59)는 자바 빈(Java Bean)의 시방서(specification)를 따른다.
퍼블릭 추상 클래스(Public Abstract Class) FC는 모든 함수 컴포넌트(59)에 대한 일반적인 정의이다. 모든 특정 함수 컴포넌트(59) 클래스는 이 기본 클래스를 확장시킨다. 이 추상 클래스는 모든 함수 컴포넌트(59) 클래스에 의해 승계된 내장 기능의 세트를 제공할 뿐만 아니라, 함수 컴포넌트(59) 클래스 자체 내에서 구체적으로 구현되어야 할 기능의 세트를 정의한다.
퍼블릭 클래스 { ApplicationCategory }{ Function }:
임의의 주어진 함수 컴포넌트(59)는 함수 컴포넌트(59) 클래스를 확장시키는 특정한 클래스에 의해 더 정의된다.
바람직한 실시예에서, 특정 함수 컴포넌트(59) 클래스에 대한 명명 규약(naming convention)은 {ApplicationCategory}{Function}이며, 여기서:
● {ApplicationCategory}는 함수 컴포넌트(59)가 속하는 애플리케이션 카테고리(예를 들어, Net*Order 애플리케이션 카테고리에 대한 Order, Net*Track 애플리케이션 카테고리에 대한 Track, 또는 General 애플리케이션 카테고리에 대한 General)를 나타내는 짧은 형태이다.
● {Function}은 특정 함수 컴포넌트(59)의 함수(예를 들어, 카탈로그의 검색을 실제로 수행하여 일련의 결과를 리턴하는 함수 컴포넌트(59)에 대한 PerformProductSearch)를 나타내는 짧지만 서술적인 문구이다.
함수 컴포넌트 인스턴스( Function Component Instance )
함수 컴포넌트(59)는 함수 컴포넌트(59) 인스턴스 명칭으로 인스턴스화 되므로, 다수의 인스턴스가 유일하게 명명될 수 있다. 바람직한 실시예에서, 함수 컴포넌트(59) 인스턴스 명칭은:
{ApplicationCategory}{Function}_{InstanceDescription}
여기서:
{InstanceDescription}은 함수 컴포넌트(59)의 이 특정한 인스턴스에 대한 짧은 서술적인 레퍼런스이다.
예를 들어, OrderPerformProductSearch_OrderEntry
퍼블릭 메소드 ( Public Method ) setInstanceDescription( )
이 메소드(method)는 함수 컴포넌트(59)에 대한 인스턴스 설명을 설정하기 위해 사용된다. 이 메소드는 함수 컴포넌트(59)의 인스턴스화 직후에 주로 호출된다.
퍼블릭 메소드 getInstanceDescription( )
이 메소드는 함수 컴포넌트(59)에 대한 인스턴스 설명을 리턴한다.
퍼블릭 메소드 getInstanceName( )
이 메소드는 함수 컴포넌트(59)에 대한 인스턴스 명칭을 리턴한다.
필수 데이터(33) 및 리턴된 결과 데이터(27)
바람직한 실시예에서, 모든 필수 데이터(33) 및 리턴된 결과 데이터(27)는 인스턴스 변수로서 기억된다. 인스턴스 변수의 명칭은 필수 데이터 요소 자체의 명칭이다. 또한, 동일한 명명 규약을 사용하는 이러한 인스턴스 변수의 각각에 대한 세트(set) 및 겟(get) 메소드가 존재한다. 이것은 필수 데이터(33)가 자바 리플렉션(Java reflection)을 이용하여 외부적으로 참조될 수 있도록 한다. 예를 들어, 함수 컴포넌트(59)가 uesrID로 명명된 필수 데이터 요소(33)를 가진다면, setUserID( )로 명명된 퍼블릭 메소드를 이용하여 외부적으로 세트(set)되는 userID로 명명된 인스턴스 변수가 존재한다. 이것이 또한 리턴된 결과 데이터(27) 요소인 경우이면, 데이터(27)는 퍼블릭 메소드 getUserID( )를 이용하여 리턴된다. 리턴된 결과 데이터 요소의 경우, 퍼블릭 겟(get) 메소드가 존재한다.
퍼블릭 메소드 validate( )
validate( ) 메소드는 함수 컴포넌트(59)의 임의의 처리 로직을 실제로 실행하기 이전에, execute( ) 메소드 내부로부터 호출된다. 임의의 손실된 또는 잘못 세트된 필수 데이터(33)가 존재하면, FC_EXCEPTION_PrerequisiteDataFCException 예외가 리턴된다.
퍼블릭 메소드 execute( )
execute( ) 메소드는 함수 컴포넌트(59)의 내부 처리 로직을 제공한다. 임의의 특정 처리를 수행하기 이전에, 모든 필수 데이터(33)는 확인된다. 리턴된 결과 데이터(27)가 생성되면, 각각의 인스턴스 변수로 기억된다. 처리 로직의 실행중에 에러가 발생하면, 적절한 FCException 예외가 리턴된다.
퍼블릭 글래스 FCException
이 클래스는 필수 데이터(33)의 확인이나, 또는 함수 컴포넌트(59)의 처리 로직의 실행의 어느 하나의 도중에 발생한 에러를 나타낸다.
퍼블릭 FC _ EXCEPTION _ PrequisiteData
이 예외는 필수 데이터(33)가 함수 컴포넌트(59) 정의에 의해 정의된 요건을 따르지 않음을 나타낸다. 이러한 예외는 함수 컴포넌트(59)에 대한 특정 호출에서 의 에러에 의해 대표적으로 발생된다.
퍼블릭 FC _ EXCEPTION _ FCInternal
이 예외는 함수 컴포넌트(59)의 내부 처리 로직 도중에 예상하지 못한 에러가 발생하였음을 나타낸다. 이러한 예외는 함수 컴포넌트(59) 로직 자체 내의 에러에 의해 대표적으로 발생된다.
퍼블릭 FC _ EXCEPTION _ ServerInternal
이 예외는 서버에 대한 호출을 포함하는 함수 컴포넌트(59)의 내부 처리 로직 도중에 예상하지 못한 에러가 있었음을 나타낸다. 이러한 예외는 함수 컴포넌트(59) 로직 자체 또는 서버 로직의 내부에서의 에러에 의해 대표적으로 발생된다.
퍼블릭 FC _ EXCEPTION _ Exception
이 예외는 무효인 함수 컴포넌트 예외의 리턴을 시도하였음을 나타낸다. FCException 자체는 이 예외를 리턴하기만 할 수 있다. 이러한 예외는 함수 컴포넌트(59) 로직 자체 내부에서의 에러에 의해 발생된다.
퍼블릭 FC _ EXCEPTION _ Assertion
이 예외는 단언(assertion)이 실패하였음을 나타낸다.
다른 예외
함수 컴포넌트(59) 자체는, 함수 컴포넌트 예외가 구성될 경우에 그 자신의 예외 식별자를 지정함으로써, 그 자신의 함수 컴포넌트 예외를 정의할 수 있다. 예외의 특정 의미는 함수 컴포넌트(59)에 의해 정의된다.
퍼블릭 메소드 getExceptionID ( )
이 메소드는 예외 식별자를 리턴한다.
퍼블릭 메소드 getFailureReason ( )
이 메소드는 실패 이유를 리턴한다.
퍼블릭 메소드 toString ( )
이 메소드는 예외의 인쇄가능 버전을 리턴한다.
함수 컴포넌트( FC ) 태그 확장자:
함수 컴포넌트(59)는 함수 컴포넌트 태그 확장자(55)의 세트를 이용하여 호출된다.
함수 컴포넌트: init Tag
이 태그는 함수 컴포넌트(59) 처리를 위한 페이지를 초기화한다. 바람직한 실시예에서, 이 태그는 함수 컴포넌트 주문형 태그(55)가 채용되는 모든 페이지 상의 첫 번째 함수 컴포넌트 주문형 태그이다. 이 태그는 다음의 포맷을 가진다:
[<functioncomponent:init classpath="classpath" scope="scope"
/>]
여기서:
classpath는 함수 컴포넌트(59)를 인스턴스화 할 경우에 검색하는 클래스경로(classpath)이고,
scope는 JSP(49) 상에서 인스턴스화 되는 함수 컴포넌트(59)의 기억을 위한 디폴트 범위(default scope)이다. 이 범위는 다음의 값 중 임의의 하나일 수 있다: 애플리케이션, 세션(session) 또는 요구(request). 범위가 지정되지 않으면, 디폴 트 범위는 세션이다.
예를 들어, session
classpath 속성 및 scope 속성은 모두 선택적이다.
함수 컴포넌트: call Tag
이 태그(55)는 특정 함수 컴포넌트(59)가 호출되어야 함을 정의한다. 이 태그는 다음의 포맷을 가진다:
<functionComponent:call name="functionComponentInstanceName"
debugLevel = "debugLevel" >
dontResetAllData="yes"scope="scope"
conditionalExecution="true" >
functionComponent-body
</functionComponent:call>
여기서:
functionComponentInstanceName은 호출할 함수 컴포넌트(59) 인스턴스이다. 이 함수 컴포넌트(59) 인스턴스가 함수의 현재 실행 내에 이미 호출되었다면, 그것이 재사용된다. 그렇지 않으면, 이 함수 컴포넌트(59) 인스턴스가 생성된다.
예를 들어, OrderGet_OrderEntry
debugLevel은, 높음(high), 중간(medium) 또는 낮음(low)으로 지정된, 이 특정 함수 컴포넌트(59) 호출에 대한 디버그 레벨이다.
dontResetAllData는 함수 컴포넌트(59)의 resetAllData( ) 메소드가 호출되 지 않을 것임을 지정한다. 통상, 함수 컴포넌트(59)의 resetAllData( ) 메소드는, 이 함수 컴포넌트 호출을 위한 임의의 필수 데이터(33)의 세팅(setting) 전에 항상 호출될 것이다. resetAllData( ) 메소드는 모든 필수 데이터(33)에 대한 비어있는 속성을 간단하게 이용하는 것과는 상이하게 작용할 수 있다. 숫자 값에 대하여, 비어있는 속성을 이용하는 것은 이 값을 0으로 설정하는 반면, resetAllData( ) 메소드는 이 값이 0이 아닌 몇몇 디폴트 값으로 실제로 설정되도록 할 수도 있다. 함수 컴포넌트(59)는 resetAllData( ) 메소드의 특정 거동(behaviour)을 정의한다. 함수 컴포넌트(59)가 다수의 선택적인 필수 데이터(33) 요소를 가지고, 세션에서 한번 이상 사용되면, 후속 호출에 대해 모든 필수 데이터(33)를 리셋(reset)하는 것이 바람직할 수도 있다. 그러나, 이것이 바람직한 거동이 아닐 경우가 있을 수도 있다. 이 거동은 dontResetAllData 속성을 이용하여 무효화될 수 있다.
scope은 (함수 컴포넌트:init tag에서 정의된 페이지에 대한 설정을 무효화하는) 이 함수 컴포넌트(59)의 기억을 위한 범위이다. 이 범위는 다음의 값 중 임의의 하나일 수 있다:함수, 세션 또는 요구. 지정되지 않으면, 범위는 함수 컴포넌트:init tag에 의해 정의된다.
예를 들어, session
conditionalExecution="true" 이 속성은 이 태그(55)의 실행이 현재 참(true)인 값을 갖는 함수 컴포넌트:if tag를 동봉한 것인지에 달려 있음을 나타낸다.
이 태그(55)는 필요에 따라 함수 컴포넌트:prerequisite 및 함수 컴포넌 트:error 태그를 포함하는 본문(body)을 구비하고 있다. 명칭 속성만 강제적이다.
리턴된 결과 데이터(27)는 dataReference 시방서를 통해 액세스 가능하다.
함수 컴포넌트: prerequisite Tag
이 태그(55)는 함수 컴포넌트(59)에 대한 하나의 필수 데이터 요소(33)를 정의한다. 이 태그(55)는 함수 컴포넌트:call tag의 본문 내에 정의되어야 한다. 이 태그(55)는 다음의 포맷을 가진다:
</functionComponent:prerequisitetarget="prerequisiteDataReferen
ce"
value="literalValue"source="dataReference"optSource="dataRefer
ence" empty="booleanValue" />
여기서:
prerequisiteDataReference는 함수 컴포넌트(59)의 필수 데이터 요소(33)의 간단한 명칭이거나, 또는 함수 컴포넌트의 필수 데이터 요소의 데이터 요소에 대한 레퍼런스이다. 바람직한 실시예에서, 필수 데이터 레퍼런스는 함수 컴포넌트(59)의 필수 데이터 요소(33)를 참조하여 시작한다.
타겟(target)이 간단하게 필수 데이터 요소(33) 자체이면, 레퍼런스는 바로 데이터 요소(예를 들어, ordered)의 명칭이다
필수 데이터 요소(33)가 구조이면, 레퍼런스는 데이터 요소 구조의 명칭, 도트('.') 및 구조의 요소 명칭이다. (요소가 그 자체로 구조이면, 더욱 자격을 얻을 수도 있다.)(예를 들어, userAttributes.firstName).
literalValue는 하드-코딩된 문자 값이다.
dataReference는 동적 데이터에 대한 레퍼런스이며, 동적 데이터에 대한 레퍼런스는 제어 태그(control tag)의 데이터 레퍼런스 값에 대해 정의된 것과 동일한 시방서를 따른다.
booleanValue는 참(true) 또는 거짓(false)이다.
바람직한 실시예에서, value 또는 source 또는 optSource 또는 empty 중 하나만 지정될 수 있다는 점을 제외하고는, 모든 속성들이 강제적이다. optSource가 지정되면, dataReference는 존재하지 않는(non-existent) 데이터 레퍼런스일 수 있다.
empty="true"가 지정되면, 세트 메소드에 적절한 값이 전달된다. String 속성에 대하여, 비어있는 스트링(empty string)이 전달된다(즉, ""). 숫자 속성에 대하여, 제로(즉, 0)이 전달된다. 객체 속성에 대하여, 무효 객체(null object)가 전달된다(즉, null).
함수 컴포넌트: debug Tag
이 태그(55)는 JSP 페이지를 디버그 함으로써 도울 수 있는 각종 디버그 정보를 정의한다. 바람직한 실시예에서, 태그(55)는 다음의 포맷을 가진다:
<functionComponent:debugdebugLevel="debugLevel"debugFile="debu
gFile"
value="literalValue" source="dataReference" />
여기서:
debugLevel은 높음(high), 중간(medium) 또는 낮음(low)으로 지정된, 모든 함수 컴포넌트(59)에 대한 디폴트 디버그 레벨이다.
debugFile은 디버그 출력으로서 사용될 파일에 대한 경로이다(바람직한 실시예에서, 처음에는 디버그 파일 시방서를 마주치게 되며, 그 파일은 첨부를 위해 개방된다. 모든 후속 디버그 파일 출현은 무시된다. 디버그 파일이 지정되지 않으면, 디버그 출력은 System.out 스트림으로 간다.)
literalValue는 하드-코딩된 문자 값이다.
dataReference는 동적 데이터에 대한 레퍼런스이며, 동적 데이터에 대한 레퍼런스는 제어 태그의 데이터 레퍼런스 값에 대해 정의된 것과 동일한 시방서를 따른다.
모든 속성은 선택적이지만, value 또는 source 중 하나만 지정될 수도 있다.
우선 순위는 value가 뒤따르는 order이다.
함수 컴포넌트: error Tag
이 태그는 함수 컴포넌트(59)에 대한 에러의 하나의 종류의 취급을 정의한다. 이 태그는 함수 컴포넌트:call tag의 본문 내에 정의되어야 한다. 이 태그는 다음의 포맷을 가진다:
<functionComponent:errorname="errorDescriptor"page=".../errorPag
e.jsp" />
여기서:
errorDescriptor는 특정 함수 컴포넌트 예외를 식별하는 스트링, 예를 들어, PasswordMismatch이다. 함수 컴포넌트(59) 자체는 특수한 함수 컴포넌트 예외의 의미를 정의한다. "*"의 특수한 값은 임의의 예외를 나타낸다(즉, 디폴트 예외 핸들러(default exception handler)).
.../errorPage.jsp는 지정된 실행시간 에러가 발생할 경우에 호출될 또 다른 JSP 페이지(49)에 대한 URL이다. 이 예외는 에러 페이지 내의 스크립트 변수 functionComponentException에서 입수 가능하다. 에러 페이지가 특수한 값 "ignore"로 지정되면, 예외가 무시된다. 에러 페이지는 특수한 값 또는 데이터 레퍼런스 중 어느 하나일 수 있다. 동적 데이터에 대한 레퍼런스는 제어 태그의 데이터 레퍼런스 값에 대해 정의된 것과 동일한 시방서를 따른다.
바람직한 실시예에서, 모든 속성은 강제적이다.
함수 컴포넌트: getValue Tag
이 태그는 함수 컴포넌트의 리턴된 결과 데이터 요소에 의해 스크립트 변수를 설정하기 위해 사용된다. 이 태그는 다음의 포맷을 가진다:
<functionComponent:getValuesource="dataReference"optSource="da
taReference" />
여기서:
dataReference는 동적 데이터에 대한 레퍼런스이다. 동적 데이터에 대한 레퍼런스는 제어 태그의 데이터 레퍼런스 값에 대해 정의된 것과 동일한 시방서를 따른다.
바람직한 실시예에서, source 및 optSource 중 하나만 지정될 수도 있음을 제외하고는, 모든 속성들이 강제적이다. optSource가 지정되면, dataReference는 존재하지 않는 데이터 레퍼런스일 수 있다.
스크립트 변수 resultValue는 지정된 리턴 결과 데이터 요소의 값으로 설정된다.
함수 컴포넌트: if Tag
이 태그는 다른 태그 호출을 조건적으로 실행하고 ML 출력을 조건적으로 생성하기 위해 사용된다. 이 태그는 다음의 포맷을 가진다:
<functionComponent:if >
conditional-functionComponent-body
</functionComponent:if>
이 태그는 IF-THEN 블록으로서 작용한다. 함수 컴포넌트:if 블록의 값이 그 블록의 종료시에 참(true)이기만 하면, 이 블록 내에서 태그로부터 생성된 ML 출력이 포함된다. 이 블록의 값은 블록의 시작시에 거짓(false)으로 초기화된다. 이 블록의 값은 다음의 자바 메소드를 호출하여 설정된다:
FunctionComponentIfTag.setIfValue (PageContext pageContext,
Boolean ifValue)
통상적으로, setIfValue( ) 메소드는 functionComponent:if tag의 블록 내부의 functionComponent:call 태그에 의해 호출된 함수 컴포넌트의 execute( ) 메소드로부터 호출될 것이다. 동일한 블록 내부에서 setIfValue( ) 메소드를 여러 번 호출하는 것이 가능하다. 그러나, 블록 내부에서 생성된 ML 출력이 생성된 출력 페 이지에 포함되어야 하는지 아닌지에 대해 결정하기 위해 사용되는 블록에 대한 최종 세팅을 결정하는 것이 마지막 호출이다.
또한, functionComponent:if 블록 내의 각종 태그를 조건적으로 실행하는 것이 가능하다. 태그가 속성 conditionalExecute="true"를 포함하고 있으면, 그 태그는 functionComponent:if 블록의 현재의 값이 참일 경우에만 실행된다. 다음의 태그(55)는 conditionalExecute 속성을 지원한다: functionComponent:call, presentation:control, presentation:producePage. conditionalExecute 속성은 필요에 따라 다른 태그에 추가될 수 있다. conditionalExecute 속성을 이용하여 functionComponent:if 블록에 대한 논리 "AND" 조건을 구축하는 것이 가능하다. 필수 데이터(33)를 가지며, FunctionComponentIfTag.setIfValue( ) 메소드를 호출할 것인지 아닌지를 결정하는 "SetIfValueFunctionComponent"로 명명된 함수 컴포넌트(59)가 존재한다고 가정한다. functionComponent:if 블록의 시작시에 이 함수 컴포넌트를 두 번 호출하기 위하여 functionComponent:call 태그를 사용할 수 있다. 두 번째 functionComponent:call에 대하여, conditionalExecute 속성을 포함한다. 이것은 functionComponent:if 블록이 효과적으로 두 번째 SetIfValueFunctionComponent 호출의 값과 'AND'된 첫 번째 SetIfValueFunctionComponent 호출의 값이 되게 한다.
프리젠테이션 템플릿 (PT):
도 8의 (a), (b)와 도 9를 참조하면, 프리젠테이션 템플릿(PT : presentation template)(61)이 본 발명의 바람직한 실시예에 따라 개략적으로 예시 되어 있다. PT(61) 파일의 세트는 클라이언트 애플리케이션의 "룩 앤드 필"을 정의하며, 각각의 PT(61)는, 프리젠테이션 요소에 대한 템플릿, 또는 출력 페이지(79), 또는 클라이언트 애플리케이션의 출력 페이지(79)의 일부를 정의하는 일련의 ML 문장으로 구성된다. 클라이언트 애플리케이션에 대한 PT(61) 파일의 세트는 특정한 언어(예를 들어, 프랑스어, 영어) 및 포맷(예를 들어, HTML, HDML)이다.
바람직한 실시예에서, PT(61) 파일은 두 형태 중 하나를 취한다. 도 8의 (a)를 참조하면, 첫 번째 또는 정적 PT(65)가 예시되어 있다. 정적 PT(65)는 출력 페이지(79)의 프리젠테이션 요소 또는 그 일부를 정의하는 ML 문장으로 전적으로 구성된다. JSP(49)가 처리될 때, 정적 PT(65)의 ML 문장은 헤더(header) 또는 풋터(footer)와 같은, 출력 페이지(79)의 정적 부분을 정의하기 위해 사용되며, 바꾸어 말하면, 출력 페이지(79)의 이러한 부분은 클라이언트 애플리케이션의 모든 출력 페이지에 대해 공통이다.
도 7 및 도 8의 (b)를 참조하면, 두 번째 또는 동적 PT(67)가 예시되어 있다. 동적 PT(67)는 출력 페이지(79)의 프리젠테이션 요소 또는 출력 페이지(79)의 일부를 정의하는 ML 문장으로 구성된다. FC(59)에 의해 생성되는 데이터 출력(27)에 대한 링크를 제공하는 적어도 하나의 제어(63)도 포함한다. JSP(49)가 처리될 때, 동적 PT(67)의 ML 문장은 FC(59)의 데이터 출력(27)을 포함하는 출력을 정의한다. 예를 들어, 출력 페이지(79) 또는 그 일부는 구매 주문의 주문 명세서(예를 들어, 구입한 항목의 리스트)를 테이블에서 표시할 수도 있다. FC(59)의 데이터 출력은 구입된 항목의 리스트일 수도 있으며, 이것은 PT(67)에 의해 정의된 프리젠테이 션 포맷을 갖는 HTML 테이블(즉, 제어(control)(63))에서 표시된다.
바람직한 실시예에서, 양호하게 정의된 계층적 파일 조직은 프리젠테이션 템플릿 파일의 배치를 위해 사용된다. 계층은 순서대로 다음의 레벨로 구성된다:
애플리케이션 루트-이것은 특정한 애플리케이션에 대한 계층의 루트이다.
포맷-이 레벨은 포맷(예를 들어, html, hdml의 디비전(division))에 의해 파일을 조직화한다.
언어-이 레벨은 언어 로캘(locale)(예를 들어, en_US, en_CA, fr_CA의 디비전)에 의해 파일을 조직화한다.
애플리케이션 특정 레벨-이 레벨은 특정한 애플리케이션에 대해 요구되는 대로 정의될 수도 있다.
개별적인 프리젠테이션 템플릿 파일(61)은, 이들이 지정되거나, 또는 이들이 언어 레벨 내에 위치하면, 애플리케이션 특정 레벨 내에 위치된다.
바람직한 실시예에서, "룩 앤드 필"의 공통 요소는 분리된 프리젠테이션 템플릿 파일(61)로 분할된다. 예를 들어, 애플리케이션의 모든 페이지가 공통의 헤더와 공통의 풋터를 가지면, 이들 섹션의 각각은 그 자신의 파일로 각각 추출되므로, 애플리케이션의 모든 페이지에 복사된 컨텐츠를 가지기 보다는, 레퍼런스에 의해 "포함(include)"될 수 있다. 따라서, 쿠리어(courier) 템플릿 파일(61) 및 연관된 FC 태그(59) 및 PC 태그(57)는 애플리케이션의 페이지를 생성하기 위하여 재사용될 수 있다고 인정된다. 예를 들어, 하나의 템플릿(61)은 멀티-라인 테이블의 하나의 라인을 나타낼 수 있고, 적절한 PC 태그(57) 및 FC 태그(59)는 라인 템플릿(61)의 각각의 호출에 대해 삽입된 테이블 컨텐츠를 지시한다.
이 파일 조직화 모델을 이용하면, 임의의 애플리케이션 특정 레벨을 포함하는 애플리케이션 루트 경로, 파일 포맷, 언어, 및 파일 명칭이 주어진 ML PT(61) 파일에 대한 물리적 경로를 결정하는 것이 가능하다.
예를 들어, 애플리케이션은 다음의 디비전, 즉, common, orderEntry 및 orderHistory를 가지는 정의된 하나의 애플리케이션 특정 레벨을 가질 수도 있다. 애플리케이션 자체는, 주문의 입력 및 처리를 다루어야 할 일련의 페이지(49)와, 주문 이력(order history)의 선택 및 표시를 다루어야 할 또 다른 페이지(49)의 세트를 가진다. ML 프리젠테이션 템플릿 파일(61)의 세트는 다음의 방식으로 조직화될 수도 있다:
.../orderApplication/html/en_CA/common/header.html
.../orderApplication/html/en_CA/common/footer.html
.../orderApplication/html/en_CA/orderEntry/search.html
.../orderApplication/html/en_CA/orderEntry/entry.html
.../orderApplication/html/en_CA/orderEntry/submit.html
.../orderApplication/html/en_CA/orderHistory/search.html
.../orderApplication/html/en_CA/orderHistory/display.html
다른 파일의 세트는 아래와 같다:
.../orderApplication/html/fr_CA/...
.../orderApplication/hdml/en_CA/...
.../orderApplication/hdml/fr_CA/...
개별적인 ML 프리젠테이션 템플릿 파일(61)은 San Francisco, CA의 Macromedia에 의해 개발된 HTML 파일용 HomeSite와 같은 적절한 WYSIWYG 편집기를 이용하여 설계될 수 있다. 당업자에게 알려져 있는 임의의 다른 적당한 편집기가 사용될 수도 있다. ML 프리젠테이션 템플릿 파일(61) 자체는 "순수한(pure)" 마크업 언어(예를 들어, HTML)를 포함한다.
ML PT 파일(61)은 동적 컨텐츠를 포함할 수 있는 페이지, 예를 들어, ML PT(67)를 나타낸다. 임의의 동적 컨텐츠는 페이지 상에 위치한 제어(63) 내부에 놓여져야 한다. 각각의 마크업 언어는 그 자신의 제어 세트를 가진다. 각각의 제어(63)는 제어(63)에 삽입되어야 할 동적 컨텐츠에 대해 순서대로 정의된 식별자(즉, HTML에서, id="idValue") 키워드를 가진다. ML 파일에서, 제어는 더미(dummy) 데이터를 가질 수도 있다. 이 더미 데이터는 ML 파일의 설계 문구(phase) 중의 표시의 용도로서 유용하다. 그러나, 동적 데이터가 제어에 삽입될 경우에 이 더미 데이터는 자동으로 제거된다. HTML 기반의 ML 프리젠테이션 템플릿 동적 파일(67)의 경우, 각 제어가 식별자 키워드(즉, id="idValue")에 대한 유일한 값을 가지기만 하면, 다음의 제어 중 임의의 것이 동적 데이터의 삽입으로 간주될 것이다: 텍스트 필드(Text field), 패스워드 필드(Password field), 숨겨진 필드(Hidden field), 텍스트 영역(Text area), 테이블(Table), 리스트 박스(List box), 체크 박스(Check box), 라디오 버튼(Radio button), 이미지(Image), 푸시 버튼(Push button), 이미 지 버튼(Image button), 제출 버튼(Submit button), 리셋 버튼(Reset button), 링크(Link) 및 스팬(Span). 대안적인 실시예에서, ML 파일은 HDML 또는 WML과 같이, 당업자에게 알려져 있는 임의의 다른 마크업 언어로 구성될 수도 있다.
프리젠테이션 컴포넌트(PC : Presentation Component):
도 4를 참조하면, 프리젠테이션 컴포넌트(PC)(161)가 개략적으로 예시되어 있다. PC(161)는 개별적이고 독립적인 프리젠테이션 기능 부분이다. 각각의 프리젠테이션 컴포넌트(161)는 대응하는 프리젠테이션 요소를 처리한다. 바람직한 실시예에서, 모든 프리젠테이션 컴포넌트(161)는 일반적인 기본 클래스에서 기초가 되는 자바 클래스로서 존재한다. 클라이언트 애플리케이션이 프리젠테이션 컴포넌트(161)를 필요로 하면, 프리젠테이션 컴포넌트(161)의 로직 명칭에 기초한 자바 리플렉션을 이용하여 간단하게 인스턴스화 된다. 프리젠테이션 컴포넌트(161)는 자바 빈의 시방서를 따른다.
프리젠테이션 컴포넌트(PC) 태그 확장자:
프리젠테이션 컴포넌트 파일(161)은 프리젠테이션 컴포넌트 태그 확장자(57)의 세트를 이용하여 연관된다. 프리젠테이션 컴포넌트 파일 주문형 태그 확장자(57)는 프리젠테이션 파일(67)의 제어(63)와, JSP 페이지(49)에서의 동적 데이터(27) 및 프리젠테이션 컴포넌트(161) 사이의 연결을 제공한다. 또한, 이 확장자(57)는 후속 표시 페이지(79)를 생성하는 능력도 제공한다.
프리젠테이션 :page Tag
이 태그는 특정 프리젠테이션 컴포넌트 파일(161)이 현재의 처리 페이지(49) 에서 사용되어야 함을 정의한다. 이 태그는 다음의 포맷을 가진다:1
<presentation:page name="presentation Name" root=" rootPath"
source="fileName" value="fileName"
format="presentationFormat" language="languageSpecification"
absolute="true" />
여기서:
presentationName은 이 프리젠테이션 페이지가 이 처리 페이지(49) 내에서 참조되게 하는 유일한 명칭이다.
rootPath(선택)는 파일의 루트 경로이다.
fileName은 임의의 애플리케이션 특정 레벨 명칭을 포함하는 파일 명칭이다.
presentationFormat은 다음의 값, 즉, html, hdml 또는 wml 중의 하나이어야 하는 프리젠테이션 파일(61)의 포맷이다.
languageSpecification(선택)은 지정될 경우에 다음의 값, 즉, en_CA, fr_CA 등 중에서 하나이어야 하는 프리젠테이션 파일(61)의 컨텐츠의 언어이다. 바람직한 실시예에서, name 및 format 속성은 강제적이다. source 또는 value 속성 중 정확하게 하나가 지정되어야 한다. value를 제외한 각각의 속성은 하나의 값으로 직접 지정되거나, 동적 데이터에 대한 레퍼런스(즉, dataReference)일 수 있다. 프리젠테이션 파일에 대한 경로는, absolute 속성이 참(true)으로 지정되지 않으면, 상대적인 것으로 간주된다.
프리젠테이션 :control Tag
이 태그는 동적 프리젠테이션 템플릿 파일(67)로부터의 제어(63)를, 제어의 동적 데이터 및 프리젠테이션 컴포넌트(161)의 소스로 링크한다. 이 태그는 제어(63)의 종류가 동적 프리젠테이션 템플릿 파일(67)의 특수한 포맷에 대해 지원될 경우에 사용된다. 바람직한 실시예에서, 이 태그는 다음의 포맷을 가진다:
<presentation:control name=" controlName" type=" controlType"
parentPresentation="parentName"
value="literalValue" source=" dataReference"
optSource="dataReference" empty="booleanValue"
id="identifier" conditionalExecution="true" />
여기서:
controlName은 이 제어가 참조하게 되는 유일한 명칭이다.
controlType은 제어의 특정 종류이다. HTML이 선택된 ML이면, HTML 제어는 input(텍스트 필드에 대해 text로 설정되고, 패스워드 필드에 대해 password로 설정되며, 숨겨진 필드에 대해 hidden으로 설정되며, 제출 버튼에 대해 submit으로 설정되며, 리셋 버튼에 대해 reset으로 설정되며, 체크 박스에 대해 checkbox로 설정되며, 라디오 버튼에 대해 radio로 설정되는 속성 type을 필요로 함), textarea, table, select(리스트 박스), img(이미지), (링크) 또는 span을 포함한다.
parentName은 프리젠테이션 페이지 또는 또 다른 제어 중의 어느 하나인 이 제어를 포함하는 부모(parent)의 명칭이다.
페이지에 즉시 포함되어 있는 제어가 지정되면, 그 값은 프리젠테이션 명칭, 도트('.') 및 제어 명칭이다. 페이지에 즉시 포함되어 있는 또 다른 제어 내부에 있는 제어가 지정되면, 그 값은 프리젠테이션 명칭, 도트('.'), 즉시 제어 명칭, 도트('.') 및 제어 명칭이다. 제어 내에 제어를 내장하는 것에는 한계가 없다.
literalValue는 하드-코딩된 문자 값이다.
dataReference는 동적 데이터에 대한 레퍼런스이다.
이 속성에 의해 참조된 데이터의 종류는 제어 종류와 호환 가능하여야 한다.
동적 데이터 레퍼런스는 이 처리 페이지에 대해 정의된 키워드-값으로 쌍을 이룬 데이터에 대한 레퍼런스, 또는 서브렛 요구, 또는 애플리케이션 컴포넌트로부터 리턴된 결과 데이터에 대한 레퍼런스 중 어느 하나일 수 있다.
키워드-값으로 쌍을 이룬 데이터의 값이 간단한 값이면, 레퍼런스는 간단하게 키워드 자체이다.
예를 들어, orderNumber
키워드-값으로 쌍을 이룬 데이터의 값이 구조이면, 레퍼런스는 키워드, 도트('.') 및 구조의 요소 명칭이다. (요소가 그 자체로 구조이면, 더욱 확인될 수도 있다.).
예를 들어, orderHeaderAttr.orderStatus
리턴된 결과 데이터 레퍼런스는 함수 컴포넌트(59) 인스턴스 명칭, 도트('.') 및 리턴된 결과 데이터 요소의 명칭을 포함한다.
예를 들어, OrderGet_OrderEntry.orderID
리턴된 결과 데이터 요소가 구조이며 원하는 동적 데이터(27)가 구조의 요소 이면, 리턴된 결과 데이터 요소는 도트('.') 및 요소 명칭에 의해 확인된다. (요소가 그 자체로 구조이면, 더욱 확인될 수도 있다.)
예를 들어, OrderGet_OrderEntry.orderHeaderAttr.orderStatus
동적 데이터 레퍼런스가 문자 "@"와 함께 시작하면, 그것은 암시적인 간접 레퍼런스이다. 이 경우, 일단 리턴된 결과 데이터 요소가 결정되었으면, 그것은 그 자체로 동적 데이터 레퍼런스인 것으로 간주되며, 이 동적 데이터 레퍼런스는 위에서 설명된 규칙을 적용하여 다시 평가된다. (나중에 동적 데이터 레퍼런스인 것으로 간주되는 리턴된 결과 데이터 요소도 문자 "@"와 함께 시작하면, 그것도 암시적인 간접 레퍼런스이며, 평가 처리가 모두 다시 시작된다.)
booleanValue는 참(true) 또는 거짓(false) 중의 어느 하나이다.
identifier(선택)는 프리젠테이션 파일에서의 제어의 식별자이다.
동적 프리젠테이션 파일(67)에서의 제어는 동등한 id="identifier" 속성을 가져야 한다. 식별자가 presentation:control 태그에서 지정되지 않으면, 명칭 id를 갖는 속성은 presentation:attribute 태그에서 값 identifier로 설정되어야 한다.
conditionalExecution="true" 이 속성은 이 태그의 실행이 참(true)인 값을 현재 갖고 있는 applicationcomponent:if 태그를 동봉하는가에 달려 있음을 나타낸다.
name, type 및 parentPresenation 속성은 강제적이다. value, source 또는 optSource, 또는 empty 속성 중의 하나만 지정될 수도 있다. optSource가 지정되 면, dataReference는 존재하지 않는 데이터 레퍼런스일 수 있다. 지적된 속성은 ML 파일에서 제어에 대해 본문 컨텐츠를 제고한다. 이들 속성 중 어느 것도 지정되지 않으면, ML 파일에서 본문 컨텐츠는 대체되지 않는다.
프리젠테이션 :attribute Tag
이 태그는 특정한 제어(63)에 대한 특정한 속성을 지정한다. 이 태그는 presentation:control 태그의 본문 내에 정의되어야 한다. 이 태그는 다음의 포맷을 가진다:
<presentation:attribute name="attributeName"
value="literalValue" source="dataReference"
optSource="dataReference"
empty="booleanValue" />
여기서:
attributeName은 설정할 속성의 명칭이다.
literalValue는 하드-코딩된 문자 값이다.
dataReference는 동적 데이터에 대한 레퍼런스이다.
booleanValue는 참(true) 또는 거짓(false) 중 어느 하나이다.
value 또는 source 또는 optSource 또는 empty 중 하나만 지정될 수도 있다는 점을 제외하고, 모든 속성이 강제적이다. optSource가 지정되면, dataReference는 존재하지 않는 데이터 레퍼런스일 수 있다.
프리젠테이션 : producePage Tag
이 태그는, 우선, 모든 동적 컨텐츠를 PT로 실장(populate)한 후, 표시 페이지에 대한 출력이 지정된 프리젠테이션 템플릿 파일(61)에 기초하여 생성되어야 함을 정의한다. 처리 파일(49)에서 태그가 발견될 때, 즉, 멀티-타이어 애플리케이션의 실행중에, 출력이 생성된다. 다수의 producePage 태그가 발견되면, 생성된 표시 페이지(79)는 처리 파일(49) 내에서 발견된 순서대로 각 producePage 태그로부터의 출력의 접합(concatenation)을 포함하게 될 것이다. 이 태그는 다음의 포맷을 가진다:
<presentation:producePage page="PresentationPageName"
conditionalExecution="true" />
여기서:
PresentationPageName은 출력을 생성하기 위한 프리젠테이션 파일(61)의 명칭이다.
프리젠테이션 파일(61)은 presentation:page 태그에 의해 이전에 정의되어야 한다.
conditionalExecution="true" 이 속성은 이 태그의 실행이 참(true)인 값을 현재 갖고 있는 application component:if 태그를 동봉하는가에 달려 있음을 나타낸다.
페이지 속성은 강제적이다.
프리젠테이션 :clear Tag
이 태그는 JSP(49) 출력 버퍼를 클리어한다. 임의의 컨텐츠가 생성되기 전 에, JSP 서버가 XML 태그 주위에 넣는 비어있는 라인을 클리어하기 위하여 대표적으로 사용된다. HTML에서는, 이 데이터가 무시되지만, 평범한 텍스트 문서는 이러한 여분의 라인을 가지지 말아야 한다. 이 태그는 속성을 가지지 않는다.
프리젠테이션 :interceptor Tag
이 태그는 그 본문의 출력을 인터셉트(intercept) 하여 resultValue 페이지 변수에 삽입하며, 선택적으로, 삽입된 것을 페이지 출력으로 복사하는 본문 태그이다. 이 태그는 다음의 포맷을 가진다:
<presentation:interceptor interceptEnabled+"booleanValue"
duplicateOutput="booleanValue" />
여기서:
interceptEnabled는 참(true)일 경우에 인터셉터(interceptor)를 활성화시키는 표현이다.
duplicateOutput은 참(true)일 경우에 인터셉트 한 출력을 동봉한 페이지에 복사하는 표현이다.
interceptEnabled 속성은 강제적이고, duplicateOutput 속성은 선택적이다.
처리 파일을 이용한 서브렛 클라이언트 애플리케이션에 대한 처리 로직의 정의
도 4, 도 6a, 6b, 도 7, 도 8의 (a), (b)와 도 9를 참조하면, 서브렛 클라이언트 애플리케이션에서의 JSP(49)의 처리 로직이 본 발명의 바람직한 실시예에 따라 개략적으로 예시되어 있다. 서브렛 클라이언트에 대한 처리 로직은 JSP(49) 처리 파일의 세트에서 정의된다. 처리 파일은 두 개의 별개의 처리 기능을 수행한다.
우선, 처리 파일(49)은 특정한 처리 기능을 구현하는 함수 컴포넌트(59)를 호출하는 능력을 제공한다. 특정한 처리 기능은 입력 데이터(33)의 처리와 출력 데이터(27)의 제공을 포함한다.
또한, 처리 파일(49)은 동적 프리젠테이션 템플릿 파일(67) 및 동적 데이터 자체의 내부에 정의된 제어(63) 사이의 링크(69)를 정의한다. 모든 특정 처리 기능이 특정한 출력 페이지(79)에 대해 완료되고, 모든 동적 데이터(27)가 생성된 후, 동적 데이터를 동적 프리젠테이션 파일(67)로 실장하고, 프리젠테이션 컴포넌트(161)를 갖는 프리젠테이션 요소를 생성함으로써, 다음 표시 페이지(79)가 생성될 수 있다.
바람직한 실시예에서, 처리 파일(49)은 자바 서버 페이지(JSP : Java Server Page)를 이용하여 구현된다. 처리 파일이 사용자 친화적으로 되게 하기 위하여, 주문형 JSP 태그 확장자의 두 세트가 도입되었다. 함수 컴포넌트(FC) 주문형 태그(55)는 함수 컴포넌트(59)를 호출하는 능력을 제공한다. 프리젠테이션 파일 주문형 태그(61)는 동적 데이터와 프리젠테이션 파일의 제어(63) 사이의 링크를 제공하며, 프리젠테이션 컴포넌트(161)를 갖는 표시 페이지(79)를 생성시키는 능력을 제공한다.
클라이언트 애플리케이션 하부구조(97)는, 클라이언트 애플리케이션(71)의 함수 골격(functional framework)을 구성하는 주문형 JSP FC 태그 확장자(55) 및 PC 태그 확장자(57) 라이브러리를 구현하는 클래스를 정의한다. 이 클래스는 클라이언트 애플리케이션의 함수 컴포넌트(59) 프리젠테이션 컴포넌트(161)를 지원한 다.
하부구조(97)는 함수 컴포넌트(59) 및 특정 애플리케이션 클라이언트 사이의 인터페이스를 제공한다. 또한, 서브렛 GUI, 애플릿(applet) GUI 및 직접 프로그램 가능한 인터페이스를 위한 적당한 접속점을 제공한다. 또한, 하부구조는, 클라이언트 애플리케이션의 프리젠테이션 컴포넌트(161)를 지원하는 것을 담당하는 주문형 JSP 확장자 라이브러리를 구현하는 클래스의 세트를 제공한다.
도 10 및 도 11을 참조하면, 본 발명의 바람직한 실시예에 따라 조립된 클라이언트 애플리케이션(71)의 논리도가 예시되어 있다. 예시를 위하여, 서브렛 클라이언트 애플리케이션이 설명되어 있다. 서브렛 엔진(23)은, 단말(11) 상의 브라우저로부터 애플리케이션(71)의 시작하는 JSP(49)의 URL에 들어오는 사용자에 의해 호출된다.
서브렛 클라이언트(71)는 논리적으로 일련의 자바 서버 페이지(49)로 구성되며, 각각의 페이지는 처리 로직 클라이언트 애플리케이션(71)의 일부를 정의한다. 각각의 페이지(49)는 페이지의 "룩 앤드 필"을 제공하는 하나 이상의 연관된 프리젠테이션 템플릿(61)을 가진다. 또한, 각각의 페이지(49)는 그 처리 로직을 제공하는 하나 이상의 연관된 함수 컴포넌트(59)와, 그 프리젠테이션 로직을 제공하는 프리젠테이션 컴포넌트(161)를 가진다.
클라이언트 애플리케이션(71)의 실행시의 임의의 특정 포인트에서, 사용자 동작 단말(11)은 로컬 브라우저 윈도에서, 그것과 상호작용하는 페이지를 관찰하게 된다. 사용자는 정보를 입력한 다음, (예를 들어, 버튼을 "누름"으로써) 클라이언 트 애플리케이션(71)의 다음 페이지(49)에 대한 포인터(pointer)와 함께, 그 페이지로부터의 데이터가 웹 서버(15)에 리턴된도록 한다. 사용자의 데이터는 키워드-값 쌍(73)의 세트의 형태로 웹 서버(15)에 리턴된다.
이때, 클라이언트 애플리케이션(71)의 다음 페이지(49)가 처리되고, 그 출력 데이터(27)는 PC(161)에 의해 생성되어, 단말(11) 상의 사용자의 브라우저 윈도우에 다시 송신되는 새로운 표시 페이지(79)의 생성에 사용되며, 전체 사이클이 다시 시작된다.
요약하면, 서브렛 클라이언트 애플리케이션(71)의 각 페이지(49)는:
● 입력으로서 키워드-값으로 쌍을 이룬 데이터(73)를 수신한다.
● 처리 단계(77)를 수행한다.
● 요구되는 내장된 프로그래밍 구성을 모두 포함하는 사용자 동작 단말(11)에 대해 새로운 표시 페이지(79)를 생성하고, 제어 흐름을 후속 페이지(49)로 지시하고, 키워드-값으로 쌍을 이룬 데이터(73)를 그 후속 페이지에 리턴한다.
대안적인 실시예에서, 애플릿 클라이언트(93) 또는 직접 프로그램 가능한 인터페이스 클라이언트(95)가 조립될 수도 있다(도 13).
애플릿 클라이언트(93)는 단말(11) 상에서 실행되는 클라이언트 애플리케이션(71)에 대한 자바 스윙 기반의 인터페이스(Java Swing-based interface)이다. 단말(11) 상의 사용자는 논리적으로 실행될 경우에 애플리케이션과 직접 상호작용한다. 클라이언트 애플리케이션(71)은 통신 네트워크(13)(예를 들어, 인터넷)를 통해 CORBA 인터페이스(97)를 매개로 하여 Net*Suite 서버와 통신한다. 응답들은 자바 스윙 GUI 컴포넌트를 이용하여 화면에 직접 기록된다.
직접 프로그램 가능한 인터페이스는 애플리케이션을 사용하는 또 다른 메커니즘이다. 직접 프로그램 가능한 인터페이스 클라이언트(95)는 자바 코드의 특정한 세트이다. 직접 클라이언트(95)는 클라이언트 애플리케이션(71)에 처리 로직을 제공하기 위하여, 함수 컴포넌트(59)의 세트를 인스턴스화 한다. 직접 클라이언트(95)는 필수 데이터(33)를 설정하고, execute( ) 메소드를 호출하며, 각각의 함수 컴포넌트(59) 인스턴스에 대해 리턴된 데이터(27)를 적절하게 취득한다.
직접 프로그램 가능한 인터페이스를 이용하는 클라이언트는 요구될 경우에 그 자신의 GUI를 제공한다. 함수 컴포넌트(59) 링크는 애플리케이션을 정의하기 위하여, 클라이언트 로직 자체의 내부에서 "하드 코딩" 된다.
예시를 위한 예:
도 12를 참조하면, 출력 페이지(79)를 생성하기 위하여, 태그리브 지시자(51), FC 태그(55), FC(59), PC 태그리브 지시자(53), PC 태그(57) 및 PC(161)를 사용하는 것이 본 발명의 바람직한 실시예에 따라 예로 들어 예시되어 있다. 본 예에서는, 주문을 승인하는 관리 단계를 포함하는 주문 입력 애플리케이션이 존재한다. 이 경우, 주문이 승인된 후에 주문이 제출된다.
이 예에 대해서는, 이전의 JSP(49)가 주문을 선택한 것으로 간주되고, 주문 식별자(orderID) FC(59)는 이전의 JSP(49) 상에서 실행되는 OrderSelect FC(59)로부터 리턴된 결과로서 입수 가능하다.
현재의 JSP(49)는 OrderSubmit 페이지이다. 이 페이지에 대한 처리 로직은 선택된 주문에 대해 주문 명세서(83)를 검색할 FC(59)(OrderGet)의 호출을 포함한다. 이 경우, 사용자의 브라우저 윈도우에 리턴될 궁극적인 출력 페이지(79)는 주문 번호(81) 및 주문 명세서(83)를 표시할 것이다. 주문 명세서(83)가 입수 가능하지 않으면, FC(59)는 FC_EXCEPTION_1 예외를 리턴한다. 이 경우, 애플리케이션은 에러 JSP(noOrderError.jsp)로 점프할 것이다. 일반적인 에러 JSP 페이지(error.jsp)에 전달함으로써, 임의의 다른 예외가 취급된다.
출력 페이지(79)에 대한 레이아웃(layout)을 정의하는 PT(61)는 PT 헤더(85)(OrderApplicationHeader.html) 및, 이 애플리케이션의 모든 페이지에서 공통적인 PT 풋터(87)(OrderApplicationFooter.html)(HTML 포맷)를 채용한다. PT 헤더(85) 또는 PT 풋터(87) 내에는 동적 데이터가 삽입되지 않으며, 이들은 정적 프리젠테이션 템플릿(65)의 예이다.
현재 페이지의 PT 메인 본문(89)은 OrderSubmit HTML 파일로부터 가져온 것이다. 이 파일은 주문 번호(81)를 표시할 텍스트 필드(판독 전용)를 포함한다. 이 제어에는 id=OrderNumField가 레이블(label) 된다. 주문 명세서(83)는 테이블 제어를 이용하여 테이블 포맷으로 표시될 것이다. 테이블 제어에는 id=OrderDetails가 레이블 된다. 마지막으로, 실제로 주문을 제출할 후속 JSP 페이지(submit.jsp)를 호출할 페이지 상에는 제출 버튼(91)이 존재한다. PT 메인 본문(89)은 동적 PT(67)의 예이다.
PT HTML 파일(85, 87 및 89)은, PC(161)에 의해 생성되는 JSP(49)로부터 생성된 표시 페이지(79)에 대해 레이아웃 템플릿을 제공한다.
애플리케이션의 이 부분에 대한 JSP(49)는 다음과 같다.
2 <!--*********************************************************
3 이 페이지는 주문을 제출하기 위해 관리자에 의해 사용된다
4 *************************************************************-->
5
6 <%@ page session="true" buffer="64kb" autoFlush="true"
7 isThreadSafe="true" errorPage=".../erroePage.jsp" %>
<%@ taglib uri="/servlet/FunctionComponentTagsClient.jar"
prefix="application component" %>
8 <%@ taglib uri="/servlet/PresentationComponentTagsClient.jar"
prefix="presentation" %>
9 <functionComponent:init >
10 <!-- OrderGet 함수 컴포넌트를 생성하고, 이전의 JSP 페이지 상에서
실행되는 함수 컴포넌트(OrderSelect)로부터의 결과를 이용하여 그것을
실행한다. -->
11 <functionComponent:call name="OrderGet_OrderEntry" >
12 <functionComponent:prerequisite target="ordered"
13 source="OrderSelect_OrderEntry.orderID" />
14 <functionComponent:errorname="NoOrder"page="noOrderError.jsp />
15 </functionComponent:call>
16 <!--헤더 프리젠테이션을 정의한다. 헤더 프리젠테이션에는 동적
데이터가 존재하지 않는다.-->
17 <presentation:page name="header" source="OrderApplicationHeader"
18 language="en_CA" format="html" />
19
20 <!-- 본문 프리젠테이션을 정의한다. 이 프리젠테이션은 동적 데이터를
포함한다. 동적 데이터는 프리젠테이션에 접속되어야 한다.
-->
21 <presentation:page name="body" source="OrderSubmit"
22 language="en_CA" format="html" />
23 <presentation:controlname="OrderNumField"type="span"id="OrderNumFiel
d"
24 parentPresentation="body"source="OrderGet_OrderEntry.orderNum"
/>
25 <presentation:control name="OrderDetails" type="table"
id="OrderDetails"
26
parentPresentation="body"source="OrderGet_OrederEntry.orderDetailTable"
/>
27
28 <!--풋터 프리젠테이션을 정의한다. 풋터 프리젠테이션에는 동적
데이터가 존재하지 않는다. -->
29 <presentation:page name="footer" source="OrderApplicationFooter"
30 language="en_CA" format="html" />
31
32 <!-- 모든 페이지의 요소가 입수 가능하므로,
33 페이지 자체가 생성될 수 있음. -->
34 <presentation:producePage page="header" />
35 <presentation:producePage page="body" />
36 <presentation:producePage page="footer" />
도 13을 참조하면, 시스템(10)의 확대한 개략도와 클라이언트 애플리케이션(71)의 처리된 출력이 본 발명의 바람직한 실시예에 따라 예시되어 있다. 네트워크 단말(11)을 동작시키는 네트워크 사용자는 네트워크(13)를 통해 원격지에 위치한 자원(JSP(49))을 요구한다.
JSP(49)는, 사용자의 요구를 처리할 경우에 서브렛 엔진(23)에 의해 사용될 수도 있는 주문형 FC 태그(55)를 지정하는 FC 태그 라이브러리 지시자(51)와, 단말(11)의 사용자에게 리턴되는 출력 페이지(79)를 조립할 경우에 서브렛 엔진(23)에 의해 사용될 수도 있는 주문형 PC 태그(57)를 지정하는 PC 태그 라이브러리 지시자(53)를 포함한다. JSP(49)는, PC(161)에 대한 링크를 제공하는 대응하는 FC(59) 및 PC 태그(57)를 호출하기 위해 사용되는 FC 태그(55)를 더 포함한다.
FC 태그(55)는 그 대응하는 FC(59)를 호출하기 위해 사용될 수도 있다. 호출될 FC(59)를 ("name"에 의해) 지정함으로써, 이를 행한다. 추가적인 FC 태그(55)는 필수 또는 입력 데이터(33)를 정의하며, 입력 데이터(33)의 "source"에 레퍼런스(101)를 제공한다. 본 예에서, 입력 데이터(33)는, 데이터베이스 서버(119)를 통해 애플리케이션 서버(19)에 의해 액세스되는 데이터베이스(17)에 위치되어 있다. 따라서, FC(59)가 실행될 경우, 애플리케이션 서버(19)를 통해 데이터베이스(17)로부터 입력 데이터(33)를 요구 및 수신한다. 다음으로, 이 데이터는 FC(59)에 의해 처리되어, 데이터 출력(27)이 발생된다.
PC 태그는 그 대응하는 PC(161)를 호출하기 위해 사용될 수도 있다. 호출될 PC(161)를 ("name"에 의해) 지정함으로써, 이를 행한다. PT(61)의 "source"에는 레퍼런스도 제공된다. 따라서, PC(161)가 실행될 경우, 프리젠테이션 템플릿(61)에서 프리젠테이션 명령을 처리하며, 대응하는 프리젠테이션 요소 또는 출력(79)을 생성한다.
PC 태그(57)는 PT(61)의 두 종류, 즉, 정적 PC(65) 및 동적 PT(67) 중의 하나를 참조할 수도 있다. PT(65 및 67)는 명칭 및 위치 또는 소스(source)에 의해 참조된다. 정적 PT(65)는, 출력 페이지(79)의 일부의 프리젠테이션 요소를 정의하는 ML 문장을 포함하는 ML 파일이다. 정적 PT(65)는, PC(161)에 의해 처리하는 도중에 FC(59)에 의해 생성되는 출력 데이터(27)에 대한 레퍼런스를 포함하지도 않고, 이 출력 데이터(27)를 관련시키지도 않는다. 그 사용은 이 역할에 한정되지는 않지만, 헤더 또는 풋터와 같이, 클라이언트 애플리케이션(79)의 모든 출력 페이 지(79)에 대해 공통인 출력 페이지(79)의 이러한 요소를 정의하기 위해 일반적으로 남겨 둔다.
동적 PT(67) 또한, 출력 페이지(79)의 일부의 프리젠테이션 요소를 정의하는 ML 문장을 포함하는 ML 파일이다. 그러나, 이 동적 PT 또한, FC(59)에 의해 생성되는 출력 데이터(27)에 대한 레퍼런스 또는 링크(69)를 제공하는 적어도 하나의 제어(63)를 포함한다. 동적 PT(67)를 참조하는 PC 태그(57)는, 동적 PT(67)의 명칭 및 "source"와 함께, 출력 페이지(79)의 일부에 포함될 제어(63)의 종류에 대한 레퍼런스와, PC(161)에 의해 처리하는 도중에 제어(63)에 관련되어야 하는 "output_data_27"에 대한 레퍼런스 또는 방향(103)을 포함한다.
일단, 서브렛 엔진(23)이 컴파일된 자바 서브렛(31)을 실행하고 사용자 요구를 처리하였으면, 그 일부가 PT(65 및 67)에 의해 정의되는 출력 페이지(79)를 생성한다. JSP(49)는 다수의 PT(61)를 포함하고, 각각은 출력 페이지(79)의 일부를 정의하는 역할을 하고 있음을 인식해야 한다. 이들 PT(61)는 다시 사용 가능하므로, 동일한 PT(65, 67)가 상이하게 구성된 PC 태그(57)에 링크될 수 있다. 예를 들어, PT(67)는, 두 개의 상이한 출력 데이터(27)에 대한 레퍼런스(69)를 갖는 두 개의 상이한 제어에 의해 결합될 수 있다. 그러므로, 이것은, 두 개의 출력 데이터(27)의 차이가 있는 컨텐츠에 의해 부분적으로 기술된 두 개의 유사하지 않은 본문 컨텐츠를 갖는 출력 페이지(79)에서 두 개의 테이블이 존재하는 결과가 된다.
클라이언트 애플리케이션 하부구조:
도 14를 참조하면, 일련의 함수 컴포넌트(59)를 이용하여 조립된 클라이언트 애플리케이션의 전체 아키텍처가 예시되어 있다. 예시를 위하여, 서브렛 클라이언트(75), 애플릿 클라이언트(93) 및 직접 프로그램 가능한 인터페이스 클라이언트(95)는 모두 클라이언트 애플리케이션 하부구조(97)의 대안적인 실시예를 통해 FC(59)와 상호작용하는 것으로 도시되어 있다. 서버(19)는 예를 들어, 사용하기 위한 클라이언트 애플리케이션(71)에 대한 CORBA 또는 EJB 인터페이스(99)를 구현한다. 특정한 서버(19) 호출은 클라이언트 애플리케이션(71) 처리 로직의 실행중에 FC(59) 내에서 행해진다.
클라이언트 애플리케이션 하부구조(97)는, 클라이언트 애플리케이션(71)의 함수 골격(functional framework)을 구성하는 주문형 JSP FC 태그 확장자(55) 및 PC 태그 확장자(57) 라이브러리를 구현하는 클래스를 정의한다. 바람직한 실시예에서, 클래스의 하나의 세트는, 클라이언트 애플리케이션의 함수 컴포넌트(59)(함수 컴포넌트 하부구조)를 지원하는 것을 담당하는 주문형 JSP 확장자 라이브러리를 구현하고, 클래스의 두 번째 세트는, 클라이언트 애플리케이션의 프리젠테이션 컴포넌트(161)(프리젠테이션 컴포넌트 하부구조)를 지원하는 것을 담당하는 주문형 JSP 확장자 라이브러리를 구현한다.
함수 컴포넌트 하부구조( FCI : Function Component Infrastructure):
FC(59) 하부구조는, 함수 컴포넌트(59)와, 특정한 애플리케이션 클라이언트, 즉, 서브렛 클라이언트(75), 애플릿 클라이언트(93), DPI 클라이언트(95) 사이의 인터페이스를 제공한다. 이것은 서브렛 GUI, 애플릿 GUI 및 직접 프로그램 가능한 인터페이스에 대해 적당한 접속점을 제공한다. FC 하부구조는, 클라이언트 애플리 케이션의 함수 컴포넌트(59)를 지원하는 것을 담당하는 주문형 JSP 확장자 라이브러리를 구현하는 클래스의 세트를 제공한다. 이들 클래스는 Function Component InitTag, FunctionComponentInitTagExtraInfo, FunctionComponentCallTag, FunctionComponentCallTagExtraInfo, FunctionComponentPrerequisiteTag, FunctionComponentDebugTag, FunctionComponentErrorTag, FunctionComponentGetValeTag, 및 FunctionComponentGetValueTagExtraInfo를 포함한다.
퍼블릭 클래스 함수 컴포넌트 InitTag
이 클래스는 함수 컴포넌트 주문형 태그(55)를 초기화하기 위한 주문형 JSP 태그 확장자 라이브러리를 구현한다. 이 태그는 FunctionComponentInitTagExtraInfo 클래스에서 변수를 정의하기 위해 존재한다.
퍼블릭 메소드 doStartTag ( )
이 태그 내에는 컨텐츠에 대한 지원이 없으므로, 이 메소드는 간단하게 SKIP_BODY를 리턴한다.
퍼블릭 메소드 doEndTag ( )
요구되는 특정한 처리가 없다. 값 EVAL_PAGE가 리턴된다.
퍼블릭 클래스 FunctionComponentInitTagExtraInfo
이 클래스는 함수 컴포넌트 태그(55)에 대한 모든 스크립트 변수를 생성한다.
퍼블릭 클래스 FunctionComponentCallTag
이 클래스는 함수 컴포넌트(59) 호출 지원을 위한 주문형 JSP 태그 확장자 라이브러리를 구현한다.
퍼블릭 get/set 메소드
바람직한 실시예에서, 태그(55)의 모든 속성은 연관된 get 및 set 메소드를 가져야 한다. 특히, 다음의 메소드가 생성된다.
.getName( ), setName( )
.getDontResetAllData( ), setDontResetAllData( )
.getDebugLevel( ), setDebugLevel( )
프라이빗 메소드 (Private Method) setFunctionComponentInstance ( )
이 메소드는 현재의 함수 컴포넌트(59) 인스턴스를 저장한다. 함수 컴포넌트(59) 인스턴스는, functionComponent:prerequisite 태그 및 functionComponent:error 태그에 의해 검색될 것이므로, functionComponent:call 태그에 의해 설정된다.
보호된 메소드 getFunctionComponentInstance ( )
이 메소드는 현재의 함수 컴포넌트(59) 인스턴스를 저장한다.
보호된 메소드 setFunctionComponentException ( )
이 메소드는 함수 컴포넌트 예외 명칭과, functionComponent:error 태그에 의해 지정된 페이지를 저장한다. 예외의 세트는, 키(key)가 예외 명칭이고 값이 예외 페이지인 hashTable에 기억된다.
프라이빗 메소드 getFunctionComponentException ( )
이 메소드는, 페이지가 지정되지 않았을 경우, 명명된 예외에 대한 예외 페이지 또는 무효(null)를 리턴한다.
퍼블릭 메소드 doStartTag ( )
함수 컴포넌트(59) 명칭은 클래스 명칭 및 함수 컴포넌트 인스턴스 설명으로 파싱(parsing) 및 분할된다. 다음으로, 함수 컴포넌트(59)는 인스턴스화 되고 인스턴스 설명이 설정된다. 함수 컴포넌트 인스턴스 명칭 및 객체 레퍼런스는 세션 전후관계(session context)의 일부인 해시 테이블(hash table)에 저장된다. 또한, 함수 컴포넌트 인스턴스 자체는 setFunctionComponentInstance( ) 메소드를 이용하여 저장된다.
필수 데이터(33) 및 예외 취급(handling)은 이 태그의 본문 내에 설정된다. 함수 컴포넌트(59)의 실제적인 호출은, 본문이 처리된 후에 doEndTag( ) 메소드에 의해 행해진다.
이 태그는 본문을 필요로 하므로, 이 메소드는 간단하게 EVAL_BODY_TAG를 리턴한다.
퍼블릭 메소드 doAfterBody ( )
임의의 본문 컨텐츠가 있으면, 페이지에 대해 버퍼링된 출력에 첨부되어야 한다.
본문 상에서의 반복은 요구되지 않으므로, 이 메소드는 단순하게 SKIP_BODY를 리턴한다.
퍼블릭 메소드 doEndTag ( )
페이지에 대한 임의의 버퍼링된 출력이 기록되어야 한다.
모든 필수 데이터(33)는 본문의 functionComponent:prerequisite 태그에 의해 설정되어야 한다.
함수 컴포넌트(59)의 execute( ) 메소드가 호출된다.
예외가 주어지면, 다음의 방식으로 해석되어야 한다. 예외에 대한 에러 설명어(descriptor) 속성 세트가 존재하면, 그 예외는 functionComponentException 스크립트 변수와, 정의된 JSP(49)에 전달되는 요구에 저장되어야 한다. 이 경우, 값 SKIP_PAGE가 리턴된다. 예외가 주어지지 않은 경우를 포함하는 모든 다른 경우에는, 값 EVAL_PAGE가 리턴된다.
퍼블릭 클래스 FunctionComponentCallTagExtraInfo
이 클래스는, functionComponent:call 태그에 대해 예외(functionComponent:error 태그에 의해 정의됨)가 취급될 경우에 설정되는 functionComponentException에 대한 스크립트 변수 정의를 구현한다.
퍼블릭 클래스 FunctionComponentPrerequisiteTag
이 클래스는 함수 컴포넌트(59) 필수 데이터(33) 설정 지원을 위한 주문형 JSP 태그(55) 확장자 라이브러리를 구현한다.
퍼블릭 get/set 메소드
태그의 모든 속성은 연관된 get 및 set 메소드를 가진다. 특히, 다음의 메소드가 생성된다.
.getTarget( ), setTarget( )
.getSource( ), setSource( )
이 속성의 각각의 종류는 필수 데이터(33)의 실제적인 종류보다는 스트링(String)이다.
.getValue( ), setValue( )
.getEmpty( ), setEmpty( )
퍼블릭 메소드 doStartTag ( )
이 태그가 functionComponent:call 태그의 내부에 있지 않으면, 적절한 JspTagException이 주어진다. 함수 컴포넌트(59) 객체 자체는 functionComponent:call 태그 핸들러(handler)의 getFunctoinComponentInstance( ) 메소드를 이용하여 검색될 수 있다. 이 태그 내에 컨텐츠에 대한 지원이 없으므로, 이 메소드는 간단하게 SKIP_BODY를 리턴한다.
퍼블릭 메소드 doEndTag ( )
타겟 데이터 요소를 설정하는 것은 함수 컴포넌트(59) 클래스에 대한 리플렉션을 이용하여 행해진다.
empty 속성이 설정되면, empty 값이 set 메소드로서 사용된다. value 속성이 설정되면, set 메소드로서 사용하기 위한 문자 값을 제공한다. 그렇지 않으면, source 속성은 set 메소드로서 사용하기 위한 값을 얻도록 해석되어야 한다.
source 속성의 해석은 다음의 단계를 포함한다.
● 확인 경로(하나가 있을 경우, 첫 번째 "."의 오른쪽으로의 모든 것)로부터 기본 명칭(하나가 있을 경우, 첫 번째 "."의 왼쪽으로의 모든 것)을 분리한다.
● 기본 명칭이 스크립트 변수 명칭이면,
● 스크립트 변수 명칭 값을 룩업(lookup)한다.
● 기본 명칭이 서브렛 요구 파라미터 명칭이면,
● 서브렛 요구 파라미터 명칭 값을 룩업한다.
● 그렇지 않으면, 기본 명칭은 함수 컴포넌트(59) 인스턴스 명칭이어야 한다.
● 함수 컴포넌트(59) 인스턴스 객체를 얻기 위하여, 함수 컴포넌트(59) 인스턴스 명칭을 룩업한다.
● 확인 경로가 있으면,
● 확인 경로의 각각의 요소에 대한 get 메소드를 호출함으로써, 확인 경로를 평가한다.
● 필수 데이터 요소에 대한 값이 있어야 하므로,
● 값 EVAL_PAGE가 리턴된다.
퍼블릭 클래스 FunctionComponentDebugTag
이 클래스는 함수 컴포넌트 디버그 지원을 위한 주문형 JSP 태그 확장자 라이브러리를 구현한다.
퍼블릭 get/set 메소드
바람직한 실시예에서, 태그의 모든 속성은 연관된 get 및 set 메소드를 가진다. 특히, 다음의 메소드가 생성된다.
.getDebugLevel( ), setDebugLevel( )
.getDebugFile( ), setDebugFile( )
.getValue( ), setValue( )
.getSource( ), setSource( )
퍼블릭 메소드 doStartTag ( )
이 내그 내에 컨텐츠에 대한 지원이 없으므로, 이 메소드는 간단하게 SKIP_BODY를 리턴한다.
퍼블릭 메소드 doEndTag ( )
타겟 데이터 요소를 설정하는 것은 함수 컴포넌트 클래스에 대한 리플렉션을 이용하여 행해진다.
empty 속성이 설정되면, set 메소드로서 empty 값이 사용된다. value 속성이 설정되면, set 메소드로서 사용하기 위한 문자 값을 제공한다. 그렇지 않으면, source 속성은 set 메소드로서 사용하기 위한 값을 얻도록 해석되어야 한다.
source 속성의 해석은 다음의 단계를 포함한다.
● 확인 경로(하나가 있을 경우, 첫 번째 "."의 오른쪽으로의 모든 것)로부터 기본 명칭(하나가 있을 경우, 첫 번째 "."의 왼쪽으로의 모든 것)을 분리한다.
● 기본 명칭이 스크립트 변수 명칭이면,
● 스크립트 변수 명칭 값을 룩업한다.
● 기본 명칭이 서브렛 요구 파라미터 명칭이면,
● 서브렛 요구 파라미터 명칭 값을 룩업한다.
● 그렇지 않으면, 기본 명칭은 함수 컴포넌트(59) 인스턴스 명칭이어야 한 다.
● 함수 컴포넌트(59) 인스턴스 객체를 얻기 위하여, 함수 컴포넌트(59) 인스턴스 명칭을 룩업한다.
● 확인 경로가 있으면,
● 확인 경로의 각각의 요소에 대한 get 메소드를 호출함으로써, 확인 경로를 평가한다.
● 필수 데이터 요소에 대한 값이 있어야 하므로,
● 값 EVAL_PAGE가 리턴된다.
퍼블릭 클래스 FunctionComponentErrorTag
이 클래스는 함수 컴포넌트(59) 에러 지원을 위한 주문형 JSP 태그 확장자 라이브러리를 구현한다.
퍼블릭 get/set 메소드
태그의 모든 속성은 연관된 get 및 set 메소드를 가져야 한다. 특히, 다음의 메소드가 생성된다.
.getName( ), setName( )
.getPage( ), setPage( )
퍼블릭 메소드 doStartTag ( )
이 태그가 functionComponent:call 태그 내에 있지 않으면, 적절한 JSPTagException이 주어진다. 함수 컴포넌트(59) 객체 자체는 functionComponent:call 태그 핸들러의 getFunctionComponentInstance( ) 메소드를 이용하여 검색될 수 있다. 이 태그 내에서 컨텐츠에 대한 지원이 없으므로, 이 메소드는 간단하게 SKIP_BODY를 리턴한다.
퍼블릭 메소드 doEndTag ( )
에러를 정의하는 것은 functionComponent:call 태그 핸들러의 setFunctionComponentException( ) 메소드를 호출하여 행해진다.
값 EVAL_PAGE가 리턴된다.
퍼블릭 클래스 FunctionComponentGetValueTag
이 클래스는 함수 컴포넌트(59) 리턴된 결과 데이터 값을 얻기 위한 주문형 JSP 태그 확장자 라이브러리를 구현한다.
퍼블릭 get/set 메소드
바람직한 실시예에서, 태그의 모든 속성은 연관된 get 및 set 메소드를 가진다. 특히, 다음의 메소드가 생성된다.
.getSource( ), setSource( )
퍼블릭 메소드 doStartTag ( )
이 태그 내에서 컨텐츠에 대한 지원이 없으므로, 이 메소드는 간단하게 SKIP_BODY를 리턴한다.
퍼블릭 메소드 doEndTag ( )
타겟 데이터 요소를 설정하는 것은 함수 컴포넌트 클래스에 대한 리플렉션을 이용하여 행해진다.
empty 속성이 설정되면, set 메소드로서 empty 값이 사용된다. value 속성이 설정되면, set 메소드로서 사용하기 위한 문자 값을 제공한다. 그렇지 않으면, source 속성은 set 메소드로서 사용하기 위한 값을 얻도록 해석되어야 한다.
source 속성의 해석은 다음의 단계를 포함한다.
● 확인 경로(하나가 있을 경우, 첫 번째 "."의 오른쪽으로의 모든 것)로부터 기본 명칭(하나가 있을 경우, 첫 번째 "."의 왼쪽으로의 모든 것)을 분리한다.
● 기본 명칭이 스크립트 변수 명칭이면,
● 스크립트 변수 명칭 값을 룩업한다.
● 기본 명칭이 서브렛 요구 파라미터 명칭이면,
● 서브렛 요구 파라미터 명칭 값을 룩업한다.
● 그렇지 않으면, 기본 명칭은 함수 컴포넌트(59) 인스턴스 명칭이어야 한다.
● 함수 컴포넌트(59) 인스턴스 객체를 얻기 위하여, 함수 컴포넌트(59) 인스턴스 명칭을 룩업한다.
● 확인 경로가 있으면,
● 확인 경로의 각각의 요소에 대한 get 메소드를 호출함으로써, 확인 경로를 평가한다.
● 필수 데이터 요소에 대한 값이 있어야 하므로,
● 값 EVAL_PAGE가 리턴된다.
퍼블릭 클래스 FunctionComponentGetValueTagExtraInfo
이 클래스는 functionComponent:getValue 태그에 대해 설정되는 resultValue 에 대한 스크립트 변수 정의를 구현한다.
프리젠테이션 컴포넌트 하부구조(PCI):
PC(161) 하부구조는, 클라이언트 애플리케이션의 프리젠테이션 컴포넌트(161)를 지원하는 것을 담당하는 주문형 JSP 확장자 라이브러리를 구현하는 클래스의 세트를 제공한다. 이 클래스는 PresentationPageTag, PresentationControlTag, PresentationAttributeTag, 및 PresentationProducePageTag를 포함한다.
퍼블릭 클래스 PresentationPageTag
이 클래스는 프리젠테이션 컴포넌트(161) 지원을 위한 주문형 JSP 태그 확장자 라이브러리를 구현한다.
퍼블릭 get/set 메소드
PC 태그(57)의 모든 속성은 연관된 get 및 set 메소드를 가져야 한다. 특히, 다음의 메소드가 생성된다.
.getName( ), setName( )
.getRoot( ), setRoot( )
.getSource( ), setSource( )
.getFormat( ), setFormat( )
.getLanguage( ), setLanguage( )
퍼블릭 메소드 doStartTag ( )
이 태그 내에서 컨텐츠에 대한 지원이 없으므로, 이 메소드는 간단하게 SKIP_BODY를 리턴한다.
퍼블릭 메소드 doEndTag ( )
페이지 생성기 객체가 인스턴스화 되고, 명칭 속성의 값으로 명명되며, pageContext에 기억된다. 연관되 ML 파일은 source, format 및 language 속성의 값을 이용하여 결정된다.
모든 처리가 완료된 후, 값 EVAL_PAGE가 리턴된다.
퍼블릭 클래스 PresentationControlTag
이 클래스의 세트는 특수 제어의 프리젠테이션 컴포넌트(161) 지원을 위한 주문형 JSP 태그 확장자 라이브러리를 구현한다.
퍼블릭 get/set 메소드
태그의 모든 속성은 연관된 get 및 set 메소드를 가진다. 특히, 아래의 메소드가 생성된다.
.getName( ), setName( )
.getType( ), setType( )
.getId( ), setId( )
.getParentPresentation( ), setParentPresentation( )
.getSource( ), setSource( )
.getValue( ), setValue( )
.getEmpty( ), setEmpty( )
퍼블릭 메소드 doStartTag ( )
이 태그(57)는 본문을 필요로 하므로, 이 메소드는 간단하게 EVAL_BODY_TAG를 리턴한다.
퍼블릭 메소드 doAfterBody ( )
임의의 본문 컨텐츠가 존재하면, 페이지에 대한 버퍼링된 출력에 첨부되어야 한다. 본문 상에서의 반복이 요구되지 않으므로, 이 메소드는 간단하게 SKIP_BODY를 리턴한다.
퍼블릭 메소드 doEndTag ( )
이 부모 명칭은 pageContext 내에서 발견되는 알려진 페이지 생성기 객체 또는 제어 객체이다.
적절한 종류의 제어가 인스턴스화 되어 pageContext에 기억된다.
제어의 데이터 제어 특성이 설정된다. empty 속성이 설정되면, 그 특성으로서 empty 값이 사용된다. value 속성이 설정되면, 그 특성을 위한 문자 값을 제공한다. 그렇지 않으면, source 속성은 그 특성을 위한 값을 얻도록 해석된다. source 속성의 해석은 다음의 단계를 포함한다.
● 확인 경로(하나가 있을 경우, 첫 번째 "."의 오른쪽으로의 모든 것)로부터 기본 명칭(하나가 있을 경우, 첫 번째 "."의 왼쪽으로의 모든 것)을 분리한다.
● 기본 명칭이 스크립트 변수 명칭이면,
● 스크립트 변수 명칭 값을 룩업한다.
● 기본 명칭이 서브렛 요구 파라미터 명칭이면,
● 서브렛 요구 파라미터 명칭 값을 룩업한다.
● 그렇지 않으면, 기본 명칭은 함수 컴포넌트(59) 인스턴스 명칭이어야 한다.
● 함수 컴포넌트(59) 인스턴스 객체를 얻기 위하여, 함수 컴포넌트(59) 인스턴스 명칭을 룩업한다.
● 확인 경로가 있으면,
● 확인 경로의 각각의 요소에 대한 get 메소드를 호출함으로써, 확인 경로를 평가한다.
● 필수 데이터 요소에 대한 값이 있어야 하므로,
● 모든 처리가 완료된 후, 값 EVAL_PAGE가 리턴된다.
퍼블릭 클래스 PresentationAttributeTag
이 클래스의 세트는 특정 제어의 속성의 프리젠테이션 컴포넌트(161) 지원을 위한 주문형 JSP 태그 확장자 라이브러리를 구현한다.
퍼블릭 get/set 메소드
태그의 모든 속성은 연관된 get 및 set 메소드를 가진다. 특히, 다음의 메소드가 생성된다.
.getName( ), setName( )
.getSource( ), setSource( )
.getValue( ), setValue( )
.getEmpty( ), setEmpty( )
퍼블릭 메소드 doStartTag ( )
이 태그 내에서 컨텐츠에 대한 지원이 없으므로, 이 메소드는 간단하게 SKIP_BODY를 리턴한다.
퍼블릭 메소드 doEndTag ( )
부모 제어는 pageContext 내에서 발견되며 그 속성이 설정된다.
empty 속성이 설정되면, 그 특성으로서 empty 값이 사용된다. value 속성이 설정되면, 그 특성을 위한 문자 값을 제공한다. 그렇지 않으면, source 속성은 그 특성을 위한 값을 얻도록 해석된다. source 속성의 해석은 다음의 단계를 포함한다.
● 확인 경로(하나가 있을 경우, 첫 번째 "."의 오른쪽으로의 모든 것)로부터 기본 명칭(하나가 있을 경우, 첫 번째 "."의 왼쪽으로의 모든 것)을 분리한다.
● 기본 명칭이 스크립트 변수 명칭이면,
● 스크립트 변수 명칭 값을 룩업한다.
● 기본 명칭이 서브렛 요구 파라미터 명칭이면,
● 서브렛 요구 파라미터 명칭 값을 룩업한다.
● 그렇지 않으면, 기본 명칭은 함수 컴포넌트(59) 인스턴스 명칭이어야 한다.
● 함수 컴포넌트(59) 인스턴스 객체를 얻기 위하여, 함수 컴포넌트(59) 인스턴스 명칭을 룩업한다.
● 확인 경로가 있으면,
● 확인 경로의 각각의 요소에 대한 get 메소드를 호출함으로써, 확인 경로 를 평가한다.
● 필수 데이터 요소에 대한 값이 있어야 하므로,
● 모든 처리가 완료된 후, 값 EVAL_PAGE가 리턴된다.
퍼블릭 클래스 PresentationProducePageTag
이 클래스는 출력 페이지를 생성하기 위하여, 프리젠테이션 컴포넌트(161) 지원을 위한 주문형 JSP 태그 확장자 라이브러리를 구현한다.
퍼블릭 get/set 메소드
태그의 모든 속성은 연관된 get 및 set 메소드를 가진다. 특히, 다음의 메소드가 생성된다.
.getPage( ), setPage( )
본 발명은 임의의 특정 실시예를 참조하여 설명되었지만, 후술하는 청구범위에서 범위를 결정한 것과 같이, 본 발명의 취지 및 범위로부터 벗어나지 않고도, 각종 변형이 당업자에게 명백할 것이다.

Claims (58)

  1. 네트워크 상에서 사용자 인터페이스와의 상호작용을 위한 컴퓨터 실행가능 멀티-타이어 애플리케이션을 호스팅하는 방법으로서, 상기 애플리케이션은 애플리케이션 프리젠테이션 타이어를 포함하고, 상기 호스팅하는 방법은,
    대응하는 제1 프리젠테이션 요소를 정의하기 위한 제1 프리젠테이션 명령을 포함하는 제1 프리젠테이션 템플릿을 선택하는 단계;
    상기 제1 프리젠테이션 명령을 처리하기 위한 상기 애플리케이션 프리젠테이션 타이어의 제1 프리젠테이션 컴포넌트를 선택하는 단계; 및
    상기 제1 프리젠테이션 컴포넌트를 제1 템플릿에 링크하는 단계
    를 포함하고,
    사용자 인터페이스에 대한 후속 전달을 위한 상기 멀티-타이어 애플리케이션의 실행중에, 상기 제1 컴포넌트는 상기 제1 프리젠테이션 명령을 처리하여 상기 제1 프리젠테이션 요소를 생성하는 것인 컴퓨터 실행가능 멀티-타이어 애플리케이션을 호스팅하는 방법.
  2. 제1항에 있어서,
    대응하는 제2 프리젠테이션 요소를 정의하기 위한 제2 프리젠테이션 명령을 포함하는 제2 프리젠테이션 템플릿을 선택하는 단계;
    상기 제2 프리젠테이션 명령을 처리하기 위한 상기 제1 프리젠테이션 컴포넌 트를 선택하는 단계; 및
    상기 제1 컴포넌트를 제2 템플릿에 링크하는 단계를 더 포함하고,
    사용자 인터페이스에 대한 후속 전달을 위한 상기 멀티-타이어 애플리케이션의 실행중에, 상기 제1 컴포넌트는 상기 제2 프리젠테이션 명령을 처리하여 상기 제2 프리젠테이션 요소를 생성하는 것인 컴퓨터 실행가능 멀티-타이어 애플리케이션을 호스팅하는 방법.
  3. 제1항에 있어서, 상기 멀티-타이어 애플리케이션은 애플리케이션 로직 타이어를 더 포함하는 것인 컴퓨터 실행가능 멀티-타이어 애플리케이션을 호스팅하는 방법.
  4. 제1항에 있어서,
    입력 데이터를 선택하는 단계;
    상기 입력 데이터를 처리하기 위한 상기 애플리케이션 로직 타이어의 제1 함수 컴포넌트를 선택하는 단계; 및
    상기 입력 데이터를 상기 제1 함수 컴포넌트에 링크하는 단계
    를 포함하고,
    상기 멀티-타이어 애플리케이션의 실행중에, 상기 제1 함수 컴포넌트는 상기 입력 데이터를 처리하여 출력 데이터를 생성하는 것인 컴퓨터 실행가능 멀티-타이어 애플리케이션을 호스팅하는 방법.
  5. 제4항에 있어서, 상기 제1 템플릿은, 출력 데이터를 포함하기 위하여, 상기 대응하는 제1 프리젠테이션 요소를 더 정의하기 위한 출력 데이터 프리젠테이션 명령을 더 포함하는 것인 컴퓨터 실행가능 멀티-타이어 애플리케이션을 호스팅하는 방법.
  6. 제5항에 있어서,
    상기 제1 프리젠테이션 컴포넌트는 상기 출력 데이터 프리젠테이션 명령을 처리하도록 지시하는 단계를 더 포함하고,
    상기 멀티-타이어 애플리케이션의 실행중에, 상기 제1 프리젠테이션 컴포넌트는 상기 출력 데이터 프리젠테이션 명령을 처리하여 상기 출력 데이터를 포함하는 상기 제1 프리젠테이션 요소를 생성하는 것인 컴퓨터 실행가능 멀티-타이어 애플리케이션을 호스팅하는 방법.
  7. 제2항에 있어서, 상기 프리젠테이션 템플릿은 컴퓨터 판독가능 파일인 것인 컴퓨터 실행가능 멀티-타이어 애플리케이션을 호스팅하는 방법.
  8. 제7항에 있어서, 상기 프리젠테이션 명령은, 상기 제1 프리젠테이션 요소의 레이아웃, 스타일 및 포맷을 포함하는 그룹으로부터 선택되는 것인 컴퓨터 실행가능 멀티-타이어 애플리케이션을 호스팅하는 방법.
  9. 제8항에 있어서, 상기 프리젠테이션 명령은 마크업 언어로 기술되는 것인 컴퓨터 실행가능 멀티-타이어 애플리케이션을 호스팅하는 방법.
  10. 제9항에 있어서, 상기 마크업 언어는 HTML, HDML 및 WML을 포함하는 그룹으로부터 선택되는 것인 컴퓨터 실행가능 멀티-타이어 애플리케이션을 호스팅하는 방법.
  11. 제5항에 있어서, 상기 출력 데이터 프리젠테이션 명령은 출력 데이터가 그 내부에서 제시되는 제어를 정의하는 것인 컴퓨터 실행가능 멀티-타이어 애플리케이션을 호스팅하는 방법.
  12. 제11항에 있어서, 상기 제어는, 텍스트 필드(Text field), 패스워드 필드(Password field), 숨겨진 필드(Hidden field), 텍스트 영역(Text area), 테이블(Table), 리스트 박스(List box), 체크 박스(Check box), 라디오 버튼(Radio button), 이미지(Image), 푸시 버튼(Push button), 이미지 버튼(Image button), 제출 버튼(Submit button), 리셋 버튼(Reset button), 링크(Link) 및 스팬(Span)을 포함하는 그룹으로부터 선택되는 것인 컴퓨터 실행가능 멀티-타이어 애플리케이션을 호스팅하는 방법.
  13. 제1항에 있어서, 상기 제1 프리젠테이션 컴포넌트는 컴퓨터 실행가능 파일인 것인 컴퓨터 실행가능 멀티-타이어 애플리케이션을 호스팅하는 방법.
  14. 제13항에 있어서, 상기 컴퓨터 실행가능 파일은 자바 빈(java bean)인 것인 컴퓨터 실행가능 멀티-타이어 애플리케이션을 호스팅하는 방법.
  15. 제4항에 있어서, 상기 제1 함수 컴포넌트는 컴퓨터 실행가능 파일인 것인 컴퓨터 실행가능 멀티-타이어 애플리케이션을 호스팅하는 방법.
  16. 제15항에 있어서, 상기 컴퓨터 실행가능 파일은 자바 빈인 것인 컴퓨터 실행가능 멀티-타이어 애플리케이션을 호스팅하는 방법.
  17. 제1항에 있어서, 상기 제1 프리젠테이션 컴포넌트는 방향 요소에 의해 상기 제1 프리젠테이션 템플릿에 링크되는 것인 컴퓨터 실행가능 멀티-타이어 애플리케이션을 호스팅하는 방법.
  18. 제17항에 있어서, 상기 방향 요소는 상기 제1 프리젠테이션 템플릿의 위치를 지정하고, 상기 제1 프리젠테이션 컴포넌트를 지정된 위치로 지시하는 것인 컴퓨터 실행가능 멀티-타이어 애플리케이션을 호스팅하는 방법.
  19. 제18항에 있어서, 상기 방향 요소는 제1 프리젠테이션 컴포넌트 태그인 것인 컴퓨터 실행가능 멀티-타이어 애플리케이션을 호스팅하는 방법.
  20. 제19항에 있어서, 상기 제1 프리젠테이션 컴포넌트 태그는, 페이지 태그(page Tag), 제어 태그(control Tag), 속성 태그(attribute Tag), 페이지생성 태그(producePage Tag), 클리어 태그(clear Tag), 및 인터셉터 태그(interceptor Tag)를 포함하는 그룹으로부터 선택되는 것인 컴퓨터 실행가능 멀티-타이어 애플리케이션을 호스팅하는 방법.
  21. 제19항에 있어서, 상기 제1 프리젠테이션 컴포넌트 태그는, 상기 멀티-타이어 애플리케이션을 구현하는 방향 모듈의 지시자로서 표현되는 것인 컴퓨터 실행가능 멀티-타이어 애플리케이션을 호스팅하는 방법.
  22. 제21항에 있어서, 상기 방향 모듈은 자바 서버 페이지인 것인 컴퓨터 실행가능 멀티-타이어 애플리케이션을 호스팅하는 방법.
  23. 제1항에 있어서, 상기 제1 함수 컴포넌트는 방향 요소에 의해 상기 입력 데이터에 링크되는 것인 컴퓨터 실행가능 멀티-타이어 애플리케이션을 호스팅하는 방법.
  24. 제23항에 있어서, 상기 방향 요소는 상기 입력 데이터의 위치를 지정하고, 상기 제1 함수 컴포넌트를 상기 지정된 위치로 지시하는 것인 컴퓨터 실행가능 멀티-타이어 애플리케이션을 호스팅하는 방법.
  25. 제24항에 있어서, 상기 방향 요소는 제1 함수 컴포넌트 태그인 것인 컴퓨터 실행가능 멀티-타이어 애플리케이션을 호스팅하는 방법.
  26. 제25항에 있어서, 상기 제1 함수 컴포넌트 태그는, 초기화 태그(init Tag), 호출 태그(call Tag), 필수 태그(prerequisite Tag), 디버그 태그(debug Tag), 에러 태그(error Tag), 값 취득 태그(getValue Tag), 및 이프 태그(if Tag)를 포함하는 그룹으로부터 선택되는, 컴퓨터 실행가능 멀티-타이어 애플리케이션을 호스팅하는 방법.
  27. 제26항에 있어서, 상기 제1 함수 컴포넌트 태그는, 상기 멀티-타이어 애플리케이션을 구현하는 방향 모듈의 지시자로서 표현되는, 컴퓨터 실행가능 멀티-타이어 애플리케이션을 호스팅하는 방법.
  28. 제21항에 있어서, 상기 방향 모듈은 자바 서버 페이지인 것인 컴퓨터 실행가능 멀티-타이어 애플리케이션을 호스팅하는 방법.
  29. 제1항에 있어서, 상기 사용자 인터페이스에 대한 표시 항목을 복수의 표시 부분으로서 나타내는 단계를 더 포함하고,
    상기 부분 중 적어도 두 부분이 프리젠테이션 템플릿의 상이한 하나와 연관되는 것인 컴퓨터 실행가능 멀티-타이어 애플리케이션을 호스팅하는 방법.
  30. 제29항에 있어서, 상기 템플릿 중 하나가 적어도 두 부분을 생성하기 위하여 사용되도록, 상기 프리젠테이션 템플릿은 다시 사용 가능한 것인 컴퓨터 실행가능 멀티-타이어 애플리케이션을 호스팅하는 방법.
  31. 네트워크 상에서 사용자 인터페이스와의 상호작용을 위한 컴퓨터 실행가능 멀티-타이어 애플리케이션은 호스팅하는 시스템으로서, 상기 애플리케이션은 애플리케이션 프리젠테이션 타이어를 포함하고, 상기 시스템은,
    대응하는 제1 프리젠테이션 요소를 정의하기 위한 제1 프리젠테이션 명령을 포함하는 제1 프리젠테이션 템플릿;
    상기 제1 프리젠테이션 명령을 처리하기 위한 상기 애플리케이션 프리젠테이션 타이어의 제1 프리젠테이션 컴포넌트; 및
    상기 제1 프리젠테이션 컴포넌트를 상기 제1 템플릿에 링크하기 위한 제1방향 요소로서, 사용자 인터페이스에 대한 후속 전달을 위한 상기 멀티-타이어 애플리케이션의 실행중에, 상기 제1 컴포넌트가 상기 제1 프리젠테이션 명령을 처리하여 상기 제1 프리젠테이션 요소를 생성하도록 하는 제1방향 요소
    를 포함하는 것인 컴퓨터 실행가능 멀티-타이어 애플리케이션을 호스팅하는 시스템.
  32. 제31항에 있어서,
    대응하는 제2 프리젠테이션 요소를 정의하기 위한 제2 프리젠테이션 명령을 포함하는 제2 프리젠테이션 템플릿; 및
    상기 제1 컴포넌트를 상기 제2 템플릿에 링크하기 위한 제2방향 요소로서, 사용자 인터페이스에 대한 후속 전달을 위한 상기 멀티-타이어 애플리케이션의 실행중에, 상기 제1 컴포넌트가 상기 제2 프리젠테이션 명령을 처리하여 상기 제2 프리젠테이션 요소를 생성하도록 하는 제2방향 요소
    를 더 포함하는 것인 컴퓨터 실행가능 멀티-타이어 애플리케이션을 호스팅하는 시스템.
  33. 제31항에 있어서, 상기 멀티-타이어 애플리케이션은 애플리케이션 로직 타이어를 더 포함하는 것인 컴퓨터 실행가능 멀티-타이어 애플리케이션을 호스팅하는 시스템.
  34. 제31항에 있어서, 입력 데이터를 처리하기 위한 상기 애플리케이션 로직 타이어의 제1 함수 컴포넌트를 더 포함하고,
    상기 제1방향 요소는 상기 입력 데이터를 상기 제1 함수 컴포넌트에 더 링크 하고, 상기 멀티-타이어 애플리케이션의 실행중에, 상기 제1 함수 컴포넌트는 상기 입력 데이터를 처리하여 출력 데이터를 생성하는 것인 컴퓨터 실행가능 멀티-타이어 애플리케이션을 호스팅하는 시스템.
  35. 제34항에 있어서, 상기 제1 템플릿은, 출력 데이터를 포함하기 위하여, 상기 대응하는 제1 프리젠테이션 요소를 더 정의하기 위한 출력 데이터 프리젠테이션 명령을 더 포함하는 것인 컴퓨터 실행가능 멀티-타이어 애플리케이션을 호스팅하는 시스템.
  36. 제35항에 있어서, 상기 멀티-타이어 애플리케이션의 실행중에, 상기 제1 프리젠테이션 컴포넌트는 상기 출력 데이터 프리젠테이션 명령을 처리하여 상기 출력 데이터를 포함하는 상기 제1 프리젠테이션 요소를 생성하는 것인 컴퓨터 실행가능 멀티-타이어 애플리케이션을 호스팅하는 시스템.
  37. 제32항에 있어서, 상기 프리젠테이션 템플릿은 컴퓨터 판독가능 파일인 것인 컴퓨터 실행가능 멀티-타이어 애플리케이션을 호스팅하는 시스템.
  38. 제37항에 있어서, 상기 프리젠테이션 명령은, 상기 제1 프리젠테이션 요소의 레이아웃, 스타일 및 포맷을 포함하는 그룹으로부터 선택되는 것인 컴퓨터 실행가능 멀티-타이어 애플리케이션을 호스팅하는 시스템.
  39. 제38항에 있어서, 상기 프리젠테이션 명령은 마크업 언어로 기술되는 것인 컴퓨터 실행가능 멀티-타이어 애플리케이션을 호스팅하는 시스템.
  40. 제39항에 있어서, 상기 마크업 언어는 HTML, HDML 및 WML을 포함하는 그룹으로부터 선택되는 것인 컴퓨터 실행가능 멀티-타이어 애플리케이션을 호스팅하는 시스템.
  41. 제35항에 있어서, 상기 출력 데이터 프리젠테이션 명령은 출력 데이터가 그 내부에서 제시되는 제어를 정의하는 것인 컴퓨터 실행가능 멀티-타이어 애플리케이션을 호스팅하는 시스템.
  42. 제41항에 있어서, 상기 제어는, 텍스트 필드(Text field), 패스워드 필드(Password field), 숨겨진 필드(Hidden field), 텍스트 영역(Text area), 테이블(Table), 리스트 박스(List box), 체크 박스(Check box), 라디오 버튼(Radio button), 이미지(Image), 푸시 버튼(Push button), 이미지 버튼(Image button), 제출 버튼(Submit button), 리셋 버튼(Reset button), 링크(Link) 및 스팬(Span)을 포함하는 그룹으로부터 선택되는 것인 컴퓨터 실행가능 멀티-타이어 애플리케이션을 호스팅하는 시스템.
  43. 제41항에 있어서, 상기 제1 프리젠테이션 컴포넌트는 컴퓨터 실행가능 파일인 것인 컴퓨터 실행가능 멀티-타이어 애플리케이션을 호스팅하는 시스템.
  44. 제43항에 있어서, 상기 컴퓨터 실행가능 파일은 자바 빈인 것인 컴퓨터 실행가능 멀티-타이어 애플리케이션을 호스팅하는 시스템.
  45. 제34항에 있어서, 상기 제1 함수 컴포넌트는 컴퓨터 실행가능 파일인 것인 컴퓨터 실행가능 멀티-타이어 애플리케이션을 호스팅하는 시스템.
  46. 제45항에 있어서, 상기 컴퓨터 실행가능 파일은 자바 빈인 것인 컴퓨터 실행가능 멀티-타이어 애플리케이션을 호스팅하는 시스템.
  47. 제31항에 있어서, 상기 제1 프리젠테이션 컴포넌트는 방향 요소에 의해 상기 제1 프리젠테이션 템플릿에 링크되는 것인 컴퓨터 실행가능 멀티-타이어 애플리케이션을 호스팅하는 시스템.
  48. 제47항에 있어서, 상기 방향 요소는 상기 제1 프리젠테이션 템플릿의 위치를 지정하고, 상기 제1 프리젠테이션 컴포넌트를 상기 지정된 위치로 지시하는 것인 컴퓨터 실행가능 멀티-타이어 애플리케이션을 호스팅하는 시스템.
  49. 제48항에 있어서, 상기 방향 요소는 제1 프리젠테이션 컴포넌트 태그인 것인 컴퓨터 실행가능 멀티-타이어 애플리케이션을 호스팅하는 시스템.
  50. 제49항에 있어서, 상기 제1 프리젠테이션 컴포넌트 태그는, 페이지 태그(page Tag), 제어 태그(control Tag), 속성 태그(attribute Tag), 페이지생성 태그(producePage Tag), 클리어 태그(clear Tag), 및 인터셉터 태그(interceptor Tag)를 포함하는 그룹으로부터 선택되는 것인 컴퓨터 실행가능 멀티-타이어 애플리케이션을 호스팅하는 시스템.
  51. 제49항에 있어서, 상기 제1 프리젠테이션 컴포넌트 태그는, 상기 멀티-타이어 애플리케이션을 구현하는 방향 모듈의 지시자로서 표현되는 것인 컴퓨터 실행가능 멀티-타이어 애플리케이션을 호스팅하는 시스템.
  52. 제51항에 있어서, 상기 방향 모듈은 자바 서버 페이지인 것인 컴퓨터 실행가능 멀티-타이어 애플리케이션을 호스팅하는 시스템.
  53. 제31항에 있어서, 상기 제1 함수 컴포넌트는 방향 요소에 의해 상기 입력 데이터에 링크되는 것인 컴퓨터 실행가능 멀티-타이어 애플리케이션을 호스팅하는 시스템.
  54. 제53항에 있어서, 상기 방향 요소는 상기 입력 데이터의 위치를 지정하고, 상기 제1 함수 컴포넌트를 상기 지정된 위치로 지시하는 것인 컴퓨터 실행가능 멀티-타이어 애플리케이션을 호스팅하는 시스템.
  55. 제54항에 있어서, 상기 방향 요소는 제1 함수 컴포넌트 태그인 것인 컴퓨터 실행가능 멀티-타이어 애플리케이션을 호스팅하는 시스템.
  56. 제55항에 있어서, 상기 제1 함수 컴포넌트 태그는, 초기화 태그(init Tag), 호출 태그(call Tag), 필수 태그(prerequisite Tag), 디버그 태그(debug Tag), 에러 태그(error Tag), 값 취득 태그(getValue Tag), 및 이프 태그(if Tag)를 포함하는 그룹으로부터 선택되는 것인 컴퓨터 실행가능 멀티-타이어 애플리케이션을 호스팅하는 시스템.
  57. 제56항에 있어서, 상기 제1 함수 컴포넌트 태그는 상기 멀티-타이어 애플리케이션을 구현하는 방향 모듈의 지시자로서 표현되는 것인 컴퓨터 실행가능 멀티-타이어 애플리케이션을 호스팅하는 시스템.
  58. 제51항에 있어서, 상기 방향 모듈은 자바 서버 페이지인 것인 컴퓨터 실행가능 멀티-타이어 애플리케이션을 호스팅하는 시스템.
KR1020067014098A 2003-12-19 2004-12-17 멀티-티어 네트워크화된 서비스를 생성 및 제공하기 위한 방법 및 시스템 KR101145476B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/741,216 2003-12-19
US10/741,216 US7389517B2 (en) 2003-12-19 2003-12-19 Method and system for creating and providing a multi-tier network service using separated function and presentation components
PCT/CA2004/002153 WO2005059739A1 (en) 2003-12-19 2004-12-17 Method and system for creating and providing a multi-tier networked service

Publications (2)

Publication Number Publication Date
KR20070008542A true KR20070008542A (ko) 2007-01-17
KR101145476B1 KR101145476B1 (ko) 2012-05-16

Family

ID=34678081

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020067014098A KR101145476B1 (ko) 2003-12-19 2004-12-17 멀티-티어 네트워크화된 서비스를 생성 및 제공하기 위한 방법 및 시스템

Country Status (8)

Country Link
US (3) US7389517B2 (ko)
KR (1) KR101145476B1 (ko)
CN (1) CN1914594A (ko)
AU (1) AU2004298636B2 (ko)
BR (1) BRPI0417822A (ko)
CA (1) CA2550051C (ko)
MX (1) MXPA06007053A (ko)
WO (1) WO2005059739A1 (ko)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7555538B2 (en) * 2002-12-26 2009-06-30 Research In Motion Limited System and method for building and execution of platform-neutral generic services' client applications
US7389517B2 (en) * 2003-12-19 2008-06-17 Rce Emergis, Inc. Method and system for creating and providing a multi-tier network service using separated function and presentation components
US7496843B1 (en) * 2004-08-04 2009-02-24 Sprint Communications Company L.P. Web construction framework controller and model tiers
US7441188B1 (en) 2004-08-04 2008-10-21 Sprint Communications Company L.P. Web construction framework presentation tier
US7634721B1 (en) * 2004-08-23 2009-12-15 Sun Microsystems Inc. Composite component architecture using javaserver pages (JSP) tags
US8099710B2 (en) 2006-12-14 2012-01-17 Microsoft Corporation UI behaviors
KR100860963B1 (ko) * 2007-03-08 2008-09-30 삼성전자주식회사 컴포넌트 기반의 소프트웨어 개발을 위한 장치 및 방법
CN101470591B (zh) * 2007-12-29 2011-11-02 华为技术有限公司 通过Java服务页面标签生成超文本置标语言代码的方法与装置
US9201665B2 (en) * 2009-08-23 2015-12-01 Bank Of America Corporation Outputting presentation code updated for a particular user in response to receiving a page identifier
US8788946B2 (en) * 2009-11-03 2014-07-22 Oracle International Corporation Application agnostic UI integration framework for web based applications
US8549485B2 (en) * 2011-05-20 2013-10-01 Red Hat, Inc. Method and system for concise expression of optional code snippets in interrepted languages
US9507871B2 (en) * 2011-08-29 2016-11-29 The Boeing Company Methods and systems for a state-based web framework architecture
US8843820B1 (en) * 2012-02-29 2014-09-23 Google Inc. Content script blacklisting for use with browser extensions
US9516088B2 (en) * 2012-08-29 2016-12-06 Ebay Inc. Systems and methods to consistently generate web content
US9406157B2 (en) * 2014-04-21 2016-08-02 Airwatch Llc Concealing sensitive information on a display
US10078619B2 (en) * 2014-12-16 2018-09-18 International Business Machines Corporation Dynamic association of application workload tiers to infrastructure elements in a cloud computing environment
CN105512314A (zh) * 2015-12-15 2016-04-20 宋连兴 一种在应用程序内实现可分离的数据处理方法
CN106201526B (zh) * 2016-07-15 2019-04-16 福建天泉教育科技有限公司 业务组件化方法及系统
CN107341388A (zh) * 2017-06-19 2017-11-10 东软集团股份有限公司 访问权限控制方法和装置
CN111931104A (zh) * 2020-07-13 2020-11-13 口碑(上海)信息技术有限公司 指令执行方法、装置、计算机设备及计算机可读存储介质
CN112256264A (zh) * 2020-10-13 2021-01-22 浙江大学 一种物联网设备交互界面的定制方法

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6721740B1 (en) * 1998-05-29 2004-04-13 Sun Microsystems, Inc. Method and apparatus of performing active update notification
US6823522B1 (en) * 1999-07-15 2004-11-23 International Business Machines Corporation Methods, systems and computer program products for chaining integration objects to provide web access for legacy data sources
US6640249B1 (en) * 1999-08-31 2003-10-28 Accenture Llp Presentation services patterns in a netcentric environment
US6434568B1 (en) * 1999-08-31 2002-08-13 Accenture Llp Information services patterns in a netcentric environment
AU1488101A (en) 1999-11-19 2001-05-30 Science Management Corporation Forms creation method and e-commerce method
US20010037254A1 (en) * 2000-03-09 2001-11-01 Adi Glikman System and method for assisting a customer in purchasing a commodity using a mobile device
US6753889B1 (en) * 2000-05-31 2004-06-22 Sun Microsystems, Inc. Platform independent business to business messenger adapter generation tool
US6687848B1 (en) * 2000-05-31 2004-02-03 Sun Microsystems, Inc. Techniques for preventing information loss in a business to business message in an enterprise computer system
US7007088B1 (en) * 2000-05-31 2006-02-28 Sun Microsystems, Inc. Method and apparatus for providing an E-business audit trail in a distributed computing system
US6959340B1 (en) * 2000-05-31 2005-10-25 Sun Microsystems, Inc. Platform independent business to business messenger in an enterprise computer system
US20030009437A1 (en) * 2000-08-02 2003-01-09 Margaret Seiler Method and system for information communication between potential positionees and positionors
US6999956B2 (en) * 2000-11-16 2006-02-14 Ward Mullins Dynamic object-driven database manipulation and mapping system
US7711818B2 (en) * 2000-12-22 2010-05-04 Oracle International Corporation Support for multiple data stores
US7043716B2 (en) * 2001-06-13 2006-05-09 Arius Software Corporation System and method for multiple level architecture by use of abstract application notation
US6687702B2 (en) * 2001-06-15 2004-02-03 Sybass, Inc. Methodology providing high-speed shared memory access between database middle tier and database server
US7107285B2 (en) * 2002-03-16 2006-09-12 Questerra Corporation Method, system, and program for an improved enterprise spatial system
US7945636B2 (en) * 2002-05-15 2011-05-17 In-Store Broadcasting Network, Llc Providing a multi-tier enterprise level application
AU2003252065A1 (en) * 2002-07-22 2004-02-09 Thought, Inc. Dynamic object- driven database manipulation and mapping system
WO2005002443A1 (en) 2003-07-08 2005-01-13 Xcounter Ab Scanning-based detection of ionizing radiation for tomosynthesis
US7389517B2 (en) * 2003-12-19 2008-06-17 Rce Emergis, Inc. Method and system for creating and providing a multi-tier network service using separated function and presentation components

Also Published As

Publication number Publication date
CA2550051A1 (en) 2005-06-30
WO2005059739A1 (en) 2005-06-30
CA2550051C (en) 2014-09-09
KR101145476B1 (ko) 2012-05-16
US7389517B2 (en) 2008-06-17
US20090144759A1 (en) 2009-06-04
AU2004298636A1 (en) 2005-06-30
BRPI0417822A (pt) 2007-04-17
US20130067321A1 (en) 2013-03-14
US20050138650A1 (en) 2005-06-23
US8321879B2 (en) 2012-11-27
CN1914594A (zh) 2007-02-14
AU2004298636B2 (en) 2010-10-07
MXPA06007053A (es) 2007-01-30

Similar Documents

Publication Publication Date Title
US8321879B2 (en) Method and system for creating and providing a multi-tier networked service using separated function and presentation components
US6990653B1 (en) Server-side code generation from a dynamic web page content file
US8418131B2 (en) Interactive server side components
US7269792B2 (en) System and method for generating high-function browser widgets with full addressability
US6792607B1 (en) Databinding using server-side control objects
US6981212B1 (en) Extensible markup language (XML) server pages having custom document object model (DOM) tags
US7321918B2 (en) Server-side control objects for processing client-side user interface elements
US20040153992A1 (en) Method and apparatus for automatic generation of information system user interfaces
US7007266B1 (en) Method and software system for modularizing software components for business transaction applications
US20030195923A1 (en) Presentation server
US20020101448A1 (en) Generating a declarative user interface
US20060004910A1 (en) Postback input handling by server-side control objects
US7509584B2 (en) Dynamic ECMAScript class loading
US7096455B2 (en) Method and system for representing and accessing data for computer software applications
US20080168430A1 (en) Open controls
US7051015B1 (en) System and method for implementing a flexible data-driven target object model
Mukhar et al. Beginning Java EE 5
Meijer et al. Client-side web scripting with HaskellScript
Lomax Learning VBScript
Cooper Jr Basic Lisp Techniques
Moroney Beginning Web Development, Silverlight, and ASP. NET AJAX: From Novice to Professional
McCaffrey Low-Level Web UI Testing
Scanlon Dynamic Languages and the Browser
Gurfinkel et al. A framework for creating high-level program analysis tools

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
LAPS Lapse due to unpaid annual fee