図面 (/)

技術 トランザクション処理装置、同装置のトランザクション処理方法、トランザクション処理プログラムおよび同プログラムを記録したコンピュータ読み取り可能な記録媒体

出願人 日本電信電話株式会社
発明者 横関大子郎宮田俊介徳丸浩二鈴木将貴
出願日 2002年5月27日 (17年9ヶ月経過) 出願番号 2002-152928
公開日 2003年12月5日 (16年3ヶ月経過) 公開番号 2003-345609
状態 特許登録済
技術分野 オンライン・システム マルチプログラミング オンライン・システム
主要キーワード 入れ子構成 履歴要素 送信アダプタ 通番情報 メッセージ管理プログラム 配送予約 受信アダプタ 業務レベル
関連する未来課題
重要な関連分野

この項目の情報は公開日時点(2003年12月5日)のものです。
また、この項目は機械的に抽出しているため、正しく解析できていない場合があります

図面 (13)

課題

たとえば業務レベル等でのデータの一貫性を確保するための打消処理を効率的に実行することを可能としたトランザクション処理装置を提供する。

解決手段

この発明のトランザクション処理装置は、入れ子トランザクションにおける親と子のトランザクション履歴情報を関連付けることにより、親のトランザクションにおける障害時に、子のトランザクションまで遡って打消処理を実行することを可能とする。そして、この子トランザクションに対して打消処理を関連付けることにより、当該子トランザクションを構成する複数の処理を一括して効率的に打ち消すことを可能とする(処理21,22を打消処理2’、処理31,32を打消処理3’で一括して打ち消すことを可能とする)。

概要

背景

近年、コンピュータ処理能力の向上やネットワーク環境整備等に伴い、様々な業種で数多くの業務処理電算化されている。そして、この業務処理の電算化に関し、データの更新を伴う一連の不可分な処理を実行する技術として、ACIベーストランザクションが広く知られている。

このACIDトランザクションは、該当リソースに対するロックを基本とした同期的なトランザクション処理適用領域である。したがって、処理効率の観点から見ると、非同期的な処理を含むトランザクションには適していない。なぜなら、本方式では、該当データにロックを行い、他のトランザクションからのアクセスを妨げてしまうからである。たとえば、「在庫管理システムから在庫引き当て、この引き当てに成功した場合に、配送管理システムに対して配送要求を非同期的に要求し、この配送予約結果が(非同期的に)返却された時点で、処理の成功とみなす。」といった例を考えてみる。

この例で言うと、本方式の場合、在庫管理システムへのアクセス開始から配送管理システムより非同期到着する結果が来るまでの間、在庫情報はロックされることになる。そのため、ある在庫引当完了から配送の非同期の予約結果を待つ間、その在庫情報にアクセスする他のトランザクションが待たされることになってしまう。

つまり、ACIDベースのトランザクションは、データの更新を伴う一連の不可分なトランザクション処理を実行する場合、処理の開始時点から終了時点まで該データに対してロックを取得し続ける必要があり、そのために、一連の処理手順中に非同期的な処理等を含む場合、そのトランザクションと同一データにアクセスを行う他のトランザクションに実行が妨げられ、処理効率が落ちるという問題があった。このように、本方式は、非同期的な処理などを含む長期間に渡る可能性のあるトランザクションに適していない。

一方、このような非同期処理を含む場合のトランザクション保証技術として、SAGAが知られている(トランザクション処理技術入門フィリップ・A・バーンスタイン、エリックニューカマー著、日経BP社、ISBN 4−8222−8026−8))。

このSAGAにおいては、トランザクションを構成する各処理(アクティビティ)の実行の時のみ更新対象のデータに対してロックをかけ、トランザクションの途中で処理が失敗した場合には、データを元の状態に戻す打消し処理を起動する。先の例で言うと、本方式の場合、在庫管理システムからロックをかけずに在庫引き当てる時に更新対象の在庫情報にロックをかけ、在庫引き当てに成功した場合、ロックを解除し、配送管理システムに対して同様に予約を行う。この場合、あるトランザクションが配送管理システムからの結果を待っている間、他のトランザクションは待たされることはなく、その処理効率はACIDトランザクションに比べて向上していると言える。

また、そのために、このSAGAは、トランザクションを構成する各処理の実行履歴情報リストとして管理する。そして、障害発生時には、この実行履歴情報のリストを実行順序逆順に辿り、各処理を打ち消す補償処理を逐次実行していく。このように、本方式は、データをロックしないため、並行に動作している別のトランザクションが待たされるという問題は発生しない。

