(57)【特許請求の範囲】
【請求項１】
複数のアプリケーションサーバ、及びバッチサーバを備えるバッチ処理システムであって、
前記アプリケーションサーバそれぞれは、
クライアント端末からのアクセスを受け付けてオンライン処理を実行し、該オンライン処理において前記クライアント端末からの入力操作を受け付けるオンラインアプリケーション部と、
前記オンライン処理で得られたデータを入力データとしてキューに格納する入力データ処理部と、
前記キューに格納された前記入力データを順次取得し、該取得した入力データごとに、バッチ処理として構成されたジョブステップのうち自アプリケーションサーバで先行処理可能な第１ジョブステップの処理を実行し、該実行して得られた先行処理データを先行処理データファイルに記録する先行処理部と、を含み、
前記バッチサーバは、
前記複数のアプリケーションサーバの各先行処理データファイルを収集してマージするマージ処理部と、
前記マージされた先行処理データファイルに基づいて、前記先行処理データを順次読み込み、前記バッチ処理として構成されたジョブステップのうち前記第１ジョブステップを除いた第２ジョブステップの処理を実行するバッチ処理部と、を含むバッチ処理システム。
【請求項２】
前記クライアント端末からの入力操作は、データの作成、更新、及び削除のいずれかの入力操作であり、
前記入力データ処理部は、前記入力データ、及び該入力データに対応する前記入力操作の種類をキューに格納する、請求項１に記載のバッチ処理システム。
【請求項３】
前記先行処理データファイルは、前記入力データの作成処理を記録する作成ファイルと、前記入力データの更新処理を記録する更新ファイルと、前記入力データの削除処理を記録する削除ファイルと、前記作成ファイル、前記更新ファイル及び前記削除ファイルのいずれかのファイルが記録された場合に該記録内容を記録するインデックスファイルとで構成され、
前記マージ処理部は、前記複数のアプリケーションサーバの各先行処理データファイルを収集し、該各先行処理データファイルに含まれる各インデックスファイルの記録内容をマージし、
前記バッチ処理部は、前記マージされたインデックスファイルの記録内容に基づいて、前記先行処理データを順次読み込み、前記第２ジョブステップの処理を実行する、請求項２に記載のバッチ処理システム。
【請求項４】
前記バッチサーバにアクセスし、前記バッチ処理として構成されたジョブステップを解析する解析部、該解析した結果、前記アプリケーションサーバで先行処理可能な第１ジョブステップを抽出する抽出部、及び該抽出された前記第１ジョブステップの処理を前記アプリケーションサーバに配置する配置部を含むジョブステップ分配装置を更に備える、請求項１〜請求項３のいずれか１項に記載のバッチ処理システム。
【請求項５】
前記ジョブステップ分配装置は、
前記複数のアプリケーションサーバにアクセスし、前記第１ジョブステップの処理対象となる入力データを扱うオンラインアプリケーションを特定するオンラインアプリケーション特定部を更に含む、請求項４に記載のバッチ処理システム。
【請求項６】
前記複数のアプリケーションサーバにより出力される前記先行処理データを格納する共有メモリを更に備え、
前記マージ処理部は、前記複数のアプリケーションサーバの各先行処理データを前記共有メモリから収集してマージ処理する、請求項１〜請求項５のいずれか１項に記載のバッチ処理システム。
【請求項７】
複数のアプリケーションサーバ、及びバッチサーバを備えるシステムのバッチ処理方法であって、
前記アプリケーションサーバが、クライアント端末からのアクセスを受け付けてオンライン処理を実行し、該オンライン処理において前記クライアント端末からの入力操作を受け付ける段階と、
前記アプリケーションサーバが、前記オンライン処理で得られたデータを入力データとしてキューに格納する段階と、
前記アプリケーションサーバが、前記キューに格納された前記入力データを順次取得し、該取得した入力データごとに、バッチ処理として構成されたジョブステップのうち自アプリケーションサーバで先行処理可能な第１ジョブステップの処理を実行し、該実行して得られた先行処理データを先行処理データファイルに記録する段階と、
前記バッチサーバが、前記複数のアプリケーションサーバの各先行処理データファイルを収集してマージする段階と、
前記バッチサーバが、前記マージ処理された先行処理データファイルに基づいて、前記先行処理データを順次読み込み、前記バッチ処理として構成されたジョブステップのうち前記第１ジョブステップを除いた第２ジョブステップの処理を実行する段階と、を含むバッチ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バッチ処理システム、及びバッチ処理方法に関する。
【背景技術】
【０００２】
近年、アプリケーションサーバでオンライン処理されるデータ量の増加とともに、バッチサーバでバッチ処理されるデータ量も増加している。そのため、バッチサーバが、アプリケーションサーバにおいてオンライン処理された一つ一つのバッチ処理対象データを逐次バッチ処理する場合、そのバッチ処理にかかる処理時間が増大してしまい、特に、バッチ処理が予め決められた時刻で開始され、且つ、予め決められた時刻までに終了する必要がある場合に問題となっている。
【０００３】
このような問題を解決するため、従来では、バッチ処理が予定時刻までに終了しないと予想される場合にバッチ処理の開始時刻を早めることで、終了予定時刻までにバッチ処理を完了する方法や、バッチ処理対象データを分割して並列実行することでバッチ処理の実行時間を短縮する方法が考えられていた。また、バッチ処理対象データの増加を予測し、システム導入段階で、バッチ処理で実施すべき処理をオンライン処理自体に組み込んで実装するように設計することも考えられる。
【０００４】
なお、従来のオンライン処理とバッチ処理の連携システムの例としては、特許文献１等に開示されている。例えば、特許文献１は、アプリケーションサーバにてバッチ対象データが確定していない状態であっても、バッチ処理対象データが発生した時点で該データをロット化して、バッチサーバにおいてバッチ処理を開始するものであり、いわゆるバッチ処理の開始時刻を早めるシステムが開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−９７４７６号公報
【特許文献２】特開２００５−７１１７１号公報
【特許文献３】特開２００７−２４９４９１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来の上述したバッチ処理方法では、種々の問題点が存在する。例えば、バッチ処理の開始時刻を早めることで、終了予定時刻までにバッチ処理を完了する方法では、バッチ処理の開始時刻の直前までオンライン処理が実行される場合などのバッチ処理の開始時刻を早くすることができないケースでは、バッチ処理を終了予定時刻までに終了させることはできない。また、バッチ処理対象データを分割して並列実行する方法では、バッチ処理を並列に実行するためのマシンリソースを確保する必要があるため、バッチサーバのマシン増設等のコストがかかってしまう。さらに、バッチ処理対象データの増加を予測し、システム導入段階で、バッチ処理で実施すべき処理をオンライン処理自体に組み込んで実装するように設計する場合、既存のバッチ処理等の定義の変更にかかる開発コストが増大するとともに、予測したとおりにバッチ処理対象データが増加しなかったとき、そのバッチ処理等の定義の変更の作りこみが無駄になってしまい、また、システムの運用開始後に新たなバッチ処理を適用する場合に、オンライン処理自体の修正も必要になってしまう。
【０００７】
そこで、本発明は、かかる事情に鑑みてなされたものであり、バッチサーバの増設やバッチ処理の定義を変更せずに、バッチサーバにおけるバッチ処理の実行時間を短縮することができる新しいバッチ処理システム等を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明にかかるバッチ処理システムは、複数のアプリケーションサーバ、及びバッチサーバを備えるバッチ処理システムであって、アプリケーションサーバそれぞれは、クライアント端末からのアクセスを受け付けてオンライン処理を実行し、該オンライン処理において前記クライアント端末からの入力操作を受け付けるオンラインアプリケーション部と、オンライン処理で得られたデータを入力データとしてキューに格納する入力データ処理部と、キューに格納された入力データを順次取得し、該取得した入力データごとに、バッチ処理として構成されたジョブステップのうち自アプリケーションサーバで先行処理可能な第１ジョブステップの処理を実行し、該実行して得られた先行処理データを先行処理データファイルに記録する先行処理部と、を含み、バッチサーバは、複数のアプリケーションサーバの各先行処理データファイルを収集してマージするマージ処理部と、該マージされた先行処理データファイルに基づいて、先行処理データを順次読み込み、バッチ処理として構成されたジョブステップのうち第１ジョブステップを除いた第２ジョブステップの処理を実行するバッチ処理部と、を含む。
【０００９】
本発明にかかるバッチ処理方法は、複数のアプリケーションサーバ、及びバッチサーバを備えるシステムのバッチ処理方法であって、アプリケーションサーバが、クライアント端末からのアクセスを受け付けて、オンライン処理を実行し、該オンライン処理において前記クライアント端末からの入力操作を受け付ける段階と、アプリケーションサーバが、オンライン処理で得られたデータを入力データとしてキューに格納する段階と、アプリケーションサーバが、キューに格納された入力データを順次取得し、該取得した入力データごとに、バッチ処理として構成されたジョブステップのうち自アプリケーションサーバで先行処理可能な第１ジョブステップの処理を実行し、該実行して得られた先行処理データを先行処理データファイルに記録する段階と、バッチサーバが、複数のアプリケーションサーバの各先行処理データファイルを収集してマージする段階と、バッチサーバが、マージ処理された先行処理データファイルに基づいて、先行処理データを順次読み込み、バッチ処理として構成されたジョブステップのうち第１ジョブステップを除いた第２ジョブステップの処理を実行する段階と、を含む。
【発明の効果】
【００１０】
以上のように構成された本発明のバッチ処理システム等によれば、バッチ処理を構成する一部のジョブステップの処理をアプリケーションサーバに先行処理させることで、バッチサーバにおけるバッチ処理の実行時間を短縮することができる。また、システムの運用開始後であっても、大容量データに対応したバッチ処理システムとして容易に構成変更することができる。さらに、バッチサーバの追加や増強をせずに、また、既存のバッチ処理の定義を変更することなく、アプリケーションサーバをスケールアウトするだけでシステムにおけるバッチ処理の処理能力を拡張することができる。
【図面の簡単な説明】
【００１１】
【図１】第１実施形態のシステムの概略構成の一例を示す図である。
【図２】第１実施形態のクライアント端末やアプリケーションサーバ等のハードウェア構成例を示す概略図である。
【図３】第１実施形態の先行処理部の概略構成の一例を示す図である。
【図４】第１実施形態の先行処理データファイルの構成の一例を示す図である。
【図５】第１実施形態のバッチ処理方法の処理内容を示すフローチャートである。
【図６】第１実施形態のバッチ処理方法の処理内容を示すフローチャートである。
【図７】第１実施形態のオンライン処理・バッチ処理で扱うデータの具体的な内容を例示した図である。
【図８】第１実施形態の先行処理データファイルの具体的な内容を例示した図である。
【図９】従来のバッチ処理システムの概略構成の一例を示す図である。
【図１０】第１実施形態のシステムと従来のシステムの動作フローを例示した図である。
【図１１】第２実施形態のバッチ処理システムの概略構成の一例を示す図である。
【図１２】第３実施形態のバッチ処理システムの概略構成の一例を示す図である。
【図１３】第３実施形態のオンライン処理・バッチ処理で扱うデータの具体的な内容を例示した図である。
【図１４】第３実施形態の先行処理データファイルの具体的な内容を例示した図である。
【図１５】第４実施形態のバッチ処理システムの概略構成の一例を示す図である。
【発明を実施するための形態】
【００１２】
以下、本発明を実施するための好適な各実施形態を、図面を参照しながら説明する。
【００１３】
＜第１実施形態＞
図１は、本発明の第１実施形態のシステム１の概略構成の一例を示す図である。なお、本実施形態のシステム１は、オンライン処理中に発生した入力データに対して所定の処理を行い、該処理の結果を出力データとして所定のデータベースに記録処理するといった一連の処理（ジョブステップ）を含むバッチ処理を実行する場合を例にとって説明する。
【００１４】
システム１は、図１に示すとおり、複数のクライアント端末１０と、複数のアプリケーションサーバ２０ａ〜２０ｚと、バッチサーバ３０と、時刻サーバ４０と、バッチ処理用の入力データ（処理対象データ）を格納する入力データベース５０と、バッチ処理後の出力データを格納する出力データベース６０と、を含んで構成され、これらは必要に応じて通信ネットワークを介して相互に通信可能に接続されている。なお、クライアント端末１０、複数のアプリケーションサーバ２０ａ〜２０ｚ、バッチサーバ３０、及び時刻サーバ４０は、ハードウェアとして、図２に示すように、例えば、ＣＰＵ、ＣＰＵにバス結合されたＲＯＭ、ＲＡＭ、記憶部、入力部、表示部、および入出力インタフェースなど、通常のコンピュータ装置と同様のハードウェアを備える。また、これらの各サーバや端末は、物理的には、専用化したシステム、あるいは汎用の情報処理装置のいずれであってもよい。たとえば、一般的な構成の情報処理装置において、本発明のバッチ処理方法における各処理を規定したソフトウェアを起動することにより、アプリケーションサーバやバッチサーバを実現することもできる。
【００１５】
クライアント端末１０は、アプリケーションサーバ２０ａ〜２０ｚにアクセスし、アプリケーションのオンライン処理中に発生する入力データの作成、更新、又は削除を操作する端末である。なお、クライアント端末１０の構成および機能は、原則として、従来のアプリケーションサーバにアクセスし、オンラインアプリケーション（オンライン処理で実行するアプリケーション）を利用可能なクライアント端末と同様の構成および機能とすることができる。また、クライアント端末１０の数は、本実施形態では特に制限されず、少なくとも１つ以上あればよい。
【００１６】
アプリケーションサーバ２０ａ〜２０ｚは、それぞれオンライン処理を実行するサーバである。なお、アプリケーションサーバ２０ａ〜２０ｚは、それぞれの構成を共通とすることができるので、以下では、アプリケーションサーバ２０ａを例にとってその構成を説明する。
【００１７】
アプリケーションサーバ２０ａは、オンラインアプリケーション部２１、入力データ処理部２２、キュー部２３、及び先行処理部２４を含んで構成される。
【００１８】
オンラインアプリケーション部２１は、ネットワークを通じてクライアント端末１０からのアクセスを受け付けて、オンライン処理を実行する。また、オンラインアプリケーション部２１は、オンライン処理中にクライアント端末１０からの入力操作を受け付ける。クライアント端末からの入力操作は、データの作成、更新、及び削除のいずれかの入力操作であり得る。すなわち、オンラインアプリケーション部２１は、オンライン処理においてクライアント端末１０から入力されたデータの作成処理、更新処理、及び削除処理のいずれかの処理をハンドリングすることができる。
【００１９】
入力データ処理部（入力データハンドラ）２２は、オンライン処理で得られたデータを入力データとしてキュー部２３に格納する。また、入力データ処理部２２は、入力データとともに、該入力データに対応する前記入力操作の種類もキュー部２３に格納することができる。なお、この入力データは、バッチ処理を行うバッチ処理対象データである。
【００２０】
キュー部（キュー）２３は、入力データ（バッチ処理対象データ）ごとに、入力データ及び該入力データの処理内容（例えば、作成、更新、又は削除）を順次格納する。なお、キュー部２３は、非同期キューであることが望ましい。
【００２１】
先行処理部２４は、図３に示すように、データ取得部（キューデータ取得部）２４１、データ処理部（データ加工処理部）２４２、及びファイルデータ記録部（ファイルデータ書込み部）２４３で構成され、データ取得部２４１がキュー部２３に格納された入力データを順次取得し、データ処理部２４２が、該取得した入力データごとに、バッチサーバ３０においてバッチ処理として構成されたジョブステップのうち自アプリケーションサーバ２０ａで先行処理可能な第１ジョブステップの処理を実行し、ファイルデータ記録部２４３が、該実行した結果（先行処理データ）を先行処理データファイルに記録する。なお、第１ジョブステップは、例えば、バッチ処理として定義されるジョブステップのうちトランザクショナル処理を行わないジョブステップである。
【００２２】
ここで、先行処理データファイルは、例えば、図４に示すように、入力データの作成処理を記録する作成ファイル（ＩＮＳＥＲＴファイル）と、入力データの更新処理を記録する更新ファイル（ＵＰＤＡＴＥファイル）と、入力データの削除処理を記録する削除ファイル（ＤＥＬＥＴＥファイル）と、作成ファイル、更新ファイル及び削除ファイルのいずれかのファイルが記録された場合に該記録内容を記録するインデックスファイル（ＩＮＤＥＸファイル）とを含んで構成することができる。このように先行処理データファイルが構成される場合、先行処理部２４は、先行処理データファイルに記録する際に、オンライン処理中に発生した入力データの処理内容（作成処理、更新処理、又は削除処理）に応じて、先行処理データの記録先を振り分けて記録し、且つ、先行処理データファイルが更新されたことをインデックスファイルに記録する。なお、先行処理データファイルは、上述のものに限られず、アプリケーションサーバにおいてオンライン処理中に発生した入力データやその処理内容に応じて、適宜変更することができる。
【００２３】
バッチサーバ３０は、マージ処理部３１と、バッチ処理部３２とを含んで構成される。
【００２４】
マージ処理部３１は、複数のアプリケーションサーバ２０ａ〜２０ｚの各先行処理データファイルを収集してマージする。
【００２５】
バッチ処理部３２は、マージ処理された先行処理データファイル（マージファイル）に基づいて、バッチ処理として構成されたジョブステップのうち第１ジョブステップを除いた第２ジョブステップの処理を実行する。バッチ処理部３２は、第２ジョブステップの処理された結果（出力データ）を出力データベース６０に記憶する。なお、第２ジョブステップは、例えば、第１ジョブステップとは異なり、バッチ処理として定義されるジョブステップのうちトランザクショナル処理を行うジョブステップである。
【００２６】
ここで、先行処理データファイルが、例えば、図４に示すような先行処理データファイルで構成される場合、マージ処理部３１は、複数のアプリケーションサーバ２０ａ〜２０ｚの各先行処理データファイルを収集し、該各先行処理データファイルに含まれる各インデックスファイルの記録内容をマージする。そして、バッチ処理部３２は、マージされたインデックスファイル（インデックスマージファイル）の記録内容に従って、該当する先行処理データを作成ファイル、更新ファイル及び削除ファイルのいずれかのファイルを順次読み込み、第２ジョブステップの処理を実行する。
【００２７】
時刻サーバ４０は、各アプリケーションサーバ２０ａ〜２０ｚの時刻を同期するためのサーバである。なお、時刻サーバ４０の構成および機能は、原則として、従来の複数のアプリケーションサーバの時刻を同期する一般的な時刻サーバと同様の構成および機能とすることができる。
【００２８】
入力データベース５０は、各アプリケーションサーバ２０ａ〜２０ｚでオンライン処理中に発生したバッチ処理用の入力データ（バッチ処理対象データ）を格納するデータベースである。なお、入力データベース５０は、省略することもできる。
【００２９】
出力データベース６０は、バッチサーバ３０においてバッチ処理されて出力された出力データを記憶するデータベースである。
【００３０】
以下、図５及び図６に示すフローチャートを参照して、本実施形態のバッチ処理方法を説明する。なお、以下の説明では、各アプリケーションサーバ２０ａ，２０ｂにおいてオンライン処理で実行するアプリケーションとして、例えば、図７に示すように、支店ごとの勤務管理テーブルにクライアント端末から入力データ（社員ＩＤ、就業開始時刻、就業終了時刻）を作成・更新・削除することができるものを例にとって説明する。また、上述の第１ジョブステップの処理として、入力データ（社員ＩＤ、就業開始時刻、及び就業終了時刻）を受け取り、これらから作業時間の計算処理を行い、該作業時間の計算結果等を先行処理データ（社員ＩＤ、日付、作業時間）として出力するものとする。さらに、上述の第２ジョブステップの処理として、各アプリケーションサーバ２０ａ，２０ｂで生成された先行処理データに記載されているデータを出力データとして本社勤務管理テーブル（出力データベース）に記録するものとする。
【００３１】
まず、図５を参照して、アプリケーションサーバ２０ａにおける動作処理を例にとって説明するが、アプリケーションサーバ２０ｂもアプリケーションサーバ２０ａと同様に動作処理することができる。なお、図５のフローチャートで示される各処理は、処理内容に矛盾を生じない範囲で任意に順番を変更して又は並列に実行することができる。
【００３２】
アプリケーションサーバ２０ａは、クライアント端末１０からのアクセスを受け付けて、オンライン処理を実行する（ステップＳ１００）。
【００３３】
次いで、アプリケーションサーバ２０ａは、オンライン処理においてクライアント端末１０から入力された入力データの各処理（作成処理、更新処理、及び削除処理の少なくとも１つの処理）をハンドリングする（ステップＳ１０１）。例えば、図７に示すように、アプリケーションサーバ２０ａはＡ支店の勤務管理テーブルを管理し、アプリケーションサーバ２０ｂはＢ支店の勤務管理テーブルを管理するものとすると、アプリケーションサーバ２０ａは、Ａ支店の勤務管理テーブルに対して、クライアント端末１０から入力された入力データ〔社員ＩＤ（００００１）、開始時刻（２０１０年２月１日８：３０）、及び終了時刻（２０１０年２月１日１７：１５）〕の作成処理をハンドリングする。
【００３４】
入力データの処理の完了を検知すると（ステップＳ１０２：Ｙｅｓ）、アプリケーションサーバ２０ａは、該入力データをキュー部２３に格納する（ステップＳ１０３）。
【００３５】
一方、入力データの処理の完了を検知しない場合（ステップＳ１０２：Ｎｏ）、アプリケーションサーバ２０ａは、検知するまで待機する。なお、検知せずに、本処理フローを終了してもよい。
【００３６】
次いで、アプリケーションサーバ２０ａは、キュー部２３に格納された入力データを順次取得する（ステップＳ１０４）。例えば、図７に示すように、アプリケーションサーバ２０ａでは、社員ＩＤ（００００１）等の情報、社員ＩＤ（００００３）等の入力データを順次取得する。
【００３７】
アプリケーションサーバ２０ａは、バッチサーバ３０においてバッチ処理として構成されたジョブステップのうち自アプリケーションサーバで先行処理可能な第１ジョブステップの処理を実行する（ステップＳ１０５）。例えば、図７に示すように、アプリケーションサーバ２０ａでは、社員ＩＤ（００００１）の就業開始時刻（８：３０）及び就業終了時刻（１７：１５）の情報から、作業時間の計算処理を行い、計算処理された結果（７．７５ｈ）は先行処理データとして扱われる。
【００３８】
アプリケーションサーバ２０ａは、入力データの処理内容が作成処理であれば（ステップＳ１０６：Ｙｅｓ）、該処理された入力データ（先行処理データ）を先行処理データファイルの作成ファイルに記録する（ステップＳ１０７）。例えば、図８に示すように、図７に示す社員ＩＤ（００００１）に関する先行処理データは作成ファイルに記録される。
【００３９】
アプリケーションサーバ２０ａは、入力データの処理内容が更新処理であれば（ステップＳ１０８：Ｙｅs）、先行処理データを先行処理データファイルの更新ファイルに記録する（ステップＳ１０９）。
【００４０】
アプリケーションサーバ２０ａは、入力データの処理内容が、削除処理であれば（ステップＳ１１０：Ｙｅs）、先行処理データを先行処理データファイルの削除ファイルに記録する（ステップＳ１１１）。
【００４１】
アプリケーションサーバ２０ａは、ステップＳ１０７、ステップＳ１０９、ステップＳ１１１の各処理後、先行処理データファイルのインデックスファイルに記録内容が更新されたことを記録する（ステップＳ１１２）。例えば、図８に示すように、インデックスファイルにおいて、社員ＩＤおよび日付情報をレコード特定キーとして、対象ファイル名、更新時刻が記録される。
【００４２】
次に、図６を参照して、バッチサーバ３０における動作処理を説明する。なお、図６のフローチャートで示される各処理は、処理内容に矛盾を生じない範囲で任意に順番を変更して又は並列に実行することができる。
【００４３】
バッチサーバ３０は、複数のアプリケーションサーバ２０ａ，２０ｂの各先行処理データファイルａ，ｂを収集し、該各先行処理データファイルａ，ｂに含まれる各インデックスファイルの記録内容をマージする（ステップＳ２００）。例えば、図８に示すように、各インデックスファイルの記録内容をマージして、マージファイル（先行処理データＩＮＤＥＸマージファイル）を作成する。
【００４４】
バッチサーバ３０は、マージ処理された先行処理データファイル（マージファイル）に基づいて、バッチ処理として構成されたジョブステップのうち第１ジョブステップを除いた第２ジョブステップの処理を実行する（ステップＳ２０１）。すなわち、マージファイルから一つ一つのレコード特定キーに対応する対象ファイル（例えば、作成ファイル等）を読み込み、図８に示すように、該対象ファイルの内容を出力データとして本社勤務管理データベース（出力データベース）に記録する。
【００４５】
以上のように、本実施形態によれば、バッチ処理を構成する一部のジョブステップの処理をアプリケーションサーバに先行処理させることで、バッチサーバにおけるバッチ処理の実行時間を短縮することができる。
【００４６】
ここで、具体的に、本実施形態のシステムと従来のシステムとの相違について図９及び図１０を用いて説明する。従来のオンライン処理とバッチ処理を行う連携システムは、図９に示すように構成されており、その動作フローは、例えば、図１０（ａ）に示すように、オンライン処理として、アプリケーションサーバでオンライン処理Ａされた各入力データ（Ａ１〜Ａ４）を一旦バッチ入力データベース（オンライン入出力データベース）に格納する。次いで、バッチサーバにおいて、バッチ処理としてバッチ入力データベースから各入力データ（Ａ１〜Ａ４）を取り出して第１ジョブステップＪ１の処理（処理Ｓ１）を実行し、該第１ジョブステップの処理をしたデータ（Ａ１'〜 Ａ４'）を中間処理データファイルに書き出し、第１ジョブステップの処理の完了後、第２ジョブステップＪ２の処理（処理Ｓ２）を実行し、中間処理データファイルに記載されている内容を出力データとして出力する。
【００４７】
一方、本実施形態のシステムは、図１０（ｂ）に示すように、アプリケーションサーバでオンライン処理Ａされた各入力データ（Ａ１〜Ａ４）を入力として第１ジョブステップＪ１の処理を先行処理し、該処理したデータ（Ａ１'〜 Ａ４'）を先行処理データファイルに記録し、該先行処理データファイルをマージ処理した後、第２ジョブステップＪ２の処理（処理Ｓ２）を実行している。よって、本実施形態のシステムによれば、バッチサーバでのバッチ処理にかかる実行時間を短縮することができる。特に、バッチ処理すべきバッチ処理対象データが増大しても、バッチサーバ自体にかかる実行時間は、先行処理データファイルをマージするのに要する時間と、先行処理データを出力データとして出力するのに要する時間とで、バッチサーバにおける実行時間を略同一にすることができ、バッチ処理が予め決められた時刻で開始され、且つ、予め決められた時刻までに終了する必要がある場合に有効である。
【００４８】
また、従来のシステムとして上述した特許文献１のシステムの処理方法は、アプリケーションサーバにてバッチ対象データが確定していない状態であっても、バッチ処理対象データが発生した時点で該データをロット化してバッチ処理を先行して処理する場合、バッチ処理対象データの変更があるたびに逐一中間結果のデータをバッチ処理によって更新するものであったが、このような方法では、オンライン処理で扱うデータが増加することで、バッチ対象データの更新が並列処理され、該並列処理が頻繁に発生すると、そのたびに中間結果を更新しなければならず、バッチサーバ上での先行処理が追いつかなくなってしまう。しかし、本実施形態のシステムによれば、バッチ処理対象データを１件ずつ扱うようなジョブステップに限定し、該ジョブステップの先行処理を複数のアプリケーションサーバ上で分散・並列実行することで、１件の先行処理が他の先行処理に影響を与えることなく処理可能にし、オンライン処理を実行するアプリケーションサーバ側のスケールアウトによって得られるマシンリソースを活用しながら、小規模なバッチサーバであっても大容量データに対応可能にすることができる。
【００４９】
よって、本実施形態によれば、システムの運用開始後であっても、大容量データに対応したバッチ処理システムとして容易に構成変更することができる。さらに、バッチサーバの追加や増強を変更せずに、また、既存のバッチ処理の定義を変更することなく、アプリケーションサーバをスケールアウトするだけでシステムにおけるバッチ処理の処理能力を拡張することができる。
【００５０】
さらに、本実施形態では、バッチサーバにおいて上記各インデックスファイルを用いてマージし、マージされたインデックスファイルの記録内容に基づいて、前記先行処理データを順次読み込みことで、マージにかかる時間を短縮できる。
【００５１】
＜第２実施形態＞
図１１は、第２実施形態のシステム２の概略構成の一例を示す図である。第２実施形態のシステム２は、第１実施形態のシステム１のシステム構成に加え、更に、各アプリケーションサーバ２０ａ〜２０ｚに対して上記第１ジョブステップの処理を分配するジョブステップ分配装置７０を備えることを特徴とする。なお、以下では、第２実施形態のシステム２において、上記第１実施形態のシステム１と同様にできる構成及び機能については、その説明を省略する。
【００５２】
ジョブステップ分配装置７０は、図１１に示すように、ジョブステップ解析部７１、ジョブステップ抽出部７２、アプリケーション特定部７３、ジョブステップ配置部７４、及びジョブステップ組み換え部７５を含んで構成される。
【００５３】
ジョブステップ解析部（解析部）７１は、バッチサーバ３０にアクセスし、バッチ処理として構成されたジョブステップを解析する。具体的には、ジョブステップ解析部７１は、バッチ処理として定義されている上述した第１ジョブステップ及び第２ジョブステップのうち、トランザクション処理を行わない第１ジョブステップの有無を解析する。なお、ジョブステップ解析部７１は、例えば、バッチ処理として実行を完了すべき時刻が設定されており、バッチ処理の開始時刻等によってバッチジョブが指定した時間までに終わらないと判断した場合に、上記解析を行うようにすることもできる。
【００５４】
ジョブステップ抽出部（抽出部）７２は、上記解析した結果、アプリケーションサーバ２０ａ〜２０ｚで先行処理可能な第１ジョブステップがある場合、該第１ジョブステップを抽出する。具体的には、第１ジョブステップの処理内容の情報（プログラム）を抽出する。
【００５５】
アプリケーション特定部（オンラインアプリケーション解析部）７３は、アプリケーションサーバ２０ａ〜２０ｚにアクセスし、第１ジョブステップの処理対象となる入力データを扱うアプリケーション（オンラインアプリケーション）を特定する。
【００５６】
ジョブステップ配置部（配置部）７４は、上記ジョブステップ抽出部７２で抽出された第１ジョブステップの処理を上記アプリケーション特定部７３で特定されたオンラインアプリケーションを実行するアプリケーションサーバ２０ａ〜２０ｚに配置する。具体的には、特定されたオンラインアプリケーションの入力データ操作部分へ第１ジョブステップの処理を非同期で実行するよう、ハンドラを組み込む。
【００５７】
ジョブステップ組み換え部７５は、ジョブステップ解析部７１によるジョブステップ解析結果に基づいてジョブステップの処理を組み替え、マージ処理部３１においてマージするジョブステップの処理内容を決定する。
【００５８】
以上のように構成される第２実施形態のシステム２によれば、バッチ処理として定義されたジョブステップの処理内容に応じて、自動的にアプリケーションサーバ２０ａ〜２０ｚにその処理を振り分けることができる。
【００５９】
また、アプリケーション特定部７３を有することで、第１ジョブステップの処理対象となる入力データを扱うオンラインアプリケーションが実行されるアプリケーションサーバのみに上記ジョブステップを配置することができるため、効率性を高めたシステムを提供することができる。
【００６０】
＜第３実施形態＞
図１２は、第３実施形態のシステム３の概略構成の一例を示す図である。本実施形態のシステム３は、各アプリケーションサーバ２０ａ〜２０ｚにおいてオンライン処理として、例えば、図１３に示すように、発注処理用のオンライン処理から入力される発注テーブルの表から、商品マスタテーブルに記録されている発注先のデータを特定し、バッチ処理として、該特定したデータ（発注先、発注元、商品コード、個数）を集計するジョブステップの処理、及び該集計結果等を基に発注先ごとに発注明細を送付するジョブステップの処理を含むものを例にとって説明する。なお、第３実施形態のシステム３は、第１実施形態のシステム１の入力データ処理部（入力データハンドラ）２２の代わりに、入力データ処理部（差分データハンドラ）２２'を備えることを特徴とする。なお、以下では、第３実施形態のシステム３において、上記第１実施形態のシステム１と同様にできる構成及び機能については、その説明を省略する。
【００６１】
入力データ処理部（差分データハンドラ）２２'は、上記の集計処理、すなわち、Ｎ個のデータからＭ個のデータを作成するようなジョブステップの処理を行う場合、オンライン処理からの入力データの操作によって発生するデータの差分を取得して差分データを生成し、該差分データをキュー部２３に格納する。
【００６２】
先行処理部２４'は、差分データに基づいて集計が反映された先行処理データを先行処理データファイルに記録する。本実施形態の先行処理データファイルは、例えば、図１４に示すように、集計ファイルと、該集計ファイルが記録された場合に該記録内容を記録するインデックスファイル（ＩＮＤＥＸファイル）とで構成することができる。
【００６３】
マージ処理部（先行処理データマージ処理部）３２'は、複数のアプリケーションサーバ２０ａ〜２０ｚの各先行処理データファイルを収集して、再度集計処理を行って先行処理データをマージする。
【００６４】
以上のように構成される第３実施形態のシステム３によれば、先行処理データが部分的に集計したデータとなるため、バッチサーバにて一度に全ての集計を行う従来のバッチ処理方法よりも、短い時間で集計を行うことができる。すなわち、バッチサーバにおけるバッチ処理の実行時間を短縮することができる。
【００６５】
＜第４実施形態＞
図１５は、第４実施形態のシステム４の概略構成の一例を示す図である。第４実施形態のシステム４は、第１実施形態のシステム１のシステム構成に加え、更に、先行処理データの書き込み先として、更に、共有メモリ８０を備えることを特徴とする。なお、以下では、第４実施形態のシステム４において、上記第１実施形態のシステム１と同様にできる構成及び機能については、その説明を省略する。
【００６６】
共有メモリ（分散共有メモリ）８０は、複数のアプリケーションサーバ２０ａ〜２０ｚにより出力される各先行処理データを格納するメモリである。
【００６７】
マージ処理部３１''は、複数のアプリケーションサーバ２０ａ〜２０ｚの各先行処理データを共有メモリ８０から収集してマージ処理する。
【００６８】
以上のように構成される第４実施形態のシステム４によれば、共有メモリ８０を備えることで、マージ処理時のオーバーヘッドを軽減することができる。
【００６９】
＜変形例＞
【００７０】
以上のように本発明の好適な実施形態について説明したが、本発明は、以上の実施形態に限定されるべきものではなく、特許請求の範囲に表現された思想および範囲を逸脱することなく、種々の変形、追加、および省略が当業者によって可能である。
【００７１】
たとえば、上記実施形態において、アプリケーションサーバ２０及びバッチサーバ３０には、用途に応じた各部が備えられているが、これらに備えられている各部は、そのいくつかを一纏めにして構成されていてもよいし、一つの部をさらに複数の部に分割して構成されていてもよい。
【００７２】
さらに、上記実施形態では、アプリケーションサーバ２０において、それぞれの処理機能を有する各部が備えられている構成を説明したが、本発明はこれに限られず、各部がアプリケーションサーバ２０と通信可能に接続されたネットワーク上に又は他の装置に備えて構成することもできる。
【００７３】
上記の実施形態の一部または全部は、以下の付記のようにも記載されうるが、以下には限られない。
【００７４】
（付記１）複数のアプリケーションサーバ、及びバッチサーバを備えるバッチ処理システムであって、前記アプリケーションサーバそれぞれは、クライアント端末からのアクセスを受け付けてオンライン処理でアプリケーションを実行し、該オンライン処理において前記クライアント端末からの入力操作を受け付けるオンラインアプリケーション部と、前記オンライン処理で得られたデータを入力データとしてキューに格納する入力データ処理部と、前記キューに格納された前記入力データを順次取得し、該取得した入力データごとに、バッチ処理として構成されたジョブステップのうち自アプリケーションサーバで先行処理可能な第１ジョブステップの処理を実行し、該実行して得られた先行処理データを先行処理データファイルに記録する先行処理部と、を含み、前記バッチサーバは、前記複数のアプリケーションサーバの各先行処理データファイルを収集してマージするマージ処理部と、前記マージされた先行処理データファイルに基づいて、前記先行処理データを順次読み込み、前記バッチ処理として構成されたジョブステップのうち前記第１ジョブステップを除いた第２ジョブステップの処理を実行するバッチ処理部と、を含むバッチ処理システム。
【００７５】
（付記２）前記クライアント端末からの入力操作は、データの作成、更新、及び削除のいずれかの入力操作であり、前記入力データ処理部は、前記入力データ、及び該入力データに対応する前記入力操作の種類をキューに格納する、付記１に記載のバッチ処理システム。
【００７６】
（付記３）前記先行処理データファイルは、前記入力データの作成処理を記録する作成ファイルと、前記入力データの更新処理を記録する更新ファイルと、前記入力データの削除処理を記録する削除ファイルと、前記作成ファイル、前記更新ファイル及び前記削除ファイルのいずれかのファイルが記録された場合に該記録内容を記録するインデックスファイルとで構成され、前記マージ処理部は、前記複数のアプリケーションサーバの各先行処理データファイルを収集し、該各先行処理データファイルに含まれる各インデックスファイルの記録内容をマージし、前記バッチ処理部は、前記マージされたインデックスファイルの記録内容に基づいて、前記先行処理データを順次読み込み、前記第２ジョブステップの処理を実行する、付記２に記載のバッチ処理システム。
【００７７】
（付記４）前記バッチサーバにアクセスし、前記バッチ処理として構成されたジョブステップを解析する解析部、該解析した結果、前記アプリケーションサーバで先行処理可能な第１ジョブステップを抽出する抽出部、及び該抽出された前記第１ジョブステップの処理を前記アプリケーションサーバに配置する配置部を含むジョブステップ分配装置を更に備える、付記１〜付記３のいずれか１項に記載のバッチ処理システム。
【００７８】
（付記５）前記ジョブステップ分配装置は、前記アプリケーションサーバにアクセスし、前記第１ジョブステップの処理対象となる入力データを扱うアプリケーションを特定するアプリケーション特定部を更に含む、付記４に記載のバッチ処理システム。
【００７９】
（付記６）前記複数のアプリケーションサーバにより出力される前記先行処理データを格納する共有メモリを更に備え、前記マージ処理部は、前記複数のアプリケーションサーバの各先行処理データを前記共有メモリから収集してマージ処理する、付記１〜付記５のいずれか１項に記載のバッチ処理システム。
【００８０】
（付記７）複数のアプリケーションサーバ、及びバッチサーバを備えるシステムのバッチ処理方法であって、前記アプリケーションサーバが、クライアント端末からのアクセスを受け付けて、オンライン処理でアプリケーションを実行し、該オンライン処理において前記クライアント端末からの入力操作を受け付ける段階と、前記アプリケーションサーバが、前記オンライン処理で得られたデータを入力データとしてキューに格納する段階と、前記アプリケーションサーバが、前記キューに格納された前記入力データを順次取得し、該取得した入力データごとに、バッチ処理として構成されたジョブステップのうち自アプリケーションサーバで先行処理可能な第１ジョブステップの処理を実行し、該実行して得られた先行処理データを先行処理データファイルに記録する段階と、前記バッチサーバが、前記複数のアプリケーションサーバの各先行処理データファイルを収集してマージする段階と、前記バッチサーバが、前記マージ処理された先行処理データファイルに基づいて、前記先行処理データを順次読み込み、前記バッチ処理として構成されたジョブステップのうち前記第１ジョブステップを除いた第２ジョブステップの処理を実行する段階と、を含むバッチ処理方法。
【符号の説明】
【００８１】
１…システム、１０…クライアント端末、２０…アプリケーションサーバ、２１…オンラインアプリケーション部、２２…入力データ処理部（入力データハンドラ）、２３…キュー部、２４…先行処理部、２４１…データ取得部、２４２…データ処理部、２４３…ファイルデータ記録部、３０…バッチサーバ、３１…マージ処理部、３２…バッチ処理部、４０…時刻サーバ、５０…入力データベース、６０…出力データベース。
【図１】
0005622049.tif 000002
【図２】
0005622049.tif 000003
【図３】
0005622049.tif 000004
【図４】
0005622049.tif 000005
【図５】
0005622049.tif 000006
【図６】
0005622049.tif 000007
【図７】
0005622049.tif 000008
【図８】
0005622049.tif 000009
【図９】
0005622049.tif 000010
【図１０】
0005622049.tif 000011
【図１１】
0005622049.tif 000012
【図１２】
0005622049.tif 000013
【図１３】
0005622049.tif 000014
【図１４】
0005622049.tif 000015
【図１５】
0005622049.tif 000016