(57)【要約】【課題】同期的に実行されるサービスと非同期的に実行されるサービスが混在している場合であっても、非同期的に実行されたサービスのエラーのみを選別してエラーリカバリを実行すること。【解決手段】電文中継装置１００は、複数のサービスを呼び出すことにより実現される業務処理の実行を要求する要求電文が受信された場合に、業務処理定義情報１２１に従って、その業務処理に含まれるサービスを呼び出すための電文のやりとりをおこない、やりとりの結果を実行ログ１２２に記録する業務処理実行部１１２と、実行ログ１２２と業務処理定義情報１２１とを照合して、呼び出しが失敗し、かつ、呼び出し結果が要求電文の送信元へ応答されていないサービスの情報を抽出する未完業務処理抽出部１１３と、未完業務処理抽出部１１３によって抽出されたサービスの情報に基づいて、呼び出しが失敗したサービスの呼び出しを再実行する業務処理再実行部１１４とを備える。【選択図】        図４
2008171209.tif 000002
【特許請求の範囲】
【請求項１】
ネットワーク経由でサービスを呼び出すための電文を中継する電文中継プログラムであって、
複数のサービスを呼び出すことにより実現される業務処理の実行を要求する要求電文が受信された場合に、予め記憶手段に記憶されている業務処理定義情報に従って、該業務処理に含まれるサービスを呼び出すための電文のやりとりをおこない、それぞれのサービスを呼び出すための電文のやりとりの結果を実行ログとして記録する業務処理実行手順と、
前記実行ログと、前記業務処理定義情報において定義されているサービスの呼び出し手順に係る情報とを照合して、呼び出しが失敗し、かつ、呼び出し結果が前記要求電文の送信元へ応答されていないサービスの情報を抽出する未完了業務処理抽出手順と、
前記未完了業務処理抽出手順によって抽出されたサービスの情報に基づいて、呼び出しが失敗したサービスの呼び出しを再実行する業務処理再実行手順と
をコンピュータに実行させることを特徴とする電文中継プログラム。
【請求項２】
前記未完了業務処理抽出手順は、業務処理の実行結果が依頼元に応答された後に、非同期的にサービスの呼び出しをおこなうように前記業務処理定義情報に定義されている場合に、該サービスを、呼び出し結果が前記要求電文の送信元へ応答されていないサービスとみなすことを特徴とする請求項１に記載の電文中継プログラム。
【請求項３】
前記未完了業務処理抽出手順は、現在時刻から所定の補正時間を引いた時刻を上限時刻とし、前回起動されたときの上限時刻を下限時刻とした範囲で前記要求電文が受信された業務処理に含まれるサービスに関する情報のみを抽出することを特徴とする請求項１または２に記載の電文中継プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ネットワーク経由でサービスを呼び出すための電文を中継する電文中継プログラムに関し、特に、同期的に実行されるサービスと非同期的に実行されるサービスが混在している場合であっても、非同期的に実行されたサービスのエラーのみを選別してエラーリカバリを実行することができる電文中継プログラムに関する。
【背景技術】
【０００２】
コンピュータにおいて実行される処理が途中でエラー終了した場合に、データの整合性を保つ等の目的で、エラー終了した部分から処理を再実行することをエラーリカバリという。エラーリカバリの実現方式としては、処理の実行状況を記録した実行ログを参照してエラーの発生時点を特定し、その直前の部分から処理を再実行する方式が知られている（例えば、特許文献１）。
【０００３】
【特許文献１】特開２００１−１４１７５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ところで、近年、複数の情報処理システムを連携させるための技術であるＳＯＡ（Service Oriented Architecture）が注目されている。ＳＯＡは、情報処理システムがもつ機能をサービスとして公開し、電文のやりとりによってサービスの遠隔実行を可能にする技術であり、使用されているＯＳ（Operating System）やコンピュータ言語に関わりなく、情報処理システムの連携を実現することができる。
【０００５】
ＳＯＡに基づいて、複数の情報処理システムを連携させる場合、個別の情報処理システム毎に電文をやりとりすることとすると、連携させる情報処理システムが多くなるにつれて電文の呼び出し関係が複雑化する。そのため、電文を中継する電文中継装置（「ＨＵＢシステム」とも呼ばれる）を設け、この電文中継装置を介して電文のやりとりをおこなう方式がとられることが多い。
【０００６】
一般に、電文中継装置は、処理の要求元の処理を簡略化させるため、処理の実行を要求する電文に対して、単一のサービスを呼び出すだけではなく、予め定義されたフローに従って複数のサービスを呼び出してその結果を応答することができるように構成される。しかしながら、複数のサービスの呼び出しをフローとして定義する方式は、フローに含まれるサービスが多い場合には、要求元に応答が返るまでの時間を長くし、タイムアウトエラーが発生する可能性を高める。
【０００７】
この問題を解決する手法として、予め定義しておくフローを、処理の実行を要求する電文に対して同期的に実行されるフローと、要求元に応答を返した後に非同期的に実行されるフローとに分割する手法が有効であると考えられる。この手法をもちいる場合、同期的に実行されるフローに関しては、実行結果が要求元に応答されるため、エラーリカバリの実行を要求元に委ねることができる。
【０００８】
一方、非同期的に実行されるフローに関しては、実行結果が要求元に応答されないため、エラーリカバリを電文中継装置が確実におこなう必要がある。ところが、特許文献１にあるような従来技術は、同期的に実行されるサービスと非同期的に実行されるサービスを区別することができないため、非同期的に実行されたサービスのエラーのみを選別してエラーリカバリを実行することができなかった。
【０００９】
この発明は、上述した従来技術による問題点を解消するためになされたものであり、同期的に実行されるサービスと非同期的に実行されるサービスが混在している場合であっても、非同期的に実行されたサービスのエラーのみを選別してエラーリカバリを実行することができる電文中継プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
上述した課題を解決し、目的を達成するため、本発明の一つの態様では、ネットワーク経由でサービスを呼び出すための電文を中継する電文中継プログラムであって、複数のサービスを呼び出すことにより実現される業務処理の実行を要求する要求電文が受信された場合に、予め記憶手段に記憶されている業務処理定義情報に従って、該業務処理に含まれるサービスを呼び出すための電文のやりとりをおこない、それぞれのサービスを呼び出すための電文のやりとりの結果を実行ログとして記録する業務処理実行手順と、前記実行ログと、前記業務処理定義情報において定義されているサービスの呼び出し手順に係る情報とを照合して、呼び出しが失敗し、かつ、呼び出し結果が前記要求電文の送信元へ応答されていないサービスの情報を抽出する未完了業務処理抽出手順と、前記未完了業務処理抽出手順によって抽出されたサービスの情報に基づいて、呼び出しが失敗したサービスの呼び出しを再実行する業務処理再実行手順とをコンピュータに実行させることを特徴とする。
【００１１】
また、本発明の他の態様では、上記の発明の態様において、前記未完了業務処理抽出手順は、業務処理の実行結果が依頼元に応答された後に、非同期的にサービスの呼び出しをおこなうように前記業務処理定義情報に定義されている場合に、該サービスを、呼び出し結果が前記要求電文の送信元へ応答されていないサービスとみなすことを特徴とする。
【００１２】
これらの発明の態様によれば、サービスの呼び出し結果を記録した実行ログと、サービスの呼び出し手順を定義した業務処理定義情報とを照合して、再実行が必要なサービスの情報を抽出することとしたので、同期的に実行されるサービスと非同期的に実行されるサービスが混在している場合であっても、非同期的に実行されたサービスのエラーのみを選別してエラーリカバリを実行することができる。
【００１３】
また、本発明の他の態様では、上記の発明の態様において、前記未完了業務処理抽出手順は、現在時刻から所定の補正時間を引いた時刻を上限時刻とし、前回起動されたときの上限時刻を下限時刻とした範囲で前記要求電文が受信された業務処理に含まれるサービスに関する情報のみを抽出することを特徴とする。
【００１４】
この発明の態様によれば、参照範囲をずらしながら再実行が必要なサービスの情報を抽出することとしたので、データの重複抽出がなく、かつ、未完了の業務処理の情報を抽出することがないようにしながら、情報抽出を高速におこなうことができる。
【００１５】
なお、本発明の構成要素、表現または構成要素の任意の組合せを、方法、装置、システム、コンピュータプログラム、記録媒体、データ構造などに適用したものも本発明の態様として有効である。
【発明の効果】
【００１６】
本発明の一つの態様によれば、サービスの呼び出し結果を記録した実行ログと、サービスの呼び出し手順を定義した業務処理定義情報とを照合して、再実行が必要なサービスの情報を抽出することとしたので、同期的に実行されるサービスと非同期的に実行されるサービスが混在している場合であっても、非同期的に実行されたサービスのエラーのみを選別してエラーリカバリを実行することができるという効果を奏する。
【発明を実施するための最良の形態】
【００１７】
以下に添付図面を参照して、本発明に係る電文中継プログラムの好適な実施の形態を詳細に説明する。
【実施例】
【００１８】
まず、図１〜３に示した例に基づいて、本実施例に係る電文中継方法の概要について説明する。図１に示す例では、本実施例に係る電文中継方法を実行する電文中継装置１００と、電文中継装置１００に対して処理の実行を要求する電文を送信する要求元装置２００と、様々な機能をサービスとして提供する業務処理装置３００ａおよび３００ｂとがネットワークを介して接続されている。
【００１９】
電文中継装置１００には、業務処理装置３００ａが提供するサービスである処理Ａを実行するフローと、そのフローから派生して、業務処理装置３００ｂが提供するサービスである処理Ｂを非同期的に実行するフローとが１つの業務処理として予め登録されている。
【００２０】
そして、要求元装置２００がこの業務処理の実行を要求する入力電文Ｘを電文中継装置１００へ送信すると、電文中継装置１００は、予め登録されている定義に従って、処理Ａを呼び出すための入力電文Ａを生成して業務処理装置３００ａへ送信する。そして、電文中継装置１００は、業務処理装置３００ａから処理の結果を伝える出力電文Ａが応答されると、処理結果を伝えるための出力電文Ｘを要求元装置２００へ応答する。
【００２１】
このとき、電文中継装置１００は、出力電文Ａが処理Ａの正常終了を伝えるものであれば、予め登録されている定義に従って、処理Ｂを呼び出すための入力電文Ｂを生成して業務処理装置３００ｂへ送信する処理も実行し、処理の結果を伝える出力電文Ｂを待ち受ける。ここで、処理Ｂは、非同期的に実行するものと定義されているため、出力電文Ｂによって伝えられた処理Ｂの実行結果は、要求元装置２００へは応答されない。
【００２２】
この一連の動作において、電文中継装置１００は、呼び出したサービスの実行結果、すなわち、処理Ａおよび処理Ｂの実行結果を、そのサービスを呼び出すために使用した各種パラメータとともに実行ログ１２２に記録する。図１の例では、「Ｔ００１」という識別番号で識別される一連の処理で、処理Ａと処理Ｂが正常に終了した旨が、使用されたパラメータとともに実行ログ１２２に記録されている。
【００２３】
この例では、電文中継装置１００は、実行を要求された業務処理に含まれる処理Ａと処理Ｂのうち、処理Ａの実行が完了した段階で処理結果を要求元装置２００へ応答し、その後、処理Ｂを実行している。このように、処理Ｂを非同期的に実行すると、要求元装置２００へ応答が返されるタイミングが速くなり、要求元装置２００が早期に次の処理へ移行できるとともに、要求元装置２００において応答待ちのタイムアウトエラーが発生する可能性が低くなる。
【００２４】
その一方で、このように、処理Ｂを非同期的に実行することとすると、要求元装置２００は、処理Ａが正常に完了した段階で処理Ｂも正常に完了しているものとみなして次の処理へ移行するため、処理Ａが正常に完了した後に処理Ｂが異常終了した場合に、電文中継装置１００が処理Ｂのエラーリカバリを実行することが必要になる。そのため、電文中継装置１００は、定期的に実行ログ１２２を参照し、非同期的に実行した処理が異常終了していれば、その処理を再実行する。
【００２５】
例えば、電文中継装置１００は、図２に示すように、処理Ａが正常に完了した後に処理Ｂが異常終了した場合、その旨を実行ログ１２２に記録する。図２の例では、「Ｔ００２」という識別番号で識別される一連の処理で、処理Ａは正常に終了したが、処理Ｂは異常終了した旨が、使用されたパラメータとともに実行ログ１２２に記録されている。
【００２６】
そして、電文中継装置１００は、図３に示すように、定期的に実行ログ１２２を参照し、「Ｔ００２」という識別番号で識別される一連の処理で、処理Ｂが異常終了したことを認識すると、予め登録されているフローの定義を参照する。そして、一連の処理において処理Ｂが非同期的に実行されることを確認すると、実行ログ１２２に記録されているパラメータをもちいて処理Ｂを呼び出すための電文を再生成して業務処理装置３００ｂへ送信する。
【００２７】
ここで、処理Ｂが、「Ｔ００２」という識別番号で識別される一連の処理で同期的に実行される処理であった場合は、エラーの発生を要求元装置２００が把握し、必要な措置をおこなっているはずであるため、電文中継装置１００は、エラーリカバリを実行しない。
【００２８】
次に、図１に示した電文中継装置１００の構成について説明する。図４は、本実施例に係る電文中継装置１００の構成を示す機能ブロック図である。同図に示すように、電文中継装置１００は、制御部１１０と、記憶部１２０とを有する。制御部１１０は、電文中継装置１００を全体制御する制御部であり、要求電文処理部１１１と、業務処理実行部１１２と、未完業務処理抽出部１１３と、業務処理再実行部１１４とを有する。
【００２９】
要求電文処理部１１１は、予め定義されている業務処理の実行を要求する要求電文を要求元装置２００から受け付け、受け付けた要求電文に対応する業務処理の実行を業務処理実行部１１２に依頼し、実行結果を要求元装置２００へ応答する処理部である。要求電文には、実行すべき業務処理を識別するための情報と、業務処理の実行に必要な各種パラメータとが含まれる。なお、図４の例では、要求元装置２００を１台のみ図示しているが、要求元装置２００は何台あってもよい。
【００３０】
業務処理実行部１１２は、要求電文処理部１１１において受け付けられた要求電文に対応する業務処理を実行し、その結果を要求電文処理部１１１へ出力する処理部である。具体的には、業務処理実行部１１２は、要求電文処理部１１１から、要求電文に対応する業務処理の実行を依頼されると、まず、記憶部１２０の業務処理定義情報１２１を参照して、その業務処理に含まれるサービスに関する情報を取得する。
【００３１】
業務処理定義情報１２１の一例を図５に示す。同図に示すように、業務処理定義情報１２１は、業務処理ＩＤ、実行順序、サービス名、実行区分、送信先、電文仕様といった項目を有し、業務処理ＩＤ毎に、実行順序〜電文仕様といったサービスに関する情報を複数件登録することができる構成となっている。
【００３２】
業務処理ＩＤは、業務処理を識別するための識別番号である。実行順序は、業務処理に含まれるサービスの実行順序であり、サービス名は、サービスの名称である。実行区分は、そのサービスが同期的に実行されるか非同期的に実行されるかを示し、「同期」もしくは「非同期」が設定される。送信先は、そのサービスを呼び出すための電文の送信先のホスト名であり、電文仕様は、そのサービスを呼び出すための電文の仕様に関する情報である。
【００３３】
例えば、図５に示した例の１行目と２行目の情報は、「ＴＲ００１」という業務処理ＩＤで識別される業務処理は、まず、「ｏｎｌｉｎｅ０１」というホスト名をもつ業務処理装置へ電文を送信して「決済」という名称のサービスを実行し、続いて、「ｄａｉｌｙ０１」というホスト名をもつ業務処理装置へ電文を送信して「日計」という名称のサービスを実行する必要があることを示している。
【００３４】
また、１行目と２行目の実行区分は、それぞれ、「同期」と「非同期」となっており、「決済」という名称のサービスを実行した段階で要求元装置２００へその実行結果を応答し、「日計」という名称のサービスは、非同期的に実行すべきことを示している。
【００３５】
業務処理実行部１１２は、要求電文に含まれる業務処理ＩＤを検索キーとして業務処理定義情報１２１を検索し、サービスを呼び出す順序や、サービスを呼び出すために必要な電文のやりとりに関する情報、および、要求元装置２００へ実行結果を応答するタイミングに関する情報を取得する。
【００３６】
そして、業務処理実行部１１２は、取得した情報に基づいて、電文の生成と送受信を順次おこなっていき、呼び出したサービスの実行結果を記憶部１２０の実行ログ１２２に記録する。また、要求元装置２００へ実行結果を応答するタイミングで、それまでの処理結果を要求電文処理部１１１へ出力する
【００３７】
実行ログ１２２の一例を図６に示す。同図に示すように、実行ログ１２２は、起点識別ＩＤ、受付時刻、業務処理ＩＤ、サービス名、結果、送信先、送信電文、受信電文といった項目を有し、サービスの呼び出しが完了するたびに結果が１行ずつ追加される。
【００３８】
起点識別ＩＤは、業務処理に含まれる最初のサービスを呼び出す際に採番される識別番号であり、同一の要求電文に対応して呼び出される他のサービスの実行結果に対しても同じ番号が設定される。受付時刻は、要求電文が受け付けられた時刻である。
【００３９】
業務処理ＩＤは、業務処理を識別するための識別番号であり、業務処理定義情報１２１の業務処理ＩＤと対応する。サービス名は、サービスの名称であり、業務処理定義情報１２１のサービス名と対応する。結果は、サービスの実行結果を示し、「成功」もしくは「失敗」が設定される。送信先は、そのサービスを呼び出すための電文の送信先のホスト名であり、送信電文は、そのサービスを呼び出すために送信した電文の内容であり、受信電文は、そのサービスの実行結果として受信した電文の内容である。
【００４０】
未完業務処理抽出部１１３は、エラーリカバリを実現するために、定期的に実行ログ１２２を参照し、再実行が必要なサービスに関する情報を抽出する処理部である。具体的には、未完業務処理抽出部１１３は、実行ログ１２２を参照して、結果の項目が「失敗」となっているデータを見つけると、その行の業務処理ＩＤとサービス名の値を検索キーとして業務処理定義情報１２１を検索する。
【００４１】
そして、検索されたデータの実行区分の値が「非同期」となっていれば、すなわち、そのサービスが非同期で実行されるように定義されていれば、そのサービスを再実行が必要なサービスであると判定する。
【００４２】
なお、未完業務処理抽出部１１３の機能は、起動のたびに実行ログ１２２の先頭から再実行の要否を確認していくとすると、前回再実行対象として抽出されたデータが再度抽出されてしまう上に、抽出処理に要する時間が長くなる。また、実行ログ１２２の末尾付近には、業務処理全体としての処理結果が確定していないサービスの実行結果が記録されており、これを処理対象とすることは適切でない。
【００４３】
そこで、未完業務処理抽出部１１３は、起動のたびに、データの重複抽出がなく、かつ、未完了の業務処理の情報を抽出することがないように、実行ログ１２２の検索範囲を設定する。具体的には、現在時刻から所定の補正時間（業務処理がタイムアウトエラーになったと判定される時間よりも長いことが好ましい）を引いた時刻を上限とし、前回の起動時に上限とした時刻を下限とし、この範囲に受付時刻の値が収まるデータを検索対象とする。
【００４４】
そして、未完業務処理抽出部１１３は、設定した検索範囲で、実行ログ１２２から再実行が必要なサービスに関する情報を抽出した後、次回起動されたときのために、検索範囲の上限とした時刻を記憶部１２０に抽出時刻情報１２３として記憶させる。抽出時刻情報１２３に記憶された時刻は、次回起動時に、実行ログ１２２の検索範囲の下限となる。
【００４５】
業務処理再実行部１１４は、未完業務処理抽出部１１３によって抽出された情報に基づいて、再実行が必要なサービスを再実行する処理部である。具体的には、未完業務処理抽出部１１３によって実行ログ１２２から抽出されたデータの送信電文の項目に設定されている情報と、業務処理定義情報１２１に記憶されている、そのデータに対応するサービスを呼び出すための電文仕様とに基づいて、電文の再生成と再送信をおこない、その結果を記憶部１２０の再実行ログ１２４に記録する。再実行ログ１２４は、実行ログ１２２と同様のデータ構造を有する情報である。
【００４６】
また、業務処理再実行部１１４は、再実行ログ１２４を参照して、正常に完了していないサービスを再実行する処理もおこなう。再実行ログ１２４において結果が「失敗」となっているサービスの呼び出しは、業務処理再実行部１１４によって一旦再実行された際にも異常終了したものであり、ネットワーク等の障害よって呼び出しが失敗している可能性が高い。
【００４７】
そこで、再実行ログ１２４に基づくサービスの再実行は、自動的にはおこなわずに、管理者等の実行指示を待って実行される。ネットワーク経由のコマンド実行等により、再実行ログ１２４に基づくサービスの再実行の指示を管理者等から受けると、業務処理再実行部１１４は、再実行ログ１２４から再実行が必要なサービスの情報を抽出し、再実行をおこなう。この仕組みにより、ハードウェアの故障等により、再実行が失敗したサービスについても、確実にエラーリカバリをおこなうことが可能になる。
【００４８】
次に、図４に示した電文中継装置１００の処理手順について説明する。図７は、電文中継装置１００が要求元装置２００から要求電文を受信した場合の処理手順を示すフローチャートである。同図に示すように、電文中継装置１００の要求電文処理部１１１にて要求電文が受信されると（ステップＳ１０１）、業務処理実行部１１２は、業務処理定義情報１２１から実行すべきサービスに関する情報を取得する（ステップＳ１０２）。
【００４９】
そして、業務処理実行部１１２は、サービスの実行順序に従って、サービスを呼び出すための電文の生成と送信をおこない（ステップＳ１０３）、応答を待ち受ける（ステップＳ１０４）。ここで、サービスが正常に完了した旨の応答があった場合は（ステップＳ１０５肯定）、業務処理実行部１１２は、実行ログにサービスの呼び出しが成功した旨を記録する（ステップＳ１０６）。
【００５０】
続いて、業務処理実行部１１２は、呼び出したサービスが同期的に呼び出される最後のサービスであれば（ステップＳ１０７肯定）、要求電文処理部１１１経由で要求元装置２００へ業務処理が正常に完了した旨を応答する（ステップＳ１０８）。そして、呼び出したサービスが同期的に呼び出される最後のサービスであるか否かに関わらず、実行すべきサービスを全て実行済であれば（ステップＳ１０９肯定）、処理を終了し、さもなければ（ステップＳ１０９否定）、ステップＳ１０３に戻って、次のサービスの呼び出しをおこなう。
【００５１】
一方、ステップＳ１０４にて、サービスが異常終了した旨の応答があった場合は（ステップＳ１０５否定）、業務処理実行部１１２は、実行ログ１２２にサービスの呼び出しが失敗した旨を記録し（ステップＳ１１０）、呼び出したサービスが同期的に呼び出されるサービスであれば（ステップＳ１１１肯定）、要求電文処理部１１１経由で要求元装置２００へ業務処理が異常終了した旨を応答する（ステップＳ１１２）。そして、呼び出したサービスが同期的に呼び出されるサービスであるか否かに関わらず、処理を終了する。
【００５２】
図８は、電文中継装置１００が非同期処理を再実行する場合の処理手順を示すフローチャートである。この処理手順は、一定時間毎に制御部１１０によって起動される。
【００５３】
再実行の処理手順においては、まず、未完業務処理抽出部１１３が、現在時刻から所定の補正時間を引いたものを上限時刻とし（ステップＳ２０１）、抽出時刻情報１２３に記録されている時刻を下限時刻として（ステップＳ２０２）、この間に呼び出しが失敗したサービスの情報を実行ログ１２２から抽出する（ステップＳ２０３）。
【００５４】
そして、業務処理再実行部１１４が、抽出結果から未選択の情報を１件選択し（ステップＳ２０４）、選択できた場合は（ステップＳ２０５否定）、選択した情報に対応するサービスの詳細情報を業務処理定義情報１２１から取得する（ステップＳ２０６）。ここで、取得した情報から、選択したサービスが非同期的に実行されるものではないことが分かった場合は（ステップＳ２０７否定）、ステップＳ２０４に戻って、次の情報の選択を試みる。
【００５５】
一方、取得した情報から、選択したサービスが非同期的に実行されるものであることが分かった場合は（ステップＳ２０７肯定）、業務処理再実行部１１４は、サービスの再実行のための電文を再生成して再送信し（ステップＳ２０８）、応答を待ち受ける（ステップＳ２０９）。そして、サービスが正常に終了した旨の応答があった場合には（ステップＳ２１０肯定）、再実行ログ１２４にサービスの呼び出しが成功した旨を記録し（ステップＳ２１１）、さもなければ（ステップＳ２１０否定）、再実行ログ１２４にサービスの呼び出しが失敗した旨を記録する（ステップＳ２１２）。そして、ステップＳ２０４に戻って、次の情報の選択を試みる。
【００５６】
そして、ステップＳ２０４において全ての抽出結果を選択済であった場合は（ステップＳ２０５肯定）、業務処理再実行部１１４は、上限時刻を抽出時刻情報１２３に記録した後（ステップＳ２１３）、処理を終了する。
【００５７】
図９は、電文中継装置１００が再実行に失敗した処理を再実行する場合の処理手順を示すフローチャートである。この処理手順は、管理者等によって指示されたタイミングで起動される。
【００５８】
この処理手順においては、まず、業務処理再実行部１１４が、指定された上限時刻と下限時刻間で呼び出しが失敗したサービスの情報を再実行ログ１２４から抽出する（ステップＳ３０１）。
【００５９】
そして、業務処理再実行部１１４は、抽出結果から未選択の情報を１件選択し（ステップＳ３０２）、選択できた場合は（ステップＳ３０３否定）、選択した情報に対応するサービスの詳細情報を業務処理定義情報１２１から取得する（ステップＳ３０４）。そして、サービスの再実行のための電文を再生成して再送信し（ステップＳ３０５）、応答を待ち受ける（ステップＳ３０６）。
【００６０】
そして、サービスが正常に終了した旨の応答があった場合には（ステップＳ３０７肯定）、再実行ログ１２４にサービスの呼び出しが成功した旨を記録し（ステップＳ３０８）、さもなければ（ステップＳ３０７否定）、再実行ログ１２４にサービスの呼び出しが失敗した旨を記録する（ステップＳ３０９）。そして、ステップＳ３０２に戻って、次の情報の選択を試みる。
【００６１】
そして、ステップＳ３０２において全ての抽出結果を選択済であった場合は（ステップＳ３０３肯定）、業務処理再実行部１１４は、処理を終了する。
【００６２】
なお、図４に示した本実施例に係る電文中継装置１００の構成は、本発明の要旨を逸脱しない範囲で種々に変更することができる。例えば、電文中継装置１００の制御部１１０の機能をソフトウェアとして実装し、これをコンピュータで実行することにより、電文中継装置１００と同等の機能を実現することもできる。以下に、制御部１１０の機能をソフトウェアとして実装した電文中継プログラム１０７１を実行するコンピュータの一例を示す。
【００６３】
図１０は、電文中継プログラム１０７１を実行するコンピュータ１０００を示す機能ブロック図である。このコンピュータ１０００は、各種演算処理を実行するＣＰＵ（Central Processing Unit）１０１０と、ユーザからのデータの入力を受け付ける入力装置１０２０と、各種情報を表示するモニタ１０３０と、記録媒体からプログラム等を読み取る媒体読取り装置１０４０と、ネットワークを介して他のコンピュータとの間でデータの授受をおこなうネットワークインターフェース装置１０５０と、各種情報を一時記憶するＲＡＭ（Random Access Memory）１０６０と、ハードディスク装置１０７０とをバス１０８０で接続して構成される。
【００６４】
そして、ハードディスク装置１０７０には、図４に示した制御部１１０と同様の機能を有する電文中継プログラム１０７１と、図４に示した記憶部１２０に記憶される各種データに対応する電文中継用データ１０７２とが記憶される。なお、電文中継用データ１０７２を、適宜分散させ、ネットワークを介して接続された他のコンピュータに記憶させておくこともできる。
【００６５】
そして、ＣＰＵ１０１０が電文中継プログラム１０７１をハードディスク装置１０７０から読み出してＲＡＭ１０６０に展開することにより、電文中継プログラム１０７１は、電文中継プロセス１０６１として機能するようになる。そして、電文中継プロセス１０６１は、電文中継用データ１０７２から読み出した情報等を適宜ＲＡＭ１０６０上の自身に割り当てられた領域に展開し、この展開したデータ等に基づいて各種データ処理を実行する。
【００６６】
なお、上記の電文中継プログラム１０７１は、必ずしもハードディスク装置１０７０に格納されている必要はなく、ＣＤ−ＲＯＭ等の記憶媒体に記憶されたこのプログラムを、コンピュータ１０００が読み出して実行するようにしてもよい。また、公衆回線、インターネット、ＬＡＮ（Local Area Network）、ＷＡＮ（Wide Area Network）等を介してコンピュータ１０００に接続される他のコンピュータ（またはサーバ）等にこのプログラムを記憶させておき、コンピュータ１０００がこれらからプログラムを読み出して実行するようにしてもよい。
【００６７】
上述してきたように、本実施例では、サービスの呼び出し結果を記録した実行ログと、サービスの呼び出し手順を定義した業務処理定義情報とを照合して、再実行が必要なサービスの情報を抽出することとしたので、同期的に実行されるサービスと非同期的に実行されるサービスが混在している場合であっても、非同期的に実行されたサービスのエラーのみを選別してエラーリカバリを実行することができる。
【００６８】
（付記１）ネットワーク経由でサービスを呼び出すための電文を中継する電文中継プログラムであって、
複数のサービスを呼び出すことにより実現される業務処理の実行を要求する要求電文が受信された場合に、予め記憶手段に記憶されている業務処理定義情報に従って、該業務処理に含まれるサービスを呼び出すための電文のやりとりをおこない、それぞれのサービスを呼び出すための電文のやりとりの結果を実行ログとして記録する業務処理実行手順と、
前記実行ログと、前記業務処理定義情報において定義されているサービスの呼び出し手順に係る情報とを照合して、呼び出しが失敗し、かつ、呼び出し結果が前記要求電文の送信元へ応答されていないサービスの情報を抽出する未完了業務処理抽出手順と、
前記未完了業務処理抽出手順によって抽出されたサービスの情報に基づいて、呼び出しが失敗したサービスの呼び出しを再実行する業務処理再実行手順と
をコンピュータに実行させることを特徴とする電文中継プログラム。
【００６９】
（付記２）前記未完了業務処理抽出手順は、業務処理の実行結果が依頼元に応答された後に、非同期的にサービスの呼び出しをおこなうように前記業務処理定義情報に定義されている場合に、該サービスを、呼び出し結果が前記要求電文の送信元へ応答されていないサービスとみなすことを特徴とする付記１に記載の電文中継プログラム。
【００７０】
（付記３）前記未完了業務処理抽出手順は、現在時刻から所定の補正時間を引いた時刻を上限時刻とし、前回起動されたときの上限時刻を下限時刻とした範囲で前記要求電文が受信された業務処理に含まれるサービスに関する情報のみを抽出することを特徴とする付記１または２に記載の電文中継プログラム。
【００７１】
（付記４）前記業務処理再実行手順は、前記未完了業務処理抽出手順によって抽出されたサービスの情報に基づいて、呼び出しが失敗したサービスの呼び出しを再実行した結果を第２の実行ログに記録し、所定のタイミングで、前記第２の実行ログに呼び出しが失敗した旨が記録されているサービスの呼び出しを再実行することを特徴とする付記１〜３のいずれか１つに記載の電文中継プログラム。
【００７２】
（付記５）ネットワーク経由でサービスを呼び出すための電文を中継する電文中継装置であって、
複数のサービスを呼び出すことにより実現される業務処理の実行を要求する要求電文が受信された場合に、予め記憶手段に記憶されている業務処理定義情報に従って、該業務処理に含まれるサービスを呼び出すための電文のやりとりをおこない、それぞれのサービスを呼び出すための電文のやりとりの結果を実行ログとして記録する業務処理実行手段と、
前記実行ログと、前記業務処理定義情報において定義されているサービスの呼び出し手段に係る情報とを照合して、呼び出しが失敗し、かつ、呼び出し結果が前記要求電文の送信元へ応答されていないサービスの情報を抽出する未完了業務処理抽出手段と、
前記未完了業務処理抽出手段によって抽出されたサービスの情報に基づいて、呼び出しが失敗したサービスの呼び出しを再実行する業務処理再実行手段と
を備えたことを特徴とする電文中継装置。
【００７３】
（付記６）ネットワーク経由でサービスを呼び出すための電文を中継する電文中継方法であって、
複数のサービスを呼び出すことにより実現される業務処理の実行を要求する要求電文が受信された場合に、予め記憶手段に記憶されている業務処理定義情報に従って、該業務処理に含まれるサービスを呼び出すための電文のやりとりをおこない、それぞれのサービスを呼び出すための電文のやりとりの結果を実行ログとして記録する業務処理実行工程と、
前記実行ログと、前記業務処理定義情報において定義されているサービスの呼び出し工程に係る情報とを照合して、呼び出しが失敗し、かつ、呼び出し結果が前記要求電文の送信元へ応答されていないサービスの情報を抽出する未完了業務処理抽出工程と、
前記未完了業務処理抽出工程によって抽出されたサービスの情報に基づいて、呼び出しが失敗したサービスの呼び出しを再実行する業務処理再実行工程と
を含んだことを特徴とする電文中継方法。
【産業上の利用可能性】
【００７４】
以上のように、本発明に係る電文中継プログラムは、ネットワーク経由でサービスを呼び出すための電文の中継に有用であり、特に、同期的に実行されるサービスと非同期的に実行されるサービスが混在している場合であっても、非同期的に実行されたサービスのエラーのみを選別してエラーリカバリを実行することが必要な場合に適している。
【図面の簡単な説明】
【００７５】
【図１】本実施例に係る電文中継方法の概要を説明するための図である。
【図２】非同期的に実行されるフローが失敗した場合について説明するための図である。
【図３】非同期的に実行されるフローの再実行について説明するための図である。
【図４】本実施例に係る電文中継装置の構成を示す機能ブロック図である。
【図５】業務処理定義情報のデータ構成の一例を示す図である。
【図６】実行ログのデータ構成の一例を示す図である。
【図７】電文中継装置が要求電文を受信した場合の処理手順を示すフローチャートである。
【図８】電文中継装置が非同期処理を再実行する場合の処理手順を示すフローチャートである。
【図９】電文中継装置が再実行に失敗した処理を再実行する場合の処理手順を示すフローチャートである。
【図１０】電文中継プログラムを実行するコンピュータを示す機能ブロック図である。
【符号の説明】
【００７６】
１００  電文中継装置
１１０  制御部
１１１  要求電文処理部
１１２  業務処理実行部
１１３  未完業務処理抽出部
１１４  業務処理再実行部
１２０  記憶部
１２１  業務処理定義情報
１２２  実行ログ
１２３  抽出時刻情報
１２４  再実行ログ
２００  要求元装置
３００ａ〜３００ｎ  業務処理装置
１０００  コンピュータ
１０１０  ＣＰＵ
１０２０  入力装置
１０３０  モニタ
１０４０  媒体読取り装置
１０５０  ネットワークインターフェース装置
１０６０  ＲＡＭ
１０６１  電文中継プロセス
１０７０  ハードディスク装置
１０７１  電文中継プログラム
１０７２  電文中継用データ
１０８０  バス
【図１】
2008171209.tif 000003
【図２】
2008171209.tif 000004
【図３】
2008171209.tif 000005
【図４】
2008171209.tif 000006
【図５】
2008171209.tif 000007
【図６】
2008171209.tif 000008
【図７】
2008171209.tif 000009
【図８】
2008171209.tif 000010
【図９】
2008171209.tif 000011
【図１０】
2008171209.tif 000012