×この技術を簡単クリック査定この機能をご利用いただくには、会員登録(無料)が必要です。出願した特許の牽制数、引用された数などを知る事ができます。気になる技術や特許をブックマークしておけば、いつでも後から読むことができます。後で印刷するために、公報をPDFでダウンロードできます。会員登録してastamuseを使えば、もっと簡単に便利にお使いいただけます。会員登録(無料)「astamuse」は世界中の挑戦したい社会課題に挑戦し、未来を創る人のプラットフォームです。オンライン・システム※この項目の情報は公開日時点(2003年12月5日)のものです。(13)課題たとえば業務レベル等でのデータの一貫性を確保するための打消処理を効率的に実行することを可能としたトランザクション処理装置を提供する。解決手段この発明のトランザクション処理装置は、入れ子トランザクションにおける親と子のトランザクションの履歴情報を関連付けることにより、親のトランザクションにおける障害時に、子のトランザクションまで遡って打消処理を実行することを可能とする。この子トランザクションに対して打消処理を関連付けることにより、当該子トランザクションを構成する複数の処理を一括して効率的に打ち消すことを可能とする(処理21,22を打消処理2’、処理31,32を打消処理3’で一括して打ち消すことを可能とする)。近年、コンピュータの処理能力の向上やネットワーク環境の整備等に伴い、様々な業種で数多くの業務処理が電算化されている。この業務処理の電算化に関し、データの更新を伴う一連の不可分な処理を実行する技術として、ACIDベースのトランザクションが広く知られている。このACIDトランザクションは、該当リソースに対するロックを基本とした同期的なトランザクション処理が適用領域である。したがって、処理効率の観点から見ると、非同期的な処理を含むトランザクションには適していない。本方式では、該当データにロックを行い、他のトランザクションからのアクセスを妨げてしまうからである。「在庫管理システムから在庫を引き当て、この引き当てに成功した場合に、配送管理システムに対して配送要求を非同期的に要求し、この配送の予約結果が(非同期的に)返却された時点で、処理の成功とみなす。」といった例を考えてみる。この例で言うと、本方式の場合、在庫管理システムへのアクセス開始から配送管理システムより非同期に到着する結果が来るまでの間、在庫情報はロックされることになる。そのため、ある在庫引当完了から配送の非同期の予約結果を待つ間、その在庫情報にアクセスする他のトランザクションが待たされることになってしまう。ACIDベースのトランザクションは、データの更新を伴う一連の不可分なトランザクション処理を実行する場合、処理の開始時点から終了時点まで該データに対してロックを取得し続ける必要があり、そのために、一連の処理手順中に非同期的な処理等を含む場合、そのトランザクションと同一データにアクセスを行う他のトランザクションに実行が妨げられ、処理効率が落ちるという問題があった。このように、本方式は、非同期的な処理などを含む長期間に渡る可能性のあるトランザクションに適していない。4−8222−8026−8))。このSAGAにおいては、トランザクションを構成する各処理(アクティビティ)の実行の時のみ更新対象のデータに対してロックをかけ、トランザクションの途中で処理が失敗した場合には、データを元の状態に戻す打消し処理を起動する。先の例で言うと、本方式の場合、在庫管理システムからロックをかけずに在庫引き当てる時に更新対象の在庫情報にロックをかけ、在庫引き当てに成功した場合、ロックを解除し、配送管理システムに対して同様に予約を行う。この場合、あるトランザクションが配送管理システムからの結果を待っている間、他のトランザクションは待たされることはなく、その処理効率はACIDトランザクションに比べて向上していると言える。そのために、このSAGAは、トランザクションを構成する各処理の実行履歴情報をリストとして管理する。障害発生時には、この実行履歴情報のリストを実行順序の逆順に辿り、各処理を打ち消す補償処理を逐次実行していく。このように、本方式は、データをロックしないため、並行に動作している別のトランザクションが待たされるという問題は発生しない。在庫引当処理というトランザクションが複数実行されている状況において、あるトランザクションで障害が発生した場合、そのトランザクションの打消処理が実行されるまでの間、在庫は引き当てられたままになり、別のトランザクションでは、そのトランザクションによって引き当てられた在庫が利用できない状況が続くことになる。このため、障害が発生した場合、速やかに打消処理の実行が完了することが必要である。概要たとえば業務レベル等でのデータの一貫性を確保するための打消処理を効率的に実行することを可能としたトランザクション処理装置を提供する。この発明のトランザクション処理装置は、入れ子トランザクションにおける親と子のトランザクションの履歴情報を関連付けることにより、親のトランザクションにおける障害時に、子のトランザクションまで遡って打消処理を実行することを可能とする。この子トランザクションに対して打消処理を関連付けることにより、当該子トランザクションを構成する複数の処理を一括して効率的に打ち消すことを可能とする(処理21,22を打消処理2’、処理31,32を打消処理3’で一括して打ち消すことを可能とする)。請求項1処理手順を記述したシナリオに従って、一連の複数の処理から構成されるトランザクションを処理するトランザクション処理装置において、いずれかのシナリオで記述されたトランザクション内の一処理として別のシナリオで記述されたトランザクションが呼び出された際、そのトランザクションに対する実行履歴を参照するための情報を前記呼び出し元のトランザクション中の該処理に対応する実行履歴要素として記録することにより、同一の階層構造を構成する複数のトランザクションの実行履歴を階層的に管理する履歴管理手段と、いずれかの処理において障害が発生したときに、その処理を含むトランザクション区間に対応する前記履歴管理手段により階層的に管理された実行履歴を最後尾から辿り、その実行履歴で示される各処理に予め対応づけられた打消処理を逆順に実行する打消処理手段とを具備することを特徴とするトランザクション処理装置。請求項2前記履歴管理手段は、各々の要求メッセージおよび応答メッセージの少なくとも一方を各処理の実行履歴要素として記録することを特徴とする請求項1記載のトランザクション処理装置。請求項3前記打消処理手段は、前記別のシナリオで記述されたトランザクションを構成する各処理を、前記呼び出し元のトランザクション内の一処理に予め対応づけられた打消処理により一括して打ち消すことを特徴とする請求項1または2記載のトランザクション処理装置。請求項4処理手順を記述したシナリオに従って、一連の複数の処理から構成されるトランザクションを処理するトランザクション処理装置のトランザクション処理方法において、いずれかのシナリオで記述されたトランザクション内の一処理として別のシナリオで記述されたトランザクションが呼び出された際、そのトランザクションに対する実行履歴を参照するための情報を前記呼び出し元のトランザクション中の該処理に対応する実行履歴要素として記録することにより、同一の階層構造を構成する複数のトランザクションの実行履歴を階層的に管理する履歴管理ステップと、いずれかの処理において障害が発生したときに、その処理を含むトランザクション区間に対応する前記履歴管理ステップにより階層的に管理された実行履歴を最後尾から辿り、その実行履歴で示される各処理に予め対応づけられた打消処理を逆順に実行する打消処理ステップとを具備することを特徴とするトランザクション処理方法。請求項5前記履歴管理ステップは、各々の要求メッセージおよび応答メッセージの少なくとも一方を各処理の実行履歴要素として記録することを特徴とする請求項4記載のトランザクション処理方法。請求項6前記打消処理ステップは、前記別のシナリオで記述されたトランザクションを構成する各処理を、前記呼び出し元のトランザクション内の一処理に予め対応づけられた打消処理により一括して打ち消すことを特徴とする請求項4または5記載のトランザクション処理方法。請求項7処理手順を記述したシナリオに従って、一連の複数の処理から構成されるトランザクションを処理するトランザクション処理装置に適用されるプログラムであって、前記トランザクション処理装置を、いずれかのシナリオで記述されたトランザクション内の一処理として別のシナリオで記述されたトランザクションが呼び出された際、そのトランザクションに対する実行履歴を参照するための情報を前記呼び出し元のトランザクション中の該処理に対応する実行履歴要素として記録することにより、同一の階層構造を構成する複数のトランザクションの実行履歴を階層的に管理する履歴管理手段、いずれかの処理において障害が発生したときに、その処理を含むトランザクション区間に対応する前記履歴管理手段により階層的に管理された実行履歴を最後尾から辿り、その実行履歴で示される各処理に予め対応づけられた打消処理を逆順に実行する打消処理手段として機能させるためのプログラム。請求項8前記履歴管理手段に、各々の要求メッセージおよび応答メッセージの少なくとも一方を各処理の実行履歴要素として記録させることを特徴とする請求項7記載のプログラム。請求項9前記打消処理手段に、前記別のシナリオで記述されたトランザクションを構成する各処理を、前記呼び出し元のトランザクション内の一処理に予め対応づけられた打消処理により一括して打ち消させることを特徴とする請求項7または8記載のプログラム。請求項10処理手順を記述したシナリオに従って、一連の複数の処理から構成されるトランザクションを処理するトランザクション処理装置に適用されるプログラムであって、前記トランザクション処理装置を、いずれかのシナリオで記述されたトランザクション内の一処理として別のシナリオで記述されたトランザクションが呼び出された際、そのトランザクションに対する実行履歴を参照するための情報を前記呼び出し元のトランザクション中の該処理に対応する実行履歴要素として記録することにより、同一の階層構造を構成する複数のトランザクションの実行履歴を階層的に管理する履歴管理手段、いずれかの処理において障害が発生したときに、その処理を含むトランザクション区間に対応する前記履歴管理手段により階層的に管理された実行履歴を最後尾から辿り、その実行履歴で示される各処理に予め対応づけられた打消処理を逆順に実行する打消処理手段として機能させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。各々の要求メッセージおよび応答メッセージの少なくとも一方を各処理の実行履歴要素として記録させることを特徴とする請求項10記載のコンピュータ読み取り可能な記録媒体。技術分野0001この発明は、処理手順を記述したシナリオに従って、一連の複数の処理から構成されるトランザクションを処理するトランザクション処理装置、同装置のトランザクション処理方法、トランザクション処理プログラムおよび同プログラムを記録したコンピュータ読み取り可能な記録媒体に係り、特に、たとえば業務レベル等でのデータの一貫性を確保するための打消処理を効率的に実行することを可能としたトランザクション処理装置、同装置のトランザクション処理方法、トランザクション処理プログラムおよび同プログラムを記録したコンピュータ読み取り可能な記録媒体に関する。背景技術0002近年、コンピュータの処理能力の向上やネットワーク環境の整備等に伴い、様々な業種で数多くの業務処理が電算化されている。この業務処理の電算化に関し、データの更新を伴う一連の不可分な処理を実行する技術として、ACIDベースのトランザクションが広く知られている。0003このACIDトランザクションは、該当リソースに対するロックを基本とした同期的なトランザクション処理が適用領域である。したがって、処理効率の観点から見ると、非同期的な処理を含むトランザクションには適していない。本方式では、該当データにロックを行い、他のトランザクションからのアクセスを妨げてしまうからである。「在庫管理システムから在庫を引き当て、この引き当てに成功した場合に、配送管理システムに対して配送要求を非同期的に要求し、この配送の予約結果が(非同期的に)返却された時点で、処理の成功とみなす。」といった例を考えてみる。0004この例で言うと、本方式の場合、在庫管理システムへのアクセス開始から配送管理システムより非同期に到着する結果が来るまでの間、在庫情報はロックされることになる。そのため、ある在庫引当完了から配送の非同期の予約結果を待つ間、その在庫情報にアクセスする他のトランザクションが待たされることになってしまう。0005つまり、ACIDベースのトランザクションは、データの更新を伴う一連の不可分なトランザクション処理を実行する場合、処理の開始時点から終了時点まで該データに対してロックを取得し続ける必要があり、そのために、一連の処理手順中に非同期的な処理等を含む場合、そのトランザクションと同一データにアクセスを行う他のトランザクションに実行が妨げられ、処理効率が落ちるという問題があった。このように、本方式は、非同期的な処理などを含む長期間に渡る可能性のあるトランザクションに適していない。4−8222−8026−8))。0007このSAGAにおいては、トランザクションを構成する各処理(アクティビティ)の実行の時のみ更新対象のデータに対してロックをかけ、トランザクションの途中で処理が失敗した場合には、データを元の状態に戻す打消し処理を起動する。先の例で言うと、本方式の場合、在庫管理システムからロックをかけずに在庫引き当てる時に更新対象の在庫情報にロックをかけ、在庫引き当てに成功した場合、ロックを解除し、配送管理システムに対して同様に予約を行う。この場合、あるトランザクションが配送管理システムからの結果を待っている間、他のトランザクションは待たされることはなく、その処理効率はACIDトランザクションに比べて向上していると言える。0008また、そのために、このSAGAは、トランザクションを構成する各処理の実行履歴情報をリストとして管理する。障害発生時には、この実行履歴情報のリストを実行順序の逆順に辿り、各処理を打ち消す補償処理を逐次実行していく。このように、本方式は、データをロックしないため、並行に動作している別のトランザクションが待たされるという問題は発生しない。0009一方、たとえば在庫引当処理というトランザクションが複数実行されている状況において、あるトランザクションで障害が発生した場合、そのトランザクションの打消処理が実行されるまでの間、在庫は引き当てられたままになり、別のトランザクションでは、そのトランザクションによって引き当てられた在庫が利用できない状況が続くことになる。このため、障害が発生した場合、速やかに打消処理の実行が完了することが必要である。発明が解決しようとする課題0010ところで、このSAGAにおいては、リスト構造で管理された履歴に従って打消処理を実現していくが、一連の複数の処理を一括して消すことが可能である場合には、この履歴に従って一つずつ打消処理を実行する方法は効率が悪い。このSAGAは、実行履歴を一次元のリスト構造により管理しており、たとえば図12に示す在庫引当処理(21,22)や配送予約処理(31,32)等、まとまった処理の単位を管理する機構を持たない。そのため、履歴中のある部分を一括して効率的に打ち消すといったことを行うことができなかった。図120011この発明は、このような事情を考慮してなされたものであり、たとえば業務レベル等でのデータの一貫性を確保するための打消処理を効率的に実行することを可能としたトランザクション処理装置、同装置のトランザクション処理方法、トランザクション処理プログラムおよび同プログラムを記録したコンピュータ読み取り可能な記録媒体を提供することを目的とする。課題を解決するための手段0012前述した目的を達成するために、この発明は、処理手順を記述したシナリオに従って、一連の複数の処理から構成される各種トランザクションを処理するトランザクション処理装置において、いずれかのシナリオで記述されたトランザクション中の一処理として別のシナリオで記述されたトランザクションが呼び出された際、そのトランザクションに対する実行履歴を参照するための情報を前記呼び出し元のトランザクション中の該処理に対応する実行履歴要素として記録することにより、同一の階層構造を構成する複数のトランザクションの実行履歴を階層的に管理する履歴管理手段と、いずれかの処理において障害が発生したときに、その処理を含むトランザクション区間に対応する前記履歴管理手段により階層的に管理された実行履歴を最後尾から辿り、その実行履歴で示される各処理に予め対応づけられた打消処理を逆順に実行する打消処理手段とを具備することを特徴とする。各々の要求メッセージおよび応答メッセージの少なくとも一方を各処理の実行履歴要素として記録することを特徴とする。前記別のシナリオで記述されたトランザクションを構成する各処理を、前記呼び出し元のトランザクション内の一処理に予め対応づけられた打消処理により一括して打ち消すことを特徴とする。0015この発明においては、あるトランザクション実行中に別のトランザクションを呼び出すことを可能とするために、トランザクションを構成する各アクティビティ毎の実行履歴情報の一要素として、各々の要求メッセージおよび応答メッセージと子履歴情報を参照するための情報とを保持する。0016より具体的には、たとえばある(親)トランザクション実行中の処理(アクティビティ)として別のシナリオを呼び出し、(子)トランザクションを実現する場合、親の履歴情報の該アクティビティに対応する履歴要素として、要求メッセージ、応答メッセージ、子の履歴情報を参照するための情報を書き込む。0017このように、この発明では、入れ子トランザクションにおける親と子のトランザクションの履歴情報を関連付けることにより、まず、親のトランザクションにおける障害時に、子のトランザクションまで遡って打消処理を実行することを可能とする。0018そして、この発明は、これら履歴情報を階層的に管理することにより、トランザクション区間を階層的に設定可能とする。このトランザクション区間に対して打消処理を関連付けることにより、一括して処理の打消しを行えるようにし、起動する打消処理の数を削減して、処理効率の向上を実現する。発明を実施するための最良の形態0019以下、図面を参照してこの発明の一実施形態を説明する。図1は、この発明の実施形態に係るシナリオ制御システムの構成を示す図である。図10020この実施形態のシナリオ制御システムは、業務処理手順が記述されたシナリオに従って、一連の複数の処理から構成されるトランザクションを処理するものであり、図1に示すように、要求受付プログラム101、受信アダプタ102、メッセージ管理プログラム103、シナリオ制御プログラム104および送信アダプタ105の各処理部と、シナリオ管理用DBMS121およびシナリオリポジトリ122の各データ部とを有している。図中のサーバ130は、それぞれこのシナリオ制御システムにより連携を行う対象である既存のサーバシステムである。図10021要求受付プログラム101は、サーバ130から処理の要求メッセージを受け付け、この要求メッセージの中に含まれる識別子に応じて、適切な受信アダプタ102を選択し、その要求メッセージを選択した受信アダプタ102に渡すプログラムである。一般に、要求メッセージの中には、Service、Action等の識別子が埋め込まれており、要求受付プログラム101は、この識別子に応じた対応テーブル等により、受信アダプタ102を選択する。受信したメッセージの種別に応じて、適切な受信アダプタ102が選択、起動される。0022受信アダプタ102は、サーバ130から送信されたメッセージを要求受付プログラム101より受け取り、プロトコル変換等の処理を行った後、シナリオの起動要求や実行要求をメッセージ管理プログラム103経由でシナリオ制御プログラム104に送信するプログラムである。この受信アダプタ102は、一般に複数存在し、要求受付プログラム101によって起動される。ここでシナリオとは、前述した通り、業務処理の手順を記述した文書であり、シナリオは、名前により一意に特定することが可能である。Out)の順番で、指定された宛先に送信するプログラムである。このシナリオ制御プログラム104は、アクティビティ管理プログラム106、履歴管理プログラム107および打消処理制御プログラム108を有している。0025アクティビティ管理プログラム106は、トランザクションを構成する各処理(以下、アクティビティという)を指し示す識別子と具体的に起動するプログラムの物理名との対応を保持するプログラムである。0026履歴管理プログラム107は、アクティビティ毎の実行履歴情報を、後述するインスタンスIDと関連付けて保持するプログラムである。実行履歴情報は、アクティビティに対して送信する要求メッセージや結果として受け取った応答メッセージ、子履歴情報を参照するための情報、履歴通番、シナリオ上での実行位置(シナリオ名、状態名)から構成される。履歴通番とは、各アクティビティの実行順序を示す番号である。0027打消処理制御プログラム108は、履歴管理プログラム107から取得した履歴情報を評価し、打消処理を実行していくプログラムである。0028そして、送信アダプタ105は、サーバ130との間の通信を司るプログラムであり、一般に複数存在する。この送信アダプタ105は、サーバ130のプロトコルに合わせたプロトコル変換等を行い、該サーバ130に対して処理の依頼を行う。処理が同期型の場合、処理結果である応答メッセージを取得する処理も行う。0029前述したように、従来のSAGAにおいては、実行履歴を一次元のリスト構造により管理しており、まとまった処理の単位を管理する機構を持たないため、履歴中のある部分を一括して効率的に打ち消すといったことを行うことができなかった。そこで、このシナリオ制御システム100では、たとえば図2(A)に示すように、処理手順を階層化する。これに合わせて、トランザクションも入れ子構成が可能となるよう、図2(B)に示すように、トランザクションを構成する各アクティビティに対する実行履歴要素として、該アクティビティに対する入力である要求メッセージ、出力である応答メッセージ、子シナリオの履歴情報を参照するための情報を持ち、実行履歴情報を階層的に管理する。階層構造を構成する各トランザクション毎に一括打消処理(図2の2’,3’)を関連付けることにより、履歴に従わない一括した処理の打消を可能とする。図20030図3は、本実施形態において使用する業務処理手順を記述したシナリオの例である。図30031図中、各丸は状態を表す。この状態は、具体的なアクティビティと関連付けられる。状態の実行とは、状態に関連付けられたアクティビティの実行を意味する。シナリオは、複数の状態から構成され、シナリオ制御プログラム104により解釈、実行されていく。0032シナリオには、業務処理における手順(順次、選択、反復)や、各アクティビティに対して送信される要求メッセージ、あるいは結果として受け取った応答メッセージの評価方法が記述される。応答メッセージの評価の結果、次に実行するべき状態が決定し、これらの繰り返しにより、一連の業務処理手順が達成されていく。0033この例では、はじめにシナリオF1の状態S1が実行される。状態S1は、シナリオF2を起動するアクティビティと結び付けられている。次に、シナリオF2が起動され、状態S21,S22,S23の順に起動される。状態S22は、シナリオF3を起動するアクティビティと関連づけられており、シナリオF3のS31,S32の順で実行される。その後、S23が実行される。0034また、シナリオでは、各状態に対応させて打消処理の定義が可能である。打消処理とは、処理の内容を取り消す処理である。入金処理に対する打消処理は出金処理であり、また、在庫引当処理に対する打消処理は在庫差し戻し処理である。この例では、この打消処理自体も状態として与えられる。0035さらに、各状態には、関連付けられたアクティビティを同期型で実行するか、非同期型で実行するかを示す属性が定義されている。ここでは、特に断らない限り、属性は全て「非同期」とする。0036次に、処理の要求メッセージがサーバ130から到達した場合についての説明を行う。注意がない場合を除き、各プログラム間の情報の伝達は、メッセージ管理プログラム103を経由して行われるものとする。要求受付プログラム101は、サーバ130から処理の要求メッセージを受け付け、その要求メッセージの中に含まれる識別子に応じて、適切な受信アダプタ102を選択する。選択された受信アダプタ102は、シナリオ制御プログラム104に対して、シナリオ名を入力とし、シナリオ起動要求を行う。シナリオ制御プログラム104は、そのシナリオを実行する際の作業領域であるインスタンス情報を確保する。この時、受信アダプタ102には、シナリオ起動要求の結果として、現在実行中のインスタンス情報に参照するための情報であるコンテキストIDが返却される。シナリオの実行状態を管理する。シナリオ起動要求を受けた場合、シナリオ制御プログラム104は、シナリオを実行する際の作業領域であるインスタンス情報を確保する。このインスタンス情報は、図4に示すテーブル(インスタンス情報テーブル)に保持される。以下、このインスタンス情報テーブルにおける各列の意味を説明する。図40040インスタンスIDa1は、インスタンスを一意に識別する識別子であり、シナリオ名a2、状態名a3は、この組で現在のシナリオの実行位置を示す。いずれかを取り、初期値として「待機」が設定される。正常異常種別a5は、現在インスタンスが正常処理実行中か、または、なんらかの障害が発生したため、異常処理実行中かを示し、初期値として「正常」が設定される。0041また、このシナリオ制御システム100では、図5に示すテーブル(カレント・インスタンス管理テーブル)に、コンテキストIDとインスタンスIDとの対応付けを保存する。ここに、各コンテキストは、現在実行中のインスタンスIDに参照するための情報を格納し、プロキシとして動作する。シナリオ制御プログラム104にアクセスするプログラムは、そのコンテキストIDをキーとしてアクセスすることで、常に現在実行中のインスタンス情報にアクセス可能となる。図50042シナリオ制御プログラム104は、シナリオ・リポジトリ122よりそのシナリオに関する情報を取得し、一番最初に実行する状態を取得する。その後、インスタンス情報テーブルにシナリオ名とその状態名を書き込む。図3の例の場合、シナリオ名としてF1、状態名としてS1が、それぞれインスタンス情報テーブルに書き込まれる。シナリオ制御プログラム104は、図6に示すテーブル(親子シナリオ管理テーブル)に、シナリオの親子関係を記述する。最上位のシナリオ生成時は、この処理は行わない。図3図60043また、シナリオ制御プログラム104は、履歴管理プログラム107にインスタンスIDを渡して本初期状態SIに対する実行履歴要素の作成を要求し、結果として、実行履歴要素に付与された通番を取得する。この段階で、シナリオ制御プログラム104は、図7に示すテーブル(履歴管理テーブル)に、インスタンスID、通番のみを書き込む。図8に示すテーブル(カレント通番位置管理テーブル)は、最後に書き込んだ履歴通番を保持するテーブルであり、シナリオ制御プログラム104は、この段階で、インスタンスIDに対応させて通番1を書き込む。受信アダプタ102は、シナリオ実行要求として、コンテキストIDと、サーバ130の処理結果や要求を含むメッセージとをシナリオ制御プログラム104に送信する。0045一方、このシナリオ実行要求を受けたシナリオ制御プログラム104は、カレント・インスタンス管理テーブルから、コンテキストIDをキーにして、現在実行中のインスタンスIDを取得する。シナリオ制御プログラム104は、このインスタンスIDをキーとして、今度は、インスタンス情報テーブルからシナリオ実行情報を取得し、現在の実行状態を調べる。実行状態が「待機」以外である場合、エラーを返却したり、その実行要求メッセージをキューの最後尾にまわす等の処理が考えられる。ここで、図9を参照して、実行状態が「待機」である場合のシナリオ制御プログラム104の動作を説明する。図90046a.まず、受信したメッセージが障害情報を含むものであるか判定する(ステップA1)。このメッセージが障害情報を含むものである場合は、処理の失敗を表し、トランザクションのロールバック契機となる。0047b.障害情報を含むものである場合(ステップA1のYES)、インスタンス実行情報テーブルの正常異常種別を「異常」に書き換える(ステップA2)。0048c.インスタンス実行情報テーブルの正常異常種別が「異常」の場合(ステップA3のNO)、打消処理を実行する(ステップA4)。この打消処理の詳細は後述する。0049d.カレント通番位置管理テーブルを参照し、現在のインスタンスIDに対応した通番Nを取得する。履歴管理テーブルの現在のインスタンスID、通番=Nの行にメッセージを書き込む(ステップA5)。0050e.シナリオリポジトリ122から該当するシナリオFを取得し、そのシナリオFの記述に従って、メッセージを評価し、条件分岐などの処理を行う。この結果、次に実行するべき状態名が決定する。この状態名をインスタンス情報テーブルに書き込むと共に、現在の履歴通番位置に対し、シナリオ名、状態名を書き込む(ステップA6)。0051f.選択した次状態が、本シナリオの終了を示し、親シナリオへの復帰を表すものである場合(ステップA7のYES)、親インスタンスに対し、フローの終了を通知する。この時、通知された親シナリオの実行情報テーブルの実行状態を「待機」に変更し、また、コンテキストIDに対応したインスタンスIDを親インスタンスIDのものに変更する。コンテキストIDに対し、子シナリオからの処理結果を送信し、本処理を終了する(ステップA8)。本シナリオが最上位のシナリオである場合(親が存在しない場合)、この処理は行わない。0052g.履歴管理プログラム107に対し、インスタンスIDを渡し、本実行状態に対する実行履歴要素の作成を要求し、結果として、実行履歴要素に付与された通番を取得する(ステップA9)。この段階で、履歴管理テーブルには、インスタンスID、通番のみが書き込まれる。0053h.シナリオ実行情報テーブルをインスタンスIDをキーにして検索し、シナリオの名前F、状態名Sを取得する(ステップA10)。0054i.シナリオの記述情報から該当するシナリオF内の状態名Sで指し示される状態に対応するプログラム識別子を取得する(ステップA11)。0055j.インスタンスID、通番情報をキーとして、メッセージを実行履歴要素に書き込む(ステップA12)。0056k.コンテキストID、インスタンスID、通番情報、プログラム識別子、メッセージを引数として、アクティビティ実行プログラムを起動する(ステップA13)。0057なお、履歴管理テーブルにおいて通番とは、アクティビティの実行順序を管理する番号であり、インスタンスIDに対して一意な番号であり、データには、上記要求メッセージや応答メッセージ、打消処理を実行するに際して必要な情報等が書き込まれる。0058(5)アクティビティ実行シナリオ制御プログラム104は、プログラム識別子をアクティビティ管理プログラム106に渡し、具体的なアクティビティ情報を取得する。0059シナリオ制御プログラム104は、実行するプログラムが、「シナリオ起動」の場合、以下の処理を行う。0060a.シナリオ起動処理で記述した処理を起動し、子シナリオのインスタンスIDを結果として取得する。0061b.インスタンスIDと、子シナリオのインスタンスIDの対応関係を親子シナリオ管理テーブルに書き込む。0062c.履歴管理プログラム107に、(親)インスタンスID、通番、子のインスタンスIDを入力として渡し、親の履歴情報要素に対し、子インスタンスIDを参照するための情報を書き込む。0063d.シナリオ制御プログラムに対し、実行要求を送信する。0064なお、実行するプログラムが、送信アダプタ105の場合、送信アダプタ105を起動する。この場合、応答メッセージを取得する場合もある。0065以上の処理の結果、図3に示すシナリオF2において、たとえばS23実行中における履歴管理テーブルは、図10に示す通りとなる。図示のように、処理の実行が完了していない(インスタンスID、通番)=(1,1),(2,3)の実行履歴情報要素に対するシナリオ名、状態名は空値になっている。次に、図3に示すシナリオF2の状態S23に関連付けられたアクティビティ実行中、たとえば通信障害等の障害が発生した場合にシナリオ制御プログラム104が実行する打消処理の動作を図11を用いて説明する。図11図30067なお、障害情報を含むメッセージは、サーバ130からメッセージとして、送信アダプタ105、受信アダプタ102に通知される。通信障害等の場合は、例外情報を含むメッセージをアダプタが生成する場合もある。アダプタは、シナリオ制御プログラム104に該障害情報を含むメッセージを送信する。以下、障害情報を含むメッセージを単に例外と呼ぶ。例外は、トランザクション処理中の失敗を表し、トランザクション処理のロールバック契機となる。0068前述したように、例外が通知された場合、シナリオ制御プログラム104は、インスタンス情報テーブルの正常異常種別を「異常」に変更し、打消処理を実行する(図9のステップA1〜A4)。この時、シナリオ制御プログラム104は、インスタンスID(Fid)の打消処理を行う打消処理制御プログラム108を起動する。図90069打消処理制御プログラム108は、履歴管理テーブルの該インスタンスIDに対応した通番を検索し、その最大値maxを取得する。履歴通番上の現在の実行位置を参照する情報として、カレント通番位置テーブルにインスタンスID701=Fidに対応する通番e1としてmax+1を書き込む。この場合、インスタンスID=2においては、通番3が最大値であるので、4を通番に書き込む(ステップB1)。0070次に、通番のFidに対応する通番から1を検索し、履歴管理テーブルのインスタンスID=Fidに対応するシナリオ名F、状態名Sを検索する(ステップb4)。ここでは、シナリオ名、状態名は共に定義されていない。0071シナリオ名、状態名が所得できない場合、つまり空値の場合(ステップB6のNO)、該状態に関連付けられたアクティビティは、現在実行中であることを示している。この場合、子シナリオに対する打消処理の起動を試みる。そこで、履歴管理テーブルにおいて、インスタンスID=Fidに対応した子インスタンスIDd5の取得を試みる。この例においては、定義されていない。0072上記子インスタンスIDが定義されていない場合(ステップB7のNO)、次に、履歴管理テーブルから、(インスタンスID,通番)=(2,2)の行を取得する。該行におけるシナリオ名F(F2)、状態名S(S22)を取得し、その状態に対する逆状態が定義されているかを調べる(ステップB6)。この例では状態S22’が定義されている。子インスタンスIDが取得できた場合には、再帰的にインスタンスID=3の履歴情報に対し、履歴に基づく打消処理の実行を行う。0073そこで、打消処理制御プログラム108は、子インスタンスに対する打消処理を履歴情報に基づかずに、逆状態S22’に関連付けられたアクティビティA22により、一括して処理の打消しを行う(ステップB8)。0074以下、S21の逆状態、S21’に対応した打消処理A21が実行され、親のインスタンスIDを引数として、打消処理完了として例外を通知する。0075例外が通知された親インスタンスは、図9に示すフローに従い、処理が継続される。現在、該インスタンス実行情報の正常異常識別は「異常」に設定されているので、再び親インスタンスID=2に対する打消処理が起動される。図90076このように、このシナリオ制御システム100においては、従来のように、履歴情報に従い一つずつ打消処理を起動することに代え、一括してある処理群を束ねて、それらに対して一括打消処理を起動することが可能となる。処理群の途中で障害が発生した場合には、従来と同様、履歴による打消し処理も可能である。0077その理由は、従来のように、実行履歴の管理を一次元のリスト構造で管理するのではなく、入れ子トランザクションの実現のために、各処理の履歴情報に付いて、子履歴情報を参照するための情報を持たせることにより、履歴情報を階層的に管理することを可能とし、一連の処理群を束ねて管理できるようにして、一括打消しの範囲を管理できるようになったからである。0078なお、本願発明は、前記実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。前記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出され得る。実施形態に示される全構成要件から幾つかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除された構成が発明として抽出され得る。発明の効果0079以上のように、この発明によれば、入れ子トランザクションにおける親と子のトランザクションの履歴情報を関連付けることにより、まず、親のトランザクションにおける障害時に、子のトランザクションまで遡って打消処理を実行することを可能とする。0080そして、この発明は、これら履歴情報を階層的に管理することにより、トランザクション区間を階層的に設定可能とする。このトランザクション区間に対して打消処理を関連付けることにより、一括して処理の打消しを行えるようにし、起動する打消処理の数を削減して、処理効率の向上を実現する。図面の簡単な説明0081図1この発明の実施形態に係るシナリオ制御システムの構成を示す図。図2同実施形態のシナリオ制御システムにおける一括した打消処理の概要を説明するための概念図。図3同実施形態において使用する業務処理手順を記述したシナリオの例。図4同実施形態のシナリオ制御システムが備えるインスタンス情報テーブルを示す図。図5同実施形態のシナリオ制御システムが備えるカレント・インスタンス管理テーブルを示す図。図6同実施形態のシナリオ制御システムが備える親子シナリオ管理テーブルを示す図。図7同実施形態のシナリオ制御システムが備える履歴管理テーブルを示す図。図8同実施形態のシナリオ制御システムが備えるカレント通番位置管理テーブルを示す図。図9同実施形態のシナリオ制御システムにおいて実行状態が「待機」である場合のシナリオ制御プログラムの動作手順を示すフローチャート。図10図3に示すシナリオF2において、S23実行中における履歴管理テーブルを示す図。図11図3に示すシナリオF2の状態S23に関連付けられたアクティビティ実行中に障害が発生した場合にシナリオ制御プログラムが実行する打消処理の動作を説明するためのフローチャート。図12従来の打消処理の概要を説明するための概念図。図1図10図11図12図2図3図4図5図6図7--0082100...シナリオ制御システム101...要求受付プログラム102...受信アダプタ103...メッセージ管理プログラム104...シナリオ制御プログラム105...送信アダプタ121...シナリオ管理用DBMS122...シナリオリポジトリ130...サーバページトップへこの技術を出願した法人この情報を共有FacebookTwitterGoogle+LinkedInこの技術を発明した人物この情報を共有FacebookTwitterGoogle+LinkedInページトップへ関連する挑戦したい社会課題この情報を共有FacebookTwitterGoogle+LinkedIn犯罪者のいない都市を実現する犯罪者のいない都市を実現するためには、年々変化する犯罪への予防対策・解決への取り組みが重要です。盗難や空き巣などは近年減少しており、日本国内では15年前と比べ約1/4に減少したとも言われていま...最終更新日:2018/06/15高い食料自給率を実現する高い食料自給率を実現すると、国内での食料の安定供給や、他国の問題による食料不足などの問題を防止する可能性が高まります。イノベーションを導く多くの企業が膨大な労力と費用をかけて新たな市場や事業を生み出そうとしている中「イノベーション」にかかわるデータのニーズはかつてないほどの高まりを見せいます。