(57)【要約】【課題】不特定多数の管理主体が存在している場合にも、ＴＩＤの唯一性を保証し、トランザクションの隔離性を確保しつつ、トランザクション処理を行うこと。【解決手段】オブジェクト101、111、121、131を個々に管理する複数のトランザクションマネージャ102、112、122、132を備える。トランザクションマネージャが、他トランザクションマネージャから受け付けた処理要求メッセージ毎に、処理要求メッセージの処理順序情報を保持した唯一性のある受付ＩＤを発行し、トランザクションを開始したオブジェクトを管理しているトランザクションマネージャが、受付ＩＤを含んだ処理要求メッセージに対する処理結果の情報を収集し、収集した処理要求メッセージに対する処理結果の情報からトランザクションＩＤの重複を検出する。【選択図】図１
2007272363.tif 000002
【特許請求の範囲】
【請求項１】
オブジェクトを個々に管理する複数のトランザクションマネージャを備え、複数の管理主体をまたがってトランザクションを処理するトランザクション処理方法であって、トランザクションを開始したオブジェクトを管理している送信元トランザクションマネージャから処理要求を受けた送信先トランザクションマネージャが、前記送信元トランザクションマネージャから受け付けた処理要求メッセージ毎に、処理要求メッセージの処理順序情報を保持した唯一性のある受付ＩＤを発行し、前記送信元トランザクションマネージャが、処理要求メッセージに対する受付ＩＤを含んだ処理結果の情報を収集し、収集した処理要求メッセージに対する処理結果の情報からトランザクションＩＤの重複を検出することを特徴とするトランザクション処理方法。
【請求項２】
前記送信元トランザクションマネージャがトランザクションの処理順序に基づいて枝番を発行し、送信先トランザクションマネージャがその枝番に基づいて適切な順序により処理を行うことを特徴とする請求項１記載のトランザクション処理方法。
【請求項３】
前記送信元トランザクションマネージャが、処理要求メッセージ毎の枝番と実際の処理順序とを含んだ処理要求メッセージに対する処理結果の情報を収集し、収集した処理要求メッセージに対する処理結果の情報から補償トランザクションの処理順序を決定することを特徴とする請求項２記載のトランザクション処理方法。
【請求項４】
オブジェクトを個々に管理する複数のトランザクションマネージャを備え、複数の管理主体をまたがってトランザクションを処理するトランザクション処理システムであって、トランザクションマネージャは、トランザクションを開始したオブジェクトを管理している送信元トランザクションマネージャから受け付けた処理要求メッセージ毎に、処理要求メッセージの処理順序情報を保持した唯一性のある受付ＩＤを発行する手段と、送信元となったとき、トランザクションを開始するオブジェクトを管理して、処理要求メッセージに対する受付ＩＤを含んだ処理結果の情報を収集する手段と、収集した処理要求メッセージに対する処理結果の情報からトランザクションＩＤの重複を検出する手段とを有することを特徴とするトランザクション処理システム。
【請求項５】
前記トランザクションマネージャは、送信元となったとき、トランザクションの処理順序に基づいて枝番を発行する手段と、送信先となったとき、その枝番に基づいて適切な順序により処理を行う手段と有することを特徴とする請求項４記載のトランザクション処理システム。
【請求項６】
トランザクションを開始したオブジェクトを管理しているトランザクションマネージャは、処理要求メッセージ毎の枝番と実際の処理順序とを含んだ処理要求メッセージに対する処理結果の情報を収集する手段と、収集した処理要求メッセージに対する処理結果の情報から補償トランザクションの処理順序を決定する手段とを有することを特徴とする請求項５記載のトランザクション処理システム。
【請求項７】
第一乃至第三のオブジェクトをそれぞれ管理する第一乃至第三のトランザクションマネージャを備えるシステムにおけるトランザクション処理方法において、
前記第一のオブジェクトは、前記第二のオブジェクトを介して前記第三のオブジェクトを呼び出す際、前記第一のトランザクションマネージャにトランザクションＩＤの発行を要求し、
前記第一のトランザクションマネージャは、前記第一のオブジェクトの要求に応じて前記トランザクションＩＤを発行し、前記第二のトランザクションマネージャに対して前記トランザクションＩＤを含む第一のメッセージを送信し、
前記第二のトランザクションマネージャは、前記第一のメッセージに第一の受付ＩＤを付加した第二のメッセージを前記第三のトランザクションマネージャに送信し、
前記第三のトランザクションマネージャは、前記第二のメッセージに第二の受付ＩＤを付加した第三のメッセージを前記第二のトランザクションマネージャに送信し、
前記第二のトランザクションマネージャは、前記第三のメッセージに第三の受付ＩＤを付加した第四のメッセージを前記第一のトランザクションマネージャに送信し、
前記第一のトランザクションマネージャは、前記第一乃至第三の受付ＩＤに基づいて、トランザクション処理の順序が正しいか否かをチェックし、前記チェックの結果を前記第二のトランザクションマネージャに送信し、
前記第二のトランザクションマネージャは、前記チェックの結果を前記第三のトランザクションマネージャに転送し、
前記第三のトランザクションマネージャは、前記チェックの結果をチェックする、トランザクション処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、金融、流通、産業等の企業内連携、あるいは、企業間連携のための管理主体をまたがるトランザクション処理システムに関する。
【背景技術】
【０００２】
トランザクション処理システムは、トランザクションと呼ぶ処理の流れを単位として処理の実行を管理するシステムである。
【０００３】
ここで、複数のトランザクションマネージャ（以下、ＴＭという）にまたがるトランザクションの処理を、全てのＴＭ間で唯一性のあるトランザクションＩＤ（以下、ＴＩＤという）をトランザクションに付与することにより行い、分岐したトランザクションが他オブジェクトにより再度合流する場合、ガード条件を付与することにより、トランザクションの隔離性を確保する技術がある（非特許文献１参照）。ここで、隔離性を確保するとは、複数のトランザクションを同時に実行する場合に、それらが互いに影響を与えずに、１つずつ順番に実行しているかのようにして実行することである。また、ガード条件とは、真でなければ遷移が発生しない条件のことであり、例えば、ある処理が終了するまで、次の処理を開始しないというガード条件を付与することで、トランザクションの処理順序の逆転を防ぎ、隔離性を確保することができる。
【０００４】
また、異なるベンタのＴＭを連携させる場合におけるwebサービス標準化技術において、ＴＩＤをＴＭ間でやりとりするためのフレームワークを提供する技術がある（非特許文献２参照）。
【非特許文献１】トランザクション処理  概念と技法、ジムクレイ著、2001、日経BP社
【非特許文献２】WS-Transaction 仕様書http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnglobspec/html/ws-transaction.asp、2002
【発明の開示】
【発明が解決しようとする課題】
【０００５】
非特許文献１によれば、全てのＴＭを同一の管理者が管理し、その管理者がトランザクション処理全体の流れを把握できるという条件が必要である。なぜなら、全てのＴＭを同一の管理者が管理していなければ、ＴＭの発行したＴＩＤの唯一性があるかを保証する、及びガード条件を作成することが困難だからである。ここで、ＴＩＤの唯一性とは、ＴＭの発行した各トランザクションに発行したＴＩＤがただ一つだけで、それ以外には存在しないことである。たとえ、ｍａｃアドレスやＩＰアドレスを利用したとしても、送信元ＴＭのなりすましや間違ってＴＩＤが付与された場合に対応することができない。
【０００６】
一方、非特許文献２によれば、複数の管理者間で事前に綿密にお互いの管理しているＴＭ、ＤＢ、ＡＰサーバ等のリソースとその挙動について打ち合わせておくことで、問題を解決している。しかしながら、近年、注目されているＳＯＡ(Service Oriented Architecture)は、不特定多数の管理主体、例えば、組織等とシステム連携し、さらに、それぞれの組織の提供しているオブジェクトの呼び出しを動的に変更できることが期待されている。従って、非特許文献２によれば、綿密に連携している管理主体の管理しているオブジェクトしか利用することができないため、ＳＯＡで期待されている不特定多数の管理主体とのシステム連携を実現することが困難である。尚、管理主体とは、オブジェクトやリソースの管理責任者のことであり、管理しているオブジェクトやリソースの詳細な情報（オブジェクトを構成しているリソース、リソースの物理位置など）を全て把握しているものとする。また、異なる管理主体で管理されているサービスやリソースに関する詳細な情報は、参照できないものとする。
【０００７】
本発明の目的は、前述したような点に鑑み、不特定多数の管理主体が存在している状況下においても、ＴＩＤの唯一性を保証し、トランザクションの処理順序を制御することにより、トランザクションの隔離性を確保しつつ、トランザクション処理を行うことができるトランザクション処理システムを提供することにある。
【課題を解決するための手段】
【０００８】
本発明によれば前記目的は、オブジェクトを個々に管理する複数のＴＭを備え、複数の管理主体をまたがってトランザクションを処理するトランザクション処理方法であって、トランザクションを開始したオブジェクトを管理している送信元ＴＭから処理要求を受けた送信先ＴＭが、前記送信元ＴＭから受け付けた処理要求メッセージ毎に、処理要求メッセージの処理順序情報を保持した唯一性のある受付ＩＤを発行し、前記送信元ＴＭが、処理要求メッセージに対する受付ＩＤを含んだ処理結果の情報を収集し、収集した処理要求メッセージに対する処理結果の情報からトランザクションＩＤの重複を検出することにより達成される。
【０００９】
また、前記目的は、オブジェクトを個々に管理する複数のＴＭを備え、複数の管理主体をまたがってトランザクションを処理するトランザクション処理システムであって、ＴＭが、トランザクションを開始したオブジェクトを管理している送信元ＴＭから受け付けた処理要求メッセージ毎に、処理要求メッセージの処理順序情報を保持した唯一性のある受付ＩＤを発行する手段と、送信元となったとき、トランザクションを開始するオブジェクトを管理して、処理要求メッセージに対する受付ＩＤを含んだ処理結果の情報を収集する手段と、収集した処理要求メッセージに対する処理結果の情報からトランザクションＩＤの重複を検出する手段とを有することにより達成される。
【発明の効果】
【００１０】
本発明によれば、複数の管理主体にまたがるトランザクションにおいて、トランザクションの隔離性を確保しつつ、トランザクション処理を行うことができ、不特定多数の管理主体が存在している状況下においても、トランザクションの処理を行うことが可能となる。
【発明を実施するための最良の形態】
【００１１】
以下、トランザクション処理システムの実施形態を図面により詳細に説明する。
【００１２】
本稿は、送信先ＴＭによるＴＩＤ重複チェックにより、ＴＩＤの唯一性を保証し、さらに、枝番管理によるトランザクション処理順序制御を用いてトランザクションの処理順序を制御することにより、複数の管理主体にまたがるトランザクションにおける隔離性を確保するものである。
【００１３】
図１は、トランザクション処理システムの構成図である。
【００１４】
トランザクション処理システムは、複数の計算機１、２、３、４とからなり、これらはネットワーク等を介して接続される。
【００１５】
計算機１は、ＣＰＵ１０、メインメモリ１１、記憶装置１２、入力装置１３、出力装置１４、及び通信インタフェース１５とからなり、これらは内部バス等により接続される。
【００１６】
ＣＰＵ１０は、記憶装置１２に格納されているプログラムをメインメモリ１１に読み込み、実行することにより、種々の処理を行う。
【００１７】
記憶装置１２は、オブジェクト１０１、ＴＭ１０２、トランザクションの処理順序を制御するための枝番管理部１０３、ＴＩＤの重複を検出するためのＴＩＤ重複検出部１０４、他のＴＭを介したオブジェクト呼び出し時のメッセージを管理するための受付メッセージ管理部１０５などのプログラム、及び受付メッセージ管理テーブル１０６を格納している。
【００１８】
計算機２、３、４については、計算機１とハードウェア構成は同様であるため、図示は省略している。但し、プログラムやテーブルについては、それぞれの計算機毎に別の符号を割り当てている。尚、図１では、計算機１〜４のように、別々の計算機が各々情報を格納しているように記載しているが、これらの情報を同一の計算機が所有し、同一の計算機内で処理が行われる形態であってもよい。
【００１９】
以下、簡単のため、プログラムが行為主体であるかのように説明するが、実際の行為主体は、プログラムを実行するＣＰＵであることはいうまでもない。
【００２０】
図１において、オブジェクト１０１、１１１、１２１、１３１が存在し、それぞれのオブジェクトをＴＭ１０２、１１２、１２２、１３２がそれぞれ管理しているものとする。ここで、ＴＭ１０２、１１２、１２２、１３２の管理主体は全て異なるものとする。また、オブジェクト１０１がトランザクションを開始し、その後、オブジェクト１０１がオブジェクト１１１、１２１を呼び出し、さらに、オブジェクト１１１、１２１それぞれがオブジェクト１３１を呼び出すものとする。
【００２１】
図２は、受付メッセージ管理テーブルを示す図である。本テーブルは、他のＴＭを介したオブジェクトの呼び出し時のメッセージを管理するためのもので、メッセージのＴＩＤ２０１、メッセージに付与されていた枝番２０２、及びメッセージを取得したＴＭが発行した順序性のある受付ＩＤ２０３とからなる。
【００２２】
図３は、複数の管理主体にまたがるトランザクション処理のフロー図である。ここでは、オブジェクト１０１がトランザクションを開始したものとする。
【００２３】
（１）オブジェクト１０１は、トランザクションを開始すると、ＴＭ１１２が管理しているオブジェクト１１１と、ＴＭ１２２が管理しているオブジェクト１２１とを呼び出して処理を要求する。オブジェクト１１１、１２１の呼び出し処理に関して、ここでは、オブジェクト呼び出し処理を並列化するか、あるいは、キューを介して非同期にオブジェクト間を連携させているものを想定している。このことは、オブジェクト１１１、１２１の処理順序が逆転する可能性のあることを意味している。尚、オブジェクトの呼び出し処理を全て直列化することが可能であれば、処理順序は逆転しないため、後述する枝番管理を行う必要はなくなる。しかし、全てのオブジェクトの呼び出しを直列化することは、処理性能面を考慮すると現実的ではない。そのため、トランザクション処理全体の流れを把握できる管理者がオブジェクト呼び出しを並列化してよいのか、直列化すべきなのかを事前に判断し、あるいは、後述する枝番管理が必要となる（ステップ３０１〜３０３）。
【００２４】
（２）オブジェクト１０１から呼び出されて処理を要求されたオブジェクト１１１、１２１は、それぞれ、オブジェクト１３１を呼び出し、処理を要求する。この際、オブジェクト１３１の呼び出しが、オブジェクト１１１からの呼び出しが先か、オブジェクト１２１からの呼び出しが先かは、ステップ３０２、３０３の場合と同様に不明である（ステップ３０４、３０５）。
【００２５】
（３）オブジェクト１３１は、ステップ３０４、３０５でのオブジェクト１１１、１２１からの処理要求に対してその処理を行い、処理結果をそれぞれに対して返答する（ステップ３０６、３０７）。
【００２６】
（４）ステップ３０６、３０７の返答により、オブジェクト１３１からの処理結果を取得したオブジェクト１１１、１２１は、処理結果をオブジェクト１０１に返答する（ステップ３０８、３０９）。
【００２７】
（５）オブジェクト１０１は、処理要求を行った全てのオブジェクトから処理結果が返答された後、そのトランザクションをコミットするか、アボートするかを決定し、決定した結果をオブジェクト１１１、１２１に送信する（ステップ３１０〜３１２）。ここで、コミットとは、処理を成功と判断して結果を反映させることであり、アボートとは、処理を失敗と判断して結果を反映させないことである。
【００２８】
（６）ステップ３１１、３１２で、オブジェクト１０１からコミットもしくはアボートの決定を通知されたオブジェクト１１１、１２１は、それぞれオブジェクト１３１にコミットあるいはアボートの決定を伝播する。その後、全てのオブジェクトは、伝播された結果に従って処理を終了する（ステップ３１３、３１４）。
【００２９】
図４は、ＴＭ間で授受されるメッセージを示す図、図５は、受付メッセージ管理テーブルの詳細を示す図である。
【００３０】
ステップ３０１において、オブジェクト１０１は、処理を開始する際、ＴＭ１０２にＴＩＤの発行を要求してＴＩＤを取得する。ここでは、ＴＩＤ＝１０が発行されたものとする。尚、オブジェクト１０１がＴＭ１０２の管理しているオブジェクトやリソースマネージャにアクセスする場合、それぞれのオブジェクトやリソースマネージャは、ＴＭにトランザクション参加要求を行い、同一のトランザクションであることを意識して処理を行う。
【００３１】
ステップ３０２において、オブジェクト１０１がＴＭ１１２の管理しているオブジェクト１１１を呼び出す場合、ＴＭ１０２、１１２間で連携することにより、オブジェクト１０１、１１１は、それぞれ、同一のトランザクションであることを意識して処理を行う。その際、ＴＭ１０２がＴＭ１１２に送信するメッセージの構成は、図４（ａ）に４０１として示すようなものとなる。このメッセージ４０１は、ＴＭ１０２の発行したＴＩＤ４０２、枝番管理部１０４で発行される枝番４０３、メッセージ本文４０４とからなる。ここで、枝番４０３は、ＴＭ１０２が管理しているオブジェクトが他ＴＭの管理しているオブジェクトを呼び出す毎にカウントアップされるものとする。ここでは、ＴＩＤ４０２には、ＴＭ１０２が発行した“１０”、枝番４０３には、他ＴＭの管理しているオブジェクトの中で初めて呼び出されたオブジェクトであることを示す“１”が格納される。
【００３２】
次に、ＴＭ１１２は、オブジェクト１１１を呼び出すことになるが、その際、受付メッセージ管理部１１５が受付メッセージ管理テーブル１１６のレコードを追加する。この場合の受付メッセージ管理テーブル１１７に追加されるレコードの構成は、図５（ａ）に５０１として示すようなものとなる。追加されるレコード５０１は、受信したメッセージ４０１に格納されていたＴＩＤ５０２、メッセージに格納されていた枝番５０３、受付メッセージ管理部１１６が発行した受付ＩＤ５０４とからなる。尚、受付ＩＤ５０４は、ＴＭ１１２が処理したメッセージの順序性を保持しているものとする。即ち、受付ＩＤを比較することにより、どちらのメッセージをＴＭが先に処理したかが判るように受付ＩＤを発行しているものとする。ここでは、受付ＩＤは、ＴＭ１１２にとって初めての処理であることを示す“１”が格納される。その後、ＴＭ１１２はオブジェクト１１１を呼び出す。
【００３３】
ステップ３０３において、オブジェクト１０１がＴＭ１２２の管理しているオブジェクト１２１を呼び出す場合も、前述したステップ３０２の場合と同様の処理となる。ＴＭ１０２がＴＭ１２２に送信するメッセージ構成は、図４（ｂ）に４１１として示すようなものとなる。ここでは、ＴＩＤ４１２には、ＴＭ１０２が発行した“１０”、枝番４１３には、他ＴＭの管理しているオブジェクトの中で２番目の処理であることを示す“２”が格納される。また、この場合、追加される受付メッセージ管理テーブル１２６のレコード構成は、図５（ｂ）に５１１として示すようなものとなる。ここでは、受付ＩＤ５１４は、ＴＭ１２２にとって初めての処理であることを示す“１”が格納される。
【００３４】
ステップ３０４において、オブジェクト１１１がＴＭ１３２の管理しているオブジェクト１３１を呼び出す場合のメッセージの構成は、図４（ｃ）に４２１として示すようなものとなる。ここでは、ＴＩＤ４２２には、ＴＭ１０２が発行した“１０”、枝番４２３には、ＴＭ１０２が付与した“１”に加えて、ＴＭ１１２が新たに発行した“１”が格納される。
【００３５】
ステップ３０５において、オブジェクト１２１がＴＭ１３２の管理しているオブジェクト１３１を呼び出す場合のメッセージの構成は、図４（ｄ）に４３１として示すようなものとなる。ここでは、ＴＩＤ４３２には、ＴＭ１０２が発行した“１０”、枝番４３３には、ＴＭ１０２の付与した“２”に加えて、ＴＭ１２２が新たに発行した“１”が格納される。
【００３６】
図６は、図３におけるステップ３０４、３０５の処理で処理要求を受けたＴＭ１３２がオブジェクト１３１を呼び出す処理のフロー図である。尚、ステップ３０２、３０３の処理で処理要求を受けたＴＭ１１２、１２２がオブジェクト１１１、１２１を呼び出す処理についても、図６のフロー図と同様である。
【００３７】
（１）ＴＭ１３２の受付メッセージ管理部１３５は、受付メッセージ管理テーブル１３６に格納されているレコード内のＴＩＤを参照し、受け付けたメッセージのＴＩＤと同一のＴＩＤを持つレコードが存在するか否かを確認する（ステップ６０１）。
【００３８】
（２）ステップ６０１の確認で、同一のＴＩＤを持つレコードが存在しなかった場合、受付メッセージ管理部１３５は、受付メッセージ管理テーブル１３６にレコードを追加し、ＴＭ１３２がオブジェクト１３１を呼び出す（ステップ６０２）。
【００３９】
（３）ステップ６０１において、同一のＴＩＤを持つレコードが存在した場合、受付メッセージ管理部１３５は、同一のＴＩＤを持つレコードの枝番を参照し、受け付けたメッセージの枝番との整合性を確認する。ここで、整合性があるとは、レコードの枝番が受け付けたメッセージの枝番より小さいことである。逆に、整合性がないとは、レコードの枝番が受け付けたメッセージの枝番より大きいことである。尚、枝番の大小判定は、枝番の先頭値の大小により判定される。但し、枝番の先頭値が同じであれば、次の値の大小により判定される（ステップ６０３）。
【００４０】
（４）ステップ６０３において、枝番に整合性があった場合、このメッセージ処理を行っても、トランザクションの隔離性を確保することができるため、受付メッセージ管理部１３５は、受付メッセージ管理テーブル１３６にレコードを追加し、ＴＭ１３２がオブジェクト１３１を呼び出す（ステップ６０４）。
【００４１】
（５）ステップ６０３において、枝番に整合性がなかった場合、メッセージの処理順序が逆転してしまうため、トランザクションの隔離性を確保するためには、処理を実施することはできない。そのため、ＴＭ１３２は、隔離性が確保できないというエラーメッセージを付与し、トランザクションをアボートさせる。あるいは、オブジェクト１３１を呼び出し、処理結果返答時に、処理順序が逆転したという警告メッセージを付与させてもよい（ステップ６０５）。
【００４２】
次に、図６により説明した処理の例に沿って、オブジェクト１１１がオブジェクト１２１より先にオブジェクト１３１を呼び出した場合とオブジェクト１２１がオブジェクト１１１より先にオブジェクト１３１を呼び出した場合とについて説明する。
【００４３】
オブジェクト１１１がオブジェクト１２１より先にオブジェクト１３１を呼び出した場合、受付メッセージ管理部１３５は、オブジェクト１１１からの呼び出しに対し、受付メッセージ管理テーブル１３６を参照する。この場合、同一のＴＩＤを持つレコードが存在しないため、受付メッセージ管理部１３５は、受付メッセージ管理テーブル１３６にレコード５２１を追加し、ＴＭ１３２は、オブジェクト１３１を呼び出す。追加されるレコード５２１の構成は、図５（ｃ）の上段に示すようなものとなる。ここでは、ＴＩＤには、ＴＭ１０２が発行した“１０”、枝番には、ＴＭ１０２が付与した“１”に加えて、ＴＭ１３２が新たに発行した“１”が格納される。また、受付ＩＤには、ＴＭ１３２にとって初めての処理であることを示す“１”が格納される。
【００４４】
次に、オブジェクト１２１からの呼び出しに対し、ＴＭ１３２は、同様に、受付メッセージ管理部１３５が受付メッセージ管理テーブル１３６を参照する。この場合、同一のＴＩＤを持つレコード５２１が存在するため、レコード５２１の枝番と受け付けた呼び出しメッセージの枝番とを比較する。ここで、枝番の先頭値が、レコード５２１の枝番が“１”であるのに対して、オブジェクト１２１からのメッセージの枝番は“２”となっているので、整合性があることが判る。そのため、受付メッセージ管理部１３５は、受付メッセージ管理テーブル１３６にレコード５３１を追加し、ＴＭ１３２は、オブジェクト１３１を呼び出す。追加されるレコード５３１の構成は、図５（ｃ）の下段に示すようなものとなる。ここでは、ＴＩＤには、ＴＭ１０２が発行した“１０”、枝番には、ＴＭ１０２が付与した“２”に加えて、ＴＭ１３２が新たに発行した“１”が格納される。また、受付ＩＤには、ＴＭ１３２にとって２番目の処理であることを示す“２”が格納される。
【００４５】
オブジェクト１２１がオブジェクト１１１より先にオブジェクト１３１を呼び出した場合、受付メッセージ管理部１３５は、オブジェクト１２１からの呼び出しに対し、受付メッセージ管理テーブル１３６を参照する。この場合、同一のＴＩＤを持つレコードが存在しないため、受付メッセージ管理部１３５は、受付メッセージ管理テーブル１３６にレコード５４１を追加し、ＴＭ１３２は、オブジェクト１３１を呼び出す。追加されるレコード５４１の構成は、図５（ｄ）に示すようなものとなる。ここでは、ＴＩＤには、ＴＭ１０２が発行した“１０”、枝番には、ＴＭ１０２が付与した“２”に加えて、ＴＭ１３２が新たに発行した“１”が格納される。また、受付ＩＤには、ＴＭ１３２にとって初めての処理であることを示す“１”が格納される。
【００４６】
次に、オブジェクト１１１からの呼び出しに対し、ＴＭ１３２は、同様に、受付メッセージ管理部１３５が受付メッセージ管理テーブル１３７を参照する。この場合、同一のＴＩＤを持つレコード５４１が存在するため、レコード５４１の枝番と受け付けた呼び出しメッセージの枝番とを比較する。ここで、枝番の先頭値が、レコード５４１の枝番が“２”であるのに対して、オブジェクト１１１からのメッセージの枝番は“１”となっているので、整合性がないことが判る。そのため、ＴＭ１３２は、トランザクションをアボートするか、オブジェクト１３１は呼び出すが、処理順序が逆転しているという警告を処理結果に付与するかの処理を行う。このときに、受付メッセージ管理テーブル１３６に格納される情報は、図５（ｄ）の下段のようなものとなり、上段のものと比較することにより、処理順が逆転していることが判る。
【００４７】
図７は、図３により説明したステップ３０６から３０９において、ＴＭ１３２がオブジェクト１１１、１２１からの処理要求に対する処理結果の返答メッセージ、ＴＭ１１２、１２２がオブジェクト１０１からの処理要求に対する処理結果の応答メッセージのそれぞれに付与する情報７０５〜７０８の構成を示す図である。
【００４８】
ステップ３０６、３０７において、オブジェクト１３１は、処理結果のそれぞれを、オブジェクト１１１、１１２に返答する。その際、ＴＭ１３２は、それぞれの処理結果の返答メッセージに、その処理結果の返答メッセージに対応するＴＩＤ７０１、枝番７０２、受付ＩＤ７０３とそのレコードの唯一性を保証するためにＴＭ１３２の証明書７０４を付与する。ここで、証明書とは、ＴＭの唯一性を保証できるものであり、証明書と受付ＩＤとの複合キーにより、受付メッセージ管理テーブルのレコードの唯一性を保証できるものである。
【００４９】
ＴＭ１３２がＴＭ１１２への処理結果の返答メッセージに付与する情報７０５は、図７（ａ）に示すように、ＴＩＤ７０１には、ＴＭ１０２が発行した“１０”が、枝番７０２には、ＴＭ１０２が付与した“１”と、ＴＭ１３２が付与した“１”とが格納され、また、受付ＩＤ７０３には、ＴＭ１３２にとって初めての処理であることを示す“１”が格納される。さらに、証明書７０４には、「証明書ＴＭ１３２」が格納される。
【００５０】
ＴＭ１３２がＴＭ１２２への処理結果の返答メッセージに付与する情報７０６は、図７（ｂ）に示すように、ＴＩＤ７０１には、ＴＭ１０２が発行した“１０”が、枝番７０２には、ＴＭ１０２が付与した“２”と、ＴＭ１３２が付与した“１”とが格納され、また、受付ＩＤ７０３には、ＴＭ１３２が２番目に受け付けた処理であることを示す“２”が格納される。さらに、証明書７０４には、「証明書ＴＭ１３２」が格納される。
【００５１】
ステップ３０８、３０９において、オブジェクト１１１、１２１は、処理結果をそれぞれ、オブジェクト１０１に返答する。この際、ＴＭ１１２、１２１は、それぞれの処理結果返答メッセージに情報７０７、７０８を付与する。
【００５２】
ＴＭ１１２がＴＭ１０２への処理結果の返答メッセージに付与する情報７０７は、図７（ｃ）に示すように、ＴＩＤ７０１には、ＴＭ１０２が発行した“１０”が、枝番７０２には、ＴＭ１０２が付与した“１”が格納され、また、受付ＩＤ７０３には、ＴＭ１１２にとって初めての処理であることを示す“１”が格納される。さらに、証明書７０４には、「証明書ＴＭ１１２」が格納される。
【００５３】
ＴＭ１２２がＴＭ１０２への処理結果の返答メッセージに付与する情報７０８は、図７（ｄ）に示すように、ＴＩＤ７０１には、ＴＭ１０２が発行した“１０”が、枝番７０２には、ＴＭ１０２が付与した“２”が格納され、また、受付ＩＤ７０３には、ＴＭ１２２にとって初めての処理であることを示す“１”が格納される。さらに、証明書７０４には、「証明書ＴＭ１２２」が格納される。
【００５４】
ステップ３１０において、オブジェクト１０１は、処理結果返答メッセージを取得し、トランザクションのコミット、あるいは、アボートを判断する。その際、オブジェクト１０１は、処理結果返答メッセージに、隔離性が確保できないというエラーメッセージ、処理順序が逆転したという警告メッセージ等が付与されている場合のポリシーについて設定しておく必要がある。例えば、これらのエラー、警告メッセージがある場合、トランザクションをアボートする等である。尚、これらのエラー、警告メッセージが付与されていることにより、トランザクション処理全体を把握している管理者がいなくても、２回目以降のトランザクション処理について、直列化すべき処理がどれかを事前に判断することが可能となる。
【００５５】
また、オブジェクト１０１は、処理結果返答メッセージをＤＢなどに永続化しておくことにより、補償トランザクションの処理順序制御を適切に行うことが可能である。補償トランザクションとは、元々のトランザクションの効果を無効にするトランザクションのことをいい、コミットしたトランザクションを後からキャンセルする場合に利用される。この補償トランザクションとキャンセルしたいトランザクションとは１対１の関係ではなく、複数の補償トランザクションを行うことにより、１つのトランザクションをキャンセルするというパターンが存在する。例えば、オブジェクトの呼び出し毎に補償トランザクションが提供されている場合、複数のオブジェクト呼び出しを行っているトランザクションをキャンセルするために、それぞれの補償トランザクションを実行する等である。この場合、トランザクションをキャンセルする、即ち、初期状態に戻すためには、行った処理の逆順に補償トランザクションを行わなければいけない。しかし、本稿では、処理結果返答メッセージに格納されている枝番と処理順序とが逆転したという警告メッセージに基づき、トランザクション発行者であるオブジェクト１０１が、どのような順番で処理が行われていたかを判断することが可能である。そのため、オブジェクト１０１は、適切に補償トランザクションの処理順序を決定することが可能となる。
【００５６】
図８は、オブジェクト１０１がトランザクションをコミットと決定した際、コミット通知メッセージにＴＭ１０２が付与する情報の構成を示す図である。
【００５７】
オブジェクト１０１がトランザクションをコミットと決定し、オブジェクト１１１、１２１に通知する際、ＴＭ１０２は、それぞれの処理結果の返答メッセージに付与されていた情報を統合し、統合した情報をコミット通知メッセージに付与する必要がある。このコミット通知メッセージに付与する情報は、図８に示すようなもので、図７に示して説明した情報の全てを統合したものである。このような統合の処理が必要な理由は、異なるトランザクションのＴＩＤが重複しているかを送信先ＴＭ側、ここでは、ＴＭ１３２で判断するためである。この処理、もしくは、後述する第三者機関によるＴＩＤの唯一性保証処理を行わない場合、異なるＴＭが異なるトランザクションに同一のＴＩＤを付与した際に、トランザクションの隔離性が欠如するからである。
【００５８】
図９は、トランザクションの隔離性が欠如する場合の例について説明するトランザクション処理システムの構成図である。図９において、１４１はオブジェクト、１４２はＴＭであり、他の符号は図１の場合と同一である。
【００５９】
図９では、図１により説明した場合に加えて、オブジェクト１４１、ＴＭ１４２が存在しているものとする。そして、オブジェクト１４１が、前述までに説明した処理とは独立に、新たにトランザクションを開始し、このトランザクションがオブジェクト１３２を呼び出すものとする。さらに、ＴＭ１４２が、ＴＭ１０２が既に発行済みであるＴＩＤ=１０を発行したものとする。
【００６０】
この場合、ＴＭ１３２は、ＴＭ１０２、１４２のそれぞれが発行したＴＩＤが異なることを意識することができないため、オブジェクト１４１、１２１、１３１からの呼び出しを同一トランザクションとして処理してしまうため、結果としてトランザクションの隔離性を確保することができない。しかし、図８により説明した処理結果返答メッセージを統合した情報をコミット通知メッセージに付与してあれば、ＴＭ１３２は、コミット通知メッセージを取得した際に、ＴＩＤが重複しているか否かを確認することができるため、トランザクションの隔離性を確保することができる。
【００６１】
即ち、ＴＭ１３２は、ＴＭ１０２から図８に示すような統合した情報を受け取るが、ＴＭ１４２からの処理要求のＴＩＤが１０、受付ＩＤが３となっていると、図８に示すような統合した情報に受付ＩＤ３がないのにかかわらず、受付ＩＤ３でＴＩＤ１０を持つ要求があったことが判り、ＴＩＤの重複があると判断することができる。
【００６２】
図１０は、図３に示すステップ３１１、３１２の処理で、オブジェクト１０１が送信したコミット通知のメッセージをオブジェクト１１１、１２１が取得した際のＴＭ１１２、１２２のフロー図である。
【００６３】
（１）オブジェクト１０１が送信したコミット通知のメッセージを取得したＴＭ１１２、１２２内のＴＩＤ重複検出部１１４、１２４は、受付管理メッセージテーブル１１６、１２６を参照し、コミット通知のメッセージ内のＴＩＤ欄に該当する自身の発行した受付ＩＤが全て格納されているか否かを確認する（ステップ１００１）。
【００６４】
（２）ステップ１００１において、コミット通知のメッセージ内のＴＩＤ欄に受付ＩＤが全て格納してあれば、コミット通知のメッセージをオブジェクト１１１、１２１に送信する（ステップ１００２）。
【００６５】
（３）ステップ１００１において、コミット通知のメッセージ内のＴＩＤ欄に、格納しされていない受付ＩＤが存在していれば、送信元ＴＭにＴＩＤ重複エラーを返答し、トランザクションをアボートする（ステップ１００３）。
【００６６】
図３に示すステップ３１３、３１４において、オブジェクト１１１、１２１が送信したコミット通知のメッセージをオブジェクト１３１が取得した際のＴＭ１３２の処理も、前述した図１０に示すフローの場合と同様に行われ、ＴＭ１３２内のＴＩＤ重複検出部１３４は、ＴＩＤの重複検出を行い、重複がなければ、コミット処理を行う。
【００６７】
以上により、送信先ＴＭによるＴＩＤ重複チェックと枝番管理によるトランザクション処理順序制御とを用いることにより、トランザクションの隔離性を確保することができる。
【００６８】
図１１は、第三者機関（以下、ＣＡという）が存在するトランザクション処理システムの構成図である。
【００６９】
記憶装置１２は、オブジェクト１１０１、ＴＭ１１０２、枝番管理部１１０３、ＴＩＤの唯一性を保証するための証明書の発行要求やその証明書に対応する公開鍵の発行要求をＣＡ５に行うためのＣＡ通信部１１０４などのプログラム、及びＣＡ５のバージョン毎の鍵を保管するための公開鍵保管テーブル１１０５を格納している。
【００７０】
ＣＡ５は、ＴＩＤの唯一性を保証する証明書を発行するための証明書発行部１１３１、ＴＭにＣＡ５の公開鍵を配布するための公開鍵配布部１１３２などのプログラム、及び発行した証明書を管理するための証明書管理ＤＢ１１３３を格納している。尚、ＣＡのハードウェア構成は、計算機１と同様であるため、図示を省略している。
【００７１】
図１１において、オブジェクト１１０１、１１１１、１１２１が存在し、それぞれのオブジェクトをＴＭ１１０２、１１１２、１１２２が管理しているものとする。また、オブジェクト１１０１がトランザクションを開始し、その後、オブジェクト１１０１がオブジェクト１１１１を呼び出し、さらに、オブジェクト１１１１がオブジェクト１１２１を呼び出すものとする。
【００７２】
図１２は、ＣＡが存在するシステムにおける処理のフロー図、図１３は、オブジェクト１１０１がオブジェクト１１１１を呼び出す際にＴＭ１１０２が送信するメッセージの構成を示す図である。尚、枝番管理部によるトランザクションの処理順序制御方法については、先述と同様であるため、その説明を省略する。
【００７３】
図１２において、オブジェクト１１０１がトランザクションを開始し（ステップ１２０１）、その後、オブジェクト１１０１がオブジェクト１１１１を呼び出し（ステップ１２０２）、さらに、オブジェクト１１１１がオブジェクト１１２１を呼び出している（ステップ１２０３）。
【００７４】
ステップ１２０１において、ＴＭ１１０２がトランザクション処理を行うのが初めてである場合、ＴＭ１１０２は、ＣＡ通信部１１０５を介して、ＴＭの唯一性を保証させる証明書の発行要求をＣＡ５に送信する。ＣＡ５は、ＴＭ１１０２用の証明書を発行し、証明書と証明書を暗号化する際に用いたＣＡの秘密鍵のバージョン情報とをセットとして、証明書管理ＤＢ１１３４に格納した後、ＴＭ１１０２に返信する。尚、ＴＭ１１０２が既にＣＡ５から証明書を発行されている場合、ＣＡとのやりとりは特に発生しない。証明書を取得したＴＭ１１０２は、ＴＭ１１０２内で既に発行されたＴＩＤと重複しないように、新たにＴＩＤを発行する。
【００７５】
ステップ１２０２において、ＴＭ１１０２が送信するメッセージは、図１３に示すように、ＴＭ１１０２が発行したＴＩＤ１３０１、ＣＡの発行した証明書１３０２、ＣＡの発行した鍵バージョンの情報１３０３、メッセージ本文１３０４とからなる。また、ＴＭ１１１２は、図１３に示すメッセージ内の鍵バージョン情報と一致する鍵が公開鍵保存テーブル１１１６に存在しているかを確認し、存在していなければ、ＣＡ通信部１１１５を介して、公開鍵配布部１１３３から鍵を取得し、この鍵を用いて、証明書を復号化することで、証明書、即ち、ＴＭの唯一性を確認する。
【００７６】
以上により、証明書とＴＩＤとの複合キーにより、ＴＩＤの唯一性が保証されるため、異なるＴＭが異なるトランザクションに同一のＴＩＤを付与した場合でも、トランザクションの隔離性を確保することができる。また、一度利用したＣＡの公開鍵をそのバージョン情報とセットとして公開鍵保管テーブル１１１６に格納しておくことにより、２度目以降の処理については、公開鍵保管テーブルに格納されている鍵を利用することができるため、ＣＡへの問い合わせ回数を大幅に削減することができる。トランザクション処理は、大量に発生されるため、公開鍵保管テーブルをキャッシュ上に構築して、ＣＡとの問い合わせ回数を削減する作業は必須である。
【００７７】
ステップ１２０３において、ＴＭ１１１２が送信するメッセージは、ＴＭ１１０２が発行したＴＩＤ、ＣＡの発行した証明書、ＣＡの鍵バージョン情報、メッセージ本文で構成される。即ち、このメッセージは、メッセージ本文を除き、ステップ１２０２におけるメッセージと同様である。ＴＭ１１２２は、ステップ１２０２におけるＴＭ１１１２と同様の処理により、トランザクションを開始したオブジェクト１１０１を管理しているＴＭ１１０２の唯一性が保証されていることを確認できる。このことは、ＴＭ１１０２、１１２２の管理者間で何かしらの合意を取らなくてもよいことを意味しており、トランザクションに参加する管理主体が不特定であっても、トランザクションの隔離性を確保することができる。
【００７８】
また、ＣＡの鍵バージョンの情報をやりとりしている理由は、定期的に、かつ、容易に公開鍵を変更したいからである。前述したように、トランザクション処理は大量に発生されるため、毎回、ＣＡに問い合わせを行うことは現実的ではない。そのため、公開鍵保管テーブルを利用することにより、ＣＡへの問い合わせ回数を削減するとしていた。この方法は、一度配布された公開鍵を変更するには、公開鍵の変更を全てのＴＭに通知するか、公開鍵に有効期限を設定する必要がある。しかし、前者は、ＣＡが全てのＴＭを把握する必要があり、後者は、公開鍵の有効期限切れを理由としてトランザクションがアボートされる可能性がある。このため、メッセージに鍵バージョン情報を付与し、そのメッセージを取得したＴＭが公開鍵保管テーブルに格納されている鍵を利用していいのか、ＣＡに新たに問い合わせを行うべきなのかを判断させることにより、前述の問題を解決している。
【００７９】
以上により、ＣＡによるＴＩＤの唯一性保障と枝番管理によるトランザクション処理順序制御とを用いて、トランザクションの隔離性を確保することができる。
【００８０】
以上で説明したプログラムが有する機能を、ハードウェアにより実現してもよい。又、それらのプログラムは、ＦＤ、ＣＤＲＯＭ、ＤＶＤ等の記録媒体に格納して提供してもよいし、ネットワークを介してデジタル情報により提供してもよい。
【図面の簡単な説明】
【００８１】
【図１】トランザクション処理システムの構成図。
【図２】受付メッセージ管理テーブルの構成図。
【図３】複数の管理主体にまたがるトランザクション処理のフロー図。
【図４】ＴＭ間で授受されるメッセージを示す図。
【図５】受付メッセージ管理テーブルの詳細を示す図。
【図６】処理要求を受けたＴＭがオブジェクトを呼び出す処理のフロー図。
【図７】ＴＭがオブジェクトからの処理要求に対する処理結果の返答メッセージのそれぞれに付与する情報の構成図。
【図８】オブジェクトがトランザクションをコミットと決定した際、コミット通知メッセージにＴＭが付与する情報の構成図。
【図９】トランザクションの隔離性が欠如する場合のシステム構成図。
【図１０】オブジェクトが送信したコミット通知のメッセージをオブジェクトが取得した際のＴＭのフロー図。
【図１１】ＣＡが存在するトランザクション処理システムの構成図。
【図１２】ＣＡが存在するシステムのフロー図。
【図１３】オブジェクト１１０１がオブジェクト１１１１を呼び出す際にＴＭ１１０２が送信するメッセージの構成図。
【符号の説明】
【００８２】
1、2、3、4・・・計算機、10・・・ＣＰＵ、11・・・メインメモリ、12・・・記憶装置、13・・・入力装置、14・・・出力装置、15・・・通信インタフェース
【図１】
2007272363.tif 000003
【図２】
2007272363.tif 000004
【図３】
2007272363.tif 000005
【図４】
2007272363.tif 000006
【図５】
2007272363.tif 000007
【図６】
2007272363.tif 000008
【図７】
2007272363.tif 000009
【図８】
2007272363.tif 000010
【図９】
2007272363.tif 000011
【図１０】
2007272363.tif 000012
【図１１】
2007272363.tif 000013
【図１２】
2007272363.tif 000014
【図１３】
2007272363.tif 000015