KR20080104303A - 데이터 구조를 갖는 하나 이상의 컴퓨터 판독가능 매체, 서비스가 데이터를 처리하는 방법 및 이 방법을 수행하게 하는 컴퓨터 실행가능 명령어가 있는 하나 이상의 컴퓨터 판독가능 매체를 포함하는 컴퓨터 프로그램 제품 - Google Patents

데이터 구조를 갖는 하나 이상의 컴퓨터 판독가능 매체, 서비스가 데이터를 처리하는 방법 및 이 방법을 수행하게 하는 컴퓨터 실행가능 명령어가 있는 하나 이상의 컴퓨터 판독가능 매체를 포함하는 컴퓨터 프로그램 제품 Download PDF

Info

Publication number
KR20080104303A
KR20080104303A KR1020087022171A KR20087022171A KR20080104303A KR 20080104303 A KR20080104303 A KR 20080104303A KR 1020087022171 A KR1020087022171 A KR 1020087022171A KR 20087022171 A KR20087022171 A KR 20087022171A KR 20080104303 A KR20080104303 A KR 20080104303A
Authority
KR
South Korea
Prior art keywords
transform
class
transformation
service
services
Prior art date
Application number
KR1020087022171A
Other languages
English (en)
Inventor
니킬 코타리
시앙하오 쿵
스테판 엔. 샤코우
Original Assignee
마이크로소프트 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20080104303A publication Critical patent/KR20080104303A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/541Interprogram communication via adapters, e.g. between incompatible applications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

더 복잡한 태스크를 달성하는 서비스들의 시퀀스 중의 각 서비스의 입력과 출력에서 일어날 수 있는 적절한 변환들을 명시하기 위한 선언적 모델(declarative model)이 제공된다. 서비스들 각각은 적절한 변환 선언에 액세스할 수 있고, 이 선언을 해석하여 그 입력 데이터 및/또는 출력 데이터에서 발행되는 변형에 대해 적절하게 지시될 수 있다. 변환을 변경하기 위해, 변환 선언이 수정될 수 있다.
Figure P1020087022171
변환, 파라미터, 선언적 모델

Description