一方、たとえば在庫引当処理というトランザクションが複数実行されている状況において、あるトランザクションで障害が発生した場合、そのトランザクションの打消処理が実行されるまでの間、在庫は引き当てられたままになり、別のトランザクションでは、そのトランザクションによって引き当てられた在庫が利用できない状況が続くことになる。このため、障害が発生した場合、速やかに打消処理の実行が完了することが必要である。

概要

たとえば業務レベル等でのデータの一貫性を確保するための打消処理を効率的に実行することを可能としたトランザクション処理装置を提供する。

この発明のトランザクション処理装置は、入れ子トランザクションにおける親と子のトランザクションの履歴情報を関連付けることにより、親のトランザクションにおける障害時に、子のトランザクションまで遡って打消処理を実行することを可能とする。そして、この子トランザクションに対して打消処理を関連付けることにより、当該子トランザクションを構成する複数の処理を一括して効率的に打ち消すことを可能とする(処理21,22を打消処理2’、処理31,32を打消処理3’で一括して打ち消すことを可能とする)。

目的

この発明は、このような事情を考慮してなされたものであり、たとえば業務レベル等でのデータの一貫性を確保するための打消処理を効率的に実行することを可能としたトランザクション処理装置、同装置のトランザクション処理方法トランザクション処理プログラムおよび同プログラムを記録したコンピュータ読み取り可能な記録媒体を提供することを目的とする。

効果

実績

技術文献被引用数
0件
牽制数
1件

この技術が所属する分野

ライセンス契約や譲渡などの可能性がある特許掲載中! 開放特許随時追加・更新中 詳しくはこちら

請求項1

処理手順記述したシナリオに従って、一連の複数の処理から構成されるトランザクションを処理するトランザクション処理装置において、いずれかのシナリオで記述されたトランザクション内の一処理として別のシナリオで記述されたトランザクションが呼び出された際、そのトランザクションに対する実行履歴を参照するための情報を前記呼び出し元のトランザクション中の該処理に対応する実行履歴要素として記録することにより、同一の階層構造を構成する複数のトランザクションの実行履歴を階層的に管理する履歴管理手段と、いずれかの処理において障害が発生したときに、その処理を含むトランザクション区間に対応する前記履歴管理手段により階層的に管理された実行履歴を最後尾から辿り、その実行履歴で示される各処理に予め対応づけられた打消処理を逆順に実行する打消処理手段とを具備することを特徴とするトランザクション処理装置。

請求項2

前記履歴管理手段は、各々の要求メッセージおよび応答メッセージの少なくとも一方を各処理の実行履歴要素として記録することを特徴とする請求項1記載のトランザクション処理装置。

請求項3

前記打消処理手段は、前記別のシナリオで記述されたトランザクションを構成する各処理を、前記呼び出し元のトランザクション内の一処理に予め対応づけられた打消処理により一括して打ち消すことを特徴とする請求項1または2記載のトランザクション処理装置。

請求項4

処理手順を記述したシナリオに従って、一連の複数の処理から構成されるトランザクションを処理するトランザクション処理装置のトランザクション処理方法において、いずれかのシナリオで記述されたトランザクション内の一処理として別のシナリオで記述されたトランザクションが呼び出された際、そのトランザクションに対する実行履歴を参照するための情報を前記呼び出し元のトランザクション中の該処理に対応する実行履歴要素として記録することにより、同一の階層構造を構成する複数のトランザクションの実行履歴を階層的に管理する履歴管理ステップと、いずれかの処理において障害が発生したときに、その処理を含むトランザクション区間に対応する前記履歴管理ステップにより階層的に管理された実行履歴を最後尾から辿り、その実行履歴で示される各処理に予め対応づけられた打消処理を逆順に実行する打消処理ステップとを具備することを特徴とするトランザクション処理方法。

請求項5

前記履歴管理ステップは、各々の要求メッセージおよび応答メッセージの少なくとも一方を各処理の実行履歴要素として記録することを特徴とする請求項4記載のトランザクション処理方法。

請求項6

前記打消処理ステップは、前記別のシナリオで記述されたトランザクションを構成する各処理を、前記呼び出し元のトランザクション内の一処理に予め対応づけられた打消処理により一括して打ち消すことを特徴とする請求項4または5記載のトランザクション処理方法。

請求項7

処理手順を記述したシナリオに従って、一連の複数の処理から構成されるトランザクションを処理するトランザクション処理装置に適用されるプログラムであって、前記トランザクション処理装置を、いずれかのシナリオで記述されたトランザクション内の一処理として別のシナリオで記述されたトランザクションが呼び出された際、そのトランザクションに対する実行履歴を参照するための情報を前記呼び出し元のトランザクション中の該処理に対応する実行履歴要素として記録することにより、同一の階層構造を構成する複数のトランザクションの実行履歴を階層的に管理する履歴管理手段、いずれかの処理において障害が発生したときに、その処理を含むトランザクション区間に対応する前記履歴管理手段により階層的に管理された実行履歴を最後尾から辿り、その実行履歴で示される各処理に予め対応づけられた打消処理を逆順に実行する打消処理手段として機能させるためのプログラム。

