(57)【特許請求の範囲】
【請求項１】
データを変換するための規則セットをコード化する、１つ以上のデータ処理装置によって実行される方法であって、
実行ケースのシーケンスの内部の少なくとも１つの実行ケースが、１つ以上のトリガ条件と、前記１つ以上のトリガ条件がすべて満たされると生成される出力の仕様とを含む前記実行ケースのシーケンスを含む規則セットを受信することと、
前記規則セット内の１つ以上の実行ケースに対応する行のシーケンスを含む制御構造を生成することであって、各行が、１つ以上のトリガ条件のシーケンスと、対応する実行ケースの出力を規定する情報とを含み、前記生成された制御構造が、前記トリガ条件の１つが失敗したときに異なる行で継続するように処理を誘導するように構成され、前記生成された制御構造が、前記制御構造内の前記トリガ条件の少なくとも１つについて、前記少なくとも１つのトリガ条件が失敗したときに、前記制御構造が、前記失敗したトリガ条件を有する行の前記シーケンス内の少なくとも１つの残りの行をスキップさせるように処理を誘導するように構成されたことと、
前記制御構造を記憶又は送信することと、
を含む、方法。
【請求項２】
入力データを受信することと、
前記制御構造を用いて決定したシーケンス内の前記入力データに照らしてトリガ条件を検査することと、
前記制御構造によって規定された出力に基づいてデータを記憶又は送信することと、
をさらに含む、請求項１に記載の方法。
【請求項３】
前記行の少なくとも１つが、前記対応する実行ケースのトリガ条件を除外し、前記除外されたトリガ条件が実行ケースの前記シーケンス内の前記対応する実行ケースより前の実行ケース内で発生する、請求項１に記載の方法。
【請求項４】
行内のトリガ条件の前記シーケンスが、各々が前記規則セットの一意的なトリガ条件のリスト内のあるトリガ条件へ処理を誘導するコードの部分のシーケンスである、請求項１に記載の方法。
【請求項５】
行内の前記出力を規定する前記情報が、前記規則セットの一意的な出力のリスト内の出力式へ処理を誘導するコードの部分である、請求項１に記載の方法。
【請求項６】
データ処理中に前記シーケンス内のトリガ条件が失敗したときに処理が誘導される異なる行に基づいて行のトリガ条件の前記シーケンスをソートすることをさらに含む、請求項１に記載の方法。
【請求項７】
前記トリガ条件の実行時間に基づいて行のトリガ条件の前記シーケンスをソートすることをさらに含む、請求項１に記載の方法。
【請求項８】
入力データを受信することと、
前記制御構造を用いて決定したシーケンス内の前記入力データに照らしてトリガ条件を検査することと、
前記入力データで前記トリガ条件を実行するのにかかる時間に基づいて一意的なトリガ条件のリスト内のトリガ条件の前記実行時間を更新することと、
前記更新された実行時間に基づいて前記制御構造内の行のトリガ条件へのポインタをソートすることと、
をさらに含む、請求項７に記載の方法。
【請求項９】
トリガ条件の失敗率に基づいて行のトリガ条件の前記シーケンスをソートすることをさらに含む、請求項１に記載の方法。
【請求項１０】
入力データを受信することと、
前記制御構造を用いて決定したシーケンス内の前記入力データに照らしてトリガ条件を検査することと、
前記入力データ内のレコードによって前記トリガ条件が満たされるか否かに基づいて一意的なトリガ条件のリスト内のトリガ条件の失敗率を更新することと、
前記更新された失敗率に基づいて前記制御構造内の行のトリガ条件へのポインタをソートすることと、
をさらに含む、請求項９に記載の方法。
【請求項１１】
前記制御構造の行が、前記行のすべての前記トリガ条件が満たされると次に処理する前記制御構造の異なる行へ処理を誘導するコードの部分をさらに含む、請求項１に記載の方法。
【請求項１２】
前記規則セットが、グラフィカルユーザインターフェイスを介して規定される、請求項１に記載の方法。
【請求項１３】
前記規則セット内の実行ケースの少なくとも２つのトリガ条件が組み合わされて、前記制御構造内の単一のトリガ条件で表される、請求項１に記載の方法。
【請求項１４】
前記規則セット内の異なる実行ケースの少なくとも２つの出力が組み合わされて、前記制御構造内の行内の単一の出力式で表される、請求項１に記載の方法。
【請求項１５】
前記制御構造が、ノードが前記制御構造の行内の前記トリガ条件及び出力式に対応する非周期的有向グラフである、請求項１に記載の方法。
【請求項１６】
データを変換するための規則セットをコード化するソフトウェアを記憶したコンピュータ可読媒体であって、前記ソフトウェアが、コンピューティングシステムに、
実行ケースのシーケンスの内部の少なくとも１つの実行ケースが、１つ以上のトリガ条件と、前記１つ以上のトリガ条件がすべて満たされると生成される出力の仕様とを含む前記実行ケースのシーケンスを含む規則セットを受信させ、
前記規則セット内の１つ以上の実行ケースに対応する行のシーケンスを含む制御構造を生成させ、各行が、１つ以上のトリガ条件のシーケンスと、対応する実行ケースの出力を規定する情報とを含み、前記生成された制御構造が、入力データを変換する将来の処理中に、前記トリガ条件の１つが失敗したときに異なる行で継続するように処理を誘導するように構成され、前記生成された制御構造が、前記制御構造内の前記トリガ条件の少なくとも１つについて、前記少なくとも１つのトリガ条件が失敗したときに、前記制御構造が、前記失敗したトリガ条件を有する行の前記シーケンス内の少なくとも１つの残りの行をスキップさせるように処理を誘導するように構成され、
前記制御構造を記憶又は送信させる命令を含む、媒体。
【請求項１７】
コンピューティングシステムに、
入力データを受信させ、
前記制御構造を用いて決定したシーケンス内の入力データに照らしてトリガ条件を検査させ、
前記制御構造によって規定された出力に基づいてデータを記憶又は送信させる命令を含む、請求項１６に記載の媒体。
【請求項１８】
前記行の少なくとも１つが、前記対応する実行ケースのトリガ条件を除外し、前記除外されたトリガ条件が実行ケースのシーケンス内の前記対応する実行ケースより前の実行ケース内で発生する、請求項１６に記載の媒体。
【請求項１９】
行内のトリガ条件の前記シーケンスが、各々が前記規則セットの一意的なトリガ条件のリスト内のあるトリガ条件へ処理を誘導するコードの部分のシーケンスである、請求項１６に記載の媒体。
【請求項２０】
行内の前記出力を規定する前記情報が、前記規則セットの一意的な出力のリスト内の出力式へ処理を誘導するコードの部分である、請求項１６に記載の媒体。
【請求項２１】
コンピューティングシステムに、
データ処理中に前記シーケンス内のトリガ条件が失敗したときに処理が誘導される異なる行に基づいて行のトリガ条件の前記シーケンスをソートさせる命令を含む、請求項１６に記載の媒体。
【請求項２２】
コンピューティングシステムに、
前記トリガ条件の実行時間に基づいて行のトリガ条件の前記シーケンスをソートさせる命令を含む、請求項１６に記載の媒体。
【請求項２３】
コンピューティングシステムに、
入力データを受信させ、
前記制御構造を用いて決定したシーケンス内の前記入力データに照らしてトリガ条件を検査させ、
前記入力データで前記トリガ条件を実行するのにかかる時間に基づいて一意的なトリガ条件のリスト内のトリガ条件の実行時間を更新させ、
前記更新された実行時間に基づいて前記制御構造内の行のトリガ条件へのポインタをソートさせる命令を含む、請求項２２に記載の媒体。
【請求項２４】
コンピューティングシステムに、
前記トリガ条件の失敗率に基づいて行のトリガ条件の前記シーケンスをソートさせる命令を含む、請求項１６に記載の媒体。
【請求項２５】
コンピューティングシステムに、
入力データを受信させ、
前記制御構造を用いて決定したシーケンス内の前記入力データに照らしてトリガ条件を検査させ、
前記入力データ内のレコードによって前記トリガ条件が満たされるか否かに基づいて一意的なトリガ条件のリスト内のトリガ条件の失敗率を更新させ、
前記更新された失敗率に基づいて前記制御構造内の行のトリガ条件へのポインタをソートさせる命令を含む、請求項２４に記載の媒体。
【請求項２６】
前記制御構造の行が、前記行のすべてのトリガ条件が満たされると、次に処理する前記制御構造の異なる行へ処理を誘導するコードの部分をさらに含む、請求項１６に記載の媒体。
【請求項２７】
前記規則セットがグラフィカルユーザインターフェイスを介して規定される、請求項１６に記載の媒体。
【請求項２８】
前記規則セット内の実行ケースの少なくとも２つのトリガ条件が組み合わされて、前記制御構造内の単一のトリガ条件で表される、請求項１６に記載の媒体。
【請求項２９】
前記規則セット内の異なる実行ケースの少なくとも２つの出力が組み合わされて、前記制御構造の行内の単一の出力式で表される、請求項１６に記載の媒体。
【請求項３０】
前記制御構造が、ノードが前記制御構造の前記行内の前記トリガ条件及び出力式に対応する非周期的有向グラフである、請求項１６に記載の媒体。
【請求項３１】
データを変換するための規則セットをコード化するコンピューティングシステムであって、
実行ケースのシーケンスの内部の少なくとも１つの実行ケースが、１つ以上のトリガ条件と、前記１つ以上のトリガ条件がすべて満たされると生成される出力の仕様とを含む前記実行ケースのシーケンスを含む規則セットを受信するように構成された入力デバイス又はポートと、
前記規則セット内の１つ以上の実行ケースに対応する行のシーケンスを含む制御構造を生成する手段であって、各行が、１つ以上のトリガ条件のシーケンスと、対応する実行ケースの出力を規定する情報とを含み、前記生成された制御構造が、入力データを変換する将来の処理中に、前記トリガ条件の１つが失敗したときに異なる行で継続するように処理を誘導するように構成され、前記生成された制御構造が、前記制御構造内の前記トリガ条件の少なくとも１つについて、前記少なくとも１つのトリガ条件が失敗したときに、前記制御構造が、前記失敗したトリガ条件を有する行の前記シーケンス内の少なくとも１つの残りの行をスキップさせるように処理を誘導するように構成された手段と、
前記制御構造を記憶するように構成されたデータ記憶システムと、
を含む、コンピューティングシステム。
【請求項３２】
入力データを受信するように構成された入力デバイス又はポートと、
前記制御構造を用いて決定したシーケンス内の前記入力データに照らしてトリガ条件を検査することを含む動作を実行するように構成された少なくとも１つのプロセッサと、
前記制御構造によって規定された出力に基づいてデータを送信するように構成された出力デバイス又はポートとを含む、請求項３１に記載のシステム。
【請求項３３】
前記行の少なくとも１つが、前記対応する実行ケースのトリガ条件を除外し、前記除外されたトリガ条件が、実行ケースの前記シーケンス内の前記対応する実行ケースより前の実行ケース内で発生する、請求項３１に記載のシステム。
【請求項３４】
行内のトリガ条件の前記シーケンスが、各々が前記規則セットの一意的なトリガ条件のリスト内のあるトリガ条件へ処理を誘導するコードの部分のシーケンスである、請求項３１に記載のシステム。
【請求項３５】
行内の前記出力を規定する前記情報が、前記規則セットの一意的な出力のリスト内の出力式へ処理を誘導するコードの部分である、請求項３１に記載のシステム。
【請求項３６】
データ処理中に前記シーケンス内のトリガ条件が失敗したときに処理が誘導される異なる行に基づいて行のトリガ条件の前記シーケンスをソートする手段を含む、請求項３１に記載のシステム。
【請求項３７】
前記トリガ条件の実行時間に基づいて行のトリガ条件の前記シーケンスをソートする手段を含む、請求項３１に記載のシステム。
【請求項３８】
入力データを受信するように構成された入力デバイス又はポートと、
動作を実行するように構成された少なくとも１つのプロセッサであって、前記動作が、
前記制御構造を用いて決定したシーケンス内の前記入力データに照らしてトリガ条件を検査することと、
前記入力データでトリガ条件を実行するのにかかる時間に基づいて一意的なトリガ条件のリスト内のトリガ条件の前記実行時間を更新することとを含む少なくとも１つのプロセッサと、
前記更新された実行時間に基づいて前記制御構造内の行のトリガ条件へのポインタをソートする手段と、
を含む、請求項３７に記載のシステム。
【請求項３９】
トリガ条件の失敗率に基づいて行の前記トリガ条件の前記シーケンスをソートする手段を含む、請求項３１に記載のシステム。
【請求項４０】
前記コンピューティングシステムが、
入力データを受信するように構成された入力デバイス又はポートと、
複数の動作を実行するように構成された少なくとも１つのプロセッサであって、前記複数の動作が、前記制御構造を用いて決定したシーケンス内の前記入力データに照らしてトリガ条件を検査することと、前記入力データ内のレコードによって前記トリガ条件が満たされるか否かに基づいて一意的なトリガ条件のリスト内のトリガ条件の失敗率を更新することとを含む、少なくとも１つのプロセッサと、
前記更新された失敗率に基づいて前記制御構造内の行のトリガ条件へのポインタをソートする手段と、
をさらに含む、請求項３９に記載のシステム。
【請求項４１】
前記制御構造の行が、前記行のすべての前記トリガ条件が満たされると次に処理する前記制御構造の異なる行へ処理を誘導するコードの部分をさらに含む、請求項３１に記載のシステム。
【請求項４２】
前記規則セットが、グラフィカルユーザインターフェイスを介して規定される、請求項３１に記載のシステム。
【請求項４３】
前記規則セット内の実行ケースの少なくとも２つのトリガ条件が組み合わされて、前記制御構造内の単一のトリガ条件で表される、請求項３１に記載のシステム。
【請求項４４】
前記規則セット内の異なる実行ケースの少なくとも２つの出力が組み合わされて、前記制御構造の行内の単一の出力式で表される、請求項３１に記載のシステム。
【請求項４５】
前記制御構造が、ノードが前記制御構造の前記行内の前記トリガ条件及び出力式に対応する非周期的有向グラフである、請求項３１に記載のシステム。
【請求項４６】
前記制御構造を生成する前記手段は、少なくとも１つのプロセッサを含む、請求項３１から４５のいずれか一項に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願の相互参照）
本出願は、２０１３年８月２日出願の米国特許出願第１３／９５８，０３７号の優先権を主張し、これは２０１３年１月１１日出願の米国仮出願第６１／７５１，８１４号及び２０１２年１２月１０日出願の米国仮出願第６１／７３５，４５１号の優先権を主張し、参照によりその全体が本明細書に組み込まれる。
【０００２】
本明細書は、規則セットに基づくデータのトランスフォームを生成するシステムに関する。
【０００３】
複雑な演算は、多くの場合、演算のコンポーネントがグラフの頂点に関連付けられ、コンポーネント間のデータフローがグラフのリンク（アーク、エッジ）に対応する有向グラフ（「データフローグラフ」と呼ばれる）によるデータフローとして表現することができる。コンポーネントは、１つ以上の入力ポートでデータを受信し、データを処理し、１つ以上の出力ポートからデータを提供するデータ処理コンポーネントと、データフローのソース又はシンクの役割を果たすデータセットコンポーネントとを含んでもよい。そのようなグラフベースの演算を実施するシステムは、米国特許第５，９６６，０７２号「EXECUTING COMPUTATIONS EXPRESSED AS GRAPHS」に記載されている。
【発明の概要】
【０００４】
一般的な態様１では、データを変換するための規則セットをコード化する、１つ以上のデータ処理装置によって実行される方法は、その内部の少なくとも１つの実行ケースが、１つ以上のトリガ条件と、１つ以上のトリガ条件がすべて満たされると生成される出力の仕様とを含む実行ケースのシーケンスを含む規則セットを受信することと、規則セット内の１つ以上の実行ケースに対応する行のシーケンスを含む制御構造を生成することであって、各行が、１つ以上のトリガ条件のシーケンスと、対応する実行ケースの出力を規定する情報とを含むこととを含み、生成された制御構造が、入力データを変換する将来の処理中に、トリガ条件の１つが失敗したときに異なる行で継続するように処理を誘導するように構成され、生成された制御構造が、制御構造内のトリガ条件の少なくとも１つについて、少なくとも１つのトリガ条件が失敗したときに、制御構造が、行のシーケンス内の少なくとも１つの行をスキップさせるように処理を誘導するように構成されることと、制御構造を記憶又は送信することとを含む。
【０００５】
入力データを受信することと、制御構造を用いて決定したシーケンス内の入力データに照らしてトリガ条件を検査することと、制御構造によって規定された出力に基づいてデータを記憶又は送信することとをさらに含む、態様１に記載の態様２。
【０００６】
行の少なくとも１つが、対応する実行ケースのトリガ条件を除外し、除外されたトリガ条件が実行ケースのシーケンス内の対応する実行ケースより前の実行ケース内で発生する、態様１〜２のいずれか１項に記載の態様３。
【０００７】
行内のトリガ条件のシーケンスが、各々が規則セットの一意的なトリガ条件のリスト内のあるトリガ条件へ処理を誘導するコードの部分のシーケンスである、態様１〜３のいずれか１項に記載の態様４。
【０００８】
行内の出力を規定する情報が、規則セットの一意的な出力のリスト内の出力式へ処理を誘導するコードの部分である、態様１〜４のいずれか１項に記載の態様５。
【０００９】
データ処理中にシーケンス内のトリガ条件が失敗したときに処理が誘導される異なる行に基づいて行のトリガ条件のシーケンスをソートすることをさらに含む、態様１〜５のいずれか１項に記載の態様６。
【００１０】
トリガ条件の実行時間に基づいて行のトリガ条件のシーケンスをソートすることをさらに含む、態様１〜６のいずれか１項に記載の態様７。
【００１１】
入力データを受信することと、制御構造を用いて決定したシーケンス内の入力データに照らしてトリガ条件を検査することと、入力データでトリガ条件を実行するのにかかる時間に基づいて一意的なトリガ条件のリスト内のトリガ条件の実行時間を更新することと、更新された実行時間に基づいて制御構造内の行のトリガ条件へのポインタをソートすることとをさらに含む、態様１〜７のいずれか１項に記載の態様８。
【００１２】
トリガ条件の失敗率に基づいて行のトリガ条件のシーケンスをソートすることをさらに含む、態様１〜８のいずれか１項に記載の態様９。
【００１３】
入力データを受信することと、制御構造を用いて決定したシーケンス内の入力データに照らしてトリガ条件を検査することと、入力データ内のレコードによってトリガ条件が満たされるか否かに基づいて一意的なトリガ条件のリスト内のトリガ条件の失敗率を更新することと、更新された失敗率に基づいて制御構造内の行のトリガ条件へのポインタをソートすることとをさらに含む、態様１〜９のいずれか１項に記載の態様１０。
【００１４】
制御構造の行が、行のすべてのトリガ条件が満たされると次に処理する制御構造の異なる行へ処理を誘導するコードの部分をさらに含む、態様１〜１０のいずれか１項に記載の態様１１。
【００１５】
規則セットが、グラフィカルユーザインターフェイスを介して規定される、態様１〜１１のいずれか１項に記載の態様１２。
【００１６】
規則セット内の実行ケースの少なくとも２つのトリガ条件が組み合わされて、制御構造内の単一のトリガ条件で表される、態様１〜１２のいずれか１項に記載の態様１３。
【００１７】
規則セット内の異なる実行ケースの少なくとも２つの出力が組み合わされて、制御構造内の行内の単一の出力式で表される、態様１〜１３のいずれか１項に記載の態様１４。
【００１８】
制御構造が、ノードが制御構造の行内のトリガ条件及び出力式に対応する非周期的有向グラフである、態様１〜１４のいずれか１項に記載の態様１５。
【００１９】
一般的な態様１６では、データ処理装置と、データ処理装置に結合されたメモリとを含むシステムである。データ処理装置によって実行されると、データ処理装置に、その内部の少なくとも１つの実行ケースが１つ以上のトリガ条件と、１つ以上のトリガ条件がすべて満たされると生成される出力の仕様とを含む実行ケースのシーケンスを含む規則セットを受信することを含む動作を実行させる命令がその上に記憶されたメモリ。動作は、規則セット内の１つ以上の実行ケースに対応する行のシーケンスを含む制御構造を生成することをさらに含んでもよく、各行は、１つ以上のトリガ条件のシーケンスと、対応する実行ケースの出力を規定する情報とを含み、生成された制御構造は、入力データを変換する将来の処理中に、トリガ条件の１つが失敗したときに異なる行で継続するように処理を誘導するように構成され、生成された制御構造は、制御構造内のトリガ条件の少なくとも１つについて、少なくとも１つのトリガ条件が失敗したときに、制御構造が行のシーケンス内の少なくとも１つの行をスキップさせるように処理を誘導するように構成される。動作は、制御構造を記憶又は送信することをさらに含んでもよい。
【００２０】
動作が、入力データを受信することと、制御構造を用いて決定したシーケンス内の入力データに照らしてトリガ条件を検査することと、制御構造によって規定された出力に基づいてデータを記憶又は送信することとをさらに含む、態様１６に記載の態様１７。
【００２１】
行の少なくとも１つが、対応する実行ケースのトリガ条件を除外し、除外されたトリガ条件が実行ケースのシーケンス内の対応する実行ケースより前の実行ケース内で発生する、態様１６〜１７のいずれか１項に記載の態様１８。
【００２２】
行内のトリガ条件のシーケンスが、各々が規則セットの一意的なトリガ条件のリスト内のあるトリガ条件へ処理を誘導するコードの部分のシーケンスである、態様１６〜１８のいずれか１項に記載の態様１９。
【００２３】
行内の出力を規定する情報が、規則セットの一意的な出力のリスト内の出力式へ処理を誘導するコードの部分である、態様１６〜１９のいずれか１項に記載の態様２０。
【００２４】
動作が、データ処理中にシーケンス内のトリガ条件が失敗したときに処理が誘導される異なる行に基づいて行のトリガ条件のシーケンスをソートすることをさらに含む、態様１６〜２０のいずれか１項に記載の態様２１。
【００２５】
動作が、トリガ条件の実行時間に基づいて行のトリガ条件のシーケンスをソートすることをさらに含む、態様１６〜２１のいずれか１項に記載の態様２２。
【００２６】
動作が、入力データを受信することと、制御構造を用いて決定したシーケンス内の入力データに照らしてトリガ条件を検査することと、入力データでトリガ条件を実行するのにかかる時間に基づいて一意的なトリガ条件のリスト内のトリガ条件の実行時間を更新することと、更新された実行時間に基づいて制御構造内の行のトリガ条件へのポインタをソートすることとをさらに含む、態様１６〜２２のいずれか１項に記載の態様２３。
【００２７】
動作が、トリガ条件の失敗率に基づいて行のトリガ条件のシーケンスをソートすることをさらに含む、態様１６〜２３のいずれか１項に記載の態様２４。
【００２８】
動作が、入力データを受信することと、制御構造を用いて決定したシーケンス内の入力データに照らしてトリガ条件を検査することと、入力データ内のレコードによってトリガ条件が満たされるか否かに基づいて一意的なトリガ条件のリスト内のトリガ条件の失敗率を更新することと、更新された失敗率に基づいて制御構造内の行のトリガ条件へのポインタをソートすることとをさらに含む、態様１６〜２４のいずれか１項に記載の態様２５。
【００２９】
制御構造の行が、行のすべてのトリガ条件が満たされると次に処理する制御構造の異なる行へ処理を誘導するコードの部分をさらに含む、態様１６〜２５のいずれか１項に記載の態様２６。
【００３０】
規則セットがグラフィカルユーザインターフェイスを介して規定される、態様１６〜２６のいずれか１項に記載の態様２７。
【００３１】
規則セット内の実行ケースの少なくとも２つのトリガ条件が組み合わされて、制御構造内の単一のトリガ条件で表される、態様１６〜２７のいずれか１項に記載の態様２８。
【００３２】
規則セット内の異なる実行ケースの少なくとも２つの出力が組み合わされて、制御構造の行内の単一の出力式で表される、態様１６〜２８のいずれか１項に記載の態様２９。
【００３３】
制御構造が、ノードが制御構造の行内のトリガ条件及び出力式に対応する非周期的有向グラフである、態様１６〜２９のいずれか１項に記載の態様３０。
【００３４】
一般的な態様３１では、処理デバイスによって実行可能な命令であって、それが実行されると、処理デバイスに、その内部の少なくとも１つの実行ケースが１つ以上のトリガ条件と、１つ以上のトリガ条件がすべて満たされると生成される出力の仕様とを含む実行ケースのシーケンスを含む規則セットを受信することを含む動作を実行させる命令を含むソフトウェアを記憶したコンピュータ可読記憶媒体。動作は、規則セット内の１つ以上の実行ケースに対応する行のシーケンスを含む制御構造を生成することをさらに含んでもよく、各行は、１つ以上のトリガ条件のシーケンスと、対応する実行ケースの出力を規定する情報とを含み、生成された制御構造は、入力データを変換する将来の処理中に、トリガ条件の１つが失敗したときに異なる行で継続するように処理を誘導するように構成され、生成された制御構造は、制御構造内のトリガ条件の少なくとも１つについて、少なくとも１つのトリガ条件が失敗したときに、制御構造が行のシーケンス内の少なくとも１つの行をスキップさせるように処理を誘導するように構成される。動作は、制御構造を記憶又は送信することをさらに含んでもよい。
【００３５】
動作が、入力データを受信することと、制御構造を用いて決定したシーケンス内の入力データに照らしてトリガ条件を検査することと、制御構造によって規定された出力に基づいてデータを記憶又は送信することとをさらに含む、態様３１に記載の態様３２。
【００３６】
行の少なくとも１つが、対応する実行ケースのトリガ条件を除外し、除外されたトリガ条件が、実行ケースのシーケンス内の対応する実行ケースより前の実行ケース内で発生する、態様３１〜３２のいずれか１項に記載の態様３３。
【００３７】
行内のトリガ条件のシーケンスが、各々が規則セットの一意的なトリガ条件のリスト内のあるトリガ条件へ処理を誘導するコードの部分のシーケンスである、態様３１〜３３のいずれか１項に記載の態様３４。
【００３８】
行内の出力を規定する情報が、規則セットの一意的な出力のリスト内の出力式へ処理を誘導するコードの部分である、態様３１〜３４のいずれか１項に記載の態様３５。
【００３９】
動作が、データ処理中にシーケンス内のトリガ条件が失敗したときに処理が誘導される異なる行に基づいて行のトリガ条件のシーケンスをソートすることをさらに含む、態様３１〜３５のいずれか１項に記載の態様３６。
【００４０】
動作が、トリガ条件の実行時間に基づいて行のトリガ条件のシーケンスをソートすることをさらに含む、態様３１〜３６のいずれか１項に記載の態様３７。
【００４１】
動作が、入力データを受信することと、制御構造を用いて決定したシーケンス内の入力データに照らしてトリガ条件を検査することと、入力データでトリガ条件を実行するのにかかる時間に基づいて一意的なトリガ条件のリスト内のトリガ条件の実行時間を更新することと、更新された実行時間に基づいて制御構造内の行のトリガ条件へのポインタをソートすることとをさらに含む、態様３１〜３７のいずれか１項に記載の態様３８。
【００４２】
動作が、トリガ条件の失敗率に基づいて行のトリガ条件のシーケンスをソートすることをさらに含む、態様３１〜３８のいずれか１項に記載の態様３９。
【００４３】
動作が、入力データを受信することと、制御構造を用いて決定したシーケンス内の入力データに照らしてトリガ条件を検査することと、入力データ内のレコードによってトリガ条件が満たされるか否かに基づいて一意的なトリガ条件のリスト内のトリガ条件の失敗率を更新することと、更新された失敗率に基づいて制御構造内の行のトリガ条件へのポインタをソートすることとをさらに含む、態様３１〜３９のいずれか１項に記載の態様４０。
【００４４】
制御構造の行が、行のすべてのトリガ条件が満たされると次に処理する制御構造の異なる行へ処理を誘導するコードの部分をさらに含む、態様３１〜４０のいずれか１項に記載の態様４１。
【００４５】
規則セットが、グラフィカルユーザインターフェイスを介して規定される、態様３１〜４１のいずれか１項に記載の態様４２。
【００４６】
規則セット内の実行ケースの少なくとも２つのトリガ条件が組み合わされて、制御構造内の単一のトリガ条件で表される、態様３１〜４２のいずれか１項に記載の態様４３。
【００４７】
規則セット内の異なる実行ケースの少なくとも２つの出力が組み合わされて、制御構造の行内の単一の出力式で表される、態様３１〜４３のいずれか１項に記載の態様４４。
【００４８】
制御構造が、ノードが制御構造の行内のトリガ条件及び出力式に対応する非周期的有向グラフである、態様３１〜４４のいずれか１項に記載の態様４５。
【００４９】
制御構造が複数の処理デバイス上で並列に実行されるトランスフォームの一部である、態様１〜１５のいずれか１項に記載の態様４６。
【００５０】
制御構造が複数の処理デバイス上で並列に実行されるトランスフォームの一部である、態様１６〜３０のいずれか１項に記載の態様４７。
【００５１】
制御構造が複数の処理デバイス上で並列に実行されるトランスフォームの一部である、態様３１〜４５のいずれか１項に記載の態様４８。
【００５２】
一態様では、一般に、規則セットに基づいてトランスフォームを生成する方法は、その内部の少なくとも１つの実行ケースが１つ以上のトリガ条件と、１つ以上のトリガ条件がすべて満たされると生成される出力の仕様とを含む実行ケースのシーケンスを含む規則セットを受信することを含む。方法は、規則セット内の１つ以上の実行ケースに対応する行のシーケンスを含む制御構造を生成することをさらに含んでもよく、各行は、１つ以上のトリガ条件のシーケンスと、対応する実行ケースの出力を規定する情報とを含み、生成された制御構造は、入力データを変換する将来の処理中に、トリガ条件の１つが失敗したときに異なる行で継続するように処理を誘導するように構成され、生成された制御構造は、制御構造内のトリガ条件の少なくとも１つについて、少なくとも１つのトリガ条件が失敗したときに、制御構造が行のシーケンス内の少なくとも１つの行をスキップさせるように処理を誘導するように構成される。方法は、制御構造を記憶又は送信することをさらに含んでもよい。
【００５３】
一般に、本明細書に記載する主題の一態様は、データ処理装置と、データ処理装置に結合されたメモリとを含むシステム内に具現化できる。データ処理装置によって実行されると、データ処理装置に、その内部の少なくとも１つの実行ケースが１つ以上のトリガ条件と、１つ以上のトリガ条件がすべて満たされると生成される出力の仕様とを含む実行ケースのシーケンスを含む規則セットを受信することを含む動作を実行させる命令がその上に記憶されたメモリ。動作は、規則セット内の１つ以上の実行ケースに対応する行のシーケンスを含む制御構造を生成することをさらに含んでもよく、各行は、１つ以上のトリガ条件のシーケンスと、対応する実行ケースの出力を規定する情報とを含み、生成された制御構造は、入力データを変換する将来の処理中に、トリガ条件の１つが失敗したときに異なる行で継続するように処理を誘導するように構成され、生成された制御構造は、制御構造内のトリガ条件の少なくとも１つについて、少なくとも１つのトリガ条件が失敗したときに、制御構造が、行のシーケンス内の少なくとも１つの行をスキップさせるように処理を誘導するように構成される。動作は、制御構造を記憶又は送信することをさらに含んでもよい。
【００５４】
一般に、本明細書に記載する主題の一態様は、処理デバイスによって実行可能な命令であって、それが実行されると、処理デバイスに、その内部の少なくとも１つの実行ケースが１つ以上のトリガ条件と、１つ以上のトリガ条件がすべて満たされると生成される出力の仕様とを含む実行ケースのシーケンスを含む規則セットを受信することを含む動作を実行させる命令を含むソフトウェアを記憶したコンピュータ可読記憶媒体内に具現化できる。動作は、規則セット内の１つ以上の実行ケースに対応する行のシーケンスを含む制御構造を生成することをさらに含んでもよく、各行は、１つ以上のトリガ条件のシーケンスと、対応する実行ケースの出力を規定する情報とを含み、生成された制御構造は、入力データを変換する将来の処理中に、トリガ条件の１つが失敗したときに異なる行で継続するように処理を誘導するように構成され、生成された制御構造は、制御構造内のトリガ条件の少なくとも１つについて、少なくとも１つのトリガ条件が失敗したときに、制御構造が行のシーケンス内の少なくとも１つの行をスキップさせるように処理を誘導するように構成される。動作は、制御構造を記憶又は送信することをさらに含んでもよい。
【００５５】
一般に、本明細書に記載する主題の一態様は、その内部の少なくとも１つの実行ケースが１つ以上のトリガ条件と、１つ以上のトリガ条件がすべて満たされると生成される出力の仕様とを含む実行ケースのシーケンスを含む規則セットを受信するように構成された入力デバイス又はポートを含むシステム内に具現化できる。システムは、規則セット内の１つ以上の実行ケースに対応する行のシーケンスを含む制御構造を生成する手段を含んでもよく、各行は、１つ以上のトリガ条件のシーケンスと、対応する実行ケースの出力を規定する情報とを含み、生成された制御構造は、入力データを変換する将来の処理中に、トリガ条件の１つが失敗したときに異なる行で継続するように処理を誘導するように構成され、生成された制御構造は、制御構造内のトリガ条件の少なくとも１つについて、少なくとも１つのトリガ条件が失敗したときに、制御構造が行のシーケンス内の少なくとも１つの行をスキップさせるように処理を誘導するように構成される。システムは、制御構造を記憶するように構成されたデータ記憶システムを含んでもよい。
【００５６】
一般に、本明細書に記載する主題の一態様は、その内部の少なくとも１つの実行ケースが、１つ以上のトリガ条件と、１つ以上のトリガ条件がすべて満たされると生成される出力の仕様とを含む実行ケースのシーケンスを含む規則セットを受信するように構成された入力デバイス又はポートを含むシステム内に具現化できる。システムは、規則セット内の１つ以上の実行ケースに対応する行のシーケンスを含む制御構造を生成することを含む動作を実行するように構成された少なくとも１つのプロセッサを含んでもよく、各行は、１つ以上のトリガ条件のシーケンスと、対応する実行ケースの出力を規定する情報とを含み、生成された制御構造は、入力データを変換する将来の処理中に、トリガ条件の１つが失敗したときに異なる行で継続するように処理を誘導するように構成され、生成された制御構造は、制御構造内のトリガ条件の少なくとも１つについて、少なくとも１つのトリガ条件が失敗したときに、制御構造が行のシーケンス内の少なくとも１つの行をスキップさせるように処理を誘導するように構成される。システムは、制御構造を送信するように構成された出力デバイス又はポートを含んでもよい。
【００５７】
態様は、以下の特徴の１つ以上を含んでもよい。入力データを受信し、制御構造を用いて決定したシーケンス内の入力データに照らしてトリガ条件を検査することができる。制御構造によって規定される出力に基づくデータを記憶又は送信できる。行の少なくとも１つは対応する実行ケースについてトリガ条件を除外することができ、除外されたトリガ条件は実行ケースのシーケンス内の対応する実行ケースに先立つ実行ケース内で発生する。行内のトリガ条件のシーケンスは、各々が規則セットの一意的なトリガ条件のリスト内のトリガ条件へ処理を誘導するコードの部分のシーケンスであってもよい。行内の出力を規定する情報は、規則セットの一意的な出力のリスト内の出力へ処理を誘導するコードの部分であってもよい。行のトリガ条件のシーケンスは、データの処理の実行中にシーケンス内のトリガ条件が失敗したときに処理が誘導される異なる行に基づいてソートすることができる。行のトリガ条件のシーケンスは、トリガ条件の実行時間に基づいてソートすることができる。一意的なトリガ条件のリスト内のトリガ条件の実行時間は、入力データでトリガ条件を実行するのにかかる時間に基づいて更新できる。制御構造内の行のトリガ条件へのポインタは、更新された実行時間に基づいてソートできる。行のトリガ条件のシーケンスは、トリガ条件の失敗率に基づいてソートできる。一意的なトリガ条件のリスト内のトリガ条件の失敗率は、トリガ条件が入力データ内のレコードによって満たされるか否かに基づいて更新できる。制御構造内の行のトリガ条件へのポインタは、更新された失敗率に基づいてソートできる。制御構造の行は、行のトリガ条件がすべて満たされると次に処理される制御構造の異なる行へ処理を誘導するコードの部分を含んでもよい。規則セットは、グラフィカルユーザインターフェイスによって規定できる。規則セット内の実行ケースの少なくとも２つのトリガ条件を組み合わせて、制御構造内の単一のトリガ条件で表すことができる。規則セット内の異なる実行ケースの少なくとも２つの出力を組み合わせて、制御構造の行内の単一の出力で表すことができる。制御構造は、ノードが制御構造の行内のトリガ条件及び出力に対応する非周期的有向グラフであってもよい。
【００５８】
態様は、以下の利点の１つ以上を含んでいてもよい。
【００５９】
幾つかの実施態様は、規則セットに基づいてトランスフォームのレコード当たりの処理時間を低減できる。幾つかの実施態様は、規則セットに基づいてトランスフォームの編集及び起動時間を低減できる。幾つかの実施態様は、規則セットに基づいてトランスフォームの編集中にメモリ使用率を低減できる。幾つかの実施態様は、とりわけ、航空機、自動車、コンピュータ、建物、又はその他のインフラストラクチャなどの物理的エンティティを表すデータのより効率的な処理を提供できる。幾つかの実施態様は、大量のデータを扱うユーザの認識の負担を低減できる。例えば、ユーザは、大量のデータ（例えば、数百万又は数十億件のレコード）の処理をより容易に指定でき、それによって、ユーザはより容易にデータ処理を理解でき、規則セットの仕様の効率的な構造を発見する作業について心配することなく、特定のアプリケーションについてのユーザのドメインの情報を適用することができる。
【００６０】
本発明のその他の特徴及び利点は、以下の説明と請求の範囲から明らかになろう。
【図面の簡単な説明】
【００６１】
【図１】例示的なデータフローグラフの概略図である。
【図２】図２Ａ〜図２Ｂは、スプレッドシートベースの規則の入力のための例示的なグラフィカルユーザインターフェイスを示す図である。
【図３Ａ】規則セットの一意的なトリガ条件のリストの一例を示す。
【図３Ｂ】規則セットの一意的な出力のリストの一例を示す。
【図４】図４Ａ〜図４Ｂは、非周期的有向グラフとして表される規則セットに基づくトランスフォームの例示的な制御構造を示す。
【図５】表示テーブルとして表される規則セットに基づくトランスフォームの例示的な制御構造を示す。
【図６】グラフベースの演算を実行するシステムのブロック図である。
【図７】規則セットに基づくトランスフォームを生成し実行する例示的なプロセスのフローチャートである。
【図８】規則セットに基づくトランスフォームを実行する例示的なプロセスのフローチャートである。
【発明を実施するための形態】
【００６２】
グラフベースの演算を用いて大量のデータセットを処理することができる。例えば、クレジットカードの発行会社は、グラフベースの演算を用いて数百万枚のクレジットカードの取引データを処理し、アワードポイント（award point）を発行し、アワードポイントの償還の提供で提示する提携製品を選択することができる。別の例では、航空会社は、グラフベースの演算を用いて数百万人の航空便の旅客の航空マイレージアカウントを頻繁に更新できる。別の例では、銀行は、グラフベースの演算を用いて様々な情報源から得た消費者データを処理して、特定の消費者の利用可能なデータに依存する最大量までローンのローン承認を生成することができる。別の例では、航空会社は、グラフベースの演算を用いて航空機の一団の保守を追跡し制御することができる。別の例では、レンタカー会社は、グラフベースの演算を用いて車の一団の保守を追跡し制御することができる。別の例では、オンラインサービスプロバイダは、グラフベースの演算を用いてウェブサーバの１つ以上のクラスタの保守及び／又は負荷平衡を追跡し制御することができる。別の例では、市は、道路交通データに基づいて道路交通信号灯器を制御することができる。別の例では、無線ネットワークオペレータは、グラフベースの演算を用いてパーソナル無線通信デバイス（例えば、スマートフォン又はタブレットデバイス）の無線ネットワークアクセスと帯域幅割り当てとを制御することができる。これらは、グラフベースの演算の用途のごく少数の例であり、その他多数の用途が可能である。
【００６３】
グラフベースの演算は、入力データ内のセット内のレコード（又はその他のデータ要素）に適用されるトランスフォームに対応する１つ以上のコンポーネントを含んでもよい。一般に、トランスフォームは、入力レコードを処理して１つ以上の出力レコードを生成（例えば、作成又は更新）する。例えば、クレジットカード発行会社は、クレジットカードのアカウントレコードに関連付けられた取引レコードを処理して提案されたクレジットカード取引の取引承認又は拒否レコードを生成する。トランスフォームが入力レコードを処理して出力レコードを生成する方法の詳細は複雑であり、特定のアプリケーションに関する大量のドメイン情報に依存する。ソフトウェア開発又はコーディングの情報がほとんどないユーザ（例えば、オペレータ又は開発者）が特定のアプリケーションについて有する情報に基づいてトランスフォームを容易に構成できるようにすることは有用であろう。理解しやすいインターフェイスを介して規定された規則に基づいて効率的なトランスフォームを生成するシステムは、そのようなユーザの認識の負担を低減する助けになり得る。
【００６４】
幾つかの実施態様では、ユーザは、スプレッドシートベースのグラフィカルユーザインターフェイス（ＧＵＩ）を介して潜在的に複雑なトランスフォームを構成できる。例えば、ユーザは、各実行ケースのスプレッドシートベースのグラフィカルユーザインターフェイス内に行を作成することで、実行ケースを含む規則セットを規定できる。各々の実行ケースは、入力データ及び１つ以上の出力に照らして検査できるトリガ条件と呼ばれる１つ以上の条件を含んでいてもよい。実行ケースのトリガ条件がすべて入力データによって満たされると、その実行ケースの１つ以上の出力を生成することができる。例えば、トリガ条件及び出力は、ソフトウェアコーディング技術を欠くがドメイン情報を有し、スプレッドシートに慣れたユーザが規則セットを規定することを可能にするスプレッドシートベースのＧＵＩのカラムに対応してもよい。幾つかの実施態様では、スプレッドシートベースのＧＵＩ以外のフォーマットを用いて規則セットを（例えば、データ操作言語（ＤＭＬ）で）規定することができる。
【００６５】
ユーザが規則セットを規定すると、規則セットに基づいて入力データレコードを処理できる１つ以上のトランスフォームを生成できる。規則セットは、複数の実行ケース内で発生するトリガ条件及び／又は出力を含んでもよい。トランスフォームは、トランスフォームを編集して入力データレコードに適用するために必要なメモリ及び処理時間を低減する規則セット内の冗長性を活用する形で生成できる。例えば、複数の実行ケース内でトリガ条件が発生した場合、入力データがそのトリガ条件を満たさないとトランスフォームはそのトリガ条件に照らして残りの実行ケースを検査することをスキップすることができる。規則セット内の冗長性を活用することで、低減されたメモリ及びプロセッサ周期を用いて大規模な入力データセットについてトランスフォームを実行することができる。トランスフォームは、一部をそのトランスフォームの実行フローを制御する制御構造としてコード化できる。制御構造は、行と呼ばれる、規則セットの実行ケースに各々が対応するトリガ条件及び出力の論理的なグループ化を含んでもよい。トランスフォームの実行中、トリガ条件が成立したと評価されると、行内のトリガ条件のシーケンス内の次のトリガ条件が評価される。入力データで評価されるときに行内の最後のトリガ条件が成立すると、少なくとも一部が行によって規定される対応する出力が生成される。入力データで評価されるときにトリガ条件が失敗する（例えば、トリガ条件が満たされない）と、制御構造は異なる実行ケースに対応する異なる行へ処理を誘導する。例えば、トリガ条件が失敗すると、実行フローはジャンプによって幾つかの実行ケースをスキップして制御構造内の行のシーケンス上の次の順番ではない行内のトリガ条件の評価を開始する。幾つかの実施態様では、制御構造は、一意的なトリガ条件及び一意的な出力のリストを参照するため、これらのトリガ条件及び出力は、規則セット内で多くの回数が発生してもトランスフォームのコード化内に１回のみ記憶すればよい。
【００６６】
幾つかの実施態様では、トリガ条件及び規則セットの仕様内で発生するトリガ条件への参照を対応するトランスフォームの制御構造から除外してもよい。例えば、同じトリガ条件が、トリガ条件の現在のインスタンスが評価される前に必ず評価される規則セット内の別の場所で発生するときには、トリガ条件を制御構造の行から除外してもよい。行からトリガ条件を除外することで、対応するトランスフォームのメモリ使用率と処理時間とを低減できる。
【００６７】
幾つかの実施態様では、制御構造の行内の又は制御構造の行によって参照されるトリガ条件を、トリガ条件のパラメータに基づいてソートすることができる。このソーティングを実行して、トランスフォームが適用されるレコードの平均処理時間を低減できる。例えば、トリガ条件の実行時間、評価時にトリガ条件が失敗するとスキップされる行数（例えば、ジャンプサイズ）、又は以前にトランスフォームで処理された入力データの失敗の周期に基づいてトリガ条件のシーケンスをソートすることができる。幾つかの実施態様では、制御構造内の行のシーケンスをソートしてトリガ条件のジャンプサイズを増加させることができる（例えば、実行ケースと共通のトリガ条件とを一緒にグループ化することで）。幾つかの実施態様では、行及び／又は行のシーケンス内のトリガ条件のシーケンスを変更することで、以前に処理したデータに類似した統計情報を有する大規模なデータセットについて対応するトランスフォームを実行するのに必要な処理時間を低減できる。
【００６８】
本明細書では、「規則セット」という用語は、各々が１つ以上の実行ケースで構成された１つ以上の規則の集合を指す。規則内の実行ケースは、入力データの処理中に実行ケースが評価される順序を決定できる配列を有してもよい。「実行ケース」は、１つ以上の出力に関連付けられた１つ以上のトリガ条件の集合である。「トリガ条件」は、実行ケースのその他の任意のトリガ条件と共に、実行ケースが始動（fire）するか否かを決定するために使用される条件である。ある実行ケースのすべてのトリガ条件が入力データによって満たされると決定されると、実行ケースが「始動」する。すなわち、実行ケースの１つ以上の出力が生成される。出力は、規則セットの一部として規定される一定のパラメータに基づいて生成されるという意味で静的であり、又は、出力は、部分的に入力データ値及び／又は中間結果値に基づいて生成されるという意味で動的である。規則は、単一始動又は多重始動である。単一始動規則では、そのトリガ条件のすべてを満たした第1の実行ケースのみが始動する。多重始動規則では、規則を構成するすべての実行ケースが検査され、それぞれのトリガ条件のすべてが満たされるすべての実行ケースについて出力が生成される。規則セット内の多重規則は、シーケンス内のデータフローに適用できる。例えば、規則セットの第１の規則に基づくトランスフォームは、複数の入力データソースからレコードを取り出して出力レコードを生成できる。これらの出力レコードは、次いで規則セットの第２の規則に基づく第２のトランスフォームへ入力レコードとして渡され、出力レコードの第２のセットを生成できる。
【００６９】
図１は、１つ以上のトランスフォームを含む例示的なデータフローグラフ１００の概略図を示す。データは、データのフローを処理するデータフローグラフ１００のデータ処理コンポーネントのシーケンスを通して１つ以上のデータソースから１つ以上のデータシンクへ渡される。データフローグラフ内の様々なデータ処理コンポーネントのいずれも、別々の処理デバイス上で実行中のプロセスによって実施でき、又は複数のデータ処理コンポーネントを単一の処理デバイス上で実行中の１つ以上のプロセスによって実施することもできる。幾つかの実施態様では、入力データレコードは、到着時に（例えば、クレジットカード取引要求に応答して）連続的に処理できる。幾つかの実施態様では、データは、データフローグラフ１００によって処理される入力データレコードのセットを識別するバッチ単位で処理できる。
【００７０】
データフローグラフ１００によるデータバッチの処理は、ユーザ入力又はタイマの満了などのその他の何らかのイベントによって開始できる。データバッチの処理が開始されると、１つ以上の入力データソースから入力データレコードが読み出される。例えば、データ記憶コンポーネント１１０によって表されるようなコンピュータ可読記憶デバイスに記憶された１つ以上のファイルから入力データを読み出すことができる。データ記憶コンポーネント１１２によって表されるようなサーバ上で実行中のデータベースから入力データレコードを読み出すこともできる。ジョインコンポーネント１２０は、シーケンス内の複数のデータソースからデータ（例えば、レコード）を読み出し、入力データを離散的なワークユニットのシーケンスに編成する。ワークユニットは、例えば、入力レコードに基づく所定のフォーマットに記憶されたレコードを表していてもよく、又は、例えば、処理する取引を表していてもよい。ワークユニット（例えば、レコード）は、シーケンス内でデータフローグラフ内の次のコンポーネントへ渡される。
【００７１】
例示的なデータフローグラフ１００はまた、トランスフォームコンポーネント１３０及び１４０を含む。トランスフォームコンポーネント１３０によって実行されるトランスフォームは、単一始動規則に基づいている。すなわち、各ワークユニット（例えば、ジョインプロセスの入力データのレコード）について１つの実行ケースのみが始動する。トランスフォームコンポーネント１３０は、次のデータ処理コンポーネント、この例ではトランスフォームコンポーネント１４０へ渡される出力レコードを生成する。
【００７２】
トランスフォームコンポーネント１４０によって実行されるトランスフォームは、多重始動規則に基づいている。トランスフォームコンポーネント１４０によって生成される出力データレコードは、入力ワークユニットについて始動した実行ケースの各々に対応する出力値のリストを含んでもよい。
【００７３】
例えば、トランスフォームコンポーネント１３０は、様々なデータソースからのクレジットカード取引レコードに対応するジョインプロセス１２０からの入力データレコードを処理できる。トランスフォームコンポーネント１３０は、レコード内に反映された取引の結果としてのクレジットカードに割り当てられるアワードポイントの量を反映する出力レコードを生成できる。この例では、トランスフォームコンポーネント１４０は、次に、クレジットカードアカウントに割り当てられたアワードポイントを処理して、対応するクレジットカードアカウントの保有者に提示される１つ以上の提供製品を生成することができる。
【００７４】
トランスフォームコンポーネント１３０及びトランスフォームコンポーネント１４０は、トランスフォームコンポーネント１３０に対応する単一始動規則及びトランスフォームコンポーネント１４０に対応する多重始動規則の両方を含む規則セットに対応するより大規模なコンポーネント１５０としてグループ化することができる。
【００７５】
ワークユニットはデータフローグラフのデータ処理コンポーネントを通して進行するため、各ワークユニットに関連する結果出力レコードは、データシンク１７０へ移送される前にそれらが蓄積されるデータキュー１６０へ渡される。データシンク１７０は、例えば、ワークユニット又はワークユニットに基づく何らかの蓄積された出力を記憶するデータ記憶コンポーネントであってもよく、あるいは、データシンク１７０は、ワークユニットが公開される行列又は最終的な結果を受信する何か別のタイプのシンクであってもよい。幾つかの実施態様では、バッチ内のすべてのワークユニットがデータシンク１７０へ移送されるとバッチ処理が終了する。この時点で、データフローグラフ内のコンポーネントを終了することができる。
【００７６】
図２Ａは、スプレッドシートベースの規則の入力のための例示的なＧＵＩ２００を示す。ＧＵＩ２００は、クレジットカードアカウントと提携する１つ以上のレコード内で利用可能な取引データに基づいて、クレジットカードアカウントの「アワードポイント」値を決定する単一始動規則をユーザが規定することで構成される。ＧＵＩ２００は、規則の５つの規則ケースを規定する５つの行を含む。ユーザはＧＵＩ２００を用いて、規則の実行ケースのトリガ条件及び出力を規定し、ユーザがデバッグ又はトランスフォームの調整を容易にするために使用できる規則に基づいてトランスフォームのテストランから得たメタデータを表示する。例えば、ＧＵＩ２００は、図６のアプリケーションスペシャリスト環境６２２を介してユーザに提示できる。幾つかの実施態様では、ＧＵＩ２００を介して規定された規則セットは、図６の実行環境６０４のネットワークインターフェイスを介して受信できる。
【００７７】
第１のカラム２０４は、クレジットカードアカウントの平均月次請求額を反映する入力データレコード内の変数に適用されるトリガ条件を規定する。第１のカラムの３行目の下向きの矢印２０６は、第３の実行ケースの第１のトリガ条件が第２の実行ケースの第１のトリガ条件に対するトリガ条件と同じであることを示す。幾つかの実施態様では、ユーザは、下向きの矢印アイコンを手動で選択してスプレッドシートベースのＧＵＩ２００の１つ以上のセル内に下向きの矢印を挿入して、下向きの矢印の始点の真上のトリガ条件と同じ下向きの矢印が通過する実行ケースのトリガ条件を規定できる。幾つかの実施態様では、ユーザは、スプレッドシートベースのＧＵＩ２００の隣接するセル内に同じトリガ条件を手動で入力でき、ＧＵＩ２００は、トリガ条件が同じであることを自動的に認識し、この反復を示す下向きの矢印を生成することができる。
【００７８】
ＧＵＩ２００の第２のカラム２０８は、クレジットカードアカウントがこれまで有効であった年数を反映するクレジットカードアカウントの入力データレコードから導出された変数に適用されるトリガ条件を規定する。また、カラム２０８は、各々が１対の一致するトリガ条件を示す２つの下向きの矢印２１０を含む。
【００７９】
ＧＵＩ２００の第３のカラム２１４は、ある実行ケースのすべてのトリガ条件が評価され満たされると判断されたときに生成される出力を規定する。カラム２１４は、また、第１の２つの実行ケースが同じ出力を有することを示す下向きの矢印２１６を含む。ユーザは、ＧＵＩ２００を介して、これを単一始動規則２１８であると規定しているため、実行ケースは始動すると分かる（例えば、実行ケースのすべてのトリガ条件が入力データのワークユニットによって満たされる）まで１回に１つずつ評価できる。実行ケースが始動すると、その実行ケースについて規定された出力が生成され、この規則に基づくトランスフォームがワークユニットの処理を完了する。この時点で、トランスフォームは、データフロー内の次のワークユニットの処理を開始するか又は終了する。
【００８０】
ＧＵＩ２００の最後の行は、そのすべてのトリガ条件のセルが「ａｎｙ」２３０というキーワードに設定されている。これは、対応するトリガ条件が存在しないか又は同等にこれらのトリガ条件が常に真に評価されるということを示す。この第５の行はトリガ条件を有さず、最後に評価されるため、この第５の実行ケースの対応する出力はデフォルト出力として規定される。
【００８１】
第４のカラム２２０は、ユーザが規則のデバッグ又は調整を容易にするために使用できる規則に基づくトランスフォームのトレーストテストランから得たメタデータを表示する。一般に、少なくとも３つの異なる動作モード、すなわち、生産モード、レコードテストモード、及びファイルテストモードの規則セットに基づいて異なるトランスフォームを生成できる。生産モードトランスフォームは、規則セットの論理を実施し、それを追加のコードをほとんど用いずに（あるとしても）入力データに適用する。レコードテストモードトランスフォームをコード化することで、個々のワークユニット（例えば、アカウント、取引、航空機、車、コンピュータ、モバイルデバイス、建物などを表す入力データレコード）のトランスフォームの実行によってステッピングが可能になる。規則セットの必須の論理のコード化に加えて、レコードテストモードトランスフォームは、詳細なロギングメッセージ（例えば、各入力フィールド、出力、トリガ条件の結果（真又は偽）、ルックアップキー、ルックアップフィールドの値と、どの実行ケースが始動したか、並びに幾つかの中間パラメータを反映する）を生成するコードを含んでもよい。ファイルテストモードトランスフォームをコード化して、トランスフォームを大規模なバッチテストデータに適用し、多数のワークユニットのテスト結果を要約したログをレビューすることができる。規則セットの必須の論理のコード化に加えて、ファイルテストモードトランスフォームは、ロギングメッセージ（例えば、各実行ケースが始動した回数及び／又は各トリガ条件が評価され、成立し、及び／又は失敗した回数を反映する）を生成するコードを含んでもよい。この例では、カラム２２０は、各々の実行ケースについて、その間に数千のワークユニット（例えば、クレジットカードアカウントのレコード）が処理されたファイルテストモードトランスフォームの実行中に実行ケースが始動した回数のカウントを表示する。
【００８２】
図２Ｂは、スプレッドシートベースの規則の入力のための例示的なＧＵＩ２５０を示す。ＧＵＩ２５０は、図２Ａの例示的なＧＵＩ２００内に規定された規則とクレジットカードアカウントに関連付けられたその他のデータとに基づくトランスフォームを用いて決定された「アワードポイント」値に基づくクレジットカードアカウント保有者へ提示する提供製品のリストを生成する多重始動規則をユーザが規定することで構成されている。ＧＵＩ２５０は、規則の５つの規則ケースを規定する５つの行を含む。ユーザはＧＵＩ２５０を用いて、規則の実行ケースのトリガ条件及び出力を規定し、ユーザがデバッグ又はトランスフォームの調整を容易にするために使用できる規則に基づいてトランスフォームのテストランから得たメタデータを表示する。例えば、ＧＵＩ２５０は、図６のアプリケーションスペシャリスト環境６２２を介してユーザに提示できる。幾つかの実施態様では、ＧＵＩ２５０を介して規定された規則セットは、図６の実行環境６０４のネットワークインターフェイスを介して受信できる。
【００８３】
第１のカラム２５４は、クレジットカードアカウントの「アワードポイント」を反映する変数に適用されるトリガ条件を規定する。これらの「アワードポイント」値を、図２ＡのＧＵＩ２００内に規定された規則に基づくトランスフォームでデータフロー内のレコードに設定し書き込むことができる。第１のカラムの２〜３行目の下向きの矢印２５６は、第２及び第３の実行ケースの第１のトリガ条件が第１の実行ケースの第１のトリガ条件に対するトリガ条件と同じであることを示す。
【００８４】
ＧＵＩ２００の第２及び第３のカラム２５８は、クレジットカードのタイプとクレジットカードアカウントの保有者の居住国の人口を反映するクレジットカードアカウントに関連付けられた入力データレコードから導出されたその他の変数に適用されるトリガ条件を規定する。また、カラム２５８は、各々が１対の一致するトリガ条件を示す下向きの矢印を含む。
【００８５】
ＧＵＩ２５０の第４のカラム２６４は、ある実行ケースのすべてのトリガ条件が評価され、満たされると判断されたときに生成される出力を規定する。ユーザは、ＧＵＩ２５０を介して、これを多重始動規則２６８であると規定しているため、実行ケースはすべて評価できる。実行ケースが始動すると、その実行ケースについて規定された出力が生成され、現在のワークユニットの出力値のリストにこの出力を付け加えることができる。すべての実行ケースが評価されると、トランスフォームは、データフロー内の次のワークユニットの処理を開始するか又は終了する。
【００８６】
第５のカラム２７０は、ユーザがトランスフォームのデバッグ又は調整を容易にするために使用できる規則に基づくトランスフォームのトレーストテストランから得たメタデータを表示する。この例では、カラム２７０は、各々の実行ケースについて、その間に数千のワークユニット（例えば、クレジットカードアカウントのレコード）が処理されたファイルテストモードトランスフォームの実行中に実行ケースが始動した回数のカウントを表示する。
【００８７】
図３Ａは、規則セットの一意的なトリガ条件のリスト３００の一例を示す。幾つかの実施態様では、１つ以上のトランスフォームが規則セットに基づいて生成されると、トランスフォームがその内部で発生する各々の実行ケースのトリガ条件の複製コピーを記憶するのに使うはずだったメモリを節約するために、トランスフォーム生成プロセスの一部が、制御構造が参照できる一意的なトリガ条件のリストを生成している。幾つかの実施態様では、規則仕様に基づいてトランスフォームを生成していてもよい、リスト３００を含む規則の一部は、規則をトランスフォームコード化で使用する技術バックエンド名に規定するアプリケーションスペシャリストによって使用されるデータ名を変換することを含んでもよい。例えば、変換動作は、可変名の固定キー又はその他のマッピングに基づいて実行できる。この例では、規則セットは、図２ＡのＧＵＩ２００を介して規定された規則（規則１）及び図２ＢのＧＵＩ２５０を介して規定された規則（規則２）から構成される。
【００８８】
一意的なトリガ条件のリストは、規則セット内で１回又は複数回発生する各トリガ条件の単一のコピーを含んでもよい。この例では、各トリガ条件は、データ操作言語（ＤＭＬ）式としてコード化される。トリガ条件のＤＭＬコード化が図３Ａの第１のカラム３１０内に示されている。トリガ条件のその他のコード化フォーマットも可能である（例えば、Ｃ、Ｃ＋＋、Ｊａｖａ、又はＣｏｂｏｌコード）。
【００８９】
幾つかの実施態様では、一意的なトリガ条件のリストはまた、トランスフォーム内のトリガ条件の発生の逆ルックアップを容易にする利用ポインタのリストを含んでもよい。例えば、図３Ａの第２のカラム３２０は、規則１及び規則２を含む規則セットの利用ポインタのリストを示す。各ポインタは、ｒｕｌｅ＿ｉｄ（規則１又は規則２）、ｒｏｗ＿ｉｄ（例えば、特定の実行ケースに対応する）、及びｃｏｌｕｍｎ＿ｉｄ（例えば、実行ケース内のトリガ条件シーケンス位置に対応する）を識別する数字の三重項である。この例では、第１の５つの一意的なトリガ条件が規則１内で発生し、次の７つの一意的なトリガ条件が規則２内で発生する。幾つかの実施態様では、利用ポインタは、一意的なトリガ条件のリストに含まれない。
【００９０】
幾つかの実施態様では、リスト３００は、リスト３００内の式によって規定される複雑な演算の結果を再利用し、トランスフォーム実行中に入力データが同じであると認識される同じ入力に基づく結果の再演算を回避できるように、この複雑な演算の結果をキャッシュするデータ構造を含んでもよい。
【００９１】
一意的なトリガ条件のリスト３００は、様々なフォーマット又はデータ構造（例えば、リンクされたリスト又は索引付きアレイ）内に記憶できる。この例では、一意的なトリガ条件のリスト３００は索引付きアレイとして記憶され、トランスフォームの制御構造内の索引によるトリガ条件の参照に基づくトリガ条件のルックアップが容易になる。
【００９２】
図３Ｂは、規則セットの一意的な出力のリストの一例を示す。幾つかの実施態様では、規則セットに基づいて１つ以上のトランスフォームが生成されると、トランスフォームがその内部で発生する各々の実行ケースの出力の複製コピーを記憶するのに使うはずだったメモリを節約するために、トランスフォーム生成プロセスの一部が、制御構造が参照できる一意的な出力のリストを生成している。この例では、規則セットは規則１及び規則２から構成される。
【００９３】
一意的な出力のリストは、規則セット内で１回又は複数回発生する各出力の単一のコピーを含んでもよい。この例では、各出力は、ＤＭＬ式としてコード化される。出力のＤＭＬコード化が図３Ｂの第１のカラム３６０内に示されている。出力のその他のコード化フォーマットも可能である（例えば、Ｃ、Ｃ＋＋、Ｊａｖａ、又はＣｏｂｏｌコード）。
【００９４】
幾つかの実施態様では、一意的な出力のリストはまた、トランスフォーム内の出力の発生の逆ルックアップを容易にする利用ポインタのリストを含んでもよい。例えば、図３Ｂの第２のカラム３７０は、規則１及び規則２を含む規則セットの利用ポインタのリストを示す。この例では、第１の４つの一意的な出力が規則１内で発生し、次の５つの一意的な出力が規則２内で発生する。幾つかの実施態様では、利用ポインタは一意的な出力のリストに含まれない。
【００９５】
一意的な出力のリスト３５０は、様々なフォーマット又はデータ構造（例えば、リンクされたリスト又は索引付きアレイ）内に記憶できる。この例では、一意的な出力のリスト３５０は、一意的なトリガ条件のリスト３００と共に索引付けされる（例えば、ディスジョイント索引値間隔で）索引付きアレイとして記憶される。
【００９６】
トランスフォーム生成プロセスの一部は、トランスフォームの実行フローを制御する制御構造の生成であり、一意的なトリガ条件のリスト及び／又は一意的な出力のリストを参照できる。本明細書では、「制御構造」という用語は、様々なコード化フォーマットを指し、二重に索引付けされた二次元アレイに限定されない。例えば、図４Ａ及び図４Ｂの非周期的有向グラフ及び図５に示す二重にリンクされたリストは、トランスフォームの実行フローを制御する制御構造の例である。制御構造は、実行ケースに対応する行を有する。トランスフォームの制御構造の場合、「行」という用語は、１つ以上のトリガ条件と、行内のすべてのトリガ条件が満たされると決定されると、行の出力が実行される１つ以上の出力との論理的なグループ化を指す。ここでは、「行」という用語は、表示テーブルの水平のサブセットに限定されない。
【００９７】
図４Ａ〜図４Ｂは、非周期的有向グラフとして表される規則セットに基づくトランスフォームの例示的な制御構造４００を示す。この例では、トランスフォームがそれに基づく規則セットは、規則１及び規則２を含む。この例では、トランスフォームは、データフローグラフ１００のコンポーネント１５０内で実施されるか、又は同等に、トランスフォームは、コンポーネント１４０内で実施される規則２に基づく第２のトランスフォームに連続するコンポーネント１３０内で実施される規則１に基づく第１のトランスフォームとして実施できる。図４Ａ及び図４Ｂでは、図３Ａに関連して記載したように、各ノードは、利用ポインタによってラベルを与えられる（ｒｕｌｅ＿ｉｄ、ｒｏｗ＿ｉｄ、ｃｏｌｕｍｎ＿ｉｄ）。
【００９８】
制御構造４００内のノードは、トリガ条件又は出力に対応する。トリガ条件に対応するノードは、ノードから出現する２つのエッジを有する。これらの２つのエッジのうち１つは、ノードの対応するトリガ条件が入力データに適用されたときに真であると決定されるとたどられる。これらの２つのエッジのうち２番目は、ノードの対応するトリガ条件が入力データに適用されたときに偽であると決定されるとたどられる。ある出力に対応するノードは、対応する出力が生成された後で常にたどられるノードから出現する１つのエッジを有する。制御構造４００内の行は、以前のトリガ条件ノードから出現する「真」のエッジによって連続的に接続される１つ以上のトリガ条件ノードのシーケンスを含んでもよい。行のシーケンスの最後のトリガ条件ノードは、行の１つ以上の出力ノードの第１のノードにその「真」のエッジによって接続できる。行内の出力ノードから出現するエッジは、行内の追加の出力ノードに接続できる。行内の最後の出力ノードから出現するエッジは、異なる実行ケース又は規則に対応する別の行内のノードに接続できるか、又は実行フローをワークユニットのトランスフォーム処理の終り４４８へ誘導することができる。同様に、トリガ条件ノードから出現する「偽」のエッジは、異なる実行ケース又は規則に対応する別の行内のノードに接続できるか、又は実行フローをワークユニットのトランスフォーム処理の終り４４８へ誘導することができる。
【００９９】
制御構造４００は、トランスフォームの実行フローの始点４０２をコード化する。トランスフォームは、第１の実行ケース４０４の第１のトリガ条件を評価することで開始する。
【０１００】
幾つかのケースでは、「偽」のエッジによって、実行フローは現在の行に隣接していない行にジャンプし、そうすることで、幾つかの実行ケースの評価をスキップする。この行のスキップによって複雑さが低減し、トランスフォームによるワークユニット（例えば、アカウント、取引、航空機、車、コンピュータ、モバイルデバイス、建物などを表す入力データレコードに対応する）の処理中のトランスフォームの処理時間が低減する。
【０１０１】
この例では、トリガ条件ノード４２０を含むノードの幾つかは、それらに接続するエッジを有さない。ノードに接続するエッジがないことは、対応するトリガ条件又は出力をトランスフォームが立脚する規則セットの論理で処理する必要がないという事実を反映している。その結果、これらの非接続ノード及びそれらに対応するトリガ条件は、制御構造４００から除外することができる。不要なトリガ条件の除外を図４Ｂの制御構造４５０に示す。
【０１０２】
幾つかのケースでは、制御構造内で複数のノードを組み合わせて単一ノードとして表すことができる。例えば、ノード４５４によって参照されるトリガ条件とノード４５６によって参照されるトリガ条件との論理積の評価を誘導する単一のトリガ条件ノードを作成することで、ノード４５４及び４５６を組み合わせることができる。両方のトリガ条件が真の場合、出力ノード４５８が次に処理され、これらのトリガ条件のいずれかが偽の場合、ノード４６０のトリガ条件が次に処理されるため、このことが可能である。このようにして、規則セット内の実行ケースの制御構造内４５０内で２つのトリガ条件を組み合わせて単一のトリガ条件によって表すことができる。組み合わされたノードがこれらのトリガ条件のインスタンスのみに対応する場合、トリガ条件を一意的なトリガ条件のリスト内の単一のエントリ内に組み合わせることもできる。同様に、出力ノード４７０及び４７２に対応する出力は常に一緒に生成されるため、出力ノード４７０及び４７２を組み合わせることができる。この例では、出力ノード４７０及び４７２を組み合わせることで、それらに対応する行をトランスフォームが立脚する規則セットの２つの実行ケースに対応する単一の行に組み合わせることができる。これらのノード組み合わせ技術は、生成し実行すべき制御フローのコードの量を低減することでトランスフォームのメモリ使用率と処理時間とを低減できる。
【０１０３】
図５は、表示テーブルとして表される規則セットに基づくトランスフォームの例示的な制御構造５００を示す。制御構造５００は、例えば、二重にリンクされたリスト（例えば、各々の行が行のトリガ条件及び出力のリンクされたリストを含む行のリンクされたリスト）として記憶できる。この例では、制御構造５００は、規則１及び規則２を含む規則セットに基づいてトランスフォームの実行フローを制御する。この例では、制御構造５００は、一意的なトリガ条件のリスト３００内のトリガ条件と、一意的な出力のリスト３５０内の出力とを参照する。
【０１０４】
図５の第１のカラム５１０は、制御構造５００の行の索引（例えば、実行ケース番号）を示す。この索引を用いて、制御構造内の行を参照して、不要な処理を回避するための実行フロー内のジャンプを容易にすることができる。第２のカラム５２０は、各行のトリガ条件のシーケンスを示す。例えば、制御構造５００は、一意的なトリガ条件のリスト３００内のトリガ条件を参照し、結果（例えば、成立又は失敗／真又は偽）に基づいてトリガ条件が評価された後にトランスフォームの処理をさらに誘導するトリガ条件のコードの部分を含んでもよい。トリガ条件が失敗した場合、トランスフォームの処理は制御構造５００内の行のシーケンス内の現在の行から２行以上離れていてもよい異なる行へ誘導される。例えば、第３行内のコード５２２の部分は、一意的なトリガ条件のリスト３００内の第３のトリガ条件を評価するように処理を誘導し、トリガ条件が失敗した場合、コード５２２の部分は、処理を制御構造５００の第５の行へ誘導し、４番目の行をスキップする。
【０１０５】
制御構造内のある行についてリストされたトリガ条件のすべてが成立すると、処理は行の出力へ誘導される。図５の第４のカラム５３０は、一意的な出力のリスト３５０内の出力への参照を示す。最終的に、制御構造５００内のある行の出力の実行後に、処理を制御構造５００の別の行で継続するか又は現在のワーク項目の処理を終了するように処理を誘導することができる。図５の第３のカラム５４０は、制御構造の行の索引（例えば、実行ケース番号）によって参照される制御構造５００内の他の行への参照を示す。
【０１０６】
図６は、トランスフォーム生成技術が使用できる例示的なデータ処理システム６００を示す。システム６００は、各々がデータを様々な記憶フォーマット（例えば、データベーステーブル、スプレッドシートファイル、平文テキストファイル、又はメインフレームが使用する固有のフォーマット）のいずれかに記憶できる、記憶デバイス又はオンラインデータストリームなどの１つ以上のデータソースを含んでもよいデータソース６０２を含む。実行環境６０４は、トランスフォーム生成モジュール６０６及び実行モジュール６１２を含む。実行環境６０４は、ＵＮＩＸオペレーティングシステムなどの好適なオペレーティングシステムの制御下で１つ以上の汎用コンピュータ上でホストできる。例えば、実行環境６０４は、複数の中央処理装置（ＣＰＵ）、ローカル側の（例えば、ＳＭＰコンピュータなどのマルチプロセッサシステム）又はローカル側に分散された（例えば、クラスタ又はＭＰＰに結合された複数のプロセッサ）、又はリモートの、又はリモート側に分散された（例えば、ローカルエリアネットワーク（ＬＡＮ）及び／又はワイドエリアネットワーク（ＷＡＮ）を介して結合された複数のプロセッサ）、又はそれらの任意の組み合わせを用いたコンピュータシステムの構成を含む多重ノード並列コンピューティング環境を含んでもよい。
【０１０７】
トランスフォーム生成モジュール６０６は、その少なくとも１つが１つ以上のトリガ条件と、１つ以上のトリガ条件がすべて満たされると生成される出力の仕様とを含む実行ケースのシーケンスを含む規則セットを受信する。規則セットはまた、１つ以上の出力を含むがトリガ条件を欠くか、又は同等に、常に真に評価される（例えば、例示的な規則１のデフォルト実行ケース）トリガ条件を有する実行ケースも含むことができる。例えば、規則セットは、アプリケーションスペシャリスト環境６２２を介して実行環境６０４にアクセスするユーザ６２６によって規定され得る。幾つかの実施態様では、アプリケーションスペシャリスト環境は、ユーザ６２６に規則セットを規定するＧＵＩを提供するリモートコンピューティングデバイス上で実行されるクライアントソフトウェアを含む。例えば、アプリケーションスペシャリスト環境６２２を介して、ユーザは、図２Ａ及び図２Ｂに関連して記載したように、スプレッドシートベースのＧＵＩで規則セットを規定できる。幾つかの実施態様（図示せず）では、開発環境６１８及びアプリケーションスペシャリスト環境６２２を組み合わせて、データフローグラフと、それらのデータフローグラフ内にインスタンス化されたトランスフォームの規則セット仕様との両方を編集する単一のユーザ又はユーザグループからアクセスすることができる。
【０１０８】
トランスフォーム生成モジュール６０６は、受信した規則セットに基づいて１つ以上のトランスフォームを生成する。１つ以上のトランスフォームの実行フローを制御する制御構造を生成することができる。制御構造は、規則セット内の実行ケースに対応する行を含んでもよい。各行は、実行ケースの１つ以上のトリガ条件のシーケンスと、出力を規定する情報とを含んでもよい。トリガ条件の幾つかは、データを変換する処理中にトリガ条件が失敗したときに現在の行よりも２行以上下側の異なる行で継続するように処理を誘導し、したがって幾つかの実行ケースの評価をスキップしてトランスフォームに必要な処理時間を低減することができる。
【０１０９】
制御構造は、生成されたトランスフォームをコード化する任意のその他のデータと共に記憶又は送信できる。例えば、制御構造を含む生成されたトランスフォームをデータ記憶システム６１６内に記憶できる。幾つかの実施態様（図示せず）では、トランスフォーム生成モジュール６０６は、アプリケーションスペシャリスト環境６２２の一部として実施でき、制御構造を含む生成されたトランスフォームをコード化するデータは、アプリケーションスペシャリスト環境６２２を実行しているリモートコンピューティングデバイスから実行環境６０４へ送信することができる。
【０１１０】
実行モジュール６１２は、トランスフォーム生成モジュール６０６によって生成された１つ以上のトランスフォームを用いて、入力データレコードを処理し、送信又は記憶のための出力データレコードを生成する。グラフベースの演算内の１つ以上のトランスフォームが生成されると、実行モジュール６１２はトランスフォームを含む演算を入力データに適用する。実行モジュール６１２は、データソース６０２からデータを読み出し、実行環境６０４がアクセス可能なデータ記憶システム６１６内に記憶できる出力データレコード６１４を生成する。例えば、データ記憶システム６１６は、バージョン制御アプリケーションを実行しているデータベースサーバ及び／又はサーバを含んでもよい。
【０１１１】
幾つかの実施態様では、実行モジュールはまた、入力データレコードの処理中に評価されるトリガ条件の実行時間及び／又は結果を記録する。例えば、トランスフォーム生成モジュール６０６はこれらのログを用いて、制御構造内のトリガ条件の順序を変更することでトランスフォームを更新できる。
【０１１２】
データソース６０２を提供する記憶デバイスは、実行環境１０４のローカル側にあってもよく、例えば、実行環境６０４を実行しているコンピュータに接続された記憶媒体（例えば、ハードドライブ６０８）上に記憶されていてもよく、又は、実行環境６０４のリモート側にあってもよく、例えば、実行環境６０４を実行しているコンピュータと通信中のリモートシステム（例えば、メインフレーム６１０）上にリモート接続によってホストされていてもよい。
【０１１３】
データ記憶システム６１６は、開発者６２０がトランスフォームに対応するコンポーネントを含むグラフベースの演算を作成し管理できる開発環境６１８にアクセスできる。これらのトランスフォームの動作は、グラフベースの演算が適用されるアプリケーションの特殊な情報を有するユーザ（例えば、ユーザ６２６）によって構成可能である。幾つかの実施態様では、開発環境６１８は、頂点の間の有向リンク（ワーク要素のフローを表す）によって接続された頂点（コンポーネント又はデータセットを表す）を含むデータフローグラフとしてアプリケーションを開発するシステムである。例えば、そのような環境は、参照により本明細書に組み込まれている「Managing Parameters for Graph-Based Applications」と題された米国公開第２００７／００１１６６８号に詳述されている。そのようなグラフベースの演算を実行するシステムは、参照により本明細書に組み込まれている米国特許第５，５６６，０７２号「EXECUTING COMPUTATIONS EXPRESSED AS GRAPHS」に記載されている。このシステムに従って作成されたデータフローグラフは、グラフコンポーネントによって表される個々のプロセスへ入出力する情報を獲得し、情報をプロセス間で移動し、プロセスの実行順序を定義する方法を提供する。このシステムは、プロセス間通信方法（例えば、グラフのリンクによる通信経路は、ＴＣＰ／ＩＰ又はＵＮＩＸドメインソケットを使用できるか、又は共有メモリを使用してプロセス間でデータを渡すことができる）を選択するアルゴリズムを含む。
【０１１４】
実行モジュール６１２は、様々な形式のデータベースシステムを含む様々なタイプのシステムからデータを受信することができる。データは、ヌル値を含んでもよいそれぞれのフィールド（「属性」又は「カラム」とも呼ばれる）の値を有するレコードとして編成できる。データソースから最初にデータを読み出すときに、実行モジュール６１２は、通常、そのデータソース内のレコードに関する何らかの初期フォーマット情報から開始する。状況によっては、データソースのレコード構造は当初は不明であって、データソースの分析後に決定できることがある。レコードに関する初期情報は、ビットによって表される明確な値、レコード内のフィールドの順序、及び値のタイプ（例えば、文字列、符号付き／符号なし整数）を表すビット数を含んでもよい。
【０１１５】
図７は、例示的なトランスフォーム生成及び実行プロセス７００のフローチャートを示す。例えば、プロセス７００は、図６の実行環境６０４によって実行できる。
【０１１６】
プロセス７００は、規則セットが７０２で受信されると開始する。規則セットは、実行ケースのシーケンスを含んでもよい。規則セット内の実行ケースは、１つ以上のトリガ条件と、実行ケースの１つ以上のトリガ条件がすべて満たされると生成される出力の仕様とを含んでもよい。幾つかの実施態様では、規則セットは、規則セットを受信する処理デバイスのローカル側に接続されたハードウェア（例えば、コンピュータモニタ及びキーボード及び／又はマウス）を含むユーザインターフェイス（例えば、テキストファイルエディタ、スプレッドシートベースのＧＵＩ、又はその他のタイプのＧＵＩ）を介して受信される。例えば、規則セットは、図６の実行環境６０４のユーザインターフェイスを介して受信できる。幾つかの実施態様では、規則セットはサーバによってリモート処理デバイスからネットワークインターフェイスを介して受信される。例えば、規則セットは、アプリケーションスペシャリスト環境６２２を実行しているリモート処理デバイスから実行環境６０４のネットワークインターフェイスを介して受信できる。
【０１１７】
制御構造を含むトランスフォームが、受信された規則セットに基づいて７０４で生成される。制御構造を用いてトランスフォームを入力データに適用するときにトランスフォームの実行フローを制御できる。制御構造は、生成されたトランスフォームの他の部分（例えば、一意的なトリガ条件のリスト及び／又は一意的な出力のリスト）を参照できる。制御構造は、様々なフォーマットでコード化できる。制御構造フォーマットの例は、とりわけ、実行環境内の１つ以上のプロセッサのために編集した実行可能ファイル、コンピュータ言語インタプリタ又は実行時のコンパイラによって編集可能なテキストを含むテキストファイル、解釈又は編集が可能なコードの部分を含むテキストレコードの二重索引付き（２次元）アレイ、図４Ａ及び図４Ｂの非周期的有向グラフ、及び図５に示す二重にリンクされたリストである。
【０１１８】
生成された制御構造は、規則セット内の１つ以上の実行ケースに対応する行を含んでもよい。制御構造内の行は、１つ以上のトリガ条件のシーケンスと実行ケースの出力を規定する情報とを含んでもよい。制御構造の行は、規則セット内の１つ以上のトリガ条件と実行ケースの１つ以上の出力とに対応する実行制御フローコードの論理的なグループ化であってもよい。幾つかの実施態様では、制御構造の行は、トランスフォームの実行を誘導して処理デバイスにトリガ条件を検査させるか、又は出力を生成させるコードの部分のシーケンス（例えば、リンクされたリストとしてソートされた）を含む。トリガ条件のコード部分はまた、異なるトリガ条件に又は現在のトリガ条件の評価結果に基づく出力に対応するコードの別の部分へトランスフォームの実行を誘導することもできる。制御構造内のトリガ条件は、データ変換プロセス中に失敗すると、行のシーケンス内の現在の行から２行以上離れた異なる行で継続するように処理を誘導することができる。このようにして、トリガ条件及び／又は幾つかの行の出力の実行をスキップしてワークユニット（例えば、入力データレコード）の処理時間を低減することができる。
【０１１９】
幾つかの実施態様では、行のトリガ条件のシーケンスを、シーケンス内のトリガ条件がデータ処理中に失敗したときに処理が誘導される異なる行の行番号に基づいてソートすることができる。例えば、行のトリガ条件のシーケンスを、失敗状況で制御構造内の大きいジャンプを引き起こすトリガ条件を行のトリガ条件のシーケンス内の前の方に置き、一方、失敗状況で制御構造内の小さいジャンプを引き起こすトリガ条件を行のトリガ条件のシーケンス内の後の方に置くことで、トランスフォーム生成プロセス中にソートすることができる。
【０１２０】
幾つかの実施態様では、実行ケースのシーケンス内の対応する実行ケースの直前に実行ケース内で発生する対応する実行ケースのトリガ条件を除外する形で制御構造の行が７０４で生成される。除外によって、トランスフォームの編集及び／又は実行に必要なメモリ要件を低減できる。
【０１２１】
幾つかの実施態様では、規則セットの一意的なトリガ条件のリストもトランスフォームの一部として７０４で生成される。規則１及び規則２を含む規則セットの一意的なトリガ条件のリスト３００は、生成可能な一意的なトリガ条件のリストの一例である。例えば、行内のトリガ条件のシーケンスがコードの部分のシーケンスとして記憶されている場合、コードの部分の１つは規則セットの一意的なトリガ条件のリスト内にコード化されたトリガ条件へ処理を誘導することができる。
【０１２２】
幾つかの実施態様では、規則セットの一意的な出力のリストもトランスフォームの一部として７０４で生成される。規則１及び規則２を含む規則セットの一意的な出力のリスト３５０は、生成可能な一意的な出力のリストの一例である。例えば、行内の出力がコードの部分として記憶されている場合、コードの部分は規則セットの一意的な出力のリスト内の出力へ処理を誘導することができる。
【０１２３】
幾つかの実施態様では、制御構造の行は、行のすべてのトリガ条件が満たされ、行の出力が生成されたときに次に処理する制御構造の異なる行へ処理を誘導するコードの部分をさらに含む。
【０１２４】
例えば、図６の実行環境６０４内で実行されているトランスフォーム生成モジュール６０６によって、制御構造を含むトランスフォームを７０４で生成できる。
【０１２５】
制御構造を含む生成されたトランスフォームは、７０６で記憶及び／又は送信できる。幾つかの実施態様では、トランスフォームはメモリデバイス（例えば、ランダムアクセスメモリ）内に記憶され、トランスフォームを入力データに適用する実行モジュールへ渡される。例えば、図６の実行モジュール６１２によってアクセスできる実行環境６０４の一部である揮発性メモリデバイス内に、トランスフォーム生成モジュール６０６によって、トランスフォームを７０６で記憶できる。幾つかの実施態様では、不揮発性メモリを含むデータ記憶デバイス（例えば、バージョン制御アプリケーションを実行しているデータベースサーバ又はサーバ）内にトランスフォームを記憶することができる。例えば、データ記憶システム６１６内にトランスフォームを７０６で記憶できる。幾つかの実施態様では、トランスフォームをリモートデバイスへ送信できる（例えば、電子通信ネットワークを介して）。例えば、アプリケーションスペシャリスト環境内で実行されているトランスフォーム生成モジュールから入力データへ適用するためのリモート実行環境へトランスフォームを７０６で送信できる。
【０１２６】
トランスフォームが生成され、トランスフォームを実行する処理システムが利用可能になると、トランスフォームを入力データに適用することができる。例えば、トランスフォームを実施する１つ以上のコンポーネント（例えば、データフローグラフ１００のコンポーネント１３０及び１４０）を含むデータフローグラフを実行している処理システムから、トランスフォームにアクセスすることができる。１つ以上のデータソース（例えば、データソース６０２）から入力データを７０８で受信できる。幾つかの実施態様では、入力データを事前処理して（例えば、ジョインプロセスを実施するコンポーネント１２０によって）、トランスフォームを実施する１つ以上のコンポーネントへ渡すデータフローのワークユニットを作成することができる。各々のワークユニットは受信した入力データに基づいて準備されるため、トランスフォームへ渡すことができる。幾つかの実施態様では、ワークユニットのグループがバッチ単位でトランスフォームへ渡される。例えば、図６の実行環境６０４のネットワークインターフェイスを介して入力データを７０８で受信することができる。
【０１２７】
トランスフォームが７１０で実行されて、受信した入力データが処理される。幾つかの実施態様では、新しい入力データを処理するときにトランスフォームが実行時にさらに解釈及び／又は編集される。例えば、図８に関連して記載するプロセス８００を用いて、トランスフォームを７１０で実行し、入力データに適用できる。トランスフォームを入力データに適用することは、制御構造を用いて決定されたシーケンス内の入力データに照らしてトリガ条件を検査することを含んでもよい。例えば、図６の実行環境６０４内で実行されている実行モジュール６０６によって、トランスフォームを７１０で実行できる。
【０１２８】
トランスフォームの実行は、７１２で利用可能な入力データがなくなるまで継続できる。入力データへのトランスフォームの適用の結果を反映するデータを７１４で記憶できる（例えば、データシンクに書き込まれた出力データレコードとして）。記憶された結果データは、制御構造によって規定された出力に基づいて生成されたものであってもよい。例えば、図６のデータ記憶システム６１４内に、実行モジュール６１２によって結果を記憶することができる。幾つかの実施態様（図示せず）では、制御構造によって規定された出力に基づく結果データが（例えば、アプリケーションスペシャリスト環境６２２へ）、電子通信ネットワーク上で（例えば、実行環境６０４のネットワークインターフェイスを介して）送信される。
【０１２９】
図８は、規則セットに基づくトランスフォームを実行する例示的なプロセス８００のフローチャートである。例えば、プロセス８００は、図６の実行環境６０４上で実行されている実行モジュール６１２によって実行できる。
【０１３０】
プロセス８００は、入力データに適用されるトランスフォームの制御構造を検索すること８０２を含む。幾つかの実施態様では、制御構造は、トランスフォームを実施するデータフローグラフ内のコンポーネントがデータフロー内のワークユニットへ渡されるときに制御構造が８０２で検索される。幾つかの実施態様では、メモリデバイス（例えば、ランダムアクセスメモリ）から制御構造が８０２で検索される。幾つかの実施態様では、不揮発性メモリを含むデータ記憶デバイス（例えば、バージョン制御アプリケーションを実行しているデータベースサーバ又はサーバ）から制御構造が８０２で検索される。幾つかの実施態様では、制御構造は、実行時にインタプリタ及び／又はコンパイラへ渡されて、実行のための制御構造が準備される。
【０１３１】
ワークユニットの入力データに照らして、第１のトリガ条件が８１０で検査される。例えば、トリガ条件をコード化するＤＭＬ式を解釈し実行して、ワークユニットに関連付けられたレコード内の任意の基準入力データフィールドにアクセスし、トリガ条件の論理を適用することでアクセスしたデータを試験することができる。この評価の結果は、成立又は失敗（真又は偽）であってもよい。
【０１３２】
トリガ条件の評価の結果は記録できる（例えば、試験、デバッグ、又は最適化のために）。幾つかの実施態様では、トリガ条件の実行時間（例えば、マイクロ秒又はプロセッサ周期単位で測定した）を記録できる。入力データに適用されるときのトリガ条件の失敗率又は実行時間に関するデータを用いて、将来のレコードのために平均処理時間を低減する努力の中で制御構造を動的に更新することができる。
【０１３３】
ワークユニットの入力データによってトリガ条件が８１５で満たされない（例えば、結果が失敗か又は偽である）場合、トランスフォームの実行を、トリガ条件に関連付けられた制御フローコード（例えば、トリガ条件を参照するか又は含むコードの部分）に部分的に基づいて、制御構造の異なる行へ誘導することができる。制御構造に従って、実行は、制御構造の異なる行へ８２０でジャンプすることができる。例えば、幾つかの失敗条件によって、実行は、制御構造の行のシーケンス内の現在の行から２行以上離れた異なる行へ８２０でジャンプすることができる。このようにして、幾つかの行のトリガ条件及び／又は出力の実行をスキップしてワークユニットの処理時間を低減できる。次いで、新しい行の次のトリガ条件を８１０で検査できる。幾つかの実施態様（図示せず）では、トランスフォームの実行は、トリガ条件（例えば、デフォルトの実行ケースに対応する）がない行へ、又は制御構造の終了へ直接ジャンプすることができる。
【０１３４】
ワークユニットの入力データによってトリガ条件が８１５で満たされる（例えば、結果が成立か又は真である）場合、トランスフォームの実行を、制御構造の現在の行内の次の要素へ誘導することができる。行８２５のトリガ条件のシーケンス内により多くのトリガ条件がある場合、行内の次のトリガ条件が８１０で検査される。そうでない場合、行の１つ以上の出力を８３０で生成できる。
【０１３５】
例えば、出力をコード化するＤＭＬ式を解釈し実行して、ワークユニットに関連付けられたレコード内の任意の基準入力データフィールドにアクセスし、及び／又は出力の論理を適用して、８１０で１つ以上の出力レコードを生成できる。結果として得られる出力レコードは、完全に新しくてもよく、又は既存のレコードを更新又は拡張して追加のフィールド又はその他のデータを含むことができる。
【０１３６】
現在の行の出力が８３０で生成された後で、トランスフォームの実行を追加の実行ケースに対応する異なる行へ誘導できる。幾つかの実施態様では、行は、トランスフォームの実行を制御構造内の異なる行へ誘導するポインタを含む。８３５で処理する実行ケースがさらにある場合、制御構造によって、トランスフォームの実行は制御構造の異なる行へ８４０でジャンプする。例えば、多重始動規則の場合、追加の実行ケースに対応する追加の行を処理する必要がある。トランスフォームが多重規則を有する規則セットに対応する場合、制御構造によって、トランスフォームの実行は異なる規則に対応する制御構造の異なる行へ８４０でジャンプする。次いで、新しい行の次のトリガ条件が８１０で検査される。
【０１３７】
８３５で、これ以上実行ケースを、すなわち、行を処理する必要がないときには、処理された入力データのログ情報に基づいて、制御構造を動的に更新することができる。例えば、行のトリガ条件のシーケンス内のトリガ条件を、部分的にトリガ条件の平均失敗率又は実行時間に関する新しいログ情報に基づいて８５０でソートできる。
【０１３８】
幾つかの実施態様では、入力データでトリガ条件を実行するのにかかる時間に基づいて一意的なトリガ条件のリスト内のトリガ条件の実行時間の測定値を更新できる。行のトリガ条件のシーケンス内のトリガ条件を、部分的にトリガ条件の実行時間の更新された測定値に基づいて８５０でソートできる。幾つかの実施態様では、一意的なトリガ条件のリスト内のトリガ条件の失敗率の測定値を、トリガ条件が入力データ内の１つ以上のレコードによって満たされるか否かに基づいて更新できる。行のトリガ条件のシーケンス内のトリガ条件を、部分的にトリガ条件の失敗率の更新された測定値に基づいて８５０でソートできる。
【０１３９】
将来の入力データに適用するために、制御構造の更新されたバージョンを８５２で記憶できる。幾つかの実施態様では、メモリデバイス（例えば、ランダムアクセスメモリ）内に更新された制御構造を８５２で記憶できる。幾つかの実施態様では、不揮発性メモリを含むデータ記憶デバイス（例えば、バージョン制御アプリケーションを実行しているデータベースサーバ又はサーバ）内に更新された制御構造を８５２で記憶できる。
【０１４０】
上記のトランスフォーム生成方法は、コンピュータ上で実行されるソフトウェアを用いて実施できる。例えば、各々が少なくとも１つのプロセッサと、少なくとも１つのデータ記憶システム（揮発性及び不揮発性メモリ及び／又は記憶要素を含む）と、少なくとも１つの入力デバイス又はポートと、少なくとも１つの出力デバイス又はポートとを含む１つ以上のプログラムド又はプログラマブルコンピュータシステム（分散、クライアント／サーバ、又はグリッドなどの様々なアーキテクチャの）上で実行される１つ以上のコンピュータプログラム内にソフトウェアが手順を形成する。ソフトウェアは、例えば、データフローグラフの設計及び構成に関連するその他のサービスを提供するより大きいプログラムの１つ以上のモジュールを形成できる。グラフのノード及び要素は、コンピュータ可読媒体内に記憶されたデータ構造又はデータリポジトリ内に記憶されたデータモデルに準拠するその他の編成データとして実施できる。
【０１４１】
ソフトウェアは、汎用の又は特定目的のプログラマブルコンピュータによって読み出し可能なＣＤ−ＲＯＭなどの記憶媒体上に提供できるか、又は実行中にネットワークの通信媒体上でコンピュータの記憶媒体へ送達する（伝搬された信号内にコード化する）ことができる。すべての機能は、特定目的のコンピュータ上で、又はコプロセッサなどの特定目的のハードウェアを用いて実行可能である。ソフトウェアは、ソフトウェアによって規定された演算の異なる部分が異なるコンピュータによって実行される分散した形で実施できる。各々のそのようなコンピュータプログラムは、好ましくは、記憶媒体又はデバイスがコンピュータシステムによって読み出されて本明細書に記載する手順を実行するときにコンピュータを構成し運用するために、汎用の又は特定目的のプログラマブルコンピュータによって読み出し可能な有形の、非一過性の記憶媒体又はデバイス（例えば、ソリッドステートメモリ又は媒体、あるいは磁気又は光媒体）上に記憶され、又はダウンロードされる。本発明のシステムは、コンピュータプログラムで構成されたコンピュータ可読記憶媒体として実施されると考えられ、そのように構成された記憶媒体はコンピュータシステムを特定の所定の形で動作して本明細書に記載する機能を実行させる。
【０１４２】
以上、本発明の幾つかの実施形態について説明してきた。しかしながら、本発明の精神及び範囲を逸脱することなく、様々な変更を加えることが可能であることが理解されよう。例えば、上記のステップの幾つかは順序に依存せず、記載された順序とは異なる順序で実行することができる。
【０１４３】
上記の説明は、例示的であって、添付の請求の範囲によって定義される本発明の範囲を限定するものではないことを理解されたい。例えば、上記の幾つかの機能ステップは、全体の処理に実質的に影響せずに別の順序で実行できる。なお、クレジットアカウントに関する特定のビジネス規則の詳細は、ＧＵＩ２００及びＧＵＩ２５０及びそれらがユーザインターフェイスを提供するトランスフォーム生成システムの機能を例示するためだけに、図２Ａ及び図２Ｂの例で説明し、本明細書を通して参照している。提示された特定のビジネス規則の詳細は必須の特徴ではなく、請求の範囲を限定するものと解釈してはならない。その他の実施形態も以下の請求の範囲に含まれる。
【図１】
0006419081.tif 000002
【図２Ａ】
0006419081.tif 000003
【図２Ｂ】
0006419081.tif 000004
【図３Ａ】
0006419081.tif 000005
【図３Ｂ】
0006419081.tif 000006
【図４Ａ】
0006419081.tif 000007
【図４Ｂ】
0006419081.tif 000008
【図５】
0006419081.tif 000009
【図６】
0006419081.tif 000010
【図７】
0006419081.tif 000011
【図８】
0006419081.tif 000012