KR101784784B1 - 클라이언트-서버 브리지를 사용하는 객체 관리 - Google Patents
클라이언트-서버 브리지를 사용하는 객체 관리 Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0484—Interaction 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0481—Interaction 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0484—Interaction 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/04847—Interaction techniques to control parameter settings, e.g. interaction with sliders or dials
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/38—Creation or generation of source code for implementing user interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/04—Processing captured monitoring data, e.g. for logfile generation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/901—Buffering arrangements using storage descriptor, e.g. read or write pointers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; 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
본 출원은 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은 브리지된 클라이언트 서버 시스템의 개략도이다.
도 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: 출력 데이터 세트
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)
- 클라이언트와 서버 사이의 통신을 지원하며 컴퓨터 브리지에 의해 수행되는 방법으로서,
데이터흐름 그래프(dataflow graph)의 컴포넌트를 나타내는 다중 노드 및 컴포넌트들간 데이터의 흐름을 나타내는 노드들 사이의 링크를 포함하는 데이터흐름 그래프의 컴포넌트의 각각의 특성을 정의하기 위한 하나 이상의 파라미터를 수신하는 인터페이스를 제공하는 단계;
상기 컴퓨터 브리지에 의해, 클라이언트로부터 네트워크를 통해 제1 메시지를 수신하는 단계;
상기 제1 메시지에 대한 응답으로 객체를 생성하는 단계;
상기 제1 메시지에 대한 응답 메시지를 상기 클라이언트에게 송신하는 단계;
서버로부터 네트워크를 통해 상기 객체에 대한 변경사항(change)을 수신하는 단계;
상기 객체에 대한 변경사항을 저장하는 단계;
상기 클라이언트로부터 제2 메시지를 수신하는 단계; 및
상기 제2 메시지에 대한 응답 메시지와 함께 상기 저장된 변경사항을 상기 클라이언트에게 송신하는 단계
를 포함하고,
상기 객체는 상기 데이터흐름 그래프의 일부에 대응하고,
상기 인터페이스는 다중 사용자 인터페이스 요소를 상기 데이터흐름 그래프의 컴포넌트들 사이의 의존관계(dependency)에 기초한 상기 사용자 인터페이스 요소 사이의 관계(relationship)로 표시하고,
상기 관계는 상기 서버 상에 저장된 스펙(specification)에 의하여 정의되는,
방법. - 제1항에 있어서,
상기 변경사항을 저장하는 단계는 상기 변경사항의 로그(log)를 생성하는 단계를 포함하고,
상기 저장된 변경사항을 상기 클라이언트에게 송신하는 단계는 상기 변경사항의 로그를 송신하는 단계를 포함하는,
방법. - 제1항에 있어서,
상기 변경사항을 저장하는 단계는 상기 객체의 현재 상태를 업데이트(update)하는 단계를 포함하고,
상기 저장된 변경사항을 상기 클라이언트에게 송신하는 단계는 상기 객체의 현재 상태를 송신하는 단계를 포함하는,
방법. - 제1항에 있어서,
상기 클라이언트로부터 제1 메시지를 수신하는 단계는 클라이언트 객체에 대한 임시 식별자(temporary identifier)를 수신하는 단계를 포함하고;
상기 객체를 생성하는 단계는 상기 객체에 대한 영구 식별자(permanent identifier)를 획득하는 단계를 포함하고;
상기 제1 메시지에 대한 응답 메시지를 송신하는 단계는 상기 임시 식별자와 상기 영구 식별자 사이의 매핑(mapping)을 송신하는 단계를 포함하는,
방법. - 클라이언트와 서버 사이의 통신을 지원하며 컴퓨터 브리지에 의해 수행되는 방법으로서,
상기 컴퓨터 브리지에 의해, 클라이언트로부터 네트워크를 통해 제1 메시지를 수신하는 단계;
상기 제1 메시지에 대한 응답으로 객체를 생성하는 단계;
상기 제1 메시지에 대한 응답 메시지를 상기 클라이언트에게 송신하는 단계;
서버로부터 네트워크를 통해 상기 객체에 대한 변경사항을 수신하는 단계;
상기 객체에 대한 변경사항을 저장하는 단계;
상기 클라이언트로부터 제2 메시지를 수신하는 단계; 및
상기 제2 메시지에 대한 응답 메시지와 함께 상기 저장된 변경사항을 상기 클라이언트에게 송신하는 단계
를 포함하고,
상기 객체는, 데이터흐름 그래프의 컴포넌트를 나타내는 다중 노드 및 컴포넌트들간 데이터의 흐름을 나타내는 노드들 사이의 링크를 포함하는 데이터흐름 그래프의 일부에 대응하고,
상기 제1 메시지를 수신하는 단계는 중간 데이터에 대한 요청을 수신하는 단계를 포함하고,
상기 객체를 생성하는 단계는 상기 데이터흐름 그래프의 일부를 컴파일하는 단계 및 상기 데이터흐름 그래프의 컴파일된 부분을 실행하여 출력을 출력 데이터세트에 출력하는 단계를 포함하고,
상기 객체를 생성하는 단계는,
상기 중간 데이터를 생성하기 위해 필요한 컴포넌트의 제1 세트를 판단하는 단계;
상기 컴포넌트의 제1 세트에 없는, 상기 데이터흐름 그래프의 컴포넌트를 비활성화하는 단계; 및
상기 출력 데이터세트를 저장하기 위해 상기 데이터흐름 그래프에 결합된 중간 데이터 싱크를 생성하는 단계
를 더 포함하는,
방법. - 제5항에 있어서,
상기 컴포넌트의 제1 세트를 판단하는 단계는, 데이터 소스를 상기 중간 데이터 싱크에 연결하지 않는 링크를 식별하는 단계를 포함하는,
방법. - 제5항에 있어서,
상기 중간 데이터 싱크를 생성하는 단계는
상기 중간 데이터 싱크에 대한 링크가 병렬 데이터 흐름을 나타내는지 판단하는 단계; 및
상기 중간 데이터 싱크로서 병렬 데이터 싱크를 생성하는 단계
를 포함하는,
방법. - 클라이언트와 서버 사이의 통신을 지원하기 위한 컴퓨터 프로그램을 저장한, 비일시적 컴퓨터 판독가능 저장 매체로서,
상기 컴퓨터 프로그램은 컴퓨터로 하여금,
데이터흐름 그래프의 컴포넌트를 나타내는 다중 노드 및 컴포넌트들간 데이터의 흐름을 나타내는 노드들 사이의 링크를 포함하는 데이터흐름 그래프의 컴포넌트의 각각의 특성을 정의하기 위한 하나 이상의 파라미터를 수신하는 인터페이스를 제공하는 단계;
클라이언트로부터 네트워크를 통해 제1 메시지를 수신하는 단계;
상기 제1 메시지에 대한 응답으로 객체를 생성하는 단계;
상기 제1 메시지에 대한 응답 메시지를 상기 클라이언트에게 송신하는 단계;
서버로부터 네트워크를 통해 상기 객체에 대한 변경사항을 수신하는 단계;
상기 객체에 대한 변경사항을 저장하는 단계;
상기 클라이언트로부터 제2 메시지를 수신하는 단계; 및
상기 제2 메시지에 대한 응답 메시지와 함께 상기 저장된 변경사항을 상기 클라이언트에게 송신하는 단계
를 수행하도록 하는 명령을 포함하고,
상기 객체는 상기 데이터흐름 그래프의 일부에 대응하고,
상기 인터페이스는 다중 사용자 인터페이스 요소를 상기 데이터흐름 그래프의 컴포넌트들 사이의 의존관계에 기초한 상기 사용자 인터페이스 요소 사이의 관계로 표시하고,
상기 관계는 상기 서버 상에 저장된 스펙에 의하여 정의되는,
컴퓨터 판독가능 저장 매체. - 제8항에 있어서,
상기 변경사항을 저장하는 단계는 상기 변경사항의 로그를 생성하는 단계를 포함하고,
상기 저장된 변경사항을 상기 클라이언트에게 송신하는 단계는 상기 변경사항의 로그를 송신하는 단계를 포함하는,
컴퓨터 판독가능 저장 매체. - 제8항에 있어서,
상기 변경사항을 저장하는 단계는 상기 객체의 현재 상태를 업데이트하는 단계를 포함하고,
상기 저장된 변경사항을 상기 클라이언트에게 송신하는 단계는 상기 객체의 현재 상태를 송신하는 단계는 포함하는,
컴퓨터 판독가능 저장 매체. - 제8항에 있어서,
상기 클라이언트로부터 제1 메시지를 수신하는 단계는 클라이언트 객체에 대한 임시 식별자를 수신하는 단계를 포함하고;
상기 객체를 생성하는 단계는 상기 객체에 대한 영구 식별자를 획득하는 단계를 포함하고;
상기 제1 메시지에 대한 응답 메시지를 송신하는 단계는 상기 임시 식별자와 상기 영구 식별자 사이의 매핑을 송신하는 단계를 포함하는,
컴퓨터 판독가능 저장 매체. - 클라이언트와 서버 사이의 통신을 지원하기 위한 시스템으로서,
상기 시스템은,
하나 이상의 프로세서를 포함하는 서버; 및
상기 시스템에서 객체를 관리하도록 구성된 하나 이상의 프로세서를 포함하는 브리지
를 포함하고,
관리하는 것은,
데이터흐름 그래프의 컴포넌트를 나타내는 다중 노드 및 컴포넌트들간 데이터의 흐름을 나타내는 노드들 사이의 링크를 포함하는 데이터흐름 그래프의 컴포넌트의 각각의 특성을 정의하기 위한 하나 이상의 파라미터를 수신하는 인터페이스를 제공하는 단계;
클라이언트로부터 네트워크를 통해 제1 메시지를 수신하는 단계;
상기 제1 메시지에 대한 응답으로 객체를 생성하는 단계;
상기 제1 메시지에 대한 응답 메시지를 상기 클라이언트에게 송신하는 단계;
서버로부터 네트워크를 통해 상기 객체에 대한 변경사항을 수신하는 단계;
상기 객체에 대한 변경사항을 저장하는 단계;
상기 클라이언트로부터 제2 메시지를 수신하는 단계; 및
상기 제2 메시지에 대한 응답 메시지와 함께 상기 저장된 변경사항을 상기 클라이언트에게 송신하는 단계
를 포함하고,
상기 객체는 상기 데이터흐름 그래프의 일부에 대응하고,
상기 인터페이스는 다중 사용자 인터페이스 요소를 상기 데이터흐름 그래프의 컴포넌트들 사이의 의존관계에 기초한 상기 사용자 인터페이스 요소 사이의 관계로 표시하고,
상기 관계는 상기 서버 상에 저장된 스펙에 의하여 정의되는,
시스템. - 제12항에 있어서,
상기 클라이언트로부터 제1 메시지를 수신하는 단계는 클라이언트 객체에 대한 임시 식별자를 수신하는 단계를 포함하고;
상기 객체를 생성하는 단계는 상기 객체에 대한 영구 식별자를 획득하는 단계를 포함하고;
상기 제1 메시지에 대한 응답 메시지를 송신하는 단계는 상기 임시 식별자와 상기 영구 식별자 사이의 매핑을 송신하는 단계를 포함하는,
시스템. - 클라이언트와 서버 사이의 통신을 지원하기 위한 시스템으로서,
상기 시스템은,
하나 이상의 프로세서;
데이터를 서비스하는 수단; 및
상기 시스템에서 객체를 관리하는 수단
을 포함하고,
관리하는 것은,
데이터흐름 그래프의 컴포넌트를 나타내는 다중 노드 및 컴포넌트들간 데이터의 흐름을 나타내는 노드들 사이의 링크를 포함하는 데이터흐름 그래프의 컴포넌트의 각각의 특성을 정의하기 위한 하나 이상의 파라미터를 수신하는 인터페이스를 제공하는 단계;
클라이언트로부터 네트워크를 통해 제1 메시지를 수신하는 단계;
상기 제1 메시지에 대한 응답으로 객체를 생성하는 단계;
상기 제1 메시지에 대한 응답 메시지를 상기 클라이언트에게 송신하는 단계;
상기 데이터를 서비스하는 수단으로부터 네트워크를 통해 상기 객체에 대한 변경사항을 수신하는 단계;
상기 객체에 대한 변경사항을 저장하는 단계;
상기 클라이언트로부터 제2 메시지를 수신하는 단계; 및
상기 제2 메시지에 대한 응답 메시지와 함께 상기 저장된 변경사항을 상기 클라이언트에게 송신하는 단계
를 포함하고,
상기 객체는 상기 데이터흐름 그래프의 일부에 대응하고,
상기 인터페이스는 다중 사용자 인터페이스 요소를 상기 데이터흐름 그래프의 컴포넌트 사이의 의존관계에 기초한 상기 사용자 인터페이스 요소 사이의 관계로 표시하고,
상기 관계는 상기 서버 상에 저장된 스펙에 의하여 정의되는,
시스템. - 클라이언트와 서버 사이의 통신을 지원하기 위한 컴퓨터 프로그램을 저장한, 비일시적 컴퓨터 판독가능 저장 매체로서,
상기 컴퓨터 프로그램은 컴퓨터로 하여금,
컴퓨터 브리지에 의해, 클라이언트로부터 네트워크를 통해 제1 메시지를 수신하는 단계;
상기 제1 메시지에 대한 응답으로 객체를 생성하는 단계;
상기 제1 메시지에 대한 응답 메시지를 상기 클라이언트에게 송신하는 단계;
서버로부터 네트워크를 통해 상기 객체에 대한 변경사항을 수신하는 단계;
상기 객체에 대한 변경사항을 저장하는 단계;
상기 클라이언트로부터 제2 메시지를 수신하는 단계; 및
상기 제2 메시지에 대한 응답 메시지와 함께 상기 저장된 변경사항을 상기 클라이언트에게 송신하는 단계
를 수행하도록 하는 명령을 포함하고,
상기 객체는, 데이터흐름 그래프의 컴포넌트를 나타내는 다중 노드 및 컴포넌트들간 데이터의 흐름을 나타내는 노드들 사이의 링크를 포함하는 데이터흐름 그래프의 일부에 대응하고,
상기 제1 메시지를 수신하는 단계는 중간 데이터에 대한 요청을 수신하는 단계를 포함하고,
상기 객체를 생성하는 단계는 상기 데이터흐름 그래프의 일부를 컴파일하는 단계 및 상기 데이터흐름 그래프의 컴파일된 부분을 실행하여 출력을 출력 데이터세트에 출력하는 단계를 포함하고,
상기 객체를 생성하는 단계는,
상기 중간 데이터를 생성하기 위해 필요한 컴포넌트의 제1 세트를 판단하는 단계;
상기 컴포넌트의 제1 세트에 없는, 상기 데이터흐름 그래프의 컴포넌트를 비활성화하는 단계; 및
상기 출력 데이터세트를 저장하기 위해 상기 데이터흐름 그래프에 결합된 중간 데이터 싱크를 생성하는 단계
를 더 포함하는,
컴퓨터 판독가능 저장 매체. - 제15항에 있어서,
상기 컴포넌트의 제1 세트를 판단하는 단계는, 데이터 소스를 상기 중간 데이터 싱크에 연결하지 않는 링크를 식별하는 단계를 포함하는,
컴퓨터 판독가능 저장 매체. - 제15항에 있어서,
상기 중간 데이터 싱크를 생성하는 단계는
상기 중간 데이터 싱크에 대한 링크가 병렬 데이터 흐름을 나타내는지 판단하는 단계; 및
상기 중간 데이터 싱크로서 병렬 데이터 싱크를 생성하는 단계
를 포함하는,
컴퓨터 판독가능 저장 매체. - 시스템으로서,
하나 이상의 프로세서를 포함하는 서버; 및
상기 시스템에서 객체를 관리하도록 구성된 하나 이상의 프로세서를 포함하는 컴퓨터 브리지
를 포함하고,
관리하는 것은,
상기 컴퓨터 브리지에 의해, 클라이언트로부터 네트워크를 통해 제1 메시지를 수신하는 단계;
상기 제1 메시지에 대한 응답으로 객체를 생성하는 단계;
상기 제1 메시지에 대한 응답 메시지를 상기 클라이언트에게 송신하는 단계;
서버로부터 네트워크를 통해 상기 객체에 대한 변경사항을 수신하는 단계;
상기 객체에 대한 변경사항을 저장하는 단계;
상기 클라이언트로부터 제2 메시지를 수신하는 단계; 및
상기 제2 메시지에 대한 응답 메시지와 함께 상기 저장된 변경사항을 상기 클라이언트에게 송신하는 단계
를 포함하고,
상기 객체는, 데이터흐름 그래프의 컴포넌트를 나타내는 다중 노드 및 컴포넌트들간 데이터의 흐름을 나타내는 노드들 사이의 링크를 포함하는 데이터흐름 그래프의 일부에 대응하고,
상기 제1 메시지를 수신하는 단계는 중간 데이터에 대한 요청을 수신하는 단계를 포함하고,
상기 객체를 생성하는 단계는 상기 데이터흐름 그래프의 일부를 컴파일하는 단계 및 상기 데이터흐름 그래프의 컴파일된 부분을 실행하여 출력을 출력 데이터세트에 출력하는 단계를 포함하고,
상기 객체를 생성하는 단계는,
상기 중간 데이터를 생성하기 위해 필요한 컴포넌트의 제1 세트를 판단하는 단계;
상기 컴포넌트의 제1 세트에 없는, 상기 데이터흐름 그래프의 컴포넌트를 비활성화하는 단계; 및
상기 출력 데이터세트를 저장하기 위해 상기 데이터흐름 그래프에 결합된 중간 데이터 싱크를 생성하는 단계
를 더 포함하는,
시스템. - 제18항에 있어서,
상기 컴포넌트의 제1 세트를 판단하는 단계는, 데이터 소스를 상기 중간 데이터 싱크에 연결하지 않는 링크를 식별하는 단계를 포함하는,
시스템. - 클라이언트와 서버 사이의 통신을 지원하기 위한 시스템으로서,
상기 시스템은,
하나 이상의 프로세서;
데이터를 서비스하는 수단; 및
상기 시스템에서 객체를 관리하는 수단
을 포함하고,
관리하는 것은,
컴퓨터 브리지에 의해, 클라이언트로부터 네트워크를 통해 제1 메시지를 수신하는 단계;
상기 제1 메시지에 대한 응답으로 객체를 생성하는 단계;
상기 제1 메시지에 대한 응답 메시지를 상기 클라이언트에게 송신하는 단계;
상기 데이터를 서비스하는 수단으로부터 네트워크를 통해 상기 객체에 대한 변경사항을 수신하는 단계;
상기 객체에 대한 변경사항을 저장하는 단계;
상기 클라이언트로부터 제2 메시지를 수신하는 단계; 및
상기 제2 메시지에 대한 응답 메시지와 함께 상기 저장된 변경사항을 상기 클라이언트에게 송신하는 단계
를 포함하고,
상기 객체는, 데이터흐름 그래프의 컴포넌트를 나타내는 다중 노드 및 컴포넌트들간 데이터의 흐름을 나타내는 노드들 사이의 링크를 포함하는 데이터흐름 그래프의 일부에 대응하고,
상기 제1 메시지를 수신하는 단계는 중간 데이터에 대한 요청을 수신하는 단계를 포함하고,
상기 객체를 생성하는 단계는 상기 데이터흐름 그래프의 일부를 컴파일하는 단계 및 상기 데이터흐름 그래프의 컴파일된 부분을 실행하여 출력을 출력 데이터세트에 출력하는 단계를 포함하고,
상기 객체를 생성하는 단계는,
상기 중간 데이터를 생성하기 위해 필요한 컴포넌트의 제1 세트를 판단하는 단계;
상기 컴포넌트의 제1 세트에 없는, 상기 데이터흐름 그래프의 컴포넌트를 비활성화하는 단계; 및
상기 출력 데이터세트를 저장하기 위해 상기 데이터흐름 그래프에 결합된 중간 데이터 싱크를 생성하는 단계
를 더 포함하는,
시스템. - 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2399192A4 (en) | 2009-02-13 | 2016-09-07 | Ab Initio Technology Llc | COMMUNICATION WITH DATA STORAGE SYSTEMS |
CA2782414C (en) | 2009-12-14 | 2021-08-03 | Ab Initio Technology Llc | Specifying user interface elements |
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 |
US20150135010A1 (en) * | 2011-09-07 | 2015-05-14 | Scott Thomas MacQuarrie | 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 |
CA2932763C (en) | 2013-12-05 | 2022-07-12 | 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 |
US9423922B2 (en) * | 2013-12-24 | 2016-08-23 | Dropbox, Inc. | Systems and methods for creating shared virtual spaces |
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 |
SG11201701667WA (en) * | 2014-09-02 | 2017-04-27 | Ab Initio Technology Llc | Visually specifying subsets of components in graph-based programs through user interactions |
US9760406B2 (en) | 2014-09-02 | 2017-09-12 | Ab Initio Technology Llc | Controlling data processing tasks |
US10496619B2 (en) | 2014-09-02 | 2019-12-03 | Ab Initio Technology Llc | Compiling graph-based program specifications |
AU2015311999B2 (en) * | 2014-09-02 | 2019-09-19 | Ab Initio Technology Llc | Controlling data processing tasks |
US9933918B2 (en) * | 2014-09-02 | 2018-04-03 | Ab Initio Technology Llc | Specifying control and data connections in graph-based programs |
EP3189422A1 (en) * | 2014-09-02 | 2017-07-12 | AB Initio Technology LLC | Executing graph-based program specifications |
EP2998817B1 (en) * | 2014-09-16 | 2017-06-07 | Aviovision | System for calculating aircraft performance and method for performing the same |
US9880818B2 (en) * | 2014-11-05 | 2018-01-30 | Ab Initio Technology Llc | Application testing |
US10055333B2 (en) | 2014-11-05 | 2018-08-21 | Ab Initio Technology Llc | Debugging a graph |
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 |
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 |
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 |
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 | 苏州优圣美智能系统有限公司 | 一种与数据处理工具交互的数据流建模和处理系统 |
CA3106682A1 (en) | 2018-07-19 | 2020-01-23 | 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 |
CN114063877B (zh) * | 2021-10-29 | 2024-08-16 | 深圳市正浩创新科技股份有限公司 | 储能设备数据显示方法、装置与设备 |
Citations (3)
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
US4901221A (en) * | 1986-04-14 | 1990-02-13 | National Instruments, Inc. | Graphical system for modelling a process and associated method |
US5481741A (en) * | 1986-04-14 | 1996-01-02 | National Instruments Corporation | Method and apparatus for providing attribute nodes in a graphical data flow environment |
US4914568A (en) * | 1986-10-24 | 1990-04-03 | 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 |
US6064812A (en) * | 1996-09-23 | 2000-05-16 | National Instruments Corporation | System and method for developing automation clients using a graphical data flow program |
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 |
JPH10222355A (ja) * | 1997-01-31 | 1998-08-21 | Toshiba Corp | Guiアプリケーション開発装置 |
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 |
US6173438B1 (en) * | 1997-08-18 | 2001-01-09 | National Instruments Corporation | Embedded graphical programming system |
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 |
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 |
US7937665B1 (en) * | 2000-06-13 | 2011-05-03 | National Instruments Corporation | System and method for automatically generating a graphical program to implement a prototype |
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 |
US8146007B2 (en) * | 1999-08-19 | 2012-03-27 | National Instruments Corporation | Converting a first graphical program into an intermediate abstract representation for new graphical program generation |
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 |
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 |
ATE370448T1 (de) | 2000-06-09 | 2007-09-15 | Univ Columbia | Fifo schaltungen mit niedriger verzögerung für gemischte synchrone und asynchrone systeme |
US7164422B1 (en) | 2000-07-28 | 2007-01-16 | Ab Initio Software Corporation | Parameterized graphs with conditional components |
WO2002017082A1 (en) * | 2000-08-22 | 2002-02-28 | 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 |
EP1563389A4 (en) * | 2001-08-01 | 2008-06-25 | Actona Technologies Ltd | VIRTUAL DATA DISTRIBUTION 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 |
AU2003259744A1 (en) | 2002-08-09 | 2004-02-25 | Corticon Technologies, Inc. | Rule engine |
EP1535164B1 (en) | 2002-08-26 | 2012-01-04 | 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 | マルチメディア再生方法およびマルチメディア再生システム、操作画面カスタマイズ用プログラム |
AU2002953555A0 (en) | 2002-12-23 | 2003-01-16 | Canon Kabushiki Kaisha | Method for presenting hierarchical data |
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 |
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 |
EP1665034B1 (en) | 2003-08-13 | 2017-03-22 | National Instruments Corporation | Creating a graphical user interface for selected parameters of a graphical program |
ATE515746T1 (de) | 2003-09-15 | 2011-07-15 | Ab Initio Technology Llc | Datenprofilierung |
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 |
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 |
US20060190480A1 (en) | 2005-02-22 | 2006-08-24 | Transparency Software, Inc. | Generation of names related to organization actions |
US20060190488A1 (en) | 2005-02-22 | 2006-08-24 | Transparency Software, Inc. | System and method for determining information related to user interactions with an application |
US7877350B2 (en) * | 2005-06-27 | 2011-01-25 | Ab Initio Technology Llc | Managing metadata for graph-based computations |
US7716630B2 (en) * | 2005-06-27 | 2010-05-11 | Ab Initio Technology Llc | Managing parameters for graph-based computations |
JP2007011809A (ja) * | 2005-06-30 | 2007-01-18 | Kureo:Kk | 業務フローを搭載した業務管理システム |
AU2006280194A1 (en) * | 2005-08-11 | 2007-02-22 | 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 | プログラム生成装置、プログラム生成方法、及びプログラム生成プログラム |
WO2007134265A2 (en) * | 2006-05-12 | 2007-11-22 | Captaris, Inc. | Workflow data binding |
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 |
AU2007286155B2 (en) | 2006-08-10 | 2013-12-12 | Ab Initio Technology Llc. | Distributing services in graph-based computations |
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 |
US8954482B2 (en) * | 2007-09-20 | 2015-02-10 | 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 |
JP5643654B2 (ja) * | 2008-02-26 | 2014-12-17 | アビニシオ テクノロジー エルエルシー | データ関連性のグラフ表現 |
US20090319494A1 (en) | 2008-06-20 | 2009-12-24 | Microsoft Corporation | Field mapping for data stream output |
JP5331203B2 (ja) | 2008-06-30 | 2013-10-30 | アビニシオ テクノロジー エルエルシー | グラフベース計算におけるデータ記録 |
US20100235495A1 (en) | 2008-09-10 | 2010-09-16 | Salesforce.Com, Inc. | Methods and systems for reducing a load on a multi-tenant database |
EP2399192A4 (en) | 2009-02-13 | 2016-09-07 | Ab Initio Technology Llc | COMMUNICATION 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 |
KR20120115233A (ko) | 2009-11-13 | 2012-10-17 | 아브 이니티오 테크놀로지 엘엘시 | 레코드 포맷 정보의 관리 |
CA2782414C (en) | 2009-12-14 | 2021-08-03 | Ab Initio Technology Llc | Specifying user interface elements |
US9552280B2 (en) | 2010-05-13 | 2017-01-24 | Microsoft Technology Licensing, Llc | Visual analysis and debugging of complex event flows |
KR20150042297A (ko) | 2010-06-15 | 2015-04-20 | 아브 이니티오 테크놀로지 엘엘시 | 동적으로 로딩하는 그래프 기반 계산 |
CN103098053B (zh) | 2010-09-10 | 2017-06-13 | 起元技术有限责任公司 | 基于属性管理数据选择的方法和设备 |
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 |
JP2017520032A (ja) | 2014-04-17 | 2017-07-20 | アビニシオ テクノロジー エルエルシー | 処理環境の統合監視および制御 |
US10055333B2 (en) | 2014-11-05 | 2018-08-21 | Ab Initio Technology Llc | Debugging a graph |
-
2010
- 2010-12-03 CA CA2782414A patent/CA2782414C/en active Active
- 2010-12-03 WO PCT/US2010/058875 patent/WO2011081776A1/en active Application Filing
- 2010-12-03 EP EP10795123A patent/EP2513782A1/en not_active Ceased
- 2010-12-03 JP JP2012543166A patent/JP6084037B2/ja active Active
- 2010-12-03 AU AU2010337218A patent/AU2010337218B2/en active Active
- 2010-12-03 KR KR1020127016762A patent/KR101862235B1/ko active IP Right Grant
- 2010-12-03 CN CN201080063806.5A patent/CN102754072B/zh active Active
- 2010-12-03 CN CN201610878767.3A patent/CN107102848B/zh active Active
- 2010-12-03 US US12/959,985 patent/US10845962B2/en active Active
- 2010-12-14 EP EP10795568A patent/EP2514176A1/en not_active Ceased
- 2010-12-14 US US12/967,533 patent/US8661154B2/en active Active
- 2010-12-14 CN CN201080063818.8A patent/CN102754411B/zh active Active
- 2010-12-14 KR KR1020127017686A patent/KR101784784B1/ko active IP Right Grant
- 2010-12-14 CA CA3012113A patent/CA3012113A1/en active Pending
- 2010-12-14 WO PCT/US2010/060270 patent/WO2011081925A1/en active Application Filing
- 2010-12-14 CA CA2782402A patent/CA2782402C/en active Active
- 2010-12-14 JP JP2012543341A patent/JP5813655B2/ja active Active
- 2010-12-14 AU AU2010337107A patent/AU2010337107B2/en active Active
-
2014
- 2014-02-14 US US14/180,628 patent/US20140164495A1/en not_active Abandoned
-
2015
- 2015-09-16 JP JP2015182520A patent/JP6200472B2/ja active Active
-
2016
- 2016-03-02 AU AU2016201350A patent/AU2016201350B2/en active Active
- 2016-03-11 US US15/068,432 patent/US10129116B2/en active Active
- 2016-11-25 JP JP2016228563A patent/JP6313838B2/ja active Active
Patent Citations (3)
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
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101784784B1 (ko) | 클라이언트-서버 브리지를 사용하는 객체 관리 | |
AU2020273341B2 (en) | Telecommunications product defining and provisioning | |
CN112534398B (zh) | 用于连接器开发和集成通道部署的系统和方法 | |
CN108011768B (zh) | 一种aop拦截式HBase数据存储微服务架构构建方法 | |
US20050027559A1 (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 | |
WO2017053434A1 (en) | Design-time, metadata-based representation of real-time applications and message schemas | |
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 | |
Chattopadhayay | Getting Started with Oracle Tuxedo | |
Aryal | MERN stack with modern web practices | |
Bondili | Online Banking Application with Angular JS, RESTful Web Services and Cassandra Database | |
Kocman | Evaluation of the Applicability of GraphQL for Integration Layers in Heterogeneous Mi-croservice Architectures | |
Trebichavský | API Gateways and Microservice Architectures | |
Peroutka | Webové rozhraní pro nasazování a monitorování Nomad úloh | |
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 | |
Pot’vin et al. | Metric Extensions and Management Plug-ins: by Alex Gorbachev |
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 |