請求項8

前記履歴管理手段に、各々の要求メッセージおよび応答メッセージの少なくとも一方を各処理の実行履歴要素として記録させることを特徴とする請求項7記載のプログラム。

請求項9

前記打消処理手段に、前記別のシナリオで記述されたトランザクションを構成する各処理を、前記呼び出し元のトランザクション内の一処理に予め対応づけられた打消処理により一括して打ち消させることを特徴とする請求項7または8記載のプログラム。

請求項10

処理手順を記述したシナリオに従って、一連の複数の処理から構成されるトランザクションを処理するトランザクション処理装置に適用されるプログラムであって、前記トランザクション処理装置を、いずれかのシナリオで記述されたトランザクション内の一処理として別のシナリオで記述されたトランザクションが呼び出された際、そのトランザクションに対する実行履歴を参照するための情報を前記呼び出し元のトランザクション中の該処理に対応する実行履歴要素として記録することにより、同一の階層構造を構成する複数のトランザクションの実行履歴を階層的に管理する履歴管理手段、いずれかの処理において障害が発生したときに、その処理を含むトランザクション区間に対応する前記履歴管理手段により階層的に管理された実行履歴を最後尾から辿り、その実行履歴で示される各処理に予め対応づけられた打消処理を逆順に実行する打消処理手段として機能させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体

請求項11

前記プログラムは、前記履歴管理手段に、各々の要求メッセージおよび応答メッセージの少なくとも一方を各処理の実行履歴要素として記録させることを特徴とする請求項10記載のコンピュータ読み取り可能な記録媒体。

請求項12

前記プログラムは、前記打消処理手段に、前記別のシナリオで記述されたトランザクションを構成する各処理を、前記呼び出し元のトランザクション内の一処理に予め対応づけられた打消処理により一括して打ち消させることを特徴とする請求項10または11記載のコンピュータ読み取り可能な記録媒体。

技術分野

0001

この発明は、処理手順記述したシナリオに従って、一連の複数の処理から構成されるトランザクションを処理するトランザクション処理装置、同装置のトランザクション処理方法トランザクション処理プログラムおよび同プログラムを記録したコンピュータ読み取り可能な記録媒体係り、特に、たとえば業務レベル等でのデータの一貫性を確保するための打消処理を効率的に実行することを可能としたトランザクション処理装置、同装置のトランザクション処理方法、トランザクション処理プログラムおよび同プログラムを記録したコンピュータ読み取り可能な記録媒体に関する。

背景技術

0002

近年、コンピュータ処理能力の向上やネットワーク環境整備等に伴い、様々な業種で数多くの業務処理電算化されている。そして、この業務処理の電算化に関し、データの更新を伴う一連の不可分な処理を実行する技術として、ACIベースのトランザクションが広く知られている。

0003

このACIDトランザクションは、該当リソースに対するロックを基本とした同期的なトランザクション処理適用領域である。したがって、処理効率の観点から見ると、非同期的な処理を含むトランザクションには適していない。なぜなら、本方式では、該当データにロックを行い、他のトランザクションからのアクセスを妨げてしまうからである。たとえば、「在庫管理システムから在庫引き当て、この引き当てに成功した場合に、配送管理システムに対して配送要求を非同期的に要求し、この配送予約結果が(非同期的に)返却された時点で、処理の成功とみなす。」といった例を考えてみる。

0004

この例で言うと、本方式の場合、在庫管理システムへのアクセス開始から配送管理システムより非同期到着する結果が来るまでの間、在庫情報はロックされることになる。そのため、ある在庫引当完了から配送の非同期の予約結果を待つ間、その在庫情報にアクセスする他のトランザクションが待たされることになってしまう。

0005

つまり、ACIDベースのトランザクションは、データの更新を伴う一連の不可分なトランザクション処理を実行する場合、処理の開始時点から終了時点まで該データに対してロックを取得し続ける必要があり、そのために、一連の処理手順中に非同期的な処理等を含む場合、そのトランザクションと同一データにアクセスを行う他のトランザクションに実行が妨げられ、処理効率が落ちるという問題があった。このように、本方式は、非同期的な処理などを含む長期間に渡る可能性のあるトランザクションに適していない。

0006

一方、このような非同期処理を含む場合のトランザクション保証技術として、SAGAが知られている(トランザクション処理技術入門フィリップ・A・バーンスタイン、エリックニューカマー著、日経BP社、ISBN 4−8222−8026−8))。

0007

