KR20060050608A - 데이터 공유 시스템, 방법 및 소프트웨어 툴 - Google Patents

데이터 공유 시스템, 방법 및 소프트웨어 툴 Download PDF

Info

Publication number
KR20060050608A
KR20060050608A KR1020050077760A KR20050077760A KR20060050608A KR 20060050608 A KR20060050608 A KR 20060050608A KR 1020050077760 A KR1020050077760 A KR 1020050077760A KR 20050077760 A KR20050077760 A KR 20050077760A KR 20060050608 A KR20060050608 A KR 20060050608A
Authority
KR
South Korea
Prior art keywords
portlet
component
components
data field
view
Prior art date
Application number
KR1020050077760A
Other languages
English (en)
Other versions
KR100900743B1 (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 KR20060050608A publication Critical patent/KR20060050608A/ko
Application granted granted Critical
Publication of KR100900743B1 publication Critical patent/KR100900743B1/ko

Links

Images

Classifications

    • 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/957Browsing optimisation, e.g. caching or content distillation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

클라이언트 컴퓨터 시스템 내의 구성요소들 사이의 데이터 통신을 위한 방법, 소프트웨어 툴 및 시스템이 제공된다. 클라이언트 시스템은 복수의 구성요소들에 의해 렌더링되는 콘텐츠를 포함하는 하나의 페이지를 디스플레이하기 위한 사용자 인터페이스를 구비한다. 클라이언트 컴퓨터 시스템의 구성요소들의 링크된 소스 및 목적지 데이터 필드들의 레지스트리를 유지하기 위한 속성 중개자가 제공된다. 사용자 요청이 속성 중개자에 등록된 구성요소에 의해 감지되는 경우가 속성 제공자에게 통지되고, 속성 중개자에 등록된 구성요소들의 세트에 통신 상태의 개시가 통지된다. 사용자 요청은 작용된(actioned) 구성요소에 의해 프로세싱되고, 사용자 요청의 프로세싱 동안에 업데이트된 각 소스 데이터 필드값이 링크된 목적지 데이터 필드를 갖는 각 구성요소에 통신된다. 속성 중개자는 통신 상태가 종료된 경우를 구성요소들의 세트에 통지하고, 하나 이상의 구성요소는 디스플레이를 위해 콘텐츠를 렌더링한다.
데이터 통신, 클라이언트 시스템, 사용자 인터페이스

Description

데이터 공유 시스템, 방법 및 소프트웨어 툴{DATA SHARING SYSTEM, METHOD AND SOFTWARE TOOL}
본 발명의 바람직한 실시예는 예시의 방법으로 다음의 도면들을 참조하여 기술될 것이다.
도 1은 클라이언트 플랫폼 디스플레이의 예이다.
도 2a는 본 발명의 바람지한 실시예에 따른 시스템 구성요소들 사이의 개략적인 상호작용을 나타낸다.
도 2b는 도 2a의 시스템이 구현될 수 있는 클라이언트 플러그인 아키텍처 및 그 기능적 구성을 도시한다.
도 2c는 본 발명의 바람직한 실시예에 따른 클라이언트 컴퓨터 시스템의 확장 및 확장 포인트의 상호관계를 나타낸다.
도 3a, 도 3b 및 도 3c는 본 발명의 바람직한 실시예에 따라 디스플레이되는 디스플레이 페이지들 또는 디스플레이 페이지의 일부분의 스크린 샷(screen shot)을 나타낸다.
도 4a는 본 발명의 바람직한 실시예에 따른 디스플레이 페이지의 설계와 관련된 단계들을 나타낸다.
도 4b는 본 발명의 바람직한 실시예에 따른 저장된 디스플레이 페이지의 디 스플레이와 관련된 단계들을 나타낸다.
도 5는 본 발명의 바람직한 실시예에 따른 포틀릿의 설치와 관련된 단계들을 나타낸다.
도 6은 본 발명에 따른 와이어링(wiring) 툴의 요소를 나타낸다.
도 7a, 도 7b , 도 7c 및 도 7d는 본 발명의 일실시예에 따른 부분적인 스크린 샷을 나타낸다.
도 8a, 도 8b 및 도 8c는 본 발명에 따른 일실시예의 와이어링 툴의 스크린 샷을 나타낸다.
도 9는 본 발명에 따라 사용자 액션이 감지되는 경우 일어나는 단계들의 흐름도를 나타낸다.
본 발명은 데이터 프로세싱 분야에 관한 것으로, 더욱 상세하게는 클라이언트 플랫폼에서 실행중인 포틀릿(potrlet)들 사이에서 데이터를 공유하기 위한 방법, 시스템 및 소프트웨어 툴에 관한 것이다.
월드 와이드 웹은 인터넷의 멀티미디어 정보 검색 시스템이다. 웹 환경에서, 클라이언트 장치는 하이퍼텍스트 전송 프로토콜(HTTP)을 사용하여 웹 서버들과 통신한다. 웹 서버들은 하이퍼텍스트 생성 언어(HTML)로 알려진 표준 페이지 기술(description) 언어를 사용하여 텍스트, 그래픽스, 이미지, 사운드, 비디오 등의 파일에 대한 액세스를 사용자들에게 제공한다. HTML은 기본 문서 형식화를 제공하고, 개발자가 다른 서버들 및 파일들로의 하이퍼링크로 알려진 접속을 특정하도록 한다. 인터넷 패러다임에서, 서버로의 네트워크 경로는 네트워크 접속을 정의하기 위한 특별한 구문(syntax)을 갖는 URL에 의해 식별된다. 예컨대 넷스케이프 네비게이터(넷스케이프 네비게이터는 넷스케이프 통신사의 등록 상표임) 또는 마이크로소프트 인터넷 익스플로러(마이크로소프트 및 인터넷 익스플로러는 마이크로소프트사의 등록 상표임)와 같이 클라이언트 장치에서 실행되는 애플리케이션인 웹 브라우저는 사용자들이 링크 명세(specification)에 의하여 URL을 통해 정보에 액세스하고 서로 다른 HTML 페이지들 사이를 항해할 수 있게 한다.
웹 브라우저의 사용자가 링크를 선택하면, 클라이언트 장치는 호스트네임(URL 내에 있음)을 그 서버 장치가 위치하는 특정 네트워크 IP(인터넷 프로토콜) 어드레스에 매핑하도록 네이밍(naming) 서비스에 요청한다. 네이밍 서비스는 요청에 응답할 수 있는 IP 어드레스를 반환한다. IP 어드레스를 이용하여, 웹 브라우저는 서버 장치와 접속한다. 서버 장치가 사용가능하다면, 웹 페이지를 반환한다. 그 사이트 내의 또 다른 항해를 용이하게 하기 위해, 웹 페이지는 통상적으로 "앵커" 또는 "링크"로 알려진 하나 이상의 하이퍼텍스트 참조를 포함한다.
포탈은 서로 다른 다양한 소스(source)로부터의 콘텐츠를 통합하는 웹 애플리케이션으로서, 포탈 웹 페이지 내에 콘텐츠를 제공하며, 사용자에게 커스터마이즈된(customised) 콘텐츠를 제공하는 복잡한 개인화 특성을 가질 수 있다. 포탈 애플리케이션은 하나의 게이트웨이를 하나 이상의 백엔드(backend) 소프트웨어 애 플리케이션에 제공할 수 있고, 종종 개별 포탈 서버 상에서 제공된다.
통상적으로 포탈 서버는 하나 이상의 포틀릿을 포함하는 포탈 페이지 내에 웹 콘텐츠를 배치한다. 포틀릿은 포틀릿 콘테이너에 의해 관리되는 웹 구성요소이며, 이것은 동적 웹 콘텐츠를 처리 및 생성한다. 종종 프래그먼트(fragment)로 불리는 이 콘텐츠는 포탈 페이지를 구성하기 위해 포탈에 의해 다른 포틀릿들로부터의 콘텐츠들과 통합될 수 있다. 포틀릿에 의해 생성된 이 콘텐츠는 포틀릿에 대한 사용자 구성에 의존하여 사용자에 따라 변할 수 있다.
포탈은 서버 상에 네비게이션 프레임워크를 계층적으로 배치한 웹 페이지 세트를 제공한다. 이 프레임워크는 서버 상에서 사용가능한 페이지들의 계층을 통해 네비게이션이 가능한 사용자 인터페이스를 제공한다. 이러한 네비게이션을 제공하는 사용자 인터페이스는 테마(theme)로 알려져 있다. 각 페이지는 포틀릿을 포함하지 않거나, 또는 여러 개의 포틀릿들을 포함할 수 있으며, 페이지 배치는 미리 결정되고 디자인 또는 관리자 툴을 이용하여 설정된다.
표준 서버 사이드(server side) 포탈과 함께, 클라이언트 웹 브라우저는 단일 페이지 상의 여러 포틀릿들의 통합된 출력을 보는데 사용된다. 예컨대, 폼(form)을 제출 또는 링크를 추적함에 의해, 사용자들은 포틀릿에 의해 생성된 콘텐츠와 상호작용하여, 포탈에 수신되는 포틀릿 액션을 유발한다. HTTP 요청이 포탈 서버에 수신되는 경우에, 그 요청이 그 포탈 페이지와 관련된 포틀릿 중 하나를 목표로 하는 액션을 포함하는지 여부를 판단한다. 포틀릿을 목표로 하는 액션이 존재한다면, 포탈은 그 액션을 처리하는 포틀릿을 호출하도록 포틀릿 콘테이너에 요 청한다. 포틀릿은 액션을 처리하고 새로운 포탈 페이지에 포함되는 콘텐츠 프래그먼트를 생성한다. 또한, 요청된 포탈 상의 모든 다른 포틀릿들은 리프레쉬되고 콘텐츠 프래그먼트를 포탈에 넘긴다. 포탈은 제목 및 제어 버튼들을 각 윈도우에 추가하는 포틀릿 윈도우에서 각 포틀릿 콘텐츠 프래그먼트를 패키징한다. 종종 이것은 제공된 각 콘텐츠 프래그먼트를 '래핑(wrraping)'한다고 말하며, 그 프래그먼트를 래핑하는데 사용되는 추가적인 마크업(markup)을 '스킨'이라고 부른다. 스킨은 제어 버튼을 포함할 수 있는데, 예컨대 제어버튼은 보통의 윈도의 시스템에서 보는 바와 같이 포틀릿을 편집 또는 구성과 같은 특정 모드에 위치시키거나 또는 포틀릿의 디스플레이 상태를 최대화 또는 최소화 상태로 변경하는데 사용될 수 있다. 포탈은 클라이언트에게 보내기 위해 포틀릿 윈도우들을 완성된 포탈 페이지로 통합한다. 웹 브라우저는 클라이언트의 디스플레이 화면 상에 코드를 표현한다.
사용자가 포탈 홈페이지의 URL로, 또는 특정 페이지로의 URL 링크를 통해, 또는 포틀릿의 인스턴스로의 URL 링크를 통해 시작하는 경우에, 포탈에 의해 제공되는 페이지로의 네비게이션은 테마에 의해 제공되는 네비게이션 프레임워크를 통해 가능하다. 포틀릿의 인스턴스로의 URL 링크를 통해 시작하는 경우에 포탈은 그 포틀릿을 포함하는 완성된 페이지를 제공한다.
많은 기업들은 그들의 업무 요구사항을 만족하는 포틀릿들의 개발에 많은 비용을 투자해 왔다. 현재, 일반적으로 일정한 형태의 네트워크를 통해 포탈 서버에 접속되어 있는 동안에만 클라이언트 웹 브라우저를 사용하여 액세스가능한 서버 사이드(server-side) 애플리케이션이 존재한다. 네트워크에 접속되어 있지 않은 동 안에도 사용자들이 동일한 포틀릿들을 계속하여 사용할 수 있도록 하는 것이 매우 유리할 것이다. 이것은 클라이언트 사이드(client side)의 전개(deployment)를 위해 포틀릿들을 자립형 애플리케이션으로 재작성함으로써 달성될 수 있다. 그러나, 이것은 모든 포틀릿들이 자립형 애플리케이션으로 동작하도록 모든 포틀릿들의 변형을 필요로 하며, 이것은 서버로부터 클라이언트 사이드(client side)로의 이동을 어렵게 하는 고비용의 시간 소모적인 일이다.
본 특허 출원과 동일자에 제출되고, 발명의 명칭이 "클라이언트 플랫폼 내의 포틀릿들의 설치를 위한 방법 및 소프트웨어 툴" 및 "포틀릿 뷰를 갖는 클라이언트 컴퓨터 시스템"인 공동 출원중인 영국 특허 출원들은 이러한 문제를 해결하려는 목적을 갖고, 포틀릿들이 클라이언트 컴퓨터 시스템에 이동하는 것을 허용한다. 이 시스템은 사용자에게 투명한 방식으로 다른 클라이언트 애플리케이션 옆으로 포틀릿들을 통합되도록 한다.
포탈 통합 모델은 사용되지 않고, 대신 분리된 뷰 윈도우가 각 포틀릿과 결합되어, 웹 브라우저는 이들 뷰 윈도우들 각각에서 실행된다. 브라우저는 포틀릿과 관련된 페이지로 항해하도록 지시되어, 그 포틀릿에 의해 콘텐츠 출력을 디스플레이한다. 사용자와 포틀릿 사이의 모든 통신은 임베디드 브라우저를 통해 HTTP 를 이용하여 일어난다. 포틀릿의 모드 또는 상태 변경 요청은 포틀릿 뷰 툴을 통해 이루어질 수 있고, 이것들은 그 포틀릿과 관련된 브라우저를 특정 URL로 재지향(redirect)함으로써 포틀릿에 보내진다.
클라이언트 컴퓨터 시스템의 바람직한 실시예들은 비변형 포틀릿이 리치 클라이언트 플랫폼(rich client flatform: 스마트 클라이언트, 팻(fat) 클라이언트 또는 두꺼운(thick) 클라이언트로 불리기도 함) 상의 윈도우 내에서 동작하도록 하는데, 리치 클라이언트 플랫폼은 대부분의 처리를 수행하는 클라이언트이고, 서버 컴퓨터 시스템은 처리하지 않거나 또는 약간의 처리만을 담당한다. 포틀릿의 제어는 포틀릿 마크업으로부터 클라이언트 UE로 이동된다. 사용자의 관점에서, 포틀릿과 다른 클라이언트 사이드(client side) 애플리케이션 사이의 차이는 존재하지 않는다. 서버 사이드 포틀릿으로 전개되는 경우 사용자들이 포틀릿과 상효작용하는 것과 완전히 동일한 방식으로, 사용자는 포틀릿과 상호작용할 수 있다.
이 경우, 포틀릿들이 데이터를 공유하여 다른 클라이언트 애플리케이션들과 협동할 수 있다면, 클라이언트 상에서 포틀릿들을 호스팅하는 가치는 매우 향상된다. 본 발명은 포틀릿들이 데이터를 공유하는 기능을 포함하는 포틀릿 뷰를 갖는 클라이언트 컴퓨터 시스템의 변형을 제공하는 것을 목적으로 한다.
본 발명의 태양들은 클라이언트 컴퓨터 시스템 내의 구성요소들 사이의 데이터 통신을 위한 방법, 소프트웨어 툴 및 시스템을 제공한다. 클라이언트 시스템은 복수의 구성요소들에 의해 렌더링되는 콘텐츠를 포함하는 하나의 페이지를 디스플레이하기 위한 사용자 인터페이스를 구비한다. 클라이언트 컴퓨터 시스템의 구성요소들의 링크된 소스 및 목적지(destination) 데이터 필드들의 레지스트리를 유지하기 위한 속성 중개자가 제공된다. 사용자 요청이 속성 중개자에 등록된 구성요 소에 의해 감지되는 경우가 속성 제공자에게 통지되고, 속성 중개자에 등록된 구성요소들의 세트에 통신 상태의 개시가 통지된다. 사용자 요청은 작용된(actioned) 구성요소에 의해 프로세싱되고, 사용자 요청의 프로세싱 동안에 업데이트된 각 소스 데이터 필드값이 링크된 목적지 데이터 필드를 갖는 각 구성요소에 통신된다. 속성 중개자는 통신 상태가 종료된 경우를 구성요소들의 세트에 통지하고, 하나 이상의 구성요소는 디스플레이를 위해 콘텐츠를 렌더링한다.
참조로 본 명세서에 포함되고, 발명의 명칭이 '포틀릿 데이터 공유 시스템, 방법 및 프로그램 제품'인 US20040090969에 기술된 속성 중개자 아키텍처는 포틀릿 개발자가 표준 포탈 내의 다른 포틀릿들과 데이터를 수신 및/또는 공유하는 데이터 필드를 정의하게 한다. 이 속성 중개자 개념은 본 발명에 적용되었고, 클라이언트-사이드 포틀릿들 사이에서의 이종 통신 메커니즘 및 클라이언트 컴퓨터 시스템에서 실행되는 다른 애플리케이션들을 제공하도록 확장되었다.
US20040090969에 기술된 속성 중개자 데이터 공유 모델의 요소는 액션 상태(여기서 속성 중개자 통신이 발생)가 개시되는 경우 및 그 상태가 종료되는 경우에 통지를 필요로 하는 포틀릿의 수명주기(lifecycle)의 변화이다. 본 발명의 바람직한 실시예들은 포틀릿 수명주기 모델을 변형할 필요가 없게 하여, 포틀릿 API의 변화를 최소화한다.
본 발명의 바람직한 실시예에서, 속성 중개자 통신의 개시 및 종료의 통지는 속성 중개자에 의해 직접적으로 협력 구성요소(cooperating component)들에 중계되고, 속성 중개자는 관심있는 구성요소들의 정확한 특성을 인식하지 않는다. 이러 한 방식으로, 모든 속성 제공자들은 일관된 방식으로 기능하고, 모든 속성 제공자들은 동일한 시맨틱스로 동일한 통지들을 수신한다. 포틀릿 콘테이너들로의 변형없이 이것이 가능한 것은 클라이언트 사이드 포탈의 특성 때문인데, 클라이언트 사이드 포탈에서 클라이언트 플랫폼은 프리젠테이션 상의 완벽한 제어 및 모든 포틀릿과의 사용자 상호작용을 갖고, 따라서 필요한 경우에 정확한 이벤트들을 발생할 수 있다.
현재 IBM 웹스피어 기술에 기초한 수 많은 포틀릿들이 존재하고, 최근 JSR(자바 명세 요청)-168 포틀릿 API 표준에 기초한 포틀릿들의 수가 증가하고 있다. 동일한 목적을 갖고 있음에도 불구하고, 이 기술들은 구현에 있어서 상당히 다르고, 양자를 모두 지원하는 것이 바람직하다. 이러한 이유로, 바람직한 실시예는 속성 중개자의 중요 사상을 변형하여, 이 시스템은 기존의 API들의 변형없이, 클라이언트-사이드 애플리케이션으로, 복수 타입의 포틀릿과 함께 기능한다.
바람직한 또 다른 특성은 2개의 클라이언트 구성요소들, 또는 포틀릿들 사이에서의 통신이 그 구성요소들의 특성에 완전히 독립된 방식으로 진행하도록 메커니즘이 구성된다는 점이다.
본 발명의 일실시예를 나타내고, 일실시예를 도시하는 첨부된 도면을 참조하여 설명한다. 본 발명의 범위를 벗어나지 않고, 다른 구현이 사용되고 구성 및 동작이 변할 수 있다는 것은 이해된다.
클라이언트 사이드 접근법에서, 분리된 뷰 윈도우는 각 포틀릿과 관련되고, 웹 브라우저는 각 뷰 윈도우들 내에서 실행된다. 포틀릿 뷰의 브라우저는 그 포틀 릿에 관련된 페이지로 항해하도록 지향되어, 포틀릿의 출력을 디스플레이한다. 사용자 및 포틀릿 사이의 모든 통신은 임베디드 브라우저를 통해 HTTP를 사용하여 일어난다. 포틀릿의 모드 또는 상태를 변경하는 요청들은 클라이언트 플랫폼 UI를 통해 일어날 수 있고, 이것들은 그 포틀릿과 결합된 브라우저를 특정 URL로 재지향함에 의해 포틀릿에 전송된다.
본 발명의 바람직한 실시예는 이클립스(Eclipse) 테크놀로지에 기초한 클라이언트 플랫폼을 사용하는데, 이것은 소스 코드 구축 블록, 플러그인 프레임워크 및 애플리케이션 툴 개발의 진행을 부드럽게 하는 실행예를 제공한다. 이것은 플러그인으로 일컫는 생성, 통합 및 전개 모듈을 위한 환경이고, 이것은 컴퓨팅 환경의 전 범위에서 사용하는 툴이다.
이클립스 플랫폼은 워크벤치 사용자 인터페이스(UI) 및 툴 빌더가 새 기능을 추가하기 위해 플러그인 하는 일반 도메인-독립 사용자 상호작용 패러다임 세트를 제공한다. 이 플랫폼은 툴 빌더에 의해 확장 가능한 표준 뷰 세트에 속한다. 툴 빌더는 새로운 뷰를 추가할 수 있고, 새로운 영역-특정 기능을 기존 뷰에 플러그인할 수도 있다.
툴은 작업공간(workspace)라고 불리는 이클립스의 파일 영역에 있는 파일 상에 동작하고, 워크벤치의 툴에 특정된 UI를 표면화하는(surface)는 플러그인으로 작성된다. 이클립스 플랫폼이 시작되면, 사용자는 사용가능한 플러그인 세트로 구성되는 통합 개발 환경을 제공하는 워크벤치 윈도우 디스플레이 페이지를 제공받는다.
이클립스는 리눅스 및 윈도우(마이크로소프트 및 윈도우는 미국, 다른 나라들, 또는 모두에서의 마이크로소프트의 상표이고, 리눅스는 미국, 다른 나라들, 또는 모두에서의 Linus Torvalds의 상표임)를 포함하는 광범위의 동작 시스템에서 실행될 것이다.
이클립스 플랫폼은 오브젝트 테크놀로지 인터내셔널사에 의한 이클립스 플랫폼 기술 개관에서 설명되는데, 예컨대 참조로써 여기에 포함되는 www.eclipse.org.에서 찾을 수 있다.
이클립스 플랫폼은 개별 플러그인들이 전개되는 플러그인 폴더를 포함한다. 각 플러그인은 플러그인 폴더 아래의 그 자신의 폴더에 설치된다. 플러그인은 플러그인 폴터에 있는 plugin.xml로 불리는 XML 매니페스트(manifest) 파일에 기술된다. 매니페스트 파일은 다른 플러그인들과 그 플러그인의 상호접속을 선언하고, 이클립스 플랫폼이 플러그인을 활성화하기 위해 알 필요가 있는 것을 이클립스 플랫폼에 말해준다. 플러그인 매니페스트 파일들의 파싱된(parsed) 콘텐츠는 플러그인 레지스트리 API를 통해 프로그램이 가능하고, 명세에 파싱된 플러그인은 플러그인 레지스트리로 불리는 인-메모리 리포지토리(repository)에 캐싱된다.
이클립스 플랫폼은 모든 이클립스 전개에 제공되는 특정 코어 플러그인 및 플러그인 관리 커널을 제공한다. 이 코어(core) 플러그인의 식별정보(identity)들은 이클립스 플랫폼 내로 하드코딩(hard-code)되고, 그 플랫폼은 이클립스의 각 실행 인스턴스에서 이 플러그인들을 활성화하는 것을 알게 된다. 반면, 코어가 아닌 플러그인들은 다른 플러그인에 의해 필요한 경우에 활성화된다.
플러그인들 사이의 상호접속 모델은 간단하다. 플러그인은 다른 플러그인이 제공할 수 있는 몇 개의 네임드 확장 포인트(named extension point), 및 그것이 다른 플러그인들의 하나 이상의 확장 포인트에 제공할 수 있는 몇 개의 확장을 선언한다. 플러그인의 확장은 다른 플러그인들에 의해 확장될 수 있다. 확장 포인트는 대응하는 API 인터페이스를 갖는다. 다른 플러그인들은 확장들을 통해 이 인터페이스의 구현을 이 확장 포인트에 제공한다.
첨부 1로 여기에 포함되는 이클립스 플랫폼 플러그인 매니페스트 명세는 플러그인을 정의하는데 사용되는 XML 요소들 및 특성들을 제공한다. 각 플러그인은 유일한 식별자(XML 특성 ID)를 갖는데, 이것은 다른 관련된 플러그인의 매니페스트 파일 내의 플러그인을 참조하는데 사용된다. 또한, 유일한 식별자는 플러그인의 실행 인스턴스에 액세스하기 위해 제공자에 의해 제공되는 플러그인 코드 내에서 사용된다.
이클립스 플랫폼상에 플러그인을 설치하는 것은 2 단계를 포함한다. 제1 단계는 플러그인(매니페스트 파일, jar 또는 war 파일들, 및 다른 리소스들)을 그 플러그인에 대한 개별 폴더에 제공하는 리소소들을 플랫폼의 플러그인 디렉토리 아래에 복사하는 단계를 포함한다. 제2 단계는 그 플러그인의 매니페스트 파일, 예컨대 파싱된 플러그인 명세로부터의 데이터를 플러그인 레지스트리에 추가함에 의해 그 플러그인을 등록하는 단계를 포함한다. 한 번만 수행하면, 그 플러그인이 특정 기능을 수행하도록 요구되는 경우에, 이클립스 플랫폼에 의해 그 플러그인이 활성화 될 수 있다.
이클립스 플랫폼 사용자 인터페이스(UI) 패러다임은 뷰(view)들 및 퍼스펙티브(perspective)들에 기초한다. 뷰들은 객체에 관한 정보를 디스플레이하는 윈도우들이고, 퍼스펙티브들은 뷰들이 조직될 수 있는 디스플레이 페이지 또는 캔버스를 제공한다. 플러그인들은 뷰들을 플랫폼에 제공하고, 그 뷰들은 서로 다른 퍼스펙티브들로 조직될 수 있다.
이클립스 워크벤치는 뷰 확장 포인트를 포함하는 많은 확장 포인트들을 제공한다. 이 뷰 확장 포인트를 통해, 다른 플러그인들은 하나 이상의 확장들을 이 확장 포인트에 제공함으로써 뷰들을 플랫폼에 제공할 수 있다.
도 1을 참조하면, 3개의 서로 다른 퍼스펙티브들(102a, 102b, 102c)을 갖는 클라이언트 플랫폼 디스플레이의 간단한 예가 도시된다. 퍼스펙티브(102a)는 가장 위에 디스플레이되고, 5개의 뷰들(104)을 포함하는데, 3개의 뷰들은 포틀릿 콘텐츠를 디스플레이하고, 2개의 포틀릿이 아닌 뷰들은 다른 클라이언트 플랫폼 구성요소들을 디스플레이한다. 포틀릿 콘텐츠를 디스플레이하는 뷰들 각각은 이클립스 뷰 확장 포인트의 확장으로서 포틀릿 뷰 플러그인에 의해 제공된다. 포틀릿 뷰들을 이클립스 퍼스펙티브에 추가하는 방법은 후술한다.
전술한 바와 같이, 포틀릿들은 통상적으로 페이지 상의 모든 포틀릿들로부터의 콘텐츠를 통합하는 포틀릿 서버 내에서 실행되고, 그 통합 콘텐츠를 반환한다. 본 발명에서 포틀릿 서버는 하나의 포틀릿으로부터의 콘텐츠를 또 다른 포틀릿의 콘텐츠와 통합하지 않고, 한번에 하나의 포틀릿에 의해 제공되는 웹 콘텐츠를 반환한다. 따라서 용어 '포틀릿 서버'는 여기에서 표준 포탈 서버 프로세스가 변형되 었음을 나타내는데 사용된다. 여기에서 사용되는 바와 같이, 용어 '포틀릿 서버'는 요청되는 경우 HTTP와 같은 프로토콜을 사용하여 포틀릿으로부터의 마크업 다큐먼트, 및 관련된 파일들 및 스크립트를 제공하는 서버 프로세스를 의미한다. 본 발명은 단일 포틀릿 서버로 구현된다. 그러나, 현재 포틀릿들을 작성하기 위한 다양한 사실(de-facto) 표준이 존재한다. 바람직한 실시예는 2개(또는 그 이상)의 표준들, 즉 웹스피어(WebSphereTM) 포틀릿 및 자바 명세 요청(JSR: JavaTM Specification Request) 표준을 지원한다. 웹스피어는 뉴욕 아몬크의 IBM사의 등록상표이다.
바람직한 실시예는 웹스피어 포탈 서버 및 JSR-168 포탈 서버의 변형된 버전을 사용하는 포틀릿 서버들을 제공한다. 이 서버 프로세스는 단일 포틀릿으로부터 마크업 다큐먼트를 제공하고, 서로 다른 포틀릿들로부터의 콘텐츠를 통합하지 않는다. URL들은 개별 포틀릿을 어드레싱하고, 그 포틀릿만에 대한 마크업 프래그먼트를 반환한다. 어떠한 테마, 또는 스킨들을 제공하지 않거나, 또는 포틀릿 콘텐츠의 프래그먼트의 래핑을 수행하기 않기 위해 포탈 서버 코드는 줄어든다. 포탈 페이지들은 디스플레이 페이지들 사이에서의 네비게이션을 제공하는 이클립스 내의 퍼스펙티브들을 변경하는 기능을 갖는 이클립스 퍼스펙티브들에 의해 대체되고, 디스플레이 페이지 상에 디스플레이되는 포틀릿 콘텐츠 프래그먼트에 대한 스킨이 아래에서 설명하는 이클립스 플랫폼으로의 플러그인으로 구현되는 포틀릿 뷰 툴에 의해 대신 제공된다.
또한, 톰캣(Tomcat) 애플리케이션 서버 코드 및 웹스피어와 JSR-168 포탈 서버 코드는 클라이언트 컴퓨터 시스템에 필요하지 않은 서버 보안 특성(로그인/인증 등)과 같은 불필요한 기능을 포함하지 않도록 가능한 많이 줄어든다.
포틀릿 서버들은 포틀릿들의 설치를 제공할 뿐만 아니라, 포틀릿 수명주기(예컨대, 인잇(init), 서비스 및 디스트로이(destroy) 메쏘드) 및 모드 변경을 지원하도록 구성된다. 인잇 메쏘드는 포틀릿이 초기화되게 하고, 서비스 메쏘드는 포틀릿의 콘텐츠를 표현하는데 그 포틀릿이 필요한 경우 호출되며, 디스트로이 메쏘드는 포틀릿들이 서비스를 제거 또는 파괴할 수 있게 한다.
바람직한 실시예는 톰캣 자바TM 2 기업판(J2EE) 애플리케이션 서버의 임베디드 버전을 사용하여, 포틀릿 서버들을 호스팅한다. 톰캣은 아파치 소프트웨어 재단에서 자카르타 프로젝트 하에서 개발된 자바서브릿(JacaServlet) 및 자바서버 페이지 테크놀로지의 개방된 소스 구현이다(자바 및 모든 자바 기반의 상표들은 미국, 다른 나라들, 또는 모두에서 썬 마이크로시스템즈의 상표들이다). 또한, 톰캣 애플리케이션 서버는 데이터베이스 접속 및 기업 자바빈들(Enterprose JavaBeans)과 같은 J2EE 서비스를 지원한다. 웹스피어 애플리케이션 서버와 같은 다른 애플리케이션 서버들도 당업자에 의해 동등하게 사용될 수 있다.
도 2a는 바람직한 실시예에 따른 시스템의 구성요소들 사이의 상호작용을 개괄적으로 나타낸다. 구성요소들은 톰캣 애플리케이션 서버(201) 및 애플리케이션 서버 인터페이스(API: 205), 지원되는 각 타입의 포틀릿들에 대한 포틀릿 서버[여 기에서는, 웹스피어 포틀릿 서버(204b) 및 JSR-168 포틀릿 서버(204a)], 포틀릿 인터페이스들(203a, 203b)(이것들은 포틀릿 서버의 일부분으로 구현됨), 포틀릿 서버들(204a) 상에 설치된 JSR-168 포틀릿들(206) 중 하나와 결합된 JSR-168 포틀릿 뷰 플러그인(202), 및 포틀릿 뷰 플러그인(202)에 의해 제공되는 클라이언트 뷰(도 2a에는 미도시) 내에서 실행되는 웹 브라우저(207)를 포함한다. 웹 브라우저는 HTTP(208)를 사용하여 톰캣 서버(201)와 통신한다.
도 2b는 바람직한 실시예의 이클립스 플러그인 아키텍처를 나타내는데, 여기서 포틀릿 뷰 툴들은 포틀릿 뷰 플러그인들로 제공된다. 도시된 바와 같이, 클라이언트 시스템(100)은 복수의 포틀릿 뷰 플러그인들(202, 2개가 도시) 및 프로젝트 플러그인(110)을 포함한다. 프로젝트 플러그인은 시스템을 구현하는데 사용되고 복수의 UI 구성요소(220) 및 복수의 서버 구성요소(230)를 구비하는 코드를 포함한다. (도 2b에서 이것들은 단일 플러그인(110)을 형성하는 것으로 도시되지만, 이것들은 선호에 따라 많은 별개의 플러그인들에서 구현될 수 있다.) UI 구성요소(220)는 설치 마법사(209), UI 액션 핸들러(212)를 갖는 표준 포틀릿 뷰(211), 및 포탈 템플릿(213)을 포함한다. 표준 포틀릿 뷰 코드(211)는 그 포틀릿 콘텐츠를 뷰 윈도우에 래핑하고, 제어 아이콘들을 제공하며, 관련된 포틀릿 뷰가 디스플레이되는 경우 웹 브라우저 등을 실행하도록 각 포틀릿에 의해 사용된다.
포틀릿 설치 마법사 구성요소(209)는 포틀릿 설치 메뉴 및 포틀릿 뷰 플러그인들(202)를 생성하는 설치 마법사의 구현을 제공하고, 이것에 관하여는 후술한다.
표준 포틀릿 뷰(211)는 그것의 뷰를 구현하기 위해 각 포틀릿 뷰에 의해 필 요한 코드를 제공한다. 이것은 포틀릿 뷰 툴들이 포틀릿 뷰들에 대한 프레임들, 그 뷰 프레임들 상에서 사용을 위한 포틀릿 제어 아이콘들을 제공하고, 각 포틀릿 뷰에서 웹 브라우저를 실행하도록 한다. 제어 액션을 표시하는 포틀릿 제어 아이콘들을 사용자가 클릭하는 것에 대한 응답으로, UI 액션 핸들러(212)는 포틀릿 뷰 툴에 의해 실행되는 코드를 포함한다.
포탈 템플릿 구성요소(213)는 디폴트, 초기 퍼스펙티브를 제공하는데, 사용자는 이 퍼스펙티브로부터 포틀릿 설치 마법사(209)를 선택 및 오픈한다.
클라이언트 상의 설치 마법사에 의해 설치된 각 포틀릿은 관련된 포틀릿 뷰 플러그인(202)에 제공된다. 어느 포틀릿 서버 상에 포틀릿이 설치되는지 및 어느 포틀릿 인터페이스(203a, 203b)에 포틀릿 인터페이스 확장(214)이 마법사에 의해 제공되는지의 문제는 설치된 포틀릿의 타입, 즉 그것이 JSR-168 포틀릿 인지 또는 웹스피어 포틀릿인지 여부에 달려있다.
도 2b의 좌측에 있는 포틀릿 뷰 플러그인(202)은 두개의 확장, 사용자-정의 서버 확장 포인트(232)를 통해 서버들에 접속되는 포틀릿 인터페이스 확장(214), 및 이클립스 뷰 확장 포인트를 확장하는 뷰 확장(210)인 그것의 콘텐츠를 보여주도록 확대되었다. 뷰(210)는 표준 포틀릿 뷰(211)를 참조하여, 웹 브라우저(207)를 실행하는데 필요한 코드를 표준 포틀릿 뷰(211)로부터 취득한다. 웹 브라우저(207)는 HTTP를 통해 플러그인의 결합된 포틀릿 인스턴스가 존재하는 포틀릿 서버로부터 웹 콘텐츠를 수신하는데 사용될 수 있다. 포틀릿 인터페이스 확장(214)은 그 포틀릿 서버에 대한 액세스 데이터를 포함하고, 뷰(210)가 관련된 포탈 서버 상 의 결합된 포틀릿 인스턴스와 통신하도록 한다. 포틀릿 인터페이스 확장(214)은 그 결합된 포틀릿의 이름 및 ID를 포함하고, 이것을 사용하여 관련 포틀릿 인터페이스(203a 또는 203b)를 참조한다.
포틀릿 콘텐츠에 대한 요청이 수신된 경우에, 관련 포틀릿 서버(즉, 웹스피어 포틀릿에 대하여 웹스피어 포틀릿 서버, JSR-168 포틀릿에 대하여 JSR-168 포틀릿 서버)가 그 콘텐츠를 다른 포틀릿들로부터의 콘텐츠와 통합하지 않으며, 그 콘텐츠를 타이틀 바(title bar) 및 제어 버튼들을 갖는 포틀릿 윈도우로 패키징하지 않고, 그 개별 포틀릿의 콘텐츠만을 반환하도록, 포틀릿 서버들(204a, 204b)이 구성된다.
포틀릿의 뷰 플러그인은 웹 브라우저를 사용하여 포틀릿 구성 데이터에 따라 플러그인이 제공하는 뷰 윈도우 내에 이 콘텐츠를 디스플레이한다.
도 2c에 도시된 바와 같이, 클라이언트 컴퓨터 시스템(100)은 복수의 UI 확장들(이것은 이클립스 플랫폼의 워크벤치 확장 포인트(222)에 플러그인됨), 및 서버 확장들(이것은 프로젝트 플러그인(110)에 의해 선언된 서버 확장 포인트(232)에 플러그인됨)을 포함한다.
이제 도 2a 및 도 2b를 참조하여 플랫폼 런타임 프로세스를 설명한다. 먼저 이클립스 플랫폼은 그것의 등록된 플러그인들의 매니페스트 파일을 읽고, 그것의 인-메모리 플러그인 레지스트리를 구축하며, 그것의 등록된 플러그인들을 시작하는 것을 개시한다. 따라서, 프로젝트 플러그인(110)이 시작되고, 프로젝트 플러그인(110)은 이클립스 플랫폼과 함께 사용이 가능하다. 또한, 어떤 등록된 포틀릿 뷰 플러그인들(202)들도 그 플랫폼에 의해 시작된다. 사용자가 포틀릿 뷰를 포함하는 페이지를 디스플레이하거나 새로운 포틀릿을 설치하기 전까지는, 포탈 서버들(204a, 204b)에 특별한 일이 일어나지 않는다.
사용자가 포틀릿 뷰를 포함하는 디스플레이될 퍼스펙티브를 선택하면, 결합된 플러그인은 포틀릿의 마크업 콘텐츠를 취득해야하기 때문에 이것을 검색하도록 호출한다. 우선, 그것은 그 포틀릿 타입에 대한 인터페이스 객체를 호출하여 관련 포틀릿 서버(204a, 204b)가 개시되었는지 여부를 알아본다. 그 포틀릿 서버가 개시되지 않았다면, 포틀릿 인터페이스(203a, 203b)는 [API(205)를 통해] 애플리케이션 서버(201)에 관련 포틀릿 서버(204a, 204b)를 시작하도록 명령한다. 그 포틀릿 서버가 시작되면, 설치된 포틀릿들(206) 모두가 초기화될 것이다. 그 액션 포틀릿과 결합된 포틀릿 뷰 플러그인(202)은 그것이 결합된 포틀릿 인스턴스를 식별하는 파라미터를 포함한다. 포틀릿 뷰 툴은 웹 브라우저가 실행되는 뷰 윈도우를 생성하고, 포틀릿 인스턴스의 ID 및 요구되는 모드를 보내는 서버 API를 통해 포틀릿 인스턴스에 쿼리를 만든다. 포틀릿 서버는 그 URL을 반환하고, 뷰는 그것을 임베디드 브라우저(207)에 보낸다. 브라우저(207)는 HTTP를 통해 애플리케이션 서버(201)에 URL 요청을 보내고, 포틀릿에 의해 표현되는 마크업을 포함하는 응답을 수신한다. 그 후 브라우저는 수신된 마크업에 따라 포틀릿 콘텐츠를 디스플레이한다. 포틀릿은 다른 페이지들, 다큐먼트 등으로의 링크를 포함하고, 사용자가 이것들 중 어떤 것을 선택하면, HTTP를 사용하여 링크된 마크업이 브라우저에 의해 검색된다.
사용자가 포틀릿(206)과 상호작용하는 동안, 브라우저(207) 및 포틀릿 서버(204a 또는 204b) 사이의 상호작용은 계속된다. 포틀릿 모드 또는 상태 변화 요청(예컨대, 편집, 구성 또는 도움말 모드)은 사용자가 포틀릿 뷰의 스킨 또는 윈도우 프레임에 있는 제어 아이콘들 중 하나를 클릭함에 의해 시작된다. 그 후 포틀릿 뷰 툴은 어떤 제어 버튼이 선택되었는지를 액션 뷰의 포틀릿 인터페이스(214)에 통지하는 UI 액션 핸들러(212)를 실행한다. 포틀릿 인터페이스(214)는 뷰가 새로운 컨텐츠를 요청해야하는 URL을 웹 브라우저에 보낸다. 그 URL로부터 수신된 웹 콘텐츠는 브라우저가 요청된 모드/상태에서 포틀릿(206)을 디스플레이하게 한다.
도 3a, 3b 및 3c를 참조하여, 시각적으로 포틀릿의 설치를 설명한다. 플랫폼(200)을 시작하면, 환영 퍼스펙티브가 디스플레이되고, 이것은 통상적으로 도 3a에 도시된 바와 같이 '빈 포탈 템플릿 열기(open blank portal template)'와 같은 옵션을 선택할 수 있는 제어 바/버튼을 갖는다. 빈 포탈 템플릿은 사용자가 새로운 퍼스펙티브들을 생성하고 설치 포틀릿 마법사를 사용하여 포틀릿들을 설치할 수 있는 (이클립스 UI의 '퍼스펙티브들' 확장 포인트의 확장(213)으로 구현되는) 툴이다(도 3b 참조). 설치 포틀릿 마법사(209)를 선택하면, 사용자에게 클라이언트 시스템(100)의 특정 폴더(302) 내의 포틀릿 웹 애플리케이션 아카이브(.war) 파일들의 파일 리스트(300)가 제공된다. 사용자가 이 리스트로부터 하나 이상의 포틀릿들을 선택하면, 각 선택된 포틀릿의 .war 파일이 관련 포틀릿 서버 상의 마법사에 의해 설치될 것이다. (하나의 .war 파일은 복수의 포틀릿들을 포함하고, 사용자는 설치를 위해 하나의 .war 파일 내의 특정 포틀릿들을 선택할 수 있다.) 각 선택된 포틀릿이 설치되었으면, 마법사는 사용자에게 성공적인 설치를 보고하고, 사용자는 사용중인 특정 플랫폼에 따라 새롭게 설치된 포틀릿들을 사용하는 클라이언트 플랫폼을 재시작해야 한다. 또한, 마법사는 각 설치된 포틀릿에 대한 클라이언트 플랫폼을 제공하고, 이 메커니즘은 나중에 더 상세히 설명한다. 따라서, 모든 뷰 확장들을 보여주며 개발자 또는 사용자가 새로운 퍼스펙티브와 같은 새로운 디스플레이 페이지를 디자인하는데 사용할 수 있는, 플랫폼의 사용가능한 뷰들의 리스트에 이 뷰들이 추가된다.
새로운 퍼스펙티브를 디자인하는 도 4a를 참조하면, 개시(400)에서 사용자에게는 메뉴 페이지(이클립스 UI 확장 포인트 "ActionSets"로 구현됨)가 제공되고, 사용자는 이 메뉴 페이지로부터 빈 포탈 템플릿을 선택 및 오픈할 수 있다(단계 402). 사용자가 템플릿의 드롭 다운 메뉴로부터 "뷰 보기(show view)"를 선택하면, 사용가능한 클라이언트 플랫폼 구성요소 및/또는 포틀릿 뷰 리스트를 보여준다(단계 404). 리스트의 뷰들 중 하나를 선택하면(단계 406), 그 뷰가 인스턴스화되어 현재의 퍼스펙티브에서 오픈된다. 사용자는 더 많은 뷰들을 생성할 페이지에 추가할 수 있고, 리사이징, 리포지셔닝, 예컨대 드래그-앤-드롭 등과 같은 기능들을 통해 뷰들을 그 페이지에 조직할 수 있으며(단계 410), 도 1에 도시된 바와 같이 포틀릿들의 뷰들 옆에 비포틀릿(non-portlet) 클라이언트 플랫폼 구성요소들의 뷰를 보여주는 퍼스펙티브를 디자인할 수 있다. 생성된 퍼스펙티브는 포탈 내의 새로운 페이지로 스위칭하는 것과 유사한 방식으로, 필요할 때 재호출될 수 있는 미리 정의된 퍼스펙티브들의 리스트로 저장할 수 있다(단계 412). 퍼스펙티브가 닫히는 경우에, 퍼스펙티브 상의 뷰들도 닫힐 것이다.
도 4b를 참조하면, 사용자가 저장된 퍼스펙티브의 디스플레이를 요청하는 경우에, 요청된 퍼스펙티브는 "퍼스펙티브 열기(Open perspective)" 옵션 아래의 드롭-다운 메뉴로부터 선택된다(단계 414). 그 후, 플랫폼(200)은 선택된 퍼스펙티브의 일부분인 뷰들을 갖는 모든 플러그인들을 인스턴스화하고(단계 416), 그 매니페스트 파일들을 읽는다. 매니페스트 파일들 내의 정보로부터, 플랫폼은 포틀릿 뷰 툴을 사용하여 프레임들, 필요한 툴 바들 및 각 뷰 윈도우에 대한 메뉴들을 생성하고(단계 418), 웹 브라우저를 인스턴스화된 포틀릿 뷰에 끼워넣는다. 포틀릿 뷰 플러그인들에 의해 제공되는 뷰들에 대하여, 각 관련 플러그인이 활성화되고, 임베디드 웹 브라우저를 통해 그것과 관련된 포틀릿의 콘텐츠에 대한 요청을 보낸다(단계 420). 그 요청은 애플리케이션 서버로 가게 되고, 애플리케이션 서버는 그것을 관련 포틀릿 서버로 보낸다. (이것을 할 때, 애플리케이션 서버는 요청 URL을 검사하고 그것의 콘테이너들, 예컨대 포틀릿 서버들로의 매핑 테이블을 찾음으로써 그 요청을 프로세싱하는 정확한 콘테이너를 결정한다.) 그 후, 임베디드 웹 브라우저를 통해 수신된 콘텐츠를 보여주는 포틀릿 뷰들로 퍼스펙티브가 사용자에게 디스플레이된다(단계 422).
그러면, 사용자는 디스플레이된 뷰들 중 어떤 것과도 상호작용할 수 있다. 사용자가 예컨대 그 뷰에 디스플레이된 URL 링크를 클릭함으로써 포틀릿 뷰와 상호작용하는 경우에, 임베디드 웹 브라우저는 HTTP를 통해 그 포틀릿 서버로부터 그 URL을 갖는 콘텐츠를 요청한다. 그 URL은 단일 포틀릿을 어드레싱한다. 포틀릿 서버는 어드레싱된 포틀릿으로부터 단지 HTML 콘텐츠만을 반환하고, 이것은 임베디드 웹 브라우저에 의해 디스플레이된다. 그 퍼스펙티브 상의 뷰들의 나머지는 리프레쉬되지 않는다.
도 5를 참조하면, 애플리케이션 서버 상의 포틀릿의 설치와 관련된 기능적 단계들이 설명된다. 플랫폼에 포틀릿 설치 마법사 구성요소(209)가 제공되고, 사용자에 의해 이것이 선택되는 경우에(단계 502) 사용자가 특정 포틀릿 war 파일을 war 파일 리스트로부터 선택할 수 있는 사용자 인터페이스를 제공한다. war(web applivation file) 파일은 포틀릿에 대한 정상적인 패키징(normal packaging)이다. 사용자의 포틀릿 선택(단계 504)에 대한 응답으로, 설치 마법사(209)는 war 파일로부터 포틀릿 타입을 판정하고, 포틀릿 인터페이스(203)의 인스턴스를 생성하며, 관련 포틀릿 서버가 아직 초기화되지 않은 경우에 관련된 포틀릿 서버(204a, 204b)를 초기화한다. 설치 마법사(209)는 포틀릿 인터페이스(203a, 203b)를 통해 포틀릿 서버(204a, 204b)에 포틀릿 .war 파일(211)을 설치하도록 명령하면, 포틀릿 서버 상에 포틀릿(206)의 새로운 인스턴스(506)가 생성된다. 이 프로세스에서, 포틀릿 서버는 포틀릿 파일(들)을 설치하고, 포틀릿의 세부사항을 그것의 포틀릿을 관리하는 그것의 포틀릿 콘테이너의 레지스트리에 추가한다.
포틀릿 .war 파일(211)이 성공적으로 설치되면, 설치 마법사(209)는 그 포틀릿과 관련되고 자신의 매니페스트 파일을 포함하는 새로운 포틀릿 뷰 플러그인(202)을 생성한다. 매니페스트 파일은 뷰 플러그인에 의해 요구되는 디스플레이 라벨(예컨대, 플러그인 뷰의 제목), 제어 및 확장을 리스트로 나타내고, 2개의 확 장, 즉 이클립스 UI 뷰 확장 포인트의 뷰 확장; 및 프로젝트 플러그인(110)에 의해 제공되는 JSR-168 또는 웹스피어 포틀릿 인터페이스 확장 포인트(232)를 확장하는 JSR-168 또는 웹스피어 포틀릿 인터페이스 확장(214)을 선언한다. 포틀릿 인터페이스 확장은 관련 포틀릿 서버 인터페이스(203a, 203b)를 제공하기 위해 관련 포틀릿 서버 구성요소(204a, 204b)에 포함되는 그 포틀릿과 관계가 있는 포틀릿의 타입, 참조 코드를 그 포틀릿이 선언할 수 있게 한다. 뷰 확장은 뷰가 사용자에 디스플레이되는 경우에 포틀릿 뷰 플러그인이 실행되는 표준 포틀릿 뷰 코드를 참조한다. 이것을 이용하여, 포틀릿 뷰 툴은 요청된 메뉴들 및 툴바들을 생성하고, 그 툴에 의해 제공되는 아이콘들을 그 포틀릿 뷰에 대한 프레임에 적용한다. 일단 포틀릿 뷰 플러그인이 이클립스 플랫폼으로 등록되면(단계 510), 사용자는 상술한 바와 같이 새로운 포틀릿 뷰를 이클립스 퍼스펙티브에 추가할 것이다.
본 시스템의 포탈 서버(204)는 복수의 포틀릿들로부터의 콘텐츠를 하나의 포탈 페이지로 통합하지 않는다는 점에서 서버-사이드 포탈 내의 포틀릿 인스턴스와 상이하다. 대신, 각 포틀릿은 사용자의 이클립스 플랫폼 스크린 상에 디스플레이될 수 있는 그 자신의 포틀릿 뷰 윈도우를 갖는다. 또한, 포탈 서버는 제목 및 제어 버튼들을 포함하는 프레임을 각 윈도우에 추가하는 하나의 포틀릿 윈도우로 각 포틀릿 콘텐츠 프래그먼트를 패키징하지 않는다. 대신, 포틀릿 뷰 툴은 포틀릿 뷰 플러그인에 따라 타이틀 바 및 제어 버튼들을 포함하는 포틀릿 뷰 윈도우 프레임을 제공한다.
설치된 각 포틀릿에 대하여, 새로운 포틀릿 뷰 플러그인이 설치 마법사에 의 해 이클립스 플랫폼 상에 설치된다. 이클립스 플랫폼은 각각 자신의 프레임, 제어 버튼들 및 임베디드 웹 브라우저를 갖는 분리된 윈도우, 또는 뷰로 각 포틀릿 뷰 플러그인을 보여준다.
이제, 포틀릿들 및/또는 클라이언트 구성요소들 사이의 데이터 공유를 위한 메커니즘을 설명한다. 본 발명을 구현하기 위해, 포틀릿들 및 클라이언트 구성요소들은 데이터를 수신하거나 또는 다른 구성요소들와 데이터를 공유하는 기능을 갖도록 생성된다. 구성요소를 생성하는 경우에, 개발자는 구성요소 내의 각 데이터 필드(즉, 문자, 문자열, 실수, 정수, 등)에 대한 데이터 타입을 정의한다. 또한, 개발자는 입력 필드, 출력 필드, 내적(internal) 필드, 또는 입력/출력 필드 중 어느 하나로 데이터 필드를 정의한다. 입력 필드 또는 입력/출력 필드로 특정된 데이터 필드들은 또 다른 구성요소 또는 콘텐츠 제공자로부터 데이터를 수신할 수 있다. 유사하게, 출력 필드 또는 입력/출력 필드로 특정된 데이터 필드들은 또 다른 구성요소와 데이터를 공유할 수 있다. 내적 데이터 필드로 특정된 데이터 필드는 데이터를 수신할 수 없고, 또 다른 구성요소 또는 콘텐츠 제공자와 데이터를 공유할 수도 없다.
데이터 공유 메커니즘은 매핑 시스템을 사용하는데, 이것은 하나의 구성요소의 소스 필드(즉, 출력 또는 입력/출력 필드)가 또 다른 구성요소의 목적지 필드(즉, 입력 또는 입력/출력 필드)에 매핑/링크되도록 한다. 2개의 필드가 매핑되는 경우에, 소스 필드 내의 데이터는 자동적으로 목적지 필드와 공유된다. 통상적으로, 매핑 시스템은 개발자 또는 사용자가 원하는 필드를 함께 링크("와이어")하도 록 하는 사용자 인터페이스를 포함한다. 일단 소스 및 목적지 필드들이 매핑되면, 소스 필드 내의 어떤 데이터라도 자동적으로 그 목적지 필드와 공유될 것이다. 정확하고 적절한 매핑을 제공하면, 우선 매핑 시스템은 데이터가 적절하게 공유될 수 있음을 보장할 수 있다.(즉, 데이터 타입들이 호환되고, 각 필드들이 입력 및/또는 출력 필드들로 적절하게 특정된다.) 공유가 허용되면, 새로운 매핑을 디스플레이하는 그래픽적인 표현이 가능하다.
바람직한 실시예에서, 매핑 시스템은 상술한 이클립스 플랫폼 내의 와이어링 툴(215)로 구현된다. 도 6에 도시된 바와 같이, 와이어링 툴(215)은 뷰 확장을 포함하고, 와이어링 툴은 이클립스 플랫폼의 뷰 확장 포인트에 뷰 확장 및 속성 중개자(property broker)를 제공한다.
각 포틀릿 및 클라이언트 구성요소는 그것의 데이터 필드를 노출함에 의해 그것이 데이터를 생산 및/또는 소비할 수 있는지 여부를 표시하는 속성 중개자를 이용하여 등록된다. 속성 중개자는 매핑/링크되는 하나의 구성요소의 데이터 소스 필드(즉, 출력 또는 입력/출력 필드)를 또 다른 구성요소의 목적지 필드(즉, 입력 또는 입력/출력 필드)에 매핑하는데 사용할 수 있는 레지스트리를 포함한다. 2개의 필드가 매핑되는 경우에, 소스 필드의 데이터는 목적지 필드와 자동적으로 공유될 것이다. 매핑된 필드들의 리스트 또는 "와이어들(wires)"은 XML 문서에 제공되거나, 또는 사용에 의해 그래픽적으로 편집/생성될 수 있다.
상술한 바와 같이, 포틀릿은 통상적으로 요청 프로세싱시 2개의 주요 상태, 즉 액션 상태 및 렌더링(rendering) 상태를 갖는다. 액션 상태는 "액션"을 클릭한 특정 포틀릿에 대하여 포탈 서버에 의해 호출되고, 그 액션이 프로세싱되면, 렌더링 상태가 그 페이지 상의 모든 포틀릿들에 대하여 호출된다. 액션 상태는 페이지가 처음 디스플레이되는 경우에는 호출되지 않고, 포틀릿 내의 어떤 것이 클릭되는 경우에만 호출된다.
속성 중개자 통신의 개시 및 종료의 통지는 속성 중개자에 의해 직접적으로 협력 구성요소(cooperating component)들에 중계되고, 속성 중개자는 관심있는 구성요소들의 정확한 특성을 인식하지 않는다. 이러한 방식으로, 모든 속성 제공자들은 일관된 방식으로 기능하고, 모든 속성 제공자들은 동일한 시맨틱스로 동일한 통지들을 수신한다. 포틀릿 콘테이너들로의 변형없이 이것이 가능한 것은 클라이언트 사이드 포탈의 특성 때문인데, 클라이언트 사이드 포탈에서 클라이언트 플랫폼은 프리젠테이션 상의 완벽한 제어 및 모든 포틀릿과의 사용자 상호작용을 갖고, 따라서 필요한 경우에 정확한 이벤트들을 발생할 수 있다.
속성들을 중개(brokering)하는데 관여하는 어떤 구성요소들(포틀릿 또는 플러그인)도 모든 속성 중개가 완료될 때까지 콘텐츠의 렌더링을 개시하도록 허용되지 않는다. 이것은 그 구성요소가 부실한(stale) 데이터를 렌더링하지 않을 것을 보장한다. 데이터가 속성 중개자에 의해 변화될 수 있기 때문에, 그 데이터는 먼저 렌더링될 수 없다.
이 문제를 해결하기 위해, BeginEventPhase 및 EndEventPhase로 불리는 새로운 수명주기 메쏘드가 웹스피어 포틀릿 API에 도입될 수 있다. 포틀릿의 렌더링이 시작되기 전에 이 수명주기 상태들이 종료되어, 속성 중개를 완료하는 기회를 부여 한다. 그러나, JSR-168 포틀릿 API 표준은 BeginEventPhase 및 EndEventPhase 라이프사이클 메쏘드를 포함하지 않기 때문에, 중개 타이밍의 조정을 위한 새로운 메커니즘 및 클라이언트-사이드 속성 공유를 위한 렌더링이 필요하다.
이 2가지를 달성하기 위해, communicationPhaseBegun 및 communicationPhaseEnded로 불리는 메쏘드들이 도입된다. 속성 중개자는 프틀릿 플러그인 및 그 페이지 상에 하나의 뷰를 갖는 다른 플러그인 상에 이들 메쏘드들을 호출한다. communicationPhaseBegun 메쏘드가 호출되는 경우에, 플러그인은 세마포어(semaphore)와 같은 플래그(flag)를 설정하여, 속성 중개가 진행중이기 때문에 렌더링을 개시하지 않음을 통지한다. communicationPhaseEnded 메쏘드가 호출되는 경우에, 플러그인은 플래그를 소거하여, 콘텐츠의 렌더링을 진행하는 것이 현재 괜찮다는 것을 통지한다. 그 후에, 플러그인은 그것을 URL로 보냄으로써 임베디드 브라우저를 업데이트할 수 있다.
속성 중개가 모두 활성인 경우에, 임베디드 브라우저 내의 모든 URL 클릭은 포틀릿 플러그인에 의해 인터셉트되어, 포틀릿 모드를 변경하지 않음을 주지하라. 어떤 상호작용도 속성 중개 사이클을 활성화시킬 수 있기 때문에 이것이 필요하다.
이러한 사용자 액션들을 인터셉트하기 위해, 포틀릿 플러그인은 임베디드 브라우저에 이벤트 리스너(event listener)를 등록한다. 마이크로소프트의 인터넷 익스플로러와 같은 임베디드 브라우저들은 이러한 이벤트 리스닝 기능을 제공한다.
도 9를 참조하면, 포틀릿이 클라이언트 상호작용이 감지된 구성요소인 경우의 방법 단계들을 설명한다. 사용자가 포틀릿 상의 액션을 수행하는 경우에(단계 901), 임베디드 웹 브라우저는 사용자의 클릭을 감지하고 이벤트 통지를 내보내면, 그 이벤트 통지는 관련된 포틀릿 플러그인에 의해 취득된다. 그 후 포틀릿 플러그인은 속성 중개자에게 새로운 요청이 프로세싱되어야 함을 알린다. 그 후 속성 중개자는 communicationPhaseBegun 페이지에 관해 각 구성요소에 알린다(단계 902). 이제 액션 포틀릿 플러그인은 그것의 브라우저가 URL에 액션을 수행하는 것을 허용하고, 그 브라우저는 그 URL을 액션 포틀릿에 보내어, 액션 프로세싱 및 렌더링 상태 모두를 유발한다. 액션 포틀릿은 플래그가 플러그인에서 설정되는 경우에도 렌더링하는 것이 허용된다. 속성 공유는 액션 상태에서 완료되는 것이기 때문에 이것은 괜찮다. 액션 상태 동안, 액션 포틀릿은 변경된 속성들을 속성 중개자에 통지하는 호출을 생성한다. 차례로, 속성 중개자는 그것의 와이어링을 따라 속성 변화를 타깃 포틀릿에 통지하여(단계 904), 이 포틀릿들이 그것들의 데이터를 업데이트하도록 허용한다. 이 포틀릿들은 그것이 수신하는 새로운 데이터 속성값을 프로세싱하고, 새로운 또 다른 데이터 속성값을 생성한다. 다른 데이터 속성이 공유 속성인 경우에, 포틀릿은 속성 중개자에게 그 새로운 속성값을 통지한다. 속성 중개자는 그 속성 변화를 링크된 포틀릿들에(또는 다른 링크된 구성요소들) 통지하기 위해 와이어링들을 다시 사용할 것이다.
그 액션 포틀릿과 관련된 포틀릿 뷰 플러그인은 그 액션 포틀릿의 렌더링이 이벤트 리스너를 통해 그것의 임베디드 브라우저에 의해 완결되었음을 인식한다. 그 후 포틀릿 뷰 플러그인은 그 요청이 완결되었음을 속성 중개자에게 통지하고, 속성 중개자는 디스플레이 페이지 상의 뷰를 갖는 다른 구성요소들 각각에 통신 상 태가 메쏘드 communicationPhaseEnded를 호출함에 의해 종료되었음을 통지한다. 그 후 다른 구성요소들 각각은 업데이트된 데이터 값들을 반영하기 위해 그것의 콘텐츠(906)를 리프레쉬하거나, 또는 변형으로서, 속성들이 변화된 구성요소들만이 그것들의 콘텐츠를 리프레쉬한다. 각 포틀릿 뷰 플러그인에 대하여 리프레쉬는, 그것의 임베디드 브라우저가 HTTP를 통해 관련된 포틀릿과 통신하고, 그 포틀릿이 속성 중개에 의해 일어난 변화들을 반영하는 새롭게 렌더링된 콘텐츠에 응답하는 것을 수반한다.
바람직한 실시예에서, 각 구성요소는 데이터를 자신의 개인 메모리 공간에서 읽고 기록할 수 있다. 소스 필드의 데이터 값이 변형되는 경우, '소스' 구성요소는 메시지를 속성 중개자에 보낸다. 속성 중개자는 소스 필드에 대하여 정의된 매핑에 액세스하고, 그 소스 필드가 공유되는 목적지 필드를 갖는 각 '목적지' 구성요소에 메시지를 보낸다. 그 메시지는 목적지 필드의 식별 및 목적지 필드에 대한 업데이트된 데이터 값을 포함한다.
서로 다른 데이터 타입을 갖는 필드들 사이에서 데이터를 공유하는 것은 바람직하다. 이러한 문제를 해결하기 위해, 소스 필드의 데이터 타입/포맷으로부터 목적지 필드의 데이터 타입/포맷으로 공유 데이터를 변환하는 변환 시스템이 제공될 수 있다. 따라서, 변환 시스템은 많은 데이터 타입을 수용할 수 있다. 이러한 효율적 데이터 변환을 제공하기 위해, 통상적으로 변환 시스템에 의한 액세스를 변환 데이터에 제공한다.
필요한 경우, 속성 중개자는 변환 시스템을 사용하여 소스 필드 및 목적지 필드 데이터 타입 사이에서 데이터를 변환할 수 있다. 그 후 '목적지' 구성요소는 새로운 데이터 값을 자신의 개인 메모리 공간에 기록하고, 필요한 기능을 수행한다.
또는, 속성 중개자는 각 공유 필드에 대한 필드들 및 '목적지' 구성요소들의 리스트를 각 포틀릿/구성요소에 제공할 수 있다. 그 후 구성요소는 각 '목적지' 구성요소에 직접 메시지를 보낼 수 있다.
또는, 구성요소들 사이의 데이터 공유는 공유 메모리를 사용하여 구현될 수 있다. 이러한 경우에, 구성요소는 모든 소스 필드들을 공유 메모리 위치에 기록할 수 있다. 따라서, 다른 구성요소는 매핑된 목적지 필드에 대한 공유 메모리 위치로부터 데이터를 읽게 된다. 판독 및 기록은 속성 중개자 및/또는 변환 시스템에 의해 수행될 수 있어서, 요구되는 통신 및 데이터 타입 변환은 포틀릿들 또는 클라이언트 구성요소들에 기능을 추가할 필요가 없이 수행될 수 있다.
도 7은 웹 검색 이클립스 퍼스펙티브(700)를 나타내는데, 이것은 5개 포틀릿들의 뷰, 검색 바(bar) 포틀릿(701), 검색 히스토리 포틀릿(702), 및 3개의 검색 엔진 포틀릿들(704, 705, 706)을 포함하며, 검색 엔진은 예컨대 'Yonwho', 'Ask Bertie' 및 'Goggles'이다. 또한, 웹 검색 퍼스펙티브는 와이어링 툴의 뷰 확장(602)에 의해 제공되는 와이어링 툴 뷰(703)를 포함한다. 검색 바 포틀릿(701)은 사용자가 검색용 단어를 입력하는 검색 바(708) 및 사용자가 입력한 단어에 대해 검색을 원하는 것을 나타내는데 사용되는 검색 버튼(708)을 포함한다. 검색 히스토리 포틀릿은 검색 히스토리(도 7에는 비어 있음)를 디스플레이하기 위한 디스플 레이 영역을 포함하고, 사용자가 디스플레이 영역을 소거할 수 있는 '히스토리 소거(clear history)' 버튼을 포함한다. 도 7에 도시된 퍼스펙티브는 퍼스펙티브가 사용자에 의해 처음 선택되는 경우, 사용자가 페이지 상의 뷰와 상호작용이 있기 전에 보여지는 퍼스펙티브의 기본 버전이다. 각 검색 엔진 포틀릿 뷰는 검색이 아직 수행되지 않은 경우에 '디스플레이할 결과가 없음(No results to display)' 메시지를 디스플레이한다.
와이어링 툴 뷰(703)는 개발자 또는 사용자가 원하는 필드를 함께 링크할 수 있는 사용자 인터페이스를 제공한다. 하나 이상의 소스 필드들을 하나 이상의 목적지 필드들에 그래픽적으로 매핑/링크하기 위한 예시적인 그래픽 사용자 인터페이스는 와이어링 툴의 이클립스 뷰로써 도 8a에 나타난다. 이 사용자 인터페이스 및 도 7a의 예시적 퍼스펙티브를 이용하여, 검색 엔진 포틀릿들 및 검색 히스토리 포틀릿을 검색 바 포틀릿에 와이어링하는데 와이어링 툴(600)을 사용하기 위한 방법은 시각적 퍼스펙트브로부터 먼저 설명될 것이다.
도 8a에 도시된 바와 같이, 속성들을 공유하도록 개발된 페이지 상의 각 구성요소는, 그 구성요소의 이름 하위에 구성요소들과 함께 디스플레이 된다. 따라서, 검색 엔진 포틀릿들은 리스트로 나타나고, 각각은 '검색명령(searchcommand)'이라는 속성을 갖는다. 검색 히스토리 포틀릿은 '웹 검색 히스토리(Web Search History)'로써 리스트로 나타나고, 2개의 데이터 필드들, 즉 '반복검색단어(repeatsearchterm)' 및 '최근검색단어(lastsearchterm)'를 갖는다. 검색 바 포틀릿은 '웹 검색 바(Web Search Bar)'로써 리스트로 나타나고, 하나의 데이터 필드 ' 검색목표(searchtarget)'를 갖는다.
도시되어 있지 않지만, 와이어링 툴 뷰 내의 각 속성은 속성의 I/O 세부사항에 따라 서로 다른 포맷으로 디스플레이된다. 예컨대, 입력 필드, 출력 필드 및 입력/출력 필드는 유일한 색상, 유일한 모양 또는 마킹 등으로 표시될 수 있다.
사용자가 리스트된 속성을 선택하는 경우에, 검색목표 데이터 필드와 같은 드롭 다운 메뉴(800)가 디스플레이된다. 이 메뉴는 새로운 와이어(wire)를 선택된 속성에 추가하는 옵션, 즉 선택된 속성을 새로운 매핑에서의 목적지 필드로 지정하는 옵션, 또는 선택된 속성으로부터 새로운 와이어를 추가하는 옵션, 즉 선택된 속성을 소스 필드로 지정하는 옵션을 사용자에게 준다. 검색 바를 Youwho 검색 포틀릿에 연결하는 와이어를 생성하기 위해, 사용자는 검색목표 속성으로부터 새로운 와이어를 생성하는 옵션을 선택한다. 그러면, 새로운 와이어 생성(create new wire)이라는 새로운 윈도우(810)가 디스플레이된다(도 8b 참조). 이 윈도우는 다른 포틀릿들 및 플러그인들의 리스트를 제공하는데, 이 리스트로부터 사용자는 Youwho 검색 포틀릿의 검색명령 속성을 선택할 수 있다. 이것은 검색 바로부터의 검색목표 문자열이 Youwho 검색 포틀릿의 검색명령 문자열과 연결되게 하여, 검색목표 문자열이 소스 필드가 되고, 검색명령 문자열이 새로운 와이어의 목적지 필드가 된다. 도 8c는 와이어링된 속성들 아래의 화살표를 사용하여 연결을 보여주는 와이어링 툴의 디스플레이를 나타낸다.
도 7b는 단어 'IBM'을 웹 검색 바에 입력하고, 검색 버튼을 선택함에 의해 디스플레이되는 결과를 나타낸다. 도시된 바와 같이, Youwho 검색 포틀릿은 단어 'IBM'에 대하여 Youwho 검색 엔진을 사용한 검색 결과를 디스플레이한다. 다른 2개의 검색 엔진들(705, 706)은 원래의 '디스플레이할 결과 없음(No results to display)' 상태로 유지된다.
도 7a 내지 도 7c 및 도 8a 내지 도 8c를 참조하여 상술한 실시예와 관련하여, 속성 중개자의 기능에 대하여 상세하게 설명한다. 상술한 바와 같이, 속성 중개자는 매핑/링크될 하나의 구성요소의 데이터 소스 필드를 또 다른 구성요소의 목적지 필드에 매핑하는데 사용하는 레지스트리를 유지한다. 사용자가 와이어링 툴을 사용하여 2개의 구성요소들 사이의 새로운 와이어를 셋업하는 경우에, 소스 구성요소는 그 와이어의 목적지 속성을 등록한다. 도 8a 내지 도 8c의 예에서, 속성 중개자는 웹 검색 바 포틀릿의 검색목표 속성으로부터 Youwho 검색 포틀릿의 검색명령 속성으로의 매핑을 저장한다. 사용자가 검색 바에 검색 단어를 입력한 경우에, 검색 버튼의 클릭은 웹 검색 바 포틀릿 내의 액션을 표시한다. 검색 바 포틀릿과 관련된 포틀릿 플러그인(미도시)은 이 사용자 액션을 인터셉트하여 그 URL을 취득하고, 아직까지는 웹 검색 바 포틀릿이 그 액션을 수행하도록 허용하지 않는다.
웹 검색 바 포틀릿은 통신이 시작될 것임을 속성 중개자(604)에게 통지한다. 그 후, 속성 중개자는 통신이 진행중인 퍼스펙티브 상에 디스플레이되는 뷰를 갖는 모든 포를릿들 및 클라이언트 구성들에 통지한다. 그 후, 웹 바 포틀릿의 관련된 플러그인은 URL을 그것의 임베디드 웹 브라우저에 넘기고, 임베디드 웹 브라우저는 HTTP를 사용하여 관련 포틀릿 서버에 접속하며, 관련 포틀릿 서버는 요청된 액션을 프로세싱한다. 그 액션의 프로세싱 동안에, 웹 검색 바 포틀릿은 그것의 검색목표 속성이 변경되었음을 속성 중개자에게 통지하고, 새로운 검색목표 속성값을 속성 중개자에게 제공한다. 속성 중개자는 레지스트리를 사용하고, 새로운 속성값의 검색목표 속성에 링크된 클라이언트 구성들 또는 포틀릿들에 통지한다. 링크된 포틀릿들 또는 링크된 클라이언트 구성요소들은 차례로 속성 중개자를 통해 이로 인한 속성 변화를 유발한다. 도 8a 내지 도 8c의 예에서, 속성 중개자는 새로운 검색목표 속성값을 Youwho 검색 포틀릿에 통지하고, 검색목표 속성은 이에 따라 검색명령 속성을 변경한다. 웹 검색 바 포틀릿에 의해 액션이 완료되면, 그 포틀릿은 임베디드 웹 브라우저에 의해 그것의 뷰 윈도우에 디스플레이하기 위해 리프레쉬된 새로운 콘텐츠를 보내고, 관련된 포틀릿 플러그인은 통신 상태가 완료되었음을 속성 중개자에게 통지한다. 그 후, 속성 중개자는 페이지 상의 등록된 구성요소들 각각에 통신 상태가 완료되었음을 통지한다. 그리고, 그 페이지 상에 나타나는 다른 포틀릿/구성요소 뷰들 각각이 리프레쉬된다. 각 포틀릿에 대하여, 그것의 임베디드 웹 브라우저에게 리프레쉬하는 것을 알리는 관련된 포틀릿 플러그인에 의해 이것이 달성된다. 그 후, 관련 포틀릿 서버로부터 다시 수신된 업데이트된 콘텐츠는 그 포틀릿 뷰 윈도우에서 렌더링된다.
통신 상태 동안에, Youwho 포틀릿은 속성 중개자를 통해 검색목표 속성에 대한 새로운 값, 즉 검색 단어 'IBM'를 취득한다. 렌더 상태 동안에, Youwho 포틀릿은 웹 상의 관련된 검색 엔진을 조회(query)하여, 단어 "IBM'에 대한 검색 결과를 얻는다. 그 검색 엔진으로부터 수신된 결과는 그 포틀릿에 의해 렌더링되고, 그 화면 상의 디스플레이를 위해 관련된 Youwho 포틀릿 뷰에 임베디드된 웹 브라우저에 보내진다.
검색 바 포틀릿의 검색목표 속성으로부터 다른 2개의 검색 포틀릿 각각의 검색명령 속성으로의 와이어를 생성한 후에, 상술한 바와 같이, 모든 3개의 검색 포틀릿들은 도 7c에 도시된 바와 같이 검색 바(707)에서 사용자에 의해 입력된 문자열을 검색함으로써, 검색 바 포틀릿의 검색 버튼을 사용자가 선택하는 것에 반응(react)할 것이다.
마지막으로, 검색 히스토리 포틀릿(702)은 검색 바 포틀릿을 통해 완료된 검색을 기록할 때까지 와이어링될 수 있다. 이것을 수행하기 위해, 웹 검색 바의 검색목표 속성은 히스토리 포틀릿의 최근검색단어 속성에 와이어링되고, 이것은 이전 검색 단어들의 리스트 꼭대기에 디스플레이된다. 따라서, 웹 검색 바에 단어 또는 구문을 입력한 후 검색 히스토리 포틀릿이 리프레쉬되는 경우에, 새로운 최근검색단어 값이 검색단어 리스트의 꼭대기에 추가되고, 이전 검색 단어들은 이에 따라 리스트의 순서가 낮은 쪽으로 이동한다. 도 7d의 예에서, 검색 히스토리는 이전 검색 단어 리스트에 2개의 단어, 즉 IBM 및 Microsoft를 리스트로 보여준다.
검색 히스토리 포틀릿의 또 다른 특성은 검색 히스토리 포틀릿의 반복검색단어 속성을 사용하여 달성된다. 이 반복 검색단어 속성은 웹 검색 바의 검색목표 속성에 와이어링되고, 상술한 바와 같이 이 검색목표 속성은 각 검색 엔진 포틀릿의 검색명령 속성에 와이어링된다. 반복검색단어 속성은 사용자가 히스토리 포틀릿에 의해 디스플레이되는 검색 히스토리의 항목, 예컨대 도 7d의 예에서는 'IBM' 또는 'Microsoft'를 클릭함으로써 리셋된다. 이것은 와이어링된 검색 엔진들에 의해 수행될 선택된 검색 단어(들)에 대한 반복적인 검색을 위한 요청을 의미한다.
도 8a, 도 8b 및 도 8c에 도시된 사용자 인터페이스 대신, 예컨대 하나 이상의 소스 필드를 하나 이상의 목적지 필드로 매핑하기 위한 사용자 인터페이스는 소스 사이드(side) 또는 목적지 사이드(side)를 갖는 테이블을 포함할 수 있다. 드롭 다운 메뉴들은 유효한 연결만을 선택하는 것을 보장하기 위해 사용된다. 예컨대, 소스 포틀릿/구성요소를 선택한 후에, 출력 또는 입력/출력 필드로 정의된 필드들은 소스 필드 드롭 다운 메뉴에 리스트로 보여진다. 목적지 필드(들)는 유사한 방식으로 선택될 수 있다. 구성요소가 선택에 대해 유효한 단일 필드만을 포함하는 경우(즉, 기상(weather) 포틀릿은 단지 하나의 입력 필드, 도시들의 리스트를 포함함), 그 필드는 구성요소가 특정된 후에 자동적으로 사용자에 대해 선택될 수 있다. 유사하게, 단지 2개의 포틀릿들이 포탈 페이지에 포함되는 경우, 하나의 포틀릿은 소스로 선택되고, 다른 포틀릿은 목적지로 선택된다. 어떤 경우에는, 상술한 바와 같이, 소스 필드가 목적지 필드에 일단 매핑되면, 소스 필드의 데이터는 목적지 필드와 자동적으로 공유된다.
상술된 구성요소들을 와이어링하는 방법의 실시예는 포틀릿들의 와이어링을 언급하였지만, 상술한 속성 중개자 메커니즘을 이용하여 클라이언트 구성요소들의 특성들도 포틀릿들의 속성들 및 다른 클라이언트 구성요소들의 속성들에 와이어링될 수 있다.
적어도 부분적으로 마이크로프로세서, 디지털 신호 프로세서 또는 다른 프로 세싱 장치, 데이터 프로세싱 장치 또는 시스템과 같은 소프트웨어로 제어되는 프래그램 가능한 프로세싱 장치를 사용하여 본 발명의 실시예들이 구현가능한 한, 프로그램 가능한 소자, 장치 또는 시스템이 상술한 방법들을 구현하도록 구성된 컴퓨터 프로그램은 본 발명의 태양으로 파악된다. 예컨대, 컴퓨터 프로그램은 소스 코드로써 끼워지거나(embeded) 또는 프로세싱 소자, 장치 또는 시스템 상의 구현을 위한 컴파일되거나 또는 객체 코드로 구현될 수 있다. 또한, 그 컴퓨터 프로그램을 포함하는 제조 상품도 본 발명의 태양으로 파악된다.
다양한 기능을 구현하기 위한 또는 정보를 전송하기 위한 컴퓨터 프로그램은 예컨대 하나 이상의 DVD/CD-ROM 및/또는 플로피 디스크와 같은 매체에 제공되고, 하드 디스크에 저장될 수 있다. 또한, 데이터 프로세싱 시스템에 의해 구현가능한 프로그램이 예컨대 통신 네트워크 및/또는 인터넷 상의 통신 매체에 제공되고, 전자적 신호로 구현될 수 있다. 무선 전화 네트워크 상의 무선 단말기로써 동작하는 데이터 프로세싱 시스템에 대하여, 통신 매체는 컴퓨터 프로그램 및 데이터를 표현하는 적절히 인코딩된 신호를 전송하는 무선 주파수 캐리어 웨이브일 수 있다. 옵션으로, 캐리어 웨이브는 광섬유에 적합한 광 캐리어 또는 통신 시스템에 적합한 다른 캐리어 매체일 수 있다.
본 발명은 상기 실시예들과 관련하여 설명되었지만, 본 발명이 여기에 한정되지 않으며 본 발명의 범위에 포함되는 다양한 변형예들이 존재하는 것이 가능하다는 것을 당업자는 인식할 것이다.
본 발명의 범위는 신규한 특성 또는 여기에 개시된 특성들의 조합을 포함한 다. 본 출원인은 본원 또는 본원으로부터 나온 다른 출원들의 계속중에 새로운 청구항들이 이러한 특성 또는 특성들의 조합에 공식화될 수 있음을 통지한다. 특히, 첨부된 특허청구범위를 참조하여, 독립항으로부터의 특성들이 종속항들로부터의 특성들과 조합될 수 있고, 각 종속항들로부터의 특성들은 그 청구항에 열거된 특정 조합만이 아니라, 적절한 방식으로 조합될 수 있다.
불명확함을 회피하기 위해, 명세서 및 청구항들 전체에서 사용된 용어 '~를 포함한다'는 '~ 만으로 구성된다'는 의미로 사용된 것이 아니다.
본 발명에 따르면, 포틀릿들이 데이터를 공유하여 다른 클라이언트 애플리케이션들과 협동함으로써, 클라이언트 상에서 포틀릿들을 호스팅하는 가치를 매우 향상시킬 수 있다.
첨부 1
이클립스 플랫폼
플러그인 매니페스트 (manifest)
버전 0.90 - 2001년 3월 15일에 수정된 최근 버전
아래의 매니페스트 마크업 정의는 다양한 네이밍 토큰들 및 식별자들을 사용한다. 불명확성을 제거하기 위해, 이것들(아래의 텍스트를 참조)에 대한 몇 개의 생성 규칙이 여기에 있다. 일반적으로, 모든 식별자들은 경우에 민감(case-sensitive)하다.
SimpleToken := sequence of characters from ('a-z', 'A-Z', '0-9')
ComposedToken := SimpleToken │ (SimpleToken '.' ComposedToken)
JavaClassName := ComposedToken
PlugInId := ComposedToken
PlugInPrereq := PlugInId │'export' PlugInId
ExtensionId := SimpleToken
ExtensionPointId := SimpleToken
ExtensionPointReference := ExtensionPointID │(PlugInId '.'
ExtensionPointId)
이 섹션의 나머지는 일련의 DTD 프래그먼트들로써 plugin.xml 파일을 기술한다. 파일 plugin.dtd는 DTD 정의 전체를 제공한다.
<?xml encoding="US-ASSCII"?>
<!ELEMENT plugin (requires?, runtime?, extension-point*, extension*)>
<!ATTLIST plugin
name CDATA #REQUIRED
id CDATA #REQUIRED
vendor-name CDATA #IMPLIED
class CDATA #IMPLIED
<plugin> 요소는 매니페스트의 바디를 정의한다. 이것은 플러그인 실행시간에 대한 정의, 플러그인에 의해 도입되는 새로운 확장 포인트의 선언, 및 기능적 확장의 구성(다른 플러그인들에 의해 정의되는 확장 포인트들로 구성되거나, 또는 이 플러그인에 의해 도입됨)을 선택적으로 포함한다. <plugin> 속성들은 다음과 같다.
name - 플러그인에 대해 사용자에게 디스플레이 가능한(변환가능한) 명칭
id - 플러그인에 대한 유일한 식별자
o 명칭의 충동 가능성을 최소화하기 위해, 식별자는 제공하는 벤더의 인터넷 도메인 id로부터 유도해야 한다(도메인 네임을 역으로 하고 마침표(.)에 의해 분리된 추가적인 명칭 토큰들을 첨부함). 예컨대, 벤더 ibm.com는 플러그인 식별자 com.ibm.db2로 정의될 수 있다.
o [생성 규칙 : PlugInId]
version - 플러그 인 버전 번호.
상세는 org.eclipse.core.runtime.PluginVersionIdentifier를 참조하라. 플러그인 버전 포맷은 major.minor.service이다. 메이저 구성요소의 변화는 호환불가능한 버전이 변화한 것으로 여겨진다. 서비스 구성요소의 변화는 누적 서비스가 마이너 버전에 적용되었다고 여겨진다.
vendor-name - 플러그인을 제공하는 벤더의 사용자에 디스플레이 가능한 명칭.
class - 이 플러그인에 대한 플러그인 클래스의 명칭. 이 클래스는 org.eclips.core.runtime.Plugin의 서브클래스이다.
XML DTD 구성 법칙 elememt*는 그 요소의 제로 또는 그 이상의 어커런스(occurrence)를 의미한다. element?는 그 요소의 제로 또는 하나의 어커런스를 의미하고, element+(아래에서 사용됨)는 그 요소의 하나 이상의 어커런스를 의미한다. 상기 <plugin> 정의에 기초하여, 이것은 예컨대 어떤 확장 포인트 선언을 갖지 않ㅓ나 어떤 확장 구성을 갖지 않고 단지 실시간 정의만을 포함하는 플러그인이 유효하다는 것을 의미한다(예컨대, 다른 플러그인들이 의존하는 공통 라이브러리들). 유사하게, 어떤 실시간 또는 그 자신의 확장 포인트를 갖지 않고 단지 확장 구성들만을 포함하는 플러그인도 유효하다(예컨대, 다른 플러그인들에 전달되는 클래스들을 다른 플러그인들 내에서 선언된 확장 포인트로 구성함).
매니페스트의 <requires> 섹션은 다른 플러그인에 대한 종속성을 선언한다.
<!ELEMENT requires (import+)>
<!ELEMENT import EMPTY>
<!ATTLIST imoprt>
plugin CDATA #REQUIRED
version CDATA #IMPLIED
match (exact │ compatible) "compatible"
export (true │ false) "false"
각 종속성은 <import> 요소를 이용하여 특정된다. 이것은 다음의 속성들을 포함한다.
plugin - 요구되는 플러그인의 식별자
version - 옵션적인 버전 상세
match - 버전 매칭 규칙. 버전 속성이 특정되지 않으면 무시된다. 종속성이 특정된 버전의 플러그인에 만족되는지 여부(추가적인 서비스를 적용하여 가능함), 또는 종속성이 어떤 호환가능한 버전으로 만족될 수 있는지 여부(플러그인의 가장 최근의 마이너 버전을 포함함)를 판단한다
export - 종속 플러그인 클래스들이 이 플러그인 사용자에 보이는지[(재)익스포트되는지] 여부를 특정한다. 디폴트에 의해, 종속 클래스들은 익스포트되지 않는다(보이지 않는다).
매니페스트의 <runtime> 섹션은 플러그인 실행시간을 구성하는 하나 이상의 라이브러리의 정의를 포함한다. 참조되는 라이브러리들은 플랫폼 실행 메커니즘(플러그인 클래스 로더)에 의해 사용되어 플러그인에 플로한 정확한 코드를 로딩 및 실행한다.
<!ELEMENT runtime (library+)>
<ELEMENT library (export*)>
<!ATTLIST library
name CDATA #REQUIRED
<
<!ELEMENT export EMPTY>
<!ATTLIST export>
name CDATA #REQUIRED
<runtime> 요소는 어떤 속성도 갖지 않는다.
<library> 요소는 집합적으로 플러그인 실행시간을 정의한다. 적어도 하나의 <library>는 특정되어야 한다. 각 <library> 요소는 다음의 속성들을 갖는다.
name - (플러그인 설치 디렉토리에 관한)클래스들을 포함하는 디렉토리 또는 라이브러리 파일로의 문자열 참조. 디렉토리 참조는 후미 파일 분리자(trailing file separator)를 포함한다.
각 <library> 요소는 익스포트되어야 하는 라이브러리의 일부분을 특정할 수 있다. 익스포트 규칙들은 익스포트 마스크들의 세트로 특정된다. 디폴트로(특정된 익스포트 규칙이 없음), 라이브러리는 비밀(private)로 것으로 여겨진다. <export> 요소는 다음의 특성들을 갖는다.
name - 익스포트 마스크를 특정한다. 유효한 값들은 다음과 같다.
o * - 라이브러리의 모든 콘텐츠가 익스포트됨(공개됨)을 표시한다.
o package-name.* - 특정된 패키지 내의 모든 클래스들이 익스포트됨을 표시한다. 매칭 규칙은 자바 임포트(import) 구문과 동일하다.
class-name - 완전히 인증된 자바 클래스 이름
플랫폼의 아키텍처는 구성가능한 확장 포인트의 개념에 기초한다. 플랫폼은 플랫폼 및 데스크탑을 확장하는 태스크(예컨대, 메뉴 추가 액션, 임베디드 에디터 제공)를 모두 포함하는 확장 포인트들의 세트를 미리 정의한다. 미리 정의된 확장 포인트에 추가하여, 제공된 각 플러그인은 추가적인 확장 포인트들을 선언할 수 있다. 확장 포인트를 선언함에 의해 외부적으로 제공되는 확장을 갖는 플러그인을 구성하는 능력을 본질적으로 광고하고 있다. 예컨대, 페이지 빌더 플러그인은 새로운 디자인 시간 제어(DTC)을 빌더 팔레트에 추가하기 위한 확장 포인트를 선언할 수 있다. 이것은 페이지 빌더가 무엇에 대한 DTC를 의미하는 것인지를 정의하였고, 확장 포인트로 구성된 DTC 확장을 찾는 코드를 구현하였음을 의미한다.
<!ELEMENT extension-point EMPTY>
<!ATTLIST extension-point
name CDATA #REQUIRED
id CDATA #REQUIRED
schema CDATA #IMPLIED
<extension-point> 요소는 다음의 속성들을 포함한다.
name - 확장 포인트에 대하여 사용자에 디스플레이 가능한(변환가능한) 이름
id - 이 플러그인 내의 유일하고, 간단한 id 토큰. 이 토큰은 마침표(.) 또는 공백을 포함할 수 없다.
schema - 이 확장 포인트에 대한 스키마 명세(specification). 정확한 세부사항은 플러그인 개발 환경(PDE)의 일부분으로 정의될 수 있다. 스키마는 실행시간에 현재 사용되지 않는다. 참조는 플러그인 설치 위치와 관련된 파일 이름이다.
실제적인 확장은 <extension> 섹션 내의 확장 포인트들(미리 정의되거나, 이 플러그인에서 새롭게 선언됨)로 구성된다. 구성 정보는 <extension> 및 </extension> 사이에서 체계화된 XML로 특정된다. 플랫폼은 (체계화된 XML을 필요로하는 것이 아닌) 구성 마크업(configuration markup)의 실제적인 형태를 특정하지 않는다. 마크업은 그 확장 포인트를 선언한 플러그인의 제공자에 의해 정의된다. 플랫폼은 실제적으로 구성 마크업을 변환하지 않는다. 플랫폼은 (확장 포인트 로직이 그것의 모든 구성된 확장을 조회하는 시간에) 확장 포인트의 일부로써 구성 정보를 플러그인으로 단순히 보낸다.
<!ELEMENT extension ANY>
<!ATTLIST extionsion
point CDATA #REQUIRED
id CDATA #IMPLIED
name CDATA #IMPLIED
<extension> 요소는 다음의 속성들을 갖는다.
point - 구성되는 확장 포인트로의 참조. 확장 포인트는 이 플러그인 또는 다른 플러그인에서 정의된 것일 수 있다.
o [생성 규칙 : ExtensionPointReference]
id - 이 확장 포인트 구성 인스턴스에 대한 선택적인 식별자. 이것은 유일하게 특정 구성 확장을 (단지 열거하는 것이 아닌) 식별할 필요가 있는 확장 포인트에 의해 사용된다. 식별자는 선언하는 플러그인의 정의 내에서 유일하고 단순한 토큰으로 특정된다. 전역적으로(globally) 사용되는 경우에, 확장 식별자는 플러그 식별자에 의해 인증된다.
o [생성 규칙 : ExtensionId]
name - 확장에 대하여 사용자에게 디스플레이 가능한(변환가능한) 이름
중요: <extension> 요소의 콘텐츠는 어떠한 규칙을 사용하여도 정의된다. 이것은 어떠한 체계적인 XML도 확장 구성 섹션에서(<extension> 및 </extension> 태그 사이에서) 특정될 수 있음을 의미한다.
2000년, 2001년 IBM사의 저작권

Claims (46)

  1. 클라이언트 컴퓨터 시스템 내의 구성요소들 사이에서의 데이터 통신 방법-상기 클라이언트 컴퓨터 시스템은 복수의 구성요소들에 의해 렌더링되는 콘텐츠를 포함하는 하나의 페이지를 디스플레이하는 사용자 인터페이스를 구비함-으로서,
    상기 클라이언트 컴퓨터 시스템의 구성요소들의 링크된 소스 및 목적지 데이터 필드의 레지스트리를 유지하기 위한 속성 중개자(property broker)를 제공하는 단계;
    사용자 요청이 상기 속성 중개자에 등록된 구성요소에 의해 감지되는 경우를 상기 속성 중개자에게 통지하는 단계;
    통신 상태의 개시를 상기 속성 중개자에 등록된 구성요소들의 세트에 통지하는 단계;
    상기 작용된(actioned) 구성요소에 의해 상기 사용자 요청을 프로세싱하는 단계;
    상기 사용자 요청의 프로세싱 동안에 업데이트된 각 소스 데이터 필드값을 링크된 목적지 데이터 필드를 갖는 각 구성요소에 통신하는 단계;
    상기 속정 중개자가 상기 구성요소들 세트에 상기 통신 상태의 종료를 통지하는 단계; 및
    하나 이상의 구성요소에 의해 업데이트된 콘텐츠를 렌더링하는 단계
    를 포함하는 것을 특징으로 하는 데이터 통신 방법.
  2. 제1항에 있어서,
    업데이트된 값이 통신되는 구성요소의 목적지 데이터 필드는 또 다른 하나 이상의 구성요소(들)의 데이터 필드에 링크된 소스 데이터 필드이고,
    상기 방법은 상기 업데이트된 데이터 값을 또 다른 각 구성요소에 통신하는 단계를 더 포함하는 것을 특징으로 하는 데이터 통신 방법.
  3. 제1항 또는 제2항에 있어서,
    상기 업데이트된 값이 통신되는 목적지 구성요소는 상기 업데이트된 값을 프로세싱하는 것을 특징으로 하는 데이터 통신 방법.
  4. 제3항에 있어서,
    목적지 구성요소에 의한 상기 업데이트된 값의 프로세싱은 상기 목적지 구성요소의 소스 데이터 필드값을 업데이트하고,
    상기 방법은 상기 업데이트된 소스 데이터 필드값을 링크된 각 목적지 데이터 필드에 통신하는 단계를 더 포함하는 것을 특징으로 하는 데이터 통신 방법.
  5. 이전 청구항 중 어느 한 항에 있어서,
    구성요소에 의해 액션에 대한 사용자 요청을 감지하는 단계를 더 포함하는 것을 특징으로 하는 데이터 통신 방법.
  6. 제5항에 있어서,
    상기 클라이언트 컴퓨터 시스템의 하나 이상의 구성요소(들)에 의해 각각 제공되는 복수의 뷰를 포함하는 하나의 페이지를 디스플레이하는 단계를 더 포함하는 것을 특징으로 하는 데이터 통신 방법.
  7. 제6항에 있어서,
    구성요소에 의해 제공되는 뷰와 사용자가 상호작용하는지를 감지함으로써, 액션에 대한 사용자 요청이 상기 구성요소에 이해 감지되는 것을 특징으로 하는 데이터 통신 방법.
  8. 제5항, 제6항 또는 제7항 중 어느 한 항에 있어서,
    사용자 요청을 감지하는 단계는 구성요소 내의 이벤트 리스너를 세팅하는 단계를 포함하는 것을 특징으로 하는 데이터 통신 방법.
  9. 이전 청구항 중 어느 한 항에 있어서,
    상기 통신 상태의 개시 및 종료가 통지되는 구성요소들의 세트는 상기 디스플레이 페이지에 디스플레이되는 뷰들을 갖는 구성요소들의 세트인 것을 특징으로 하는 데이터 통신 방법.
  10. 이전 청구항 중 어느 한 항에 있어서,
    상기 작용된(actioned) 구성요소는 상기 통신 상태의 종료 통지가 보내지기 전에 자신의 콘텐츠를 렌더링하는 것을 특징으로 하는 데이터 통신 방법.
  11. 이전 청구항 중 어느 한 항에 있어서,
    상기 통신 상태 동안 업데이트되는 데이터 필드를 갖는 각 구성요소는 업데이트된 콘텐츠를 렌더링하는 것을 특징으로 하는 데이터 통신 방법.
  12. 이전 청구항 중 어느 한 항에 있어서,
    상기 사용자에게 업데이트된 페이지를 디스플레이하는 단계를 더 포함하는 것을 특징으로 하는 데이터 통신 방법.
  13. 제6항 내지 제12항 중 어느 한 항에 있어서,
    상기 디스플레이 페이지에 디스플레이되는 뷰를 갖는 하나 이상의 구성요소는 포틀릿인 것을 특징으로 하는 데이터 통신 방법.
  14. 제13항에 있어서,
    상기 클라이언트 컴퓨터 시스템에 포틀릿 콘텐츠에 대한 요청들을 프로세싱하기 위한 포틀릿 서버를 제공하는 단계를 더 포함하고,
    상기 포틀릿 서버는 서버 상에 설치된 하나 이상의 포틀릿(들)을 갖는 것을 특징으로 하는 데이터 통신 방법.
  15. 제14항에 있어서,
    상기 디스플레이 페이지에 뷰 윈도우를 제공하고, 상기 포틀릿 콘텐츠를 디스플레이하기 위해 상기 디스플레이 페이지에서 웹 브라우저를 실행하는 단계를 더 포함하는 것을 특징으로 하는 데이터 통신 방법.
  16. 제15항에 있어서,
    상기 웹 브라우저를 통해 상기 포틀릿 서버에 설치된 포틀릿으로부터 웹 콘텐츠를 요청하는 단계; 및
    제공되는 상기 뷰 윈도우 내의 상기 디스플레이 페이지에 수신된 상기 웹 콘텐츠를 디스플레이 하는 단계
    를 더 포함하는 것을 특징으로 하는 데이터 통신 방법.
  17. 이전 청구항 중 어느 한 항에 있어서,
    상기 클라이언트 컴퓨터 시스템 상에서 클라이언트 플랫폼을 실행하는 단계를 더 포함하고,
    상기 사용자 인터페이스는 상기 클라이언트 플랫폼에 등록된 플러그인 구성요소들에 의해 제공되는 뷰들의 디스플레이를 허용하는 것을 특징으로 하는 데이터 통신 방법.
  18. 제14항, 제15항 또는 제16항 중 어느 한 항에 있어서,
    상기 포틀릿 서버에 설치된 각 포틀릿과 관련된 포틀릿 뷰 툴을 제공하는 단계를 더 포함하는 것을 특징으로 하는 데이터 통신 방법.
  19. 제18항에 있어서,
    상기 포틀릿 뷰 툴이 포틀릿으로부터 웹 콘텐츠에 대한 사용자 요청들을 인터셉(intercept)트하는 단계를 포함하는 것을 특징으로 하는 데이터 통신 방법.
  20. 제19항에 있어서,
    사용자 요청이 인터셉트되는 경우에 상기 속성 중개자에게 통지하는 단계를 포함하는 것을 특징으로 하는 데이터 통신 방법.
  21. 컴퓨터 시스템으로서,
    하나 이상의 데이터 필드를 갖고, 콘텐츠를 렌더링하도록 동작하는 복수의 구성요소들; 및
    소스 구성요소들의 소스 데이터 필드들을 목적지 구성요소들의 목적지 데이터 필드에 매핑하는 레지스트리를 포함하는 속성 중개자를 포함하고,
    제1 구성요소는 사용자 요청을 수신하고, 상기 요청의 수신을 상기 속성 중개자에게 통지하며, 상기 사용자 요청을 프로세싱하도록 동작가능하며,
    상기 속성 중개자는 상기 제1 구성요소로부터의 통지 수신에 대한 응답으로 통신 상태의 시작을 구성요소들의 세트에 통지하고, 상기 통신 상태의 종료를 상기 구성요소들의 세트에 통지하도록 동작가능하고,
    상기 사용자 요청의 프로세싱 동안에 업데이트되는 각 소스 데이터 필드값이 링크된 목적지 데이터 필드를 갖는 각 구성요소에 통신되는 것을 특징으로 하는 컴퓨터 시스템.
  22. 제21항에 있어서,
    목적지 구성요소의 목적지 데이터 필드가 상기 하나 이상의 또 다른 구성요소(들)의 데이터 필드에 링크된 소스 데이터 필드인 경우에, 상기 업데이트된 데이터 값을 하나 이상의 또 다른 구성요소(들)에 통신하기 위한 통신 수단을 더 포함하는 것을 특징으로 하는 컴퓨터 시스템.
  23. 제21항 또는 제22항에 있어서,
    상기 속성 중개자는 상기 사용자 요청의 프로세싱 동안에 업데이트된 각 소스 데이터 필드값을 링크된 목적지 데이터 필드를 갖는 각 구성요소에 통신하도록 동작가능한 것을 특징으로 하는 컴퓨터 시스템.
  24. 제21항 내지 제23항 중 어느 한 항에 있어서,
    목적지 구성요소에 의해 수신된 업데이트된 값을 프로세싱하기 위한 프로세 싱 수단을 더 포함하는 것을 특징으로 하는 컴퓨터 시스템.
  25. 제24항에 있어서,
    목적지 구성요소에 의한 상기 수신된 업데이트 값의 프로세싱이 상기 목적지 구성요소의 소스 데이터 필드값을 업데이트하는 경우에, 소스 데이터 필드의 업데이트된 값을 링크된 각 목적지 데이터 필드에 통신하기 위한 수단을 더 포함하는 것을 특징으로 하는 컴퓨터 시스템.
  26. 제21항 내지 제25항 중 어느 한 항에 있어서,
    구성요소에 의해 액션에 대한 사용자 요청을 감지하기 위한 수단을 더 포함하는 것을 특징으로 하는 데이터 컴퓨터 시스템.
  27. 제21항 내지 제26항 중 어느 한 항에 있어서,
    복수의 뷰 윈도우들-각 뷰 윈도우는 상기 클라이언트 컴퓨터 시스템의 하나 이상의 구성요소(들)에 의해 제공되는 콘텐츠를 포함함-을 포함하는 하나의 페이지를 디스플레이하기 위한 디스플레이 수단을 더 포함하는 것을 특징으로 하는 컴퓨터 시스템.
  28. 제27항에 있어서,
    사용자가 구성요소에 의해 제공되는 뷰 윈도우와 상호작용하는 것을 감지하 기 위한 수단을 더 포함하는 것을 특징으로 하는 컴퓨터 시스템.
  29. 제25항 또는 제27항에 있어서,
    사용자 요청을 감지하는 단계는 구성요소 내의 이벤트 리스너를 세팅하는 단계를 포함하는 것을 특징으로 하는 컴퓨터 시스템.
  30. 제21항 내지 제29항 중 어느 한 항에 있어서,
    상기 속성 중개자가 상기 통신 상태의 개시 및 종료의 통지를 보내는 상기 구성요소들의 세트는 상기 디스플레이 페이지에 디스플레이되는 뷰들을 갖는 구성요소들의 세트인 것을 특징으로 하는 컴퓨터 시스템.
  31. 제21항 내지 제30항 중 어느 한 항에 있어서,
    상기 컴퓨터 시스템의 구성요소에 의해 제공되는 콘텐츠를 각각 디스플레이하는 하나 이상의 뷰 윈도우(들)를 포함하는 하나의 페이지를 디스플레이하기 위한 사용자 인터페이스를 더 포함하는 것을 특징으로 하는 컴퓨터 시스템.
  32. 제31항에 있어서,
    포틀릿 콘텐츠에 대한 요청들을 프로세싱하기 위한 포틀릿 서버-상기 포틀릿 서버는 상기 포틀릿 서버에 설치된 하나 이상의 포틀릿(들)을 구비함-; 및
    상기 포틀릿 서버에 설치된 포틀릿과 관련되어, 상기 관련된 포틀릿을 제어 하고 뷰 윈도우에 관련된 포틀릿으로부터의 콘텐츠를 디스플레이하기 위해 웹 브라우저를 실행하기 위한 포틀릿 뷰 툴
    을 더 포함하는 것을 특징으로 하는 컴퓨터 시스템.
  33. 제32항에 있어서,
    복수의 포틀릿 뷰 툴들-각 포틀릿 뷰 툴은 포틀릿 서버에 설치된 포틀릿과 관련됨-을 더 포함하는 것을 특징으로 하는 컴퓨터 시스템.
  34. 제32항 또는 제33항에 있어서,
    상기 포틀릿 뷰 툴은, 상기 컴퓨터 시스템에 뷰를 제공하도록 구성가능하며 상기 포틀릿과 관련되는 포틀릿 뷰 플러그인을 포함하는 것을 특징으로 하는 컴퓨터 시스템.
  35. 제32항, 제33항 또는 제34항 중 어느 한 항에 있어서,
    복수의 포틀릿 서버들-각 포틀릿 서버는 각 포틀릿 서버에 설치된 하나 이상의 포틀릿들을 구비함-을 포함하는 것을 특징으로 하는 컴퓨터 시스템.
  36. 제35항에 있어서,
    상기 포틀릿 뷰 툴은 상기 관련 포틀릿 서버 상의 상기 관련된 포틀릿과 상호작용이 가능한 포틀릿 인터페이스를 포함하는 것을 특징으로 하는 컴퓨터 시스 템.
  37. 이전 청구항 중 어느 한 항에 있어서,
    상기 포틀릿 뷰 툴은 하나의 프레임에 포틀릿 콘텐츠를 디스플레이하는 뷰 윈도우를 제공하도록 구성가능한 것을 특징으로 하는 컴퓨터 시스템.
  38. 제21항 내지 제37항 중 어느 한 항에 있어서,
    클라이언트 플랫폼을 실행하기 위한 수단; 및
    상기 클라이언트 플랫폼에 등록된 플러그인 구성요소들에 의해 제공되는 뷰들의 디스플레이를 허용하는 사용자 인터페이스를 더 포함하는 것을 특징으로 하는 컴퓨터 시스템.
  39. 제32항 내지 제34항 중 어느 한 항에 있어서,
    상기 포틀릿 뷰 툴은 상기 포틀릿 뷰에서의 디스플레이를 위해 상기 웹 브라우저에 의해 요청되는 포틀릿 콘텐츠에 대한 URL을 판단하기 위한 수단을 포함하는 것을 특징으로 하는 컴퓨터 시스템.
  40. 클라이언트 컴퓨터 시스템-상기 클라이언트 컴퓨터 시스템은 복수의 구성요소들에 의해 렌더링되는 콘텐츠를 포함하는 하나의 페이지를 디스플레이하기 위한 사용자 인터페이스를 구비함-에서 구성요소들 사이의 데이터 통신을 위한 소프트웨 어 툴로서,
    상기 클라이언트 컴퓨터 시스템의 구성요소들의 링크된 소스 및 목적지 데이터 필드들의 레지스트리를 유지하고,
    상기 컴퓨터 시스템의 구성요소에 의한 사용자 요청 감지의 통지를 수신하며,
    통신 상태의 개시를 구성요소들의 세트에 통지하고,
    상기 사용자 요청의 프로세싱 동안에 업데이트되는 각 소스 데이터 필드값을 링크된 목적지 데이터 필드를 갖는 각 구성요소에 통신하며,
    상기 통신 상태가 종료되는 경우에, 상기 구성요소들의 세트를 통지하도록 동작가능한 것을 특징으로 하는 소프트웨어 툴.
  41. 제40항에 있어서,
    목적지 구성요소의 목적지 데이터 필드가 하나 이상의 또 다른 구성요소(들)의 데이터 필드에 링크된 소스 데이터 필드인 경우에, 상기 업데이트된 데이터 값을 하나 이상의 또 다른 구성요소(들)에 통신하도록 동작가능한 것을 특징으로 하는 소프트웨어 툴.
  42. 제40항 또는 제41항에 있어서,
    상기 사용자 요청의 프로세싱 동안에 업데이트된 각 소스 데이터 필드값을 링크된 목적지 데이터 필드를 갖는 각 구성요소에 통신하도록 동작가능한 것을 특 징으로 하는 소프트웨어 툴.
  43. 제40항 내지 제42항 중 어느 한 항에 있어서,
    목적지 구성요소에 의한 상기 수신된 업데이트 값의 프로세싱이 상기 목적지 구성요소의 소스 데이터 필드값을 업데이트하는 경우에, 소스 데이터 필드의 업데이트된 값을 링크된 각 목적지 데이터 필드에 통신하도록 동작가능한 것을 특징으로 하는 소프트웨어 툴.
  44. 제1항 내지 제20항 중 어느 한 항의 방법을 수행하기 위한 컴퓨터로 구현가능한 명령을 포함하는 컴퓨터 프로그램 제품.
  45. 제40항 내지 제43항 중 어느 한 항의 소프트웨어 툴을 포함하는 데이터 프로세싱 시스템.
  46. 첨부된 도면들을 참조하여 실질적으로 기술된 바와 같이, 컴퓨터 시스템의 구성요소들 사이에서 데이터를 공유하기 위한 방법, 시스템 또는 소프트웨어 툴.
KR1020050077760A 2004-09-17 2005-08-24 데이터 공유 시스템, 방법 및 소프트웨어 툴 KR100900743B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB0420673.6 2004-09-17
GB0420673A GB0420673D0 (en) 2004-09-17 2004-09-17 Data sharing system, method and software tool

Publications (2)

Publication Number Publication Date
KR20060050608A true KR20060050608A (ko) 2006-05-19
KR100900743B1 KR100900743B1 (ko) 2009-06-05

Family

ID=33306730

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050077760A KR100900743B1 (ko) 2004-09-17 2005-08-24 데이터 공유 시스템, 방법 및 소프트웨어 툴

Country Status (5)

Country Link
US (1) US7937670B2 (ko)
KR (1) KR100900743B1 (ko)
CN (1) CN100421375C (ko)
GB (1) GB0420673D0 (ko)
TW (1) TW200622730A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090038105A (ko) * 2007-10-15 2009-04-20 권진욱 분산저장방식을 이용한 웹상에서의 파일공유방법

Families Citing this family (66)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8453065B2 (en) * 2004-06-25 2013-05-28 Apple Inc. Preview and installation of user interface elements in a display environment
CN102981815B (zh) * 2005-03-03 2017-05-31 汤姆森路透社全球资源公司 用于实施业务过程应用程序的系统和方法
US8543931B2 (en) * 2005-06-07 2013-09-24 Apple Inc. Preview including theme based installation of user interface elements in a display environment
US20070067265A1 (en) * 2005-09-21 2007-03-22 International Business Machines Corporation Using one extensive portlet rather than multiple small portlets
US7752556B2 (en) 2005-10-27 2010-07-06 Apple Inc. Workflow widgets
US7743336B2 (en) 2005-10-27 2010-06-22 Apple Inc. Widget security
US9104294B2 (en) * 2005-10-27 2015-08-11 Apple Inc. Linked widgets
US8543824B2 (en) * 2005-10-27 2013-09-24 Apple Inc. Safe distribution and use of content
US7707514B2 (en) * 2005-11-18 2010-04-27 Apple Inc. Management of user interface elements in a display environment
CN101490673A (zh) * 2005-12-30 2009-07-22 汤姆森环球资源公司 提供药学信息的在线系统、方法和接口
US7739310B1 (en) 2006-01-03 2010-06-15 Emc Corporation Extensible portlet templates
US9454734B2 (en) 2006-02-21 2016-09-27 International Business Machines Corporation Heuristic assembly of a component based application
US8793584B2 (en) * 2006-05-24 2014-07-29 International Business Machines Corporation Customizable user interface wrappers for web applications
US9804861B2 (en) * 2006-06-09 2017-10-31 Paypal, Inc. Configurable interfaces
GB0611399D0 (en) * 2006-06-09 2006-07-19 Ibm A method, apparatus or software for providing a portal comprising one or more portlets for displaying data
US20070294371A1 (en) * 2006-06-15 2007-12-20 Petri John E Method for determining input focus for web pages having aggregated content
US20080005721A1 (en) * 2006-06-29 2008-01-03 Augusta Systems, Inc. Method and System for Rapidly Developing Sensor-Enabled Software Applications
US8015547B2 (en) * 2006-06-29 2011-09-06 Augusta Systems, Inc. Reconfigurable, hierarchical component-based architecture and framework and methods for rapidly developing sensor device-enabling software applications
US8095923B2 (en) * 2006-06-29 2012-01-10 Augusta Systems, Inc. System and method for deploying and managing intelligent nodes in a distributed network
US7735060B2 (en) * 2006-06-29 2010-06-08 Augusta Systems, Inc. Method and system for rapidly developing and deploying sensor-enabled software applications
US8468217B2 (en) * 2006-07-26 2013-06-18 International Business Machines Corporation Maintaining portlet data currency while minimizing latency
US8869027B2 (en) 2006-08-04 2014-10-21 Apple Inc. Management and generation of dashboards
US20080077851A1 (en) * 2006-09-26 2008-03-27 International Business Machines Corporation Method and apparatus for inserting jsr 168 portlet content into a j2ee java server page
US9135605B2 (en) * 2006-11-29 2015-09-15 Adobe Systems Incorporated Instant electronic meeting from within a current computer application
JP5168979B2 (ja) * 2007-03-29 2013-03-27 日本電気株式会社 アプリケーション連携システム、連携方法および連携プログラム
US8463844B2 (en) * 2007-05-09 2013-06-11 Oracle International Corporation Portlets in non-portal pages
US7895179B2 (en) * 2007-06-25 2011-02-22 Microsoft Corporation Asynchronous updating of web page data views
US8954871B2 (en) 2007-07-18 2015-02-10 Apple Inc. User-centric widgets and dashboards
US8667415B2 (en) * 2007-08-06 2014-03-04 Apple Inc. Web widgets
US8108770B2 (en) * 2007-08-27 2012-01-31 Yahoo! Inc. Secure inter-module communication mechanism
US9129031B2 (en) * 2007-08-29 2015-09-08 International Business Machines Corporation Dynamically configurable portlet
US7904818B2 (en) 2007-10-15 2011-03-08 International Business Machines Corporation Summarizing portlet usage captured responsive to trigger events in a portal page
US8191002B2 (en) 2007-10-15 2012-05-29 International Business Machines Corporation Summarizing portlet usage in a portal page
US8261236B2 (en) 2007-10-30 2012-09-04 International Business Machines Corporation Detecting plug-in and fragment issues with software products
US20090132954A1 (en) * 2007-11-20 2009-05-21 Honeywell International Inc. Apparatus and method for isolating problems in content loaded into a human-machine interface application
US8112771B2 (en) * 2008-01-30 2012-02-07 Microsoft Corporation Managing component programs within a service application
US9817822B2 (en) 2008-02-07 2017-11-14 International Business Machines Corporation Managing white space in a portal web page
US20090217254A1 (en) * 2008-02-22 2009-08-27 Microsoft Corporation Application level smart tags
US8312384B2 (en) * 2008-06-11 2012-11-13 Honeywell International Inc. Apparatus and method for fault-tolerant presentation of multiple graphical displays in a process control system
US20100017385A1 (en) 2008-07-16 2010-01-21 International Business Machines Creating and managing reference elements of deployable web archive files
US20100064251A1 (en) * 2008-09-05 2010-03-11 International Business Machines Corporation Toggling window display state by screen in a multi-screened desktop environment
US8156441B1 (en) * 2008-11-04 2012-04-10 Lockheed Martin Corporation Inter-gadget communication
US8219922B2 (en) * 2008-12-30 2012-07-10 International Business Machines Corporation Dynamic point and extend user interface
US8073857B2 (en) * 2009-02-17 2011-12-06 International Business Machines Corporation Semantics-based data transformation over a wire in mashups
US20100318957A1 (en) * 2009-06-16 2010-12-16 International Business Machines Corporation System, method, and apparatus for extensible business transformation using a component-based business model
US8495048B2 (en) * 2009-08-26 2013-07-23 International Business Machines Applying user-generated deployment events to a grouping of deployable portlets
US9384005B2 (en) * 2009-08-27 2016-07-05 Adobe Systems Incorporated Systems and methods for dynamic configuration of client-side development environments through use of application servers
US20110071867A1 (en) * 2009-09-23 2011-03-24 International Business Machines Corporation Transformation of data centers to manage pollution
US8782676B2 (en) * 2009-09-30 2014-07-15 Sap Ag System and method for communication between portal applications and portlet containers
US20110126192A1 (en) * 2009-10-26 2011-05-26 Simon Frost Systems and methods for providing and updating a unified client
US20110106835A1 (en) * 2009-10-29 2011-05-05 International Business Machines Corporation User-Defined Profile Tags, Rules, and Recommendations for Portal
US20110113352A1 (en) * 2009-11-06 2011-05-12 Research In Motion Limited Portable electronic device and method of web page rendering
US20110109634A1 (en) * 2009-11-06 2011-05-12 Research In Motion Limited Portable electronic device and method of information rendering on portable electronic device
US20110119454A1 (en) * 2009-11-17 2011-05-19 Hsiang-Tsung Kung Display system for simultaneous displaying of windows generated by multiple window systems belonging to the same computer platform
KR101090641B1 (ko) 2010-06-08 2011-12-08 엔에이치엔(주) 커뮤니케이션 버스를 이용한 컴포넌트들 간의 데이터 공유 방법 및 시스템
US8949721B2 (en) * 2011-01-25 2015-02-03 International Business Machines Corporation Personalization of web content
GB2513533A (en) * 2012-12-11 2014-11-05 Ibm Method for client-side aggregation of web content
US9118614B1 (en) * 2013-01-31 2015-08-25 Intuit Inc. Notification manager
US10104082B2 (en) 2013-11-06 2018-10-16 William P. Jones Aggregated information access and control using a personal unifying taxonomy
WO2015183819A1 (en) * 2014-05-27 2015-12-03 Samsung Electronics Co., Ltd. Agnostic data broker
CN104504146B (zh) * 2015-01-05 2018-01-30 浪潮(北京)电子信息产业有限公司 一种数据分类管理方法及系统
CN104869072B (zh) * 2015-04-25 2018-01-30 哈尔滨工业大学 一种基于构件化模块的航天器总线路由器
US10824791B2 (en) * 2018-02-26 2020-11-03 Servicenow, Inc. System for building and modeling web pages
US10783316B2 (en) 2018-02-26 2020-09-22 Servicenow, Inc. Bundled scripts for web content delivery
CN108874389A (zh) * 2018-06-27 2018-11-23 中国建设银行股份有限公司 前端页面开发框架
CN109558197B (zh) * 2018-11-27 2023-06-30 北京小米移动软件有限公司 信息推荐方法及装置

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3571616B2 (ja) * 2000-05-23 2004-09-29 エヌ・ティ・ティ・コムウェア株式会社 データの共有方法、端末装置および記録媒体
US7103844B2 (en) * 2002-06-26 2006-09-05 International Business Machines Corporation Portal/portlet application data synchronization
CA2406876A1 (en) * 2002-10-04 2004-04-04 Ibm Canada Limited-Ibm Canada Limitee Method and apparatus for managing a collection of portlets in a portal server
CA2406713C (en) * 2002-10-04 2009-06-30 Ibm Canada Limited-Ibm Canada Limitee Method and apparatus for relaying session information from a portal server
CA2406569C (en) * 2002-10-04 2011-03-22 Ibm Canada Limited-Ibm Canada Limitee Method and apparatus for enabling associated portlets of a web portal to collaborate for synchronized content display
TWI231669B (en) * 2002-11-02 2005-04-21 Ibm System and method for using portals by mobile devices in a disconnected mode
US20040090969A1 (en) * 2002-11-12 2004-05-13 International Business Machines Corporation Portlet data sharing system, method, and program product
US8001463B2 (en) * 2002-12-02 2011-08-16 Oracle International Corporation Web page communications using parameters and events

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090038105A (ko) * 2007-10-15 2009-04-20 권진욱 분산저장방식을 이용한 웹상에서의 파일공유방법

Also Published As

Publication number Publication date
CN1750470A (zh) 2006-03-22
US20060064422A1 (en) 2006-03-23
CN100421375C (zh) 2008-09-24
KR100900743B1 (ko) 2009-06-05
TW200622730A (en) 2006-07-01
US7937670B2 (en) 2011-05-03
GB0420673D0 (en) 2004-10-20

Similar Documents

Publication Publication Date Title
KR100900743B1 (ko) 데이터 공유 시스템, 방법 및 소프트웨어 툴
US8726167B2 (en) Display and installation of portlets on a client platform
US8578333B2 (en) Method and system for client-side user interface enhancement to enable application integration and portalisation
US7415524B2 (en) Postback input handling by server-side control objects
US7467391B2 (en) Allowing client applications to programmatically access web sites
JP4643931B2 (ja) 外部プログラムに基づくテーマを使用するWebページレンダリング機構
US7162687B2 (en) JSP tag libraries and web services
JP4015375B2 (ja) クライアント側ユーザインタフェース要素を処理するサーバ側制御オブジェクト
US20040090458A1 (en) Method and apparatus for previewing GUI design and providing screen-to-source association
JP2002024079A (ja) サーバ側制御オブジェクトを用いるデータ結合
WO2002027511A1 (en) System and method for transforming custom content generation tags associated with web pages
GB2381340A (en) Document generation in a distributed information network
WO2003094021A1 (en) Portal setup wizard
US20140059172A1 (en) Remote portlet consumer with enhanced resource url processing
US20100229081A1 (en) Method for Providing a Navigation Element in an Application
WO2005114389A1 (en) Portal runtime framework
US7831905B1 (en) Method and system for creating and providing web-based documents to information devices
Cavaness et al. Jakarta Struts
Cavaness et al. Jakarta Struts pocket reference
Cazzulino et al. Beginning visual web programming in c#: From novice to professional
Torkelson et al. Developing an XML Web Service
Moroney Beginning Web Development, Silverlight, and ASP. NET AJAX: From Novice to Professional
Polgar et al. Portal Development Framework
Krovi Web-based Personalized Search System using Web Services and Portlets

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
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