데이터 구조를 갖는 하나 이상의 컴퓨터 판독가능 매체, 서비스가 데이터를 처리하는 방법 및 이 방법을 수행하게 하는 컴퓨터 실행가능 명령어가 있는 하나 이상의 컴퓨터 판독가능 매체를 포함하는 컴퓨터 프로그램 제품{DECLARATIONS FOR TRANSFORMATIONS WITHIN SERVICE SEQUENCES}
컴퓨팅 기술은 인류의 진보(advancement)에 어마어마하게 공헌해 오고 있다. 컴퓨팅 시스템은, 데스크톱 컴퓨터, 랩톱 컴퓨터, PDA(personal digital assiatant), 전화기 및 심지어는 예를 들어 냉장고 및 자동차와 같이 통상적으로 컴퓨팅 시스템으로서 생각해오지 않았던 장치들을 포함하여, 각종 다양한 물리적인 형태로 나타난다. 따라서, 컴퓨팅 시스템은, 임의의 유형의 프로세서와 메모리를 갖는 임의의 장치 또는 시스템일 수 있다. 컴퓨팅 시스템은, 네트워크 시스템에서 함께 협동하는, 구성 요소가 되는(constituent) 컴퓨팅 시스템들을 지닐 수도 있다. 따라서, 일부 컴퓨팅 시스템은 쉽게 손바닥에 딱 들어갈 수 있는 반면, 다른 컴퓨팅 시스템은 글로벌하게 분산될 수 있다.
가장 일반적으로 사용되는 애플리케이션들 중 많은 것이 네트워크 기술에 의존한다. 이러한 애플리케이션들로는, 예를 들면, 이메일, 인스턴트 메시징, 웹 브라우징, 원격 네트워크 액세스, 전자 칠판(electronic whiteboarding), VoIP(voice-over-IP) 전화 통신, 화상 회의(video conferecing), 원격 동기화 및 많은 기타의 것이 있다. 현재, 인터넷을 통해 제공되는 많은 서비스가 있다. 이러한 서비스의 다양성은 열거가능하며(enumerable) 날마다 증가하고 있다. 예를 들면, 많은 다른 것들 중에서도, 검색 엔진 서비스, 회사 위치 찾기 서비스(company locator service), 주식 시세 서비스(stock quote service), 이메일 서비스, 원격 컴퓨터 액세스 서비스, 온라인 경매 서비스가 있다.
때때로, 더 복잡한 태스크의 수행은 다수의 서비스를 순차적으로 사용하는 것을 수반한다. 서비스들 중 하나로부터의 출력은 다른 서비스의 입력으로 제공되며, 최종 결과가 달성(accomplish)될 때까지 그러하다. 사용자가 사람일 수 있으며 또는 사용자가 컴퓨팅 시스템 및/또는 컴퓨팅 시스템에서 실행 중인 하나 이상의 프로세스일 수 있음을 인지하는(recognize) 제1 서비스에 사용자 입력이 제공된다. 그 사용자 입력은, 이 제1 서비스에 의해 인지되는 포맷으로 변환(transform)될 필요가 있을 수 있다. 최종 서비스(final service)는 최종 사용자에게 제시되기에 앞서 변환될 필요가 있을 수 있는 포맷으로 결과 데이터(resulting data)를 제공한다. 게다가, 한 서비스가 순차적으로 다음 서비스와 통신하기 때문에, 서비스들 간에 데이터를 제대로 변환하기 위해서 변환이 또한 필요할 수 있다. 따라서, 서비스들이 사용자와 그리고 서로 간에 통신하는 것을 가능하게 하기 위해, 입력 데이터와 출력 데이터에 대해 각종 변환이 행해질 수 있다.
통상적으로, 변환은, 변환 각각에 대한 특정 전용 코드(specific dedicated code)를 이용하여 행해진다. 따라서, 코드는 제1 서비스로의 입력에 적절한 포맷으로 사용자 데이터를 변환하는 데에 사용될 것이며, 코드는 각각의 서비스들 간에 서 사용되어 적절한 변환을 수행할 것이며, 코드는 최종 서비스로부터의 결과 데이터(resultant data)를 사용자에 의해 이해되는 포맷으로 변환하는 데 사용될 것이다. 이러한 코드를 기안하는 것(drafting)은 시간을 소요하는 활동(time-consuming activity)이며, 숙련된 소프트웨어 프로그래머의 기술을 필요로 할 수 있다.
필수는 아니지만, 본 발명의 실시예들은, 복잡한 서비스 요청을 이행(fulfill)하기 위해, 연속하여(in series) 실행되는 둘 이상의 서비스들의 시퀀스가 있는 환경에 적용될 수 있다. 이들 서비스 각각의 입력 및 출력에서 적절한 변환을 달성하기 위해, 변환은, 수행될 변환 클래스를 명시(specify)하는 변환 클래스 필드(transformation class field) 뿐만 아니라 그 변환을 더 구체적으로 정의하는 변환 파라미터 필드(들)를 이용하여, 선언적으로(declaratively) 명시될 수 있다. 변환 선언은 각각의 서비스에서 사용가능하게 되어, 변환을 행하는 데에 있어 적절한 방향을 제시할 수 있다.
본 요약은 발명의 상세한 설명에서 이하에 더 설명될 일련의 개념들을 단순화된 형태로 소개하기 위해 제공된다. 본 요약은, 청구되는 내용의 주요 특징들 또는 핵심 특징들을 식별하도록 의도되지 않으며, 또한 청구되는 내용의 범위를 결정하는 것을 돕는 것으로서 사용되고자 의도되지 않는다.
도 1은 본 발명의 실시예 원리가 동작할 수 있는 컴퓨팅 시스템을 도시하는 도면.
도 2는 본 발명의 실시예들이 동작할 수 있는 서비스들의 시퀀스를 포함하는 환경.
도 3은, 대응하는 클래스 및 서비스들로부터의 입력 변환과 출력 변환에 대한 파라미터들을 갖는 서비스들의 ID(idendification)를 포함하는 데이터 구조를 개략적으로 도시하는 도면.
도 4는 이 데이터 구조를 이용하여 변환을 수행하는 것과 관련된 논리 흐름을 개략적으로 도시하는 도면.
도 5는 본 발명의 원리에 따라 서비스가 서비스 요청을 처리하는 방법의 흐름도.
첨부된 도면들은 본 발명의 실시예를 더욱 구체적으로 설명하기 위해 사용된다. 이들 도면이 단지 본 발명의 통상적인 실시예를 도시하므로, 발명의 범위를 제한하는 것으로 간주되지 않는다는 것을 이해하고, 실시예들은 첨부된 도면을 사용하여 더 구체적으로 그리고 더 상세하게 기술되고 설명될 것이다.
본 발명의 실시예는, 더 복잡한 태스크를 달성하는 서비스들의 시퀀스 중의 각 서비스의 입력과 출력에서 일어날 수 있는 적절한 변환을 명시하기 위한 선언적 모델(declarative model)에 이른다(extend). 각각의 서비스들은 적절한 변환 선언들에 액세스할 수 있으며, 이 선언들을 해석함으로써 서비스의 입력 데이터 및/또는 서비스의 출력 데이터에서 일어나는 변환에 대해 적절하게 지시(direct)될 수 있다. 변환을 변경하기 위해, 각 변환을 달성하는 기초 코드(underlying code)를 수정하지 않고, 변환 선언이 수정될 수 있다.
본 발명의 실시예들은 이하에 더 상세하게 설명될 각종 컴퓨터 하드웨어를 포함하는 특수 목적 또는 범용의 컴퓨터를 포함할 수 있다. 도 1은 본 발명의 특징들을 구현하는 데에 사용될 수 있는 예시적인 컴퓨팅 시스템(100)의 개략도를 도시한다. 설명되는 컴퓨팅 시스템은 이러한 적합한 컴퓨팅 시스템의 일례이며, 본 발명의 용도 또는 기능성의 범위에 관해 어떤 제한을 암시하고자 하는 것이 아니다. 본 발명이 도 1에 도시된 컴포넌트들 중 임의의 하나 또는 그 컴포넌트들의 임의의 조합과 관련하여 어떤 의존성 또는 요구사항을 갖는 것으로 해석되어서는 안 된다.
컴퓨팅 시스템들은 이제 점점 더 각종 다양한 형태를 취하고 있다. 컴퓨팅 시스템들은, 예를 들면, 핸드헬드 장치, 전기 제품(appliance), 랩톱 컴퓨터, 데스크톱 컴퓨터, 메인프레임, 분산 컴퓨팅 시스템 또는 통상적으로 컴퓨팅 시스템으로 생각되지 않는 장치들조차 컴퓨팅 시스템이 될 수 있다. 본 명세서에서 그리고 청구항에서, "컴퓨팅 시스템"이라는 용어는, 적어도 하나의 프로세서, 그리고 그 프로세서에 의해 실행될 수 있는 컴퓨터 실행가능 명령어를 가질 수 있는 메모리를 포함하는 임의의 장치 또는 시스템(또는 그 조합)을 포함하는 것으로서 넓게 정의된다. 메모리는 임의의 형태를 취할 수 있고, 컴퓨팅 시스템의 속성(nature)과 형태에 좌우될 수 있다. 컴퓨팅 시스템은 네트워크 환경을 통해 분산될 수 있으며, 구성 요소가 되는 다수의 컴퓨팅 시스템들(multiple constituent computing systems)을 포함할 수 있다.
도 1을 참조해보면, 그 가장 기본적인 구성으로, 컴퓨팅 시스템(100)은 통상적으로 적어도 하나의 처리 장치(102)와 메모리(104)를 포함한다. 메모리(104)는, 휘발성, 비휘발성 또는 그 둘의 일부 조합일 수 있는 시스템 메모리일 수 있다. 휘발성 메모리의 일례로는 랜덤 액세스 메모리(RAM)를 포함한다. 비휘발성 메모리의 일례로는, 판독 전용 메모리(ROM), 플래시 메모리 등을 포함한다. "메모리"라는 용어는, 본 명세서에서 또한, 물리적인 저장 매체와 같은 비휘발성의 대량 저장 장치(non-volatile mass storage)를 지칭하는 것으로 사용될 수 있다. 이러한 저장 장치는 휘발성이거나 비휘발성일 수 있고, PCMCIA 카드, 자기 및 광 디스크, 자기 테이프 등을 포함할 수 있다(그러나 이에 제한되지 않음).
본 명세서에서 사용되는 바와 같이, "모듈" 또는 "컴포넌트"라는 용어는 컴퓨팅 시스템 상에서 실행되는 소프트웨어 객체 또는 루틴을 지칭할 수 있다. 본 명세서에서 설명되는 서로 다른 컴포넌트, 모듈, 엔진 및 서비스는 컴퓨팅 시스템 상에서 (예를 들면, 별도의 쓰레드로서) 실행되는 객체 또는 프로세스로서 구현될 수 있다. 본 명세서에서 설명되는 시스템 및 방법이 소프트웨어로, 하드웨어로 구현될 수 있으며, 소프트웨어와 하드웨어의 조합 또한 가능하며 고려된다.
이하의 설명에서, 본 발명의 실시예는 하나 이상의 컴퓨팅 시스템에 의해 수행되는 액트를 참조하여 설명된다. 이러한 액트들이 소프트웨어로 구현되는 경우, 그 액트를 수행하는 관련 컴퓨팅 시스템의 하나 이상의 프로세서들은, 컴퓨터 실행가능 명령어들을 실행시키는 것에 응하여 컴퓨팅 시스템의 동작을 지시(direct)한 다. 이러한 동작의 예로는 데이터 조작을 포함한다. 컴퓨터 실행가능 명령어(와 조작된 데이터)는 컴퓨팅 시스템(100)의 메모리(104)에 저장될 수 있다.
컴퓨팅 시스템(100)은 또한 이 컴퓨팅 시스템(100)이 예를 들면 네트워크(110)를 통해 다른 컴퓨팅 시스템들과 통신하는 것을 가능하게 하는 통신 채널(108)을 포함할 수 있다. 통신 채널(108)은 통신 매체의 예다. 통신 매체는 통상적으로 반송파(carrier wave) 또는 기타 전송 메커니즘(transport mechanism)과 같은 피변조 데이터 신호(modulated data signal)에 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터 등을 구현하고 모든 정보 전달 매체를 포함한다. 예로서, 통신 매체는 유선 네트워크 및 직접 배선 접속(direct-wired connection)과 같은 유선 매체, 그리고 음향, 무선, 적외선, 기타 무선 매체와 같은 무선 매체를 포함하지만 이에 제한되지 않는다. 본 명세서에서 사용되는 컴퓨터 판독가능 매체는 저장 매체와 통신 매체 둘 다를 포함한다.
본 발명의 범위 내의 실시예는 또한 컴퓨터 실행가능 명령어 또는 데이터 구조를 담고 있거나(carry) 또는 컴퓨터 실행가능 명령어 또는 데이터 구조가 그에 저장되어 있는 컴퓨터 판독가능 매체를 포함한다. 이러한 컴퓨터 판독가능 매체는 범용 또는 특수 목적의 컴퓨터에 의해 액세스될 수 있는 그 어떤 것이든지 될 수 있다. 예로서, 이러한 컴퓨터 판독가능 매체는, RAM, ROM, EEPROM, CD-ROM 또는 기타 광 디스크 저장 장치, 자기 디스크 저장 장치 또는 기타 자기 저장 장치와 같은 물리적인 저장 장치 및/또는 메모리 매체, 또는, 컴퓨터 실행가능 명령어 또는 데이터 구조의 형태로 원하는 프로그램 코드 수단을 담고 있거나 또는 이를 저장하 는 데에 사용될 수 있고, 및 범용 또는 특수 목적의 컴퓨터에 의해 액세스도리 수 있는 임의의 기타 매체를 포함할 수 있다. 정보가 네트워크 또는 또 다른 통신 접속(유선, 무선, 또는 유무선의 조합 중 하나)을 통해 컴퓨터로 전달되거나 또는 제공될 때, 컴퓨터는 당연히 이 접속을 컴퓨터 판독가능 매체로 간주한다. 따라서, 임의의 이러한 접속도 당연하게 컴퓨터 접속가능 매체라 지칭된다. 상술된 것의 조합 또한 컴퓨터 판독가능 매체의 범위 내에 포함되어야만 한다.
컴퓨터 실행가능 명령어는 예를 들면, 범용 컴퓨터, 특수 목적의 컴퓨터 또는 특수 목적의 처리 장치로 하여금 어떤 기능 또는 한 그룹의 기능들을 수행하게 하는 명령어와 데이터를 포함한다. 본 내용이 구조적인 특징 및/또는 방법론적인 액트에 특정한 언어로 설명되었지만, 첨부되는 청구항에 정의되는 내용이 본 명세서의 특정 특징 또는 액트에 제한될 필요는 없음을 이해할 것이다. 오히려, 본 명세서에서 설명되는 특정 특징 및 액트는 청구항을 구현하는 예시적인 형태로서 개시된다.
도 2는 본 발명의 원리가 채용될 수 있는 환경(200)을 도시한다. 본 환경(200)은, 예를 들어, 시퀀스에 제1 서비스(211), 제2 서비스(212) 및 최종 서비스(final service)(213)를 포함하는, 서비스들의 시퀀스(210)를 포함한다. 그러나, 제2 서비스와 최종 서비스(212 및 213) 사이에 있는 가로 점들(horizontal ellipse)(214)에 의해 나타나는 바와 같이 추가의 서비스들이 있을 수 있다. 게다가, 시퀀스에 단 두 개의 서비스만이 있을 수 있으며, 이 경우, 제2 서비스(212)가 시퀀스(210)의 최종 서비스(213)와 동일할 수 있다. 이 환경(200)은 또한 서비스 들의 시퀀스(210)에 입력 데이터를 제공하는 데이터 입력 엔티티(201)와, 서비스들의 시퀀스(210)로부터 결과로서 생기는 출력 데이터를 소비하는(consume) 데이터 출력 엔티티(202)를 포함한다.
서비스들의 시퀀스는 복잡한 태스크가 달성될 수 있도록 하기 위해, 연속하여 수행될 수 있다. 예를 들면, 복잡한 태스크란, 소정의 지리적인 구역 내의 모든 회사들에 대한 주식 시세를 얻는 것이라 가정해보자. 이것은 지정된 영역 내에 있는 회사들의 리스트를 리턴함으로써 위도 및 경도 좌표 범위에 응답하는 지도 서비스의 형태인 제1 서비스를 사용함으로써 달성될 수 있다. 이후, 금융 서비스의 형태인 제2 서비스는 제1 서비스에 의해 리턴된 리스트된 모든 회사들에 대한 주식 시세를 얻는다. 이 시나리오는 이하에서는 "지도-기반 주식 시세(map-based stock quote)" 시나리오라 지칭될 것이다.
필수는 아니지만, 시퀀스의 서비스들은 네트워크에 걸쳐 분산될 수 있다. 예를 들면, 제1 서비스(211)는 하나의 네트워크 노드에 위치될 수 있는 반면, 제2 서비스(212)는 또 다른 네트워크 노드에 있을 수 있다. 그러나, 이들 서비스들 모두 또는 일부는 동일한 네트워크 노드에 있을 수 있다. 서비스들은 예를 들면 웹 서비스일 수 있고, 또는 로컬로 또는 원격으로 함수 호출이 있을 수 있는 임의의 컴포넌트 또는 모듈일 수 있다(The services may be, for example, Web Services, or may be any component or module to which a function call may be placed, either locally or remotely). 데이터 입력 엔티티(201)와 데이터 소비 엔티티(202)는 동일한 컴퓨팅 시스템일 수 있고, 또는 상이한 컴퓨팅 시스템일 수 있으 며, 서비스들(210)과 비교하여 다른 네트워크 노드에 위치될 수 있으며, 또는 아마도 서비스들(210) 중 하나 이상과 동일한 네트워크 노드에 있을 수도 있다. 본 명세서 및 본 청구항에서, 두 개의 컴퓨팅 시스템들이 네트워킹 프로토콜을 이용하여 통신하고 있다면 이들은 서로 다른 네트워크 노드에 있다.
일련의 서비스들이 통신하기 위해서는, 입력 데이터 및/또는 출력 데이터의 일부 변환이 유용할 수 있다. 예를 들면, 상술된 지도-기반 주식 시세 시나리오에서, 지도 서비스는 증권 시세 표시기의 심벌(ticker symbol)이 아니라 회사의 이름만을 제공하는 반면, 금융 서비스는 주식 시세를 기대한다고 가정해보자. 이 경우, 회사 이름이 증권 시세 표시기의 심벌로 매핑되는 일부 매핑 변환이 일어날 것이다. 대안으로는, 지도 서비스가 회사 이름을 XML 포맷으로 생성한 반면, 금융 서비스는 XML 객체가 아닌 다른 특정 종류로서의 입력을 기대한다고 가정해보자. 이 경우, 일부 포맷 변환이 일어날 수 있다. 지도 서비스에 입력된 데이터에 변환이 또한 발생할 수 있다. 예를 들면, 아마도 데이터 입력 엔티티는 "위도(latitude)" 및 "경도(longitude)"라 불리는 파라미터들을 생성한 반면, 지도 서비스는 각각 "lat" 및 "long" 이라 불리는 파라미터들을 기대할 수 있다. 데이터 출력 엔티티에 의해 소비될 수 있는 형태로 결과 데이터를 제공하기 위해, 금융 서비스의 출력에서 변환이 또한 일어날 수 있다.
도 2를 참조해보면, 예를 들어, 제1 서비스(211)는 입력 변환 컴포넌트(211A)에 의해 나타내어지는 바와 같이 데이터 입력 엔티티(201)로부터 수신되는 입력 데이터(221)에 대해 하나 이상의 변환을 수행할 수 있고, 출력 변환 컴포넌 트(211B)에 의해 나타내어지는 바와 같이 그 출력 데이터(222)에 대해 하나 이상의 변환을 수행할 수 있다. 또한, 제2 서비스(212)는 입력 변환 컴포넌트(212A)를 이용하여 자신의 입력 데이터(222)에 대해 변환(들)을 수행할 수 있으며, 출력 변환 컴포넌트(212B)를 이용하여 자신의 출력 데이터(223)에 대해 변환(들)을 수행하는 등, 서비스들의 시퀀스(210)에 있는 다른 서비스들에 대해서도 이를 수행할 수 있다. 마지막으로, 최종 서비스(213)는 입력 변환 컴포넌트(213A)를 이용하여 자신의 입력 데이터(224)에 대해 변환(들)을 수행하며, 출력 변환 컴포넌트(213B)를 이용하여 그 출력 데이터(225)에 대해 변환(들)을 수행할 수 있다.
본 발명의 실시예는 각 변환에 대해 커스텀 코드(custom code)를 기안함(draft)으로써 이러한 변환을 수행하기 보다는, 데이터 구조를 이용하여 선언적으로 변형을 정의한다. 도 3은 데이터 구조(300)의 예를 도시한다. 데이터 구조(300)는 서비스 시퀀스의 각 서비스에 대한 서비스 ID(identification) 필드를 포함한다. 예를 들면, 제1 서비스 정보(301)는 제1 서비스(도 2의 제1 서비스(211) 참조)를 식별하는 서비스 ID 필드(311)를 포함한다. 마찬가지로, 제2 서비스 정보(302)는 도 2의 제2 서비스(212)를 식별할 수 있으며, 최종 서비스 정보(303)는 도 2의 최종 서비스(213)를 식별할 수 있다. 수직 점들(304)은 다른 서비스들에 대해 동일한 다른 정보가 있을 수 있음을 나타낸다.
각 서비스에 대해, 그 서비스에 의해 처리되기에 앞서 입력 데이터에 대해 수행될 변환 클래스를 식별하는 입력 변환 클래스 필드(312A) 뿐만 아니라 변환 클래스의 하나 이상의 파라미터들을 식별하여 변환을 더 구체적으로 정의하는 하나 이상의 변환 파라미터 필드들(312B)을 포함하는, 하나 이상의 입력 변환 식별 필드들(312)이 있을 수 있다. 수직 점들(312C)에 의해 나타내어지는 바와 같이, 임의의 소정의 서비스에 대해 둘 이상의 입력 변환이 있을 수 있다. 또한, 입력 변환이 명시되지 않을 수도 있다.
변환 클래스와 변환 파라미터(들)의 조합은 좀 더 구체적인 변환을 식별하는 데에 사용될 수 있다. 변환 클래스의 예는, 파라미터 매핑 변환 또는 포맷 컨버전 변환(format conversion transformation)을 포함할 수 있다. 예를 들면, 변환 클래스가 파라미터 매핑 클래스라 가정해보자. 파라미터들의 예로는, 예를 들면, 어느 파라미터 이름(예를 들어, "위도" 또는 "경도")이 어느 파라미터 이름(예를 들면, 각각 "lat" 또는 "long")에 매핑되는지의 식별을 포함할 수 있다.
마찬가지로, 각각의 서비스에 대해, 그 서비스에 의해 처리되기에 앞서 출력 데이터에 대해 수행될 변환 클래스를 식별하는 출력 변환 클래스 필드(313A) 뿐만 아니라 변환 클래스의 하나 이상의 파라미터들을 식별하여 출력 변환을 더욱 구체적으로 정의하는 하나 이상의 변환 파라미터 필드들(313B)을 포함하는, 하나 이상의 출력 변환 식별 필드들(313)이 있을 수 있다. 수직 점들(313C)에 의해 나타내어지는 바와 같이, 임의의 소정의 서비스에 대해 둘 이상의 출력 변환이 있을 수 있다. 또한, 출력 변환이 명시되지 않을 수도 있다. 변환 클래스와 변환 파라미터(들)의 조합은 또한 좀 더 구체적인 출력 변환을 식별하는 데에 사용될 수 있다.
상술된 바와 같이, 제1 서비스 정보(301)에 관하여 상술된 필드들 각각은, 대응하는 제2 서비스(212)와 최종 서비스(213)에 관한 제2 서비스 정보(302)와 최 종 서비스 정보(303)에 포함될 수 있다. 데이터 구조(300)에 관련하여 설명된 필드들의 레이아웃은, 필드들에 관하여 임의의 위치 관계 또는 계층 관계를 암시하지 않는다. 예를 들면, 도시된 임의의 단일 필드는 여러 개의 분산된 필드들로 구성될 수 있고, 필드에 설명된 것과 같이 명시된 정보만을 포함할 필요는 없다. 게다가, 또 다른 필드에 포함되는 것으로 도시된 필드들은 그 필드 내에 포함될 필요가 전혀 없다.
데이터 구조(300)는 텍스트를 이용하여 명시될 수 있다. 한 실시예에서, 데이터 구조를 위해 XML(eXtensible Markup Language) 문서가 사용될 수 있으나, 이것은 절대로 필수사항이 아니다. 변형을 선언적으로 명시하기 위해 직관적인 텍스트 문서를 사용함으로써, 기초가 되는 코드를 수작업으로 변경하는, 시간이 많이 소요되고 비용이 많이 드는 실행(exercise)을 겪지 않고서도, 더 복잡한 변형이 명시되고 변경될 수 있게 된다. 데이터 구조(300)는, 서비스 요청에 앞서 서비스들 각각에 데이터 구조(300)를 등록함으로써, 또는 서비스 요청시 또는 서비스 요청 후에 데이터 구조(300)를 제공함으로써, 서비스 시퀀스에 있는 각 서비스들에게 사용가능하게 된다.
도 4는 변환을 수행하는 데에 사용될 수 있는 변환 아키텍처(400)를 도시한다. 해석 컴포넌트(interpretation component)(401)는 변환 클래스 필드와 하나 이상의 변환 파라미터 필드들을 해석하기 위한 컴퓨터 판독가능 명령어를 나타낸다. 구체적으로, 해석 컴포넌트(401)는 변환 클래스 선언(412A)과 파라미터(들) 선언(412B)을 수신하여, 클래스 ID(411A)와 파라미터들 ID(411B)를 변환 컴포넌 트(402)에 제공한다.
변환 컴포넌트(402)는, 변환 클래스 필드와 하나 이상의 변환 파라미터 필드들의 조합에 의해 명시되는 변환을 수행하기 위한 컴퓨터 실행가능 명령어를 나타낸다. 변환 컴포넌트(402)는, 많은 수의 파퓰레이트되지 않은 클래스들 또는 완전하게는 파퓰레이트되지 않은 변환 클래스들(a number of unpopulated or not fully-populated transformation classes)(403A 내지 403C)에 액세스한다. 변환 컴포넌트(402)는 클래스 ID(411A)를 이용하여 참조번호(403A 내지 403C) 중에서 적절한 변환 클래스를 선택한다. 이후, 변환 컴포넌트(402)는 그 클래스로부터 파생된(derived) 변환 객체를 인스턴스화(instantiate)하고, 그 객체를 파라미터(들)(411B)로 파퓰레이트한다. 그 결과는, 실행되어 입력 또는 출력 데이터(411)를 수신하고 그 데이터를 변환된 입력 또는 출력 데이터(413)로 변환할 수 있는 객체이다.
도 5는 본 발명의 원리에 따라, 서비스가, 적절한 입력 및/또는 출력 변환으로 데이터를 처리하는 방법(500)의 흐름도를 도시한다. 서비스는 데이터 소스 엔티티(201) 또는 서비스 시퀀스(210)의 이전의 서비스로부터 서비스 요청을 수신한다(액트 501). 이 서비스 요청은 네트워크를 통해, 또는 동일한 컴퓨팅 시스템 내의 다른 프로세스로부터 로컬로 수신될 수 있다.
게다가, 서비스는 도 3과 관련하여 상술된 데이터 구조에 액세스한다(액트 502). 서비스 요청을 수신하기 전에, 수신하는 동안, 또는 수신한 후에, 서비스가 데이터 구조에 액세스할 수 있기 때문에, 데이터 구조는 서비스 요청의 수신과 동 시에 액세스되는 것으로 도시되어 있다. 그러나, 특정 실시예에서, 데이터 구조는 서비스 요청과 함께 수신될 수 있다. 한 실시예에서, 서비스는 그 서비스에 속해 있는 데이터 구조부에만 액세스한다. 예를 들면, 제1 서비스(211)는 제1 서비스 정보(301)에만 액세스할 수 있으며, 다른 서비스들의 경우도 그러하다.
이후, 서비스는 그 서비스가 데이터 구조에서 참조되고 있는지의 여부를 판정한다(판정 블록 503). 다시 말해, 서비스는 자신에 의해 수신된 서비스 요청이 서비스 시퀀스의 서비스들 중 하나에 대한 것인지의 여부를 판정한다. 서비스가 데이터 구조에서 참조되지 않다면(판정 블록(504)의 아니오), 요청은 임의의 입력 및/또는 출력 변환들을 명시하는 데이터 구조에 의존하지 않고 처리된다(액트 504).
서비스가 데이터 구조에서 참조된다면(판정 블록(504)의 예), 서비스는 임의의 관련된 입력 변환이 데이터 구조에 명시되어 있는지의 여부(판정 블록(505))를 식별한다. 만약 없다면(판정 블록(505)의 아니오), 요청은 입력 데이터를 이용하여 처리된다(액트 508). 반면, 명시된 입력 변환이 있다면(판정 블록(505)의 예), 입력 변환 각각에 대해, 서비스는 변환 클래스 필드와 하나 이상의 변환 파라미터 필드들을 해석하고(액트 506), 변환 클래스 필드와 하나 이상의 변환 파라미터 필드들의 조합에 의해 명시되는 입력 변환을 수행한다(액트 507). 이것은, 도 4의 변환 아키텍처(400)를 이용하여 달성될 수 있다. 명시된 시퀀스에서 명시된 모든 입력 변환이 수행된 후, 서비스 요청은 변환된 입력 데이터에 대해 처리되어(액트 508) 결과적인 출력 데이터를 생성한다.
이후, 서비스는 출력 데이터에 대해 수행될 임의의 관련 출력 변환이 있는지 없는지의 여부를 판정한다(판정 블록 509). 변환이 없다면(판정 블록(509)의 아니오), 결과 데이터는 데이터 출력 엔티티(202) 또는 서비스 시퀀스(210)의 다음 서비스에 제공된다(액트 512). 한편, 명시된 출력 변환이 있다면(판정 블록(509)의 예), 출력 변환 각각에 대해, 서비스는 변환 클래스 필드와 하나 이상의 변환 파라미터 필드들을 해석하고(액트 510), 변환 클래스 필드와 하나 이상의 변환 파라미터 필드들의 조합에 의해 명시되어 있는 출력 변환을 수행한다(액트 511). 다시 한번, 이것은 도 4의 변환 아키텍처(400)를 이용하여 달성될 수 있다. 명시된 모든 출력 변환이 수행된 후, 변환된 결과 데이터는 데이터 출력 엔티티(202) 또는 서비스 시퀀스(210)의 다음 서비스에 제공된다.
방법들이 도 5 및 관련된 도면, 그리고 명세서에 관하여 설명되었지만, 본 발명의 원리는, 서버 컴퓨팅 시스템의 하나 이상의 프로세서에 의해 실행될 때, 컴퓨팅 시스템으로 하여금 이들 방법들 전부 또는 그 일부, 또는 이들 방법들 중 하나 또는 이들 방법들 모두를 수행하게 하는 하나 이상의 컴퓨터 실행가능 명령어를 갖는 하나 이상의 컴퓨터 판독가능 매체를 포함하는 컴퓨터 프로그램 제품에 이른다. 예를 들면, 도 1을 참조해보면, 메모리(104)와 통신 채널(108)은 이러한 컴퓨터 판독가능 매체의 예를 나타낼 수 있다. 메모리(104)는 물리적인 저장 장치 및/또는 메모리 매체의 형태인 물리적 컴퓨터 판독가능 매체의 일례를 나타낸다. 본 발명의 원리는 또한 도 5의 방법들의 일부 또는 모두를 수행하기 위해, 하드웨어, 소프트웨어 또는 하드웨어 및 소프트웨어의 조합으로 구성되는 컴퓨팅 시스템 그 자체에 이른다.
지금까지 본 발명의 광범위한 원리가 어느 정도 상세하게 설명되었으며, 이제는 좀 더 구체적인 예가 설명될 것이다. 당업자들은 이 설명을 리뷰한 후에, 본 예와 별개로 본 발명의 더 광범위한 원리들을 구현하는 열거할 수 있는(enumerable) 방법들이 있음을 인지할 것이다. 따라서, 본 예는 일례이며, 제한하지 않는다.
한 예에서, 데이터 구조(300)는 이하의 XML 문서일 수 있으며, 명확하게 하기 위해 라인 넘버링을 추가하였다.
Figure 112008064266073-PCT00001
Figure 112008064266073-PCT00002
Figure 112008064266073-PCT00003
이 데이터 구조에서, "bridge" 엘리먼트는 그 속성(attribute)에 있어BookSearch로 지칭되는 서비스를 정의한다. BookSearch 서비스는 도 2의 서비스들의 시퀀스에서 도시된 서비스의 일례이다. proxy type이 또한 명시되어, 서비스와 통신하는 데에 사용되는 프록시(proxy)를 식별할 수 있다. proxy 엘리먼트는 또한 제1 서비스와 접속하기 위해 proxy에 의해 사용될 수 있는 URL을 포함한다. bridge 엘리먼트는, BookSearch 속성과 관련된 두 개의 메소드, Search라고 하는 하나의 메소드와 SearchRaw라고 하는 다른 하나의 메소드를 정의한다.
Search 메소드는 Search 메소드로의 몇몇 입력 파라미터들을 정의한다. 이러한 파라미터들로는, Service, AWSAccessKeyId, Keywords, Operation 및 Search Index가 있다. ServerName 속성은 입력 파라미터들 중 두 개의 파라미터, 즉, Service 및 Keywords에서 존재한다. ServerName 속성 이름은 변환 클래스 ID의 일례이다. ServerName 속성의 값은 변환 파라미터들의 일례이다. 예를 들면, parameter name="Service" 엘리먼트의 ServerName 속성은, "Service"라는 이름의 파라미터가 이름 "BookSearch"로 매핑될 파라미터 매핑 클래스 변환을 나타낸다. 마찬가지로, "Keywords" 파라미터는 "SearchTerms" 파라미터로 매핑된다. 따라서, "input" 엘리먼트는 두 개의 파라미터 매핑 함수를 정의한다.
"transforms" 엘리먼트는, 결과 데이터로부터 이름-값의 쌍을 추출하여 이것을 XML 문서의 형식으로 두는(place), "XPathBridgeTransformer"라는 이름의 출력 변환을 명시한다. XPathBridgeTransformer를 참조하는 것은 변환 클래스 식별의 일례이다. 이 경우, Title, ProductGroup, Author 및 ASIN 필드들이 검색 결과로부터 추출되어 XML 문서 내에 놓여진다. 따라서, item name 엘리먼트는 변환 파라미터의 일례이다. SearchRaw 메소드는 출력 변환이 명시되지 않았다는 것을 제외하고는 Search 메소드와 동일하다.
따라서, 본 발명의 원리는 서비스로의 입력 데이터와 서비스로부터의 출력 데이터 둘 다에 대해 변환을 선언적으로 명시하기 위한 편리한 메커니즘을 제공한다. 변환을 변경하기 위해, 기초가 되는 코드가 변경될 필요가 없으며, 하이-레벨의 선언이 수정될 것이다.
본 발명은 그 취지 또는 핵심 특징들을 벗어나지 않고 다른 특정 형태로 구현될 수 있다. 설명된 실시예들은 모든 면에 있어, 단지 예시적인 것이며 제한하는 것이 아닌 것으로 간주될 것이다. 따라서, 본 발명의 범위는, 전술된 내용에 의해서가 아니라 첨부되는 청구항에 의해 나타내어진다. 청구항의 동등물의 의미 및 범위 내에 들어오는 모든 변경사항은 그 범위 내에 포함될 것이다.