このSAGAにおいては、トランザクションを構成する各処理(アクティビティ)の実行の時のみ更新対象のデータに対してロックをかけ、トランザクションの途中で処理が失敗した場合には、データを元の状態に戻す打消し処理を起動する。先の例で言うと、本方式の場合、在庫管理システムからロックをかけずに在庫引き当てる時に更新対象の在庫情報にロックをかけ、在庫引き当てに成功した場合、ロックを解除し、配送管理システムに対して同様に予約を行う。この場合、あるトランザクションが配送管理システムからの結果を待っている間、他のトランザクションは待たされることはなく、その処理効率はACIDトランザクションに比べて向上していると言える。

0008

また、そのために、このSAGAは、トランザクションを構成する各処理の実行履歴情報リストとして管理する。そして、障害発生時には、この実行履歴情報のリストを実行順序逆順に辿り、各処理を打ち消す補償処理を逐次実行していく。このように、本方式は、データをロックしないため、並行に動作している別のトランザクションが待たされるという問題は発生しない。

0009

一方、たとえば在庫引当処理というトランザクションが複数実行されている状況において、あるトランザクションで障害が発生した場合、そのトランザクションの打消処理が実行されるまでの間、在庫は引き当てられたままになり、別のトランザクションでは、そのトランザクションによって引き当てられた在庫が利用できない状況が続くことになる。このため、障害が発生した場合、速やかに打消処理の実行が完了することが必要である。

発明が解決しようとする課題

0010

ところで、このSAGAにおいては、リスト構造で管理された履歴に従って打消処理を実現していくが、一連の複数の処理を一括して消すことが可能である場合には、この履歴に従って一つずつ打消処理を実行する方法は効率が悪い。そして、このSAGAは、実行履歴を一次元のリスト構造により管理しており、たとえば図12に示す在庫引当処理(21,22)や配送予約処理(31,32)等、まとまった処理の単位を管理する機構を持たない。そのため、履歴中のある部分を一括して効率的に打ち消すといったことを行うことができなかった。

0011

この発明は、このような事情を考慮してなされたものであり、たとえば業務レベル等でのデータの一貫性を確保するための打消処理を効率的に実行することを可能としたトランザクション処理装置、同装置のトランザクション処理方法、トランザクション処理プログラムおよび同プログラムを記録したコンピュータ読み取り可能な記録媒体を提供することを目的とする。

課題を解決するための手段

0012

前述した目的を達成するために、この発明は、処理手順を記述したシナリオに従って、一連の複数の処理から構成される各種トランザクションを処理するトランザクション処理装置において、いずれかのシナリオで記述されたトランザクション中の一処理として別のシナリオで記述されたトランザクションが呼び出された際、そのトランザクションに対する実行履歴を参照するための情報を前記呼び出し元のトランザクション中の該処理に対応する実行履歴要素として記録することにより、同一の階層構造を構成する複数のトランザクションの実行履歴を階層的に管理する履歴管理手段と、いずれかの処理において障害が発生したときに、その処理を含むトランザクション区間に対応する前記履歴管理手段により階層的に管理された実行履歴を最後尾から辿り、その実行履歴で示される各処理に予め対応づけられた打消処理を逆順に実行する打消処理手段とを具備することを特徴とする。

0013

また、この発明は、前記履歴管理手段が、各々の要求メッセージおよび応答メッセージの少なくとも一方を各処理の実行履歴要素として記録することを特徴とする。

0014

また、この発明は、前記打消処理手段が、前記別のシナリオで記述されたトランザクションを構成する各処理を、前記呼び出し元のトランザクション内の一処理に予め対応づけられた打消処理により一括して打ち消すことを特徴とする。

0015

この発明においては、あるトランザクション実行中に別のトランザクションを呼び出すことを可能とするために、トランザクションを構成する各アクティビティ毎の実行履歴情報の一要素として、各々の要求メッセージおよび応答メッセージと子履歴情報を参照するための情報とを保持する。

0016

より具体的には、たとえばある(親)トランザクション実行中の処理(アクティビティ)として別のシナリオを呼び出し、(子)トランザクションを実現する場合、親の履歴情報の該アクティビティに対応する履歴要素として、要求メッセージ、応答メッセージ、子の履歴情報を参照するための情報を書き込む。

0017

このように、この発明では、入れ子トランザクションにおける親と子のトランザクションの履歴情報を関連付けることにより、まず、親のトランザクションにおける障害時に、子のトランザクションまで遡って打消処理を実行することを可能とする。

0018

そして、この発明は、これら履歴情報を階層的に管理することにより、トランザクション区間を階層的に設定可能とする。すなわち、このトランザクション区間に対して打消処理を関連付けることにより、一括して処理の打消しを行えるようにし、起動する打消処理の数を削減して、処理効率の向上を実現する。

発明を実施するための最良の形態

