メッセージを使用してデータを処理するためのコンピュータシステムであって、有向グラフによって表される態様で相互接続されている複数の独立非同期処理ノードを備え、前記複数の処理ノードは、メッセージのグループを出力するように構成されている第1のノードを含み、前記複数の処理ノードは、前記第1のノードによって出力されたメッセージのグループ内のメッセージを順番に処理するように構成されている第2のノードを含む、コンピュータシステム。各メッセージは、一意の識別子を有し、メッセージのグループ内において、前記メッセージの一意の識別子は、ツリーによって表される、請求項1に記載のコンピュータシステム。子メッセージの前記一意の識別子は、親メッセージを示し、親メッセージの前記一意の識別子は、子メッセージの数を示す、請求項2に記載のコンピュータシステム。前記第1のノードは、親メッセージのメッセージ識別子を受信する入力と、子メッセージに対するメッセージ識別子を提供する出力とを有するメッセージ識別子生成器と、前記子メッセージに対する前記メッセージ識別子を受信する入力を有するメッセージタッガーであって、前記子メッセージは、前記第1のノードによって出力され、前記メッセージタッガーは、前記メッセージ識別子を前記子メッセージに関連付ける、メッセージタッガーとを備えている、請求項1に記載のコンピュータシステム。前記第2のノードは、メッセージのグループ内のメッセージを記憶するためのバッファと、他のメッセージを記憶するための入力待ち行列と、バッファマネージャとを備え、前記バッファマネージャは、入力メッセージがメッセージのグループ内にあるかどうかを検出することと、前記メッセージがメッセージのグループ内にある場合、前記メッセージが親ノードであるかどうか決定することと、前記メッセージが親ノードではない場合、前記メッセージを前記バッファに置くことと、前記メッセージが親ノードである場合、子ノードの数を決定し、前記メッセージを前記バッファに置くこととを行うように構成されている、請求項1に記載のコンピュータシステム。前記バッファマネージャは、前記メッセージのグループからの全メッセージが前記第2のノードによって受信されたかどうかを検出するように構成されている、請求項5に記載のコンピュータシステム。前記バッファマネージャは、前記メッセージ識別子からの親ノードおよび子ノードの数を前記バッファ内のメッセージの数と比較することによって、前記メッセージのグループからの全メッセージが受信されたかどうかを検出する、請求項6に記載のコンピュータシステム。前記第2のノードは、メッセージプロセッサをさらに備え、前記メッセージプロセッサは、前記入力待ち行列および前記バッファからのメッセージを処理し、前記メッセージプロセッサは、前記バッファマネージャがメッセージのグループからの全メッセージが受信されたかどうかを検出した後に、互に対して順番に、前記バッファ内の前記メッセージのグループを処理する、請求項6に記載のコンピュータシステム。前記第1のノードは、入力メッセージを受信するための入力であって、前記入力メッセージは、一意の識別子を伴う親メッセージである、入力と、前記親メッセージを処理するための第1のメッセージプロセッサであって、前記第1のメッセージプロセッサは、メッセージのグループ内の1つ以上の子メッセージを提供する出力を有する、第1のメッセージプロセッサと、前記子メッセージを提供する出力とを備え、各子メッセージは、前記親メッセージを示す前記一意の識別子を有し、親メッセージの前記一意の識別子は、子メッセージの数を示すように修正されている、請求項1に記載のコンピュータシステム。前記第2のノードは、メッセージのグループ内のメッセージを記憶するためのバッファと、他のメッセージを記憶するための入力待ち行列と、第2のメッセージプロセッサであって、前記入力待ち行列および前記バッファからのメッセージを処理する第2のメッセージプロセッサと、バッファマネージャとを備え、前記バッファマネージャは、入力メッセージがメッセージのグループ内にあるかどうかを検出することと、前記メッセージがメッセージのグループ内にある場合、前記メッセージが親ノードであるかどうか決定することと、前記メッセージが親ノードではない場合、前記メッセージを前記バッファに置くことと、前記メッセージが親ノードである場合、子ノードの数を決定し、前記メッセージを前記バッファに置くこととを行うように構成され、前記バッファマネージャは、前記メッセージのグループからの全メッセージが前記第2のノードによって受信されたかどうかを検出するようにさらに構成され、前記メッセージプロセッサは、前記バッファマネージャが前記メッセージのグループからの全メッセージが受信されたかどうかを検出した後に、前記バッファ内のメッセージのグループを順番に処理する、請求項9に記載のコンピュータシステム。処理が有向グラフによって表される高並列非同期データフロー処理システムは、従属メッセージのグループを生成し、処理し、そのようなグループ内のメッセージを順番に処理する処理ノードを含むことができる。他のメッセージは、処理ノードによって受信される順番に処理することができる。従属メッセージのグループを識別するために、メッセージ識別子がメッセージに適用される。メッセージの処理は、子メッセージを生成し得る。子メッセージは、親メッセージの関連付けられたメッセージ識別子を組み込むメッセージ識別子が割り当てられる。親メッセージのメッセージ識別子は、関連子メッセージの数を示すように注釈付けされる。メッセージのグループが順番に処理ノードによって処理される場合、処理ノードは、グループ内のメッセージが記憶されるバッファを維持する。メッセージが受信されると、そのメッセージ識別子は、それがグループ内にあるかどうか、該当する場合、その親ノード、および、親ノードである場合にそれが有する子ノードの数を示す。この情報から、グループ内の全メッセージが受信されたかどうかを決定することができる。グループ内の全メッセージが受信されると、処理ノードは、メッセージを順番に処理することができる。インデックス化され、検索可能であるデータ記憶装置へのドキュメントの処理および取り込みは、多数のステップを伴い、そのうちのいくつかは、特定の順序で実行され、その他は、並行して処理される。本明細書で使用される場合、用語ドキュメントとは、.pdfファイル、ビデオ、オーディオ、電子メール等の非構造化データ、またはXMLファイル、.csvファイル、あるいはデータベースソースから受信したデータ等の構造化データを指し得る。ドキュメント処理および取り込みを促進するために、ドキュメントは、一意のメッセージIDを有するメッセージ内に保持される。いくつかのドキュメント例えば、複数の添付ファイルを有する電子メールは、さらに他のドキュメントを含む。そのようなドキュメントは、ドキュメントを処理する、複数の処理スレッドの可能性、ドキュメントの異なる部分に対しする異なる処理時間の可能性、および、ドキュメントの再帰的処理の可能性を導入する。そのようなドキュメントからのデータのデータベースへの収容がドキュメントの処理の完了に依存する場合、そのような可能性は、ドキュメントの処理に有意な複雑性を導入する。図1は、ドキュメントを処理するための、高並列非同期データフロー処理システムを実装する例示的コンピュータシステムを例証し、有向グラフを使用して処理を表す。1つ以上のドキュメント110は、レコードベースのデータベース管理システムRDBMS等、ドキュメント記憶装置100を介して、システムに入力を供給する。ドキュメント110は、メッセージ111内に挿入され、メッセージ111も各々は、一意のメッセージ識別子を有する。処理ノード120a-cは、メッセージ111を受信し、適宜、それら内のドキュメントを処理する。各処理ノード120a-cは、複数のスレッドプールを備え、複数のスレッドプールは、同時に、多くのメッセージ111の処理を可能にし得る。入力待ち行列125a-dは、各処理ノードに先行する。入力待ち行列125a-dは、各ノードがリソースを過剰に投入せずにメッセージを処理することを可能にし、待ち行列が一杯になる場合に、先行ノードをブロッキングする。したがって、入力待ち行列125a-dは、スレッドプールとともに、全体的システムにかかる負荷を抑制する。各メッセージは、処理された後、例えば、インデックス化された検索可能データ記憶装置140に取り込まれ得る。そのようなシステムは、典型的には、プラットフォーム例えば、オペレーティングシステムおよびアプリケーション処理フレームワークを伴うコンピュータを使用して実装され、プラットフォームは、仕様に準拠するプログラマによって作成されるアプリケーションを処理するように設計されている。例えば、プログラマは、高並列任意有向グラフを形成する相互接続された処理ノードを伴うアプリケーションを作成する。そのようなアプリケーションでは、アプリケーションプログラマは、特定の処理ノードが、メッセージを生成し得るか、または、メッセージを互に対して特定の順番で処理するかどうか決定するであろう。大部分のメッセージは、順番に処理される必要はない。順序化されたメッセージ処理を必要としない処理ノードは、メッセージ順序化を考慮することなく他のノードと並行して稼動することができる。しかしながら、いくつかの処理ノードは、単一メッセージから、複数のメッセージ、すなわち、メッセージのグループを作成し、このメッセージのグループ内のメッセージは、互に対して順番に処理される必要があり得る。また、処理ノードは、メッセージのグループから、メッセージのうちの1つ以上を受信し得、互に対して順番に受信したメッセージを処理する必要があり得る。グループ内にない他のメッセージは、グループに対して、任意の順番で処理することができる。アプリケーションプログラマは、処理ノードが従属メッセージのグループを生成するかどうか、および処理ノードが、順番に、従属メッセージのグループからのメッセージを処理するかどうか決定するであろう。一般に、メッセージ順序化は、従属メッセージを一緒にグループ化することによって、このシステム内に維持される。例として、メッセージのグループは、ツリーとしてメッセージ間の従属を表すメッセージ識別子を使用することによって識別され得る。個々のノードおよび処理されるメッセージの特性は、順序化制約が満たされ、再帰的処理が全体的システム性能に影響を及ぼすことなく可能にされるように、メッセージフローを方向付けるために使用される。例えば、いくつかの処理ノードは、順序化されたメッセージ処理を必要としないことがあり、いくつかのメッセージタイプは、任意の特定の順番で処理されることを必要としない。任意の処理ノードは、順序化された処理を必要とするメッセージのグループからのメッセージを処理しているかどうかを検出するように構成されることができる。例えば、図1では、処理ノード130は、メッセージのグループからのメッセージを検出し、次いで、処理を停止し、メッセージのグループ内の受信したメッセージに先行するメッセージの受信を待つ。グループの順序化されたメッセージ処理を必要とする処理ノードは、そのように注釈付けされ、メッセージ識別子に基づいて、順番に、メッセージのグループ内のメッセージを配信する修正入力待ち行列によって先行される。図2は、メッセージ識別子をメッセージに割り当てるための方法200を説明する流れ図である。ステップ210では、メッセージ識別子を伴うメッセージが受信される。次に、220では、メッセージが処理され、1つ以上の子メッセージが生成される。例えば、電子メール等のメッセージは、複数の添付ファイルを含み得、子メッセージは、各添付ファイルに対して生成される。230では、子メッセージは、親メッセージのメッセージ識別子を組み込むようにエンコードされるメッセージ識別子が割り当てられる。240では、親メッセージのメッセージ識別子は、子メッセージの数を示すように注釈付けされる。この注釈は、処理ノードが全関連メッセージが受信された場合を把握することを可能にする。方法200は、特定のシーケンスで発生するように示されるが、他の実施形態では、同様に、他のシーケンスも可能である。従属メッセージのグループを生成する、処理ノードは、このメッセージ識別子割当プロセスを実装する。例えば、ステップ210において、メッセージ識別子1を有し、複数の添付ファイルを含む電子メールメッセージであるメッセージが受信されると仮定する。220では、電子メール処理ノードは、電子メールメッセージを処理し、各添付ファイルに対して、子メッセージを生成する。各添付ファイルは、親のメッセージ識別子を組み込むメッセージの中に挿入される。この場合、親識別子は、1である。したがって、2つの添付ファイルがある場合、第1の添付ファイルは、マルチパートメッセージ識別子1.1を伴うメッセージの中に挿入され、第2の添付ファイルは、識別子1.2を伴うメッセージの中に挿入されるであろう。240では、親メッセージのメッセージ識別子は、2つの子メッセージを有するように注釈付けされる。さらに、子ドキュメント1.1が2つの子を有すると仮定する。220では、子メッセージが生成され、230では、子メッセージは、ID1.1.1および1.1.2が割り当てられる。子ドキュメント1.1は、次いで、240において、2つの子を有するように注釈付けされる。図3A-3Dは、有向グラフを使用して、ドキュメント取り込みシステム内の複数の処理ステップノードを表す、例示的アプリケーションを例証する。1つ以上のドキュメントソースが処理ノード302を介して、システムに入力を提供する。ソースとして、ファイルシステムリポジトリ、電子メールサーバ、物理的媒体例えば、CD-ROM、DVD、音声認識システムから変換されたテキスト、データベース等が挙げられ得る。処理ノード302は、外部ソースからのドキュメント、または、追加のドキュメントが処理中に発見され、システムに戻るようにルーティングされる場合のドキュメントの処理ステップへの取り込みを管理する。ドキュメントは、最初に、ドキュメントタイプスプリッタ304にルーティングされる。スプリッタ304は、どの後続処理ノードまたは、複数のノードにメッセージを送信すべきかを決定する。例えば、システムは、電子メールテキストある場合には、ヘッダ情報および/またはルーティング情報ならびに電子メールテキストを含み得るを処理するための電子メールノード306、pkZIPまたはいくつかの他のファイルアーカイブまたは圧縮プログラムを使用して作成されるドキュメントを処理するための.zip処理ノード308、MicrosoftWordまたは、GOOGLEDOCS、OpenOffice等の他のワード処理プログラムを使用して作成されるドキュメントを処理するための.doc処理ノード310、およびポータブルドキュメント形式におけるドキュメントを処理するための.pdf処理ノード312を含み得る。図示されない処理ノードの他の例として、画像を処理するための.jpg処理ノード、動画を処理するための.mpegノード、オーディオを処理するための.aviノード、種々の構造化データ形式を処理するためのノード等が挙げられる。提供される実施例では、4つの異なる処理ノードが存在する。しかしながら、任意の数のノードが可能であって、典型的には、システムに利用可能なドキュメントの数およびタイプに基づく。ある場合には、アプリケーションは、そのタイプの多数のドキュメントが頻繁に見られる場合、および/またはプロセスがリソース集約的である場合、同一機能を果たす複数の処理ノード例えば、.jpgファイル専用の3つのノードを含み得る。いくつかの事例では、処理ノードは、メッセージを、さらなる分析を受ける追加のメッセージに分割する。例えば、電子メールは、1つ以上の添付ファイルを有し得、それらの各々この、異なる処理ノードにおいて、異なる処理を受ける。さらに、ドキュメントインデックスの完全性を維持するために、2つ以上の構成要素を有するドキュメントは、全構成要素が正常に処理されない限り、かつそれまで、インデックスに書き込まれるべきではない事例も存在し得る。言い換えると、電子メールへのある添付ファイルの処理が失敗する場合、電子メールのテキストおよび、正常に処理された他の構成要素または添付ファイルは、インデックスに書き込まれるべきではない。いくつかの実装は、部分的ドキュメントインデックス化を可能にし得る一方、他の実装では、本制約は、例外なく、実施され得る。ある場合には、ルールを使用して、どの失敗が容認可能とみなされ、どれが致命的であるかを決定し得る。図2に関連して上に描写されたメッセージ識別子は、この目的のために、親メッセージ、例えば、電子メールを含むメッセージを、子メッセージ例えば、電子メール添付ファイルに関連付けるように使用される。親メッセージは、生成される子メッセージの数を示すように注釈付けされる。一般に、各処理ノードは、メッセージ待ち行列を含む。メッセージ待ち行列は、特定のノードにおいて、処理を待つ複数のメッセージを記憶するために使用される。メッセージ待ち行列は、順番から外れて処理待ち行列に到着した場合に、そのメッセージ識別子に基づいて、従属メッセージのグループ内のメッセージを並べ替えることもできる。図3Aは、一実施形態による、単純な電子メールメッセージ例えば、メッセージテキストを有するが、添付ファイルを有していない、電子メールがどのように処理されるかを例証する。電子メールがシステムに入るのに伴って、0のメッセージIDが割り当てられたメッセージに挿入され、ドキュメントタイプスプリッタ待ち行列304aに転送される。ドキュメントは、次いで、リソースが利用可能である場合、スプリッタ304に進む。スプリッタ304は、それを電子メールとして認識し、電子メール処理ノード306による処理に備えて、メッセージを電子メール待ち行列306aに転送する。電子メールが添付ファイルを含む事例では、電子メールを含むメッセージは、電子メールに関連付けられた子メッセージが存在することを示すように注釈付けされ、それによって、インデクサは、インデックス待ち行列318を処理する場合、全ての関連メッセージが受信されたときを把握し得る。新しい子メッセージが下流処理のために生成されると、現在のメッセージは、子を有するとしてマークされ、新しい子メッセージは、親IDを組み込むようにエンコードされるメッセージIDに割り当てられる。そのようなメッセージの相互参照は、メッセージがすべてのその子または、その親および兄弟メッセージが処理のために、後続処理ノードに到着するまで、その後続処理ノードに保持されることを可能にする。処理を要求するメッセージ例えば、電子メールノード306におけるメッセージID0は、処理され、インデックス待ち行列318に転送され、利用可能である場合、インデックスに解放される。図3B-3Dは、電子メールメッセージが2つの添付ファイル.pdfファイルと、複数の圧縮された.docファイルを含む、.zipファイルを有する、若干より複雑な場合を例証する。図3Bを具体的に参照すると、電子メールノード306において処理後、各添付ファイルは、次のマルチパートメッセージIDが割り当てられ、処理ノード302に戻るように再ルーティングされ、ドキュメント待ち行列304aに置かれる。ドキュメントスプリッタ304は、.pdfファイルを含む子メッセージを.pdf待ち行列312aに、.zipファイルを含む子メッセージを.zip待ち行列308aに転送する。これらの2つの子メッセージは、親メッセージID0を用いてエンコードされ、それらのそれぞれの処理ノード308および312で処理される。.zipファイルを処理する間に、.zipノード308は、.zipファイル内に含まれる複数のファイルが存在することを認識し、メッセージに関連するn個の子メッセージが存在するという指示によって、メッセージに注釈付けするnは、.zipファイル内に含まれるファイルの数を表す。子メッセージは、次いで、インデックス待ち行列318に転送される。インデックサは、同一メッセージIDを有する全メッセージが受信されたことを決定する。しかしながら、インデックサは、.zip子メッセージが2つの追加の子メッセージ.docファイルが存在するという指示を含むので、2つのメッセージを処理しないことがある。したがって、インデックサは、それらのファイルの処理が完了するのを待つ。次に、図3Cを参照すると、.zipファイルコンテンツは、マルチパートメッセージ識別子が割り当てられ、処理ノード302に戻るように再ルーティングされ、ドキュメント待ち行列304aに転送される。スプリッタ304は、新しいマルチパートメッセージIDを有する2つの.docファイルを.doc待ち行列310aに転送する。新しいマルチパートメッセージIDを有する全メッセージがインデックス待ち行列318にルーティングされる。インデックスは、メッセージをインデックス内に記憶する前に、初期マルチパートメッセージID2つの子および新しいマルチパートメッセージID1つの子を有するオリジナルメッセージ内に記述される子メッセージの受信を待つであろう。図3Dは、メッセージID0ならびにインデックス待ち行列318に置かれるその子メッセージ.zipファイルおよび.pdfファイルおよび孫メッセージ.docファイルの階層リストを有するメッセージを例証する。図4は、メッセージのグループを生成する、処理ノードのための例示的構造のブロック図である。処理ノードは、概して、現在のメッセージ418を処理するメッセージプロセッサ400を含む。このメッセージプロセッサ400は、メッセージを処理した結果として、結果402を生成し得る。例えば、これは、.zipファイルに関連付けられたメタデータの処理を含み得る。メッセージプロセッサ400は、処理されている現在のメッセージの子メッセージである、1つ以上の出力メッセージ404も出力し得る。例えば、この処理ノードが.zipファイルを処理するためのものである場合、zipファイルの以前のコンテンツを削除するためのメッセージzipファイルの以前のバージョンの処理の結果が生成される。加えて、.zipファイル内の各ドキュメントは、出力メッセージ404となる。メッセージプロセッサ400は、次いで、ID生成器406に、トリガ408を通して、現在のメッセージのメッセージ識別子412を使用して、子メッセージのためのメッセージ識別子410を生成するように命令するであろう。ID生成器406は、次いで、現在のメッセージ識別子412を更新し、追加の子メッセージを有することを示す。メッセージタッガーmessagetagger414は、子メッセージ識別子410によって、出力メッセージ404にタグ付けし、タグ付けされたメッセージ416を出力する。メッセージプロセッサ400が2つ以上の子メッセージを出力する場合、各子メッセージが出力されるのに伴って、現在のメッセージのメッセージ識別子412が更新され、生成された子メッセージの数を反映する。現在のメッセージ418は、次いで、結果402およびID生成器406によって修正されたメッセージ識別子によって増加され、出力される。図5は、メッセージのグループを処理する処理ノードのための例示的構造のブロック図である。処理ノードは、概して、現在のメッセージを処理するメッセージプロセッサ500を含む。このメッセージプロセッサ500は、メッセージの処理の結果、結果502を出力し得る。従属メッセージのグループを順番に処理する処理ノードは、グループの全メッセージが受信されるまで、グループからのメッセージを記憶するためのソートバッファまたは待ち行列506を使用し、親メッセージが受信された後、グループ内のメッセージの処理を開始することができる。グループからのメッセージの処理開始まで、その入力待ち行列504からの他のメッセージを処理することができる。グループ内のメッセージ処理の間、メッセージプロセッサ500は、入力待ち行列504からのメッセージも処理し得る。処理ノードは、各入力メッセージ508を処理し、モジュールグループ510によって示されるように、メッセージが従属メッセージのグループ内にあるかどうか決定するメッセージ識別子によって示されるように。メッセージがグループ内でない場合、入力待ち行列504に置かれ、メッセージプロセッサ500によって、随時、処理することができる。メッセージがグループ内である場合、メッセージがモジュール親512によって示されるように、グループの親ノードであるか、またはグループ内の親ノードであるかどうかも決定されるメッセージ識別子によって示されるように。メッセージがグループ内にあるかどうか、および/または親ノードであるかどうかは、バッファマネージャ514に示される。バッファマネージャは、従属メッセージのグループ内の着信メッセージを追跡し、それらをバッファ506に置く。バッファマネージャは、グループ内の全メッセージが受信されたかどうかも決定しメッセージ識別子を確認することによって、グループ完了指示子をメッセージプロセッサ500に提供する。メッセージプロセッサ500は、次いで、順番に、バッファから、グループのメッセージの処理を開始することができる。次に、図4におけるような処理ノードがどのように動作し得るかを説明する流れ図が図6に関連して描写される。処理ノードは、ステップ600において、現在のメッセージを受信し、現在のメッセージ識別子を記憶する。処理ノードは、現在のメッセージの処理を開始する602。子メッセージが現在のメッセージを処理することによって生成される場合、子メッセージが生成される604。子メッセージ識別子が、次いで、生成される606。現在のメッセージ識別子は、次いで、更新され608、現在のメッセージが少なくとも1つの子メッセージを有することを反映する。この子メッセージが第1の子メッセージである場合、現在のメッセージ識別子は、子メッセージの数のインジケータを追加するように変更され、子メッセージの数のインジケータは1に設定される。そうでなければ、子メッセージの数は、インクリメントされる。子メッセージは、次いで、ステップ610において、そのメッセージ識別子によってタグ付けされ、出力される。追加の子メッセージが612における決定に伴って、検出される場合、このプロセスは、ステップ604から610まで反復する。ステップ612の前後両方において、現在のメッセージの処理は、継続し、最終的には、完了する614に示されるように。次に、図5におけるような処理ノードがどのように動作し得るかを説明する流れ図が図7に関連して描写される。図7では、処理ノードは、入力メッセージを受信する700。メッセージがそのメッセージ識別子を確認することによって、従属メッセージのグループ内にあるかどうか決定される702。メッセージがグループ内にない場合、入力待ち行列に置かれる704。メッセージがグループ内にある場合、メッセージが親ノードであるかどうか決定される706。メッセージが親ノードではない場合、バッファに置かれる708。メッセージが親ノードである場合、子ノードの数が、例えば、そのメッセージ識別子から、子ノードの数を抽出することによって、決定される710。メッセージは、次いで、バッファに置かれる708。処理ノードは、次いで、メッセージのグループからの全メッセージがバッファ内に存在するかどうか決定する712。全メッセージが受信された場合、処理ノードは、グループの処理を開始することができると命令される714。グループからのメッセージが処理され、バッファに置かれた後、またはメッセージが入力待ち行列に置かれた場合、処理ノードは、700において、次の着信メッセージの処理に備えている。処理ノードは、入力メッセージが入力待ち行列またはバッファに方向付けられている間、入力待ち行列内またはバッファ内の完了グループからのメッセージを処理し得る。明細書全体を通して描写される、処理ノードおよびその構成要素およびモジュールは、全体的または部分的に、任意の好適なプログラミング言語または複数の言語C、C、java、VisualBasic、LISP、BASIC、PERL等を使用して、1つ以上のプロセッサ上で動作する、1つ以上のコンピュータプログラムの組み合わせとして、および/またはハードウェアデバイス例えば、ASIC、FPGA、プロセッサ、メモリ、記憶装置、および同等物として、実装することができる。本発明の方法およびシステムの実装は、1つのコンピュータシステム内における集中方式において、または異なる要素がいくつかの相互接続されたコンピュータシステムにわたって分配される分散方式において実現することができる。任意の種類のコンピュータシステムまたは本明細書に描写される方法を実行するために適合される他の装置が本明細書に描写される機能を果たすために好適である。ハードウェアおよびソフトウェアの典型的組み合わせは、ロードおよび実行されると、本明細書に描写される方法を実行するように、コンピュータシステムを制御する、コンピュータプログラムを伴う汎用コンピュータシステムであり得る。本発明はまた、本明細書に描写される方法の実装を有効にする全特徴を備え、コンピュータシステム内にロードされると、これらの方法を実行可能である、コンピュータプログラム製品内に埋め込むことができる。本文脈におけるコンピュータプログラムまたはアプリケーションは、任意の言語、コード、または表記において、直接、あるいはa別の言語、コード、または表記への変化、b異なる材料形態における複製の一方または両方後、情報処理能力を有するシステムに、特定の機能を行われるように意図された一式の命令の任意の表現を意味する。有意に、本発明は、その精神または本質的属性から逸脱することなく、他の具体的形態で具現化することができる。前述の実施形態は、したがって、あらゆる観点から、本明細書に描写される本発明に対する限定ではなく、例証とみなされる。