(57)【要約】  コンピュータシステムにより実行される方法において、構造化データ項目内の１つ又は複数のフィールドの１つ又は複数の値を処理するためにコンピュータプログラムによって実装されるべき複数のモジュールを指定する仕様書にアクセスするステップと、仕様書を、複数のモジュールを実装するコンピュータプログラムに変換するステップであって、複数のモジュールの１つ又は複数の第一のモジュールの各々について、複数のモジュールの、各々が少なくとも部分的に第一のモジュールの出力に基づく入力を受信する１つ又は複数の第二のモジュールを特定することを含む、変換するステップと、第一のモジュールの出力データフォーマットを、第一のモジュールが構造化データ項目の１つ又は複数のフィールドの１つ又は複数の値のみを出力するように設定するステップとを含む、方法。
2021501429.tif 000002
【特許請求の範囲】
【請求項１】
仕様書を、構造化データ項目の１つ又は複数のフィールドの１つ又は複数の値を処理するコンピュータプログラムに変換する中でコンピュータシステムが実行する方法において、
前記構造化データ項目の前記１つ又は複数のフィールドの前記１つ又は複数の値を処理するために前記コンピュータプログラムにより実装されることになる複数のモジュールを指定する仕様書にアクセスするステップと、
前記仕様書を、前記複数のモジュールを実装する前記コンピュータプログラムに変換するステップであって、
前記複数のモジュールの１つ又は複数の第一のモジュールの各々について、
前記複数のモジュールの、各々が少なくとも部分的に前記第一のモジュールの出力に基づく入力を受信する１つ又は複数の第二のモジュールを特定することと、
前記第一のモジュールの出力データフォーマットを、前記第一のモジュールが、各々、（ｉ）前記第一のモジュールにとってアクセス可能であり、（ｉｉ）少なくとも部分的に前記第一のモジュールの前記出力に基づく前記１つ又は複数の第二のモジュールの少なくとも１つへの入力として指定される、前記構造化データ項目の１つ又は複数のフィールドの１つ又は複数の値だけを出力するように設定することと
を含むステップと、
永続的メモリの中に前記コンピュータプログラムを保存するステップであって、前記保存されたコンピュータプログラムは、前記１つ又は複数の第一のモジュールの各々のための前記設定された出力データフォーマットを指定するステップと
を含む、方法。
【請求項２】
前記コンピュータプログラムの１つ又は複数の部分の内容は、前記仕様書とは異なり、ユーザの入力を必要とせずに自動的に生成される、請求項１の方法。
【請求項３】
前記コンピュータプログラムは永続的且つ編集可能である、請求項１の方法。
【請求項４】
前記コンピュータプログラムはデータフローグラフであり、前記モジュールの各々は、前記データフローグラフのノードにより表されるデータフローグラフのコンポーネントであり、前記データフローグラフコンポーネントは、ノード間のリンクにより表されるデータフローにより結合される、請求項１の方法。
【請求項５】
データ記憶システムの中で、前記仕様書の一部を表すデータを前記データフローグラフコンポーネントにマッピングするデータ構造にアクセスするステップと、
前記データ構造の中で、前記仕様書の特定の部分を表すデータの項目を特定するステップと、
前記データ構造の中で、どのデータフローグラフコンポーネントが前記仕様書の前記特定部分にマッピングされるかを特定するステップと、
前記特定されたデータフローグラフコンポーネントを、前記仕様書により指定される動作の実行順序にしたがって前記データフローグラフに追加するステップと
をさらに含む、請求項４の方法。
【請求項６】
前記データフローグラフコンポーネント間の依存性を特定するステップと、少なくとも部分的にこれらの特定された依存性に基づいて、前記データフローグラフコンポーネントの出力データフォーマットを指定するステップとをさらに含む、請求項５の方法。
【請求項７】
特定の第一のモジュールについて、
１つ又は複数の第二のモジュールのうちの１つのみが前記特定の第一のモジュールにとってアクセス可能な１つ又は複数のフィールドの特定の１つにアクセスすることを特定するステップと、
前記１つ又は複数の第二のモジュールの前記１つのみが、前記複数のモジュールの、前記特定の第一のモジュール及び前記１つ又は複数の第二のモジュールの各々とは異なる第三のモジュールからの前記１つ又は複数のフィールドの前記特定の１つにアクセスすることを特定するステップと、
前記出力データフォーマットを、前記１つ又は複数の第二のモジュールの前記１つのみによりアクセスされる前記１つ又は複数のフィールドの前記特定の１つのための１つ又は複数の値を出力しないように設定するステップと
をさらに含む、請求項１の方法。
【請求項８】
ユーザインタフェースの表示のためにデータを提供するステップと、
前記ユーザインタフェースを介して、複数のモジュールの中からの、前記コンピュータプログラムに含めるための１つ又は複数のモジュールの選択を表すデータを受信するステップと、
前記ユーザインタフェースを介して、選択された各モジュールについて、その選択された１つ又は複数のモジュールによって実装される動作のパラメータの値を受信するステップと
をさらに含む、請求項１の方法。
【請求項９】
前記ユーザインタフェースを介して受信した前記値が、前記動作に関連付けられる所定の基準に適合するか否かを特定するステップと、
前記受信した値が前記所定の基準に適合するか否かを示す通知を前記ユーザインタフェースを介して出力するステップと、をさらに含み、前記受信した値が前記所定の基準に適合しないと特定された場合、前記通知は前記受信した値を前記所定の基準に適合するためにどのように変更しなければならないかの案内情報を含む、
請求項８の方法。
【請求項１０】
選択されたモジュールを前記パラメータの前記値で構成するステップと、
その後、他のコンピュータプログラムに含められ、それによって実装される前記構成済みモジュールを記憶するステップと
をさらに含む、請求項８の方法。
【請求項１１】
前記コンピュータプログラムを実行する前に、前記複数のモジュールの各特定のモジュールについて、第一、第二、及び第三のパスを実行して、前記特定のモジュールのための、前記特定のモジュールの下流のモジュールによりどのフィールドが必要とされるかを指定する前記設定された出力データフォーマットを特定して、保存し、前記特定のモジュールのための、前記特定のモジュールにとってどのフィールドがアクセス可能かを指定する入力データフォーマットを特定して、保存するステップをさらに含み、前記実行するステップは、
前記第一のパス中に、前記特定のモジュールは、前記特定のモジュールの上流のモジュールに対し、それ自体により、及び前記特定のモジュールの下流の何れかのモジュールにより必要とされる１つ又は複数のフィールドを表すデータを含む１つ又は複数のメッセージをブロードキャストすることを含み、前記ブロードキャストを行う前記特定のモジュールはブロードキャストモジュールであり、前記ブロードキャストを受信する前記上流のモジュールは受信モジュールであり、
前記第二のパス中に、前記受信モジュールは前記ブロードキャストモジュールに対し、どの受信モジュールが前記必要なフィールドの値を提供できるかを指定する１つ又は複数のメッセージを送信し、
前記第三のパス中に、前記ブロードキャストモジュールは、前記受信モジュールから受信した前記メッセージを分析し、応答として、前記ブロードキャストモジュールは前記受信モジュールに対し、どの受信モジュールが前記ブロードキャストモジュールへのどのフィールドの送信を担当するかを指定する１つ又は複数のメッセージを返信する、
請求項１の方法。
【請求項１２】
データストリームの中で、１つ又は複数のデータレコードを含む前記構造化データ項目を受信するステップと、
前記１つ又は複数のデータレコードの少なくとも１つについて、
前記コンピュータプログラムを実行して、前記１つ又は複数のデータレコードの前記少なくとも１つを処理するステップと、
前記１つ又は複数の第一のモジュールの少なくとも１つの保存された出力データフォーマットに基づき、前記１つ又は複数のレコードの前記少なくとも１つを前記１つ又は複数の第二のモジュールの１つにサブミットする前に、前記レコードの前記少なくとも１つから、少なくとも部分的に前記第一のモジュールの前記出力に基づいて、前記１つ又は複数の第二のモジュールの少なくとも１つへの入力として指定されない１つ又は複数のフィールドを除去するステップと、
をさらに含む、請求項１の方法。
【請求項１３】
前記仕様書の中で、１つ又は複数の新規モジュールを定義するステップと、
前記１つ又は複数の新規モジュールの少なくとも１つを、他の仕様書に含めるために利用できるエンティティを指定するグローバルパレットに保存するステップと
をさらに含む、請求項１の方法。
【請求項１４】
前記仕様書の中で、１つ又は複数の新規モジュールを定義するステップと、
前記１つ又は複数の新規モジュールの少なくとも１つを、前記仕様書に含めるためにのみ利用でき、他の仕様書には含められないエンティティを指定するローカルパレットに保存するステップと
をさらに含む、請求項１の方法。
【請求項１５】
仕様書の定義のために、グローバルパレットに含められた、定義済みモジュールにアクセスするステップと、
前記定義済みモジュールの１つ又は複数の属性を変更するステップと、
前記変更された定義済みモジュールを、前記仕様書に含めるためにのみ利用でき、他の仕様書には含められないエンティティを指定するローカルパレットに記憶すること、又は、
前記変更された定義済みモジュールを前記グローバルパレットに保存して、前記変更された定義済みモジュールが他の仕様書にとってもアクセス可能となるようにすること
を含む動作を実行するステップと
をさらに含む、請求項１の方法。
【請求項１６】
前記仕様書の中で、１つ又は複数の新規の第一のモジュールを定義するステップと、
前記仕様書の中で、１つ又は複数の新規の第二のモジュールを定義するステップと、
前記１つ又は複数の新規の第一のモジュールの少なくとも１つを、前記１つ又は複数の新規の第二のモジュールの少なくとも１つのためのデータソースとなるように構成するステップと
をさらに含む、請求項１の方法。
【請求項１７】
モジュールは１つ又は複数の他のモジュールを含む、請求項１の方法。
【請求項１８】
選択されたモジュールをパラメータの値で構成するステップと、
前記構成されたモジュールを、後で他のプログラムに含めるために記憶するステップと
をさらに含む、請求項１の方法。
【請求項１９】
前記１つ又は複数の第二のモジュールの１つのみが、前記第一のモジュールにとってアクセス可能な前記１つ又は複数のフィールドの特定の１つにアクセスすることを特定するステップと、
前記１つ又は複数の第二のモジュールの前記１つのみが、前記第一のモジュールとは異なる第三のモジュールからの前記１つ又は複数のフィールドの前記特定の１つにアクセスすることを特定するステップと、
前記出力データフォーマットを、前記１つ又は複数の第二のモジュールの前記１つのみによりアクセスされる前記１つ又は複数のフィールドの前記特定の１つのための１つ又は複数の値を出力しないように設定するステップと
をさらに含む、請求項１の方法。
【請求項２０】
構造化データ項目はデータレコードを含む、請求項１の方法。
【請求項２１】
仕様書を、構造化データ項目の１つ又は複数のフィールドの１つ又は複数の値を処理するコンピュータプログラムに変換する中でコンピュータシステムが実行する方法において、
複数のモジュールを指定する仕様書を、前記構造化データ項目の前記１つ又は複数のフィールドの１つ又は複数の値を処理するために前記モジュールを実装するためのコンピュータプログラムに変換するステップであって、
前記複数のモジュールの１つ又は複数の第一のモジュールの各々について、
前記複数のモジュールの、各々が少なくとも部分的に前記第一のモジュールの出力に基づく入力を受信する１つ又は複数の第二のモジュールを特定することと、
前記フィールドの、そのための１つ又は複数の値が前記１つ又は複数の第二のモジュールによって処理される１つ又は複数を、
前記１つ又は複数の第二のモジュールの各々について、前記第二のモジュールが１つ又は複数のフィールドの１つ又は複数の値を処理するように構成されているときに、前記フィールドの、そのための１つ又は複数の値がその第二のモジュールによって処理される１つ又は複数を特定することによって、
特定することと、
そのための前記１つ又は複数の値が前記１つ又は複数の第二のモジュールにより処理される前記１つ又は複数のフィールドの中から、前記フィールドの、そのための１つ又は複数の値が前記第一のモジュールにとってアクセス可能な１つ又は複数を特定することと、
そのための前記１つ又は複数の値が前記第一のモジュールにとってアクセス可能な前記１つ又は複数のフィールドの各々について、
前記フィールドの値が、少なくとも部分的に前記第一のモジュールの前記出力に基づいて前記１つ又は複数の第二のモジュールの少なくとも１つへの入力として指定されるか否かを特定することと、
前記第一のモジュールの出力データフォーマットを、前記第一のモジュールが、各々が少なくとも部分的に前記第一のモジュールの前記出力に基づいて前記１つ又は複数の第二のモジュールの少なくとも１つへの入力として指定される１つ又は複数のフィールドの１つ又は複数の値のみを出力するように設定することによって特定することと、
を含む、ステップと、
永続的メモリの中に、前記コンピュータプログラムを保存するステップであって、前記コンピュータプログラムは、前記１つ又は複数の第一のモジュールの各々についての出力データフォーマットを指定するステップと
を含む、方法。
【請求項２２】
仕様書を、構造化データ項目の１つ又は複数のフィールドの１つ又は複数の値を処理するコンピュータプログラムに変換するためのコンピュータシステムにおいて、
１つ又は複数の処理装置と、
前記１つ又は複数の処理装置により実行可能であり、
前記構造化データ項目の中の前記１つ又は複数のフィールドの前記１つ又は複数の値を処理するために前記コンピュータプログラムにより実装されることになる複数のモジュールを指定する仕様書にアクセスすることと、
前記仕様書を、前記複数のモジュールを実装する前記コンピュータプログラムに変換することであって、
前記複数のモジュールの１つ又は複数の第一のモジュールの各々について、
前記複数のモジュールの、各々が少なくとも部分的に前記第一のモジュールの出力に基づく入力を受け取る１つ又は複数の第二のモジュールを特定することと、
前記第一のモジュールの出力データフォーマットを、前記第一のモジュールが、前記構造化データ項目の、各々が（ｉ）前記第一のモジュールにとってアクセス可能であり、（ｉｉ）少なくとも部分的に前記第一のモジュールの前記出力に基づいて前記１つ又は複数の第二のモジュールの少なくとも１つへの入力として指定される１つ又は複数のフィールドの１つ又は複数の値のみを出力するように設定することと、
を含む、変換することと、
永続的メモリに、前記コンピュータプログラムを保存することであって、前記保存されたコンピュータプログラムは、前記１つ又は複数の第一のモジュールの各々について前記設定された出力データフォーマットを指定する、保存することと
を含む動作を実行する命令を記憶する１つ又は複数の機械可読ハードウェア記憶装置と
を含む、コンピュータシステム。
【請求項２３】
仕様書を、構造化データ項目の１つ又は複数のフィールドの１つ又は複数の値を処理するコンピュータプログラムに変換するための１つ又は複数の機械可読ハードウェア記憶装置において、１つ又は複数の処理装置により実行可能な、
前記構造化データ項目の中の前記１つ又は複数のフィールドの前記１つ又は複数の値を処理するために前記コンピュータプログラムにより実装されることになる複数のモジュールを指定する仕様書にアクセスすることと、
前記仕様書を、前記複数のモジュールを実装する前記コンピュータプログラムに変換することであって、
前記複数のモジュールの１つ又は複数の第一のモジュールの各々について、
前記複数のモジュールの、各々が少なくとも部分的に前記第一のモジュールの出力に基づく入力を受け取る１つ又は複数の第二のモジュールを特定することと、
前記第一のモジュールの出力データフォーマットを、前記第一のモジュールが、前記構造化データ項目の、各々が（ｉ）前記第一のモジュールにとってアクセス可能であり、（ｉｉ）少なくとも部分的に前記第一のモジュールの前記出力に基づいて前記１つ又は複数の第二のモジュールの少なくとも１つへの入力として指定される１つ又は複数のフィールドの１つ又は複数の値のみを出力するように設定することと、
を含む、変換することと、
永続的メモリに、前記コンピュータプログラムを保存することであって、前記保存されたコンピュータプログラムは、前記１つ又は複数の第一のモジュールの各々について前記設定された出力データフォーマットを指定する、保存することと
を含む動作を実行する命令を記憶する、１つ又は複数の機械可読ハードウェア記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、仕様書を、構造化データ項目内の１つ又は複数のフィールドの１つ又は複数の値を処理するコンピュータプログラムに変換するための、コンピュータシステムにより実行される方法、コンピュータシステム、及びコンピュータ可読媒体に関する。
【背景技術】
【０００２】
複雑なデータ処理システムは典型的に、データを複数の段階で処理し、１つの段階で生成された結果が次の段階に供給される。このようなシステムを通じた全体的な情報の流れは、有向データフローグラフで説明され得、グラフ内のノード又は頂点はコンポーネント（データファイル又はプロセス）を表し、グラフ内のリンク又は「エッジ」はコンポーネント間のデータフローを示す。このようなグラフを用いた計算を実行するシステムは、“ＥＸＥＣＵＴＩＮＧ  ＣＯＭＰＵＴＡＴＩＯＮＳ  ＥＸＰＲＥＳＳＥＤ  ＡＳ  ＧＲＡＰＨＳ”と題する先行技術の（特許文献１）に記載されており、これは参照によって本願に援用される。
【０００３】
グラフはまた、計算を直接呼び出すためにも使用できる。このシステムにより作成されたグラフは、情報をグラフのコンポーネントにより表される個別のプロセスの中に投入し、及びそこから引き出すため、情報をプロセス間で移動させるため、及びそのプロセスのための実行順序を規定するための方法を提供する。これらのグラフを呼び出すシステムは、プロセス間通信方法を選択するアルゴリズム及びプロセス実行のスケジュールを立てるアルゴリズムを含み、また、グラフの実行のモニタも提供する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許第５，９６６，０７２号明細書
【発明の概要】
【課題を解決するための手段】
【０００５】
一般的態様１において、仕様書を、構造化データ項目の１つ又は複数のフィールドの１つ又は複数の値を処理するコンピュータプログラムに変換する中でコンピュータシステムが実行する方法が説明され、これは、構造化データ項目の１つ又は複数のフィールドの１つ又は複数の値を処理するためにコンピュータプログラムにより実装されることになる複数のモジュールを指定する仕様書にアクセスするステップと、仕様書を、複数のモジュールを実装するコンピュータプログラムに変換するステップであって、複数のモジュールの１つ又は複数の第一のモジュールの各々について、複数のモジュールの、各々が少なくとも部分的に第一のモジュールの出力に基づく入力を受信する１つ又は複数の第二のモジュールを特定することと、第一のモジュールの出力データフォーマットを、第一のモジュールが、各々、（ｉ）第一のモジュールにとってアクセス可能であり、（ｉｉ）少なくとも部分的に第一のモジュールの出力に基づく１つ又は複数の第二のモジュールの少なくとも１つへの入力として指定される、構造化データ項目の１つ又は複数のフィールドの１つ又は複数の値だけを出力するように設定することと、を含むステップと、永続的メモリの中にコンピュータプログラムを保存するステップであって、保存されたコンピュータプログラムは、１つ又は複数の第一のモジュールの各々のための設定された出力データフォーマットを指定するステップと、を含む。１つ又は複数のコンピュータのシステムは、動作時にシステムにアクションを実行させるソフトウェア、ファームウェア、ハードウェア、又はそれらの組合せがシステム上にインストールされることにより、特定の動作又はアクションを行うように構成できる。１つ又は複数のコンピュータプログラムは、データ処理装置により実行されると、装置にアクションを実行させる命令を含むことにより、特定の動作又はアクションを実行するように構成できる。
【０００６】
態様１による態様２において、コンピュータプログラムの１つ又は複数の部分の内容は、仕様書とは異なり、ユーザの入力を必要とせずに自動的に生成される。
【０００７】
態様１〜２の何れか１つによる態様３において、コンピュータプログラムは永続的且つ編集可能である。
【０００８】
態様１〜３の何れか１つによる態様４において、コンピュータプログラムはデータフローグラフであり、モジュールの各々は、データフローグラフのノードにより表されるデータフローグラフのコンポーネントであり、データフローグラフコンポーネントは、ノード間のリンクにより表されるデータフローにより結合される。
【０００９】
態様１〜４の何れか１つによる態様５において、方法は、データ記憶システムの中で、仕様書の一部を表すデータをデータフローグラフコンポーネントにマッピングするデータ構造にアクセスするステップと、データ構造の中で、仕様書の特定の部分を表すデータの項目を特定するステップと、データ構造の中で、どのデータフローグラフコンポーネントが仕様書のその特定の部分にマッピングされるかを特定するステップと、特定されたデータフローグラフコンポーネントを、仕様書により指定される動作の実行順序にしたがってデータフローグラフに追加するステップと、をさらに含む。
【００１０】
態様１〜５の何れか１つによる態様６において、方法は、データフローグラフコンポーネント間の依存性を特定するステップと、少なくとも部分的にこれらの特定された依存性に基づいて、データフローグラフコンポーネントの出力データフォーマットを指定するステップと、をさらに含む。
【００１１】
態様１〜６の何れか１つによる態様７において、方法は、特定の第一のモジュールについて、１つ又は複数の第二のモジュールのうちの１つのみが特定の第一のモジュールにとってアクセス可能な１つ又は複数のフィールドの特定の１つにアクセスすることを特定するステップと、１つ又は複数の第二のモジュールのその１つのみが、複数のモジュールの、特定の第一のモジュール及び１つ又は複数の第二のモジュールの各々とは異なる第三のモジュールからの１つ又は複数のフィールドの特定の１つにアクセスすることを特定するステップと、出力データフォーマットを、１つ又は複数の第二のモジュールのその１つのみによりアクセスされる１つ又は複数のフィールドの特定の１つのための１つ又は複数の値を出力しないように設定するステップと、をさらに含む。
【００１２】
態様１〜７の何れか１つによる態様８において、方法は、ユーザインタフェースの表示のためにデータを提供するステップと、ユーザインタフェースを介して、複数のモジュールの中からの、コンピュータプログラムに含めるための１つ又は複数のモジュールの選択を表すデータを受信するステップと、ユーザインタフェースを介して、選択された各モジュールについて、その選択された１つ又は複数のモジュールによって実装される動作のパラメータの値を受信するステップと、をさらに含む。
【００１３】
態様１〜８の何れか１つによる態様９において、方法は、ユーザインタフェースを介して受信した値が、動作に関連付けられる所定の基準に適合するか否かを特定するステップと、受信した値が所定の基準に適合するか否かを示す通知をユーザインタフェースを介して出力するステップと、をさらに含み、受信した値が所定の基準に適合しないと特定された場合、通知は受信した値を所定の基準に適合するためにどのように変更しなければならないかの案内情報を含む。
【００１４】
態様１〜９の何れか１つによる態様１０において、方法は、選択されたモジュールをパラメータの値で構成するステップと、その後、他のコンピュータプログラムに含められ、それによって実装される構成済みモジュールを記憶するステップと、をさらに含む。
【００１５】
態様１〜１０の何れか１つによる態様１１において、方法は、コンピュータプログラムを実行する前に、複数のモジュールの各特定のモジュールについて、第一、第二、及び第三のパスを実行して、その特定のモジュールのための、その特定のモジュールの下流のモジュールによりどのフィールドが必要とされるかを指定する設定された出力データフォーマットを特定して、保存し、その特定のモジュールのための、その特定のモジュールにとってどのフィールドがアクセス可能かを指定する入力データフォーマットを特定して、保存するステップをさらに含み、実行するステップは、第一のパス中に、その特定のモジュールは、その特定のモジュールの上流のモジュールに対し、それ自体により、及びその特定のモジュールの下流の何れかのモジュールにより必要とされる１つ又は複数のフィールドを表すデータを含む１つ又は複数のメッセージをブロードキャストすることを含み、ブロードキャストを行う特定のモジュールはブロードキャストモジュールであり、ブロードキャストを受信する上流のモジュールは受信モジュールであり、第二のパス中に、受信モジュールはブロードキャストモジュールに対し、どの受信モジュールが必要なフィールドの値を提供できるかを指定する１つ又は複数のメッセージを送信し、第三のパス中に、ブロードキャストモジュールは、受信モジュールから受信したメッセージを分析し、応答として、ブロードキャストモジュールは受信モジュールに対し、どの受信モジュールがブロードキャストモジュールへのどのフィールドの送信を担当するかを指定する１つ又は複数のメッセージを返信する。
【００１６】
態様１〜１１の何れか１つによる態様１２において、方法は、データストリームの中で、１つ又は複数のデータレコードを含む構造化データ項目を受信するステップと、１つ又は複数のデータレコードの少なくとも１つについて、コンピュータプログラムを実行して、１つ又は複数のデータレコードのうちの少なくとも１つを処理するステップと、１つ又は複数の第一のモジュールの少なくとも１つの保存された出力データフォーマットに基づき、１つ又は複数のレコードの少なくとも１つを１つ又は複数の第二のモジュールの１つにサブミットする前に、レコードの少なくとも１つから、少なくとも部分的に第一のモジュールの出力に基づいて、１つ又は複数の第二のモジュールの少なくとも１つへの入力として指定されない１つ又は複数のフィールドを除去するステップと、をさらに含む。
【００１７】
態様１〜１２の何れか１つによる態様１３において、方法は、仕様書の中で、１つ又は複数の新規モジュールを定義するステップと、１つ又は複数の新規モジュールの少なくとも１つを、他の仕様書に含めるために利用できるエンティティを指定するグローバルパレットに保存するステップと、をさらに含む。
【００１８】
態様１〜１３の何れか１つによる態様１４において、方法は、仕様書の中で、１つ又は複数の新規モジュールを定義するステップと、１つ又は複数の新規モジュールの少なくとも１つを、その仕様書に含めるためにのみ利用でき、他の仕様書には含められないエンティティを指定するローカルパレットに保存するステップと、をさらに含む。
【００１９】
態様１〜１４の何れか１つによる態様１５において、方法は、仕様書の定義のために、グローバルパレットに含められた、定義済みモジュールにアクセスするステップと、定義済みモジュールの１つ又は複数の属性を変更するステップと、変更された定義済みモジュールを、その仕様書に含めるためにのみ利用でき、他の仕様書には含められないエンティティを指定するローカルパレットに記憶すること、又は変更された定義済みモジュールをグローバルパレットに保存して、変更された定義済みモジュールが他の仕様書にとってもアクセス可能となるようにすることを含む動作を実行するステップと、をさらに含む。
【００２０】
態様１〜１５の何れか１つによる態様１６において、方法は、仕様書の中で、１つ又は複数の新規第一のモジュールを定義するステップと、仕様書の中で、１つ又は複数の新規第二のモジュールを定義するステップと、１つ又は複数の新規第一のモジュールの少なくとも１つを、１つ又は複数の新規第二のモジュールの少なくとも１つのためのデータソースとなるように構成するステップと、をさらに含む。
【００２１】
態様１〜１６の何れか１つによる態様１７において、モジュールは１つ又は複数の他のモジュールを含む。
【００２２】
態様１〜１７の何れか１つによる態様１８において、方法は、選択されたモジュールをパラメータの値で構成するステップと、構成されたモジュールを、後で他のプログラムに含めるために記憶するステップと、をさらに含む。
【００２３】
態様１〜１８の何れか１つによる態様１９において、方法は、１つ又は複数の第二のモジュールの１つのみが、第一のモジュールにとってアクセス可能な１つ又は複数のフィールドの特定の１つにアクセスすることを特定するステップと、１つ又は複数の第二のモジュールのその１つのみが、第一のモジュールとは異なる第三のモジュールからの１つ又は複数のフィールドの特定の１つにアクセスすることを特定するステップと、出力データフォーマットを、１つ又は複数の第二のモジュールのその１つのみによりアクセスされる１つ又は複数のフィールドの特定の１つのための１つ又は複数の値を出力しないように設定するステップと、をさらに含む。
【００２４】
態様１〜１９の何れか１つによる態様２０において、構造化データ項目はデータレコードを含む。
【００２５】
一般的態様２１において、方法は、仕様書を、構造化データ項目の１つ又は複数のフィールドの１つ又は複数の値を処理するコンピュータプログラムに変換する中でコンピュータシステムが実行する方法は、複数のモジュールを指定する仕様書を、構造化データ項目の前記１つ又は複数のフィールドの１つ又は複数の値を処理するためにモジュールを実装するためのコンピュータプログラムに変換するステップであって、複数のモジュールの１つ又は複数の第一のモジュールの各々について、複数のモジュールの、各々が少なくとも部分的に第一のモジュールの出力に基づく入力を受信する１つ又は複数の第二のモジュールを特定することと、フィールドの、そのための１つ又は複数の値が１つ又は複数の第二のモジュールによって処理される１つ又は複数を、１つ又は複数の第二のモジュールの各々について、第二のモジュールが１つ又は複数のフィールドの１つ又は複数の値を処理するように構成されているときに、フィールドの、そのための１つ又は複数の値がその第二のモジュールによって処理される１つ又は複数を特定することによって特定することと、そのための１つ又は複数の値が１つ又は複数の第二のモジュールにより処理される１つ又は複数のフィールドの中から、フィールドの、そのための１つ又は複数の値が第一のモジュールにとってアクセス可能な１つ又は複数を特定することと、そのための１つ又は複数の値が第一のモジュールにとってアクセス可能な１つ又は複数のフィールドの各々について、フィールドの値が、少なくとも部分的に第一のモジュールの出力に基づいて１つ又は複数の第二のモジュールの少なくとも１つへの入力として指定されるか否かを特定することと、第一のモジュールの出力データフォーマットを、第一のモジュールが、各々が少なくとも部分的に第一のモジュールの出力に基づいて１つ又は複数の第二のモジュールの少なくとも１つへの入力として指定される１つ又は複数のフィールドの１つ又は複数の値のみを出力するように設定することによって特定することと、を含む、変換するステップと、永続的メモリの中に、コンピュータプログラムを保存するステップであって、コンピュータプログラムは、１つ又は複数の第一のモジュールの各々についての出力データフォーマットを指定するステップと、を含む。この態様のその他の実施形態は、それに対応するコンピュータシステム、装置、及び、１つ又は複数のコンピュータ記憶装置上に記録されたコンピュータプログラムを含み、各々が方法の動作を実行するように構成される。１つ又は複数のコンピュータのシステムは、動作中に、システムにアクションを実行させるソフトウェア、ファームウェア、ハードウェア、又はそれらの組合せがシステムに組み込まれていることよって、特定の動作又はアクションを実行するように構成できる。１つ又は複数のコンピュータプログラムは、データ処理装置により実行されたときに、装置にアクションを実行させる命令を含むことによって、特定の動作又はアクションを実行するように構成できる。
【００２６】
一般的態様２２において、仕様書を、構造化データ項目の１つ又は複数のフィールドの１つ又は複数の値を処理するコンピュータプログラムに変換するためのコンピュータシステムであって、コンピュータシステムは、１つ又は複数の処理装置と、１つ又は複数の処理装置により実行可能であり、構造化データ項目の中の１つ又は複数のフィールドの１つ又は複数の値を処理するためにコンピュータプログラムにより実装されることになる複数のモジュールを指定する仕様書にアクセスすることと、仕様書を、複数のモジュールを実装するコンピュータプログラムに変換することであって、複数のモジュールの１つ又は複数の第一のモジュールの各々について、複数のモジュールの、各々が少なくとも部分的に第一のモジュールの出力に基づく入力を受け取る１つ又は複数の第二のモジュールを特定することと、第一のモジュールの出力データフォーマットを、第一のモジュールが、構造化データ項目の、各々が（ｉ）第一のモジュールにとってアクセス可能であり、（ｉｉ）少なくとも部分的に第一のモジュールの出力に基づいて１つ又は複数の第二のモジュールの少なくとも１つへの入力として指定される１つ又は複数のフィールドの１つ又は複数の値のみを出力するように設定することと、を含む、変換することと、永続的メモリに、コンピュータプログラムを保存することであって、保存されたコンピュータプログラムは、１つ又は複数の第一のモジュールの各々について設定された出力データフォーマットを指定する、保存することと、を含む動作を実行する命令を記憶する１つ又は複数の機械可読ハードウェア記憶装置と、を含む。
【００２７】
態様２２による態様２３において、コンピュータプログラムの１つ又は複数の部分の内容は、仕様書とは異なり、ユーザの入力を必要とせずに自動的に生成される。
【００２８】
態様２２〜２３の何れか１つによる態様２４において、コンピュータプログラムは永続的且つ編集可能である。
【００２９】
態様２２〜２４の何れか１つによる態様２５において、コンピュータプログラムはテータフローグラフであり、モジュールの各々は、データフローグラフのノードにより表されるデータフローグラフのコンポーネントであり、データフローグラフコンポーネントは、ノード間のリンクにより表されるデータフローにより結合される。
【００３０】
態様２２〜２５の何れか１つによる態様２６において、動作は、データ記憶システムの中で、仕様書の一部を表すデータをデータフローグラフコンポーネントにマッピングするデータ構造にアクセスすることと、データ構造の中で、仕様書の特定の部分を表すデータの項目を特定することと、データ構造の中で、どのデータフローグラフコンポーネントが仕様書のその特定の部分にマッピングされるかを特定することと、特定されたデータフローグラフコンポーネントを、仕様書により指定される動作の実行順序にしたがってデータフローグラフに追加することと、をさらに含む。
【００３１】
態様２２〜２６の何れか１つによる態様２７において、動作は、データフローグラフコンポーネント間の依存性を特定することと、少なくとも部分的にこれらの特定された依存性に基づいて、データフローグラフコンポーネントの出力データフォーマットを指定することと、をさらに含む。
【００３２】
態様２２〜２７の何れか１つによる態様２８において、動作は、特定の第一のモジュールについて、１つ又は複数の第二のモジュールのうちの１つのみが特定の第一のモジュールにとってアクセス可能な１つ又は複数のフィールドの特定の１つにアクセスすることを特定することと、１つ又は複数の第二のモジュールのその１つのみが、複数のモジュールの、特定の第一のモジュール及び１つ又は複数の第二のモジュールの各々とは異なる第三のモジュールからの１つ又は複数のフィールドの特定の１つにアクセスすることを特定することと、出力データフォーマットを、１つ又は複数の第二のモジュールのその１つのみによりアクセスされる１つ又は複数のフィールドの特定の１つのための１つ又は複数の値を出力しないように設定することと、をさらに含む。
【００３３】
態様２２〜２８の何れか１つによる態様２９において、動作は、ユーザインタフェースの表示のためにデータを提供することと、ユーザインタフェースを介して、複数のモジュールの中からの、コンピュータプログラムに含めるための１つ又は複数のモジュールの選択を表すデータを受信することと、ユーザインタフェースを介して、選択された各モジュールについて、その選択された１つ又は複数のモジュールによって実装される動作のパラメータの値を受信することと、をさらに含む。
【００３４】
態様２２〜２９の何れか１つによる態様３０において、動作は、ユーザインタフェースを介して受信した値が、動作に関連付けられる所定の基準に適合するか否かを特定することと、受信した値が所定の基準に適合するか否かを示す通知をユーザインタフェースを介して出力することと、をさらに含み、受信した値が所定の基準に適合しないと特定された場合、通知は受信した値を所定の基準に適合するためにどのように変更しなければならないかの案内情報を含む。
【００３５】
態様２２〜３０の何れか１つによる態様３１において、動作は、選択されたモジュールをパラメータの値で構成することと、その後、他のコンピュータプログラムに含められ、それによって実装される構成済みモジュールを記憶することと、をさらに含む。
【００３６】
態様２２〜３１の何れか１つによる態様３２において、動作は、コンピュータプログラムを実行する前に、複数のモジュールの各特定のモジュールについて、第一、第二、及び第三のパスを実行して、その特定のモジュールのための、その特定のモジュールの下流のモジュールによりどのフィールドが必要とされるかを指定する設定された出力データフォーマットを特定して、保存し、その特定のモジュールのための、その特定のモジュールにとってどのフィールドがアクセス可能かを指定する入力データフォーマットを特定して、保存することをさらに含み、実行することは、第一のパス中に、その特定のモジュールは、その特定のモジュールの上流のモジュールに対し、それ自体により、及びその特定のモジュールの下流の何れかのモジュールにより必要とされる１つ又は複数のフィールドを表すデータを含む１つ又は複数のメッセージをブロードキャストすることを含み、ブロードキャストを行う特定のモジュールはブロードキャストモジュールであり、ブロードキャストを受信する上流のモジュールは受信モジュールであり、第二のパス中に、受信モジュールはブロードキャストモジュールに対し、どの受信モジュールが必要なフィールドの値を提供できるかを指定する１つ又は複数のメッセージを送信し、第三のパス中に、ブロードキャストモジュールは、受信モジュールから受信したメッセージを分析し、応答として、ブロードキャストモジュールは受信モジュールに対し、どの受信モジュールがブロードキャストモジュールへのどのフィールドの送信を担当するかを指定する１つ又は複数のメッセージを返信する。
【００３７】
態様２２〜３２の何れか１つによる態様３３において、動作は、データストリームの中で、１つ又は複数のデータレコードを含む構造化データ項目を受信することと、１つ又は複数のデータレコードの少なくとも１つについて、コンピュータプログラムを実行して、１つ又は複数のデータレコードのうちの少なくとも１つを処理するステップと、１つ又は複数の第一のモジュールの少なくとも１つの保存された出力データフォーマットに基づき、１つ又は複数のレコードの少なくとも１つを１つ又は複数の第二のモジュールの１つにサブミットする前に、レコードの少なくとも１つから、少なくとも部分的に第一のモジュールの出力に基づいて、１つ又は複数の第二のモジュールの少なくとも１つへの入力として指定されない１つ又は複数のフィールドを除去することと、をさらに含む。
【００３８】
態様２２〜３３の何れか１つによる態様３４において、動作は、仕様書の中で、１つ又は複数の新規モジュールを定義することと、１つ又は複数の新規モジュールの少なくとも１つを、他の仕様書に含めるために利用できるエンティティを指定するグローバルパレットに保存することと、をさらに含む。
【００３９】
態様２２〜３４の何れか１つによる態様３５において、動作は、仕様書の中で、１つ又は複数の新規モジュールを定義することと、１つ又は複数の新規モジュールの少なくとも１つを、その仕様書に含めるためにのみ利用でき、他の仕様書には含められないエンティティを指定するローカルパレットに保存することと、をさらに含む。
【００４０】
態様２２〜３５の何れか１つによる態様３６において、動作は、仕様書の定義のために、グローバルパレットに含められた、定義済みモジュールにアクセスすることと、定義済みモジュールの１つ又は複数の属性を変更することと、変更された定義済みモジュールを、その仕様書に含めるためにのみ利用でき、他の仕様書には含められないエンティティを指定するローカルパレットに記憶すること、又は変更された定義済みモジュールをグローバルパレットに保存して、変更された定義済みモジュールが他の仕様書にとってもアクセス可能となるようにすることを含む動作を実行することと、をさらに含む。
【００４１】
態様２２〜３６の何れか１つによる態様３７において、動作は、仕様書の中で、１つ又は複数の新規第一のモジュールを定義することと、仕様書の中で、１つ又は複数の新規第二のモジュールを定義することと、１つ又は複数の新規第一のモジュールの少なくとも１つを、１つ又は複数の新規第二のモジュールの少なくとも１つのためのデータソースとなるように構成することと、をさらに含む。
【００４２】
態様２２〜３７の何れか１つによる態様３８において、モジュールは１つ又は複数の他のモジュールを含む。
【００４３】
態様２２〜３８の何れか１つによる態様３９において、動作は、選択されたモジュールをパラメータの値で構成することと、構成されたモジュールを、後で他のプログラムに含めるために記憶することと、をさらに含む。
【００４４】
態様２２〜３９の何れか１つによる態様４０において、動作は、１つ又は複数の第二のモジュールの１つのみが、第一のモジュールにとってアクセス可能な１つ又は複数のフィールドの特定の１つにアクセスすることを特定することと、１つ又は複数の第二のモジュールのその１つのみが、第一のモジュールとは異なる第三のモジュールからの１つ又は複数のフィールドの特定の１つにアクセスすることを特定することと、出力データフォーマットを、１つ又は複数の第二のモジュールのその１つのみによりアクセスされる１つ又は複数のフィールドの特定の１つのための１つ又は複数の値を出力しないように設定することと、をさらに含む。
【００４５】
態様２２〜４０の何れか１つによる態様４１において、構造化データ項目はデータレコードを含む。
【００４６】
一般的態様４２において、仕様書を、構造化データ項目の１つ又は複数のフィールドの１つ又は複数の値を処理するコンピュータプログラムに変換するための１つ又は複数の機械可読ハードウェア記憶装置において、１つ又は複数の機械可読ハードウェア記憶装置は、１つ又は複数の処理装置により実行可能であり、構造化データ項目の中の１つ又は複数のフィールドの１つ又は複数の値を処理するためにコンピュータプログラムにより実装されることになる複数のモジュールを指定する仕様書にアクセスすることと、仕様書を、複数のモジュールを実装する前記コンピュータプログラムに変換することであって、複数のモジュールの１つ又は複数の第一のモジュールの各々について、複数のモジュールの、各々が少なくとも部分的に第一のモジュールの出力に基づく入力を受け取る１つ又は複数の第二のモジュールを特定することと、第一のモジュールの出力データフォーマットを、第一のモジュールが、構造化データ項目の、各々が（ｉ）第一のモジュールにとってアクセス可能であり、（ｉｉ）少なくとも部分的に第一のモジュールの出力に基づいて１つ又は複数の第二のモジュールの少なくとも１つへの入力として指定される１つ又は複数のフィールドの１つ又は複数の値のみを出力するように設定することと、を含む、変換することと、永続的メモリに、コンピュータプログラムを保存することであって、保存されたコンピュータプログラムは、１つ又は複数の第一のモジュールの各々について設定された出力データフォーマットを指定する、保存することと、を含む動作を実行する命令を記憶する。
【００４７】
態様４２による態様４３において、コンピュータプログラムの１つ又は複数の部分の内容は、仕様書とは異なり、ユーザの入力を必要とせずに自動的に生成される。
【００４８】
態様４２〜４３の何れか１つによる態様４４において、コンピュータプログラムは永続的且つ編集可能である。
【００４９】
態様４２〜４４の何れか１つによる態様４５において、コンピュータプログラムはテータフローグラフであり、モジュールの各々は、データフローグラフのノードにより表されるデータフローグラフのコンポーネントであり、データフローグラフコンポーネントは、ノード間のリンクにより表されるデータフローにより結合される。
【００５０】
態様４２〜４５の何れか１つによる態様４６において、動作は、データ記憶システムの中で、仕様書の一部を表すデータをデータフローグラフコンポーネントにマッピングするデータ構造にアクセスすることと、データ構造の中で、仕様書の特定の部分を表すデータの項目を特定することと、データ構造の中で、どのデータフローグラフコンポーネントが仕様書のその特定の部分にマッピングされるかを特定することと、特定されたデータフローグラフコンポーネントを、仕様書により指定される動作の実行順序にしたがってデータフローグラフに追加することと、をさらに含む。
【００５１】
態様４２〜４６の何れか１つによる態様４７において、動作は、データフローグラフコンポーネント間の依存性を特定することと、少なくとも部分的にこれらの特定された依存性に基づいて、データフローグラフコンポーネントの出力データフォーマットを指定することと、をさらに含む。
【００５２】
態様４２〜４７の何れか１つによる態様４８において、動作は、特定の第一のモジュールについて、１つ又は複数の第二のモジュールのうちの１つのみが特定の第一のモジュールにとってアクセス可能な１つ又は複数のフィールドの特定の１つにアクセスすることを特定することと、１つ又は複数の第二のモジュールのその１つのみが、複数のモジュールの、特定の第一のモジュール及び１つ又は複数の第二のモジュールの各々とは異なる第三のモジュールからの１つ又は複数のフィールドの特定の１つにアクセスすることを特定することと、出力データフォーマットを、１つ又は複数の第二のモジュールのその１つのみによりアクセスされる１つ又は複数のフィールドの特定の１つのための１つ又は複数の値を出力しないように設定することと、をさらに含む。
【００５３】
態様４２〜４８の何れか１つによる態様４９において、動作は、ユーザインタフェースの表示のためにデータを提供することと、ユーザインタフェースを介して、複数のモジュールの中からの、コンピュータプログラムに含めるための１つ又は複数のモジュールの選択を表すデータを受信することと、ユーザインタフェースを介して、選択された各モジュールについて、その選択された１つ又は複数のモジュールによって実装される動作のパラメータの値を受信することと、をさらに含む。
【００５４】
態様４２〜４９の何れか１つによる態様５０において、動作は、ユーザインタフェースを介して受信した値が、動作に関連付けられる所定の基準に適合するか否かを特定することと、受信した値が所定の基準に適合するか否かを示す通知をユーザインタフェースを介して出力することと、をさらに含み、受信した値が所定の基準に適合しないと特定された場合、通知は受信した値を所定の基準に適合するためにどのように変更しなければならないかの案内情報を含む。
【００５５】
態様４２〜５０の何れか１つによる態様５１において、動作は、選択されたモジュールをパラメータの値で構成することと、その後、他のコンピュータプログラムに含められ、それによって実装される構成済みモジュールを記憶することと、をさらに含む。
【００５６】
態様４２〜５１の何れか１つによる態様５２において、動作は、コンピュータプログラムを実行する前に、複数のモジュールの各特定のモジュールについて、第一、第二、及び第三のパスを実行して、その特定のモジュールのための、その特定のモジュールの下流のモジュールによりどのフィールドが必要とされるかを指定する設定された出力データフォーマットを特定して、保存し、その特定のモジュールのための、その特定のモジュールにとってどのフィールドがアクセス可能かを指定する入力データフォーマットを特定して、保存することをさらに含み、実行することは、第一のパス中に、その特定のモジュールは、その特定のモジュールの上流のモジュールに対し、それ自体により、及びその特定のモジュールの下流の何れかのモジュールにより必要とされる１つ又は複数のフィールドを表すデータを含む１つ又は複数のメッセージをブロードキャストすることを含み、ブロードキャストを行う特定のモジュールはブロードキャストモジュールであり、ブロードキャストを受信する上流のモジュールは受信モジュールであり、第二のパス中に、受信モジュールはブロードキャストモジュールに対し、どの受信モジュールが必要なフィールドの値を提供できるかを指定する１つ又は複数のメッセージを送信し、第三のパス中に、ブロードキャストモジュールは、受信モジュールから受信したメッセージを分析し、応答として、ブロードキャストモジュールは受信モジュールに対し、どの受信モジュールがブロードキャストモジュールへのどのフィールドの送信を担当するかを指定する１つ又は複数のメッセージを返信する。
【００５７】
態様４２〜５２の何れか１つによる態様５３において、動作は、データストリームの中で、１つ又は複数のデータレコードを含む構造化データ項目を受信することと、１つ又は複数のデータレコードの少なくとも１つについて、コンピュータプログラムを実行して、１つ又は複数のデータレコードのうちの少なくとも１つを処理するステップと、１つ又は複数の第一のモジュールの少なくとも１つの保存された出力データフォーマットに基づき、１つ又は複数のレコードの少なくとも１つを１つ又は複数の第二のモジュールの１つにサブミットする前に、レコードの少なくとも１つから、少なくとも部分的に第一のモジュールの出力に基づいて、１つ又は複数の第二のモジュールの少なくとも１つへの入力として指定されない１つ又は複数のフィールドを除去することと、をさらに含む。
【００５８】
態様４２〜５３の何れか１つによる態様５４において、動作は、仕様書の中で、１つ又は複数の新規モジュールを定義することと、１つ又は複数の新規モジュールの少なくとも１つを、他の仕様書に含めるために利用できるエンティティを指定するグローバルパレットに保存することと、をさらに含む。
【００５９】
態様４２〜５４の何れか１つによる態様５５において、動作は、仕様書の中で、１つ又は複数の新規モジュールを定義することと、１つ又は複数の新規モジュールの少なくとも１つを、その仕様書に含めるためにのみ利用でき、他の仕様書には含められないエンティティを指定するローカルパレットに保存することと、をさらに含む。
【００６０】
態様４２〜５５の何れか１つによる態様５６において、動作は、仕様書の定義のために、グローバルパレットに含められた、定義済みモジュールにアクセスすることと、定義済みモジュールの１つ又は複数の属性を変更することと、変更された定義済みモジュールを、その仕様書に含めるためにのみ利用でき、他の仕様書には含められないエンティティを指定するローカルパレットに記憶すること、又は変更された定義済みモジュールをグローバルパレットに保存して、変更された定義済みモジュールが他の仕様書にとってもアクセス可能となるようにすることを含む動作を実行することと、をさらに含む。
【００６１】
態様４２〜５６の何れか１つによる態様５７において、動作は、仕様書の中で、１つ又は複数の新規第一のモジュールを定義することと、仕様書の中で、１つ又は複数の新規第二のモジュールを定義することと、１つ又は複数の新規第一のモジュールの少なくとも１つを、１つ又は複数の新規第二のモジュールの少なくとも１つのためのデータソースとなるように構成することと、をさらに含む。
【００６２】
態様４２〜５７の何れか１つによる態様５８において、モジュールは１つ又は複数の他のモジュールを含む。
【００６３】
態様４２〜５８の何れか１つによる態様５９において、動作は、選択されたモジュールをパラメータの値で構成することと、構成されたモジュールを、後で他のプログラムに含めるために記憶することと、をさらに含む。
【００６４】
態様４２〜５９の何れか１つによる態様６０において、動作は、１つ又は複数の第二のモジュールの１つのみが、第一のモジュールにとってアクセス可能な１つ又は複数のフィールドの特定の１つにアクセスすることを特定することと、１つ又は複数の第二のモジュールのその１つのみが、第一のモジュールとは異なる第三のモジュールからの１つ又は複数のフィールドの特定の１つにアクセスすることを特定することと、出力データフォーマットを、１つ又は複数の第二のモジュールのその１つのみによりアクセスされる１つ又は複数のフィールドの特定の１つのための１つ又は複数の値を出力しないように設定することと、をさらに含む。
【００６５】
態様４２〜６０の何れか１つによる態様６１において、構造化データ項目はデータレコードを含む。
【００６６】
第一のモジュールの出力データフォーマットを、第一のモジュールが、各々が（ｉ）第一のモジュールにとってアクセス可能であり、（ｉｉ）少なくとも部分的に第一のモジュールの出力に基づく、１つ又は複数の第二のモジュールの少なくとも１つの入力として指定される、構造化データ項目の１つ又は複数のフィールドの１つ又は複数の値のみを出力するように設定することには数多くの利点がある。これらの利点には、計算リソース（メモリやＣＰＵ等）の消費が減ることが含まれ、それは、コンピュータプログラム内の下流のデータ処理のデータ処理要求事項を満たすために必要なデータフィールドだけがコンピュータプログラムに送信され、より深く処理されるからである。さらに、データレコード処理のレイテンシの短縮も実現され、それは、データ処理システムがより小さいレコード（例えば、フィールドのドロッピングによる）を、データ処理システムがデータフローグラフを通じたデータレコードの全体を処理しなければならない場合のデータ処理速度に関して、より迅速に処理できるからである。他の利点には、メモリ及びリソース消費の減少が含まれ、これは、レコードがより小さいことにより（例えば、フィールドのドロップによる）、レコードの処理中に消費されるメモリ空間がより小さいからである。
【００６７】
その他の特徴と利点は、以下の説明及び特許請求の範囲から明らかとなるであろう。
【図面の簡単な説明】
【００６８】
【図１Ａ】データベース管理システムの略図である。
【図１Ｂ】データ処理システムの略図である。
【図２Ａ１】モジュールを定義するための例示的なグラフィカルユーザインタフェースである。
【図２Ａ２】モジュールを定義するための例示的なグラフィカルユーザインタフェースである。
【図２Ｂ】永続的コンピュータプログラムへの仕様書の変換の例である。
【図２Ｃ】永続的コンピュータプログラムへの仕様書の変換の例である。
【図２Ｄ】永続的コンピュータプログラムへの仕様書の変換の例である。
【図２Ｅ】仕様書のためのユーザ入力を受け取り、仕様書からエンティティを生成することを示す図である。
【図３Ａ】エンティティを含むデータフローグラフの図である。
【図３Ｂ】仕様書のためのユーザ入力の受け取りと、仕様書からのコンピュータプログラムの生成を示す図である。
【図４】データフローグラフを通じたデータレコードの処理の図である。
【図５】フィールド特定のためのプロセスフローの図である。
【図６】仕様書のためのパラメータ値を指定するためのユーザインタフェースの例である。
【図７】仕様書のためのパラメータ値を指定するためのユーザインタフェースの例である。
【図８】仕様書のためのパラメータ値を指定するためのユーザインタフェースの例である。
【図９】エンティティを含むデータフローグラフの図である。
【図１０】データフローグラフを生成するためのエンティティへと仕様書を変換するプロセスの図である。
【図１１】コンピュータプログラムへと仕様書を変換するプロセスの図である。
【発明を実施するための形態】
【００６９】
以下に説明する例及び任意選択的特徴の各々は、付属の特許請求の範囲の何れと組み合わせてもよい。また、以下に説明する例及び任意選択による特徴の各々は、以下に説明する他の例及び任意選択による特徴の何れと組み合わせてもよく、この組合せを付属の特許請求の範囲の何れと組み合わせてもよい。
【００７０】
図１Ａを参照すると、仕様書をデータフローグラフ等のコンピュータプログラムに変換するシステム１は、仕様書構成モジュール７と任意選択によるエンティティ生成モジュール６及びユーザインタフェースモジュール８を含む変換環境５のほか、データ記憶システム３と、データ処理システム４と、を含む。一般に、「エンティティ」には、コンピュータプログラムの一部（例えば、あるコンピュータプログラムのうち、他のコンピュータプログラムに含めるための事前に規定された部分）又は、１つ若しくは複数のデータフローグラフコンポーネント（例えば、事前に規定されたモジュールにカプセル化されるもの）が含まれる。この文書全体を通じて、「エンティティ」を、非限定的に、便宜上、「モジュール」と呼ぶ場合がある。データフローグラフコンポーネントには、データ処理コンポーネント及び／又はデータセット、例えばデータシンク及び／又はデータソースが含まれ得る。データフローグラフは有向グラフによって表すことができ、これは、データフローグラフコンポーネントを表すノード又は頂点を含み、それが、データフローグラフコンポーネント間の作業要素（すなわち、データ）の流れを表す有向リンク又はデータフロー接続により結ばれる。データ処理コンポーネントには、少なくとも１つのデータ入力からのデータを処理し、データをデータ処理コンポーネントの少なくとも１つのデータ出力に提供するコードが含まれていてよい。データフローグラフはそれゆえ、１つ又は複数の入力データセットからグラフコンポーネントを通じて１つ又は複数の出力データセットへと流れるデータに対して行われるグラフベースの計算を実装できる。
【００７１】
一般に、仕様書構成モジュール７は仕様書を構成するためのモジュールを含む。様々な種類の仕様書があり、これには例えば、エンティティのための仕様書、データフローグラフのための仕様書等が含まれる。一般に、エンティティのための仕様書は、データフローグラフコンポーネントを特定してよく、サンプルデータの閲覧等、ユーザがグラフを構成している間に、そのために特定の機能を実行できる特定のコンポーネントを特定してよい。データフローグラフのための仕様書は、どのエンティティをデータフローグラフの中に含めるか（すなわち、データフローグラフコンポーネント）、含められたこのようなエンティティのためのパラメータの値、及び含められたエンティティ間のデータフローを定義してよい。
【００７２】
システム１はまた、１つ又は複数のコンピュータプログラム（データフローグラフ等）を実行するためのデータ処理システム４を含み、これらは変換環境５を使って、及び本明細書に記載の技術を使って、仕様書をコンピュータプログラムに変換することにより生成された。データ処理システム４は、適当なオペレーティングシステム、例えばＵＮＩＸオペレーティングシステムの制御下で、１つ又は複数の汎用コンピュータ上でホストされてよい。例えば、データ処理システム４は、複数ノード並列計算環境を含むことができ、これはローカル（例えば、ＳＭＰコンピュータ等のマルチプロセッサシステム）か、ローカルに分散された（例えば、クラスタ又はＭＰＰとして接続された複数のプロセッサ）、又はリモートに分散された（例えば、ＬＡＮ又はＷＡＮネットワークを介して接続された複数のプロセッサ）、又はその組合せの何れでもよい、複数の中央処理ユニット（ＣＰＵ）を使用するコンピュータシステムの構成を含む。
【００７３】
エンティティ生成モジュール６（例えば、これは幾つかの例では任意選択的であってよい）はエンティティを生成するが、これを以下により詳しく説明する。ユーザインタフェースモジュール８（例えば、これは幾つかの例では任意選択的であってよい）は、構成情報をユーザに対して表示し、構成アクションを表すデータをユーザから受け取る。特に、ユーザインタフェースモジュール８は、ユーザがどのエンティティをコンピュータプログラム又はデータフローグラフに含めるかを選択し、これらのエンティティのためのパラメータの値を入力できるようにする視覚表現を表示する。本明細書で使用される「パラメータ」という用語は、エンティティにより実行又は実装される動作の結果に影響を与える場合があり、それゆえ、「動作パラメータ」とも呼ばれてよい。ユーザインタフェースモジュール８により、ユーザは、例えばどのコンポーネントをエンティティに含めるかを指定するパラメータ値及び相互に関するコンポーネントの構成を入力することによって、エンティティを生成することもできる。ユーザインタフェースモジュール８はまた、仕様書構成モジュール７とも通信し、これはユーザインタフェースにおけるユーザのアクション（例えば、上記のユーザ自身による選択又は入力）に基づいて仕様書を構成する。この例では、仕様書構成モジュール７は、選択されたエンティティ（若しくは、ユーザが新規エンティティを定義する場合はエンティティ定義）又はユーザインタフェース内でそれ以外に指定されたエンティティに基づいて仕様書を構成する。仕様書の内容に基づいて、エンティティ生成モジュール６は、データフローグラフの中に含められ、又はそれにより実装されるための、及び実行のためのエンティティを生成する。一般に、エンティティ、データフローグラフ、及び／又は仕様書は、データ記憶システム３の中に保存でき、これは変換環境５にとってアクセス可能である。
【００７４】
変換環境５は、データ記憶システム３と通信し、これはユーザインタフェースモジュール８によりユーザインタフェースを表示するために使用されるデータを含む。データ記憶システム３はまた、任意選択による開発環境２にとってもアクセス可能であり、その中ではディベロッパ９がユーザインタフェースを開発でき、これがデータ記憶システム３に記憶され、それはユーザインタフェースモジュール８により、後述のユーザインタフェース１０、１１、１５、又は３８等のユーザインタフェースを表示するために使用可能である。変換環境５は、幾つかの実装において、エンティティを含むデータフローグラフとしてアプリケーションを開発するためのシステムである。
【００７５】
図１Ｂに示されるように、データ処理システム４は１つ又は複数のデータソース９ａを含んでいてもよく、これは、１つ又は複数のデータソースのほか、データ記憶システム３（図１Ａ）に接続され、１つ又は複数のコンピュータ上でホストされる実行環境９を含み、実行環境９は、コンピュータプログラムの計算（データ処理動作等）、例えばデータフローグラフコンポーネントにより実行されるデータ処理動作を実行するための計算リソース（例えば、ＣＰＵ及び／又は一次メモリ）を割り当て、構成するように構成される事前実行モジュール９ｂを含んでいてよい。実行環境９はまた、コンピュータプログラムのコンポーネントの実行のスケジュールを立て、その実行を制御するための実行モジュール９ｃも含んでいてよい。コンピュータプログラムは、データ記憶システム３の中に記憶されたプログラミングコード及び／又はデータ構造により指定されてもよく、これらはコンピュータプログラムの実行中に事前実行モジュール９ｂ又は実行モジュール９ｃにより読み出されてよい。
【００７６】
エンティティは、実行環境内で実行されるコンピュータプログラムの一部であり、１つ又は複数のデータソース９ａからのデータを処理する。データソースからのデータは、コンピュータプログラム又はデータフローグラフの中に含められるエンティティにしたがって操作され、処理されて、１つ又は複数のデータシンク９ｄにエクスポートされる。換言すれば、実行モジュール９ｃは、データソース９ａからのデータをコンピュータプログラム、例えばデータフローグラフにしたがって、事前実行モジュール９ｂによりコンピュータプログラムに割り当てられた実行環境９の計算リソースを使って処理するように構成され、それによって出力データが生成され、これが１つ又は複数のデータシンク９ｄにエクスポートされてよい。データソース及びシンク、それぞれ９ａ、９ｄは、例えばファイル、データベース、データストリーム、又はキューを含むことができる。
【００７７】
前述のように、データ処理コンポーネントは各々、少なくとも１つのデータ入力からのデータを処理し、データを少なくとも１つのデータ出力に提供するためのコードを含んでいてよい。エンティティはデータフローグラフに含められ、これはまた、データソース及び／又はシンクにアクセスするためのデータセットオブジェクトを表すノードも含む。ノードは、データソースから始まり、データシンクで終わるコンポーネント間のデータフローを表す有向リンクにより接続される。上流のデータフローグラフコンポーネントのデータ出力ポートは、下流のデータフローグラフコンポーネントのデータ入力ポートに接続される。データフローグラフ及び／又はエンティティは、データセットオブジェクトにより表される異なるデータソース及び異なるデータシンクのために再使用されてよい。データフローグラフ及び／又はエンティティを実装するために使用されるデータ構造とコンピュータプログラムコードは、例えば異なるソース及びシンクを容易に置換できるようにするために、パラメータを介してパラメータ化することにより、複数の異なる構成に対応できる。さらに、幾つかの配置では、エンティティの流れはパラメータの使用によって変更されてよく、それによってあるコンポーネント又は一連のコンポーネントが迂回されてもよい。一般に、パラメータはエンティティの特性を表し、これは構成又は変更可能で、そのエンティティにより実行される動作に影響を与える。一般に、エンティティのパラメータ又は特性は、そのエンティティの使用ごとに変更でき、エンティティによる動作（例えば、例えば、データの処理）は、変更された特性又はパラメータの結果として、異なっていてもよい。
【００７８】
構築エンティティは、幾つかのケースでは、技術的専門性の高い性質である可能性がある。エンティティの基本的構造と構築は、技術的検討に基づいて特定される。例えば、グラフコンポーネントは再使用可能性を最大限にするため、又は並列処理をサポートするために選択されてよい。エンティティに関連付けられるパラメータの幾つかは、コンピューティングに詳しくないユーザがエンティティをカスタマイズできるようにするために使用でき、ユーザがその実装の背景にある技術的な複雑さを理解する必要はない。パラメータ化されたエンティティにより、カスタマイゼーションが簡単となり、より多様なアプリケーション、状況、及びユーザのバックグラウンドへと容易に再使用できるようになる。
【００７９】
データフローグラフ及び／又はエンティティを構築するためのエンティティ及び関連パラメータ値の特定のためのユーザインタフェースは、クライアントマシン又はユーザデバイス上で提示できる。幾つかの実施例において、クライアントは、パラメータインタフェースを提供するクライアントでウェブブラウザを使ってサーバ上で実行される開発環境２（図１Ａ）にアクセスし、クライアント側の処理のための幾つかの能力を提供するスクリプト言語を使用していてよい。スクリプト言語は、サーバと通信して、パラメータを更新し、その他の必要な動作を実行してよい。この通信はブリッジマシンを介して行われてよく、これはクライアントと、構築中のグラフ及びエンティティのためのオブジェクト及び関連パラメータ値を記憶する開発環境を実行するサーバとの間の通信を翻訳する。
【００８０】
ユーザインタフェースにより、ユーザは、たとえデータフローグラフ及びデータフローグラフの構成に関する技術的知識がなくても、データフローグラフに含めるエンティティを選択し、エンティティのパラメータを構成できる。特に、データフローグラフは、データレコードの処理のための実行可能ロジックに変換される。すなわち、実行可能ロジックの実行により、レコードの処理のためのコード（例えば、コンパイル済みコード）が生成される。
【００８１】
変形型において、システム１はデータソースも含み、これは記憶装置又はオンラインデータストリームへの接続等の１つ又は複数のデータソースを含んでいてよく、その各々は各種の記憶フォーマット（例えば、データベーステーブル、スプレッドシートファイル、フラットテキストファイル、又はメインフレームにより使用されるネイティブフォーマット）の何れかのデータを記憶してもよい。このデータソースは、１つ又は複数のデータソース９ａと同じであっても、又は、追加のデータソースであってもよい。何れの場合も、データソースを提供する記憶装置はデータ処理システム４にローカルで、例えば、データ処理システム４を実行するコンピュータに接続された記憶媒体上に記憶されてもよく（例えば、ハードドライブ）、又はデータ処理システム４にリモートで、例えばローカル若しくはワイドエリアネットワーク上でデータ処理システム４を実行するコンピュータと通信するリモートシステム上でホストされてもよい（例えば、メインフレーム）。
【００８２】
図２Ａを参照すると、略図１０は、１つ又は複数のモジュール又はエンティティを構成するためのグラフィカルユーザインタフェース（以下、「グラフィカルユーザインタフェース１０」という）を示す。この例では、グラフィカルユーザインタフェース１０は１つ又は複数の事前構成されたモジュール（すなわち、モジュールの視覚表現１０ｃ〜１０ｆ）を選択するためのパレット部分１０ａを含む。一般に、パレット部分１０ａは、コンピュータプログラム又はデータフローグラフに含めるために利用できる複数のモジュールを表す（例えば、モジュールパレットとも呼ばれる）。パレット部分１０ａはまた、複数のモジュールに追加されることになる新規モジュールを作成するための追加コントロール１０ｉも含んでいてよい。グラフィカルユーザインタフェース１０はまた、新規モジュールの構成のための構成部分１０ｂも含んでいてよい。
【００８３】
この例では、複数のモジュールに追加されることになる新規モジュールを作成するための追加コントロール１０ｉを選択すると、構成部分１０ｂがユーザに対し、例えばモジュール名を指定する情報等、モジュールを指定する情報を入力するための入力部分１０ｇを提示することによって、新規モジュールを構成するように促す。構成部分１０ｂはまた、入力部分１０ｇにより指定されるモジュールのためのデータソースを指定するためのデータソース入力ボックス１０ｈも含んでいてよい。この例では、ユーザは、データソース入力ボックス１０ｈにデータファイルの名前を入力しても、又はデータソースモジュール（例えば、視覚表現１０ｄ、１０ｅの１つにより表される）をデータソース入力ボックス１０ｈにドラッグ・アンド・ドロップしてもよい。この例では、ユーザは視覚表現１０ｄをデータソース入力ボックス１０ｈにドラッグ・アンド・ドロップし、“Ａ＿ｃｕｓｔｏｍｅｒｓ”が“フィルタ処理済み顧客取引”モジュールのためのデータソースであることを指定している。構成部分１０ｂはまた、構成部分１０ｂの中で作成され、又は定義されるモジュールに関する１つ又は複数のパラメータ、変換、又は動作を追加し、構成するためのコントロール１０ｊ〜１０ｐも含んでいてよい。この例において、コントロール１０ｊ〜１０ｐの各々により、ユーザはパラメータ、動作、又は変換のための値を選択し、それによってそのパラメータ、動作、又は変換を構成することができる。例えば、コントロール１０ｊは、作成中のモジュールがフィルタ処理動作を含むことを指定し、例えば、本明細書に記載されているように、フィルタ処理動作はモジュールの出力データフォーマットを指定してよい。この例では、ユーザはコントロール１０ｊに含まれるドロップダウンボックスからフィルタオプションを選択する。コントロール１０ｏは、コントロール１０ｊと並置される。コントロール１０ｏの選択により、ユーザはコントロール１０ｊにより指定されたフィルタ処理動作を構成できる。この例では、コントロール１０ｏを選択するとオーバレイ１０ｑが表示される。オーバレイ１０ｑには、コントロール１０ｒ、１０ｓ及び、フィルタ処理動作により実行される（例えば、評価される）ことになる条件又は表現を指定するための入力部分１０ｔを含む。
【００８４】
コントロール１０ｋは、作成中のモジュールが結合動作を含むことを指定する。この例では、ユーザは、コントロール１０ｋに含まれるドロップダウンボックスから結合オプションを選択する。コントロール１０ｐは、コントロール１０ｋに並置される。コントロール１０ｐを選択することにより、ユーザは、コントロール１０ｋにより指定された結合動作を構成することができる。この例では、コントロール１０ｐを選択すると、オーバレイ１０ｕが表示される。オーバレイ１０ｕは、結合動作の一部として実装されるアクション又は動作を指定するコントロール１０ｖ〜１０ｚを含む。この例では、Ａ＿ｃｕｓｔｏｍｅｒモジュールから出力されたレコード（例えば、顧客取引を示すフォーマット済みレコード）はＢ＿ｎａｍｅ＿ａｄｄｒｅｓｓモジューから出力されたレコード（例えば、顧客の名前と住所を指定するフォーマット済みレコード）と結合されて、各種の取引のための顧客の名前と住所を含むデータセットが作られる。コントロール１０ｖにより、ユーザは、データソース入力ボックス１０ｈにおいて指定されたデータソースのためのキー名がコントロール１０ｗにおいて指定されたデータソースにより指定されたキー名と異なるか否かを指定することができる。例えば、ユーザは特定のデータフィールド又はキー、例えば顧客識別子キーのための異なるフォーマットを有する２つのデータソースを結合していてもよい。この例では、コントロール１０ｗにおいて指定されるデータソースは、視覚表現１０ｅにより指定されるＢ＿ｎａｍｅ＿ａｄｄｒｅｓｓモジュールである。この例では、ユーザがコントロール１０ｖを介して、キー名が違うことを指定すると、オーバレイ１０ａｅが表示される。この例では、オーバレイ１０ａｅにより、ユーザは各種のデータソースのための各種のキー名を指定することができる。この例では、コントロール１０ａｇにより、ユーザはコントロール１０ａｆにおいて指定されたデータソースのためのキー名を指定することができる。それに加えて、コントロール１０ａｉにより、ユーザはコントロール１０ａｈにより指定されたデータソースのためのキー名を指定することができる。構成部分１０ｂは、追加コントロール１０ｎを含み、その選択により、ユーザは追加の変換を追加することができる。この例では、顧客取引モジュール（視覚表現１０ｃにより表される）は、フィルタ処理動作が除かれていること以外、フィルタ処理済み顧客取引モジュールと同じである。
【００８５】
図２Ｂを参照すると、略図１１は、この場合はデータフローグラフであるプログラム（例えば、コンピュータプログラム）への仕様書の変換の「実世界での」例を示す。この例では、略図１１は、グラフィカルユーザインタフェース１２を示し、これは図２Ａ、２Ｂに関して上述したグラフィカルユーザインタフェース１０とは分離され、又は異なっていてよく、パレット部分１２ａ及び構成部分１２ｅを含む。パレット部分１２ａは、コンピュータプログラムを定義するのに利用できる複数のモジュールを表示する。この例では、パレット部分１２ａは視覚表現１２ｂ、１２ｃ、１２ｄ、１２ｄａ、１２ｄｂ、１２ｄｃ、１２ｄｄを表示する。この例では、視覚表現１２ｂは、図２Ａで定義されたフィルタ処理済み顧客取引モジュールを表す。視覚表現１２ｃは、以前に定義された顧客取引モジュール、例えば図２Ａにおいて視覚表現１０ｃにより表された同じ顧客取引モジュールを表す。視覚表現１２ｄはオファ送信モジュールを表し、これについては後述する。視覚表現１２ｄａ、１２ｄｂは、Ａ＿ｃｕｓｔｏｍｅｒｓモジュール（例えば、特定のデータソース及び、そのデータソースらのデータレコードのフォーマット方法を指定する）とＢ＿ｎａｍｅ＿ａｄｄｒｅｓｓモジュール（例えば、他の特定のデータソース及び適当なリフォーマットを指定する）を表す。この例では、視覚表現１２ｄａ、１２ｄｂは、視覚表現１０ｄ、１０ｅにより表されるものと同じデータソースを表す。視覚表現１２ｄｃは、データの記憶先となる出力ファイルを指定する出力モジュールを表す。この例では、視覚表現１２ｄｃは、図２Ａにおいて視覚表現１０ｆにより表される同じ出力モジュールを表す。視覚表現１２ｂ、１２ｃ、１２ｄ、１２ｄａ、１２ｄｂ、１２ｄｃ、１２ｄｄの各々は選択可能であり、例えばモジュールをコンピュータプログラムに追加するために構成部分１２ｅに「ドラッグ・アンド・ドロップ」することができる。構成部分１２ｅは、コンピュータプログラム又はデータフローグラフに含めるべきモジュールを表す、パレット部分１２ａ内に表示されるパレット（例えば、視覚表現１２ｂ、１２ｃ、１２ｄ、１２ｄａ、１２ｄｂ、１２ｄｃ、１２ｄｄ）から選択されるモジュールに関するパラメータを指定するためのユーザインタフェースを提供する。構成部分１２ｅは、部分１２ａｃ（視覚表現１２ｂにより表される、以前に定義されたフィルタ処理済み顧客取引モジュールを変更するため）及び新規モジュール、すなわちオファ送信モジュール（視覚表現１２ｄにより表される）と出力ファイルモジュール（視覚表現１２ｄｄにより表される）を定義するための部分１２ａａ、１２ａｂを含む。
【００８６】
部分１２ａｃは、視覚表現１２ｂにより表されるフィルタ処理済み顧客取引モジュールの１つ又は複数のパラメータ又は属性を変更するためのコントロール１２ｆ、１２ｉ、１２ｊ、１２ｋ、１２ｍ、１２ｎを表示する。特に、１２ｆ、１２ｉ、１２ｊ、１２ｋ、１２ｍ、１２ｎの各々は、データソース入力ボックス１０ｈ（図２Ａ）において指定されたデータと、それぞれコントロール１０ｒ、１０ｓ、入力部分１０ｔ、及びコントロール１０ｖ、１０ｗ、１０ｙ（図２Ａ）に入力される選択又はデータに基づいて事前入力される。コントロール１２ｆ、１２ｉ、１２ｊ、１２ｋ、１２ｍ、１２ｎの各々のデータは、ユーザによるモジュールのカスタマイゼーションを可能にするために変更可能である。
【００８７】
この例では、１つ又は複数のコントロール１２ｆ、１２ｉ、１２ｊ、１２ｋ、１２ｍ、１２ｎにより調節可能なパラメータ又は属性の１つ又は複数の値を変更した後、変更はグローバルセーブコントロール１２ｇを介したグローバルセーブとして、又はローカルセーブコントロール１２ｈを介してローカルセーブとして保存できる。この例では、グローバルセーブにより、グローバルパレット内のすべてのパレット（グラフの定義に現在使用され、将来使用される−パレット１２ａだけではない）にわたり、並びにそのモジュールにアクセスするグラフ及びコンピュータプログラムにわたり、モジュールがアップデートされる。一般に、グローバルパレットは、グラフの定義にグローバルに利用できるモジュールの定義又はリストである。すなわち、グローバルパレット内のこれらのモジュールは、定義中の仕様書又はグラフのみに制約されない。ローカルセーブは、モジュールをローカルで、すなわち表示されている特定のパレットについてのみ、及び定義中の特定のグラフについてのみアップデートする。すなわち、ローカルセーブでは、モジュールの変更の範囲は、そのパレット及びグラフのみに限定される。この例では、ユーザはグローバルセーブコントロールを選択している（グローバルセーブコントロール１２ｇの周囲の点線で示される）。グローバルセーブコントロール１２ｇの選択に基づいて、フィルタ処理済み顧客取引モジュールに対する変更はグローバルに、すなわちすべてのパレットにわたり、並びにそのモジュールを含むすべてのグラフ及びコンピュータプログラムにわたり行われる。ユーザがその代わりにローカルセーブコントロール１２ｈを選択すれば、変更はパレット１２ａと、構成部分１２ｅにおいて定義中のグラフのみに適用されるであろう。
【００８８】
構成部分１２ｅはまた、新規モジュール−オファ送信モジュールの構成及び定義のためのコントロール１２ｏａ、１２ｏ〜１２ｕを有する部分１２ａａも含む。コントロール１２ｏａは、オファ送信モジュールのためのデータソースを指定する。この例では、オファ送信モジュールのためのデータソースはフィルタ処理済み顧客取引モジュールである。この例では、コントロール１２ｏ〜１２ｑは、発生させるべき、すなわち、ユーザに対し、無制限のテキストをアップデートしたいか否かを尋ねるＳＭＳメッセージを送信するべきトリガを指定する。この例では、コントロール１２ｒは、待機される特定のイベント（すなわち、その後のトリガにより指定されるアクションの実行の前に受信されることになる）を指定する。コントロール１２ｓ〜１２ｕは、実行されるべきアクション又はトリガを指定する（例えば、「＄１２．９９／月でテキスティングをアップグレード」と記したＳＭＳメッセージの送信）。この例では、オファ送信モジュールが部分１２ａａで新たに定義されているため、ローカルセーブ（これによれば、前に定義されたモジュールのバージョンがパレット１２ａについてローカルに保存されることになる）のオプションはない。この例では、部分１２ａａはグローバルセーブコントロール１２ｖを含み、それを選択すると、オファ送信モジュールがグローバルパレットに追加され、これはすべてのグラフの生成において使用されるパレットである。この例では、ユーザはグローバルセーブコントロール１２ｖを選択していない。そのため、オファ送信モジュールは、ローカルパレットであるパレット１２ａ上でのみ利用できる。この例では、オファ送信モジュールの構成自体により、視覚表現１２ｄがパレット１２ａに、ローカルで定義中であり、構成部分１２ｅを通じて定義中のグラフのためにローカルで利用できるモジュールとして含められる。
【００８９】
構成部分１２ｅはまた、出力ファイルモジュール（視覚表現１２ｄｄにより表される）を定義するための部分１２ａｂも含み、その中にオファの送信の結果が保存される。部分１２ａｂは、出力ファイルモジュールのためのデータソースを指定するためのコントロール１２ｗを含む。この例では、コントロール１２ｗは、データソースがオファ送信モジュールであることを指定する。ユーザはこれを、視覚表現１２ｄをコントロール１２ｗにドラッグ・アンド・ドロップすることにより指定してよい。部分１２ａｂはまた、データターゲットを指定するためのコントロール１２ｘも含む。この例では、ユーザは視覚表現１２ｄｄをコントロール１２ｘにドラッグ・アンド・ドロップして、出力モジュール（視覚表現１２ｄｃにより表される）が部分１２ａｂを通じて定義される出力ファイルモジュールのためのデータターゲットであることを指定する。
【００９０】
一般的に、それゆえすべての例と実施形態に当てはまることとして、構成部分１２ｅの内容（及び／又は構成部分１２ｅの内容から、又はそれに基づいて生成されるデータ）は、コンピュータプログラムにどのモジュールを含めるべきか、及びこれらのモジュールのためのパラメータの値を指定する仕様書を定義する。構成部分１２ｅはまた、サブミッションコントロール１２ｔも含んでいてよく、それを選択すると、コンピューティングシステム、例えば図１Ａに記載された変換環境５は、構成部分１２ｅの内容により指定される仕様書をコンピュータプログラムに変換し、それはこの例では、コンピュータプログラム１４（この例では、データフローグラフ）により描かれている。
【００９１】
この例では、コンピュータプログラム１４は、データソース１４ａ、１４ｂ、フィルタ処理済み顧客取引モジュール１４ｃ、オファ送信モジュール１４ｄ、及び出力ファイルソース１４ｅを含む。この例では、コンピュータ化システムがデータソース１４ａを構成して、データをそこから引き出す特定の外部モジュール（例えば、データウェアハウス）を指定する、“Ａ＿Ｃｕｓｔｏｍｅｒｓ”からのデータレコード及び／又はファイルにアクセスする。コンピュータ化システムは、データソース１４ｂをＢ＿ｎａｍｅ＿ａｄｄｒｅｓｓモジュールとなるように構成する。コンピュータ化システムは、フィルタ処理済み顧客取引モジュール１４ｃを、フィルタ処理済み顧客取引モジュール１４ｃのための部分１２ａｃに入力された情報にしたがって構成する。特に、フィルタ処理済み顧客取引モジュール１４ｃは、コンポーネント（例えば、データフローグラフコンポーネント）１４ｆ、１４ｈ〜１４ｌを有するデータフローグラフ１４ｙを含む。この例では、コンポーネント１４ｆはフィルタコンポーネントである（以下、フィルタコンポーネント１４ｆ）。コンポーネント１４ｈ、１４ｉはパーティションコンポーネントである（以下、パーティションコンポーネント１４ｈ、１４ｉ）。コンポーネント１４ｊ、１４ｋはソートコンポーネントである（以下、ソートコンポーネント１４ｊ、１４ｋ）。コンポーネント１４ｌは結合コンポーネントである（以下、結合コンポーネント１４ｌ）。
【００９２】
この例では、フィルタコンポーネント１４ｆは、コントロール１２ｉ〜１２ｋにおいて指定された入力にしたがって構成される。すなわち、フィルタコンポーネント１４ｆは、所定の条件を満たすレコード、例えば取引総額が＄２６０未満のデータレコードを除外するように構成される。この例では、結合コンポーネント１４ｌは、コントロール１２ｍ〜１２ｎにより指定される情報にしたがって、すなわち顧客ＩＤフィールドのためのマッチングする、又は同様の値を有するデータレコードを結合するように構成される。この例では、パーティションコンポーネント１４ｈ、１４ｉ及びソートコンポーネント１４ｊ、１４ｋは仕様書内で指定されず、すなわち構成部分１２ｅへの入力によって指定されない。しかしながら、コンピュータ化システムは、結合コンポーネントの前にパーティションコンポーネントがあり、その前にソートコンポーネントがあることを指定する（コンピュータ化システムにより）実行可能なロジックに基づいてパーティションコンポーネント１４ｈ、１４ｉ及びソートコンポーネント１４ｊ、１４ｋを含む。この例では、オファ送信モジュール１４ｄは、コントロール１２ｏａ、１２ｏ〜１２ｕに入力された情報にしたがって構成される。特に、オファ送信モジュール１４ｄは、応答が送信されたことを指定するデータレコード（例えば、イベント）を待機するように構成される。そのイベントが検出されると、オファ送信モジュール１４ｄは、「＄１２．９９／月で無制限のテキスティングにアップグレード」という内容のＳＭＳメッセージを送信するように構成される。出力ファイルソース１４ｅは、部分１２ａｂの内容にしたがって、コンピュータプログラム１４の実行の出力をデータレポジトリに保存するように構成される。
【００９３】
この例では、データソース１４ａ、１４ｂ、フィルタ処理済み顧客取引モジュール１４ｃ、及びオファ送信モジュール１４ｄの各々は、それぞれ出力ポート１４ｍ〜１４ｐを含み、これは、どのフィールド（例えば、データソース１４ａ、１４ｂから受け取ったデータレコード等の構造化データ項目から）がそのソース又はモジュールから出力されるかを指定する出力データフォーマットを指定する。換言すれば、各モジュール及びソースは、そのモジュール／ソースにとってアクセス可能であり、下流の１つ又は複数のモジュールによりアクセスされるフィールドの値のみを出力するように構成される。この例では、フィルタ処理済み顧客取引モジュール１４ｃは、入力ポート１４ｑ、１４ｒ（コントロール１２ｆ及び１２ｍにより指定されるデータソースのため）及び出力ポート１４ｏ（例えば、オファ送信者モジュール１４ｄに入力されるデータ及び／又はデータレコードを出力するため）を含み、オファ送信モジュール１４ｄは、入力ポート１４ｓ及び出力ポート１４ｐを含み、出力ファイルソース１４ｅは入力ポート１４ｔを含む。入力ポートは、他のモジュールから１つ又は複数の構造化データ項目を受け取るように構成される。入力ポートはまた、受け取った構造化データ項目に必要な１つ又は複数のデータフォーマットで構成されてもよい。
【００９４】
図２Ｃを参照すると、略図１５は図２Ｂの変形型を示しており、この場合、フィルタ処理済み顧客取引モジュール（例えば、図２Ａのグラフィカルユーザインタフェース１０を通じて生成されるフィルタ処理済み顧客取引モジュール）が、図２Ｂに示されるコンピュータプログラム１４とは異なるコンピュータプログラムの一部として使用される。
【００９５】
略図１５は、グラフィカルユーザインタフェース１６を示し、これはパレット部分１６ａと構成部分１６ｅを含む。パレット部分１６ａは、コンピュータプログラムの定義において利用できる複数のモジュールを表示する。この例において、パレット部分１６ａは視覚表現１６ｂ〜１６ｄ及び１６ｄａ〜１６ｄｄを表示する。視覚表現１６ｂ〜１６ｄ及び１６ｄａ〜１６ｄｄの各々は選択可能であり、構成部分１６ｅに「ドラッグ・アンド・ドロップ」することにより、例えばモジュールをコンピュータプログラムに、又は新規モジュールの定義において追加できる。この例では、視覚表現１６ｂは、図２Ａに示されるように、当初、グラフィカルユーザインタフェース１０への入力の仕様書を通じて作成され、その後、図２Ｂの部分１２ａｃにおいて（グローバルセーブを通じて）アップデートされたフィルタ処理済み顧客取引モジュールを表す。この例では、パレット部分１６ａは、図２Ｂに示されるオファ送信モジュールのための視覚表現を含まず、それは、オファ送信モジュールはローカルでのみ定義され、グローバルパレットには追加されなかったからである。構成部分１６ｅは、パレット部分１６ａにおいて表示されたパレットから、コンピュータプログラム又はデータフローグラフに含められるモジュールを表すデータ（例えば、視覚表現１６ｂ〜１６ｄ及び１６ｄａ〜１６ｄｄのうちの１つ）を選択するためのユーザインタフェースを提供する。この例では、構成部分１６ｅは部分１６ｈ、１６ａａ、１６ａｂを含む。
【００９６】
この例では、部分１６ｈは、当初、図２Ａにおいて定義され、図２Ｂにおいて変更されたフィルタ処理済み顧客取引モジュールの（コントロール１６ｆ、１６ｉ〜１６ｋ、及び１６ｍ〜１６ｎを介した）変更を提供する。この例では、ユーザは、フィルタ処理済み顧客取引モジュールへの変更を、ローカルセーブコントロール１６ｏの選択を介してローカルで保存する。この例では、部分１６ｈは、グローバルセーブコントロール１６ｐも含み、フィルタ処理済み顧客取引モジュールへの変更をグローバルで保存するオプションを提供する（すなわち、変更のための、ローカルスコープではなくグローバルスコープを定義する）。コントロール１６ｆ、１６ｉ〜１６ｋ、及び１６ｍ〜１６ｎの各々は、それぞれコントロール１０ｒ、１０ｓ、１０ｔ、１０ｖ、１０ｗ、１０ｙ（図２Ａ）の選択又はそれらに入力されるデータに基づいて事前入力され、その後、図２Ｂにおけるコントロール１２ｆ、１２ｉ〜１２ｋ、及び１２ｍ〜１２ｎを通じて変更される。コントロール１６ｆ、１６ｉ〜１６ｋ、及び１６ｍ〜１６ｎの各々のデータは、フィルタ処理済み顧客取引モジュールをユーザがカスタマイズできるように変更可能である。
【００９７】
構成部分１６ｅはまた、部分１６ａａも含み、これは部分１６ａａにおいて新規に定義されている、取引合算モジュールの構成のためのコントロール１６ｑ〜１６ｖを有する。この例では、コントロール１６ｑは取引合算モジュールのためのデータソースを指定する。この例では、データソースはフィルタ処理済み顧客取引モジュールである。フィルタ処理済み顧客取引モジュールを表す視覚表現１６ｂは、コントロール１６ｑにドラッグ・アンド・ドロップされる。コントロール１６ｒは、フィルタ処理済み顧客取引モジュールからの出力と合併（結合）すべきデータソースを指定するためのものである。コントロール１６ｓは、例えばＷａｒｅｈｏｕｓｅ＿Ａ．ｄａｔに含まれ、フィルタ処理済み顧客取引モジュールから出力されるレコードからのデータロールアップを実行するキーを指定するデータを受け取るためのものである。コントロール１６ｔは、コントロール１６ｕにより指定されたフィールド（ロールアップレコードに含まれる）及びコントロール１６ｖにより指定された他のフィールド（ロールアップレコードに含まれる）上で実行されるべき動作を指定する。この例では、部分１６ａａは、グローバルセーブコントロール１６ｗを含み、取引合算モジュールをグローバルパレットに追加して、例えばすべてのパレットにおいて全ユーザにとってアクセス可能となるようにする。取引合算モジュールは、部分１６ａａにおいて新規に定義されているため、例えばグローバルにアクセス可能なモジュールの変更バージョンをローカルで保存するために提供される、ローカルセーブコントロールはない。
【００９８】
構成部分１６ｅはまた、出力を保存するための出力ファイルモジュールを定義するための部分１６ａｂも含む。この例では、コントロール１６ｘは、出力ファイルモジュールのためのデータソースが取引合算モジュールであることを指定する。ユーザは、視覚表現１６ｄをコントロール１６ｘにドラッグ・アンド・ドロップすることによってこれを指定してよい。追加的に、コントロール１６ｙは、視覚表現１６ｄｃにより表される出力モジュールが部分１６ａｂで定義されるデータファイルモジュールのためのデータターゲットであることを指定する。この例では、ユーザがコントロール１６ｘ、１６ｙのための値を指定すると、パレット１６ａが、出力ファイルモジュールを表す視覚表現１６ｄｄを含むようにアップデートされる。
【００９９】
構成部分１６ｅはまた、サブミッションコントロール１６ａｃも含み、これを選択することにより、コンピューティングシステム、例えば図１Ａの変換環境５は、構成部分１６ｅの内容により指定された仕様書をコンピュータプログラムに変換し、これはこの例ではコンピュータプログラム１８（この例ではデータフローグラフである）により示されている。
【０１００】
この例では、コンピュータプログラム１８は、データソース１８ａ、１８ｂ、フィルタ処理済み顧客取引モジュール１８ｃ、取引合算モジュール１８ｄ、及び出力ファイルソース１８ｅを含む。この例では、コンピュータ化システムは、データソース１８ａを構成して、Ａ＿Ｃｕｓｔｏｍｅｒｓモジュールからのデータレコード及び／又はファイルにアクセスする。コンピュータ化システムは、データソース１８ｂをＢ＿ｎａｍｅ＿ａｄｄｒｅｓｓモジュールとなるように構成する。コンピュータ化システムは、フィルタ処理済み顧客取引モジュール１８ｃをフィルタ処理済み顧客取引モジュール１８ｃのために部分１６ｈに入力された情報にしたがって構成する。特に、フィルタ処理済み顧客取引モジュール１８ｃは、コンポーネント１８ｆ、１８ｈ〜１８ｌを有するデータフローグラフ１８ｙを含む。この例では、コンポーネント１８ｆはフィルタコンポーネントである（以下、フィルタコンポーネント１８ｆ）。コンポーネント１８ｈ、１８ｉはパーティションコンポーネントである（以下、パーティションコンポーネント１８ｈ、１８ｉ）。コンポーネント１８ｊ、１８ｋはソートコンポーネントである（以下、ソートコンポーネント１８ｊ、１８ｋ）。コンポーネント１８ｌは結合コンポーネントである（以下、結合コンポーネント１８ｌ）。
【０１０１】
この例では、フィルタコンポーネント１８ｆは、コントロール１６ｇ、１６ｉ〜１６ｋにおいて指定された入力にしたがって構成される。すなわち、フィルタコンポーネント１８ｆは、所定の条件を満たすデータレコード、例えば取引総額が＄２５０未満のレコードを除外するように構成される。この例では、結合コンポーネント１８ｌは、コントロール１６ｍ〜１６ｎにより指定される情報にしたがって、すなわち顧客ＩＤフィールドのためのマッチする、又は同様の値を持つデータレコードを結合するように構成される。この例では、パーティションコンポーネント１８ｈ、１８ｉ及びソートコンポーネント１８ｊ、１８ｋは仕様書において指定されず、すなわち、構成部分１６ｅへの入力により指定されない。しかしながら、コンピュータ化システムはパーティションコンポーネント１８ｈ、１８ｉとソートコンポーネント１８ｊ、１８ｋを含み、これは、結合コンポーネントの前にパーティションコンポーネントがあり、その前にソートコンポーネントがあると指定する実行可能ロジックの（コンピュータ化システムによる）実行に基づく。この例では、取引合算モジュール１８ｄは、部分１６ａａに入力された情報にしたがって構成される。特に、取引合算モジュール１８ｄは、「取引総額」のフィールドの中の値を「今日までの取引総額」のフィールドの中の値と合算するように構成される。出力ファイルソース１８ｅは、部分１６ａｂにおいて定義された出力ファイルモジュールにより指定されるように、コンピュータプログラム１８の実行の出力をデータレポジトリに保存するように構成される。この例では、データソース１８ａ、１８ｂ、顧客取引モジュール１８ｃ、及び取引合算モジュール１８ｄの各々は、それぞれ出力ポート１８ｍ〜１８ｐを含み、これは、（例えば、データソース１８ａ、１８ｂから受け取ったデータレコードから）どのフィールドがそのソース又はモジュールから出力されるかを指定する出力データフォーマットを指定する。前述及び後述のように、各モジュール及びソースは、そのモジュール／ソースにとってアクセス可能であり、下流の１つ又は複数のモジュールによりアクセスされるフィールドの値のみを出力するように構成される。この例では、顧客取引モジュール１８ｃは入力ポート１８ｑ、１８ｒを含み、取引合算モジュール１８ｄは入力ポート１８ｓを含み、出力ファイルソース１８ｅは入力ポート１８ｔを含む。入力ポートは、他のモジュールから１つ又は複数の構造化データ項目を受け取るように構成される。入力ポートはまた、受け取った構造化データ項目に必要な１つ又は複数のデータフォーマットで構成されてもよい。
【０１０２】
図２Ｄを参照すると、略図２０はグラフへの仕様書の変換を示している。この例では、グラフィカルユーザインタフェース１９が略図２０の中に示されている。この例では、グラフィカルユーザインタフェース１９は、仕様書を定義するためのパレット部分１９ａと仕様書部分１９ｂを含む。パレット部分は、各種のモジュールの視覚表現１９ｃ、１９ｄ、１９ｅ、１９ｆ、１９ｇ、１９ｈ、１９ｉ、１９ｊ、１９ｋ、１９ｌを描写し、これは、仕様書の定義に使用可能な、以前に定義されたもの（例えば、それぞれ視覚表現１９ｃ、１９ｄ、１９ｅ、１９ｆ、１９ｇ、１９ｈにより表されるフィルタ処理済み顧客取引モジュール、顧客取引モジュール、取引合算モジュール、Ａ＿ｃｕｓｔｏｍｅｒｓモジュール、Ｂ＿ｎａｍｅ＿ａｄｄｒｅｓｓモジュール、及び出力モジュール）又は、仕様書１９ｂにおいて新規に定義されてから初めてパレット１９ａに追加されたもの（例えば、それぞれ視覚表現１９ｉ、１９ｊ、１９ｋ、１９ｌにより表されるモジュール１、２、３、４）である。
【０１０３】
この例では、ユーザは、仕様書部分１９ｂのモジュール１エリア１９ｍで新規モジュール、すなわちモジュール１を定義する。モジュール１エリア１９ｍは、モジュール１のためのデータソースを定義するためのコントロール１９ｍａを含む。この例では、ユーザは視覚表現１９ｄをコントロール１９ｍａにドラッグ・アンド・ドロップして、顧客取引モジュールがモジュール１のためのデータソースであることを指定する。モジュール１エリア１９ｍはまた、顧客取引モジュールから出力されるデータレコードについて実行されるべきフィルタ処理動作を定義するためのコントロール１９ｍｂ、１９ｍｃ、１９ｍｄも含む。この例では、モジュール１エリア１９ｍはまた、この場合はフィルタ処理動作である、実行されるべき動作の種類を選択するためのコントロール（図示せず）も含む。モジュール１エリア１９ｍはまた、モジュール１をグローバルパレットに追加するためのグローバルセーブコントロール１９ｍｆも含む。モジュール１エリア１９ｍはローカルセーブコントロールを含まず、これは、モジュール１が新規に定義されたものであり、そのため、システムが以前に定義されたモジュールのローカルコピーを保存することができないからである。この例では、ユーザはグローバルセーブコントロール１９ｍｆを選択しない。その代わりに、モジュール１自体を定義するだけで、モジュール１は、視覚表現１９ｉをパレット部分１９ａに追加することにより、ローカルパレット（定義中のグラフのため）に追加される。
【０１０４】
この例では、仕様書部分１９ｂはまた、他の新規モジュール、すなわちモジュール２をモジュール２エリア１９ｏにおいて定義する。この例では、モジュール２エリア１９ｏは、モジュール２のためのデータソースを定義するためのコントロール１９ｏａを含む。この例では、視覚表現１９ｅはコントロール１９ｏａにドラッグ・アンド・ドロップされて、取引合算モジュール１９ｅがモジュール２のためのデータソースであることを指定する。モジュール２エリア１９ｏはまた、フィルタ処理動作の属性、例えばそれ自体が他のコントロール（図示せず）の選択を通じて指定されていたことを指定するためのコントロール１９ｏｂ〜１９ｏｄも含む。モジュール２エリア１９ｏは、グローバルセーブコントロール１９ｏｆを含み、それを選択すると、モジュール２がグローバルパレットに追加される。この例では、モジュール２エリア１９ｏにおけるモジュール２の定義の仕様書により、視覚表現１９ｊはパレット部分１９ａに追加される。
【０１０５】
仕様書部分１９ｂはまた、モジュール３エリア１９ｎ内で新規モジュール３を定義する。モジュール３エリア１９ｎは、モジュール３のためのデータソースを指定するためのコントロール１９ｎａを含む。この例では、モジュール１がモジュール３のためのデータソースであり、これは、視覚表現１９ｉをコントロール１９ｎａにドラッグ・アンド・ドロップすることによって指定される。モジュール３エリア１９ｎはまた、結合動作（それ自体は、動作の種類を選択するための他のコントロールの選択を通じて指定される）の属性を指定するためのコントロール１９ｎｂ、１９ｎｃ、１９ｎｄも含む。この例では、モジュール１の出力は、コントロール１９ｎｂにより指定されるように、モジュール２の出力と結合される。この例では、ユーザは、視覚表現１９ｊをコントロール１９ｎｂにドラッグ・アンド・ドロップし得る。追加的に、コントロール１９ｎｃ、１９ｎｄは、結合が行われるべき、それぞれモジュール１、２から出力されたレコードのキー（すなわち、フィールド）の名前を指定する。モジュール３エリア１９ｎはまた、グローバルセーブコントロール１９ｎｆも含み、それを選択すると、モジュール３がグローバルパレットに追加される。この例では、グローバルセーブコントロール１９ｎｆは選択されない。その代わりに、モジュール３を定義するだけで、視覚表現１９ｋがパレット部分１９ａに追加される。
【０１０６】
仕様書部分１９ｂはまた、モジュール４エリア１９ｐ内で新規モジュール４を定義し、それはモジュール４のためのデータソースを指定するためのコントロール１９ｐａとモジュール４のためのデータターゲットを指定するためのコントロール１９ｐｂを含む。この例では、モジュール３がモジュール４のためのデータソースであり、出力モジュール（視覚表現１９ｈにより表される）はデータターゲットである。この例では、モジュール４エリア１９ｐ内でモジュール４を定義すると、視覚表現１９ｌがパレット部分１９ａに追加される。
【０１０７】
仕様書部分１９ｂはまた、サブミッションコントロール１９ｓを含み、それを選択すると、システム、例えば図１Ａの変換環境５は、仕様書部分１９ｂで定義された仕様書をグラフ１９ｑに変換する。この例では、グラフ１９ｑは顧客取引データソース１９ｑａ、取引合算データソース１９ｑｂ、モジュール１  １９ｑｃ、モジュール２  １９ｑｄ、モジュール３  １９ｑｅ、及びモジュール４  １９ｑｆを含む。この例では、グラフ１９ｑに含まれるデータソースとモジュールの多くが、他のモジュール、データソース、及び／又はコンポーネントをカプセル化する。この例では、グラフ１９ｒはグラフ１９ｑの展開されたビューを示しており、その中に、カプセル化された各モジュール及び／又はデータソースの各々の内容が示されている。グラフ１９ｒは、コンポーネント（そのうちの幾つかはデータソース）１９ｒａ〜１９ｒｐを含む。この例では、コンポーネント１９ｒａ〜１９ｒｇは顧客取引モジュールに含まれ、これはモジュール１のためのデータソースとして定義される。この例では、コンポーネント１９ｒｉは、コントロール１９ｍｂ〜１９ｍｄにより定義されるフィルタ機能を表す。この例では、コンポーネント１９ｒｈ及び１９ｒｊはモジュール２を表す。コンポーネント１９ｒｋ〜１９ｒｏはモジュール３を表す。前述のように、システムは、パーティション及びソートコンポーネントを結合コンポーネントの前に挿入するように構成される。最後に、コンポーネント１９ｒｐはモジュール４を表す。図２Ｂ〜２Ｄに示されるように、異なるグラフの定義におけるモジュールの使用方法は仕様書の違いによって異なる。幾つかの例では、ここで説明するデータ処理システムは、以下のように仕様書をデータフローグラフへと変換する。データ処理システムは、データ記憶システムの中で、データ構造にアクセスし、これは仕様書の部分を表すデータをデータフローグラフコンポーネントにマッピングし、データ構造の中で、仕様書の特定部分を表すデータの項目を特定する。データ処理システムはまた、データ構造の中で、どのデータフローグラフコンポーネントが仕様書の特定部分にマッピングされるかも特定し、特定されたデータフローグラフコンポーネントを、仕様書により指定された動作の実行順序にしたがってデータフローグラフに追加する。
【０１０８】
図２Ｅを参照すると、略図３０はユーザインタフェースモジュール３２、仕様書構成モジュール３４、及びエンティティ生成モジュール３６を含み、これらはまた図１Ａに関して先に説明されている。ユーザインタフェースモジュール３２は、特定のエンティティ（例えば、図２Ｅの「エンティティ１」）を構成するためのユーザインタフェース３８を表示する（又は表示されるようにする）。ユーザインタフェース３８は、ユーザインタフェース３８を通じて構成中のエンティティに含められる動作、例えばマッピング動作のためのパラメータの１つ又は複数の値を受け取るための部分４０を含む。この例では、部分４０は、動作において使用されるパラメータの値を入力するためのフィールド４０ａ、４０ｂを含む。ユーザインタフェース３８はまた、結合動作等の他の動作のためのパラメータの値を入力するための部分４２も含んでいてよい。この例では、部分４２はこれらの値を入力するためのフィールド４２ａ、４２ｂを含む。この例では、ユーザインタフェース３８は、すでに定義されたエンティティを構成するためのものである。変形型において、ユーザインタフェースは、例えば、どのパラメータ、動作、及び／又はデータフローグラフコンポーネントがエンティティに含められるべきかを指定することにより、新規エンティティを定義するためにレンダリングすることができる。
【０１０９】
ユーザインタフェース３８のフィールド４０ａ〜４０ｂ及び４２ａ〜４２ｂに入力されるデータに基づいて、仕様書構成モジュール３４は、特定のエンティティを指定する仕様書４４を生成する。データ処理システム（例えば、仕様書からデータフローグラフへの変換を行い、ユーザインタフェースモジュール３２、仕様書構成モジュール３４、及びエンティティ生成モジュール３６のうちの１つ又は複数を含む変換環境５（図１Ａ））は、（例えば、ユーザインタフェース３８を表示又はレンダリングするクライアントデバイスから）フィールド４０ａ〜４０ｂ、４２ａ〜４２ｂのための１つ又は複数の値を指定するリクエスト（例えば、ＸＭＬメッセージ又はその他のデータ）を受け取ってよい。このリクエストはまた、各々の値がそれに関して指定される動作の種類（例えば、マッピング動作、結合動作等）も指定してよい。リクエストの内容に基づき、仕様書構成モジュール３４は仕様書４４を生成する。変換環境５（図１Ａ）は、ユーザインタフェース３８を介して、又は特定のエンティティの対応する動作に関連する所定の基準に適合するためリクエストを介して受け取った値をチェックしてよく、ユーザに対し、（例えば、ユーザインタフェース３８を介して、又はクライアントへの応答メッセージを介して）、受け取った値が所定の基準に適合しているか否かの通知を出力してよい。変換環境５が、受け取った値の幾つかが所定の基準に適合しないと特定した場合、通知（警告等）はまた、ユーザを、特定のエンティティの対応する動作のための、所定の基準に適合する新規の１つ又は複数の値をサブミットするように導く情報も含んでいてよい。換言すれば、変換環境５（例えば、ユーザインタフェース３８）は、導かれたユーザマシン相互作用プロセスを提供してよく、それによって、例えば最終的に受け取った値が確実に所定の基準に適合するようにすることにより、基本となるシステム又はエンティティが適正に動作することが確実となる。
【０１１０】
上述のリクエストには、下表１に示される内容が含まれていてよい：
【０１１１】
【表１】
2021501429.tif 000003
【０１１２】
上表に示されるように、リクエストの内容は、様々な動作の種類を指定するデータを含む。動作の種類の各々について、リクエストは、１つ又は複数のパラメータと、各パラメータのための１つ又は指定された（例えば、ユーザが入力した）複数の値を指定する。仕様書構成モジュール３４は、リクエストの内容を使って、特定のエンティティのための仕様書４４を生成する。例えば、仕様書構成モジュール３４は、リクエストを構文解析して、仕様書、例えば仕様書４４を生成するルールセットで構成される。この例では、仕様書は、特定のエンティティのための様々な動作（例えば、エンティティにより実行される）及び、各動作のための様々なパラメータ（関連するパラメータの値と共に）を指定する。
【０１１３】
仕様書構成モジュール３４は、下表２に示されるように、仕様書のための（例えば、エンティティのための）テンプレートにアクセスしてよい：
【０１１４】
【表２】
2021501429.tif 000004
【０１１５】
上表２に示されるように、仕様書のためのテンプレートは、例えばリクエストの内容に基づいて入力されることになるフィールドを含む。この例では、動作の種類のためのフィールド（すなわち、＿＿＿動作）があり、その動作の第一のインスタンスを指定する他のフィールド（すなわち、＿＿＿１）がある。また、動作のそのインスタンスのためのパラメータ（及び関連する値）を指定するための他のフィールドもある。テンプレートの入力済みバージョンが、仕様書４４として図２Ｅに示されている。変形型において、リクエスト自体の内容（例えば、表１に示される）は、例えばリクエストの内容から入力されることになる別のテンプレートを有するのではなく、仕様書である。
【０１１６】
エンティティ生成モジュール３６は、仕様書４４をエンティティ４６に変換してよく、これは例えば、データレポジトリから仕様書４４の中の動作の種類により指定されるコンポーネントを表すデータグラフコンポーネント又はデータを選択することによる。例えば、仕様書４４は、「マッピング」の動作の種類と「結合」の動作の種類を含む。これらの動作の種類に基づき、エンティティ生成モジュール３６は、エンティティ４６に含めるためにデータフローグラフコンポーネント「マッピングコンポーネント４８」及び「結合コンポーネント５４」を選択する。
【０１１７】
エンティティ生成モジュール３６は、データ記憶システム３の中で、仕様書の部分を表すデータを、コンポーネント又はデータフローグラフコンポーネントを表すデータにマッピングするデータ構造にアクセスしてよい。エンティティ生成モジュール３６は、マッピングにおいて、仕様書の特定の部分を表すデータの項目を特定する。エンティティ生成モジュール３６は、マッピングにおいて、コンポーネント又はデータフローグラフコンポーネントを表すどのデータが仕様書の特定された部分にマッピングされるかを特定し、特定された、コンポーネント又はデータフローグラフコンポーネントを表すデータをユーザインタフェース３８により指定された動作実行の順序にしたがってエンティティ４６に追加する。幾つかの例では、仕様書の部分を表すデータとコンポーネントの特定の１つを表すデータとの間に１対１のマッピングがない。その代わりに、結合を表すデータは、複数の異なる結合コンポーネント（又は結合コンポーネントを表すデータ）にマッピングできる。この例では、エンティティ生成モジュール３６は、適当なコンポーネントを選択するように構成される。
【０１１８】
エンティティ生成モジュール３６はまた、他のコンポーネントも選択し、これは例えば、仕様書によっても、ユーザインタフェース３８への入力によっても指定されないソートコンポーネント５０、５３及びパーティションコンポーネント５１、５２である。この例では、エンティティ生成モジュール３６は、様々な他の動作の種類の前に様々な動作の種類を指定するルールで構成される。例えば、キーに基づく動作（例えば、結合又はロールアップ動作）の前に、パーティション及びソート動作が行われて、例えばキーに基づく動作の実行中にメモリが節約される。一般に、キーに基づく動作には、データに対して、そのデータのためのキー（又はその他の固有の識別子）に基づいて動作する動作を含む。この例では、エンティティ生成モジュール３６は、パーティション及びソート動作が結合動作に先行することを指定するルールでプログラムされる。このルールに基づいて、エンティティ生成モジュール３６は、エンティティ４６の中にソートコンポーネント５０、５３及びパーティションコンポーネント５１、５２を、エンティティ４６の中の結合コンポーネント５４の発生の前に含める。
【０１１９】
他の例では、エンティティ生成モジュール３６はまた、パーティション動作がマッピング動作の後になることを指定するルールでもプログラムされ、これによって例えば、マッピング動作の実行後のメモリが節約される。このルールの実行に基づいて、エンティティ生成モジュール３６は、エンティティ４６内にソートコンポーネント５０を含める。エンティティ生成モジュール３６は、コンポーネント４８、５０、５２、５４間にエッジ５６、５８、５９、６０、及び６１（例えば、データフローを表す）を、仕様書４４の中で各種の動作がリストされた（又は、それ以外に発生する）順序に基づいて、及び／又はルールにより指定される順序に基づいて挿入する。例えば、上述のルールの実行に基づいて、ソートコンポーネント５０は、マッピングコンポーネント４８と結合コンポーネント５４との間に挿入される。この挿入の後に、エンティティ生成モジュール３６は、マッピングコンポーネント４８とソートコンポーネント５０との間にエッジ５６を挿入する。エンティティ生成モジュール３６はまた、ソートコンポーネント５０とパーティションコンポーネント５１との間にエッジ５８も挿入する。エンティティ生成モジュール３６は、パーティションコンポーネント５１と結合コンポーネント５４との間にエッジ５９を挿入する。追加的に、パーティションコンポーネント５２の挿入後に、エンティティ生成モジュール３６は、ソートコンポーネント５３とパーティションコンポーネント５２との間にエッジ６０を挿入する。エンティティ生成モジュール３６は、パーティションコンポーネント５２と結合コンポーネント５４との間にエッジ６１を挿入する。
【０１２０】
変形型において、仕様書構成モジュール３４は、上述のルールで構成される。これらのルールの実行に基づき、仕様書構成モジュール３４は、仕様書４４及びエンティティ４６に含めるべき追加の動作（例えば、パーティション動作及びソート動作）を特定するように構成される。
【０１２１】
本明細書に記載のシステムは、ユーザに対し（ユーザインタフェース３８を通じて）、エンティティの構成に必要な複雑さが最小限しか示されないように構成される。すなわち、ユーザには、構成のためにユーザの入力を必要とするデータ操作のためのパラメータ値を指定する入力が促される（例えば、ユーザが、それに対して結合及び／又はフィルタを実行するキーの値を入力することを必要とする結合及びフィルタ処理動作）。しかしながら、ユーザの入力とは独立して構成できる他の動作（例えば、パーティション及びソート動作）は自動的に構成され、エンティティに追加される、すなわち、これらのデータ操作の複雑さはユーザに対して示されない。そのため、ユーザに対して複雑さは最小限しか示されない。
【０１２２】
図３Ａに関して、略図７０は、各々が本明細書に記載の技術を使って生成される複数のエンティティ４６、７６、７８、８０、８２から生成されたデータフローグラフ７１を示している。この例では、各エンティティはそれ自体、複数のその他のエンティティを含み得る。以下により詳しく説明するように、データ処理システムは、データフローグラフの中にどのエンティティを含めるべきか、及びそのエンティティの実行順序を選択するための各種のユーザインタフェースを提供する。この例では、データフローグラフ７１はまた、データソース７２、７４も含む。この例では、ユーザインタフェースはまた、データソースの、及びデータフローグラフ内に含まれるデータソース及びエンティティ間の関係の仕様書のために提供される。この例では、データソースは、ユーザエンドでカスタマイズ可能であり、事前に指定する必要がない（例えば、デプロイ又はインストール時に指定できる）という点で変更可能なフィールドである。図３Ｂを参照すると、略図８３は図２Ｅの変形型を示しており、この場合、仕様書は、個別の特定のエンティティのためではなく、複数の特定のエンティティを含むデータフローグラフのために、ユーザ入力に基づいて生成される。しかしながら、個別のエンティティについての図２Ｅに関する説明はまた、図３に関して述べる各エンティティにも、相応に当てはまる。この例では、ユーザインタフェースモジュール３２は、すべてのパラメータ値（及び／又はデータフローグラフのための構成オプション）を収集するためのユーザインタフェース８５を表示する。ユーザインタフェース８５を通じて収集された入力に基づいて、仕様書構成モジュール３４は、データフローグラフ内に含まれるエンティティのすべてについて、例えば図２Ｅに関して本明細に記載の技術を使って、仕様書８６を生成する。仕様書８６に基づいて、グラフ生成モジュール８４はデータフローグラフ７１を生成し、それ自体は様々なエンティティを含む。データフローグラフ全体を生成することにより、システムは、エンティティ間の必要な依存性及び／又はデータフローを特定し、生成することができる。少なくとも部分的にこれらの依存性及び／又はデータフローに基づいて、システムはエンティティのため、及びエンティティのコンポーネントのための入力及び出力データフォーマットを指定できる。
【０１２３】
換言すれば、ユーザインタフェースモジュール３２は、複数の特定のエンティティ（例えば、図３Ｂの「顧客取引エンティティ」及び「購入エンティティ」）を構成するためのユーザインタフェース８５を表示する（又は表示されるようにする）。ユーザインタフェース８５は、ユーザインタフェース８５を通じて構成中のエンティティ（例えば、図３Ｂの「顧客取引エンティティ」）に含まれる動作、例えばマッピング動作のためのパラメータの１つ又は複数の値を受け取るための部分を含む。この例では、ユーザインタフェース８５は、動作において使用されるパラメータの値を入力するためのフィールド８５ｄ、８５ｅを含む。ユーザインタフェース８５はまた、同じエンティティのための他の動作、例えば結合動作のためのパラメータの値を入力するための部分も含んでいてよい。この例では、この部分はまた、これらの結合動作等のためのパラメータの値を入力するためのフィールドも含んでいてよい。ユーザインタフェース８５のフィールドに入力されるデータに基づいて、仕様書構成モジュール３４は、複数の特定のエンティティを指定する仕様書８６を生成する。
【０１２４】
この例では、ユーザインタフェース８５は選択するためのエンティティ（例えば、所定のエンティティ）のパレットを表示する。この例では、ユーザインタフェース８５はコントロール８５ａを含み、それを選択すると、コンピュータプログラム及び／又はデータフローグラフに含められる各種のエンティティのリストが表示される。この例では、ユーザは、例えばエンティティの中でも特に「顧客取引」エンティティ８５ｂと「購入」エンティティ８５ｃとをコンピュータプログラムの中に含めるように選択している。この例では、「顧客取引」エンティティ８５ｂは、マッピング動作と結合動作を含む。「顧客取引」エンティティ８５ｂについて、ユーザインタフェース８５により、ユーザはマッピング動作の値を、例えば結合動作のパラメータの値を入力するための入力ボックス８５ｄ、８５ｅを介して構成できる。入力ボックスは、「顧客取引エンティティ」８５ｂの一部である結合動作のパラメータの値を構成するため、及び「購入」エンティティ８５ｃに含まれるソート及び結合動作のパラメータの値を構成するために提供される。
【０１２５】
この例では、ユーザインタフェース８５はコントロール８５ｄを含み、それを選択すると、ユーザインタフェース８５をレンダリングするクライアントデバイスは、リクエスト（例えば、ＸＭＬメッセージ又はその他のデータ）を、仕様書構成モジュール３４を実行するデータ処理システム、例えば、変換環境５（図１Ａ）に送信する。この例では、リクエストは、特定のエンティティの各々について、エンティティの名前、そのエンティティにより実行されるデータ操作の種類（例えば、マッピング動作、結合動作等）、及び、データ操作の各々の種類について、そのデータ操作のためのそれぞれのパラメータの値を指定する。リクエストは仕様書構成モジュール３４に送信される。リクエストの内容に基づいて、仕様書構成モジュール３４は仕様書８６を生成する。仕様書構成モジュール３４は、本明細書に記載の技術を使って仕様書に含める追加の何れかのデータ操作があるか否かを特定してよい。これらの追加のデータ操作には、他のデータ操作を実行するために必要なデータ操作又は、指定されたデータ操作がそれに依存するが、ユーザが入力値を入れるように促されていないデータ操作が含まれる。データ処理システムは、ユーザインタフェース３８（図２Ｅ）若しくはユーザインタフェース８５を介して、又は特定のエンティティの対応する動作に関連する所定の基準に適合するリクエストを介して受け取った値をチェックしてもよく、受け取った値が所定の基準に適合するか否かの通知をユーザに（例えば、ユーザインタフェース８５を介して、又はクライアントへの応答メッセージを介して）出力してもよい。データ処理システムが、受け取った値の幾つかが所定の基準に適合しないと特定した場合、通知（例えば、警告）はまた、ユーザが、所定の基準に適合する特定のエンティティの対応する動作のための新規の１つ又は複数の値をサブミットするのを導く情報も含んでいてよい。換言すれば、データ処理システム（例えば、ユーザインタフェース８５）は、導かれたユーザマシン相互作用プロセスを提供してよく、これによって例えば最終的に受け取った値が所定の基準に確実に適合するようにすることにより、基本のシステム又はエンティティの適正な動作を確実にする。
【０１２６】
仕様書から、グラフ生成モジュール８４は、例えばメモリから、仕様書８６に含まれるエンティティの名前に対応するエンティティ（例えば、エンティティ７６、７８、８０、８２、４６）を選択し、これらのエンティティのパラメータの値をユーザインタフェース８５に入力された値にしたがって構成することによって、データフローグラフ７１を生成する。エンティティがまだ事前に定義されてメモリに記憶されていないある例では、グラフ生成モジュール８４は、例えばメモリから、仕様書により指定された各種の動作の名前に対応する名前を有するコンポーネントを選択することによって、エンティティを生成する。
【０１２７】
図４を参照すると、略図９０はデータ処理システム、例えば図１Ａのデータ処理システム４が、あるフィールドを、そのフィールドはデータフローグラフ７１（図３Ａ）であってもよいデータフローグラフ９１内の下流の、又はその後の何れかのエンティティ（又は、エンティティに含まれるコンポーネント）により必要とされないとデータ処理システムが特定したときにデータレコードから「ドロップする」か、又はそれ以外に取り除くように構成される様子を示す。この例では、データフローグラフ９１はデータソース９２、９４、データシンク９７（例えば、データの記憶のためのデータレポジトリ）、及びエンティティ９８を含む。データフローグラフ９１はまた、１つ又は複数のその他のエンティティも含んでいてよく、これはデータフローグラフ９１に見られる楕円形の点（「．．．」）により示されている。
【０１２８】
フィールドを、それらがデータフローグラフにより使用又は処理されなくなったときにドロップすることには多くの利点がある。これらの利点には、データレコード処理のレイテンシの短縮が含まれ、それは、データ処理システムがより小さいレコード（例えば、フィールドのドロッピングによる）を、データ処理システムがデータフローグラフを通じたすべてのデータレコードを処理しなければならない場合のデータ処理速度に関して、より素早く処理できるからである。その他の利点には、メモリ及びリソースの消費の削減が含まれ、これは、より小さいレコード（例えば、フィールドのドロッピングによる）がレコードの処理中に消費するメモリ空間はより小さいからである。
【０１２９】
この例では、データフローグラフ９１はエンティティ９８を含み、それが今度はデータフローグラフコンポーネント１００、１０２、１０４、１０６を含む。コンポーネント１００、１０６の各々はフィルタコンポーネントであり、これはレコードを位置情報フィールドに基づいてフィルタ処理する。そのため、コンポーネント１００、１０６の各々は、フィルタ処理を適正に実行するために、データレコードに位置情報フィールドがあることを必要とする。コンポーネント１０２はソートコンポーネントであり、これはデータレコードを、例えばデータレコードのＩＤ又はキーに基づいて選別するように構成される。そのため、コンポーネント１０２は、ソートを適正に実行するためにＩＤフィールドを必要とする。コンポーネント１０４は結合コンポーネントであり、これは同じ又は同様のキー又はＩＤに関連するデータレコードについて結合を行うように構成される。そのため、コンポーネント１０４は、結合動作を適正に行うために、ＩＤフィールドを必要とする。この例では、データシンク９７は、処理されたデータレコードの各々のための４つのフィールド（例えば、フィールド９６ａ〜９６ｄ）を有するデータレコード（例えば、データレコード９６）を記憶するように構成される。この例では、４つのフィールドはＩＤフィールド９６ａ、ＳＭＳフィールド９６ｂ、タイムスタンプフィールド９６ｃ、及びデータ利用フィールド９６ｄを含む。そのため、データシンク９７による記憶のために指定されたフィールドに基づいて、処理されたレコードは、これらのフィールドの値をデータシンク９７に記憶できるようにするために、これら４つのフィールドを含むべきである。
【０１３０】
この例では、データソース９２は構造化データ項目、例えばデータレコード１０８を受け取り、これはＩＤフィールド１０８ａ、位置情報フィールド１０８ｂ、ＳＭＳフィールド１０８ｃ、及びタイムスタンプフィールド１０８ｄを含む。この例では、フィールド１０８ａ〜１０８ｄの各々は、下流のエンティティ又はデータシンクにより必要とされる。例えば、フィールド１０８ａは、コンポーネント１０２、１０４、及びデータシンク９７により必要とされる。フィールド１０８ｂは、コンポーネント１００により必要とされる。フィールド１０８ｃは、データシンク９７により必要とされる。フィールド１０８ｄは、データシンク９７により必要とされる。そのため、データ処理システムは、データレコード１０８から何れのフィールドもドロップせず、データレコード１０８はその全体がデータフローグラフ９１内の次のエンティティに送信される。
【０１３１】
この例では、データソース９４はデータレコード１１０を受け取り、これはＩＤフィールド１１０ａ、位置情報フィールド１１０ｂ、データ利用フィールド１１０ｃ、タイムスタンプフィールド１１０ｄ、及び音声フィールド１１０ｅを含む。ＩＤフィールド１１０ａは、データフローグラフ９１内の下流のエンティティ及びコンポーネント（すなわち、コンポーネント１０４及びデータシンク９６）により使用される。位置情報フィールド１１０ｂはコンポーネント１０６により使用される。データ利用フィールド１１０ｃはデータシンク９７により使用される。タイムスタンプフィールド１１０ｄは、データシンク９７により使用される。しかしながら、音声フィールド１１０ｅは、下流のコンポーネント又はエンティティの何れによっても使用されない。そのため、データ処理システムは音声フィールド１１０ｅをデータレコード１１０からドロップする（これは「音声」の取消し線により視覚的に示されている）。この例では、データソース９４はデータレコード１１２（フィールド１１２ａ〜１１２ｄを含み、ドロップされたフィールド１１０ｅを含まない）をデータフローグラフ９１内の次のエンティティに送信する。データレコード１１２は、フィールド１１０ｅが取り除かれたバージョンのデータレコード１１０である。すなわち、この例では、データレコード１１２は、データレコード１１２がフィールド１１０ｅを含まないことを除き、データレコード１１０と同じである。この例では、フィールド１１２ａ〜１１２ｄはそれぞれフィールド１１０ａ〜１１０ｄと同じである。これは、データソース９４に関連付けられる仕様書をデータソース９４に変換している間にデータ処理のためのデータフローグラフの実行の前にデータソース９４の出力データフォーマットを設定することによって行われてもよく、それによって音声フィールド１１０ｅは、データレコード１１０がデータレコード１１２としてデータソース９４により下流エンティティ９８によるその後の下流の処理のために出力される前に、データレコード１１０から除去又はドロップされる。
【０１３２】
この例では、エンティティ９８はデータレコード１０８を受け取る。データ処理システムは、データレコード１０８に対してコンポーネント１００を実行し、例えば、データレコード１０８の処理を続けるか否か、又はデータレコードがフィルタにより除外されて、さらに処理されないかを特定する。この例では、位置情報フィールド１０８ｂの値に基づいて、データ処理システムは、データレコード１０８がフィルタにより除外されて、さらに処理されないデータレコードの基準を満たさないと特定する。データ処理システムはまた、位置情報フィールド１０８ｂが下流のエンティティ又はコンポーネントの何れによっても使用されず、又は必要とされないと特定する。例えば、コンポーネント１０２、１０４又はデータシンク９７の何れも位置情報フィールドを使用しない。そのため、データ処理システムは、データレコード１０８から位置情報フィールド１０８ｂをドロップし、これはコンポーネント１００の上の「位置情報」の取消し線により示されている。これは、エンティティ９８に関連付けられる仕様書のエンティティ９８への変換中にコンポーネント１００の出力データフォーマットを設定することにより行われてよく、それによって、データレコード１０８が下流のコンポーネント１０２、１０４によるその後の下流の処理のためにコンポーネント１００によってデータレコード１１４として出力される前に、位置情報フィールド１０８ｂがデータレコード１０８から除外され、又はドロップされる。位置情報フィールド１０８ｂの除外により、データレコード１１４が得られ、これはデータレコード１０８のあるバージョンである。すなわち、データレコード１１４は、データレコード１０８の、位置情報フィールド１０８ｂが取り除かれたバージョンである。この例では、データレコード１１４はフィールド１１４ａ〜１１４ｃを含み、これらはそれぞれフィールド１０８ａ、１０８ｃ〜１０８ｄに対応する。コンポーネント１０２及び１０４は各々、データレコード１１４を処理する。この例では、コンポーネント１０２、１０４による処理の後、データレコード１１４から何れのフィールドもドロップされず、これは、フィールド１１４ａ〜１１４ｃの各々がデータシンク９７により必要とされるからである。
【０１３３】
この例では、データレコード１１２がエンティティ９８に渡され、それがデータレコード１１２に対してコンポーネント１０６を実行し、例えばデータレコード１１２の処理を継続するか否か、又はデータレコード１１２がフィルタで除外されて、さらに処理されないかを特定する。この例では、位置情報フィールド１１２ｂの値に基づいて、データ処理システムは、データレコード１１２がフィルタにより除去されて、さらに処理されないデータレコードの基準を満たさないと特定する。データ処理システムはまた、位置情報フィールド１１２ｂが下流のエンティティ又はコンポーネントの何れによっても使用されず、又は必要とされないと特定する。例えば、コンポーネント１０４もデータシンク９７も位置情報フィールドを使用しない。そのため、データ処理システムは、データレコード１１２から位置情報フィールド１１２ｂをドロップし、これはコンポーネント１０６の下の「位置情報」の取消し線により示されている。これは、エンティティ９８に関連付けられる仕様書のエンティティ９８への変換中にコンポーネント１０６の出力データフォーマットを設定することにより行われてよく、それによって、位置情報フィールド１１２ｂは、データレコード１１２が下流のコンポーネント１０４によるその後の下流の処理のためにコンポーネント１０６によってデータレコード１１６として出力される前に、位置情報フィールド１１２ｂがデータレコード１１２から除外され、又はドロップされる。位置情報フィールド１１２ｂの除外により、データレコード１１６が得られ、これはデータレコード１１２のあるバージョンである。すなわち、データレコード１１６は、データレコード１１２の、位置情報フィールド１１２ｂが取り除かれたバージョンである。この例では、データレコード１１６はフィールド１１６ａ〜１１６ｃを含み、これらはそれぞれフィールド１１２ａ、１１２ｃ〜１１２ｄに対応する。コンポーネント１０４は、データレコード１１６を処理する。この例では、コンポーネント１０４による処理の後、データレコード１１６から何れのフィールドもドロップされず、これは、フィールド１１６ａ〜１１６ｃの各々がデータシンク９７により必要とされるからである。
【０１３４】
この例では、コンポーネント１０４はデータレコード１１４、１１６（例えば、データレコードの各々は同じＩＤを有する等）を結合する。コンポーネント１０４の出力はデータレコード１１８であり、これはデータレコード１１４、１１６を含む。この例では、データレコード１１４、１１６の各々はデータレコード１１８のサブレコードである。エンティティ９８は、データレコード１１８を記憶のためにデータシンク９７に伝送する。
【０１３５】
ある例において、データ処理システム（例えばデータ処理システム４又は変換環境５）は、データフローグラフ（例えば、図３Ａのデータフローグラフ７１又は図４のデータフローグラフ９１）内の各エンティティについて３つのパスを実行し、どのデータフィールドを、いつ、記憶から削除し、又はそれ以外に除外できるかを特定する。すなわち、コンピューティング及びメモリリソースの消費を減らすために、データ処理システムはフィールドをできるだけ早く、例えばそのフィールドがデータフローグラフによって、及び／又はデータフローグラフ内のエンティティによって必要とされなくなったときに「ドロップ」又は削除するように構成される。第一のパス中、データフローグラフのあるエンティティは、他のエンティティ（例えば、他の上流のエンティティ）に対し、それ自体により、及びそのエンティティの下流の何れかのエンティティにより必要とされるフィールドをブロードキャストする。このブロードキャストを行うエンティティは、ブロードキャストエンティティと呼ばれる。ある例において、ブロードキャストエンティティは、必要なフィールドを１つ又は複数の受信エンティティ（例えば、上流のエンティティ）に、必要なフィールドを表すデータを含む１つ又は複数のメッセージをこれらの上流のエンティティに送信することによってブロードキャストする。
【０１３６】
第二のパス中、受信エンティティはブロードキャストエンティティに対し、どの受信エンティティが必要なフィールドの値を提供（例えば、ブロードキャストエンティティに伝送）できるかを指定する１つ又は複数のメッセージを伝送する。第三のパス中、ブロードキャストエンティティは、受信エンティティから受け取ったメッセージを構文解析（又はそれ以外に解析）する。ブロードキャストエンティティは、応答として、受信エンティティに対し、どの受信エンティティがどのフィールド（及び／又はフィールドの値）のブロードキャストエンティティへの伝送を担当するかを指定するデータ（例えば、メッセージ）を返信する。幾つかの例において、データ処理システムは、これらの３つのパスを実行する。そのようにする中で、各エンティティは、例えばブロードキャストエンティティを含む下流のエンティティによりどのフィールドが必要とされるかを指定するデータ（例えば、設定された出力データフォーマット）で構成される。一般に、エンティティ（例えば各エンティティ）は、メモリ及び／又はデータレポジトリの中に、必要なフィールドを表すデータを保存し、そのエンティティのための固有の識別子に関連付けられるデータを保存することによって、必要なフィールドを指定するデータで構成される。すると、データフローグラフの実行中、データ処理システムは、エンティティの実行中に、この記憶されたデータの問い合わせを行う。例えば、特定のエンティティを実行すると、データ処理システムは、データベース内でそのエンティティのためのデータを（例えば、そのエンティティの固有の識別子に基づいて）検索する。前述のように、検索されたデータは、どのフィールドが下流のエンティティにより必要とされるかを指定する。この例では、データ処理システムは、下流のエンティティにより必要とされないフィールドを、例えば現在のエンティティ（例えば、現在実行中で、どのフィールドが下流のエンティティにより必要とされ、必要とされないかを指定する、記憶データに関連付けられるエンティティ）によるデータ処理が終了したときに、（例えば、これらを記憶装置から削除することによって、又はこれらのフィールドに関するデータが記憶されないようにすることによって）ドロップするように構成される。
【０１３７】
図５を参照すると、略図１２０は、データレコードのどのフィールドをいつドロップすべきかを特定する際にデータ処理システムが実行するプロセスを示す。この例では、データフローグラフはデータソース１２２、１２４、及びエンティティ１２６、１２８、１３０、１３２、１３４を含む。この例では、エンティティは、エンティティがフィールドの値を記憶しないという点で一時的である。この例では、エンティティ１３２は３つのフィールド、すなわちｘ、ｙ、ｚを必要とする。エンティティ１３０は、１つのフィールド、すなわちＡを必要とする。エンティティ１２６は２つのフィールド、すなわちｘ及びｙを必要とする。追加的に、この例では、データソース１２２は、フィールドｘ、ｙ、Ａ を有するデータレコードを記憶する（又はそれ以外にそれにアクセスすることができる）。
【０１３８】
どのフィールドがどのエンティティにより必要とされるか、及びデータ処理システムがフィールドをいつドロップできるかを追跡するために、データ処理システムは、データフローグラフの構成の一環として、データフローグラフによるデータ処理の前に、以下の技術を実行する。まず、エンティティ１３２は、矢印１３６に示されるように、第一のパス中にメッセージ１７０をエンティティ１３０に送信する。メッセージ１７０は、エンティティ１３２により必要とされるフィールドを指定するデータを含む。この例では、メッセージ１７０は、フィールドｘ、ｙ、ｚがエンティティ１３２により必要とされることを指定するデータを含む。すると、エンティティ１３０はメッセージ１７０を受け取り、メッセージ１７０に、エンティティ１３０に必要なフィールドがあればこれを追加する。この例では、エンティティ１３０はメッセージ１８０を生成し、これはメッセージ１７０のあるバージョンであり、メッセージ１７０の内容（すなわち、フィールドｘ、ｙ、ｚを表すデータ）の他、フィールドＡを表す他のデータを含む。第一のパス中に、データ処理システムは、矢印１３８により示されるように、エンティティ１３０からエンティティ１２６にメッセージ１８０を伝送する。この例では、エンティティ１２６はフィールドｘ及びｙを必要とする（例えば、エンティティ１２６はフィールドｘ及びｙを読み出すからである）。そのため、エンティティ１２６はメッセージ１８０に対し、エンティティ１２６がフィールドｘ、ｙのための値を有することになると応答できる。エンティティ１２６は、矢印１９３により示されるように、第一のパス中、データソース１２２にメッセージ１９０を送信する。この例では、メッセージ１９０は、フィールドｘ、ｙ、ｚ、Ａが、例えば１つ又は複数の下流のエンティティにより必要とされることを指定する。データソース１２２はフィールドｘ、ｙ、Ａのための値を記憶する（又は、それ以外にそれにアクセスする）ため、データ処理システムは、第二のパス中に、矢印１９４により示されるように、メッセージ１９２がデータソース１２２からエンティティ１２６に伝送されるようにする。この例では、メッセージ１９２は、データソース１２２がフィールドｘ、ｙ、Ａのための値を記憶するか、又はそれ以外にそれにアクセスできることを指定する。次に、第二のパス中、データ処理システムは、エンティティ１２６に、矢印１４０により示されるように、エンティティ１３０にメッセージ１８２を伝送させる。この例では、メッセージ１８２は、エンティティ１２６がフィールドｘ、ｙ、Ａのための値をエンティティ１３０に伝送できることを指定する。ある例において、データ処理システムは、受信した（そのエンティティへの）メッセージの中で指定されたフィールドを特定し、その後、指定されたフィールドのどれが、メッセージを受信したエンティティにより必要とされるか、又はメッセージを受信したエンティティによりアクセスすることができるかを特定することにより、（エンティティから伝送された）メッセージの中でどのフィールドを指定し、又はその中に含めるかを特定する。この例では、メッセージ１８０（エンティティ１２６により受信される）はフィールドｘ、ｙ、ｚ、Ａを指定する。エンティティ１２６は、フィールドｘ、ｙを必要とする。したがって、エンティティ１２６はフィールドｘ、ｙのための値にアクセスできる（データソース１２２からこれらの値を受け取ることによる）。そのため、フィールドｘ、ｙがメッセージ１８２の中に含められる。エンティティ１２６はフィールドＡを必要としないが、エンティティ１２６はデータソース１２２を通じてフィールドＡにアクセスできる。そのため、エンティティ１２６はメッセージ１８２の中にフィールドＡを含める。
【０１３９】
この例では、エンティティ１３０はメッセージ１８２を受け取り、メッセージ１８２の中で指定されたフィールドのうちの、もしあれば、どれが下流のエンティティにより必要とされるかを特定する。この特定を行うために、エンティティ１３０はメッセージ１８２の内容をメッセージ１７０の内容と比較する。この例では、データ処理システムは、メッセージ１８２の中で指定されるフィールドとメッセージ１７０の中で指定されるフィールドとの間の重複を表すフィールド（例えば、重複フィールド）を指定する他のメッセージを生成するように構成される。そのため、データ処理システムは、フィールドｘ、ｙを表すデータでメッセージ１８５を生成し、例えば、エンティティ１３０がフィールドｘ、ｙをエンティティ１３２に提供できることを指定する。第二のパス中に、エンティティ１３０は、矢印１４２により示されるように、メッセージ１８５をエンティティ１３２に伝送する。エンティティ１３０はまた、メモリ又はデータレポジトリの中に、フィールドＡがエンティティ１３０により処理されると、フィールドＡを記憶装置からドロップし、又はそれ以外に削除できることを指定するデータを記憶する。ここで、図５に示されるデータフローグラフがデータ処理システム４（図１Ａ）により（リアルタイムで）実行されると、データ処理システム４（データフローグラフを実行する）は、フィールドＡをドロップすることを、エンティティ１３０による処理後に、例えばメモリ（又はデータレポジトリ）の中でエンティティ１３０によるデータ処理の完了時にフィールドＡをドロップすることを指定するデータのデータ検索に基づいて特定できる。
【０１４０】
メッセージ１７０の伝送と平行して（又はそれに続いて）、エンティティ１３２はまた、矢印１５０により示されるように、第一のパス中にメッセージ１７２をエンティティ１３４に伝送する。幾つかの例において、メッセージ１７０はメッセージ１７２と同じメッセージである。この例では、メッセージ１７２はフィールドｘ、ｙ、ｚがエンティティ１３２により必要とされることを指定する。エンティティ１３４は、メッセージ１７２を受け取る。この例では、エンティティ１３４はそれ自体の何れのフィールドも必要としない。そのため、エンティティ１３４は、矢印１５２により示されるように、第一のパス中にメッセージ１７２をエンティティ１２８に送信する。エンティティ１２８はメッセージ１７２をソース１２４に送信し、それが今度は、メッセージ１８４で応答し、これはソース１２４がフィールドｙ、ｚを提供できることを指定する。今度は、エンティティ１２８は、エンティティ１２８がフィールドｙ、ｚのための値を提供できることを指定するメッセージ１８４で応答する。この例では、エンティティ１２８は、第二のパス中に、矢印１５４により示されるように、エンティティ１３４にメッセージ１８４を伝送する。この例では、エンティティ１３４は、第二のパス中に、矢印１５６により示されるように、エンティティ１３２にメッセージ１８４を送信する。
【０１４１】
この例では、エンティティ１３２は２つのメッセージ（すなわち、メッセージ１８４、１８５）を受け取っており、その各々が、エンティティ１３２により必要とされるどのフィールドが上流のエンティティにより提供できるかを指定する。特に、メッセージ１８４は、フィールドｘ、ｙがエンティティ１３０により提供できることを指定する。メッセージ１８４は、フィールドｙ、ｚがエンティティ１３４により提供できることを指定する。エンティティ１３２は２つの異なるエンティティからフィールドｘの値を受け取ることができるため、エンティティ１３２はこれらのエンティティのうちから、そこにフィールドｘの値を要求し、そこから受け取ることのできるものを選択する。幾つかの例において、エンティティ１３２はランダムにこの選択を行う。他の例では、エンティティ１３２は最初に応答したエンティティを選択してよい。
【０１４２】
この例では、エンティティ１３２はフィールドｘを受け取るためのエンティティ１３０を選択する。そのため、第三のパス中に、エンティティ１３２は、矢印１４４によって示されるように、メッセージ１７９をエンティティ１３０に伝送する。この例では、メッセージ１７９は、エンティティ１３２がエンティティ１３０からフィールドｘ、ｙを受け取ることを選択していることを指定する。すると、エンティティ１３０は、エンティティ１３０がフィールドｘ、ｙ、Ａの値をエンティティ１２６から受け取ることを指定するメッセージ１７８を生成する。第三のパス中に、メッセージ１７８は、矢印１４６により示されるように、エンティティ１３０からエンティティ１２６に伝送される。第三のパス中に、エンティティ１２６は、矢印１４８により示されるように、メッセージ１７８をデータソース１２２に伝送する。この例では、データソース１２２は、メッセージ１７８の内容を、それが記憶している、又はそれ以外にアクセスするフィールドと比較して、例えばどの（もしある場合はフィールド）データソース１２２を記憶装置からドロップし、削除できるかを特定する。この例では、データ処理システムは、メッセージ１７８の内容に基づいて、データソース１２２のすべてのフィールドが下流のエンティティにより必要とされることを特定する。そのため、データソース１２２は何れのフィールドもドロップしないように構成される。
【０１４３】
この例では、エンティティ１３２は、第三のパス中に、矢印１５８により示されるように、メッセージ１７６をエンティティ１３４に伝送し、これはエンティティ１３２がエンティティ１３４からフィールドｚを受け取ることを指定する。今度は、エンティティ１３４は、データ処理システムにより、フィールドｚの値をエンティティ１３２に伝送するように構成される。エンティティ１３４はまた、第三のパス中、矢印１６０により示されるように、メッセージ１７６をエンティティ１２８に伝送する。そのため、エンティティ１２８はまた、フィールドｚの値をエンティティ１３４に伝送するように構成される。すると、エンティティ１２８は、第三のパス中に、矢印１６２により示されるように、メッセージ１７６をデータソース１２４に送信する。この例では、データソース１２４はメッセージ１７６の内容（すなわち、フィールドｚを指定する）をデータソース１２４によりアクセスされるフィールド、この場合はフィールドｙ、ｚと比較する。比較に基づいて、データ処理システムは、フィールドｙがメッセージ１７６に含められないことを特定する。そのため、データ処理システムは、下流のエンティティの何れも、フィールドｙの値についてデータソース１２４に依存しないことを特定する。そのため、データソース１２４は、例えば図５に示されるデータフローグラフの実行時に、フィールドｙをドロップするように構成される。この例では、データソース１２４はあるフィールドを、そのフィールドのための値をメモリ内に保存しないことによって、ドロップするように構成される。
【０１４４】
ここまでの説明の中で、エンティティがメッセージを伝送し、メッセージを受信すると述べた。ある例において、エンティティはメッセージの伝送及び／又は受信を、実行中で、データを生成させるエンティティを表す実行可能なロジック又はコードで行い、生成されたデータはその後、他のエンティティを表す他の実行可能コードにより分析又は解釈される。
【０１４５】
上述の例において、エンティティ、例えばエンティティ１２６は、例えばフィールドのための値を記憶するのではなく、フィールドへのアクセスを読み出している。変形型では、エンティティはまた、フィールドのための値を記憶してもよい。この例では、エンティティが要求されたフィールドの値を記憶する場合、そのエンティティは上流のエンティティ及び／又はデータソースに行って、その上流のエンティティ及び／又はデータソースがそのフィールドのための値を提供できるか否かを特定する必要がない。その代わりに、エンティティはそれ自体、下流のエンティティ（そのフィールドを要求する）に対し、上流のエンティティがそのフィールドの値を提供できると応答することができる。
【０１４６】
この上記の例において、エンティティは、どのフィールドをいつドロップすべきかがわかるが、それは、各エンティティが、そのエンティティのための入力データフォーマット及び出力データフォーマットを指定するデータを記憶しているか、又はそれにアクセスできるからである。出力データフォーマットは、エンティティがそのための値を出力する必要のあるフィールドを指定する。ある例において、出力データフォーマット（又は、出力フィールド若しくは出力フォーマット）は、１つ又は複数の下流の（例えば、その後発生する）エンティティにより必要とされるどのフィールドが特定の上流のエンティティにより提供できるかを指定する。この例では、上流及び下流のエンティティは、データフローグラフの中の同じデータフローの一部である。すなわち、上流のエンティティは、出力フォーマットを介してこれらのフィールドを提供するように構成される。入力データフォーマットは、エンティティがそのための値を受け取るように構成されるフィールドを指定する。一般に、入力データフォーマットは、エンティティのためにアクセスされ、又は処理される必要のあるフィールドを含む。そのため、どのフィールドをいつドロップすべきかを特定するために、エンティティは、それぞれの出力データフォーマットの内容を構文解析し、又はそれ以外に分析する。
【０１４７】
変形型において、エンティティ１３２は以下のように構成される：フィールドｙの値を、その値がゼロでないかぎり、エンティティ１３０から受け取り、ゼロである場合、フィールドｙの値をエンティティ１３４から受け取る。この変形型では、エンティティ１２６、１２８、１３０、１３４の各々は出力データフォーマットの一部としてフィールドｙで構成される。
【０１４８】
図６を参照すると、グラフィカルユーザインタフェース２００が表示され（例えば、クライアントデバイス又はデータ処理システムによる）、ユーザがあるエンティティのため、及びそのエンティティを含むデータフローグラフのための仕様書を構成できるようにする。この例では、グラフィカルユーザインタフェース２００は、入力データセットに関する仕様書の１つ又は複数の部分を構成するための部分２０２を含む。グラフィカルユーザインタフェース２００はまた、入力データセットについて実行されるべき各種の動作（例えば、データ結合）を指定する値を入力するための部分２０４も含む。グラフィカルユーザインタフェース２００はまた、値と、出力データセット及び出力データセットの記憶装置を指定するデータを入力するための部分２０６も含む。
【０１４９】
図７を参照すると、グラフィカルユーザインタフェース２０９はグラフィカルユーザインタフェース２００の変形型である。この変形型では、エンティティを構成するためのオーバレイ２０８が表示される。この例では、エンティティは、部分２０４の１つ又は複数の選択可能部分を選択すると構成される。この例では、オーバレイ２０８は、データ処理の一環として行われるべき動作（例えば、結合動作、マッピング動作、及びフィルタ処理動作）を構成するための構成コントロール２１０、２１２、２１４、２１６を含む。この例では、ユーザは構成コントロール２１０を選択して、結合動作がデータレコードについて行われることになることを指定する。
【０１５０】
図８を参照すると、グラフィカルユーザインタフェース２２０は、エンティティに含められる結合動作を構成するためのオーバレイ２２２を表示する。この例では、オーバレイ２２２は、構成コントロール２１０が選択されると表示される。この例では、オーバレイ２２２は、結合動作を構成するためのコントロールを表示する。特に、オーバレイ２２２は構成コントロール２２４、２２６、２２８、２２９、２３０を表示する。この例では、構成コントロール２２４により、ユーザは結合を実行する相手のデータセットを指定することができる。構成コントロール２２６により、ユーザは結合動作のための名前を入力することができる。構成コントロール２２８により、ユーザは自分が重複するデータレコードを除去したいか否かを指定することができる。構成コントロール２２９により、ユーザは結合が行われるキー（すなわち、固有の識別子）を指定することができる。構成コントロール２３０により、ユーザは行われるべき結合の種類を指定することができる。
【０１５１】
図９を参照すると、データ処理システムは、データフローグラフ２４０を、例えば指定された値（例えば、図６〜８に示されるユーザインタフェース内で入力され、又はそれ以外に指定される値）から生成された仕様書に基づいて生成する。この例では、仕様書は、例えば図２Ｅに関して本明細書に記載されている技術を使って生成される。追加的に、データフローグラフ２４０も、同じく本明細書に記載されている技術を使って、仕様書から生成される。
【０１５２】
この例では、データフローグラフ２４０は、入力データソース２４２、２４４、２４６、２４８、２５０、エンティティ２５２、２５４、２５６、２５８、２６０、２６２、及び出力データソース２６４を含む。この例では、エンティティ２５２、２５４、２５６、２５８、２６０、２６２の各々はデータフローグラフ（例えば、データフローグラフ２４０等の親データフローグラフ内に含められることになるデータフローグラフ）を含む。
【０１５３】
図１０を参照すると、略図３００は、仕様書を、データフローグラフを生成するためのエンティティに変換するプロセスを示す。動作において、システム（例えば、本明細書に記載の図１Ａのシステム１）は、少なくともエンティティの第一のパラメータの値を入力するための第一の部分と、少なくともそのエンティティの第二のパラメータの値を入力するための第二の部分とを含むユーザインタフェースを提供する。システムは、第一のパラメータの入力値を表すデータと、第二のパラメータの入力値を表すデータとを受け取る（３０２）。任意選択により、システムは入力値を表すデータについて、エンティティの対応するパラメータに関連する所定の基準に適合するかをチェックしてよく、ユーザに対し、（例えば、ユーザインタフェースを介して）、入力値が所定の基準に適合するか否かを示す通知を出力してもよい。システムが、入力値の幾つかが所定の基準に適合しないと特定した場合、通知（警告等）は、ユーザを、エンティティの対応するパラメータのための、所定の基準に適合する新たな１つ又は複数の値を入力するように導く情報も含んでいてよい。換言すれば、システムは任意選択により、導かれたユーザマシン相互作用プロセスを提供してもよく、これにより、例えば最終的に受け取った値が確実に所定の基準に適合するようにすることによって、エンティティの適正な動作が確実となる。
【０１５４】
入力値に基づいて、システムはエンティティのための仕様書を生成し（３０４）、この仕様書は、データレコードを入力値にしたがって処理するための複数のデータ操作を指定し、データ操作の少なくとも１つは、受け取ったデータのうち入力値を表す部分により指定され、任意選択により、データ操作の少なくとも他の１つは、データ処理システムにより（例えば、自動的に、及び例えばユーザの入力を必要とせずに（それとは独立して）、例えば、指定されたルールに基づいて）、受け取ったデータのうち入力値を表す部分により指定されたデータ操作の少なくとも１つを実行できるようにするために仕様書に含めるものとして特定される。仕様書の複数の部分の各々について、システムは、仕様書のその部分により指定された１つ又は複数のデータ操作をカプセル化するコンポーネントを特定する（３０６）。
【０１５５】
システムは、データ操作を実行するための特定されたコンポーネントを有するエンティティを生成し（３０８）、コンポーネントの第一のものは、第一のパラメータの値にしたがって１つ又は複数の動作を行うように構成され、コンポーネントの第二のものは、第二のパラメータの値にしたがって１つ又は複数の動作を行うように構成される。追加的に、それぞれの仕様書から特定されたそれぞれのコンポーネントで生成されたエンティティに基づいて、システムは、エンティティ間のデータフローを表すコンピュータプログラム又はデータフローグラフを生成する（３１０）。
【０１５６】
図１１を参照すると、データ処理システム（例えば、図１Ａのシステム１、図１Ａのデータ処理システム４、又は図１Ａの変換環境５）は、仕様書を永続的コンピュータプログラムに変換するプロセス３２０を実装する。一般に、永続的とは、それを作成したプロセスが終了しても残る状態の特徴を指す。一般に、コンピュータプログラムは、データ処理システムにより実行可能な一連のコード化された命令を含む。動作において、データ処理システムは、第一のエンティティとその第一のエンティティにより実装される第一のデータ操作の第一のパラメータの入力値を指定し、さらに第二のエンティティとその第二のエンティティにより実装される第二のデータ操作の第二のパラメータの入力値を指定する仕様書データを受け取る（３２２）。
【０１５７】
第一及び第二のエンティティのパラメータの入力値に基づいて、データ処理システムは、１つ又は複数のデータセットの処理において複数の異なるデータ操作を実行するコンピュータプログラムのための仕様書を生成し（３２４）、仕様書は、第一のエンティティがコンピュータプログラムの中に含められ、第一のエンティティは、少なくとも第一のパラメータの入力値にしたがってデータを処理するための少なくとも第一のデータ操作を実装することを指定し、仕様書はさらに、第二のエンティティがコンピュータプログラムの中に含められ、第二のエンティティは、少なくとも第二のパラメータの入力値にしたがってデータを処理するための第二のデータ操作を実装することを指定し、任意選択により、仕様書の中で第一のエンティティ又は第二のエンティティにより実装されると指定された少なくとも１つのデータ操作は、データ処理システムにより、ユーザインタフェースの中でそのエンティティのためのデータ操作として指定されることとは無関係に、そのエンティティの中に含められるものとして選択される。
【０１５８】
本明細書に記載の技術を使って、データ処理システムは、仕様書を、１つ又は複数のデータセットの処理において複数の異なるデータ操作を実行するコンピュータプログラムに変換し（３２６）、任意選択により、コンピュータプログラムの１つ又は複数の部分の内容は、ユーザインタフェースへの入力とは異なる。すなわち、仕様書の変換により、新しいコンピュータプログラムが得られ、これは、例えば後に実行及び／又は変更するために、メモリに記憶される。データ処理システムはまた、コンピュータプログラムをメモリに保存する（３２８）。このコンピュータプログラムは、永続的且つ編集可能である。追加的に、このコンピュータプログラムは、例えば後日実行するために保存される。
【０１５９】
各エンティティについて、データ処理システムは、そのエンティティのための入力及び出力データフォーマットを保存する（３３０）。入力データフォーマットは、そのエンティティによりアクセスされる１つ又は複数のテータセットの１つ又は複数のフィールドを指定する。出力データフォーマットは、コンピュータプログラム内でそのエンティティの後に（すなわち、その下流で）発生する１つ又は複数のエンティティによりアクセスされる１つ又は複数のフィールドを指定する。この例では、データ処理システムは、例えば図４及び５に関して本明細書に記載される技術を使って、入力及び出力データフォーマットを自動的に特定する。出力データフォーマットの特定のために、これらの技術は、コンピュータプログラム内でそのエンティティの後に（すなわち、その下流で）発生する他のエンティティを特定することであって、他のエンティティとそのエンティティはコンピュータプログラムの中のデータフローの一部である、特定することと、他のエンティティによりアクセスされる１つ又は複数のフィールドを特定することと、他のエンティティによりアクセスされる１つ又は複数のフィールドのうちどれが、そのエンティティによりアクセス可能かを特定することと、エンティティの出力データフォーマットを、他のエンティティによりアクセスされる、及びそのエンティティによりアクセスすることができる１つ又は複数のフィールドを含むように設定することと、を含む。
【０１６０】
この例では、データ処理システムはまた、各エンティティについて、そのエンティティによりアクセスされる１つ又は複数のフィールドを、そのエンティティによるこれらの１つ又は複数のフィールドにおけるデータ（例えば、値）の処理の後にデータレコードからドロップできるか否かを特定する（３３２）。データ処理システムは、コンピュータプログラムの中でそのエンティティの後に（すなわち、下流で）発生する１つ又は複数の他のエンティティと同じデータフローの一部であるコンピュータプログラム内の各エンティティについて、コンピュータプログラムのエンティティにより読み出され、エンティティの後に（すなわち、その下流で）発生する１つ又は複数の他のエンティティの何れによっても読み出されない１つ又は複数のフィールドを特定し、エンティティによるこれらの１つ又は複数のフィールドを読み出した後に、その１つ又は複数のフィールドがコンピュータプログラムによるさらなる処理を受けないようにすることによって、それを行う。
【０１６１】
変形型において、データ処理システムは、複数のエンティティの中から、１つ又は複数のデータセットの処理において複数の異なるデータ操作を実行するコンピュータプログラムに含めるための１つ又は複数のエンティティを選択するため、及び選択された各エンティティについて、そのエンティティにより実装されるデータ操作のパラメータの値を入力するためのユーザインタフェース用データを提供する。他の変形型において、データ処理システムは、どのエンティティをコンピュータプログラムに含めるか、及びそれらのエンティティのためのパラメータ値を指定するデータを入力するスプレッドシート又はルールエディタを提供する。
【０１６２】
複数のエンティティの中から１つ又は複数のエンティティを選択できるようにすることによって、データ処理システムは、ソフトウェアモジュールとコードの再使用を可能にし、コンピュータプログラムの生成におけるフレキシビリティと使いやすさを向上させる。例えば、エンティティが定義されると、その同じエンティティは複数の異なるコンピュータプログラムの中で再使用できる。そのようにすることにより、コンピュータプログラムの生成におけるエラーが減る。これは、コンピュータプログラムが、コンピュータプログラムを、すでに定義されたコンピュータプログラムとコード（エラーがない）の選択を介して開発でき、コンピュータプログラムのコンピュータによるプログラミングを新しいコードで始めなくてよいからである。追加的に、ユーザが複数のエンティティの中からあるエンティティを選択できるようにすることにより、データ処理システムは、ユーザインタフェースの中で、エンティティを構成するため、及びコンピュータプログラムを生成するために必要な複雑さを少ない（例えば、最小限の）量しか見せないようにすることができる。データ処理システムは、ユーザに、それについてユーザ入力又は仕様書が必要なパラメータの値のみを促すことによって、そのようにする。ユーザの入力が不要なその他のデータ操作は、ユーザインタフェース内のビューから隠され、データ処理コンピュータプログラムにより、仕様書生成の一部として仕様書に追加される。
【０１６３】
この例では、仕様書データ（及び／又はユーザ入力）は、何が行われるか（例えば、何が結果か）の意味論的仕様書である。意味論的仕様書に基づいて、データ処理システムは、それがどのように行われるか、例えばどのように結果が実現されるかを指定する論理的仕様書（例えば、一般に本明細書中で仕様書と呼ばれる）を生成する。意味論的仕様書と論理的仕様書との間のこの差を通じて、データ処理システムは、コンピュータプログラムの生成時に、例えば、ユーザが意味論的仕様書の中で（ユーザインタフェース又はフローチャートを介して）指定したステップを省くことにより、エンドツーエンドの最適化を行うことができる。例示的な最適化は、ユーザが、特定のエンティティのパーティション及びソートを実行することを指定する場合である。しかしながら、特定のエンティティの前のあるエンティティがパーティション及びソートのために構成されている場合、コンピュータプログラムは、パーティショニングとソーティングの動作を１つの行の中で２回行わないように最適化される。この点で、グラフ又はコンピュータプログラムの作成は、推奨されるベストプラクティスにしたがって行われ、ユーザはこれを知らなくてよい。そのため、それほど専門知識を持ち合わせない人でも、プロフェッショナルらしく組み立てられたコンピュータプログラムを作成できる。
【０１６４】
幾つかの例では、エンティティはリンクに対応するデータフローにより連結されるノードに対応する計算コンポーネントを含む。この例では、コンピュータプログラムは、リンクに対応するデータフローにより連結されるノードに対応するエンティティを含むデータフローグラフである。この例では、メモリは揮発性又は不揮発性メモリを含む。追加的に、幾つかの例において、エンティティは１つ又は複数の他のエンティティを含む。
【０１６５】
上述のグラフ及びエンティティ構成アプローチは、コンピュータ上で実行されるソフトウェアを使って実装できる。例えば、ソフトウェアは、１つ又は複数のコンピュータプログラムの中で、１つ又は複数のコンピュータプログラムされた、又はコンピュータプログラム可能なコンピュータシステム（これは、分散型、クライアント／サーバ、又はグリッド等、様々なアーキテクチャのものであってよい）を実行する手順を形成し、各々が少なくとも１つのプロセッサ、少なくとも１つのデータ記憶システム（揮発性及び不揮発性メモリ及び／又は記憶素子を含む）、少なくとも１つの入力装置又はポート、及び少なくとも１つの出力装置又はポートを含む。ソフトウェアは、例えば計算グラフの設計と構成に関する他のサービスを提供する、より大きいコンピュータプログラムの１つ又は複数のモジュールを形成してもよい。グラフのノードと素子は、コンピュータ可読媒体に記憶されたデータ構造又は、データレポジトリに記憶されたデータモデルに適合するその他の組織化データとして実装できる。
【０１６６】
ソフトウェアは、汎用又は特定用途プログラマブルコンピュータにより読取り可能なＣＤ−ＲＯＭ等の記憶媒体上で提供されても、又はネットワークの通信媒体上でそれが実行されるコンピュータへと送達（伝搬信号で符号化される）されてもよい。機能はすべて、特定用途コンピュータ上で実行されても、又は特定用途ハードウェア、例えばコプロセッサを使って実行されてもよい。ソフトウェアは分散方式で実装されてよく、この場合、ソフトウェアにより指定された計算の異なる部分は異なるコンピュータにより実行される。このようなコンピュータプログラムの各々は好ましくは、汎用又は特定用途プログラム可能コンピュータにより読取り可能な記憶媒体又はデバイス（例えば、ソリッドステートメモリ若しくは媒体、又は磁気若しくは光媒体）上に記憶されるか、又はそこにダウンロードされ、記憶媒体又は装置がコンピュータシステムにより読み取られて本明細書に記載の手順を実行するときに、コンピュータを構成し、動作させる。本発明のシステムは、コンピュータプログラムで構成されたコンピュータ可読記憶媒体として実装されることが考えられてもよく、そのように構成された記憶媒体は、コンピュータシステムに、本明細書に記載の機能を実行するために特別な所定の方法で動作させる。
【０１６７】
多数の実施形態について説明した。しかしながら、本明細書に記載の技術の主旨と範囲から逸脱することなく、様々な変更を加えてよいと理解されたい。例えば、上述のステップの幾つかは順序非依存であり得、それゆえ、説明されたものとは異なる順序で実行できる。さらに、データフローグラフに関して説明した上述の技術はまた、プログラムに関しても実装及び実行できる。
【０１６８】
上述の説明は、本明細書に記載の技術を例示するものであり、付属の特許請求の範囲により定義されるその範囲を限定しないと理解されたい。例えば、上述の多数の機能ステップは、全体的な処理に実質的に影響を与えることなく、異なる順序で実行してもよい。その他の実施形態も以下の特許請求の範囲に含まれる。
【図１Ａ】
2021501429.tif 000005
【図１Ｂ】
2021501429.tif 000006
【図２Ａ１】
2021501429.tif 000007
【図２Ａ２】
2021501429.tif 000008
【図２Ｂ】
2021501429.tif 000009
【図２Ｃ】
2021501429.tif 000010
【図２Ｄ】
2021501429.tif 000011
【図２Ｅ】
2021501429.tif 000012
【図３Ａ】
2021501429.tif 000013
【図３Ｂ】
2021501429.tif 000014
【図４】
2021501429.tif 000015
【図５】
2021501429.tif 000016
【図６】
2021501429.tif 000017
【図７】
2021501429.tif 000018
【図８】
2021501429.tif 000019
【図９】
2021501429.tif 000020
【図１０】
2021501429.tif 000021
【図１１】
2021501429.tif 000022
【国際調査報告】
2021501429.tif 000023
2021501429.tif 000024