0019

以下、図面を参照してこの発明の一実施形態を説明する。図1は、この発明の実施形態に係るシナリオ制御ステムの構成を示す図である。

0020

この実施形態のシナリオ制御システムは、業務処理手順が記述されたシナリオに従って、一連の複数の処理から構成されるトランザクションを処理するものであり、図1に示すように、要求受付プログラム101、受信アダプタ102、メッセージ管理プログラム103、シナリオ制御プログラム104および送信アダプタ105の各処理部と、シナリオ管理用DBMS121およびシナリオリポジトリ122の各データ部とを有している。また、図中のサーバ130は、それぞれこのシナリオ制御システムにより連携を行う対象である既存のサーバシステムである。

0021

要求受付プログラム101は、サーバ130から処理の要求メッセージを受け付け、この要求メッセージの中に含まれる識別子に応じて、適切な受信アダプタ102を選択し、その要求メッセージを選択した受信アダプタ102に渡すプログラムである。一般に、要求メッセージの中には、Service、Action等の識別子が埋め込まれており、要求受付プログラム101は、この識別子に応じた対応テーブル等により、受信アダプタ102を選択する。つまり、受信したメッセージの種別に応じて、適切な受信アダプタ102が選択、起動される。

0022

受信アダプタ102は、サーバ130から送信されたメッセージを要求受付プログラム101より受け取りプロトコル変換等の処理を行った後、シナリオの起動要求実行要求をメッセージ管理プログラム103経由でシナリオ制御プログラム104に送信するプログラムである。この受信アダプタ102は、一般に複数存在し、要求受付プログラム101によって起動される。なお、ここでシナリオとは、前述した通り、業務処理の手順を記述した文書であり、シナリオは、名前により一意に特定することが可能である。

0023

メッセージ管理プログラム103は、一般に、MQ(Messaging Queue)として知られるプログラムであり、送信されたメッセージを一時的に蓄積し、FIFO(First In First Out)の順番で、指定された宛先に送信するプログラムである。

0024

シナリオ制御プログラム104は、このシナリオ制御システム100の中核を担うプログラムであり、シナリオ・リポジトリ122にアクセスしてシナリオの記述情報を取得し、シナリオ実行に際して、使用される作業エリアであるシナリオ・インスタンス情報(以下、インスタンス情報という)の管理やシナリオの起動、実行、終了処理を行う。また、このシナリオ制御プログラム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’)を関連付けることにより、履歴に従わない一括した処理の打消を可能とする。

0030

図3は、本実施形態において使用する業務処理手順を記述したシナリオの例である。

0031

図中、各丸は状態を表す。この状態は、具体的なアクティビティと関連付けられる。また、状態の実行とは、状態に関連付けられたアクティビティの実行を意味する。シナリオは、複数の状態から構成され、シナリオ制御プログラム104により解釈、実行されていく。

0032

シナリオには、業務処理における手順(順次、選択、反復)や、各アクティビティに対して送信される要求メッセージ、あるいは結果として受け取った応答メッセージの評価方法が記述される。そして、応答メッセージの評価の結果、次に実行するべき状態が決定し、これらの繰り返しにより、一連の業務処理手順が達成されていく。

0033

この例では、はじめにシナリオF1の状態S1が実行される。状態S1は、シナリオF2を起動するアクティビティと結び付けられている。次に、シナリオF2が起動され、状態S21,S22,S23の順に起動される。また、状態S22は、シナリオF3を起動するアクティビティと関連づけられており、シナリオF3のS31,S32の順で実行される。その後、S23が実行される。

0034

また、シナリオでは、各状態に対応させて打消処理の定義が可能である。打消処理とは、処理の内容を取り消す処理である。例えば、入金処理に対する打消処理は出金処理であり、また、在庫引当処理に対する打消処理は在庫差し戻し処理である。そして、この例では、この打消処理自体も状態として与えられる。

0035

さらに、各状態には、関連付けられたアクティビティを同期型で実行するか、非同期型で実行するかを示す属性が定義されている。ここでは、特に断らない限り、属性は全て「非同期」とする。

0036

次に、処理の要求メッセージがサーバ130から到達した場合についての説明を行う。なお、特に注意がない場合を除き、各プログラム間の情報の伝達は、メッセージ管理プログラム103を経由して行われるものとする。

0037

(1)要求受付
要求受付プログラム101は、サーバ130から処理の要求メッセージを受け付け、その要求メッセージの中に含まれる識別子に応じて、適切な受信アダプタ102を選択する。

0038

(2)シナリオ起動要求
選択された受信アダプタ102は、シナリオ制御プログラム104に対して、シナリオ名を入力とし、シナリオ起動要求を行う。一方、シナリオ制御プログラム104は、そのシナリオを実行する際の作業領域であるインスタンス情報を確保する。この時、受信アダプタ102には、シナリオ起動要求の結果として、現在実行中のインスタンス情報に参照するための情報であるコンテキストIDが返却される。

