JP2010146103A - 補償処理手順方式選択装置、方法、プログラム及びそれを記録した記録媒体、並びにワークフローシステム - Google Patents

補償処理手順方式選択装置、方法、プログラム及びそれを記録した記録媒体、並びにワークフローシステム Download PDF

Info

Publication number
JP2010146103A
JP2010146103A JP2008320017A JP2008320017A JP2010146103A JP 2010146103 A JP2010146103 A JP 2010146103A JP 2008320017 A JP2008320017 A JP 2008320017A JP 2008320017 A JP2008320017 A JP 2008320017A JP 2010146103 A JP2010146103 A JP 2010146103A
Authority
JP
Japan
Prior art keywords
compensation
processing
service
workflow
update
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP2008320017A
Other languages
English (en)
Inventor
Shinji Kikuchi
伸治 菊地
Yoshihiro Jinnan
吉宏 神南
Yosuke Isozaki
洋祐 磯崎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2008320017A priority Critical patent/JP2010146103A/ja
Publication of JP2010146103A publication Critical patent/JP2010146103A/ja
Withdrawn legal-status Critical Current

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】分散トランザクション処理の整合性維持を行う補償処理において最適な計算資源を用いてこれを行う補償処理手順方式選択装置、方法、プログラム及び記録媒体並びにワークフローシステムを提供する。
【解決手段】分散トランザクション処理を実施するワークフロー処理系2a〜2nの中に、分散トランザクション処理において異常を検出した場合に、その整合性を維持するための補償処理を部分実施する補償部分実施部21a〜21nを配置する部分補償配置部11と、実施済みの分散トランザクション処理の実績を基に、少なくとも合意サービス水準をパラメータとして定義された事項を複数の補償処理の手順方式に関して評価して期待値データを算出するコスト期待値計算部12と、補償部分実施部21a〜21nからの問い合わせに応じて、期待値データに基づいて補償処理の手順方式を指定する補償コスト期待値管理部13とを含む。
【選択図】図1

Description

