KR101784784B1 - 클라이언트-서버 브리지를 사용하는 객체 관리 - Google Patents

클라이언트-서버 브리지를 사용하는 객체 관리 Download PDF

Info

Publication number
KR101784784B1
KR101784784B1 KR1020127017686A KR20127017686A KR101784784B1 KR 101784784 B1 KR101784784 B1 KR 101784784B1 KR 1020127017686 A KR1020127017686 A KR 1020127017686A KR 20127017686 A KR20127017686 A KR 20127017686A KR 101784784 B1 KR101784784 B1 KR 101784784B1
Authority
KR
South Korea
Prior art keywords
message
client
data
receiving
flow graph
Prior art date
Application number
KR1020127017686A
Other languages
English (en)
Other versions
KR20120101706A (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 KR20120101706A publication Critical patent/KR20120101706A/ko
Application granted granted Critical
Publication of KR101784784B1 publication Critical patent/KR101784784B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
    • G06F3/04847Interaction techniques to control parameter settings, e.g. interaction with sliders or dials
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/38Creation or generation of source code for implementing user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/04Processing captured monitoring data, e.g. for logfile generation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/901Buffering arrangements using storage descriptor, e.g. read or write pointers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • 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/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Human Computer Interaction (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Transfer Between Computers (AREA)
  • Stored Programmes (AREA)
  • User Interface Of Digital Computer (AREA)
  • Debugging And Monitoring (AREA)
  • Computer And Data Communications (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

클라이언트와 서버 사이의 통신을 지원하는 방법은 클라이언트(202)로부터 제1 메시지를 수신하는 단계(302, 210)를 포함한다. 이 방법은 또한 제1 메시지에 대한 응답으로 객체를 생성하는 단계(312)를 포함한다. 이 방법은 또한 제1 메시지에 대한 응답을 클라이언트에게 송신하는 단계(320, 212)를 포함한다. 이 방법은 또한 서버로부터 객체에 대한 변경사항(change)을 수신하는 단계(224, 406)를 포함한다. 이 방법은 또한 객체에 대한 변경사항을 저장하는 단계(408)를 포함한다. 이 방법은 또한 클라이언트로부터 제2 메시지를 수신하는 단계(302, 210, 410)를 포함한다. 이 방법은 또한 제2 메시지에 대한 응답과 함께 저장된 변경사항을 클라이언트에게 송신하는 단계(320, 212, 414)를 포함한다.

Description

클라이언트-서버 브리지를 사용하는 객체 관리{MANAGING OBJECTS USING A CLIENT-SERVER BRIDGE}
본 출원은 2009년 12월 14일에 출원된 미국 출원 제61/286,293호에 대해 우선권을 주장하며, 그 내용 전부는 인용에 의해 본 명세서에 포함된다.
본 설명은 클라이언트-서버 브리지(client-server bridge)를 사용하는 객체 관리에 관한 것이다.
일부 클라이언트-서버 시스템은 두 가지 연산 방법 중 하나를 채택하고 있다. 일부 시스템에는 "씬(thin)" 클라이언트가 있고, 그것은 서버에 독립적인 연산을 수행할 수 있는 능력이 거의 없이 사용자에게 베니어(veneer)를 제공하는 인터페이스를 제공한다(예컨대, HTML 웹 페이지). 일부 시스템에는, 클라이언트 하드웨어의 자원을 이용하면서 복잡한 연산을 수행할 수 있는 인터페이스(예컨대, MFC(Microsoft Foundation Class) 기반의 사용자 인터페이스)를 제공하는 "패트(fat)" 클라이언트가 있다. 일부 "패트" 클라이언트는 서버 어플리케이션과 동일하거나 유사한 프로그래밍 언어로 작성되고, 따라서 클라이언트는 백엔드(backend) 서버에 밀접하게 결합될 수 있다(예컨대, Java RMI 또는 Microsoft COM+ 기술).
본 발명의 목적은 클라이언트-서버 브리지를 사용하는 객체 관리를 제공하는 것이다.
일 측면에서, 일반적으로, 클라이언트와 서버 사이의 통신을 지원하는 방법은 클라이언트로부터 제1 메시지를 수신하는 단계를 포함한다. 이 방법은 또한 제1 메시지에 대한 응답으로 객체를 생성하는 단계를 포함한다. 이 방법은 또한 제1 메시지에 대한 응답을 클라이언트에게 송신하는 단계를 포함한다. 이 방법은 또한 서버로부터 객체에 대한 변경사항(change)을 수신하는 단계를 포함한다. 이 방법은 또한 객체에 대한 변경사항을 저장하는 단계를 포함한다. 이 방법은 또한 클라이언트로부터 제2 메시지를 수신하는 단계를 포함한다. 이 방법은 또한 제2 메시지에 대한 응답과 함께 저장된 변경사항을 클라이언트에게 송신하는 단계를 포함한다.
이러한 측면은 하나 이상의 다음 특징을 포함할 수 있다.
변경사항을 저장하는 단계는 변경사항의 로그(log)를 생성하는 단계를 포함할 수 있고, 저장된 변경사항을 클라이언트에게 송신하는 단계는 변경사항의 로그를 송신하는 단계를 포함할 수 있다. 변경사항을 저장하는 단계는 객체의 현재 상태를 업데이트(update)하는 단계를 포함할 수 있고, 저장된 변경사항을 클라이언트에게 송신하는 단계는 객체의 현재 상태를 송신하는 단계를 포함할 수 있다. 클라이언트로부터 제1 메시지를 수신하는 단계는 클라이언트 객체에 대한 임시 식별자(temporary identifier)를 수신하는 단계를 포함할 수 있고; 객체를 생성하는 단계는 객체에 대한 영구 식별자(permanent identifier)를 획득하는 단계를 포함하고; 제1 메시지에 대한 응답을 송신하는 단계는 임시 식별자와 영구 식별자 사이의 매핑(mapping)을 송신하는 단계를 포함한다. 영구 식별자를 획득하는 단계는 서버 메시지를 서버에게 송신하는 단계를 포함할 수 있다. 서버 메시지를 송신하는 단계는 서버 메시지를 다른 서버 메시지와 인터리빙(interleaving)하는 단계를 포함할 수 있다.
이 방법은 또한 객체의 인터레스트(interest)를 서버에 등록하는 단계를 포함할 수 있다. 객체에 대한 변경사항을 수신하는 단계는 서버에 의해 발생된 이벤트와 연관된 객체에 대한 변경사항을 수신하는 단계를 포함할 수 있다. 제1 메시지를 수신하는 단계는 제1 프로토콜을 이용하는 단계를 포함할 수 있고, 변경사항을 수신하는 단계는 제1 프로토콜과 상이한 제2 프로토콜을 이용하는 단계를 포함한다. 이 방법은 또한 다중 클라이언트에 대한 다중 객체에 대한 변경사항을 저장하는 단계를 포함할 수 있다.
객체는, 데이터흐름 그래프(dataflow graph)의 컴포넌트를 나타내는 다중 노드 및 컴포넌트간 데이터의 흐름을 나타내는 노드 사이의 링크를 포함하는 데이터흐름 그래프의 일부에 대응할 수 있다. 클라이언트로부터 제1 메시지를 수신하는 단계는 데이터흐름 그래프의 컴포넌트의 하나 이상의 특성을 정의하기 위한 파라미터의 값을 수신하는 단계를 포함할 수 있다. 이 방법은 데이터흐름 그래프의 컴포넌트의 각각의 특성을 정의하기 위한 하나 이상의 파라미터를 수신하는 인터페이스를 제공하는 단계를 포함할 수 있다. 인터페이스는 다중 사용자 인터페이스 요소를 표시할 수 있는데, 사용자 인터페이스 요소 사이의 관계(relationship)는 데이터흐름 그래프의 컴포넌트 사이의 의존관계(dependency)를 기초로 한다. 상기 관계는 서버 상에 저장된 스펙(specification)에 의하여 정의될 수 있다.
제1 메시지를 수신하는 단계는 중간 데이터(intermediate data)에 대한 요청을 수신하는 단계를 포함하며, 객체를 생성하는 단계는, 데이터흐름 그래프의 일부를 컴파일(compile)하는 단계 및 데이터흐름 그래프의 컴파일된 부분을 실행하여 출력을 출력 데이터세트(output dataset)에 출력하는 단계를 포함할 수 있다. 객체를 생성하는 단계는, 중간 데이터를 생성하기 위해 필요한 컴포넌트의 제1 세트를 판단하는 단계; 컴포넌트의 제1 세트에 없는 데이터흐름 그래프의 컴포넌트를 비활성화하는 단계; 및 출력 데이터세트를 저장하기 위해 데이터흐름 그래프에 결합된 중간 데이터 싱크(intermediate data sink)를 생성하는 단계를 더 포함할 수 있다. 컴포넌트의 제1 세트를 판단하는 단계는, 데이터 소스를 중간 데이터 싱크에 연결하지 않는 링크를 식별하는 단계를 포함할 수 있다. 중간 데이터 싱크를 생성하는 단계는, 중간 데이터 싱크에 대한 링크가 병렬 데이터 흐름을 나타내는지 판단하는 단계; 및 중간 데이터 싱크로서 병렬 데이터 싱크(parallel data sink)를 생성하는 단계를 포함할 수 있다.
다른 측면에서, 일반적으로, 컴퓨터로 읽을 수 있는 매체는 클라이언트와 서버 사이의 통신을 지원하기 위한 컴퓨터 프로그램을 저장한다. 이 컴퓨터 프로그램은 컴퓨터로 하여금, 클라이언트로부터 제1 메시지를 수신하고; 제1 메시지에 대한 응답으로 객체를 생성하고; 제1 메시지에 대한 응답을 클라이언트에게 송신하고; 서버로부터 객체에 대한 변경사항을 수신하고; 객체에 대한 변경사항을 저장하고; 클라이언트로부터 제2 메시지를 수신하고; 제2 메시지에 대한 응답과 함께 저장된 변경사항을 클라이언트에게 송신하도록 하는 명령을 포함한다.
다른 측면에서, 일반적으로, 클라이언트와 서버 사이의 통신을 지원하기 위한 시스템은, 하나 이상의 프로세서를 포함하는 서버; 및 시스템에서 객체를 관리하도록 구성된 하나 이상의 프로세서를 포함하는 브리지를 포함한다. 이 관리 방법은, 클라이언트로부터 제1 메시지를 수신하는 단계; 제1 메시지에 대한 응답으로 객체를 생성하는 단계; 제1 메시지에 대한 응답을 클라이언트에게 송신하는 단계; 서버로부터 객체에 대한 변경사항을 수신하는 단계; 객체에 대한 변경사항을 저장하는 단계; 클라이언트로부터 제2 메시지를 수신하는 단계; 및 제2 메시지에 대한 응답과 함께 저장된 변경사항을 클라이언트에게 송신하는 단계를 포함한다.
다른 측면에서, 일반적으로, 클라이언트와 서버 사이의 통신을 지원하기 위한 시스템은, 데이터를 서비스하는 수단; 및 시스템에서 객체를 관리하는 수단을 포함한다. 이 관리 방법은, 클라이언트로부터 제1 메시지를 수신하는 단계; 제1 메시지에 대한 응답으로 객체를 생성하는 단계; 제1 메시지에 대한 응답을 클라이언트에게 송신하는 단계; 데이터를 서비스하는 수단으로부터 객체에 대한 변경사항을 수신하는 단계; 객체에 대한 변경사항을 저장하는 단계; 클라이언트로부터 제2 메시지를 수신하는 단계; 및 제2 메시지에 대한 응답과 함께 저장된 변경사항을 클라이언트에게 송신하는 단계를 포함한다.
이러한 측면들은 하나 이상의 다음 이점들을 포함할 수 있다. 클라이언트와 서버 사이의 통신이 단순화될 수 있다. 로버스트 클라이언트(robust client)를 위해 개발된 서버는 스크립팅 클라이언트(scripting client)를 지원하는 데 이용될 수 있다. 객체에 대한 변경사항이 추적될 수 있어 브리지(bridge)와 클라이언트 사이의 계속적인 연결을 반드시 유지하지 않아도 클라이언트가 업데이트될 수 있다.
그 외 본 발명의 특징 및 이점은 다음 설명 및 청구범위로부터 명백해질 것이다.
도 1은 브리지된(bridged) 클라이언트 서버 시스템의 개략도이다.
도 2는 클라이언트, 브리지(bridge) 및 서버 사이의 예시적인 통신 패턴의 개략도이다.
도 3 내지 도 5는 시스템에 의해 수행되는 예시적인 연산들의 흐름도이다.
도 6a는 예시적인 데이터흐름 그래프(dataflow graph)를 도시한 것이다.
도 6b 및 도 6c는 데이터흐름 그래프를 커스터마이징(customizing)하기 위한 인터페이스의 일부를 도시한 것이다.
도 7a는 결과를 인터페이스에 표시한 예를 나타낸 것이다.
도 7b는 예시적인 데이터흐름 그래프를 도시한 것이다.
도 8은 브리지된 클라이언트 서버 시스템의 개략도이다.
일부 도구는, 통상의 씬 클라이언트(thin client) 상에서 사용 가능한 기능에 비해, 브라우저를 이용하는 클라이언트 시스템 상에 더 많은 기능이 가능하도록 한다. 이러한 도구 중 일부는 서버 어플리케이션을 만드는 데 사용되는 프로그래밍 언어와 상이한 프로그래밍 언어로 구성된다. 도 1에 도시된 바와 같이, 상이한 기술을 사용하여 만들어진 클라이언트와 서버 사이의 통신을 용이하게 하기 위하여, 클라이언트 시스템과 서버 시스템 사이에 "브리지(bridge)" 통신 계층이 구성된다. 클라이언트(102a, 102b, 102c)는 각각 브리지(110)를 통하여, 서버(104)에서 실행되는 대응하는 서버 세션(116a, 116b, 116c)과 통신한다. 클라이언트(102a, 102b, 102c)로부터 브리지(110)로의 메시지는, 예컨대 HTTP(hypertext transport protocol)와 같은, 클라이언트(102a, 102b, 102c)의 무상태 프로토콜(stateless protocol)을 서버(104)에 의해 제공되는 프로토콜의 콜렉션(collection)으로 변환하는 메시지 프로세서(108)로 송신된다. 일부 방식에서, 변환을 자동화하기 위해 코드 생성(code generation)이 사용될 수 있다. 일부 방식에서, 각각의 클라이언트, 브리지(110) 및 서버(104)는 별개의 프로세서 또는 컴퓨터 시스템 상에서 실행되고, 네트워크를 통해 통신한다. 클라이언트(102a, 102b, 102c)는 서버(104)와의 통신을 위해 브리지(110)에 의존하는 씬 클라이언트일 수 있고, 서버(104)와 직접 통신이 가능한 다른 패트 클라이언트(fat client)(도시되지 않음)가 있을 수 있다.
일반적으로, 단일 클라이언트(102a)는 브리지(112)를 통하여 단일 클라이언트 세션(114a)에 연결된다. 브리지는 다중 클라이언트와 동시에 상호작용할 수 있다. 이어서, 단일 클라이언트 세션(114a)은 단일 서버 세션(116a)에 연결된다. 메시지 프로세서(108)는, 클라이언트로부터의 메시지에 대한 서버로부터의 응답을 포함하는, 교환되는 정보를 패키지(package)화 하기 위해 응답 객체를 생성하고, 그 응답 객체를 적절한 클라이언트(102a, 102b, 102c)에게 송신한다. 그러나, 일부 경우에는 다른 구성이 사용될 수 있다. 예를 들면, 성능을 향상시키기 위해 브리지(110)와의 통신 또는 서버(104)와의 통신은 로드 밸런서(load balancer)를 통하여 로드 밸런싱이 될 수 있다.
화살표(120a, 120b, 120c)로 표시한, 클라이언트(102a, 102b, 102c)와 브리지(110) 사이의 통신은 요청과 응답을 포함할 수 있다. 클라이언트(102a, 102b, 102c)는 브리지(110)에 요청을 하고 응답을 기다린다. 브리지(110)는 클라이언트(102a, 102b, 102c)에 대한 클라이언트 세션(114a, 114b, 114c)을 생성하거나, 또는, 만일 이미 하나의 세션이 존재한다면, 존재하는 세션을 사용할 수 있다. 브리지(110)는 들어오는 메시지를 서버(104)가 이해할 수 있는 프로토콜로 변환한다. RPC(Remote Procedure Call), 데이터(예컨대, "바이트 스트림" 및 "객체 스트림"), 및 이벤트(예컨대, 단방향 메시지)를 포함하는, 다양한 타입의 메시지가 브리지(110)와 서버(104) 사이의 메시지 스트림(124a, 124b, 124c)으로 전송될 수 있다.
일반적으로, RPC는 요청을 송신하고 응답을 수신함으로써 동작한다. 이 기본 패턴은 세 가지 변형을 가지고 있다. 암시적인 완료 또는 실패의 통지 없이 응답을 기다리거나 폴링(polling)을 하는 프로세스 스레드를 특징으로 하는 "독립형(standalone)" RPC; 성공 또는 실패를 나타내는 응답이 수신될 때까지 블로킹(blocking)을 하는 프로세스 스레드를 특징으로 하는 "동기식(synchronous)" RPC; 및 프로시저(procedure)가 완료된 경우 트리거(trigger)될 콜백(callback)을 등록하는 것을 특징으로 하는 "비동기식(asynchronous)" RPC가 있다. 일부 예에서, 특정 스레드에 의해 만들어진 RPC는 호출되는 순서로 실행되는 것이 보장된다.
브리지(110)와 서버(104) 사이의 통신은 RPC를 포함하는 메시지 스트림이 인터리빙(interleave)될 수 있도록 한다. 상이한 다중 RPC 메시지 스트림은 동시에 처리되어 메시지가 서로 중첩되며 브리지에 도달하도록 한다. 브리지(110)는 각각의 메시지를 독립적으로 받아서 프로세싱한다. 브리지(110)는 또한 취소 또는 중지 메시지가 송신되는 것을 허용한다. 중지 메시지를 수신한 경우, 브리지(110)는 현재 실행 중인 프로시저를 종료시키거나, 서버(104)에게 현재 실행 중인 프로시저를 종료시키도록 통지한다.
브리지(110)와 서버(104)는 데이터 스트림을 사용하여 통신할 수 있다. 데이터 스트림은 한 번에 전송될 수 있는 데이터의 양을 제한하기 위한 윈도우잉 프로토콜(windowing protocol)을 사용하는 논리적 바이트 스트림이다. 데이터 스트림은 RPC 요청 또는 응답 메시지, 일반 메시지 또는 진행 메시지의 일부로서 브리지(110)와 서버(104) 사이에 전달될 수 있다. 일단 데이터 스트림이 브리지 또는 서버로 전달되면, 흐름-제어 파라미터 뿐 아니라 스트림 객체를 수신한 커넥션 측에 대한 스트림을 식별하는 핸드셰이크(handshake) 프로시저에 의하여 데이터 스트림이 구성된다. 스트림을 통하여 전송되는 데이터의 양은 서버(104) 또는 브리지(110)에 의하여 구성된 제약사항에 기초하여 제한될 수 있다.
도 2를 참조하면, 일부 방식에서 클라이언트(202)는 서버(104) 상에서 실행되고 저장될 수 있는 프로세스 및 정보의 표현(representation)을 유지할 수 있다. 클라이언트(202)는 서버(104) 상의 프로세스 및 정보에 발생된 변경사항을 인식하도록 되어 있을 수 있다. 화살표(210, 212)로 표시된 바와 같이 클라이언트(202)는 브리지(110)와 통신할 수 있다. 일부 방식에서, 이러한 통신은 클라이언트(202)에 저장된 데이터의 표현과의 프로그램적인 상호작용(programmatic interaction)으로 인하여 이루어질 수 있다. 브리지(110)는, 요청을 수신하고, 프로세스 화살표(214, 216)로 표시된 바와 같이 서버(104)와 통신할 수 있다. 위에서 논의된 바와 같이, 브리지(110)와 서버(104) 사이의 통신은 클라이언트(202)와 브리지(110) 사이의 통신보다 더욱 견고한 프로토콜의 세트를 이용할 수 있다. 화살표(224)로 표시된 바와 같이, 서버(104)는 메시지가 현재 프로세싱되고 있지 않은 경우 기반 객체(underlying object)의 변경사항을 브리지(110)에 통지할 수 있다. 예를 들면, 브리지(110)는 주어진 객체의 인터레스트(interest)를 등록할 수 있고, 서버(104)는 객체가 변경되거나 접근된 경우 브리지(110)에 통지할 수 있다. 일부 방식에서, 클라이언트(202)와 브리지(110) 사이의 통신의 무상태적(stateless) 성질로 인해, 브리지(110)가 즉시 클라이언트(202)와 변경사항에 대해 통신하지 못한다. 이러한 상황에서, 정보는 브리지(110)에 저장되고 후속의 요청에 대한 응답의 일부로서 클라이언트(202)에게 전달될 수 있다. 다른 방식에서는, 클라이언트와 서버 사이에 데이터 스트림이 구성되어 계속적인 업데이트(update)가 가능해질 수 있다.
일부 방식에서, 클라이언트(202)는 서버(104) 상에 존재하지 않는 정보의 표현을 생성할 수 있다. 예컨대, 새로운 고객 객체(customer object)를 생성할 수 있다. 이렇게 새롭게 생성된 정보에는 임시 식별자(temporary identifier)가 제공될 수 있다. 클라이언트(202)는 그 후에 새로운 정보를 가지고 여러 가지 액션(action)을 수행할 수 있다. 일부 방식에서, 클라이언트(202)는 서버로부터 접근되는 기존의 정보 및 새로운 정보 모두를 이용하는 연산을 수행하며, 때때로 임시 식별자를 사용하여 기존의 정보를 업데이트할 수 있다. 클라이언트(202)는 서버(104)에 통지하기 이전에 정보를 사용하여 수많은 연산을 수행할 수 있다. 결국, 클라이언트(202)는 하나 이상의 요청을 브리지(110)에 송신하여 서버(104)에서 실행되는 연산을 요청할 수 있다. 브리지(110)는 서버(104) 상에 존재하지 않는 새로운 정보를 식별한다. 결과적으로 브리지는 서버 상에 정보를 표현하는 레코드를 생성하고 영구 식별자(permanent identifier)를 획득할 수 있다. 그런 다음, 브리지(110)는 메시지에 제공된 임시 식별자를 영구 식별자와 조화시킨다. 응답의 일부로서, 브리지(110)는 클라이언트(202)에게 영구 식별자에 대한 임시 식별자의 매핑(mapping)을 제공한다.
브리지(110) 상에서, 메시지 프로세서(108)에 의해 관리되는 메시지 서비스는 들어오는 메시지를 수신한다. 일부 방식에서, 메시지는 복수 개의 객체를 사용하여 수행될 수 있는 복수 개의 연산을 명시(specify)할 수 있다. 객체 중 일부는 새로운 것일 수 있지만 다른 일부는 이미 존재하는 기존의 것일 수 있다. 일반적으로 모든 객체는 식별자를 사용하여 식별될 것이다. 기존의 객체는 영구 식별자를 사용하여 식별되겠지만, 새로 생성된 객체는 임시 식별자를 사용하여 식별될 것이다. 메시지 서비스는 어떤 연산이 수행될 필요가 있는지를 식별한다.
브리지(110) 상의 객체 서비스는 객체 중 어느 것이 서버(104) 상에 이미 존재하는지를 식별하여 그것들을 검색한다. 새로운 정보에 대해서는, 데이터가 서버(104)에 추가되고 영구 식별자가 할당되고, 객체 서비스는 영구 식별자와 임시 식별자 사이의 매핑을 제공한다.
도 3을 참조하면, 흐름도(300)는 브리지(110)에 의해 수행되는 연산의 예시적인 방식을 나타낸다. 통상적으로 연산들은 브리지가 내재된 컴퓨터 시스템의 하나 이상의 프로세서에 의해 실행된다. 통상적으로는 단일의 전자 디바이스에 의해 실행되지만, 일부 구성에서 연산 실행은 둘 이상의 전자 디바이스(예컨대, 컴퓨터 시스템) 사이에 분산될 수 있다.
연산은 레퍼런스(reference)와 함께 메시지를 수신하는 연산(302)을 포함한다. 레퍼런스는 메모리에 저장된 객체에 대한 포인터이거나 레퍼런스는, 예컨대, 객체를 위치시키는 식별자에 대한 것일 수 있다. 메시지는 다중 객체를 참조할 수 있다. 레퍼런스는 별개의 리스트에 제공되거나, 메시지에 내포될 수 있다.
연산은 또한 객체의 존재 여부를 판단하기 위해 검사하는 연산(304)을 포함한다. 일부 경우에, 브리지는 객체가 존재하는지 문의하는 메시지를 서버에게 송신할 수 있다. 다른 경우에, 연산(304)은 다른 연산들과 결합될 수 있다. 예를 들면, 브리지는 서버로부터 객체를 인출(fetch)하기 위한 시도를 하는 연산(306)을 수행할 수 있다. 새로운 객체를 식별하기 위하여 특정 식별자가 사용될 수 있고, 예를 들면, 특정 범위의 키, 특정 키 접두사, 또는 메시지 상의 다른 필드는 객체가 새로운 것임을 나타낼 수 있다. 브리지는 이 연산을, 메시지에 의해 참조되는 객체 각각에 대해 한번씩, 여러 번 수행할 수 있다.
연산은 또한 객체를 인출하는 연산(306)을 포함한다. 일부 경우에, 브리지는 서버로부터의 메시지에서 식별된 객체를 인출할 수 있다. 다른 경우에, 브리지는 로컬 스토리지에 객체의 로컬 복사본을 캐싱(caching)할 수 있다. 메시지를 서버에게 송신하기 전에, 브리지는 상기 객체에 대한 그것의 로컬 스토리지를 검사하고, 그것을 발견한 경우 직접 클라이언트에게 응답을 리턴할 수 있다. 위에서 논의된 바와 같이, 객체의 로컬 복사본은 백 채널(back channel) 통신을 통하여 서버 상의 복사본과 동기화되어 유지될 수 있다. 일부 구현예에서, 브리지는 수 개의 서버와 상호작용할 수 있고, 라우팅 테이블을 사용하여 객체가 위치한 서버가 어떤 서버인지 판단할 수 있다.
연산은 또한 계류 중인 업데이트가 있는지 여부를 판단하기 위해 검사하는 연산(308)을 포함한다. 일부 방식에서, 브리지는 객체의 로컬 복사본에 가해진 변경사항을 캐싱할 수 있다. 이러한 변경사항은 특정 메모리 위치, 테이블 또는 기타 스토리지 디바이스에 저장될 수 있다. 변경사항은 객체 타입 및 주 키(primary key)에 기초하여 식별될 수 있거나, 객체는 전역 고유 식별자(globally unique identifier)에 기초하여 식별될 수 있다.
연산은 또한 업데이트를 결과에 추가하는 연산(310)을 포함한다. 객체에 대한 업데이트가 계류 중이라는 것을 일단 브리지가 식별하면, 브리지는 그 업데이트들의 리스트를 컴파일(compile)하여 클라이언트에게 전달될 응답 메시지에 첨부할 수 있다.
연산은 또한 객체를 생성하는 연산(312)을 포함한다. 일부 경우에, 만일 객체가 존재하지 않는다면 브리지는 새로운 객체를 생성한다. 이것은 일반적으로 메시지를 서버에게 송신함으로써 완수된다. 새로 생성된 객체는 일반적으로, 클라이언트가 사용하는 식별자와는 상이한, 새로운 식별자를 포함할 것이다.
연산은 또한 매핑을 생성하는 연산(314)을 포함한다. 예를 들면, 브리지는 객체를 생성할 때 제공된 영구 식별자와 클라이언트 식별자를 페어링(pairing)하는 매핑을 생성한다. 일단 클라이언트가 매핑을 인식하게 되면 클라이언트는 더 이상 그것의 원래 식별자를 사용하지 않고, 대신에 그 이후의 모든 통신에 대해 영구 식별자를 채택할 수 있다.
연산은 또한 매핑을 결과에 추가하는 연산(316)을 포함한다. 일부 방식에서, 클라이언트에게 매핑을 통신하기 위하여, 브리지는 매핑을 응답 메시지 상에 추가한다.
연산은 또한 메시지를 프로세싱하는 연산(318)을 포함한다. 일단 브리지가 필요한 모든 객체를 식별하고, 인출하고, 생성했으면, 브리지는 요청된 연산을 수행한다. 일부 구현예에서, 이러한 연산은 하나 이상의 메시지를 서버에게 송신하는 연산을 포함할 수 있다. 일부 구현예에서, 브리지에 의해 지원되는 메시지는 서버에 의해 지원되는 메시지와 동일하다. 어떤 경우든, 클라이언트와 서버 사이의 메시지의 변환을 지원하기 위해 필요한 프로그래밍은 자동으로 생성될 수 있다.
연산은 또한 클라이언트에게 결과를 송신하는 연산(320)을 포함한다. 예를 들면, 일단 메시지가 프로세싱되면 그 메시지의 결과는 임의의 업데이트 및 매핑과 결합되어 클라이언트에게 리턴된다.
도 4를 참조하면, 흐름도(400)는 브리지(110)에 의해 수행되는 연산의 다른 예시적인 방식을 나타낸다. 통상적으로 연산들은 브리지가 내재된 컴퓨터 시스템의 하나 이상의 프로세서에 의해 실행된다. 통상적으로는 단일의 전자 디바이스에 의해 실행되지만, 일부 구성에서 연산 실행은 둘 이상의 전자 디바이스(예컨대, 컴퓨터 시스템) 사이에 분산될 수 있다.
연산은 클라이언트로부터 제1 요청을 수신하는 연산(402)을 포함한다. 클라이언트로부터 수신된 요청은 서버로부터 하나 이상의 객체를 접근하거나 생성하도록 할 수 있다. 이러한 객체는 나중의 접근 성능을 향상시키기 위해서 브리지 상에 캐싱이 될 수 있다.
연산은 또한 결과를 클라이언트에게 송신하는 연산(404)을 포함한다. 일부 경우에, 요청에 대한 응답이 클라이언트에게 송신된다. 요청을 프로세싱하는 동안에 접근되거나 생성된 객체는 로컬 데이터 스토어, 예를 들면 메모리 또는 데이터베이스의 브리지 상에 유지된다. 일부 방식에서, 객체의 하나의 공통 복사본이 그 객체에 접근하기를 원하는 모든 클라이언트를 위하여 저장될 수 있다. 다른 방식에서는, 객체는 클라이언트 식별자와 함께 저장될 수 있어, 각각의 클라이언트는 브리지 상에 저장된 개별적인 복사본을 가진다. 다른 방식에서, 클라이언트가 객체를 수정하지 않는 한 공통의 복사본은 브리지 상에 저장되고, 이 경우에 변경사항을 가진 객체의 개별적인 버전이 변경사항과 함께 클라이언트에 대해 유지된다.
연산은 또한 객체에 대한 업데이트를 수신하는 연산(406)을 포함한다. 예를 들면, 브리지는 서버로부터 객체의 업데이트를 수신할 수 있다. 업데이트는 데이터 스트림 또는 이벤트 기반 통신을 통하여 서버로부터 송신될 수 있다.
연산은 또한 업데이트를 저장하는 연산(408)을 포함한다. 일부 방식에서, 객체에 대한 수신된 업데이트는 특정 위치에 저장될 수 있다. 일부 방식에서, 변경사항은 변경이 일어난 시간 뿐 아니라 변경된 값 및 필드의 리스트인 오디트 트레일(audit trail)로서 저장될 수 있다. 다른 방식에서, 변경사항은 브리지가 변경의 통지를 받은 시점에 기초하여 추적될 수 있다. 또 다른 방식에서는, 단지 하나의 값이 변경된 경우라도 전체 객체가 업데이트 될 수 있다. 연산은 또한, 상기 브리지에 의하여 역시 처리되는, 클라이언트로부터의 임의의 개수의 추가적인 요청을 수신하는 연산을 포함할 수 있다. 객체에 대한 업데이트는 이러한 요청들의 결과를 클라이언트에게 다시 제공하는 때에 포함될 수 있다. 본 구현예는 클라이언트로부터 제2 요청을 수신하는 연산(410) 및 업데이트를 결과에 추가하는 연산(412)을 포함한다. 브리지는 서버 상에 저장된 객체에 대한 서버로부터 수신된 변경사항을, 클라이언트에게 송신되는 응답 메시지 상에 추가할 수 있다. 일부 경우에, 브리지는 또한 클라이언트 메시지를 프로세싱한 결과로서 객체에 대해 발생한 임의의 변경사항을 추가할 수도 있다. 연산은 또한 결과를 클라이언트에게 송신하는 연산(414)을 포함한다.
도 5를 참조하면, 흐름도(500)는 브리지(110)와 상호작용하는 클라이언트(102a, 102b, 102c)에 의해 수행되는 연산의 다른 예시적인 방식을 나타낸다. 통상적으로 연산들은 클라이언트가 내재된 컴퓨터 시스템의 하나 이상의 프로세서에 의해 실행된다. 통상적으로는 단일의 전자 디바이스에 의해 실행되지만, 일부 구성에서 연산 실행은 둘 이상의 전자 디바이스(예컨대, 컴퓨터 시스템) 사이에 분산될 수 있다.
연산은 메시지를 브리지에 송신하는 연산(502)을 포함한다. 예를 들면, 클라이언트는 메시지를 브리지에 송신하여 서버 상에 저장된 객체와 관련하여 액션이 수행되도록 요청할 수 있다.
연산은 또한 브리지로부터 응답을 수신하는 연산(504)을 포함할 수 있다. 예를 들면, 클라이언트는 요청한 액션의 수행 결과를 포함하는 응답을 브리지로부터 수신한다.
연산은 또한 매핑에 대한 검사를 하는 연산(506)을 포함한다. 일부 경우에, 클라이언트가 브리지로부터 응답을 수신한 경우, 클라이언트는 업데이트된 매핑이 메시지에 첨부되어 있는지 검사한다.
만일 업데이트된 매핑이 있다면, 연산은 레퍼런스를 업데이트하는 연산(508)을 포함한다. 예를 들면, 클라이언트는, 임시 식별자를 가지고 생성되었던 새로운 객체를 업데이트하여, 객체 생성시에 할당된 임시 식별자를 서버가 할당한 영구 식별자로 대체한다.
연산은 또한 객체 업데이트에 대한 검사를 하는 연산(510)을 포함한다. 예를 들면, 클라이언트는 임의의 존재하는 객체가 서버에서 업데이트 되었는지 보기 위해 응답을 검사한다. 만일 그렇다면, 연산은 클라이언트에서 객체를 업데이트하는 연산(512)을 포함한다. 예를 들면, 클라이언트는 메시지에 포함된 변경사항을 현재 클라이언트에 저장되어 있는 객체의 임의의 로컬 복사본에 적용할 수 있다.
연산은 또한 결과를 프로세싱하는 연산(514)을 포함한다. 예를 들면, 서버로부터의 응답 메시지는, 클라이언트로 하여금 결과에 기초하여 미리 정해진 액션을 취하도록 할 수 있는 정보를 클라이언트에게 전달할 수 있다. 응답 메시지는 요청된 연산이 성공적인지 실패했는지 여부를 나타낼 수 있다. 응답 메시지는 또한 요청과 연관된 객체 및 기타 정보를 포함할 수 있다. 예를 들면, 특정 고객 객체에 접근하기 위한 요청이 있으면 그 고객 객체가 응답으로 리턴될 수 있다.
브리지를 이용하는 시스템의 일례로, 비기술적 사용자가 파라미터화 된(parameterized) 데이터흐름 그래프를 구성할 수 있게 허용하는 사용자 인터페이스를 생성하는 시스템을 들 수 있다. 데이터흐름 그래프는 하나 이상의 데이터 소스로부터의 데이터를 프로세싱하는 데이터흐름 그래프 실행 환경 내에서 실행되는 컴퓨터 프로그램이다. 데이터 소스로부터의 데이터는 데이터흐름 그래프에 따라 다루어지고 프로세싱되며, 하나 이상의 데이터 싱크(data sink)로 내보내어진다(export). 데이터 소스 및 싱크는, 예를 들면, 파일, 데이터베이스, 데이터 스트림 또는 큐를 포함할 수 있다. 데이터흐름 그래프는, 하나 이상의 데이터 입력으로부터의 데이터를 프로세싱하고, 하나 이상의 데이터 출력에 데이터를 제공하기 위한 코드를 각각 포함하는 데이터 프로세싱 컴포넌트를 나타내는 노드 및 데이터 소스 및/또는 싱크에 접근하기 위한 데이터셋(dataset) 객체를 나타내는 노드를 포함하는 방향 그래프로 표시된다. 노드들은 컴포넌트들 사이의 데이터의 흐름을 표시하는, 데이터 소스에서 시작하여 데이터 싱크에서 종결되는, 방향 링크에 의해 연결되어 있다. 업스트림(upstream) 컴포넌트의 데이터 출력 포트는 다운스트림(downstream) 컴포넌트의 데이터 입력 포트에 연결되어 있다. 데이터흐름 그래프는 데이터셋 객체에 의해 표시되는 여러 가지 데이터 싱크 및 여러 가지 데이터 소스에 대해 재사용될 수 있다. 데이터흐름 그래프를 구현하기 위해 사용되는 데이터 구조 및 프로그램 코드는, 예컨대 다른 소스 및 싱크가 손쉽게 대체될 수 있도록 파라미터화 됨으로써, 다수의 상이한 구성을 지원할 수 있다. 또한, 일부 방식에서, 데이터흐름 그래프의 흐름은 파라미터를 사용함으로써 바뀔 수 있어서, 컴포넌트 또는 일련의 컴포넌트들이 바이패스(bypass)될 수 있다.
실행 환경은, UNIX 운영체제와 같은, 적절한 운영체제의 제어 하에 하나 이상의 범용 컴퓨터 상에서 호스팅(host)될 수 있다. 예를 들면, 실행 환경은, 다중 CPU(central processing unit)를, 로컬로 사용하거나(예컨대, SMP 컴퓨터와 같은 다중프로세서 시스템), 로컬 분산형으로(locally distributed) 사용하거나(예컨대, 클러스터 또는 MPP로서 결합되는 다중 프로세서), 원격으로 사용하거나, 원격 분산형으로(remotely distributed) 사용하거나(예컨대, LAN(local area network) 및/또는 WAN(wide-area network)을 통하여 결합되는 다중 프로세서), 또는 이들의 임의의 조합으로 사용하는 컴퓨터 시스템의 구성을 포함하는 다중-노드 병렬 컴퓨팅 환경을 포함할 수 있다.
데이터흐름 그래프의 구성은 일부 경우에는 본질적으로 고도로 기술적일 수 있다. 그래프는 특정 비지니스 엔드(business end)를 달성하기 위해 작성되지만, 그래프의 기반 구조 및 구성은 기술적 고려사항들을 기초로 판단된다. 예를 들면, 그래프 컴포넌트는 재사용성을 극대화도록, 또는 병렬 프로세싱을 지원하도록 선택될 수 있다. 한편, 그래프가 어떻게, 그리고 어디에 사용되는지의 문제는 대부분 비지니스 결정의 문제일 수 있다. 파라미터화 된 데이터흐름 그래프와 연관된 일부 파라미터는, 비지니스 사용자가 구현과 관련된 복잡한 기술을 이해하지 못해도 데이터흐름 그래프를 커스터마이징(customizing) 할 수 있도록 하기 위해 사용될 수 있다. 파라미터화 된 데이터흐름 그래프는 커스터마이징을 단순화시키고 재사용이 용이하도록 한다.
데이터흐름 그래프를 구성하기 위한 파라미터 값의 식별을 위한 인터페이스가 클라이언트 머신 상에 제공될 수 있다. 일부 구현예에서, 클라이언트는, 파라미터 인터페이스를 제공하는 클라이언트 상의 웹 브라우저를 사용하고, 클라이언트 측 프로세싱이 일부 가능하도록 하는 스크립팅 언어를 사용하여, 서버 상에서 실행 중인 개발 환경에 접근할 수 있다. 스크립팅 언어는 서버와 통신하여 파라미터를 업데이트하고 기타 필요한 연산을 수행할 수 있다. 이러한 통신은, 구성되는 그래프에 대한 객체 및 연관된 파라미터 값를 저장하고 있는 개발 환경을 실행하는 서버와 클라이언트 사이의 통신을 변환하는 브리지 머신을 통해 일어난다.
예를 들어, 도 6a를 참조하면 데이터흐름 그래프(602)는 데이터 소스(606a, 606b), 컴포넌트(608a, 608b, 608c, 610) 및 데이터 싱크(612)를 포함할 수 있다. 소스, 컴포넌트 및 싱크 각각은 파라미터(604a, 604b, 604c, 604d, 604e, 604f, 604g)의 세트와 연관될 수 있다. 하나의 소스, 컴포넌트 또는 싱크에 대한 파라미터는 다른 소스, 컴포넌트 또는 싱크에 대한 파라미터를 평가하기 위하여 사용될 수 있다. 소스(606a, 606b)는 컴포넌트(608a, 608c)의 입력 포트에 연결된다. 컴포넌트(608a)의 출력 포트는 컴포넌트(608b)의 입력 포트에 연결된다. 컴포넌트(610)의 출력 포트는 데이터 싱크(612)에 연결된다. 소스, 컴포넌트 및 싱크 사이의 연결이 데이터 흐름을 정의한다.
데이터 소스, 컴포넌트 또는 싱크의 일부는 그래프의 일부 성질을 정의할 수 있는 입력 파라미터(604a, 604b, 604c, 604d, 604e, 604f, 604g)를 가질 수 있다. 예를 들면, 파라미터는 물리적 디스크 상의 데이터 소스 또는 싱크의 위치를 정의할 수 있다. 파라미터는 또한 컴포넌트의 성질을 정의할 수 있다. 예를 들면, 파라미터는 정렬 컴포넌트가 입력을 정렬하는 방법(예컨대, 우편 번호에 의한 정렬)을 정의할 수 있다. 일부 방식에서, 하나의 파라미터의 값은 다른 파라미터의 값에 의존적일 수 있다. 예를 들면, 소스(606a)는 특정 디렉터리 내의 파일에 저장될 수 있다. 파라미터 세트(604a)는 "DIRECTORY"로 지칭되는 파라미터 및 "FILENAME"으로 지칭되는 다른 파라미터를 포함할 수 있다. 이 경우에 FILENAME 파라미터는 DIRECTORY 파라미터에 의존적일 것이다. (예를 들면, DIRECTORY는 "/usr/local/"이고 FILENAME은 "/usr/local/input.dat"일 수 있다.) 파라미터는 또한 다른 컴포넌트에 대한 파라미터에도 의존적일 수 있다. 예를 들면, 싱크(612)의 물리적 위치는 소스(606a)의 물리적 위치에 의존적일 수 있다. 본 구현예에서, 싱크(612)는 소스(606a)의 DIRECTORY 파라미터에 의존적인 FILENAME 파라미터를 포함하는 파라미터의 세트(604g)를 포함한다. (예를 들면, 세트(604g)의 FILENAME 파라미터는 "/usr/local/output.dat"일 수 있고, "/usr/local/"의 값은 세트(604a)의 DIRECTORY 파라미터로부터 얻어진 것이다.)
클라이언트 상의 사용자 인터페이스 내에서, 파라미터의 세트의 파라미터(604a, 604b, 604c, 604d, 604e, 604f, 604g)는 결합되어, 기술적 고려사항보다는 비지니스적 고려사항을 반영하여, 사용자와 상호작용하기 위한 여러 그룹으로 재구성될 수 있다. 사용자 입력에 기초하여 파라미터에 대한 값을 수신하는 사용자 인터페이스는, 서버 상의 개발 환경의 측면에 의해 반드시 제한될 필요가 없는 유연한 방식으로 파라미터 간 관계에 따라 여러 파라미터를 표시할 수 있다. 예를 들어, 도 6b를 참조하면, 사용자 인터페이스는 파라미터들 사이의 의존성을 나타내는 관계에 의해 함께 표시되는 아이콘(icon)으로 제공될 수 있다. 본 구현예에서, 파라미터는, 제1 소스 데이터세트에 대한 파라미터를 나타내는 제1 소스 아이콘(624), 제2 소스 데이터세트에 대한 파라미터를 나타내는 제2 소스 아이콘(626), 싱크 데이터세트에 대한 파라미터를 나타내는 싱크 아이콘(630) 및, 구성되는 데이터흐름 그래프의 하나 이상의 컴포넌트에 대한 파라미터를 나타내어 소스 데이터세트 및 싱크 데이터세트에 대한 파라미터들의 관계를 보여주는 변환 아이콘(628)으로 표현되는, 제1 그룹의 파라미터로 나누어진다. 이러한 파라미터의 그룹화는, 사용자가 클라이언트 상의 사용자 인터페이스 내의 데이터흐름 그래프로부터의 파라미터와 상호작용하는 방법 및 아이콘(624, 626, 628, 630)과 같은 사용자 인터페이스 요소가 서로 관련되고 사용자 인터페이스에 제공되기 위해 배치되는 방법을 정의하는, 저장된 스펙(622)에 기초하여 행해질 수 있다. 일부 구현예에서, 이러한 스펙은 XML 문서이다. 스펙은 또한 데이터흐름 그래프 컴포넌트를 식별할 수 있고, 아래에 자세히 설명된 바와 같이, 샘플 데이터를 보여주는 것과 같은, 사용자가 그래프를 구성하는 동안 특정 기능이 수행되기 위한 특정 컴포넌트를 식별할 수 있다.
일부 경우에, 스펙은 파라미터가 표시되는 방법에 대한 명령을 포함할 수 있다. 예를 들어, 도 6b 및 도 6c를 참조하면, 스펙(622)은, 소스 데이터세트 아이콘(624)의 상호작용에 대한 응답으로, 어떤 파라미터는 사용자가 내용을 입력할 수 있는 텍스트 박스(702)로 표시되어야 하지만, 다른 파라미터는 값이 이미 입력된 드롭 다운 리스트(704)(예컨대, 스펙에서 제공되는 값들의 리스트 또는 룩업 테이블(lookup table)에서 제공되는 값들)이어야 하며, 또 다른 파라미터는 라디오 버튼(706)으로 표시될 수 있다는 것 등을 나타낼 수 있다. 따라서, 스펙은 비지니스적 사용자 및/또는 비기술적 사용자에 맞추어질 수 있는 방식으로 데이터흐름 그래프를 커스터마이징되도록 파라미터가 사용자에게 제공되는 방법에 있어서 유연성을 제공한다. 예를 들면, 사용자 인터페이스는 데이터베이스에 대해 실행된 쿼리(예컨대, SQL 쿼리)에 기초한 값 또는 파일 시스템에 위치한 파일로부터의 값들로 채워질 수 있다. 일부 경우에, 스펙은 사용자가 어플리케이션에 대한 데이터 소스를 선택할 수 있도록 할 수 있다. 예를 들면, 스펙은 사용자가 데이터베이스, 테이블 또는 파일을 선택하는 것을 허용할 수 있다. 하나 이상의 파라미터가 그룹으로 함께 표시될 수 있다. 예를 들면, 스펙은 파라미터가 사용자 인터페이스 상의 박스에 함께 제공될 것임을 설명할 수 있다. 일부 구현예에서, 사용자 인터페이스는 열과 행으로 나누어질 수 있다. 스펙은 파라미터가 표시될 사용자 인터페이스의 섹션에 기초하여 파라미터 또는 파라미터 콜렉션의 위치를 식별할 수 있다.
일부 경우에, 스펙은 사용자가, 컴포넌트에 의해 프로세싱되는 필드를 선택할 수 있는 기능을 포함할 수 있다. 사용 가능한 필드는 사용자 인터페이스에 표시될 수 있고 사용자는 파라미터 세트에 포함될 하나 이상의 필드를 선택할 수 있다. 스펙은 특정 필드에 대한 값을 선택(예컨대, 주(state)를 "FL"로 선택)함으로써 사용자가 데이터세트를 필터링하는 것이 가능하도록 할 수 있다.
일부 경우에, 스펙은 비지니스 사용자가 파라미터 값을 채우는 순서를 제약할 수 있다. 점선으로 표시된, 싱크(630)와 연관된 파라미터는 사용자가 몇 가지 미리 정의된 조건에 부합할 때까지 사용자에게 보여지지 않을 수 있다. 예를 들면, 사용자는 데이터 싱크 파라미터 세트가 나타나기 전에 특정 파라미터 값을 제공해야 하거나 파라미터의 세트를 채워야 할 수 있다. 파라미터는 또한, 어떤 값이 파라미터에 할당되어야 함을 지시하면서 필요에 따라 정의될 수 있다.
일부 경우에, 스펙은 사용자의 역할에 기초하여 다른 파라미터를 제공할 수 있다. 예를 들면, 템플릿(template)은 사용자가 "관리자(manager)" 역할을 가지지 않는다면 텍스트 입력 콘트롤 및 링크의 그룹을 숨기거나 비활성화시킬 수 있다. 일부 구현예에서, 시스템은 파라미터 값으로 구성된 바와 같이 사용자 인터페이스 내로부터 서버 상의 그래프의 실행을 개시함으로써 사용자가 그래프를 통하여 샘플 데이터를 실행하는 것을 허용할 수 있고, 도 7a에 나타난 바와 같이 사용자 인터페이스를 통해 사용자에게 샘플 실행의 결과(702)를 표시할 수 있다. 결과(702)는, 결과(702)에 포함된 데이터의 타입에 따라, 적절한 브라우저 또는 사용자 인터페이스의 편집기 내에 보여질 수 있다. 본 구현예에서, 결과(702)는 샘플 데이터 내의 레코드에 대응하는 행 및 여러 필드에 대한 레코드 내의 값에 대응하는 열을 포함한다. 테스트 데이터를 이용한 서버 상에서의 그래프의 실행은 클라이언트 측에서의 임의의 여러 종류의 액션에 대한 응답, 예컨대, 사용자가 어떤 파라미터에 대한 어떤 값을 입력한 것에 대한 응답으로 트리거될 수 있다.
도 7b를 참조하면, 일부 구현예에서, 시스템은 감시자(watcher)를 추가함으로써 시스템을 통과하는 데이터를 캡처할 수 있다. 예를 들면, 데이터흐름 그래프(710)는 데이터 소스(712, 726), 컴포넌트(714, 720, 728 및 730), 및 데이터 싱크(732)를 포함한다. 사용자는 데이터흐름 그래프의 임의의 링크에 감시포인트(watchpoint)를 추가할 수 있다. 예를 들면 사용자는 컴포넌트(720)와 컴포넌트(730) 사이의 링크에 감시포인트(722)를 추가할 수 있다. 시스템은 감시포인트(722)를 감지하여, 컴포넌트(720)로부터, 감시포인트에 대한 데이터를 저장하는 중간 데이터 싱크(724)로의 데이터의 흐름을 재지시하도록 그래프의 수정된 버전을 생성한다. 일부 구현예에서, 감시포인트(722)는 데이터가 중간의 데이터 싱크(724) 및 데이터 컴포넌트(730)로 전달되도록 하는 리플리케이터(replicator)로서 구현된다.
일부 구현예에서, 시스템은 감시포인트(722)에 대한 데이터를 생성하기 위하여 컴포넌트(728, 730) 및 데이터 소스(726)가 필요하지 않다고 판단한다. 시스템은 시스템 자원을 절약하기 위하여 이러한 불필요한 컴포넌트를 비활성화시키도록 선택할 수 있다. 또한, 불필요한 컴포넌트를 비활성화하는 것은, 사용되지 않는 컴포넌트(예컨대, 컴포넌트(728))의 다운스트림 컴포넌트(예컨대, 컴포넌트(730))는 완전히 구현되거나 구성되지는 않았을 수 있다는 점에서, 개발을 단순화하는 이점을 더 가질 수 있다. 이러한 컴포넌트를 비활성화함에 있어서, 시스템은, 전체 그래프를 완전히 구성하기 위해서 필요한 디벨로퍼(developer)가 없더라도 그래프의 일부를 실행할 수 있다.
일부 구현예에서, 시스템은 감시포인트에 대한 데이터를 생산하는데 필요하지 않은 링크를 식별한다. 예를 들면, 시스템은 임의의 소스(예컨대, 데이터 소스(712))를 중간 데이터 싱크(724)에 연결하지 않는 싱크를 식별할 수 있다. 이러한 링크에 데이터를 공급하는 컴포넌트는 제거될 수 있다.
일부 구현예에서, 시스템은 이전의 감시포인트로부터의 데이터를 이용하여 다음의 감시포인트에 대한 데이터를 판단할 수 있다. 예를 들면, 그래프의 이전 실행에서, 디벨로퍼는 감시포인트(716)를 컴포넌트(714)와 컴포넌트(720) 사이의 링크에 추가하였다. 감시포인트(716)에 대한 데이터는 데이터 싱크(718)에 저장되었다. 만일 후속의 실행에서 디벨로퍼가 데이터 소스(712) 또는 데이터 컴포넌트(714)를 변경하거나 수정하지 않고 감시포인트(722)를 추가한다면, 시스템은 데이터 싱크(718)의 데이터를 컴포넌트(720)에 대한 데이터 소스로서 사용할 수 있고, 결국 시스템은 데이터 소스(712) 및 컴포넌트(714)를 비활성화 할 수 있다.
시스템은 데이터 흐름이 일반 흐름(normal flow)인지 병렬 흐름(parallel flow)인지 감지할 수 있다. 병렬 흐름은 파티션(partition)된 데이터 흐름이다. 병렬 흐름 상의 감시포인트는 각각의 데이터의 흐름에 대해 개별적인 데이터 싱크를 사용한다. 예를 들어, 6개의 개별적인 파티션으로 파티션된 병렬 데이터 흐름은 6개의 개별적인 데이터 싱크에 감시 데이터를 생성할 것이다.
그래프는 단계(phase)로 나누어질 수 있다. 초기 단계의 컴포넌트는 후기 단계의 컴포넌트보다 먼저 모든 실행을 완료한다. 예를 들면, 컴포넌트(730)가 컴포넌트(728)보다 후기 단계에 있다면, 컴포넌트(728)로부터의 데이터 흐름은 컴포넌트(728)가 모든 데이터에 대한 프로세싱을 완료할 때까지 캐싱될 것이다. 일단 컴포넌트(728)가 모든 데이터의 프로세싱을 완료하면, 컴포넌트(730)가 데이터를 프로세싱하기 시작할 것이다. 일부 시나리오에서, 데이터흐름 그래프(710)는, 컴포넌트(734)와 같은, 다른 컴포넌트에 연결되어 있지 않은 컴포넌트, 예컨대, 룩업 테이블을 포함한다. 컴포넌트가 감시포인트보다 나중 단계이면 연결되지 않은 컴포넌트는 데이터흐름 그래프에서 제외되고, 컴포넌트가 감시포인트와 동일한 단계 또는 그 이전 단계에 있으면 그래프에 포함된다.
도 8을 참조하면, 클라이언트 시스템(802)은 위에서 설명된 사용자 인터페이스(804)를 사용자에게 표시할 수 있다. 사용자 인터페이스(804)를 통한 사용자와의 상호작용에 기초하여 생성된 파라미터 세트(814)는 서버(808) 상에 저장될 수 있다. 결과적으로, 사용자 인터페이스(804)에 의해 생성된 변경사항은 브리지(806)를 통해 클라이언트(802)로부터 서버(808)에게 송신된다. 화살표(820)로 표시된 것처럼, 클라이언트(802)는, 메시지를, 어떤 포맷, 예컨대 SOAP(simple object access protocol)를 사용하여 송신되는 메시지로서 브리지(806)에 송신한다. 브리지(806)는 메시지를 새로운 포맷으로 변환하고, 필요에 따라 서버(808)와 클라이언트 세션을 시작한다. 화살표(822)로 표시된 것처럼, 브리지(806)는 메시지를 서버(808)가 이해할 수 있는 포맷, 예컨대 COM+ 메시지로서 서버(808)로 송신한다. 서버(808)는 메시지를 수신하고 파라미터 세트를 업데이트한다. 화살표(824)로 표시된 것처럼, 서버(808)는 클라이언트(802)에 의해 수신된 입력으로 인해 파라미터 세트에 발생된 임의의 변경사항을 포함하는 답변을 브리지(806)로 송신한다. 브리지(806)는 메시지를 디코딩하고, 클라이언트(802)에 대한 답변 메시지를 생성한다. 화살표(826)로 표시된 것처럼, 브리지(806)는 답변 메시지를 클라이언트(802)에게 송신한다. 클라이언트(802)는 사용자 인터페이스(804)를 업데이트하여, 위에서 설명된 바와 같은 사전조건의 실패(the failure of a precondition)로 인해 이전에 숨겨진 임의의 컴포넌트를 표시하는 것을 포함하여 변경사항을 반영한다.
사용자는 또한 사용자가, 완전하거나 또는 완전하지 않을 수 있는, 현재 파라미터의 세트에 기초한 샘플 데이터를 사용하여 구성되는 그래프를 실행하기를 원한다는 것을 클라이언트(802)에게 나타낼 수 있다. 위에서와 같이, 클라이언트(802)는 브리지(806)를 통하여 메시지를 서버(808)에게 송신한다. 서버(808)는 파라미터 세트에 대한 모든 변경사항을 적용하고, 서버 상에서 실행 중인 프로세스(816)는 데이터흐름 그래프를 컴파일한다. 서버는, 샘플 데이터세트(810, 812)로부터의 데이터를 받아들이는, 컴파일된 데이터흐름 그래프를 실행한다. 실행된 데이터흐름 그래프는 요청된 출력을 출력 데이터세트(818)에 생성한다. 데이터흐름 그래프의 출력은 클라이언트(802)가 요청한 중간 데이터이고, 반드시 데이터흐름 그래프의 완전한 실행에 의해 생성된 데이터일 필요는 없다.
일부 구현예에서, 예를 들면, 만일 완전 그래프의 컴파일을 가능하게 하기에 불충분한 파라미터가 정의된다거나, 만일 클라이언트(802)가 클라이언트(802)에 의해 구성되는 데이터흐름 그래프 내의 특정 링크에 대한 중간 데이터를 보기를 요청한다면, 서버(808)는 데이터흐름 그래프의 서브세트(subset)를 컴파일할 수 있다. 컴파일 할 데이터흐름 그래프의 서브세트를 판단하고 서버를 실행하는 것은, 감시포인트에 대해서가 아니라 구성되는 링크에 대한 중간 데이터 싱크가 추가되는, 도 7b와 관련하여 위에서 설명된 프로세스를 사용할 수 있다.
위에서 설명된 바와 같이, 결과 데이터는 브리지(806)를 통해 서버(808)로부터 클라이언트(802)에게 송신된다.
위에서 설명된 객체 관리(object management) 방법은 컴퓨터 상에서의 실행을 위한 소프트웨어를 이용하여 구현될 수 있다. 예를 들어, 소프트웨어는, 각각이 적어도 하나의 프로세서, 적어도 하나의 데이터 저장 시스템(휘발성 및 비휘발성 메모리 및/또는 저장 요소를 포함함), 적어도 하나의 입력 장치 또는 포트, 및 적어도 하나의 출력 장치 또는 포트를 포함하는 하나 이상의 프로그램된 또는 프로그램 가능한 컴퓨터 시스템(분배된, 클라이언트/서버 또는 그리드와 같이 다양한 아키텍처일 수 있음) 상에서 실행하는 하나 이상의 컴퓨터 프로그램으로 프로시저를 형성한다. 소프트웨어는, 예를 들어, 연산 그래프들의 디자인 및 구성과 관련된 다른 서비스들을 제공하는 더 큰 프로그램의 하나 이상의 모듈을 형성할 수 있다. 그래프의 노드들 및 요소들은 컴퓨터 판독가능 매체 내에 저장된 데이터 구조들로서 또는 데이터 집적소 내에 저장된 데이터 모델에 부합되는 다른 조직된 데이터로서 구현될 수 있다.
소프트웨어는, CD-ROM과 같은, 범용 또는 특수 목적의 프로그램 가능한 컴퓨터에 의해 판독 가능하거나 실행되는 컴퓨터에 대한 네트워크의 통신 매체를 통해 전송되는(전파된 신호로 인코딩된) 저장 매체에 제공될 수 있다. 모든 기능들은, 특수 목적 컴퓨터 또는 코-프로세서들과 같은 특수 목적 하드웨어를 이용하여 수행될 수 있다. 소프트웨어는, 소프트웨어에 의해 지정된 연산의 상이한 부분들이 상이한 컴퓨터들에 의해 수행되는 분배된 방법으로 구현될 수 있다. 각각의 그러한 컴퓨터 프로그램은, 저장 매체 또는 장치가 본 명세서에 설명된 프로시저들을 수행하기 위한 컴퓨터 시스템에 의해 판독될 때 컴퓨터를 구성하고 작동시키기 위한, 범용 또는 특수 목적의 프로그램 가능한 컴퓨터에 의해 판독 가능한 저장 매체 또는 장치(예컨대, 고체 상태 메모리 또는 매체, 또는 자기 또는 광학 매체)에 우선적으로 저장 또는 다운로드된다. 본 발명의 시스템은, 컴퓨터 프로그램으로 구성된 컴퓨터 판독가능 저장 매체로서 구현되는 것으로 고려될 수도 있고, 이러한 경우 프로그램으로 구성된 저장 매체는 컴퓨터 시스템으로 하여금 본 명세서에 설명된 기능들을 수행하도록 특정된 미리 정해진 방법으로 동작하도록 한다.
본원 발명에 대한 여러 가지 구현예들이 설명되었다. 그럼에도 불구하고, 본원 발명의 핵심 및 범위로부터 벗어남이 없이도 다양한 수정사항들이 가능할 수 있는 것으로 이해될 것이다. 예를 들어, 상기 설명된 단계들 중 일부는 순서에 비의존적이고, 그러므로 설명된 순서와 상이한 순서로 수행될 수 있다.
전술한 설명은 본원 발명의 설명을 위한 것일 뿐이고, 첨부된 청구범위의 범위에 의해 정해지는 본원 발명의 범위를 한정하지 않는 것으로 이해되어야 한다. 예를 들어, 전술한 기능 단계들은 전체 프로세싱에 실질적으로 영향을 미치지 않고서도 상이한 순서로 수행될 수 있다. 다른 구현예들은 이하의 청구범위의 범위에 포함된다.
102a, 102b, 102c, 202, 802: 클라이언트
104, 808: 서버
108: 메시지 프로세서
110, 806: 브리지
114a, 114b, 114c: 클라이언트 세션
116a, 116b, 116c: 서버 세션
604a, 604b, 604c, 604d, 604e, 604f, 604g: 파라미터
606a, 606b: 소스
608a, 608b, 608c, 610, 714, 720, 728, 730, 734: 컴포넌트
612: 데이터 싱크
622: 스펙
804: 사용자 인터페이스
710: 데이터흐름 그래프
712, 726: 데이터 소스
716, 722: 감시 포인트
718, 724, 732: 데이터 싱크
810, 812: 샘플 데이터 세트
814: 파라미터 세트
816: 프로세스
818: 출력 데이터 세트

Claims (50)

  1. 클라이언트와 서버 사이의 통신을 지원하며 컴퓨터 브리지에 의해 수행되는 방법으로서,
    데이터흐름 그래프(dataflow graph)의 컴포넌트를 나타내는 다중 노드 및 컴포넌트들간 데이터의 흐름을 나타내는 노드들 사이의 링크를 포함하는 데이터흐름 그래프의 컴포넌트의 각각의 특성을 정의하기 위한 하나 이상의 파라미터를 수신하는 인터페이스를 제공하는 단계;
    상기 컴퓨터 브리지에 의해, 클라이언트로부터 네트워크를 통해 제1 메시지를 수신하는 단계;
    상기 제1 메시지에 대한 응답으로 객체를 생성하는 단계;
    상기 제1 메시지에 대한 응답 메시지를 상기 클라이언트에게 송신하는 단계;
    서버로부터 네트워크를 통해 상기 객체에 대한 변경사항(change)을 수신하는 단계;
    상기 객체에 대한 변경사항을 저장하는 단계;
    상기 클라이언트로부터 제2 메시지를 수신하는 단계; 및
    상기 제2 메시지에 대한 응답 메시지와 함께 상기 저장된 변경사항을 상기 클라이언트에게 송신하는 단계
    를 포함하고,
    상기 객체는 상기 데이터흐름 그래프의 일부에 대응하고,
    상기 인터페이스는 다중 사용자 인터페이스 요소를 상기 데이터흐름 그래프의 컴포넌트들 사이의 의존관계(dependency)에 기초한 상기 사용자 인터페이스 요소 사이의 관계(relationship)로 표시하고,
    상기 관계는 상기 서버 상에 저장된 스펙(specification)에 의하여 정의되는,
    방법.
  2. 제1항에 있어서,
    상기 변경사항을 저장하는 단계는 상기 변경사항의 로그(log)를 생성하는 단계를 포함하고,
    상기 저장된 변경사항을 상기 클라이언트에게 송신하는 단계는 상기 변경사항의 로그를 송신하는 단계를 포함하는,
    방법.
  3. 제1항에 있어서,
    상기 변경사항을 저장하는 단계는 상기 객체의 현재 상태를 업데이트(update)하는 단계를 포함하고,
    상기 저장된 변경사항을 상기 클라이언트에게 송신하는 단계는 상기 객체의 현재 상태를 송신하는 단계를 포함하는,
    방법.
  4. 제1항에 있어서,
    상기 클라이언트로부터 제1 메시지를 수신하는 단계는 클라이언트 객체에 대한 임시 식별자(temporary identifier)를 수신하는 단계를 포함하고;
    상기 객체를 생성하는 단계는 상기 객체에 대한 영구 식별자(permanent identifier)를 획득하는 단계를 포함하고;
    상기 제1 메시지에 대한 응답 메시지를 송신하는 단계는 상기 임시 식별자와 상기 영구 식별자 사이의 매핑(mapping)을 송신하는 단계를 포함하는,
    방법.
  5. 클라이언트와 서버 사이의 통신을 지원하며 컴퓨터 브리지에 의해 수행되는 방법으로서,
    상기 컴퓨터 브리지에 의해, 클라이언트로부터 네트워크를 통해 제1 메시지를 수신하는 단계;
    상기 제1 메시지에 대한 응답으로 객체를 생성하는 단계;
    상기 제1 메시지에 대한 응답 메시지를 상기 클라이언트에게 송신하는 단계;
    서버로부터 네트워크를 통해 상기 객체에 대한 변경사항을 수신하는 단계;
    상기 객체에 대한 변경사항을 저장하는 단계;
    상기 클라이언트로부터 제2 메시지를 수신하는 단계; 및
    상기 제2 메시지에 대한 응답 메시지와 함께 상기 저장된 변경사항을 상기 클라이언트에게 송신하는 단계
    를 포함하고,
    상기 객체는, 데이터흐름 그래프의 컴포넌트를 나타내는 다중 노드 및 컴포넌트들간 데이터의 흐름을 나타내는 노드들 사이의 링크를 포함하는 데이터흐름 그래프의 일부에 대응하고,
    상기 제1 메시지를 수신하는 단계는 중간 데이터에 대한 요청을 수신하는 단계를 포함하고,
    상기 객체를 생성하는 단계는 상기 데이터흐름 그래프의 일부를 컴파일하는 단계 및 상기 데이터흐름 그래프의 컴파일된 부분을 실행하여 출력을 출력 데이터세트에 출력하는 단계를 포함하고,
    상기 객체를 생성하는 단계는,
    상기 중간 데이터를 생성하기 위해 필요한 컴포넌트의 제1 세트를 판단하는 단계;
    상기 컴포넌트의 제1 세트에 없는, 상기 데이터흐름 그래프의 컴포넌트를 비활성화하는 단계; 및
    상기 출력 데이터세트를 저장하기 위해 상기 데이터흐름 그래프에 결합된 중간 데이터 싱크를 생성하는 단계
    를 더 포함하는,
    방법.
  6. 제5항에 있어서,
    상기 컴포넌트의 제1 세트를 판단하는 단계는, 데이터 소스를 상기 중간 데이터 싱크에 연결하지 않는 링크를 식별하는 단계를 포함하는,
    방법.
  7. 제5항에 있어서,
    상기 중간 데이터 싱크를 생성하는 단계는
    상기 중간 데이터 싱크에 대한 링크가 병렬 데이터 흐름을 나타내는지 판단하는 단계; 및
    상기 중간 데이터 싱크로서 병렬 데이터 싱크를 생성하는 단계
    를 포함하는,
    방법.
  8. 클라이언트와 서버 사이의 통신을 지원하기 위한 컴퓨터 프로그램을 저장한, 비일시적 컴퓨터 판독가능 저장 매체로서,
    상기 컴퓨터 프로그램은 컴퓨터로 하여금,
    데이터흐름 그래프의 컴포넌트를 나타내는 다중 노드 및 컴포넌트들간 데이터의 흐름을 나타내는 노드들 사이의 링크를 포함하는 데이터흐름 그래프의 컴포넌트의 각각의 특성을 정의하기 위한 하나 이상의 파라미터를 수신하는 인터페이스를 제공하는 단계;
    클라이언트로부터 네트워크를 통해 제1 메시지를 수신하는 단계;
    상기 제1 메시지에 대한 응답으로 객체를 생성하는 단계;
    상기 제1 메시지에 대한 응답 메시지를 상기 클라이언트에게 송신하는 단계;
    서버로부터 네트워크를 통해 상기 객체에 대한 변경사항을 수신하는 단계;
    상기 객체에 대한 변경사항을 저장하는 단계;
    상기 클라이언트로부터 제2 메시지를 수신하는 단계; 및
    상기 제2 메시지에 대한 응답 메시지와 함께 상기 저장된 변경사항을 상기 클라이언트에게 송신하는 단계
    를 수행하도록 하는 명령을 포함하고,
    상기 객체는 상기 데이터흐름 그래프의 일부에 대응하고,
    상기 인터페이스는 다중 사용자 인터페이스 요소를 상기 데이터흐름 그래프의 컴포넌트들 사이의 의존관계에 기초한 상기 사용자 인터페이스 요소 사이의 관계로 표시하고,
    상기 관계는 상기 서버 상에 저장된 스펙에 의하여 정의되는,
    컴퓨터 판독가능 저장 매체.
  9. 제8항에 있어서,
    상기 변경사항을 저장하는 단계는 상기 변경사항의 로그를 생성하는 단계를 포함하고,
    상기 저장된 변경사항을 상기 클라이언트에게 송신하는 단계는 상기 변경사항의 로그를 송신하는 단계를 포함하는,
    컴퓨터 판독가능 저장 매체.
  10. 제8항에 있어서,
    상기 변경사항을 저장하는 단계는 상기 객체의 현재 상태를 업데이트하는 단계를 포함하고,
    상기 저장된 변경사항을 상기 클라이언트에게 송신하는 단계는 상기 객체의 현재 상태를 송신하는 단계는 포함하는,
    컴퓨터 판독가능 저장 매체.
  11. 제8항에 있어서,
    상기 클라이언트로부터 제1 메시지를 수신하는 단계는 클라이언트 객체에 대한 임시 식별자를 수신하는 단계를 포함하고;
    상기 객체를 생성하는 단계는 상기 객체에 대한 영구 식별자를 획득하는 단계를 포함하고;
    상기 제1 메시지에 대한 응답 메시지를 송신하는 단계는 상기 임시 식별자와 상기 영구 식별자 사이의 매핑을 송신하는 단계를 포함하는,
    컴퓨터 판독가능 저장 매체.
  12. 클라이언트와 서버 사이의 통신을 지원하기 위한 시스템으로서,
    상기 시스템은,
    하나 이상의 프로세서를 포함하는 서버; 및
    상기 시스템에서 객체를 관리하도록 구성된 하나 이상의 프로세서를 포함하는 브리지
    를 포함하고,
    관리하는 것은,
    데이터흐름 그래프의 컴포넌트를 나타내는 다중 노드 및 컴포넌트들간 데이터의 흐름을 나타내는 노드들 사이의 링크를 포함하는 데이터흐름 그래프의 컴포넌트의 각각의 특성을 정의하기 위한 하나 이상의 파라미터를 수신하는 인터페이스를 제공하는 단계;
    클라이언트로부터 네트워크를 통해 제1 메시지를 수신하는 단계;
    상기 제1 메시지에 대한 응답으로 객체를 생성하는 단계;
    상기 제1 메시지에 대한 응답 메시지를 상기 클라이언트에게 송신하는 단계;
    서버로부터 네트워크를 통해 상기 객체에 대한 변경사항을 수신하는 단계;
    상기 객체에 대한 변경사항을 저장하는 단계;
    상기 클라이언트로부터 제2 메시지를 수신하는 단계; 및
    상기 제2 메시지에 대한 응답 메시지와 함께 상기 저장된 변경사항을 상기 클라이언트에게 송신하는 단계
    를 포함하고,
    상기 객체는 상기 데이터흐름 그래프의 일부에 대응하고,
    상기 인터페이스는 다중 사용자 인터페이스 요소를 상기 데이터흐름 그래프의 컴포넌트들 사이의 의존관계에 기초한 상기 사용자 인터페이스 요소 사이의 관계로 표시하고,
    상기 관계는 상기 서버 상에 저장된 스펙에 의하여 정의되는,
    시스템.
  13. 제12항에 있어서,
    상기 클라이언트로부터 제1 메시지를 수신하는 단계는 클라이언트 객체에 대한 임시 식별자를 수신하는 단계를 포함하고;
    상기 객체를 생성하는 단계는 상기 객체에 대한 영구 식별자를 획득하는 단계를 포함하고;
    상기 제1 메시지에 대한 응답 메시지를 송신하는 단계는 상기 임시 식별자와 상기 영구 식별자 사이의 매핑을 송신하는 단계를 포함하는,
    시스템.
  14. 클라이언트와 서버 사이의 통신을 지원하기 위한 시스템으로서,
    상기 시스템은,
    하나 이상의 프로세서;
    데이터를 서비스하는 수단; 및
    상기 시스템에서 객체를 관리하는 수단
    을 포함하고,
    관리하는 것은,
    데이터흐름 그래프의 컴포넌트를 나타내는 다중 노드 및 컴포넌트들간 데이터의 흐름을 나타내는 노드들 사이의 링크를 포함하는 데이터흐름 그래프의 컴포넌트의 각각의 특성을 정의하기 위한 하나 이상의 파라미터를 수신하는 인터페이스를 제공하는 단계;
    클라이언트로부터 네트워크를 통해 제1 메시지를 수신하는 단계;
    상기 제1 메시지에 대한 응답으로 객체를 생성하는 단계;
    상기 제1 메시지에 대한 응답 메시지를 상기 클라이언트에게 송신하는 단계;
    상기 데이터를 서비스하는 수단으로부터 네트워크를 통해 상기 객체에 대한 변경사항을 수신하는 단계;
    상기 객체에 대한 변경사항을 저장하는 단계;
    상기 클라이언트로부터 제2 메시지를 수신하는 단계; 및
    상기 제2 메시지에 대한 응답 메시지와 함께 상기 저장된 변경사항을 상기 클라이언트에게 송신하는 단계
    를 포함하고,
    상기 객체는 상기 데이터흐름 그래프의 일부에 대응하고,
    상기 인터페이스는 다중 사용자 인터페이스 요소를 상기 데이터흐름 그래프의 컴포넌트 사이의 의존관계에 기초한 상기 사용자 인터페이스 요소 사이의 관계로 표시하고,
    상기 관계는 상기 서버 상에 저장된 스펙에 의하여 정의되는,
    시스템.
  15. 클라이언트와 서버 사이의 통신을 지원하기 위한 컴퓨터 프로그램을 저장한, 비일시적 컴퓨터 판독가능 저장 매체로서,
    상기 컴퓨터 프로그램은 컴퓨터로 하여금,
    컴퓨터 브리지에 의해, 클라이언트로부터 네트워크를 통해 제1 메시지를 수신하는 단계;
    상기 제1 메시지에 대한 응답으로 객체를 생성하는 단계;
    상기 제1 메시지에 대한 응답 메시지를 상기 클라이언트에게 송신하는 단계;
    서버로부터 네트워크를 통해 상기 객체에 대한 변경사항을 수신하는 단계;
    상기 객체에 대한 변경사항을 저장하는 단계;
    상기 클라이언트로부터 제2 메시지를 수신하는 단계; 및
    상기 제2 메시지에 대한 응답 메시지와 함께 상기 저장된 변경사항을 상기 클라이언트에게 송신하는 단계
    를 수행하도록 하는 명령을 포함하고,
    상기 객체는, 데이터흐름 그래프의 컴포넌트를 나타내는 다중 노드 및 컴포넌트들간 데이터의 흐름을 나타내는 노드들 사이의 링크를 포함하는 데이터흐름 그래프의 일부에 대응하고,
    상기 제1 메시지를 수신하는 단계는 중간 데이터에 대한 요청을 수신하는 단계를 포함하고,
    상기 객체를 생성하는 단계는 상기 데이터흐름 그래프의 일부를 컴파일하는 단계 및 상기 데이터흐름 그래프의 컴파일된 부분을 실행하여 출력을 출력 데이터세트에 출력하는 단계를 포함하고,
    상기 객체를 생성하는 단계는,
    상기 중간 데이터를 생성하기 위해 필요한 컴포넌트의 제1 세트를 판단하는 단계;
    상기 컴포넌트의 제1 세트에 없는, 상기 데이터흐름 그래프의 컴포넌트를 비활성화하는 단계; 및
    상기 출력 데이터세트를 저장하기 위해 상기 데이터흐름 그래프에 결합된 중간 데이터 싱크를 생성하는 단계
    를 더 포함하는,
    컴퓨터 판독가능 저장 매체.
  16. 제15항에 있어서,
    상기 컴포넌트의 제1 세트를 판단하는 단계는, 데이터 소스를 상기 중간 데이터 싱크에 연결하지 않는 링크를 식별하는 단계를 포함하는,
    컴퓨터 판독가능 저장 매체.
  17. 제15항에 있어서,
    상기 중간 데이터 싱크를 생성하는 단계는
    상기 중간 데이터 싱크에 대한 링크가 병렬 데이터 흐름을 나타내는지 판단하는 단계; 및
    상기 중간 데이터 싱크로서 병렬 데이터 싱크를 생성하는 단계
    를 포함하는,
    컴퓨터 판독가능 저장 매체.
  18. 시스템으로서,
    하나 이상의 프로세서를 포함하는 서버; 및
    상기 시스템에서 객체를 관리하도록 구성된 하나 이상의 프로세서를 포함하는 컴퓨터 브리지
    를 포함하고,
    관리하는 것은,
    상기 컴퓨터 브리지에 의해, 클라이언트로부터 네트워크를 통해 제1 메시지를 수신하는 단계;
    상기 제1 메시지에 대한 응답으로 객체를 생성하는 단계;
    상기 제1 메시지에 대한 응답 메시지를 상기 클라이언트에게 송신하는 단계;
    서버로부터 네트워크를 통해 상기 객체에 대한 변경사항을 수신하는 단계;
    상기 객체에 대한 변경사항을 저장하는 단계;
    상기 클라이언트로부터 제2 메시지를 수신하는 단계; 및
    상기 제2 메시지에 대한 응답 메시지와 함께 상기 저장된 변경사항을 상기 클라이언트에게 송신하는 단계
    를 포함하고,
    상기 객체는, 데이터흐름 그래프의 컴포넌트를 나타내는 다중 노드 및 컴포넌트들간 데이터의 흐름을 나타내는 노드들 사이의 링크를 포함하는 데이터흐름 그래프의 일부에 대응하고,
    상기 제1 메시지를 수신하는 단계는 중간 데이터에 대한 요청을 수신하는 단계를 포함하고,
    상기 객체를 생성하는 단계는 상기 데이터흐름 그래프의 일부를 컴파일하는 단계 및 상기 데이터흐름 그래프의 컴파일된 부분을 실행하여 출력을 출력 데이터세트에 출력하는 단계를 포함하고,
    상기 객체를 생성하는 단계는,
    상기 중간 데이터를 생성하기 위해 필요한 컴포넌트의 제1 세트를 판단하는 단계;
    상기 컴포넌트의 제1 세트에 없는, 상기 데이터흐름 그래프의 컴포넌트를 비활성화하는 단계; 및
    상기 출력 데이터세트를 저장하기 위해 상기 데이터흐름 그래프에 결합된 중간 데이터 싱크를 생성하는 단계
    를 더 포함하는,
    시스템.
  19. 제18항에 있어서,
    상기 컴포넌트의 제1 세트를 판단하는 단계는, 데이터 소스를 상기 중간 데이터 싱크에 연결하지 않는 링크를 식별하는 단계를 포함하는,
    시스템.
  20. 클라이언트와 서버 사이의 통신을 지원하기 위한 시스템으로서,
    상기 시스템은,
    하나 이상의 프로세서;
    데이터를 서비스하는 수단; 및
    상기 시스템에서 객체를 관리하는 수단
    을 포함하고,
    관리하는 것은,
    컴퓨터 브리지에 의해, 클라이언트로부터 네트워크를 통해 제1 메시지를 수신하는 단계;
    상기 제1 메시지에 대한 응답으로 객체를 생성하는 단계;
    상기 제1 메시지에 대한 응답 메시지를 상기 클라이언트에게 송신하는 단계;
    상기 데이터를 서비스하는 수단으로부터 네트워크를 통해 상기 객체에 대한 변경사항을 수신하는 단계;
    상기 객체에 대한 변경사항을 저장하는 단계;
    상기 클라이언트로부터 제2 메시지를 수신하는 단계; 및
    상기 제2 메시지에 대한 응답 메시지와 함께 상기 저장된 변경사항을 상기 클라이언트에게 송신하는 단계
    를 포함하고,
    상기 객체는, 데이터흐름 그래프의 컴포넌트를 나타내는 다중 노드 및 컴포넌트들간 데이터의 흐름을 나타내는 노드들 사이의 링크를 포함하는 데이터흐름 그래프의 일부에 대응하고,
    상기 제1 메시지를 수신하는 단계는 중간 데이터에 대한 요청을 수신하는 단계를 포함하고,
    상기 객체를 생성하는 단계는 상기 데이터흐름 그래프의 일부를 컴파일하는 단계 및 상기 데이터흐름 그래프의 컴파일된 부분을 실행하여 출력을 출력 데이터세트에 출력하는 단계를 포함하고,
    상기 객체를 생성하는 단계는,
    상기 중간 데이터를 생성하기 위해 필요한 컴포넌트의 제1 세트를 판단하는 단계;
    상기 컴포넌트의 제1 세트에 없는, 상기 데이터흐름 그래프의 컴포넌트를 비활성화하는 단계; 및
    상기 출력 데이터세트를 저장하기 위해 상기 데이터흐름 그래프에 결합된 중간 데이터 싱크를 생성하는 단계
    를 더 포함하는,
    시스템.
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
  33. 삭제
  34. 삭제
  35. 삭제
  36. 삭제
  37. 삭제
  38. 삭제
  39. 삭제
  40. 삭제
  41. 삭제
  42. 삭제
  43. 삭제
  44. 삭제
  45. 삭제
  46. 삭제
  47. 삭제
  48. 삭제
  49. 삭제
  50. 삭제
KR1020127017686A 2009-12-14 2010-12-14 클라이언트-서버 브리지를 사용하는 객체 관리 KR101784784B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US28629309P 2009-12-14 2009-12-14
US61/286,293 2009-12-14
PCT/US2010/060270 WO2011081925A1 (en) 2009-12-14 2010-12-14 Managing objects using a client-server bridge

Publications (2)

Publication Number Publication Date
KR20120101706A KR20120101706A (ko) 2012-09-14
KR101784784B1 true KR101784784B1 (ko) 2017-10-12

Family

ID=43640108

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020127016762A KR101862235B1 (ko) 2009-12-14 2010-12-03 사용자 인터페이스 요소 지정
KR1020127017686A KR101784784B1 (ko) 2009-12-14 2010-12-14 클라이언트-서버 브리지를 사용하는 객체 관리

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020127016762A KR101862235B1 (ko) 2009-12-14 2010-12-03 사용자 인터페이스 요소 지정

Country Status (8)

Country Link
US (4) US10845962B2 (ko)
EP (2) EP2513782A1 (ko)
JP (4) JP6084037B2 (ko)
KR (2) KR101862235B1 (ko)
CN (3) CN102754072B (ko)
AU (3) AU2010337218B2 (ko)
CA (3) CA2782414C (ko)
WO (2) WO2011081776A1 (ko)

Families Citing this family (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2010213583A1 (en) 2009-02-13 2011-08-11 Ab Initio Technology Llc Communicating with data storage systems
CN102754072B (zh) 2009-12-14 2016-10-19 起元技术有限责任公司 规定用户界面元素
US9141403B2 (en) * 2011-02-15 2015-09-22 Microsoft Technology Licensing, Llc Data-driven schema for describing and executing management tasks in a graphical user interface
WO2013033827A1 (en) * 2011-09-07 2013-03-14 Tsx Inc. High availability system, replicator and method
US8782595B1 (en) * 2011-10-06 2014-07-15 Google Inc. Systems and methods for rule based meta-programming of actions for rule based build systems
US10346422B2 (en) * 2012-10-18 2019-07-09 International Business Machines Corporation Use of proxy objects for integration between a content management system and a case management system
US20140114864A1 (en) * 2012-10-22 2014-04-24 International Business Machines Corporation Case management integration with external content repositories
US9811233B2 (en) * 2013-02-12 2017-11-07 Ab Initio Technology Llc Building applications for configuring processes
US11061539B2 (en) * 2013-03-15 2021-07-13 The Mathworks, Inc. Reference nodes in a computational graph
EP3092557B1 (en) 2013-12-05 2024-03-27 AB Initio Technology LLC Managing interfaces for dataflow graphs composed of sub-graphs
US10067652B2 (en) * 2013-12-24 2018-09-04 Dropbox, Inc. Providing access to a cloud based content management system on a mobile device
US20150180980A1 (en) * 2013-12-24 2015-06-25 Dropbox, Inc. Systems and methods for preserving shared virtual spaces on a content management system
US9575639B2 (en) * 2014-02-27 2017-02-21 Ab Initio Technology Llc Compound controls
US9607073B2 (en) 2014-04-17 2017-03-28 Ab Initio Technology Llc Processing data from multiple sources
US9766789B1 (en) * 2014-07-07 2017-09-19 Cloneless Media, LLC Media effects system
US9933918B2 (en) * 2014-09-02 2018-04-03 Ab Initio Technology Llc Specifying control and data connections in graph-based programs
US9760406B2 (en) 2014-09-02 2017-09-12 Ab Initio Technology Llc Controlling data processing tasks
US9785419B2 (en) * 2014-09-02 2017-10-10 Ab Initio Technology Llc Executing graph-based program specifications
SG11201701652QA (en) 2014-09-02 2017-04-27 Ab Initio Technology Llc Compilation of graph-based program specifications with automated clustering of graph components based on the identification of particular data port connections
AU2015311999B2 (en) * 2014-09-02 2019-09-19 Ab Initio Technology Llc Controlling data processing tasks
CN106687921B (zh) * 2014-09-02 2021-02-02 起元科技有限公司 在基于图的程序中指定组件
EP2998817B1 (en) * 2014-09-16 2017-06-07 Aviovision System for calculating aircraft performance and method for performing the same
US10055333B2 (en) 2014-11-05 2018-08-21 Ab Initio Technology Llc Debugging a graph
US9880818B2 (en) * 2014-11-05 2018-01-30 Ab Initio Technology Llc Application testing
US10657134B2 (en) * 2015-08-05 2020-05-19 Ab Initio Technology Llc Selecting queries for execution on a stream of real-time data
US10181105B2 (en) 2015-12-11 2019-01-15 Adp, Llc Object oriented organization management with dynamic grouping
US11016646B1 (en) * 2016-03-22 2021-05-25 Open Text Corporation Method and mechanism for context driven alteration of UI artifacts instances behavior using expression based pluggable UI aspects
US10949748B2 (en) * 2016-05-13 2021-03-16 Microsoft Technology Licensing, Llc Deep learning of bots through examples and experience
US10936289B2 (en) 2016-06-03 2021-03-02 Ab Initio Technology Llc Format-specific data processing operations
JP6686762B2 (ja) * 2016-07-22 2020-04-22 富士通株式会社 情報処理システム、情報処理装置、情報処理方法及びプログラム
US11853529B2 (en) * 2016-11-07 2023-12-26 Tableau Software, Inc. User interface to prepare and curate data for subsequent analysis
US10802945B2 (en) * 2016-12-07 2020-10-13 Ab Initio Technology Llc Differencing of executable dataflow graphs
US10572280B2 (en) * 2017-02-17 2020-02-25 Google Llc Mobile application activity detector
US10831509B2 (en) 2017-02-23 2020-11-10 Ab Initio Technology Llc Dynamic execution of parameterized applications for the processing of keyed network data streams
US11947978B2 (en) 2017-02-23 2024-04-02 Ab Initio Technology Llc Dynamic execution of parameterized applications for the processing of keyed network data streams
US11194551B2 (en) 2017-06-07 2021-12-07 Ab Initio Technology Llc Dataflow graph configuration
US11423083B2 (en) 2017-10-27 2022-08-23 Ab Initio Technology Llc Transforming a specification into a persistent computer program
CN108037973B (zh) * 2017-12-20 2021-11-16 苏州优圣美智能系统有限公司 一种与数据处理工具交互的数据流建模和处理系统
AU2019307745B2 (en) 2018-07-19 2024-04-04 Ab Initio Technology Llc Publishing to a data warehouse
CN109656453A (zh) * 2018-12-20 2019-04-19 树根互联技术有限公司 规则编辑方法、装置和设备
US11061596B2 (en) * 2019-11-04 2021-07-13 Google Llc Multi-pass distributed data shuffle
US20210191845A1 (en) 2019-12-23 2021-06-24 Ab Initio Technology Llc Unit testing of components of dataflow graphs
CN112199215B (zh) * 2020-10-13 2024-01-19 恒生电子股份有限公司 消息处理方法、装置、设备及存储介质
CN112306578B (zh) * 2020-11-06 2022-04-19 湖南快乐阳光互动娱乐传媒有限公司 可配置数据源的DataFetcher实现系统和方法
US11567758B2 (en) 2020-12-09 2023-01-31 Adp, Inc. Configuration properties management for software
CN114063877A (zh) * 2021-10-29 2022-02-18 深圳市正浩创新科技股份有限公司 储能设备数据显示方法、装置与设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080229334A1 (en) 2005-01-20 2008-09-18 International Business Machines Corporation System and method for subscription management in a messaging system
US20090119302A1 (en) * 2007-11-05 2009-05-07 Microsoft Corporation Asynchronous client to server updates
US20090187654A1 (en) 2007-10-05 2009-07-23 Citrix Systems, Inc. Silicon Valley Systems and methods for monitoring components of a remote access server farm

Family Cites Families (121)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4914568A (en) * 1986-10-24 1990-04-03 National Instruments, Inc. Graphical system for modelling a process and associated method
US5291587A (en) * 1986-04-14 1994-03-01 National Instruments, Inc. Graphical system for executing a process and for programming a computer to execute a process, including graphical variable inputs and variable outputs
US5481741A (en) * 1986-04-14 1996-01-02 National Instruments Corporation Method and apparatus for providing attribute nodes in a graphical data flow environment
US4901221A (en) * 1986-04-14 1990-02-13 National Instruments, Inc. Graphical system for modelling a process and associated method
US5301301A (en) * 1991-01-30 1994-04-05 National Instruments Corporation Polymorphic dataflow block diagram system and method for programming a computer
JPH05265802A (ja) * 1992-03-18 1993-10-15 Shimadzu Corp ソフトウェアデバッグ装置
US5438659A (en) * 1992-10-08 1995-08-01 Hewlett-Packard Company Object-action user interface management system
JPH06230953A (ja) * 1993-02-03 1994-08-19 Mitsubishi Electric Corp グラフィカル・ユーザインタフェース設計装置
JPH07152544A (ja) * 1993-09-17 1995-06-16 Toshiba Corp ダイヤグラム作成支援システム及びダイアグラム作成支援方法
US5966072A (en) 1996-07-02 1999-10-12 Ab Initio Software Corporation Executing computations expressed as graphs
US5844554A (en) 1996-09-17 1998-12-01 Bt Squared Technologies, Inc. Methods and systems for user interfaces and constraint handling configurations software
US6102965A (en) * 1996-09-23 2000-08-15 National Instruments Corporation System and method for providing client/server access to graphical programs
US6437805B1 (en) * 1996-09-23 2002-08-20 National Instruments Corporation System and method for accessing object capabilities in a graphical program
US6064812A (en) * 1996-09-23 2000-05-16 National Instruments Corporation System and method for developing automation clients using a graphical data flow program
JPH10222355A (ja) * 1997-01-31 1998-08-21 Toshiba Corp Guiアプリケーション開発装置
US6173438B1 (en) * 1997-08-18 2001-01-09 National Instruments Corporation Embedded graphical programming system
US6219628B1 (en) * 1997-08-18 2001-04-17 National Instruments Corporation System and method for configuring an instrument to perform measurement functions utilizing conversion of graphical programs into hardware implementations
US6102968A (en) 1998-05-21 2000-08-15 Lucent Technologies Inc. Method for automatically closing open reactive systems
US6341279B1 (en) 1998-10-12 2002-01-22 Starwave Corporation Method and apparatus for event modeling
US6813640B1 (en) * 1998-12-08 2004-11-02 Macrovision Corporation System and method for controlling the editing by user action of digital objects created in a document server application
US7937665B1 (en) * 2000-06-13 2011-05-03 National Instruments Corporation System and method for automatically generating a graphical program to implement a prototype
US7000190B2 (en) * 1999-08-19 2006-02-14 National Instruments Corporation System and method for programmatically modifying a graphical program in response to program information
US7210117B2 (en) * 1999-08-19 2007-04-24 National Instruments Corporation System and method for programmatically generating a graphical program in response to program information
US20090241089A1 (en) * 1999-08-19 2009-09-24 Subramanian Ramamoorthy Converting a First Graphical Program into a Second Graphical Program Using an Intermediate Abstract Representation
US7120876B2 (en) * 1999-08-19 2006-10-10 National Instruments Corporation System and method for programmatically generating a graphical program in response to user input
US6694321B1 (en) 1999-09-23 2004-02-17 Affymetrix, Inc. System, method, and product for development and maintenance of database-related software applications
AU2001243597A1 (en) 2000-03-03 2001-09-17 Radiant Logic, Inc. System and method for providing access to databases via directories and other hierarchical structures and interfaces
JP2001344105A (ja) * 2000-03-31 2001-12-14 Hitachi Software Eng Co Ltd Webアプリケーション開発方法、開発支援システム、および該方法に係るプログラムを記憶した記憶媒体
US6763515B1 (en) * 2000-06-05 2004-07-13 National Instruments Corporation System and method for automatically generating a graphical program to perform an image processing algorithm
KR100761430B1 (ko) 2000-06-09 2007-09-27 더 트러스티스 오브 콜롬비아 유니버시티 인 더 시티 오브 뉴욕 혼합형 비동기 및 동기 시스템을 위한 낮은 대기시간fifo 회로
US7164422B1 (en) 2000-07-28 2007-01-16 Ab Initio Software Corporation Parameterized graphs with conditional components
AU2001290546A1 (en) * 2000-08-22 2002-03-04 Akamai Technologies, Inc. Dynamic content assembly on edge-of-network servers in a content delivery network
US20070192863A1 (en) 2005-07-01 2007-08-16 Harsh Kapoor Systems and methods for processing data flows
US8042098B2 (en) 2000-12-06 2011-10-18 Axiomatic Design Software, Inc. Method and apparatus for producing software
US7188091B2 (en) 2001-03-21 2007-03-06 Resolutionebs, Inc. Rule processing system
FI114265B (fi) * 2001-03-26 2004-09-15 First Hop Oy Menetelmiä ja järjestelyjä tehokkaan tiedonsiirron toteuttamiseksi nopeudeltaan rajoitetun tiedonsiirtolinkin yli
US20040210445A1 (en) * 2001-04-05 2004-10-21 Luca Veronese Method and system for specifying and implementing business applications
US6801229B1 (en) 2001-04-06 2004-10-05 Plumbdesign System for creation of visual representation of data
US7493397B1 (en) 2001-06-06 2009-02-17 Microsoft Corporation Providing remote processing services over a distributed communications network
US20040093342A1 (en) 2001-06-27 2004-05-13 Ronald Arbo Universal data mapping system
AU2002313583A1 (en) * 2001-08-01 2003-02-17 Actona Technologies Ltd. Virtual file-sharing network
US20030172193A1 (en) * 2002-03-07 2003-09-11 Olsen Jesse Dale User interface generator and method of automatically generating a user interface
US20030174165A1 (en) 2002-03-18 2003-09-18 Barney Rock D. System and method for rendering a directed graph
US7353464B1 (en) 2002-04-01 2008-04-01 Microsoft Corporation Hierarchical data navigation tool populated by a web service
US20080091491A1 (en) * 2002-04-18 2008-04-17 Bdna Corporation Method and/or system for flexible data handling
US7574652B2 (en) 2002-06-20 2009-08-11 Canon Kabushiki Kaisha Methods for interactively defining transforms and for generating queries by manipulating existing query data
US20040030993A1 (en) * 2002-08-08 2004-02-12 Hong Huey Anna Onon Methods and apparatus for representing dynamic data in a software development environment
WO2004015627A2 (en) 2002-08-09 2004-02-19 Corticon Technologies, Inc. Rule engine
US7418733B2 (en) 2002-08-26 2008-08-26 International Business Machines Corporation Determining threat level associated with network activity
US7167850B2 (en) 2002-10-10 2007-01-23 Ab Initio Software Corporation Startup and control of graph-based computation
US7840545B2 (en) 2002-10-25 2010-11-23 International Business Machines Corporation Method and system for providing access to a database
JP2004172695A (ja) * 2002-11-18 2004-06-17 Alpine Electronics Inc マルチメディア再生方法およびマルチメディア再生システム、操作画面カスタマイズ用プログラム
US7644361B2 (en) 2002-12-23 2010-01-05 Canon Kabushiki Kaisha Method of using recommendations to visually create new views of data across heterogeneous sources
AU2002953555A0 (en) 2002-12-23 2003-01-16 Canon Kabushiki Kaisha Method for presenting hierarchical data
JP4127194B2 (ja) * 2003-01-15 2008-07-30 セイコーエプソン株式会社 レイアウトシステム及びレイアウトプログラム、並びにレイアウト方法
GB0306971D0 (en) 2003-03-26 2003-04-30 British Telecomm Client server model
US7167580B2 (en) * 2003-04-30 2007-01-23 Unisys Corporation Image quality assurance systems and methodologies for improving the identification of and access speed to image quality suspects in documents
JP2004349355A (ja) * 2003-05-20 2004-12-09 Sharp Corp 半導体記憶装置、その冗長回路及び携帯電子機器
US20040239674A1 (en) 2003-06-02 2004-12-02 Microsoft Corporation Modeling graphs as XML information sets and describing graphs with XML schema
US7624375B2 (en) 2003-06-12 2009-11-24 National Instruments Corporation Automatically configuring a graphical user interface element to bind to a graphical program
WO2005020003A2 (en) 2003-08-13 2005-03-03 National Instruments Corporation Creating a graphical user interface for selected parameters of a graphical program
CA2538568C (en) 2003-09-15 2009-05-19 Ab Initio Software Corporation Data profiling
US7756907B2 (en) 2003-09-16 2010-07-13 The Board Of Trustees Of The Leland Stanford Jr. University Computer systems and methods for visualizing data
US20070276689A1 (en) * 2006-05-12 2007-11-29 Kirk Slone Workflow data binding
US7448047B2 (en) 2004-04-29 2008-11-04 Sybase, Inc. Database system with methodology for providing stored procedures as web services
US7913231B2 (en) 2004-05-11 2011-03-22 Sap Ag Testing pattern-based applications
US8296665B2 (en) * 2004-05-11 2012-10-23 Sap Ag Developing and executing applications with configurable patterns
US7530052B2 (en) * 2004-05-14 2009-05-05 National Instruments Corporation Creating and executing a graphical program with first model of computation that includes a structure supporting second model of computation
US7281018B1 (en) * 2004-05-26 2007-10-09 Microsoft Corporation Form template data source change
US8533229B2 (en) * 2004-06-16 2013-09-10 Salesforce.Com, Inc. Soap-based web services in a multi-tenant database system
JP4275013B2 (ja) 2004-06-21 2009-06-10 三洋電機株式会社 データフローグラフ処理装置、処理装置、リコンフィギュラブル回路。
US7730012B2 (en) 2004-06-25 2010-06-01 Apple Inc. Methods and systems for managing data
US20050289356A1 (en) 2004-06-29 2005-12-29 Idan Shoham Process for automated and self-service reconciliation of different loging IDs between networked computer systems
WO2006043012A1 (en) * 2004-10-22 2006-04-27 New Technology/Enterprise Limited Data processing system and method
US7899833B2 (en) * 2004-11-02 2011-03-01 Ab Initio Technology Llc Managing related data objects
US7523440B2 (en) * 2004-11-16 2009-04-21 The Mathworks, Inc. Dynamic generation of formatted user interfaces in software environments
US7349384B2 (en) 2004-12-10 2008-03-25 Microsoft Corporation Reliable one-way messaging over request-response transport protocols
US20060190488A1 (en) 2005-02-22 2006-08-24 Transparency Software, Inc. System and method for determining information related to user interactions with an application
US20060190480A1 (en) 2005-02-22 2006-08-24 Transparency Software, Inc. Generation of names related to organization actions
US7716630B2 (en) 2005-06-27 2010-05-11 Ab Initio Technology Llc Managing parameters for graph-based computations
US7877350B2 (en) * 2005-06-27 2011-01-25 Ab Initio Technology Llc Managing metadata for graph-based computations
JP2007011809A (ja) * 2005-06-30 2007-01-18 Kureo:Kk 業務フローを搭載した業務管理システム
EP1915055A2 (en) * 2005-08-11 2008-04-30 Merck & Co., Inc. Non-nucleoside reverse transcriptase inhibitors
US8078954B2 (en) 2005-09-27 2011-12-13 Oracle International Corporation System and method for page flow editor
US7739292B2 (en) 2005-09-28 2010-06-15 Altova Gmbh System and method for modeling and managing enterprise architecture data and content models and their relationships
US8095565B2 (en) * 2005-12-05 2012-01-10 Microsoft Corporation Metadata driven user interface
US7650316B2 (en) * 2006-03-10 2010-01-19 National Instruments Corporation Automatic generation of help information for specified systems
US20070233655A1 (en) * 2006-04-03 2007-10-04 National Instruments Corporation Graphical program representation of queries
JP2007280189A (ja) * 2006-04-10 2007-10-25 Toshiba Corp プログラム生成装置、プログラム生成方法、及びプログラム生成プログラム
US7870556B2 (en) * 2006-05-16 2011-01-11 Ab Initio Technology Llc Managing computing resources in graph-based computations
JP2007316884A (ja) * 2006-05-25 2007-12-06 Hitachi Ltd 制御装置、制御方法、及び、制御プログラム
US8396848B2 (en) * 2006-06-26 2013-03-12 Microsoft Corporation Customizable parameter user interface
US7701869B2 (en) 2006-07-21 2010-04-20 National Instruments Corporation Generating a data flow diagram
CN101501678B (zh) 2006-08-10 2013-10-16 起元科技有限公司 在基于图的计算中分配服务
CN100527131C (zh) 2006-12-30 2009-08-12 中国建设银行股份有限公司 一种ims数据库互动式访问方法和工具
US8069129B2 (en) 2007-04-10 2011-11-29 Ab Initio Technology Llc Editing and compiling business rules
US7644254B2 (en) 2007-04-18 2010-01-05 International Business Machines Corporation Routing data packets with hint bit for each six orthogonal directions in three dimensional torus computer system set to avoid nodes in problem list
US8271943B2 (en) * 2007-04-24 2012-09-18 National Instruments Corporation Automatically generating a graphical program with a plurality of models of computation
US9594731B2 (en) * 2007-06-29 2017-03-14 Microsoft Technology Licensing, Llc WYSIWYG, browser-based XML editor
EP2191362B1 (en) * 2007-09-20 2015-08-19 Ab Initio Technology LLC Managing data flows in graph-based computations
US8156481B1 (en) 2007-10-05 2012-04-10 The Mathworks, Inc. Profiler-based optimization of automatically generated code
KR101510355B1 (ko) * 2008-02-26 2015-04-14 아브 이니티오 테크놀로지 엘엘시 데이터 관계의 그래픽 표현
US20090319494A1 (en) 2008-06-20 2009-12-24 Microsoft Corporation Field mapping for data stream output
US9547638B2 (en) 2008-06-30 2017-01-17 Ab Initio Technology Llc Data logging for rule specifications
US20100235495A1 (en) 2008-09-10 2010-09-16 Salesforce.Com, Inc. Methods and systems for reducing a load on a multi-tenant database
AU2010213583A1 (en) 2009-02-13 2011-08-11 Ab Initio Technology Llc Communicating with data storage systems
CN102405631B (zh) * 2009-02-20 2015-02-18 思杰系统有限公司 用于中间设备压缩通过远程显示协议传递的数据的系统和方法
US8560941B2 (en) * 2009-04-08 2013-10-15 Microsoft Corporation Schema based user interface mechanisms
KR20150042877A (ko) 2009-11-13 2015-04-21 아브 이니티오 테크놀로지 엘엘시 레코드 포맷 정보의 관리
CN102754072B (zh) 2009-12-14 2016-10-19 起元技术有限责任公司 规定用户界面元素
US9552280B2 (en) 2010-05-13 2017-01-24 Microsoft Technology Licensing, Llc Visual analysis and debugging of complex event flows
KR101687213B1 (ko) 2010-06-15 2016-12-16 아브 이니티오 테크놀로지 엘엘시 동적으로 로딩하는 그래프 기반 계산
EP2614451B1 (en) 2010-09-10 2023-06-07 Ab Initio Technology LLC Managing data selection based on attributes
US8627296B1 (en) 2010-09-15 2014-01-07 Google Inc. Unified unit and integration test with automatic mock creation
US20120131559A1 (en) 2010-11-22 2012-05-24 Microsoft Corporation Automatic Program Partition For Targeted Replay
US9997659B2 (en) * 2012-09-14 2018-06-12 The Boeing Company Group-IV solar cell structure using group-IV or III-V heterostructures
US10108521B2 (en) 2012-11-16 2018-10-23 Ab Initio Technology Llc Dynamic component performance monitoring
US9811233B2 (en) 2013-02-12 2017-11-07 Ab Initio Technology Llc Building applications for configuring processes
US20140189650A1 (en) 2013-05-21 2014-07-03 Concurix Corporation Setting Breakpoints Using an Interactive Graph Representing an Application
SG10201913041VA (en) 2014-04-17 2020-03-30 Ab Initio Technology Llc Integrated monitoring and control of processing environment
US10055333B2 (en) 2014-11-05 2018-08-21 Ab Initio Technology Llc Debugging a graph

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080229334A1 (en) 2005-01-20 2008-09-18 International Business Machines Corporation System and method for subscription management in a messaging system
US20090187654A1 (en) 2007-10-05 2009-07-23 Citrix Systems, Inc. Silicon Valley Systems and methods for monitoring components of a remote access server farm
US20090119302A1 (en) * 2007-11-05 2009-05-07 Microsoft Corporation Asynchronous client to server updates

Also Published As

Publication number Publication date
JP2013513872A (ja) 2013-04-22
AU2010337218A1 (en) 2012-06-14
KR20120104267A (ko) 2012-09-20
CN107102848A (zh) 2017-08-29
CA2782402C (en) 2019-08-06
EP2513782A1 (en) 2012-10-24
KR20120101706A (ko) 2012-09-14
AU2010337218B2 (en) 2015-09-24
CN102754411A (zh) 2012-10-24
JP2013513864A (ja) 2013-04-22
AU2010337107A1 (en) 2012-06-14
JP6200472B2 (ja) 2017-09-20
WO2011081925A4 (en) 2011-08-25
WO2011081925A1 (en) 2011-07-07
KR101862235B1 (ko) 2018-05-29
US20160248643A1 (en) 2016-08-25
US10845962B2 (en) 2020-11-24
CN102754411B (zh) 2016-05-04
US10129116B2 (en) 2018-11-13
CA2782402A1 (en) 2011-07-07
CA2782414C (en) 2021-08-03
US20110153711A1 (en) 2011-06-23
JP5813655B2 (ja) 2015-11-17
JP6084037B2 (ja) 2017-02-22
JP2016001502A (ja) 2016-01-07
AU2010337107B2 (en) 2016-04-07
CA3012113A1 (en) 2011-07-07
US20110145748A1 (en) 2011-06-16
WO2011081776A1 (en) 2011-07-07
JP6313838B2 (ja) 2018-04-18
JP2017062839A (ja) 2017-03-30
CN107102848B (zh) 2020-11-24
CN102754072B (zh) 2016-10-19
CN102754072A (zh) 2012-10-24
US20140164495A1 (en) 2014-06-12
CA2782414A1 (en) 2011-07-07
AU2016201350B2 (en) 2017-12-21
AU2016201350A1 (en) 2016-03-24
US8661154B2 (en) 2014-02-25
EP2514176A1 (en) 2012-10-24

Similar Documents

Publication Publication Date Title
KR101784784B1 (ko) 클라이언트-서버 브리지를 사용하는 객체 관리
AU2020273341B2 (en) Telecommunications product defining and provisioning
CN112534398B (zh) 用于连接器开发和集成通道部署的系统和方法
JP2020530610A (ja) 仮想ウェブページのプレビュー中におけるデータベースの編集
US20040133445A1 (en) Generic framework for applying object-oriented models to multi-tiered enterprise applications
Sharma Modern API Development with Spring and Spring Boot: Design highly scalable and maintainable APIs with REST, gRPC, GraphQL, and the reactive paradigm
US11552868B1 (en) Collect and forward
US7366722B2 (en) System and method for specifying application services and distributing them across multiple processors using XML
Chen et al. Service encapsulation for middleware management interfaces
WO2017053434A1 (en) Design-time, metadata-based representation of real-time applications and message schemas
Aryal MERN stack with modern web practices
Millham Software asset re-use: migration of data-intensive legacy system to the cloud computing paradigm
Chattopadhayay Getting Started with Oracle Tuxedo
Bondili Online Banking Application with Angular JS, RESTful Web Services and Cassandra Database
Trebichavský API Gateways and Microservice Architectures
Wenzel Action links
Deinum et al. Spring Applications in the Cloud
Sawhney et al. Serverless APIs Using Azure Functions
Ruokola Centralized log management
Troelsen et al. Introducing ASP. NET Web Forms
Ciliberti Getting the Most from the Built-in Templates
Troelsen et al. Building ASP. NET Web Pages
Au et al. Hosting WCF Services on Microsoft Azure
Troelsen Building ASP. NET 2.0 Web Pages
den Braber The implementation of Microservices Architectural patterns in Open-Source Java projects

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