0039

(3)シナリオ起動
シナリオ制御プログラム104は、業務処理手順が記述してあるシナリオの解釈を行い、シナリオの起動、停止、実行等、シナリオの実行状態を管理する。シナリオ起動要求を受けた場合、シナリオ制御プログラム104は、シナリオを実行する際の作業領域であるインスタンス情報を確保する。このインスタンス情報は、図4に示すテーブル(インスタンス情報テーブル)に保持される。以下、このインスタンス情報テーブルにおける各列の意味を説明する。

0040

インスタンスIDa1は、インスタンスを一意に識別する識別子であり、シナリオ名a2、状態名a3は、この組で現在のシナリオの実行位置を示す。実行状態a4は、シナリオの状態を表す値として、「待機」、「実行中」のいずれかを取り、初期値として「待機」が設定される。正常異常種別a5は、現在インスタンスが正常処理実行中か、または、なんらかの障害が発生したため、異常処理実行中かを示し、初期値として「正常」が設定される。

0041

また、このシナリオ制御システム100では、図5に示すテーブル(カレントインスタンス管理テーブル)に、コンテキストIDとインスタンスIDとの対応付けを保存する。ここに、各コンテキストは、現在実行中のインスタンスIDに参照するための情報を格納し、プロキシとして動作する。つまり、シナリオ制御プログラム104にアクセスするプログラムは、そのコンテキストIDをキーとしてアクセスすることで、常に現在実行中のインスタンス情報にアクセス可能となる。

0042

シナリオ制御プログラム104は、シナリオ・リポジトリ122よりそのシナリオに関する情報を取得し、一番最初に実行する状態を取得する。その後、インスタンス情報テーブルにシナリオ名とその状態名を書き込む。図3の例の場合、シナリオ名としてF1、状態名としてS1が、それぞれインスタンス情報テーブルに書き込まれる。また、シナリオ制御プログラム104は、図6に示すテーブル(親子シナリオ管理テーブル)に、シナリオの親子関係を記述する。最上位シナリオ生成時は、この処理は行わない。

0043

また、シナリオ制御プログラム104は、履歴管理プログラム107にインスタンスIDを渡して本初期状態SIに対する実行履歴要素の作成を要求し、結果として、実行履歴要素に付与された通番を取得する。この段階で、シナリオ制御プログラム104は、図7に示すテーブル(履歴管理テーブル)に、インスタンスID、通番のみを書き込む。また、図8に示すテーブル(カレント通番位置管理テーブル)は、最後に書き込んだ履歴通番を保持するテーブルであり、シナリオ制御プログラム104は、この段階で、インスタンスIDに対応させて通番1を書き込む。

0044

(4)シナリオ実行
受信アダプタ102は、シナリオ実行要求として、コンテキストIDと、サーバ130の処理結果や要求を含むメッセージとをシナリオ制御プログラム104に送信する。

0045

一方、このシナリオ実行要求を受けたシナリオ制御プログラム104は、カレント・インスタンス管理テーブルから、コンテキストIDをキーにして、現在実行中のインスタンスIDを取得する。また、シナリオ制御プログラム104は、このインスタンスIDをキーとして、今度は、インスタンス情報テーブルからシナリオ実行情報を取得し、現在の実行状態を調べる。実行状態が「待機」以外である場合、エラーを返却したり、その実行要求メッセージキューの最後尾にまわす等の処理が考えられる。ここで、図9を参照して、実行状態が「待機」である場合のシナリオ制御プログラム104の動作を説明する。

0046

a.まず、受信したメッセージが障害情報を含むものであるか判定する(ステップA1)。このメッセージが障害情報を含むものである場合は、処理の失敗を表し、トランザクションのロールバック契機となる。

0047

b.障害情報を含むものである場合(ステップA1のYES)、インスタンス実行情報テーブルの正常異常種別を「異常」に書き換える(ステップA2)。

0048

c.インスタンス実行情報テーブルの正常異常種別が「異常」の場合(ステップA3のNO)、打消処理を実行する(ステップA4)。この打消処理の詳細は後述する。

0049

d.カレント通番位置管理テーブルを参照し、現在のインスタンスIDに対応した通番Nを取得する。そして、履歴管理テーブルの現在のインスタンスID、通番=Nの行にメッセージを書き込む(ステップA5)。

0050

e.シナリオリポジトリ122から該当するシナリオFを取得し、そのシナリオFの記述に従って、メッセージを評価し、条件分岐などの処理を行う。この結果、次に実行するべき状態名が決定する。そして、この状態名をインスタンス情報テーブルに書き込むと共に、現在の履歴通番位置に対し、シナリオ名、状態名を書き込む(ステップA6)。