Claims (20)

  1. 데이터 구조를 갖는 하나 이상의 컴퓨터 판독가능 매체로서,
    상기 데이터 구조는,
    복수의 서비스 ID 필드(a plurality of service identification fields) -상기 복수의 서비스 ID 필드 각각은 두 개 이상의 서비스들의 시퀀스에 있는 서비스를 식별함-;
    상기 서비스들의 시퀀스에 제공되기 이전의 입력 데이터, 상기 서비스들의 시퀀스에 있는 복수의 서비스들 중 두 개의 서비스들 간에 제공되는 서비스간(inter-service) 데이터, 또는 상기 서비스들의 시퀀스로부터 출력된 출력 데이터에 대해 수행될 변환 클래스를 명시(specify)하는 변환 클래스 필드(transformation class field); 및,
    상기 변환 클래스의 하나 이상의 파라미터들을 식별하여 상기 변환을 더 구체적으로 정의하는 하나 이상의 변환 파라미터 필드들(transformation parameter fields)
    을 포함하는, 하나 이상의 컴퓨터 판독가능 매체.
  2. 제1항에 있어서, 상기 복수의 서비스 ID 필드, 상기 변환 클래스 필드, 및 상기 하나 이상의 변환 파라미터 필드들은 텍스트를 이용하여 명시되는, 하나 이상의 컴퓨터 판독가능 매체.
  3. 제1항에 있어서, 상기 변환 클래스 필드는 상기 서비스들의 시퀀스에 제공되기 이전의 상기 입력 데이터에 대해 수행될 변환 클래스를 명시하며, 상기 컴퓨터 판독가능 매체는,
    상기 변환 클래스 필드와 상기 하나 이상의 변환 파라미터 필드들을 해석하기 위한 컴퓨터 실행가능 명령어; 및
    상기 변환 클래스 필드와 상기 하나 이상의 변환 파라미터 필드들의 조합에 의해 명시되는 변환을 수행하기 위한 컴퓨터 실행가능 명령어
    를 더 포함하는, 컴퓨터 판독가능 매체.
  4. 제1항에 있어서, 상기 변환 클래스 필드는 상기 서비스 간 데이터에 대해 수행될 변환 클래스를 명시하며, 상기 컴퓨터 판독가능 매체는,
    상기 변환 클래스 필드와 상기 하나 이상의 변환 파라미터 필드들을 해석하기 위한 컴퓨터 실행가능 명령어; 및
    상기 변환 클래스 필드와 상기 하나 이상의 변환 파라미터 필드들의 조합에 의해 명시되는 변환을 수행하기 위한 컴퓨터 실행가능 명령어
    를 더 포함하는, 컴퓨터 판독가능 매체.
  5. 제1항에 있어서, 상기 변환 클래스 필드는 상기 서비스들의 시퀀스로부터 출력된 출력 데이터에 대해 수행될 변환 클래스를 명시하며, 상기 컴퓨터 판독가능 매체는,
    상기 변환 클래스 필드와 상기 하나 이상의 변환 파라미터 필드들을 해석하기 위한 컴퓨터 실행가능 명령어; 및
    상기 변환 클래스 필드와 상기 하나 이상의 변환 파라미터 필드들의 조합에 의해 명시되는 변환을 수행하기 위한 컴퓨터 실행가능 명령어
    를 더 포함하는, 컴퓨터 판독가능 매체.
  6. 제1항에 있어서,
    상기 변환 클래스 필드는 제1 변환 클래스 필드이며, 상기 변환 클래스는 제1 클래스 변환이며, 상기 변환은 제1 변환이며,
    상기 하나 이상의 변환 파라미터 필드들은 제1의 하나 이상의 변환 파라미터 필드들이며, 상기 제1 변환 클래스 필드는, 상기 하나 이상의 서비스들의 시퀀스에 제공되기 이전의 입력 데이터에 대해 수행될 변환 클래스를 명시하며,
    상기 컴퓨터 판독가능 매체는,
    상기 서비스들의 시퀀스에 있는 상기 복수의 서비스들 중 두 개의 서비스들 간에 제공되는 서비스 간 데이터에 대해 수행될 제2 변환 클래스를 명시하는 제2 변환 클래스 필드; 및
    상기 제2 변환 클래스의 하나 이상의 파라미터들을 식별하여 상기 제2 변환을 더 구체적으로 정의하는 제2의 하나 이상의 변환 파라미터 필드들
    을 더 포함하는, 컴퓨터 판독가능 매체.
  7. 제6항에 있어서, 상기 컴퓨터 판독가능 매체는,
    상기 서비스들의 시퀀스로부터 출력된 출력 데이터에 대하여 수행될 제3 변환 클래스를 명시하는 제3 변환 클래스 필드; 및
    상기 제3 변환 클래스의 하나 이상의 파라미터들을 식별하여 상기 제3 변환을 더 구체적으로 정의하는 제3의 하나 이상의 변환 파라미터 필드들
    을 더 포함하는, 컴퓨터 판독가능 매체.
  8. 제1항에 있어서,
    상기 변환 클래스 필드는 제1 변환 클래스 필드이며, 상기 변환 클래스는 제1 클래스 변환이며, 상기 변환은 제1 변환이며,
    상기 하나 이상의 변환 파라미터 필드들은 제1의 하나 이상의 변환 파라미터 필드들이며, 상기 제1 변환 클래스 필드는, 상기 하나 이상의 서비스들의 시퀀스에 제공되기 이전의 입력 데이터에 대해 수행될 변환 클래스를 명시하며,
    상기 컴퓨터 판독가능 매체는,
    상기 서비스들의 시퀀스로부터 출력된 출력 데이터에 대해 수행될 제2 변환 클래스를 명시하는 제2 변환 클래스 필드; 및
    상기 제2 변환 클래스의 하나 이상의 파라미터들을 식별하여 상기 제2 변환을 더 구체적으로 정의하는 제2의 하나 이상의 변환 파라미터 필드들
    을 더 포함하는, 컴퓨터 판독가능 매체.
  9. 제1항에 있어서,
    상기 변환 클래스 필드는 제1 변환 클래스 필드이며, 상기 변환 클래스는 제1 클래스 변환이며, 상기 변환은 제1 변환이며,
    상기 하나 이상의 변환 파라미터 필드들은 제1의 하나 이상의 변환 파라미터 필드들이며, 상기 제1 변환 클래스 필드는, 상기 서비스들의 시퀀스 중의 상기 복수의 서비스 중 두 개의 서비스들 간에 제공되는 서비스 간 데이터에 대해 수행될 변환 클래스를 명시하며,
    상기 컴퓨터 판독가능 매체는,
    상기 서비스들의 시퀀스로부터 출력된 출력 데이터에 대해 수행될 제2 변환 클래스를 명시하는 제2 변환 클래스 필드; 및
    상기 제2 변환 클래스의 하나 이상의 파라미터들을 식별하여 상기 제2 변환을 더 구체적으로 정의하는 제2의 하나 이상의 변환 파라미터 필드들
    을 더 포함하는, 컴퓨터 판독가능 매체.
  10. 제1항에 있어서, 상기 하나 이상의 컴퓨터 판독가능 매체는 물리적인 저장 매체(physical storage media)인 컴퓨터 판독가능 매체.
  11. 제1항에 있어서, 상기 하나 이상의 컴퓨터 판독가능 매체는 물리적인 메모리 매체(physical memory media)인 컴퓨터 판독가능 매체.
  12. 제1항에 있어서, 상기 변환 클래스는 파라미터 매핑 변환(parameter mapping transformation)을 포함하는 컴퓨터 판독가능 매체.
  13. 제1항에 있어서, 상기 변환 클래스는 포맷 컨버전 변환(format conversion transformation)을 포함하는 컴퓨터 판독가능 매체.
  14. 제1항에 있어서, 상기 복수의 서비스 중 적어도 하나 이상은, 상기 복수의 서비스의 나머지들 중의 적어도 하나 이상과는 다른 네트워크 노드에 있는, 컴퓨터 판독가능 매체.
  15. 제14항에 있어서, 상기 복수의 서비스는, 상기 입력 데이터를 생성한 컴포넌트와 비교하여 하나 이상의 서로 다른 네트워크 노드들에 있는 컴퓨터 판독가능 매체.
  16. 서비스가, 다른 네트워크 노드로부터 입력 데이터를 수신하여 처리하는 방법으로서,
    서비스 및 관련 입력 데이터에 대한 요청을 수신하는 액트;
    복수의 서비스 ID 필드 -상기 복수의 서비스 ID 필드 각각은 둘 이상의 서비스들의 시퀀스에 있는 서비스를 식별하며, 그 중 적어도 하나는 상기 요청된 서비 스를 식별함-, 상기 둘 이상의 서비스들의 시퀀스에 제공되기 이전의 입력 데이터에 대해 수행될 변환 클래스를 명시하는 변환 클래스 필드, 및 상기 변환 클래스의 하나 이상의 파라미터들을 식별하여 상기 변환을 더 구체적으로 정의하는 하나 이상의 변환 파라미터 필드들을 포함하는 데이터 구조에 액세스하는 액트;
    상기 서비스 요청이 상기 복수의 서비스 중의 하나에 대한 것인 것으로 판정하는 액트;
    상기 변환 클래스 필드와 상기 하나 이상의 변환 파라미터 필드들을 해석하는 액트; 및
    상기 입력 데이터에 대해 변환을 수행함으로써, 상기 변환 클래스 필드와 상기 하나 이상의 변환 파라미터 필드들의 조합에 의해 명시되는 변환을 수행하는 액트
    를 포함하는, 입력 데이터 수신 및 처리 방법.
  17. 제16항에 있어서,
    상기 변환 클래스 필드는 제1 변환 클래스 필드이며, 상기 변환 클래스는 제1 클래스 변환이며, 상기 변환은 제1 변환이며,
    상기 하나 이상의 변환 파라미터 필드들은 제1의 하나 이상의 변환 파라미터 필드들이며,
    상기 데이터 구조는, 상기 서비스들의 시퀀스에 있는 다음 서비스에 제공되기 이전의 또는 상기 서비스에 의해 출력되기 이전의 출력 데이터에 대해 수행될 변환 클래스를 명시하는 제2 변환 클래스 필드를 더 포함하고,
    하나 이상의 변환 파라미터 필드들은 상기 변환 클래스의 하나 이상의 파라미터들을 식별하여 상기 변환을 더 구체적으로 정의하며,
    상기 서비스 요청을 처리하여 결과 데이터(resulting data)를 생성하는 액트;
    상기 제2 변환 클래스 필드와 제2의 하나 이상의 변환 파라미터 필드들을 해석하는 액트; 및
    상기 결과 데이터에 대해 변환을 수행함으로써 상기 변환 클래스 필드와 상기 하나 이상의 변환 파라미터 필드들의 조합에 의해 명시되는 상기 제2 변환을 수행하는 액트
    를 더 포함하는, 입력 데이터 수신 및 처리 방법.
  18. 컴퓨팅 시스템의 하나 이상의 프로세서들에 의해 실행될 때, 상기 컴퓨팅 시스템으로 하여금 제16항의 방법을 수행하게 하는 컴퓨터 실행가능 명령어들을 포함하는 하나 이상의 컴퓨터 판독가능 매체를 포함하는 컴퓨터 프로그램 제품.
  19. 서비스가 결과 데이터를 처리하는 방법으로서,
    서비스 요청을 처리하여 상기 결과 데이터를 생성하는 액트;
    서비스 시퀀스의 다음 서비스에 제공되기 이전의 또는 상기 서비스에 의해 출력되기 이전의 상기 결과 데이터에 대해 수행될 변환 클래스를 명시하는 변환 클 래스 필드와, 상기 변환 클래스의 하나 이상의 파라미터들을 식별하여 상기 변환을 더 구체적으로 정의하는 하나 이상의 변환 파라미터 필드들을 포함하는 데이터 구조에 액세스하는 액트;
    상기 변환 클래스 필드와 상기 하나 이상의 변환 파라미터 필드들을 해석하는 액트; 및
    상기 결과 데이터에 대해 변환을 수행함으로써, 상기 변환 클래스 필드와 상기 하나 이상의 변환 파라미터 필드들의 조합에 의해 명시되는 변환을 수행하는 액트
    를 포함하는 결과 데이터 처리 방법.
  20. 컴퓨팅 시스템의 하나 이상의 프로세서들에 의해 실행될 때, 상기 컴퓨팅 시스템으로 하여금 제19항의 방법을 수행하게 하는 컴퓨터 실행가능 명령어들을 포함하는 하나 이상의 컴퓨터 판독가능 매체를 포함하는 컴퓨터 프로그램 제품.
