図1は、複合コントロールの一例を示している。グラフィカルユーザインターフェース(GUI)開発環境100が、コントロールのパレット102を含むことができる。パレット102は、1つまたは複数のコントロールを含み、それらのコントロールは、パレットから選択してインターフェースに加えることが可能である。たとえば、パレット102は、テキストボックス表示104、ドロップダウンリストボックス表示106、リストボックス表示108、および複合コントロール表示110を含む。
パレット102から表示を選択すると、GUI設計者は、対応するコントロールをキャンバス130上に配置することができる。本明細書において使用される際には、キャンバスとは、さまざまな描画要素(ライン、形、テキスト、その他の要素を含むフレーム、コントロール、ラベルなど)を保持するコンテナである。いくつかの実施態様はまた、空間的な表示を定義し、ユーザがグラフィカルユーザインターフェースを介して要素と対話することを可能にする。このGUI開発環境は、ユーザがアクセス可能なアプリケーション、ウェブページ、または類似の提示メカニズムを作成することができ、それによって、設計および編集プロセス中にキャンバス上に表示されるコントロールどうしは、アプリケーションが実行される際の、またはウェブページがアクセスされる際のそれらのコントロールの提示にとって非常に類似した外観となる。
この例においては、テキストボックス表示104が、パレット102から選択されてキャンバス130上に配置されて、住所テキストボックス114が作成された。同様に、テキストボックス表示104が、パレット102から選択されてキャンバス130上に配置されて、都市テキストボックス116が作成された。
複合コントロール表示110を選択してキャンバス130上に配置すると、複合コントロール118が生成される。一般には、複合コントロールは、1つまたは複数の基本コントロールを含む。たとえば、複合コントロール118は、国ドロップダウンリストボックス120、および州ドロップダウンリストボックス122を含む。複合コントロールは、1つまたは複数のその他の複合コントロールを含むこともできる。
複合コントロールは、実行可能なロジックを含むこともできる。そのロジックは、基本コントロールどうしの間における対話に関連させることができる。たとえば、国ドロップダウンリストボックス120は、さまざまな国のリストを含むことができる。複合コントロール118は、プログラミングロジックを含むことができ、そのプログラミングロジックは、ユーザが国ドロップダウンリストボックス120から値を選択したときに州(state)/州(province)の適切なリストが州ドロップダウンリストボックス122に投入されるようにする。たとえば、国ドロップダウンリストボックス122において「アメリカ合衆国」を選択すると、州ドロップダウンリストボックスに米国の州のリストが投入される。同様に、国ドロップダウンリストボックス120において「カナダ」を選択すると、州ドロップダウンリストボックスにカナダの州および準州のリストが投入される。その他の変化が生じることも可能である。たとえば、ラベル124が「州:」から「州/準州」に変わることも可能である。
いくつかの実施態様においては、複合コントロールは、パラメータを受け取ることもできる。それらのパラメータは、たとえば、複合コントロールの基本コントロールに関連付けられているパラメータであることが可能である。それらのパラメータは、全体としての複合コントロールに固有のものであることも可能である。たとえば、GUI設計者は、国ドロップダウンリストボックスおよび州ドロップダウンリストボックスに関するルックアップテーブルまたはその他のデータソースを識別するためのパラメータを設定できることが可能である。あるいは、GUI設計者は、要求される値を供給するデータ構造、たとえば、辞書データタイプまたはハッシュテーブルを提供することができる。
いくつかの実施態様においては、複合コントロールは、そのコントロールを使用することができるコンテキストに関する制限を含むことができる。たとえば、いくつかの複合コントロールは、ポップアップウィンドウにおいてのみ可能にされるように、またはメインディスプレイウィンドウにおいて提示されるだけであるように構成することができる。
いくつかの実装態様においては、複合コントロールは、GUI開発環境において作成することができる。たとえば、GUI設計者は、キャンバス上のアイテムを複合コントロールとして保存することを選ぶことができる。複合コントロールは、GUI開発環境によってアクセス可能な別個のファイルとして保存することができる。
図2は、複合コントロールを作成して使用するための例示的なデータ処理システム200を示している。システム200は、データソース202を含み、データソース202は、データの1つまたは複数のソース、たとえば、ストレージデバイス、またはオンラインデータストリームへの接続を含むことができ、それらのそれぞれは、さまざまなストレージフォーマット(たとえば、データベーステーブル、スプレッドシートファイル、フラットテキストファイル、または、メインフレームによって使用されるネイティブフォーマット)のうちの任意のフォーマットでデータを格納することができる。実行環境204は、グラフ構成モジュール206およびユーザインターフェースモジュール212を含む。実行環境204は、UNIXオペレーティングシステムなどの適切なオペレーティングシステムのコントロールのもとで1つまたは複数の汎用コンピュータ上でホストすることが可能である。たとえば、実行環境204は、ローカルの(たとえば、SMPコンピュータなどのマルチプロセッサシステム)、またはローカルに分散されている(たとえば、クラスタもしくはMPPとして結合されている複数のプロセッサ)、またはリモートの、またはリモートに分散されている(たとえば、ローカルエリアネットワーク(LAN)および/もしくはワイドエリアネットワーク(WAN)を介して結合されている複数のプロセッサ)、またはそれらの任意の組合せである、複数の中央処理装置(CPU)を使用するコンピュータシステムの構成を含む複数ノード並列コンピューティング環境を含むことができる。
グラフ構成モジュール206は、以降でより詳細に説明されているように、データフローグラフの構成を変更する。ユーザインターフェースモジュール212は、ユーザ220に構成情報を表示し、ユーザ220から構成アクションを受け取る。ユーザインターフェースモジュール212はまた、グラフ構成モジュール206と通信し、グラフ構成モジュール206は、ユーザ220のアクションに基づいてデータフローグラフを構成する。たとえば、データフローグラフは、データソース202内に格納することができる。データソース202を提供するストレージデバイスは、実行環境204にとってローカルにあること、たとえば、実行環境204を稼働させているコンピュータに接続されているストレージメディア(たとえば、ハードドライブ208)上に格納されていることが可能であり、または実行環境204にとってリモートにあること、たとえば、ローカルエリアデータネットワークもしくはワイドエリアデータネットワークを介して、実行環境204を稼働させているコンピュータと通信状態にあるリモートシステム(たとえば、メインフレーム210)上にホストされていることも可能である。
実行環境204は、データストレージシステム216と通信状態にあり、データストレージシステム216は、ユーザインターフェースを表示するためにユーザインターフェースモジュール212によって使用される情報を含む。データストレージシステム216はまた、開発環境218にアクセス可能であり、開発環境218においては、開発者220がユーザインターフェースを開発することができ、それらのユーザインターフェースは、データストレージシステム216内に格納され、ユーザインターフェースを表示するためにユーザインターフェースモジュール212によって使用される。
データソース202は、いくつかの実施態様においては、頂点どうしの間における(機能要素のフローを表す)有向リンクによって接続されている頂点(コンポーネントまたはデータセット)を含むデータフローグラフとしてアプリケーションを開発するためのシステムである。たとえば、そのような環境は、参照によって本明細書に組み込まれている「MANAGING PARAMETERS FOR GRAPH−BASED APPLICATIONS」という名称の米国特許出願公開第2007/0011668号においてより詳細に説明されている。
データフローグラフは、1つまたは複数のデータソースからのデータを処理するデータフローグラフ実行環境内で実行されるコンピュータプログラムとみなすことができる。データソースからのデータは、データフローグラフに従って操作および処理され、1つまたは複数のデータシンクへエクスポートされる。データソースおよびデータシンクは、たとえば、ファイル、データベース、データストリーム、またはキューを含むことができる。データフローグラフは、データ処理コンポーネントを表すノードを含む有向グラフとして表され、それらのデータ処理コンポーネントはそれぞれ、少なくとも1つのデータ入力からのデータを処理して少なくとも1つのデータ出力にデータを提供するためのコードを含み、ノードは、データソースおよび/またはデータシンクにアクセスするためのデータセットオブジェクトを表している。ノードどうしは、有向リンクによって接続されており、それらの有向リンクは、データソースにおいて始まってデータシンクにおいて終わる、コンポーネントどうしの間におけるデータのフローを表している。アップストリームコンポーネントのデータ出力ポートは、ダウンストリームコンポーネントのデータ入力ポートへ接続されている。データフローグラフは、データセットオブジェクトによって表される異なるデータソースおよび異なるデータシンクに関して再利用することができる。たとえば、データフローグラフを実装するために使用されるデータ構造およびプログラムコードは、異なるソースおよびシンクが容易に代用されることを可能にするためにパラメータ化されることによって複数の異なる構成をサポートすることができる。さらに、いくつかのアレンジにおいては、データフローグラフのフローは、1つのコンポーネントまたは一連のコンポーネントを迂回することができるようにパラメータの使用によって変更することができる。一般には、パラメータは、構成または変更することができるデータフローグラフのプロパティーを表す。プロパティーの一例が、「入力ファイル」であり、その値は、データフローグラフに関するデータソースとして機能するデータファイルを識別する。プロパティーは、データフローグラフの使用のたびに変更することができ、データフローグラフは、その変更の結果として別々のオペレーションを実行することができる。データフローグラフは、特定のアクションを実行するようにグラフの事前コンパイルを変更することによってコンパイル時に、またはパラメータを設定すること、もしくはデータフローグラフによって使用されている構成ファイルを変更することによってランタイムに構成することができる。
たとえば、図3Aを参照すると、データフローグラフ302は、データソース306a、306b、コンポーネント308a〜c、グラフインターフェースコンポーネント310、およびデータシンク312を含むことができる。ソース、コンポーネント、およびシンクのそれぞれは、パラメータ304a〜fのセットに関連付けることができる。1つのソース、コンポーネント、またはシンクに関するパラメータは、異なるソース、コンポーネント、またはシンクに関するパラメータを評価するために使用することができる。この例においては、ソース306a、306bは、コンポーネント308a、308cの入力ポートに接続されている。コンポーネント308aの出力ポートは、コンポーネント308bの入力ポートに接続されており、グラフインターフェースコンポーネント310の出力ポートは、データシンク312に接続されている。ソース、コンポーネント、およびシンクの間における接続は、データフローを定義する。
グラフインターフェースコンポーネント310は、グラフのコンポーネントであり、実行時にグラフが別のグラフを動的に実行することを可能にする。たとえば、データフローグラフ302が実行されるときに、グラフインターフェースコンポーネント310は、データフローグラフ316またはデータフローグラフ318を動的にロードして実行することができる。いくつかの実装態様においては、グラフインターフェースコンポーネント310は、データの入力フローを受け取ってデータの出力フローを生み出すインターフェースを定義することができる。ロードされて実行されるデータフローグラフは、パラメータ、データ要素からのデータ値、またはその他の任意の値に基づいて特定することができる。
データソース、コンポーネント、またはシンクのうちのいくつかは、グラフの挙動のうちのいくらかを定義することができる入力パラメータ304a〜fを有することができる。たとえば、パラメータは、物理的なディスク上のデータソースまたはデータシンクのロケーションを定義することができる。パラメータは、コンポーネントの挙動を定義することもでき、たとえば、パラメータは、ソーティングコンポーネントが入力をどのようにソートするかを定義することができる。いくつかのアレンジにおいては、1つのパラメータの値が別のパラメータの値に依存する場合がある。たとえば、ソース306aは、特定のディレクトリにおけるファイル内に格納することができる。パラメータセット304aは、「DIRECTORY」と呼ばれるパラメータと、「FILENAME」と呼ばれる別のパラメータとを含むことができる。このケースにおいては、FILENAMEパラメータは、DIRECTORYパラメータに依存することになる(たとえば、DIRECTORYは「/usr/local/」である場合があり、FILENAMEは「/usr/local/input.dat」である場合がある)。パラメータは、その他のコンポーネントに関するパラメータに依存する場合もある。たとえば、シンク312の物理的なロケーションは、ソース306aの物理的なロケーションに依存する場合がある。この例においては、シンク312は、パラメータのセット304fを含み、このセット304fは、FILENAMEパラメータを含み、このFILENAMEパラメータは、ソース306aのDIRECTORYパラメータに依存し、たとえば、セット304f内のFILENAMEパラメータは、「/usr/local/output.dat」である場合があり、「/usr/local/」という値は、セット304a内のDIRECTORYパラメータから得られる。
同様に、データフローグラフ316および318は、それぞれパラメータセット304gおよび304hを有することができる。
いくつかの実施態様においては、パラメータセット304a〜fを、データフローグラフ全体に関するパラメータを含む単一のパラメータセット、たとえば、パラメータセット314へと結合することができる。しかしながら、グラフインターフェースコンポーネント310は、ランタイムにデータフローグラフを動的にロードして実行するので、パラメータリスト全体は知られていない場合がある。たとえば、グラフインターフェースコンポーネント310が、データフローグラフ316をロードおよび実行させるならば、パラメータセット304gを投入することが必要となる場合がある。
パラメータセット、たとえばパラメータセット314は、開発環境、たとえば図2の開発環境218において使用するために発行することまたはその他の形で利用可能にすることができる。発行されたパラメータセットは、データフローグラフのアプリケーションプログラミングインターフェース(API)の一部として参照することができる。
構成インターフェースが、クライアントデバイス上に提示されて、ユーザ220が図2のグラフ構成モジュール206にアクセスすることを可能にする。図3を再び参照すると、構成インターフェース内で、パラメータセット304a〜304fまたはパラメータセット314のパラメータを、ユーザと対話するためのさまざまなグループへと再編成することができ、それは、技術的な考慮事項よりもむしろビジネス上の考慮事項を反映する。ユーザ入力に基づいてパラメータに関する値を受け取るための構成インターフェースは、さまざまなパラメータを、それらのパラメータどうしの間における関係に従って、サーバ上の開発環境の態様によって必ずしも制限されないフレキシブルな方法で表示することができる。
データフローグラフの構築は、いくつかのケースにおいては高度に技術的な性質を有することがある。特定のビジネスの目的を達成するために書かれる一方で、グラフの基礎をなす構造および構築は、技術的な考慮事項に基づいて特定される。たとえば、グラフのコンポーネントは、再利用性を最大化するように、または並列処理をサポートするように選択することができる。その一方で、グラフがどこでどのように使用されるかは、大部分がビジネス上の決定事項である場合がある。パラメータ化されたデータフローグラフに関連付けられているパラメータのうちのいくつかを使用して、ビジネスユーザが、データフローグラフの実施の背後にある技術的な複雑さを理解する必要なくそれらのデータフローグラフをカスタマイズすることを可能にすることができる。パラメータ化されたデータフローグラフは、カスタマイゼーションを簡単にし、再利用を容易にする。データフローグラフを構築するためのパラメータ値の識別のための構成インターフェースをクライアントマシン上に提示することができる。たとえば、そのような環境は、参照によって本明細書に組み込まれている「SPECIFYING USER INTERFACE ELEMENTS」という名称の米国特許出願公開第20011/0145748号においてさらに詳細に説明されている。
構成インターフェースは、実行フローグラフを構成するために使用することもできる。実行フローグラフは、外部プロセスが実行されることになる順序を記述する有向グラフである。たとえば、実行フローグラフは、一連のデータフローグラフが実行されることになる順序を指定することができる。
データフローグラフを構築するためのパラメータ値の識別のための構成インターフェースの開発は、いくつかのケースにおいては高度に技術的な性質を有することもある。上述のように、基礎をなすグラフは、しばしば技術的な考慮事項に基づいて構築され、その一方で構成インターフェースは、しばしばビジネス上の考慮事項に基づいて開発される。結果として、構成インターフェースは、1つまたは複数のデータフローグラフに関するパラメータを提供することができる。それぞれのデータフローグラフは、APIによって提供された別個のパラメータセットを有する。さらに、構成インターフェースの開発は、基礎をなすデータフローグラフの開発とは異なるスキルを含む。したがって、構成インターフェースの開発は、技術的な考慮事項、ビジネス上の考慮事項、および使いやすさに関する考慮事項の組合せを必要とする。
構成インターフェースの生成を容易にするために、ビルダーインターフェースをクライアントマシンのユーザに提示することができる。ビルダーインターフェースは、開発環境218の一部であることが可能である。
図3Bは、構成可能なデータフローグラフなど、構成可能なアプリケーション上でパラメータを設定するための例示的な構成インターフェースを示している。この例においては、2つのデータフローグラフ302および306が、インターフェース320内に示されており、構成インターフェース320に関連付けられている。この例においては、パラメータ304を使用して、構成可能なデータフローグラフ302を構成することができる。同様に、パラメータ308、310、312を使用して、データフローグラフ306を構成することができる。
たとえば、構成インターフェース320は、それらのデータフローグラフによって処理されることになるデータのビジネス知識を有するユーザが、パラメータに値を割り振ること、およびそれによって単一の構成インターフェースを使用して両方のデータフローグラフを構成することを可能にする。この例においては、構成インターフェース320は、パラメータ1フィールド322を含む。パラメータ1フィールドは、インターフェース320において表されているパラメータ312に値を割り振るために使用される。同様に、パラメータ2フィールド324は、パラメータ310に値を割り振るために使用される。パラメータ3フィールドは、パラメータ304に値を割り振るために使用される。パラメータ4フィールド328は、パラメータ308に値を割り振るために使用される。
パラメータフィールドは、入力されることになるデータのタイプに基づいて選択することができる。たとえば、パラメータ1フィールド322は、ユーザが任意の値(たとえば、整数、浮動小数点値など)を入力することを可能にするテキストボックスである。パラメータ2フィールド324は、ユーザがリストから値を選択することを可能にするリストボックスである。パラメータ3フィールド326は、ユーザが、少ない数のオプション(この例においては、2つのオプション値)から値を選択することを可能にするラジオボタンボックスである。パラメータ4フィールド328は、ユーザが、大量のテキストを入力することを可能にするさらに大きなテキストボックスである。
その他のGUIコントロールを選択することもできる。たとえば、ユーザは、特定の入力ファイル、またはそのファイルがネットワークを介してダウンロードされる元になるロケーションを選択するためにファイルセレクタを開くことができる場合がある。
図4は、GUIコントロールに焦点を合わせた構成インターフェースを作成するためのビルダーインターフェース400の一例を示している。ビルダーインターフェース400は、テンプレート名402を含む。テンプレート名402は、作成されている構成インターフェースを識別する。ビルダーインターフェース400のユーザインターフェースタブ404は、表示エリア430を含む。この表示エリアは、構成インターフェースの構築のための「WYSIWYG」(what you see is what you get)インターフェースを提示する。表示エリア430は、開発者がGUIコントロールを配置するキャンバスと考えることができる。開発者は、コンポーネントセクション422からGUIコントロールを選択し、そのGUIコントロールを表示エリア430に加えて構成インターフェースを作成することができる。この例においては、表示エリア430は、ソースファイルに対応するテキスト入力コントロール410と、ターゲットファイルに対応するテキスト入力コントロール412とを含むボックスコントロール406を含む。表示エリア430はまた、ファイルセレクタコントロール418を含むボックスコントロール414を含む。表示エリアは、仕切り416などの仕切りを使用して、GUIを複数のセクションへと区分することができる。それらの区分は、基本的な構造をユーザに提供することによって、インターフェースの作成を簡単にするために使用することができる。
コンポーネントセクション422は、表示エリア430に加えることができるさまざまなコントロールを含む。利用可能なGUIコントロールは、ユーザ入力を受け取ってパラメータに値を割り振る入力コントロールを含む。利用可能なGUIコントロールはまた、1つまたは複数のコントロールをグループ化する視覚的なアウトラインを作成するボックスなどのグルーピングコントロールを含む。開発者は、ルールに基づくコントロールを選択することもでき、これは、フィールド間の依存関係を開発者が作成することを可能にする。たとえば、ビジネスルールコントロールは、そのビジネスルールコントロールの出力と、構成可能なアプリケーションを構成するために使用されるパラメータとの間におけるマッピングを提供するパラメータを開発者が構成することを可能にする。開発者は、データに基づくコントロールを選択することもでき、これは、グラフによって生み出されたデータを構成インターフェースのユーザが見ることを可能にする。
コンポーネントセクション422は、複合コントロールを含むこともできる。たとえば、フィルタグラフ構成432は、フィルタグラフを構成するのに十分なプリミティブコントロールおよび実行可能な命令を含む複合コントロールであることが可能である。一般には、プリミティブコントロールは、ウィンドウまたはテキストボックスなど、ユーザによって変更可能な情報アレンジを表示するグラフィカルユーザインターフェース(GUI)の要素である。プリミティブコントロールは、基本的な視覚的なビルディングブロックであり、アプリケーションにおいて組み合わされると、そのアプリケーションによって処理されるすべてのデータと、このデータ上での利用可能な対話とを保持する。
それぞれのコントロールは、1つまたは複数の属性を有することができる。これらの属性は、コントロール属性エリア426において表示することができる。この例においては、コントロール属性エリア426は、テキスト入力コントロール410に関する属性を表示している。コントロール属性エリア426は、ユーザが、コントロールに関するプロパティー値のうちの任意の値にパラメータ値を割り振ることを可能にする。たとえば、選択された値のプロパティー428は、SOURCE_URLパラメータ430に関する値を提供する。
開発者は、構成インターフェースのその他のグラフィカルな特徴を規定するルールを確立することもできる。たとえば、開発者は、事前に定義された一式の基準が満たされない限り特定のGUIコントロールが表示されないように指定することができ、たとえば、ターゲットファイルコントロール412は、ソースファイルコントロール410が投入を受けない限り表示を行うことができない。
いくつかの実装態様においては、複合コントロール内でルールを指定することもできる。たとえば、複合コントロールは、事前に定義された一式の基準が満たされない限り複合コントロール内の特定のプリミティブコントロールが表示されないように指定することができる。別の例においては、上述のように、複合コントロール内のプリミティブコントロールは、別のプリミティブコントロールにおいて提供された値に基づいて投入を受けることができる。
図5を参照すると、データフローグラフに関連付けられているパラメータを設定するために複合コントロールを作成することができる。上で論じたように、ユーザインターフェースを使用して、データフローグラフのパラメータを構成することができる。この例においては、複合コントロール502は、データフローグラフ504に関連付けられているパラメータをユーザが設定することを可能にするフィールドを含む。上で論じたように、複合コントロールは、複合コントロールおよびその他のロジックを構成する基本コントロールどうしの間における対話をコントロールするプログラミング命令を含むことができる。この例においては、複合コントロール502は、データフローグラフ504に関するパラメータを設定するプログラミング命令を含む。ユーザインターフェース506は、ビルダーインターフェースの表示エリアに相当し、たとえば、ユーザインターフェース506は、図4のビルダーインターフェース400の表示エリア430であることが可能である。
ユーザインターフェース506は、複合コントロールを配置することができるエリア510を含む。いくつかの実施態様においては、ユーザインターフェース506は、コントロールをどのように配置することができるかを指示および制限するテンプレートを含むことができる。たとえば、ユーザインターフェース506は、コントロールの配置を表形式に制限することができる。あるいは、ユーザインターフェース506は、ユーザインターフェース506を別々のセクションへと仕切ることができ、それぞれのセクションは、1つまたは複数のコントロールを保持することができる。その他の実装態様においては、ユーザインターフェース506は、ユーザがユーザインターフェース506上の任意の場所でコントロールを構成することを可能にすることができる。
この例においては、ユーザインターフェース506は、データフローグラフ508に関するパラメータを設定するように設計されている。データフローグラフ506の一部分は、コンポーネント516を含む。コンポーネント516は、グラフインターフェースコンポーネント512に接続されている。上で論じたように、グラフインターフェースコンポーネント512は、いくつかの異なる潜在的なデータフローグラフを実行するように構成されている。グラフインターフェースコンポーネント512は、データシンク514に接続されている。
データフローグラフ508を構成するためのGUIを作成する際に、ユーザは、グラフインターフェースコンポーネント512によって実行されることになるデータフローグラフを選択することができる。この例においては、ユーザは、データフローグラフ504がグラフインターフェースコンポーネント512によって実行されるべきであるということを特定する。
ユーザは、データフローグラフ504に関連付けられている複合コントロール502を選択して、その複合コントロール502をエリア510内に配置することによって、データフローグラフ504をグラフインターフェースコンポーネント512に関連付けることができる。複合コントロール502を加えると、ユーザインターフェース内にエリアが作成され、そこでは、ビジネスユーザが、データフローグラフ508およびデータフローグラフ504を構成することができる。たとえば、ユーザインターフェース506は、ビジネスユーザによって保存またはエクスポートして後でアクセスすることが可能である。ビジネスユーザは、完成されたユーザインターフェースを提示される。ユーザインターフェース506のフィールドに値を供給することによって、ビジネスユーザは、データフローグラフ504を含むデータフローグラフ508を構成する。
いくつかの実施態様においては、エリア510は、グラフインターフェースコンポーネント512に関連付けられる。別の実施態様においては、このシステムは、データフローグラフに関連付けるための適切なグラフインターフェースコンポーネントを、そのグラフインターフェースコンポーネントおよびそのデータフローグラフの両方に関連付けられているインターフェースに基づいて特定する。たとえば、データフローグラフ504は、入力データの2つのフローを必要とし、出力データの1つのフローを生成する。エリア510は、その基準を満たすデータフローグラフに関連付けられている任意の複合コントロールで満たすことができる。
いくつかの実施態様においては、複合コントロールを、その複合コントロールをサブグラフに関連付けたグラフパラメータに結び付けることができる。
いくつかの実施態様においては、複合コントロールを複数のデータフローグラフに関連付けることができる。たとえば、複合コントロールは、どのデータフローグラフがグラフインターフェースコンポーネント512によって実行されるべきであるかをビジネスユーザが選択することを可能にする選択フィールド(たとえば、リストボックス、ドロップダウンリストボックスなど)を含むことができる。ビジネスユーザが選択フィールドからデータフローグラフを選択すると、複合コントロールは、選択されたデータフローグラフを構成するのに適している一式のフィールドを提示することができる。
図6は、複合表示要素を使用してアプリケーションを構成するための例示的なプロセスのフローチャートである。たとえば、このプロセスは、コンピュータシステムなどのデータ処理装置によって実行することができる。説明を簡単にするために、このプロセスについては、このプロセスを実行するシステムに関連して説明する。
アプリケーションを構成するためのユーザインターフェースを受け取ることができる(602)。このユーザインターフェースは、ビルダーインターフェースを使用して作成することができる。ビルダーインターフェースは、数ある中でも、ユーザインターフェースに加えることができるコントロールおよび表示要素の提示のためのパレットを含むことができる。
第2のアプリケーションに関連付けられている複合表示要素を表示することができる(604)。この複合表示要素は、パレットにおいてユーザに提示することができる。この複合表示要素は、第2のアプリケーションを構成するために使用することができる1つまたは複数の表示要素を含むことができる。
複合表示要素とユーザインターフェースとの間における関連付けを受け取ることができる(606)。この関連付けは、ユーザのアクションに起因して生じることがある。たとえば、ユーザは、複合コントロールを表すアイコンをパレットから選択して、その複合コントロールをユーザインターフェース上にドラッグアンドドロップすることができる。
第2のアプリケーションをそのアプリケーションに関連付けることができる(608)。複合コントロールとユーザインターフェースとの関連付けを受け取ったことに応答して、このシステムは、第2のアプリケーションをそのアプリケーションに関連付けることができる。
上述の複合コントロールアプローチを使用するグラフィカルユーザインターフェースは、適切なソフトウェアを実行するコンピューティングシステムを使用して実装することができる。たとえば、そのソフトウェアは、少なくとも1つのプロセッサと、(揮発性および/または不揮発性のメモリ要素および/またはストレージ要素を含む)少なくとも1つのデータストレージシステムと、(少なくとも1つの入力デバイスまたはポートを使用して入力を受け取るための、および少なくとも1つの出力デバイスまたはポートを使用して出力を提供するための)少なくとも1つのユーザインターフェースとをそれぞれが含む(分散型、クライアント/サーバ、またはグリッドなど、さまざまなアーキテクチャーのものであることが可能である)1つまたは複数のプログラムされたまたはプログラム可能なコンピューティングシステム上で実行される1つまたは複数のコンピュータプログラムにおける手順を含むことができる。そのソフトウェアは、たとえば、データフローグラフの設計、構成、および実行に関連したサービスを提供するさらに大きなプログラムの1つまたは複数のモジュールを含むことができる。そのプログラムのモジュール(たとえば、データフローグラフの要素)は、データリポジトリ内に格納されているデータモデルに準拠するデータ構造またはその他の編成されたデータとして実装することができる。
そのソフトウェアは、(たとえば、汎用もしくは専用のコンピューティングシステムもしくはデバイスによって読み取り可能な)CD−ROMもしくはその他のコンピュータ可読メディアなどの有形の非一時的なメディア上で提供すること、またはネットワークの通信メディアを介して、そのソフトウェアが実行されるコンピューティングシステムの有形の非一時的なメディアへ配信すること(たとえば、伝搬される信号内に含めて符号化すること)が可能である。処理のうちのいくつかまたはすべては、専用のコンピュータ上で、または専用のハードウェア、たとえば、コプロセッサもしくはフィールドプログラマブルゲートアレイ(FPGA)もしくは専用の特定用途向け集積回路(ASIC)を使用して実行することができる。処理は、分散された様式で実装することができ、その様式においては、ソフトウェアによって指定された計算の別々の部分が、別々のコンピューティング要素によって実行される。それぞれのそのようなコンピュータプログラムは、好ましくは、汎用または専用のプログラム可能なコンピュータによってアクセス可能なストレージデバイスのコンピュータ可読ストレージメディア(たとえば、ソリッドステートメモリもしくはソリッドステートメディア、または磁気メディアもしくは光メディア)がそのコンピュータによって読み取られたときに、本明細書において説明されている処理を実行するようにそのコンピュータを構成して動作させるために、そのストレージデバイスメディア上に格納されるか、またはそのストレージデバイスメディアへダウンロードされる。本発明のシステムは、コンピュータプログラムを伴って構成されている有形の非一時的なメディアとして実装されるものとみなすこともでき、そのように構成されているメディアは、本明細書において説明されている処理工程のうちの1つまたは複数を実行するために特定の事前に定義された様式でコンピュータを動作させる。
本発明のいくつかの実施形態について説明してきた。それでもなお、前述の説明は、本発明の範囲を例示することを意図されており、本発明の範囲を限定することを意図されているものではなく、本発明の範囲は、添付の特許請求の範囲の範疇によって定義されているということを理解されたい。したがって、その他の実施形態も、添付の特許請求の範囲の範疇内にある。たとえば、本発明の範囲から逸脱することなく、さまざまな修正を行うことができる。加えて、上述の工程のうちのいくつかは、順序の点で独立していることが可能であり、したがって、説明されている順序とは異なる順序で実行することができる。