0051

f.選択した次状態が、本シナリオの終了を示し、親シナリオへの復帰を表すものである場合(ステップA7のYES)、親インスタンスに対し、フローの終了を通知する。この時、通知された親シナリオの実行情報テーブルの実行状態を「待機」に変更し、また、コンテキストIDに対応したインスタンスIDを親インスタンスIDのものに変更する。そして、コンテキストIDに対し、子シナリオからの処理結果を送信し、本処理を終了する(ステップA8)。ただし、本シナリオが最上位のシナリオである場合(親が存在しない場合)、この処理は行わない。

0052

g.履歴管理プログラム107に対し、インスタンスIDを渡し、本実行状態に対する実行履歴要素の作成を要求し、結果として、実行履歴要素に付与された通番を取得する(ステップA9)。この段階で、履歴管理テーブルには、インスタンスID、通番のみが書き込まれる。

0053

h.シナリオ実行情報テーブルをインスタンスIDをキーにして検索し、シナリオの名前F、状態名Sを取得する(ステップA10)。

0054

i.シナリオの記述情報から該当するシナリオF内の状態名Sで指し示される状態に対応するプログラム識別子を取得する(ステップA11)。

0055

j.インスタンスID、通番情報をキーとして、メッセージを実行履歴要素に書き込む(ステップA12)。

0056

k.コンテキストID、インスタンスID、通番情報、プログラム識別子、メッセージを引数として、アクティビティ実行プログラムを起動する(ステップA13)。

0057

なお、履歴管理テーブルにおいて通番とは、アクティビティの実行順序を管理する番号であり、インスタンスIDに対して一意な番号であり、データには、上記要求メッセージや応答メッセージ、打消処理を実行するに際して必要な情報等が書き込まれる。

0058

(5)アクティビティ実行
シナリオ制御プログラム104は、プログラム識別子をアクティビティ管理プログラム106に渡し、具体的なアクティビティ情報を取得する。

0059

シナリオ制御プログラム104は、実行するプログラムが、「シナリオ起動」の場合、以下の処理を行う。

0060

a.シナリオ起動処理で記述した処理を起動し、子シナリオのインスタンスIDを結果として取得する。

0061

b.インスタンスIDと、子シナリオのインスタンスIDの対応関係を親子シナリオ管理テーブルに書き込む。

0062

c.履歴管理プログラム107に、(親)インスタンスID、通番、子のインスタンスIDを入力として渡し、親の履歴情報要素に対し、子インスタンスIDを参照するための情報を書き込む。

0063

d.シナリオ制御プログラムに対し、実行要求を送信する。

0064

なお、実行するプログラムが、送信アダプタ105の場合、送信アダプタ105を起動する。この場合、応答メッセージを取得する場合もある。

0065

以上の処理の結果、図3に示すシナリオF2において、たとえばS23実行中における履歴管理テーブルは、図10に示す通りとなる。図示のように、処理の実行が完了していない(インスタンスID、通番)=(1,1),(2,3)の実行履歴情報要素に対するシナリオ名、状態名は空値になっている。

0066

(6)障害発生時の処理
次に、図3に示すシナリオF2の状態S23に関連付けられたアクティビティ実行中、たとえば通信障害等の障害が発生した場合にシナリオ制御プログラム104が実行する打消処理の動作を図11を用いて説明する。

0067

なお、障害情報を含むメッセージは、サーバ130からメッセージとして、送信アダプタ105、受信アダプタ102に通知される。通信障害等の場合は、例外情報を含むメッセージをアダプタが生成する場合もある。アダプタは、シナリオ制御プログラム104に該障害情報を含むメッセージを送信する。以下、障害情報を含むメッセージを単に例外と呼ぶ。そして、例外は、トランザクション処理中の失敗を表し、トランザクション処理のロールバック契機となる。

0068

前述したように、例外が通知された場合、シナリオ制御プログラム104は、インスタンス情報テーブルの正常異常種別を「異常」に変更し、打消処理を実行する(図9のステップA1〜A4)。そして、この時、シナリオ制御プログラム104は、インスタンスID(Fid)の打消処理を行う打消処理制御プログラム108を起動する。

0069

打消処理制御プログラム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に対する打消処理が起動される。

0076

このように、このシナリオ制御システム100においては、従来のように、履歴情報に従い一つずつ打消処理を起動することに代え、一括してある処理群束ねて、それらに対して一括打消処理を起動することが可能となる。もちろん、処理群の途中で障害が発生した場合には、従来と同様、履歴による打消し処理も可能である。

0077

