(57)【特許請求の範囲】
【請求項１】
グラフを変形する方法であって、前記グラフは、実行可能なコンピュータアプリケーションを表すとともに、成分を表す頂点と成分間のデータフローを示す成分間のリンクとを含む変形可能なグラフ構成を定義するデータを有し、
（ａ）前記コンピュータアプリケーションのランタイム実行時に、前記グラフの成分が、関連する条件及び対応する条件インタプリテーションによって制御される条件成分であるかどうかを、前記変形可能なグラフ構成を定義するデータを記憶するデータ記憶システムに接続されたプロセッサを含むコンピュータによって、決定することであって、前記関連する条件は前記関連する条件が評価され得る表現を含むこと、
（ｂ）各条件成分に対する前記関連する条件を、前記コンピュータによって評価すること、
（ｃ）前記コンピュータアプリケーションのランタイム実行時に、条件成分に対して、前記関連する条件が真であると評価され、かつ、前記対応する条件インタプリテーションが完全除去のインタプリテーションを示す場合、前記コンピュータによって、前記条件成分と前記条件成分に直接に接続された全てのデータフローとを前記グラフから除くことによって、前記グラフを変形すること、
（ｄ）前記変形されたグラフにより表される前記実行可能なコンピュータアプリケーションを前記コンピュータによって実行することを継続すること
を含んでなる方法。
【請求項２】
前記変形の結果として前記グラフから除かれた前記条件成分に依存している他の成分を、前記コンピュータによって前記グラフから除くこと、
前記条件成分に依存している前記除かれた他の成分に接続していたデータフローを、前記コンピュータによって前記グラフから除くこと
をさらに含む請求項１に記載の方法。
【請求項３】
グラフを変形する方法であって、前記グラフは、実行可能なコンピュータアプリケーションを表すとともに、成分を表す頂点と成分間のデータフローを示す成分間のリンクとを含む変形可能なグラフ構成を定義するデータを有し、
（ａ）前記コンピュータアプリケーションのランタイム実行時に、前記グラフの成分が、関連する条件及び対応する条件インタプリテーションによって制御される条件成分であるかどうかを、前記変形可能なグラフ構成を定義するデータを記憶するデータ記憶システムに接続されたプロセッサを含むコンピュータによって、決定することであって、前記関連する条件は前記関連する条件が評価され得る表現を含むこと、
（ｂ）各条件成分に対する前記関連する条件を、前記コンピュータによって評価すること、
（ｃ）前記コンピュータアプリケーションのランタイム実行時に、条件成分に対して、前記関連する条件が真であると評価され、かつ、前記対応する条件インタプリテーションがフローで置換のインタプリテーションを示す場合、前記コンピュータによって、前記グラフ内において、前記条件成分を新しいデータフローで置換することによって、前記グラフを変形すること、
（ｄ）前記変形されたグラフにより表される前記実行可能なコンピュータアプリケーションを前記コンピュータにより実行することを継続すること
を含んでなる方法。
【請求項４】
グラフ成分に対する条件と条件インタプリテーションを指定する制御を含むインタフェースを、前記コンピュータによって提供することをさらに含む請求項１又は請求項３に記載の方法。
【請求項５】
グラフを変形するシステムであって、前記グラフは、実行可能なコンピュータアプリケーションを表すとともに、成分を表す頂点と成分間のデータフローを示す成分間のリンクとを含む変形可能なグラフ構成を定義するデータを有し、前記システムは、前記変形可能なグラフ構成を定義するデータを記憶するデータ記憶システムと、プロセッサを含むコンピュータとを備え、前記プロセッサは、
（ａ）前記コンピュータアプリケーションのランタイム実行時に、前記グラフの成分が、関連する条件及び対応する条件インタプリテーションによって制御される条件成分であるかどうかを決定する手段であって、前記関連する条件は前記関連する条件が評価され得る表現を含む、手段と、
（ｂ）各条件成分に対する前記関連する条件を評価する手段と、
（ｃ）前記コンピュータアプリケーションのランタイム実行時に、条件成分に対して、前記関連する条件が真であると評価され、かつ、前記対応する条件インタプリテーションが完全除去のインタプリテーションを示す場合、前記条件成分と前記条件成分に直接に接続された全てのデータフローとを前記グラフから除くことによって、前記グラフを変形する手段と、
（ｄ）前記変形されたグラフにより表される前記実行可能なコンピュータアプリケーションを実行することを継続する手段と
を提供する、システム。
【請求項６】
前記変形の結果として前記グラフから除かれた前記条件成分に依存している他の成分を前記グラフから除く手段と、
前記条件成分に依存している前記除かれた他の成分に接続していたデータフローを前記グラフから除く手段と
をさらに備える請求項５に記載のシステム。
【請求項７】
グラフを変形するシステムであって、前記グラフは、実行可能なコンピュータアプリケーションを表すとともに、成分を表す頂点と成分間のデータフローを示す成分間のリンクとを含む変形可能なグラフ構成を定義するデータを有し、前記システムは、前記変形可能なグラフ構成を定義するデータを記憶するデータ記憶システムと、プロセッサを含むコンピュータとを備え、前記プロセッサは、
（ａ）前記コンピュータアプリケーションのランタイム実行時に、前記グラフの成分が、関連する条件及び対応する条件インタプリテーションによって制御される条件成分であるかどうかを決定する手段であって、前記関連する条件は前記関連する条件が評価され得る表現を含む、手段と、
（ｂ）各条件成分に対する前記関連する条件を評価する手段と、
（ｃ）前記コンピュータアプリケーションのランタイム実行時に、条件成分に対して、前記関連する条件が真であると評価され、かつ、前記対応する条件インタプリテーションがフローで置換のインタプリテーションを示す場合、前記グラフ内において、前記条件成分を新しいデータフローで置換することによって、前記グラフを変形する手段と、
（ｄ）前記変形されたグラフにより表される前記実行可能なコンピュータアプリケーションを実行することを継続する手段と
を提供する、システム。
【請求項８】
グラフ成分に対する条件と条件インタプリテーションを指定する制御を含むインタフェースをさらに備えている請求項５又は請求項７に記載のシステム。
【請求項９】
コンピュータが読み取り可能な媒体に記憶された、グラフを変形するためのコンピュータプログラムであって、前記グラフは、実行可能なコンピュータアプリケーションを表すとともに、成分を表す頂点と成分間のデータフローを示す成分間のリンクとを含む変形可能なグラフ構成を定義するデータを有し、前記コンピュータプログラムは、前記変形可能なグラフ構成を定義するデータを記憶するデータ記憶システムに接続されたプロセッサを含むコンピュータに、
（ａ）前記コンピュータアプリケーションのランタイム実行時に、前記グラフの成分が、関連する条件及び対応する条件インタプリテーションによって制御される条件成分であるかどうかを決定させ、前記関連する条件は前記関連する条件が評価され得る表現を含み、
（ｂ）各条件成分に対する前記関連する条件を評価させ、
（ｃ）前記コンピュータアプリケーションのランタイム実行時に、条件成分に対して、前記関連する条件が真であると評価され、かつ、前記対応する条件インタプリテーションが完全除去のインタプリテーションを示す場合、前記条件成分と前記条件成分に直接に接続された全てのデータフローとを前記グラフから除くことによって、前記グラフを変形させ、
（ｄ）前記変形されたグラフにより表される前記実行可能なコンピュータアプリケーションを実行することを継続させる、
コンピュータ命令を含んでなるコンピュータプログラム。
【請求項１０】
コンピュータに、
前記変形の結果として前記グラフから除かれた前記条件成分に依存している他の成分を前記グラフから除かせ、
前記条件成分に依存している前記除かれた他の成分に接続していたデータフローを前記グラフから除かせる、
コンピュータ命令をさらに含んでいる請求項９に記載のコンピュータプログラム。
【請求項１１】
コンピュータが読み取り可能な媒体に記憶された、グラフを変形するためのコンピュータプログラムであって、前記グラフは、実行可能なコンピュータアプリケーションを表すとともに、成分を表す頂点と成分間のデータフローを示す成分間のリンクとを含む変形可能なグラフ構成を定義するデータを有し、前記コンピュータプログラムは、前記変形可能なグラフ構成を定義するデータを記憶するデータ記憶システムに接続されたプロセッサを含むコンピュータに、
（ａ）前記コンピュータアプリケーションのランタイム実行時に、前記グラフの成分が、関連する条件及び対応する条件インタプリテーションによって制御される条件成分であるかどうかを決定させ、前記関連する条件は前記関連する条件が評価され得る表現を含み、
（ｂ）各条件成分に対する前記関連する条件を評価させ、
（ｃ）前記コンピュータアプリケーションのランタイム実行時に、条件成分に対して、前記関連する条件が真であると評価され、かつ、前記対応する条件インタプリテーションがフローで置換のインタプリテーションを示す場合、前記グラフ内において、前記条件成分を新しいデータフローで置換することによって、前記グラフを変形させ、
（ｄ）前記変形されたグラフにより表される前記実行可能なコンピュータアプリケーションを実行することを継続させる、
コンピュータ命令を含んでなるコンピュータプログラム。
【請求項１２】
コンピュータに、グラフ成分に対する条件と条件インタプリテーションを指定する制御を含むインタフェースを提供させるコンピュータ命令をさらに含んでいる請求項９又は請求項１１に記載のコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理システムでの演算の制御に関し、より詳細に述べるとパラメータ化データフロー図形（parameterized data flow graph）として表されるコンピュータプログラムの作成と実行に関する。
【背景技術】
【０００２】
複雑なビジネスシステムは、典型的に、データを複数のステージで処理して、一ステージで生成した結果を次のステージに送る。このようなシステムを通る情報の全体の流れは、成分（component）（データファイル又はデータプロセス）を表す図形中の頂点（vertex）及び成分間のデータの流れを示す図形中のリンク又は「エッジ」を有する有向データフロー図形によって説明することができる。
【０００３】
同じタイプの図形表現を利用して、並列の処理システムを説明することができる。これを考察するための並列処理システムとしては、複数の中央処理装置（ＣＰＵ）すなわち局所ＣＰＵ（例えばＳＭＰコンピュータなどの多重プロセッサシステム）もしくは局所分布ＣＰＵ（例えばクラスタもしくはＭＰＰのような連結された多重プロセッサ）；又は遠隔ＣＰＵもしくは遠隔分布のＣＰＵ（例えばＬＡＮネットワークもしくはＷＡＮネットワークで連結された多重プロセッサ）又はこれらの組み合わせを使用する配置構成のコンピュータシステムがある。それら図形は、やはり成分（データファイル又はデータプロセス）及びフロー（図形のエッジ又はリンク）で構成されている。図形の要素（成分とフロー）を明確に又は暗に繰り返すことによって、システムの並行処理を示すことができる。
【０００４】
また、図形は、演算を直接呼び出すのに使用することもできる。米国マサチューセッツ州レキシントン所在のAb Initio Software Corporation由来のGraphical Development Environment（ＧＤＥ）付きの「CO>OPERATING
SYSTEM（登録商標）」はこのようなシステムを含んでいる。このシステムによってつくられる図形は、図形成分が表す個々のプロセスに情報を送りかつそのプロセスから情報を得る方法、情報をプロセス間に移動させる方法、及びプロセスに対する実行順序を定義する方法を提供する。このシステムは、プロセス間通信法を選ぶアルゴリズム及びプロセス実行をスケジュールするアルゴリズムを含み、かつ図形実行の監視も行う。
【０００５】
開発者らは、「ランタイム」に（すなわち図形が実行されるときに）図形コンパイラ（graph
compiler）によって実行可能な命令に変換される命令[例えばシェルスクリプト（shell script）]を生成できる環境変数又はコマンド行引き数（command-line
argument）を使用することによって、どうにか制御される図形をつくることが極めて多い。したがって、環境変数及びコマンド行引き数は、ファイルネーム、データ選択表現及びキー[例えばソートキー（sort
key）]などの情報を指定するad hocパラメータになり、そのアプリケーションをよりフレキシブルにする。しかし、環境変数とコマンド行引き数をこのように使用すると図形が分かりにくくなって、ヒトとプログラムの両者が理解しにくくなる。この方法の最も重大な問題は、その図形が明確に定義されたユーザインタフェースをもっていないことである。例えば、ユーザは、生成したシェルスクリプトを読み取り、そのシェルスクリプトをサーチして環境変数とコマンド行引き数を参照して、特定の図形の実行を制御するパラメータのセットを見つけなければならないかもしれない。
【０００６】
既存の図形の追加の問題は、これらの図形が、特定のアプリケーション又はデータセットの要求に基づいて、ランタイムに、任意に作成し直すことができないことである。したがって、二つのアプリケーションがかなり類似しているが同一でない場合、開発者は各アプリケーションに対して別々の図形をつくることが必要になることがある。
【０００７】
したがって、本発明の発明者らは、パラメータ化図形を提供するシステムと方法を提供することが有用であることを確認したのである。また、本発明の発明者らは、ランタイムのパラメータによって、開発者がフレキシブルなアプリケーションをつくることができるが、図形自体をパラメータ値に基づいて変えることも望ましい場合があることも確認した。したがって、本発明の発明者らは、条件成分（conditional component）を含みうる図形のシステム及び方法を提供することも有用であるということを確認した。
【発明の開示】
【０００８】
本発明は、ランタイムのパラメータを容認するためデータフロー図形のパラメータ化を形式化する。ランタイムのパラメータは、アプリケーションビルダーに、パラメータセッティング（例えばソート関数、ファイルネーム、レコード形式、変換関数などのキーパラメータ）の値を、ランタイム（アプリケーションがコンピュータシステムで実行される時）まで遅らさせることができる。ランタイムパラメータに対する値は、最終ユーザが送るか、又は他のランタイムパラメータの組み合わせ又はオブジェクトリポジトリに記憶されたオブジェクトから引き出すことができる。
【０００９】
ランタイムパラメータは、特定の大きさのフレキシビリティをアプリケーションに加える。追加のフレキシビリティは、これらのパラメータを使用し、要求に応じて、メタデータ（データ形式もしくはデータタイプ及びプログラム論理もしくはプログラム変換）を計算することによって達成される。タイプや変換は、他のタイプや変換、使用者が供給するパラメータ値、および記憶されたオブジェクトから（例えばリポジトリから）合成することができる。このことによって、任意のタイプの入力データで作動するか、またはその構造が直接又は間接的にランタイムパラメータ値を通じて制御される一連の変換によってデータを生成する「総称（generic）」アプリケーションをつくることができる。
【００１０】
好ましい実施態様では、ランタイムパラメータをつくるか又は編集する場合、開発者は、各パラメータに対するプロンプト及びプロンプトを表示する条件を指定することができる。その好ましい実施態様は、条件が満たされると、そのプロンプティングディレクティブ（prompting directive）が存在していると解釈して、図形ユーザインタフェース（ＧＵＩ）が、パラメータ値の受け取りを制御する。
【００１１】
本発明の一実施態様は、パラメータ値及び計算されたメタデータに基づいて図形の構造を変えることができる条件成分機構を備えている。図形の各成分は、その成分がランタイムに図形中に現れるのか又は現れないのかを制御する条件をもっている。その条件は、ランタイムパラメータを通じて直接又は間接的に計算することができる。条件成分を使用して、図形を最適化又は特殊化することができる。
【００１２】
特に、一つの側面で、本発明は、ランタイムパラメータをもっている成分を有する図形を実行するための方法、システム及びコンピュータプログラムであって；図形をランタイム実行する際の図形のランタイムパラメータを検索し、そのランタイムパラメータは図形をランタイム実行する際に決定できると定義されている値を有し；そのランタイムパラメータに対する値をユーザ入力によって提供すべきかどうかを決定し；このように決定されたあらゆるランタイムパラメータのユーザ入力を受け取るためのユーザへのプロンプトを表示し；このようなプロンプトに対するユーザの応答に基づいて第一最終パラメータ値を決定し；次いで、その第一最終パラメータ値を、ランタイムパラメータに対する値として用いて図形を実行する；ことを含んでなる方法、システム及びコンピュータプログラムを含んでいる。またこのランタイムパラメータの値は、プログラムによって外部から供給することもできる。
【００１３】
別の側面で、本発明は、図形をランタイムに実行する際に、図形を変形する方法、システム及びコンピュータプログラムであって；図形のランタイム実行時に、図形の成分を、条件及び条件インタプリテーションを有する条件成分であると定義するかどうかを決定し；あらゆるこのような条件成分に対する条件を評価し；次いでこのような評価及びこのような条件成分の対応する条件インタプリテーションにしたがって、図形を、そのランタイム実行時に変形する；ことを含んでなる方法、システム及びコンピュータプログラムを含んでいる。該条件の一評価及びこのような条件成分の対応する条件インタプリテーションによって、条件成分及びこのような条件成分に接続されたすべてのフローが、図形を実行する前に図形から除かれる。該条件の別の評価及びこのような条件成分の対応する条件インタプリテーションによって、その条件成分は、図形を実行する前に、図形のフローで置換される。
【００１４】
したがって、計算をデータフロー図形として表現する基本概念は下記のように拡張された。
・ランタイムパラメータに関する図形のインタフェースが形式化された。図形のインタフェースは、システムが、どんなパラメータを供給する必要があるか、及びパラメータをどのようにプロンプトすべきかを知るのに充分によく定義された。
・成分を制御するメタデータは、ランタイムパラメータによって、直接又は間接的に指定又は計算することができる。
・図形の構造は、条件成分を制御するランタイムパラメータの値に基づいて変形することができるので、それら成分はユーザの選択に基づいて存在するか又は存在しない。
【００１５】
これらの特徴を組み合わせると、データを処理する実質的により強力なシステムが得られる。
【００１６】
図形のランタイムパラメータ化の利点は、ビジネスアナリストやスタティスティカルモデラーなどのエンドユーザが彼等の要求を満たすデータを要求できるよう充分豊富に、アプリケーションをパラメータ化できることである。現代企業のデータ環境が複雑なため、データの収集とプリアナリシスのトランスフォーメーション（pre-analysis transformation）のプロセスでヒトがかなり直接かかわる必要がある状態になっている。本発明は、各問い合わせタイプのクリチカルパス（critical
path）にエキスパートのデータアナライザを必要とせずに、エンドユーザが所望のデータを定義し検索できるようにする強力なツールを、エンドユーザに提供する。
【００１７】
本発明の１又は２以上の実施態様の詳細を、添付図面と下記の記述で説明する。本発明の他の特徴、目的及び利点は下記説明と図面及び特許請求の範囲から明らかになるであろう。なお各種図面中の同じ参照記号は同じ要素を示す。
【発明を実施するための最良の形態】
【００１８】
概要
図１は、主な要素の相関関係を示す本発明の実施態様のブロック図である。グラフィックデベロップメントインバイロンメント（ＧＤＥ）１０２は、実行可能な図形をつくりそして図形成分のパラメータを定義するためのユーザインタフェースを提供する。ＧＤＥとしては、例えば本発明の権利譲受人から入手できるCO>OPERATING
SYSTEM（登録商標）のＧＤＥがある。ＧＤＥ１０２はリポジトリ１０４及び並列操作システム１０６と交信している。また、そのリポジトリ１０４と並列操作システム１０６に、ウェブインタフェース１０８とエグゼクティブ１１０が連結されている。
【００１９】
リポジトリ１０４は、好ましくは、図形ベースのアプリケーションの開発（development）と実行及び図形ベースアプリケーションと他のシステム（例えば他の操作システム）の間のメタデータの交換を支持するように設計された拡大縮小可能なオブジェクト指向データベースシステムである。リポジトリ１０４は、文書、レコード形式、変換関数、図形、ジョブ、及び監視情報を含む（限定されないが）すべての種類のメタデータの記憶システムである。リポジトリは当該技術分野で知られている（例えば米国特許第５，９３０，７９４号、同第６，０３２，１５８号、同第６，０３８，５５８号及び同第６，０４４，３７４号参照）。
【００２０】
並列操作システム１０６は、ＧＤＥ１０２に生成したデータフロー図形の図形表現を受け取り、処理論理に応答するコンピュータ命令及び図形によって定義されるリソースを生成する。次に、並列操作システム１０６は、典型的に、それらの命令を、複数のプロセッサ（同種である必要はない）で実行する。適切な並列操作システムは、本発明の譲受人から入手できるCO>OPERATING SYSTEM（登録商標）である。
【００２１】
ウェブインタフェース１０８は、リポジトリ１０４の内容のウェブ・ブラウザ・ベースの表示（web-browser-based view）を提供する。ユーザは、ウェブインタフェース１０８を使用して、オブジェクトをブラウズし、新しいオブジェクトをつくり、既存のオブジェクトを変え、アプリケーションパラメータを指定し、ジョブを計画するなどを行うことができる。ウェブインタフェース１０８は、図形のランタイムパラメータの、リポジトリ１０４に記憶された情報に基づいて、パラメータ化された図形に対する書式ベースのユーザインタフェースを自動的につくる。
【００２２】
エグゼクティブ１１０は、ウェブインタフェース１０８を通じてアクセスされる任意のリポジトリベースのジョブ計画システムである。エグゼクティブ１１０は、ジョブとジョブ待ち行列を、リポジトリ１０４内のオブジェクトとして維持し、そしてウェブインタフェース１０８は、ジョブとジョブ待ち行列の表示、及びジョブとジョブ待ち行列を操作するためのファシリティを提供する。このような計画機能は当該技術分野では周知である（本発明を使用すると、エグゼクティブを利用する必要がないことに留意のこと）。
【００２３】
図２は、指定のランタイムパラメータを含むロールアップ成分２０２と、ソート成分２０４を有する典型的な図形２００のブロック図である。そのランタイムパラメータ（ソート成分２０４のキー及びロールアップ成分２０２のルール）は、入力するため、インタフェース２０６に、ユーザに対して表示される。以下の章で、ランタイムパラメータを指定し、次に、ユーザ入力を必要とするランタイムパラメータを提供するための結合ユーザインタフェースをつくる方法を説明する。
【００２４】
ランタイムパラメータの指定
ランタイムパラメータは、開発者が、図形実行時間（すなわちランタイム）において、外部入力に基づいて、図形の挙動を変える機構を提供する。好ましい実施態様では、これらの外部の値は、直接ユーザ入力によって提供される。しかし、これらの外部の値は、環境変数やコマンド行パラメータを含むいくつもの異なるソースからくることがある。ＧＤＥ１０２は、図形がＧＤＥから直接実行されるとき、開発者を試験値に対してプロンプトするのみならず、これらの状態すべてを処理するために正しいコードを生成する。ランタイムパラメータを使用して、開発者は、例えば、入力ファイルの経路が特定のネームを有する環境変数によって提供され；その環境変数は図形インタフェースの既知の部分になる；ということを明確に宣言することができる。このように、このようなパラメータには明確に定義されたインタフェースがある。例えば、生成したシェルスクリプトを読み取って、それを、環境変数とコマンド行引き数を参照してサーチして、特定図形の実行を制御するパラメータのセットを見つける必要がない。
【００２５】
ランタイムパラメータは、いくつもの方法で指定又は定義することができる。一つの方法は、ＧＤＥ１０２に表示されるランタイムパラメータグリッドを使用する方法である。図３は、図形に関連しているランタイムパラメータグリッド３００を表す図形ダイアログ（graphical dialog）の一実施態様の線図である。新しいランタイムパラメータが、必要なフィールドを単に埋めることによってつくられる。各ランタイムパラメータに関連するオブジェクトは、リポジトリ１０４内につくられ、そのパラメータを利用するすべての図形成分にリンクされる。例えば、図形ソート成分のソートキーがランタイムパラメータとして定義されると、そのソートキーのパラメータを表すオブジェクトはリポジトリ１０４に記憶され、次いで関連するソート成分にリンクされる。ランタイムパラメータを定義する別の方法は、図形成分の既存のパラメータに特別にフラグを立てて、それを、他の成分に対して「見える」ようにする（エクスポートする）方法である。これらの方法の組み合わせを使用することができる。例えば、成分をつくるとき、開発者は、その成分の特定のパラメータを、ランタイムパラメータとして指定することができる。開発者は次に、パラメータグリッドを使用して、図形のすべてのランタイムパラメータのデフォルト値などの特定値を設定して、新しいランタイムパラメータを定義することができる。
【００２６】
図形が実行されると、そのパラメータが処理されて、各パラメータに対する値が、ユーザ入力又は外部のプログラムソース（例えばコマンド行パラメータ又は環境変数）から得られる。例示実施態様には、ランタイムパラメータグリッド３００が下記フィールドを含んでいる。
【００２７】
ネーム３０２−このフィールドはランタイムパラメータのネームを含んでいる。「スコア−しきい値（score-threshold）」はネームとして示される例である。
【００２８】
タイプ３０４−このフィールドは、ランタイムパラメータに許容される値のタイプを含んでいる。「整数（Integer）」はタイプとして示される例である。例示実施態様にサポートされているタイプは次のとおりである。
・ブール（boolean）−値は真又は偽である。
・選択−値は一組の値のうちの一つの値である。
・コレータ（collator）−キーパラメータ値
・データセット−外部データファイルのネームと位置
・日付−日付値
・式−算術、論理及び／又は条件の式（例えば選択式）
・浮動小数−浮動小数点数
・整数−整数の数
・レイアウト−並列又は直列のレイアウトの定義
・レコード形式−レコード記述、又は変換記述を含むファイル
・文字列（string）−アービタリー文字列
・変換−変換記述、又は変換記述を含むファイル
【００２９】
ロケーション（Ｌｏｃ）３０６−このフィールドは、レコード形式と変換のタイプで使用される。それは、タイプフィールド３０４がファイルのロケーションを記述しているかどうか、又は埋め込み記述を含んでいるのかどうかを指定する。サポートされるロケーションは次のとおりである。
・埋め込み−パラメータはレコード記述又は変換記述を含んでいる。
・ホスト−パラメータはホスト計算器のファイルに対する参照を含んでいる。
・局所−パラメータは局所機械のファイルに対する参照を含んでいる。
・リポジトリ−パラメータは、リポジトリ変換又はレコード形式に対する参照を含んでいる。
【００３０】
デフォルト値３０８−このフィールドは、（１）他の値が外部のプログラムソースから与えられない場合に使用されるランタイムパラメータのデフォルト値、又は（２）ランタイム値をユーザ入力から引き出す方法、もしくは図形を実行するユーザから対話によってその情報を得る方法を記述するルールもしくは式を含んでいる。後者の場合、ユーザが入力値を提供しない場合、第二のデフォルト値フィールド（図示せず）を使用して、ランタイムパラメータに対する値を提供することができる。「ブール」及び「選択」のタイプの場合、このフィールドは、ユーザを、有効な選択に限定する。「レイアウト」のタイプの場合、このフィールドは読み取り専用であり、現在定義されているレイアウトの定義を表示する。その他のすべてのタイプの場合、このフィールドは、好ましくは、ユーザが有効文字列をタイプできる簡単なテキスト・エディタ（text editor）である。
【００３１】
エディト（edit）３１０−パラメータ行のエディトスペース３１０（又はアイコン、例えばペンシルアイコン）に対するクリッキングは、もっと前進した（more
advanced）エディトウィンドウをもたらし、そのウィンドウは、デフォルト値フィールド３０８をエディトするため、ユーザに、各種オプションをウォークスルーさせる。例示した実施態様では、下記のエディタを、それらの関連するタイプに対して利用できる。
・単一ラインエディト−整数、浮動、日付及び文字列のタイプの場合
・選択ダイアログ−ブール及び選択のタイプの場合
・キーエディタ−コレータタイプの場合
・ファイルブラウザ−データセットタイプの場合及びロケーションが埋め込まれていないレコード形式と変換のタイプの場合
・変換エディタ−ロケーションが埋め込まれている変換タイプの場合
・レコード形式エディタ−ロケーションが埋め込まれているレコード形式タイプの場合
・式エディタ−式タイプの場合
・レイアウトエディタ−レイアウトタイプの場合
【００３２】
上記のエディタは、カインドフィールド値（下記参照）が「ＣＤＬ」[成分記述言語（Component
Description Language）]でない場合に起動する。この場合、ユーザは、図形を実行するときにパラメータ値を引き出すか又はプロンプトするためのルールを定義するＣＤＬエディタを提供される。
【００３３】
記述３１２−これは、開発者が、ランタイムパラメータの期待値を記述する自由形式のフィールドである。それは、デフォルト値が、ユーザに入力値を要求する場合のルールを含んでいる場合、ランタイムにおけるプロンプトとして使用される。
【００３４】
カインド３１４−このフィールドは、図形実行時に関連パラメータの値を得る場所を定義する。サポートされるカインドフィールド３１４の値は次のとおりである。
・環境−ランタイムパラメータの値は、同じネームの環境変数中に見つかると予想される。環境変数が定義されていない場合、デフォルト値フィールド３０８の値が使用される。パラメータ（すなわち移出（exported）パラメータ）が必要でしかもデフォルト値フィールド３０８が空いている場合は、ランタイムエラーが生じて図形実行が停止する。
・位置−ランタイムパラメータの値は、アプリケーションを呼び出すコマンド行のその関連位置に予想される。例えば、ランタイムパラメータが、定義された第三の位置ランタイムパラメータの場合、そのパラメータ値は、実行スクリプトにおける第三の位置コマンド行引き数と予想される。指定の位置パラメータを提供しなければならず、さもないとランタイムエラーが生じる。
・キーワード−ランタイムパラメータの値は、キーワードコマンド行パラメータとして予想される。例示実施態様では、キーワードパラメータは下記の形態である。
-<parameter name><parameter value>
キーワードパラメータは任意なものであり、ランタイムエラーは、キーワードパラメータが提供されずそしてデフォルト値フィールド３０８がブランクでありかつ対応する移出パラメータが必要な場合のみランタイムエラーが生じる。
・固定−パラメータのランタイム値は常にデフォルト値である。これは２種以上のランタイムパラメータ間で一定値を共用する場合に有用である。
・ＣＤＬ−ランタイムパラメータのデフォルト値は、図形実行時にインタプリートされて、ランタイムパラメータの値を他のパラメータから引き出すか又はユーザに追加の入力をプロンプトするＣＤＬ式を含んでいる。本発明の特定の実施態様で使用するために選択される成分記述言語は、公に入手できるオブジェクト指向スクリプティング言語「Python」などの適切なスクリプティング言語であればよい。このようなスクリプトは、プログラム制御下でメタデータ（タイプ及び変換）を構築して、条件試験、比較、データ変換、算術演算と論理演算、文字列とリストの操作、並びにユーザ入力、プログラムで外部から供給される入力及び他のランタイムパラメータに対するその他の機能を実施して、ランタイムパラメータの最終値をつくることができる。
【００３５】
例示実施態様では、ランタイムパラメータグリッド３００に直接つくられたランタイムパラメータを参照するのに有用な規約は、ドルの記号「＄」が先行するパラメータネームを単純に入れることである。例えば＄ｋｅｙはｋｅｙというネームのランタイム変数を意味する。例示実施態様では、新しいランタイムパラメータが、「文字列」のタイプ、及び省略時ランタイムカインド（その省略時ランタイムカインドは「環境」である）に対する進んだオプション（advanced option）に基づいた省略時カインドをデフォルト値としてとる。
【００３６】
ランタイムパラメータ値は、ランタイムに決定することができそしてＣＤＬスクリプトは条件試験を提供できるので、「条件」ランタイムパラメータをつくることができる。条件ランタイムパラメータは、パラメータのすべての条件（ランタイムに決定される）が操作可能になっている場合のみ、ユーザ入力に対してプロンプトを起こす。したがって、例えば、データセットを「Ｎｏ」でソートすべきかどうかを要求する第一プロンプトにユーザが応答する場合、ソートキーを要求する第二の条件プロンプトは表示する必要がない。
【００３７】
したがって、設計段階（「設計時間」）中、開発者は、図形成分の特定のパラメータを、「ランタイム」パラメータとして指定する。次に、その図形成分に関連するオブジェクトは、関連するパラメータデータ（例えば、図２に示すパラメータグリッド３００からの情報のタイプ）とともに記憶される。
【００３８】
図４は、ランタイムパラメータを使用するプロセスを要約するフローチャートである。ランタイム中、実行されるアプリケーションに対応するパラメータオブジェクトが検索される（例えばリポジトリから）（ステップ４００）。このようなオブジェクト各々について、ユーザ入力が必要かどうかについて決定される（ステップ４０２）。ユーザ入力が必要であれば、プロンプトを表示する条件が満たされているかどうかが確認され（ステップ４０３）、これには前のプロンプトに対するユーザ入力の評価が含まれていてもよい。ユーザ入力が必要でなければ、デフォルト値が使用される（ステップ４０８）。あるいは、パラメータ値が必要でないことがあり（例えばユーザがソート機能を付勢することを選択しない場合、ソートキーは必要でない）こうしてパラメータ値が無視されることがある。そうでなければ、ユーザ入力に対するプロンプトが生じる（ステップ４０４）。
【００３９】
ユーザが、特定のパラメータに対し値を入力しない場合（ステップ４０６）、そのパラメータに対しデフォルト値が選択されることがある（ステップ４０８）。あるいは、ユーザ入力がないことを示す誤り条件を挙げてもよい。いずれにしても（ユーザ入力がないので誤り条件がないと想定して）、パラメータの最終値を決定し、入力の変換及び他のパラメータに基づいた従属性（dependency）と条件をしんしゃくする（ステップ４１０）。
【００４０】
特定のパラメータに対しユーザ入力が必要でないと決定されたならば（ステップ４０２）、例えば環境変数又はコマンド行パラメータによって、パラメータ値をプログラムによって外部から供給すべきかどうか決定される（ステップ４１２）。パラメータ値が供給されなかったならば、パラメータに対してデフォルト値が選択される（ステップ４１４）。あるいは、特定タイプの利用可能な入力がないことを示す誤り条件を挙げてもよい。いずれにしても（外部からの入力がないので誤り条件がないと想定して）、パラメータの最終値を決定し、入力の変換及び他のパラメータに基づいた従属性と条件をしんしゃくする（ステップ４１０）。
【００４１】
最終パラメータ値が、任意のステップとして一旦決定されると、すべての条件成分（以下に考察する）は、指定された条件及び先に述べたルールにしたがって、完全に除くか又はフロー（すなわち図形のリンクもしくはエッジ）によって置換することができる（ステップ４１６）。一旦、演算図形構造が最終決定されて最終パラメータ値が決定されると、その図形は通常の方式で実行される（ステップ４１８）。
【００４２】
試験値
ランタイムパラメータで図形をつくり試験している間、開発者をサポートするため、ＧＤＥ１０２の好ましい実施態様は、ランタイムパラメータの試験値もサポートする。開発者が、ランタイムパラメータで図形を実行するか、又は図形成分に作用するアンダーライニングコード（underlining
code）を表示したい場合、ＧＤＥ１０２は、ユーザが１又は２以上のランタイムパラメータに新しい試験値を入れることができる関連試験パラメータグリッドを表示する。使用される試験値の最後のセットは、図形によって記憶されて保管されることが好ましい。
【００４３】
各ランタイムパラメータに対し、開発者は、試験値コラム内の所要の試験値を入れる。エディトフィールドは、各試験値コラムに対応づけることができる。試験値フィールドとエディトフィールドは、パラメータカインドがＣＤＬであるときを除いて、ランタイムパラメータグリッド２００において、デフォルト値フィールド及びエディトフィールドと同様に振る舞う。
【００４４】
ＣＤＬの式が、ユーザが一つの値を特定のランタイムパラメータに対してプロンプトされるべきであることを示す場合、試験値フィールドとエディトフィールドの振る舞いは、関連するＣＤＬ式のインタプリテーションに基づいている。ＣＤＬの式が、単に、一つの値を、他の入力に基づいて引き出す場合、ランタイムパラメータは、通常のモードでは、試験値グリッド中に見えない。
【００４５】
ランタイムパラメータがその値を得る方法の指定
一つのパラメータがランタイムパラメータとして指定された後、対応するオブジェクトがリポジトリ１０４内につくられる。ランタイムパラメータが「ＣＤＬ」のカインドフィールド２１４値を有している場合、そのパラメータに対するデフォルト値フィールド値３０８は、下記好ましい形態のprompt_for擬似関数（pseudo-function）を含んでいる。
prompt_for"prompt-kind[modifiers]"options
上記のように、上記prompt_for擬似関数は、プロンプトを前の入力に基づいて表示すべきかどうかを決定する条件式の一部であってもよい。
【００４６】
このようなオブジェクトの場合、ユーザのインタフェースが、ユーザにダイレクトエントリ（direct
entry）ランタイムパラメータを提供する必要がある。好ましい実施態様では、ウェブインタフェース１０８がこの機能を提供する。特に、ランタイム中、各ランタイムパラメータオブジェクトの各prompt_for擬似関数は、ウェブインタフェース１０８によって構文解析されて、対応するユーザプロンプトを有するウェブページを（例えばＨＴＭＬに）生成する（あるいは、このようなウェブページは、ランタイムの前に生成させて、次に簡単に、ランタイムに提供することができる）。しかし、このようなウェブページがランタイムに生成すると、フレキシビリティが一層大きくなる。特に、そのページの内容は前のユーザ入力に依存することがある。ウェブインタフェース１０８は、このようなウェブページを表示し、ユーザ入力を受けることができる通常のウェブブラウザ（web
browser）とともに使用される。
【００４７】
上記prompt_for擬似関数は、ウェブインタフェース１０８に、パラメータ値に対してプロンプトする方法を示す。特にprompt_kindパラメータ、すなわち文字列定数（string
constant）は、どんな種類のユーザインタフェース（ＵＩ）要素（テキストブック、ドロップダウンリストなど）を提供すべきかを示す。前記文字列のmodifierの部分、すなわちキーワードのコンマ区切りリストは、各種プロンプトに共通のいくつかの選択肢を提供する。例示実施態様では、スペースは、modifierの文字列内で重要ではない。modifierのキーワードは以下のようにインタプリートされる。
・キーワードin placeは、その要素は、アプリケーションに対してサマリーレベルのユーザインタフェースが直接提供すべきであると宣言し、その値を、低いレベルに「ドリリング・イン（drilling
in）」することなしに送ることができる。in placeが指定されない場合は、簡単な「エディト」ボタンが、ユーザを別のページに案内してパラメータ値を送るサマリーレベルインタフェースで提供される。
・キーワードのblank okは、ユーザが値を送る必要がないことを宣言する。すなわち、そのアプリケーションは、妥当な方法で、デフォルト値を処理する。blank
okが指定されない場合、ユーザはある種の値を送ることなしにそのアプリケーションを実行できない。
【００４８】
異なるカインドのモディファイアを有するprompt_forコールのいくつかの実施例を以下に示す。
${prompt_for "text, inplace"}
${prompt_for "filter, in place", &input_type}
${prompt_for "radio, blankok, in place", $(list 1, 2, 3)}
【００４９】
この章の残りの部分に、各種のprompt_kindとそれらの対応する選択肢を列挙し、各々、ウェブインタフェース１０８が生成したウェブページにどのように現れるかを説明する。
【００５０】
text[size]−通常の単線テキストボックスsize文字幅（conventional
single-line text box size characters wide）を提供する（sizeは、供給されない場合、テキストボックスに対して省略値として、ブラウザの省略時のサイズをとる）。
【００５１】
radio choice-list[description-list]−１セットのラジオボタンの形態の通常の「択一式（choose
one）」プロンプト、すなわち各要素に対して前記choice-listの一つのボタンを提供する。description-listが供給されると、各choiceは対応するdescriptionでラベルされ、そうでなければ前記choiceは、choice-listからの文字列形態の対応するアイテムでラベルされる。
【００５２】
radioplus choice-list[description-list]−radioと同様であるが、テキストボックスの次の追加のボタンを提供して、ユーザにchoice-list内ではない「ライト−イン（write-in）」値を選択させる。
【００５３】
checkbox choice-list[description-list]−１セットのチェックボックスの形態の通常の「チューズゼロ以上（choose
zero or more）」プロンプト、すなわちchoice-listの各要素に対する一つのボタンを提供する。description-listが供給されると、各choiceは、対応するdescriptionでラベルされ、そうでなければ、これらchoiceは、choice-listからの対応するアイテムの文字列形でラベルされる。
【００５４】
dropdown choice-list[description-list,
size]−dropdown listの形態の通常の「択一式」プロンプトをchoice-listの要素に対して提供する。description-listが供給されると、各choiceは、対応するdescriptionでラベルされ、そうでなければchoice-listからの対応するアイテムの文字列形態でラベルされる。sizeが送られると、その多くのchoiceは同時に見えるが、そうでなければ一つしか見えない。
【００５５】
multidropdown
choice-list[description-list, size]−dropdown listの形態の通常の「チューズゼロ以上」プロンプトをchoice-listの要素に対して提供する。description-listが供給されると、各choiceは対応するdescriptionでラベルされ、そうでなければ、これらchoiceはchoice-listからの対応するアイテムの文字列形態でラベルされる。sizeが供給されると、その多くのchoiceは一度に見えるが、そうでなければ、アイテムのブラウザの省略時数が示される。
【００５６】
key type-obj[size]−与えられたtype-objからのフィールドで構成されたキー（コレータとしても知られている）に対するプロンプトを提供する。そのキーは、sizeと同じ数のパートを有していてもよく、type-objのフィールドの数をデフォルト値としてとる。図５はキープロンプトが生成する図形ダイアログ５００の一実施態様の線図である。３−エントリのkeyプロンプトに対するスクリプトテキストは次のとおりであり、そのテキストでは、そのfile/datasets/fixedは、下記ドロップダウンボックス５０２に示す利用可能なキーを定義する。
${prompt_for"key", ${dataset_type"/datasets/fixed"}, 3}
【００５７】
例示実施態様では、通常の照合順序（collation order）は昇順であるが、ユーザは、関連するチェックボックス５０４をチェックすることによって、キーに対する昇順の照合順序を選択することができる。
【００５８】
filter type-obj−与えられたtype-objの各フィールドの条件で構成されているフィルタ式に対するプロンプトを提供する。blankokもモディファイアはフィルタに対して影響を与えず、ブランクフィルタは「真の」式を生成する。図６はfilterプロンプトが生成した図形ダイアログ６００の一実施態様の線図である。各式のテキストエディトボックス６０４に関連する利用可能なフィールドネーム６０２はtype-objによって定義される。比較値がテキストエディトボックス６０４に入れられ、比較オペレータ（例えば、等しい、〜より大きい、〜より小さい又は〜に等しい）が対応するドロップダウンリストコントロール６０６から選択される。
【００５９】
flexifilter type-obj−filterプロンプトと同様であるが、各ラインのフィールドネームがドロップダウンリストから選択できる与えられたtype-objの各フィールドの条件で構成されているフィルタ式に対するプロンプトを提供する。これによって、複数の条件に対して同じフィールドを使用できる（例えばfield
STATE=MA OR field STATE=CA）。
【００６０】
rollup type-obj key[size]−与えられたキーによってロールアップされている与えられたtype-objのフィールドに基づいてロールアップ演算に対するプロンプトを提供する。そのロールアップは、sizeと同数のルールを有していてもよく、type-objのフィールドの数をデフォルト値としてとる。blankokモディファイアはロールアップに影響を与えず、ブランクロールアップが、各グループに対してちょうどキー値を提供するパッケージを生成する。図７は、rollupプロンプトが生成した図形ダイアログ７００の一実施態様の線図である。その例示実施態様では、ドロップダウンボックス７０２のコラムが、利用可能なロールアップ計算関数（例えば、合計、最小、最大）を定義する。各計算に関連する利用可能なフィールドネーム７０４は、type-objによって定義される。各ロールアップは、ユーザが所望の式を定義するための関連するテキストエディトボックス７０６、源値が計算に関与する基準を定義する（ブール式を通じて）ための「ウェア（where）」テキストエディトボックス７０８、及び計算結果を受け取るフィールドを指定するための出力フィールドテキストエディトボックス７１０を有している。それを明白に引き出せる場合、出力フィールドのネームは指定する必要はない。
【００６１】
reformat type-obj[size]−与えられたtype-objのフィールドに基づいて書式変更（reformat）計算に対するプロンプトを提供する。その書式変更はsizeと同数のルールをもっていてもよく、type-objのフィールドの数をデフォルト値としてとる。図８は、reformatプロンプトが生成する図形ダイアログ８００の一実施態様の線図である。例示実施態様では、reformatプロンプトは、入力フィールドを単に同じネームの出力フィールドに複写するためのセクション８０２を含んでいる（チェックボックス制御を使用して個々に、又はセレクトオールもしくはセレクトノンのボタンを使用して総合的に、選択／選択取り消しを行う）。reformatプロンプトの第二のセクションは、書式変更式（例えばtotal=revemue_1−revenur_2）を定義できるテキストエディトボックス８０４のカラムを含んでいる。各ルールは、書式変更された結果を受け取るフィールドを指定するための、関連出力フィールドテキストエディトボックス８０６をもっている。
【００６２】
outputspec−出力データセット仕様のためのプロンプトを提供する。その表示された制御は、利用可能な書式オプションを提供するためのドロップダウン制御、及び該出力データセットの特定定数のネームを入れるためのテキストエディトボックスを含んでいる。blankokモディファイアは、出力データセットの仕様に対して影響を与えない。
【００６３】
fpath starting-point−ファイル経路に対するプロンプトを提供する。このプロンプトは、本来テキストボックスであるが、その隣に、ポップアップウィンドウをファイル経路に対しブラウズするために出現させる「ブラウズ」ボタンを有している。そのテキストボックスは、ノンブランク（non-blank）の場合、上記ブラウジング操作のための出発点として使用され、ブランクの場合は、starting-point引き数が使用される。
【００６４】
rpath starting-point−リポジトリ経路に対するプロンプトを提供する。このプロンプトは、本来テキストボックスであるが、その隣に、ポップアップウィンドウをブラウジングのために出現させる「ブラウズ」ボタンを有している。そのテキストボックスはノンブランクの場合、上記ブラウジング操作のための出発点として使用され、ブランクの場合は、starting
point引き数が使用される。
【００６５】
radiofpath choice-list[description-list]−radioplusと同様であるが、「ライト−イン」スロットに、fpath−スタイルボックス−プラス−ブラウズ−ボタンを提供する。
【００６６】
radiorpath choice-list[description-list]−radioplusと同様であるが、「ライト−イン」スロットに、rpath−スタイルボックス−プラス−ブラウズ−ボタンを提供する。
【００６７】
条件成分
本発明の一実施態様は、図形の成分とフローの構造を、パラメータ値と計算されたメタデータに基づいて変えることができる条件成分機構を含んでいる。図形の各成分は、その成分を、ランタイムに、図形中に表示するかどうかを制御する条件を有している。その条件は、ランタイムパラメータによって、直接に又は間接的に計算することができる。条件成分は、図形を最適化又は特殊化することなどの各種の目的のために使用することができる。最適化する場合、特定のデータセットからの値が使用されないときは、オペレーションは、それらデータセットの処理を省略することができ、その結果、図形をより効率的に実行することができる。特殊化する場合、アプリケーションは、要求される詳細のレベルに基づいて、いくつもの異なる出力データセットの産生を調整することができるか、又は図形のいくつもの任意の部分の一つを実行できる。
【００６８】
図９Ａは、MergeJoin成分９００がファイルＡとＢからのデータを結合して、その結果を出力ファイル９０２に出力する第一図形のブロック図である。図９Ｂは、ロールアップ成分９０４がファイルＡからのデータを集めて、その結果を出力ファイル９０２に出力する第二図形のブロック図である。図９Ｃは、MergeJoin成分９０６がファイルＡとＢからのデータを結合し、次にロールアップ成分９０８が、その得られたデータを集めて最終結果を出力ファイル９０２に出力する図形のブロック図である。条件成分を使用して、これら三つの図形は、結合させて、最初は図９Ｃの図形のように見える単一図形にすることができるが、その正確な構造はランタイムまで決定されない。適切な条件を設定することによって、ロールアップ成分９０８は、コネクション（フロー）で置換されて、図９Ａの図形に類似のランタイム図形を生成することができる。同様に、適正な条件を設定することによって、MergeJoin成分９０６は、コネクション（フロー）でファイルＡに置換されて、図９Ｂの図形に類似のランタイム図形を生成することができる。
【００６９】
例示実施態様では、条件成分は、頂点（vertex）を定義する図形成分[すなわち、入力／出力ファイルなどのデータセット成分、書式変更又はソートの成分などの処理成分、又は部分図形（subgraph）として知られているその他の図形]であってもよい。好ましい実施態様では、条件成分は、二つの特定のパラメータすなわちcondition及びcondition-interpretationで制御される。conditionは、その評価がランタイムまで延期されるブール式又はブール値である。例示実施態様では、「偽」及び「０」の値が偽の条件を指定し、他のすべての値（空を含む）は真の条件を示す。Condition-interpretationパラメータは、二つの許容される相互に排他的な値すなわちRemove
Completely及びReplace With Flowを有している。
【００７０】
図１０は、Condition-interpretation control１００４を有するCondition１００２を提供する図形ダイアログ１０００の一実施態様の線図である。Condition-interpretation
control１００４は、Remove Completelyのインタプリテーション１００６又はReplace With Flowのインタプリテーション１００８を選択することができる。
【００７１】
Remove Completely：このインタプリテーションによって、conditionが満たされると、その成分及びその成分の接続されたフローのすべて（すなわち図形のリンク又はエッジ）がその図形から除かれる。活性Remove
Completely条件は、該成分及びその直接接続されたフローすべてを図形から機能的に除く。Remove Completely条件はどんな成分にも使うことができる。
【００７２】
図形から除かれる条件成分が、その条件成分の存在に依存している他の接続された成分を「汚染（poison）」することがあり、それら他の接続された成分が除かれることがある。図１１は、このような汚染が起こる状態を示す図形１１００の線図である。入力ファイル成分１１０２の条件が除去を示し、かつその対応する条件−インタプリテーションがRemove
Completelyの場合、入力ファイル成分１１０２とそれに接続されたフローは図形１１００から除かれる。続いて、これはソート成分１１０４を汚染し、そしてその入力は必要な入力ポートであるがそれに接続されるデータフローはもはやないので、ソート成分は除去される。これは順にロールアップ成分１１０６を汚染し、そしてその入力は必要な入力ポートであるがそれに接続されるデータフローはもはやないのでロールアップ成分は除去される。この「消失の汚染（poison
of disappearance）」を停止させる唯一の方法は、下流成分の任意のポート又は計数ポートへ接続する方法である。したがって、ソート−ロールアップ図形ブランチ１１０８全体は、入力ファイル成分１１０２の条件が除去を示すとき、図形１１００から効果的に除去される。図１１に示す結果は、元の図形構造の、名目的に三つ入力された結合成分１１００が、ランタイムには二つ入力された結合成分になることである。
【００７３】
好ましい実施態様では、汚染[暗示条件（implied condition）としても知られている]の詳細な意味は次のとおりである。
・成分が必要なポートを有し、かつそれに接続されたライブフロー（live flow）がない場合、その成分及びその成分に接続されたすべてのフローが図形から除かれる。
・成分が図形から完全に除かれると、そのポートに接続されたフローはすべて図形から除かれる。
・成分がフローで置換されると、その成分の指定された入力ポート及び指定された出力ポート以外のすべてのポートに接続されたフローはすべて図形から除かれる。
・必要な指標付きポート（required indexed port）にライブフローが接続されていない場合、同じ指標を有する各対応する任意の指標付きポートについては、その対応するポートに接続されたフローは図形から除かれる。
【００７４】
これらルールの驚くべき結果がいくつもある。例えば任意のポートしか持っていない成分は、汚染が理由で、除去されることは決してない。したがってこのような成分は、必要な場合に、明確に除かねばならない。
【００７５】
図１２はRemove Completely条件成分を含む図形のランタイムプリパレーション（runtime
preparation）のプロセスを要約するフローチャートである。condition-interpretationがRemove Completelyであり、conditionが満たされない場合（ステップ１２００）、その条件成分は図形から除去されない（ステップ１２０２）。conditionが満たされた場合（ステップ１２００）、その条件成分は、その成分に接続されたすべてのフローとともに、図形から除かれる（ステップ１２０４）。次に、「汚染された」成分とフローをすべて、上記ルールにしたがって、図形から除く（ステップ１２０６）。
【００７６】
Replace With Flow：このインタプリテーションによって、conditionが満たされた場合、成分はフロー（すなわち、図形エッジ）で置換される。Replace
With Flowの条件インタプリテーションは追加の情報が必要である。図１０によれば、ユーザは、成分が図形から除かれるときに、接続を行う入力ポート１０１０（すなわち計数ポートのファミリー）及び出力ポート１０１２（すなわち計数ポートのファミリー）を指定する。正確に一つの必要な入力ポートもしくは計数ポート及び正確に一つの必要な出力ポートもしくは計数ポートがある場合、省略時解釈で、これらのポートは指定されたフロースルーコネクションポート（flow-through
connection port）（それぞれ指定された入力ポート及び指定された出力ポートと呼ばれている）である。必要なポートは、接続すべきフローを少なくとも一つ必要とするポートである。
【００７７】
図１３は、本発明の特定の実施態様のReplace With Flow条件成分を含む図形のランタイムプリパレーションのプロセスを要約するフローチャートである。いくつかの成分が例示実施態様[CO>OPERATING
SYSTEM（登録商標）で利用可能な成分に基づいている]の特定の利用可能な入力と出力に依存しているので、いくつものルールがこの実行及びReplace With
Flow条件の使用に、下記のように該当している。
・condition-interpretationがReplace With Flowであり、かつそのconditionが満たされない場合（ステップ１３００）、条件成分は図形から除去されない（ステップ１３０２）。
・指定された入力ポート及び指定された出力ポートを有する成分は、その指定された入力ポートに接続された正確に一つのライブストレートフロー（live
straight flow）及びその指定された出力ポートに接続された正確に一つのライブストレートフローがある場合、一つだけのフローで置換できる（「ライブ」フローはランタイムに除かれなかったフローである）（ステップ１３０４）。そうであれば、成分自体が図形から除去され、そしてその指定された入力ポートに接続されたストレートライブフロー及びその指定された出力ポートに接続されたストレートライブフローが連結される（ステップ１３０６）。除かれた成分の他のポート（すなわち特に指定された入力ポートと出力ポート以外のポート）に直接連結された他のフローは図形から除かれる。除去された成分に接続された「汚染」された成分とフローは上記のように除去される（ステップ１３０８）。
・Replace With Flow条件を有する成分が、計数入力のファミリーの２以上の指定された入力ポートに接続されたライブフローを有している場合（ステップ１３１０）、該成分は、図形を有効化する必要があるので、図形から除去されない（ステップ１３１２）。
・必要な入力にライブファンインフロー（live fan-in flow）を有する成分は、特別のハンドリングが必要である。用語「ライブファンインフロー」は、成分が、必要な入力ポートにライブファンインフローもしくはオールツーオール（all
to all）フローを接続されているか、又は単一の必要な入力ポートに２以上のライブストレートフローを接続されていることを意味する。このような成分の場合、Replace
With Flow条件をインタプリートするには、該条件成分を、すべてのライブ入力フローを集合させる集合成分（gather component）で置換しなければならない（ステップ１３１４）。その置換された成分に接続された「汚染」フローと成分はいずれも次に、上記のように除かれる（ステップ１３１６）。
【００７８】
メタデータの伝搬
好ましい実施態様では、フローが図形成分の除去が行われた後に生成した場合、このようなフローのデータを定義するメタデータが修正された図形内でどのように伝搬すべきか選択をしなければならない。メタデータは該フローの両末端から得ることができる。本発明の好ましい実施態様では、該フローの上流の末端からのメタデータが好ましい。
【００７９】
該フローの上流の末端が、除去される成分である（又は集合成分で置換されている成分である）場合、ＧＤＥ１０２は、それが除かれていない成分を見つけるまで、図形中の上流を「ウォーク（walk）する」ことによって、該フローに対するメタデータを見つける。その上流成分によって暴露されたメタデータを使用して生成したフローに対するデータの特性を定義する。
【００８０】
典型的な使用法
ユーザは、一般に、ウェブインタプリテーション１０８の前に座って、リポジトリ１０４内に、ユーザが実行したいアプリケーションの図形を見つける。該アプリケーションの図形に関連するすべてのオブジェクトを走査することによって、ウェブインタフェース１０８は、ユーザに、該アプリケーションのランタイムパラメータに対する値を指定させるウェブページフォーム（web
page form）を生成する。一旦、すべてのランタイムパラメータが指定されると、該アプリケーションとパラメータ設定の結合がジョブとして行われ、そのジョブはエグゼクティブ１１０によって実行するように計画されている。該ジョブを実行する時点に到達すると、エグゼクティブ１１０は、公知の方式で、並列操作システム１０６によって実行するため、そのアプリケーションを待ち行列に入れる。その並列操作システム１０６は、トラッキング情報とジョブステータス（job
status）を集め次にその情報をリポジトリ１０４に記憶し、その結果、ユーザと管理者はジョブの進行とパフォーマンスを追跡することができる。
【００８１】
実施例
図１４は、ランタイムパラメータなしのロールアップアプリケーションを示す図形１４００の線図である。この図形は、各種のアカウント（account）の数を計算し、次いでその結果を出力ファイルに書き込む。このアプリケーションのあらゆる側面が、図形すなわち入力ファイル成分１４０２のネーム、入力データのフォーマット、Hash
Rollup成分１４０４中のデータをロールアップするために使用されるキーと変換ルール、出力フォーマット、及び出力ファイル成分１４０６のネームをつくった開発者によって決定されている。ユーザは、定義どおりに正確にこの図形を実行するだけでよい。
【００８２】
図１５は、図１４に示すロールアップアプリケーションのランタイムパラメータ化バージョンを示す図形１５００の線図である。このアプリケーションのデータフローの図形構造は、非ランタイムパラメータ化バージョンに非常に似ているが、このアプリケーションの方がはるかにフレキシブルである。ランタイムパラメータを通じて、エンドユーザは、抽象された（abstracted）入力データセット１５０２[入力ファイルネームとフォーマットが引き出される保管オブジェクト（reposited
object）]、Hash Rollup成分１５０４のロールアップキーとロールアップルール、及び出力ファイル成分１５０６のネームを指定することができる。
【００８３】
図１６は、図１５に示す実施例アプリケーションのランタイムパラメータグリッド１６００を示す図形ダイアログの一実施態様の線図である。これは図２に示すパラメータグリッドのバージョンに埋めこまれる。多数の省略時パラメータが、上記のように、prompt_for擬似関数を使って定義され、その結果、ウェブインタフェース１０８を通じてのユーザ入力が必要になる。この図形の外観は、非ランタイムパラメータ化アプリケーション図形とほとんど変わらないが、１又は２以上のパラメータグリッド（又は他の適切な制御器）によって、開発者は、該図形の実行を制御するすべてのパラメータを完全に追跡可能になる。
【００８４】
図１７Ａは、図１６に示すパラメータグリッド１６００内の情報からウェブインタフェース１０８が生成したフォーム１７００を示す図形ダイアログの一実施態様の線図である。この実施例では、フォーム１７００は、ユーザ入力に対する四つのランタイムパラメータ、すなわち入力データセットリポジトリ経路１７０２、ロールアップキー１７０４、ロールアップルール１７０６及び出力経路１７０８を表示する。図１７Ｂは、ユーザがパラメータ値を埋めこんだ図１７Ａに示すフォーム１７００の線図である。ランタイム１７０２〜１７０８に関連する直接の入力及び／又は編集又はブラウザ制御のボタンを使用して、ユーザは、対応するパラメータ値１７１０〜１７１６を提供して、関連する図形を実行する。
【００８５】
図１８は、ランタイムパラメータ化ロールアップと結合のアプリケーションを表す図形１８００の線図である。図１９は、図１８に示す実施例アプリケーションに対するランタイムパラメータグリッド１９００を表す図形ダイアログの一実施態様の線図である。この線図では、そのアプリケーションのいくつもの側面がパラメータ化されているが、ほとんど結合キーと入力データセットを含み、固定されたままである。図２０は、図１９に示すパラメータグリッド１９００内の情報からウェブインタフェース１０８が生成したフォーム２０００を表す図形ダイアログの一実施態様の線図である（ロールアップに対する入力タイプは、トップレベルフォームが表示される時点に分かっているので、ロールアップルール２００２はin-placeに対してプロンプトされうることに留意）。
【００８６】
図２１は、ランタイムパラメータ化ロールアップ−結合−ソートアプリケーションを表す図形２１００の線図である。図１８に示す実施例に類似しているが、条件ソート成分が図形２１００に加えられている。図２２は、実施例２１に示す実施例アプリケーションに対するランタイムパラメータグリッド２２００を表す図形ダイアログの一実施態様の線図である。sort_keyランタイムパラメータ２２０２は、ソーティングが要望されていることをユーザが示す場合のみプロンプトされる。この効果を得るため、デベロップ（develop）は、該sort_keyランタイムパラメータ２２０２のデフォルト値２２０４に対するif条件テスト中に、prompt_for擬似関数を書き込む（put）。if条件テストは、第二ランタイムパラメータのdo_sort２２０６を参照する。そのdo_sortパラメータ２２０６のデフォルト値フィールド２２０８と記述フィールド２２１０が定義されて、テキストプロンプト「そのデータはソートすべきか？」に対する真／偽又はｙｅｓ／ｎｏの回答を、ユーザに求めるradioプロンプトを生成する。do_sortパラメータ２２０６のために与えられた値が「真」である場合、そのソート成分２１０２は、ランタイムにおける図形の一部として含まれる。そうでなければ、ソート成分２１０２は、その指定された条件インタプリテーションに応じて、図形から完全に除かれるか又はフローで置換される。
【００８７】
スクリプトインプリメンテーション（script implementation）
ＧＤＥ１０２はパラメータ化図形を構築しやすくするが、時には、フォームベースインタフェースを提供したい非図形プログラムがある。アプリケーションレベルのＣＤＬとリポジトリ１０４を使用して、アービタリーシェルスクリプト（arbitrary
shell script）をパラメータ化することができる。例えばアプリケーションの記述は、下記のものに類似の構造でファイルに書きこむことができる。
【００８８】
【数１】
0005436752.tif 000002
【００８９】
汎用コンピュータによる実行
本発明はハードウェアもしくはソフトウェア又は両者の組み合わせ（例えばプログラム可能論理アレイ）で実行することができる。特に断らない限り、本発明の一部として含まれているアルゴリズムは、特定のコンピュータ又は他の装置と本来関連がない。特に、各種汎用機は、本明細書の教示内容にしたがって書きこまれたプログラムで使用できるか、又は必要な方法のステップを実行するためにより特殊化された装置を構築する方がより便利なことがある。しかし、本発明は、好ましくは、各々少なくとも一つのプロセッサ、少なくとも一つのデータ記憶システム（揮発性及び不揮発性のメモリ及び／又は記憶素子）、少なくとも一つの入力デバイス又は入力ポート、並びに少なくとも一つの出力デバイス又は出力ポートを備えた１又は２以上のプログラム可能コンピュータシステムで実行する１又は２以上のコンピュータプログラムで実行される。そのプログラムコードは、本明細書に記載の機能を実行するプロセッサで実行される。
【００９０】
このようなプロセッサは各々、所望のコンピュータ言語（機械言語、アセンブリ言語、高レベル手順言語、論理プログラミング言語又はオブジェクト指向プログラミング言語を含む）で実行してコンピュータシステムと交信することができる。いずれにしても、その言語はコンパイルされた言語又はインタプリートされた言語であればよい。
【００９１】
このようなコンピュータプログラムは各々、好ましくは、汎用又は専用のプログラマブルコンピュータが読み取り可能な記憶媒体又は記憶デバイス（例えば固体、磁気及び光の媒体）に記憶されて、その記憶媒体又は記憶デバイスがコンピュータシステムに読み取られると、コンピュータを設定し（configure）作動させて本明細書に記載の手順を実行する。また、本発明のシステムは、コンピュータプログラムで設定されたコンピュータ読み取り可能記憶媒体として実現され、そしてこのように設定された記憶媒体は、コンピュータシステムを特定で既定義の方法で作動させて本明細書に記載の機能を実行すると考えることもできる。
【００９２】
本発明のいくつもの実施態様を述べてきた。しかし、本発明の精神と範囲を逸脱することなく各種の変形を行うことができるものである。例えば、上記のいくつもの関数ステップは、全体の処理に実質的に影響することなしに異なる順序で実施することができる。例えば、図４に示すステップ４０２と４１２は、逆の順序で実行できる。したがって他の実施態様は本願の特許請求の範囲の範囲内にある。
【図面の簡単な説明】
【００９３】
【図１】主な要素の相互関連を示す本発明の一実施態様のブロック図である。
【図２】指定のランタイムパラメータを有するロールアップ成分とソート成分２０４を備えた典型的な図形のブロック図である。
【図３】図形と関連するランタイムパラメータグリッドを表す図形ダイアログの一実施態様の線図である。
【図４】ランタイムパラメータを使用するプロセスを要約するフローチャートである。
【図５】keyプロンプトが生成する図形ダイアログの一実施態様の線図である。
【図６】filterプロンプトが生成する図形ダイアログの一実施態様の線図である。
【図７】rollupプロンプトが生成する図形ダイアログの一実施態様の線図である。
【図８】reformatプロンプトが生成する図形ダイアログの一実施態様の線図である。
【図９Ａ】MergeJoin成分が、ファイルＡとＢからのデータを結合してその結果を出力ファイルに出力する第一図形のブロック図である。
【図９Ｂ】ロールアップ成分がファイルＡからデータを集めてその結果を出力ファイルに出力する第二図形のブロック図である。
【図９Ｃ】MergeJoin成分が、ファイルＡとＢからのデータを結合し、次にロールアップ成分が、得られたデータを集めて最終結果を出力ファイルに出力する図形のブロック図である。
【図１０】条件−インタプリテーション制御を有する条件を表示する図形ダイアログの一実施態様の線図である。
【図１１】汚染が起こっている状態を示す図形の線図である。
【図１２】Remove Completely条件成分を含む図形のランタイムプリパレーションのプロセスを要約するフローチャートである。
【図１３】本発明の特定の一実施態様のためのReplace With Flow条件成分を含む図形のランタイムプリパレーションのプロセスを要約するフローチャートである。
【図１４】ランタイムパラメータなしのロールアップアプリケーションを表す図形の線図である。
【図１５】図１４に示すロールアップアプリケーションのランタイムパラメータ化バージョンを表す図形の線図である。
【図１６】図１５に示す実施例アプリケーションに対するランタイムパラメータグリッドを表す図形ダイアログの一実施態様の線図である。
【図１７Ａ】図１６に示すパラメータグリッドの情報から、ウェブインタフェースが生成したフォームを表す図形ダイアログの一実施態様の線図である。
【図１７Ｂ】ユーザがパラメータ値を埋めこんだ図１７Ａに示すフォームの線図である。
【図１８】ランタイムパラメータ化されたロールアップと結合のアプリケーションを表す図形の線図である。
【図１９】図１８に示す実施例アプリケーションに対するランタイムパラメータグリッドを表す図形ダイアログの一実施態様の線図である。
【図２０】図１９に示すパラメータグリッドの情報から、ウェブインタフェースが生成したフォームを表す図形ダイアログの一実施態様の線図である。
【図２１】ランタイムパラメータ化ロールアップ−結合−ソートアプリケーションを表す図形の線図である。
【図２２】図２１に示した実施例アプリケーションに対するランタイムパラメータグリッドを表す図形ダイアログの一実施態様の線図である。
【図１】
0005436752.tif 000003
【図２】
0005436752.tif 000004
【図３】
0005436752.tif 000005
【図４】
0005436752.tif 000006
【図５】
0005436752.tif 000007
【図６】
0005436752.tif 000008
【図７】
0005436752.tif 000009
【図８】
0005436752.tif 000010
【図９Ａ】
0005436752.tif 000011
【図９Ｂ】
0005436752.tif 000012
【図９Ｃ】
0005436752.tif 000013
【図１０】
0005436752.tif 000014
【図１１】
0005436752.tif 000015
【図１２】
0005436752.tif 000016
【図１３】
0005436752.tif 000017
【図１４】
0005436752.tif 000018
【図１５】
0005436752.tif 000019
【図１６】
0005436752.tif 000020
【図１７Ａ】
0005436752.tif 000021
【図１７Ｂ】
0005436752.tif 000022
【図１８】
0005436752.tif 000023
【図１９】
0005436752.tif 000024
【図２０】
0005436752.tif 000025
【図２１】
0005436752.tif 000026
【図２２】
0005436752.tif 000027