KR1020087022171A 2006-03-17 2007-02-13 데이터 구조를 갖는 하나 이상의 컴퓨터 판독가능 매체, 서비스가 데이터를 처리하는 방법 및 이 방법을 수행하게 하는 컴퓨터 실행가능 명령어가 있는 하나 이상의 컴퓨터 판독가능 매체를 포함하는 컴퓨터 프로그램 제품 KR20080104303A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/378,711 2006-03-17
US11/378,711 US7869585B2 (en) 2006-03-17 2006-03-17 Declarations for transformations within service sequences

Publications (1)

Publication Number Publication Date
KR20080104303A true KR20080104303A (ko) 2008-12-02

Family

ID=38519290

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087022171A KR20080104303A (ko) 2006-03-17 2007-02-13 데이터 구조를 갖는 하나 이상의 컴퓨터 판독가능 매체, 서비스가 데이터를 처리하는 방법 및 이 방법을 수행하게 하는 컴퓨터 실행가능 명령어가 있는 하나 이상의 컴퓨터 판독가능 매체를 포함하는 컴퓨터 프로그램 제품

Country Status (6)

Country Link
US (1) US7869585B2 (ko)
EP (1) EP2011073A4 (ko)
JP (1) JP5031819B2 (ko)
KR (1) KR20080104303A (ko)
CN (1) CN101405761B (ko)
WO (1) WO2007108874A1 (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7814198B2 (en) 2007-10-26 2010-10-12 Microsoft Corporation Model-driven, repository-based application monitoring system
US8024396B2 (en) * 2007-04-26 2011-09-20 Microsoft Corporation Distributed behavior controlled execution of modeled applications
US7970892B2 (en) 2007-06-29 2011-06-28 Microsoft Corporation Tuning and optimizing distributed systems with declarative models
US8239505B2 (en) * 2007-06-29 2012-08-07 Microsoft Corporation Progressively implementing declarative models in distributed systems
US8230386B2 (en) 2007-08-23 2012-07-24 Microsoft Corporation Monitoring distributed applications
US7926070B2 (en) 2007-10-26 2011-04-12 Microsoft Corporation Performing requested commands for model-based applications
US8099720B2 (en) * 2007-10-26 2012-01-17 Microsoft Corporation Translating declarative models
US8225308B2 (en) 2007-10-26 2012-07-17 Microsoft Corporation Managing software lifecycle
US8181151B2 (en) * 2007-10-26 2012-05-15 Microsoft Corporation Modeling and managing heterogeneous applications
US7974939B2 (en) 2007-10-26 2011-07-05 Microsoft Corporation Processing model-based commands for distributed applications
US20100070535A1 (en) * 2008-09-12 2010-03-18 Microsoft Corporation Data schema transformation using declarative transformations

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11212911A (ja) * 1998-01-28 1999-08-06 Mitsubishi Electric Corp 分散サービス連携装置
MXPA00007085A (es) * 1998-11-18 2005-09-20 Software Ag Inc Sistema de integracion de aplicacion de empresa distribuido extensible.
US6941510B1 (en) 2000-06-06 2005-09-06 Groove Networks, Inc. Method and apparatus for efficient management of XML documents
US6941511B1 (en) * 2000-08-31 2005-09-06 International Business Machines Corporation High-performance extensible document transformation
JP2003242127A (ja) * 2002-02-14 2003-08-29 Meidensha Corp 業務統合システム
US20040133635A1 (en) * 2002-11-26 2004-07-08 Axel Spriestersbach Transformation of web description documents
CA2413697A1 (en) * 2002-12-06 2004-06-06 Ibm Canada Limited-Ibm Canada Limitee Transformations as web services
US6976144B1 (en) * 2003-05-06 2005-12-13 Pegasystems, Inc. Methods and apparatus for digital data processing with mutable inheritance
US7519577B2 (en) * 2003-06-23 2009-04-14 Microsoft Corporation Query intermediate language method and system
JP4204493B2 (ja) * 2004-03-03 2009-01-07 富士通株式会社 データ中継プログラム

Also Published As

Publication number Publication date
JP2009530738A (ja) 2009-08-27
US20070220177A1 (en) 2007-09-20
EP2011073A1 (en) 2009-01-07
CN101405761B (zh) 2016-02-03
US7869585B2 (en) 2011-01-11
EP2011073A4 (en) 2009-06-10
JP5031819B2 (ja) 2012-09-26
CN101405761A (zh) 2009-04-08
WO2007108874A1 (en) 2007-09-27

Similar Documents

Publication Publication Date Title
KR20080104303A (ko) 데이터 구조를 갖는 하나 이상의 컴퓨터 판독가능 매체, 서비스가 데이터를 처리하는 방법 및 이 방법을 수행하게 하는 컴퓨터 실행가능 명령어가 있는 하나 이상의 컴퓨터 판독가능 매체를 포함하는 컴퓨터 프로그램 제품
US8751558B2 (en) Mashup infrastructure with learning mechanism
US8370863B2 (en) Method and apparatus for integrating applications on demand to display and manipulate a semantic resource
RU2419837C2 (ru) Рабочие потоки, ориентированные на данные
US7761586B2 (en) Accessing and manipulating data in a data flow graph
US6985939B2 (en) Building distributed software services as aggregations of other services
US7937500B2 (en) Dynamic, real-time integration of software resources through services of a content framework
US9959263B2 (en) User interface form field expansion
US9547532B2 (en) Techniques to provide proxies for web services
CN109634598A (zh) 一种页面显示方法、装置、设备及存储介质
US20060212836A1 (en) Personalized user interfaces for presentation-oriented web services
US20100211580A1 (en) Semantics-based data transformation over a wire in mashups
US20100174713A1 (en) Enhanced Content Web Browsing
US20100058285A1 (en) Compositional view of imperative object model
CN1689298B (zh) 用于自主计算的合成服务
US10902060B2 (en) Unbounded list processing
US20230385363A1 (en) Web site preview generation based on web site type
Agustin Model-driven web applications
WO2023229693A1 (en) Web site preview generation with action control
Hahn et al. Modeling data transformations in data-aware service choreographies
Prokić et al. Correct orchestration of Federated Learning generic algorithms: formalisation and verification in CSP
US11038765B2 (en) Cloud software defined networking application programming interface converter
KR20230118329A (ko) 규칙 기반의 멀티 서비스 데이터 변환 방법 및 시스템
Brodt Location-based mashups for nokia internet tablets
US20190005007A1 (en) Merging client content with cloud services

Legal Events

Date Code Title Description
A201 Request for examination
SUBM Surrender of laid-open application requested