(57)【特許請求の範囲】
【請求項１】
電文と当該電文に処理すべきトランザクション処理の種類と当該電文の処理ステータスとを対応付けたテーブルと、
前記電文に対して実行する前記トランザクション処理の種類が割り当てられたプロセスであって、前記テーブルを参照して、前記処理ステータスが未処理の前記電文に対して当該電文に対応する前記トランザクション処理を実行し、当該トランザクション処理に成功した場合には当該処理ステータスを第１状態に変更する一方、失敗した場合には当該処理ステータスを第２状態に変更するプロセスと、
前記プロセスに割り当てられた前記トランザクション処理を実行する予備プロセスであって、前記テーブルを参照して、前記処理ステータスが第２状態の前記電文に対して、当該電文に対応する前記トランザクション処理を実行し、当該トランザクション処理に成功した場合には当該処理ステータスを第１状態に変更する一方、失敗した場合には当該処理ステータスを第３状態に変更する予備プロセスと、
前記予備プロセスによって前記処理ステータスが第１状態に変更された場合には、当該処理ステータスを第２状態に変更した前記プロセスをエラープロセスとして判定し、前記予備プロセスによって前記処理ステータスが第３状態に変更された場合には、当該処理ステータスに対応する前記電文をエラー電文として判定するエラー処理部と
を具備することを特徴とする情報処理装置。
【請求項２】
前記エラー処理部は、前記エラープロセスと判定した前記プロセスを停止させ、当該プロセスによってトランザクション処理が実行されるべき前記電文については、前記予備プロセスに当該トランザクション処理を実行させることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記予備プロセスは、前記トランザクション処理を複数回実行しても成功しなかった場合に、当該トランザクション処理に失敗したものとして、前記処理ステータスを第３状態に変更することを特徴とする請求項１または請求項２に記載の情報処理装置。
【請求項４】
電文と当該電文に処理すべきトランザクション処理の種類と当該電文の処理ステータスとを対応付けたテーブルと、
前記電文に対して実行する前記トランザクション処理の種類が割り当てられたプロセスであって、前記テーブルを参照して、前記処理ステータスが未処理の前記電文に対して当該電文に対応する前記トランザクション処理を実行し、当該トランザクション処理に成功した場合には当該処理ステータスを第１状態に変更する一方、失敗した場合には当該処理ステータスを第２状態に変更するプロセスと、
前記処理ステータスが第２状態の前記電文に対して当該電文に対応する前記トランザクション処理を、当該処理ステータスを第２状態に変更した前記プロセス以外のプロセスに実行させる予備プロセスであって、当該トランザクション処理に成功した場合には当該処理ステータスを第１状態に変更する一方、失敗した場合には当該処理ステータスを第３状態に変更する予備プロセスと、
前記予備プロセスによって前記処理ステータスが第１状態に変更された場合には、当該処理ステータスを第２状態に変更した前記プロセスをエラープロセスとして判定し、前記予備プロセスによって前記処理ステータスが第３状態に変更された場合には、当該処理ステータスに対応する前記電文をエラー電文として判定するエラー処理部と
を具備することを特徴とする情報処理装置。
【請求項５】
電文と当該電文の処理ステータスとを対応付けたテーブルと、
前記電文に対して予め決められたトランザクション処理の種類が割り当てられたプロセスであって、前記テーブルを参照して、前記処理ステータスが未処理の前記電文に対して前記トランザクション処理を実行し、当該トランザクション処理に成功した場合には当該
処理ステータスを第１状態に変更する一方、失敗した場合には当該処理ステータスを第２状態に変更するプロセスと、
前記処理ステータスが第２状態の前記電文に対してトランザクション処理を、当該処理ステータスを第２状態に変更した前記プロセス以外のプロセスに実行させる予備プロセスであって、当該トランザクション処理に成功した場合には当該処理ステータスを第１状態に変更する一方、失敗した場合には当該処理ステータスを第３状態に変更する予備プロセスと、
前記予備プロセスによって前記処理ステータスが第１状態に変更された場合には、当該処理ステータスを第２状態に変更した前記プロセスをエラープロセスとして判定し、前記予備プロセスによって前記処理ステータスが第３状態に変更された場合には、当該処理ステータスに対応する前記電文をエラー電文として判定するエラー処理部と
を具備することを特徴とする情報処理装置。
【請求項６】
前記エラー処理部は、前記エラープロセスと判定した前記プロセスを停止させることを特徴とする請求項４または請求項５に記載の情報処理装置。
【請求項７】
前記予備プロセスは、前記トランザクション処理を複数の前記プロセスに実行させ、当該プロセス全てにおいて当該トランザクション処理が失敗した場合に、前記処理ステータスを第３状態に変更することを特徴とする請求項４乃至請求項６のいずれかに記載の情報処理装置。
【請求項８】
前記予備プロセスは、前記トランザクション処理を実行させた前記プロセスのいずれかにおいて当該トランザクション処理が成功した場合に、前記処理ステータスを第１状態に変更し、
前記エラー処理部は、当該トランザクション処理に失敗した前記プロセスをエラープロセスとして判定することを特徴とする請求項７に記載の情報処理装置。
【請求項９】
前記テーブルは複数存在することを特徴とする請求項１乃至請求項８のいずれかに記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、障害の要因を判定する技術に関する。特に、トランザクション処理において発生する障害の要因を判定する情報処理装置などに関する。
【背景技術】
【０００２】
金融取引において用いられる情報処理装置として、多数の処理要求を効率よく整合性を保ちながら実行するために、トランザクション処理を管理する機能を有する装置が通常用いられる。このような情報処理装置は、クライアントからの要求に応じたトランザクション処理を実行して、要求に応じたＡＰＩ（Application Program Interface）に受け渡すプロセスを有する。トランザクション処理が実行されるときに何らかの障害が発生すると、そのトランザクション処理は失敗する。この場合、以降の処理に影響を与えることにならないように、プロセスにおいて発生した障害を取り除く作業を行うことが必要となる。例えば、特許文献１、２、３には、アプリケーションプログラムの実行時やシステム稼働時において障害が発生した場合に障害を取り除く技術が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平１０−１９８５８４号公報
【特許文献２】特開２０１１−７０５０４号公報
【特許文献３】特開平２−６６６３６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
プロセスにおいて障害が発生する要因としては、プロセスそのものの動作不良による場合だけでなく、クライアントからの要求に含まれ、トランザクション処理の対象となる電文に問題がある場合もある。しかしながら、特許文献１、２、３に記載された技術においては、いずれの要因で障害が発生したのかについての切り分けをすることができない。
【０００５】
本発明は、上述の事情に鑑みてなされたものであり、トランザクション処理において生じた障害の要因を切り分けることを目的とする。
【課題を解決するための手段】
【０００６】
上述の課題を解決するため、本発明の一実施形態として、電文と当該電文に処理すべきトランザクション処理の種類と当該電文の処理ステータスとを対応付けたテーブルと、前記電文に対して実行する前記トランザクション処理の種類が割り当てられたプロセスであって、前記テーブルを参照して、前記処理ステータスが未処理の前記電文に対して当該電文に対応する前記トランザクション処理を実行し、当該トランザクション処理に成功した場合には当該処理ステータスを第１状態に変更する一方、失敗した場合には当該処理ステータスを第２状態に変更するプロセスと、前記プロセスに割り当てられた前記トランザクション処理を実行する予備プロセスであって、前記テーブルを参照して、前記処理ステータスが第２状態の前記電文に対して、当該電文に対応する前記トランザクション処理を実行し、当該トランザクション処理に成功した場合には当該処理ステータスを第１状態に変更する一方、失敗した場合には当該処理ステータスを第３状態に変更する予備プロセスと、前記予備プロセスによって前記処理ステータスが第１状態に変更された場合には、当該処理ステータスを第２状態に変更した前記プロセスをエラープロセスとして判定し、前記予備プロセスによって前記処理ステータスが第３状態に変更された場合には、当該処理ステータスに対応する前記電文をエラー電文として判定するエラー処理部とを具備することを特徴とする情報処理装置を提供する。
【０００７】
また、本発明の一実施形態として、電文と当該電文に処理すべきトランザクション処理の種類と当該電文の処理ステータスとを対応付けたテーブルと、前記電文に対して実行する前記トランザクション処理の種類が割り当てられたプロセスであって、前記テーブルを参照して、前記処理ステータスが未処理の前記電文に対して当該電文に対応する前記トランザクション処理を実行し、当該トランザクション処理に成功した場合には当該処理ステータスを第１状態に変更する一方、失敗した場合には当該処理ステータスを第２状態に変更するプロセスと、前記処理ステータスが第２状態の前記電文に対して当該電文に対応する前記トランザクション処理を、当該処理ステータスを第２状態に変更した前記プロセス以外のプロセスに実行させる予備プロセスであって、当該トランザクション処理に成功した場合には当該処理ステータスを第１状態に変更する一方、失敗した場合には当該処理ステータスを第３状態に変更する予備プロセスと、前記予備プロセスによって前記処理ステータスが第１状態に変更された場合には、当該処理ステータスを第２状態に変更した前記プロセスをエラープロセスとして判定し、前記予備プロセスによって前記処理ステータスが第３状態に変更された場合には、当該処理ステータスに対応する前記電文をエラー電文として判定するエラー処理部とを具備することを特徴とする情報処理装置を提供する。
【０００８】
また、本発明の一実施形態として、電文と当該電文の処理ステータスとを対応付けたテーブルと、前記電文に対して予め決められたトランザクション処理の種類が割り当てられたプロセスであって、前記テーブルを参照して、前記処理ステータスが未処理の前記電文に対して前記トランザクション処理を実行し、当該トランザクション処理に成功した場合には当該処理ステータスを第１状態に変更する一方、失敗した場合には当該処理ステータスを第２状態に変更するプロセスと、前記処理ステータスが第２状態の前記電文に対してトランザクション処理を、当該処理ステータスを第２状態に変更した前記プロセス以外のプロセスに実行させる予備プロセスであって、当該トランザクション処理に成功した場合には当該処理ステータスを第１状態に変更する一方、失敗した場合には当該処理ステータスを第３状態に変更する予備プロセスと、前記予備プロセスによって前記処理ステータスが第１状態に変更された場合には、当該処理ステータスを第２状態に変更した前記プロセスをエラープロセスとして判定し、前記予備プロセスによって前記処理ステータスが第３状態に変更された場合には、当該処理ステータスに対応する前記電文をエラー電文として判定するエラー処理部とを具備することを特徴とする情報処理装置を提供する。
【発明の効果】
【０００９】
本発明によれば、トランザクション処理において生じた障害の要因を切り分けることができる。また、本発明によれば、障害の発生によるトランザクション処理の停滞発生を抑制することもできる。
【図面の簡単な説明】
【００１０】
【図１】本発明の第１実施形態における情報処理システムを説明する図である。
【図２】本発明の第１実施形態におけるテーブルを説明する図である。
【図３】本発明の第１実施形態におけるプロセスの処理を説明するフローチャートである。
【図４】本発明の第１実施形態における予備プロセスの処理を説明するフローチャートである。
【図５】本発明の第１実施形態におけるエラー処理部の処理を説明するフローチャートである。
【図６】本発明の第１実施形態におけるプロセスのトランザクション処理前のテーブルを説明する図である。
【図７】本発明の第１実施形態におけるプロセスのトランザクション処理が失敗した場合のテーブルを説明する図である。
【図８】本発明の第１実施形態における予備プロセスのトランザクション処理が失敗した場合のテーブルを説明する図である。
【図９】本発明の第１実施形態における予備プロセスのトランザクション処理が成功した場合のテーブルを説明する図である。
【図１０】図９に続く予備プロセスのトランザクション処理後のテーブルを説明する図である。
【図１１】本発明の第２実施形態における情報処理システムを説明する図である。
【図１２】本発明の第２実施形態における予備プロセスの処理を説明するフローチャートである。
【図１３】本発明の第３実施形態における情報処理システムを説明する図である。
【図１４】本発明の第３実施形態におけるテーブルを説明する図である。
【図１５】本発明の変形例１における予備プロセスの処理を説明するフローチャートである。
【図１６】本発明の変形例４におけるテーブルを説明する図である。
【発明を実施するための形態】
【００１１】
＜第１実施形態＞
［構成］
図１は、本発明の第１実施形態における情報処理システムを説明する図である。本実施形態に係る情報処理システム１は、情報処理装置１０、外部ＩＦ（インターフェイス）２０およびサーバ３０を有する。
【００１２】
本発明の情報処理装置１０は、金融取引などの取引システムで用いられるトランザクション処理を実行する装置である。情報処理装置１０は、クライアント端末などの外部ＩＦ（インターフェイス）２０からトランザクション処理の要求（以下、処理要求という）を受け付ける。トランザクション処理の要求には、電文と、その電文に対して処理すべきトランザクション処理の種類とが含まれる。
【００１３】
情報処理装置１０は、外部ＩＦ２０から電文の形式として処理要求を受け付けると、その処理要求にしたがって電文に対するトランザクション処理を実行し、サーバ３０において実行される各種プログラムのインターフェイスとなるＡＰＩに受け渡す。図１に示すＡＰＩ（１）、ＡＰＩ（２）、・・・は、プログラムの種類毎のＡＰＩである。続いて、情報処理装置１０の構成について説明する。
【００１４】
情報処理装置１０は、ＣＰＵ（Central Processing Unit）１２０を有する。ＣＰＵ１２０がプログラムを実行することにより、外部ＩＦ２０からの処理要求に対してトランザクション処理を実行してＡＰＩに受け渡す機能を実現する。また、情報処理装置１０は、複数のテーブル１１０−１、１１０−２、１１０−３（それぞれを区別しない場合にはテーブル１１０という）を有する。これらのテーブル１１０は、ハードディスク、ＲＡＭ（Random Access Memory）などの記憶部に記憶され、ＣＰＵ１２０の制御により内容が書き換えられる。なお、テーブル１１０は、３つより多くても少なくてもよく、１つでもよい。これらのテーブルは、処理要求に対応する電文を一時的に保持するキューとして用いられる。
【００１５】
図２は、本発明の第１実施形態におけるテーブル１１０を説明する図である。テーブル１１０は、電文の内容（この例では取引者、取引金額、日時などの取引内容）が含まれている取引名（「Ａ」、「Ｂ」、「Ｃ」、・・・）と、トランザクション処理の種類（この例では「１」〜「９」）を示す取引種別と、電文の処理ステータスを示すステータスとを対応付けている。なお、電文の内容にトランザクション処理の種類、ステータスが含まれるようにしてテーブル１１０に格納することもできる。外部ＩＦ２０から処理要求を受け付ける度に、処理要求の内容（例えば、電文の内容）に応じて、登録すべきテーブル１１０がＣＰＵ１２０によって決定される。テーブル１１０が１つであるときにはこの決定は不要である。あるいは、電文そのものに取引種別が含まれている場合もあり、その場合もこの決定は不要である。そして、処理要求の電文とトランザクション処理の種類とに応じた取引名と取引種別との対応関係が、ＣＰＵ１２０によって決定されたテーブル１１０に登録される。このとき、ステータスについては、「未処理」が登録される。なお、後述するように、トランザクション処理の結果によってステータスは、「正常終了」（第１状態）、「警告終了」（第２状態）、「エラー」（第３状態）のいずれかに変更される。
【００１６】
図１に戻って説明を続ける。ＣＰＵ１２０はプログラムを実行することにより、プロセス１２１、予備プロセス１２２、およびエラー処理部１２３の各機能を実現する。
【００１７】
プロセス１２１は、この例では９個のプロセスから構成されている。９個のプロセスの各々には取引種別「１」〜「９」のいずれかのトランザクション処理が割り当てられ、テーブル１１０より電文を取得し、割り当てられたトランザクション処理を実行する。以下の説明では、取引種別「ｎ」のトランザクション処理を実行するプロセスをプロセス（ｎ）という（ｎ＝１、２、・・・９）。
【００１８】
予備プロセス１２２は、この例ではプロセス１２１における各プロセスに対応して、９個の予備プロセスから構成されている。９個の予備プロセスの各々には取引種別「１」〜「９」のいずれかのトランザクション処理が割り当てられ、割り当てられたトランザクション処理を電文に対して実行する。以下の説明では、取引種別「ｎ」のトランザクション処理を実行する予備プロセスを予備プロセス（ｎ）という（ｎ＝１、２、・・・９）。プロセス（ｎ）がテーブル１１０より取得された電文についてトランザクション処理を実行し、エラーが発生するなどして失敗となると、その電文のステータスが第２状態（「警告終了」）となる。そこで、予備プロセス（ｎ）は、ステータスが「警告終了」となっている電文について、その電文に対して再度トランザクション処理を実行する。
【００１９】
エラー処理部１２３は、予備プロセス１２２で実行されたトランザクション処理の結果に応じてプロセス１２１におけるトランザクション処理の失敗の要因を判定する。また、エラー処理部１２３は、判定結果に応じた処理を行う。続いて、プロセス１２１におけるプロセス（１）、予備プロセス１２２における予備プロセス（１）、エラー処理部１２３の処理を順に説明する。なお、プロセス１２１および予備プロセス１２２については割り当てられたトランザクション処理の種類が取引種別「１」である場合、すなわちｎ＝１である場合を例として説明するが、ｎ＝２、３、・・・９であってもｎ＝１の場合と同様である。
【００２０】
［プロセス（１）の処理］
図３は、本発明の第１実施形態におけるプロセス（１）の処理を説明するフローチャートである。プロセス（１）はテーブル１１０を参照して、取引種別「１」の電文のうちステータス「未処理」の電文が有るかどうかを判定する（ステップＳ１１１）。「未処理」の電文が無い場合（ステップＳ１１１；Ｎｏ）には、プロセス（１）は、外部ＩＦ２０からの処理要求により取引種別「１」の電文が新たにテーブル１１０に登録されるまで待つ。プロセス（１）は、「未処理」の電文が有る場合（ステップＳ１１１；Ｙｅｓ）には、その電文を読み出す（ステップＳ１１２）。取引種別「１」およびステータス「未処理」の電文が複数ある場合には、例えば、テーブルに登録された時刻が最も古い電文を読み出すようにすればよい。
【００２１】
プロセス（１）は、読み出した電文に対して取引種別「１」のトランザクション処理を実行して（ステップＳ１１３）、処理内容に応じて決まるＡＰＩに引き渡す。実行したトランザクション処理が成功であった場合（ステップＳ１１４；Ｙｅｓ）には、プロセス（１）は読み出した電文に対応するステータスを「未処理」から「正常終了」に変更し（ステップＳ１１５）、ステップＳ１１１の処理に戻る。一方、実行したトランザクション処理が失敗であった場合（ステップＳ１１４；Ｎｏ）には、プロセス（１）は読み出した電文に対応するステータスを「未処理」から「警告終了」に変更し（ステップＳ１１６）、ステップＳ１１１の処理に戻る。
【００２２】
プロセス（ｎ）においてトランザクション処理が失敗となる要因は２種類ある。第１の要因としては、電文が規定の形式で表されていないことなど電文にエラーがある場合である。第２の要因としては、プロセス（ｎ）によるトランザクション処理が設計通りに実行されない場合である。すなわち、第２の要因は、製品の不具合の場合、プロセスの起動タイミングにより本来あるべき状態と異なる状態で起動してしまった場合、プロセスが使用している部分でのメモリーリークが発生した場合など、プロセス（ｎ）の動作中の不具合によるものである。以下に説明する予備プロセス（ｎ）についても同様である。
【００２３】
なお、ステータスが「警告終了」に変更された時点においては、プロセス（ｎ）が、トランザクション処理の失敗した要因が第１の要因であるか第２の要因であるかは判定することは必須ではない。本実施形態においては、失敗の要因は、予備プロセス（ｎ）のトランザクション処理の結果に基づいて判定することができるからである。そこで続いて、予備プロセス（ｎ）の処理について説明する。
【００２４】
［予備プロセス（１）の処理］
図４は、本発明の第１実施形態における予備プロセス（１）の処理を説明するフローチャートである。予備プロセス（１）はテーブル１１０を参照して、取引種別「ｎ」の電文のうちステータス「警告終了」の電文が有るかどうかを判定する（ステップＳ１２１）。「警告終了」の電文が無い場合（ステップＳ１２１；Ｎｏ）には、予備プロセス（１）は、プロセス（１）によってステータスが変更されるまで待つ。予備プロセス（１）は、「警告終了」の電文が有る場合（ステップＳ１２１；Ｙｅｓ）には、その電文を読み出す（ステップＳ１２２）。「警告終了」の電文が複数ある場合には、例えば、テーブルに登録された時刻が最も古い電文を読み出すようにすればよい。
【００２５】
予備プロセス（１）は、読み出した電文に対して取引種別「１」のトランザクション処理を実行して（ステップＳ１２３）、処理内容に応じて決まるＡＰＩに引き渡す。実行したトランザクション処理が成功であった場合（ステップＳ１２４；Ｙｅｓ）には、予備プロセス（１）は読み出した電文に対応するステータスを「警告終了」から「正常終了」に変更し（ステップＳ１２５）、ステップＳ１２１の処理に戻る。一方、実行したトランザクション処理が失敗であった場合（ステップＳ１２４；Ｎｏ）には、予備プロセス（１）は読み出した電文に対応するステータスを「警告終了」から「エラー」に変更し（ステップＳ１２６）、ステップＳ１２１の処理に戻る。続いて、エラー処理部１２３の処理について説明する。
【００２６】
［エラー処理部１２３の処理］
図５は、本発明の第１実施形態におけるエラー処理部１２３の処理を説明するフローチャートである。エラー処理部１２３はテーブル１１０を参照して、いずれかの電文に対応するステータスが「警告終了」から「正常終了」に変更されるか、「エラー」に変更されるかを待つ（ステップＳ１３１；Ｎｏ、ステップＳ１３２；Ｎｏ）。ステータスが「警告終了」から「エラー」に変更された電文がある場合（ステップＳ１３２；Ｙｅｓ）には、トランザクション処理が失敗となった要因を第１の要因とする。すなわち、エラー処理部１２３はその電文を、エラーが存在している電文（以下、エラー電文という）と判定し（ステップＳ１３３）、ステップＳ１３１の処理に戻る。エラー処理部１２３は、判定した結果を情報処理装置１０の管理者に通知して情報処理装置１０の操作者などに対して電文の修正を促してもよい。
【００２７】
このように、ステータスが「エラー」の電文については、プロセス（ｎ）においてトランザクション処理が失敗し、再び予備プロセス（ｎ）でも同じ電文に対するトランザクション処理が失敗したことになる。プロセス（ｎ）および予備プロセス（ｎ）の双方において、上述したトランザクション処理の失敗の要因が発生していることは一般的には考えにくく、この場合にはエラー電文である可能性が高い。したがって、エラー処理部１２３はステータスが「エラー」の電文をエラー電文と判定する。
【００２８】
一方、ステータスが「警告終了」から「正常終了」に変更された電文がある場合（ステップＳ１３１；Ｙｅｓ）には、エラー処理部１２３は、その電文のステータスを「警告終了」に変更したプロセス（ｎ）をエラーが発生しているプロセス（以下、エラープロセスという）と判定する（ステップＳ１３４）。エラー処理部１２３は、判定した結果を情報処理装置１０の管理者に通知してプロセス（ｎ）の修正、再起動などによる改善を促してもよい。
【００２９】
このように、ステータスが「警告終了」を経て「正常終了」に変更された電文については、プロセス（ｎ）においてトランザクション処理が失敗し、予備プロセス（ｎ）においてトランザクション処理が成功したことになる。したがって電文にはエラーがなかったことになるため、プロセス（ｎ）において上述したトランザクション処理の失敗の要因が発生していることになる。したがって、ステータスが「警告終了」から「正常終了」に変更された電文がある場合には、エラー処理部１２３は、その電文のステータスを「警告終了」に変更したプロセス（ｎ）をエラープロセスと判定する。
【００３０】
続いて、エラー処理部１２３はエラープロセスと判定されたプロセス（ｎ）を停止させ（ステップＳ１３５）、ステップＳ１３１の処理に戻る。このように、エラープロセスと判定されたプロセス（ｎ）を停止させることにより、不要な処理が行われないようにして、リソースを削減することができる。この場合には、プロセス（ｎ）でトランザクション処理が実行されるべき取引種別「ｎ」の電文については、予備プロセス（ｎ）においてトランザクション処理が実行されるようにしてもよい。すなわち、予備プロセス（ｎ）は取引種別「ｎ」の電文のうちステータスが「未処理」の電文に対してもトランザクション処理を実行するようにエラー処理部１２３により指示される。
【００３１】
［テーブル１１０のステータス変化例］
次に図２に示すテーブルにおいて、取引名「Ｂ」の電文に対してトランザクション処理が実行されたときに、そのトランザクション処理が失敗した場合の例を説明する。この失敗の要因が取引名「Ｂ」がエラー電文である場合、およびプロセス（９）がエラープロセスである場合について、テーブル１１０におけるステータスの変化例をそれぞれ説明する。
【００３２】
図６は、本発明の第１実施形態におけるプロセス（９）のトランザクション処理前のテーブル１１０を説明する図である。この時点においては、取引名「Ａ」、「Ｄ」についてのトランザクション処理が終了して、ステータスが「未処理」から「正常終了」に変更された状態であるものとする。ここで、プロセス（９）は、取引種別「９」かつステータス「未処理」の電文（取引名「Ｂ」）に対してトランザクション処理を実行し、この処理に失敗したものとする。
【００３３】
図７は、本発明の第１実施形態におけるプロセス（９）のトランザクション処理が失敗した場合のテーブル１１０を説明する図である。プロセス（９）によるトランザクション処理が失敗した結果、図７に示すように、取引名「Ｂ」に対応するステータスは「未処理」から「警告終了」に変更される。この時点においては、失敗の要因が電文のエラーであるか、プロセスのエラーであるかは不明の状態である。そこで、本発明の第１実施形態においては、予備プロセス（９）が取引名「Ｂ」に対してトランザクション処理を実行する。
【００３４】
図８は、本発明の第１実施形態における予備プロセス（９）のトランザクション処理が失敗した場合のテーブル１１０を説明する図である。予備プロセス（９）によるトランザクション処理が失敗すると、図８に示すように、取引名「Ｂ」に対応するステータスは「警告終了」から「エラー」に変更される。この場合には、取引名「Ｂ」の電文がエラー電文であるとエラー処理部１２３によって判定されることになる。
【００３５】
なお、プロセス（９）は予備プロセス（９）のトランザクション処理が実行されているときにおいても、別の電文に対してトランザクション処理を実行する。したがって、プロセス（９）は取引種別「９」かつステータス「未処理」の取引名「Ｃ」に対してトランザクション処理を実行する。上述の通りプロセス（９）にはエラーが無いため、プロセス（９）による取引名「Ｃ」に対するトランザクション処理については成功し、ステータスが「未処理」から「正常終了」に変更される。
【００３６】
図９は、本発明の第１実施形態における予備プロセス（９）のトランザクション処理が成功した場合のテーブル１１０を説明する図である。予備プロセス（９）によるトランザクション処理が成功すると、図９に示すように、取引名「Ｂ」に対応するステータスは「警告終了」から「正常終了」に変更される。この場合には、取引名「Ｂ」の電文には問題がなく、プロセス（９）がエラープロセスであるとエラー処理部１２３によって判定されることになる。その結果、プロセス（９）はエラー処理部１２３によって停止される。
【００３７】
なお、エラー処理部１２３によってプロセス（９）が停止される前に、プロセス（９）は取引種別「９」かつステータス「未処理」の取引名「Ｃ」に対してトランザクション処理を実行してしまう場合もある。その場合には、エラープロセスであるプロセス（９）による取引名「Ｃ」に対するトランザクション処理についても失敗することになるため、ステータスが「未処理」から「警告終了」に変更される。
【００３８】
図１０は、図９に続く予備プロセス（９）のトランザクション処理後のテーブル１１０を説明する図である。プロセス（９）による取引名「Ｃ」に対するトランザクション処理が失敗してステータスが「警告終了」になったことにより、再び予備プロセス（９）が取引名「Ｃ」に対してトランザクション処理を実行する。そして、取引名「Ｃ」のステータスが「警告終了」から「正常終了」に変更される。プロセス（９）がエラー処理部１２３によって停止された後は、取引種別「９」の電文については、ステータスが「未処理」であっても、予備プロセス（９）がトランザクション処理を実行することになる。
【００３９】
このように、本発明の第１実施形態における情報処理システム１は、プロセス（ｎ）で電文に対してトランザクション処理が失敗した場合、その電文がエラー電文であるのか、プロセス（ｎ）がエラープロセスであるのか判定することができる。そのため、トランザクション処理の失敗の要因を容易に切り分けて特定することができるから、復旧対応を早く行うことができる。また、プロセス（ｎ）のエラーである場合にも、予備プロセス（９）によりトランザクション処理が可能であるから、電文に対するトランザクション処理の停滞の発生を抑制することができる。また、プロセスと予備プロセスにより構成すると、プロセス構成が冗長性を有するが、このような冗長性があっても、トランザクション処理の要因を容易に切り分けることができる。
【００４０】
＜第２実施形態＞
第１実施形態ではプロセス１２１の各プロセスは、それぞれが割り当てられた１種類のトランザクション処理を実行可能であったが、第２実施形態では、それぞれが複数種類のトランザクション処理を実行可能に構成されている。１個のプロセスで複数種類のトランザクション処理を可能とする方法は様々であるが、例えば、そのプロセスが階層化されていたり、複数のトランザクション処理を行う複数のモジュールから構成されていたりすればよい。
【００４１】
図１１は、本発明の第２実施形態における情報処理システム１Ａを説明する図である。情報処理システム１Ａは、第１実施形態における情報処理装置１０が情報処理装置１０Ａに置き換えられた構成である。以下、第１実施形態と同じ構成については、同じ符号を用いて記載して、その説明を省略する。
【００４２】
情報処理装置１０ＡのＣＰＵ１２０Ａは、プロセス１２１Ａ、予備プロセス１２２Ａおよびエラー処理部１２３Ａの各機能を実現する。プロセス１２１Ａは、この例では９個のプロセスから構成されている。第１実施形態の場合と異なり、９個のプロセスのそれぞれが取引種別「１」〜「９」のいずれのトランザクション処理も実行することができる。以下の説明では、９個のプロセスをプロセス（１Ａ）、プロセス（２Ａ）、・・・プロセス（９Ａ）という。なお、それぞれ名称が異なるものの、各プロセスは各種類のトランザクション処理を実行できるためそれぞれの機能に違いはないとする。そのため、９個のプロセスのそれぞれを区別しない場合には、各プロセスをプロセス（Ａ）と記載する。なお、機能に違いがなくても、プロセスの中には、機能を実現する処理アルゴリズムは異なっていているものが含まれていてもよい。
【００４３】
第１実施形態におけるプロセス（ｎ）では、取引種別「ｎ」の電文に対してトランザクション処理を実行するが、第２実施形態ではプロセス（Ａ）は、どの取引種別の電文に対してもトランザクション処理を実行することができる点が異なる。すなわち、プロセス（Ａ）はテーブル１１０を参照して、ステータスが「未処理」の電文に対して、その電文に対応する取引種別のトランザクション処理を実行していく。
【００４４】
予備プロセス１２２Ａは、第１実施形態の場合とは異なり、トランザクション処理を実行するのではなく、プロセス（Ａ）のいずれかに第１実施形態における予備プロセス（ｎ）におけるトランザクション処理を実行させる。あるいは、予備プロセス（ｎ）は、プロセス（Ａ）の機能の全てまたは一部を有し、ステータスが「警告終了」の電文に対してトランザクション処理を実行するようになっていてもよい。エラー処理部１２３Ａは、第１実施形態におけるエラー処理部１２３と同様の処理を行う。したがって、エラー処理部１２３Ｂの説明については省略する。
【００４５】
図１２は、本発明の第２実施形態における予備プロセス１２２Ａの処理を説明するフローチャートである。予備プロセス１２２Ａはテーブル１１０を参照して、ステータス「警告終了」の電文が有るかどうかを判定する（ステップＳ１４１）。「警告終了」の電文が無い場合（ステップＳ１４１；Ｎｏ）には、予備プロセス１２２Ａは、プロセス（Ａ）によってステータスが変更されるまで待つ。
【００４６】
予備プロセス１２２Ａは、「警告終了」の電文が有る場合（ステップＳ１４１；Ｙｅｓ）には、その電文に対してトランザクション処理を実行させるプロセス（Ａ）を指定する（ステップＳ１４２）。ここで、予備プロセス１２２Ａは、ステータスを「警告終了」に変更したプロセス（Ａ）以外のプロセス（Ａ）を指定する。「警告終了」に変更したプロセス（Ａ）がいずれであるかは、ステータス変更時にテーブル１１０に記録されるようにしてもよいし、予備プロセス１２２Ａがプロセス（Ａ）によるテーブル１１０のステータス変更を監視し続けるようにしてもよい。
【００４７】
続いて、予備プロセス１２２Ａは、ステータスが「警告終了」に変更された電文に対するトランザクション処理を、ステップＳ１４２の処理において指定したプロセス（Ａ）に指示する（ステップＳ１４３）。これにより、指示されたプロセス（Ａ）は、その指示に基づいてトランザクション処理を実行する。
【００４８】
予備プロセス１２２Ａは、指示したプロセス（Ａ）でのトランザクション処理を監視して成功したか失敗したかを判定する（ステップＳ１４４）。指示したプロセス（Ａ）でのトランザクション処理が成功であった場合（ステップＳ１４４；Ｙｅｓ）には、予備プロセス１２２Ａは、トランザクション処理の対象とした電文に対応するステータスを「警告終了」から「正常終了」に変更し（ステップＳ１４５）、ステップＳ１４１の処理に戻る。一方、実行したトランザクション処理が失敗であった場合（ステップＳ１４４；Ｎｏ）には、予備プロセス（１）は読み出した電文に対応するステータスを「警告終了」から「エラー」に変更し（ステップＳ１４６）、ステップＳ１４１の処理に戻る。
【００４９】
このように、プロセス１２１Ａにおいて複数種類のトランザクション処理を実行するプロセス（Ａ）が複数存在する場合には、予備プロセス１２２Ａはトランザクション処理を実行せずに、ステータスを「警告終了」に変更したプロセス（Ａ）以外のプロセス（Ａ）にトランザクション処理を実行させることもできる。
【００５０】
＜第３実施形態＞
第２実施形態では取引種別が「１」〜「９」に分かれていたが、第３実施形態では取引種別が１つである場合について説明する。
【００５１】
図１３は、本発明の第３実施形態における情報処理システム１Ｂを説明する図である。情報処理システム１Ｂは、第２実施形態における情報処理装置１０Ａが情報処理装置１０Ｂに置き換えられた構成である。以下、第１実施形態および第２実施形態と同じ構成については、同じ符号を用いて記載して、その説明を省略する。
【００５２】
図１４は、本発明の第３実施形態におけるテーブル１１０Ｂを説明する図である。第３実施形態では、取引種別が予め決められた１つである。したがって、情報処理装置１０Ｂのテーブル１１０Ｂ（１１０Ｂ−１、１１０Ｂ−２、１１０Ｂ−３）は、図１４に示すように、取引種別については対応付けられず、取引名とステータスとを対応付けている。
【００５３】
図１３に戻って説明を続ける。情報処理装置１０ＢのＣＰＵ１２０Ｂは、プロセス１２１Ｂ、予備プロセス１２２Ｂおよびエラー処理部１２３Ｂの各機能を実現する。プロセス１２１Ｂは、この例では９個のプロセスから構成されている。第２実施形態の場合と異なり、９個のプロセスは、いずれも予め決められた取引種別のトランザクション処理を実行する。以下の説明では、９個のプロセスをプロセス（１Ｂ）、プロセス（２Ｂ）、・・・プロセス（９Ｂ）という。なお、それぞれ名称が異なるものの、各プロセスは同じトランザクション処理を実行するためそれぞれの機能に違いはない。そのため、９個のプロセスのそれぞれを区別しない場合には、各プロセスをプロセス（Ｂ）と記載する。
【００５４】
第３実施形態におけるプロセス（Ｂ）は、第２実施形態におけるプロセス（Ａ）と同様に、テーブル１１０Ｂを参照して、ステータスが「未処理」の電文に対して、その電文に対応してトランザクション処理を実行していく。ただし、第２実施形態とは異なり、取引種別は予め決められた１つであるから、プロセス（Ｂ）は、各電文に対してそれぞれ同じトランザクション処理を実行する。予備プロセス１２２Ｂは第２実施形態における予備プロセス１２２Ａと同様の処理を行う。また、エラー処理部１２３Ｂは第１実施形態におけるエラー処理部１２３と同様の処理を行う。したがって、予備プロセス１２２Ｂおよびエラー処理部１２３Ｂの説明については省略する。
【００５５】
第３実施形態のように、取引種別が予め決められた１つの取引種別である場合にはテーブル１１０Ｂのように取引種別の対応付けが不要であるとともに、プロセス１２１Ｂにおいて同一種類のトランザクション処理を実行するプロセス（Ｂ）を用いることができる。また、第２実施形態と同様に、予備プロセス１２２Ｂはトランザクション処理を実行せずに、ステータスを「警告終了」に変更したプロセス（Ｂ）以外のプロセス（Ｂ）にトランザクション処理を実行させることもできる。
【００５６】
＜変形例＞
以上、本発明の実施形態およびその実施例について説明したが、本発明は以下のように、様々な態様で実施可能である。
【００５７】
［変形例１］
上述した第２実施形態においては、予備プロセス１２２Ａは、ステータスが「警告終了」の電文に対するトランザクション処理を１つのプロセス（Ａ）に指示する場合、ステータスが「正常終了」となるまで所定の回数である複数回プロセス（Ａ）にトランザクション処理を指示したり、複数のプロセス（Ａ）に指示したりしてもよい。この場合には、予備プロセス１２２Ａは、指示した全て回あるいは全てのプロセス（Ａ）においてトランザクション処理が失敗すると、ステータスを「警告終了」から「エラー」に変更する。
【００５８】
図１５は、本発明の変形例１における予備プロセス１２２Ａの処理を説明するフローチャートである。第２実施形態と同じ処理については図１２に示すフローチャートと同じ符号を用いて記載している。なお、ステップＳ１４１〜Ｓ１４３については説明を省略する。
【００５９】
予備プロセス１２２Ａは、指示したプロセス（Ａ）でのトランザクション処理を監視して成功したか失敗したかを判定する（ステップＳ１４４）。指示したプロセス（Ａ）でのトランザクション処理が成功であった場合（ステップＳ１４４；Ｙｅｓ）には、予備プロセス１２２Ａは、トランザクション処理の対象とした電文に対応するステータスを「警告終了」から「正常終了」に変更し（ステップＳ１４５）、ステップＳ１４１の処理に戻る。この処理は第２実施形態と同様の処理である。
【００６０】
一方、実行したトランザクション処理が失敗であった場合（ステップＳ１４４；Ｎｏ）には、ステータスを「警告終了」に変更したプロセス（Ａ）および先に指示したプロセス（Ａ）以外のプロセス（Ａ）を指定する（ステップＳ１５１）。予備プロセス１２２Ａは、ステータスが「警告終了」に変更された電文に対するトランザクション処理を、ステップＳ１５１の処理において指定したプロセス（Ａ）に指示する（ステップＳ１５２）。これにより、指示されたプロセス（Ａ）は、その指示に基づいてトランザクション処理を実行する。
【００６１】
予備プロセス１２２Ａは、ステップＳ１５２において指示したプロセス（Ａ）でのトランザクション処理を監視して成功したか失敗したかを判定する（ステップＳ１５３）。指示したプロセス（Ａ）でのトランザクション処理が成功であった場合（ステップＳ１５３；Ｙｅｓ）には、予備プロセス１２２Ａは、トランザクション処理の対象とした電文に対応するステータスを「警告終了」から「正常終了」に変更し（ステップＳ１４５）、ステップＳ１４１の処理に戻る。一方、実行したトランザクション処理が失敗であった場合（ステップＳ１５３；Ｎｏ）には、予備プロセス（１）は読み出した電文に対応するステータスを「警告終了」から「エラー」に変更し（ステップＳ１４６）、ステップＳ１４１の処理に戻る。
【００６２】
このように、変形例１では２回のプロセス（Ａ）による実行、あるいは、２個のプロセス（Ａ）の双方で電文に対するトランザクション処理が失敗した場合にステータスが「エラー」に変更されるため、その電文がエラー処理部１２３Ａによってエラー電文として判定される。仮に、ステップＳ１４２において指定されたプロセス（Ａ）がエラープロセスであり、電文にはエラーが無かった場合を考える。この場合、エラー処理部１２３Ａは、第２実施形態では電文がエラー電文であると判定されてしまうものの、変形例１では電文がエラー電文であるとは判定されなくなる。すなわち、変形例１のように複数回、あるいは、複数のプロセス（Ａ）によってトランザクション処理を実行することで、エラーのない電文をエラー電文と判定してしまう可能性を低くすることができる。
【００６３】
なお、上記の説明では予備プロセス１２２Ａは２個のプロセス（Ａ）に対して順番にトランザクション処理の指示をしていたが、更に多くのプロセス（Ａ）に対してトランザクション処理の指示をするようにしてもよい。この場合には、指示をした全てのプロセス（Ａ）においてトランザクション処理に失敗したときに、ステータスが「エラー」に変更されるようにすればよい。
【００６４】
また、予備プロセス１２２Ａは、１度目の指示を出したプロセス（Ａ）においてトランザクション処理が失敗してから、別のプロセス（Ａ）にトランザクション処理の指示をしていたが、まとめて複数のプロセス（Ａ）を指定してトランザクション処理の指示をするようにしてもよい。この場合には、指示をした全てのプロセス（Ａ）においてトランザクション処理が失敗したときにステータスが「エラー」に変更され、いずれかのプロセス（Ａ）においてトランザクション処理が成功したときにステータスが「正常終了」に変更されるようにすればよい。
【００６５】
また、エラー処理部１２３Ａは、図５に示すステップＳ１３４において、電文のステータスを「警告終了」に変更したプロセス（Ａ）をエラープロセスと判定するだけでなく、予備プロセス１２２Ａから指示されたプロセス（Ａ）のうちトランザクション処理が失敗したプロセス（Ａ）についてもエラープロセスと判定するようにしてもよい。そして、エラー処理部１２３Ａは、ステップＳ１３５においてエラープロセスと判定された全てのプロセス（Ａ）を停止させればよい。
【００６６】
なお、変形例１の構成は第２実施形態の変形として説明したが、第３実施形態の変形としても適用できる。また、変形例１の構成は第１実施形態にも適用可能である。第１実施形態に適用する場合には、予備プロセス（ｎ）がそれぞれ複数存在するようにして、各予備プロセス（ｎ）においてトランザクション処理が成功せず全て失敗した場合にステータスを「エラー」に変更するようにすればよい。
【００６７】
［変形例２］
上述した第１、第２、第３実施形態においてプロセスの数は９個であったが、更に多くてもよいし、少なくてもよく、プロセスの数は１個でもよい。また、第１実施形態において、同じ種類のトランザクション処理を実行するプロセス（ｎ）が複数存在してもよい。この場合には、エラープロセスと判定されたプロセス（ｎ）を停止させても、他のプロセス（ｎ）にてトランザクション処理が可能であるため、予備プロセス（ｎ）において停止させたプロセス（ｎ）の代わりの処理をしなくてもよい。
【００６８】
また、第２実施形態において、各プロセス（Ａ）が全ての取引種別のトランザクション処理を実行することが可能である構成でなくてもよい。例えば、プロセス（１Ａ）については取引種別「１」〜「４」のトランザクション処理の実行が可能であり、プロセス（２Ａ）については取引種別「３」〜「８」のトランザクション処理の実行が可能である構成としてもよい。このとき、取引種別のうち多くの処理要求に含まれる取引種別のトランザクション処理を、多くのプロセス（Ａ）において実行できるように重み付けして割り当てられていてもよい。例えば、取引種別「１」の処理要求が多く、取引種別「９」の処理要求が少ない場合、取引種別「１」のトランザクション処理をプロセス（１Ａ）〜（８Ａ）において実行可能としておき、取引種別「９」のトランザクション処理をプロセス（７Ａ）〜（９Ａ）において実行可能とすればよい。
【００６９】
［変形例３］
上述した第２実施形態において、予備プロセス１２２Ａは、自プロセスでトランザクション処理を実行せず、プロセス（Ａ）にトランザクション処理を実行させていたが、自プロセスでトランザクション処理を実行してもよい。この場合には、図１２に示すステップＳ１４２で予備プロセス１２２Ａが指定するプロセスの対象として、プロセス（Ａ）の他、予備プロセス１２２Ａについても対象とすればよい。なお、第３実施形態についても変形例３の構成を適用することができる。
【００７０】
［変形例４］
上述した第１、第２実施形態においては、電文の内容が含まれている取引名と、トランザクション処理の種類を示す取引種別と、電文の処理ステータスを示すステータスとが１つのテーブル１１０によって対応付けられていたが、これらの各情報が複数のテーブルによって対応付けられていてもよい。この例では各情報が２つのテーブルによって対応付けられている場合について説明する。
【００７１】
図１６は、本発明の変形例４におけるテーブルを説明する図である。図１６（ａ）、（ｂ）は、第１実施形態のテーブル１１０によって対応付けられていた各情報を、複数のテーブルで対応付けた例を示している。図１６（ａ）のテーブルは、電文識別子（ＺＡ、ＺＢ、・・・）と取引内容と取引種別とが対応付けられている。図１６（ｂ）のテーブルは、電文識別子とステータスとが対応付けられている。電文識別子は、図１６（ａ）のテーブルの情報と図１６（ｂ）のテーブルの情報とを対応付けるために決められた識別子である。この電文識別子は、例えば、外部ＩＦ２０からの処理要求が受け付けられる度にＣＰＵ１２０によって割り当てられるようにすればよい。
【００７２】
この２つのテーブルが用いられる場合、例えば、プロセス（１）は、図１６（ａ）のテーブルを参照して電文識別子ＺＡに対応付けられた電文に対してトランザクション処理を実行すると、図１６（ｂ）のテーブルによって電文識別子ＺＡに対応付けられたステータスを変更する。このように変形例４においては、第１実施形態のテーブル１１０が、外部ＩＦ２０からの処理要求に応じて書き換えられるテーブル（図１６（ａ））と、プロセス１２１および予備プロセス１２２での処理に応じて書き換えられるテーブル（図１６（ｂ））とに分けられていることになる。なお、対応付けられる各情報が複数のテーブルのいずれによって対応付けられるかについては、様々に決めることができる。また、取引種別を用いていない第３実施形態においても変形例４の構成は適用可能である。
【産業上の利用可能性】
【００７３】
本発明によれば、プロセスと予備プロセスを用いるので、プロセスの構成に冗長性を有するので、障害の発生によるトランザクション処理の停滞発生を抑制することもできる。また、冗長性を有しているにもかかわらず、トランザクション処理において生じた障害の要因を切り分けることができる。したがって、本発明は産業上有用である。
【符号の説明】
【００７４】
１，１Ａ，１Ｂ…情報処理システム、１０，１０Ａ，１０Ｂ…情報処理装置、２０…外部ＩＦ、３０…サーバ、１１０−１，１１０−２，１１０−３，１１０Ｂ−１，１１０Ｂ−２，１１０Ｂ−３…テーブル、１２０，１２０Ａ，１２０Ｂ…ＣＰＵ、１２１，１２１Ａ，１２１Ｂ…プロセス、１２２，１２２Ａ，１２２Ｂ…予備プロセス、１２３，１２３Ａ，１２３Ｂ…エラー処理部
【図１】
0005792055.tif 000002
【図２】
0005792055.tif 000003
【図３】
0005792055.tif 000004
【図４】
0005792055.tif 000005
【図５】
0005792055.tif 000006
【図６】
0005792055.tif 000007
【図７】
0005792055.tif 000008
【図８】
0005792055.tif 000009
【図９】
0005792055.tif 000010
【図１０】
0005792055.tif 000011
【図１１】
0005792055.tif 000012
【図１２】
0005792055.tif 000013
【図１３】
0005792055.tif 000014
【図１４】
0005792055.tif 000015
【図１５】
0005792055.tif 000016
【図１６】
0005792055.tif 000017