その理由は、従来のように、実行履歴の管理を一次元のリスト構造で管理するのではなく、入れ子トランザクションの実現のために、各処理の履歴情報に付いて、子履歴情報を参照するための情報を持たせることにより、履歴情報を階層的に管理することを可能とし、一連の処理群を束ねて管理できるようにして、一括打消しの範囲を管理できるようになったからである。

0078

なお、本願発明は、前記実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。更に、前記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出され得る。たとえば、実施形態に示される全構成要件から幾つかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除された構成が発明として抽出され得る。

発明の効果

0079

以上のように、この発明によれば、入れ子トランザクションにおける親と子のトランザクションの履歴情報を関連付けることにより、まず、親のトランザクションにおける障害時に、子のトランザクションまで遡って打消処理を実行することを可能とする。

0080

そして、この発明は、これら履歴情報を階層的に管理することにより、トランザクション区間を階層的に設定可能とする。すなわち、このトランザクション区間に対して打消処理を関連付けることにより、一括して処理の打消しを行えるようにし、起動する打消処理の数を削減して、処理効率の向上を実現する。

図面の簡単な説明

0081

図1この発明の実施形態に係るシナリオ制御システムの構成を示す図。
図2同実施形態のシナリオ制御システムにおける一括した打消処理の概要を説明するための概念図。
図3同実施形態において使用する業務処理手順を記述したシナリオの例。
図4同実施形態のシナリオ制御システムが備えるインスタンス情報テーブルを示す図。
図5同実施形態のシナリオ制御システムが備えるカレント・インスタンス管理テーブルを示す図。
図6同実施形態のシナリオ制御システムが備える親子シナリオ管理テーブルを示す図。
図7同実施形態のシナリオ制御システムが備える履歴管理テーブルを示す図。
図8同実施形態のシナリオ制御システムが備えるカレント通番位置管理テーブルを示す図。
図9同実施形態のシナリオ制御システムにおいて実行状態が「待機」である場合のシナリオ制御プログラムの動作手順を示すフローチャート
図10図3に示すシナリオF2において、S23実行中における履歴管理テーブルを示す図。
図11図3に示すシナリオF2の状態S23に関連付けられたアクティビティ実行中に障害が発生した場合にシナリオ制御プログラムが実行する打消処理の動作を説明するためのフローチャート。
図12従来の打消処理の概要を説明するための概念図。

--

0082

100…シナリオ制御システム
101…要求受付プログラム
102…受信アダプタ
103…メッセージ管理プログラム
104…シナリオ制御プログラム
105…送信アダプタ
121…シナリオ管理用DBMS
122…シナリオリポジトリ
130…サーバ

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

関連する挑戦したい社会課題

関連する公募課題

ページトップへ

技術視点だけで見ていませんか?

この技術の活用可能性がある分野

分野別動向を把握したい方- 事業化視点で見る -

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

新着 最近 公開された関連が強い技術

  • みずほ情報総研株式会社の「 影響調査システム、影響調査方法及び影響調査プログラム」が 公開されました。( 2019/09/19)

    【課題】複数の情報処理が実行されるシステム内で利用される情報の影響範囲を予測するための影響調査システム、影響調査方法及び影響調査プログラムを提供する。【解決手段】影響調査システム20の制御部21が、ジ... 詳細

  • 三菱電機株式会社の「 制御システム」が 公開されました。( 2019/09/19)

    【課題】センサ構成の変更、制御プログラムの更新等によって処理負荷が増大する状況に確実に対応することができる制御システムを提供する。【解決手段】車両制御システム100は、既設ECU101に対して新設20... 詳細

  • 富士通株式会社の「 制御方法、情報処理装置および制御プログラム」が 公開されました。( 2019/09/12)

    【課題】利用者は、物理マシンを使いたいときに使いたいスペック、機種の物理マシンを使うことが可能となる。【解決手段】情報処理装置1は、物理マシンの使用要求を受け付けると、記憶部に記憶された物理マシンと予... 詳細

この 技術と関連性が強い人物

関連性が強い人物一覧

この 技術と関連する社会課題

関連する挑戦したい社会課題一覧

この 技術と関連する公募課題

関連する公募課題一覧

astavision 新着記事

サイト情報について

本サービスは、国が公開している情報(公開特許公報、特許整理標準化データ等)を元に構成されています。出典元のデータには一部間違いやノイズがあり、情報の正確さについては保証致しかねます。また一時的に、各データの収録範囲や更新周期によって、一部の情報が正しく表示されないことがございます。当サイトの情報を元にした諸問題、不利益等について当方は何ら責任を負いかねることを予めご承知おきのほど宜しくお願い申し上げます。

主たる情報の出典

特許情報…特許整理標準化データ(XML編)、公開特許公報、特許公報、審決公報、Patent Map Guidance System データ