JP2016001502A - クライアント‐サーバ・ブリッジを使用したオブジェクト管理 - Google Patents

クライアント‐サーバ・ブリッジを使用したオブジェクト管理 Download PDF

Info

Publication number
JP2016001502A
JP2016001502A JP2015182520A JP2015182520A JP2016001502A JP 2016001502 A JP2016001502 A JP 2016001502A JP 2015182520 A JP2015182520 A JP 2015182520A JP 2015182520 A JP2015182520 A JP 2015182520A JP 2016001502 A JP2016001502 A JP 2016001502A
Authority
JP
Japan
Prior art keywords
client
message
server
receiving
response
Prior art date
Legal status (The legal status 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 status listed.)
Granted
Application number
JP2015182520A
Other languages
English (en)
Other versions
JP2016001502A5 (ja
JP6200472B2 (ja
Inventor
ファーバー,ジェニファー,エム.
M Farver Jennifer
ゴールドシュラグ,ジョシュア
Goldshlag Joshua
パーメンター,デイビッド,ダブリュー.
W Parmenter David
シェヒター,イアン
Schechter Ian
ウェイクリング,ティム
Wakeling Tim
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ab Initio Technology LLC
Original Assignee
Ab Initio Technology LLC
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 Ab Initio Technology LLC filed Critical Ab Initio Technology LLC
Publication of JP2016001502A publication Critical patent/JP2016001502A/ja
Publication of JP2016001502A5 publication Critical patent/JP2016001502A5/ja
Application granted granted Critical
Publication of JP6200472B2 publication Critical patent/JP6200472B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists
    • 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

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)も含む。本方法は、サーバからオブジェクトに対する変更を受信するステップ(224、406)も含む。本方法は、オブジェクトに対する変更を記憶するステップ(408)も含む。本方法は、クライアントから第2のメッセージを受信するステップ(302、210、410)も含む。本方法は、記憶された変更を第2のメッセージに対する応答と共にクライアントに送信するステップ(320、212、414)も含む。
【選択図】 図7B

Description

(関連出願の相互参照)
本願は、2009年12月14日に出願した米国仮出願第61/286,293号の優先権を主張する。当該仮出願の内容を参照により本明細書に援用するものとする。
本明細書は、クライアント‐サーバ・ブリッジを使用したオブジェクト管理に関する。
いくつかのクライアント‐サーバ・システムは2つの動作方法のうちの1つを採用する。いくつかのシステムは「シン」・クライアントを有する。シン・クライアントは、サーバと独立して動作を実行する能力が極めて低いベニヤをユーザに提供するインターフェース(例えばHTMLウェブページ)を提示する。いくつかのシステムは、クライアント・ハードウェアのリソース(例えばMicrosoft(登録商標) Foundation Classに基づくユーザ・インターフェース)を利用して複雑な動作を実行することが可能なインターフェースを提供する「ファット」クライアントを有する。いくつかの「ファット」・クライアントはサーバ・アプリケーションと同じ又は同様のプログラミング言語で記述され、したがってクライアントとバックエンド・サーバとを緊密に結合することができる(例えばJava(登録商標) RMI又はMicrosoft社のCOM+技術)。
一態様では一般に、クライアントとサーバとの間の通信をサポートする方法は、クライアントから第1のメッセージを受信するステップを含む。本方法は、第1のメッセージに応答してオブジェクトを作成するステップも含む。本方法は、第1のメッセージに対する応答をクライアントに送信するステップも含む。本方法は、サーバからオブジェクトに対する変更を受信するステップも含む。本方法は、オブジェクトに対する変更を記憶するステップも含む。本方法は、クライアントから第2のメッセージを受信するステップも含む。本方法は、記憶された変更を第2のメッセージに対する応答と共にクライアントに送信するステップも含む。
各態様は以下の特徴のうちの1つ又は複数を含む可能性がある。
変更を記憶するステップは、変更ログを作成するステップを含むことができ、記憶された変更をクライアントに送信するステップは、変更ログを送信するステップを含むことができる。変更を記憶するステップは、オブジェクトの現在の状態を更新するステップを含むことができ、記憶された変更を送信するステップは、オブジェクトの現在の状態を送信するステップを含むことができる。クライアントから第1のメッセージを受信するステップは、クライアント・オブジェクト用の一時識別子を受信するステップを含むことができ、オブジェクトを作成するステップは、オブジェクト用の永続識別子を取得するステップを含み、第1のメッセージに対する応答を送信するステップは、一時識別子と永続識別子との間のマッピングを送信するステップを含む。永続識別子を取得するステップは、サーバにサーバ・メッセージを送信するステップを含むことができる。サーバ・メッセージを送信するステップは、サーバ・メッセージを他のサーバ・メッセージでインターリーブするステップを含むことができる。
本方法は、オブジェクトへの関連(interest)をサーバに登録するステップも含むことができる。オブジェクトに対する変更を受信するステップは、サーバによって生成されたイベントに関連するオブジェクトに対する変更を受信するステップを含むことができる。第1のメッセージを受信するステップは、第1のプロトコルを利用するステップを含むことができ、変更を受信するステップは、第1のプロトコルと異なる第2のプロトコルを利用するステップを含む。本方法は、複数のクライアントのために複数のオブジェクトに関する変更を記憶するステップも含むことができる。
オブジェクトは、データフロー・グラフの各種コンポーネントを表す複数のノードと、コンポーネント間のデータの流れを表すノード間のリンクとを含むデータフロー・グラフの一部に対応させてもよい。クライアントから第1のメッセージを受信するステップは、データフロー・グラフのコンポーネントの少なくとも1つの特徴を定義するパラメータの値を受信するステップを含むことができる。本方法は、データフロー・グラフのコンポーネントの特徴をそれぞれ定義する1つ又は複数のパラメータを受信するインターフェースを提供するステップを含むことができる。インターフェースは複数のユーザ・インターフェース要素を表示することができ、ユーザ・インターフェース要素間の関係はデータフロー・グラフのコンポーネント間の依存度に基づくようにしてもよい。これらの関係はサーバ上に記憶された仕様(specification)によって定義可能である。
第1のメッセージを受信するステップは、中間データの要求を受信するステップを含むことができ、オブジェクトを作成するステップは、データフロー・グラフの一部をコンパイルするステップと、データフロー・グラフのコンパイルされた一部を実行することによって出力データセットに対する出力を生成するステップとを含むことができる。オブジェクトを作成するステップは、中間データの生成に必要な第1のコンポーネントセットを判定するステップと、第1のコンポーネントセットに含まれない、データフロー・グラフ内のコンポーネントを無効にするステップと、出力データセットを格納するためにデータフロー・グラフに結合される中間データ・シンクを作成するステップとを含むことができる。第1のコンポーネントセットを判定するステップは、データ・ソースを中間データ・シンクに接続しないリンクを識別するステップを含むことができる。中間データ・シンクを作成するステップは、中間データ・シンクへのリンクが並列データフローを表すことを判定するステップと、中間データ・シンクとして並列データ・シンクを作成するステップとを含むことができる。
別の態様では一般に、コンピュータ可読媒体にクライアントとサーバとの間の通信をサポートするコンピュータ・プログラムが記憶される。コンピュータ・プログラムはコンピュータに、クライアントから第1のメッセージを受信させ、第1のメッセージに応答してオブジェクトを作成させ、第1のメッセージに対する応答をクライアントに送信させ、サーバからオブジェクトに対する変更を受信させ、オブジェクトに対する変更を記憶させ、変更を受信させた後に、クライアントから第2のメッセージを受信させ、記憶された変更を第2のメッセージに対する応答と共にクライアントに送信させる命令を含む。
別の態様では一般に、クライアントとサーバとの間の通信をサポートするシステムは、少なくとも1つのプロセッサを含むサーバと、該システム内のオブジェクトを管理するように構成された少なくとも1つのプロセッサを含むブリッジとを備える。管理は、クライアントから第1のメッセージを受信するステップと、第1のメッセージに応答してオブジェクトを作成するステップと、第1のメッセージに対する応答をクライアントに送信するステップと、サーバからオブジェクトに対する変更を受信するステップと、オブジェクトに対する変更を記憶するステップと、クライアントから第2のメッセージを受信するステップと、記憶された変更を第2のメッセージに対する応答と共にクライアントに送信するステップとを含む。
別の態様では一般に、クライアントとサーバとの間の通信をサポートするシステムは、データ供給手段と、システム内のオブジェクトを管理する手段とを備える。前記管理は、クライアントから第1のメッセージを受信するステップと、第1のメッセージに応答してオブジェクトを作成するステップと、第1のメッセージに対する応答をクライアントに送信するステップと、データ供給手段からオブジェクトに対する変更を受信するステップと、オブジェクトに対する変更を記憶するステップと、クライアントから第2のメッセージを受信するステップと、記憶された変更を第2のメッセージに対する応答と共にクライアントに送信するステップとを含む。
各態様は以下の特徴のうちの1つ又は複数を含む可能性がある。クライアントとサーバとの間の通信を単純化することができること。ロバスト・クライアント向けに開発したサーバを、スクリプティング・クライアントをサポートするように適合することができる。ブリッジとクライアントとの間の連続した接続を必ずしも維持する必要なく、オブジェクトに対する変更を追跡し、クライアントを更新することができる。
以下の説明及び添付の特許請求の範囲を読めば、本発明の他の特徴及び利点が明らかとなるであろう。
ブリッジ接続型クライアント・サーバ・システムの概略図である。 クライアント、ブリッジ、サーバ間の例示的な通信パターンの概略図である。 システムによって実行される例示的な動作のフローチャートである。 システムによって実行される例示的な動作のフローチャートである。 システムによって実行される例示的な動作のフローチャートである。 例示的なデータフロー・グラフの図である。 データフロー・グラフをカスタマイズするインターフェース部分を示す図である。 データフロー・グラフをカスタマイズするインターフェース部分を示す図である。 インターフェース内の例示的な結果表示を示す図である。 例示的なデータフロー・グラフの図である。 ブリッジ接続型クライアント・サーバ・システムの概略図である。
ブラウザを利用して典型的なシン・クライアントで利用可能な機能よりも多くの機能をクライアント・システムで利用することを可能にするツールがいくつか存在する。これらのツールの中には、サーバ・アプリケーションの作成に使用する言語と異なるプログラミング言語で構築されるものもある。異なる技術を使用して構築されたクライアントとサーバとの間の通信を円滑にするために、クライアント・システムとサーバ・システムとの間に、図1に示すような「ブリッジ」通信レイヤが確立される。クライアント102a、102b、102cは、それぞれサーバ104側で実行中の対応するサーバ・セッション116a、116b、116cとブリッジ110を介して通信している。クライアント102a、102b、102cからブリッジ110に送られたメッセージはメッセージ・プロセッサ108に送信され、メッセージ・プロセッサ108はクライアント102a、102b、102cのステートレス・プロトコル、例えばハイパーテキスト・トランスポート・プロトコル(HTTP)をサーバ104から提供されるプロトコル・コレクションに翻訳する。いくつかの構成では、コード生成を使用して転換を自動化することができる。いくつかの構成において、各クライアント、ブリッジ110及びサーバ104は、それぞれ別個のプロセッサ又はコンピュータ・システム上で実行され、ネットワークを介して通信する。クライアント102a、102b、102cはブリッジ110を利用してサーバ104との通信を行うシン・クライアントであってよく、サーバ104と直接通信することが可能な他のファット・クライアント(図示せず)が存在してもよい。
一般には、ブリッジ112を介して単一のクライアント102aが単一のクライアント・セッション114aに接続される。ブリッジは同時に複数のクライアントと対話することもできる。また、単一のクライアント・セッション114aが単一のサーバ・セッション116aに接続される。メッセージ・プロセッサ108は、クライアントからのメッセージに対するサーバからの応答を含めた交換情報をパッケージ化する応答オブジェクトを作成し、応答オブジェクトを適切なクライアント102a、102b、102cに送信する。しかしながら、いくつかの例では他の構成を使用することもできる。例えば、ブリッジ110又はサーバ104との間の通信をロード・バランサによってロード・バランシングしてパフォーマンスを改善することもできる。
矢印120a、120b、120cで示したように、クライアント102a、102b、102cとブリッジ110との間の通信は要求と応答を含む可能性がある。クライアント120a、102b、102cはブリッジ110に対して要求を行い応答を待つことができる。ブリッジ110は、クライアント102a、102b、102cに関するクライアント・セッション114a、114b、114cを作成しても、セッションが既に存在する場合は既存のセッションを使用してもよい。ブリッジ110は、入力メッセージをサーバ104によって理解されるプロトコルに翻訳する。ブリッジ110とサーバ104との間では、リモート・プロシージャ・コール(RPC)、データ(例えば「バイト・ストリーム」や「オブジェクト・ストリーム」)及びイベント(例えば一方向メッセージ)を含めた様々なタイプのメッセージがメッセージ・ストリーム124a、124b、124cの形で送信され得る。
RPCの動作は一般に要求の送信と応答の受信である。この基本パターンには以下の3つのバリエーションがある。暗黙的な完了又は失敗通知なしに応答があるまで待機する又は応答をポーリングするプロセス・スレッドによって特徴付けられる「スタンド・アロン」RPC;成功又は失敗を示す応答が受信されるまでブロッキングを行うプロセス・スレッドによって特徴付けられる「同期」RPC;及び手続きが完了したときにトリガされるコールバックを登録することによって特徴付けられる「非同期」RPCである。いくつかの例において、特定のスレッドによって作成されるRPCは、それらの呼び出し順に実行されることが保証される。
ブリッジ110とサーバ104との間の通信は、RPCを含むメッセージ・ストリームをインターリーブすることを可能にする。複数の異なるRPCメッセージング・ストリームを同時に処理し、メッセージが互いにオーバーラップしてブリッジに到着するようにしてもよい。ブリッジ110は各メッセージを個別に受け入れ処理する。ブリッジ110はキャンセル又は中止(abort)メッセージの送信も可能にする。中止メッセージを受信した場合、ブリッジ110は現在実行中の手順を終了する、又は現在実行中の手続きを終了するようサーバ104に通知する。
ブリッジ110及びサーバ104は、データ・ストリームを使用して通信することができる。データ・ストリームは、ウィンドウ・プロトコルを利用して一時に送信可能なデータ量を制限する論理的なバイト・ストリームである。データ・ストリームは、ブリッジ110とサーバ104との間でRPC要求もしくは応答メッセージ、平文メッセージ又は経過メッセージの一部として受け渡し可能である。データ・ストリームがブリッジ又はサーバに受け渡されると、ストリーム・オブジェクトと共にフロー制御パラメータを受信した接続側のストリームを識別するハンドシェイク手続きにより、データ・ストリームが確立される。ストリーム上で伝送されるデータの量は、サーバ104又はブリッジ110によって規定される制約に基づいて制限することができる。
図2を参照すると、いくつかの構成において、クライアント202は、サーバ104上で実行しサーバ104上に記憶することが可能なプロセス及び情報の表現(representation)を維持することができる。クライアント202は、サーバ104上のプロセス及び情報に生じた変化に気付くことができる。矢印210、212で示したように、クライアント202はブリッジ110と通信することができる。いくつかの構成において、この通信は、クライアント202上に記憶されているデータの表現との間のプログラム的な相互作用によって発生する可能性がある。要求を受信したブリッジ110は、プロセス矢印214、216で示したようにサーバ104と通信することができる。上述のとおり、ブリッジ110とサーバ104との間の通信では、クライアント202とブリッジ104との間の通信よりも強固なプロトコル・セットが利用可能である。矢印224で示したように、メッセージが現在処理中でないとき、サーバ104は基礎となるオブジェクトに対する変更をブリッジ110に通知することができる。例えば、ブリッジ110は所与のオブジェクトへの関連(interest)を登録することができ、サーバ104はオブジェクトの改変時期又はアクセス時期をブリッジ110に通知することができる。いくつかの構成では、クライアント202とブリッジ110との間のステートレス性の通信により、ブリッジ110がクライアント202に直ちに変更を通信することが防止される。このような状況では、情報をブリッジ110上に記憶し、後続の要求に対する応答の一部としてクライアント202に配信することができる。他の構成では、クライアントとサーバとの間で継続的な更新を可能にするデータ・ストリームを確立することができる。
いくつかの構成において、クライアント202は、サーバ104上に存在しない情報の表現を作成すること、例えば新しい顧客オブジェクトを作成することができる。新たに作成されるこの情報には一時識別子を付与することができる。その後、クライアント202は新しい情報を用いていくつかのアクションを実行することができる。いくつかの構成において、クライアント202は、サーバからアクセスされる新しい情報と既存の情報を共に利用する動作を実行することができ、一時識別子を使用して既存の情報を更新することもある。クライアント202は、サーバ104に対して通知を行う前に、この情報を使用して様々な動作を実行することができる。最終的に、クライアント202は、サーバ104上で動作を実行するよう要求する1つ又は複数の要求をブリッジ110に送信することができる。ブリッジ110は、サーバ104上に存在しない新しい情報を特定する。これにより、ブリッジはサーバ上の情報を表すレコードを作成することができ、永続識別子を取得することができる。次いで、ブリッジ110は、メッセージに関して提供される一時識別子と永続識別子との間の調停を行う。応答の一部として、ブリッジ110は、一時識別子と永続識別子との間のマッピングをクライアント202に提供する。
ブリッジ110上では、メッセージ・プロセッサ108によって管理されるメッセージ・サービスが入力メッセージを受信する。いくつかの構成において、メッセージは、複数のオブジェクトを使用して実行可能な複数の動作を特定することができる。既存のオブジェクトもあれば新しいオブジェクトもある。一般には、すべてのオブジェクトが識別子を使用して識別される。既存のオブジェクトは永続識別子を使用して識別され、新たに作成されるオブジェクトは一時識別子を使用して識別される。メッセージ・サービスはどの動作を実行する必要があるかを識別する。
ブリッジ110上のオブジェクト・サービスは、どのオブジェクトが既にサーバ104上に存在するかを識別し検索する。新しい情報に関しては、サーバ104にデータが追加され、永続識別子が割り当てられ、オブジェクト・サービスから永続識別子と一時識別子との間のマッピングが提供される。
図3を参照すると、フローチャート300は、ブリッジ110によって実行される動作の例示的な構成を示す。典型的には、各動作はブリッジが存在するコンピュータ・システムの1つ又は複数のプロセッサによって実行される。動作は典型的には単一の電子デバイスによって実行されるが、いくつかの構成では、動作の実行を2つ以上の電子デバイス(例えばコンピュータ・システム)に分散させてもよい。
動作は、参照を有するメッセージを受信するステップ302を含む。参照は、メモリに記憶されるオブジェクトを指すポインタであっても、例えばオブジェクトの位置を特定する識別子を指すポインタであってもよい。メッセージは複数のオブジェクトを参照可能である。参照は別個のリストの形で提供することも、メッセージ内部でネスト化させることもできる。
動作は、オブジェクトが存在するかどうかを判定するチェック・ステップ304も含む。場合によっては、ブリッジは、オブジェクトが存在するかどうかを確認するメッセージをサーバに送信することができる。他の場合では、動作304と他の動作を組み合わせてもよい。例えば、ブリッジは、サーバ306からのオブジェクトのフェッチを試行する動作を実行することができる。特定の識別子を使用して新しいオブジェクトを識別することもできる。例えば、メッセージに関する特定の範囲のキー、特定のキー・プレフィックス又は別のフィールドを用いてそのオブジェクトが新しいことを示すことができる。ブリッジは、各オブジェクトがメッセージによって参照されるたびに上記の動作を複数回実行してもよい。
動作は、オブジェクトをフェッチするステップ306も含む。場合によっては、ブリッジはサーバからのメッセージ内で識別されるオブジェクトをフェッチすることができる。他の場合では、ブリッジはローカル・ストレージ内のオブジェクトのローカル・コピーをキャッシュすることができる。サーバにメッセージを送信する前に、ブリッジはそれ自体のローカル・ストレージをチェックしてオブジェクトの有無を確認し、オブジェクトが発見された場合はクライアントに直接応答を返す。上述のとおり、オブジェクトのローカル・コピーは、バック・チャネル通信を介してサーバ上のコピーと同期状態を維持することができる。いくつかの実装環境では、ブリッジはいくつかのサーバと相互作用することができ、また、ルーティング・テーブルを使用してオブジェクトがどのサーバ上に位置するかを判定することができる。
動作は、何らかの更新が保留状態にあるかどうかを判定するチェック・ステップ308も含む。いくつかの構成において、ブリッジはオブジェクトのローカル・コピーに加えられた変更をキャッシュすることができる。これらの変更は特定のメモリ・ロケーション、テーブル又は他の記憶装置に記憶可能である。これらの変更はオブジェクト・タイプ及び一次キーに基づいて識別可能であり、オブジェクトはグローバル・ユニーク識別子に基づいて識別可能である。
動作は、更新を結果に追加するステップ310も含む。あるオブジェクトについて更新が保留状態にあることがブリッジによって識別されると、ブリッジはそれらの更新のリストをコンパイルし、それらをクライアントに配信すべき応答メッセージに添付することができる。
動作は、オブジェクトを作成するステップ312も含む。場合によってはオブジェクトが存在しないこともあり、その場合はブリッジが新しいオブジェクトを作成する。この処理は一般にサーバにメッセージを送信することによって達成される。新たに作成されるオブジェクトは一般に、クライアントによって使用される識別子と異なる新しい識別子を含む。
動作は、マッピングを作成するステップ314も含む。例えば、ブリッジは、クライアント識別子とオブジェクト作成時に提供される永続識別子とをペアにするマッピングを作成する。クライアントがマッピングに気付くと、クライアントはそれ自体の元の識別子の使用を停止し、その代わりに後続のすべての通信につき永続識別子を利用することができる。
動作は、マッピングを結果に追加するステップ316も含む。いくつかの構成では、クライアントにマッピングを通信するために、ブリッジはマッピングを応答メッセージに追加する。
動作は、メッセージを処理するステップ318も含む。ブリッジは、すべての必要なオブジェクトを同定しフェッチし作成した後に、要求されている動作を実行する。いくつかの実装環境において、この動作は1つ又は複数のメッセージをサーバに送信するステップを含むことができる。いくつかの実装環境において、ブリッジによってサポートされるメッセージはサーバによってサポートされるメッセージと同一である。この場合は、クライアントとサーバとの間のメッセージの翻訳をサポートするのに必要なプログラミングを自動的に生成してもよい。
動作は、結果をクライアントに送信するステップ320も含む。例えば、メッセージが処理されると、そのメッセージの結果が更新及びマッピングと組み合わされ、クライアントに返される。
図4を参照すると、フローチャート400は、ブリッジ110によって実行される動作の他の例示的な構成を示す。典型的には、動作は、ブリッジが存在するコンピュータ・システムの1つ又は複数のプロセッサによって実行される。動作は典型的には単一の電子デバイスによって実行されるが、いくつかの構成では、動作の実行を2つ以上の電子デバイス(例えばコンピュータ・システム)に分散させてもよい。
動作は、クライアントから第1の要求を受信するステップ402を含む。クライアントから受信された要求により1つ又は複数のオブジェクトが作成され、又はサーバがそれらのオブジェクトにアクセスする可能性がある。これらのオブジェクトは、後のアクセスの性能を改善するためにブリッジ上にキャッシュしてもよい。
動作は、結果をクライアントに送信するステップ404も含む。場合によっては、要求に対する応答がクライアントに送信される。要求の処理中に作成又はアクセスされたオブジェクトをブリッジ上のローカル・データ・ストア、例えばメモリ又はデータベースに保持することもできる。いくつかの構成では、オブジェクトにアクセスすることを望むすべてのクライアントに共通する、オブジェクトの1つの共通コピーを記憶することもできる。他の構成では、各クライアントがブリッジ上に記憶される個々のコピーを有するように、オブジェクトをクライアント識別子と共に記憶することができる。他の構成では、クライアントがオブジェクトを修正しない限り共通のコピーがブリッジ上に記憶され、変更を含むオブジェクトの個々のバージョンがクライアントのために維持される。
動作は、オブジェクトに対する更新を受信するステップ406も含む。例えば、ブリッジはサーバからオブジェクトの更新を受信する可能性がある。更新は、データ・ストリーム又はイベントベース通信を介してサーバから送信することができる。
動作は、更新を記憶するステップ408も含む。いくつかの構成では、オブジェクトに関して受信された更新を特定のロケーションに記憶することができる。いくつかの構成において、変更は、変更されたフィールド及び値並びに変更発生時間を列挙した監査証跡(audit trail)として記憶することができる。他の構成において、変更は、ブリッジが変更の通知を受けた時期に基づいて追跡することができる。また他の構成では、単一の値しか変更されていない場合でも全体のオブジェクトが更新される可能性がある。動作は、やはりブリッジによって処理される任意の数の付加的な要求をクライアントから受信するステップも含むことができる。それらの要求の結果をクライアントに返す際は、オブジェクトに対する更新を含めてもよい。本例は、クライアントから第2の要求を受信するステップ410と、更新を結果に追加するステップ412とを含む。ブリッジは、サーバから受信された、サーバ上に記憶されているオブジェクトに対する変更を、クライアントに送信される応答メッセージに追加することができる。場合によっては、ブリッジは、クライアントのメッセージを処理した結果オブジェクトに対して発生した変更を追加することもできる。動作は、結果をクライアントに送信するステップ414も含む。
図5を参照すると、フローチャート500は、ブリッジ110と相互作用するクライアント(図1では102a、102b、102c)によって実行される動作の例示的な構成を示す。典型的には、動作は、クライアントが存在するコンピュータ・システムの1つ又は複数のプロセッサによって実行される。動作は典型的には単一の電子デバイスによって実行されるが、いくつかの構成では、動作の実行を2つ以上の電子デバイス(例えばコンピュータ・システム)に分散させてもよい。
動作は、ブリッジにメッセージを送信するステップ502を含む。例えば、クライアントは、ブリッジに対してサーバ上に記憶されているオブジェクトに関するアクションを実行するよう要求するメッセージを送信することができる。
動作は、ブリッジから応答を受信するステップ504も含む。例えば、クライアントは、要求されたアクションを実行した結果を含む応答をブリッジから受信する。
動作は、マッピングをチェックするステップ506も含む。場合によっては、クライアントがブリッジから応答を受信したときに、クライアントは更新されたマッピングがメッセージに添付されているかどうかをチェックする。
更新されたマッピングが存在する場合、動作は、参照を更新するステップ508を含む。例えば、クライアントは、一時識別子で作成した新しいオブジェクトを更新し、オブジェクト作成時に割り当てられた一時識別子をサーバによって割り当てられた永続識別子に置き換える。
動作は、オブジェクト更新の有無をチェックするステップ510も含む。例えば、クライアントは応答をチェックして既存のオブジェクトがサーバ側で更新されたかどうかを確認する。更新された場合には、動作は、クライアント側でオブジェクトを更新するステップ512を含む。例えば、クライアントは、メッセージに含まれている変更を、クライアント側に現時点で記憶されているオブジェクトの任意のローカル・コピーに適用することができる。
動作は、結果を処理するステップ514も含む。例えば、サーバからの応答メッセージは、クライアントが結果に基づいて所定の措置をとることを可能にする情報をクライアントに伝達することができる。応答メッセージは、要求された動作が成功したのかそれとも失敗したのかを示すことができる。応答メッセージは、要求に関連するオブジェクト及び他の情報も含むことができる。例えば、特定の顧客オブジェクトに対するアクセス要求に対しては、応答時に顧客オブジェクトを返すことができる。
ブリッジを利用するシステムの一例は、非専門家ユーザがパラメータ化されたデータフロー・グラフを構成することを可能にするユーザ・インターフェースを生成するシステムである。データフロー・グラフは、1つ又は複数のデータ・ソースに由来するデータを処理するデータフロー・グラフ実行環境内で実行されるコンピュータ・プログラムである。データ・ソースに由来するデータはデータフロー・グラフに従って操作及び処理され、1つ又は複数のデータ・シンクにエクスポートされる。データ・ソース及びシンクとしては、例えばファイル、データベース、データ・ストリーム又はキューを挙げることができる。データフロー・グラフは、それぞれ少なくとも1つのデータ入力に由来するデータを処理し、少なくとも1つのデータ出力にデータを提供するコードを含むデータ処理コンポーネントを表すノードと、データ・ソース及び/又はシンクにアクセスするデータ・セット・オブジェクトを表すノードとを含む有向グラフとして表現される。これらのノードは、データ・ソースを起点としデータ・シンクを終点とする、コンポーネント間のデータの流れを表す有向リンクで接続される。上流のコンポーネントのデータ出力ポートが下流のコンポーネントのデータ入力ポートに接続される。データフロー・グラフは、データ・セット・オブジェクトによって表される異なるデータ・ソース及び異なるデータ・シンクに再生利用可能である。データフロー・グラフの実装に使用されるデータ構造及びプログラムコードは、例えば異なるソース及びシンクを容易に置き換え得るようにパラメータ化することにより、複数の異なる構成をサポートすることができる。さらに、いくつかの構成では、パラメータを利用することによりあるコンポーネント又は一連のコンポーネントを迂回することができるようにデータフロー・グラフの流れを改変することもできる。
実行環境は、UNIX(登録商標)オペレーティング・システムのような適切なオペレーティング・システムの制御下で、1つ又は複数の汎用コンピュータ上でホストすることができる。例えば、実行環境としては、複数の中央処理装置(CPU)を、ローカル(例えばSMPコンピュータのようなマルチ・プロセッサ・システム)もしくはローカル分散(例えばクラスタ又はMPPとして結合された複数のプロセッサ)、又はリモートもしくはリモート分散(例えばローカル・エリア・ネットワーク(LAN)及び/もしくはワイド・エリア・ネットワーク(WAN)を介して結合された複数のプロセッサ)、又はこれらの任意の組み合わせにおいて使用するコンピュータ・システム構成を含めた複数ノード並列計算環境(multiple-node parallel computing environment)を挙げることができる。
データフロー・グラフの構成は、その性質上場合によっては高度に専門的であることもある。特定のビジネス目的を達成するために作成されるが、グラフの基本的な構造及び構成は技術的な考慮事項に基づいて決定される。例えば、グラフ・コンポーネントは、再利用性を最大化する又は並列処理をサポートするものが選択される可能性がある。一方、グラフの使用方法及び使用場所はビジネス決定に大きく左右される可能性がある。パラメータ化されたデータフロー・グラフに関連するいくつかのパラメータを使用して、ビジネス・ユーザは、データフロー・グラフの実装環境に隠された技術的な複雑さを理解する必要なく、データフロー・グラフをカスタマイズすることが可能となる。パラメータ化されたデータフロー・グラフは、カスタマイズを単純化し再利用を容易にする。
データフロー・グラフを構築するパラメータ値を識別するためのインターフェースをクライアント・マシン上に提示することができる。いくつかの実装環境において、クライアントは、パラメータ・インターフェースを提供するクライアント上のウェブ・ブラウザを使用して、また一定のクライアント・サイド処理能力を提供するスクリプト言語を使用して、サーバ上で実行中の開発環境にアクセスすることができる。スクリプト言語は、サーバと通信してパラメータを更新し、他の必要な動作を実行することができる。この通信はブリッジ・マシンを介して行うことができ、ブリッジ・マシンは、クライアントと、構築対象のグラフに関するオブジェクト及び関連パラメータ値が記憶される開発環境を実行するサーバとの間の通信を翻訳する。
例えば、図6Aを参照すると、データフロー・グラフ602は、データ・ソース606a、606b、コンポーネント608a〜608c、610及びデータ・シンク612を含むことができる。各ソース、コンポーネント及びシンクはそれぞれ一組のパラメータ604a〜604gと関連付けることができる。あるソース、コンポーネント又はシンクのパラメータを使用して他のソース、コンポーネント又はシンクのパラメータを評価することができる。ソース606a、606bは、コンポーネント608a、608cの入力ポートに接続されている。コンポーネント608aの出力ポートは、コンポーネント608bの入力ポートに接続されている。コンポーネント610の出力ポートはデータ・シンク612に接続されている。これらのソース、コンポーネント及びシンク間の接続によってデータフローが定義される。
いくつかのデータ・ソース、コンポーネント又はシンクは、グラフの挙動の一部を定義可能な入力パラメータ604a〜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〜604gの各パラメータを組み合わせ、技術的な考慮事項ではなくビジネス上の考慮事項が反映された、ユーザと相互作用する異なるグループに再編成することができる。ユーザ入力に基づいて各パラメータの値を受け取るユーザ・インターフェースは、パラメータ間の関係に従って、サーバ上の開発環境の諸側面に必ずしも制約されない柔軟な手法で様々なパラメータを表示することができる。例えば、図6Bを参照すると、アイコンがパラメータ間の依存度を表す関係と共に表示されるユーザ・インターフェースを提示することができる。本例では、パラメータは、第1のソース・データセットのパラメータを表す第1のソース・アイコン624と、第2のソース・データセットのパラメータを表す第2のソース・アイコン626と、シンク・データセットのパラメータを表すシンク・アイコン630と、構成対象のデータフロー・グラフの1つ又は複数のコンポーネントのパラメータを表し、それらとソース・データセット及びシンク・データセットとの関係を示す変換アイコン628とで表される第1のパラメータ群に分割される。このパラメータのグループ化は、ユーザがクライアント上のユーザ・インターフェース内でデータフロー・グラフのパラメータとどのように相互作用するか、及びアイコン624、626、628、630のようなユーザ・インターフェース要素同士をどのように相関付け、ユーザ・インターフェース内における提示のために配置するかを定義する格納済みの仕様622に基づいて行うことができる。いくつかの実装環境において、仕様はXMLドキュメントである。仕様は、データフロー・グラフ・コンポーネントを識別することもでき、また、後で詳述するようにユーザがグラフを構成している間、例えばサンプル・データを閲覧している間にいくつかの機能を実行可能な特定のコンポーネントを識別することもできる。
場合によっては、仕様は、パラメータをどのように表示すべきかに関する命令を含むことができる。例えば、図6B及び図6Cを参照すると、仕様622は、ソース・データセットアイコン624との相互作用に応答して、あるパラメータはユーザが入力可能なテキスト・ボックス702として表示すべきであり、別のパラメータは事前に追加された値(例えば仕様において提供される値のリスト又はルックアップ・テーブルにおいて提供される値)を有するドロップ・ダウン・リスト704とすべきであり、また別のパラメータはラジオ・ボタン706として表示すべきこと等を示すことができる。したがって、仕様は、データフロー・グラフを、ビジネス・ユーザ及び/又は非専門家ユーザに合わせて調整可能となるようにカスタマイズするために、パラメータをどのようにユーザに提示すべきかに関して柔軟性をもたらす。例えば、ユーザ・インターフェースは、データベースに対して実行されるクエリ(例えばSQLクエリ)に基づく値、又はファイル・システム上に位置するファイルに由来する値を入力することができる。場合によっては、仕様は、ユーザがアプリケーションに関するデータのソースを選択することを可能にすることができる。例えば、仕様は、ユーザがデータベース、テーブル又はファイルを選択することを可能にすることができる。1つ又は複数のパラメータをグループ単位で一緒に表示してもよい。例えば、仕様は、複数のパラメータをユーザ・インターフェース上のボックス内に一緒に提示すべきことを定めることができる。いくつかの実施態様では、ユーザ・インターフェースを列及び行に分割することができる。仕様は、パラメータを表示すべきユーザ・インターフェースのセクションに基づいて、パラメータ又はパラメータのコレクションの位置を識別することができる。
場合によっては、仕様は、ユーザがコンポーネントによって処理されるフィールドを選択するための能力を含むこともできる。利用可能なフィールドをユーザ・インターフェース内に表示することができ、ユーザはパラメータ・セットに含めるための1つ又は複数のフィールドを選択することができる。仕様は、ユーザが特定の(例えばステートが「FL」である)フィールドの値を選択することによってデータセットをフィルタリングすることを可能にすることができる。
場合によっては、仕様は、ビジネス・ユーザがパラメータ値を入力する順序を制約することもできる。点線で示したように、ユーザがいくつかの事前定義条件を満足するまでシンク630に関連するパラメータがユーザに見えないようにしてもよい。例えば、ユーザが特定のパラメータ値を提供するまで、又はパラメータ・セットを入力するまで、データ・シンク・パラメータ・セットがユーザに見えないようにしてもよい。必要に応じて、パラメータに値を割り当てなければならないことを示すパラメータを定義することもできる。
場合によっては、仕様はユーザの権限に基づいて異なるパラメータを提示することもできる。例えば、ユーザの権限が「管理者」でない限り、テンプレートは一群のテキスト入力コントロール及びリンクを隠蔽又は無効にすることができる。いくつか実装環境において、システムは、ユーザがユーザ・インターフェース内部からサーバ上のグラフの実行を開始することにより、パラメータ値によって構成されるとおりサンプル・データをグラフを介して実行し、サンプル実行の結果702をユーザ・インターフェースにおいてユーザに表示することを可能にすることができる(図7A参照)。結果702は、どのようなタイプのデータが結果702に含まれるかに応じて、ユーザ・インターフェースの適切なブラウザ又はエディタで閲覧することができる。本例において、結果702は、サンプル・データ内のレコードに対応する行と、異なるフィールドのレコード内の値に対応する列とを含む。テストデータを使用したサーバ上のグラフの実行は、クライアントの様々なアクションのいずれかに応答して、例えばユーザがパラメータの値を供給したことに応答してトリガすることができる。
図7Bを参照すると、いくつかの実装環境において、システムはウォッチャーを追加することによりシステム内を流れるデータをキャプチャすることができる。例えば、データフロー・グラフ710は、データ・ソース712、726、コンポーネント714、720、728、730及びデータ・シンク732を含む。ユーザは、データフロー・グラフ内の任意のリンクにウォッチポイントを追加することができる。例えば、ユーザは、コンポーネント720とコンポーネント730との間のリンクにウォッチポイント722を追加することができる。システムは、ウォッチポイント722を検出しグラフの修正バージョンを生成して、コンポーネント720からのデータの流れを、ウォッチポイントに関するデータが格納される中間データ・シンク724にリダイレクトする。いくつかの実装環境において、ウォッチポイント722は、中間データ・シンク724及びデータ・コンポーネント730にデータを流すリプリケータとして実装される。
いくつかの実装環境において、システムは、コンポーネント728、730並びにデータ・ソース726及びデータ・シンク732がウォッチポイント722に関するデータを生成する必要がないことを判定する。システムはシステム・リソースを節約するために、これらの不必要なコンポーネントを無効にすることを選択することができる。さらに、不必要なコンポーネントを無効にすることにより、使用されていないコンポーネント(例えばコンポーネント728)の下流のコンポーネント(例えばコンポーネント730)について実装又は構成を完了させなくてもよくなるため、開発が単純化されるという付加的な利点がもたらされる可能性がある。これらのコンポーネントを無効にする際は、開発者がグラフ全体を完全に構成する必要なしにシステムがグラフの一部を実行することが可能となる。
いくつかの実装環境において、システムはウォッチポイントに関するデータを生成する必要がないリンクを識別する。例えば、システムは、任意のソース(例えばデータ・ソース712)を中間データ・シンク724に接続しないリンクを識別することができる。これらのリンクにデータを提供するコンポーネントを除外することができる。
いくつかの実装環境において、システムは、先行するウォッチポイントからのデータを利用して後続のウォッチポイントに関するデータを判定することができる。例えば、グラフの以前の実行時に、開発者がコンポーネント714とコンポーネント720との間のリンクにウォッチポイント716を追加したものとする。ウォッチポイント716に関するデータはデータ・シンク718に格納する。後続の実行時に、開発者は、データ・ソース712又はデータ・コンポーネント714を変更又は修正せずにウォッチポイント722を追加し、システムは、コンポーネント720のデータ・ソースとしてデータ・シンク718内のデータを使用することができ、その結果データ・ソース712及びコンポーネント714を無効にすることができる。
システムは、データフローが通常フローであるのかそれとも並列フローであるのかを検出することができる。並列フローとは、区画化されたデータフローである。並列フロー上のウォッチポイントは、データフロー毎に別々のデータ・シンクを使用する。例えば、6つの別々の区画に区画化された並列データフローは、6つの別々のデータ・シンクにおいてウォッチデータを生成する。
グラフは複数フェーズに分割することもできる。より前のフェーズのコンポーネントは、より後のフェーズのコンポーネントよりも早くすべての実行を完了させる。例えば、コンポーネント730がコンポーネント728よりも後のフェーズに存在するとすれば、コンポーネント728からのデータフローは、コンポーネント728がすべてのデータの処理を完了させるまでキャッシュされることになる。コンポーネント728がすべてのデータの処理を完了させると、コンポーネント730がデータの処理を開始する。いくつかのシナリオにおいて、データフロー・グラフ710は、他のコンポーネント、例えばルックアップ・テーブルに接続されていないコンポーネント734のようなコンポーネントを含む。非接続コンポーネントは、当該コンポーネントがウォッチポイントよりも後のフェーズに存在する場合はデータフロー・グラフから除外され、当該コンポーネントがウォッチポイントと同じ又はウォッチポイントよりも前のフェーズに存在する場合はデータフロー・グラフに追加される。
図8を参照すると、クライアント・システム802は、上述のユーザ・インターフェース804をユーザに表示することができる。ユーザ・インターフェース804を通じたユーザとの対話に基づいて生成されるパラメータ・セット814はサーバ808上に記憶することができる。この結果、ユーザ・インターフェース804によって加えられた変更がクライアント802からブリッジ806を介してサーバ808に送信される。矢印820で示したように、クライアント802は、あるフォーマットのメッセージ、例えば簡易オブジェクト・アクセス・プロトコル(SOAP)を使用して送られるメッセージをブリッジ806に送信する。ブリッジ806は、このメッセージを新しいフォーマットに翻訳し、必要に応じてサーバ808とのクライアント・セッションを開始する。矢印822で示したように、ブリッジ806は、サーバ808によって理解されるフォーマットのメッセージ、例えばCOM+メッセージをサーバ808に送信する。サーバ808はメッセージを受信しパラメータ・セットを更新する。矢印824で示したように、サーバ808は、入力がクライアント802によって受信されたことに起因するパラメータ・セットの変更を含む応答を、ブリッジ806に送信する。ブリッジ806はこのメッセージを復号化し、クライアント802に関する応答メッセージを作成する。矢印826で示したように、ブリッジ806はクライアント802に応答メッセージを送信する。クライアント802は、上記の変更を反映するためにユーザ・インターフェース804の更新を行う。ユーザ・インターフェースの更新は、上述の前提条件の不成立によって以前に隠蔽されたコンポーネントがあればそれらのコンポーネントを表示すること含む。
ユーザは、完全であることも完全でないこともある現在のパラメータ・セットに基づくサンプル・データを使用して構築されるグラフを実行することを望んでいることをクライアント802に示すこともできる。上述のとおり、クライアント802はブリッジ806を介してサーバ808にメッセージを送信する。サーバ808は、変更があればそれらをパラメータ・セットに適用し、サーバ上で実行中のプロセス816がデータフロー・グラフをコンパイルする。サーバは、コンパイルされたデータフロー・グラフを実行し、サンプル・データセット810、812からのデータを受け入れる。実行されたデータフロー・グラフは、出力データセット818に対して要求された出力を生成する。データフロー・グラフの出力はクライアント802から要求されている中間データであって、必ずしもデータフロー・グラフの完全な実行によって生成されるデータとは限らない。
いくつかの実装環境において、サーバ808は、例えば定義済みのパラメータが完全なグラフのコンパイルを可能にするには不十分である場合、又はクライアント802がクライアント802によって構成されているデータフロー・グラフ内の特定のリンクに関する中間データを確認することを要求した場合は、データフロー・グラフのサブセットをコンパイルすることができる。コンパイル及び実行すべきデータフロー・グラフのサブセットを決定するために、サーバは、中間データ・シンクがウォッチポイントではなく構成対象のリンクに関して追加される、図7Bに関して上述したプロセスを使用することができる。
上述のとおり、結果データはサーバ808からブリッジ806を介してクライアント802に送信される。
上述のオブジェクト管理手法は、コンピュータ上で実行されるソフトウェアを使用して実施することができる。例えば、ソフトウェアは1つ又は複数のコンピュータ・プログラムの手続きを形成する。これらの手続きは、それぞれ少なくとも1つのプロセッサと、少なくとも1つのデータ記憶システム(揮発性及び不揮発メモリ並びに/又は記憶素子を含む)と、少なくとも1つの入力装置又はポートと、少なくとも1つの出力装置又はポートとを含む1つ又は複数のプログラムされた又はプログラム可能なコンピュータ・システム(分散アーキテクチャ、クライアント/サーバ・アーキテクチャ、グリッド・アーキテクチャのような様々なアーキテクチャであってよい)上で実行される。ソフトウェアは、例えば計算グラフの設計及び構成に関する他のサービスを提供する、より大きいプログラムの1つ又は複数のモジュールを形成することができる。グラフの各ノード及び要素は、コンピュータ可読媒体に記憶されるデータ構造として、又はデータリポジトリに格納されるデータモデルに適合する他の編成データとして実装可能である。
ソフトウェアは、汎用又は専用プログラマブル・コンピュータによって読み取り可能なCD‐ROMのような記憶媒体上で提供されることも、ネットワークの通信媒体を経てそれ自体が実行されるコンピュータに配信(伝搬信号の形で符号化)されることもある。すべての機能を専用コンピュータ上で実行することも、コプロセッサのような専用ハードウェアを使用して実行することもできる。ソフトウェアは、ソフトウェアによって指定される異なる計算部分を異なるコンピュータが実行する分散形式で実装されることもある。このようなコンピュータ・プログラムは、記憶媒体又は記憶装置がコンピュータ・システムによって読み取られたときに本明細書に記載した手順を実行するようにコンピュータを構成及び操作するために、それぞれ汎用又は専用プログラマブル・コンピュータによって読み取り可能な記憶媒体又は記憶装置(例えば固体メモリもしくは固体メディア又は磁気メディアもしくは光学メディア)に記憶又はダウンロードされることが好ましい。本発明のシステムは、コンピュータ・プログラムによって構成される、コンピュータ読み取り可能な記憶媒体としても実装可能であり、このように構成した記憶媒体により、コンピュータ・システムを事前に定義された特定の形式で動作させ、本明細書に記載した機能を実行させるようにすることができる。
以上、本発明のいくつかの実施形態について説明してきたが、本発明の趣旨及び範囲から逸脱しない様々な修正形態が可能であることが理解されるであろう。例えば、上記で説明したステップの中には順序不同のものも存在する可能性があり、したがって本明細書に記載したのと異なる順序で実行することが可能である。
上記の説明は単なる例示であって本発明の範囲を限定するものではないことを理解されたい。本発明の範囲は、添付の特許請求の範囲によって定義されるものである。例えば、全体の処理に実質的に影響を及ぼさない限り、上記のいくつかの機能ステップを異なる順序で実行することも可能である。他の実施形態も特許請求の範囲に含まれる。

Claims (22)

  1. クライアントとサーバとの間の通信をサポートする、ブリッジによって実行される方法であり、
    クライアントから第1のメッセージを受信するステップと、
    前記第1のメッセージに応答してオブジェクトを作成するステップと、
    前記第1のメッセージに対する応答を前記クライアントに送信するステップと、
    サーバから前記オブジェクトに対する変更を受信するステップと、
    前記オブジェクトに対する変更を記憶するステップと、
    前記変更を受信するステップに続いて、前記クライアントから第2のメッセージを受信するステップと、
    記憶された前記変更を前記第2のメッセージに対する応答と共に前記クライアントに送信するステップと
    を含む方法。
  2. 変更を記憶する前記ステップは、変更ログを作成するステップを含み、記憶された前記変更を前記クライアントに送信する前記ステップは、前記変更ログを送信するステップを含む請求項1に記載の方法。
  3. 前記変更を記憶するステップは、前記オブジェクトの現在の状態を更新するステップを含み、記憶された前記変更を前記クライアントに送信する前記ステップは、前記オブジェクトの前記現在の状態を送信するステップを含む請求項1に記載の方法。
  4. 前記クライアントから第1のメッセージを受信する前記ステップは、クライアント・オブジェクト用の一時識別子を受信するステップを含み、前記オブジェクトを作成するステップは、前記オブジェクト用の永続識別子を取得するステップを含み、前記第1のメッセージに対する応答を送信する前記ステップは、前記一時識別子と前記永続識別子との間のマッピングを送信するステップを含む請求項1に記載の方法。
  5. 前記永続識別子を取得するステップは、前記サーバにサーバ・メッセージを送信するステップを含む請求項4に記載の方法。
  6. 前記サーバ・メッセージを送信するステップは、前記サーバ・メッセージを他のサーバ・メッセージでインターリーブするステップを含む請求項5に記載の方法。
  7. 前記オブジェクトへの関連を前記サーバに登録するステップをさらに含む請求項1に記載の方法。
  8. 前記オブジェクトに対する変更を受信するステップは、前記サーバによって生成されたイベントに関連する前記オブジェクトに対する変更を受信するステップを含む請求項7に記載の方法。
  9. 前記第1のメッセージを受信するステップは、第1のプロトコルを利用するステップを含み、前記オブジェクトに対する変更を受信するステップは、前記第1のプロトコルと異なる第2のプロトコルを利用するステップを含む請求項1に記載の方法。
  10. 複数のクライアントのために複数のオブジェクトに関する変更を記憶するステップをさらに含む請求項1に記載の方法。
  11. 前記オブジェクトは、データフロー・グラフのコンポーネントを表す複数のノードと、コンポーネント間のデータの流れを表すノード間のリンクとを含むデータフロー・グラフの一部に対応する、請求項1に記載の方法。
  12. 前記クライアントから第1のメッセージを受信する前記ステップは、前記データフロー・グラフのコンポーネントの少なくとも1つの特徴を定義するパラメータの値を受信するステップを含む請求項11に記載の方法。
  13. 前記データフロー・グラフのコンポーネントのそれぞれの特徴を定義する1つ又は複数のパラメータを受信するインターフェースを提供するステップをさらに含む請求項11に記載の方法。
  14. 前記インターフェースは複数のユーザ・インターフェース要素を表示し、前記ユーザ・インターフェース要素間の関係は前記データフロー・グラフのコンポーネント間の依存度に基づく請求項13に記載の方法。
  15. 前記関係は前記サーバ上に記憶された仕様によって定義される請求項14に記載の方法。
  16. 前記第1のメッセージを受信するステップは、中間データの要求を受信するステップを含み、
    前記オブジェクトを作成するステップは、
    前記データフロー・グラフの前記一部をコンパイルするステップと、
    前記データフロー・グラフの前記コンパイルされた一部を実行することによって出力データセットに対する出力を生成するステップと
    を含む請求項11に記載の方法。
  17. 前記オブジェクトを作成するステップは、
    前記中間データの生成に必要な第1のコンポーネントセットを判定するステップと、
    前記第1のコンポーネントセットに含まれない、前記データフロー・グラフ内のコンポーネントを無効にするステップと、
    前記出力データセットを格納するために前記データフロー・グラフに結合される中間データ・シンクを作成するステップと
    を含む請求項16に記載の方法。
  18. 前記第1のコンポーネントセットを判定するステップは、データ・ソースを前記中間データ・シンクに接続しないリンクを識別するステップを含む請求項17に記載の方法。
  19. 前記中間データ・シンクを作成するステップは、前記中間データ・シンクへのリンクが並列データフローを表すことを判定するステップと、前記中間データ・シンクとして並列データ・シンクを作成するステップとを含む請求項17に記載の方法。
  20. クライアントとサーバとの間の通信をサポートするコンピュータ・プログラムが記憶されたコンピュータ可読媒体であり、前記コンピュータ・プログラムは、ブリッジに、
    クライアントから第1のメッセージを受信させ、
    前記第1のメッセージに応答してオブジェクトを作成させ、
    前記第1のメッセージに対する応答を前記クライアントに送信させ、
    サーバから前記オブジェクトに対する変更を受信させ、
    前記オブジェクトに対する変更を記憶させ、
    前記変更を受信させた後に、前記クライアントから第2のメッセージを受信させ、
    記憶された前記変更を前記第2のメッセージに対する応答と共に前記クライアントに送信させる
    命令を含むコンピュータ可読媒体。
  21. クライアントとサーバとの間の通信をサポートするシステムであり、
    少なくとも1つのプロセッサを含むサーバと、
    該システム内のオブジェクトを管理するように構成された少なくとも1つのプロセッサを含むブリッジと
    を備え、
    前記管理は、
    クライアントから第1のメッセージを受信するステップと、
    前記第1のメッセージに応答してオブジェクトを作成するステップと、
    前記第1のメッセージに対する応答を前記クライアントに送信するステップと、
    前記サーバから前記オブジェクトに対する変更を受信するステップと、
    前記オブジェクトに対する前記変更を記憶するステップと、
    前記変更を受信するステップに続いて、前記クライアントから第2のメッセージを受信するステップと、
    記憶された前記変更を前記第2のメッセージに対する応答と共に前記クライアントに送信するステップと
    を含むシステム。
  22. ブリッジを使用してクライアントとサーバとの間の通信をサポートするシステムであり、
    データ供給手段と、
    前記システム内のオブジェクトを管理する手段と
    を備え、前記管理は、
    クライアントから第1のメッセージを受信するステップと、
    前記第1のメッセージに応答してオブジェクトを作成するステップと、
    前記第1のメッセージに対する応答を前記クライアントに送信するステップと、
    前記データ供給手段から前記オブジェクトに対する変更を受信するステップと、
    前記オブジェクトに対する変更を記憶するステップと、
    前記変更を受信するステップに続いて、前記クライアントから第2のメッセージを受信するステップと、
    記憶された前記変更を前記第2のメッセージに対する応答と共に前記クライアントに送信するステップと
    を含むシステム。
JP2015182520A 2009-12-14 2015-09-16 クライアント‐サーバ・ブリッジを使用したオブジェクト管理 Active JP6200472B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US28629309P 2009-12-14 2009-12-14
US61/286,293 2009-12-14

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2012543341A Division JP5813655B2 (ja) 2009-12-14 2010-12-14 クライアント‐サーバ・ブリッジを使用したオブジェクト管理

Publications (3)

Publication Number Publication Date
JP2016001502A true JP2016001502A (ja) 2016-01-07
JP2016001502A5 JP2016001502A5 (ja) 2016-02-18
JP6200472B2 JP6200472B2 (ja) 2017-09-20

Family

ID=43640108

Family Applications (4)

Application Number Title Priority Date Filing Date
JP2012543166A Active JP6084037B2 (ja) 2009-12-14 2010-12-03 ユーザ・インターフェース要素の指定
JP2012543341A Active JP5813655B2 (ja) 2009-12-14 2010-12-14 クライアント‐サーバ・ブリッジを使用したオブジェクト管理
JP2015182520A Active JP6200472B2 (ja) 2009-12-14 2015-09-16 クライアント‐サーバ・ブリッジを使用したオブジェクト管理
JP2016228563A Active JP6313838B2 (ja) 2009-12-14 2016-11-25 ユーザ・インターフェース要素の指定

Family Applications Before (2)

Application Number Title Priority Date Filing Date
JP2012543166A Active JP6084037B2 (ja) 2009-12-14 2010-12-03 ユーザ・インターフェース要素の指定
JP2012543341A Active JP5813655B2 (ja) 2009-12-14 2010-12-14 クライアント‐サーバ・ブリッジを使用したオブジェクト管理

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2016228563A Active JP6313838B2 (ja) 2009-12-14 2016-11-25 ユーザ・インターフェース要素の指定

Country Status (8)

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

Families Citing this family (46)

* Cited by examiner, † Cited by third party
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 (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05265802A (ja) * 1992-03-18 1993-10-15 Shimadzu Corp ソフトウェアデバッグ装置
JP2008524671A (ja) * 2004-11-02 2008-07-10 エービー イニティオ ソフトウェア コーポレーション 関係データオブジェクトの管理

Family Cites Families (122)

* Cited by examiner, † Cited by third party
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
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
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
GB0501153D0 (en) * 2005-01-20 2005-03-02 Ibm System and method for subscription management in a messaging system
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
US7886050B2 (en) * 2007-10-05 2011-02-08 Citrix Systems, Inc. Systems and methods for monitoring components of a remote access server farm
US8458727B2 (en) * 2007-11-05 2013-06-04 Microsoft Corporation Asynchronous client to server updates
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

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05265802A (ja) * 1992-03-18 1993-10-15 Shimadzu Corp ソフトウェアデバッグ装置
JP2008524671A (ja) * 2004-11-02 2008-07-10 エービー イニティオ ソフトウェア コーポレーション 関係データオブジェクトの管理

Also Published As

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

Similar Documents

Publication Publication Date Title
JP6200472B2 (ja) クライアント‐サーバ・ブリッジを使用したオブジェクト管理
US8352423B2 (en) Apparatus and method for providing streaming data
US7580946B2 (en) Smart integration engine and metadata-oriented architecture for automatic EII and business integration
KR101693229B1 (ko) 데이터 저장 시스템과의 통신
US11157242B2 (en) Systems, methods, and apparatuses for local web components development within a cloud based computing environment
US20040133445A1 (en) Generic framework for applying object-oriented models to multi-tiered enterprise applications
US20060095274A1 (en) Execution engine for business processes
US20050251501A1 (en) System and method for integrating disparate data sources
CA2506233A1 (en) System and method for integrating disparate data sources and application sources using a web services orchestration platform with business process execution language (bpel)
US20230319054A1 (en) Tenant-specific solution subscriptions for an extensibility platform
Sharma Modern API Development with Spring and Spring Boot: Design highly scalable and maintainable APIs with REST, gRPC, GraphQL, and the reactive paradigm
US20230315428A1 (en) Extensibility platform
WO2023192418A1 (en) An extensibility platform
US20040230587A1 (en) System and method for specifying application services and distributing them across multiple processors using XML
Millham Software asset re-use: migration of data-intensive legacy system to the cloud computing paradigm
Kaplan Framework for migrating deployed serverless applications
US20230315514A1 (en) Configuration-driven data processing pipeline for an extensibility platform
Chattopadhayay Getting Started with Oracle Tuxedo
Bondili Online Banking Application with Angular JS, RESTful Web Services and Cassandra Database
Schmerl et al. Integrating Components into SORASCS
Lie Enabling the compatible evolution of services based on a cloud-enabled ESB solution
Simanta et al. T-Check for Technologies for Interoperability: Open Grid Services Architecture (OGSA): Part 1
den Braber The implementation of Microservices Architectural patterns in Open-Source Java projects
Pongpaichet Hyracks Console: Monitoring the Hyracks Partitioned-Parallel Runtime Platform
Davies et al. Administration, Operations, and Management

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20151015

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151201

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160929

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161007

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20170105

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170307

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170726

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170825

R150 Certificate of patent or registration of utility model

Ref document number: 6200472

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250