(57)【特許請求の範囲】
【請求項１】
データフローグラフを修正するステップであって、前記データフローグラフは、少なくとも１つの入口点と少なくとも１つの出口点とを接続する複数の経路を含み、該ステップは、
データ記録にフローユニットを追加したり、データ記録からフローユニットを除去したりするコンポーネントを前記データフローグラフに追加するステップであって、各フローユニットは、前記データ記録が行き交う経路のセグメントを特定する、ステップを含み、
前記修正されたデータフローグラフを使用して複数のデータ記録を処理することによって得られたフローユニットに基づいて実行経路を特定するステップと、
前記複数のデータ記録のサブセットを決定するステップであって、実行経路の選択されたセットは、前記サブセットで表される、ステップと
を含む、コンピュータに実行される方法。
【請求項２】
実行経路を特定するステップは、データ記録に追加されたフローユニットのセットを決定するステップを含む、請求項１に記載の方法。
【請求項３】
前記実行経路ではない前記複数の経路のうちの未使用の経路を特定するステップをさらに含む、請求項１に記載の方法。
【請求項４】
前記データフローグラフを使用して前記複数のデータ記録のサブセットを処理するステップをさらに含む、請求項１に記載の方法。
【請求項５】
前記複数のデータ記録を処理するステップは、前記複数のデータ記録の１つのデータ記録に第１のフローユニットを追加するステップを含む、請求項１に記載の方法。
【請求項６】
前記複数のデータ記録を処理するステップは、前記データ記録に第２のフローユニットを追加し、前記第２のフローユニットに前記第１のフローユニットを追加するステップを含む、請求項５に記載の方法。
【請求項７】
実行経路を特定するステップは、
前記修正されたデータフローグラフを使用して処理された前記複数のデータ記録からフローユニットを除去するステップと、
前記除去されたフローユニットを分析して、各データ記録に対する実行経路を決定するステップと
を含む、請求項１に記載の方法。
【請求項８】
前記複数のデータ記録のサブセットを決定するステップは、前記選択された実行経路の１つを有するデータ記録を特定するステップを含む、請求項７に記載の方法。
【請求項９】
データフローグラフを修正するステップであって、前記データフローグラフは、少なくとも１つの入口点と少なくとも１つの出口点とを接続する複数の経路を含み、該ステップは、
データ記録にフローユニットを追加したり、データ記録からフローユニットを除去したりするコンポーネントを前記データフローグラフに追加するステップであって、各フローユニットは、前記データ記録が行き交う経路のセグメントを特定する、ステップを含み、
前記修正されたデータフローグラフを使用して複数のデータ記録を処理することによって得られたフローユニットに基づいて実行経路を特定するステップと、
前記複数のデータ記録のサブセットを決定するステップであって、実行経路の選択されたセットは、前記サブセットで表される、ステップと
を含むオペレーションを実行するようにプログラムされた１つまたは複数のコンピュータ
を含む、システム。
【請求項１０】
実行経路を特定するステップは、データ記録に追加されたフローユニットのセットを決定するステップを含む、請求項９に記載のシステム。
【請求項１１】
前記実行経路ではない前記複数の経路のうちの未使用の経路を特定するステップをさらに含む、請求項９に記載のシステム。
【請求項１２】
前記データフローグラフを使用して前記複数のデータ記録のサブセットを処理するステップをさらに含む、請求項９に記載のシステム。
【請求項１３】
前記複数のデータ記録を処理するステップは、前記複数のデータ記録の１つのデータ記録に第１のフローユニットを追加するステップを含む、請求項９に記載のシステム。
【請求項１４】
前記複数のデータ記録を処理するステップは、前記データ記録に第２のフローユニットを追加し、前記第２のフローユニットに前記第１のフローユニットを追加するステップを含む、請求項１３に記載のシステム。
【請求項１５】
実行経路を特定するステップは、
前記修正されたデータフローグラフを使用して処理された前記複数のデータ記録からフローユニットを除去するステップと、
前記除去されたフローユニットを分析して、各データ記録に対する実行経路を決定するステップと
を含む、請求項９に記載のシステム。
【請求項１６】
前記複数のデータ記録のサブセットを決定するステップは、前記選択された実行経路の１つを有するデータ記録を特定するステップを含む、請求項１５に記載のシステム。
【請求項１７】
コンピュータプログラムで符号化されたコンピュータ記憶媒体であって、前記コンピュータプログラムは、データ処理装置によって実行される際に、前記データ処理装置に、
データフローグラフを修正するステップであって、前記データフローグラフは、少なくとも１つの入口点と少なくとも１つの出口点とを接続する複数の経路を含み、該ステップは、
データ記録にフローユニットを追加したり、データ記録からフローユニットを除去したりするコンポーネントを前記データフローグラフに追加するステップであって、各フローユニットは、前記データ記録が行き交う経路のセグメントを特定する、ステップを含み、
前記修正されたデータフローグラフを使用して複数のデータ記録を処理することによって得られたフローユニットに基づいて実行経路を特定するステップと、
前記複数のデータ記録のサブセットを決定するステップであって、実行経路の選択されたセットは、前記サブセットで表される、ステップと
を含むオペレーションを実行させる命令を含む、コンピュータ記憶媒体。
【請求項１８】
実行経路を特定するステップは、データ記録に追加されたフローユニットのセットを決定するステップを含む、請求項１７に記載のコンピュータ記憶媒体。
【請求項１９】
前記実行経路ではない前記複数の経路のうちの未使用の経路を特定するステップをさらに含む、請求項１７に記載のコンピュータ記憶媒体。
【請求項２０】
前記データフローグラフを使用して前記複数のデータ記録のサブセットを処理するステップをさらに含む、請求項１７に記載のコンピュータ記憶媒体。
【請求項２１】
前記複数のデータ記録を処理するステップは、前記複数のデータ記録の１つのデータ記録に第１のフローユニットを追加するステップを含む、請求項１７に記載のコンピュータ記憶媒体。
【請求項２２】
前記複数のデータ記録を処理するステップは、前記データ記録に第２のフローユニットを追加し、前記第２のフローユニットに前記第１のフローユニットを追加するステップを含む、請求項２１に記載のコンピュータ記憶媒体。
【請求項２３】
実行経路を特定するステップは、
前記修正されたデータフローグラフを使用して処理された前記複数のデータ記録からフローユニットを除去するステップと、
前記除去されたフローユニットを分析して、各データ記録に対する実行経路を決定するステップと
を含む、請求項１７に記載のコンピュータ記憶媒体。
【請求項２４】
前記複数のデータ記録のサブセットを決定するステップは、前記選択された実行経路の１つを有するデータ記録を特定するステップを含む、請求項２３に記載のコンピュータ記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本願は、２０１１年１月７日に出願された「Flow Analysis Instrumentation」と称する米国仮特許出願第６１／４３０，６２５号の優先権を主張し、同特許は、その全内容が参照により本明細書に組み込まれる。
【０００２】
背景
本明細書は、フロー分析に関する。
【背景技術】
【０００３】
データフローグラフは、データに関するオペレーションの実行に使用される。データは、データフローグラフに提供される。データフローグラフは、データに関する一連のオペレーションを実行する。あるシナリオでは、データに関して実行される一連のオペレーションは、データ記録（data record）ごとに異なり得る。
【０００４】
データ記録の小セットは、データフローグラフのテストに使用される。しかし、選択されたデータ記録のセットが本番環境におけるデータ記録を代表するものではない場合があるため、データ記録のセットを選択することが困難な場合もあり得る。
【発明の概要】
【課題を解決するための手段】
【０００５】
要約
本明細書は、フロー分析に関連する技術について説明する。
【０００６】
一般に、本明細書に記載される対象物の一態様は、データフローグラフを修正する動作であって、データフローグラフは、少なくとも１つの入口点と少なくとも１つの出口点とを接続する複数の経路を含む、動作を含む方法において具体化することができる。データフローグラフを修正するステップは、データ記録にフローユニットを追加したり、データ記録からフローユニットを除去したりするコンポーネントをデータフローグラフに追加するステップであって、各フローユニットは、データ記録が行き交う経路のセグメントを特定する、ステップを含む。また、方法は、修正されたデータフローグラフを使用して複数のデータ記録を処理することによって得られたフローユニットに基づいて実行経路を特定する動作も含む。また、方法は、複数のデータ記録のサブセットを決定する動作であって、実行経路の選択されたセットは、サブセットで表される、動作も含む。これらのおよび他の実施形態はそれぞれ、場合により、以下の特徴の１つまたは複数を含み得る。実行経路を特定するステップは、データ記録に追加されたフローユニットのセットを決定するステップを含み得る。また、特徴は、実行経路ではない複数の経路のうちの未使用の経路を特定するステップも含み得る。また、特徴は、データフローグラフを使用して複数のデータ記録のサブセットを処理するステップも含み得る。複数のデータ記録を処理するステップは、複数のデータ記録の１つのデータ記録に第１のフローユニットを追加するステップを含み得る。複数のデータ記録を処理するステップは、データ記録に第２のフローユニットを追加し、第２のフローユニットに第１のフローユニットを追加するステップを含み得る。実行経路を特定するステップは、修正されたデータフローグラフを使用して処理された複数のデータ記録からフローユニットを除去するステップと、除去されたフローユニットを分析して、各データ記録に対する実行経路を決定するステップとを含み得る。複数のデータ記録のサブセットを決定するステップは、選択された実行経路の１つを有するデータ記録を特定するステップを含み得る。
【０００７】
本明細書に記載される対象物の特定の実施形態は、以下の利点の１つまたは複数を実現するために実装することができる。データフローグラフをデバッグするステップを簡易化することができる。データフローグラフが十分に発揮されるデータ記録のサンプルセットを選択することができる。個別の記録がグラフ中を流れる際にそれらをトレースすることができる。本明細書に記載される対象物の１つまたは複数の実施形態の詳細は、添付の図面および以下の説明に記載される。対象物の他の特徴、態様および利点は、説明、図面および特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【０００８】
【図１】データフローグラフ中を通る実行経路を示す。
【図２】データ記録の記録系列を決定することができる例示的な環境を示す。
【図３】フローユニットを使用して、修正されたデータフローグラフ中を通る記録を追跡する例を示す。
【図４】フローユニットを消費する例を示す。
【図５】フローユニットを使用して、データフローグラフ中を通る経路を追跡する例を示す。
【図６】出力データ記録の生成につながる入力データ記録を特定する例を示す。
【図７】データ記録にフローユニットを追加するように、データフローグラフのデータソースコンポーネントを修正する例を示す。
【図８】データ記録にフローユニットを追加するように、複数の出力ポートを備えたコンポーネントを修正する例を示す。
【図９】フローユニットを処理するように、データシンクを修正する例を示す。
【図１０】複数のデータフローグラフにわたってフローユニットを使用する例を示す。
【図１１】フロー分析のための例示的なプロセスを示す。
【発明を実施するための形態】
【０００９】
様々な図面における同様の参照番号および記号表示は同様の要素を示す。
【００１０】
詳細な説明
一般に、フロー分析は、データ記録のセット内の値の分配、データ記録間の関係およびデータ記録を処理して出力記録を生成する方法についてのより完全な理解を可能にする。
【００１１】
図１は、データフローグラフ中を通る実行経路を示す。データフローグラフ１０２は、例えば、経路１０８および経路１１０などの複数の経路を含み、それにより、入口点１０４（例えば、データソース）から出口点１０６、１１２（例えば、データシンク）へとデータ記録を処理することができる。例では、経路１０８は、入口点１０４から出口点１０６へと続く。経路１１０は、同じ入口点１０４を出発するが、分岐して出口点１１２へと続く。
【００１２】
一般に、データフローグラフは、コンポーネントと、コンポーネント間のデータ記録のフローを特定するリンクとで構成されている。コンポーネントは、データソースと、データシンクと、処理用のコンポーネントとを含む。データソースは、データフローグラフへの入口点を提供することができ、グラフで処理されるデータ記録のセットを読み取ることができる。例えば、データソースは、ファイルシステム上の関係型データベースの表またはファイルを含み得る。データソースは、表またはファイルから記録を読み取り、データ記録を作成する。データシンクは、データフローグラフからの出口点を提供することができ、データフローグラフが処理を完了した時点で出力記録を格納することができる。データソースおよびシンクは、例えば、ファイルシステム上に格納された関係型データベースの表またはファイルを含み得る。データフローグラフは、コンピュータ１１２または他のタイプのコンピュータデバイス上で実行することができる。他の実施形態では、データフローグラフの実行は、複数のコンピューティングデバイス間で分配することができる。
【００１３】
ある実施形態では、コンポーネントは、入力ポートと、出力ポートとを含み得る。リンクは、第１のコンポーネントの出力ポートを第２のコンポーネントの入力ポートに接続する。あるコンポーネントは、複数の入力ポートおよび出力ポートを有し得る。それによって入口点から出口点へデータ記録をナビゲートすることができる一連のコンポーネントおよびリンクは、経路（例えば、経路１０８、１１０）と呼ばれる。
【００１４】
フロー分析は、１つまたは複数のデータフローグラフ中を通るデータ記録のフローを追跡するプロセスである。フロー分析は、デバッグ、テストおよびプロファイル分野での新しいアプリケーションセットを可能にする。デバッグの場合、フロー分析により、個別のデータ記録をグラフで処理する際にそれをトレースすることができる。ユーザは、１つまたは複数の記録をマークすることも、ブレークポイントで停止することもでき、グラフ開発環境は、特定の記録に依存するいかなる記録も、また、特定の記録が依存するいかなる記録も認定することを含めて、グラフ中を通る特定の記録の経路を追跡（トレース）する。開発者は、予想外の結果を示した可能性のある出力データ記録を認定し、データ記録の作成に使用された入力データ記録を見て、それらの入力データ記録を追跡してデータフローグラフが予想通りに機能しない可能性のある場所を決定することができる。
【００１５】
テストの場合、フロー分析は、ユーザに、特定の経路を通過する記録のみを含む入力データのサブセットを生成することを可能にする。データフローグラフ中を通る特定の経路に基づいて入力データを選択することによって、処理されたデータ記録の参照整合性を保つことができる。
【００１６】
プロファイルの場合、フロー分析は、ユーザに、記録をグループに分類するグラフを作成し、次いで、これらのカテゴリ内の記録が依存する入力データセットから記録のサブセットを生成することを可能にする。例えば、グラフは、入力顧客およびトランザクションを住所および製品カテゴリ別にグループ分けし、次いで、演算された出力記録のうち、どの記録が、「無益な」シンクに対して「有益な」出力データシンクに到達するかに従って、顧客およびトランザクション記録を分割することができる。
【００１７】
図２は、データ記録の系列を決定することができる例示的な環境を示す。例えば、図１からのコンピュータ１１２などのコンピュータ上で実行する例示的なシステム２００は、データフローグラフリポジトリ２０２を含む。プロセス矢印２０４で表されるように、データフローグラフ計装（instrumentation）エンジン２０６は、データフローグラフリポジトリ２０２からデータフローグラフを入手する。データフローグラフ計装エンジン２０６は、以下で論じられるように、修正されたグラフで処理する際にデータフローグラフがデータ記録の記録レベル系列を追跡できるように、グラフを修正する。データフローグラフ計装エンジン２０６は、例えば、コンピュータ上で実行するプロセスであり得る。
【００１８】
ある実施形態では、データフローグラフ計装エンジン２０６は、データフローグラフ中を通るデータ記録のフローの追跡を可能にする処理コンポーネントをデータフローグラフに追加する。例えば、追加の処理コンポーネントは、各データ記録に追加のフィールドを追加することができる。これらの追加のフィールドは、フローユニットと呼ばれ得る。ある実施形態では、各フローユニットは、データフローグラフ中を通る経路のセグメントを特定する。フローユニットは、データ記録から除去し、後に分析するために格納することができる。
【００１９】
ある実施形態では、データフローグラフ計装エンジンは、それ自体が、データフローグラフを入力として受け入れて、修正されたデータフローグラフを生成する計装データフローグラフを含み得る。
【００２０】
プロセス矢印２０８で表されるように、修正されたデータフローグラフは、データフローグラフランタイム環境２１０に提供することができ、データフローグラフランタイム環境２１０は、１つのコンピュータまたは複数のコンピュータ上で実行する１つまたは複数のプロセスであり得る。プロセス矢印２１２で表されるように、データソース２１４からのデータ記録は、データフローグラフランタイム環境２１０に提供される。データフローグラフランタイム環境２１０は、修正されたデータフローグラフを使用してデータ記録を処理する。
【００２１】
プロセス矢印２１６で表されるように、修正されたデータフローグラフは、フローユニットリポジトリ２１８にフローユニットを格納する。フローユニットリポジトリ２１８は、例えば、ファイルシステム上に格納された関係型データベースまたはファイルであり得る。
【００２２】
プロセス矢印２２０で表されるように、フローユニット分析エンジン２２２は、格納されたフローユニットを分析する。格納されたフローユニットから、フローユニット分析エンジン２２２は、データフローグラフで処理された際に各データ記録が取ったさまざまな経路を決定することができる。フローユニット分析エンジン２２２は、少なくとも１つのデータ記録が取った、データフローグラフ中を通る異なる経路のすべてを決定することができる。
【００２３】
また、フローユニット分析エンジン２２２は、記録依存性も決定することができる。あるシナリオでは、出力記録は、複数の入力記録に依存する。例えば、データフローグラフは、１年間にわたる顧客による発注の総価格を計算することができる。各注文は、別々の入力記録を表すことになり、これらの記録の集合体は、単一の出力記録を生成することになる。フローユニット分析エンジン２２２は、各入力データ記録や、出力記録の作成に使用されたあらゆる中間データ記録を決定することができる。
【００２４】
プロセス矢印２２４で表されるように、フローユニット分析エンジン２２２は、修正されたデータフローによって生成されたデータ記録について説明するデータプロファイル２２６を格納することができる。
【００２５】
プロセス矢印２２８で表されるように、フローユニット分析エンジン２２２は、データソース２１４からデータ記録を受け入れることもできる。フローユニット分析エンジン２２２は、フローユニットを使用して、データ記録の代表サンプルを決定することができる。ある実施形態では、代表サンプルは、少なくとも１つのサンプルデータ記録およびその処理された先行記録がデータフローグラフの異なる経路のそれぞれを取るように決定される。ある実施形態では、代表サンプルは、サブセット内の各データ記録が同じ経路を取るように決定される。
【００２６】
フローユニット分析エンジン２２２は、データソース２１４からのデータ記録の完全なセットを処理する際にデータフローグラフによって生成されたフロー範囲と比較した際、データフローグラフ中を通る記録のサブセットのフロー範囲が一貫した状態を保つように、データ記録のサブセットを決定することができる。例えば、データフローグラフは、郵便番号に基づいてトランザクション記録の値を総計するコンポーネントを含み得る。特定の郵便番号を有する記録を選択すると、フローユニット分析エンジン２２２は、その郵便番号に対応するデータ記録のすべてを選択する。したがって、その郵便番号に対する総計値は、データ記録のサブセットが処理されようが、データソース２１４のデータ記録のすべてが処理されようが、一貫した状態を保つ。ある実施形態では、フローユニット分析エンジン２２２は、データフローグラフ中を通るフロー範囲の分配を維持するデータのサブセットを決定することができる。例えば、データ記録の完全なセットを処理する間に顧客の１０パーセントが拒否されれば、データ記録のサブセットを処理する際に顧客の１０パーセントが拒否されることになる。
【００２７】
プロセス矢印２３０で表されるように、フローユニット分析エンジン２２２は、サンプルデータ記録リポジトリ２３２にデータ記録のサブセットを格納することができる。
【００２８】
一実施形態では、計装データフローグラフの実行は一時停止される。一時停止状態では、コンポーネントの１つのデータ記録は、データフローグラフのコンポーネントをユーザに最初に選択させることによって選択される。システム２００は、一時停止状態でコンポーネントに預けられた記録のセットをユーザに示し、その結果、ユーザは、観察用の記録を次に選択することができる。選択された記録と関連付けられたフローユニットデータを使用することで、システム２００は、すべての先行記録のセット（入力記録と、選択された記録を含むコンポーネントまでつながるグラフのコンポーネントによって生成されたそれらの中間記録の両方）を決定することができる。入力記録のこのセットを使用することで、システム２００は、ここでは、これらの選択された記録のみを含む入力データサブセットの集合体を作成し、次いで、これらのデータサブセットを用いてグラフを再開することができる。ここで、グラフは、選択された記録の実行に踏み込むことができ、それにより、ユーザは、最初に選択したコンポーネントの実行までグラフの挙動を観察することができる。
【００２９】
図３は、フローユニットを使用して、修正されたデータフローグラフ中を通る記録を追跡する例を示す。データソース「ｃｉ」３０２は、第１のデータ記録３３０と第２のデータ記録３３２の２つのデータ記録を含む。データ記録がデータソース「ｃｉ」３０２からデータフローグラフに提供される際、フローユニットは、各データ記録に付随している。フローユニット３０４はデータ記録３３０に付随し、フローユニット３０６はデータ記録３３２に付随している。
【００３０】
ある実施形態では、フローユニットは、フローユニットと関連付けられたコンポーネント識別子と、コンポーネントと関連付けられたグループと、シーケンス番号とを含む。グループは、例えば、それを通じてデータ記録が提供されたポートの表示であり得る。ある実施形態では、フローユニットは、コンポーネント識別子、グループ識別子およびシーケンスでフォーマットされた文字列（例えば、「ｃｉ．ａ．１」、「ｒ１．ａ．１」）を含み得る。各コンポーネント識別子は、データフローグラフのコンポーネントを一意的に特定することが可能である。例えば、フローユニット３０４は、文字列「ｃｉ．ａ．１」を含み、「ｃｉ」は、フローユニットがデータソース「ｃｉ」３０２と関連付けられていることを示し、グループ「ａ」は、データ記録が文字「ａ」３１８と関連付けられたポート上に提供されたことを示し、シーケンス番号「１」は、データ記録がデータソース「ｃｉ」３０２から文字「ａ」３１８と関連付けられたポート上に供給された第１のデータ記録であることを示す。
【００３１】
同様に、フローユニット３０６は、文字列「ｃｉ．ａ．２」を含み、「ｃｉ」は、フローユニットがデータソース「ｃｉ」３０２と関連付けられていることを示し、グループ「ａ」は、データ記録が文字「ａ」３１８と関連付けられたポート上に提供されたことを示し、シーケンス番号「２」は、データ記録がデータソース「ｃｉ」３０２から文字「ａ」３１８と関連付けられたポート上に供給された第２のデータ記録であることを示す。ある実施形態では、コンポーネントおよびポートは、数値、文字、文字列または他の任意の識別子に関連付けることができる。
【００３２】
この例では、第１のデータ記録３３０と第２のデータ記録３３２の両方とも、フィルタリングコンポーネント「ｒ１」３０８によって処理される。フィルタリングコンポーネント「ｒ１」３０８は、第１のデータ記録３３０を第１のポート３２０上に提供し、第２のデータ記録３３２を第２のポート３２２上に提供する。第１のデータ記録３３０には、新しいフローユニット３１０が提供される。新しいフローユニットは、文字列「ｒ１．ａ．１」を含み、「ｒ１」は、フローユニットがフィルタリングコンポーネント「ｒ１」３０８と関連付けられていることを示し、「ａ」は、データ記録が「ａ」ポート３２０上に提供されたことを示し、「１」は、データ記録がフィルタリングコンポーネント「ｒ１」３０８の「ａ」ポート３２０上に提供された第１のデータ記録であることを示す。
【００３３】
フィルタリングコンポーネント「ｒ１」３０８は、第２のデータ記録３３２を「ｂ」ポート３２２上に提供する。第１のデータ記録３３０と同様に、第２のデータ記録には新しいフローユニット３１２が提供される。新しいフローユニット３１２は、文字列「ｒ１．ｂ．１」を含み、「ｒ１」は、フローユニットがフィルタリングコンポーネント「ｒ１」３０８と関連付けられていることを示し、「ｂ」は、データ記録が「ｂ」ポート３２２上に提供されたことを示し、「１」は、データ記録がフィルタリングコンポーネント「ｒ１」３０８の「ｂ」ポート３２２上に提供された第１のデータ記録であることを示す。
【００３４】
すべてのコンポーネントが新しいフローユニットをデータ記録に提供するわけではない。この例では、コンポーネント３１４、コンポーネント３１６およびコンポーネント３３４は、パススルーコンポーネントとして扱われる。これらのコンポーネントは、フロー分析プロセスにおいて無視される。ここでは、第１のデータ記録３３０はそのフローユニット３１０を保持し、第２のデータ記録３３２はそのフローユニット３１２を保持する。ある実施形態では、データ記録の経路を変更しないコンポーネントは、新しいフローユニットを提供しない。他の実施形態では、各コンポーネントは、新しいフローユニットをデータ記録に提供する。フロー計装エンジンは、新しいフローユニットが構築され、ブロックまたはグループが割り当てられて反映され、特定のコンポーネントおよびポートを通過するように、グラフのどのコンポーネントを計装するかを決定する際に選択性を有し得る。
【００３５】
データ記録がデータシンク３２４に格納される前、フローユニットは除去される。除去されたフローユニットは、フローユニットデータストア３２６に格納される。この例では、データシンク３２４は、第１のデータ記録３３０および第２のデータ記録３３２を格納する。フローユニットデータストア３２６は、フローユニット３１２およびフローユニット３１０を格納する。
【００３６】
図４は、フローユニットを消費する例を示す。コンポーネント、ポートおよびシーケンス番号の識別は、必ずしもデータフローグラフ中を通る完全な経路を一意的に特定するのに十分であるとは限らない。完全な経路を特定するため、フローユニットを組み合わせることができる。例えば、図４を参照すると、データフローグラフは、コンポーネント「ｚ１」４０２と、コンポーネント「ｚ２」４０４と、コンポーネント「ｒ７」４０６とを含む。この例では、データ記録４１２は、コンポーネント「ｚ１」４０２の「ａ」ポートによって提供される第４のデータ記録である。データ記録４１２にはフローユニット４１０が提供され、フローユニット４１０は文字列「ｚ１．ａ．４」を含む。データ記録４１２がコンポーネント「ｒ７」４０６によって処理された後、データ記録には、新しいフローユニット４１４が提供される。新しいフローユニットは、データ記録がコンポーネント「ｒ７」４０６の「ａ」ポート４０８上に提供された第６のデータ記録（「ｒ７．ａ．６」）であることを示す。これ以上は何もなく、フローユニット４１４は、データ記録４１２がコンポーネント「ｚ１」４０２によって提供されたものか、コンポーネント「ｚ２」４０４によって提供されたものかは示さない。完全な経路を維持するため、フローユニット４１０は、フローユニット４１４に組み込まれる（またはフローユニット４１４によって消費される）。ある実施形態では、フローユニットは、データ記録またはデータ記録を生成するために処理された１つもしくは複数のデータ記録と以前に関連付けられた他のフローユニットのセットを消費する。
【００３７】
他の実施形態では、フローユニットは、データ記録または処理されたデータ記録と以前に関連付けられたフローユニットへの参照（コピーに対して）を維持する。各フローユニットが置き換えられると、古いフローユニットは、フローユニットリポジトリ（例えば、図２のフローユニットリポジトリ２１８）に格納される。新たに作成されたフローユニットは、フローユニットリポジトリに格納された置き換えられたフローユニットへの参照を含む。図５は、フローユニットを使用して、データフローグラフ中を通る経路を追跡する例を示す。フローユニットを使用して、データフローグラフ中を通る複雑な経路を追跡することができる。これらの複雑なフローは、記述文字列を使用して説明することができ、その結果、データフローグラフ中を通る同じ経路をたどる各データ記録およびその先行記録は、同一の文字列を有することになる。実行されたフロー経路のセットを、データフローグラフ中を通るすべての可能なフロー経路と比較することによって、実行されたフロー経路のセットの生成に使用されたデータ記録がデータフローグラフのすべての経路をテストするのに十分かどうか（すなわち、実行されたフロー経路がすべての可能なフロー経路をカバーするかどうか）を決定することができる。
【００３８】
各フローユニットはデータ記録と関連付けられ、また、フローユニットは他の「消費された」フローユニットも参照するため、各フローユニットを生成するために処理された完全な記録セットを特定することが可能である。生成されたフローユニットのサブセットを選択することによって、選択されたフローユニットに対応するデータ記録のサブセットを選択することができる。例えば、データフローグラフ５００を使用して、顧客の人口統計をプロファイルすることができる。この例では、顧客セットを表すデータ記録のフロー「ａ」がコンポーネント「ａｃ」５０２によって提供される（省略して「ａ」顧客）。分割コンポーネント「ｆ１」５０４は、データ記録を２つのセットに分割し、各セットは異なる出力ポート上に提供される。例えば、分割コンポーネント「ｆ１」５０４は、郵便番号に基づいて「ａ」顧客を分割し得る。
【００３９】
「ａ」顧客によって完了されたトランザクションのセットを表すフローデータ記録は、コンポーネント「ａｔ」５１０によって提供される（省略して「ａ」トランザクション）。
【００４０】
結合コンポーネント５１２は、顧客データ記録と顧客トランザクションとを結合して、「ａ」顧客に対する組み合わされたデータ記録のフローを生成する。トランザクションデータ記録と結合できない顧客データ記録や、顧客データ記録と結合できないトランザクションデータ記録は、出口点５１４へとつながる別々の出力ポート上に提供される。一般に、各顧客トランザクションデータ記録は、トランザクションを完了した顧客と関連付けられる。この例では、顧客は、分割コンポーネント「ｆ１」５０４用の「ａ」ポートからの顧客データ記録または分割コンポーネント「ｆ１」５０４の「ｂ」ポートからの顧客データ記録（ただし両方ではない）によって表すことができる。
【００４１】
「ｂ」顧客のセットを表すデータ記録のフローは、コンポーネント「ｂｃ」５１６によって提供される（省略して「ｂ」顧客）。分割コンポーネント「ｆ２」５１８は、データ記録を２つのセットに分割し、各セットは異なる出力ポート上に提供される。例えば、分割コンポーネント「ｆ２」５１８は、郵便番号に基づいて「ｂ」顧客を分割し得る。
【００４２】
「ｂ」顧客によって完了されたトランザクションのセットを表すフローデータ記録は、コンポーネント「ｂｔ」５２４によって提供される（省略して「ｂ」トランザクション）。
【００４３】
結合コンポーネント「ｊ２」５２６は、「ｂ」顧客データ記録と「ｂ」顧客トランザクションとを結合して、「ｂ」顧客に対する組み合わされたデータ記録のフローを生成する。トランザクションデータ記録と結合できない顧客データ記録や、顧客データ記録と結合できないトランザクションデータ記録は、出口点５３０へとつながる別々の出力ポート上に提供される。一般に、各顧客トランザクションデータ記録は、トランザクションを完了した顧客と関連付けられる。この例では、顧客は、分割コンポーネント「ｆ２」５１８用の「ａ」ポートからの顧客データ記録または分割コンポーネント「ｆ２」５１８の「ｂ」ポートからの顧客データ記録（ただし両方ではない）によって表すことができる。
【００４４】
一般顧客情報を表すデータ記録のフローは、コンポーネント「ｃｉ」５３２によって提供される（省略して顧客情報）。コンポーネント「ｒ１」５３４は、顧客情報を提供するデータ記録を再フォーマットする。再フォーマットできないデータ記録は、出口点５３６へと流れるポート上に提供される。再フォーマットできるデータ記録は、第２のポート上に提供される。
【００４５】
結合コンポーネント「ｊ３」５３８は、再フォーマットされた顧客情報データ記録を、結合コンポーネント「ｊ１」５１２からのデータ記録および結合コンポーネント「ｊ２」５２６からのデータ記録と組み合わせる。結合できないデータ記録は、出口点５４０へと流れる出力ポート上に提供される。結合されたデータ記録は、出力ポート上に提供され、ロールアップコンポーネント「ｒｕ」５４２へと流れる。一般に、コンポーネント「ｊ３」５３８は、再フォーマットされた顧客情報データ記録を、結合コンポーネント「ｊ１」５１２用の「ａ」ポートからのデータ記録または結合コンポーネント「ｊ２」５２６の「ａ」ポートからのデータ記録と組み合わせる。
【００４６】
ロールアップコンポーネント「ｒｕ」５４２は、何らかの基準に基づいて、例えば、郵便番号に基づいて、顧客トランザクション記録を総計する。総計記録は、出口点５４４へとつながるポート上に提供される。
【００４７】
データフローグラフ５００は、フローユニットを使用してデータ記録のフローを追跡するように修正される。例えば、データフローグラフ計装エンジン（例えば、図２に示されるデータフローグラフ計装エンジン２０６）を使用する。文字列表示を使用することで、フローユニットは、フローについて記述するために組み合わせることができる個別のデータ記録とは無関係に、データフローグラフ中を通るデータ記録の複雑なフローについて記述することができる。例えば、コンポーネント「ａｃ」によって提供されたデータ記録は、フローユニット文字列「ａｃ．ａ」によってタグ付けし、コンポーネント「ａｃ」５０２用の「ａ」ポートに由来するデータ記録を示すことができる。
【００４８】
データ記録がフィルタコンポーネント「ｆ１」５０４によってフィルタ処理された時点で、フローユニット文字列「ｆ１．ｂ」によってデータ記録をタグ付けし、データ記録がフィルタコンポーネント「ｆ１」５０４の「ｂ」ポート上に提供されたことを示すことができる。ある実施形態では、フローユニットは、データ記録が取った経路の各部分を特定する履歴文字列を含み得る。例えば、データ記録は、履歴文字列「（ａｃ．ａ）ｆ１．ｂ」でタグ付けすることができる。括弧を使用して、ｆ１．ｂフローユニットがａｃ．ａフローユニットを消費したことを示すことができる。
【００４９】
同様に、コンポーネント「ａｔ」５１０によって提供されたデータ記録は、履歴文字列「ａｔ．ａ」を有するフローユニットでタグ付けし、データ記録がコンポーネント「ａｔ」５１０のポート上に提供されたことを示すことができる。
【００５０】
結合コンポーネント「ｊ１」５１２は、フィルタコンポーネント「ｆ１」５０４からの一方の顧客データ記録をコンポーネント「ａｔ」５１０からのトランザクション記録と組み合わせる。組み合わされたデータ記録は、履歴文字列「（（ａｃ．ａ）ｆ１．ｂ，ａｔ．ａ）ｊ１．ａ」を有するフローユニットでタグ付けし、顧客記録からのフローユニット（「（ａｃ．ａ）ｆ１．ｂ」）とトランザクション記録（「ａｔ．ａ」）とを組み合わせることによって、新しいフローユニットが作成されたことを示すことができる。コンマを使用して、一緒に組み合わされた複数のフローユニットを分離することができる。
【００５１】
同様に、顧客情報データ記録は、コンポーネント「ｃｉ」５３２によって提供され、履歴文字列「ｃｉ．ａ」を有するフローユニットでタグ付けされる。顧客情報データ記録は、コンポーネント「ｒ１」５３４によって再フォーマットされる。再フォーマットされた顧客情報データ記録は、履歴文字列「（ｃｉ．ａ）ｒ１．ａ」を有するフローユニットでタグ付けされる。
【００５２】
結合コンポーネント「ｊ３」５３８は、結合コンポーネント「ｊ１」５１２からの組み合わされたデータ記録とコンポーネント「ｒ１」５３４からの再フォーマットされた顧客情報データ記録とを組み合わせる。新たに組み合わされた記録は、履歴文字列「（（（ａｃ．ａ）ｆ１．ｂ，ａｔ．ａ）ｊ１．ａ，（ｃｉ．ａ）ｒ１．ａ）ｊ３．ａ」を有するフローユニットでタグ付けすることができる。
【００５３】
ロールアップコンポーネント「ｒｕ」５４２は、結合コンポーネント「ｊ３」から放出される複数の記録を単一の記録に組み合わせる。履歴フィールドのアスタリスクを使用して、同じフローからの複数の記録が一緒に組み合わされていることを示すことができる。例えば、ロールアップ記録は、履歴文字列「（＊（（（ａｃ．ａ）ｆ１．ｂ，ａｔ．ａ）ｊ１．ａ，（ｃｉ．ａ）ｒ１．ａ）ｊ３．ａ）ｒｕ．ａ」を有するフローユニットでタグ付けすることができる。この表記法は、複数の「（（（ａｃ．ａ）ｆ１．ｂ，ａｔ．ａ）ｊ１．ａ，（ｃｉ．ａ）ｒ１．ａ）ｊ３．ａ」フローユニットがｒｕ．ａフローユニットの生成において消費されたことを示す。
【００５４】
図６は、出力データ記録の生成につながる入力データ記録を特定する例を示す。実行フロー経路履歴のすべてが決定された時点で、フロー経路履歴を使用して、実行フロー経路のすべてまたは一部にわたる全体的または部分的範囲を提供するデータのサブセットを決定することができる。例えば、関係型データベースに格納された表６０２は、図５のデータフローグラフ５００から生成されたデータ記録のすべてに対する実行フロー経路を含む。表６０２の各行は、データフローグラフによって生成された出力データ記録に対応する。表の１つの列は、出力記録を生成するために取った実行経路について説明するフローユニット履歴を含む。出力記録から、入力記録を決定することができる。各出力記録は、図４と関連して上記で説明されるような入れ子フローユニットを含むフローユニットに対応する。例えば、矢印６０６によって表されるように、行６０４は、フローユニット６０８の表示を含む。フローユニット６０８は、フローユニットの生成において消費されたすべてのフローユニットを含む。行６０４に対応する出力データ記録の生成に必要な入力データ記録は、フローユニット木の「葉ノード」を検査することによって決定することができる。それは、それらの生成において他のいかなるフローユニットも消費しなかったフローユニットである。
【００５５】
この例では、入れ子フローユニット６１０は、コンポーネント「ｃｉ」の「ａ」ポート上に提供された第１０のデータ記録が出力データ記録の作成において使用されたことを示す。コンポーネント「ｃｉ」は単一のポートのみを含むため（図５のコンポーネント「ｃｉ」５３２を参照）、入力データ記録を一意的に特定することができる。
【００５６】
同様に、入れ子フローユニット６１２、６１４、６１６、６１８および６２０は、コンポーネント「ａｔ」の「ａ」ポート上に提供された第８のデータ記録、コンポーネント「ａｃ」の「ａ」ポート上に提供された第１０のデータ記録、コンポーネント「ｃｉ」の「ａ」ポート上に提供された第１９のデータ記録、コンポーネント「ａｔ」の「ａ」ポート上に提供された第２１のデータ記録およびコンポーネント「ａｃ」の「ａ」ポート上に提供された第３０のデータ記録がそれぞれ、出力データ記録の作成において使用されたことを示す。これらの記録を含むデータのサンプルセットは、表６０２の行６０４に対応する出力データ記録を生成する。
【００５７】
出力データ記録の選択されたサブセットと関連付けられたフローユニット履歴を使用することによって、これらの出力記録を生成する入力データ記録のサブセットを選択することができる。入力データ記録のこのサブセットは、プログラムの挙動を変更することなく、テストまたは分析のために使用することができる。例えば、テストセットがコンポーネント「ａｔ」の「ａ」ポート上に提供された第２１のデータ記録を含まなければ、グラフの実行により、同じ出力記録が生成されることはない。
【００５８】
図７は、データ記録にフローユニットを追加するように、データフローグラフのデータソースコンポーネントを修正する例を示す。一般に、データフローグラフは、データ記録にフローユニットを追加したり、データフローグラフに実行経路のマップを提供するためにフローユニットを一緒に組み合わせたり、データ記録がデータフローグラフを出る前にフローユニットを除去したりするように計装することができる。
【００５９】
記録系列を提供するようにデータフローグラフ７００を修正するステップは、フローユニットを含むように各データ記録を再フォーマットするコンポーネントを各データソースの後に追加するステップを含む。ある実施形態では、各データソースは、元の入力データセットコンポーネントのコピーと、フローユニットを含むように各データ記録を再フォーマットするコンポーネントとを含むサブグラフ（または入れ子グラフ）と置き換えられる。例えば、データフローグラフ７００は、データソース７０２がフローユニットジェネレータコンポーネント７０４にデータ記録を提供するように修正される。
【００６０】
ある実施形態では、フローユニットジェネレータコンポーネント７０４は、各データ記録に追加のフィールドを追加し、追加のフィールドは、上記で説明されるようなフローユニットである。
【００６１】
図８は、データ記録にフローユニットを追加するように、複数の出力ポートを備えたコンポーネントを修正する例を示す。データフローグラフ７００は、複数の出力ポート８０４、８０６を有する再フォーマットコンポーネント８０２を含む。この例では、別々のフローユニットジェネレータコンポーネントが各ポートに追加される。ポート８０４はフローユニットジェネレータ８０８に対応し、ポート８０６はフローユニットジェネレータ８１０に対応する。ある実施形態では、複数の出力ポートを備えたコンポーネントは、サブグラフと置き換えられる。例えば、サブグラフ８１２は、元のコンポーネントのコピーを含み、フローユニットを備えたデータ記録を各ポート上に提供する。
【００６２】
図９は、フローユニットを処理するように、データシンクを修正する例を示す。データフローグラフ７００は、データシンク９０２を含む。データフローグラフは、フローユニット除去コンポーネント９０４を追加するように修正される。フローユニット除去コンポーネント９０４は、データ記録からフローユニットを除去し、それをフローユニットリポジトリ９０６に格納する。フローユニットのないデータ記録は、データシンク９０２に格納される。
【００６３】
図１０は、複数のデータフローグラフにわたってフローユニットを使用する例を示す。例えば、計装データフローグラフＡ  １００４は、データストア１００２からデータ記録を読み取る。プロセス矢印１００６で表されるように、データフローグラフＡ  １００４は、記録を処理し、データストア１００８に出力データ記録を生成する。プロセス矢印１０１２で表されるように、データフローグラフＡ  １００４によって生成された各出力データ記録は、フローユニットリポジトリ１０１０に格納されたフローユニットと関連付けられる。
【００６４】
プロセス矢印１０１６で表されるように、計装データフローグラフＢは、データストア１００８からデータ記録を読み取り、記録を処理し、それらをデータストア１０２０に格納する。プロセス矢印１０１４で表されるように、データストア１００８から読み取られた各データ記録に対する新しいフローユニットを作成する代わりに、計装データフローグラフＢ  １０１８は、フローユニットリポジトリ１０１０からデータ記録と関連付けられたフローユニットを読み取る。
【００６５】
プロセス矢印１０２２で表されるように、計装データグラフは、フローユニットリポジトリ１０１０にフローユニットを格納する。計装データフローグラフＢ  １０１８から生成されたフローユニットは、消費されたフローユニットと、データフローグラフＡ  １００４とデータフローグラフＢ  １０１８の両方を通るデータ記録およびその先行データ記録の完全な実行経路を特定する履歴とを含む。
【００６６】
図１１は、フロー分析のための例示的なプロセスを示す。プロセスは、例えば、図１のコンピュータ１１２などの１つまたは複数のコンピューティングデバイス上で実装することができる。
【００６７】
プロセス１１００は、データフローグラフを修正する（１１０２）。データフローグラフは、データフローグラフで処理されたデータ記録からフローユニットを追加および除去するように修正される。各フローユニットは、データフローグラフ中を通る経路のセグメントを特定する。
【００６８】
プロセス１１００は、フローユニットに基づいて実行経路を特定する（１１０４）。フローユニットを使用して、データ記録およびそれを生成するために使用された先行記録が取ったデータフローグラフ中を通る経路を特定することができる。
【００６９】
プロセス１１００は、データ記録のサブセットを決定する（１１０６）。データ記録のサブセットは、実行経路に基づいて決定され、その結果、サブセットの少なくとも１つのデータ記録は、データフローグラフ中を通る各実行経路を通ったことになる。
【００７０】
本明細書に記載される対象物およびオペレーションの実施形態は、本明細書で開示される構造およびそれらの構造上の均等物またはそれらの１つもしくは複数の組合せを含む、デジタル電子回路、または、コンピュータソフトウェア、ファームウェアもしくはハードウェアにおいて実装することができる。本明細書に記載される対象物の実施形態は、データ処理装置によって実行するために、または、データ処理装置の動作を制御するために、コンピュータ記憶媒体上で符号化された１つまたは複数のコンピュータプログラム（すなわち、コンピュータプログラム命令の１つまたは複数のモジュール）として実装することができる。その代替としてまたはそれに加えて、プログラム命令は、人工的に生成された伝播信号（例えば、データ処理装置で実行するため、適切な受信機装置への送信のために情報を符号化するように生成された機械的に生成された電気信号、光信号または電磁信号）上で符号化することができる。コンピュータ記憶媒体は、コンピュータ可読記憶装置、コンピュータ可読記憶基板、ランダムもしくはシリアルアクセスメモリアレイもしくはデバイス、または、それらの１つもしくは複数の組合せであっても、それらに含まれてもよい。その上、コンピュータ記憶媒体は伝播信号ではないが、コンピュータ記憶媒体は、人工的に生成された伝播信号で符号化されたコンピュータプログラム命令の送信元または送信先であり得る。また、コンピュータ記憶媒体は、１つまたは複数の別々の物理的コンポーネントまたは媒体（例えば、複数のＣＤ、ディスクまたは他の記憶装置）であっても、それらに含まれてもよい。
【００７１】
本明細書に記載されるオペレーションは、１つもしくは複数のコンピュータ可読記憶装置上に格納されるかまたは他の送信元から受信されるデータに対して、データ処理装置によって実行されるオペレーションとして実装することができる。
【００７２】
「データ処理装置」という用語は、データを処理するためのあらゆる種類の装置、デバイスおよびマシンを包含し、一例として、プログラマブルプロセッサ、コンピュータ、システムオンチップ、または、前述の複数のものもしくは組合せを含む。装置は、特殊用途論理回路、例えば、ＦＰＧＡ（フィールドプログラマブルゲートアレイ）またはＡＳＩＣ（特定用途向け集積回路）を含み得る。また、装置は、ハードウェアに加えて、問題のコンピュータプログラム用の実行環境を作成するコード、例えば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、クロスプラットフォームランタイム環境、仮想マシン、または、それらの１つもしくは複数の組合せを構成するコードも含み得る。装置および実行環境は、ウェブサービス、分散コンピューティングおよびグリッドコンピューティングインフラストラクチャなどのさまざまな異なるコンピューティングモデルインフラストラクチャを実現することができる。
【００７３】
コンピュータプログラム（プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプトまたはコードとしても知られる）は、コンパイラ型またはインタープリタ型言語、宣言型または手続き型言語を含む、いかなる形式のプログラミング言語でも記述することができ、スタンドアロンプログラムとして、または、コンピューティング環境での使用に適したモジュール、コンポーネント、サブルーチン、オブジェクトまたは他のユニットとして含む、いかなる形式でも展開することができる。コンピュータプログラムは、ファイルシステムのファイルに対応することができるが、対応できなくてもよい。プログラムは、他のプログラムもしくはデータを保持するファイルの一部（例えば、マークアップ言語ドキュメントに格納された１つまたは複数のスクリプト）に、問題のプログラム専用の単一のファイルに、または、複数の連携ファイル（例えば、１つまたは複数のモジュール、サブプログラムまたはコードの部分を格納するファイル）に格納することができる。コンピュータプログラムは、１つのコンピュータ上、または、１つの場所に位置するかもしくは複数の場所にわたって分散し、通信ネットワークによって相互接続される複数のコンピュータ上で実行されるように展開することができる。
【００７４】
本明細書に記載されるプロセスおよび論理のフローは、入力データの操作および出力の生成によって動作を実行するために１つまたは複数のコンピュータプログラムを実行する１つまたは複数のプログラマブルプロセッサによって実行することができる。また、プロセスおよび論理のフローは、特殊用途論理回路、例えば、ＦＰＧＡ（フィールドプログラマブルゲートアレイ）またはＡＳＩＣ（特定用途向け集積回路）によって実行することもでき、装置は、特殊用途論理回路、例えば、ＦＰＧＡ（フィールドプログラマブルゲートアレイ）またはＡＳＩＣ（特定用途向け集積回路）として実装することもできる。
【００７５】
コンピュータプログラムの実行に適したプロセッサは、一例として、汎用マイクロプロセッサと専用マイクロプロセッサの両方およびあらゆる種類のデジタルコンピュータのいずれか１つまたは複数のプロセッサを含む。一般に、プロセッサは、読み取り専用メモリもしくはランダムアクセスメモリまたはその両方から命令およびデータを受信する。コンピュータの不可欠な要素は、命令に従って動作を実行するためのプロセッサと、命令およびデータを格納するための１つまたは複数のメモリデバイスである。また、一般に、コンピュータは、データを格納するための１つまたは複数の大容量記憶装置（例えば、磁気ディスク、光磁気ディスクまたは光ディスク）を含むか、あるいは、それらと動作可能に結合され、データの受信もしくはデータの送信またはその両方を行う。しかし、コンピュータには、そのようなデバイスがなくてもよい。その上、コンピュータは、いくつか例を挙げてみると、例えば、携帯電話、携帯情報端末（ＰＤＡ）、携帯型オーディオもしくはビデオプレーヤ、ゲーム機、全地球測位システム（ＧＰＳ）受信機、または、携帯用の記憶装置（例えば、ユニバーサルシリアルバス（ＵＳＢ）フラッシュドライブ）などの別のデバイスに埋め込むことができる。コンピュータプログラム命令およびデータの格納に適したデバイスは、すべての形式の不揮発性メモリ、媒体およびメモリデバイスを含み、一例として、半導体メモリデバイス（例えば、ＥＰＲＯＭ、ＥＥＰＲＯＭおよびフラッシュメモリデバイス）、磁気ディスク（例えば、内蔵ハードディスクまたはリムーバブルディスク）、光磁気ディスク、ならびに、ＣＤ−ＲＯＭおよびＤＶＤ−ＲＯＭディスクを含む。プロセッサおよびメモリは、特殊用途論理回路によって補完することも、特殊用途論理回路に組み込むこともできる。
【００７６】
ユーザとの相互作用を提供するため、本明細書に記載される対象物の実施形態は、ユーザに情報を表示するためのディスプレイデバイス（例えば、ＣＲＴ（ブラウン管）またはＬＣＤ（液晶ディスプレイ）モニタ）や、それによりユーザはコンピュータに入力を提供することができるキーボードおよびポインティングデバイス（例えば、マウスまたはトラックボール）を有するコンピュータ上で実装することができる。同様に、他の種類のデバイスを使用して、ユーザとの相互作用を提供することもできる。例えば、ユーザに提供されるフィードバックは、いかなる形式の感覚フィードバック（例えば、視覚フィードバック、聴覚フィードバックまたは触覚フィードバック）でもよく、ユーザからの入力は、音響、音声または触覚入力を含むいかなる形式でも受信することができる。それに加えて、コンピュータは、ユーザによって使用されるデバイスへのドキュメントの送信および同デバイスからのドキュメントの受信によって（例えば、ウェブブラウザから受信された要求に応じて、ユーザのクライアントデバイス上のウェブブラウザへウェブページを送信することによって）ユーザと相互作用することができる。
【００７７】
本明細書に記載される対象物の実施形態は、バックエンドコンポーネント（例えば、データサーバとして）を含むか、ミドルウェアコンポーネント（例えば、アプリケーションサーバ）を含むか、フロントエンドコンポーネント（例えば、それを通じてユーザは本明細書に記載される対象物の実施形態と相互作用することができるグラフィカルユーザインターフェースもしくはウェブブラウザを有するクライアントコンピュータ）を含むか、または、そのようなバックエンド、ミドルウェアもしくはフロントエンドコンポーネントの１つもしくは複数の任意の組合せを含むコンピューティングシステムにおいて実装することができる。システムのコンポーネントは、デジタルデータ通信のいかなる形式または媒体（例えば、通信ネットワーク）によっても相互接続することができる。通信ネットワークの例は、ローカルエリアネットワーク（「ＬＡＮ」）および広域ネットワーク（「ＷＡＮ」）、インターネットワーク（例えば、インターネット）、ならびに、ピアツーピアネットワーク（例えば、アドホックピアツーピアネットワーク）を含む。
【００７８】
コンピューティングシステムは、クライアントとサーバとを含み得る。クライアントおよびサーバは、一般に、互いにリモート接続され、通常、通信ネットワークを通じて相互作用する。クライアントとサーバとの関係は、それぞれのコンピュータ上で実行し、互いにクライアント／サーバ関係を有するコンピュータプログラムに基づいて生じる。ある実施形態では、サーバは、クライアントデバイスにデータ（例えば、ＨＴＭＬページ）を送信する（例えば、クライアントデバイスと相互作用するユーザへのデータの表示および同ユーザからのユーザ入力の受信を目的として）。クライアントデバイス側で生成されたデータ（例えば、ユーザ相互作用の結果）は、クライアントデバイスからサーバ側で受信することができる。
【００７９】
本明細書は多くの特定の実施形態の詳細を含むが、これらは、発明の範囲または特許請求され得る範囲を制限するものと解釈されてはならず、むしろ、特定の発明の特定の実施形態に特有の特徴を説明するものとして解釈されたい。別々の実施形態の文脈において本明細書に記載されるある特定の特徴は、単一の実施形態と組み合わせて実装することもできる。逆に、単一の実施形態の文脈において記載されるさまざまな特徴は、複数の実施形態において別々にまたは任意の適切な下位組合せで実装することもできる。その上、特徴は、ある特定の組合せで機能するものとして上記で説明され得、そのようなものとして最初に特許請求されることさえあり得るが、特許請求された組合せからの１つまたは複数の特徴は、いくつかの事例では、その組合せから削除することができ、特許請求された組合せは、下位組合せまたは下位組合せの変形形態を対象とし得る。
【００８０】
同様に、オペレーションは、図面において特定の順番で描写されているが、これは、所望の結果を得るために、示される特定の順番でもしくは起こった順番でそのようなオペレーションを実行すること、または、示されるすべてのオペレーションを実行することが必要であると理解してはならない。ある特定の状況では、マルチタスクおよび並行処理が有利であり得る。その上、上記で説明される実施形態のさまざまなシステムコンポーネントの分離は、すべての実施形態においてそのような分離が必要であると理解してはならず、説明されるプログラムコンポーネントおよびシステムは、一般に、単一のソフトウェア製品に一緒に統合することも、複数のソフトウェア製品にパッケージ化することもできることを理解されたい。
【００８１】
したがって、対象物の特定の実施形態について説明してきた。他の実施形態は、以下の特許請求の範囲内にある。いくつかの事例では、特許請求の範囲内に列挙される動作は、異なる順番で実行しても依然として所望の結果を得ることができる。それに加えて、添付の図面に描写されるプロセスは、所望の結果を得るために、必ずしも示される特定の順番または起こった順番でなければならないわけではない。ある実施形態では、マルチタスクおよび並行処理が有利であり得る。
【００８２】
上記で説明されるフロー分析手法は、コンピュータ上で実行するためのソフトウェアを使用して実装することができる。例えば、ソフトウェアは、１つまたは複数のプログラムされたまたはプログラム可能なコンピュータシステム（それは、分散型、クライアント／サーバまたはグリッドなどのさまざまなアーキテクチャのものである）上で実行する１つまたは複数のコンピュータプログラムの手順を形成し、コンピュータシステムはそれぞれ、少なくとも１つのプロセッサと、少なくとも１つのデータ格納システム（揮発性および不揮発性メモリならびに／または格納要素を含む）と、少なくとも１つの入力デバイスまたはポートと、少なくとも１つの出力デバイスまたはポートを含む。ソフトウェアは、例えば、データフローグラフの設計および構成に関連する他のサービスを提供する大規模なプログラムの１つまたは複数のモジュールを形成することができる。グラフのノードおよび要素は、コンピュータ可読媒体に格納されたデータ構造、または、データリポジトリに格納されたデータモデルに適合する他の組織化されたデータとして実装することができる。
【００８３】
ソフトウェアは、汎用もしくは特殊用途のプログラム可能なコンピュータによる読み取りが可能なＣＤ−ＲＯＭなどの記憶媒体上で提供されても、ネットワークの通信媒体上で、ソフトウェアが実行されるコンピュータの記憶媒体に送達されてもよい（伝播信号で符号化される）。機能のすべては、特殊用途のコンピュータ上か、または、コプロセッサなどの特殊用途のハードウェアを使用して実行することができる。ソフトウェアは、ソフトウェアによって指定されるコンピューテーションの異なる部分は異なるコンピュータによって実行される分散様式で実装することができる。それぞれのそのようなコンピュータプログラムは、好ましくは、汎用もしくは特殊用途のプログラム可能なコンピュータによる読み取りが可能な記憶媒体もしくはデバイス（例えば、ソリッドステートメモリもしくは媒体、または、磁気もしくは光媒体）上に格納されるか、または、同記憶媒体もしくはデバイスにダウンロードされるが、それは、コンピュータシステムで記憶媒体もしくはデバイスを読み取り、本明細書に記載される手順を実行する際にコンピュータを構成および動作するためである。また、本発明のシステムは、コンピュータ可読記憶媒体として実装され、コンピュータプログラムを用いて構成されるものと考慮され得、そのように構成された記憶媒体は、特定の事前に定義された様式でコンピュータシステムを動作させ、本明細書に記載される機能を実行する。
【００８４】
本発明の多くの実施形態について説明してきた。それにもかかわらず、本発明の精神および範囲から逸脱することなく、さまざまな変更を行うことができることが理解されよう。例えば、上記で説明されたステップのいくつかは、順番に依存しないものであり得、したがって、説明されている順番とは異なる順番で実行することができる。
【００８５】
前述の説明は、例示を意図するものであり、本発明の範囲を限定するものではなく、本発明の範囲は、添付の特許請求の範囲によって定義されることを理解されたい。例えば、上記で説明された多くの機能ステップは、処理全体に実質的に影響を与えることなく、異なる順番で実行することができる。他の実施形態は、以下の特許請求の範囲内にある。
【図１】
0005886878.tif 000002
【図２】
0005886878.tif 000003
【図３】
0005886878.tif 000004
【図４】
0005886878.tif 000005
【図５】
0005886878.tif 000006
【図６】
0005886878.tif 000007
【図７】
0005886878.tif 000008
【図８】
0005886878.tif 000009
【図９】
0005886878.tif 000010
【図１０】
0005886878.tif 000011
【図１１】
0005886878.tif 000012