(57)【要約】【課題】グラフ型計算の実行を効率化する。【解決手段】グラフ型計算を用いるトランザクション処理であって、一つ又は複数の計算グラフからなるセットのうちの一つの計算グラフの複数のグラフ要素のうちの少なくとも一つが、所与のトランザクションに対して実行すべき計算を含むことを判定するステップ（３０５）と、所与のトランザクションを、それぞれのグラフ要素と関係付けられた再利用可能な計算要素を含む計算グラフのインスタンスと関係付けるステップ（３１０）と、そのグラフを実行して計算を行うステップ（３２０）とが含む。【選択図】図３Ａ
2014130647.tif 000002
【特許請求の範囲】
【請求項１】
グラフ型計算を用いてトランザクションを処理するための方法であって、
一つ又は複数の計算グラフからなるセットのうちの一つの計算グラフの複数のグラフ要素のうちの少なくとも一つが、所与のトランザクションに対して実行すべき計算を含むことを判定するステップ（３０５）と、
前記所与のトランザクションを、それぞれのグラフ要素と関係付けられた再利用可能な計算要素を含む前記計算グラフのインスタンスと関係付けるステップ（３１０）と、
前記グラフを実行して前記計算を行うステップ（３２０）とを含む方法。
【請求項２】
前記計算グラフのセットのうちの前記グラフの少なくとも幾つかのインスタンスは、一つ又は複数の前記計算要素を共有する請求項１の方法。
【請求項３】
前記計算要素は、オペレーティングシステムの処理および処理スレッドのうちの少なくとも一つにより実行される計算を含む請求項１の方法。
【請求項４】
前記グラフ要素は、前記計算グラフの頂点を含む請求項１の方法。
【請求項５】
前記トランザクションを前記計算グラフのインスタンスと関係付けるステップは、前記グラフ要素の実行を開始する前に、前記計算グラフ内の前記各グラフ要素と対応する計算要素を、前記計算グラフのインスタンスに割り当てるステップを含む請求項１の方法。
【請求項６】
前記トランザクションを前記計算グラフのインスタンスと関係付けるステップは、既に前記インスタンスに割り当てられている計算要素を用いて別のグラフ要素を実行してから、前記計算グラフ内のグラフ要素と対応する計算要素を、前記計算グラフのインスタンスに割り当てるステップを含む請求項１の方法。
【請求項７】
前記グラフ要素のうちの少なくとも二つの要素が共通のリソースを使用し、
前記グラフを実行して前記計算を行うステップは、前記共通のリソースを用いる前記グラフ要素それぞれを単一の計算要素に割り当てるステップを含む請求項１の方法。
【請求項８】
前記単一の計算要素は、前記グラフ要素を前記計算要素に割当てたとき、既に起動されている請求項７の方法。
【請求項９】
前記共通リソースは、データベースを含む請求項７の方法。
【請求項１０】
前記共通リソースは、特定のポートを含む請求項７の方法。
【請求項１１】
前記トランザクションを処理するステップは、前記トランザクションに対するリクエストを受け取るステップを含む請求項１の方法。
【請求項１２】
同一の前記計算グラフが第２のトランザクションで実行される計算と関係付けられることを判定するステップと、
前記第２のトランザクションを前記計算グラフの第２のインスタンスと関係付けるステップと、
前記グラフの前記第２のインスタンスを実行して前記第２のトランザクションの計算を行うステップとをさらに含む請求項１の方法。
【請求項１３】
計算グラフの各種インスタンスを用いて実行されるトランザクション計算は、時間インターリーブ法で実行される請求項１２の方法。
【請求項１４】
複数のトランザクションが同時処理される請求項１２の方法。
【請求項１５】
前記各トランザクションは、前記対応する計算グラフに従い処理される一つ又は複数のワーク要素と関係付けられる請求項１２の方法。
【請求項１６】
少なくとも幾つかのトランザクションは、前記対応する計算グラフに従い処理される一つのワーク要素とそれぞれ関係付けられる請求項１５の方法。
【請求項１７】
少なくとも幾つかの前記計算グラフの複数のインスタンスを形成するステップをさらに含む請求項１の方法。
【請求項１８】
前記トランザクションのうちの一つの計算を実行する前記ステップでエラーが発生したことを識別するステップと、
前記トランザクションのうちの別の一つの計算を実行する前記ステップを継続するステップとをさらに含む請求項１の方法。
【請求項１９】
前記複数トランザクションのうちの第１トランザクションを処理する前記ステップは、第１の時間に開始され、
前記複数トランザクションのうちの第２トランザクションを処理するステップは、前記第１時間のあとの第２時間に開始され、
前記第２トランザクションの計算を実行する前記ステップを完了させてから、前記第１トランザクションの計算を実行する前記ステップを完了させるステップをさらに含む請求項１の方法。
【請求項２０】
グラフ型計算を用いてトランザクションを処理するためのシステムであって、
一つ又は複数の計算グラフからなるセットのうちの一つの計算グラフの複数のグラフ要素のうちの少なくとも一つが、トランザクションに対して実行すべき計算を含むことを判定する手段と、
前記所与のトランザクションを、それぞれのグラフ要素と関係付けられた再利用可能な計算要素を含む前記計算グラフのインスタンスと関係付ける手段と、
前記グラフを実行して前記計算を行う手段とを含むシステム。
【請求項２１】
グラフ型計算を用いてトランザクションを処理するコンピュータープログラムを格納するコンピュータ読み取り可能な記録媒体であって、前記コンピュータープログラムは、コンピューターシステムに、
一つ又は複数の計算グラフからなるセットのうちの一つの計算グラフの複数のグラフ要素のうちの少なくとも一つが、所与のトランザクションに対して実行すべき計算を含むことを判定させる命令と、
前記所与のトランザクションを、それぞれのグラフ要素と関係付けられた再利用可能な計算要素を含む前記計算グラフのインスタンスと関係付けさせる命令と、
前記グラフを実行して前記計算を行わせる命令とを含むコンピュータ読み取り可能な記録媒体。
【請求項２２】
グラフ型計算を処理するための方法であって、頂点を結ぶリンクに従ってワーク要素を処理する（３６０）グラフ成分を表す前記頂点を含むグラフ内で、
エラー情報を前記グラフの外部の処理に提供する（３９０）よう構成される少なくとも一つのエラーハンドリンググラフ成分を提供するステップと、
処理中にエラーが発生したグラフ成分（３７０）に応じて、少なくとも幾つかの前記ワーク要素を、前記エラーハンドリング成分を表す頂点への少なくとも一つのリンクに従って、前記エラーハンドリング成分に導くステップを含む、前記エラーハンドリンググラフ成分に処理をリダイレクトするステップを含むデータを処理するステップとを含む方法。
【請求項２３】
前記エラーハンドリンググラフ成分に処理をリダイレクトするステップは、少なくとも一つの入力待ち行列からワーク要素を除去するステップを含む請求項２２の方法。
【請求項２４】
前記エラーハンドリンググラフ成分に処理をリダイレクトするステップは、前記エラーハンドリンググラフ成分に導かれた前記ワーク要素を処理するステップを含む請求項２２の方法。
【請求項２５】
前記エラーハンドリンググラフ成分に導かれた前記ワーク要素を処理するステップは、前記エラーが発生する前に作成されたデータベースに対して変更を元に戻すステップを含む請求項２４の方法。
【請求項２６】
前記データを処理するステップは、前記エラーを取り扱う際に含まれないグラフ成分に対して、これらのグラフ成分に導かれたワーク要素を破棄するステップを含む請求項２４の方法。
【請求項２７】
サブグラフを提供するステップをさらに含み、
前記サブグラフは、エラーコードを前記サブグラフの出力として提供するよう構成されるエラーハンドリングサブグラフ成分を含む請求項２２の方法。
【請求項２８】
エラーが前記サブグラフで発生したことを前記サブグラフの出力が示す場合、処理は前記エラーハンドリンググラフ成分にリダイレクトされる請求項２５の方法。
【請求項２９】
前記エラーハンドリンググラフ成分に処理をリダイレクトするステップは、前記エラーが発生した前記グラフ成分から、前記エラーハンドリンググラフ成分に、前記エラーが発生したときに前記グラフ成分が処理していたワーク要素を伝えるステップを含む請求項２２の方法。
【請求項３０】
前記ワーク要素は、前記エラーハンドリング成分を表す前記頂点への前記リンクに従って伝えられる請求項２９の方法。
【請求項３１】
前記エラーハンドリンググラフ成分に処理をリダイレクトするステップは、前記エラーが発生した前記グラフ成分から、前記エラーハンドリンググラフ成分に、前記エラーに関する報告情報を伝えるステップを含む請求項２９の方法。
【請求項３２】
前記報告情報は、前記エラーが発生した前記グラフ成分と前記エラーハンドリング成分との間の暗黙的な接続に従って伝えられる請求項３１の方法。
【請求項３３】
ユーザーリクエストに応えて、前記エラーが発生した前記グラフ成分を表す頂点と、前記エラーハンドリング成分を表す頂点との間の明示的なリンクとして前記暗黙的な接続を明らかにするステップをさらに含む請求項３２の方法。
【請求項３４】
前記エラーハンドリンググラフ成分を提供するステップは、複数のエラーハンドリンググラフ成分を提供するステップを含み、
前記エラーハンドリンググラフ成分に処理をリダイレクトするステップは、前記エラーが発生したグラフ成分がもたらす出力に基づいてエラーハンドリンググラフ成分を選択するステップを含む請求項２２の方法。
【請求項３５】
前記データを処理するステップは、処理中にグラフ成分にエラーが発生すると、前記エラーを招いたワーク要素の識別を出力するステップを含む請求項２２の方法。
【請求項３６】
処理は、
前記グラフの第１成分をイネーブルにするステップと、
前記エラーハンドリング成分をディスエーブルにするステップと、
前記エラーハンドリング成分以外の前記第１成分の下流の成分毎に、前記成分のすぐ上流の成分がイネーブルにされた場合、前記成分をイネーブルにするステップとを含む請求項２２の方法。
【請求項３７】
前記エラーハンドリング成分に処理をリダイレクトするステップは、
イネーブルにされている各グラフ成分の実行を停止するステップと、
前記エラーが発生した前記成分をディスエーブルにするステップと、
前記エラーハンドリング成分をイネーブルにするステップと、
前記エラーハンドリング成分の下流ではない前記エラー発生成分の下流の成分をディスエーブルにするステップと、
前記エラーハンドリング成分の上流成分をイネーブルにするステップとを含む請求項３６の方法。
【請求項３８】
第１成分で前記エラーが発生した場合の前記エラーハンドリンググラフ成分に処理をリダイレクトするステップは、
前記エラーが第１条件で発生した場合、処理フローを前記第１成分から前記第１成分上流の第１エラーハンドリング成分に導くステップと、
前記エラーが第２条件で発生した場合、処理フローを前記第１成分から前記第１成分下流の第２エラーハンドリング成分に導くステップとを含む請求項２２の方法。
【請求項３９】
前記第１条件は、カウンタが限界値未満の場合である請求項３８の方法。
【請求項４０】
前記第２条件は、カウンタが限界値を超える場合である請求項３８の方法。
【請求項４１】
前記エラーハンドリンググラフ成分に処理をリダイレクトするステップは、前記エラー発生以前に決定されている一セットのグラフ成分をイネーブルにするステップも含む請求項３８の方法。
【請求項４２】
グラフ型計算を処理するためのシステムであって、
頂点を結ぶリンクに従ってワーク要素を処理するグラフ成分を表す頂点を含むグラフ内で、
エラー情報を前記グラフの外部の処理に提供するよう構成される少なくとも一つのエラーハンドリンググラフ成分を提供する手段と、
処理中にエラーが発生したグラフ成分に応じて、少なくとも幾つかの前記ワーク要素を、前記エラーハンドリング成分を表す頂点への少なくとも一つのリンクに従って、前記エラーハンドリング成分に導くステップを含む、前記エラーハンドリンググラフ成分に処理をリダイレクトするステップを含むデータを処理する手段とを備えるシステム。
【請求項４３】
グラフ型計算を処理するコンピュータープログラムを格納するコンピュータ読み取り可能な記録媒体であって、前記コンピュータープログラムは、コンピューターシステムに、
頂点を結ぶリンクに従ってワーク要素を処理するグラフ成分を表す前記頂点を含むグラフ内で、
エラー情報を前記グラフの外部の処理に提供するよう構成される少なくとも一つのエラーハンドリンググラフ成分を提供させる命令と、
処理中にエラーが発生したグラフ成分に応じて、少なくとも幾つかの前記ワーク要素を、前記エラーハンドリング成分を表す頂点への少なくとも一つのリンクに従って、前記エラーハンドリング成分に導くステップを含む、処理を前記エラーハンドリンググラフ成分にリダイレクトするステップを含むデータを処理させるための命令とを含むコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、グラフ型計算の実行に関する。
【背景技術】
【０００２】
複雑な計算は、有向グラフによるデータフローとして表せることが多く、計算成分はそのグラフの頂点と関係付けられ、成分間のデータフローはグラフのリンク（弧、辺）と対応付けられる。このようなグラフ型計算を実装するシステムは、米国特許第５，９６６，０７２号、名称「グラフとして表される計算の実行」に記載されている。グラフ型計算を実行する一手法は、グラフの異なる頂点とそれぞれが関係付けられる幾つかの処理を実行することと、グラフのリンクに従って処理間の通信経路を確立することである。例えば、通信経路は、ＴＣＰ／ＩＰまたはＵＮＩＸドメインソケット（ＵＮＩＸは登録商標）を用いるか、または処理間でデータを渡すために共有メモリを用いることができる。
【発明の概要】
【０００３】
一態様では、概して、グラフ型計算を用いるトランザクションの処理方法は、一つ又は複数の計算グラフからなるセットのうちの一つの計算グラフの複数グラフ要素のうちの少なくとも一つが、所与のトランザクションに対して実行すべき計算を含むことを判定するステップと、上記所与のトランザクションを、それぞれのグラフ要素と関係付けられた再利用可能な計算要素を含む計算グラフのインスタンスと関係付けるステップと、そのグラフを実行して計算を行うステップとを含む。
【０００４】
各態様には以下の特徴のうちの一つ又は複数が含まれる。
【０００５】
計算グラフのセットのうちのグラフの少なくとも幾つかのインスタンスは、一つ又は複数の計算要素を共有する。
【０００６】
計算要素は、オペレーティングシステムの処理および処理スレッドのうちの少なくともいずれかにより実行される計算を含む。
【０００７】
グラフ要素は、計算グラフの頂点を含む。
【０００８】
トランザクションを計算グラフのインスタンスと関係付けるステップは、グラフ要素の実行を開始する前に、計算グラフ内の各グラフ要素と対応する計算要素を計算グラフのインスタンスに割り当てるステップを含む。
【０００９】
トランザクションを計算グラフのインスタンスと関係付けるステップは、既にインスタンスに割り当てられている計算要素を用いて別のグラフ要素を実行してから、計算グラフ内のグラフ要素と対応する計算要素を、計算グラフのインスタンスに割り当てるステップを含む。
【００１０】
グラフ要素内の少なくとも二つの要素が共通のリソースを使用し、グラフを実行して、計算を行うステップは、共通のリソースを用いるグラフ要素それぞれを単一の計算要素に割り当てるステップを含む。
【００１１】
単一の計算要素は、グラフ要素をその計算要素に割当てたとき、既に起動されている。
【００１２】
共通リソースは、データベースを含む。
【００１３】
共通リソースは、特定のポートを含む。
【００１４】
トランザクションを処理するステップは、トランザクションに対するリクエストを受け取るステップを含む。
【００１５】
本方法は、同一の計算グラフが第２のトランザクションで実行される計算と関係付けられると判定するステップと、第２のトランザクションを計算グラフの第２のインスタンスと関係付けるステップと、グラフの第２のインスタンスを実行して第２のトランザクションの計算を行うステップとをさらに含む。
【００１６】
計算グラフの各種インスタンスを用いて実行されるトランザクション計算は、時間インターリーブ法で実行される。
【００１７】
複数のトランザクションが同時処理される。
【００１８】
各トランザクションは、対応する計算グラフにより処理される一つ又は複数のワーク要素と関係付けられる。
【００１９】
少なくとも幾つかのトランザクションは、対応する計算グラフにより処理される一つのワーク要素とそれぞれ関係付けられる。
【００２０】
本方法は、少なくとも幾つかの計算グラフの多数のインスタンスを形成するステップをさらに含む。
【００２１】
本方法は、トランザクションのうちの一つの計算を実行するステップでエラーが発生したことを識別するステップと、トランザクションのうちの別の一つの計算を実行するステップを継続するステップとをさらに含む。
【００２２】
複数トランザクションのうちの第１トランザクションを処理するステップは第１の時間に開始され、複数トランザクションのうちの第２トランザクションを処理するステップは第１時間のあとの第２時間に開始され、本方法は、第２トランザクションの計算を実行するステップを完了させてから、第１トランザクションの計算を実行するステップを完了させるステップをさらに含む。
【００２３】
別の態様では、概して、グラフ型計算を用いてトランザクションを処理するシステムは、一つ又は複数の計算グラフからなるセットのうちの一つの計算グラフの複数のグラフ要素のうちの少なくとも一つが、トランザクションに対して実行すべき計算を含むことを判定する手段と、上記所与のトランザクションを、それぞれのグラフ要素と関係付けられた再利用可能な計算要素を含む計算グラフのインスタンスと関係付ける手段と、そのグラフを実行して計算を行う手段とを備える。
【００２４】
別の態様では、概して、コンピュータ読み取り可能な記録媒体が、グラフ型計算を用いてトランザクションを処理するコンピュータープログラムを格納する。コンピュータープログラムは、コンピューターシステムに、一つ又は複数の計算グラフからなるセットのうちの一つの計算グラフの複数のグラフ要素のうちの少なくとも一つが、所与のトランザクションに対して実行すべき計算を含むことを判定させる命令と、上記所与のトランザクションを、それぞれのグラフ要素と関係付けられた再利用可能な計算要素を含む計算グラフのインスタンスと関係付けさせる命令と、そのグラフを実行して計算を行わせる命令とを含む。
【００２５】
別の態様では、概して、グラフ型計算を処理するための方法は、頂点を結ぶリンクに従ってワーク要素を処理するグラフ成分を表す頂点を含むグラフ内で、エラー情報をグラフ外部の処理に提供するよう構成される少なくとも一つのエラーハンドリンググラフ成分を提供するステップと、処理中にエラーが発生したグラフ成分に応じて、少なくとも幾つかのワーク要素を、エラーハンドリング成分を表す頂点への少なくとも一つのリンクに従って、エラーハンドリング成分に導くステップを含む、エラーハンドリンググラフ成分に処理をリダイレクトするステップを含むデータを処理するステップとを含む。
【００２６】
各態様は以下の特徴のうちの一つ又は複数を含む。
【００２７】
エラーハンドリンググラフ成分に処理をリダイレクトするステップは、少なくとも一つの入力待ち行列からワーク要素を除去するステップを含む。
【００２８】
エラーハンドリンググラフ成分に処理をリダイレクトするステップは、エラーハンドリンググラフ成分に導かれたワーク要素を処理するステップを含む。
【００２９】
エラーハンドリンググラフ成分に導かれたワーク要素を処理するステップは、エラーが発生する前に作成されたデータベースに対して変更を元に戻すステップを含む。
【００３０】
データを処理するステップは、エラーを取り扱う際に含まれないグラフ成分に対して、これらのグラフ成分に導かれたワーク要素を破棄するステップを含む。
【００３１】
サブグラフが提供され、そのサブグラフは、エラーコードをサブグラフの出力として提供するよう構成されるエラーハンドリングサブグラフ成分を含む。
【００３２】
エラーがサブグラフで発生したことをサブグラフの出力が示す場合、処理はエラーハンドリンググラフ成分にリダイレクトされる。
【００３３】
エラーハンドリンググラフ成分に処理をリダイレクトするステップは、エラーが発生したグラフ成分からエラーハンドリンググラフ成分に、エラーが発生したときにグラフ成分が処理していたワーク要素を伝えるステップを含む。
【００３４】
ワーク要素は、エラーハンドリング成分を表す頂点へのリンクに従って伝えられる。
【００３５】
エラーハンドリンググラフ成分に処理をリダイレクトするステップは、エラーが発生したグラフ成分からエラーハンドリンググラフ成分に、エラーに関する報告情報を伝えるステップを含む。
【００３６】
報告情報は、エラーが発生したグラフ成分とエラーハンドリング成分との間の暗黙的な接続に従って伝えられる。
【００３７】
暗黙的な接続は、ユーザーリクエストに応えて、エラーが発生したグラフ成分を表す頂点と、エラーハンドリング成分を表す頂点との間の明示的なリンクとして明らかにされる。
【００３８】
エラーハンドリンググラフ成分を提供するステップは、複数のエラーハンドリンググラフ成分を提供するステップを含み、エラーハンドリンググラフ成分に処理をリダイレクトするステップは、エラーが発生したグラフ成分がもたらす出力に基づいてエラーハンドリンググラフ成分を選択するステップを含む。
【００３９】
データを処理するステップは、処理中にグラフ成分にエラーが発生すると、エラーを招いたワーク要素の識別を出力するステップも含む。
【００４０】
処理は、グラフの第１成分をイネーブルにするステップと、エラーハンドリング成分をディスエーブルにするステップと、エラーハンドリング成分以外の第１成分の下流の成分毎に、その成分のすぐ上流の成分がイネーブルにされた場合、その成分をイネーブルにするステップとを含む。
【００４１】
エラーハンドリング成分に処理をリダイレクトするステップは、イネーブルにされている各グラフ成分の実行を停止するステップと、エラーが発生した成分をディスエーブルにするステップと、エラーハンドリング成分をイネーブルにするステップと、エラーハンドリング成分の下流ではないエラー発生成分の下流の成分をディスエーブルにするステップと、エラーハンドリング成分の上流成分をイネーブルにするステップとを含む。
【００４２】
第１成分でエラーが発生した場合のエラーハンドリンググラフ成分に処理をリダイレクトするステップは、エラーが第１条件で発生した場合、処理フローを、第１成分から第１成分上流の第１エラーハンドリング成分に導くステップと、エラーが第２条件で発生した場合、処理フローを、第１成分から第１成分下流の第２エラーハンドリング成分に導くステップとを含む。
【００４３】
第１条件は、カウンタが限界値未満の場合である。
【００４４】
第２条件は、カウンタが限界値を超える場合である。
【００４５】
エラーハンドリンググラフ成分に処理をリダイレクトするステップは、一セットのグラフ成分をイネーブルにするステップも含み、そのセットはエラー発生以前に決定されている。
【００４６】
別の態様では、概して、グラフ型計算を処理するためのシステムは、頂点を結ぶリンクに従ってワーク要素を処理するグラフ成分を表す頂点を含むグラフ内で、エラー情報をグラフの外部の処理に提供するよう構成される少なくとも一つのエラーハンドリンググラフ成分を提供する手段と、処理中にエラーが発生したグラフ成分に応じて、少なくとも幾つかのワーク要素を、エラーハンドリング成分を表す頂点への少なくとも一つのリンクに従って、エラーハンドリング成分に導くステップを含む、エラーハンドリンググラフ成分に処理をリダイレクトするステップを含むデータを処理する手段とを備える。
【００４７】
別の態様では、概して、コンピュータ読み取り可能な記録媒体が、グラフ型計算を処理するコンピュータープログラムを格納する。コンピュータープログラムは、コンピューターシステムに、頂点を結ぶリンクに従ってワーク要素を処理するグラフ成分を表す頂点を含むグラフ内で、エラー情報をグラフの外部の処理に提供するよう構成される少なくとも一つのエラーハンドリンググラフ成分を提供させる命令と、処理中にエラーが発生したグラフ成分に応じて、少なくとも幾つかのワーク要素を、エラーハンドリング成分を表す頂点への少なくとも一つのリンクに従って、エラーハンドリング成分に導くステップを含む、エラーハンドリンググラフ成分に処理をリダイレクトするステップを含むデータを処理させるための命令とを含む。
【００４８】
本発明の他の特徴および利点は、以下の説明およびクレームから明らかである。
【図面の簡単な説明】
【００４９】
【図１】グラフ型計算のインスタンスを説明する図である。
【図２】ワークフローを処理するためのシステムの論理ブロック図である。
【図３Ａ】各ワークフローを処理するためのフロー図である。
【図３Ｂ】エラーを取扱うためのフロー図である。
【図４Ａ】エラーハンドリンググラフの実施例である。
【図４Ｂ】エラーハンドリンググラフの実施例である。
【図５】エラーハンドリンググラフの実施例である。
【図６】エラーハンドリンググラフの実施例である。
【発明を実施するための形態】
【００５０】
１．概観
本願は、２００２年１０月１０日出願の米国特許出願第１０／２６８，５０９号、発明の名称「グラフ型計算の起動および制御」、および特許出願第１０／２６８，５０９号の継続出願である２００７年４月１０日出願の米国特許出願第１１／７３３，５７９号、発明の名称「トランザクションのグラフ型計算」と関連している。いずれも引用して本明細書に組み込む。
（関連出願の相互参照）
本願は、引用して本明細書に組み込む、２００７年６月２６日出願の米国特許出願第６０／９５２，０７５号の優先権を主張する。
【００５１】
以下に説明する本システムは、計算グラフの観点から定義される計算を実行するための方法を実装する。図１を参照すると、計算グラフ１００の実施例には、一方向のリンク１２０により結ばれる幾つかの頂点１１０が含まれる。図１に示す実施例では、頂点１１０には１〜６の番号を付し、リンク１２０にも１〜６を付してある。計算グラフ１００は、トランザクション処理システムと関係付けられる計算グラフに従って処理される個々のトランザクション等の、一連のワーク要素１３０から作成されるワークフローを処理する。トランザクションは、多数のワーク要素から構成することができる。各頂点は、全体の計算グラフが定義する計算の一部と関係付けられる。本実施例では、頂点１は、一つ又は複数のトランザクションと関係付けられる最初のシリーズのワーク要素１３０のための格納へのアクセスを提供し、そのシリーズを出力リンク１に渡す。それぞれの頂点と関係付けられる計算を実施する処理は、ワーク要素１３０を順に処理し、その頂点の一つ又は複数の出力リンクにワーク要素を生成するのが典型的である。
【００５２】
少なくとも一つのワーク要素が頂点入力のそれぞれに待ち行列を作ると、頂点の処理を実行する準備が整う。図１に説明するように、一つのワーク要素１３０がリンク１上を移動中で、一つのワーク要素が頂点３で処理されるのを待ち、二つのワーク要素が頂点４で処理されるのを待っている。従って、頂点３と頂点４の処理は、待ち行列のワーク要素の処理を実行する準備ができている。図示するように、頂点５には、その入力の一つリンク４に待ち行列を作るワーク要素があるが、リンク５の方の他の入力にはない。従って、頂点５と関係する処理は、実行準備が整っていない。
【００５３】
実施例によっては、ワークフローが多数のトランザクションからのワーク要素を含んでもよい（すなわち、第１トランザクションと対応する一つ又は複数のワーク要素からなる第１セット、第２トランザクションと対応する一つ又は複数のワーク要素からなる第２セット等）。トランザクションには、一つのアクションでも欠けると、どのアクションも実行すべきではないような、全てがセットとして処理されるアクションを表す一セットのワーク要素を含めることができる。グラフの多数のインスタンスを用いて多数のトランザクションを処理することができ、必要に応じて、再利用可能な計算要素（例えば、オペレーティングシステムの処理）をもつグラフ成分の計算を実施することにより、（計算グラフの頂点により表される）個々のグラフ成分の多数のインスタンスを創成することができる。様々なトランザクションをグラフの様々なインスタンス毎に関係付けることにより、多数のトランザクションを同時に処理することができる。詳細に後述するように、必要に応じて、多数の計算要素をグラフインスタンスに割当て可能とし、ある計算要素を一つのグラフインスタンスに利用させ、別のグラフインスタンスにも再利用させることにより、効率的なリソース共有を実現することができる。
【００５４】
図２を参照すると、計算グラフを実行してトランザクションを含むワークフローを処理するシステム２００には、格納グラフデータ構造２１０が含まれる。これらのデータ構造には、グラフの頂点およびリンクの特性を含む計算グラフの仕様が含まれる。グラフ全体をロードしなくても、これらのデータ構造の各部分にアクセスすることができ、例えば、ワーク要素をそのグラフ成分の新規創成インスタンスに割当てるために、個々のグラフ成分の仕様をロードすることができる。
【００５５】
本システムのトランザクション申請モジュール２２０が、格納グラフデータ構造２１０に規定される対応する計算グラフを用いて、特定のワークフロー２３２を処理するコマンドを含むトランザクション申請グラフ成分（例えば、図１の頂点１０により表される成分のような、必ずしもワーク要素を処理するとは限らないコマンドを提供する成分）からの制御入力２２２を受け取る。トランザクション申請モジュール２２０は、特定のトランザクションに割り当てられるべきグラフインスタンスをインスタンス化するために利用可能なグラフ計算処理リソース２３０を追跡する。トランザクション申請モジュール２２０には、グラフ計算処理リソース２３０を用いて、グラフインスタンスをインスタンス化する方法を決定するために、計算グラフの仕様を利用するスケジューラが含まれる。スケジューラは、多数の処理（または、処理の集積）から作成されるのが一般的であり、各処理は、グラフインスタンス内の所与のグラフ成分をインスタンス化する再利用可能な計算要素として機能する。グラフ成分の計算を行うために実行される処理は、データベースエンジン、データ格納装置、または計算グラフの頂点と関係付けられる処理の間にアクセスできる他のモジュールを含む、外部のデータおよび処理２４０を利用できる。実施例によっては、単一の処理または多数の様々な操作を実行できる一セットの処理が、グラフの所与のインスタンスにバインドされて、そのインスタンスの全ての操作を取り扱う。
【００５６】
実施例によっては、トランザクション申請モジュール２２０のスケジューラは、リモートプロシージャコール（ＲＰＣ）処理を用いる。スケジューラは、所与のトランザクションに対するワーク要素を受け取ると、そのワーク要素をトランザクションと関係付けられる（すなわち、トランザクションに割り当てられる）グラフインスタンスの適切な成分に割り当てる。そのグラフインスタンスに割り当てられる処理は、その成分の計算を実行する。ワーク要素と関係付けられるデータは、グラフインスタンスに利用可能でその処理がアクセス可能な一時的な空間に書き込まれる。スケジューラは、トランザクション申請モジュール２２０がその成分により処理されると通知を受け、実行用のどれか下流グラフ成分をスケジュール化する。最終的に、トランザクションはグラフ全体を通じて進行し（グラフがグラフ計算処理リソース２３０を用いて実行されるのにつれて）、ＲＰＣ発行処理を経て出力される。これは一時的な空間に蓄積されたデータを取り込み、それを適切な出力チャンネル、例えば、図１のデータベース出力６に収納する。ＲＰＣ発行処理は、トランザクションを最初に受け取ったソケットにアクセスすることができるように、ＲＰＣ申請処理と多重化することができる。
【００５７】
一般に、様々なトランザクションを同時に処理することができ、グラフの異なるインスタンスがそれぞれを処理する。システム２００は、トランザクション申請モジュール２２０を介して、トランザクション毎に計算グラフのインスタンスに対するリソースを配置し、グラフ計算処理リソース２３０によりそれらの実行を制御してワークフローを処理する。
【００５８】
２．グラフデータ構造
システム２００には、グラフ計算の迅速な起動、および限られたリソースの効率的な共有をもたらす幾つかの特徴が含まれる。
【００５９】
計算グラフのインスタンスによりトランザクションを処理する前に、トランザクション申請モジュール２２０は、機能的に共有されるメモリにそのグラフインスタンスに対するランタイムデータ構造を創成する。一実施の形態では、グラフインスタンスに対して全てのランタイムデータ構造を創成する単一の共有メモリセグメントが創成される。
【００６０】
トランザクションに結びつけられる一処理または複数の処理は、グラフの頂点と関係付けられ、これらの処理それぞれは、共有メモリセグメントをそのアドレス空間にマッピングする。この処理は、個々のトランザクションに対してグラフインスタンスが創成されると頂点と関係付けることができ、つまり、個々のグラフ成分のインスタンスが創成されるか、実行されるまで、頂点と関係付けることができない。この処理は、トランザクション処理中にグラフインスタンスに対するランタイムデータ構造から／にワーク要素を読み出し／書き込む。すなわち、グラフを貫流するトランザクションのデータは、共有メモリセグメント内のこれらのランタイムデータ構造を介して、成分から成分へ渡され、二つ以上の処理がトランザクションにバインドされている場合は、処理から処理へ渡される。所与のトランザクションに対するデータをグラフの各成分がアクセス可能なメモリ空間に収納し、かつ一貫した処理または一セットの処理により各成分を実行することにより、状態を成分間で共有することができる。とりわけ有利なのは、これにより、トランザクションの実行が成功したことを確認したあと、トランザクションの計算実行と関係付けられる全てのデータベース操作を一度に確定できることである。
【００６１】
３．処理プール
上述のように、グラフインスタンスの成分を実行するためのグラフ計算処理リソース２３０は、スケジューラが管理し、配置する処理プールを用いて実装することができる。幾つかの様々な計算形式ごとに、処理プールを創成してから、その計算形式を必要とするグラフ成分を用いてトランザクションのワークフロー処理を開始する。トランザクションがグラフインスタンスに割り当てられると、グラフインスタンスの所与の成分に対する計算を実行するのに特定の形式の計算が必要とされる場合、グラフインスタンスおよび所与の成分が使用するための処理プールのメンバーをスケジューラが配置する。そのトランザクションを処理する間は、処理プールのメンバーはそのグラフインスタンスと関係付けられたままであり、同じ形式の計算を必要とするグラフインスタンス内の他の成分に対して再利用することができる。この処理は、その形式の計算を必要とするそのトランザクションに対するグラフインスタンス内の最後の成分の上流にワーク要素が何もなくなると、プールに戻されて解放することができる。多数の様々な処理プールがあり、それぞれ対応する計算形式と関係付けられている。プール内の処理は、同一または異なるグラフインスタンス内の成分に対して使用することができ、例えば、様々なグラフインスタンス内の所与の成分形式に対する使用、および一つのグラフインスタンス内の多くの異なる成分に対する使用が含まれる。
【００６２】
実施例によっては、処理プール内の各処理は、処理プールを管理するトランザクション申請モジュール２２０が呼び出す、別々の処理（例えば、ＵＮＩＸプロセス（ＵＮＩＸは登録商標））である。モジュール２２０は、処理プール毎に別々のワーク待ち行列を維持する。ワーク待ち行列内の各エントリーは、処理が計算を実行すべきグラフインスタンスの特定の頂点を識別する。
【００６３】
幾つかの処理は、固定のリソースを予約、または消費する。この処理の実施例は、オラクル（Ｒ）データベース等のデータベースへ接続するものである。リソースは、各データベース接続を形成し、維持することにより消費されるので、そのようなアクティブな処理の数を制限することが望ましい。グラフがデータベースにアクセスする多数の成分を含む場合、所与のトランザクションに対する全てのデータベース操作が単一のデータベース処理で行われることが望ましい。そのために、それぞれがデータベースへの接続を維持し、それぞれが所与のグラフインスタンスが要求するデータベース関数を実行できる一セットの処理を構築してもよい。グラフインスタンスを所与のトランザクションに割り当てる場合、上記のように、そのセットからの一つの処理をトランザクション全体に対するそのグラフインスタンスに割り当て、全てのデータベース成分をその処理に多重化する。頂点がトランザクションのワーク要素を処理するためにデータベースにアクセスするための処理を要求する場合、割り当てられた処理（データベースとの接続は既に確立している）は、その頂点と関係付けられる。こうして、そのデータベースへの接続を要求したであろうその処理の初期化ステップのオーバーヘッドが回避され、所与のトランザクションに対する全てのデータベースアクションが同一処理により取り扱われる。他の形式の処理も同一の方法で取り扱うことができる。
【００６４】
システム２００は、頂点に対する処理を構成する異なる手法をサポートし、それら手法は、頂点が処理と関係付けられる場合と、頂点の計算が初期化される場合とでは異なる。一形式の構成では、処理は、その全入力ワーク要素で全データが完全に利用可能となるまで、頂点と関係付けられない。ワーク要素が大きい場合、ワーク要素全体が、上流の頂点により計算され、利用可能となるのにある時間が必要なことがある。この形式の構成は、入力が利用可能となるのを待つ処理の中断を防ぐので、そのグラフインスタンス内の他の頂点がそれを使用できるようになる。
【００６５】
別の形式の構成ではストリームモードを使用する。処理は頂点と関係付けられ、少なくとも各入力の開始が可能な場合、初期化される。その各入力の残りは処理が実行されている間、利用可能となる。その入力が十分速く利用可能となる場合、処理は入力待機を中断させない。しかし、入力が利用可能とならない場合は、処理は入力待機を中断させる。
【００６６】
４．計算制御
図３Ａは、それぞれのグラフインスタンスを用いて各トランザクションを処理するための処理３００のフロー図である。トランザクション申請モジュール２２０（図２）がトランザクションを処理するようリクエストを受け付けると、どの計算グラフ（および対応する形式）がそのトランザクションを処理するのに適切であるかを最初に決定する（ステップ３０５）。例えば、スケジューラは、そのトランザクションの計算を実行するのに特定の計算グラフが適切である（例えば、適切な成分を含む）と決定する。トランザクション自体がこれを指定してもよく、またはトランザクション申請モジュール２２０が、特定トランザクション形式を特定計算グラフと関係付けるデータへのアクセスを含むか、またはそのデータを有する。次いで、トランザクション申請モジュール２２０は、そのトランザクションを処理するのに必要な形式の計算グラフのグラフインスタンス（必要な場合）を創成して（ステップ３１０）、そのトランザクションをグラフインスタンスに関係付ける。この処理の一部として、トランザクション申請モジュール２２０は、グラフインスタンスのランタイムデータ構造のために共有メモリセグメントの一部を割り当て、その形式の計算グラフのグラフテンプレートをランタイムデータ構造にコピーし、それによりランタイムデータ構造を初期化する。グラフテンプレート使用の実施例は、引用して本明細書に組み込む、米国特許第７，１６７，８５０号に詳細に記載されている。実施例によっては、グラフインスタンスは既に創成され、この段階では一つが本トランザクションに割り当てられているにすぎない。次いで、トランザクション申請モジュール２２０が、詳細に後述するように、スケジューラの管理のもとでグラフインスタンスを実行する（ステップ３２０）。グラフインスタンスには、再利用可能な各成分と関係付けられる（割当てられる）計算要素（例えば、処理）が含まれる。トランザクションのワークフロー全体が処理されると、トランザクション申請モジュール２２０は、グラフの実行結果を確定し（例えば出力データベースに変化を収納し）、割り当てられたリソースおよび計算要素をオプションで解放し、グラフインスタンスのランタイムデータ構造を削除するので、共有メモリセグメントのその一部を他のグラフインスタンスで再利用できるようになる（ステップ３３０）。
【００６７】
５．代替法
上記のように、グラフプールを要求するトランザクションが存在すると予測して、既にインスタンス化された計算グラフのインスタンスのグラフプールを予め創成することが可能である。グラフインスタンスを必要とするトランザクションを受け取ったとき、その一つがグラフプールから利用可能である場合、創成すべきというよりプールから割り当てられる。これで、トランザクションの起動コストがさらに減少する。トランザクションの計算が完了したとき、グラフは、変数をトランザクションに割り当てられる前の初期値に戻し、全ての動的に割り当てられたメモリを解放することにより、リセットされる。グラフインスタンスはリセットされたあとプールに戻される。
【００６８】
実施例によっては、グラフプール内のグラフインスタンスの数を必要に応じて増やすことができる。例えば、各グラフのインスタンス数を最小にしておいて、必要に応じてより多く創成してもよい。
【００６９】
上記のように、グラフ内の頂点にオンデマンド方式で処理を割り当てることができる。その場合、特定のグラフインスタンスおよびトランザクションに処理がバインドされていても、その頂点への全ての入力が利用可能になるまで、その処理は頂点と関係付けられない。別の手法は、トランザクションがグラフインスタンスと関係付けられると、処理を頂点に関係付け、トランザクションの全ワークフローが処理されてしまうまでその関係を維持するという手法である。
【００７０】
６．応用
上記形式の計算グラフの一つの応用は、銀行業務における金融取引の処理である。一般に、異なるトランザクション形式には異なる計算グラフ形式が必要である。典型的な計算グラフは、顧客トランザクションの形式と、そのトランザクションを処理するのに必要な「バックエンド」サービスとの何らかの組合せと関係付けられる。例えば、トランザクションは、ＡＴＭリクエスト、銀行窓口入力、およびコンピュータ間やウェブサーバ間のＢ２Ｂトランザクションとすることができる。異なる顧客は異なるバックエンドシステムをもつことがあり、特に、銀行が合併し、元の様々な銀行から顧客が混ざり合う場合である。彼ら顧客の口座は、彼ら全員が承継銀行の顧客であっても、全く異なるバックエンドシステムで維持することができる。従って、グラフ内の異なる頂点を用いて異なるトランザクションを処理することができる。様々なサービスをグラフ内の頂点と関係付けることができる。例えば、幾つかの頂点は、残高を更新する、口座に預金する、または資金が口座にホールドされるように口座ホールドを実行する等の機能と関係付けることができる。実施例によっては、頂点に処理をリアルタイムで割り当てると、未使用の頂点に対する処理をアイドル状態にしておくオーバーヘッドを避けることができる。
【００７１】
トランザクション毎を基準にグラフインスタンスを配置する利点は、データストリームの並列化が可能になるということにあり、でなければ直列処理しなければならなくなる。異なるトランザクションに割り当てられるグラフインスタンスは、例えば、第１トランザクションが第２トランザクションよりずっと複雑であった場合、開始したときと異なる順序で終了してもよい。これにより、直列システムがまだ第１トランザクションを処理していたとしても、第２グラフインスタンスを解放し、利用可能として、第三トランザクションを処理することができる。
【００７２】
７．エラーハンドリング
トランザクション毎を基準にグラフインスタンスを配置する利点は、グラフインスタンスを実行する際のエラーによる障害をそのトランザクションに封じ込めることができ、並行して行われる他のグラフインスタンスの処理に悪影響を与えないという点にある。トランザクション全体が完了するまで計算グラフの結果を確定するのを遅らせることにより、エラーが発生したときに、本システムがトランザクションの処理を開始する前の状態にまで、データをロールバックすることができる。エラーは幾つかの方法で取り扱うことができる。
【００７３】
実施例によっては、「エラーハンドリング」成分がグラフ内に含まれている。エラーハンドリング成分は、グラフに対して実行しなくてもよいという意味で特別な成分である。どれかの頂点で成分にエラーが発生した場合、計算全体を中途終了させる代わりに、グラフの実行をエラーハンドリング成分にリダイレクトする。所与の成分とエラーハンドリング成分（成分の出力ポートからエラーハンドリング成分の入力ポートまでのワークフローを含む）との間の明示的な関連性は、例外フローと呼ばれる。スケジューラは、グラフインスタンスから障害のある計算の一部であったワーク要素を削除し、エラーハンドリング成分は、それを呼び出した処理に対する出力としてグラフがエラーメッセージを提供するのに利用できる出力を提供する。エラーハンドリング成分は、実施例によっては、例外フローを通じての他にデータ入力を受けることができる。
【００７４】
図３Ｂに、グラフを実行し、グラフ内で発生するエラーを取り扱うための例示の手順３５０のフロー図を示す。スケジューラは、リンクに従ってグラフ成分内のワーク要素のワークフローを処理する（ステップ３６０）。グラフ成分内でエラーが発生したことをスケジューラが認識すると（ステップ３７０）、スケジューラは、エラーハンドリング成分に処理をリダイレクトする。このリダイレクトの一態様は、エラーハンドリング成分への何らかの例外フローに従って、エラーハンドリング成分にワーク要素を導く（ステップ３８０）ことである。詳細に後述するように、例外フロー処理により、エラーハンドリング成分は、エラーが発生したトランザクションの処理を開始する前のグラフ処理の状態を表すエラー情報をグラフ外部の処理に提供できる（ステップ３９０）。
【００７５】
グラフ内のどの成分にも指定のエラーハンドリング成分がある。これは例外フロー出力、もしくは別のグラフ成分からの他のエラーデータ出力を直接受ける成分でもよく、または例外フローを受けるかどうかにかかわらず一セットの成分に対して指定されたエラーハンドリング成分として定義してもよい。実施例によっては、例外フローは図４Ａ、図４Ｂに示すように取り扱われる。本実施例では、グラフはトランザクション計算を実行するために設計され、申請成分９０２および発行成分９０４が示されているが、同一の技法は非トランザクションのワークフローに対するグラフ内で使用することができる。図４Ａは、スケジューラがグラフ９００をアクティブにしたところである。最初の成分である申請９０２で開始すると、下流のどの非例外パスの各成分も「イネーブル」と記されている。例外パスは、例外（例えば、上記のようなエラーハンドリング成分に導く例外フロー）の場合に、ワーク要素のフローまたは他のエラーデータを受け取るだけのパスである。これはイネーブル伝搬と呼ばれる。他の下流の所与の成分は、その入力のどれかがイネーブルの上流成分に接続する場合、イネーブルにされる。すなわち、複製９０６、再フォーマット９０８、ウェブサービス呼び出し９１０、ロールアップ９１２、融合９１４、および発行９０４は全てイネーブルであるが、エラーハンドラ９１６および二つの下流成分、ロールバック９１８およびエラーログ９２０は、どのイネーブル成分からの非例外入力フローも受け取らず、「ディスエーブル」のままである。
【００７６】
エラーが発生した場合、スケジューラは、エラー発生成分の実行を停止して、既に実行している他のどの成分も終了させることができ、何らかの関連データ（例えば、完了した成分の例外フロー出力、またはエラー発生成分の「エラー報告出力」）をエラーハンドリング成分に伝搬する。例えば、ウェブサービス呼び出し成分９１０がエラーをトリガーした場合、複製成分９０６からの例外フロー、およびウェブサービス呼び出し成分９１０のリジェクトポート９２１からのエラー報告出力が、それぞれ入力９２２、９２４でエラーハンドリング成分９１６に入力される。エラー報告出力ポート（グラフ９００内の成分の幾つかの底部にポートとして示す）を用いて、例えば、どんなエラーが発生したのか、そのエラーがどこで発生したのかを特徴付ける情報を含む発生エラーに関する情報、およびそのエラーと関係付けられるリジェクトされるワーク要素に関する情報を提供することができる。
【００７７】
本実施例では、複製成分９０６に三つのエラー報告出力ポートがある。リジェクトポート９２１は、エラーの原因となったかもしれないワーク要素、またはエラーと何らかの関連をもつワーク要素を提供する。エラーポート９２３は、エラーについての関連情報を説明するエラーメッセージを提供する。ログポート９２５は、エラーが発生したログ情報を提供する。ログポート９２５は、エラーが発生していなくても、通常の実行過程中のイベントに関するログ情報を提供することもできる。本実施例では、リジェクトポート９２１は、このポートを使用する必要がある成分（例えば、ウェブサービス呼び出し成分９１０）に接続されるとして明示的に示している。但し、エラーポート９２３およびログポート９２５は、接続を明示的に示さず、エラーハンドリング成分９１６に暗黙的に接続している。例えば、そのポートは、開発者が接続してインターフェース操作を用いて隠すことができる。実施例によっては、本システムは、既定のエラーハンドリング成分への暗黙的な接続を自動的に決定することができ、次いで、開発者がそれに上書きしてもよい。大規模なおよび／または複雑なグラフでは、エラー報告ポートの一つ又は複数の形式に対するこの「暗黙的な配線」は、グラフ型プログラミングの利点の一つである開発者によるグラフの視覚的理解を深める。実施例によっては、ポートが別の成分のポートに暗黙的に接続されていることを示すために視覚的キューを設けることができる（例えば、アイコンまたは陰影を付けたり色を付けたりしたポート）。隠された暗黙的なワークフロー接続の一部または全てを、ユーザーリクエストに応じて明示的なリンクとして明らかにすることもできる（例えば、ボタンのクリックまたはポート上へのマウスポインターの移動）。
【００７８】
エラーが発生する前に複製が操作を終了させている場合、複製成分９０６からの例外フロー出力は入力９２２で既に待ち行列に入っている。次いで、スケジューラは、エラーハンドリング成分（本実施例では９１６）をイネーブルにし、エラー発生成分（本実施例では９１０）をディスエーブルにし、エラーハンドリング成分からイネーブル伝搬を実行する（本実施例では９１８、９０４、９２０をイネーブルにする）。ディスエーブルにしたエラー発生成分の下流のどの成分も、その成分がエラーハンドリング成分下流のイネーブル化した成分からのフローを受け取らない限り、ディスエーブルにする（本実施例では９１２、９１４をディスエーブルにする）。最後に、イネーブルにした成分へフローを提供する残りの成分はどれもイネーブルにする（本実施例では９０６および９０２をイネーブルにする）。
【００７９】
このように、本手順の結果を、図４Ｂ内で「イネーブル化」、「ディスエーブル化」成分という表示により示す。発行成分９０４をエラーハンドラ９１６の後のフローの中に遡って接続することにより、出力にエラーメッセージを伴っているものの、トランザクションを完了させることができる。ディスエーブルにしたばかりの成分に既に伝搬してしまったデータ、例えば、再フォーマット成分９０８からの出力は破棄する。
【００８０】
上記のように、データは、例外フローの一部として、または別の成分のエラー報告出力の一部としてエラーハンドリング成分に流れる。エラー発生の前に利用可能なデータ、例えば、図４Ｂの複製モジュール９０６からの出力データは、実際に必要ならエラーハンドラ９１６の入力待ち行列にエスクローとしてそのときまで保持される。エラーがないままグラフが完了した場合、エラーハンドラ９１６がアクティブになることはなく、そのデータは破棄される。エラーが発生した場合、エラーハンドラ９１６は、受け取ったどんな入力データも利用して応答を作成する。実施例によっては、図４Ｂに示すように、ロールバック成分９１８が使用される。複製成分９０６からの入力データは、エラーハンドラ９１６に、グラフがトランザクション処理を開始する前の事物の状態がどうであったかを伝える。エラーハンドラ９１６は、これをロールバック成分９１８に出力して、ロールバック成分９１８は、他の成分が修正したあらゆるデータをトランザクション実行以前の状態に復元するのにそれを用いる。次いで、実行フローは、エラーを記録するエラーログ９２０に向かうと同時に、エラーを報告できるように、かつグラフ９００にそれを配送したどの高次処理でも適切に取り扱えるように、発行成分９０４に向かう。任意の成分からのエラーハンドラ９１６までの例外フローにはデータも含まれる。エラーハンドラ９１６に、ウェブサービス呼び出し成分９１０からのエラー出力、またはどれか他の成分（不図示）からの例外フロー等の、複製成分９０６からの元データ以外の入力がある場合、これを用いて、エラーログまたは発行成分のどちらかで、より詳細なエラーメッセージを作成することができる。
【００８１】
実施例によっては図５に示すように、グラフはサブグラフ、例えばサブグラフ９５０として実装される頂点を含み、それぞれの頂点は、それ自体のエラーハンドリング成分９５２をもつことができる。従って、下位の「グラフレベル」にサブグラフである頂点を有するトップレベルグラフ等を有するサブグラフの階層が存在し得る。サブグラフ９５０の成分９５４、９５６，９５８、９６０、９６２のどれかにエラーが発生した場合、処理フローは、サブグラフエラー報告ポート９７４にエラー報告出力を提供するエラーハンドリング成分９５２にルーティングされる。エラーハンドリング成分９５２のスコープはサブグラフ９５０である。エラーハンドリング成分は、別のグラフ要素（例えば、要素９５４）からの例外フローか、または別のグラフ要素（例えば、要素９５８）のエラー出力９５９からの出力を受け取る入力９６６、９６８を有してもよく、それら別のグラフ要素自体がネストされたサブグラフであってもよい。実施例によっては、エラーハンドリング成分が多くの入力を有する場合、最新のデータを受け取った入力だけが使用される。サブグラフ９５０の全成分が首尾よく動作を完了した場合、出力（ワークフロー）は、通常のサブグラフ出力ポート９７０に配送され、サブグラフ９５０の域を超える処理フローは通常通りに継続される。エラーが発生した場合、エラーフロー出力９７２上でエラーを取り扱い、報告することができる。他の実施例では、標準の出力９７０上でエラーを報告することもできる。
【００８２】
サブグラフがエラーハンドリングを持たない場合、そのエラーは、エラーハンドリングをもつグラフレベルに達するまで、そのサブグラフが属するサブグラフ階層内の上方に流れ、そのポイントでそのレベルのエラーハンドリング成分がアクティブ化される。
【００８３】
エラーハンドリング成分の入力でエスクローされたデータは、ワークフローのサブセットでもよく、トランザクションと関係付けられる全てのデータでもよく、またはデータフロー全体とすることもできる。エラーハンドリング成分がエラー出力ポートをもつ場合、そのポートは、エラーの原因となったレコード、またはエスクローされたデータもしくはエラーを生じた成分から受け取った入力に基づく他のエラー情報を出力する。そのようなポートをもたない場合、その出力ポート上の通常出力として原因レコードを出力するだけでよい。
【００８４】
サブグラフがエラーハンドリングをもたない場合、その成分内のエラーは、エラーハンドリングをもつグラフレベルに達するまで、そのサブグラフが属するサブグラフ階層内の上方に流れ、そのポイントでそのレベルのエラーハンドリング成分が適切な入力を受け取り、適切なエラー出力を生成する。
【００８５】
エラーハンドリングにより、グラフ型計算処理で通常は回避される循環グラフ編成が可能になる。例えば、図６に示すように、グラフ１１００内で、エラーハンドラ１１０４の下流の計算成分１１１２からのエラー出力１１１６は、同一のエラーハンドラ１１０４に戻って流れる。エラーハンドラ１１０４は申請成分１１０２からの入力も受け取り、図４Ａのように、ロールバック成分１１０６に出力を提供する。ロールバック１１０６は、申請成分１１０２によるエラーハンドラ１１０４へのデータ入力に基づいて、障害を起こした計算を試みる前の状態にデータを戻す。カウンタ成分１１０８は、ロールバック成分１１０６からフローを受け取り、集結成分１１１０にフローを戻す前にその値をインクリメントする。計算成分１１１２は、幾つかの異なる方法で、カウンタ成分１１０８から入力された値を用いることができる。計算成分は、計算を実行する前にその値を参照して、例えば、その操作について何らかの変更をすべきかどうかを調べることができる。エラーの後にカウンタを参照して、しきい値回数の試行がなされたかどうかを調べることもできる。しきい値を越えた場合、エラー出力を再度出力１１１６を通じてエラーハンドラ１１０４に戻す代わりに、第２エラーハンドラ１１２０に至る第２エラー出力１１１８にその出力を導く。カウンタ成分を用いない場合、何らかの他の技法を用いて循環を絶ち、最終的にグラフを確実に完了させる。
【００８６】
循環グラフの定義を確実にするために、エラーの状態でイネーブルにされる要素のセットを、上記のように必要に応じてではなく、グラフのトポロジーに基づいて予め決定しておく。
【００８７】
実施例によっては、他の規則を用いてエラーハンドリングが正しく機能するのを確実にする。例えば、実施例によっては、エラーハンドリングをグラフ内の一成分の例外ポートでトリガーするだけでよい（同時エラーはどれも無視してよい）。グラフ成分またはサブグラフをエラーハンドリング成分にリンクする場合、どのエラーに対してもその成分を使用しなければならない。グラフ成分またはサブグラフをエラーハンドリング成分にリンクしない場合、現在のスコープに対する一般的なエラーハンドラによりエラーを取り扱わなければならない。各グラフ成分は、正確に一つのエラーハンドラと関係付けられるのが典型的である。これらの規則は、本システムの要件に応じて修正または組合せてもよい。これらの規則は、トランザクション毎の処理に厳しい管理が必要な場合に有益である。
【００８８】
実施例によっては、エラーが発生した場合、オペレーティングシステムは、どのエラーハンドリング成分をエラーが現れた成分と関係付けるかを決定し、次いで、そのエラーハンドリング成分に、もしあるなら、どの入力フローを使用すべきかを決定する。多数の入力がある場合は、書き込まれた最新データをもつものを使用する。
【００８９】
上記のように、成分またはサブグラフがそれら自体のエラーを取り扱い、他の成分が使用してエラー診断またはエラーに対処できるエラーコードを生成する場合、エラーハンドリングはアクティブでもよく、そうでない場合はパッシブとすることもできる。パッシブシステムでは、エラーに遭遇したグラフは単に停止するだけであり、オペレーティングシステムにエラーハンドリングを提供させることができ、例えば、デバッグ処理にスタックダンプを提供することによる。
【００９０】
グラフの各成分はスケジューラに暗黙的に接続されているが、スケジューラに対するグラフからの介入およびエラー取り扱いの特別な要請は不要である。スケジューラは、グラフインスタンスからのエラーに関連するデータを削除することができ、実施例によってはエラーの性質を知る必要がない。場合によっては、スケジューラは、グラフに割り当てたリソースを各段階のそれぞれのプールに戻すことができので、エラーに影響されなかったワーク要素の処理をグラフに完了させることができる。
【００９１】
８．実装
本発明は、ハードウエアもしくはソフトウエア、または両者の組合せ（例えば、プログラマブルロジックアレイ）に実装することができる。特に規定しない限り、上記アルゴリズムは、本質的に特定のコンピュータまたは他の装置と関連していない。特に、各種汎用マシンを、本明細書の教示に従って書かれたプログラムとともに用いることができ、またはさらに特別な装置（例えば、集積回路）を構築して特定の機能を実行すると一層便利になる。従って、本発明は、一つ又は複数のプログラムされるか、またはプログラマブルのコンピューターシステム（分散型、クライアント／サーバ、またはグリッド型のような各種アーキテクチャで構成できる）上で実行する一つ又は複数のコンピュータープログラム内に実装することができ、そのコンピューターシステムはそれぞれ、少なくとも一つのプロセッサと、少なくとも一つのデータ格納システム（揮発性または不揮発性メモリおよび／または格納素子を含む）と、少なくとも一つの入力装置またはポートと、少なくとも一つの出力装置またはポートとを備える。プログラムコードを入力データに適用して、本明細書で説明した機能を実行し、出力情報を生成する。出力情報は、周知の方式で一つ又は複数の出力装置に適用される。
【００９２】
このようなプログラムはそれぞれ、任意の所望するコンピュータ言語（機械語、アセンブラ、または高水準プロシージャ、論理式、またはオブジェクト指向プログラミング言語を含む）で実装して、コンピューターシステムと通信することができる。どの場合も、言語はコンパイラ言語またはインタプリタ言語とすることができる。
【００９３】
このような各コンピュータープログラムは、汎用または専用のプログラマブルコンピュータ読み取り可能な記録媒体または記録装置（例えば、固体メモリもしくは媒体、または磁気式もしくは光学式媒体）に格納するか、ダウンロードして、コンピューターシステムが記録媒体または記録装置を読み取って本明細書で説明した手順を実行する際に、コンピュータを構成し、操作するのが好ましい。本発明のシステムは、コンピュータープログラムにより構成されるコンピュータ読み取り可能な記録媒体としての実装を考慮することもでき、そのように構成された記録媒体により、コンピューターシステムを特定の、かつ所定の方法で操作して、本明細書で説明した機能を実行することができる。
【００９４】
言うまでもなく、これまでの記述は、説明を目的としたものであり、付帯のクレームの範囲で定義される本発明の範囲を限定する意図はない。他の実施の形態は、以下のクレームの範囲内にある。
【図１】
2014130647.tif 000003
【図２】
2014130647.tif 000004
【図３Ａ】
2014130647.tif 000005
【図３Ｂ】
2014130647.tif 000006
【図４Ａ】
2014130647.tif 000007
【図４Ｂ】
2014130647.tif 000008
【図５】
2014130647.tif 000009
【図６】
2014130647.tif 000010
【手続補正書】
【提出日】平成26年4月4日(2014.4.4)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
グラフ型計算を処理するための方法であって、頂点を結ぶリンクに従ってワーク要素を処理するグラフ成分を表す前記頂点を含むグラフ内で、
エラー情報を前記グラフの外部の処理に提供するよう構成される少なくとも一つのエラーハンドリンググラフ成分を提供するステップと、
処理中にエラーが発生したグラフ成分に応じて、少なくとも幾つかの前記ワーク要素を、前記エラーハンドリング成分を表す頂点への少なくとも一つのリンクに従って、前記エラーハンドリング成分に導くステップを含む、前記エラーハンドリンググラフ成分に処理をリダイレクトするステップを含むデータを処理するステップとを含む方法。
【請求項２】
前記エラーハンドリンググラフ成分に処理をリダイレクトするステップは、少なくとも一つの入力待ち行列からワーク要素を除去するステップを含む請求項１の方法。
【請求項３】
前記エラーハンドリンググラフ成分に処理をリダイレクトするステップは、前記エラーハンドリンググラフ成分に導かれた前記ワーク要素を処理するステップを含む請求項１の方法。
【請求項４】
前記エラーハンドリンググラフ成分に導かれた前記ワーク要素を処理するステップは、前記エラーが発生する前に作成されたデータベースに対して変更を元に戻すステップを含む請求項３の方法。
【請求項５】
前記データを処理するステップは、前記エラーを取り扱う際に含まれないグラフ成分に対して、これらのグラフ成分に導かれたワーク要素を破棄するステップを含む請求項３の方法。
【請求項６】
サブグラフを提供するステップをさらに含み、
前記サブグラフは、エラーコードを前記サブグラフの出力として提供するよう構成されるエラーハンドリングサブグラフ成分を含む請求項１の方法。
【請求項７】
エラーが前記サブグラフで発生したことを前記サブグラフの出力が示す場合、処理は前記エラーハンドリンググラフ成分にリダイレクトされる請求項４の方法。
【請求項８】
前記エラーハンドリンググラフ成分に処理をリダイレクトするステップは、前記エラーが発生した前記グラフ成分から、前記エラーハンドリンググラフ成分に、前記エラーが発生したときに前記グラフ成分が処理していたワーク要素を伝えるステップを含む請求項１の方法。
【請求項９】
前記ワーク要素は、前記エラーハンドリング成分を表す前記頂点への前記リンクに従って伝えられる請求項８の方法。
【請求項１０】
前記エラーハンドリンググラフ成分に処理をリダイレクトするステップは、前記エラーが発生した前記グラフ成分から、前記エラーハンドリンググラフ成分に、前記エラーに関する報告情報を伝えるステップを含む請求項８の方法。
【請求項１１】
前記報告情報は、前記エラーが発生した前記グラフ成分と前記エラーハンドリング成分との間の暗黙的な接続に従って伝えられる請求項１０の方法。
【請求項１２】
ユーザーリクエストに応えて、前記エラーが発生した前記グラフ成分を表す頂点と、前記エラーハンドリング成分を表す頂点との間の明示的なリンクとして前記暗黙的な接続を明らかにするステップをさらに含む請求項１１の方法。
【請求項１３】
前記エラーハンドリンググラフ成分を提供するステップは、複数のエラーハンドリンググラフ成分を提供するステップを含み、
前記エラーハンドリンググラフ成分に処理をリダイレクトするステップは、前記エラーが発生したグラフ成分がもたらす出力に基づいてエラーハンドリンググラフ成分を選択するステップを含む請求項１の方法。
【請求項１４】
前記データを処理するステップは、処理中にグラフ成分にエラーが発生すると、前記エラーを招いたワーク要素の識別を出力するステップを含む請求項１の方法。
【請求項１５】
処理は、
前記グラフの第１成分をイネーブルにするステップと、
前記エラーハンドリング成分をディスエーブルにするステップと、
前記エラーハンドリング成分以外の前記第１成分の下流の成分毎に、前記成分のすぐ上流の成分がイネーブルにされた場合、前記成分をイネーブルにするステップとを含む請求項１の方法。
【請求項１６】
前記エラーハンドリング成分に処理をリダイレクトするステップは、
イネーブルにされている各グラフ成分の実行を停止するステップと、
前記エラーが発生した前記成分をディスエーブルにするステップと、
前記エラーハンドリング成分をイネーブルにするステップと、
前記エラーハンドリング成分の下流ではない前記エラー発生成分の下流の成分をディスエーブルにするステップと、
前記エラーハンドリング成分の上流成分をイネーブルにするステップとを含む請求項１５の方法。
【請求項１７】
第１成分で前記エラーが発生した場合の前記エラーハンドリンググラフ成分に処理をリダイレクトするステップは、
前記エラーが第１条件で発生した場合、処理フローを前記第１成分から前記第１成分上流の第１エラーハンドリング成分に導くステップと、
前記エラーが第２条件で発生した場合、処理フローを前記第１成分から前記第１成分下流の第２エラーハンドリング成分に導くステップとを含む請求項１の方法。
【請求項１８】
前記第１条件は、カウンタが限界値未満の場合である請求項１７の方法。
【請求項１９】
前記第２条件は、カウンタが限界値を超える場合である請求項１７の方法。
【請求項２０】
前記エラーハンドリンググラフ成分に処理をリダイレクトするステップは、前記エラー発生以前に決定されている一セットのグラフ成分をイネーブルにするステップも含む請求項１７の方法。
【請求項２１】
グラフ型計算を処理するためのシステムであって、
頂点を結ぶリンクに従ってワーク要素を処理するグラフ成分を表す頂点を含むグラフ内で、
エラー情報を前記グラフの外部の処理に提供するよう構成される少なくとも一つのエラーハンドリンググラフ成分を提供する手段と、
処理中にエラーが発生したグラフ成分に応じて、少なくとも幾つかの前記ワーク要素を、前記エラーハンドリング成分を表す頂点への少なくとも一つのリンクに従って、前記エラーハンドリング成分に導くステップを含む、前記エラーハンドリンググラフ成分に処理をリダイレクトするステップを含むデータを処理する手段とを備えるシステム。
【請求項２２】
グラフ型計算を処理するコンピュータープログラムを格納するコンピュータ読み取り可能な記録媒体であって、前記コンピュータープログラムは、コンピューターシステムに、
頂点を結ぶリンクに従ってワーク要素を処理するグラフ成分を表す前記頂点を含むグラフ内で、
エラー情報を前記グラフの外部の処理に提供するよう構成される少なくとも一つのエラーハンドリンググラフ成分を提供させる命令と、
処理中にエラーが発生したグラフ成分に応じて、少なくとも幾つかの前記ワーク要素を、前記エラーハンドリング成分を表す頂点への少なくとも一つのリンクに従って、前記エラーハンドリング成分に導くステップを含む、処理を前記エラーハンドリンググラフ成分にリダイレクトするステップを含むデータを処理させるための命令とを含むコンピュータ読み取り可能な記録媒体。
【手続補正書】
【提出日】平成26年5月2日(2014.5.2)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
グラフ型計算を処理するための方法であって、頂点を結ぶリンクに従ってワーク要素を処理するグラフ成分を表す前記頂点を含むグラフ内で、
エラー情報を前記グラフの外部の処理に提供するよう構成される少なくとも一つのエラーハンドリンググラフ成分を提供するステップと、
処理中にエラーが発生したグラフ成分に応じて、少なくとも幾つかの前記ワーク要素を、前記エラーハンドリング成分を表す頂点への少なくとも一つのリンクに従って、前記エラーハンドリング成分に導くステップを含む、前記エラーハンドリンググラフ成分に処理をリダイレクトするステップを含むデータを処理するステップとを含む方法。
【請求項２】
前記エラーハンドリンググラフ成分に処理をリダイレクトするステップは、少なくとも一つの入力待ち行列からワーク要素を除去するステップを含む請求項１の方法。
【請求項３】
前記エラーハンドリンググラフ成分に処理をリダイレクトするステップは、前記エラーハンドリンググラフ成分に導かれた前記ワーク要素を処理するステップを含む請求項１の方法。
【請求項４】
前記エラーハンドリンググラフ成分に導かれた前記ワーク要素を処理するステップは、前記エラーが発生する前に作成されたデータベースに対して変更を元に戻すステップを含む請求項３の方法。
【請求項５】
前記データを処理するステップは、前記エラーを取り扱う際に含まれないグラフ成分に対して、これらのグラフ成分に導かれたワーク要素を破棄するステップを含む請求項３の方法。
【請求項６】
サブグラフを提供するステップをさらに含み、
前記サブグラフは、エラーコードを前記サブグラフの出力として提供するよう構成されるエラーハンドリングサブグラフ成分を含む請求項１の方法。
【請求項７】
エラーが前記サブグラフで発生したことを前記サブグラフの出力が示す場合、処理は前記エラーハンドリンググラフ成分にリダイレクトされる請求項４の方法。
【請求項８】
前記エラーハンドリンググラフ成分に処理をリダイレクトするステップは、前記エラーが発生した前記グラフ成分から、前記エラーハンドリンググラフ成分に、前記エラーが発生したときに前記グラフ成分が処理していたワーク要素を伝えるステップを含む請求項１の方法。
【請求項９】
前記ワーク要素は、前記エラーハンドリング成分を表す前記頂点への前記リンクに従って伝えられる請求項８の方法。
【請求項１０】
前記エラーハンドリンググラフ成分に処理をリダイレクトするステップは、前記エラーが発生した前記グラフ成分から、前記エラーハンドリンググラフ成分に、前記エラーに関する報告情報を伝えるステップを含む請求項８の方法。
【請求項１１】
前記報告情報は、前記エラーが発生した前記グラフ成分と前記エラーハンドリング成分との間の暗黙的な接続に従って伝えられる請求項１０の方法。
【請求項１２】
ユーザーリクエストに応えて、前記エラーが発生した前記グラフ成分を表す頂点と、前記エラーハンドリング成分を表す頂点との間の明示的なリンクとして前記暗黙的な接続を明らかにするステップをさらに含む請求項１１の方法。
【請求項１３】
前記エラーハンドリンググラフ成分を提供するステップは、複数のエラーハンドリンググラフ成分を提供するステップを含み、
前記エラーハンドリンググラフ成分に処理をリダイレクトするステップは、前記エラーが発生したグラフ成分がもたらす出力に基づいてエラーハンドリンググラフ成分を選択するステップを含む請求項１の方法。
【請求項１４】
前記データを処理するステップは、処理中にグラフ成分にエラーが発生すると、前記エラーを招いたワーク要素の識別を出力するステップを含む請求項１の方法。
【請求項１５】
処理は、
前記グラフの第１成分をイネーブルにするステップと、
前記エラーハンドリング成分をディスエーブルにするステップと、
前記エラーハンドリング成分以外の前記第１成分の下流の成分毎に、前記成分のすぐ上流の成分がイネーブルにされた場合、前記成分をイネーブルにするステップとを含む請求項１の方法。
【請求項１６】
前記エラーハンドリング成分に処理をリダイレクトするステップは、
イネーブルにされている各グラフ成分の実行を停止するステップと、
前記エラーが発生した前記成分をディスエーブルにするステップと、
前記エラーハンドリング成分をイネーブルにするステップと、
前記エラーハンドリング成分の下流ではない前記エラー発生成分の下流の成分をディスエーブルにするステップと、
前記エラーハンドリング成分の上流成分をイネーブルにするステップとを含む請求項１５の方法。
【請求項１７】
第１成分で前記エラーが発生した場合の前記エラーハンドリンググラフ成分に処理をリダイレクトするステップは、
前記エラーが第１条件で発生した場合、処理フローを前記第１成分から前記第１成分上流の第１エラーハンドリング成分に導くステップと、
前記エラーが第２条件で発生した場合、処理フローを前記第１成分から前記第１成分下流の第２エラーハンドリング成分に導くステップとを含む請求項１の方法。
【請求項１８】
前記第１条件は、カウンタが限界値未満の場合である請求項１７の方法。
【請求項１９】
前記第２条件は、カウンタが限界値を超える場合である請求項１７の方法。
【請求項２０】
前記エラーハンドリンググラフ成分に処理をリダイレクトするステップは、前記エラー発生以前に決定されている一セットのグラフ成分をイネーブルにするステップも含む請求項１７の方法。
【請求項２１】
グラフ型計算を処理するためのシステムであって、
頂点を結ぶリンクに従ってワーク要素を処理するグラフ成分を表す頂点を含むグラフ内で、
エラー情報を前記グラフの外部の処理に提供するよう構成される少なくとも一つのエラーハンドリンググラフ成分を提供する手段と、
処理中にエラーが発生したグラフ成分に応じて、少なくとも幾つかの前記ワーク要素を、前記エラーハンドリング成分を表す頂点への少なくとも一つのリンクに従って、前記エラーハンドリング成分に導くステップを含む、前記エラーハンドリンググラフ成分に処理をリダイレクトするステップを含むデータを処理する手段とを備えるシステム。
【請求項２２】
グラフ型計算を処理するコンピュータープログラムを格納するコンピュータ読み取り可能な記録媒体であって、前記コンピュータープログラムは、コンピューターシステムに、
頂点を結ぶリンクに従ってワーク要素を処理するグラフ成分を表す前記頂点を含むグラフ内で、
エラー情報を前記グラフの外部の処理に提供するよう構成される少なくとも一つのエラーハンドリンググラフ成分を提供させる命令と、
処理中にエラーが発生したグラフ成分に応じて、少なくとも幾つかの前記ワーク要素を、前記エラーハンドリング成分を表す頂点への少なくとも一つのリンクに従って、前記エラーハンドリング成分に導くステップを含む、処理を前記エラーハンドリンググラフ成分にリダイレクトするステップを含むデータを処理させるための命令とを含むコンピュータ読み取り可能な記録媒体。
【請求項２３】
グラフ型計算を処理するコンピューティングシステムであって、
少なくとも１つのプロセッサが、
頂点を結ぶリンクに従ってワーク要素を処理するワーク要素ハンドリンググラフ成分を表す前記頂点を含む計算グラフ内で、
前記計算グラフ内の少なくとも１つのエラーハンドリンググラフ成分であって、該少なくとも１つのエラーハンドリンググラフ成分は、前記ワーク要素ハンドリンググラフ成分と異なり、エラー情報を前記計算グラフの外部の処理に提供するように構成される、エラーハンドリンググラフ成分を提供し、
処理中にエラーが発生したワーク要素ハンドリンググラフ成分に応じて、処理を前記エラーハンドリンググラフ成分にリダイレクトすることを含むデータを処理し、
少なくとも幾つかの前記ワーク要素を、前記エラーハンドリンググラフ成分を表す頂点への少なくとも一つのリンクに従って、前記エラーハンドリンググラフ成分に導く
ように構成される、コンピューティングシステム。
【請求項２４】
前記エラーハンドリンググラフ成分に処理をリダイレクトすることは、少なくとも一つの入力待ち行列からワーク要素を除去することを含む請求項２３のコンピューティングシステム。
【請求項２５】
前記エラーハンドリンググラフ成分に処理をリダイレクトすることは、前記エラーハンドリンググラフ成分に導かれた前記ワーク要素を処理することを含む請求項２３のコンピューティングシステム。
【請求項２６】
前記エラーハンドリンググラフ成分に導かれた前記ワーク要素を処理することは、前記エラーが発生する前に作成されたデータベースに対して変更を元に戻すことを含む請求項２５のコンピューティングシステム。
【請求項２７】
前記データを処理することは、前記エラーを取り扱う際に含まれないグラフ成分に対して、これらのグラフ成分に導かれたワーク要素を破棄することを含む請求項２５のコンピューティングシステム。
【請求項２８】
前記プロセッサは、サブグラフを提供するように構成され、
前記サブグラフは、エラーコードを前記サブグラフの出力として提供するよう構成されるエラーハンドリングサブグラフ成分を含む請求項２３のコンピューティングシステム。
【請求項２９】
エラーが前記サブグラフで発生したことを前記サブグラフの出力が示す場合、処理は前記エラーハンドリンググラフ成分にリダイレクトされる請求項２６のコンピューティングシステム。
【請求項３０】
前記エラーハンドリンググラフ成分に処理をリダイレクトすることは、前記エラーが発生した前記グラフ成分から、前記エラーハンドリンググラフ成分に、前記エラーが発生したときに前記グラフ成分が処理していたワーク要素を伝えることを含む請求項２３のコンピューティングシステム。
【請求項３１】
前記ワーク要素は、前記エラーハンドリング成分を表す前記頂点への前記リンクに従って伝えられる請求項３０のコンピューティングシステム。
【請求項３２】
前記エラーハンドリンググラフ成分に処理をリダイレクトすることは、前記エラーが発生した前記グラフ成分から、前記エラーハンドリンググラフ成分に、前記エラーに関する報告情報を伝えることを含む請求項３０のコンピューティングシステム。
【請求項３３】
前記報告情報は、前記エラーが発生した前記グラフ成分と前記エラーハンドリング成分との間の暗黙的な接続に従って伝えられる請求項３２のコンピューティングシステム。
【請求項３４】
前記プロセッサは、ユーザーリクエストに応えて、前記エラーが発生した前記グラフ成分を表す頂点と、前記エラーハンドリング成分を表す頂点との間の明示的なリンクとして前記暗黙的な接続を明らかにするよう構成される、請求項３３のコンピューティングシステム。
【請求項３５】
前記エラーハンドリンググラフ成分を提供することは、複数のエラーハンドリンググラフ成分を提供することを含み、
前記エラーハンドリンググラフ成分に処理をリダイレクトすることは、前記エラーが発生したグラフ成分がもたらす出力に基づいてエラーハンドリンググラフ成分を選択することを含む請求項２３のコンピューティングシステム。
【請求項３６】
前記データを処理することは、処理中にグラフ成分にエラーが発生すると、前記エラーを招いたワーク要素の識別を出力することを含む請求項２３のコンピューティングシステム。
【請求項３７】
処理は、
前記グラフの第１成分をイネーブルにすることと、
前記エラーハンドリング成分をディスエーブルにすることと、
前記エラーハンドリング成分以外の前記第１成分の下流の成分毎に、前記成分のすぐ上流の成分がイネーブルにされた場合、前記成分をイネーブルにすることとを含む請求項２３のコンピューティングシステム。
【請求項３８】
前記エラーハンドリング成分に処理をリダイレクトすることは、
イネーブルにされている各グラフ成分の実行を停止することと、
前記エラーが発生した前記成分をディスエーブルにすることと、
前記エラーハンドリング成分をイネーブルにすることと、
前記エラーハンドリング成分の下流ではない前記エラー発生成分の下流の成分をディスエーブルにすることと、
前記エラーハンドリング成分の上流成分をイネーブルにすることとを含む請求項３７のコンピューティングシステム。
【請求項３９】
第１成分で前記エラーが発生した場合の前記エラーハンドリンググラフ成分に処理をリダイレクトすることは、
前記エラーが第１条件で発生した場合、処理フローを前記第１成分から前記第１成分上流の第１エラーハンドリング成分に導くことと、
前記エラーが第２条件で発生した場合、処理フローを前記第１成分から前記第１成分下流の第２エラーハンドリング成分に導くこととを含む請求項２３のコンピューティングシステム。
【請求項４０】
前記第１条件は、カウンタが限界値未満の場合である請求項３９のコンピューティングシステム。
【請求項４１】
前記第２条件は、カウンタが限界値を超える場合である請求項３９のコンピューティングシステム。
【請求項４２】
前記エラーハンドリンググラフ成分に処理をリダイレクトすることは、前記エラー発生以前に決定されている一セットのグラフ成分をイネーブルにすることも含む請求項３９のコンピューティングシステム。
【請求項４３】
前記エラーハンドリンググラフ成分に処理をリダイレクトすることは、少なくとも一つの入力待ち行列からワーク要素を除去することを含む請求項２２のコンピュータ読み取り可能な記録媒体。
【請求項４４】
前記エラーハンドリンググラフ成分に処理をリダイレクトすることは、前記エラーハンドリンググラフ成分に導かれた前記ワーク要素を処理することを含む請求項２２のコンピュータ読み取り可能な記録媒体。
【請求項４５】
前記エラーハンドリンググラフ成分に導かれた前記ワーク要素を処理することは、前記エラーが発生する前に作成されたデータベースに対して変更を元に戻すことを含む請求項４４のコンピュータ読み取り可能な記録媒体。
【請求項４６】
前記データを処理することは、前記エラーを取り扱う際に含まれないグラフ成分に対して、これらのグラフ成分に導かれたワーク要素を破棄することを含む請求項４４のコンピュータ読み取り可能な記録媒体。
【請求項４７】
前記コンピューターシステムに、サブグラフを提供させる命令を含み、
前記サブグラフは、エラーコードを前記サブグラフの出力として提供するよう構成されるエラーハンドリングサブグラフ成分を含む請求項２２のコンピュータ読み取り可能な記録媒体。
【請求項４８】
エラーが前記サブグラフで発生したことを前記サブグラフの出力が示す場合、処理は前記エラーハンドリンググラフ成分にリダイレクトされる請求項４５のコンピュータ読み取り可能な記録媒体。
【請求項４９】
前記エラーハンドリンググラフ成分に処理をリダイレクトすることは、前記エラーが発生した前記グラフ成分から、前記エラーハンドリンググラフ成分に、前記エラーが発生したときに前記グラフ成分が処理していたワーク要素を伝えることを含む請求項２２のコンピュータ読み取り可能な記録媒体。
【請求項５０】
前記ワーク要素は、前記エラーハンドリング成分を表す前記頂点への前記リンクに従って伝えられる請求項４９のコンピュータ読み取り可能な記録媒体。
【請求項５１】
前記エラーハンドリンググラフ成分に処理をリダイレクトすることは、前記エラーが発生した前記グラフ成分から、前記エラーハンドリンググラフ成分に、前記エラーに関する報告情報を伝えることを含む請求項４９のコンピュータ読み取り可能な記録媒体。
【請求項５２】
前記報告情報は、前記エラーが発生した前記グラフ成分と前記エラーハンドリング成分との間の暗黙的な接続に従って伝えられる請求項５１のコンピュータ読み取り可能な記録媒体。
【請求項５３】
前記コンピューターシステムに、ユーザーリクエストに応えて、前記エラーが発生した前記グラフ成分を表す頂点と、前記エラーハンドリング成分を表す頂点との間の明示的なリンクとして前記暗黙的な接続を明らかにさせる命令を含む請求項５２のコンピュータ読み取り可能な記録媒体。
【請求項５４】
前記エラーハンドリンググラフ成分を提供することは、複数のエラーハンドリンググラフ成分を提供することを含み、
前記エラーハンドリンググラフ成分に処理をリダイレクトすることは、前記エラーが発生したグラフ成分がもたらす出力に基づいてエラーハンドリンググラフ成分を選択することを含む請求項２２のコンピュータ読み取り可能な記録媒体。
【請求項５５】
前記データを処理することは、処理中にグラフ成分にエラーが発生すると、前記エラーを招いたワーク要素の識別を出力することを含む請求項２２のコンピュータ読み取り可能な記録媒体。
【請求項５６】
処理は、
前記グラフの第１成分をイネーブルにすることと、
前記エラーハンドリング成分をディスエーブルにすることと、
前記エラーハンドリング成分以外の前記第１成分の下流の成分毎に、前記成分のすぐ上流の成分がイネーブルにされた場合、前記成分をイネーブルにすることとを含む請求項２２のコンピュータ読み取り可能な記録媒体。
【請求項５７】
前記エラーハンドリング成分に処理をリダイレクトすることは、
イネーブルにされている各グラフ成分の実行を停止することと、
前記エラーが発生した前記成分をディスエーブルにすることと、
前記エラーハンドリング成分をイネーブルにすることと、
前記エラーハンドリング成分の下流ではない前記エラー発生成分の下流の成分をディスエーブルにすることと、
前記エラーハンドリング成分の上流成分をイネーブルにすることとを含む請求項５６のコンピュータ読み取り可能な記録媒体。
【請求項５８】
第１成分で前記エラーが発生した場合の前記エラーハンドリンググラフ成分に処理をリダイレクトすることは、
前記エラーが第１条件で発生した場合、処理フローを前記第１成分から前記第１成分上流の第１エラーハンドリング成分に導くことと、
前記エラーが第２条件で発生した場合、処理フローを前記第１成分から前記第１成分下流の第２エラーハンドリング成分に導くこととを含む請求項２２のコンピュータ読み取り可能な記録媒体。
【請求項５９】
前記第１条件は、カウンタが限界値未満の場合である請求項５８のコンピュータ読み取り可能な記録媒体。
【請求項６０】
前記第２条件は、カウンタが限界値を超える場合である請求項５８のコンピュータ読み取り可能な記録媒体。
【請求項６１】
前記エラーハンドリンググラフ成分に処理をリダイレクトすることは、前記エラー発生以前に決定されている一セットのグラフ成分をイネーブルにすることも含む請求項５８のコンピュータ読み取り可能な記録媒体。
【請求項６２】
与えられたトランザクションに対する複数の計算が実行された後に、前記実行された計算をデータベースに送ることを含む、請求項１の方法。
【外国語明細書】
2014130647000001.pdf