本発明は、複数のサーバによって実施されるロングライブトランザクション方式に基づく分散トランザクション処理の整合性を維持管理する技術・方法に関し、特に分散トランザクション処理に関する整合性を維持するための性能、それに基づく分散トランザクション処理全体の性能を改善させる補償処理手順方式選択装置、方法、プログラム及びそれを記録した記録媒体、並びにワークフローシステムに関する。
トランザクション処理に関連する技術として、特許文献1がある。特許文献1に開示される発明は、トランザクション処理方式及びその実施装置、並びにその処理プログラムを記録した媒体であり、トランザクション処理時の障害回復手段であるSagaの補償トランザクションを並列化することで高速化を実現する。
特許文献1に開示される発明では、複数のサーバに対して、複数のアダプタを使ってワークフロー処理に伴う分散トランザクションの処理を実施する際、障害が発生した場合、障害発生時点までに行った一連のトランザクション処理を取り消す回復処理を行う。通常は、Sagaと呼ばれる方法を用いて一連のトランザクション処理とは逆の順序で対応する補償トランザクション群を実行することで取り消しを実施する。
特許第4094752号公報
特許文献1に開示される発明は、並列化を実施することで一連の補償トランザクション群を高速に処理しようとしている。
しかし、並列化することで処理の高速化を図っても、発生する補償トランザクション群には一定量以上の計算機の資源消費が発生する。さらに、補償トランザクション群で消費する計算機資源が多いほど、トランザクション全体のスループット効率が低下し、ワークフローの処理品質も低下するという問題が生じる。
特に、発生する補償トランザクション群で消費する計算機資源は、ワークフローの持つ複雑さに起因し、計算機資源の消費量も異なる可能性も残る。さらに、補償トランザクションの実施においては、Saga以外の方法も存在しうる。
このため、トランザクション全体のスループット効率が低下することを回避するため、単に一連の補償トランザクション群を並列化して実施するだけではなく、適正な方式を状況に応じて選択することが好ましい。しかし、特許文献1にはそのような仕組みは開示されていない。
本発明は係る問題に鑑みてなされたものであり、複数サーバにより実施されるロングライブトランザクション方式に基づく分散トランザクション処理の整合性を最適な計算資源を用いながら維持管理可能な補償処理手順方式選択装置、方法、プログラム及びそれを記録した記録媒体、並びにワークフローシステムを提供することを目的とする。
上記目的を達成するため、本発明は、第1の態様として、ロングライブトランザクション方式に基づく分散トランザクション処理を実施する複数のワークフロー処理手段の中に、分散トランザクション処理において異常を検出した場合に、その整合性を維持するために実施される補償処理を部分実施する補償部分実施手段を配置する部分補償配置手段と、既に実施した分散トランザクション処理の実績を基に、少なくとも合意サービス水準をパラメータとして定義された事項を複数の補償処理の手順方式の各々に関して評価して期待値データを算出するコスト期待値計算手段と、複数の期待値データを管理し、補償部分実施手段からの問い合わせに応じて、期待値データに基づいて補償処理の手順方式を指定する補償コスト期待値管理手段とを含み、補償処理の手順方式を、当該分散トランザクション処理全体の性能を最適化するよう、合意サービス水準を考慮して選択することを特徴とする補償処理手順方式選択装置を提供するものである。
上記目的を達成するため、本発明は、第2の態様として、ロングライブトランザクション方式に基づく分散トランザクション処理において異常を検出した場合に、当該分散トランザクション処理の整合性を維持するため実施される補償処理を部分実施する補償部分実施手段を複数サーバ内に配置し、既に実施した分散トランザクション処理の実績を基に、少なくとも合意サービス水準をパラメータとして定義された事項を複数の補償処理の手順方式の各々に関して評価して期待値データを算出し、補償部分実施手段からの問い合わせに応じて、期待値データに基づいて補償処理の手順方式を指定し、補償処理の手順方式を、当該分散トランザクション処理全体の性能を最適化するよう、合意サービス水準を考慮して選択することを特徴とする補償処理手順方式選択方法を提供するものである。
上記目的を達成するため、本発明は、第3の態様として、コンピュータに、ロングライブトランザクション方式に基づく分散トランザクション処理において異常を検出した場合に、当該分散トランザクション処理の整合性を維持するため実施される補償処理を部分実施する補償部分実施手段を複数サーバ内に配置する処理と、既に実施した分散トランザクション処理の実績を基に、少なくとも合意サービス水準をパラメータとして定義された事項を複数の補償処理の手順方式の各々に関して評価して期待値データを算出する処理と、補償部分実施手段からの問い合わせに応じて、期待値データに基づいて補償処理の手順方式を指定し、補償処理の手順方式を、当該分散トランザクション処理全体の性能を最適化するように合意サービス水準を考慮して選択する処理とを実行させることを特徴とする補償処理手順方式選択プログラムを提供するものである。
上記目的を達成するため、本発明は、第4の態様として、上記本発明の第3の態様に係る補償処理手順方式選択プログラムが記録されたコンピュータ可読の記録媒体を提供するものである。
上記目的を達成するため、本発明は、第5の態様として、ロングライブトランザクション方式に基づく分散トランザクション処理を実施する複数のワークフロー処理装置と、分散トランザクション処理において異常を検出した場合に、その整合性を維持するために実施される補償処理の手順方式を、当該分散トランザクション処理全体の性能を最適化するよう、合意サービス水準を考慮して選択する補償処理手順方式選択装置とを有するワークフローシステムであって、補償処理手順選択装置は、ワークフロー処理装置のそれぞれの中に、分散トランザクション処理において異常を検出した場合に、その整合性を維持するために実施される補償処理を部分実施する補償部分実施手段を配置する部分補償配置手段と、既に実施した分散トランザクション処理の実績を基に、少なくとも合意サービス水準をパラメータとして定義された事項を複数の補償処理の手順方式の各々に関して評価して期待値データを算出するコスト期待値計算手段と、複数の期待値データを管理し、補償部分実施手段からの問い合わせに応じて、期待値データに基づいて補償処理の手順方式を指定する補償コスト期待値管理手段とを含むことを特徴とするワークフローシステムを提供するものである。
本発明によれば、複数サーバにより実施されるロングライブトランザクション方式に基づく分散トランザクション処理の整合性を最適な計算資源を用いながら維持管理可能な補償処理手順方式選択装置、方法、プログラム及びそれを記録した記録媒体、並びにワークフローシステムを提供できる。
図1に示すように、本発明に係る補償処理手順方式選択装置1は、ロングライブトランザクション方式に基づく分散トランザクション処理を実施する複数のワークフロー処理系2a〜2nの中に、分散トランザクション処理において異常を検出した場合に、その整合性を維持するために実施される補償処理を部分実施する補償部分実施部21a〜21nを配置する部分補償配置部11と、既に実施した分散トランザクション処理の実績を基に、少なくとも合意サービス水準をパラメータとして定義された事項を複数の補償処理の手順方式の各々に関して評価して期待値データを算出するコスト期待値計算部12と、複数の期待値データを管理し、補償部分実施部21a〜21nからの問い合わせに応じて、管理する期待値データに基づいて補償処理の手順方式を指定する補償コスト期待値管理部13とを含み、補償処理の手順方式を、当該分散トランザクション処理全体の性能を最適化するよう、合意サービス水準を考慮して選択することを特徴とする。
このような構成とすることにより、複数サーバにより実施されるロングライブトランザクション方式に基づく分散トランザクション処理の整合性を最適な計算資源を用いながら維持管理可能となる。
なお、補償処理手順方式選択装置の各機能部は、コンピュータにプログラムを実行させることによりソフトウェア処理で実現することも可能である。
以下、本発明の好適な実施の形態について説明する。
補償トランザクションの処理の概要について図2〜図11を用いて説明する。
図2に、補償トランザクションの処理モデルを定義するための最も基本的な計算機ネットワーク環境を模式的に示す。
ここで、ロングライブトランザクション方式による分散トランザクション処理を起動する計算機を、サービスクライアントノードA1とする。そして、サービスクライアントノードA1は、分散トランザクション処理では、サービス中間ノードA2に相当する計算機、及びサービス中間ノードA3に相当する計算機を順次又は同時に通信を使って呼び出すものとする。なお、サービス中間ノードの数は2以上であれば任意である。
サービス中間ノードA2は、分散トランザクション処理を受けると、サービス末端ノードA4に相当する計算機、及びサービス末端ノードA5に相当する計算機を順次又は同時に通信を使って呼び出すものとする。なお、サービス中間ノードA2の配下のサービス末端ノードの数は1以上であれば任意である。
さらに、サービス中間ノードA2の配下には、サービス中間ノードA2とサービス末端ノードA4及びサービス末端ノードA5との間に別のサービス中間ノードを1段以上配置しても良い。
サービス中間ノードA3は、分散トランザクション処理を受けると、サービス末端ノードA6に相当する計算機、及びサービス末端ノードA7に相当する計算機を順次又は同時に通信を使って呼び出すものとする。なお、サービス中間ノードA3の配下のサービス末端ノードの数は1以上であれば任意である。
さらに、サービス中間ノードA3の配下には、サービス中間ノードA3とサービス末端ノードA6及びサービス末端ノードA7との間に別のサービス中間ノードを1段以上配置しても良い。
ロングライブトランザクション方式による分散トランザクション処理の正常処理を図3を用いて説明する。図3では、各種メッセージが、サービスクライアントノードA1、サービス中間ノードA2(サービス中間ノード−1)、A3(サービス中間ノード−n)及びサービス末端ノードA4(サービス末端ノード−1−1)、A5(サービス末端ノード−1−k)、A6(サービス末端ノード−n−1)、A7(サービス末端ノード−n−m)で交換される。その際、メッセージの略称として以下のルールを用いる。
正常系の更新要求メッセージは記号:[更新要求-x(+)]で表す。この記号における文字列xは、メッセージの送信先のサイトを意味する。また、文字列(+)は、正常系の更新要求メッセージであることを意味する。
更新応答メッセージは、記号:[更新応答-x(+:Y)]で表す。この記号における文字列xは、正常系の更新要求メッセージの発信元であるサイトを意味する。また文字列(+)は、正常系の更新応答メッセージであることを意味する。また、文字列(:Y)は、応答に含まれる結果を意味し、処理が成功した場合はリテラル“:True”が、失敗した場合はリテラル“:False”が記載される。
また、記号:[更新要求-x(+)]で表された更新要求メッセージに対する、補償要求に関する補償要求メッセージについては、記号[補償要求-x(-)]で表す。さらに、この補償要求メッセージに対する補償応答メッセージは記号:[補償応答-x(-:Y)]で表す。ここで、以上の記号のx及びYの意味は、正常系の更新要求メッセージと同様である。
サービスクライアントノードA1が、ロングライブトランザクション方式による分散トランザクション処理を開始する場合、サービス中間ノードA2に更新要求メッセージA100([更新要求-1(+)])を送信する。
サービス中間ノードA2は、更新要求メッセージA100を受信すると、配下に分散トランザクション処理を構成する他のサイトがある場合は、相当の更新要求メッセージを改めて送信する。例えば、サービス末端ノードA4、A5が存在する場合、サービス末端ノードA4に更新要求メッセージA101([更新要求-1-1(+)])を送信する。
分散トランザクション処理が並列に処理可能である場合は、サービス末端ノードA4からの更新応答メッセージA102([更新応答-1-1(+:true)])を受信する前に、続けてサービス末端ノードA5へ更新要求メッセージA103([更新要求-1-k(+)])を送信する。
サービス末端ノードA4では、更新要求メッセージA101を受信すると、内部に保持するデータベース等のデータについて更新可能であるか否かを確認する。更新可能である場合は、更新処理を実施する。この場合、ロングライブトランザクション方式を採用しているため、2フェーズコミットメント方式のような投票相、決定相のメッセージ交換手順は無く、更新の結果を意味する更新応答メッセージA102が返信される。
分散トランザクション処理が直列に処理される場合は、サービス中間ノードA2が更新応答メッセージA102を受信すると、サービス末端ノードA5に更新要求メッセージA103を送信する。
サービス末端ノードA5では、更新要求メッセージA103を受信すると、内部に保持するデータベース等のデータについて更新可能であるか否かを確認する。更新可能である場合は、更新処理を実施する。この場合、ロングライブトランザクション方式を採用しているため、2フェーズコミットメント方式のような投票相、決定相のメッセージ交換手順は無く、更新の結果を意味する更新応答メッセージA125が返信される。
サービス中間ノードA2が、全ての更新応答メッセージ(更新応答メッセージA102、A125)を受信すると、送信元であるサービスクライアントノードA1に更新応答メッセージA126([更新応答-1(+:True)])を返信する。
以上と同等の処理について、サービス中間ノードA3とも行う。このため、サービスクライアントノードA1は、サービス中間ノードA3に更新要求メッセージA106([更新要求-n(+)])を送信し、更新応答メッセージA111([更新応答-n(+:True)])を受信する。
サービスクライアントノードA1は、全ての更新応答メッセージ(更新応答メッセージA126及び更新応答メッセージA111)を受信すると、ロングライブトランザクション方式による分散トランザクション処理を正常終了したとみなす。
図4は、図3に示したロングライブトランザクション方式による分散トランザクション処理の正常処理を、流通するメッセージ群及び処理タイミングを含んで定義したシーケンス図であり、直列化して実施する場合を示す。
これに対して図5は、図3に示したロングライブトランザクション方式による分散トランザクション処理の正常処理を、流通するメッセージ群及び処理タイミングを含んで定義したシーケンス図であり、並列化して実施する場合を示す。
サービスクライアントノードA1が、ロングライブトランザクション方式による分散トランザクション処理を開始する場合、起動要求A150を受信したのち、サービスクライアントノードA1内にプロセスA153が立ち上がる。その後、サービス中間ノードA2に更新要求メッセージA100を送信する。
サービス中間ノードA2は、更新要求メッセージA100を受信すると、内部にプロセスA154が立ち上がる。その後、サービス末端ノードA4及びサービス末端ノードA5のような、配下に分散トランザクション処理を構成する他のサイトがある場合、相当の更新要求メッセージを改めて送信する。ここでは、サービス中間ノードA2は、サービス末端ノードA4へ更新要求メッセージA101を送信する。
サービス末端ノードA4では、更新要求メッセージA101を受信すると、内部プロセスA155が立ち上がる。プロセスA155は、サービス末端ノードA4内部に保持するデータベース等のデータについて更新可能であるか否かを確認する。更新可能である場合は、更新処理を実施する。その後、更新の結果を意味する更新応答メッセージA102が返信される。
分散トランザクション処理が直列に処理される場合は、サービス中間ノードA2のプロセスA154が、更新応答メッセージA102を受信すると、サービス末端ノードA5に更新要求メッセージA103を送信する。
サービス末端ノードA5では、更新要求メッセージA103を受信すると、内部にプロセスA156が立ち上がる。プロセスA156は、サービス末端ノードA5内部に保持するデータベース等のデータについて更新可能であるか否かを確認する。更新可能である場合は、更新処理を実施する。その後、更新の結果を意味する更新応答メッセージA125が返信される。
サービス末端ノードA4及びA5の他にサービス末端ノードが存在する場合は、更新応答メッセージA102の受信及びサービス末端ノードA5への更新要求メッセージA103の送信の間、又は前後で処理することが可能である。
サービス中間ノードA2のプロセスA154が、全ての更新応答メッセージ(更新応答メッセージA102、A125)を受信すると、送信元であるサービスクライアントノードA1のプロセスA153に更新応答メッセージA126を返信する。
その後、他のサービス中間ノードが存在する場合は、サービスクライアントノードA1のプロセスA153は、サービス中間ノードA2と同等の処理を他のサービス中間ノード行う。ここでは、サービス中間ノードA3に更新要求メッセージA106を送信する。
サービス中間ノードA3は、更新要求メッセージA106を受信すると、内部にプロセスA157が立ち上がる。その後、サービス中間ノードA2と同様の処理を行った後、送信元であるサービスクライアントノードA1のプロセスA153に更新応答メッセージA111を返信する。
サービスクライアントノードA1のプロセスA153は、全ての更新応答メッセージ(更新応答メッセージA126、A111)を受信すると、ロングライブトランザクション方式による分散トランザクション処理を正常終了したとみなし、正常終了A151を通知する。
図5において、サービスクライアントノードA1が、ロングライブトランザクション方式による分散トランザクション処理を開始する場合、起動要求A150を受信の後、サービスクライアントノードA1内にプロセスA153が立ち上がる。その後、分散トランザクション処理が並列に処理される場合は、サービス中間ノードA2に更新要求メッセージA100を送信するとともに、サービス中間ノードA3に更新要求メッセージA106を送信する。
サービス中間ノードA2は、更新要求メッセージA100を受信すると、内部にプロセスA154が立ち上がる。その後、サービス末端ノードA4及びA5のような、配下に分散トランザクション処理を構成する他のサイトがある場合、サービス末端ノードA4に更新要求メッセージA101を、サービス末端ノードA5に更新要求メッセージA103をそれぞれ出力する。
サービス末端ノードA4は、更新要求メッセージA101を受信すると、内部にプロセスA155が立ち上がる。プロセスA155は、サービス末端ノードA4内部に保持するデータベース等のデータについて更新可能であるか否かを確認する。更新可能である場合は、更新処理を実施する。その後、更新の結果を意味する更新応答メッセージA102が返信される。
サービス末端ノードA5は、更新要求メッセージA103を受信すると、内部にプロセスA156が立ち上がる。プロセスA156は、サービス末端ノードA5内部に保持するデータベース等のデータについて更新可能であるか否かを確認する。更新可能である場合は、更新処理を実施する。その後、更新の結果を意味する更新応答メッセージA125が返信される。
サービス末端ノードA4、A5の他にサービス末端ノードが存在する場合は、サービス末端ノードA5への更新要求メッセージA103の送信同様の処理を行う。
サービス中間ノードA2のプロセスA154が、全ての更新応答メッセージ(更新応答メッセージA102、A125)を受信すると、送信元であるサービスクライアントノードA1のプロセスA153に更新応答メッセージA126を返信する。
サービス中間ノードA3は、サービス更新要求メッセージA106を受信すると、内部にプロセスA157が立ち上がる。その後、サービス中間ノードA2と同様の処理を行った後、送信元であるサービスクライアントノードA1のプロセスA153に更新応答メッセージA111を返信する。
サービスクライアントノードA1のプロセスA151は、全ての更新応答メッセージ(更新応答メッセージA126、A111)を受信すると、ロングライブトランザクション方式による分散トランザクション処理を正常終了したとみなし、正常終了A151を通知する。
ロングライブトランザクション方式による分散トランザクション処理で障害が発生した場合に実施される補償トランザクション群についてSaga方式を採用した場合の処理を、図6を用いて説明する。図6では、各種メッセージがサービスクライアントノードA1、サービス中間ノードA2、A3及びサービス末端ノードA4、A5、A6、A7で交換される。
サービスクライアントノードA1が、ロングライブトランザクション方式による分散トランザクション処理を開始する場合、サービス中間ノードA2に更新要求メッセージA100を送信する。
サービス中間ノードA2は、更新要求メッセージA100を受信すると、配下に分散トランザクション処理を構成する他のサイトがある場合は、相当の更新要求メッセージを改めて送信する。例えば、サービス末端ノードA4、A5が存在する場合、サービス末端ノードA4に更新要求メッセージA101を送信する。
分散トランザクション処理が並列に処理可能である場合は、サービス末端ノードA4からの更新応答メッセージA102を受信する前に、続けてサービス末端ノードA5に更新要求メッセージA103を送信する。
サービス末端ノードA4は、更新要求メッセージA101を受信すると、内部に保持するデータベース等のデータについて更新可能であるか否かを確認する。更新可能である場合は、更新処理を実施する。この場合、ロングライブトランザクション方式を採用しているため、2フェーズコミットメント方式のような投票相、決定相のメッセージ交換手順は無く、更新の結果を意味する更新応答メッセージA102が返信される。
分散トランザクション処理が直列に処理される場合は、サービス中間ノードA2が更新応答メッセージA102を受信すると、サービス末端ノードA5に更新要求メッセージA103を送信する。
サービス末端ノードA5では、更新要求メッセージA103を受信すると、内部に保持するデータベース等のデータについて更新可能であるか否かを確認する。更新可能である場合は、更新処理を実施する。更新不可能な場合はその旨応答する。この場合、ロングライブトランザクション方式を採用しているため、2フェーズコミットメント方式のような投票相、決定相のメッセージ交換手順は無く、更新不可の結果を意味する更新応答メッセージA104([更新応答-1-k(+:False)])が返信される。
サービスクライアントノードA1は、並列処理を行う場合、サービス中間ノードA2に更新要求メッセージA100を送信するとともに、サービス中間ノードA3に更新要求メッセージA106を送信する。
サービス中間ノードA3は、更新要求メッセージA106を受信すると、配下に分散トランザクション処理を構成する他のサイトがある場合は、相当の更新要求メッセージを改めて送信する。例えば、サービス末端ノードA6、A7が存在する場合、サービス末端ノードA6に更新要求メッセージA107([更新要求-n-1(+)])を送信する。
サービス末端ノードA6では、更新要求メッセージA107を受信すると、内部に保持するデータベース等のデータについて更新可能であるか否かを確認する。更新可能である場合は、更新処理を実施する。この場合、ロングライブトランザクション方式を採用しているため、2フェーズコミットメント方式のような投票相、決定相のメッセージ交換手順は無く、更新の結果を意味する更新応答メッセージA108([更新応答-n-1(+:True)])が返信される。
分散トランザクション処理が直列に処理される場合は、サービス中間ノードA3が更新応答メッセージA108を受信すると、サービス末端ノードA7に更新要求メッセージA109([更新要求-n-m(+)])を送信する。
サービス末端ノードA7では、更新要求メッセージA109を受信すると、内部に保持するデータベース等のデータについて更新可能であるか否かを確認する。更新可能である場合は更新処理を実施する。この場合、ロングライブトランザクション方式を採用しているため、2フェーズコミットメント方式のような投票相、決定相のメッセージ交換手順は無く、更新の結果を意味する更新応答メッセージA110([更新応答-n-m(+:True)])が返信される。
サービス中間ノードA3が全ての更新応答メッセージ(更新応答メッセージA108、A110)を受信すると、送信元であるサービスクライアントノードA1に更新応答メッセージA111([更新応答-n(+:True)])を返信する。
サービス中間ノードA2は、更新応答メッセージA104を受信すると、配下に分散トランザクション処理を構成する他のサイトがあり、Saga方式で補償トランザクション群を実施する場合、サービス末端ノードA4に補償処理の補償要求メッセージA113([補償要求-1-1(-)])を送信する。
サービス末端ノードA4では、補償処理の補償要求メッセージA113を受信すると、内部に保持するデータベース等のデータについて元の状態に戻すため、更新処理を実施する。この結果を意味する補償応答メッセージA114([補償応答-1-1(-:True)])が返信される。
サービス中間ノードA2は、全ての配下のサービス末端ノードに対して、補償処理の要求処理を行い、その結果として、補償応答メッセージA114相当のものを受信すると、送信元であるサービスクライアントノードA1に更新応答メッセージA105([更新応答-1(+:False)])を返信する。
サービスクライアントノードA1は、補償処理を行うため、サービス中間ノードA3に補償処理の補償要求メッセージA118([補償要求-n(-)])を送信する。
サービス中間ノードA3は、補償処理の補償要求メッセージA118を受信すると、サービス末端ノードA6に補償処理の補償要求メッセージA119([補償要求-n-1(-)])を送信する。
分散トランザクション処理が並列に処理可能である場合は、サービス末端ノードA6からの補償処理の補償応答メッセージA120([補償応答-n-1(-:True)])を受信する前に、続けてサービス末端ノードA7に補償処理の補償要求メッセージA121([報償要求-n-m(-)])を送信する。
サービス末端ノードA6では、補償処理の補償要求メッセージA119を受信すると、内部に保持するデータベース等のデータについて元の状態に戻すため、更新処理を実施する。この結果を意味する補償処理の補償応答メッセージA120([補償応答-n-1(-:True)])が返信される。
分散トランザクション処理が直列に処理される場合は、サービス中間ノードA3が、補償処理の補償応答メッセージA120を受信すると、サービス末端ノードA7に補償処理の補償要求メッセージA121([補償要求-n-m(-)])を送信する。
サービス末端ノードA7では、補償要求メッセージA121を受信すると、内部に保持するデータベース等のデータについて元の状態に戻すため、更新処理を実施する。この結果を意味する補償処理の補償応答メッセージA122([補償応答-n-m(-:True)])が返信される。
サービス中間ノードA3が補償処理の全ての補償応答メッセージ(補償応答メッセージA120、A122)を受信すると、送信元であるサービスクライアントノードA1に補償処理の補償応答メッセージA123([補償応答-n(-:True)])を返信する。
サービスクライアントノードA1は、全ての更新応答メッセージ及び補償処理の補償応答メッセージ(更新応答メッセージA105等、補償応答メッセージA123)を受信すると、ロングライブトランザクション方式による分散トランザクション処理を異常終了したと見なす。
図7は、図6に示されたロングライブトランザクション方式による分散トランザクション処理で障害が発生した場合に実施される補償トランザクション群についてSaga方式を採用した場合の処理を、流通するメッセージ群及び処理タイミングを含んで定義したシーケンス図であり、直列化して実施する場合を示す。
図7では、直列化して実施されるため、サービス中間ノードA2のプロセスA154がサービス末端ノードA5に対して更新要求メッセージA103を送信し、更新不可の結果を意味する更新応答メッセージA104が返信された場合、サービス末端ノードA5に対する処理は存在せずに、サービス末端ノードA4に対する補償処理を行うに留まる。さらに、サービス中間ノードA3に対する更新要求メッセージA106が送信されていないため、サービスクライアントノードA1のプロセスA153が更新応答メッセージA105を受信すると、ロングライブトランザクション方式による分散トランザクション処理を異常終了したとみなし、異常終了A152を通知する。
これに対して図8は、図6に示されたロングライブトランザクション方式による分散トランザクション処理で障害が発生した場合に実施される補償トランザクション群についてSaga方式を採用した場合の処理を、流通するメッセージ群及び処理タイミングを含んで定義したシーケンス図であり、並列化して実施する場合を示す。
図8では、並列化して実施されるため、サービス中間ノードA2のプロセスA154がサービス末端ノードA5に対して更新要求メッセージA103を送信し、更新不可の結果を意味する更新応答メッセージA104が返信された場合、サービス末端ノードA4対する補償処理を行う。さらに、サービス中間ノードA3に対する更新要求メッセージA106が送信されているため、サービスクライアントノードA1のプロセスA153が更新応答メッセージA105を受信すると、補償処理を行うため、サービス中間ノードA3に補償処理の補償要求メッセージA118を送信する。
サービス中間ノードA3は、補償処理の補償要求メッセージA118を受信すると、サービス末端ノードA6に補償処理の補償要求メッセージA119を送信する。
続けてサービス末端ノードA7に補償処理の補償要求メッセージA121を送信する。
以上の結果を受けて、サービス中間ノードA3が全ての補償応答メッセージ(補償応答メッセージA120、A122)を受信すると、送信元であるサービスクライアントノードA1に補償処理の補償応答メッセージA123を返信する。
サービスクライアントノードA1は、補償処理の全ての更新応答メッセージ及び補償応答メッセージ(更新応答メッセージA105等、及び補償応答メッセージA123)を受信すると、ロングライブトランザクション方式による分散トランザクション処理を異常終了したとみなし、異常終了A152を通知する。
ロングライブトランザクション方式による分散トランザクション処理で障害が発生した場合に実施される補償トランザクション群についてTop Down打ち消し再試行方式を採用した場合の処理を、図9を用いて説明する。図9では各種メッセージがサービスクライアントノードA1、サービス中間ノードA2、A3及びサービス末端ノードA4、A5、A6、A7で交換される。
サービスクライアントノードA1がロングライブトランザクション方式による分散トランザクション処理を開始する場合、サービス中間ノードA2に更新要求メッセージA100を送信する。
サービス中間ノードA2は、更新要求メッセージA100を受信すると、配下に分散トランザクション処理を構成する他のサイトがある場合は、相当の更新要求メッセージを改めて送信する。例えば、サービス末端ノードA4、A5が存在する場合、サービス末端ノードA4に更新要求メッセージA101を送信する。
分散トランザクション処理が並列に処理可能である場合は、サービス末端ノードA4からの更新応答メッセージA102を受信する前に、続けてサービス末端ノードA5に更新要求メッセージA103を送信する。
サービス末端ノードA4では、更新要求メッセージA101を受信すると、内部に保持するデータベース等のデータについて更新可能であるか否かを確認する。更新可能である場合は更新処理を実施する。この場合、ロングライブトランザクション方式を採用しているため、2フェーズコミットメント方式のような投票相、決定相のメッセージ交換手順は無く、更新結果を意味する更新応答メッセージA102が返信される。
分散トランザクション処理が直列に処理される場合は、サービス中間ノードA2が更新応答メッセージA102を受信すると、サービス末端ノードA5に更新要求メッセージA103を送信する。
サービス末端ノードA5では、更新要求メッセージA103を受信すると、内部に保持するデータベース等のデータについて更新可能であるか否かを確認する。更新可能である場合は更新処理を実施する。更新不可能な場合は、その旨応答する。この場合、ロングライブトランザクション方式を採用しているため、2フェーズコミットメント方式のような投票相、決定相のメッセージ交換手順は無く、更新不可の結果を意味する更新応答メッセージA104が返信される。
サービスクライアントノードA1は、並列処理を行う場合、サービス中間ノードA2に更新要求メッセージA100を送信するとともに、サービス中間ノードA3に更新要求メッセージA106を送信する。
サービス中間ノードA3は、更新要求メッセージA106を受信すると、配下に分散トランザクション処理を構成する他のサイトがある場合は、相当の更新要求メッセージを改めて送信する。例えば、サービス末端ノードA6、A7が存在する場合、サービス末端ノードA6に更新要求メッセージA107を送信する。
分散トランザクション処理が並列に処理可能である場合は、サービス末端ノードA6からの更新応答メッセージA108を受信する前に、続けてサービス末端ノードA7に更新要求メッセージA109を送信する。
サービス末端ノードA6では、更新要求メッセージA107を受信すると、内部に保持するデータベース等のデータについて更新可能であるか否かを確認する。更新可能である場合は、更新処理を実施する。この場合、ロングライブトランザクション方式を採用しているため、2フェーズコミットメント方式のような投票相、決定相のメッセージ交換手順は無く、更新の結果を意味する更新応答メッセージA108が返信される。
分散トランザクション処理が直列に処理される場合は、サービス中間ノードA3が更新応答メッセージA108を受信すると、サービス末端ノードA7に更新要求メッセージA109を送信する。
サービス末端ノードA7では、更新要求メッセージA109を受信すると、内部に保持するデータベース等のデータについて更新可能であるか否かを確認する。更新可能である場合は、更新処理を実施する。この場合、ロングライブトランザクション方式を採用しているため、2フェーズコミットメント方式のような投票相、決定相のメッセージ交換手順は無く、更新の結果を意味する更新応答メッセージA110が返信される。
サービス中間ノードA3が、全ての更新応答メッセージ(更新応答メッセージA108、A110)を受信すると、送信元であるサービスクライアントノードA1に更新応答メッセージA111を返信する。
Top Down打ち消し再試行方式で補償トランザクション群を実施する場合、サービス中間ノードA2が更新応答メッセージA104を受信すると、サービスクライアントノードA1に更新不可の結果を意味する更新応答メッセージA105が返信される。
サービスクライアントノードA1は、更新応答メッセージA105を受信すると、サービス中間ノードA3等で更新されたことにより発生する不具合を是正するため、補償処理を実施する。このため、サービス中間ノードA2に更新要求メッセージA100の打ち消しに相当する補償処理の補償要求メッセージA112([補償要求-1(-)])を送信する。
サービス中間ノードA2は、補償要求メッセージA112を受信すると、配下に分散トランザクション処理を構成する他のサイトがある場合は、打ち消しに相当する補償処理の補償要求メッセージを送信する。例えば、サービス末端ノードA4、A5が存在する場合、サービス末端ノードA4に補償要求メッセージA113([補償要求-1-1(-)])を送信する。
補償処理に関する分散トランザクション処理が並列に処理可能である場合は、サービス末端ノードA4からの補償応答メッセージA114([補償応答-1-1(-:True)])を受信する前に、続けてサービス末端ノードA5に補償処理の補償要求メッセージA115([補償要求-1-k(-)])を送信してもよい。この補償処理は、更新要求メッセージA103に対応するものである。したがって、サービス中間ノードA2が更新要求メッセージA103との対応関係を把握しており、更新不可能であることを把握できている場合は、補償要求メッセージA115は送信されなくても良い。
サービス末端ノードA4では、補償処理の補償要求メッセージA113を受信すると、内部に保持するデータベース等のデータについて元の状態に戻すため、更新処理を実施する。この結果を意味する補償応答メッセージA114が返信される。
サービス中間ノードA2は、全ての配下のサービス末端ノードに対して、補償処理の要求を行い、その結果として、補償応答メッセージA114、補償応答メッセージA116([補償応答-1-k(-:True)])相当のものを受信すると、送信元であるサービスクライアントノードA1に補償応答メッセージA117([補償応答-1(-:True)])を返信する。
サービスクライアントノードA1は、補償処理を行うため、サービス中間ノードA3に補償処理に補償要求メッセージA118を出力する。
サービス中間ノードA3は、さらに補償処理の補償要求メッセージA118を受信すると、サービス末端ノードA6に補償処理の補償要求メッセージA119を送信する。
分散トランザクション処理が並列に処理可能である場合は、サービス末端ノードA6からの補償処理の補償応答メッセージA120を受信する前に、続けてサービス末端ノードA7に補償要求メッセージA121を送信する。
サービス末端ノードA6では、補償処理の補償要求メッセージA119を受信すると、内部に保持するデータベース等のデータについて元の状態に戻すために、更新処理を実施する。この結果を意味する補償処理の補償応答メッセージA120が送信される。
分散トランザクション処理が直列に処理される場合は、サービス中間ノードA3が補償処理の補償応答メッセージA120を受信すると、サービス末端ノードA7に補償処理の補償要求メッセージA121を送信する。
サービス末端ノードA7では、補償要求メッセージA121を受信すると、内部に保持するデータベース等のデータについて元の状態に戻すため、更新処理を実施する。この結果を意味する補償処理の補償応答メッセージA122が返信される。
サービス中間ノードA3が、補償処理の全ての補償応答メッセージ(補償応答メッセージA120、A122)を受信すると、送信元であるサービスクライアントノードA1に補償処理の補償応答メッセージA123を返信する。
サービスクライアントノードA1は、補償処理に関する全ての補償応答メッセージ(補償応答メッセージA117、A124)を受信すると、ロングライブトランザクション方式による分散トランザクション処理が異常終了し、その後の補償処理が正常終了したと見なす。
図10は、図9に示すロングライブトランザクション方式による分散トランザクション処理で障害が発生した場合に実施される補償トランザクション群についてTop Down打ち消し再試行方式を採用した場合の処理を、流通するメッセージ群及び処理タイミングを含んで定義したシーケンス図であり、直列化して実施する場合を示す。
図10では、Top Down打ち消し再試行方式を直列化して実施するため、サービス中間ノードA2のプロセスA154が、サービス末端ノードA5に対して更新要求メッセージA103を送信し、更新不可の結果を意味する更新応答メッセージA104が返信された場合、サービスクライアントノードA1のプロセスA153に送信する前に一切の補償処理を実施しない。
サービスクライアントノードA1のプロセスA153は、サービス中間ノードA2からの更新応答メッセージA105を受信すると、ロングライブトランザクション方式による分散トランザクション処理が異常終了したと見なし、異常終了A152を通知する。
続けて、サービスクライアントノードA1は、更新要求メッセージA100の打ち消しに相当する補償処理の補償要求メッセージA112をサービス中間ノードA2に送信する。補償処理の実施順序については、更新要求メッセージA100の実施の際の実施順序を継承する。最後に、サービスクライアントノードA1は、打ち消しに相当する補償処理が正常に終了した旨の正常終了A190を通知する。
これに対して図11は、図9に示すロングライブトランザクション方式による分散トランザクション処理で障害が発生した場合に実施される補償トランザクション群についてTop Down打ち消し再試行方式を採用した場合の処理を、流通するメッセージ群及び処理タイミングを含んで定義したシーケンス図であり、並列化して実施する場合を示す。
図11では、Top Down打ち消し再試行方式が並列化して実施される。しかし、図10の直列化して実施された場合と比較して、大きな差異は存在しない。この場合、サービス中間ノードA2のプロセスA154がサービス末端ノードA5に対して更新要求メッセージA103を送信し、更新不可の結果を意味する更新応答メッセージA104が返信された場合、サービスクライアントノードA1のプロセスA153に返信する前に一切の補償処理を実施しない。
サービスクライアントノードA1のプロセスA153は、サービス中間ノードA2からの更新応答メッセージA105を受信すると、ロングライブトランザクション方式による分散トランザクション処理が異常終了したとみなし、異常終了A152を通知する。
続けて、サービスクライアントノードA1は、サービス中間ノードA2に更新要求メッセージA100の打ち消しに相当する補償処理の補償要求メッセージA112を送信する。補償処理の実施順序については、更新要求メッセージA100の実施の際の実施順序を継承する。最後に、サービスクライアントノードA1は、打ち消しに相当する補償処理が正常に終了した旨の正常終了A190を通知する。
合意サービス水準(Service Level Agreement:SLA)を考慮して補償トランザクション方法を選択する装置について図12、図13〜15、図16及び図17を用いて説明する。
図12に、図4及び図5のシーケンスに示されたロングライブトランザクション方式による分散トランザクション処理の正常終了と、図7及び図8のシーケンスに示されたSaga方式の補償トランザクション群の処理と、図10及び図11に示されたTop Down打ち消し再試行方式の補償トランザクション群の処理とを、合意サービス水準を考慮して選択的に実施する装置の構成を示す。
この構成においては、1以上のサービスクライアント、1以上のサービス処理系、1以上のワークフロー処理系が存在するものとする。また、トランザクション・SLAモニタ管理部B11、デプロイヤB13、B15、SOA(Service Oriented Architecture)リポジトリB12、開発環境B14を有する。トランザクション・SLAモニタ管理部B11は、複数備えていても良い。さらに、デプロイヤB13、B15、SOAリポジトリB12、開発環境B14は、複数備えていても良いし、備えていなくても良い。
サービスクライアントとは、複数のサービスとワークフローとを合成してできる合成ワークフローを呼び出すプログラム、システムであり、複数存在し、具体的にはサービスクライアントB1、B2及びB3が含まれる。
サービスとは、データの書き込みや提供を伴う、決められた個別機能を提供するプログラムのことであり、サービスクライアント等から呼びされて起動し、決められた機能・結果を提供するものである。サービス処理系とは、1以上のサービスを実行する処理系のプログラム、システムのことであり、複数存在し、具体的にはサービス処理系B6、B7、B8、B9、B10が相当する。
ワークフローとは、複数のサービスを纏まった形で束ね、あるまとまった作業を順次行うものであり、サービスクライアント等から呼び出されて起動し、決められたサービスを順次利用しながら決められた機能・結果を提供するものである。なお、ワークフローをプロセスと称することもある。ワークフロー処理系とは、1以上のワークフローであるプロセスを実行する処理系のプログラム、システムのことであり、複数存在し、具体的にはワークフロー処理系B4、B5が相当する。なお、ワークフロー処理系B4、B5は図1のワークフロー処理系2a〜2nに相当する。
トランザクション・SLAモニタ管理部B11は、実際に処理されるサービス群、ワークフロー群、特に複数のワークフロー群が集積して定義される合成ワークフロー群の実行状況を、合成ワークフロー群の個々の起動単位でモニタリングするとともに、モニタリングした結果を基にサービス群、ワークフロー群、合成ワークフロー群の実行環境を調整する。
モニタリングには、個々の起動単位が仕様に基づき起動しているか否かを判断すること、及び起動にあたって利用されるメモリ量、CPU使用率、ネットワーク使用量等の計算機資源の時間経過に対する変動状況を把握すること、並びに変動状況の時間微分的変化、統計情報等の時間微分的変化を把握することが含まれる。
把握された変動状況の時間微分的変化、統計情報等の時間微分的変化については、計算機資源の新規追加、又は解放等の制御機能に利用され、複数のサービス処理系、複数のワークフロー処理系の制御に利用される。
デプロイヤは複数存在し、サービス処理系に展開するデプロイヤB13と、トランザクション・SLAモニタ管理部B11に必要なものを登録するためのデプロイヤB15とに大別できる。なお、デプロイヤB13は図1の部分補償配置部11に相当する。
SOAリポジトリB12には、複数のサービス処理系、複数のワークフロー処理系に展開する一切のプログラム、定義情報が登録、維持、管理される。
一つのサービス処理系を一般的なモデルで表すと、0以上の参照系サービス、1以上の更新系サービス、1以上の更新系サービス補償、データを管理するData、Dataに対する操作ログを管理する操作ログを含んで構成される。
以上を受けて、サービス処理系B6には、参照系サービスB30、更新系サービスB31、更新系サービス補償B32、DataB33及び操作ログB34が含まれる。
同様に、サービス処理系B7には、参照系サービスB35、更新系サービスB36、更新系サービス補償B37、DataB38及び操作ログB39が含まれる。
同様に、サービス処理系B8には、参照系サービスB40、更新系サービスB41、更新系サービス補償B42、DataB43及び操作ログB44が含まれる。
同様に、サービス処理系B9には、参照系サービスB45、更新系サービスB46、更新系サービス補償B47、DataB48及び操作ログB49が含まれる。
同様に、サービス処理系B10には、参照系サービスB50、更新系サービスB51、更新系サービス補償B52、DataB53及び操作ログB54が含まれる。
一つのワークフロー処理系を一般的なモデルで表すと、複数のワークフロー定義、その補償処理の定義であるワークフロー補償及び操作ログを含んで構成される。
以上を受けて、ワークフロー処理系B4には、ワークフローB16、ワークフロー補償B18及び操作ログB28が含まれる。
同様に、ワークフロー処理系B5には、ワークフローB17、ワークフロー補償B19及び操作ログB29が含まれる。
ワークフローB16、B17、ワークフロー補償B18、B19は、WS-BPEL(Web Business Process Execution Language)やXPDL(XML Process Definition Language)等のプロセスを記述する任意言語によって記述される。
記述されたものはプロセスとして定義され、ワークフローB16は、その内部にプロセスの定義B67を持つ。また、ワークフローB17は、その内部にプロセスの定義B69を持つ。さらに、ワークフロー補償B18は、その内部にプロセスの定義B68を持ち、ワークフロー補償B19はその内部にプロセスの定義B70を持つ。
ワークフロー補償B18は、Top Down打ち消し再試行方式にてワークフローB16における補償処理を実施する場合に利用される。同様に、ワークフロー補償B19は、Top Down打ち消し再試行方式にてワークフローB17における補償処理を実施する場合に利用される。
ワークフローB16は、補償ハンドララッパB20を含む。補償ハンドララッパB20は、実際の補償処理を実施する補償ハンドラB24(補償ハンドラ1-1(+))を含んでいる。補償ハンドラB24は、ワークフローB16における補償処理をSaga方式にて実施する場合に利用される。なお、補償ハンドララッパB20及び補償ハンドラB24は、図1の部分補償実施部21a〜21nに相当する。
ワークフローB17は、補償ハンドララッパB22を含む。補償ハンドララッパB22は、実際の補償処理を実施する補償ハンドラB26(補償ハンドラX-1(+))を含んでいる。補償ハンドラB26は、ワークフローB17における補償処理をSaga方式にて実施する場合に利用される。なお、補償ハンドララッパB22及び補償ハンドラB26は、図1の部分補償実施部21a〜21nに相当する。
補償ハンドララッパB20、B22は、補償処理をTop Down打ち消し再試行方式とするかSaga方式とするかを問い合わせる機能を有する。Saga方式で補償処理を行う場合は、内部に保持する補償ハンドラB24、B26を呼び出すこととなる。
ワークフロー補償B18は、補償ハンドララッパB21を含む。補償ハンドララッパB21は、ワークフロー補償B18が行う補償処理で発生する不具合を解決するためにSaga方式で補償処理を実施する補償ハンドラB25(補償ハンドラ1-1(-))を含んでいる。
ワークフロー補償B19は、補償ハンドララッパB23を含む。補償ハンドララッパB23は、ワークフロー補償B19が行う補償処理で発生する不具合を解決するためにSaga方式で補償処理を実施する補償ハンドラB27(補償ハンドラX-1(-))を含んでいる。
操作ログB28、B29は、補償処理を行う際に参照され、Saga方式で補償処理を行う場合は、これらの操作ログの記載順序と逆の順序に従って補償処理を行う。
プロセスの定義B67、B68、B69、B70は、プロセスを記述する任意言語(WS-BPELやXPDL等)によって記述される。そのため、個々のサービスを呼び出す単位はアクティビティとして定義される。
例えば、プロセスの定義B67では、サービス処理系B8内の更新系サービスB41を呼び出すアクティビティB73、サービス処理系B8内の参照系サービスB40を呼び出すアクティビティB72、サービス処理系B7内の更新系サービスB36を呼び出すアクティビティB74、及び、アクティビティB74、B72及びB73を順次呼び出すアクティビティB71を有する。
トランザクション・SLAモニタ管理部B11は、いくつかの要素を含む。主要なものは、ログ受信部B57、イベントインスタンスデータ管理部B58である。
ログ受信部B57は、分散トランザクションの実施に伴って発生するトランザクションに関連した複数のサービス処理系、複数のワークフロー処理系のイベントをモニタリングとして活用できるように収集する。
そして、イベントインスタンスデータ管理部B58にて実際の管理を行う。ここでは、サービス群、ワークフロー群、特に複数のワークフロー群が集積して定義される合成ワークフロー群の個々の起動単位が仕様であるメタデータ通りに起動しているか否かを把握するためのイベントインスタンスデータや、起動に対して利用されるメモリ量、CPU使用率、ネットワーク使用量等の計算機資源の時間経過に対する変動状況を補足したデータ、変動状況の時間微分的変化、統計情報等の時間微分的変化を意味するデータ等が管理される。
トランザクション・SLAモニタ管理部B11は、他にも要素を含めて構成できる。WS-BPELやXPDLで記述されるサービス定義のメタデータについて管理するメタデータ管理部B56、メタデータ管理部B56に登録されているプロセス定義群、サービス定義群から合成ワークフロー定義について合成、定義する統合処理部B55、合成ワークフロー定義の一つから定義可能である正常系のAction Tree群及び補償処理を含んだ全Action Tree群を合成するAction Tree生成部B66を含めることができる。
イベントインスタンスデータ管理部B58内で管理されるイベントインスタンスデータを基にサービスを始めとする各レベルごとの品質水準(合意サービス水準等で定義された事項)を、一定時間間隔で計算するSLA計算部B60、SLA計算部B60の計算結果を計測時刻とともに管理するSLA実績管理部B61、個々のサービス群、個々のワークフロー群、個々の合成ワークフロー群のサービス条件、品質条件について定義し、記載しているデータを管理するSLA管理部B59を含めることができる。また、これらはトランザクション・SLAモニタ管理部B11の外部に配置しても良い。
トランザクション・SLA管理部B11は、他にも要素を含めて構成することができる。
例えば、SLA実績管理部B61内に管理される一定時間間隔で算出される計算結果を、SLA管理部B59内で管理される個々のサービス群、個々のワークフローの定義するプロセス群、個々の合成ワークフロー群のサービス条件、品質条件と比較し、是正が必要であれば自動的な制御を実施する制御部B62を含めることができる。
さらに、各種の補償ハンドララッパB20等で、分散トランザクション処理が異常であることを検出し、その際の補償トランザクション方式を問い合わせるためのコスト問い合わせ受信部B65、及びSaga方式、Top Down打ち消し再試行方式、その他の方式各々で補償トランザクション群を実施した場合の分散トランザクション処理全体のスループット効率に関するコストの期待値を、SLA実績管理部B61内の計算結果を用いて計算するコスト期待値計算部B63、コスト期待値計算部B63が計算した結果を管理し、コスト問い合わせ受信部B65に提供する補償コスト期待値管理部B64を含めることができる。また、これらはトランザクション・SLAモニタ管理部B11の外部に配置しても良い。これらはトランザクション・SLAモニタ管理部B11の外部に配置しても良い。なお、コスト期待値計算部B63は、図1のコスト期待値計算部12に相当する。また、補償コスト期待値管理部B64は、図1の補償コスト期待値管理部13に相当する。
コスト期待値計算部B63は、複数の方法で実現することが可能である。例えば、Saga方式、Top Down打ち消し再試行方式、その他の方式の各々で補償トランザクション群を実施した場合の分散トランザクション処理をペトリネットによる記述でモデル化することができる。そして、各々のペトリネット記述群を同じ処理系で各々シミュレーション動作させ、終了するまでの時間を比較することで、Saga方式、Top Down打ち消し再試行方式、その他の方式等の各々の効率を求めることもできる。
これに対して、図13〜15に定義するAction Treeを用いる方法も可能である。
図13は、計算機ネットワークの一例を示す。図14及び図15は、Action Tree生成部B66が内部に持つAction Treeの構成を示す。図14は、図13に示す計算機ネットワークにおいてサービス末端ノード間で並列化が可能な場合のAction Treeの構成であり、図15は、サービス末端ノード間で直列化した場合のAction Treeの構成を示す。Action Treeとは、ある分散トランザクション処理となる合成ワークフロー定義が取りうる全ての挙動を履歴を意味する木構造で表現したものである。
図13の例では、サービスクライアントノードA1が直接サービス末端ノードA8とサービス末端ノードA9とに対して、ロングライブトランザクション方式による分散トランザクション処理を行う場合を想定している。
この場合、サービスクライアントノードA1が、ロングライブトランザクション方式による分散トランザクション処理を開始する場合、サービス末端ノードA8に更新要求メッセージA171([更新要求-1(+)])を送信する。
分散トランザクション処理が並列に処理可能である場合は、サービス末端ノードA8からの更新応答メッセージA172([更新応答-1(+:True/False)]を受信する前に、続けてサービス末端ノードA9に更新要求メッセージA173([更新要求-n(+)])を送信する。
サービス末端ノードA8では、更新要求メッセージA171を受信すると、内部に保持するデータベース等のデータについて更新可能であるか否かを確認する。更新可能である場合は、更新処理を実施する。更新不可能である場合、又は更新して失敗した場合は、その旨回答する。この場合、ロングライブトランザクション方式を採用しているため、2フェースコミットメント方式のような投票相、決定相のメッセージ交換手順は無く、更新の結果を意味する更新応答メッセージA172が返信される。
分散トランザクション処理が直列に処理される場合は、サービスクライアントノードA1が更新応答メッセージA172を受信すると、サービス末端ノードA9に更新要求メッセージA173([更新要求-n(+)])を送信する。
サービス末端ノードA9では、更新要求メッセージA173を受信すると、内部に保持するデータベース等のデータについて更新可能であるか否かを確認する。更新可能である場合は、更新処理を実施する。更新不可能である場合、又は更新して失敗した場合は、その旨回答する。この場合、ロングライブトランザクション方式を採用しているため、2フェーズコミットメント方式のような投票相、決定相のメッセージ交換手順は無く、更新の結果を意味する更新応答メッセージA174([更新応答-n(+:True/False])が返信される。
もし、ロングライブトランザクション方式による分散トランザクション処理で不具合となった場合は、補償処理が実施される。その場合は、更新要求メッセージA171の代わりに補償要求メッセージA175([補償要求-1(-)])が送受信される。
さらに、更新応答メッセージA172の代わりに、補償応答メッセージA176([補償応答-1(-:True/False)])が送受信される。
さらに、更新要求メッセージA173の代わりに、補償要求メッセージA177([補償要求-n(-)])が送受信される。
さらに、更新応答メッセージA174の代わりに、補償応答メッセージA178([補償応答-n(-:True/False)])が送受信される。
Action Treeは、始点のシンボルでノードであるA180と、末端のノードを意味する終端のシンボルでノードであるA182とを、Actionとして定義されノード間を連結するアークであるA181を複数連結して表現される。なお、ノードA180とノードA182との間には任意のノードシンボルを配置可能である。またAction Treeの任意の一部に相当するAction Sub Treeを省略した三角のシンボルA183で代替表現することも可能である。
ここで、Action Tree上の任意のノードは、サービスクライアントノードA1、サービス末端ノードA8、A9等の構成要素のノード全体が取る状態を意味し、アークA181は発生するイベントを意味する。この場合、各メッセージの送受信を意味するAction Treeの定義は、サービス末端ノードA8、A9等の構成要素のノードのうち、注目するノードに応じて変化する。特に並列化する場合は、割り込み処理が存在するため、異なる場合も存在する。ここでは、受信側を主体とした場合を示しているが、他の論点でもAction Treeの作成は可能である。
図14は、分散トランザクション処理が並列に処理される場合のAction Treeに相当する。これに対して、図15は、分散トランザクション処理が直列に処理される場合のAction Treeに相当する。特に、図15では、メッセージの動きに対応してアークを定義する。
サービス末端ノードA8に更新要求メッセージA171を送信する処理は、ノードA180から出るアークA191に相当する。
サービス末端ノードA8では、更新要求メッセージA171を受信後、更新の結果を意味する更新応答メッセージA172を返信する。更新可能である場合は更新応答メッセージA172([更新応答-1(+:True)])となり、アークA192に相当する。更新不可能である場合は、更新応答メッセージA172([更新応答-1(+:False)])となり、アークA193に相当する。
サービス末端ノードA9に更新要求メッセージA173を送信する処理は、アークA194に相当する。
サービス末端ノードA9では、更新要求メッセージA173を受信後、更新の結果を意味する更新応答メッセージA174を返信する。更新可能である場合は、更新応答メッセージA174([更新応答-n(+:True)]となり、アークA195に相当する。更新不可能である場合は、更新応答メッセージA174([更新応答-n(+:False)]となり、アークA196に相当する。
ロングライブトランザクション方式による分散トランザクション処理で不具合となった場合は、補償処理が実施される。その場合は、補償要求メッセージA175が送受信される。これはアークA197に相当する。
さらに応答として、補償応答メッセージA176が送受信される。補償処理が成功した場合は補償応答メッセージA176([補償応答-1(-:True)])が送受信され、アークA198に相当する。これに対して補償処理が失敗した場合は補償応答メッセージA176([補償応答-1(-:False)])が送受信され、アークA199に相当する。
Action Treeでは、終端のシンボルでノードであるA182は複数存在し、その各々にケース名とともに二つのパラメータを持つアノテーションラベルを一意に定義できる。例えば、Case:P11のノードでは、アノテーションラベルA184が定義される。同様に、アノテーションラベル群A185、A186も定義される。二つのパラメータを持つアノテーションラベルはAction Tree全体に亘り、定義することも可能である。例えば、図15におけるアノテーションラベルA187が相当する。この場合、二つのパラメータを組で定義する。
二つのパラメータのうち、一つ目のパラメータはAction Treeの枝長に相当するAction Depthであり、下記式(1)で定義される変数で表現できる。
Figure 2010146103
ここで、変数iは、ケース名に一意に対応する累積ケース番号に相当する。このAction Depthは、分散トランザクション処理を並列又は直列に実施するかに応じて変化する。さらに、補償処理の方式をSaga方式又はTop Down打ち消し再試行方式にするかに応じて変化する。そこで、Saga方式、Top Down打ち消し再試行方式の各方式を一般化して方式(X)と表記すると、方式(X)によるAction Depthを下記式(2)で定義される変数で表現できる。
Figure 2010146103
これに対して二つ目のパラメータは、その終端が発生する確率である。分散トランザクション処理の一部であるサービス末端ノードA8に対するトランザクション失敗の確率を確率変数f1、サービス末端ノードA9に対するトランザクション失敗の確率を確率変数fn、さらにサービス末端ノードA8に対する補償処理のトランザクション失敗の確率を確率変数g1、サービス末端ノードA9に対する補償処理のトランザクション失敗の確率を確率変数gnとすると、その終端が発生する確率は、下記式(3)で表現される関数で定義可能である。ここで、変数iは、ケース名に一意に対応する累積ケース番号に相当する。
Figure 2010146103
式(3)は、分散トランザクション処理を並列、又は直列に実施するかに応じて式の内容が変化する。さらに、サービス末端ノードA8、A9のサービス品質の状況に応じても変化する。特に、サービス末端ノードA8、A9のサービス品質が時間に応じて変動する場合、式(3)の値へ経年変化を持つこととなる。さらに、分散トランザクションに参加するサービス末端ノード数の増加に応じて確率変数f、gの種類は増加する。
ここで、方式(X)による発生確率は下記式(4)で表現される関数で定義する。
Figure 2010146103
式(2)及び式(4)を元にすると、方式(X)により定義される処理効率を下記式(5)にて定義することが可能となる。
Figure 2010146103
これは、Action Depthの期待値で分散トランザクション処理を収束させるまでに発生する手続長の期待値に相当する。そこで、複数の方式に関する式(5)を事前に求めておけば、どの方式が最も効率的に分散トランザクション処理を実施でき、かつ更新異常時にどの方法が有効的に対策をとることができるかを評価することが可能となる。ここで、方式(1)は、例えば「直列化された分散トランザクション処理をSaga方式で補償する」のように定義される。
図16は、図12にて定義されるワークフロー処理系が持つワークフロー定義群を一つの表現形式で示す。具体的には、WS-BPELとXPDLとの記述例を示す。標準化されていないワークフロー定義や他の記述でも通常はほぼ等価な情報項目を持つことが一般的である。
図16でプロセス定義B200は、一つのWS-BPELのインスタンスとして記載される。プロセス定義B200は、定義部B202、アクティビティ部B203、B204、B205等を含む。
アクティビティ部は、該当するメッセージを受信した場合の挙動を定義するアクティビティ部B203、実際の業務ロジックに相当する挙動を定義するアクティビティ部B204、該当するメッセージを往信する場合の挙動を定義するアクティビティ部B205に分類される。
これに対して、具体的なサービス定義B201は、一つのWSDLのインスタンスとして記載される。サービス定義B201は、プロセス定義B200と直接関係するものと独立に記載されるものとの2種類が存在する。
一つのサービス定義B201は、サービスを呼び出す場合のメッセージ形式、サービスを呼び出したことで発生する往信メッセージの形式を定義するメッセージ定義部B206、メッセージ定義部B206を使い実際のインタフェースを定義するポート定義部B207、ポート定義部B207を実際のトランスポートに対応付けるバインディング部B208、バインディング部B208等を使いサービスとして定義するサービス定義部B209を含んで構成される。
メッセージを受信した場合の挙動を定義するアクティビティ部B203で、任意のサービスを特定する場合、サービスに相当するサービス定義B201のポート定義部B207を参照する。同様に、メッセージを往信する場合の挙動を定義するアクティビティ部B205や、実際の業務ロジックに相当する挙動を定義するアクティビティ部B204で任意のサービスを特定する場合、間接的にサービスに相当するサービス定義B201のポート定義部B207を参照する。
図16のサービス定義部B201、プロセス定義B200は、通常計算機が可読の表現で記載され、意味的な情報を直接含むことは少ない。
図17は、図13のデプロイ段階で実施する処理手順の一環として、メタデータ管理部、結合処理部、Action Tree生成部が、Action Treeを生成する際の処理概要を示す。大きくは四つの工程から構成される。第1の工程では、分散配置された複数のワークフロー処理系に保持されているワークフローに関連した全てのプロセス定義のメタデータ、及び全てのサービス定義のメタデータを収集した後、統合されたワークフロー定義である合成ワークフロー定義を構築する。これは上記の統合処理部B55によって実行される。
第2の工程では、合成ワークフロー定義に基づき、Action Treeを構築するためのノードの呼び出し関係の特定、明確化を行う。これは上記のAction Tree生成部B66によって実行される。第3の工程では、図13〜15での説明に従い、特定されたノードの呼び出し関係を基に、Action Treeを構築する。これも上記のAction Tree生成部B66によって実行される。この第2、第3の工程では、さらに二つのサブ工程に分解できる。一つ目は正常系のAction Treeを構築するサブ工程であり、二つ目は正常系のAction Treeを元に補償処理を含んだ複数のAction Treeを構築するサブ工程となる。
第4の工程では、複数のAction Treeを元に確率関数を付与し、評価のために利用できるように記述を強化した後、メタデータ管理部B56に登録する工程である。これも上記のAction Tree生成部B66によって実行される。
第1の工程を実行するため、統合処理部B55は、プロセス定義のメタデータや、サービス定義のメタデータを収集する。プロセス定義のメタデータは、具体的にはWS-BPELで記載されており、例えばプロセス名が「1X」で定義されるプロセス定義のメタデータB210、プロセス名が「2X」で定義されるプロセス定義のメタデータB212、プロセス名が「3X」で定義されるプロセス定義のメタデータB214等である。
これに対してサービス定義のメタデータは、具体的にはWSDLで記述されており、例えばサービス名が「1X」で定義されるサービス定義のメタデータB211、サービス名が「2X」で定義されるサービス定義のメタデータB213、サービス名が「3X」で定義されるサービス定義のメタデータB215、サービス名が「1Y」で定義されるサービス定義のメタデータB219、サービス名が「2Y」で定義されるサービス定義のメタデータB218、サービス名が「3Y」で定義されるサービス定義のメタデータB217等である。
ここで、メタデータ間の関係を簡単に記すと以下のようになる。サービス定義のメタデータB211は、プロセス定義のメタデータB210と関連して定義され、サービスが呼び出されると、プロセス定義のメタデータB210に記載されたワークフロー、プロセスが起動する。
これに対して、サービス定義のメタデータB213は、プロセス定義のメタデータB212と関連して定義され、サービスが呼び出されると、プロセス定義のメタデータB212に記載されたワークフロー、プロセスが起動する。
さらに、サービス定義のメタデータB215は、プロセス定義のメタデータB214と関連して定義され、サービスが呼び出されると、プロセス定義のメタデータB214に記載されたワークフロー、プロセスが起動する。
さらに、ここではサービス定義のメタデータB213は、プロセス定義のメタデータB210から呼び出される。さらに、サービス定義のメタデータB215は、プロセス定義のメタデータB212から呼び出される。また、サービス定義のメタデータB219、B218は、プロセス定義のメタデータB214から呼び出されるという関係を持つ。
図17では、図16にて定義されたアクティビティ部のうち、該当するメッセージを受信した場合の挙動を定義するアクティビティ部B203をシンボル「Rv」の修飾子、実際のロジックに相当する挙動を定義するアクティビティ部B204をシンボル「l」の修飾子、該当するメッセージを往信する場合の挙動を定義するアクティビティ部B205をシンボル「Rp」の修飾子を付けて表現する。
例えば、プロセス名が「1X」で定義されるプロセス定義のメタデータB210内の、受信した場合の挙動を定義するアクティビティ部は、シンボル「1Rv」で表現される。また、実際の業務ロジックに相当する挙動を定義するアクティビティ部は、シンボル「1l1」で表現される。ここで、業務ロジックに相当する挙動を定義するアクティビティ部は複数定義しうるので、シンボル「1l1」、「1l2」と複数出現しうる。また、該当するメッセージを往信する場合の挙動を定義するアクティビティ部は、シンボル「1Rp」で表現する。
統合処理部B55は、実際に第1の工程を実施するため、メタデータ管理部B56に登録されているプロセス定義のメタデータや、サービス定義のメタデータを取り出す。その際、サービス定義のメタデータB211とプロセス定義のメタデータB210は、転送形式データB220として統合処理部B55に渡される。
また、サービス定義のメタデータB213とプロセス定義のメタデータB212とは、転送形式データB221として統合処理部B55に渡される。また、サービス定義のメタデータB215とプロセス定義飲めたデータB214は、転送形式データB222として統合処理部B55に渡される。最後に、サービス定義のメタデータB217、B218、B219は、転送形式データB223として統合処理部B55に渡される。
統合処理部B55は、転送形式データB220、B221、B222、B223として入手すると、それらを統合処理部B55の持つ内部メモリに空間B224に展開し、合成ワークフロー定義として展開する。その後、メモリ空間B224上でサービス中間ノード、サービス末端ノードを特定していく。
サービス末端ノードは、他サービスの呼び出しが無いサービス定義が相当する。サービス中間ノードは、他サービスの呼び出し関係を持つサービス定義、さらにはサービス定義に関連したプロセス定義が相当する。ここでプロセス定義B225、B226、B227、B228は、他サービスの呼び出し関係を持つサービス定義と関連しているため、サービス中間ノードとして特定される。
これに対して、プロセス定義B227、B228から呼ばれるサービス名が「1Y」で定義されるサービス定義、及びサービス名が「2Y」で定義されるサービス定義は、サービス末端ノードと特定される。
その後、統合処理部B55は、内部メモリ空間B224上に展開された合成ワークフロー定義を保存するため、転送形式データB253に変換し送付の上でメタデータ管理部B56上の合成ワークフロー定義B244として命名の上で書き込み、保存する。
続けて、第2の工程を実施するため、統合処理部B55は、Action Tree生成部B66を起動する。Action Tree生成部B66が起動すると、統合処理部B55の内部メモリ空間B224に保存される全てのプロセス定義と、全てのサービス定義とが、Action Tree生成部B66内の内部メモリ空間B229に引き渡される。
例えば、プロセス定義B225は、転送形式データB248として、Action Tree生成部B66に引き渡された後、内部メモリ空間B229上にサービス中間ノード1X記述定義B231として展開される。
プロセス定義B226は、転送形式データB249として、Action Tree生成部B66に引き渡された後、内部メモリ空間B229上にサービス中間ノード2X記述定義B232として展開される。
プロセス定義B227は、転送形式データB250として、Action Tree生成部B66に引き渡された後、内部メモリ空間B229上にサービス中間ノード3X記述定義B233として展開される。その後、分岐で表現される部分についても取り込まれる。具体的には、プロセス定義B228も、転送形式データB250として取り込まれ、Action Tree生成部B66に引き渡された後、内部メモリ空間B229上にサービス中間ノード3X記述定義B233の一部として取り込まれる。
プロセス定義B228から呼ばれるサービス名が「1Y」で定義されるサービス定義は、転送形式データB251としてAction Tree生成部B66に引き渡された後、内部メモリ空間B229上にサービス末端ノード1Y記述定義B234として展開される。
最後に、プロセス定義B227から呼ばれるサービス名が「2Y」で定義されるサービス定義は、転送形式データB252としてAction Tree生成部B66に引き渡された後、内部メモリ空間B229上にサービス末端ノード2Y記述定義B235として展開される。
Action Tree生成部B66は、記述定義を展開の後、サービス中間ノード1X記述定義B231、サービス中間ノード2X記述定義B232、サービス中間ノード3X記述定義B233から開始点となるものを特定する。この場合、サービス中間ノード1X記述定義B231がこれに相当する。その後、サービス中間ノード1X記述定義B231が参照するサービス定義のメタデータB211を基に呼び出しインタフェースを特定した後、サービスの起動側であるサービスクライアントノードの記述定義B230を追加する。
その後、Action Tree生成部B66は、内部メモリ空間B229上の全ての記述定義を含んだ記述定義を完成させると、Action Treeを構成するためのノードの呼び出し関係の特定を行い、第2の工程を終了する。
続けてAction Tree生成部B66は、内部メモリ空間B229上で第3の工程を実施する。これは、Action Tree生成部B66内部に定義される補償処理Action Tree生成部B260によって実施される。補償処理Action Tree生成部B260は、補償処理の方式数に応じて、正常系Action TreeB236を基に、図13〜15で示した方法で補償処理を含んだ複数のAction Treeを構築する。
補償処理Action Tree生成部260は、例えば、Saga方式の場合、例えば図3の正常処理定義と図6の定義との差分を行う処理を実施し、補償処理で必要となるメッセージ群の特定を図る。そして、補償処理Action Tree生成部B260は、特定されたメッセージ群を基に、正常系Action TreeB236にAction Sub Treeを追加することで、Saga方式Action TreeB238を生成する。
補償処理Action Tree生成部B260は、例えばTop Down打ち消し再試行方式の場合、例えば図3の正常処理定義と図9の定義との差分を行う処理を実施し、補償処理で必要となるメッセージ群の特定を図る。そして、補償処理Action Tree生成部B260は、特定されたメッセージ群を基に、正常系Action TreeB236にAction Sub Treeを追加することで、Top Down打ち消し方式Action TreeB239を生成する。
その他の方式が存在する場合は、同様の手順に基づき、補償処理Action Tree生成部B260は、その他方式Action TreeB237を生成する。以上により、第3の工程を終了する。
その後、Action Tree生成部B260は、第4の工程を実施するため、Action Tree生成部B66内部に定義される確率関数記述付与部B240を起動する。確率関数記述付与部B240は、補償処理Action Tree生成部B260の定義するAction Treeの総数分、Action Tree記述を定義する。例えば、Saga方式Action TreeB238が存在する場合、図13〜15に示されるAction Tree内部に定義される全ての終端のノードに対して上記式(1)、式(4)の拡張で定義されるパラメータを算出してアノテーションラベルを定義し、これを含めてAction Tree記述が作成される。
その後、全ての終端のノードに対してアノテーションラベルを付与した後、上記式(5)で定義される計算式相当の記述を生成する。式(5)で確率変数として定義されている部分は、適当なリテラル表現として記述され、後に具体的なパラメータに対してバインドされる。このバインド処理は、Action Tree生成部B66では実施せず、コスト期待値計算部B63の起動時に実施する。
以上の結果、確率関数記述付与部B240は、Saga方式Action TreeB238からSaga方式Action tree記述B242を生成する。同様にTop Down打ち消し再試行方式Action TreeB239からTop Down打ち消し方式Action Tree記述B243を生成する。同様に、その他方式Action TreeB237からその他方式Action Tree記述B241を生成する。
その後、Action Tree生成部B66は、メタデータ管理部B56にAction Tree記述を登録することで、第4の工程を終了する。具体的には、Saga方式Action tree記述B242を転送、コピーするコマンドを実施し、転送形式データB255を生成の後、メタデータ管理部B56にコピーであるSaga方式Action tree記述B246を生成させる。メタデータ管理部B56では先に登録している合成ワークフロー定義B244と管理関係B258とを生成維持することで、Saga方式Action tree記述B246を管理する。
同様に、具体的には、Top Down打ち消し再試行方式Action tree記述B243を転送、コピーするコマンドを実施し、転送形式データB256を生成の後、メタデータ管理部B56にコピーであるTop Down打ち消し再試行方式Action tree記述B247を生成させる。メタデータ管理部B56では先に登録している合成ワークフロー定義B244と管理関係B259とを生成維持することで、Top Down打ち消し再試行方式Action tree記述B247を管理する。
同様に、その他方式Action Tree記述B245を生成させる。メタデータ管理部B56では、先に登録している合成ワークフロー定義B244と管理関係B257とを生成維持することで、その他方式Action tree記述B245を管理する。
合意サービス水準を考慮して補償トランザクション方法を選択する装置の動作を、図13及び図19、22〜24を用いて説明する。また、図20における一部の手順を図21、22、24、25に示す。
図13は、ロングライブトランザクション方式による分散トランザクション処理の正常終了及びSaga方式の補償トランザクション群の処理、及びTop Down打ち消し再試行方式の補償トランザクション群を合意サービス水準を考慮して選択的に実施する装置を機能させるデプロイ段階で実施する処理手順を構成とともに示す。
開発者・管理者が開発環境B14を用いて、ワークフローB16等の図12を構成する環境の構成要素を開発すると、SOAリポジトリB12に全て登録される。SOAリポジトリB12には、複数のサービス処理系、複数のワークフロー処理系に展開する一切のプログラム、定義情報が登録、維持、管理される。
ここで、サービス処理系、複数のワークフロー処理系に展開する一切のプログラム、定義情報を実際の実行環境であるサービス処理系B6、B7、B8、B9、B10及びワークフロー処理系B4、B5に展開する場合は、デプロイヤB13を利用することとなる。
デプロイヤB13は、SOAリポジトリB12から更新系サービスB51に関する定義B100を取り出した後、定義B100を更新系サービスエントリB103として、サービス処理系B10へ転送し、更新系サービスB51として登録する。
さらに、デプロイヤB13は、SOAリポジトリB12からワークフローB17に関する定義B101を取り出した後、定義B101をワークフローエントリB104としてワークフロー処理系B5に転送し、ワークフローB17として登録する、他の参照系サービスB50についても同様である。
デプロイヤB13は、SOAリポジトリB12から補償ハンドラB27に関する定義B102を取り出す場合は、異なる手順をとる。この場合、補償ハンドラB27に関する定義B102に記載されている挙動が正規化されていない場合が想定される。そこで、デプロイヤB13は、補償ハンドララッパテンプレートB80を用いて、補償処理の挙動を正規化することを試みる。
具体的には、最初に補償ハンドララッパテンプレートB80の定義情報B81を読み込む。続けて、デプロイヤB13は、先に取り出した補償ハンドラB27に関する定義B102の内容を評価し、その内容が予め指定している挙動と等価である場合は、定義情報B81の一部に補償ハンドラB27に関する定義B102を嵌め込み、補償ハンドラB27に関する定義B102を取り込んだ補償ハンドララッパのエントリB105を生成する。予め指定している挙動と等価でない場合は、定義情報B81で既に指定されているものを採用し、補償ハンドラB27に関する定義B102を一部参照した補償ハンドララッパのエントリB105を生成する。
以上の評価において等価か否かの判断は、例えば補償ハンドラB27に関する定義B102に付与された形式化された仕様記述に関するアノテーションを用いれば可能である。さらに、アスペクト技術を応用することで実現することも可能である。
その後、デプロイヤB13は、補償ハンドラB27に関する定義B102と関連した補償ハンドララッパのエントリB105をワークフロー処理系B5に転送する。その後、補償ハンドラB27と補償ハンドララッパB23とが登録される。
サービス処理系、複数のワークフロー処理系で利用され、WS-BPEL等の言語により記述されるプロセス定義のメタデータ、WSDLで記述されるサービス定義のメタデータは、トランザクション・SLAモニタ管理部B11内のメタデータ管理部B56にも登録される必要がある。
メタデータ管理部B56への登録を実施する場合は、デプロイヤB15を利用する。
デプロイヤB15は、SOAリポジトリB12からWS-BPEL等の言語により記述されるプロセス定義の全メタデータB106を読み出し、WSDLで記述されるサービス定義の全メタデータB107を読み出す。さらに、全てのサービス群、ワークフロー群、合成ワークフロー群のサービス条件・品質条件について定義し、記載している全データB82(サービス条件・品質条件定義データ)を読み出す。
その後、デプロイヤB15は、プロセス定義の全メタデータB106及びサービス定義の全メタデータB107を登録エントリB108として、メタデータ管理部B56に登録する。
さらにデプロイヤB15は、全てのサービス群、ワークフロー群、合成ワークフロー群のサービス条件・品質条件について定義し、記載している全データB82を登録エントリB109としてSLA管理部B59に登録する。
統合管理部B55は、図17の説明で定義された第1の工程であるプロセス定義の全メタデータB110及びサービス定義の全メタデータB111を収集する。具体的には、全メタデータB110には、プロセス定義のメタデータB210、B212、B214等が含まれる。これに対して、サービス定義の全メタデータB111には、サービス定義のメタデータB211、B213、B215、B217、B218、B219等が含まれる。
この結果、合成ワークフロー定義B244相当のデータB112が作成される。その後、図17のようにメタデータ管理部に合成ワークフロー定義B244として登録される。
図17を用いて説明したように、Action Tree生成部B66は、統合処理部B55からデータの入力を受ける。具体的には、転送形式データ群B113であり、これは転送形式データB248、B249、B250、B251、B252を含んで構成される。
図17を用いて説明したように、Action Tree生成部B66は、メタデータ管理部B56へのデータの出力を行う。具体的には、転送形式データB114であり、これは転送形式データB254、B255、B256を含んで構成される。
図19に、ロングライブトランザクション方式による分散トランザクション処理の正常処理に該当する処理を、図12に示す装置にて実施した場合の処理手順を示す。
分散トランザクション処理を含む合成ワークフローを起動するには、例えば、サービスクライアントB2から更新要求メッセージB300が送信され、ワークフロー処理系B4により受信される。この結果、ワークフロー処理系B4に含まれるワークフローB16が起動する。
ワークフローB16が起動すると、その内部に持つプロセスの定義B67に従いアクティビティを順次呼び出していく。まず、起点であり、後続のアクティビティ(アクティティB72、B74)を呼び出すアクティビティB71が呼び出される。
その後、アクティビティB71はプロセスの定義B67に従い、直列化又は並列化して後続のアクティビティB72、B74を呼び出していく。アクティビティB74が立ち上がると、サービス処理系B7に更新要求メッセージB301を送信する。これは、図3における更新要求メッセージA101に相当する。
サービス処理系B7は、更新要求メッセージB301を受信すると、更新系サービスB36を起動する、更新系サービスB36は、操作ログB39に更新前イメージ及び更新要求メッセージB301内の値に基づく操作内容B350を記録する。その後、更新要求メッセージB301内の値を基に、内部で管理するDataB38を値B351で更新する。その後、サービス処理系B7は、ワークフロー処理系B4に更新応答メッセージB302を返信する。これは、図3における更新応答メッセージA102に相当する。
ワークフロー処理系B4は、更新応答メッセージB302を受信すると、その内部の操作ログB28にメッセージ送信イベントB307、正常応答メッセージ受信イベントB308を書き込む。その後、後続のアクティビティに処理を移す。
続けてアクティビティB72が立ち上がると、サービス処理系B8に参照要求メッセージB303を送信する。
サービス処理系B8は、参照要求メッセージB303を受信すると、参照系サービスB40を起動する。参照系サービスB40は、参照要求メッセージB303内の問い合わせ条件を基に、内部で管理するDataB43を検索するとともに、その検索結果B354を取り出す。その後、参照系サービスB40は、参照応答メッセージB304を返信する。
ワークフロー処理系B4は、参照応答メッセージB304を受信すると、その内部の操作ログB28にメッセージ送信イベントB309、正常応答メッセージ受信イベントB310を書き込む。その後、後続のアクティビティに処理を移す。
アクティビティB72が参照応答メッセージB304を受信すると、ワークフローB67は、処理を進め、アクティビティB73を起動する。アクティビティB73が立ち上がると、サービス処理系B8に更新要求メッセージB305を送信する。これは、図3における更新要求メッセージA103に相当する。
サービス処理系B8は、更新要求メッセージB305を受信すると、更新系サービスB41を起動する。更新系サービスB41は、操作ログB44に更新前イメージ及び更新要求メッセージB305内の値に基づく操作内容B352を記録する。その後、更新要求メッセージB305内の値を基に、内部で管理するDataB43を値B353で更新する。その後、サービス処理系B8は、ワークフロー処理系B4に更新応答メッセージB306を送信する。これは、図3における更新応答メッセージA125に相当する。
ワークフロー処理系B4は、更新応答メッセージB306を受信すると、その内部の操作ログB28にメッセージ送信イベントB311、正常応答メッセージ受信イベントB312を書き込む。その後、後続のアクティビティに処理を移す。
その後、ワークフロー処理系B4は、操作ログB28に書き込んだメッセージ送信イベントB307相当のイベントメッセージB313、正常応答メッセージ受信イベントB308相当のイベントメッセージB314、メッセージ送信イベントB309相当のイベントメッセージB315、正常応答メッセージ受信イベントB310相当のイベントメッセージB316、メッセージ送信イベントB311相当のイベントメッセージB317、正常応答メッセージ受信イベントB312相当のイベントメッセージB318をトランザクション・SLAモニタ管理部B11内のログ受信部B57に送信する。
イベントメッセージのトランザクション・SLAモニタ管理部B11内のログ受信部B57への送付は、サービス処理系でも実施される。サービス処理系B7は、更新要求メッセージB301の受信イベント相当のイベントメッセージB323、及び更新応答メッセージB302の送信イベント相当のイベントメッセージB324をログ受信部B57へ送付する。
同様に、サービス処理系B8は、参照要求メッセージB303の受信イベント相当のイベントメッセージB319、参照応答メッセージB304の送信イベント相当のイベントメッセージB320、更新要求メッセージB305の受信イベント相当のイベントメッセージB321、更新応答メッセージB306の送信イベント相当のイベントメッセージB322をログ受信部B57へ送付する。
ワークフロー処理系B4は、一連のアクティビティを正常に終了すると、呼び出し元のサービスクライアントB2に更新応答メッセージB361を返信する。その後、ワークフロー処理系B4は、操作ログB28に書き込むとともに、更新応答メッセージB361相当のイベントメッセージB360をログ受信部B57に返信する。
ログ受信部B57は、一連のイベントメッセージB313、B314、B315、B316、B317、B318、B319、B320、B321、B322、B323、B324、B360を受信するたびにイベントインスタンスデータ管理部B58内で管理される関連イベントインスタンスデータ群B356を検索の後、取り出すとともに、メタデータ管理部B56内に管理されている合成ワークフロー定義の一部データB355、プロセス定義のメタデータの一部データB325、サービス定義のメタデータの一部データB326も検索、参照して、イベントメッセージを対応付け、新たなイベントインスタンスデータB327として登録する。
SLA計算部B60は一定時間間隔で起動し、イベントインスタンスデータ管理部B58内で管理されるイベントインスタンスデータ群B331を検索する。その後、メタデータ管理部B56内に管理されている合成ワークフロー定義の一部データB328、プロセス定義のメタデータの一部データB329、サービス定義のメタデータの一部データB330を検索、参照して、合成ワークフロー定義ごと、個々ワークフローの定義するプロセスごと、個々サービスごとの品質水準を意味するSLAを計算する。一定時間間隔で算出される計算結果B333は、合成ワークフローの定義ごと、個々ワークフローの定義するプロセスごと、個々サービスごとにSLA実績管理部B61で管理される。
SLA実績管理部B61で管理される一定時間間隔で算出される計算結果は、一定時間間隔でSLA実績値B334として制御部B62に渡された後、参照され、SLA管理部B59内で管理される個々のサービス群、個々ワークフローの定義するプロセス群、個々の合成ワークフロー群のサービス条件・品質条件B332と比較し、是正が必要であれば制御部B62が必要な対応をとる。
次に、コスト期待値計算部B63の処理が実施される。Action Tree等を用いて補償コスト期待値を計算する手順、及び図12で実施される分散トランザクション処理で障害が発生した場合に補償トランザクション群をどの方法に基づいて実施するか、問い合わせる手順とともに、コスト期待値計算部B63の構成を図20に示す。また、コスト期待値計算部B63がAction Tree等を用いて補償コスト期待値を計算する手順を図21、22にフローチャートとして示す。以下、図19〜22を用いて説明する。
制御部B62と同様に、コスト期待値計算部B63の一定時間間隔で起動する。起動は一定時間ごとに起動タイマB601が発する起動イベントB623によって行われる。
コスト期待値計算部B63は、メタデータ取得部B605、実績データ取得部B606、Saga方式におけるAction Depth期待値算出モジュールB607、Top Down打ち消し再試行方式におけるAction Depth期待値算出モジュールB608、その他方式におけるAction Depth期待値算出モジュールB609を含む。
コスト期待値計算部B63が起動すると、メタデータ取得部B605は、メタデータ管理部B56内で管理される合成ワークフロー定義の一覧を得るため、取得依頼コマンドB624を発行する(図21、ステップS1)。その後、メタデータ管理部B56は、合成ワークフロー定義の一覧B625を戻す(図21、ステップS2)。
メタデータ取得部B605は、その後、合成ワークフロー定義の一覧B625から一つの合成ワークフロー定義を選択する(図21、ステップS3)。そして、以降の操作を合成ワークフロー定義が取得できなくなるまで繰り返す。
具体的には、合成ワークフロー定義のエントリを指定することで、図17の管理関係B258を基にSaga方式Action Tree記述B603を指定し、そのエントリB626をダウンロードする。その後、エントリB626を基にコスト値期待値計算部B63上にデプロイするコマンドB627を発行し、Saga方式におけるAction Depth期待値算出モジュールB607を生成する(図21、ステップS4)。
Saga方式におけるAction Depth期待値算出モジュールB607を生成するに当たっては、エントリB626で記載される上記式(2)で与えられるAction Depthに関する変数のリテラル表現や、上記式(4)で与えられる発生確率に関する変数のリテラル表現は、Saga方式におけるAction Depth期待値算出モジュールB607の実行する処理系の変数にバインドされる。また、SLA実績管理部B61で管理され、一定時間間隔で算出される合成ワークフローの定義ごと、個々ワークフローの定義するプロセスごと、個々サービスごとの計算結果B333を参照する形で、所要とされる計算結果の参照先がポイントされる(図21、ステップS5)。
同様に、合成ワークフロー定義のエントリを指定することで、図17の管理関係B259を基にTop Down打ち消し再試行方式Action Tree記述B604を指定し、そのエントリB628をダウンロードする。その後、エントリB628を基にコスト期待値計算部B63上にデプロイするコマンドB629を発行し、Top Down打ち消し再試行方式におけるAction Depth期待値算出モジュールB608を生成する(図21、ステップS6)。
Top Down打ち消し再試行方式におけるAction Depth期待値算出モジュールB608を生成するに当たっては、エントリB628で記載される上記式(2)で与えられるAction Depthに関する変数のリテラル表現や、上記式(4)で与えられる発生確率に関する変数のリテラル表現は、Top Down打ち消し再試行方式におけるAction Depth期待値算出モジュールB608の実行する処理系の変数にバインドされる。また、SLA実績管理部B61で管理され、一定時間間隔で算出される合成ワークフローの定義ごと、個々ワークフローの定義するプロセスごと、個々サービスごとの計算結果B333を参照する形で、所要とされる計算結果の参照先がポイントされる(図21、ステップS7)。
同様に、合成ワークフロー定義のエントリを指定することで、図17の管理関係B257を基にその他方式Action Tree記述B602を指定し、そのエントリB630をダウンロードする。その後、エントリB630を基にコスト期待値計算部B63上にデプロイするコマンドB631を発行し、その他方式におけるAction Depth期待値算出モジュールB609を生成する(図21、ステップS8)。
その他方式におけるAction Depth期待値算出モジュールB609を生成するに当たっては、エントリB630で記載される上記式(2)で与えられるAction Depthに関する変数のリテラル表現や、上記式(4)で与えられる発生確率に関する変数のリテラル表現は、その他方式におけるAction Depth期待値算出モジュールB609の実行する処理系の変数にバインドされる。また、SLA実績管理部B61で管理され、一定時間間隔で算出される合成ワークフローの定義ごと、個々ワークフローの定義するプロセスごと、個々サービスごとの計算結果B333を参照する形で、所要とされる計算結果の参照先がポイントされる(図21、ステップS9)。
コスト期待値計算部B63は、一連のデプロイメント操作を終えると、具体的には上記式(5)にて定義さえるAction Depth期待値の計算を行う。計算に当たっては、Saga方式、Top Down打ち消し再試行方式、その他方式を順次連続して行う、又は並列して実施することも可能である。
Saga方式におけるAction Depth期待値算出モジュールB607は、内部変数にバインドされAction Depth期待値を計算する上で必要なデータのリスト、及び合成ワークフロー定義のエントリを引数で指定し、実績データ取得部B606にデータ取得要求コマンドB632を発行する(図21、ステップS10a)。
その後、実績データ取得部B606は、データ取得要求コマンドB632で引数として与えられる合成ワークフロー定義のエントリ、及びAction Depth期待値を計算する上で必要なデータを含んだ検索要求B633をSLA実績管理部B61へ発行する。
SLA実績管理部B61では、検索要求B633で指定された合成ワークフロー定義のエントリを基に、Action Depth期待値を計算する上で必要なデータを指定された順序で設定し、応答B634として実績データ取得部B606へ戻す。応答B634に含まれるデータは、定義されたデータ及び一定時間間隔で算出される合成ワークフローごと、個々ワークフローの定義するプロセスごと、個々サービスごとの計算結果B333を含む。
実績データ取得部B606は、データ取得要求コマンドB632に対する応答として、応答B634に含まれるデータをSaga方式におけるAction Depth期待値算出モジュールB607に応答B635で戻す(図22、ステップS11a)。
Saga方式におけるAction Depth期待値算出モジュールB607では、応答B634で受信したデータを加工し、上記式(5)に基づきAction Depth期待値を計算実施する。(図22、ステップS12a)。計算により算出された値は、補償コスト期待値管理部B64上のSaga方式におけるAction Depth期待値データB610として登録するように、起動した時刻と指定した合成ワークフロー定義のエントリを引数として登録コマンドB644が発行される。
補償コスト期待値管理部B64は、Saga方式におけるAction Depth期待値データB610が更新されている場合は、計算により算出された値に基づき、Saga方式におけるAction Depth期待値データB610を書き換える。また、Saga方式におけるAction Depth期待値データB610が存在していない場合は、新規に生成する(図22、ステップS13a)。
指定した合成ワークフロー定義のエントリが異なると、再度実績データ取得部B606を用いてデータを取得の上で算出する。さらに、引数が変わるため新たな登録コマンドB647が発行され、補償コスト期待値管理部B64上に、異なるSaga方式におけるAction Depth期待値データB611が生成・更新される。
Top Down打ち消し再試行方式におけるAction Depth期待値算出モジュールB608は、内部変数にバインドされAction Depth期待値を計算する上で必要なデータのリスト、及び合成ワークフロー定義のエントリを引数で指定し、実績データ取得部B606に、データ取得要求コマンドB636を発行する(図21、ステップS10b)。
その後、実績データ取得部B606は、データ取得要求コマンドB636で引数として与えられる合成ワークフロー定義のエントリ、及びAction Depth期待値を計算する上で必要なデータを含んだ、検索要求B637をSLA実績管理部B61に発行する。
SLA実績管理部B61では、検索要求B637で指定された合成ワークフロー定義のエントリを基に、Action Depth期待値を計算する上で必要なデータを指定された順序で設定し、応答B638として実績データ取得部B606に戻す。応答B638に含まれるデータは定義されたデータ及び一定時間間隔で算出される合成ワークフローの定義ごと、個々ワークフローの定義するプロセスごと、個々サービスごとの計算結果B333を含む。
実績データ取得部B606は、データ取得要求コマンドB636に対する応答として、応答B638に含まれるデータを、Top Down打ち消し再試行方式におけるAction Depth期待値算出モジュールB608に応答B639で戻す(図22、ステップS11b)。
Top Down打ち消し再試行方式におけるAction Depth期待値算出モジュールB608では、応答B639で受信したデータを加工し、上記式(5)に基づきAction Depth期待値を計算実施する(図22、ステップS12b)。計算により算出された値は、補償コスト期待値管理部B64上のTop Down打ち消し再試行方式にAction Depth期待値データB612として登録するように、起動した時刻と、指定した合成ワークフロー定義のエントリを引数として登録コマンドB645が発行される。
補償コスト期待値管理部B64は、Top Down打ち消し方式におけるAction Depth期待値データB612が更新されている場合は、計算により算出された値に基づき、Top Down打ち消し再試行方式におけるAction Depth期待値データB612を書き換える。また、Top Down打ち消し再試行方式におけるAction Depth期待値データB612が存在していない場合は、新規に作成する(図22、ステップS13b)。
指定した合成ワークフロー定義のエントリが異なると、再度実績データ取得部B606を用いてデータを取得の上で算出する。さらに、引数が変わるため新たな登録コマンドB648が発行され、補償コスト期待値管理部B64上に異なるTop Down打ち消し再試行方式におけるAction Depth期待値データB613が生成・更新される。
その他方式におけるAction Depth期待値算出モジュールB609は、内部変数にバインドされAction Depth期待値を計算する上で必要なデータのリスト、及び合成ワークフロー定義のエントリを引数で指定し、実績データ取得部B606に、データ取得要求コマンドB640を発行する(図21、ステップS10c)。
その後、実績データ取得部B606は、データ取得要求コマンドB640で引数として与えられる合成ワークフロー定義のエントリ、及びAction Depth期待値を計算する上で必要なデータを含んだ、検索要求B641をSLA実績管理部B61に発行する。
SLA実績管理部B61では、検索要求B641で指定された合成ワークフロー定義のエントリを基に、Action Depth期待値を計算する上で必要なデータを指定された順序で設定し、応答B642として実績データ取得部B606に戻す。応答B642に含まれるデータは定義されたデータ及び一定時間間隔で算出される合成ワークフローの定義ごと、個々ワークフローの定義するプロセスごと、個々サービスごとの計算結果B333を含む。
実績データ取得部B606は、データ取得要求コマンドB640に対する応答として、応答B642に含まれるデータを、その他方式におけるAction Depth期待値算出モジュールB609に応答B643で戻す(図22、ステップS11c)。
その他方式におけるAction Depth期待値算出モジュールB607では、応答B643で受信したデータを加工し、上記式(5)に基づきAction Depth期待値を計算実施する(図22、ステップS12c)。計算により算出された値は、補償コスト期待値管理部B64上のその他方式にAction Depth期待値データB612として登録するように、起動した時刻と、指定した合成ワークフロー定義のエントリを引数として登録コマンドB646が発行される。
補償コスト期待値管理部B64は、その他方式におけるAction Depth期待値データB614が更新されている場合は、計算により算出された値に基づき、その他方式におけるAction Depth期待値データB614を書き換える。また、その他方式におけるAction Depth期待値データB614が存在していない場合は、新規に作成する(図22、ステップS13c)。
指定した合成ワークフロー定義のエントリが異なると、再度実績データ取得部B606を用いてデータを取得の上で算出する。さらに、引数が変わるため新たな登録コマンドB649が発行され、補償コスト期待値管理部B64上に異なるその他方式におけるAction Depth期待値データB615が生成・更新される。
その後、メタデータ取得部B605に処理を戻す。メタデータ取得部B605は、合成ワークフロー定義の一覧B625から全ての合成ワークフロー定義を選択したか否かをチェックする(図22、ステップS14)。全てのワークフロー定義を選択し、処理を完了した場合は(図22、ステップS14/Yes)、コスト期待値計算部B63は、起動タイマB601が一定時間ごとに発する次の起動イベントb623まで休止し、終了とする。
図23は、Saga方式の補償トランザクション群の処理に該当する処理を、図12に示される装置にて実施した場合の処理手順を示す。
分散トランザクション処理を含む合成ワークフローを起動するには、例えば、サービスクライアントB2から更新要求メッセージB400が送信され、ワークフロー処理系B4により受信されることとなる。この結果、ワークフロー処理系B4に含まれるワークフローB16が起動する。
ワークフローB16が起動すると、その内部に持つプロセスの定義B67に従い、アクティビティを順次呼び出していく。まず、起点であり、後続のアクティビティ(アクティビティB72、B74)を呼び出すアクティビティB71が呼び出される。
その後、アクティビティB71は、プロセスの定義B67に従い、直列化又は並列化して後続のアクティビティB72、B74を呼び出していく。アクティビティB74が立ち上がると、サービス処理系B7に更新要求メッセージB401を送信する。これは、図6における更新要求メッセージA101に相当する。
サービス処理系B7は、更新要求メッセージB401を受信すると、更新系サービスB36を起動する。更新系サービスB36は、操作ログB39に更新前イメージ及び更新要求メッセージB401内の値を基に、内部で管理するDataB38を値B403で更新する。その後、サービス処理系B4に更新応答メッセージB404を返信する。これは、図6における更新応答メッセージA102に相当する。
ワークフロー処理系B4は、更新応答メッセージB404を受信すると、その内部の操作ログB28にメッセージ送信イベントB405、正常応答メッセージ受信イベントB406を書き込む。その後、後続のアクティビティに処理を移す。
続けてアクティビティB72が立ち上がると、サービス処理系B8に参照要求メッセージB407を送信する。
サービス処理系B8は、参照要求メッセージB407を受信すると、参照系サービスB40を起動する。参照系サービスB40は、参照要求メッセージB407内の問い合わせ条件を基に、内部で管理するDataB43を検索するとともに、その検索結果B408を取り出す。その後、参照系サービスB40は、参照応答メッセージB409を返信する。
ワークフロー処理系B4は、参照応答メッセージB409を受信すると、その内部の操作ログB28にメッセージ送信イベントB410、正常応答メッセージ受信イベントB411を書き込む。その後、後続のアクティビティに処理を移す。
アクティビティB72が、参照応答メッセージB409を受信すると、ワークフローB67は、処理を進め、アクティビティB73を起動する。アクティビティB73が立ち上がると、サービス処理系B8に更新要求メッセージB412を送信する。これは、図6における更新要求メッセージA103に相当する。
サービス処理系B8は、更新要求メッセージB412を受信すると、更新系サービスB41を起動する。更新系サービスB41は、操作ログB44に更新前イメージ及び更新要求メッセージB412内の値に基づく操作内容を記録する。その後、更新要求メッセージB412内の値を基に、内部で管理するDataB43を値B414で更新するが、ここでは失敗したと想定する。
その場合、サービス処理系B8は、内部で管理するDataB43が途中まで変更されている場合、元の状態に戻すため、操作ログB44に記録した更新前イメージB415を検索の上で取り出し、DataB43を更新前の状態に戻す。その後、ワークフロー処理系B4に異常更新応答メッセージB416を返信する。これは、図6における更新応答メッセージA104に相当する。
ワークフロー処理系B4は、異常更新応答メッセージB416を受信すると、その内部の操作ログB28にメッセージ送信イベントB417、異常応答メッセージ受信イベントB418を書き込む。
ワークフロー処理系B4は、操作ログB28に書き込んだメッセージ送信イベントB405相当のイベントメッセージB419、正常応答メッセージ受信イベントB406相当のイベントメッセージB420、メッセージ送信イベントB410相当のイベントメッセージB421、正常応答メッセージ受信イベントB411相当のイベントメッセージB422、メッセージ送信イベントB417相当のイベントメッセージB423、及び異常応答メッセージ受信イベントB418相当のイベントメッセージB424をトランザクション・SLAモニタ管理部B11内のログ受信部B47に送信する。
イベントメッセージのトランザクション・SLAモニタ管理部B11内のログ受信部B57への送付は、サービス処理系でも実施される。サービス処理系B7は、更新要求メッセージB401の受信イベント相当のイベントメッセージB455、及び更新応答メッセージB404の送信イベント相当のイベントメッセージB456をログ受信部b57へ送付する。
同様に、サービス処理系B8は、参照要求メッセージB407の受信イベント相当のイベントメッセージB425、参照応答メッセージB409の送信イベント相当のイベントメッセージB426、更新要求メッセージB412の受信イベント相当のイベントメッセージB427、更新応答メッセージB416の送信イベント相当のイベントメッセージB428をログ受信部B57へ送付する。
ワークフロー処理系B4は、異常更新応答メッセージB416を受信し、操作ログB28に異常応答メッセージ受信イベントB418を書き込んだ後、補償処理を行うため、ワークフローB16内の補償処理に関する定義を呼び出す。この場合は、補償ハンドララッパB20が起動する。
補償ハンドララッパB20は、起動すると、とるべき補償トランザクション群の方式を確定するために、トランザクション・SLA管理部B11内部のコスト問い合わせ受信部B65に、問い合わせメッセージB429を送信する。その後、コスト問い合わせ受信部B65を介して補償トランザクション群の方式を指定する応答メッセージB430を受信する。
問い合わせメッセージB429を受信した場合に、コスト問い合わせ受信部B65が実施する処理の概要を図20に示す。さらに、ロングライブトランザクション方式による分散トランザクション処理で障害が発生した場合に補償トランザクション群をどの方法に基づいて実施するかを決定する手順を図24、25にフローチャートとして示す。
図20においては、問い合わせメッセージB429は問い合わせメッセージB651に相当する。また、応答メッセージB430は応答メッセージb666に相当する。
コスト問い合わせ受信部B65は、その構成要素として、実際に問い合わせメッセージを受信する問い合わせ管理部B619、問い合わせ管理部B619から起動を受けて、それぞれ該当するAction Depth期待値データを取得するSaga方式の関係データ取得部B616、Top Down打ち消し再試行方式の関係データ取得部B617、その他方式の関係データ取得部B618、三つの関係データ取得部が入手するデータを受けて、それらを比較して一つの結果を算出するデータ比較・判断部B620、データ比較・判断部B620からの応答を受けて、応答メッセージB666を送信する応答部B621から構成される。
問い合わせ管理部B619は、問い合わせメッセージB651を受信するまでは受信状況の確認を行う(図24、ステップS101)。そして、問い合わせメッセージB651を受信すると処理を開始する。その後、問い合わせメッセージB651を取り出し、補償処理を開始する位置と合成ワークフロー定義の特定とを行う(図24、ステップS102)。
問い合わせ管理部B619は、補償処理を開始する位置と合成ワークフロー定義の特定とを行うと、その情報及び出力先であるデータ比較・判断部B620の参照先情報を引数として、Saga方式の関係データ取得部B616を起動するコマンドB652を発行する(図24、ステップS103a)。
Saga方式の関係データ取得部B616が起動すると、合成ワークフロー定義を引数として補償コスト期待値管理部B64内で管理するSaga方式におけるAction Depth期待値データ群B610、B611を検索するコマンドB655を発行する(図24、ステップS104a)。
補償コスト期待値管理部B64内部において検索が実施される。その後、補償コスト期待値管理部B64は、該当するSaga方式におけるAction Depth期待値B656をSaga方式の関係データ取得部B616に戻す(図24、ステップS105a)。
Saga方式の関係データ取得部B616は、Saga方式におけるAction Depth期待値B656を出力先であるデータ比較・判断部B620にAction Depth期待値B661として渡す(図24、ステップS106a)。
並行して問い合わせ管理部B619は、補償処理を開始する位置と合成ワークフロー定義の特定情報、及び出力先であるデータ比較・判断部B620の参照先情報を引数として、Top Down打ち消し再試行方式の関係データ取得部B617を起動するコマンドB653を発行する(図24、ステップS103b)。
Top Down打ち消し再試行方式の関係データ取得部B617が起動すると、合成ワークフロー定義を引数として補償コスト期待値管理部B64内で管理するTop Down打ち消し再試行方式におけるAction Depth期待値データ群B612、B613を検索するコマンドB657を発行する(図24、ステップS104b)。
補償コスト期待値管理部B64内部において検索が実施される。その後、補償コスト期待値管理部B64は、該当するTop Down打ち消し再試行方式におけるAction Depth期待値B658をTop Down打ち消し再試行方式の関係データ取得部B617に戻す(図24、ステップS105b)。
Top Down打ち消し再試行方式の関係データ取得部B617は、Top Down打ち消し再試行方式におけるAction Depth期待値B658を出力先であるデータ比較・判断部B620にAction Depth期待値B662として渡す(図24、ステップS106b)。
並行して問い合わせ管理部B619は、補償処理を開始する位置と合成ワークフロー定義の特定情報、及び出力先であるデータ比較・判断部B620の参照先情報を引数として、その他方式の関係データ取得部B618を起動するコマンドB654を発行する(図24、ステップS103c)。
その他方式の関係データ取得部B618が起動すると、合成ワークフロー定義を引数として補償コスト期待値管理部B64内で管理するその他方式におけるAction Depth期待値データ群B614、B615を検索するコマンドB659を発行する(図24、ステップS104c)。
補償コスト期待値管理部B64内部において検索が実施される。その後、補償コスト期待値管理部B64は、該当するその他方式におけるAction Depth期待値B660をその他方式の関係データ取得部B618に戻す(図24、ステップS105c)。
その他方式の関係データ取得部B618は、その他方式におけるAction Depth期待値B660を出力先であるデータ比較・判断部B620にAction Depth期待値B663として渡す(図24、ステップS106c)。
データ比較・判断部B620は、Saga方式におけるAction Depth期待値B661、Top Down打ち消し再試行方式におけるAction Depth期待値B662、その他方式におけるAction Depth期待値B663を全て受信すると、その内部で比較し、最小のAction Depth期待値を持つ方法を選択する(図25、ステップS107)。
その後、データ比較・判断部B620は、問い合わせ管理部B619で管理される問い合わせメッセージB651に関係するデータを引数として応答部B621を起動するコマンドB665を発行する(図25、ステップS108)。
その後、応答部B621は、データ比較・判断部B620が手順6にて選択した最小のAction Depth期待値を持つ方法に関する結果とその特定事項についてのデータB664を取得する(図25、ステップS109)。
その後、応答部B621は、結果とその特定事項についてのデータB664を用いて、SLA実績管理部B61に合意サービス水準を満足するか否かを確認する問い合わせメッセージB667を送信し、その結果である応答メッセージB668を得る(図25、ステップS110)。
その後、応答部B621は、結果とその特定事項についてのデータB664とから方式の選択を行う(ステップS111)。Saga方式が指定されている場合には(ステップS111/Saga方式)、補償トランザクション群の方式としてSaga方式の旨を意味する応答メッセージ記述を作成する。その際、応答メッセージB668を判定し、合意サービス水準違反か否かの判定結果を含める(図25、ステップS112a)。
これに対して、Top Down打ち消し再試行方式が指定されている場合には(ステップS111/Top Down打ち消し再試行方式)、補償トランザクション群の方式としてTop Down打ち消し再試行方式の旨を意味する応答メッセージ記述を作成する。その際、応答メッセージB668を判定し、合意サービス水準違反か否かの判定結果を含める(図25、ステップS112b)。
また、その他方式が指定されている場合には(ステップS111/その他方式)、補償トランザクション群の方式としてその他方式の旨を意味する応答メッセージ記述を作成する。その際、応答メッセージB668を判定し、合意サービス水準違反か否かの判定結果を含める(図25、ステップS112c)。
その後、応答部は、応答メッセージ記述を応答メッセージB666として送信する(図25、ステップS113)。図23では、応答メッセージB666は、補償トランザクション群の方式を指定する応答メッセージB430となる。これに対して図26では応答メッセージB530となる。
図23にて、補償ハンドララッパB20が、補償トランザクション群の方式を指定する応答メッセージB430を受信し、補償トランザクション群の方式としてSaga方式が指定されている場合は、Saga方式の補償トランザクション群の処理を実施するため、内部の操作ログB28を参照し、操作ログB28に書き込まれた送受信イベントとは逆順序により、補償トランザクション群を実施する。そこで、サービス処理系B8からの異常応答メッセージ受信イベントB418を受信したログB431を参照する。
実際の補償トランザクションは、補償ハンドララッパB20ではなく、それが取り込み参照する補償ハンドラB24が実施する。補償ハンドラB24は補償要求メッセージB432をサービス処理系B8へ送信する。
サービス処理系B8は、補償要求メッセージB432を受信すると、更新系サービス補償B42を起動する。その後、更新系サービス補償B42でもSaga方式の補償トランザクション群の処理を実施するため、内部ログB44を参照し、更新前イメージB415を検索の上で取り出す。その上で、これに基づき必要であればDataB43の補償処理を実施するため、更新前の値B433で更新する。なお、既に補償処理が実施されている場合はこの限りではない。
補償処理が成功すると、サービス処理系B8は、ワークフロー処理系B4に補償応答メッセージB434を送信する。
ワークフロー処理系B4は、補償応答メッセージB434を受信すると、その内部の操作ログB28に補償要求メッセージ送信イベントB440、補償応答メッセージ受信イベントB441を書き込む。
補償ハンドララッパB20は、続けてSaga方式の補償トランザクション群の処理を実施するため、内部の操作ログB28を参照し、操作ログB28に書き込まれた送受信イベントとは逆順序により次の補償トランザクション群を実施する。そこでサービス処理系B7から正常応答メッセージ受信イベントB406を受信したログB435を参照する。
補償ハンドラB24は、補償要求メッセージB436をサービス処理系B7へ送信する。これはいわば、図6における補償要求メッセージA118に相当する。
サービス処理系B7は、補償要求メッセージB436を受信すると、更新系サービス補償B37を起動する。その後、更新系サービス補償B37でもSaga方式の補償トランザクション群の処理を実施するため、内部の操作ログB39を参照し、更新前イメージB437を検索の上で取り出す。その上で、これに基づきDataB38の補償処理を実施するため、更新前の値B438で更新する。
補償処理が成功すると、サービス処理系B7は、ワークフロー処理系B4に補償応答メッセージB439を送信する。これはいわば図6における補償応答メッセージA124に相当する。
ワークフロー処理系B4は、補償応答メッセージB439を受信すると、その内部の操作ログB28に補償要求メッセージ送信イベントB442、及び補償応答メッセージ受信イベントB443を書き込む。
ワークフロー処理系B4は、操作ログB28に書き込んだ補償要求メッセージ送信イベントB440相当のイベントメッセージB444、補償応答メッセージ受信イベントB441相当のイベントメッセージB445、補償要求メッセージ送信イベントB442相当のイベントメッセージB446、及び補償応答メッセージ受信イベントB443相当のイベントメッセージB447をトランザクション・SLAモニタ管理部B11内のログ受信部B57へ送信する。
また、サービス処理系B7は、補償要求メッセージB436の受信イベント相当のイベントメッセージB450、及び補償応答メッセージB439の送信イベント相当のイベントメッセージB451をログ受信部B57へ送付する。
同様に、サービス処理系B8は、補償要求メッセージB432の受信イベント相当のイベントメッセージB448、及び補償応答メッセージB434の送信イベント相当のイベントメッセージB449をログ受信部B57へ送付する。
ワークフロー処理系4は、一連のアクティビティを正常に終了すると、呼び出し元のサービスクライアントB2に異常終了を意味する更新応答メッセージB452を返信する。その後、ワークフロー処理系B4は、操作ログB28に書き込むとともに、更新応答メッセージB452相当のイベントメッセージB453をログ受信部B57に送信する。
図26は、Top Down打ち消し再試行方式の補償トランザクション群の処理に該当する処理を、図12に示す装置で実施した場合の処理手順を示す。
分散トランザクション処理を含む合成ワークフローを起動するには、例えばサービスクライアントB2から更新要求メッセージB500が送信され、ワークフロー処理系B4により受信される。この結果、ワークフロー処理系B4に含まれるワークフローB16が起動する。
ワークフローB16が起動すると、その内部に持つプロセスの定義B67に従いアクティビティを順次呼び出していく。まず、起点であり、後続のアクティビティ(アクティビティB72、B74)を呼び出すアクティビティB71が呼び出される。
その後、アクティビティB71は、プロセスの定義B67に従い、直列化又は並列化して、後続のアクティビティB72、B74を呼び出していく。アクティビティB74が立ち上がると、サービス処理系B7に更新要求メッセージB501を送信する。これは、図9における更新要求メッセージA101に相当する。
サービス処理系B7は、更新要求メッセージB501を受信すると、更新系サービスB36を起動する。更新系サービスB36は、操作ログB39に更新前イメージ及び往信要求メッセージB501内の値に基づく操作内容B502を記録する。その後、更新要求メッセージB501内の値を基に、内部で管理するDataB38を値B503で更新する。その後、サービス処理系B7は、ワークフロー処理系B4に更新応答メッセージB504を送信する。これは、図9における更新応答メッセージA102に相当する。
ワークフロー処理系B4は、更新応答メッセージB504を受信すると、その内部の操作ログB28にメッセージ送信イベントB505、正常応答メッセージ受信イベントB506を書き込む。その後、後続のアクティビティに処理を移す。
続けてアクティビティB72が立ち上がると、サービス処理系B8に参照要求メッセージB507を送信する。
サービス処理系B8は、参照要求メッセージB507を受信すると、参照系サービスB40を起動する。参照系サービスB40は、参照要求メッセージB507内の問い合わせ条件を基に、内部で管理するDataB43を検索するとともに、その検索結果B508を取り出す。その後、参照系サービスB40は、参照応答メッセージB509を返信する。
ワークフロー処理系B4は、参照応答メッセージB509を受信すると、その内部の操作ログB28にメッセージ送信イベントB510、及び正常応答メッセージ受信イベントB511を書き込む。その後、後続のアクティビティに処理を移す。
アクティビティB72が参照応答メッセージB509を受信すると、ワークフローB67は処理を進め、アクティビティB73を起動する。アクティビティB73が立ち上がると、サービス処理系B8に更新要求メッセージB512を送信する。これは、図9における更新要求メッセージA103に相当する。
サービス処理系B8は、更新要求メッセージB512を受信すると、更新系サービスB41を起動する。更新系サービスB41は、操作ログB44に更新前イメージ及び更新要求メッセージB512内の値に基づく操作内容B513を記録する。その後、更新要求メッセージB512内の値を基に、内部で管理するDataB43を値B514で更新するが、ここでは失敗したと想定する。
その場合、サービス処理系B8は、内部で管理するDataB43が途中まで変更されている場合、元の状態に戻すため、操作ログB44に記録した更新前イメージB515を検索の上で取り出して、DataB43を更新前の状態に戻す。その後、ワークフロー処理系B4に異常更新応答メッセージB516を返信する。これは、図6における更新応答メッセージA104に相当する。
ワークフロー処理系B4は、異常更新応答メッセージB516を受信すると、その内部の操作ログB28にメッセージ送信イベントB517、及び異常応答メッセージ受信イベントB518を書き込む。
ワークフロー処理系B4は、操作ログB28に書き込んだメッセージ送信イベントB505相当のイベントメッセージB519、正常応答メッセージ受信イベントB506相当のイベントメッセージB520、メッセージ送信イベントB510相当のイベントメッセージB521、正常応答メッセージ受信イベントB511相当のイベントメッセージB522、メッセージ送信イベントB517相当のイベントメッセージB523、及び異常応答メッセージ受信イベントB518相当のイベントメッセージB524をトランザクション・SLAモニタ管理部B11内のログ受信部B57に送信する。
イベントメッセージのトランザクション・SLAモニタ管理部B11内のログ受信部B57への送付は、サービス処理系でも実施される。サービス処理系B7は、更新要求メッセージB501の受信イベント相当のイベントメッセージB581及び更新応答メッセージB504の送信イベント相当のイベントメッセージB582をログ受信部B57へ送付する。
同様に、サービス処理系B8は、参照要求メッセージB507の受信イベント相当のイベントメッセージB525、参照応答メッセージB509の送信イベント相当のイベントメッセージB526、更新要求メッセージB512の受信イベント相当のイベントメッセージB527、更新応答メッセージB516の送信イベント相当のイベントメッセージB528をログ受信部B57へ送付する。
ワークフロー処理系B4は、異常更新応答メッセージB516を受信し、操作ログB28に異常応答メッセージ受信イベントB518を書き込んだ後、補償処理を行うため、ワークフローB16内の補償処理に関する定義を呼び出す。この場合は、補償ハンドララッパB20が起動する。
補償ハンドララッパB20は、起動すると、とるべき補償トランザクション群の方式を確定するために、トランザクション・SLA管理部B11内部のコスト問い合わせ受信部B65に、問い合わせメッセージB429を送信する。その後、コスト問い合わせ受信部B65を介して補償トランザクション群の方式を指定する応答メッセージB530を受信する。
問い合わせメッセージB529を受信した場合に、コスト問い合わせ受信部B65が実施する処理の概要を図20に示す。さらに、ロングライブトランザクション方式による分散トランザクション処理で障害が発生した場合に補償トランザクション群をどの方法に基づいて実施するかを決定する手順を図24、25にフローチャートとして示す。
図20においては、問い合わせメッセージB529は問い合わせメッセージB651に相当する。また、応答メッセージB530は応答メッセージb666に相当する。
図26にて、補償ハンドララッパB20が、補償トランザクション群の方式を指定する応答メッセージB530を受信し、補償トランザクション群の方式としてTop Down打ち消し再試行方式が指定されている場合は、補償ハンドララッパB20は、ワークフロー処理系B4に処理を戻し、呼び出し元のサービスクライアントB2に、異常終了で打ち消し処理が必要である旨を意味する更新応答メッセージB531を返信する。その後、ワークフロー処理系B4は、操作ログB28に書き込むとともに、更新応答メッセージB531相当のイベントメッセージB532をログ受信部B57に送信する。
呼び出し元のサービスクライアントB2では、補償動作が実施されていないため、それに相当する処理を起動する。具体的には、サービスクライアントB2から補償要求メッセージB550が送信され、ワークフロー処理系B4により受信される。この結果、ワークフロー処理系B4に含まれ、ワークフローB16に対応するワークフロー補償B18が起動する。
ワークフロー補償B18が起動すると、その内部に持つプロセスの定義B68に従いアクティビティを順次呼び出していく。まず、起点であり、後続のアクティビティ(アクティビティB76、B77)を呼び出すアクティビティB75が呼び出される。
その後、アクティビティB75は、プロセスの定義B68に従い、直列化又は並列化して、後続のアクティビティB76、B77を呼び出していく。アクティビティB77が立ち上がると、サービス処理系B7に補償要求メッセージB551を送信する。これは、図9における更新要求メッセージA113に相当する。
サービス処理系B7は、補償要求メッセージB551を受信すると、更新系サービス補償B37ではなく、更新系サービスB36を起動する。更新系サービスB36は、操作ログB39に更新前イメージ及び補償要求メッセージB551内の値に基づく操作内容B552を記録する。その後、補償要求メッセージB551内の値を基に、内部で管理するDataB38を値B553で更新する。その後、サービス処理系B7は、ワークフロー処理系B4に補償応答メッセージB554を送信する。これは、図9における更新応答メッセージA114に相当する。
ワークフロー処理系B4は、補償応答メッセージB554を受信すると、その内部の操作ログB28に補償要求メッセージ送信イベントB555、補償応答メッセージ受信イベントB556を書き込む。その後、後続のアクティビティに処理を移す。
続けてアクティビティB76が立ち上がると、サービス処理系B8に補償要求メッセージB557を送信する。
サービス処理系B8は、補償要求メッセージB557を受信すると、更新系サービス補償B42ではなく、更新系サービスB41を起動する。更新系サービスB41は、操作ログB44に更新前イメージ及び補償要求メッセージB557内の値に基づく操作内容を記録する。その後、補償要求メッセージB557内の値を基に、内部で管理するDataB43を値B559で更新する。
その後、サービス処理系B8は、ワークフロー処理系B4に補償応答メッセージB560を返信する。これは、図9における補償応答メッセージA116に相当する。
ワークフロー処理刑B4は、補償応答メッセージB560を受信すると、その内部の操作ログB28に補償要求メッセージ送信イベントB561、補償応答メッセージ受信イベントB562を書き込む。その後、後続のアクティビティに処理を移す。
ワークフロー処理系B4は、操作ログB28に書き込んだ補償要求メッセージ送信イベントB555相当のイベントメッセージB563及び補償応答メッセージ受信イベントB556相当のイベントメッセージB564、補償要求メッセージ送信イベントB561相当のイベントメッセージB565、及び補償応答メッセージ受信イベントB562相当のイベントメッセージB566を、トランザクション・SLAモニタ管理部B11内のログ受信部B57に送信する。
イベントメッセージのトランザクション・SLAモニタ管理部B11内のログ受信部B57への送付は、サービス処理系でも実施される。サービス処理系B7は、補償要求メッセージB551の受信イベント相当のイベントメッセージB569、及び補償応答メッセージB554の送信イベント相当のイベントメッセージB570をログ受信部b57へ送付する。
同様に、サービス処理系B8は、補償要求メッセージB557の受信イベント相当のイベントメッセージB567、及び補償応答メッセージB560の送信イベント相当のイベントメッセージB568をログ受信部B57へ送付する。
ワークフロー処理系B4は、一連のアクティビティを正常に終了すると、呼び出し元のサービスクライアントB2に打ち消し処理要求が正常に終了したことを通知する補償応答メッセージB571を返信する。その後、ワークフロー処理系B4は、操作ログB28に書き込むとともに、補償応答メッセージB571相当のイベントメッセージB572をログ受信部B57に送信する。
このように、本実施形態によれば、複数サーバにより実施されるロングライブトランザクション方式に基づく分散トランザクション処理の整合性を最適な計算資源を用いながら維持管理できる。
なお、上記実施形態は本発明の好適な実施の一例であり、本発明はこれに限定されることなく様々な変形が可能である。
本発明に係る補償処理手順選択装置の構成を示す図である。 補償トランザクションの処理モデルを定義するための最も基本的な計算機ネットワーク環境を模式的に示す図である。 ロングライブトランザクション方式による分散トランザクション処理の正常処理を、流通するメッセージ群の関係で示す図である。 ロングライブトランザクション方式による分散トランザクション処理の直列化した正常処理を、流通するメッセージ群及び処理タイミングを用いて示すシーケンス図である。 ロングライブトランザクション方式による分散トランザクション処理の並列化した正常処理を、流通するメッセージ群及び処理タイミングを用いて示すシーケンス図である。 ロングライブトランザクション方式による分散トランザクション処理で障害が発生した場合に実施される補償トランザクション群についてSaga方式を採用した場合の処理を、流通するメッセージ群の関係で示す図である。 直列化したSaga方式の補償トランザクション群の処理を、流通するメッセージ群及び処理タイミングを用いて示すシーケンス図である。 並列化したSaga方式の補償トランザクション群の処理を、流通するメッセージ群及び処理タイミングを用いて示すシーケンス図である。 ロングライブトランザクション方式による分散トランザクション処理で障害が発生した場合に実施される補償トランザクション群についてTop Down打ち消し再試行方式を採用した場合の処理を、流通するメッセージ群の関係で示す図である。 直列化したTop Down打ち消し再試行方式の補償トランザクション群の処理を、流通するメッセージ群及び処理タイミングを用いて示すシーケンス図である。 並列化したTop Down打ち消し再試行方式の補償トランザクション群の処理を、流通するメッセージ群及び処理タイミングを用いて示すシーケンス図である。 ロングライブトランザクション方式による分散トランザクション処理の正常処理、Saga方式の補償トランザクション群の処理、Top Down打ち消し再試行方式の補償トランザクション群の処理を、合意サービス水準を考慮して選択的に実施する装置の構成を示す図である。 Action Treeを用いて補償トランザクション群を評価する場合のAction Treeの構成方法を示す図である。 Action Treeを用いて補償トランザクション群を評価する場合のAction Treeの構成方法を示す図である。 Action Treeを用いて補償トランザクション群を評価する場合のAction Treeの構成方法を示す図である。 ワークフロー定義群の一つの表現形式を示す図である。 デプロイ段階で実施するAction Treeを生成する際の処理の概要を示す図である。 デプロイ段階で実施する処理手順を構成とともに示す図である。 ロングライブトランザクション方式による分散トランザクション処理の正常処理の手順を示す図である。 補償コスト期待値を計算する手順及び分散トランザクション処理で障害が発生した場合の問い合わせ手順を示す図である。 補償コスト期待値を算出する処理の流れを示すフローチャートである。 補償コスト期待値を算出する処理の流れを示すフローチャートである。 Saga方式の補償トランザクション群の処理に該当する処理手順を示す図である。 分散トランザクション処理で障害が発生した場合の問い合わせ、補償方式決定の処理の手順を示す図である。 分散トランザクション処理で障害が発生した場合の問い合わせ、補償方式決定の処理の手順を示す図である。 Top Down打ち消し再試行方式の補償トランザクション群の処理に該当する処理手順を示す図である。
符号の説明
1 補償処理手順方式選択装置
2a、2b、2n ワークフロー処理系
11 部分補償配置部
12、B63 コスト期待値計算部
13、B64 補償コスト期待値管理部
21a、21b、21n 補償部分実施部
A1 サービスクライアントノード
A2、A3 サービス中間ノード
A4、A5、A6、A7、A8、A9 サービス末端ノード
A100、A101、A103、A106、A107、A109、A171、A173、B300、B301、B305、B400、B401、B412、B500、B501、B512 更新要求メッセージ
A102、A104、A105、A108、A110、A111、A125、A126、A172、A174、B302、B306、B361、B404、B452、B504、B531 更新応答メッセージ
A112、A113、A115、A118、A119、A121、A175、A177、B432、B436、B550、B551、B557 補償要求メッセージ
A114、A116、A117、A120、A122、A123、A124、A176、A178、B434、B439、B554、B560、B571 補償応答メッセージ
A150 起動要求
A151、A190 正常終了
A152 異常終了
A153、A154、A155、A156、A157 プロセス
A180 始点ノードシンボル
A181、A191、A192、A193、A194、A195、A196、A197、A198、A199 アーク
A182 終端ノードシンボル
A183 Action Sub Treeシンボル
A184、A185、A186、A187 アノテーションラベル
B1、B2、B3 サービスクライアント
B4、B5 ワークフロー処理系
B6、B7、B8、B9、B10 サービス処理系
B11 トランザクション・SLAモニタ管理部
B12 SOAリポジトリ
B13、B15 デプロイヤ
B14 開発環境
B16、B17 ワークフロー
B18、B19 ワークフロー補償
B20、B21、B22、B23、B24、B25、B26、B27 補償ハンドララッパ
B28、B29、B34、B39、B44、B49、B54 操作ログ
B30、B35、B40、B45、B50 参照系サービス
B31、B36、B41、B46、B51 更新系サービス
B32、B37、B42、B47、B52 更新系サービス補償
B33、B38、B43、B48、B53 Data
B55 統合処理部
B56 メタデータ管理部
B57 ログ受信部
B58 イベントインスタンスデータ管理部
B59 SLA管理部
B60 SLA計算部
B61 SLA実績管理部
B62 制御部
B65 コスト問い合わせ受信部
B66 Action Tree生成部
B67、B68、B69、B70、B200、B225、B226、B227、B228 プロセス定義
B71、B72、B73、B74、B75、B76、B77 アクティビティ
B80 補償ハンドララッパテンプレート
B81 補償ハンドララッパテンプレートの定義情報
B82 サービス条件・品質条件定義データ
B100 更新系サービスYに関する定義
B101 ワークフローX−1に関する定義
B102 補償ハンドラX−1(−)に関する定義
B103 更新系サービスYエントリ
B104 ワークフローX−1エントリ
B105 補償ハンドララッパのエントリ
B106、B110、B210、B212、B214 プロセス定義のメタデータ
B107、B111、B211、B213、B215、B217、B218、B219 サービス定義のメタデータ
B108、B109 登録エントリ
B112 合成ワークフロー定義相当データ
B113、B114、B220、B221、B222、B223、B248、B249、B250、B251、B252、B253、B254、B255、B256 転送形式データ
B201 サービス定義
B202 定義部
B203、B204、B205 アクティビティ部
B206 メッセージ定義部
B207 ポート定義部
B208 バインディング部
B209 サービス定義部
B224、B229 内部メモリ空間
B230 サービスクライアントノード記述定義
B231 サービス中間ノード1X記述定義
B232 サービス中間ノード2X記述定義
B233 サービス中間ノード3X記述定義
B234 サービス末端ノード1Y記述定義
B235 サービス末端ノード2Y記述定義
B236 正常系Action Tree
B237 その他方式Action Tree
B238 Saga方式Action Tree
B239 Top Down打ち消し再試行方式Action Tree
B240 確率関数記述付与部
B241 その他方式Action Tree記述
B242 Saga方式Action Tree記述
B243 Top Down打ち消し再試行方式Action Tree記述
B244 合成ワークフロー定義
B245、B602 その他方式Action Tree記述
B246、B603 Saga方式Action Tree記述
B247、B604 Top Down打ち消し再試行方式Action Tree記述
B257、B258、B259 管理関係
B260 補償処理Action Tree生成部
B303、B407、B507 参照要求メッセージ
B304、B408、B509 参照応答メッセージ
B307、B309、B311、B405、B410B417、B505、B510、B517 メッセージ送信イベント
B308、B310、B312、B406、B411、B506、B511 正常応答メッセージ受信イベント
B313、B314、B315、B316、B317、B318、B319、B320、B321、B322、B323、B324、B360、B419、B420、B421、B422、B423、B424、B425、B426、B427、B428、b444、B445、B446、B447、B448、B449、B450、B451、B453、B455、B456、B518、B519、B520、B521、B522、B523、B524、B525、B526、B527、B528、B532、B563、B564、B565、B566、B567、B568、B569、B570、B572、B581、B582 イベントメッセージ
B325、B329 プロセス定義メタデータの一部データ
B326、B330 サービス定義メタデータの一部データ
B327 イベントインスタンスデータ
B328、B355 合成ワークフロー定義の一部データ
B331、B356 イベントインスタンスデータ群
B332 サービス条件・品質条件
B333 計算結果
B334 SLA実績値
B350、B352、B413、B502、B513、B552、B558 操作内容
B351、B353、B403、B414、B433、B438、B503、B514、B553、B559 値
B354、B508 検索結果
B415、B437、B515 更新前イメージ
B416、B516 異常更新応答メッセージ
B418、B518 異常応答メッセージ受信イベント
B429、B529、B651、B667 問い合わせメッセージ
B430、B530、B666、B668 応答メッセージ
B431、B435 ログ
B440、B442、B555、B561 補償要求メッセージ送信イベント
B441、B443、B556、B562 補償応答メッセージ受信イベント
B601 起動タイマ
B605 メタデータ取得部
B606 実績データ取得部
B607 Saga方式におけるAction Depth期待値算出モジュール
B608 Top Down打ち消し再試行方式におけるAction Depth期待値算出モジュール
B609 その他方式におけるAction Depth期待値算出モジュール
B610、B611 Saga方式におけるAction Depth期待値データ
B612、B613 Top Down打ち消し再試行方式におけるAction Depth期待値データ
B614、B615 その他方式におけるAction Depth期待値データ
B616 Saga方式の関係データ取得部
B617 Top Down打ち消し再試行方式の関係データ取得部
B618 その他方式の関係データ取得部
B619 問い合わせ管理部
B620 データ比較・判断部
B621 応答部
B623 起動イベント
B624 取得依頼コマンド
B625 合成ワークフロー定義の一覧
B626、B628、B630 エントリ
B627、B629、B631、B652、B653、B654、B655、B657、B659、B665 コマンド
B632、B636、B640 データ取得要求コマンド
B633、B637、B641 検索要求
B634、B635、B638、B639、B642、B643 応答
B644、B645、B646、B648、B649 登録コマンド
B656、B661 Saga方式におけるAction Depth期待値
B658、B662 Top Down打ち消し再試行方式におけるAction Depth期待値
B660、B663 その他方式におけるAction Depth期待値
B664 結果とその特定事項についてのデータ

Claims (25)

  1. ロングライブトランザクション方式に基づく分散トランザクション処理を実施する複数のワークフロー処理手段の中に、前記分散トランザクション処理において異常を検出した場合に、その整合性を維持するために実施される補償処理を部分実施する補償部分実施手段を配置する部分補償配置手段と、
    既に実施した前記分散トランザクション処理の実績を基に、少なくとも合意サービス水準をパラメータとして定義された事項を複数の前記補償処理の手順方式の各々に関して評価して期待値データを算出するコスト期待値計算手段と、
    複数の前記期待値データを管理し、前記補償部分実施手段からの問い合わせに応じて、前記期待値データに基づいて前記補償処理の手順方式を指定する補償コスト期待値管理手段とを含み、
    前記補償処理の手順方式を、当該分散トランザクション処理全体の性能を最適化するよう、合意サービス水準を考慮して選択することを特徴とする補償処理手順方式選択装置。
  2. 前記コスト期待値計算手段において、数理的モデルを用いて前記補償処理の手順方式を評価することを特徴とする請求項1記載の補償処理手順方式選択装置。
  3. 前記数理的モデルがAction Treeを用いて表現されたことを特徴とする請求項2記載の補償処理手順方式選択装置。
  4. 前記補償部分実施手段は、前記補償処理のハンドラと、該ハンドラの周辺機能で共通的に定義され、前記補償処理を実施する段階で前記補償コスト期待値に基づく前記補償処理の手順方式を選択するための問い合わせを実施する手順を含むハンドララッパとを含むことを特徴とする請求項1から3のいずれか1項記載の補償処理手順方式選択装置。
  5. 前記部分補償配置手段は、所定の定義情報に基づいて挙動を評価し、正規化した前記補償部分実施手段を前記ワークフロー処理手段の中に配置することを特徴とする請求項1から4のいずれか1項記載の補償処理手順方式選択装置。
  6. 前記コスト期待値計算手段は、前記期待値データを定期的に算出することを特徴とする請求項1から5のいずれか1項記載の補償処理手順方式選択装置。
  7. ロングライブトランザクション方式に基づく分散トランザクション処理において異常を検出した場合に、当該分散トランザクション処理の整合性を維持するため実施される補償処理を部分実施する補償部分実施手段を前記複数サーバ内に配置し、
    既に実施した前記分散トランザクション処理の実績を基に、少なくとも合意サービス水準をパラメータとして定義された事項を複数の前記補償処理の手順方式の各々に関して評価して期待値データを算出し、
    前記補償部分実施手段からの問い合わせに応じて、前記期待値データに基づいて前記補償処理の手順方式を指定し、前記補償処理の手順方式を、当該分散トランザクション処理全体の性能を最適化するよう、合意サービス水準を考慮して選択することを特徴とする補償処理手順方式選択方法。
  8. 前記期待値データを算出する際に、数理的モデルを用いて前記補償処理の手順方式を評価することを特徴とする請求項7記載の補償処理手順方式選択方法。
  9. 前記数理的モデルを、Action Treeを用いて表現することを特徴とする請求項8記載の補償処理手順方式選択方法。
  10. 前記補償部分実施手段は、前記補償処理のハンドラと該ハンドラの周辺機能で共通的に定義され、前記補償処理を実施する段階で前記補償コスト期待値に基づく前記補償処理の手順方式を選択するための問い合わせを実施する手順を含むハンドララッパとを含むことを特徴とする請求項7から9のいずれか1項記載の補償処理手順方式選択方法。
  11. 所定の定義情報に基づいて挙動を評価し、正規化した前記補償部分実施手段を前記ワークフロー処理手段の中に配置することを特徴とする請求項7から10のいずれか1項記載の補償処理手順方式選択方法。
  12. 前記期待値データを定期的に算出することを特徴とする請求項7から11のいずれか1項記載の補償処理手順方式選択方法。
  13. コンピュータに、
    ロングライブトランザクション方式に基づく分散トランザクション処理において異常を検出した場合に、当該分散トランザクション処理の整合性を維持するため実施される補償処理を部分実施する補償部分実施手段を前記複数サーバ内に配置する処理と、
    既に実施した前記分散トランザクション処理の実績を基に、少なくとも合意サービス水準をパラメータとして定義された事項を複数の前記補償処理の手順方式の各々に関して評価して期待値データを算出する処理と、
    前記補償部分実施手段からの問い合わせに応じて、前記期待値データに基づいて前記補償処理の手順方式を指定し、前記補償処理の手順方式を、当該分散トランザクション処理全体の性能を最適化するように合意サービス水準を考慮して選択する処理とを実行させることを特徴とする補償処理手順方式選択プログラム。
  14. 前記コンピュータに、
    前記期待値データを算出する際に、数理的モデルを用いて前記補償処理の手順方式を評価させることを特徴とする請求項13記載の補償処理手順方式選択プログラム。
  15. 前記コンピュータに、
    前記数理的モデルを、Action Treeを用いて表現させることを特徴とする請求項14記載の補償処理手順方式選択プログラム。
  16. 前記補償部分実施手段は、前記補償処理のハンドラと該ハンドラの周辺機能で共通的に定義され、前記補償処理を実施する段階で前記補償コスト期待値に基づく前記補償処理の手順方式を選択するための問い合わせを実施する手順を含むハンドララッパとを含むことを特徴とする請求項13から15のいずれか1項記載の補償処理手順方式選択プログラム。
  17. 前記コンピュータに、所定の定義情報に基づいて挙動を評価させ、正規化した前記補償部分実施手段を前記ワークフロー処理手段の中に配置させることを特徴とする請求項13から16のいずれか1項記載の補償処理手順方式選択プログラム。
  18. 前記コンピュータに、前記期待値データを定期的に算出させることを特徴とする請求項13から17のいずれか1項記載の補償処理手順方式選択プログラム。
  19. 請求項13から18のいずれか1項記載の補償処理手順方式選択プログラムが記録されたコンピュータ可読の記録媒体。
  20. ロングライブトランザクション方式に基づく分散トランザクション処理を実施する複数のワークフロー処理装置と、前記分散トランザクション処理において異常を検出した場合に、その整合性を維持するために実施される補償処理の手順方式を、当該分散トランザクション処理全体の性能を最適化するよう、合意サービス水準を考慮して選択する補償処理手順方式選択装置とを有するワークフローシステムであって、
    前記補償処理手順選択装置は、
    前記ワークフロー処理装置のそれぞれの中に、前記分散トランザクション処理において異常を検出した場合に、その整合性を維持するために実施される前記補償処理を部分実施する補償部分実施手段を配置する部分補償配置手段と、
    既に実施した前記分散トランザクション処理の実績を基に、少なくとも合意サービス水準をパラメータとして定義された事項を複数の前記補償処理の手順方式の各々に関して評価して期待値データを算出するコスト期待値計算手段と、
    複数の前記期待値データを管理し、前記補償部分実施手段からの問い合わせに応じて、前記期待値データに基づいて前記補償処理の手順方式を指定する補償コスト期待値管理手段とを含むことを特徴とするワークフローシステム。
  21. 前記コスト期待値計算手段において、数理的モデルを用いて前記補償処理の手順方式を評価することを特徴とする請求項20記載のワークフローシステム。
  22. 前記数理的モデルがAction Treeを用いて表現されたことを特徴とする請求項21記載のワークフローシステム。
  23. 前記補償部分実施手段は、前記補償処理のハンドラと、該ハンドラの周辺機能で共通的に定義され、前記補償処理を実施する段階で前記補償コスト期待値に基づく前記補償処理の手順方式を選択するための問い合わせを実施する手順を含むハンドララッパとを含むことを特徴とする請求項20から22のいずれか1項記載のワークフローシステム。
  24. 前記部分補償配置手段は、所定の定義情報に基づいて挙動を評価し、正規化した前記補償部分実施手段を前記ワークフロー処理手段の中に配置することを特徴とする請求項20から23のいずれか1項記載のワークフローシステム。
  25. 前記コスト期待値計算手段は、前記期待値データを定期的に算出することを特徴とする請求項20から24のいずれか1項記載のワークフローシステム。
JP2008320017A 2008-12-16 2008-12-16 補償処理手順方式選択装置、方法、プログラム及びそれを記録した記録媒体、並びにワークフローシステム Withdrawn JP2010146103A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008320017A JP2010146103A (ja) 2008-12-16 2008-12-16 補償処理手順方式選択装置、方法、プログラム及びそれを記録した記録媒体、並びにワークフローシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008320017A JP2010146103A (ja) 2008-12-16 2008-12-16 補償処理手順方式選択装置、方法、プログラム及びそれを記録した記録媒体、並びにワークフローシステム

Publications (1)

Publication Number Publication Date
JP2010146103A true JP2010146103A (ja) 2010-07-01

Family

ID=42566519

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008320017A Withdrawn JP2010146103A (ja) 2008-12-16 2008-12-16 補償処理手順方式選択装置、方法、プログラム及びそれを記録した記録媒体、並びにワークフローシステム

Country Status (1)

Country Link
JP (1) JP2010146103A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020504927A (ja) * 2016-12-19 2020-02-13 スワールズ,インコーポレイテッド イベントの削除を可能にする分散データベースのための方法および装置
JP2023045424A (ja) * 2021-09-22 2023-04-03 株式会社日立製作所 分散トランザクションシステム及び分散トランザクションシステムにおける分散トランザクション処理方法
US11734260B2 (en) 2015-08-28 2023-08-22 Hedera Hashgraph, Llc Methods and apparatus for a distributed database within a network
US11797502B2 (en) 2015-08-28 2023-10-24 Hedera Hashgraph, Llc Methods and apparatus for a distributed database within a network

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11734260B2 (en) 2015-08-28 2023-08-22 Hedera Hashgraph, Llc Methods and apparatus for a distributed database within a network
US11797502B2 (en) 2015-08-28 2023-10-24 Hedera Hashgraph, Llc Methods and apparatus for a distributed database within a network
JP2020504927A (ja) * 2016-12-19 2020-02-13 スワールズ,インコーポレイテッド イベントの削除を可能にする分散データベースのための方法および装置
JP7211943B2 (ja) 2016-12-19 2023-01-24 スワールズ,インコーポレイテッド イベントの削除を可能にする分散データベースのための方法および装置
US11657036B2 (en) 2016-12-19 2023-05-23 Hedera Hashgraph, Llc Methods and apparatus for a distributed database that enables deletion of events
JP2023045424A (ja) * 2021-09-22 2023-04-03 株式会社日立製作所 分散トランザクションシステム及び分散トランザクションシステムにおける分散トランザクション処理方法
JP7284791B2 (ja) 2021-09-22 2023-05-31 株式会社日立製作所 分散トランザクションシステム及び分散トランザクションシステムにおける分散トランザクション処理方法

Similar Documents

Publication Publication Date Title
US11853748B2 (en) Methods and systems that share resources among multiple, interdependent release pipelines
Broman et al. Determinate composition of FMUs for co-simulation
US8788569B2 (en) Server computer system running versions of an application simultaneously
US9235380B2 (en) Software modeling framework
US10656971B2 (en) Agile framework for vertical application development and delivery
US10762062B2 (en) Data governance: change management based on contextualized dependencies
US8984534B2 (en) Interfacing between a receiving component of a server application and a remote application
KR101087364B1 (ko) 철회 기반구조
CN112668386A (zh) 使用机器人过程自动化用于文档处理的长时间运行工作流
US8396846B2 (en) Database trigger modification system and method
Demuth et al. Co-evolution of metamodels and models through consistent change propagation
US20100281061A1 (en) Semantic Data Validation of Disjoint Data
US9459859B2 (en) Template derivation for configuration object management
Brandozzi et al. Transforming goal-oriented requirement specifications into architecture prescriptions
US20150220553A1 (en) Expandable ad hoc domain specific query for system management
US20150220404A1 (en) Undo configuration transactional compensation
CN110890987A (zh) 自动创建集群的方法、装置、设备和系统
JP2010146103A (ja) 補償処理手順方式選択装置、方法、プログラム及びそれを記録した記録媒体、並びにワークフローシステム
US7836449B2 (en) Extensible infrastructure for task display and launch
Bergmayr et al. From out-place transformation evolution to in-place model patching
Yongchareon et al. UniFlexView: A unified framework for consistent construction of BPMN and BPEL process views
US11741255B2 (en) System and method of block chain based protection for customized data integration processes
Kim Design pattern based model transformation with tool support
Chondamrongkul et al. Software architectural migration: an automated planning approach
Bianchi et al. An ASM-based model for grid job management

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20120306