(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024009960
(43)【公開日】2024-01-23
(54)【発明の名称】永続的コンピュータプログラムへの仕様書の変換
(51)【国際特許分類】
G06F 8/30 20180101AFI20240116BHJP
【FI】
G06F8/30
【審査請求】有
【請求項の数】23
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2023177212
(22)【出願日】2023-10-13
(62)【分割の表示】P 2020543240の分割
【原出願日】2018-10-24
(31)【優先権主張番号】15/795,917
(32)【優先日】2017-10-27
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】509123208
【氏名又は名称】アビニシオ テクノロジー エルエルシー
(74)【代理人】
【識別番号】100108453
【弁理士】
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100110364
【弁理士】
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100133400
【弁理士】
【氏名又は名称】阿部 達彦
(72)【発明者】
【氏名】ヨナ・エゲノルフ
(72)【発明者】
【氏名】マーシャル・エー・イスマン
(72)【発明者】
【氏名】フレデリック・ワイルド
(57)【要約】 (修正有)
【課題】仕様書を、構造化データ項目内の1つ又は複数のフィールドの1つ又は複数の値を処理するコンピュータプログラムに変換する方法、コンピュータシステム及びコンピュータ可読媒体を提供する。
【解決手段】方法は、構造化データ項目内の1つ又は複数のフィールドの1つ又は複数の値を処理する複数のモジュールを指定する仕様書にアクセスし、仕様書をコンピュータプログラムに変換し、永続的メモリにコンピュータプログラムを保存する。プログラムへの変換は、複数のモジュールの1つ又は複数の第一のモジュールの各々について、複数のモジュールの、各々が少なくとも部分的に第一のモジュールの出力に基づく入力を受信する1つ又は複数の第二のモジュールを特定すること及び第一のモジュールの出力データフォーマットを、第一のモジュールが構造化データ項目の1つ又は複数のフィールドの1つ又は複数の値のみを出力するように設定することを含む。
【選択図】
図11
【特許請求の範囲】
【請求項1】
仕様書を、構造化データ項目の1つ又は複数のフィールドの1つ又は複数の値を処理するコンピュータプログラムに変換する中でコンピュータシステムが実行する方法において、
前記構造化データ項目の前記1つ又は複数のフィールドの前記1つ又は複数の値を処理するために前記コンピュータプログラムにより実装されることになる複数のモジュールを指定する仕様書にアクセスするステップと、
前記仕様書を、前記複数のモジュールを実装する前記コンピュータプログラムに変換するステップであって、
前記複数のモジュールの1つ又は複数の第一のモジュールの各々について、
前記複数のモジュールの、各々が少なくとも部分的に前記第一のモジュールの出力に基づく入力を受信する1つ又は複数の第二のモジュールを特定することと、
前記第一のモジュールの出力データフォーマットを、前記第一のモジュールが、各々、(i)前記第一のモジュールにとってアクセス可能であり、(ii)少なくとも部分的に前記第一のモジュールの前記出力に基づく前記1つ又は複数の第二のモジュールの少なくとも1つへの入力として指定される、前記構造化データ項目の1つ又は複数のフィールドの1つ又は複数の値だけを出力するように設定することと
を含むステップと、
永続的メモリの中に前記コンピュータプログラムを保存するステップであって、前記保存されたコンピュータプログラムは、前記1つ又は複数の第一のモジュールの各々のための前記設定された出力データフォーマットを指定するステップと
を含む、方法。
【請求項2】
前記コンピュータプログラムの1つ又は複数の部分の内容は、前記仕様書とは異なり、ユーザの入力を必要とせずに自動的に生成される、請求項1の方法。
【請求項3】
前記コンピュータプログラムは永続的且つ編集可能である、請求項1の方法。
【請求項4】
前記コンピュータプログラムはデータフローグラフであり、前記モジュールの各々は、前記データフローグラフのノードにより表されるデータフローグラフのコンポーネントであり、前記データフローグラフコンポーネントは、ノード間のリンクにより表されるデータフローにより結合される、請求項1の方法。
【請求項5】
データ記憶システムの中で、前記仕様書の一部を表すデータを前記データフローグラフコンポーネントにマッピングするデータ構造にアクセスするステップと、
前記データ構造の中で、前記仕様書の特定の部分を表すデータの項目を特定するステップと、
前記データ構造の中で、どのデータフローグラフコンポーネントが前記仕様書の前記特定部分にマッピングされるかを特定するステップと、
前記特定されたデータフローグラフコンポーネントを、前記仕様書により指定される動作の実行順序にしたがって前記データフローグラフに追加するステップと
をさらに含む、請求項4の方法。
【請求項6】
前記データフローグラフコンポーネント間の依存性を特定するステップと、少なくとも部分的にこれらの特定された依存性に基づいて、前記データフローグラフコンポーネントの出力データフォーマットを指定するステップとをさらに含む、請求項5の方法。
【請求項7】
特定の第一のモジュールについて、
1つ又は複数の第二のモジュールのうちの1つのみが前記特定の第一のモジュールにとってアクセス可能な1つ又は複数のフィールドの特定の1つにアクセスすることを特定するステップと、
前記1つ又は複数の第二のモジュールの前記1つのみが、前記複数のモジュールの、前記特定の第一のモジュール及び前記1つ又は複数の第二のモジュールの各々とは異なる第三のモジュールからの前記1つ又は複数のフィールドの前記特定の1つにアクセスすることを特定するステップと、
前記出力データフォーマットを、前記1つ又は複数の第二のモジュールの前記1つのみによりアクセスされる前記1つ又は複数のフィールドの前記特定の1つのための1つ又は複数の値を出力しないように設定するステップと
をさらに含む、請求項1の方法。
【請求項8】
ユーザインタフェースの表示のためにデータを提供するステップと、
前記ユーザインタフェースを介して、複数のモジュールの中からの、前記コンピュータプログラムに含めるための1つ又は複数のモジュールの選択を表すデータを受信するステップと、
前記ユーザインタフェースを介して、選択された各モジュールについて、その選択された1つ又は複数のモジュールによって実装される動作のパラメータの値を受信するステップと
をさらに含む、請求項1の方法。
【請求項9】
前記ユーザインタフェースを介して受信した前記値が、前記動作に関連付けられる所定の基準に適合するか否かを特定するステップと、
前記受信した値が前記所定の基準に適合するか否かを示す通知を前記ユーザインタフェースを介して出力するステップと、をさらに含み、前記受信した値が前記所定の基準に適合しないと特定された場合、前記通知は前記受信した値を前記所定の基準に適合するためにどのように変更しなければならないかの案内情報を含む、
請求項8の方法。
【請求項10】
選択されたモジュールを前記パラメータの前記値で構成するステップと、
その後、他のコンピュータプログラムに含められ、それによって実装される前記構成済みモジュールを記憶するステップと
をさらに含む、請求項8の方法。
【請求項11】
前記コンピュータプログラムを実行する前に、前記複数のモジュールの各特定のモジュールについて、第一、第二、及び第三のパスを実行して、前記特定のモジュールのための、前記特定のモジュールの下流のモジュールによりどのフィールドが必要とされるかを指定する前記設定された出力データフォーマットを特定して、保存し、前記特定のモジュールのための、前記特定のモジュールにとってどのフィールドがアクセス可能かを指定する入力データフォーマットを特定して、保存するステップをさらに含み、前記実行するステップは、
前記第一のパス中に、前記特定のモジュールは、前記特定のモジュールの上流のモジュールに対し、それ自体により、及び前記特定のモジュールの下流の何れかのモジュールにより必要とされる1つ又は複数のフィールドを表すデータを含む1つ又は複数のメッセージをブロードキャストすることを含み、前記ブロードキャストを行う前記特定のモジュールはブロードキャストモジュールであり、前記ブロードキャストを受信する前記上流のモジュールは受信モジュールであり、
前記第二のパス中に、前記受信モジュールは前記ブロードキャストモジュールに対し、どの受信モジュールが前記必要なフィールドの値を提供できるかを指定する1つ又は複数のメッセージを送信し、
前記第三のパス中に、前記ブロードキャストモジュールは、前記受信モジュールから受信した前記メッセージを分析し、応答として、前記ブロードキャストモジュールは前記受信モジュールに対し、どの受信モジュールが前記ブロードキャストモジュールへのどのフィールドの送信を担当するかを指定する1つ又は複数のメッセージを返信する、
請求項1の方法。
【請求項12】
データストリームの中で、1つ又は複数のデータレコードを含む前記構造化データ項目を受信するステップと、
前記1つ又は複数のデータレコードの少なくとも1つについて、
前記コンピュータプログラムを実行して、前記1つ又は複数のデータレコードの前記少なくとも1つを処理するステップと、
前記1つ又は複数の第一のモジュールの少なくとも1つの保存された出力データフォーマットに基づき、前記1つ又は複数のレコードの前記少なくとも1つを前記1つ又は複数の第二のモジュールの1つにサブミットする前に、前記レコードの前記少なくとも1つから、少なくとも部分的に前記第一のモジュールの前記出力に基づいて、前記1つ又は複数の第二のモジュールの少なくとも1つへの入力として指定されない1つ又は複数のフィールドを除去するステップと、
をさらに含む、請求項1の方法。
【請求項13】
前記仕様書の中で、1つ又は複数の新規モジュールを定義するステップと、
前記1つ又は複数の新規モジュールの少なくとも1つを、他の仕様書に含めるために利用できるエンティティを指定するグローバルパレットに保存するステップと
をさらに含む、請求項1の方法。
【請求項14】
前記仕様書の中で、1つ又は複数の新規モジュールを定義するステップと、
前記1つ又は複数の新規モジュールの少なくとも1つを、前記仕様書に含めるためにのみ利用でき、他の仕様書には含められないエンティティを指定するローカルパレットに保存するステップと
をさらに含む、請求項1の方法。
【請求項15】
仕様書の定義のために、グローバルパレットに含められた、定義済みモジュールにアクセスするステップと、
前記定義済みモジュールの1つ又は複数の属性を変更するステップと、
前記変更された定義済みモジュールを、前記仕様書に含めるためにのみ利用でき、他の仕様書には含められないエンティティを指定するローカルパレットに記憶すること、又は、
前記変更された定義済みモジュールを前記グローバルパレットに保存して、前記変更された定義済みモジュールが他の仕様書にとってもアクセス可能となるようにすること
を含む動作を実行するステップと
をさらに含む、請求項1の方法。
【請求項16】
前記仕様書の中で、1つ又は複数の新規の第一のモジュールを定義するステップと、
前記仕様書の中で、1つ又は複数の新規の第二のモジュールを定義するステップと、
前記1つ又は複数の新規の第一のモジュールの少なくとも1つを、前記1つ又は複数の新規の第二のモジュールの少なくとも1つのためのデータソースとなるように構成するステップと
をさらに含む、請求項1の方法。
【請求項17】
モジュールは1つ又は複数の他のモジュールを含む、請求項1の方法。
【請求項18】
選択されたモジュールをパラメータの値で構成するステップと、
前記構成されたモジュールを、後で他のプログラムに含めるために記憶するステップと
をさらに含む、請求項1の方法。
【請求項19】
前記1つ又は複数の第二のモジュールの1つのみが、前記第一のモジュールにとってアクセス可能な前記1つ又は複数のフィールドの特定の1つにアクセスすることを特定するステップと、
前記1つ又は複数の第二のモジュールの前記1つのみが、前記第一のモジュールとは異なる第三のモジュールからの前記1つ又は複数のフィールドの前記特定の1つにアクセスすることを特定するステップと、
前記出力データフォーマットを、前記1つ又は複数の第二のモジュールの前記1つのみによりアクセスされる前記1つ又は複数のフィールドの前記特定の1つのための1つ又は複数の値を出力しないように設定するステップと
をさらに含む、請求項1の方法。
【請求項20】
構造化データ項目はデータレコードを含む、請求項1の方法。
【請求項21】
仕様書を、構造化データ項目の1つ又は複数のフィールドの1つ又は複数の値を処理するコンピュータプログラムに変換する中でコンピュータシステムが実行する方法において、
複数のモジュールを指定する仕様書を、前記構造化データ項目の前記1つ又は複数のフィールドの1つ又は複数の値を処理するために前記モジュールを実装するためのコンピュータプログラムに変換するステップであって、
前記複数のモジュールの1つ又は複数の第一のモジュールの各々について、
前記複数のモジュールの、各々が少なくとも部分的に前記第一のモジュールの出力に基づく入力を受信する1つ又は複数の第二のモジュールを特定することと、
前記フィールドの、そのための1つ又は複数の値が前記1つ又は複数の第二のモジュールによって処理される1つ又は複数を、
前記1つ又は複数の第二のモジュールの各々について、前記第二のモジュールが1つ又は複数のフィールドの1つ又は複数の値を処理するように構成されているときに、前記フィールドの、そのための1つ又は複数の値がその第二のモジュールによって処理される1つ又は複数を特定することによって、
特定することと、
そのための前記1つ又は複数の値が前記1つ又は複数の第二のモジュールにより処理される前記1つ又は複数のフィールドの中から、前記フィールドの、そのための1つ又は複数の値が前記第一のモジュールにとってアクセス可能な1つ又は複数を特定することと、
そのための前記1つ又は複数の値が前記第一のモジュールにとってアクセス可能な前記1つ又は複数のフィールドの各々について、
前記フィールドの値が、少なくとも部分的に前記第一のモジュールの前記出力に基づいて前記1つ又は複数の第二のモジュールの少なくとも1つへの入力として指定されるか否かを特定することと、
前記第一のモジュールの出力データフォーマットを、前記第一のモジュールが、各々が少なくとも部分的に前記第一のモジュールの前記出力に基づいて前記1つ又は複数の第二のモジュールの少なくとも1つへの入力として指定される1つ又は複数のフィールドの1つ又は複数の値のみを出力するように設定することによって特定することと、
を含む、ステップと、
永続的メモリの中に、前記コンピュータプログラムを保存するステップであって、前記コンピュータプログラムは、前記1つ又は複数の第一のモジュールの各々についての出力データフォーマットを指定するステップと
を含む、方法。
【請求項22】
仕様書を、構造化データ項目の1つ又は複数のフィールドの1つ又は複数の値を処理するコンピュータプログラムに変換するためのコンピュータシステムにおいて、
1つ又は複数の処理装置と、
前記1つ又は複数の処理装置により実行可能であり、
前記構造化データ項目の中の前記1つ又は複数のフィールドの前記1つ又は複数の値を処理するために前記コンピュータプログラムにより実装されることになる複数のモジュールを指定する仕様書にアクセスすることと、
前記仕様書を、前記複数のモジュールを実装する前記コンピュータプログラムに変換することであって、
前記複数のモジュールの1つ又は複数の第一のモジュールの各々について、
前記複数のモジュールの、各々が少なくとも部分的に前記第一のモジュールの出力に基づく入力を受け取る1つ又は複数の第二のモジュールを特定することと、
前記第一のモジュールの出力データフォーマットを、前記第一のモジュールが、前記構造化データ項目の、各々が(i)前記第一のモジュールにとってアクセス可能であり、(ii)少なくとも部分的に前記第一のモジュールの前記出力に基づいて前記1つ又は複数の第二のモジュールの少なくとも1つへの入力として指定される1つ又は複数のフィールドの1つ又は複数の値のみを出力するように設定することと、
を含む、変換することと、
永続的メモリに、前記コンピュータプログラムを保存することであって、前記保存されたコンピュータプログラムは、前記1つ又は複数の第一のモジュールの各々について前記設定された出力データフォーマットを指定する、保存することと
を含む動作を実行する命令を記憶する1つ又は複数の機械可読ハードウェア記憶装置と
を含む、コンピュータシステム。
【請求項23】
仕様書を、構造化データ項目の1つ又は複数のフィールドの1つ又は複数の値を処理するコンピュータプログラムに変換するための1つ又は複数の機械可読ハードウェア記憶装置において、1つ又は複数の処理装置により実行可能な、
前記構造化データ項目の中の前記1つ又は複数のフィールドの前記1つ又は複数の値を処理するために前記コンピュータプログラムにより実装されることになる複数のモジュールを指定する仕様書にアクセスすることと、
前記仕様書を、前記複数のモジュールを実装する前記コンピュータプログラムに変換することであって、
前記複数のモジュールの1つ又は複数の第一のモジュールの各々について、
前記複数のモジュールの、各々が少なくとも部分的に前記第一のモジュールの出力に基づく入力を受け取る1つ又は複数の第二のモジュールを特定することと、
前記第一のモジュールの出力データフォーマットを、前記第一のモジュールが、前記構造化データ項目の、各々が(i)前記第一のモジュールにとってアクセス可能であり、(ii)少なくとも部分的に前記第一のモジュールの前記出力に基づいて前記1つ又は複数の第二のモジュールの少なくとも1つへの入力として指定される1つ又は複数のフィールドの1つ又は複数の値のみを出力するように設定することと、
を含む、変換することと、
永続的メモリに、前記コンピュータプログラムを保存することであって、前記保存されたコンピュータプログラムは、前記1つ又は複数の第一のモジュールの各々について前記設定された出力データフォーマットを指定する、保存することと
を含む動作を実行する命令を記憶する、1つ又は複数の機械可読ハードウェア記憶装置。
【発明の詳細な説明】
【技術分野】
【0001】
本願は、仕様書を、構造化データ項目内の1つ又は複数のフィールドの1つ又は複数の値を処理するコンピュータプログラムに変換するための、コンピュータシステムにより実行される方法、コンピュータシステム、及びコンピュータ可読媒体に関する。
【背景技術】
【0002】
複雑なデータ処理システムは典型的に、データを複数の段階で処理し、1つの段階で生成された結果が次の段階に供給される。このようなシステムを通じた全体的な情報の流れは、有向データフローグラフで説明され得、グラフ内のノード又は頂点はコンポーネント(データファイル又はプロセス)を表し、グラフ内のリンク又は「エッジ」はコンポーネント間のデータフローを示す。このようなグラフを用いた計算を実行するシステムは、“EXECUTING COMPUTATIONS EXPRESSED AS GRAPHS”と題する先行技術の(特許文献1)に記載されており、これは参照によって本願に援用される。
【0003】
グラフはまた、計算を直接呼び出すためにも使用できる。このシステムにより作成されたグラフは、情報をグラフのコンポーネントにより表される個別のプロセスの中に投入し、及びそこから引き出すため、情報をプロセス間で移動させるため、及びそのプロセスのための実行順序を規定するための方法を提供する。これらのグラフを呼び出すシステムは、プロセス間通信方法を選択するアルゴリズム及びプロセス実行のスケジュールを立てるアルゴリズムを含み、また、グラフの実行のモニタも提供する。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】米国特許第5,966,072号明細書
【発明の概要】
【課題を解決するための手段】
【0005】
一般的態様1において、仕様書を、構造化データ項目の1つ又は複数のフィールドの1つ又は複数の値を処理するコンピュータプログラムに変換する中でコンピュータシステムが実行する方法が説明され、これは、構造化データ項目の1つ又は複数のフィールドの1つ又は複数の値を処理するためにコンピュータプログラムにより実装されることになる複数のモジュールを指定する仕様書にアクセスするステップと、仕様書を、複数のモジュールを実装するコンピュータプログラムに変換するステップであって、複数のモジュールの1つ又は複数の第一のモジュールの各々について、複数のモジュールの、各々が少なくとも部分的に第一のモジュールの出力に基づく入力を受信する1つ又は複数の第二のモジュールを特定することと、第一のモジュールの出力データフォーマットを、第一のモジュールが、各々、(i)第一のモジュールにとってアクセス可能であり、(ii)少なくとも部分的に第一のモジュールの出力に基づく1つ又は複数の第二のモジュールの少なくとも1つへの入力として指定される、構造化データ項目の1つ又は複数のフィールドの1つ又は複数の値だけを出力するように設定することと、を含むステップと、永続的メモリの中にコンピュータプログラムを保存するステップであって、保存されたコンピュータプログラムは、1つ又は複数の第一のモジュールの各々のための設定された出力データフォーマットを指定するステップと、を含む。1つ又は複数のコンピュータのシステムは、動作時にシステムにアクションを実行させるソフトウェア、ファームウェア、ハードウェア、又はそれらの組合せがシステム上にインストールされることにより、特定の動作又はアクションを行うように構成できる。1つ又は複数のコンピュータプログラムは、データ処理装置により実行されると、装置にアクションを実行させる命令を含むことにより、特定の動作又はアクションを実行するように構成できる。
【0006】
態様1による態様2において、コンピュータプログラムの1つ又は複数の部分の内容は、仕様書とは異なり、ユーザの入力を必要とせずに自動的に生成される。
【0007】
態様1~2の何れか1つによる態様3において、コンピュータプログラムは永続的且つ編集可能である。
【0008】
態様1~3の何れか1つによる態様4において、コンピュータプログラムはデータフローグラフであり、モジュールの各々は、データフローグラフのノードにより表されるデータフローグラフのコンポーネントであり、データフローグラフコンポーネントは、ノード間のリンクにより表されるデータフローにより結合される。
【0009】
態様1~4の何れか1つによる態様5において、方法は、データ記憶システムの中で、仕様書の一部を表すデータをデータフローグラフコンポーネントにマッピングするデータ構造にアクセスするステップと、データ構造の中で、仕様書の特定の部分を表すデータの項目を特定するステップと、データ構造の中で、どのデータフローグラフコンポーネントが仕様書のその特定の部分にマッピングされるかを特定するステップと、特定されたデータフローグラフコンポーネントを、仕様書により指定される動作の実行順序にしたがってデータフローグラフに追加するステップと、をさらに含む。
【0010】
態様1~5の何れか1つによる態様6において、方法は、データフローグラフコンポーネント間の依存性を特定するステップと、少なくとも部分的にこれらの特定された依存性に基づいて、データフローグラフコンポーネントの出力データフォーマットを指定するステップと、をさらに含む。
【0011】
態様1~6の何れか1つによる態様7において、方法は、特定の第一のモジュールについて、1つ又は複数の第二のモジュールのうちの1つのみが特定の第一のモジュールにとってアクセス可能な1つ又は複数のフィールドの特定の1つにアクセスすることを特定するステップと、1つ又は複数の第二のモジュールのその1つのみが、複数のモジュールの、特定の第一のモジュール及び1つ又は複数の第二のモジュールの各々とは異なる第三のモジュールからの1つ又は複数のフィールドの特定の1つにアクセスすることを特定するステップと、出力データフォーマットを、1つ又は複数の第二のモジュールのその1つのみによりアクセスされる1つ又は複数のフィールドの特定の1つのための1つ又は複数の値を出力しないように設定するステップと、をさらに含む。
【0012】
態様1~7の何れか1つによる態様8において、方法は、ユーザインタフェースの表示のためにデータを提供するステップと、ユーザインタフェースを介して、複数のモジュールの中からの、コンピュータプログラムに含めるための1つ又は複数のモジュールの選択を表すデータを受信するステップと、ユーザインタフェースを介して、選択された各モジュールについて、その選択された1つ又は複数のモジュールによって実装される動作のパラメータの値を受信するステップと、をさらに含む。
【0013】
態様1~8の何れか1つによる態様9において、方法は、ユーザインタフェースを介して受信した値が、動作に関連付けられる所定の基準に適合するか否かを特定するステップと、受信した値が所定の基準に適合するか否かを示す通知をユーザインタフェースを介して出力するステップと、をさらに含み、受信した値が所定の基準に適合しないと特定された場合、通知は受信した値を所定の基準に適合するためにどのように変更しなければならないかの案内情報を含む。
【0014】
態様1~9の何れか1つによる態様10において、方法は、選択されたモジュールをパラメータの値で構成するステップと、その後、他のコンピュータプログラムに含められ、それによって実装される構成済みモジュールを記憶するステップと、をさらに含む。
【0015】
態様1~10の何れか1つによる態様11において、方法は、コンピュータプログラムを実行する前に、複数のモジュールの各特定のモジュールについて、第一、第二、及び第三のパスを実行して、その特定のモジュールのための、その特定のモジュールの下流のモジュールによりどのフィールドが必要とされるかを指定する設定された出力データフォーマットを特定して、保存し、その特定のモジュールのための、その特定のモジュールにとってどのフィールドがアクセス可能かを指定する入力データフォーマットを特定して、保存するステップをさらに含み、実行するステップは、第一のパス中に、その特定のモジュールは、その特定のモジュールの上流のモジュールに対し、それ自体により、及びその特定のモジュールの下流の何れかのモジュールにより必要とされる1つ又は複数のフィールドを表すデータを含む1つ又は複数のメッセージをブロードキャストすることを含み、ブロードキャストを行う特定のモジュールはブロードキャストモジュールであり、ブロードキャストを受信する上流のモジュールは受信モジュールであり、第二のパス中に、受信モジュールはブロードキャストモジュールに対し、どの受信モジュールが必要なフィールドの値を提供できるかを指定する1つ又は複数のメッセージを送信し、第三のパス中に、ブロードキャストモジュールは、受信モジュールから受信したメッセージを分析し、応答として、ブロードキャストモジュールは受信モジュールに対し、どの受信モジュールがブロードキャストモジュールへのどのフィールドの送信を担当するかを指定する1つ又は複数のメッセージを返信する。
【0016】
態様1~11の何れか1つによる態様12において、方法は、データストリームの中で、1つ又は複数のデータレコードを含む構造化データ項目を受信するステップと、1つ又は複数のデータレコードの少なくとも1つについて、コンピュータプログラムを実行して、1つ又は複数のデータレコードのうちの少なくとも1つを処理するステップと、1つ又は複数の第一のモジュールの少なくとも1つの保存された出力データフォーマットに基づき、1つ又は複数のレコードの少なくとも1つを1つ又は複数の第二のモジュールの1つにサブミットする前に、レコードの少なくとも1つから、少なくとも部分的に第一のモジュールの出力に基づいて、1つ又は複数の第二のモジュールの少なくとも1つへの入力として指定されない1つ又は複数のフィールドを除去するステップと、をさらに含む。
【0017】
態様1~12の何れか1つによる態様13において、方法は、仕様書の中で、1つ又は複数の新規モジュールを定義するステップと、1つ又は複数の新規モジュールの少なくとも1つを、他の仕様書に含めるために利用できるエンティティを指定するグローバルパレットに保存するステップと、をさらに含む。
【0018】
態様1~13の何れか1つによる態様14において、方法は、仕様書の中で、1つ又は複数の新規モジュールを定義するステップと、1つ又は複数の新規モジュールの少なくとも1つを、その仕様書に含めるためにのみ利用でき、他の仕様書には含められないエンティティを指定するローカルパレットに保存するステップと、をさらに含む。
【0019】
態様1~14の何れか1つによる態様15において、方法は、仕様書の定義のために、グローバルパレットに含められた、定義済みモジュールにアクセスするステップと、定義済みモジュールの1つ又は複数の属性を変更するステップと、変更された定義済みモジュールを、その仕様書に含めるためにのみ利用でき、他の仕様書には含められないエンティティを指定するローカルパレットに記憶すること、又は変更された定義済みモジュールをグローバルパレットに保存して、変更された定義済みモジュールが他の仕様書にとってもアクセス可能となるようにすることを含む動作を実行するステップと、をさらに含む。
【0020】
態様1~15の何れか1つによる態様16において、方法は、仕様書の中で、1つ又は複数の新規第一のモジュールを定義するステップと、仕様書の中で、1つ又は複数の新規第二のモジュールを定義するステップと、1つ又は複数の新規第一のモジュールの少なくとも1つを、1つ又は複数の新規第二のモジュールの少なくとも1つのためのデータソースとなるように構成するステップと、をさらに含む。
【0021】
態様1~16の何れか1つによる態様17において、モジュールは1つ又は複数の他のモジュールを含む。
【0022】
態様1~17の何れか1つによる態様18において、方法は、選択されたモジュールをパラメータの値で構成するステップと、構成されたモジュールを、後で他のプログラムに含めるために記憶するステップと、をさらに含む。
【0023】
態様1~18の何れか1つによる態様19において、方法は、1つ又は複数の第二のモジュールの1つのみが、第一のモジュールにとってアクセス可能な1つ又は複数のフィールドの特定の1つにアクセスすることを特定するステップと、1つ又は複数の第二のモジュールのその1つのみが、第一のモジュールとは異なる第三のモジュールからの1つ又は複数のフィールドの特定の1つにアクセスすることを特定するステップと、出力データフォーマットを、1つ又は複数の第二のモジュールのその1つのみによりアクセスされる1つ又は複数のフィールドの特定の1つのための1つ又は複数の値を出力しないように設定するステップと、をさらに含む。
【0024】
態様1~19の何れか1つによる態様20において、構造化データ項目はデータレコードを含む。
【0025】
一般的態様21において、方法は、仕様書を、構造化データ項目の1つ又は複数のフィールドの1つ又は複数の値を処理するコンピュータプログラムに変換する中でコンピュータシステムが実行する方法は、複数のモジュールを指定する仕様書を、構造化データ項目の前記1つ又は複数のフィールドの1つ又は複数の値を処理するためにモジュールを実装するためのコンピュータプログラムに変換するステップであって、複数のモジュールの1つ又は複数の第一のモジュールの各々について、複数のモジュールの、各々が少なくとも部分的に第一のモジュールの出力に基づく入力を受信する1つ又は複数の第二のモジュールを特定することと、フィールドの、そのための1つ又は複数の値が1つ又は複数の第二のモジュールによって処理される1つ又は複数を、1つ又は複数の第二のモジュールの各々について、第二のモジュールが1つ又は複数のフィールドの1つ又は複数の値を処理するように構成されているときに、フィールドの、そのための1つ又は複数の値がその第二のモジュールによって処理される1つ又は複数を特定することによって特定することと、そのための1つ又は複数の値が1つ又は複数の第二のモジュールにより処理される1つ又は複数のフィールドの中から、フィールドの、そのための1つ又は複数の値が第一のモジュールにとってアクセス可能な1つ又は複数を特定することと、そのための1つ又は複数の値が第一のモジュールにとってアクセス可能な1つ又は複数のフィールドの各々について、フィールドの値が、少なくとも部分的に第一のモジュールの出力に基づいて1つ又は複数の第二のモジュールの少なくとも1つへの入力として指定されるか否かを特定することと、第一のモジュールの出力データフォーマットを、第一のモジュールが、各々が少なくとも部分的に第一のモジュールの出力に基づいて1つ又は複数の第二のモジュールの少なくとも1つへの入力として指定される1つ又は複数のフィールドの1つ又は複数の値のみを出力するように設定することによって特定することと、を含む、変換するステップと、永続的メモリの中に、コンピュータプログラムを保存するステップであって、コンピュータプログラムは、1つ又は複数の第一のモジュールの各々についての出力データフォーマットを指定するステップと、を含む。この態様のその他の実施形態は、それに対応するコンピュータシステム、装置、及び、1つ又は複数のコンピュータ記憶装置上に記録されたコンピュータプログラムを含み、各々が方法の動作を実行するように構成される。1つ又は複数のコンピュータのシステムは、動作中に、システムにアクションを実行させるソフトウェア、ファームウェア、ハードウェア、又はそれらの組合せがシステムに組み込まれていることよって、特定の動作又はアクションを実行するように構成できる。1つ又は複数のコンピュータプログラムは、データ処理装置により実行されたときに、装置にアクションを実行させる命令を含むことによって、特定の動作又はアクションを実行するように構成できる。
【0026】
一般的態様22において、仕様書を、構造化データ項目の1つ又は複数のフィールドの1つ又は複数の値を処理するコンピュータプログラムに変換するためのコンピュータシステムであって、コンピュータシステムは、1つ又は複数の処理装置と、1つ又は複数の処理装置により実行可能であり、構造化データ項目の中の1つ又は複数のフィールドの1つ又は複数の値を処理するためにコンピュータプログラムにより実装されることになる複数のモジュールを指定する仕様書にアクセスすることと、仕様書を、複数のモジュールを実装するコンピュータプログラムに変換することであって、複数のモジュールの1つ又は複数の第一のモジュールの各々について、複数のモジュールの、各々が少なくとも部分的に第一のモジュールの出力に基づく入力を受け取る1つ又は複数の第二のモジュールを特定することと、第一のモジュールの出力データフォーマットを、第一のモジュールが、構造化データ項目の、各々が(i)第一のモジュールにとってアクセス可能であり、(ii)少なくとも部分的に第一のモジュールの出力に基づいて1つ又は複数の第二のモジュールの少なくとも1つへの入力として指定される1つ又は複数のフィールドの1つ又は複数の値のみを出力するように設定することと、を含む、変換することと、永続的メモリに、コンピュータプログラムを保存することであって、保存されたコンピュータプログラムは、1つ又は複数の第一のモジュールの各々について設定された出力データフォーマットを指定する、保存することと、を含む動作を実行する命令を記憶する1つ又は複数の機械可読ハードウェア記憶装置と、を含む。
【0027】
態様22による態様23において、コンピュータプログラムの1つ又は複数の部分の内容は、仕様書とは異なり、ユーザの入力を必要とせずに自動的に生成される。
【0028】
態様22~23の何れか1つによる態様24において、コンピュータプログラムは永続的且つ編集可能である。
【0029】
態様22~24の何れか1つによる態様25において、コンピュータプログラムはテータフローグラフであり、モジュールの各々は、データフローグラフのノードにより表されるデータフローグラフのコンポーネントであり、データフローグラフコンポーネントは、ノード間のリンクにより表されるデータフローにより結合される。
【0030】
態様22~25の何れか1つによる態様26において、動作は、データ記憶システムの中で、仕様書の一部を表すデータをデータフローグラフコンポーネントにマッピングするデータ構造にアクセスすることと、データ構造の中で、仕様書の特定の部分を表すデータの項目を特定することと、データ構造の中で、どのデータフローグラフコンポーネントが仕様書のその特定の部分にマッピングされるかを特定することと、特定されたデータフローグラフコンポーネントを、仕様書により指定される動作の実行順序にしたがってデータフローグラフに追加することと、をさらに含む。
【0031】
態様22~26の何れか1つによる態様27において、動作は、データフローグラフコンポーネント間の依存性を特定することと、少なくとも部分的にこれらの特定された依存性に基づいて、データフローグラフコンポーネントの出力データフォーマットを指定することと、をさらに含む。
【0032】
態様22~27の何れか1つによる態様28において、動作は、特定の第一のモジュールについて、1つ又は複数の第二のモジュールのうちの1つのみが特定の第一のモジュールにとってアクセス可能な1つ又は複数のフィールドの特定の1つにアクセスすることを特定することと、1つ又は複数の第二のモジュールのその1つのみが、複数のモジュールの、特定の第一のモジュール及び1つ又は複数の第二のモジュールの各々とは異なる第三のモジュールからの1つ又は複数のフィールドの特定の1つにアクセスすることを特定することと、出力データフォーマットを、1つ又は複数の第二のモジュールのその1つのみによりアクセスされる1つ又は複数のフィールドの特定の1つのための1つ又は複数の値を出力しないように設定することと、をさらに含む。
【0033】
態様22~28の何れか1つによる態様29において、動作は、ユーザインタフェースの表示のためにデータを提供することと、ユーザインタフェースを介して、複数のモジュールの中からの、コンピュータプログラムに含めるための1つ又は複数のモジュールの選択を表すデータを受信することと、ユーザインタフェースを介して、選択された各モジュールについて、その選択された1つ又は複数のモジュールによって実装される動作のパラメータの値を受信することと、をさらに含む。
【0034】
態様22~29の何れか1つによる態様30において、動作は、ユーザインタフェースを介して受信した値が、動作に関連付けられる所定の基準に適合するか否かを特定することと、受信した値が所定の基準に適合するか否かを示す通知をユーザインタフェースを介して出力することと、をさらに含み、受信した値が所定の基準に適合しないと特定された場合、通知は受信した値を所定の基準に適合するためにどのように変更しなければならないかの案内情報を含む。
【0035】
態様22~30の何れか1つによる態様31において、動作は、選択されたモジュールをパラメータの値で構成することと、その後、他のコンピュータプログラムに含められ、それによって実装される構成済みモジュールを記憶することと、をさらに含む。
【0036】
態様22~31の何れか1つによる態様32において、動作は、コンピュータプログラムを実行する前に、複数のモジュールの各特定のモジュールについて、第一、第二、及び第三のパスを実行して、その特定のモジュールのための、その特定のモジュールの下流のモジュールによりどのフィールドが必要とされるかを指定する設定された出力データフォーマットを特定して、保存し、その特定のモジュールのための、その特定のモジュールにとってどのフィールドがアクセス可能かを指定する入力データフォーマットを特定して、保存することをさらに含み、実行することは、第一のパス中に、その特定のモジュールは、その特定のモジュールの上流のモジュールに対し、それ自体により、及びその特定のモジュールの下流の何れかのモジュールにより必要とされる1つ又は複数のフィールドを表すデータを含む1つ又は複数のメッセージをブロードキャストすることを含み、ブロードキャストを行う特定のモジュールはブロードキャストモジュールであり、ブロードキャストを受信する上流のモジュールは受信モジュールであり、第二のパス中に、受信モジュールはブロードキャストモジュールに対し、どの受信モジュールが必要なフィールドの値を提供できるかを指定する1つ又は複数のメッセージを送信し、第三のパス中に、ブロードキャストモジュールは、受信モジュールから受信したメッセージを分析し、応答として、ブロードキャストモジュールは受信モジュールに対し、どの受信モジュールがブロードキャストモジュールへのどのフィールドの送信を担当するかを指定する1つ又は複数のメッセージを返信する。
【0037】
態様22~32の何れか1つによる態様33において、動作は、データストリームの中で、1つ又は複数のデータレコードを含む構造化データ項目を受信することと、1つ又は複数のデータレコードの少なくとも1つについて、コンピュータプログラムを実行して、1つ又は複数のデータレコードのうちの少なくとも1つを処理するステップと、1つ又は複数の第一のモジュールの少なくとも1つの保存された出力データフォーマットに基づき、1つ又は複数のレコードの少なくとも1つを1つ又は複数の第二のモジュールの1つにサブミットする前に、レコードの少なくとも1つから、少なくとも部分的に第一のモジュールの出力に基づいて、1つ又は複数の第二のモジュールの少なくとも1つへの入力として指定されない1つ又は複数のフィールドを除去することと、をさらに含む。
【0038】
態様22~33の何れか1つによる態様34において、動作は、仕様書の中で、1つ又は複数の新規モジュールを定義することと、1つ又は複数の新規モジュールの少なくとも1つを、他の仕様書に含めるために利用できるエンティティを指定するグローバルパレットに保存することと、をさらに含む。
【0039】
態様22~34の何れか1つによる態様35において、動作は、仕様書の中で、1つ又は複数の新規モジュールを定義することと、1つ又は複数の新規モジュールの少なくとも1つを、その仕様書に含めるためにのみ利用でき、他の仕様書には含められないエンティティを指定するローカルパレットに保存することと、をさらに含む。
【0040】
態様22~35の何れか1つによる態様36において、動作は、仕様書の定義のために、グローバルパレットに含められた、定義済みモジュールにアクセスすることと、定義済みモジュールの1つ又は複数の属性を変更することと、変更された定義済みモジュールを、その仕様書に含めるためにのみ利用でき、他の仕様書には含められないエンティティを指定するローカルパレットに記憶すること、又は変更された定義済みモジュールをグローバルパレットに保存して、変更された定義済みモジュールが他の仕様書にとってもアクセス可能となるようにすることを含む動作を実行することと、をさらに含む。
【0041】
態様22~36の何れか1つによる態様37において、動作は、仕様書の中で、1つ又は複数の新規第一のモジュールを定義することと、仕様書の中で、1つ又は複数の新規第二のモジュールを定義することと、1つ又は複数の新規第一のモジュールの少なくとも1つを、1つ又は複数の新規第二のモジュールの少なくとも1つのためのデータソースとなるように構成することと、をさらに含む。
【0042】
態様22~37の何れか1つによる態様38において、モジュールは1つ又は複数の他のモジュールを含む。
【0043】
態様22~38の何れか1つによる態様39において、動作は、選択されたモジュールをパラメータの値で構成することと、構成されたモジュールを、後で他のプログラムに含めるために記憶することと、をさらに含む。
【0044】
態様22~39の何れか1つによる態様40において、動作は、1つ又は複数の第二のモジュールの1つのみが、第一のモジュールにとってアクセス可能な1つ又は複数のフィールドの特定の1つにアクセスすることを特定することと、1つ又は複数の第二のモジュールのその1つのみが、第一のモジュールとは異なる第三のモジュールからの1つ又は複数のフィールドの特定の1つにアクセスすることを特定することと、出力データフォーマットを、1つ又は複数の第二のモジュールのその1つのみによりアクセスされる1つ又は複数のフィールドの特定の1つのための1つ又は複数の値を出力しないように設定することと、をさらに含む。
【0045】
態様22~40の何れか1つによる態様41において、構造化データ項目はデータレコードを含む。
【0046】
一般的態様42において、仕様書を、構造化データ項目の1つ又は複数のフィールドの1つ又は複数の値を処理するコンピュータプログラムに変換するための1つ又は複数の機械可読ハードウェア記憶装置において、1つ又は複数の機械可読ハードウェア記憶装置は、1つ又は複数の処理装置により実行可能であり、構造化データ項目の中の1つ又は複数のフィールドの1つ又は複数の値を処理するためにコンピュータプログラムにより実装されることになる複数のモジュールを指定する仕様書にアクセスすることと、仕様書を、複数のモジュールを実装する前記コンピュータプログラムに変換することであって、複数のモジュールの1つ又は複数の第一のモジュールの各々について、複数のモジュールの、各々が少なくとも部分的に第一のモジュールの出力に基づく入力を受け取る1つ又は複数の第二のモジュールを特定することと、第一のモジュールの出力データフォーマットを、第一のモジュールが、構造化データ項目の、各々が(i)第一のモジュールにとってアクセス可能であり、(ii)少なくとも部分的に第一のモジュールの出力に基づいて1つ又は複数の第二のモジュールの少なくとも1つへの入力として指定される1つ又は複数のフィールドの1つ又は複数の値のみを出力するように設定することと、を含む、変換することと、永続的メモリに、コンピュータプログラムを保存することであって、保存されたコンピュータプログラムは、1つ又は複数の第一のモジュールの各々について設定された出力データフォーマットを指定する、保存することと、を含む動作を実行する命令を記憶する。
【0047】
態様42による態様43において、コンピュータプログラムの1つ又は複数の部分の内容は、仕様書とは異なり、ユーザの入力を必要とせずに自動的に生成される。
【0048】
態様42~43の何れか1つによる態様44において、コンピュータプログラムは永続的且つ編集可能である。
【0049】
態様42~44の何れか1つによる態様45において、コンピュータプログラムはテータフローグラフであり、モジュールの各々は、データフローグラフのノードにより表されるデータフローグラフのコンポーネントであり、データフローグラフコンポーネントは、ノード間のリンクにより表されるデータフローにより結合される。
【0050】
態様42~45の何れか1つによる態様46において、動作は、データ記憶システムの中で、仕様書の一部を表すデータをデータフローグラフコンポーネントにマッピングするデータ構造にアクセスすることと、データ構造の中で、仕様書の特定の部分を表すデータの項目を特定することと、データ構造の中で、どのデータフローグラフコンポーネントが仕様書のその特定の部分にマッピングされるかを特定することと、特定されたデータフローグラフコンポーネントを、仕様書により指定される動作の実行順序にしたがってデータフローグラフに追加することと、をさらに含む。
【0051】
態様42~46の何れか1つによる態様47において、動作は、データフローグラフコンポーネント間の依存性を特定することと、少なくとも部分的にこれらの特定された依存性に基づいて、データフローグラフコンポーネントの出力データフォーマットを指定することと、をさらに含む。
【0052】
態様42~47の何れか1つによる態様48において、動作は、特定の第一のモジュールについて、1つ又は複数の第二のモジュールのうちの1つのみが特定の第一のモジュールにとってアクセス可能な1つ又は複数のフィールドの特定の1つにアクセスすることを特定することと、1つ又は複数の第二のモジュールのその1つのみが、複数のモジュールの、特定の第一のモジュール及び1つ又は複数の第二のモジュールの各々とは異なる第三のモジュールからの1つ又は複数のフィールドの特定の1つにアクセスすることを特定することと、出力データフォーマットを、1つ又は複数の第二のモジュールのその1つのみによりアクセスされる1つ又は複数のフィールドの特定の1つのための1つ又は複数の値を出力しないように設定することと、をさらに含む。
【0053】
態様42~48の何れか1つによる態様49において、動作は、ユーザインタフェースの表示のためにデータを提供することと、ユーザインタフェースを介して、複数のモジュールの中からの、コンピュータプログラムに含めるための1つ又は複数のモジュールの選択を表すデータを受信することと、ユーザインタフェースを介して、選択された各モジュールについて、その選択された1つ又は複数のモジュールによって実装される動作のパラメータの値を受信することと、をさらに含む。
【0054】
態様42~49の何れか1つによる態様50において、動作は、ユーザインタフェースを介して受信した値が、動作に関連付けられる所定の基準に適合するか否かを特定することと、受信した値が所定の基準に適合するか否かを示す通知をユーザインタフェースを介して出力することと、をさらに含み、受信した値が所定の基準に適合しないと特定された場合、通知は受信した値を所定の基準に適合するためにどのように変更しなければならないかの案内情報を含む。
【0055】
態様42~50の何れか1つによる態様51において、動作は、選択されたモジュールをパラメータの値で構成することと、その後、他のコンピュータプログラムに含められ、それによって実装される構成済みモジュールを記憶することと、をさらに含む。
【0056】
態様42~51の何れか1つによる態様52において、動作は、コンピュータプログラムを実行する前に、複数のモジュールの各特定のモジュールについて、第一、第二、及び第三のパスを実行して、その特定のモジュールのための、その特定のモジュールの下流のモジュールによりどのフィールドが必要とされるかを指定する設定された出力データフォーマットを特定して、保存し、その特定のモジュールのための、その特定のモジュールにとってどのフィールドがアクセス可能かを指定する入力データフォーマットを特定して、保存することをさらに含み、実行することは、第一のパス中に、その特定のモジュールは、その特定のモジュールの上流のモジュールに対し、それ自体により、及びその特定のモジュールの下流の何れかのモジュールにより必要とされる1つ又は複数のフィールドを表すデータを含む1つ又は複数のメッセージをブロードキャストすることを含み、ブロードキャストを行う特定のモジュールはブロードキャストモジュールであり、ブロードキャストを受信する上流のモジュールは受信モジュールであり、第二のパス中に、受信モジュールはブロードキャストモジュールに対し、どの受信モジュールが必要なフィールドの値を提供できるかを指定する1つ又は複数のメッセージを送信し、第三のパス中に、ブロードキャストモジュールは、受信モジュールから受信したメッセージを分析し、応答として、ブロードキャストモジュールは受信モジュールに対し、どの受信モジュールがブロードキャストモジュールへのどのフィールドの送信を担当するかを指定する1つ又は複数のメッセージを返信する。
【0057】
態様42~52の何れか1つによる態様53において、動作は、データストリームの中で、1つ又は複数のデータレコードを含む構造化データ項目を受信することと、1つ又は複数のデータレコードの少なくとも1つについて、コンピュータプログラムを実行して、1つ又は複数のデータレコードのうちの少なくとも1つを処理するステップと、1つ又は複数の第一のモジュールの少なくとも1つの保存された出力データフォーマットに基づき、1つ又は複数のレコードの少なくとも1つを1つ又は複数の第二のモジュールの1つにサブミットする前に、レコードの少なくとも1つから、少なくとも部分的に第一のモジュールの出力に基づいて、1つ又は複数の第二のモジュールの少なくとも1つへの入力として指定されない1つ又は複数のフィールドを除去することと、をさらに含む。
【0058】
態様42~53の何れか1つによる態様54において、動作は、仕様書の中で、1つ又は複数の新規モジュールを定義することと、1つ又は複数の新規モジュールの少なくとも1つを、他の仕様書に含めるために利用できるエンティティを指定するグローバルパレットに保存することと、をさらに含む。
【0059】
態様42~54の何れか1つによる態様55において、動作は、仕様書の中で、1つ又は複数の新規モジュールを定義することと、1つ又は複数の新規モジュールの少なくとも1つを、その仕様書に含めるためにのみ利用でき、他の仕様書には含められないエンティティを指定するローカルパレットに保存することと、をさらに含む。
【0060】
態様42~55の何れか1つによる態様56において、動作は、仕様書の定義のために、グローバルパレットに含められた、定義済みモジュールにアクセスすることと、定義済みモジュールの1つ又は複数の属性を変更することと、変更された定義済みモジュールを、その仕様書に含めるためにのみ利用でき、他の仕様書には含められないエンティティを指定するローカルパレットに記憶すること、又は変更された定義済みモジュールをグローバルパレットに保存して、変更された定義済みモジュールが他の仕様書にとってもアクセス可能となるようにすることを含む動作を実行することと、をさらに含む。
【0061】
態様42~56の何れか1つによる態様57において、動作は、仕様書の中で、1つ又は複数の新規第一のモジュールを定義することと、仕様書の中で、1つ又は複数の新規第二のモジュールを定義することと、1つ又は複数の新規第一のモジュールの少なくとも1つを、1つ又は複数の新規第二のモジュールの少なくとも1つのためのデータソースとなるように構成することと、をさらに含む。
【0062】
態様42~57の何れか1つによる態様58において、モジュールは1つ又は複数の他のモジュールを含む。
【0063】
態様42~58の何れか1つによる態様59において、動作は、選択されたモジュールをパラメータの値で構成することと、構成されたモジュールを、後で他のプログラムに含めるために記憶することと、をさらに含む。
【0064】
態様42~59の何れか1つによる態様60において、動作は、1つ又は複数の第二のモジュールの1つのみが、第一のモジュールにとってアクセス可能な1つ又は複数のフィールドの特定の1つにアクセスすることを特定することと、1つ又は複数の第二のモジュールのその1つのみが、第一のモジュールとは異なる第三のモジュールからの1つ又は複数のフィールドの特定の1つにアクセスすることを特定することと、出力データフォーマットを、1つ又は複数の第二のモジュールのその1つのみによりアクセスされる1つ又は複数のフィールドの特定の1つのための1つ又は複数の値を出力しないように設定することと、をさらに含む。
【0065】
態様42~60の何れか1つによる態様61において、構造化データ項目はデータレコードを含む。
【0066】
第一のモジュールの出力データフォーマットを、第一のモジュールが、各々が(i)第一のモジュールにとってアクセス可能であり、(ii)少なくとも部分的に第一のモジュールの出力に基づく、1つ又は複数の第二のモジュールの少なくとも1つの入力として指定される、構造化データ項目の1つ又は複数のフィールドの1つ又は複数の値のみを出力するように設定することには数多くの利点がある。これらの利点には、計算リソース(メモリやCPU等)の消費が減ることが含まれ、それは、コンピュータプログラム内の下流のデータ処理のデータ処理要求事項を満たすために必要なデータフィールドだけがコンピュータプログラムに送信され、より深く処理されるからである。さらに、データレコード処理のレイテンシの短縮も実現され、それは、データ処理システムがより小さいレコード(例えば、フィールドのドロッピングによる)を、データ処理システムがデータフローグラフを通じたデータレコードの全体を処理しなければならない場合のデータ処理速度に関して、より迅速に処理できるからである。他の利点には、メモリ及びリソース消費の減少が含まれ、これは、レコードがより小さいことにより(例えば、フィールドのドロップによる)、レコードの処理中に消費されるメモリ空間がより小さいからである。
【0067】
その他の特徴と利点は、以下の説明及び特許請求の範囲から明らかとなるであろう。
【図面の簡単な説明】
【0068】
【
図2A1】モジュールを定義するための例示的なグラフィカルユーザインタフェースである。
【
図2A2】モジュールを定義するための例示的なグラフィカルユーザインタフェースである。
【
図2B】永続的コンピュータプログラムへの仕様書の変換の例である。
【
図2C】永続的コンピュータプログラムへの仕様書の変換の例である。
【
図2D】永続的コンピュータプログラムへの仕様書の変換の例である。
【
図2E】仕様書のためのユーザ入力を受け取り、仕様書からエンティティを生成することを示す図である。
【
図3A】エンティティを含むデータフローグラフの図である。
【
図3B】仕様書のためのユーザ入力の受け取りと、仕様書からのコンピュータプログラムの生成を示す図である。
【
図4】データフローグラフを通じたデータレコードの処理の図である。
【
図5】フィールド特定のためのプロセスフローの図である。
【
図6】仕様書のためのパラメータ値を指定するためのユーザインタフェースの例である。
【
図7】仕様書のためのパラメータ値を指定するためのユーザインタフェースの例である。
【
図8】仕様書のためのパラメータ値を指定するためのユーザインタフェースの例である。
【
図9】エンティティを含むデータフローグラフの図である。
【
図10】データフローグラフを生成するためのエンティティへと仕様書を変換するプロセスの図である。
【
図11】コンピュータプログラムへと仕様書を変換するプロセスの図である。
【発明を実施するための形態】
【0069】
以下に説明する例及び任意選択的特徴の各々は、付属の特許請求の範囲の何れと組み合わせてもよい。また、以下に説明する例及び任意選択による特徴の各々は、以下に説明する他の例及び任意選択による特徴の何れと組み合わせてもよく、この組合せを付属の特許請求の範囲の何れと組み合わせてもよい。
【0070】
図1Aを参照すると、仕様書をデータフローグラフ等のコンピュータプログラムに変換するシステム1は、仕様書構成モジュール7と任意選択によるエンティティ生成モジュール6及びユーザインタフェースモジュール8を含む変換環境5のほか、データ記憶システム3と、データ処理システム4と、を含む。一般に、「エンティティ」には、コンピュータプログラムの一部(例えば、あるコンピュータプログラムのうち、他のコンピュータプログラムに含めるための事前に規定された部分)又は、1つ若しくは複数のデータフローグラフコンポーネント(例えば、事前に規定されたモジュールにカプセル化されるもの)が含まれる。この文書全体を通じて、「エンティティ」を、非限定的に、便宜上、「モジュール」と呼ぶ場合がある。データフローグラフコンポーネントには、データ処理コンポーネント及び/又はデータセット、例えばデータシンク及び/又はデータソースが含まれ得る。データフローグラフは有向グラフによって表すことができ、これは、データフローグラフコンポーネントを表すノード又は頂点を含み、それが、データフローグラフコンポーネント間の作業要素(すなわち、データ)の流れを表す有向リンク又はデータフロー接続により結ばれる。データ処理コンポーネントには、少なくとも1つのデータ入力からのデータを処理し、データをデータ処理コンポーネントの少なくとも1つのデータ出力に提供するコードが含まれていてよい。データフローグラフはそれゆえ、1つ又は複数の入力データセットからグラフコンポーネントを通じて1つ又は複数の出力データセットへと流れるデータに対して行われるグラフベースの計算を実装できる。
【0071】
一般に、仕様書構成モジュール7は仕様書を構成するためのモジュールを含む。様々な種類の仕様書があり、これには例えば、エンティティのための仕様書、データフローグラフのための仕様書等が含まれる。一般に、エンティティのための仕様書は、データフローグラフコンポーネントを特定してよく、サンプルデータの閲覧等、ユーザがグラフを構成している間に、そのために特定の機能を実行できる特定のコンポーネントを特定してよい。データフローグラフのための仕様書は、どのエンティティをデータフローグラフの中に含めるか(すなわち、データフローグラフコンポーネント)、含められたこのようなエンティティのためのパラメータの値、及び含められたエンティティ間のデータフローを定義してよい。
【0072】
システム1はまた、1つ又は複数のコンピュータプログラム(データフローグラフ等)を実行するためのデータ処理システム4を含み、これらは変換環境5を使って、及び本明細書に記載の技術を使って、仕様書をコンピュータプログラムに変換することにより生成された。データ処理システム4は、適当なオペレーティングシステム、例えばUNIX(登録商標)オペレーティングシステムの制御下で、1つ又は複数の汎用コンピュータ上でホストされてよい。例えば、データ処理システム4は、複数ノード並列計算環境を含むことができ、これはローカル(例えば、SMPコンピュータ等のマルチプロセッサシステム)か、ローカルに分散された(例えば、クラスタ又はMPPとして接続された複数のプロセッサ)、又はリモートに分散された(例えば、LAN又はWANネットワークを介して接続された複数のプロセッサ)、又はその組合せの何れでもよい、複数の中央処理ユニット(CPU)を使用するコンピュータシステムの構成を含む。
【0073】
エンティティ生成モジュール6(例えば、これは幾つかの例では任意選択的であってよい)はエンティティを生成するが、これを以下により詳しく説明する。ユーザインタフェースモジュール8(例えば、これは幾つかの例では任意選択的であってよい)は、構成情報をユーザに対して表示し、構成アクションを表すデータをユーザから受け取る。特に、ユーザインタフェースモジュール8は、ユーザがどのエンティティをコンピュータプログラム又はデータフローグラフに含めるかを選択し、これらのエンティティのためのパラメータの値を入力できるようにする視覚表現を表示する。本明細書で使用される「パラメータ」という用語は、エンティティにより実行又は実装される動作の結果に影響を与える場合があり、それゆえ、「動作パラメータ」とも呼ばれてよい。ユーザインタフェースモジュール8により、ユーザは、例えばどのコンポーネントをエンティティに含めるかを指定するパラメータ値及び相互に関するコンポーネントの構成を入力することによって、エンティティを生成することもできる。ユーザインタフェースモジュール8はまた、仕様書構成モジュール7とも通信し、これはユーザインタフェースにおけるユーザのアクション(例えば、上記のユーザ自身による選択又は入力)に基づいて仕様書を構成する。この例では、仕様書構成モジュール7は、選択されたエンティティ(若しくは、ユーザが新規エンティティを定義する場合はエンティティ定義)又はユーザインタフェース内でそれ以外に指定されたエンティティに基づいて仕様書を構成する。仕様書の内容に基づいて、エンティティ生成モジュール6は、データフローグラフの中に含められ、又はそれにより実装されるための、及び実行のためのエンティティを生成する。一般に、エンティティ、データフローグラフ、及び/又は仕様書は、データ記憶システム3の中に保存でき、これは変換環境5にとってアクセス可能である。
【0074】
変換環境5は、データ記憶システム3と通信し、これはユーザインタフェースモジュール8によりユーザインタフェースを表示するために使用されるデータを含む。データ記憶システム3はまた、任意選択による開発環境2にとってもアクセス可能であり、その中ではディベロッパ9がユーザインタフェースを開発でき、これがデータ記憶システム3に記憶され、それはユーザインタフェースモジュール8により、後述のユーザインタフェース10、11、15、又は38等のユーザインタフェースを表示するために使用可能である。変換環境5は、幾つかの実装において、エンティティを含むデータフローグラフとしてアプリケーションを開発するためのシステムである。
【0075】
図1Bに示されるように、データ処理システム4は1つ又は複数のデータソース9aを含んでいてもよく、これは、1つ又は複数のデータソースのほか、データ記憶システム3(
図1A)に接続され、1つ又は複数のコンピュータ上でホストされる実行環境9を含み、実行環境9は、コンピュータプログラムの計算(データ処理動作等)、例えばデータフローグラフコンポーネントにより実行されるデータ処理動作を実行するための計算リソース(例えば、CPU及び/又は一次メモリ)を割り当て、構成するように構成される事前実行モジュール9bを含んでいてよい。実行環境9はまた、コンピュータプログラムのコンポーネントの実行のスケジュールを立て、その実行を制御するための実行モジュール9cも含んでいてよい。コンピュータプログラムは、データ記憶システム3の中に記憶されたプログラミングコード及び/又はデータ構造により指定されてもよく、これらはコンピュータプログラムの実行中に事前実行モジュール9b又は実行モジュール9cにより読み出されてよい。
【0076】
エンティティは、実行環境内で実行されるコンピュータプログラムの一部であり、1つ又は複数のデータソース9aからのデータを処理する。データソースからのデータは、コンピュータプログラム又はデータフローグラフの中に含められるエンティティにしたがって操作され、処理されて、1つ又は複数のデータシンク9dにエクスポートされる。換言すれば、実行モジュール9cは、データソース9aからのデータをコンピュータプログラム、例えばデータフローグラフにしたがって、事前実行モジュール9bによりコンピュータプログラムに割り当てられた実行環境9の計算リソースを使って処理するように構成され、それによって出力データが生成され、これが1つ又は複数のデータシンク9dにエクスポートされてよい。データソース及びシンク、それぞれ9a、9dは、例えばファイル、データベース、データストリーム、又はキューを含むことができる。
【0077】
前述のように、データ処理コンポーネントは各々、少なくとも1つのデータ入力からのデータを処理し、データを少なくとも1つのデータ出力に提供するためのコードを含んでいてよい。エンティティはデータフローグラフに含められ、これはまた、データソース及び/又はシンクにアクセスするためのデータセットオブジェクトを表すノードも含む。ノードは、データソースから始まり、データシンクで終わるコンポーネント間のデータフローを表す有向リンクにより接続される。上流のデータフローグラフコンポーネントのデータ出力ポートは、下流のデータフローグラフコンポーネントのデータ入力ポートに接続される。データフローグラフ及び/又はエンティティは、データセットオブジェクトにより表される異なるデータソース及び異なるデータシンクのために再使用されてよい。データフローグラフ及び/又はエンティティを実装するために使用されるデータ構造とコンピュータプログラムコードは、例えば異なるソース及びシンクを容易に置換できるようにするために、パラメータを介してパラメータ化することにより、複数の異なる構成に対応できる。さらに、幾つかの配置では、エンティティの流れはパラメータの使用によって変更されてよく、それによってあるコンポーネント又は一連のコンポーネントが迂回されてもよい。一般に、パラメータはエンティティの特性を表し、これは構成又は変更可能で、そのエンティティにより実行される動作に影響を与える。一般に、エンティティのパラメータ又は特性は、そのエンティティの使用ごとに変更でき、エンティティによる動作(例えば、例えば、データの処理)は、変更された特性又はパラメータの結果として、異なっていてもよい。
【0078】
構築エンティティは、幾つかのケースでは、技術的専門性の高い性質である可能性がある。エンティティの基本的構造と構築は、技術的検討に基づいて特定される。例えば、グラフコンポーネントは再使用可能性を最大限にするため、又は並列処理をサポートするために選択されてよい。エンティティに関連付けられるパラメータの幾つかは、コンピューティングに詳しくないユーザがエンティティをカスタマイズできるようにするために使用でき、ユーザがその実装の背景にある技術的な複雑さを理解する必要はない。パラメータ化されたエンティティにより、カスタマイゼーションが簡単となり、より多様なアプリケーション、状況、及びユーザのバックグラウンドへと容易に再使用できるようになる。
【0079】
データフローグラフ及び/又はエンティティを構築するためのエンティティ及び関連パラメータ値の特定のためのユーザインタフェースは、クライアントマシン又はユーザデバイス上で提示できる。幾つかの実施例において、クライアントは、パラメータインタフェースを提供するクライアントでウェブブラウザを使ってサーバ上で実行される開発環境2(
図1A)にアクセスし、クライアント側の処理のための幾つかの能力を提供するスクリプト言語を使用していてよい。スクリプト言語は、サーバと通信して、パラメータを更新し、その他の必要な動作を実行してよい。この通信はブリッジマシンを介して行われてよく、これはクライアントと、構築中のグラフ及びエンティティのためのオブジェクト及び関連パラメータ値を記憶する開発環境を実行するサーバとの間の通信を翻訳する。
【0080】
ユーザインタフェースにより、ユーザは、たとえデータフローグラフ及びデータフローグラフの構成に関する技術的知識がなくても、データフローグラフに含めるエンティティを選択し、エンティティのパラメータを構成できる。特に、データフローグラフは、データレコードの処理のための実行可能ロジックに変換される。すなわち、実行可能ロジックの実行により、レコードの処理のためのコード(例えば、コンパイル済みコード)が生成される。
【0081】
変形型において、システム1はデータソースも含み、これは記憶装置又はオンラインデータストリームへの接続等の1つ又は複数のデータソースを含んでいてよく、その各々は各種の記憶フォーマット(例えば、データベーステーブル、スプレッドシートファイル、フラットテキストファイル、又はメインフレームにより使用されるネイティブフォーマット)の何れかのデータを記憶してもよい。このデータソースは、1つ又は複数のデータソース9aと同じであっても、又は、追加のデータソースであってもよい。何れの場合も、データソースを提供する記憶装置はデータ処理システム4にローカルで、例えば、データ処理システム4を実行するコンピュータに接続された記憶媒体上に記憶されてもよく(例えば、ハードドライブ)、又はデータ処理システム4にリモートで、例えばローカル若しくはワイドエリアネットワーク上でデータ処理システム4を実行するコンピュータと通信するリモートシステム上でホストされてもよい(例えば、メインフレーム)。
【0082】
図2Aを参照すると、略
図10は、1つ又は複数のモジュール又はエンティティを構成するためのグラフィカルユーザインタフェース(以下、「グラフィカルユーザインタフェース10」という)を示す。この例では、グラフィカルユーザインタフェース10は1つ又は複数の事前構成されたモジュール(すなわち、モジュールの視覚表現10c~10f)を選択するためのパレット部分10aを含む。一般に、パレット部分10aは、コンピュータプログラム又はデータフローグラフに含めるために利用できる複数のモジュールを表す(例えば、モジュールパレットとも呼ばれる)。パレット部分10aはまた、複数のモジュールに追加されることになる新規モジュールを作成するための追加コントロール10iも含んでいてよい。グラフィカルユーザインタフェース10はまた、新規モジュールの構成のための構成部分10bも含んでいてよい。
【0083】
この例では、複数のモジュールに追加されることになる新規モジュールを作成するための追加コントロール10iを選択すると、構成部分10bがユーザに対し、例えばモジュール名を指定する情報等、モジュールを指定する情報を入力するための入力部分10gを提示することによって、新規モジュールを構成するように促す。構成部分10bはまた、入力部分10gにより指定されるモジュールのためのデータソースを指定するためのデータソース入力ボックス10hも含んでいてよい。この例では、ユーザは、データソース入力ボックス10hにデータファイルの名前を入力しても、又はデータソースモジュール(例えば、視覚表現10d、10eの1つにより表される)をデータソース入力ボックス10hにドラッグ・アンド・ドロップしてもよい。この例では、ユーザは視覚表現10dをデータソース入力ボックス10hにドラッグ・アンド・ドロップし、“A_customers”が“フィルタ処理済み顧客取引”モジュールのためのデータソースであることを指定している。構成部分10bはまた、構成部分10bの中で作成され、又は定義されるモジュールに関する1つ又は複数のパラメータ、変換、又は動作を追加し、構成するためのコントロール10j~10pも含んでいてよい。この例において、コントロール10j~10pの各々により、ユーザはパラメータ、動作、又は変換のための値を選択し、それによってそのパラメータ、動作、又は変換を構成することができる。例えば、コントロール10jは、作成中のモジュールがフィルタ処理動作を含むことを指定し、例えば、本明細書に記載されているように、フィルタ処理動作はモジュールの出力データフォーマットを指定してよい。この例では、ユーザはコントロール10jに含まれるドロップダウンボックスからフィルタオプションを選択する。コントロール10oは、コントロール10jと並置される。コントロール10oの選択により、ユーザはコントロール10jにより指定されたフィルタ処理動作を構成できる。この例では、コントロール10oを選択するとオーバレイ10qが表示される。オーバレイ10qには、コントロール10r、10s及び、フィルタ処理動作により実行される(例えば、評価される)ことになる条件又は表現を指定するための入力部分10tを含む。
【0084】
コントロール10kは、作成中のモジュールが結合動作を含むことを指定する。この例では、ユーザは、コントロール10kに含まれるドロップダウンボックスから結合オプションを選択する。コントロール10pは、コントロール10kに並置される。コントロール10pを選択することにより、ユーザは、コントロール10kにより指定された結合動作を構成することができる。この例では、コントロール10pを選択すると、オーバレイ10uが表示される。オーバレイ10uは、結合動作の一部として実装されるアクション又は動作を指定するコントロール10v~10zを含む。この例では、A_customerモジュールから出力されたレコード(例えば、顧客取引を示すフォーマット済みレコード)はB_name_addressモジューから出力されたレコード(例えば、顧客の名前と住所を指定するフォーマット済みレコード)と結合されて、各種の取引のための顧客の名前と住所を含むデータセットが作られる。コントロール10vにより、ユーザは、データソース入力ボックス10hにおいて指定されたデータソースのためのキー名がコントロール10wにおいて指定されたデータソースにより指定されたキー名と異なるか否かを指定することができる。例えば、ユーザは特定のデータフィールド又はキー、例えば顧客識別子キーのための異なるフォーマットを有する2つのデータソースを結合していてもよい。この例では、コントロール10wにおいて指定されるデータソースは、視覚表現10eにより指定されるB_name_addressモジュールである。この例では、ユーザがコントロール10vを介して、キー名が違うことを指定すると、オーバレイ10aeが表示される。この例では、オーバレイ10aeにより、ユーザは各種のデータソースのための各種のキー名を指定することができる。この例では、コントロール10agにより、ユーザはコントロール10afにおいて指定されたデータソースのためのキー名を指定することができる。それに加えて、コントロール10aiにより、ユーザはコントロール10ahにより指定されたデータソースのためのキー名を指定することができる。構成部分10bは、追加コントロール10nを含み、その選択により、ユーザは追加の変換を追加することができる。この例では、顧客取引モジュール(視覚表現10cにより表される)は、フィルタ処理動作が除かれていること以外、フィルタ処理済み顧客取引モジュールと同じである。
【0085】
図2Bを参照すると、略
図11は、この場合はデータフローグラフであるプログラム(例えば、コンピュータプログラム)への仕様書の変換の「実世界での」例を示す。この例では、略
図11は、グラフィカルユーザインタフェース12を示し、これは
図2A、2Bに関して上述したグラフィカルユーザインタフェース10とは分離され、又は異なっていてよく、パレット部分12a及び構成部分12eを含む。パレット部分12aは、コンピュータプログラムを定義するのに利用できる複数のモジュールを表示する。この例では、パレット部分12aは視覚表現12b、12c、12d、12da、12db、12dc、12ddを表示する。この例では、視覚表現12bは、
図2Aで定義されたフィルタ処理済み顧客取引モジュールを表す。視覚表現12cは、以前に定義された顧客取引モジュール、例えば
図2Aにおいて視覚表現10cにより表された同じ顧客取引モジュールを表す。視覚表現12dはオファ送信モジュールを表し、これについては後述する。視覚表現12da、12dbは、A_customersモジュール(例えば、特定のデータソース及び、そのデータソースらのデータレコードのフォーマット方法を指定する)とB_name_addressモジュール(例えば、他の特定のデータソース及び適当なリフォーマットを指定する)を表す。この例では、視覚表現12da、12dbは、視覚表現10d、10eにより表されるものと同じデータソースを表す。視覚表現12dcは、データの記憶先となる出力ファイルを指定する出力モジュールを表す。この例では、視覚表現12dcは、
図2Aにおいて視覚表現10fにより表される同じ出力モジュールを表す。視覚表現12b、12c、12d、12da、12db、12dc、12ddの各々は選択可能であり、例えばモジュールをコンピュータプログラムに追加するために構成部分12eに「ドラッグ・アンド・ドロップ」することができる。構成部分12eは、コンピュータプログラム又はデータフローグラフに含めるべきモジュールを表す、パレット部分12a内に表示されるパレット(例えば、視覚表現12b、12c、12d、12da、12db、12dc、12dd)から選択されるモジュールに関するパラメータを指定するためのユーザインタフェースを提供する。構成部分12eは、部分12ac(視覚表現12bにより表される、以前に定義されたフィルタ処理済み顧客取引モジュールを変更するため)及び新規モジュール、すなわちオファ送信モジュール(視覚表現12dにより表される)と出力ファイルモジュール(視覚表現12ddにより表される)を定義するための部分12aa、12abを含む。
【0086】
部分12acは、視覚表現12bにより表されるフィルタ処理済み顧客取引モジュールの1つ又は複数のパラメータ又は属性を変更するためのコントロール12f、12i、12j、12k、12m、12nを表示する。特に、12f、12i、12j、12k、12m、12nの各々は、データソース入力ボックス10h(
図2A)において指定されたデータと、それぞれコントロール10r、10s、入力部分10t、及びコントロール10v、10w、10y(
図2A)に入力される選択又はデータに基づいて事前入力される。コントロール12f、12i、12j、12k、12m、12nの各々のデータは、ユーザによるモジュールのカスタマイゼーションを可能にするために変更可能である。
【0087】
この例では、1つ又は複数のコントロール12f、12i、12j、12k、12m、12nにより調節可能なパラメータ又は属性の1つ又は複数の値を変更した後、変更はグローバルセーブコントロール12gを介したグローバルセーブとして、又はローカルセーブコントロール12hを介してローカルセーブとして保存できる。この例では、グローバルセーブにより、グローバルパレット内のすべてのパレット(グラフの定義に現在使用され、将来使用される-パレット12aだけではない)にわたり、並びにそのモジュールにアクセスするグラフ及びコンピュータプログラムにわたり、モジュールがアップデートされる。一般に、グローバルパレットは、グラフの定義にグローバルに利用できるモジュールの定義又はリストである。すなわち、グローバルパレット内のこれらのモジュールは、定義中の仕様書又はグラフのみに制約されない。ローカルセーブは、モジュールをローカルで、すなわち表示されている特定のパレットについてのみ、及び定義中の特定のグラフについてのみアップデートする。すなわち、ローカルセーブでは、モジュールの変更の範囲は、そのパレット及びグラフのみに限定される。この例では、ユーザはグローバルセーブコントロールを選択している(グローバルセーブコントロール12gの周囲の点線で示される)。グローバルセーブコントロール12gの選択に基づいて、フィルタ処理済み顧客取引モジュールに対する変更はグローバルに、すなわちすべてのパレットにわたり、並びにそのモジュールを含むすべてのグラフ及びコンピュータプログラムにわたり行われる。ユーザがその代わりにローカルセーブコントロール12hを選択すれば、変更はパレット12aと、構成部分12eにおいて定義中のグラフのみに適用されるであろう。
【0088】
構成部分12eはまた、新規モジュール-オファ送信モジュールの構成及び定義のためのコントロール12oa、12o~12uを有する部分12aaも含む。コントロール12oaは、オファ送信モジュールのためのデータソースを指定する。この例では、オファ送信モジュールのためのデータソースはフィルタ処理済み顧客取引モジュールである。この例では、コントロール12o~12qは、発生させるべき、すなわち、ユーザに対し、無制限のテキストをアップデートしたいか否かを尋ねるSMSメッセージを送信するべきトリガを指定する。この例では、コントロール12rは、待機される特定のイベント(すなわち、その後のトリガにより指定されるアクションの実行の前に受信されることになる)を指定する。コントロール12s~12uは、実行されるべきアクション又はトリガを指定する(例えば、「$12.99/月でテキスティングをアップグレード」と記したSMSメッセージの送信)。この例では、オファ送信モジュールが部分12aaで新たに定義されているため、ローカルセーブ(これによれば、前に定義されたモジュールのバージョンがパレット12aについてローカルに保存されることになる)のオプションはない。この例では、部分12aaはグローバルセーブコントロール12vを含み、それを選択すると、オファ送信モジュールがグローバルパレットに追加され、これはすべてのグラフの生成において使用されるパレットである。この例では、ユーザはグローバルセーブコントロール12vを選択していない。そのため、オファ送信モジュールは、ローカルパレットであるパレット12a上でのみ利用できる。この例では、オファ送信モジュールの構成自体により、視覚表現12dがパレット12aに、ローカルで定義中であり、構成部分12eを通じて定義中のグラフのためにローカルで利用できるモジュールとして含められる。
【0089】
構成部分12eはまた、出力ファイルモジュール(視覚表現12ddにより表される)を定義するための部分12abも含み、その中にオファの送信の結果が保存される。部分12abは、出力ファイルモジュールのためのデータソースを指定するためのコントロール12wを含む。この例では、コントロール12wは、データソースがオファ送信モジュールであることを指定する。ユーザはこれを、視覚表現12dをコントロール12wにドラッグ・アンド・ドロップすることにより指定してよい。部分12abはまた、データターゲットを指定するためのコントロール12xも含む。この例では、ユーザは視覚表現12ddをコントロール12xにドラッグ・アンド・ドロップして、出力モジュール(視覚表現12dcにより表される)が部分12abを通じて定義される出力ファイルモジュールのためのデータターゲットであることを指定する。
【0090】
一般的に、それゆえすべての例と実施形態に当てはまることとして、構成部分12eの内容(及び/又は構成部分12eの内容から、又はそれに基づいて生成されるデータ)は、コンピュータプログラムにどのモジュールを含めるべきか、及びこれらのモジュールのためのパラメータの値を指定する仕様書を定義する。構成部分12eはまた、サブミッションコントロール12tも含んでいてよく、それを選択すると、コンピューティングシステム、例えば
図1Aに記載された変換環境5は、構成部分12eの内容により指定される仕様書をコンピュータプログラムに変換し、それはこの例では、コンピュータプログラム14(この例では、データフローグラフ)により描かれている。
【0091】
この例では、コンピュータプログラム14は、データソース14a、14b、フィルタ処理済み顧客取引モジュール14c、オファ送信モジュール14d、及び出力ファイルソース14eを含む。この例では、コンピュータ化システムがデータソース14aを構成して、データをそこから引き出す特定の外部モジュール(例えば、データウェアハウス)を指定する、“A_Customers”からのデータレコード及び/又はファイルにアクセスする。コンピュータ化システムは、データソース14bをB_name_addressモジュールとなるように構成する。コンピュータ化システムは、フィルタ処理済み顧客取引モジュール14cを、フィルタ処理済み顧客取引モジュール14cのための部分12acに入力された情報にしたがって構成する。特に、フィルタ処理済み顧客取引モジュール14cは、コンポーネント(例えば、データフローグラフコンポーネント)14f、14h~14lを有するデータフローグラフ14yを含む。この例では、コンポーネント14fはフィルタコンポーネントである(以下、フィルタコンポーネント14f)。コンポーネント14h、14iはパーティションコンポーネントである(以下、パーティションコンポーネント14h、14i)。コンポーネント14j、14kはソートコンポーネントである(以下、ソートコンポーネント14j、14k)。コンポーネント14lは結合コンポーネントである(以下、結合コンポーネント14l)。
【0092】
この例では、フィルタコンポーネント14fは、コントロール12i~12kにおいて指定された入力にしたがって構成される。すなわち、フィルタコンポーネント14fは、所定の条件を満たすレコード、例えば取引総額が$260未満のデータレコードを除外するように構成される。この例では、結合コンポーネント14lは、コントロール12m~12nにより指定される情報にしたがって、すなわち顧客IDフィールドのためのマッチングする、又は同様の値を有するデータレコードを結合するように構成される。この例では、パーティションコンポーネント14h、14i及びソートコンポーネント14j、14kは仕様書内で指定されず、すなわち構成部分12eへの入力によって指定されない。しかしながら、コンピュータ化システムは、結合コンポーネントの前にパーティションコンポーネントがあり、その前にソートコンポーネントがあることを指定する(コンピュータ化システムにより)実行可能なロジックに基づいてパーティションコンポーネント14h、14i及びソートコンポーネント14j、14kを含む。この例では、オファ送信モジュール14dは、コントロール12oa、12o~12uに入力された情報にしたがって構成される。特に、オファ送信モジュール14dは、応答が送信されたことを指定するデータレコード(例えば、イベント)を待機するように構成される。そのイベントが検出されると、オファ送信モジュール14dは、「$12.99/月で無制限のテキスティングにアップグレード」という内容のSMSメッセージを送信するように構成される。出力ファイルソース14eは、部分12abの内容にしたがって、コンピュータプログラム14の実行の出力をデータレポジトリに保存するように構成される。
【0093】
この例では、データソース14a、14b、フィルタ処理済み顧客取引モジュール14c、及びオファ送信モジュール14dの各々は、それぞれ出力ポート14m~14pを含み、これは、どのフィールド(例えば、データソース14a、14bから受け取ったデータレコード等の構造化データ項目から)がそのソース又はモジュールから出力されるかを指定する出力データフォーマットを指定する。換言すれば、各モジュール及びソースは、そのモジュール/ソースにとってアクセス可能であり、下流の1つ又は複数のモジュールによりアクセスされるフィールドの値のみを出力するように構成される。この例では、フィルタ処理済み顧客取引モジュール14cは、入力ポート14q、14r(コントロール12f及び12mにより指定されるデータソースのため)及び出力ポート14o(例えば、オファ送信者モジュール14dに入力されるデータ及び/又はデータレコードを出力するため)を含み、オファ送信モジュール14dは、入力ポート14s及び出力ポート14pを含み、出力ファイルソース14eは入力ポート14tを含む。入力ポートは、他のモジュールから1つ又は複数の構造化データ項目を受け取るように構成される。入力ポートはまた、受け取った構造化データ項目に必要な1つ又は複数のデータフォーマットで構成されてもよい。
【0094】
図2Cを参照すると、略
図15は
図2Bの変形型を示しており、この場合、フィルタ処理済み顧客取引モジュール(例えば、
図2Aのグラフィカルユーザインタフェース10を通じて生成されるフィルタ処理済み顧客取引モジュール)が、
図2Bに示されるコンピュータプログラム14とは異なるコンピュータプログラムの一部として使用される。
【0095】
略
図15は、グラフィカルユーザインタフェース16を示し、これはパレット部分16aと構成部分16eを含む。パレット部分16aは、コンピュータプログラムの定義において利用できる複数のモジュールを表示する。この例において、パレット部分16aは視覚表現16b~16d及び16da~16ddを表示する。視覚表現16b~16d及び16da~16ddの各々は選択可能であり、構成部分16eに「ドラッグ・アンド・ドロップ」することにより、例えばモジュールをコンピュータプログラムに、又は新規モジュールの定義において追加できる。この例では、視覚表現16bは、
図2Aに示されるように、当初、グラフィカルユーザインタフェース10への入力の仕様書を通じて作成され、その後、
図2Bの部分12acにおいて(グローバルセーブを通じて)アップデートされたフィルタ処理済み顧客取引モジュールを表す。この例では、パレット部分16aは、
図2Bに示されるオファ送信モジュールのための視覚表現を含まず、それは、オファ送信モジュールはローカルでのみ定義され、グローバルパレットには追加されなかったからである。構成部分16eは、パレット部分16aにおいて表示されたパレットから、コンピュータプログラム又はデータフローグラフに含められるモジュールを表すデータ(例えば、視覚表現16b~16d及び16da~16ddのうちの1つ)を選択するためのユーザインタフェースを提供する。この例では、構成部分16eは部分16h、16aa、16abを含む。
【0096】
この例では、部分16hは、当初、
図2Aにおいて定義され、
図2Bにおいて変更されたフィルタ処理済み顧客取引モジュールの(コントロール16f、16i~16k、及び16m~16nを介した)変更を提供する。この例では、ユーザは、フィルタ処理済み顧客取引モジュールへの変更を、ローカルセーブコントロール16oの選択を介してローカルで保存する。この例では、部分16hは、グローバルセーブコントロール16pも含み、フィルタ処理済み顧客取引モジュールへの変更をグローバルで保存するオプションを提供する(すなわち、変更のための、ローカルスコープではなくグローバルスコープを定義する)。コントロール16f、16i~16k、及び16m~16nの各々は、それぞれコントロール10r、10s、10t、10v、10w、10y(
図2A)の選択又はそれらに入力されるデータに基づいて事前入力され、その後、
図2Bにおけるコントロール12f、12i~12k、及び12m~12nを通じて変更される。コントロール16f、16i~16k、及び16m~16nの各々のデータは、フィルタ処理済み顧客取引モジュールをユーザがカスタマイズできるように変更可能である。
【0097】
構成部分16eはまた、部分16aaも含み、これは部分16aaにおいて新規に定義されている、取引合算モジュールの構成のためのコントロール16q~16vを有する。この例では、コントロール16qは取引合算モジュールのためのデータソースを指定する。この例では、データソースはフィルタ処理済み顧客取引モジュールである。フィルタ処理済み顧客取引モジュールを表す視覚表現16bは、コントロール16qにドラッグ・アンド・ドロップされる。コントロール16rは、フィルタ処理済み顧客取引モジュールからの出力と合併(結合)すべきデータソースを指定するためのものである。コントロール16sは、例えばWarehouse_A.datに含まれ、フィルタ処理済み顧客取引モジュールから出力されるレコードからのデータロールアップを実行するキーを指定するデータを受け取るためのものである。コントロール16tは、コントロール16uにより指定されたフィールド(ロールアップレコードに含まれる)及びコントロール16vにより指定された他のフィールド(ロールアップレコードに含まれる)上で実行されるべき動作を指定する。この例では、部分16aaは、グローバルセーブコントロール16wを含み、取引合算モジュールをグローバルパレットに追加して、例えばすべてのパレットにおいて全ユーザにとってアクセス可能となるようにする。取引合算モジュールは、部分16aaにおいて新規に定義されているため、例えばグローバルにアクセス可能なモジュールの変更バージョンをローカルで保存するために提供される、ローカルセーブコントロールはない。
【0098】
構成部分16eはまた、出力を保存するための出力ファイルモジュールを定義するための部分16abも含む。この例では、コントロール16xは、出力ファイルモジュールのためのデータソースが取引合算モジュールであることを指定する。ユーザは、視覚表現16dをコントロール16xにドラッグ・アンド・ドロップすることによってこれを指定してよい。追加的に、コントロール16yは、視覚表現16dcにより表される出力モジュールが部分16abで定義されるデータファイルモジュールのためのデータターゲットであることを指定する。この例では、ユーザがコントロール16x、16yのための値を指定すると、パレット16aが、出力ファイルモジュールを表す視覚表現16ddを含むようにアップデートされる。
【0099】
構成部分16eはまた、サブミッションコントロール16acも含み、これを選択することにより、コンピューティングシステム、例えば
図1Aの変換環境5は、構成部分16eの内容により指定された仕様書をコンピュータプログラムに変換し、これはこの例ではコンピュータプログラム18(この例ではデータフローグラフである)により示されている。
【0100】
この例では、コンピュータプログラム18は、データソース18a、18b、フィルタ処理済み顧客取引モジュール18c、取引合算モジュール18d、及び出力ファイルソース18eを含む。この例では、コンピュータ化システムは、データソース18aを構成して、A_Customersモジュールからのデータレコード及び/又はファイルにアクセスする。コンピュータ化システムは、データソース18bをB_name_addressモジュールとなるように構成する。コンピュータ化システムは、フィルタ処理済み顧客取引モジュール18cをフィルタ処理済み顧客取引モジュール18cのために部分16hに入力された情報にしたがって構成する。特に、フィルタ処理済み顧客取引モジュール18cは、コンポーネント18f、18h~18lを有するデータフローグラフ18yを含む。この例では、コンポーネント18fはフィルタコンポーネントである(以下、フィルタコンポーネント18f)。コンポーネント18h、18iはパーティションコンポーネントである(以下、パーティションコンポーネント18h、18i)。コンポーネント18j、18kはソートコンポーネントである(以下、ソートコンポーネント18j、18k)。コンポーネント18lは結合コンポーネントである(以下、結合コンポーネント18l)。
【0101】
この例では、フィルタコンポーネント18fは、コントロール16g、16i~16kにおいて指定された入力にしたがって構成される。すなわち、フィルタコンポーネント18fは、所定の条件を満たすデータレコード、例えば取引総額が$250未満のレコードを除外するように構成される。この例では、結合コンポーネント18lは、コントロール16m~16nにより指定される情報にしたがって、すなわち顧客IDフィールドのためのマッチする、又は同様の値を持つデータレコードを結合するように構成される。この例では、パーティションコンポーネント18h、18i及びソートコンポーネント18j、18kは仕様書において指定されず、すなわち、構成部分16eへの入力により指定されない。しかしながら、コンピュータ化システムはパーティションコンポーネント18h、18iとソートコンポーネント18j、18kを含み、これは、結合コンポーネントの前にパーティションコンポーネントがあり、その前にソートコンポーネントがあると指定する実行可能ロジックの(コンピュータ化システムによる)実行に基づく。この例では、取引合算モジュール18dは、部分16aaに入力された情報にしたがって構成される。特に、取引合算モジュール18dは、「取引総額」のフィールドの中の値を「今日までの取引総額」のフィールドの中の値と合算するように構成される。出力ファイルソース18eは、部分16abにおいて定義された出力ファイルモジュールにより指定されるように、コンピュータプログラム18の実行の出力をデータレポジトリに保存するように構成される。この例では、データソース18a、18b、顧客取引モジュール18c、及び取引合算モジュール18dの各々は、それぞれ出力ポート18m~18pを含み、これは、(例えば、データソース18a、18bから受け取ったデータレコードから)どのフィールドがそのソース又はモジュールから出力されるかを指定する出力データフォーマットを指定する。前述及び後述のように、各モジュール及びソースは、そのモジュール/ソースにとってアクセス可能であり、下流の1つ又は複数のモジュールによりアクセスされるフィールドの値のみを出力するように構成される。この例では、顧客取引モジュール18cは入力ポート18q、18rを含み、取引合算モジュール18dは入力ポート18sを含み、出力ファイルソース18eは入力ポート18tを含む。入力ポートは、他のモジュールから1つ又は複数の構造化データ項目を受け取るように構成される。入力ポートはまた、受け取った構造化データ項目に必要な1つ又は複数のデータフォーマットで構成されてもよい。
【0102】
図2Dを参照すると、略
図20はグラフへの仕様書の変換を示している。この例では、グラフィカルユーザインタフェース19が略
図20の中に示されている。この例では、グラフィカルユーザインタフェース19は、仕様書を定義するためのパレット部分19aと仕様書部分19bを含む。パレット部分は、各種のモジュールの視覚表現19c、19d、19e、19f、19g、19h、19i、19j、19k、19lを描写し、これは、仕様書の定義に使用可能な、以前に定義されたもの(例えば、それぞれ視覚表現19c、19d、19e、19f、19g、19hにより表されるフィルタ処理済み顧客取引モジュール、顧客取引モジュール、取引合算モジュール、A_customersモジュール、B_name_addressモジュール、及び出力モジュール)又は、仕様書19bにおいて新規に定義されてから初めてパレット19aに追加されたもの(例えば、それぞれ視覚表現19i、19j、19k、19lにより表されるモジュール1、2、3、4)である。
【0103】
この例では、ユーザは、仕様書部分19bのモジュール1エリア19mで新規モジュール、すなわちモジュール1を定義する。モジュール1エリア19mは、モジュール1のためのデータソースを定義するためのコントロール19maを含む。この例では、ユーザは視覚表現19dをコントロール19maにドラッグ・アンド・ドロップして、顧客取引モジュールがモジュール1のためのデータソースであることを指定する。モジュール1エリア19mはまた、顧客取引モジュールから出力されるデータレコードについて実行されるべきフィルタ処理動作を定義するためのコントロール19mb、19mc、19mdも含む。この例では、モジュール1エリア19mはまた、この場合はフィルタ処理動作である、実行されるべき動作の種類を選択するためのコントロール(図示せず)も含む。モジュール1エリア19mはまた、モジュール1をグローバルパレットに追加するためのグローバルセーブコントロール19mfも含む。モジュール1エリア19mはローカルセーブコントロールを含まず、これは、モジュール1が新規に定義されたものであり、そのため、システムが以前に定義されたモジュールのローカルコピーを保存することができないからである。この例では、ユーザはグローバルセーブコントロール19mfを選択しない。その代わりに、モジュール1自体を定義するだけで、モジュール1は、視覚表現19iをパレット部分19aに追加することにより、ローカルパレット(定義中のグラフのため)に追加される。
【0104】
この例では、仕様書部分19bはまた、他の新規モジュール、すなわちモジュール2をモジュール2エリア19oにおいて定義する。この例では、モジュール2エリア19oは、モジュール2のためのデータソースを定義するためのコントロール19oaを含む。この例では、視覚表現19eはコントロール19oaにドラッグ・アンド・ドロップされて、取引合算モジュール19eがモジュール2のためのデータソースであることを指定する。モジュール2エリア19oはまた、フィルタ処理動作の属性、例えばそれ自体が他のコントロール(図示せず)の選択を通じて指定されていたことを指定するためのコントロール19ob~19odも含む。モジュール2エリア19oは、グローバルセーブコントロール19ofを含み、それを選択すると、モジュール2がグローバルパレットに追加される。この例では、モジュール2エリア19oにおけるモジュール2の定義の仕様書により、視覚表現19jはパレット部分19aに追加される。
【0105】
仕様書部分19bはまた、モジュール3エリア19n内で新規モジュール3を定義する。モジュール3エリア19nは、モジュール3のためのデータソースを指定するためのコントロール19naを含む。この例では、モジュール1がモジュール3のためのデータソースであり、これは、視覚表現19iをコントロール19naにドラッグ・アンド・ドロップすることによって指定される。モジュール3エリア19nはまた、結合動作(それ自体は、動作の種類を選択するための他のコントロールの選択を通じて指定される)の属性を指定するためのコントロール19nb、19nc、19ndも含む。この例では、モジュール1の出力は、コントロール19nbにより指定されるように、モジュール2の出力と結合される。この例では、ユーザは、視覚表現19jをコントロール19nbにドラッグ・アンド・ドロップし得る。追加的に、コントロール19nc、19ndは、結合が行われるべき、それぞれモジュール1、2から出力されたレコードのキー(すなわち、フィールド)の名前を指定する。モジュール3エリア19nはまた、グローバルセーブコントロール19nfも含み、それを選択すると、モジュール3がグローバルパレットに追加される。この例では、グローバルセーブコントロール19nfは選択されない。その代わりに、モジュール3を定義するだけで、視覚表現19kがパレット部分19aに追加される。
【0106】
仕様書部分19bはまた、モジュール4エリア19p内で新規モジュール4を定義し、それはモジュール4のためのデータソースを指定するためのコントロール19paとモジュール4のためのデータターゲットを指定するためのコントロール19pbを含む。この例では、モジュール3がモジュール4のためのデータソースであり、出力モジュール(視覚表現19hにより表される)はデータターゲットである。この例では、モジュール4エリア19p内でモジュール4を定義すると、視覚表現19lがパレット部分19aに追加される。
【0107】
仕様書部分19bはまた、サブミッションコントロール19sを含み、それを選択すると、システム、例えば
図1Aの変換環境5は、仕様書部分19bで定義された仕様書をグラフ19qに変換する。この例では、グラフ19qは顧客取引データソース19qa、取引合算データソース19qb、モジュール1 19qc、モジュール2 19qd、モジュール3 19qe、及びモジュール4 19qfを含む。この例では、グラフ19qに含まれるデータソースとモジュールの多くが、他のモジュール、データソース、及び/又はコンポーネントをカプセル化する。この例では、グラフ19rはグラフ19qの展開されたビューを示しており、その中に、カプセル化された各モジュール及び/又はデータソースの各々の内容が示されている。グラフ19rは、コンポーネント(そのうちの幾つかはデータソース)19ra~19rpを含む。この例では、コンポーネント19ra~19rgは顧客取引モジュールに含まれ、これはモジュール1のためのデータソースとして定義される。この例では、コンポーネント19riは、コントロール19mb~19mdにより定義されるフィルタ機能を表す。この例では、コンポーネント19rh及び19rjはモジュール2を表す。コンポーネント19rk~19roはモジュール3を表す。前述のように、システムは、パーティション及びソートコンポーネントを結合コンポーネントの前に挿入するように構成される。最後に、コンポーネント19rpはモジュール4を表す。
図2B~2Dに示されるように、異なるグラフの定義におけるモジュールの使用方法は仕様書の違いによって異なる。幾つかの例では、ここで説明するデータ処理システムは、以下のように仕様書をデータフローグラフへと変換する。データ処理システムは、データ記憶システムの中で、データ構造にアクセスし、これは仕様書の部分を表すデータをデータフローグラフコンポーネントにマッピングし、データ構造の中で、仕様書の特定部分を表すデータの項目を特定する。データ処理システムはまた、データ構造の中で、どのデータフローグラフコンポーネントが仕様書の特定部分にマッピングされるかも特定し、特定されたデータフローグラフコンポーネントを、仕様書により指定された動作の実行順序にしたがってデータフローグラフに追加する。
【0108】
図2Eを参照すると、略
図30はユーザインタフェースモジュール32、仕様書構成モジュール34、及びエンティティ生成モジュール36を含み、これらはまた
図1Aに関して先に説明されている。ユーザインタフェースモジュール32は、特定のエンティティ(例えば、
図2Eの「エンティティ1」)を構成するためのユーザインタフェース38を表示する(又は表示されるようにする)。ユーザインタフェース38は、ユーザインタフェース38を通じて構成中のエンティティに含められる動作、例えばマッピング動作のためのパラメータの1つ又は複数の値を受け取るための部分40を含む。この例では、部分40は、動作において使用されるパラメータの値を入力するためのフィールド40a、40bを含む。ユーザインタフェース38はまた、結合動作等の他の動作のためのパラメータの値を入力するための部分42も含んでいてよい。この例では、部分42はこれらの値を入力するためのフィールド42a、42bを含む。この例では、ユーザインタフェース38は、すでに定義されたエンティティを構成するためのものである。変形型において、ユーザインタフェースは、例えば、どのパラメータ、動作、及び/又はデータフローグラフコンポーネントがエンティティに含められるべきかを指定することにより、新規エンティティを定義するためにレンダリングすることができる。
【0109】
ユーザインタフェース38のフィールド40a~40b及び42a~42bに入力されるデータに基づいて、仕様書構成モジュール34は、特定のエンティティを指定する仕様書44を生成する。データ処理システム(例えば、仕様書からデータフローグラフへの変換を行い、ユーザインタフェースモジュール32、仕様書構成モジュール34、及びエンティティ生成モジュール36のうちの1つ又は複数を含む変換環境5(
図1A))は、(例えば、ユーザインタフェース38を表示又はレンダリングするクライアントデバイスから)フィールド40a~40b、42a~42bのための1つ又は複数の値を指定するリクエスト(例えば、XMLメッセージ又はその他のデータ)を受け取ってよい。このリクエストはまた、各々の値がそれに関して指定される動作の種類(例えば、マッピング動作、結合動作等)も指定してよい。リクエストの内容に基づき、仕様書構成モジュール34は仕様書44を生成する。変換環境5(
図1A)は、ユーザインタフェース38を介して、又は特定のエンティティの対応する動作に関連する所定の基準に適合するためリクエストを介して受け取った値をチェックしてよく、ユーザに対し、(例えば、ユーザインタフェース38を介して、又はクライアントへの応答メッセージを介して)、受け取った値が所定の基準に適合しているか否かの通知を出力してよい。変換環境5が、受け取った値の幾つかが所定の基準に適合しないと特定した場合、通知(警告等)はまた、ユーザを、特定のエンティティの対応する動作のための、所定の基準に適合する新規の1つ又は複数の値をサブミットするように導く情報も含んでいてよい。換言すれば、変換環境5(例えば、ユーザインタフェース38)は、導かれたユーザマシン相互作用プロセスを提供してよく、それによって、例えば最終的に受け取った値が確実に所定の基準に適合するようにすることにより、基本となるシステム又はエンティティが適正に動作することが確実となる。
【0110】
上述のリクエストには、下表1に示される内容が含まれていてよい:
【0111】
【0112】
上表に示されるように、リクエストの内容は、様々な動作の種類を指定するデータを含む。動作の種類の各々について、リクエストは、1つ又は複数のパラメータと、各パラメータのための1つ又は指定された(例えば、ユーザが入力した)複数の値を指定する。仕様書構成モジュール34は、リクエストの内容を使って、特定のエンティティのための仕様書44を生成する。例えば、仕様書構成モジュール34は、リクエストを構文解析して、仕様書、例えば仕様書44を生成するルールセットで構成される。この例では、仕様書は、特定のエンティティのための様々な動作(例えば、エンティティにより実行される)及び、各動作のための様々なパラメータ(関連するパラメータの値と共に)を指定する。
【0113】
仕様書構成モジュール34は、下表2に示されるように、仕様書のための(例えば、エンティティのための)テンプレートにアクセスしてよい:
【0114】
【0115】
上表2に示されるように、仕様書のためのテンプレートは、例えばリクエストの内容に基づいて入力されることになるフィールドを含む。この例では、動作の種類のためのフィールド(すなわち、___動作)があり、その動作の第一のインスタンスを指定する他のフィールド(すなわち、___1)がある。また、動作のそのインスタンスのためのパラメータ(及び関連する値)を指定するための他のフィールドもある。テンプレートの入力済みバージョンが、仕様書44として
図2Eに示されている。変形型において、リクエスト自体の内容(例えば、表1に示される)は、例えばリクエストの内容から入力されることになる別のテンプレートを有するのではなく、仕様書である。
【0116】
エンティティ生成モジュール36は、仕様書44をエンティティ46に変換してよく、これは例えば、データレポジトリから仕様書44の中の動作の種類により指定されるコンポーネントを表すデータグラフコンポーネント又はデータを選択することによる。例えば、仕様書44は、「マッピング」の動作の種類と「結合」の動作の種類を含む。これらの動作の種類に基づき、エンティティ生成モジュール36は、エンティティ46に含めるためにデータフローグラフコンポーネント「マッピングコンポーネント48」及び「結合コンポーネント54」を選択する。
【0117】
エンティティ生成モジュール36は、データ記憶システム3の中で、仕様書の部分を表すデータを、コンポーネント又はデータフローグラフコンポーネントを表すデータにマッピングするデータ構造にアクセスしてよい。エンティティ生成モジュール36は、マッピングにおいて、仕様書の特定の部分を表すデータの項目を特定する。エンティティ生成モジュール36は、マッピングにおいて、コンポーネント又はデータフローグラフコンポーネントを表すどのデータが仕様書の特定された部分にマッピングされるかを特定し、特定された、コンポーネント又はデータフローグラフコンポーネントを表すデータをユーザインタフェース38により指定された動作実行の順序にしたがってエンティティ46に追加する。幾つかの例では、仕様書の部分を表すデータとコンポーネントの特定の1つを表すデータとの間に1対1のマッピングがない。その代わりに、結合を表すデータは、複数の異なる結合コンポーネント(又は結合コンポーネントを表すデータ)にマッピングできる。この例では、エンティティ生成モジュール36は、適当なコンポーネントを選択するように構成される。
【0118】
エンティティ生成モジュール36はまた、他のコンポーネントも選択し、これは例えば、仕様書によっても、ユーザインタフェース38への入力によっても指定されないソートコンポーネント50、53及びパーティションコンポーネント51、52である。この例では、エンティティ生成モジュール36は、様々な他の動作の種類の前に様々な動作の種類を指定するルールで構成される。例えば、キーに基づく動作(例えば、結合又はロールアップ動作)の前に、パーティション及びソート動作が行われて、例えばキーに基づく動作の実行中にメモリが節約される。一般に、キーに基づく動作には、データに対して、そのデータのためのキー(又はその他の固有の識別子)に基づいて動作する動作を含む。この例では、エンティティ生成モジュール36は、パーティション及びソート動作が結合動作に先行することを指定するルールでプログラムされる。このルールに基づいて、エンティティ生成モジュール36は、エンティティ46の中にソートコンポーネント50、53及びパーティションコンポーネント51、52を、エンティティ46の中の結合コンポーネント54の発生の前に含める。
【0119】
他の例では、エンティティ生成モジュール36はまた、パーティション動作がマッピング動作の後になることを指定するルールでもプログラムされ、これによって例えば、マッピング動作の実行後のメモリが節約される。このルールの実行に基づいて、エンティティ生成モジュール36は、エンティティ46内にソートコンポーネント50を含める。エンティティ生成モジュール36は、コンポーネント48、50、52、54間にエッジ56、58、59、60、及び61(例えば、データフローを表す)を、仕様書44の中で各種の動作がリストされた(又は、それ以外に発生する)順序に基づいて、及び/又はルールにより指定される順序に基づいて挿入する。例えば、上述のルールの実行に基づいて、ソートコンポーネント50は、マッピングコンポーネント48と結合コンポーネント54との間に挿入される。この挿入の後に、エンティティ生成モジュール36は、マッピングコンポーネント48とソートコンポーネント50との間にエッジ56を挿入する。エンティティ生成モジュール36はまた、ソートコンポーネント50とパーティションコンポーネント51との間にエッジ58も挿入する。エンティティ生成モジュール36は、パーティションコンポーネント51と結合コンポーネント54との間にエッジ59を挿入する。追加的に、パーティションコンポーネント52の挿入後に、エンティティ生成モジュール36は、ソートコンポーネント53とパーティションコンポーネント52との間にエッジ60を挿入する。エンティティ生成モジュール36は、パーティションコンポーネント52と結合コンポーネント54との間にエッジ61を挿入する。
【0120】
変形型において、仕様書構成モジュール34は、上述のルールで構成される。これらのルールの実行に基づき、仕様書構成モジュール34は、仕様書44及びエンティティ46に含めるべき追加の動作(例えば、パーティション動作及びソート動作)を特定するように構成される。
【0121】
本明細書に記載のシステムは、ユーザに対し(ユーザインタフェース38を通じて)、エンティティの構成に必要な複雑さが最小限しか示されないように構成される。すなわち、ユーザには、構成のためにユーザの入力を必要とするデータ操作のためのパラメータ値を指定する入力が促される(例えば、ユーザが、それに対して結合及び/又はフィルタを実行するキーの値を入力することを必要とする結合及びフィルタ処理動作)。しかしながら、ユーザの入力とは独立して構成できる他の動作(例えば、パーティション及びソート動作)は自動的に構成され、エンティティに追加される、すなわち、これらのデータ操作の複雑さはユーザに対して示されない。そのため、ユーザに対して複雑さは最小限しか示されない。
【0122】
図3Aに関して、略
図70は、各々が本明細書に記載の技術を使って生成される複数のエンティティ46、76、78、80、82から生成されたデータフローグラフ71を示している。この例では、各エンティティはそれ自体、複数のその他のエンティティを含み得る。以下により詳しく説明するように、データ処理システムは、データフローグラフの中にどのエンティティを含めるべきか、及びそのエンティティの実行順序を選択するための各種のユーザインタフェースを提供する。この例では、データフローグラフ71はまた、データソース72、74も含む。この例では、ユーザインタフェースはまた、データソースの、及びデータフローグラフ内に含まれるデータソース及びエンティティ間の関係の仕様書のために提供される。この例では、データソースは、ユーザエンドでカスタマイズ可能であり、事前に指定する必要がない(例えば、デプロイ又はインストール時に指定できる)という点で変更可能なフィールドである。
図3Bを参照すると、略
図83は
図2Eの変形型を示しており、この場合、仕様書は、個別の特定のエンティティのためではなく、複数の特定のエンティティを含むデータフローグラフのために、ユーザ入力に基づいて生成される。しかしながら、個別のエンティティについての
図2Eに関する説明はまた、
図3に関して述べる各エンティティにも、相応に当てはまる。この例では、ユーザインタフェースモジュール32は、すべてのパラメータ値(及び/又はデータフローグラフのための構成オプション)を収集するためのユーザインタフェース85を表示する。ユーザインタフェース85を通じて収集された入力に基づいて、仕様書構成モジュール34は、データフローグラフ内に含まれるエンティティのすべてについて、例えば
図2Eに関して本明細に記載の技術を使って、仕様書86を生成する。仕様書86に基づいて、グラフ生成モジュール84はデータフローグラフ71を生成し、それ自体は様々なエンティティを含む。データフローグラフ全体を生成することにより、システムは、エンティティ間の必要な依存性及び/又はデータフローを特定し、生成することができる。少なくとも部分的にこれらの依存性及び/又はデータフローに基づいて、システムはエンティティのため、及びエンティティのコンポーネントのための入力及び出力データフォーマットを指定できる。
【0123】
換言すれば、ユーザインタフェースモジュール32は、複数の特定のエンティティ(例えば、
図3Bの「顧客取引エンティティ」及び「購入エンティティ」)を構成するためのユーザインタフェース85を表示する(又は表示されるようにする)。ユーザインタフェース85は、ユーザインタフェース85を通じて構成中のエンティティ(例えば、
図3Bの「顧客取引エンティティ」)に含まれる動作、例えばマッピング動作のためのパラメータの1つ又は複数の値を受け取るための部分を含む。この例では、ユーザインタフェース85は、動作において使用されるパラメータの値を入力するためのフィールド85d、85eを含む。ユーザインタフェース85はまた、同じエンティティのための他の動作、例えば結合動作のためのパラメータの値を入力するための部分も含んでいてよい。この例では、この部分はまた、これらの結合動作等のためのパラメータの値を入力するためのフィールドも含んでいてよい。ユーザインタフェース85のフィールドに入力されるデータに基づいて、仕様書構成モジュール34は、複数の特定のエンティティを指定する仕様書86を生成する。
【0124】
この例では、ユーザインタフェース85は選択するためのエンティティ(例えば、所定のエンティティ)のパレットを表示する。この例では、ユーザインタフェース85はコントロール85aを含み、それを選択すると、コンピュータプログラム及び/又はデータフローグラフに含められる各種のエンティティのリストが表示される。この例では、ユーザは、例えばエンティティの中でも特に「顧客取引」エンティティ85bと「購入」エンティティ85cとをコンピュータプログラムの中に含めるように選択している。この例では、「顧客取引」エンティティ85bは、マッピング動作と結合動作を含む。「顧客取引」エンティティ85bについて、ユーザインタフェース85により、ユーザはマッピング動作の値を、例えば結合動作のパラメータの値を入力するための入力ボックス85d、85eを介して構成できる。入力ボックスは、「顧客取引エンティティ」85bの一部である結合動作のパラメータの値を構成するため、及び「購入」エンティティ85cに含まれるソート及び結合動作のパラメータの値を構成するために提供される。
【0125】
この例では、ユーザインタフェース85はコントロール85dを含み、それを選択すると、ユーザインタフェース85をレンダリングするクライアントデバイスは、リクエスト(例えば、XMLメッセージ又はその他のデータ)を、仕様書構成モジュール34を実行するデータ処理システム、例えば、変換環境5(
図1A)に送信する。この例では、リクエストは、特定のエンティティの各々について、エンティティの名前、そのエンティティにより実行されるデータ操作の種類(例えば、マッピング動作、結合動作等)、及び、データ操作の各々の種類について、そのデータ操作のためのそれぞれのパラメータの値を指定する。リクエストは仕様書構成モジュール34に送信される。リクエストの内容に基づいて、仕様書構成モジュール34は仕様書86を生成する。仕様書構成モジュール34は、本明細書に記載の技術を使って仕様書に含める追加の何れかのデータ操作があるか否かを特定してよい。これらの追加のデータ操作には、他のデータ操作を実行するために必要なデータ操作又は、指定されたデータ操作がそれに依存するが、ユーザが入力値を入れるように促されていないデータ操作が含まれる。データ処理システムは、ユーザインタフェース38(
図2E)若しくはユーザインタフェース85を介して、又は特定のエンティティの対応する動作に関連する所定の基準に適合するリクエストを介して受け取った値をチェックしてもよく、受け取った値が所定の基準に適合するか否かの通知をユーザに(例えば、ユーザインタフェース85を介して、又はクライアントへの応答メッセージを介して)出力してもよい。データ処理システムが、受け取った値の幾つかが所定の基準に適合しないと特定した場合、通知(例えば、警告)はまた、ユーザが、所定の基準に適合する特定のエンティティの対応する動作のための新規の1つ又は複数の値をサブミットするのを導く情報も含んでいてよい。換言すれば、データ処理システム(例えば、ユーザインタフェース85)は、導かれたユーザマシン相互作用プロセスを提供してよく、これによって例えば最終的に受け取った値が所定の基準に確実に適合するようにすることにより、基本のシステム又はエンティティの適正な動作を確実にする。
【0126】
仕様書から、グラフ生成モジュール84は、例えばメモリから、仕様書86に含まれるエンティティの名前に対応するエンティティ(例えば、エンティティ76、78、80、82、46)を選択し、これらのエンティティのパラメータの値をユーザインタフェース85に入力された値にしたがって構成することによって、データフローグラフ71を生成する。エンティティがまだ事前に定義されてメモリに記憶されていないある例では、グラフ生成モジュール84は、例えばメモリから、仕様書により指定された各種の動作の名前に対応する名前を有するコンポーネントを選択することによって、エンティティを生成する。
【0127】
図4を参照すると、略
図90はデータ処理システム、例えば
図1Aのデータ処理システム4が、あるフィールドを、そのフィールドはデータフローグラフ71(
図3A)であってもよいデータフローグラフ91内の下流の、又はその後の何れかのエンティティ(又は、エンティティに含まれるコンポーネント)により必要とされないとデータ処理システムが特定したときにデータレコードから「ドロップする」か、又はそれ以外に取り除くように構成される様子を示す。この例では、データフローグラフ91はデータソース92、94、データシンク97(例えば、データの記憶のためのデータレポジトリ)、及びエンティティ98を含む。データフローグラフ91はまた、1つ又は複数のその他のエンティティも含んでいてよく、これはデータフローグラフ91に見られる楕円形の点(「...」)により示されている。
【0128】
フィールドを、それらがデータフローグラフにより使用又は処理されなくなったときにドロップすることには多くの利点がある。これらの利点には、データレコード処理のレイテンシの短縮が含まれ、それは、データ処理システムがより小さいレコード(例えば、フィールドのドロッピングによる)を、データ処理システムがデータフローグラフを通じたすべてのデータレコードを処理しなければならない場合のデータ処理速度に関して、より素早く処理できるからである。その他の利点には、メモリ及びリソースの消費の削減が含まれ、これは、より小さいレコード(例えば、フィールドのドロッピングによる)がレコードの処理中に消費するメモリ空間はより小さいからである。
【0129】
この例では、データフローグラフ91はエンティティ98を含み、それが今度はデータフローグラフコンポーネント100、102、104、106を含む。コンポーネント100、106の各々はフィルタコンポーネントであり、これはレコードを位置情報フィールドに基づいてフィルタ処理する。そのため、コンポーネント100、106の各々は、フィルタ処理を適正に実行するために、データレコードに位置情報フィールドがあることを必要とする。コンポーネント102はソートコンポーネントであり、これはデータレコードを、例えばデータレコードのID又はキーに基づいて選別するように構成される。そのため、コンポーネント102は、ソートを適正に実行するためにIDフィールドを必要とする。コンポーネント104は結合コンポーネントであり、これは同じ又は同様のキー又はIDに関連するデータレコードについて結合を行うように構成される。そのため、コンポーネント104は、結合動作を適正に行うために、IDフィールドを必要とする。この例では、データシンク97は、処理されたデータレコードの各々のための4つのフィールド(例えば、フィールド96a~96d)を有するデータレコード(例えば、データレコード96)を記憶するように構成される。この例では、4つのフィールドはIDフィールド96a、SMSフィールド96b、タイムスタンプフィールド96c、及びデータ利用フィールド96dを含む。そのため、データシンク97による記憶のために指定されたフィールドに基づいて、処理されたレコードは、これらのフィールドの値をデータシンク97に記憶できるようにするために、これら4つのフィールドを含むべきである。
【0130】
この例では、データソース92は構造化データ項目、例えばデータレコード108を受け取り、これはIDフィールド108a、位置情報フィールド108b、SMSフィールド108c、及びタイムスタンプフィールド108dを含む。この例では、フィールド108a~108dの各々は、下流のエンティティ又はデータシンクにより必要とされる。例えば、フィールド108aは、コンポーネント102、104、及びデータシンク97により必要とされる。フィールド108bは、コンポーネント100により必要とされる。フィールド108cは、データシンク97により必要とされる。フィールド108dは、データシンク97により必要とされる。そのため、データ処理システムは、データレコード108から何れのフィールドもドロップせず、データレコード108はその全体がデータフローグラフ91内の次のエンティティに送信される。
【0131】
この例では、データソース94はデータレコード110を受け取り、これはIDフィールド110a、位置情報フィールド110b、データ利用フィールド110c、タイムスタンプフィールド110d、及び音声フィールド110eを含む。IDフィールド110aは、データフローグラフ91内の下流のエンティティ及びコンポーネント(すなわち、コンポーネント104及びデータシンク96)により使用される。位置情報フィールド110bはコンポーネント106により使用される。データ利用フィールド110cはデータシンク97により使用される。タイムスタンプフィールド110dは、データシンク97により使用される。しかしながら、音声フィールド110eは、下流のコンポーネント又はエンティティの何れによっても使用されない。そのため、データ処理システムは音声フィールド110eをデータレコード110からドロップする(これは「音声」の取消し線により視覚的に示されている)。この例では、データソース94はデータレコード112(フィールド112a~112dを含み、ドロップされたフィールド110eを含まない)をデータフローグラフ91内の次のエンティティに送信する。データレコード112は、フィールド110eが取り除かれたバージョンのデータレコード110である。すなわち、この例では、データレコード112は、データレコード112がフィールド110eを含まないことを除き、データレコード110と同じである。この例では、フィールド112a~112dはそれぞれフィールド110a~110dと同じである。これは、データソース94に関連付けられる仕様書をデータソース94に変換している間にデータ処理のためのデータフローグラフの実行の前にデータソース94の出力データフォーマットを設定することによって行われてもよく、それによって音声フィールド110eは、データレコード110がデータレコード112としてデータソース94により下流エンティティ98によるその後の下流の処理のために出力される前に、データレコード110から除去又はドロップされる。
【0132】
この例では、エンティティ98はデータレコード108を受け取る。データ処理システムは、データレコード108に対してコンポーネント100を実行し、例えば、データレコード108の処理を続けるか否か、又はデータレコードがフィルタにより除外されて、さらに処理されないかを特定する。この例では、位置情報フィールド108bの値に基づいて、データ処理システムは、データレコード108がフィルタにより除外されて、さらに処理されないデータレコードの基準を満たさないと特定する。データ処理システムはまた、位置情報フィールド108bが下流のエンティティ又はコンポーネントの何れによっても使用されず、又は必要とされないと特定する。例えば、コンポーネント102、104又はデータシンク97の何れも位置情報フィールドを使用しない。そのため、データ処理システムは、データレコード108から位置情報フィールド108bをドロップし、これはコンポーネント100の上の「位置情報」の取消し線により示されている。これは、エンティティ98に関連付けられる仕様書のエンティティ98への変換中にコンポーネント100の出力データフォーマットを設定することにより行われてよく、それによって、データレコード108が下流のコンポーネント102、104によるその後の下流の処理のためにコンポーネント100によってデータレコード114として出力される前に、位置情報フィールド108bがデータレコード108から除外され、又はドロップされる。位置情報フィールド108bの除外により、データレコード114が得られ、これはデータレコード108のあるバージョンである。すなわち、データレコード114は、データレコード108の、位置情報フィールド108bが取り除かれたバージョンである。この例では、データレコード114はフィールド114a~114cを含み、これらはそれぞれフィールド108a、108c~108dに対応する。コンポーネント102及び104は各々、データレコード114を処理する。この例では、コンポーネント102、104による処理の後、データレコード114から何れのフィールドもドロップされず、これは、フィールド114a~114cの各々がデータシンク97により必要とされるからである。
【0133】
この例では、データレコード112がエンティティ98に渡され、それがデータレコード112に対してコンポーネント106を実行し、例えばデータレコード112の処理を継続するか否か、又はデータレコード112がフィルタで除外されて、さらに処理されないかを特定する。この例では、位置情報フィールド112bの値に基づいて、データ処理システムは、データレコード112がフィルタにより除去されて、さらに処理されないデータレコードの基準を満たさないと特定する。データ処理システムはまた、位置情報フィールド112bが下流のエンティティ又はコンポーネントの何れによっても使用されず、又は必要とされないと特定する。例えば、コンポーネント104もデータシンク97も位置情報フィールドを使用しない。そのため、データ処理システムは、データレコード112から位置情報フィールド112bをドロップし、これはコンポーネント106の下の「位置情報」の取消し線により示されている。これは、エンティティ98に関連付けられる仕様書のエンティティ98への変換中にコンポーネント106の出力データフォーマットを設定することにより行われてよく、それによって、位置情報フィールド112bは、データレコード112が下流のコンポーネント104によるその後の下流の処理のためにコンポーネント106によってデータレコード116として出力される前に、位置情報フィールド112bがデータレコード112から除外され、又はドロップされる。位置情報フィールド112bの除外により、データレコード116が得られ、これはデータレコード112のあるバージョンである。すなわち、データレコード116は、データレコード112の、位置情報フィールド112bが取り除かれたバージョンである。この例では、データレコード116はフィールド116a~116cを含み、これらはそれぞれフィールド112a、112c~112dに対応する。コンポーネント104は、データレコード116を処理する。この例では、コンポーネント104による処理の後、データレコード116から何れのフィールドもドロップされず、これは、フィールド116a~116cの各々がデータシンク97により必要とされるからである。
【0134】
この例では、コンポーネント104はデータレコード114、116(例えば、データレコードの各々は同じIDを有する等)を結合する。コンポーネント104の出力はデータレコード118であり、これはデータレコード114、116を含む。この例では、データレコード114、116の各々はデータレコード118のサブレコードである。エンティティ98は、データレコード118を記憶のためにデータシンク97に伝送する。
【0135】
ある例において、データ処理システム(例えばデータ処理システム4又は変換環境5)は、データフローグラフ(例えば、
図3Aのデータフローグラフ71又は
図4のデータフローグラフ91)内の各エンティティについて3つのパスを実行し、どのデータフィールドを、いつ、記憶から削除し、又はそれ以外に除外できるかを特定する。すなわち、コンピューティング及びメモリリソースの消費を減らすために、データ処理システムはフィールドをできるだけ早く、例えばそのフィールドがデータフローグラフによって、及び/又はデータフローグラフ内のエンティティによって必要とされなくなったときに「ドロップ」又は削除するように構成される。第一のパス中、データフローグラフのあるエンティティは、他のエンティティ(例えば、他の上流のエンティティ)に対し、それ自体により、及びそのエンティティの下流の何れかのエンティティにより必要とされるフィールドをブロードキャストする。このブロードキャストを行うエンティティは、ブロードキャストエンティティと呼ばれる。ある例において、ブロードキャストエンティティは、必要なフィールドを1つ又は複数の受信エンティティ(例えば、上流のエンティティ)に、必要なフィールドを表すデータを含む1つ又は複数のメッセージをこれらの上流のエンティティに送信することによってブロードキャストする。
【0136】
第二のパス中、受信エンティティはブロードキャストエンティティに対し、どの受信エンティティが必要なフィールドの値を提供(例えば、ブロードキャストエンティティに伝送)できるかを指定する1つ又は複数のメッセージを伝送する。第三のパス中、ブロードキャストエンティティは、受信エンティティから受け取ったメッセージを構文解析(又はそれ以外に解析)する。ブロードキャストエンティティは、応答として、受信エンティティに対し、どの受信エンティティがどのフィールド(及び/又はフィールドの値)のブロードキャストエンティティへの伝送を担当するかを指定するデータ(例えば、メッセージ)を返信する。幾つかの例において、データ処理システムは、これらの3つのパスを実行する。そのようにする中で、各エンティティは、例えばブロードキャストエンティティを含む下流のエンティティによりどのフィールドが必要とされるかを指定するデータ(例えば、設定された出力データフォーマット)で構成される。一般に、エンティティ(例えば各エンティティ)は、メモリ及び/又はデータレポジトリの中に、必要なフィールドを表すデータを保存し、そのエンティティのための固有の識別子に関連付けられるデータを保存することによって、必要なフィールドを指定するデータで構成される。すると、データフローグラフの実行中、データ処理システムは、エンティティの実行中に、この記憶されたデータの問い合わせを行う。例えば、特定のエンティティを実行すると、データ処理システムは、データベース内でそのエンティティのためのデータを(例えば、そのエンティティの固有の識別子に基づいて)検索する。前述のように、検索されたデータは、どのフィールドが下流のエンティティにより必要とされるかを指定する。この例では、データ処理システムは、下流のエンティティにより必要とされないフィールドを、例えば現在のエンティティ(例えば、現在実行中で、どのフィールドが下流のエンティティにより必要とされ、必要とされないかを指定する、記憶データに関連付けられるエンティティ)によるデータ処理が終了したときに、(例えば、これらを記憶装置から削除することによって、又はこれらのフィールドに関するデータが記憶されないようにすることによって)ドロップするように構成される。
【0137】
図5を参照すると、略
図120は、データレコードのどのフィールドをいつドロップすべきかを特定する際にデータ処理システムが実行するプロセスを示す。この例では、データフローグラフはデータソース122、124、及びエンティティ126、128、130、132、134を含む。この例では、エンティティは、エンティティがフィールドの値を記憶しないという点で一時的である。この例では、エンティティ132は3つのフィールド、すなわちx、y、zを必要とする。エンティティ130は、1つのフィールド、すなわちAを必要とする。エンティティ126は2つのフィールド、すなわちx及びyを必要とする。追加的に、この例では、データソース122は、フィールドx、y、A を有するデータレコードを記憶する(又はそれ以外にそれにアクセスすることができる)。
【0138】
どのフィールドがどのエンティティにより必要とされるか、及びデータ処理システムがフィールドをいつドロップできるかを追跡するために、データ処理システムは、データフローグラフの構成の一環として、データフローグラフによるデータ処理の前に、以下の技術を実行する。まず、エンティティ132は、矢印136に示されるように、第一のパス中にメッセージ170をエンティティ130に送信する。メッセージ170は、エンティティ132により必要とされるフィールドを指定するデータを含む。この例では、メッセージ170は、フィールドx、y、zがエンティティ132により必要とされることを指定するデータを含む。すると、エンティティ130はメッセージ170を受け取り、メッセージ170に、エンティティ130に必要なフィールドがあればこれを追加する。この例では、エンティティ130はメッセージ180を生成し、これはメッセージ170のあるバージョンであり、メッセージ170の内容(すなわち、フィールドx、y、zを表すデータ)の他、フィールドAを表す他のデータを含む。第一のパス中に、データ処理システムは、矢印138により示されるように、エンティティ130からエンティティ126にメッセージ180を伝送する。この例では、エンティティ126はフィールドx及びyを必要とする(例えば、エンティティ126はフィールドx及びyを読み出すからである)。そのため、エンティティ126はメッセージ180に対し、エンティティ126がフィールドx、yのための値を有することになると応答できる。エンティティ126は、矢印193により示されるように、第一のパス中、データソース122にメッセージ190を送信する。この例では、メッセージ190は、フィールドx、y、z、Aが、例えば1つ又は複数の下流のエンティティにより必要とされることを指定する。データソース122はフィールドx、y、Aのための値を記憶する(又は、それ以外にそれにアクセスする)ため、データ処理システムは、第二のパス中に、矢印194により示されるように、メッセージ192がデータソース122からエンティティ126に伝送されるようにする。この例では、メッセージ192は、データソース122がフィールドx、y、Aのための値を記憶するか、又はそれ以外にそれにアクセスできることを指定する。次に、第二のパス中、データ処理システムは、エンティティ126に、矢印140により示されるように、エンティティ130にメッセージ182を伝送させる。この例では、メッセージ182は、エンティティ126がフィールドx、y、Aのための値をエンティティ130に伝送できることを指定する。ある例において、データ処理システムは、受信した(そのエンティティへの)メッセージの中で指定されたフィールドを特定し、その後、指定されたフィールドのどれが、メッセージを受信したエンティティにより必要とされるか、又はメッセージを受信したエンティティによりアクセスすることができるかを特定することにより、(エンティティから伝送された)メッセージの中でどのフィールドを指定し、又はその中に含めるかを特定する。この例では、メッセージ180(エンティティ126により受信される)はフィールドx、y、z、Aを指定する。エンティティ126は、フィールドx、yを必要とする。したがって、エンティティ126はフィールドx、yのための値にアクセスできる(データソース122からこれらの値を受け取ることによる)。そのため、フィールドx、yがメッセージ182の中に含められる。エンティティ126はフィールドAを必要としないが、エンティティ126はデータソース122を通じてフィールドAにアクセスできる。そのため、エンティティ126はメッセージ182の中にフィールドAを含める。
【0139】
この例では、エンティティ130はメッセージ182を受け取り、メッセージ182の中で指定されたフィールドのうちの、もしあれば、どれが下流のエンティティにより必要とされるかを特定する。この特定を行うために、エンティティ130はメッセージ182の内容をメッセージ170の内容と比較する。この例では、データ処理システムは、メッセージ182の中で指定されるフィールドとメッセージ170の中で指定されるフィールドとの間の重複を表すフィールド(例えば、重複フィールド)を指定する他のメッセージを生成するように構成される。そのため、データ処理システムは、フィールドx、yを表すデータでメッセージ185を生成し、例えば、エンティティ130がフィールドx、yをエンティティ132に提供できることを指定する。第二のパス中に、エンティティ130は、矢印142により示されるように、メッセージ185をエンティティ132に伝送する。エンティティ130はまた、メモリ又はデータレポジトリの中に、フィールドAがエンティティ130により処理されると、フィールドAを記憶装置からドロップし、又はそれ以外に削除できることを指定するデータを記憶する。ここで、
図5に示されるデータフローグラフがデータ処理システム4(
図1A)により(リアルタイムで)実行されると、データ処理システム4(データフローグラフを実行する)は、フィールドAをドロップすることを、エンティティ130による処理後に、例えばメモリ(又はデータレポジトリ)の中でエンティティ130によるデータ処理の完了時にフィールドAをドロップすることを指定するデータのデータ検索に基づいて特定できる。
【0140】
メッセージ170の伝送と平行して(又はそれに続いて)、エンティティ132はまた、矢印150により示されるように、第一のパス中にメッセージ172をエンティティ134に伝送する。幾つかの例において、メッセージ170はメッセージ172と同じメッセージである。この例では、メッセージ172はフィールドx、y、zがエンティティ132により必要とされることを指定する。エンティティ134は、メッセージ172を受け取る。この例では、エンティティ134はそれ自体の何れのフィールドも必要としない。そのため、エンティティ134は、矢印152により示されるように、第一のパス中にメッセージ172をエンティティ128に送信する。エンティティ128はメッセージ172をソース124に送信し、それが今度は、メッセージ184で応答し、これはソース124がフィールドy、zを提供できることを指定する。今度は、エンティティ128は、エンティティ128がフィールドy、zのための値を提供できることを指定するメッセージ184で応答する。この例では、エンティティ128は、第二のパス中に、矢印154により示されるように、エンティティ134にメッセージ184を伝送する。この例では、エンティティ134は、第二のパス中に、矢印156により示されるように、エンティティ132にメッセージ184を送信する。
【0141】
この例では、エンティティ132は2つのメッセージ(すなわち、メッセージ184、185)を受け取っており、その各々が、エンティティ132により必要とされるどのフィールドが上流のエンティティにより提供できるかを指定する。特に、メッセージ184は、フィールドx、yがエンティティ130により提供できることを指定する。メッセージ184は、フィールドy、zがエンティティ134により提供できることを指定する。エンティティ132は2つの異なるエンティティからフィールドxの値を受け取ることができるため、エンティティ132はこれらのエンティティのうちから、そこにフィールドxの値を要求し、そこから受け取ることのできるものを選択する。幾つかの例において、エンティティ132はランダムにこの選択を行う。他の例では、エンティティ132は最初に応答したエンティティを選択してよい。
【0142】
この例では、エンティティ132はフィールドxを受け取るためのエンティティ130を選択する。そのため、第三のパス中に、エンティティ132は、矢印144によって示されるように、メッセージ179をエンティティ130に伝送する。この例では、メッセージ179は、エンティティ132がエンティティ130からフィールドx、yを受け取ることを選択していることを指定する。すると、エンティティ130は、エンティティ130がフィールドx、y、Aの値をエンティティ126から受け取ることを指定するメッセージ178を生成する。第三のパス中に、メッセージ178は、矢印146により示されるように、エンティティ130からエンティティ126に伝送される。第三のパス中に、エンティティ126は、矢印148により示されるように、メッセージ178をデータソース122に伝送する。この例では、データソース122は、メッセージ178の内容を、それが記憶している、又はそれ以外にアクセスするフィールドと比較して、例えばどの(もしある場合はフィールド)データソース122を記憶装置からドロップし、削除できるかを特定する。この例では、データ処理システムは、メッセージ178の内容に基づいて、データソース122のすべてのフィールドが下流のエンティティにより必要とされることを特定する。そのため、データソース122は何れのフィールドもドロップしないように構成される。
【0143】
この例では、エンティティ132は、第三のパス中に、矢印158により示されるように、メッセージ176をエンティティ134に伝送し、これはエンティティ132がエンティティ134からフィールドzを受け取ることを指定する。今度は、エンティティ134は、データ処理システムにより、フィールドzの値をエンティティ132に伝送するように構成される。エンティティ134はまた、第三のパス中、矢印160により示されるように、メッセージ176をエンティティ128に伝送する。そのため、エンティティ128はまた、フィールドzの値をエンティティ134に伝送するように構成される。すると、エンティティ128は、第三のパス中に、矢印162により示されるように、メッセージ176をデータソース124に送信する。この例では、データソース124はメッセージ176の内容(すなわち、フィールドzを指定する)をデータソース124によりアクセスされるフィールド、この場合はフィールドy、zと比較する。比較に基づいて、データ処理システムは、フィールドyがメッセージ176に含められないことを特定する。そのため、データ処理システムは、下流のエンティティの何れも、フィールドyの値についてデータソース124に依存しないことを特定する。そのため、データソース124は、例えば
図5に示されるデータフローグラフの実行時に、フィールドyをドロップするように構成される。この例では、データソース124はあるフィールドを、そのフィールドのための値をメモリ内に保存しないことによって、ドロップするように構成される。
【0144】
ここまでの説明の中で、エンティティがメッセージを伝送し、メッセージを受信すると述べた。ある例において、エンティティはメッセージの伝送及び/又は受信を、実行中で、データを生成させるエンティティを表す実行可能なロジック又はコードで行い、生成されたデータはその後、他のエンティティを表す他の実行可能コードにより分析又は解釈される。
【0145】
上述の例において、エンティティ、例えばエンティティ126は、例えばフィールドのための値を記憶するのではなく、フィールドへのアクセスを読み出している。変形型では、エンティティはまた、フィールドのための値を記憶してもよい。この例では、エンティティが要求されたフィールドの値を記憶する場合、そのエンティティは上流のエンティティ及び/又はデータソースに行って、その上流のエンティティ及び/又はデータソースがそのフィールドのための値を提供できるか否かを特定する必要がない。その代わりに、エンティティはそれ自体、下流のエンティティ(そのフィールドを要求する)に対し、上流のエンティティがそのフィールドの値を提供できると応答することができる。
【0146】
この上記の例において、エンティティは、どのフィールドをいつドロップすべきかがわかるが、それは、各エンティティが、そのエンティティのための入力データフォーマット及び出力データフォーマットを指定するデータを記憶しているか、又はそれにアクセスできるからである。出力データフォーマットは、エンティティがそのための値を出力する必要のあるフィールドを指定する。ある例において、出力データフォーマット(又は、出力フィールド若しくは出力フォーマット)は、1つ又は複数の下流の(例えば、その後発生する)エンティティにより必要とされるどのフィールドが特定の上流のエンティティにより提供できるかを指定する。この例では、上流及び下流のエンティティは、データフローグラフの中の同じデータフローの一部である。すなわち、上流のエンティティは、出力フォーマットを介してこれらのフィールドを提供するように構成される。入力データフォーマットは、エンティティがそのための値を受け取るように構成されるフィールドを指定する。一般に、入力データフォーマットは、エンティティのためにアクセスされ、又は処理される必要のあるフィールドを含む。そのため、どのフィールドをいつドロップすべきかを特定するために、エンティティは、それぞれの出力データフォーマットの内容を構文解析し、又はそれ以外に分析する。
【0147】
変形型において、エンティティ132は以下のように構成される:フィールドyの値を、その値がゼロでないかぎり、エンティティ130から受け取り、ゼロである場合、フィールドyの値をエンティティ134から受け取る。この変形型では、エンティティ126、128、130、134の各々は出力データフォーマットの一部としてフィールドyで構成される。
【0148】
図6を参照すると、グラフィカルユーザインタフェース200が表示され(例えば、クライアントデバイス又はデータ処理システムによる)、ユーザがあるエンティティのため、及びそのエンティティを含むデータフローグラフのための仕様書を構成できるようにする。この例では、グラフィカルユーザインタフェース200は、入力データセットに関する仕様書の1つ又は複数の部分を構成するための部分202を含む。グラフィカルユーザインタフェース200はまた、入力データセットについて実行されるべき各種の動作(例えば、データ結合)を指定する値を入力するための部分204も含む。グラフィカルユーザインタフェース200はまた、値と、出力データセット及び出力データセットの記憶装置を指定するデータを入力するための部分206も含む。
【0149】
図7を参照すると、グラフィカルユーザインタフェース209はグラフィカルユーザインタフェース200の変形型である。この変形型では、エンティティを構成するためのオーバレイ208が表示される。この例では、エンティティは、部分204の1つ又は複数の選択可能部分を選択すると構成される。この例では、オーバレイ208は、データ処理の一環として行われるべき動作(例えば、結合動作、マッピング動作、及びフィルタ処理動作)を構成するための構成コントロール210、212、214、216を含む。この例では、ユーザは構成コントロール210を選択して、結合動作がデータレコードについて行われることになることを指定する。
【0150】
図8を参照すると、グラフィカルユーザインタフェース220は、エンティティに含められる結合動作を構成するためのオーバレイ222を表示する。この例では、オーバレイ222は、構成コントロール210が選択されると表示される。この例では、オーバレイ222は、結合動作を構成するためのコントロールを表示する。特に、オーバレイ222は構成コントロール224、226、228、229、230を表示する。この例では、構成コントロール224により、ユーザは結合を実行する相手のデータセットを指定することができる。構成コントロール226により、ユーザは結合動作のための名前を入力することができる。構成コントロール228により、ユーザは自分が重複するデータレコードを除去したいか否かを指定することができる。構成コントロール229により、ユーザは結合が行われるキー(すなわち、固有の識別子)を指定することができる。構成コントロール230により、ユーザは行われるべき結合の種類を指定することができる。
【0151】
図9を参照すると、データ処理システムは、データフローグラフ240を、例えば指定された値(例えば、
図6~8に示されるユーザインタフェース内で入力され、又はそれ以外に指定される値)から生成された仕様書に基づいて生成する。この例では、仕様書は、例えば
図2Eに関して本明細書に記載されている技術を使って生成される。追加的に、データフローグラフ240も、同じく本明細書に記載されている技術を使って、仕様書から生成される。
【0152】
この例では、データフローグラフ240は、入力データソース242、244、246、248、250、エンティティ252、254、256、258、260、262、及び出力データソース264を含む。この例では、エンティティ252、254、256、258、260、262の各々はデータフローグラフ(例えば、データフローグラフ240等の親データフローグラフ内に含められることになるデータフローグラフ)を含む。
【0153】
図10を参照すると、略
図300は、仕様書を、データフローグラフを生成するためのエンティティに変換するプロセスを示す。動作において、システム(例えば、本明細書に記載の
図1Aのシステム1)は、少なくともエンティティの第一のパラメータの値を入力するための第一の部分と、少なくともそのエンティティの第二のパラメータの値を入力するための第二の部分とを含むユーザインタフェースを提供する。システムは、第一のパラメータの入力値を表すデータと、第二のパラメータの入力値を表すデータとを受け取る(302)。任意選択により、システムは入力値を表すデータについて、エンティティの対応するパラメータに関連する所定の基準に適合するかをチェックしてよく、ユーザに対し、(例えば、ユーザインタフェースを介して)、入力値が所定の基準に適合するか否かを示す通知を出力してもよい。システムが、入力値の幾つかが所定の基準に適合しないと特定した場合、通知(警告等)は、ユーザを、エンティティの対応するパラメータのための、所定の基準に適合する新たな1つ又は複数の値を入力するように導く情報も含んでいてよい。換言すれば、システムは任意選択により、導かれたユーザマシン相互作用プロセスを提供してもよく、これにより、例えば最終的に受け取った値が確実に所定の基準に適合するようにすることによって、エンティティの適正な動作が確実となる。
【0154】
入力値に基づいて、システムはエンティティのための仕様書を生成し(304)、この仕様書は、データレコードを入力値にしたがって処理するための複数のデータ操作を指定し、データ操作の少なくとも1つは、受け取ったデータのうち入力値を表す部分により指定され、任意選択により、データ操作の少なくとも他の1つは、データ処理システムにより(例えば、自動的に、及び例えばユーザの入力を必要とせずに(それとは独立して)、例えば、指定されたルールに基づいて)、受け取ったデータのうち入力値を表す部分により指定されたデータ操作の少なくとも1つを実行できるようにするために仕様書に含めるものとして特定される。仕様書の複数の部分の各々について、システムは、仕様書のその部分により指定された1つ又は複数のデータ操作をカプセル化するコンポーネントを特定する(306)。
【0155】
システムは、データ操作を実行するための特定されたコンポーネントを有するエンティティを生成し(308)、コンポーネントの第一のものは、第一のパラメータの値にしたがって1つ又は複数の動作を行うように構成され、コンポーネントの第二のものは、第二のパラメータの値にしたがって1つ又は複数の動作を行うように構成される。追加的に、それぞれの仕様書から特定されたそれぞれのコンポーネントで生成されたエンティティに基づいて、システムは、エンティティ間のデータフローを表すコンピュータプログラム又はデータフローグラフを生成する(310)。
【0156】
図11を参照すると、データ処理システム(例えば、
図1Aのシステム1、
図1Aのデータ処理システム4、又は
図1Aの変換環境5)は、仕様書を永続的コンピュータプログラムに変換するプロセス320を実装する。一般に、永続的とは、それを作成したプロセスが終了しても残る状態の特徴を指す。一般に、コンピュータプログラムは、データ処理システムにより実行可能な一連のコード化された命令を含む。動作において、データ処理システムは、第一のエンティティとその第一のエンティティにより実装される第一のデータ操作の第一のパラメータの入力値を指定し、さらに第二のエンティティとその第二のエンティティにより実装される第二のデータ操作の第二のパラメータの入力値を指定する仕様書データを受け取る(322)。
【0157】
第一及び第二のエンティティのパラメータの入力値に基づいて、データ処理システムは、1つ又は複数のデータセットの処理において複数の異なるデータ操作を実行するコンピュータプログラムのための仕様書を生成し(324)、仕様書は、第一のエンティティがコンピュータプログラムの中に含められ、第一のエンティティは、少なくとも第一のパラメータの入力値にしたがってデータを処理するための少なくとも第一のデータ操作を実装することを指定し、仕様書はさらに、第二のエンティティがコンピュータプログラムの中に含められ、第二のエンティティは、少なくとも第二のパラメータの入力値にしたがってデータを処理するための第二のデータ操作を実装することを指定し、任意選択により、仕様書の中で第一のエンティティ又は第二のエンティティにより実装されると指定された少なくとも1つのデータ操作は、データ処理システムにより、ユーザインタフェースの中でそのエンティティのためのデータ操作として指定されることとは無関係に、そのエンティティの中に含められるものとして選択される。
【0158】
本明細書に記載の技術を使って、データ処理システムは、仕様書を、1つ又は複数のデータセットの処理において複数の異なるデータ操作を実行するコンピュータプログラムに変換し(326)、任意選択により、コンピュータプログラムの1つ又は複数の部分の内容は、ユーザインタフェースへの入力とは異なる。すなわち、仕様書の変換により、新しいコンピュータプログラムが得られ、これは、例えば後に実行及び/又は変更するために、メモリに記憶される。データ処理システムはまた、コンピュータプログラムをメモリに保存する(328)。このコンピュータプログラムは、永続的且つ編集可能である。追加的に、このコンピュータプログラムは、例えば後日実行するために保存される。
【0159】
各エンティティについて、データ処理システムは、そのエンティティのための入力及び出力データフォーマットを保存する(330)。入力データフォーマットは、そのエンティティによりアクセスされる1つ又は複数のテータセットの1つ又は複数のフィールドを指定する。出力データフォーマットは、コンピュータプログラム内でそのエンティティの後に(すなわち、その下流で)発生する1つ又は複数のエンティティによりアクセスされる1つ又は複数のフィールドを指定する。この例では、データ処理システムは、例えば
図4及び5に関して本明細書に記載される技術を使って、入力及び出力データフォーマットを自動的に特定する。出力データフォーマットの特定のために、これらの技術は、コンピュータプログラム内でそのエンティティの後に(すなわち、その下流で)発生する他のエンティティを特定することであって、他のエンティティとそのエンティティはコンピュータプログラムの中のデータフローの一部である、特定することと、他のエンティティによりアクセスされる1つ又は複数のフィールドを特定することと、他のエンティティによりアクセスされる1つ又は複数のフィールドのうちどれが、そのエンティティによりアクセス可能かを特定することと、エンティティの出力データフォーマットを、他のエンティティによりアクセスされる、及びそのエンティティによりアクセスすることができる1つ又は複数のフィールドを含むように設定することと、を含む。
【0160】
この例では、データ処理システムはまた、各エンティティについて、そのエンティティによりアクセスされる1つ又は複数のフィールドを、そのエンティティによるこれらの1つ又は複数のフィールドにおけるデータ(例えば、値)の処理の後にデータレコードからドロップできるか否かを特定する(332)。データ処理システムは、コンピュータプログラムの中でそのエンティティの後に(すなわち、下流で)発生する1つ又は複数の他のエンティティと同じデータフローの一部であるコンピュータプログラム内の各エンティティについて、コンピュータプログラムのエンティティにより読み出され、エンティティの後に(すなわち、その下流で)発生する1つ又は複数の他のエンティティの何れによっても読み出されない1つ又は複数のフィールドを特定し、エンティティによるこれらの1つ又は複数のフィールドを読み出した後に、その1つ又は複数のフィールドがコンピュータプログラムによるさらなる処理を受けないようにすることによって、それを行う。
【0161】
変形型において、データ処理システムは、複数のエンティティの中から、1つ又は複数のデータセットの処理において複数の異なるデータ操作を実行するコンピュータプログラムに含めるための1つ又は複数のエンティティを選択するため、及び選択された各エンティティについて、そのエンティティにより実装されるデータ操作のパラメータの値を入力するためのユーザインタフェース用データを提供する。他の変形型において、データ処理システムは、どのエンティティをコンピュータプログラムに含めるか、及びそれらのエンティティのためのパラメータ値を指定するデータを入力するスプレッドシート又はルールエディタを提供する。
【0162】
複数のエンティティの中から1つ又は複数のエンティティを選択できるようにすることによって、データ処理システムは、ソフトウェアモジュールとコードの再使用を可能にし、コンピュータプログラムの生成におけるフレキシビリティと使いやすさを向上させる。例えば、エンティティが定義されると、その同じエンティティは複数の異なるコンピュータプログラムの中で再使用できる。そのようにすることにより、コンピュータプログラムの生成におけるエラーが減る。これは、コンピュータプログラムが、コンピュータプログラムを、すでに定義されたコンピュータプログラムとコード(エラーがない)の選択を介して開発でき、コンピュータプログラムのコンピュータによるプログラミングを新しいコードで始めなくてよいからである。追加的に、ユーザが複数のエンティティの中からあるエンティティを選択できるようにすることにより、データ処理システムは、ユーザインタフェースの中で、エンティティを構成するため、及びコンピュータプログラムを生成するために必要な複雑さを少ない(例えば、最小限の)量しか見せないようにすることができる。データ処理システムは、ユーザに、それについてユーザ入力又は仕様書が必要なパラメータの値のみを促すことによって、そのようにする。ユーザの入力が不要なその他のデータ操作は、ユーザインタフェース内のビューから隠され、データ処理コンピュータプログラムにより、仕様書生成の一部として仕様書に追加される。
【0163】
この例では、仕様書データ(及び/又はユーザ入力)は、何が行われるか(例えば、何が結果か)の意味論的仕様書である。意味論的仕様書に基づいて、データ処理システムは、それがどのように行われるか、例えばどのように結果が実現されるかを指定する論理的仕様書(例えば、一般に本明細書中で仕様書と呼ばれる)を生成する。意味論的仕様書と論理的仕様書との間のこの差を通じて、データ処理システムは、コンピュータプログラムの生成時に、例えば、ユーザが意味論的仕様書の中で(ユーザインタフェース又はフローチャートを介して)指定したステップを省くことにより、エンドツーエンドの最適化を行うことができる。例示的な最適化は、ユーザが、特定のエンティティのパーティション及びソートを実行することを指定する場合である。しかしながら、特定のエンティティの前のあるエンティティがパーティション及びソートのために構成されている場合、コンピュータプログラムは、パーティショニングとソーティングの動作を1つの行の中で2回行わないように最適化される。この点で、グラフ又はコンピュータプログラムの作成は、推奨されるベストプラクティスにしたがって行われ、ユーザはこれを知らなくてよい。そのため、それほど専門知識を持ち合わせない人でも、プロフェッショナルらしく組み立てられたコンピュータプログラムを作成できる。
【0164】
幾つかの例では、エンティティはリンクに対応するデータフローにより連結されるノードに対応する計算コンポーネントを含む。この例では、コンピュータプログラムは、リンクに対応するデータフローにより連結されるノードに対応するエンティティを含むデータフローグラフである。この例では、メモリは揮発性又は不揮発性メモリを含む。追加的に、幾つかの例において、エンティティは1つ又は複数の他のエンティティを含む。
【0165】
上述のグラフ及びエンティティ構成アプローチは、コンピュータ上で実行されるソフトウェアを使って実装できる。例えば、ソフトウェアは、1つ又は複数のコンピュータプログラムの中で、1つ又は複数のコンピュータプログラムされた、又はコンピュータプログラム可能なコンピュータシステム(これは、分散型、クライアント/サーバ、又はグリッド等、様々なアーキテクチャのものであってよい)を実行する手順を形成し、各々が少なくとも1つのプロセッサ、少なくとも1つのデータ記憶システム(揮発性及び不揮発性メモリ及び/又は記憶素子を含む)、少なくとも1つの入力装置又はポート、及び少なくとも1つの出力装置又はポートを含む。ソフトウェアは、例えば計算グラフの設計と構成に関する他のサービスを提供する、より大きいコンピュータプログラムの1つ又は複数のモジュールを形成してもよい。グラフのノードと素子は、コンピュータ可読媒体に記憶されたデータ構造又は、データレポジトリに記憶されたデータモデルに適合するその他の組織化データとして実装できる。
【0166】
ソフトウェアは、汎用又は特定用途プログラマブルコンピュータにより読取り可能なCD-ROM等の記憶媒体上で提供されても、又はネットワークの通信媒体上でそれが実行されるコンピュータへと送達(伝搬信号で符号化される)されてもよい。機能はすべて、特定用途コンピュータ上で実行されても、又は特定用途ハードウェア、例えばコプロセッサを使って実行されてもよい。ソフトウェアは分散方式で実装されてよく、この場合、ソフトウェアにより指定された計算の異なる部分は異なるコンピュータにより実行される。このようなコンピュータプログラムの各々は好ましくは、汎用又は特定用途プログラム可能コンピュータにより読取り可能な記憶媒体又はデバイス(例えば、ソリッドステートメモリ若しくは媒体、又は磁気若しくは光媒体)上に記憶されるか、又はそこにダウンロードされ、記憶媒体又は装置がコンピュータシステムにより読み取られて本明細書に記載の手順を実行するときに、コンピュータを構成し、動作させる。本発明のシステムは、コンピュータプログラムで構成されたコンピュータ可読記憶媒体として実装されることが考えられてもよく、そのように構成された記憶媒体は、コンピュータシステムに、本明細書に記載の機能を実行するために特別な所定の方法で動作させる。
【0167】
多数の実施形態について説明した。しかしながら、本明細書に記載の技術の主旨と範囲から逸脱することなく、様々な変更を加えてよいと理解されたい。例えば、上述のステップの幾つかは順序非依存であり得、それゆえ、説明されたものとは異なる順序で実行できる。さらに、データフローグラフに関して説明した上述の技術はまた、プログラムに関しても実装及び実行できる。
【0168】
上述の説明は、本明細書に記載の技術を例示するものであり、付属の特許請求の範囲により定義されるその範囲を限定しないと理解されたい。例えば、上述の多数の機能ステップは、全体的な処理に実質的に影響を与えることなく、異なる順序で実行してもよい。その他の実施形態も以下の特許請求の範囲に含まれる。
【手続補正書】
【提出日】2023-11-10
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
構造化データ項目の1つまたは複数のフィールドの1つまたは複数の値を処理するコンピュータプログラムに仕様書を変換することにおいてコンピュータシステムが実行する方法であって、
前記構造化データ項目の前記1つまたは複数のフィールドの前記1つまたは複数の値を処理するために前記コンピュータプログラムにより関連付けられることになる複数の動作を指定する仕様書にアクセスするステップと、
複数のモジュールを用いて、前記コンピュータプログラムに前記仕様書を変換するステップであって、前記複数のモジュールが前記動作に基づき、モジュールが、構造化データ項目のフィールドにアクセスするために構成可能であり、
前記複数のモジュールの1つまたは複数の第1のモジュールの各々について、
各々が少なくとも部分的に前記第1のモジュールの出力に基づく入力を受信する、前記複数のモジュールの1つまたは複数の第2のモジュールを特定することと、
1つまたは複数のフィールドを、
前記第1のモジュールによってアクセスされることになるフィールドの中から、特定された前記1つまたは複数の第2のモジュールによって依存される1つまたは複数のフィールドを特定することであって、前記1つまたは複数の第2のモジュールによって依存されると特定された前記1つまたは複数のフィールドが、前記第1のモジュールによってアクセスされることになる前記フィールドよりも少ない、ことと、
前記第1のモジュールの出力が、(i)前記第1のモジュールによってアクセスされることになる前記フィールドおよび(ii)前記1つまたは複数の第2のモジュールによって依存される前記1つまたは複数のフィールドに対応する、1つまたは複数のフィールドの1つまたは複数の値だけを特定するように前記第1のモジュールの出力データフォーマットを指定することと
によって、前記第1のモジュールの前記出力データフォーマット内に含むように設定することと
を含む、ステップと、
永続的メモリの中に前記コンピュータプログラムを保存するステップであって、前記保存されたコンピュータプログラムが、前記1つまたは複数の第1のモジュールの各々のための前記設定された出力データフォーマットを指定するステップと
を含む、方法。
【請求項2】
前記コンピュータプログラムの1つまたは複数の部分の内容が、前記仕様書とは異なり、かつユーザの入力を必要とせずに自動的に生成される、請求項1の方法。
【請求項3】
前記コンピュータプログラムは永続的かつ編集可能である、請求項1の方法。
【請求項4】
前記コンピュータプログラムがデータフローグラフであり、前記モジュールの各々が、前記データフローグラフのノードにより表されるデータフローグラフコンポーネントであり、前記データフローグラフコンポーネントが、ノード間のリンクにより表されるデータフローにより結合される、請求項1の方法。
【請求項5】
データ記憶システムの中で、前記データフローグラフコンポーネントに前記仕様書の一部を表すデータをマッピングするデータ構造にアクセスするステップと、
前記データ構造の中で、前記仕様書の特定部分を表すデータの項目を特定するステップと、
前記データ構造の中で、どのデータフローグラフコンポーネントが前記仕様書の前記特定部分にマッピングされるかを特定するステップと、
前記仕様書により指定される動作の実行順序にしたがって前記データフローグラフに前記特定されたデータフローグラフコンポーネントを追加するステップと
をさらに含む、請求項4の方法。
【請求項6】
前記データフローグラフコンポーネント間の依存性を特定するステップと、これらの特定された依存性に少なくとも部分的に基づいて、前記データフローグラフコンポーネントの出力データフォーマットを指定するステップとをさらに含む、請求項5の方法。
【請求項7】
特定の第1のモジュールについて、
1つまたは複数の第2のモジュールのうちの1つのみが前記特定の第1のモジュールにとってアクセス可能な1つまたは複数のフィールドの特定の1つにアクセスすることを特定するステップと、
前記1つまたは複数の第2のモジュールの前記1つのみが、前記特定の第1のモジュール及び前記1つまたは複数の第2のモジュールの各々とは異なる、前記複数のモジュールの第3のモジュールからの前記1つまたは複数のフィールドの前記特定の1つにアクセスすることを特定するステップと、
前記1つまたは複数の第2のモジュールの前記1つのみによりアクセスされる前記1つまたは複数のフィールドの前記特定の1つのための1つまたは複数の値を出力しないように前記出力データフォーマットを設定するステップと
をさらに含む、請求項1の方法。
【請求項8】
ユーザインタフェースの表示のためにデータを提供するステップと、
前記ユーザインタフェースを介して、複数のモジュールの中からの、前記コンピュータプログラムに含めるための1つまたは複数のモジュールの選択を表すデータを受信するステップと、
前記ユーザインタフェースを介してかつ選択された各モジュールについて、その選択された1つまたは複数のモジュールによって実装される動作のパラメータの値を受信するステップと
をさらに含む、請求項1の方法。
【請求項9】
前記ユーザインタフェースを介して受信した前記値が、前記動作に関連付けられる所定の基準に適合するかどうかを判定するステップと、
前記受信した値が前記所定の基準に適合するかどうかを示す通知を前記ユーザインタフェースを介して出力するステップであって、前記受信した値が前記所定の基準に適合しないと判定された場合、前記通知が、前記受信した値を前記所定の基準に適合するためにどのように変更しなければならないかの案内情報を含む、ステップと
をさらに含む、請求項8の方法。
【請求項10】
前記パラメータの前記値で選択されたモジュールを構成するステップと、
その後他のコンピュータプログラムに含められ、それによって実装される前記構成済みモジュールを記憶するステップと
をさらに含む、請求項8の方法。
【請求項11】
前記コンピュータプログラムを実行する前に、前記複数のモジュールの各特定のモジュールについて、第1、第2、及び第3のパスを実行して、前記特定のモジュールについて、前記特定のモジュールの下流のモジュールによりどのフィールドが必要とされるかを指定する前記設定された出力データフォーマットを決定しかつ保存し、前記特定のモジュールについて、前記特定のモジュールにとってどのフィールドがアクセス可能かを指定する入力データフォーマットを決定しかつ保存するステップをさらに含み、前記実行するステップが、
前記第1のパス中に、前記特定のモジュールが、前記特定のモジュールの上流のモジュールに対し、それ自体により、かつ前記特定のモジュールの下流のいずれかのモジュールにより必要とされる1つまたは複数のフィールドを表すデータを含む1つまたは複数のメッセージをブロードキャストすることであって、前記ブロードキャストを行う前記特定のモジュールがブロードキャストモジュールであり、前記ブロードキャストを受信する前記上流のモジュールが受信モジュールである、ことと
前記第2のパス中に、前記受信モジュールが、前記ブロードキャストモジュールに対し、どの受信モジュールが前記必要なフィールドの値を提供できるかを指定する1つまたは複数のメッセージを送信することと、
前記第3のパス中に、前記ブロードキャストモジュールが、前記受信モジュールから受信した前記メッセージを分析し、応答として、前記ブロードキャストモジュールは前記受信モジュールに対し、どの受信モジュールが前記ブロードキャストモジュールへのどのフィールドの送信を担当するかを指定する1つまたは複数のメッセージを返信することと、
をさらに含む、請求項1の方法。
【請求項12】
データストリームの中で、1つまたは複数のデータレコードを含む前記構造化データ項目を受信するステップと、
前記1つまたは複数のデータレコードの少なくとも1つについて、
前記コンピュータプログラムを実行して、前記1つまたは複数のデータレコードの前記少なくとも1つを処理するステップと、
前記1つまたは複数の第1のモジュールの少なくとも1つの保存された出力データフォーマットに基づいて、前記1つまたは複数のレコードの前記少なくとも1つを前記1つまたは複数の第2のモジュールの1つにサブミットする前に、前記レコードの前記少なくとも1つから、少なくとも部分的に前記第1のモジュールの前記出力に基づいて、前記1つまたは複数の第2のモジュールの少なくとも1つへの入力として指定されない1つまたは複数のフィールドを除去するステップと、
をさらに含む、請求項1の方法。
【請求項13】
前記仕様書の中で、1つまたは複数の新規モジュールを定義するステップと、
他の仕様書に含めるために利用できるエンティティを指定するグローバルパレットに前記1つまたは複数の新規モジュールの少なくとも1つを保存するステップと
をさらに含む、請求項1の方法。
【請求項14】
前記仕様書の中で、1つまたは複数の新規モジュールを定義するステップと、
前記仕様書に含めるためにのみ利用でき、他の仕様書には含められないエンティティを指定するローカルパレットに前記1つまたは複数の新規モジュールの少なくとも1つを保存するステップと
をさらに含む、請求項1の方法。
【請求項15】
仕様書の定義のために、グローバルパレットに含められた定義済みモジュールにアクセスするステップと、
前記定義済みモジュールの1つまたは複数の属性を変更するステップと、
動作を実行するステップであって、前記動作が、
前記仕様書に含めるためにのみ利用でき、かつ他の仕様書には含められないエンティティを指定するローカルパレットに前記変更された定義済みモジュールを記憶すること、または、
前記変更された定義済みモジュールが他の仕様書にとってもアクセス可能となるように、前記グローバルパレットに前記変更された定義済みモジュールを保存すること
を含む、ステップと
をさらに含む、請求項1の方法。
【請求項16】
前記仕様書の中で、1つまたは複数の新規の第1のモジュールを定義するステップと、
前記仕様書の中で、1つまたは複数の新規の第2のモジュールを定義するステップと、
前記1つまたは複数の新規の第2のモジュールの少なくとも1つのためのデータソースとなるように前記1つまたは複数の新規の第1のモジュールの少なくとも1つを構成するステップと
をさらに含む、請求項1の方法。
【請求項17】
モジュールが、1つまたは複数の他のモジュールを含む、請求項1の方法。
【請求項18】
パラメータの値で選択されたモジュールを構成するステップと、
他のプログラムに後で含めるために前記構成されたモジュールを記憶するステップと
をさらに含む、請求項1の方法。
【請求項19】
前記1つまたは複数の第2のモジュールの1つのみが、前記第1のモジュールにとってアクセス可能な前記1つまたは複数のフィールドの特定の1つにアクセスすると判定するステップと、
前記1つまたは複数の第2のモジュールの前記1つのみが、前記第1のモジュールとは異なる第3のモジュールからの前記1つまたは複数のフィールドの前記特定の1つにアクセスすると判定するステップと、
前記1つまたは複数の第2のモジュールの前記1つのみによりアクセスされる前記1つまたは複数のフィールドの前記特定の1つのための1つまたは複数の値を出力しないように前記出力データフォーマットを設定するステップと
をさらに含む、請求項1の方法。
【請求項20】
構造化データ項目はデータレコードを含む、請求項1の方法。
【請求項21】
構造化データ項目の1つまたは複数のフィールドの1つまたは複数の値を処理するコンピュータプログラムに仕様書を変換することにおいてコンピュータシステムが実行する方法であって、
前記構造化データ項目の前記1つまたは複数のフィールドの前記1つまたは複数の値を処理するために複数のモジュールに関連付けられるようにコンピュータプログラムに複数の動作を指定する仕様書を変換するステップであって、前記複数のモジュールが前記動作に基づき、モジュールが、構造化データ項目のフィールドにアクセスするために構成可能であり、
前記複数のモジュールの1つまたは複数の第1のモジュールの各々について、
前記第1のモジュールの出力に各々が少なくとも部分的に基づく入力を受信する、前記複数のモジュールの1つまたは複数の第2のモジュールを特定することと、
1つまたは複数の値が前記1つまたは複数の第2のモジュールによって処理される、前記フィールドの1つまたは複数を、
前記1つまたは複数の第2のモジュールの各々について、前記第2のモジュールが1つまたは複数のフィールドの1つまたは複数の値を処理するように構成されているときに、前記フィールドの、そのための1つまたは複数の値がその第2のモジュールによって処理される1つまたは複数を特定することによって、
特定することと、
前記1つまたは複数の値が前記1つまたは複数の第2のモジュールにより処理される前記1つまたは複数のフィールドの中から、1つまたは複数の値が前記第1のモジュールにとってアクセス可能な、前記フィールドの1つまたは複数を特定することと、
前記1つまたは複数の値が前記第1のモジュールにとってアクセス可能な前記1つまたは複数のフィールドの各々について、
前記フィールドの値が、前記第1のモジュールの前記出力に少なくとも部分的に基づいて前記1つまたは複数の第2のモジュールの少なくとも1つへの入力として指定されるかどうかを判定することと、
1つまたは複数のフィールドを、
前記第1のモジュールによってアクセスされることになるフィールドの中から、特定された前記1つまたは複数の第2のモジュールによって依存される1つまたは複数のフィールドを特定することであって、前記1つまたは複数の第2のモジュールによって依存されると特定された前記1つまたは複数のフィールドが、前記第1のモジュールによってアクセスされることになる前記フィールドよりも少ない、ことと、
前記第1のモジュールの出力が、(i)前記第1のモジュールによってアクセスされることになる前記フィールドおよび(ii)前記1つまたは複数の第2のモジュールによって依存される前記1つまたは複数のフィールドに対応する、1つまたは複数のフィールドの1つまたは複数の値だけを特定するように前記第1のモジュールの出力データフォーマットを指定することと
によって、前記第1のモジュールの前記出力データフォーマット内に含むように特定することと
を含む、ステップと、
永続的メモリの中に前記コンピュータプログラムを保存するステップであって、前記コンピュータプログラムは、前記1つまたは複数の第1のモジュールの各々についての出力データフォーマットを指定する、ステップと
を含む、方法。
【請求項22】
構造化データ項目の1つまたは複数のフィールドの1つまたは複数の値を処理するコンピュータプログラムに仕様書を変換するためのコンピュータシステムであって、
1つまたは複数の処理装置と、
前記1つまたは複数の処理装置によって実行可能な命令を記憶した1つまたは複数の機械可読ハードウェア記憶装置であって、
前記構造化データ項目の前記1つまたは複数のフィールドの前記1つまたは複数の値を処理するために前記コンピュータプログラムにより関連付けられることになる複数の動作を指定する仕様書にアクセスすることと、
複数のモジュールを用いて、前記コンピュータプログラムに前記仕様書を変換することであって、前記複数のモジュールが前記動作に基づき、モジュールが、構造化データ項目のフィールドにアクセスするために構成可能であり、
前記複数のモジュールの1つまたは複数の第1のモジュールの各々について、
各々が少なくとも部分的に前記第1のモジュールの出力に基づく入力を受信する、前記複数のモジュールの1つまたは複数の第2のモジュールを特定することと、
1つまたは複数のフィールドを、
前記第1のモジュールによってアクセスされることになるフィールドの中から、特定された前記1つまたは複数の第2のモジュールによって依存される1つまたは複数のフィールドを特定することであって、前記1つまたは複数の第2のモジュールによって依存されると特定された前記1つまたは複数のフィールドが、前記第1のモジュールによってアクセスされることになる前記フィールドよりも少ない、ことと、
前記第1のモジュールの出力が、(i)前記第1のモジュールによってアクセスされることになる前記フィールドおよび(ii)前記1つまたは複数の第2のモジュールによって依存される前記1つまたは複数のフィールドに対応する、1つまたは複数のフィールドの1つまたは複数の値だけを特定するように前記第1のモジュールの出力データフォーマットを指定することと
によって、前記第1のモジュールの前記出力データフォーマット内に含むように設定することと
を含む、ことと、
永続的メモリの中に前記コンピュータプログラムを保存することであって、前記保存されたコンピュータプログラムが、前記1つまたは複数の第1のモジュールの各々のための前記設定された出力データフォーマットを指定することと
を行うための1つまたは複数の機械可読ハードウェア記憶装置と
を備える、コンピュータシステム。
【請求項23】
構造化データ項目の1つまたは複数のフィールドの1つまたは複数の値を処理するコンピュータプログラムに仕様書を変換するための1つまたは複数の機械可読ハードウェア記憶装置であって、
前記構造化データ項目の前記1つまたは複数のフィールドの前記1つまたは複数の値を処理するために前記コンピュータプログラムにより関連付けられることになる複数の動作を指定する仕様書にアクセスすることと、
複数のモジュールを用いて、前記コンピュータプログラムに前記仕様書を変換することであって、前記複数のモジュールが前記動作に基づき、モジュールが、構造化データ項目のフィールドにアクセスするために構成可能であり、
前記複数のモジュールの1つまたは複数の第1のモジュールの各々について、
各々が少なくとも部分的に前記第1のモジュールの出力に基づく入力を受信する、前記複数のモジュールの1つまたは複数の第2のモジュールを特定することと、
1つまたは複数のフィールドを、
前記第1のモジュールによってアクセスされることになるフィールドの中から、特定された前記1つまたは複数の第2のモジュールによって依存される1つまたは複数のフィールドを特定することであって、前記1つまたは複数の第2のモジュールによって依存されると特定された前記1つまたは複数のフィールドが、前記第1のモジュールによってアクセスされることになる前記フィールドよりも少ない、ことと、
前記第1のモジュールの出力が、(i)前記第1のモジュールによってアクセスされることになる前記フィールドおよび(ii)前記1つまたは複数の第2のモジュールによって依存される前記1つまたは複数のフィールドに対応する、1つまたは複数のフィールドの1つまたは複数の値だけを特定するように前記第1のモジュールの出力データフォーマットを指定することと
によって、前記第1のモジュールの前記出力データフォーマット内に含むように設定することと
を含む、ことと、
永続的メモリの中に前記コンピュータプログラムを保存することであって、前記保存されたコンピュータプログラムが、前記1つまたは複数の第1のモジュールの各々のための前記設定された出力データフォーマットを指定することと
を行うための1つまたは複数の機械可読ハードウェア記憶装置と
を含む動作を実行する命令を記憶する、1つまたは複数の機械可読ハードウェア記憶装置。
【外国語明細書】