(57)【特許請求の範囲】
【請求項１】
所定の入出力動作を繰り返しながら処理を実行するデータ処理におけるデータの入出力動作の内容を示す振る舞い型を、投入されたコマンドにより実行される前記データ処理で用いられるデータに含まれる振る舞い型識別情報に基づいて、決定する振る舞い型決定部と、
前記振る舞い型ごとに予め設定されている設定情報を参照し、前記設定情報に含まれる優先度に基づいて、前記優先度ごとに設けられたコマンドキューに前記コマンドを格納するコマンド格納部と、
前記コマンドキューに格納された前記コマンドのうち、前記優先度が最も高い前記コマンドキューに格納された前記コマンドを、前記コマンドキューから取り出して実行するコマンド実行部と、
を備えることを特徴とするコマンド実行装置。
【請求項２】
前記データ処理の開始前に前記設定情報が設定されたときに、設定された前記設定情報に基づいて、前記振る舞い型ごとに、データストアに対する前記データの入出力動作を制御する入出力動作制御部、前記データの入出力動作に伴う前記データストアへの送信データを格納する送信用バッファ、および前記データの入出力動作に伴う前記データストアからの受信データを格納する受信用バッファを、それぞれ生成する生成部を、さらに備える、
ことを特徴とする請求項１記載のコマンド実行装置。
【請求項３】
前記設定情報は、少なくとも、前記振る舞い型ごとに、前記データの入出力動作に伴う前記データストアへの送信データのデータサイズ、前記データの入出力動作に伴う前記データストアへの送信処理の優先度、前記データの入出力動作に伴う前記データストアからの受信データのデータサイズ、および前記データの入出力動作に伴う前記データストアからの受信処理の優先度を、それぞれ含む、
ことを特徴とする請求項２記載のコマンド実行装置。
【請求項４】
前記振る舞い型が順次先読み処理を示す前記振る舞い型である場合に、前記設定情報は、先読みデータ数をさらに含む、ことを特徴とする請求項３記載のコマンド実行装置。
【請求項５】
クライアントとサーバとを備えるコマンド実行システムであって、
前記クライアントは、
所定の入出力動作を繰り返しながら処理を実行するデータ処理におけるデータの入出力動作の内容を示す振る舞い型を、投入されたコマンドにより実行される前記データ処理で用いられるデータに含まれる振る舞い型識別情報に基づいて、決定する第１振る舞い型決定部と、
前記振る舞い型ごとに予め設定されている設定情報を参照し、前記設定情報に含まれる優先度に基づいて、前記優先度ごとに設けられたコマンドキューに前記コマンドを格納する第１コマンド格納部と、
前記第１コマンド格納部によって前記コマンドキューに格納された前記コマンドのうち、前記優先度が最も高い前記コマンドキューに格納された前記コマンドを、前記コマンドキューから取り出して前記サーバに送信するコマンド送信部と、を有し、
前記サーバは、
前記クライアントから送信された前記コマンドを受信するコマンド受信部と、
前記コマンド受信部によって受信された前記コマンドを格納したバッファに基づいて、前記振る舞い型を決定する第２振る舞い型決定部と、
前記振る舞い型ごとに予め設定されている設定情報を参照し、当該設定情報に含まれる前記優先度に基づいて、前記優先度ごとに設けられたコマンドキューに前記コマンドを格納する第２コマンド格納部と、
前記第２コマンド格納部によって前記コマンドキューに格納された前記コマンドのうち、前記優先度が最も高い前記コマンドキューに格納された前記コマンドを、前記コマンドキューから取り出して実行するコマンド実行部と、を有する、
ことを特徴とするコマンド実行システム。
【請求項６】
前記クライアントは、
前記データ処理の開始前に前記設定情報が設定されたときに、設定された前記設定情報に基づいて、前記振る舞い型ごとに、前記サーバとの前記データの送受信動作を制御する送受信動作制御部、前記データの送受信動作に伴う前記サーバへの送信データを格納する送信用バッファ、および前記データの送受信動作に伴う前記サーバからの受信データを格納する受信用バッファを、それぞれ生成する第１生成部を、さらに有し、
前記サーバは、
前記データ処理の開始前に前記設定情報が設定されたときに、設定された前記設定情報に基づいて、前記振る舞い型ごとに、前記クライアントとの前記データの送受信動作およびデータストアに対する前記データの入出力動作を制御する動作制御部、前記データの送受信動作に伴う前記クライアントからの受信データおよび前記データの入出力動作に伴う前記データストアへの送信データを格納する第１バッファ、ならびに前記データの入出力動作に伴う前記データストアからの受信データおよび前記データの送受信動作に伴う前記クライアントへの送信データを格納する第２バッファを、それぞれ生成する第２生成部を、さらに有する、
ことを特徴とする請求項５記載のコマンド実行システム。
【請求項７】
前記設定情報は、少なくとも、前記振る舞い型ごとに、前記クライアントから前記サーバに送信するデータのデータサイズおよび当該データを送信する際の優先度、ならびに前記サーバから前記クライアントに送信するデータのデータサイズおよび当該データを送信する際の優先度を、それぞれ含む、
ことを特徴とする請求項５または６記載のコマンド実行システム。
【請求項８】
前記振る舞い型が順次先読み処理を示す前記振る舞い型である場合に、前記設定情報は、先読みデータ数をさらに含む、ことを特徴とする請求項７記載のコマンド実行システム。
【請求項９】
コマンド実行装置を制御するコマンド実行方法であって、
前記コマンド実行装置が、
所定の入出力動作を繰り返しながら処理を実行するデータ処理におけるデータの入出力動作の内容を示す振る舞い型を、投入されたコマンドにより実行される前記データ処理で用いられるデータに含まれる振る舞い型識別情報に基づいて、決定する振る舞い型決定ステップと、
前記振る舞い型ごとに予め設定されている設定情報を参照し、前記設定情報に含まれる優先度に基づいて、前記優先度ごとに設けられたコマンドキューに前記コマンドを格納するコマンド格納ステップと、
前記コマンドキューに格納された前記コマンドのうち、前記優先度が最も高い前記コマンドキューに格納された前記コマンドを、前記コマンドキューから取り出して実行するコマンド実行ステップと、
を含むことを特徴とするコマンド実行方法。
【請求項１０】
クライアントとサーバとを備えるコマンド実行システムを制御するコマンド実行方法であって、
前記クライアントが、
所定の入出力動作を繰り返しながら処理を実行するデータ処理におけるデータの入出力動作の内容を示す振る舞い型を、投入されたコマンドにより実行される前記データ処理で用いられるデータに含まれる振る舞い型識別情報に基づいて、決定する第１振る舞い型決定ステップと、
前記振る舞い型ごとに予め設定されている設定情報を参照し、前記設定情報に含まれる優先度に基づいて、前記優先度ごとに設けられたコマンドキューに前記コマンドを格納する第１コマンド格納ステップと、
前記第１コマンド格納ステップにおいて前記コマンドキューに格納された前記コマンドのうち、前記優先度が最も高い前記コマンドキューに格納された前記コマンドを、前記コマンドキューから取り出して前記サーバに送信するコマンド送信ステップと、を含み、
前記サーバが、
前記クライアントから送信された前記コマンドを受信するコマンド受信ステップと、
前記コマンド受信ステップにおいて受信された前記コマンドを格納したバッファに基づいて、前記振る舞い型を決定する第２振る舞い型決定ステップと、
前記振る舞い型ごとに予め設定されている設定情報を参照し、当該設定情報に含まれる前記優先度に基づいて、前記優先度ごとに設けられたコマンドキューに前記コマンドを格納する第２コマンド格納ステップと、
前記第２コマンド格納ステップにおいて前記コマンドキューに格納された前記コマンドのうち、前記優先度が最も高い前記コマンドキューに格納された前記コマンドを、前記コマンドキューから取り出して実行するコマンド実行ステップと、を含む、
ことを特徴とするコマンド実行方法。
【請求項１１】
請求項９記載の各ステップを前記コマンド実行装置のコンピュータに実行させるためのコマンド実行プログラム。
【請求項１２】
請求項１０記載の各ステップを前記コマンド実行システムのコンピュータに実行させるためのコマンド実行プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コマンド実行装置、コマンド実行システム、コマンド実行方法およびコマンド実行プログラムに関する。
【背景技術】
【０００２】
例えば社員の給与計算等、大量のデータをまとめて処理する場合には、一般にバッチ処理が利用されている。下記特許文献１には、バッチ処理を実行するバッチジョブを管理するバッチジョブ管理システムが開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−２１１４２６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
バッチ処理では、予め一連の手順を登録しておき、登録した手順を連続して処理していく。このようなバッチ処理では、例えば、データを順次読み込んで処理するものや、処理したデータを順次書き込むもの等のように、固定された入出力動作を繰り返しながら処理を実行していくのが一般的である。したがって、これらの入出力動作の特徴を考慮して処理を実行させることで処理効率を向上させることが可能となる。上記特許文献１には、入出力動作を考慮して処理を実行させることについては記載されていない。
【０００５】
本発明は、上述した課題を解決するためになされたものであり、処理効率を向上させることができるコマンド実行装置、コマンド実行システム、コマンド実行方法およびコマンド実行プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明のコマンド実行装置は、投入されたコマンドにより実行されるデータ処理の内容に応じて、データの入出力動作の内容を示す振る舞い型を決定する振る舞い型決定部と、前記振る舞い型ごとに予め設定されている設定情報を参照し、前記設定情報に含まれる優先度に基づいて、前記優先度ごとに設けられたコマンドキューに前記コマンドを格納するコマンド格納部と、前記コマンドキューに格納された前記コマンドのうち、前記優先度が最も高い前記コマンドキューに格納された前記コマンドを、前記コマンドキューから取り出して実行するコマンド実行部と、を備える。
【０００７】
本発明のコマンド実行システムは、クライアントとサーバとを備えるコマンド実行システムであって、前記クライアントは、投入されたコマンドにより実行されるデータ処理の内容に応じて、データの入出力動作の内容を示す振る舞い型を決定する振る舞い型決定部と、前記振る舞い型ごとに予め設定されている設定情報を参照し、前記設定情報に含まれる優先度に基づいて、前記優先度ごとに設けられたコマンドキューに前記コマンドを格納する第１コマンド格納部と、前記第１コマンド格納部によって前記コマンドキューに格納された前記コマンドのうち、前記優先度が最も高い前記コマンドキューに格納された前記コマンドを、前記コマンドキューから取り出して前記サーバに送信するコマンド送信部と、を有し、前記サーバは、前記クライアントから送信された前記コマンドを受信するコマンド受信部と、前記受信された前記コマンドに対応する前記優先度に基づいて、前記優先度ごとに設けられたコマンドキューに前記コマンドを格納する第２コマンド格納部と、前記第２コマンド格納部によって前記コマンドキューに格納された前記コマンドのうち、前記優先度が最も高い前記コマンドキューに格納された前記コマンドを、前記コマンドキューから取り出して実行するコマンド実行部と、を有する。
【０００８】
本発明のコマンド実行方法は、投入されたコマンドにより実行されるデータ処理の内容に応じて、データの入出力動作の内容を示す振る舞い型を決定する振る舞い型決定ステップと、前記振る舞い型ごとに予め設定されている設定情報を参照し、前記設定情報に含まれる優先度に基づいて、前記優先度ごとに設けられたコマンドキューに前記コマンドを格納するコマンド格納ステップと、前記コマンドキューに格納された前記コマンドのうち、前記優先度が最も高い前記コマンドキューに格納された前記コマンドを、前記コマンドキューから取り出して実行するコマンド実行ステップと、を含む。
【０００９】
本発明のコマンド実行方法は、クライアントとサーバとを備えるコマンド実行システムを制御するコマンド実行方法であって、前記クライアントが、投入されたコマンドにより実行されるデータ処理の内容に応じて、データの入出力動作の内容を示す振る舞い型を決定する振る舞い型決定ステップと、前記振る舞い型ごとに予め設定されている設定情報を参照し、前記設定情報に含まれる優先度に基づいて、前記優先度ごとに設けられたコマンドキューに前記コマンドを格納する第１コマンド格納ステップと、前記第１コマンド格納ステップにおいて前記コマンドキューに格納された前記コマンドのうち、前記優先度が最も高い前記コマンドキューに格納された前記コマンドを、前記コマンドキューから取り出して前記サーバに送信するコマンド送信ステップと、を含み、前記サーバが、前記クライアントから送信された前記コマンドを受信するコマンド受信ステップと、前記受信された前記コマンドに対応する前記優先度に基づいて、前記優先度ごとに設けられたコマンドキューに前記コマンドを格納する第２コマンド格納ステップと、前記第２コマンド格納ステップにおいて前記コマンドキューに格納された前記コマンドのうち、前記優先度が最も高い前記コマンドキューに格納された前記コマンドを、前記コマンドキューから取り出して実行するコマンド実行ステップと、を含む。
【００１０】
本発明のコマンド実行プログラムは、上記コマンド実行方法に含まれる各ステップをコンピュータに実行させる。
【発明の効果】
【００１１】
本発明によれば、処理効率を向上させることができる。
【図面の簡単な説明】
【００１２】
【図１】第１実施形態におけるコマンド実行システムの構成を例示するブロック図である。
【図２】データＡ（ＳＲＯ）のデータ構成を例示する図である。
【図３】データＢ（ＳＷＯ）のデータ構成を例示する図である。
【図４】第１実施形態における設定情報のデータ構成を例示する図である。
【図５】第１実施形態における通信モジュールの設定内容を例示する図である。
【図６】第１実施形態における給与計算バッチを実行する前の準備段階の動作を説明するためのフローチャートである。
【図７】第１実施形態における給与計算バッチを実行する際の動作を説明するためのフローチャートである。
【図８】第２実施形態におけるコマンド実行システムの構成を例示するブロック図である。
【図９】第２実施形態におけるコマンド実行クライアントおよびコマンド実行サーバの構成を例示するブロック図である。
【図１０】第２実施形態における設定情報のデータ構成を例示する図である。
【図１１】第２実施形態における通信モジュールの設定内容を例示する図である。
【図１２】第２実施形態における通信モジュールの設定内容を例示する図である。
【図１３】第２実施形態における給与計算バッチを実行する前の準備段階の動作を説明するためのフローチャートである。
【図１４】第２実施形態における給与計算バッチを実行する際のコマンド実行クライアント側の動作を説明するためのフローチャートである。
【図１５】第２実施形態における給与計算バッチを実行する際のコマンド実行サーバ側の動作を説明するためのフローチャートである。
【発明を実施するための形態】
【００１３】
以下、添付図面を参照して、本発明に係るコマンド実行装置、コマンド実行システム、コマンド実行方法およびコマンド実行プログラムの好適な実施形態について説明する。
【００１４】
[第１実施形態]
まず、図１を参照して、第１実施形態におけるコマンド実行システムの構成について説明する。図１は、第１実施形態におけるコマンド実行システムを模式的に示した構成図である。コマンド実行システムは、バッチ処理基盤２およびコマンド実行装置３を含むサーバ１と、データストア４とを有する。データストア４は、一つまたは複数のノードで構成することができる。ノードは、ＨＤＤ（Hard disk drive）であってもよいし、ＲＡＭ（Random Access Memory）等のメモリであってもよい。なお、データストア４はサーバ１内に設けることとしてもよい。
【００１５】
バッチ処理基盤２は、各種のバッチ処理を実行する。本実施形態では、各種のバッチ処理のうち、給与計算バッチ２１を実行する場合について説明する。給与計算バッチ２１は、コマンド実行装置３を介してデータストア４に格納されているデータを読み書きする。図２および図３を参照して、給与計算バッチ２１の処理手順について、一例を挙げて説明する。
【００１６】
最初に、給与計算バッチ２１は、図２に示すデータＡのうち、社員番号が“１”であるデータＡをデータストア４から読み出す。続いて、データＡの給与に基づいて暫定保険料を計算し、図３に示す社員番号が“１”であるデータＢを生成してデータストア４に格納する。続いて、社員番号が“２”であるデータＡをデータストア４から読み出して、社員番号が“２”であるデータＢを上記と同様に生成してデータストア４に格納する。この処理を、全社員分繰り返す。
【００１７】
本発明では、振る舞い型という概念をデータに付与する。振る舞い型は、データの入出力動作の内容を示す属性情報(メタデータ)により表現する。具体的には、例えば、データＡは、順次読み込みのみ（Sequential Read Only（以下、「ＳＲＯ」という。））のデータであり、このようなデータＡには、振る舞い型として“ＳＲＯ”を予め付与する。また、データＢは、順次書き込みのみ（Sequential Write Only（以下、「ＳＷＯ」という。)）のデータであり、このようなデータＢには、振る舞い型として“ＳＷＯ”を予め付与する。バッチ処理の場合、データの入出力動作が固定されているため、振る舞い型をデータに事前に付与することが可能となる。
【００１８】
振る舞い型をデータに事前に付与しておくことで、振る舞い型に応じた処理を実行することができるため、処理効率を向上させることが可能となる。例えば、データＡは、順次読み込みのみであるため、データＡを可能な限り先に読み出しておくことで、処理を高速化することが可能となる。
【００１９】
図１に示す給与計算バッチ２１は、コマンド実行装置３の設定情報記憶部３１１に記憶されている設定情報を、バッチ処理の内容に応じて更新する。図４を参照して、設定情報のデータ構成について説明する。
【００２０】
図４に示す設定情報は、振る舞い型ごとに各種の設定内容を有する。振る舞い型には、上述したＳＲＯやＳＷＯが格納される。各種の設定内容としては、例えば、振る舞い、コマンド、レスポンス、通信モジュール、通信方法、先読み数、および複製数等の各データ項目がある。
【００２１】
振る舞いは、データの入出力動作の内容を格納する。例えば、振る舞い型が“ＳＲＯ”である場合には“順次先読み”を格納し、振る舞い型が“ＳＷＯ”である場合には“順次信頼書込み”を格納する。先読み数は、振る舞い型が“ＳＲＯ”である場合に設けられる項目であり、順次先読み処理を行う際の先読みデータ数の上限値を格納する。
【００２２】
コマンドは、バッチ処理により発行されるコマンドを実行する際に必要となるデータのサイズと、このコマンドにより実行される処理の優先度と、を格納する。例えば、振る舞い型が“ＳＲＯ”である場合には、データサイズに、読み出しを実行させるコマンドを含むデータのサイズである“１０”を格納し、優先度に“高”を格納する。また、振る舞い型が“ＳＷＯ”である場合には、データサイズに、書き込みデータＢを含むデータのサイズである“５００”を格納し、優先度に“中”を格納する。なお、本実施形態では、優先度として、高い順に、“最高”、“高”、“中”、“低”、“最低”を用いて説明することとする。
【００２３】
レスポンスは、コマンドの実行結果を格納したデータのサイズと、このデータをバッチ処理側に返信する処理の優先度と、を格納する。例えば、振る舞い型が“ＳＲＯ”である場合には、データサイズに、データストア４から読み出したデータＡを含むデータのサイズである“１００”を格納し、優先度に“低”を格納する。また、振る舞い型が“ＳＷＯ”である場合には、データサイズに、データストア４への書き込みに対する応答内容を含むデータのサイズである“１０”を格納し、優先度に“高”を格納する。
【００２４】
通信モジュールは、通信モジュールを識別する情報を格納する。例えば、振る舞い型が“ＳＲＯ”である場合には、通信モジュールに、“通信モジュール３４”を格納し、振る舞い型が“ＳＷＯ”である場合には、通信モジュールに、“通信モジュール３６”を格納する。通信方法は、例えば、“ｓｏｃｋｅｔ”等のプロセス間通信を実現するための手段を格納する。
【００２５】
図１に示すコマンド実行装置３は、メインエンジン３１と、通信モジュール３２と、ＳＲＯエンジン３３と、通信モジュール３４と、ＳＷＯエンジン３５と、通信モジュール３６とを有する。ＳＲＯエンジン３３およびＳＷＯエンジン３５を総称して、「振る舞いエンジン」と呼ぶ。振る舞いエンジンは、設定された振る舞い型に最適なデータのハンドリングを行う。データのハンドリングには、例えばデータの読み取り手順や検索方法、書き込みの信頼性保証等が含まれる。
【００２６】
図１に示すＳＲＯエンジン３３および通信モジュール３４、ならびにＳＷＯエンジン３５および通信モジュール３６は、設定情報を登録、更新することで生成、変更または削除することができる。
【００２７】
メインエンジン３１は、設定情報を記憶する設定情報記憶部３１１と、コマンド実行装置３を制御するコントローラ３１２と、コントローラ３１２によって実行されるコマンドを格納するコマンドキュー３１３と、を有する。
【００２８】
コントローラ３１２は、生成部３１２１と、振る舞い型決定部３１２２と、コマンド格納部３１２３と、コマンド実行部３１２４と、を有する。
【００２９】
生成部３１２１は、設定情報が登録、更新されたときに、登録、更新後の設定情報に基づいて、振る舞い型ごとに、振る舞いエンジンおよび通信モジュールを含むコンポーネント群を生成する。具体的には、例えば、登録後の設定情報の振る舞い型が“ＳＲＯ”である場合に、生成部３１２１は、ＳＲＯエンジン３３と、送信バッファ３４１および受信バッファ３４２を有する通信モジュール３４とを生成する。また、登録後の設定情報の振る舞い型が“ＳＷＯ”である場合に、生成部３１２１は、ＳＷＯエンジン３５と、送信バッファ３６１および受信バッファ３６２を有する通信モジュール３６とを生成する。
【００３０】
例えば、設定情報が図４に示す内容で登録された場合に、生成部３１２１は、図５に示す内容で通信モジュールを生成する。具体的に、生成部３１２１は、ＳＲＯエンジン３３側の送信バッファ３４１および受信バッファ３４２、ＳＷＯエンジン３５側の送信バッファ３６１および受信バッファ３６２に対して、順に“バッファ１”〜“バッファ４”を割り当てる。
【００３１】
また、図４に示すＳＲＯのコマンドのデータサイズが“１０”であり、優先度が“高”であることから、生成部３１２１は、送信バッファ３４１のバッファサイズを“１０”に設定し、優先度を“高”に設定する。また、図４に示すＳＲＯのレスポンスのデータサイズが“１００”であり、優先度が“低”であり、先読み数が“１０”であることから、生成部３１２１は、受信バッファ３４２のバッファサイズを“１０００”、優先度を“低”に設定する。これは、ＳＲＯではコマンドを一件ずつ送信バッファに格納して送信するのに対し、レスポンスは最大１０件まで受信バッファに格納することができることを意味する。
【００３２】
これにより、データＡの読み出しに対応するコマンドは、“バッファ１”である送信バッファ３４１に格納され、優先度“高”のコマンドとして処理されることになる。また、データＡの読み出しに対応するレスポンスは、“バッファ２”である受信バッファ３４２に格納され、優先度“低”のコマンドとして処理されることになる。
【００３３】
また、図４に示すＳＷＯのコマンドのデータサイズが“５００”であり、優先度が“中”であることから、生成部３１２１は、送信バッファ３６１のバッファサイズを“５００”に設定し、優先度を“中”に設定する。また、図４に示すＳＷＯのレスポンスのデータサイズが“１０”であり、優先度が“高”であることから、生成部３１２１は、受信バッファ３６２のバッファサイズを“１０”、優先度を“高”に設定する。
【００３４】
これにより、データＢの書き込みに対応するコマンドは、“バッファ３”である送信バッファ３６１に格納され、優先度“中”のコマンドとして処理されることになる。また、データＢの書き込みに対応するレスポンスは、“バッファ４”である受信バッファ３６２に格納され、優先度“高”のコマンドとして処理されることになる。
【００３５】
図１に示す振る舞い型決定部３１２２は、投入されたコマンドにより実行されるデータ処理の内容に応じて、データの入出力動作の内容を示す振る舞い型を決定する。本実施形態では、コマンドにより実行されるデータ処理の内容を識別するための振る舞い型識別情報を、予めデータに付与する。したがって、振る舞い型決定部３１２２は、データ処理に用いられるデータに含まれる振る舞い型識別情報に基づいて、振る舞い型を決定することができる。
【００３６】
コマンド格納部３１２３は、振る舞い型ごとに予め設定されている設定情報を参照し、設定情報に含まれる優先度に基づいて、優先度ごとに設けられたコマンドキュー３１３にコマンドを格納する。
【００３７】
コマンド実行部３１２４は、コマンドキュー３１３に格納されたコマンドのうち、優先度が最も高いコマンドキューに格納されたコマンドを、コマンドキュー３１３から取り出して実行する。
【００３８】
通信モジュール３２、３４、３６は、内部に送信バッファ３２１、３４１、３６１および受信バッファ３２２、３４２、３６２をそれぞれ含む。通信モジュール３２、３４、３６は、送信バッファ３２１、３４１、３６１および受信バッファ３２２、３４２、３６２のバッファサイズや、データの送受信の優先度、通信方式などが、メインエンジン３１、ＳＲＯエンジン３３、ＳＷＯエンジン３５によってそれぞれ制御され、データの送受信タイミングなどが制御される。
【００３９】
コマンドキュー３１３は、バッチ処理基盤２の給与計算バッチ２１によって指定されたデータを読み書きするためのコマンドおよびコマンドの属性情報を格納する。コマンドの属性情報としては、例えば、コマンドの種別や、コマンドを格納するバッファの識別情報が該当する。コマンドの種別としては、例えば、“Ｃｏｍｍａｎｄ”や“Ｒｅｓｐｏｎｓｅ”が該当し、バッファの識別情報としては、例えば、“バッファ１”や“バッファ２”が該当する。
【００４０】
コマンドキュー３１３は、優先度ごとに区分されており、区分された優先度と一致する優先度で実行されるコマンドをそれぞれ格納する。コマンドキュー３１３に格納されたコマンドは、コマンド実行部３１２４によって実行され、コマンドキュー３１３から削除される。
【００４１】
コマンドキュー３１３は、通信モジュール３２、３４、３６の送受信状態と連動しており、通信モジュール３２、３４、３６の送受信状態に応じて、コマンドの追加や削除を制御する。
【００４２】
図４に示すように、ＳＲＯやＳＷＯの優先度はコマンドとレスポンスとで別個に設定される。これにより、データＡの読み出しに対応するコマンドは、コマンドキュー３１３のうち、優先度が“高”に設定されているコマンドキューに格納され、データＡの読み出しに対応するレスポンスは、コマンドキュー３１３のうち、優先度が“低”に設定されているコマンドキューに格納される。また、データＢの書き込みに対応するコマンドは、コマンドキュー３１３のうち、優先度が“中”に設定されているコマンドキューに格納され、データＢの書き込みに対応するレスポンスは、コマンドキュー３１３のうち、優先度が“高”に設定されているコマンドキューに格納される。
【００４３】
次に、第１実施形態におけるコマンド実行システムの動作について説明する。まず、図６を参照して、給与計算バッチを実行する前の準備段階の動作について説明する。本動作例では、給与計算バッチ２１が図２に示すデータＡ（ＳＲＯ）と図３に示すデータＢ（ＳＷＯ）とを使用してバッチ処理を実行する場合について説明する。
【００４４】
最初に、バッチ処理基盤２の給与計算バッチ２１は、実行するバッチ処理に基づいて、バッチ処理で使用するデータの振る舞いや優先度を含む設定情報をコマンド実行装置３に登録する（ステップＳ１０１）。
【００４５】
続いて、コマンド実行装置３のメインエンジン３１は、給与計算バッチ２１により登録された設定情報を設定情報記憶部３１１に書き込む(ステップＳ１０２)。本動作例では、図４に示す振る舞い型が“ＳＲＯ”である設定情報と、振る舞い型が“ＳＷＯ”である設定情報と、がそれぞれ設定情報記憶部３１１に書き込まれる。
【００４６】
続いて、メインエンジン３１の生成部３１２１は、設定情報記憶部３１１に書き込まれた設定情報に基づいて、ＳＲＯエンジン３３、通信モジュール３４、ＳＷＯエンジン３５および通信モジュール３６を含むコンポーネント群を生成する(ステップＳ１０３)。
【００４７】
続いて、メインエンジン３１の生成部３１２１は、設定情報記憶部３１１に書き込まれた設定情報に基づいて、給与計算バッチ２１の実行環境を各コンポーネントに設定する(ステップＳ１０３)。本動作例では、ＳＲＯエンジン３３が通信モジュール３４を使用し、ＳＷＯエンジン３５が通信モジュール３６を使用するように、実行環境が設定される。また、送信バッファ３４１、３６１および受信バッファ３４２、３６２のバッファサイズ、コマンド実行装置３での処理の優先度、ならびにコマンドキュー３１３の初期状態（初期状態は空）などが、実行環境として設定される。
【００４８】
次に、図７を参照して、給与計算バッチを実行する際の動作について説明する。なお、この動作は、給与計算バッチからコマンドが投入されるたびに、繰り返し実行される。
【００４９】
最初に、バッチ処理基盤２の給与計算バッチ２１から、コマンド実行装置３にコマンドが投入される(ステップＳ２０１)。
【００５０】
続いて、コマンド実行装置３の振る舞い型決定部３１２２は、コマンドの内容を解析し、コマンドの振る舞い型を決定する(ステップＳ２０２)。本動作例では、コマンドによって実行されるデータ処理で用いるデータの振る舞い型識別情報を参照することで振る舞い型を決定する。
【００５１】
続いて、コマンド実行装置３のコマンド格納部３１２３は、上記ステップＳ２０２で決定された振る舞い型に対応する設定情報に基づいて、コマンドキュー３１３にコマンドを格納する(ステップＳ２０３)。
【００５２】
続いて、コマンド実行装置３のコマンド実行部３１２４が動作を開始し、優先度を“最高”に設定する(ステップＳ２０４)。
【００５３】
続いて、コマンド実行部３１２４は、設定した優先度に対応するコマンドキュー３１３にコマンドが格納されているか否かを判定する(ステップＳ２０５)。この判定がＮＯである場合(ステップＳ２０５；ＮＯ)に、コマンド実行部３１２４は、優先度が“最低”でなければ(ステップＳ２０６；ＮＯ)、優先度のレベルを一つ低下させ(ステップＳ２０７)、処理を上記ステップＳ２０５に移行し、優先度が“最低”であれば(ステップＳ２０６；ＹＥＳ)、本動作を終了する。
【００５４】
一方、上記ステップＳ２０５の判定において、設定した優先度に対応するコマンドキュー３１３にコマンドが格納されていると判定された場合(ステップＳ２０５；ＹＥＳ)に、コマンド実行部３１２４は、そのコマンドを実行し(ステップＳ２０８)、実行したコマンドをコマンドキュー３１３から削除する(ステップＳ２０９)。そして、処理を上記ステップＳ２０４に移行する。
【００５５】
次に、上述した図７に示す動作の具体例として、給与計算バッチ２１が図２に示すデータＡ（ＳＲＯ）と図３に示すデータＢ（ＳＷＯ）とを使用してバッチ処理を実行する場合について説明する。
【００５６】
最初に、バッチ処理基盤２の給与計算バッチ２１は、図２に示すデータＡのうち、社員番号が“１”であるデータＡの読み出しを実行させるコマンドを投入する(ステップＳ２０１)。
【００５７】
続いて、コマンド実行装置３の振る舞い型決定部３１２２は、データＡの読み出しを実行させるコマンドの振る舞い型として“ＳＲＯ”を決定する(ステップＳ２０２)。
【００５８】
続いて、コマンド実行装置３のコマンド格納部３１２３は、振る舞い型“ＳＲＯ”に対応する設定情報に基づいて、優先度が“高”に設定されているコマンドキュー３１３に、データＡの読み出しを実行させるコマンドを格納する(ステップＳ２０３)。
【００５９】
続いて、コマンド実行装置３のコマンド実行部３１２４が、優先度を初期値の“最高”に設定する(ステップＳ２０４)。
【００６０】
続いて、コマンド実行部３１２４は、優先度が“最高”に設定されたコマンドキュー３１３にコマンドが格納されているか否かを判定し(ステップＳ２０５)、この判定がＮＯである(ステップＳ２０５；ＮＯ)ため、優先度を“高”に低下させる(ステップＳ２０７)。
【００６１】
続いて、コマンド実行部３１２４は、優先度が“高”に設定されたコマンドキュー３１３にコマンドが格納されているか否かを判定し(ステップＳ２０５)、この判定がＹＥＳである(ステップＳ２０５；ＹＥＳ)ため、このコマンドをＳＲＯエンジン３３に渡す。これにより、このコマンドが実行されたことになり(ステップＳ２０８)、コマンド実行部３１２４は、このコマンドをコマンドキュー３１３から削除する(ステップＳ２０９)。
【００６２】
コマンド実行部３１２４からコマンドを受け取ったＳＲＯエンジン３３は、社員番号が“１”であるデータＡをデータストア４から読み出し、受信バッファ３４２に格納する。受信バッファ３４２に格納されたデータＡは、上記ステップＳ２０１で投入されたコマンドの応答として、給与計算バッチ２１に送信される。
【００６３】
続いて、振る舞い型“ＳＲＯ”に対応する設定情報には、先読み数として“１０”が設定されているため、ＳＲＯエンジン３３は、社員番号が“１”〜“１０”までの１０件分のデータＡを順次読み出して受信バッファ３４２に蓄積していく。
【００６４】
この後、社員番号が“２”〜“１０”までのデータＡを読み出すコマンドが給与計算バッチ２１から投入された場合には、受信バッファ３４２に先読みして蓄積してあるデータＡを給与計算バッチ２１に返信することになる。これにより、処理を高速化することができる。なお、図５に示すように、受信バッファ３４２のバッファサイズは、データＡのデータサイズ“１００”を“１０”件分格納することができる“１０００”に設定されている。
【００６５】
続いて、バッチ処理基盤２の給与計算バッチ２１は、図３に示すデータＢのうち、社員番号が“１”であるデータＢの書き込みを実行させるコマンドを投入する(ステップＳ２０１)。データＢは、給与計算バッチ２１がデータＡを用いて計算した結果を含むデータである。
【００６６】
続いて、コマンド実行装置３の振る舞い型決定部３１２２は、データＢの書き込みを実行させるコマンドの振る舞い型として“ＳＷＯ”を決定する(ステップＳ２０２)。
【００６７】
続いて、コマンド実行装置３のコマンド格納部３１２３は、振る舞い型“ＳＷＯ”に対応する設定情報に基づいて、優先度が“中”に設定されているコマンドキュー３１３に、データＢの書き込みを実行させるコマンドを格納する(ステップＳ２０３)。
【００６８】
続いて、コマンド実行装置３のコマンド実行部３１２４が動作を開始し、優先度を“最高”に設定する(ステップＳ２０４)。
【００６９】
続いて、コマンド実行部３１２４は、優先度が“最高”に設定されたコマンドキュー３１３にコマンドが格納されているか否かを判定し(ステップＳ２０５)、この判定がＮＯである(ステップＳ２０５；ＮＯ)ため、優先度を“高”に低下させる(ステップＳ２０７)。
【００７０】
続いて、コマンド実行部３１２４は、優先度が“高”に設定されたコマンドキュー３１３にコマンドが格納されているか否かを判定し(ステップＳ２０５)、この判定がＮＯである(ステップＳ２０５；ＮＯ)ため、優先度を“中”に低下させる(ステップＳ２０７)。
【００７１】
続いて、コマンド実行部３１２４は、優先度が“中”に設定されたコマンドキュー３１３にコマンドが格納されているか否かを判定し(ステップＳ２０５)、この判定がＹＥＳである(ステップＳ２０５；ＹＥＳ)ため、このコマンドをＳＷＯエンジン３５に渡す。これにより、このコマンドが実行されたことになり(ステップＳ２０８)、コマンド実行部３１２４は、このコマンドをコマンドキュー３１３から削除する(ステップＳ２０９)。
【００７２】
コマンド実行部３１２４からコマンドを受け取ったＳＷＯエンジン３５は、送信バッファ３６１に格納されている社員番号が“１”であるデータＢをデータストア４に書き込み、その書き込みに対する応答内容を受信バッファ３６２に格納する。
【００７３】
次に、データＢの処理とデータＡの処理とが重なった場合の動作について説明する。
【００７４】
まず、給与計算バッチ２１が、データＢの書き込みを実行させるコマンドをコマンド実行装置３に投入する。続いて、コマンド実行部３１２４は、データＢの振る舞い型が“ＳＷＯ”であるため、ＳＷＯエンジン３５にコマンドを渡す。
【００７５】
ここで、データＡを蓄積するＳＲＯの受信バッファ３４２は“バッファ２”であり、データＢを送信するＳＷＯの送信バッファ３６１は“バッファ３”である。“バッファ２”の優先度“低”と“バッファ３”の優先度“中”とを比較すると、“バッファ３”の優先度の方が高い。したがって、コマンド実行部３１２４は、ＳＲＯエンジン３３がデータＡの先読みを実行しているときには、一旦、先読みを中断させ、データＢの書き込みを優先させる。そして、データＢの書き込みが終了した後に、データＡの先読みを再開させる。
【００７６】
続いて、データストア４は、データＢの書き込みに成功すると、データＢの書き込みレスポンスをコマンド実行装置３に返信する。続いて、通信モジュール３６は、データＢの書き込みレスポンスを受信バッファ３６２に格納する。続いて、通信モジュール３６は、受信バッファ３６２にコマンドが格納されたことを、ＳＷＯエンジン３５を介してメインエンジン３１に通知する。
【００７７】
続いて、コマンド実行部３１２４は、ＳＷＯの受信バッファ３６２が“バッファ４”で優先度が“高”であるため、ＳＲＯエンジン３３がデータＡの先読みを実行しているときには、一旦、先読みを中断させ、データＢの書き込みレスポンスの給与計算バッチ２１への返信を優先させる。そして、データＢの書き込みレスポンスの返信が終了した後に、データＡの先読みを再開させる。これにより、給与計算バッチ２１は、データＢの書き込みが成功したことを速やかに認識することができるため、次の処理に進むまでの時間を短縮することができる。
【００７８】
上述したように、第１実施形態におけるコマンド実行システムによれば、データの入出力動作ごとに振る舞い型を定義し、振る舞い型ごとに優先度を含む設定情報を登録することができるため、投入されたコマンドに基づいて決定可能な振る舞い型に応じた優先度で、振る舞い型に応じたデータ処理を実行させることができる。これにより、バッチ処理に特有のデータ処理を効率よく実行することができる。
【００７９】
また、バッチ処理を実行する前に、振る舞い型を定義し、設定情報を登録することができるため、例えばバッチ処理で扱うデータサイズが変更になる等、バッチ処理の内容が変更された場合であっても、容易に追随させることが可能となる。
【００８０】
また、通信モジュールの中には、別ハードウェア(例えばＴＣＰ／ＩＰ Ｅｎｇｉｎｅ付きのＮＩＣ（Network Interface Card）)として個別にメモリを備えるものがあるため、メインメモリを用いずに通信モジュールのメモリをバッファとして用いることとしてもよい。通信モジュールのバッファを、振る舞いエンジンのバッファとして用いることにより、メインメモリを節約することが可能となる。
【００８１】
また、振る舞いエンジンごとに通信モジュールを用意することで、通信モジュールのバッファからデータを取り出さずに、振る舞い型に応じた優先度の制御を行うことが可能となる。例えば、データストア４とのアクセスに一つのSocketのみを用いた場合には、Socketの中からデータを取り出さない限り、コマンド/レスポンスやデータの内容を判別することができないため、バッファからデータを取り出さずに、振る舞い型に応じた優先度の制御を行うことはできない。
【００８２】
[第２実施形態]
本発明の第２実施形態について説明する。第２実施形態におけるコマンド実行システムは、バッチ処理の実行環境やデータストアを複数のサーバに分散した分散環境の下でバッチ処理を実行する。図８は、第２実施形態におけるコマンド実行システムを模式的に示した構成図である。以下においては、主に第１実施形態との相違点について説明する。
【００８３】
図８に示すように、第２実施形態におけるコマンド実行システムは、第１実施形態におけるコマンド実行装置３をコマンド実行クライアント３Ｃとコマンド実行サーバ３Ｓとに分離し、第１実施形態におけるバッチ処理基盤２をバッチ処理２１、２２ごとに分散し、分散したバッチ処理ごとにコマンド実行クライアント３Ｃを備え、データストア４を複数のサーバで構成してデータを分散管理する点で、第１実施形態におけるコマンド実行システムと異なる。なお、コマンド実行クライアント３Ｃやコマンド実行サーバ３Ｓは、一台であってもよいし、複数台であってもよい。さらに、コマンド実行サーバ３Ｓを分散し、各コマンド実行サーバ３Ｓ間で振る舞い型と設定情報とを共有させ、同期させることとしてもよい。
【００８４】
図９に示すように、コマンド実行クライアント３Ｃおよびコマンド実行サーバ３Ｓは、図１に示す第１実施形態におけるコマンド実行装置３と同様の構成要素をそれぞれ有する。しかし、コマンド実行クライアント３Ｃおよびコマンド実行サーバ３Ｓの一部の構成要素の機能は、第１実施形態におけるコマンド実行装置３の一部の構成要素の機能と相違する。これは、第１実施形態では、バッチ処理基盤２とデータストア４との間をコマンド実行装置３が中継するのに対し、第２実施形態では、バッチ処理基盤２とデータストア４との間を、コマンド実行クライアント３Ｃおよびコマンド実行サーバ３Ｓが中継する点で相違するためである。
【００８５】
以下においては、複数あるコマンド実行クライアント３Ｃのうち、給与計算バッチ２１を有するバッチ処理基盤２と接続するコマンド実行クライアント３Ｃを例にして説明する。
【００８６】
給与計算バッチ２１は、バッチ処理の内容に応じて設定情報を登録、更新する。設定情報が登録、更新された場合、コマンド実行クライアント３Ｃの設定情報記憶部３１１Ｃに記憶される設定情報と、コマンド実行サーバ３Ｓの設定情報記憶部３１１Ｓに記憶される設定情報とに同期して反映される。なお、コマンド実行クライアント３Ｃとコマンド実行サーバ３Ｓとは、必要に応じて設定情報の同期や設定情報の交換を行うことができる。
【００８７】
図１０を参照して、第２実施形態における設定情報について説明する。第２実施形態における設定情報は、図４に示す第１実施形態における設定情報と同様のデータ項目を有する。第２実施形態における設定情報には、振る舞い型として“制御”が登録されている。これは、例えば、コマンド実行クライアント３Ｃとコマンド実行サーバ３Ｓとの間で設定情報の同期をとる場合等に、制御用の振る舞い型として用いることができる。振る舞い型の“ＳＲＯ”および“ＳＷＯ”については、第１実施形態における設定情報と同様である。なお、コマンド実行サーバ３Ｓは、複数のコマンド実行クライアント３Ｃと接続可能であるため、接続したコマンド実行クライアント３Ｃごとに区別して設定情報を保有する。
【００８８】
コマンド実行クライアント３Ｃおよびコマンド実行サーバ３Ｓは、設定情報に基づいて、それぞれ振る舞いエンジンや通信モジュールを生成する。具体的に、コマンド実行クライアント３Ｃの生成部３１２１Ｃは、図１０に示す設定情報に基づいて、ＳＲＯエンジン３３Ｃ、ＳＷＯエンジン３５Ｃおよび通信モジュール３４Ｃ、３６Ｃを生成し、送信バッファおよび受信バッファの設定を行う。また、コマンド実行サーバ３Ｓの生成部３１２１Ｓも同様に、ＳＲＯエンジン３３Ｓ、ＳＷＯエンジン３５Ｓおよび通信モジュール３４Ｓ、３６Ｓを生成し、送信バッファおよび受信バッファの設定を行う。
【００８９】
図１０に示す設定情報に基づいて通信モジュールを生成する場合に、生成部３１２１Ｃ、３１２１Ｓは、図１１および図１２に示す内容で通信モジュールをそれぞれ生成する。図１１は、コマンド実行クライアント３Ｃの通信モジュールの設定内容を示す図であり、図１２は、コマンド実行サーバ３Ｓの通信モジュールの設定内容を示す図である。
【００９０】
図１２に示すように、コマンド実行サーバ３Ｓの生成部３１２１Ｓは、ＳＲＯおよびＳＷＯの受信バッファの設定内容と送信バッファの設定内容とを入れ替えて設定する。これは、コマンド実行クライアント３Ｃの送信バッファから送信されるデータは、コマンド実行サーバ３Ｓの受信バッファに格納され、コマンド実行サーバ３Ｓの送信バッファから送信されるデータは、コマンド実行クライアント３Ｃの受信バッファに格納されるため、同じデータをやり取りするバッファ同士でデータサイズと優先度を合致させる必要があるためである。
【００９１】
次に、第２実施形態におけるコマンド実行システムの動作について説明する。まず、図１３を参照して、給与計算バッチを実行する前の準備段階の動作について説明する。本動作例では、給与計算バッチ２１が図２に示すデータＡ（ＳＲＯ）と図３に示すデータＢ（ＳＷＯ）とを使用してバッチ処理を実行する場合について説明する。
【００９２】
最初に、バッチ処理基盤２の給与計算バッチ２１は、実行するバッチ処理に基づいて、バッチ処理で使用するデータの振る舞いや優先度を含む設定情報をコマンド実行クライアント３Ｃに登録する（ステップＳ３０１）。
【００９３】
続いて、コマンド実行クライアント３Ｃのメインエンジン３１Ｃは、給与計算バッチ２１により登録された設定情報を設定情報記憶部３１１Ｃに書き込む(ステップＳ３０２)。本動作例では、図１０に示す振る舞い型が“ＳＲＯ”である設定情報と、振る舞い型が“ＳＷＯ”である設定情報と、が設定情報記憶部３１１Ｃに書き込まれる。
【００９４】
続いて、コマンド実行クライアント３Ｃは、書き込み後の設定情報を、コマンド実行サーバ３Ｓの設定情報に反映させる（ステップＳ３０３）。具体的に、コマンド実行クライアント３Ｃは、予め設定されている振る舞い型が“制御用”の設定情報に基づいて、コマンド実行サーバ３Ｓの通信モジュール３２Ｓに接続し、書き込み後の設定情報をコマンド実行サーバ３Ｓの設定情報に反映させて同期をとる。
【００９５】
続いて、コマンド実行サーバ３Ｓの生成部３１２１Ｓは、設定情報記憶部３１１Ｓに設定された設定情報に基づいて、ＳＲＯエンジン３３Ｓ、通信モジュール３４Ｓ、ＳＷＯエンジン３５Ｓおよび通信モジュール３６Ｓを含むコンポーネント群を生成する(ステップＳ３０４)。
【００９６】
続いて、コマンド実行サーバ３Ｓの生成部３１２１Ｓは、設定情報記憶部３１１Ｓに設定された設定情報に基づいて、給与計算バッチ２１の実行環境を各コンポーネントに設定する(ステップＳ３０５)。本動作例では、ＳＲＯエンジン３３Ｓが通信モジュール３４Ｓを使用し、ＳＷＯエンジン３５Ｓが通信モジュール３６Ｓを使用するように、実行環境が設定される。また、送信バッファ３４１Ｓ、３６１Ｓおよび受信バッファ３４２Ｓ、３６２Ｓのバッファサイズ、コマンド実行サーバ３Ｓでの処理の優先度、ならびにコマンドキュー３１３Ｓの初期状態（初期状態は空）などが、実行環境として設定される。
【００９７】
続いて、コマンド実行クライアント３Ｃの生成部３１２１Ｃは、設定情報記憶部３１１Ｃに設定された設定情報に基づいて、ＳＲＯエンジン３３Ｃ、通信モジュール３４Ｃ、ＳＷＯエンジン３５Ｃおよび通信モジュール３６Ｃを含むコンポーネント群を生成する(ステップＳ３０６)。
【００９８】
続いて、コマンド実行クライアント３Ｃの生成部３１２１Ｃは、設定情報記憶部３１１Ｃに設定された設定情報に基づいて、給与計算バッチ２１の実行環境を各コンポーネントに設定する(ステップＳ３０７)。本動作例では、ＳＲＯエンジン３３Ｃが通信モジュール３４Ｃを使用し、ＳＷＯエンジン３５Ｃが通信モジュール３６Ｃを使用するように、実行環境が設定される。また、送信バッファ３４１Ｃ、３６１Ｃおよび受信バッファ３４２Ｃ、３６２Ｃのバッファサイズ、コマンド実行クライアント３Ｃでの処理の優先度、ならびにコマンドキュー３１３Ｃの初期状態（初期状態は空）などが、実行環境として設定される。
【００９９】
次に、図１４を参照して、給与計算バッチを実行する際のコマンド実行クライアント側の動作について説明する。なお、この動作は、給与計算バッチからコマンドを投入されるたびに、繰り返し実行される。
【０１００】
最初に、バッチ処理基盤２の給与計算バッチ２１から、コマンド実行クライアント３Ｃにコマンドが投入される(ステップＳ４０１)。
【０１０１】
続いて、コマンド実行クライアント３Ｃの振る舞い型決定部３１２２Ｃは、コマンドの内容を解析し、コマンドの振る舞い型を決定する(ステップＳ４０２)。本動作例では、コマンドによって実行されるデータ処理で用いるデータの振る舞い型識別情報を参照することで振る舞い型を決定する。
【０１０２】
続いて、コマンド実行クライアント３Ｃのコマンド格納部３１２３Ｃは、上記ステップＳ４０２で決定された振る舞い型に対応する設定情報に基づいて、コマンドキュー３１３Ｃにコマンドを格納する(ステップＳ４０３)。
【０１０３】
続いて、コマンド実行クライアント３Ｃのコマンド実行部３１２４Ｃが動作を開始し、優先度を“最高”に設定する(ステップＳ４０４)。
【０１０４】
続いて、コマンド実行部３１２４Ｃは、設定した優先度に対応するコマンドキュー３１３Ｃにコマンドが格納されているか否かを判定する(ステップＳ４０５)。この判定がＮＯである場合(ステップＳ４０５；ＮＯ)に、コマンド実行部３１２４Ｃは、優先度が“最低”でなければ(ステップＳ４０６；ＮＯ)、優先度のレベルを一つ低下させ(ステップＳ４０７)、処理を上記ステップＳ４０５に移行し、優先度が“最低”であれば(ステップＳ４０６；ＹＥＳ)、本動作を終了する。
【０１０５】
一方、上記ステップＳ４０５の判定において、設定した優先度に対応するコマンドキュー３１３Ｃにコマンドが格納されていると判定された場合(ステップＳ４０５；ＹＥＳ)に、コマンド実行部３１２４Ｃは、そのコマンドを実行し(ステップＳ４０８)、実行したコマンドをコマンドキュー３１３Ｃから削除する(ステップＳ４０９)。そして、処理を上記ステップＳ４０４に移行する。
【０１０６】
次に、図１５を参照して、給与計算バッチを実行する際のコマンド実行サーバ側の動作について説明する。なお、この動作は、給与計算バッチからコマンドが投入されたとみなされるたびに、繰り返し実行される。
【０１０７】
最初に、通信モジュール３４Ｓの受信バッファ３４２Ｓにコマンドが格納されることにより、コマンドが投入されたとみなす(ステップＳ５０１)。
【０１０８】
続いて、コマンド実行サーバ３Ｓの振る舞い型決定部３１２２Ｓは、コマンドが格納された受信バッファ３４２Ｓに基づいて、コマンドの振る舞い型を決定する(ステップＳ５０２)。
【０１０９】
続いて、コマンド実行サーバ３Ｓのコマンド格納部３１２３Ｓは、上記ステップＳ５０２で決定された振る舞い型に対応する設定情報に基づいて、コマンドキュー３１３Ｓにコマンドを格納する(ステップＳ５０３)。
【０１１０】
続いて、コマンド実行サーバ３Ｓのコマンド実行部３１２４Ｓが動作を開始し、優先度を“最高”に設定する(ステップＳ５０４)。
【０１１１】
続いて、コマンド実行部３１２４Ｓは、設定した優先度に対応するコマンドキュー３１３Ｃにコマンドが格納されているか否かを判定する(ステップＳ５０５)。この判定がＮＯである場合(ステップＳ５０５；ＮＯ)に、コマンド実行部３１２４Ｃは、優先度が“最低”でなければ(ステップＳ５０６；ＮＯ)、優先度のレベルを一つ低下させ(ステップＳ５０７)、処理を上記ステップＳ５０５に移行し、優先度が“最低”であれば(ステップＳ５０６；ＹＥＳ)、本動作を終了する。
【０１１２】
一方、上記ステップＳ５０５の判定において、設定した優先度に対応するコマンドキュー３１３Ｓにコマンドが格納されていると判定された場合(ステップＳ５０５；ＹＥＳ)に、コマンド実行部３１２４Ｓは、そのコマンドを実行し(ステップＳ５０８)、実行したコマンドをコマンドキュー３１３Ｓから削除する(ステップＳ５０９)。そして、処理を上記ステップＳ５０４に移行する。
【０１１３】
次に、上述した図１４および図１５に示す動作の具体例として、給与計算バッチ２１が図２に示すデータＡ（ＳＲＯ）と図３に示すデータＢ（ＳＷＯ）とを使用してバッチ処理を実行する場合について説明する。
【０１１４】
最初に、バッチ処理基盤２の給与計算バッチ２１は、図２に示すデータＡのうち、社員番号が“１”であるデータＡの読み出しを実行させるコマンドをコマンド実行クライアント３Ｃに投入する(ステップＳ４０１)。
【０１１５】
続いて、コマンド実行クライアント３Ｃの振る舞い型決定部３１２２Ｃは、データＡの読み出しを実行させるコマンドの振る舞い型として“ＳＲＯ”を決定する(ステップＳ４０２)。
【０１１６】
続いて、コマンド実行クライアント３Ｃのコマンド格納部３１２３Ｃは、振る舞い型“ＳＲＯ”に対応する設定情報に基づいて、優先度が“高”に設定されているコマンドキュー３１３Ｃに、データＡの読み出しを実行させるコマンドを格納する(ステップＳ４０３)。
【０１１７】
続いて、コマンド実行クライアント３Ｃのコマンド実行部３１２４Ｃが、優先度を初期値の“最高”に設定する(ステップＳ４０４)。
【０１１８】
続いて、コマンド実行部３１２４Ｃは、優先度が“最高”に設定されたコマンドキュー３１３Ｃにコマンドが格納されているか否かを判定し(ステップＳ４０５)、この判定がＮＯである(ステップＳ４０５；ＮＯ)ため、優先度を“高”に低下させる(ステップＳ４０７)。
【０１１９】
続いて、コマンド実行部３１２４Ｃは、優先度が“高”に設定されたコマンドキュー３１３Ｃにコマンドが格納されているか否かを判定し(ステップＳ４０５)、この判定がＹＥＳである(ステップＳ４０５；ＹＥＳ)ため、このコマンドをＳＲＯエンジン３３Ｃに渡す。これにより、このコマンドが実行されたことになり(ステップＳ４０８)、コマンド実行部３１２４Ｃは、このコマンドをコマンドキュー３１３Ｃから削除する(ステップＳ４０９)。
【０１２０】
コマンド実行部３１２４Ｃからコマンドを受け取ったＳＲＯエンジン３３Ｃは、このコマンドを送信バッファ３４１Ｃに格納する。送信バッファ３４１Ｃに格納されたコマンドは、コマンド実行サーバ３Ｓに送信される。
【０１２１】
続いて、コマンド実行サーバ３Ｓの振る舞い型決定部３１２２Ｓは、コマンド実行クライアント３Ｃから送信されたコマンドを格納した受信バッファ３４２Ｓが“バッファ４”であることから、データＡの読み出しを実行させるコマンドの振る舞い型として“ＳＲＯ”を決定する(ステップＳ５０２)。
【０１２２】
続いて、コマンド実行サーバ３Ｓのコマンド格納部３１２３Ｓは、振る舞い型“ＳＲＯ”に対応する設定情報に基づいて、優先度が“高”に設定されているコマンドキュー３１３Ｓに、データＡの読み出しを実行させるコマンドを格納する(ステップＳ５０３)。
【０１２３】
続いて、コマンド実行サーバ３Ｓのコマンド実行部３１２４Ｓが、優先度を初期値の“最高”に設定する(ステップＳ５０４)。
【０１２４】
続いて、コマンド実行部３１２４Ｓは、優先度が“最高”に設定されたコマンドキュー３１３Ｓにコマンドが格納されているか否かを判定し(ステップＳ５０５)、この判定がＮＯである(ステップＳ５０５；ＮＯ)ため、優先度を“高”に低下させる(ステップＳ５０７)。
【０１２５】
続いて、コマンド実行部３１２４Ｓは、優先度が“高”に設定されたコマンドキュー３１３Ｓにコマンドが格納されているか否かを判定し(ステップＳ５０５)、この判定がＹＥＳである(ステップＳ５０５；ＹＥＳ)ため、このコマンドをＳＲＯエンジン３３Ｓに渡す。これにより、このコマンドが実行されたことになり(ステップＳ５０８)、コマンド実行部３１２４Ｓは、このコマンドをコマンドキュー３１３Ｓから削除する(ステップＳ５０９)。
【０１２６】
コマンド実行部３１２４Ｓからコマンドを受け取ったＳＲＯエンジン３３Ｓは、社員番号が“１”であるデータＡをデータストア４から読み出し、送信バッファ３４１Ｓに格納する。送信バッファ３４１Ｓに格納されたデータＡは、コマンド実行クライアント３Ｃに送信され、さらに、コマンド実行クライアント３Ｃから給与計算バッチ２１に送信される。
【０１２７】
続いて、振る舞い型“ＳＲＯ”に対応する設定情報には、先読み数として“１０”が設定されているため、ＳＲＯエンジン３３Ｓは、社員番号が“１”〜“１０”までの１０件分のデータＡを順次読み出して送信バッファ３４１Ｓに蓄積していく。
【０１２８】
ここで、ＳＲＯエンジン３３Ｓは、送信バッファ３４１ＳにデータＡが格納されている場合には、コマンド実行クライアント３Ｃの受信バッファ３４２Ｃが一杯（１０件分）になるまでデータＡを順次送信する。受信バッファ３４２Ｃが一杯になった場合には、受信バッファ３４２Ｃに空きができるまで待機し、空きができてからデータＡを送信する。
【０１２９】
この後、社員番号が“２”〜“１０”までのデータＡを読み出すコマンドが給与計算バッチ２１からコマンド実行クライアント３Ｃに投入された場合には、コマンド実行クライアント３Ｃの受信バッファ３４２Ｃに先読みして蓄積してあるデータＡを給与計算バッチ２１に返信することになる。これにより、処理を高速化することができる。
【０１３０】
続いて、バッチ処理基盤２の給与計算バッチ２１は、図３に示すデータＢのうち、社員番号が“１”であるデータＢの書き込みを実行させるコマンドをコマンド実行クライアント３Ｃに投入する(ステップＳ４０１)。
【０１３１】
続いて、コマンド実行クライアント３Ｃの振る舞い型決定部３１２２Ｃは、データＢの書き込みを実行させるコマンドの振る舞い型として“ＳＷＯ”を決定する(ステップＳ４０２)。
【０１３２】
続いて、コマンド実行クライアント３Ｃのコマンド格納部３１２３Ｃは、振る舞い型“ＳＷＯ”に対応する設定情報に基づいて、優先度が“中”に設定されているコマンドキュー３１３Ｃに、データＢの書き込みを実行させるコマンドを格納する(ステップＳ４０３)。
【０１３３】
続いて、コマンド実行クライアント３Ｃのコマンド実行部３１２４Ｃが動作を開始し、優先度を“最高”に設定する(ステップＳ４０４)。
【０１３４】
続いて、コマンド実行部３１２４Ｃは、優先度が“最高”に設定されたコマンドキュー３１３Ｃにコマンドが格納されているか否かを判定し(ステップＳ４０５)、この判定がＮＯである(ステップＳ４０５；ＮＯ)ため、優先度を“高”に低下させる(ステップＳ４０７)。
【０１３５】
続いて、コマンド実行部３１２４Ｃは、優先度が“高”に設定されたコマンドキュー３１３Ｃにコマンドが格納されているか否かを判定し(ステップＳ４０５)、この判定がＮＯである(ステップＳ４０５；ＮＯ)ため、優先度を“中”に低下させる(ステップＳ４０７)。
【０１３６】
続いて、コマンド実行部３１２４Ｃは、優先度が“中”に設定されたコマンドキュー３１３Ｃにコマンドが格納されているか否かを判定し(ステップＳ４０５)、この判定がＹＥＳである(ステップＳ４０５；ＹＥＳ)ため、このコマンドをＳＷＯエンジン３５Ｃに渡す。これにより、このコマンドが実行されたことになり(ステップＳ４０８)、コマンド実行部３１２４Ｃは、このコマンドをコマンドキュー３１３Ｃから削除する(ステップＳ４０９)。
【０１３７】
コマンド実行部３１２４Ｃからコマンドを受け取ったＳＷＯエンジン３５Ｃは、このコマンドを送信バッファ３６１Ｃに格納する。送信バッファ３６１Ｃに格納されたコマンドは、コマンド実行サーバ３Ｓに送信される。
【０１３８】
続いて、コマンド実行サーバ３Ｓの振る舞い型決定部３１２２Ｓは、コマンド実行クライアント３Ｃから送信されたコマンドを格納する受信バッファ３６２Ｓが“バッファ６”であることから、データＢの書き込みを実行させるコマンドの振る舞い型として“ＳＷＯ”を決定する(ステップＳ５０２)。
【０１３９】
続いて、コマンド実行サーバ３Ｓのコマンド格納部３１２３Ｓは、振る舞い型“ＳＷＯ”に対応する設定情報に基づいて、優先度が“中”に設定されているコマンドキュー３１３Ｓに、データＢの書き込みを実行させるコマンドを格納する(ステップＳ５０３)。
【０１４０】
続いて、コマンド実行サーバ３Ｓのコマンド実行部３１２４Ｓが、優先度を初期値の“最高”に設定する(ステップＳ５０４)。
【０１４１】
続いて、コマンド実行部３１２４Ｓは、優先度が“最高”に設定されたコマンドキュー３１３Ｓにコマンドが格納されているか否かを判定し(ステップＳ５０５)、この判定がＮＯである(ステップＳ５０５；ＮＯ)ため、優先度を“高”に低下させる(ステップＳ５０７)。
【０１４２】
続いて、コマンド実行部３１２４Ｓは、優先度が“高”に設定されたコマンドキュー３１３Ｓにコマンドが格納されているか否かを判定し(ステップＳ５０５)、この判定がＮＯである(ステップＳ５０５；ＮＯ)ため、優先度を“中”に低下させる(ステップＳ５０７)。
【０１４３】
続いて、コマンド実行部３１２４Ｓは、優先度が“中”に設定されたコマンドキュー３１３Ｓにコマンドが格納されているか否かを判定し(ステップＳ５０５)、この判定がＹＥＳである(ステップＳ５０５；ＹＥＳ)ため、このコマンドをＳＷＯエンジン３５Ｓに渡す。これにより、このコマンドが実行されたことになり(ステップＳ５０８)、コマンド実行部３１２４Ｓは、このコマンドをコマンドキュー３１３Ｓから削除する(ステップＳ５０９)。
【０１４４】
コマンド実行部３１２４Ｓからコマンドを受け取ったＳＷＯエンジン３５Ｓは、受信バッファ３６２Ｓに格納されている社員番号が“１”であるデータＢをデータストア４に書き込み、その書き込みに対する応答内容を送信バッファ３６１Ｓに格納する。ＳＷＯエンジン３５Ｓは、書き込みに対する応答内容が送信バッファ３６１Ｓに格納されている場合には、その応答内容をコマンド実行クライアント３Ｃに送信する。そして、その応答内容は、コマンド実行クライアント３Ｃから、さらに給与計算バッチ２１に送信される。
【０１４５】
なお、振る舞いエンジン間で処理が重なる場合に、優先度の高い処理を優先させる動作については、第１実施形態と同様であるため、ここでは、その説明を省略する。
【０１４６】
上述したように、第２実施形態におけるコマンド実行システムによれば、コマンド実行装置をコマンド実行クライアントとコマンド実行サーバとに分離することで、振る舞いエンジンの処理負荷を分散することができ、バッチ処理に必要なリソース(ＣＰＵ、メモリなど)を削減することが可能となる。また、データストアを分散化した場合には、分散したデータを保持しているサーバを見つける必要があるため、データストアからデータを探すための処理やメモリなどを分散することで、バッチ処理への負荷を軽減させることが可能となる。
【０１４７】
また、例えばデータの先読みを制御する場合に、コマンド実行サーバは、コマンド実行クライアントの受信バッファに空きができたことを検出したときに、先読みデータをＰＵＳＨで送信することができるため、制御コマンドを発行することなく、データ処理を制御することが可能となる。
【０１４８】
また、通信モジュール間の輻輳制御機能を利用することにより、振る舞いエンジンの制御コマンドを送らなくても、データ処理を制御することが可能となる。
【０１４９】
また、コマンド実行クライアントとコマンド実行サーバとが設定情報の同期をとることができるため、複数のバッチ処理が並列分散で処理されても、バッチ処理の優先度を制御することが可能となる。
【０１５０】
また、各バッチ処理を他のバッチ処理から独立させて実行させることができるため、全体の管理者がそれぞれのバッチ業務の重要度に基づいて、リソースを管理することが可能となる。例えば、給与計算バッチと税金計算バッチが同時に実行されても、月末だけ税金計算バッチ処理のデータアクセスを優先させる等、きめ細かなリソース調整が可能となる。
【０１５１】
[変形例]
なお、上述した各実施形態は、単なる例示に過ぎず、各実施形態に明示していない種々の変形や技術の適用を排除するものではない。すなわち、本発明は、その趣旨を逸脱しない範囲で様々な形態に変形して実施することができる。
【０１５２】
例えば、上述した各実施形態では、データに振る舞い型を識別する情報を付加しているが、振る舞い型を識別する方法は、これに限定されない。例えば、振る舞い型をバッチ処理ごとに定義することとしてもよい。
【０１５３】
また、上述した各実施形態では、振る舞い型として、ＳＲＯとＳＷＯとを用いて説明しているが、振る舞い型はこれに限定されない。例えば、データとして優先度は高くないがランダムに一回だけ書き込み、データサイズが大きい場合には、振る舞い型をＲＷＯＬ(Random Write Once Large)と定義することができる。この場合には、例えば、振る舞いエンジンが一つのデータを分散かつ重複して複数のデータストアに書き込むようにし、書き込んだ後はＲｅａｄ Ｏｎｌｙにして、ロックせずに読み込みのみを行うようにデータのハンドリングを最適化することができる。
【０１５４】
また、特定のバッチ業務で使用される特定のデータがある場合、それを振る舞い型として定義し、そのバッチ業務を処理するコマンド実行クライアント３Ｃに最適なデータアクセス方法をコマンド実行サーバ３Ｓが提供することとしてもよい。例えば、給与計算バッチで頻繁に使用するデータＡを予めコマンド実行クライアント３Ｃに近いデータストア４内に配置しておくことや、給与計算バッチを実行するコンピュータに近いコマンド実行サーバ３Ｓに優先して、データＡを配置しておくこととしてもよい。
【０１５５】
また、上述した各実施形態では、一つの振る舞い型に対して一つの振る舞いエンジンを割り当てているが、一つの振る舞い型に対して複数の振る舞いエンジンを割り当てることとしてもよい。
【０１５６】
また、上述した各実施形態では、一つの振る舞いエンジンに対して一つの通信モジュールを割り当てているが、一つの振る舞いエンジンに対して複数の通信モジュールを割り当てることとしてもよい。
【０１５７】
また、バッファの状態を管理する方法としては、通信モジュールからメインエンジンに通知を行うことにしてもよいし、メインエンジンがポーリングを用いて通信モジュールを監視することとしてもよい。バッファの状態を管理する方法を、負荷の状態に応じて切り替えることとしてもよい。例えば、大量にデータの送受信が行われる場合には、通信モジュールからイベントを通知するよりも、メインエンジンがポーリングを用いて通信モジュールを監視した方が処理負荷を軽減できる場合がある。したがって、この場合には、メインエンジンがポーリングを用いて通信モジュールを監視する方法に切り替えることとしてもよい。
【０１５８】
上記の各実施形態の一部または全部は、以下の付記のようにも記載され得る。ただし、本発明を以下に限定するものではない。
【０１５９】
（付記１）  投入されたコマンドにより実行されるデータ処理の内容に応じて、データの入出力動作の内容を示す振る舞い型を決定する振る舞い型決定部と、前記振る舞い型ごとに予め設定されている設定情報を参照し、前記設定情報に含まれる優先度に基づいて、前記優先度ごとに設けられたコマンドキューに前記コマンドを格納するコマンド格納部と、前記コマンドキューに格納された前記コマンドのうち、前記優先度が最も高い前記コマンドキューに格納された前記コマンドを、前記コマンドキューから取り出して実行するコマンド実行部と、を備えることを特徴とするコマンド実行装置。
【０１６０】
（付記２）  前記設定情報が登録されたときに、登録後の前記設定情報に基づいて、前記振る舞い型ごとに、前記データの入出力動作を制御する入出力動作制御部、前記データの入出力動作に伴う送信データを格納する送信用バッファ、および前記データの入出力動作に伴う受信データを格納する受信用バッファを、それぞれ生成する生成部を、さらに備える、ことを特徴とする付記１記載のコマンド実行装置。
【０１６１】
（付記３）  前記設定情報は、少なくとも、前記振る舞い型ごとに、前記データの入出力動作に伴う送信データのデータサイズ、前記データの入出力動作に伴う送信処理の優先度、前記データの入出力動作に伴う受信データのデータサイズ、および前記データの入出力動作に伴う受信処理の優先度を、それぞれ含む、ことを特徴とする付記１または２記載のコマンド実行装置。
【０１６２】
（付記４）  前記振る舞い型が順次先読み処理を示す前記振る舞い型である場合に、前記設定情報は、先読みデータ数をさらに含む、ことを特徴とする付記３記載のコマンド実行装置。
【０１６３】
（付記５）  前記振る舞い型決定部は、前記データ処理に用いられるデータに含まれる振る舞い型識別情報に基づいて、前記振る舞い型を決定する、ことを特徴とする付記１〜４のいずれか１項に記載のコマンド実行装置。
【０１６４】
（付記６）  クライアントとサーバとを備えるコマンド実行システムであって、前記クライアントは、投入されたコマンドにより実行されるデータ処理の内容に応じて、データの入出力動作の内容を示す振る舞い型を決定する振る舞い型決定部と、前記振る舞い型ごとに予め設定されている設定情報を参照し、前記設定情報に含まれる優先度に基づいて、前記優先度ごとに設けられたコマンドキューに前記コマンドを格納する第１コマンド格納部と、前記第１コマンド格納部によって前記コマンドキューに格納された前記コマンドのうち、前記優先度が最も高い前記コマンドキューに格納された前記コマンドを、前記コマンドキューから取り出して前記サーバに送信するコマンド送信部と、を有し、前記サーバは、前記クライアントから送信された前記コマンドを受信するコマンド受信部と、前記受信された前記コマンドに対応する前記優先度に基づいて、前記優先度ごとに設けられたコマンドキューに前記コマンドを格納する第２コマンド格納部と、前記第２コマンド格納部によって前記コマンドキューに格納された前記コマンドのうち、前記優先度が最も高い前記コマンドキューに格納された前記コマンドを、前記コマンドキューから取り出して実行するコマンド実行部と、を有する、ことを特徴とするコマンド実行システム。
【０１６５】
（付記７）  前記クライアントは、前記設定情報が登録されたときに、登録後の前記設定情報に基づいて、前記振る舞い型ごとに、前記データの送受信動作を制御する送受信動作制御部、前記データの送受信動作に伴う送信データを格納する送信用バッファ、および前記データの送受信動作に伴う受信データを格納する受信用バッファを、それぞれ生成する第１生成部を、さらに有し、前記サーバは、前記設定情報が登録されたときに、登録後の前記設定情報に基づいて、前記振る舞い型ごとに、前記データの入出力動作を制御する入出力動作制御部、前記データの入出力動作に伴う送信データを格納する送信用バッファ、および前記データの入出力動作に伴う受信データを格納する受信用バッファを、それぞれ生成する第２生成部を、さらに有する、ことを特徴とする付記６記載のコマンド実行システム。
【０１６６】
（付記８）  前記設定情報は、少なくとも、前記振る舞い型ごとに、前記データの送受信動作または入出力動作に伴う送信データのデータサイズ、前記データの入出力動作に伴う送信処理の優先度、前記データの送受信動作または入出力動作に伴う受信データのデータサイズ、および前記データの送受信動作または入出力動作に伴う受信処理の優先度を、それぞれ含む、ことを特徴とする付記６または７記載のコマンド実行システム。
【０１６７】
（付記９）  前記振る舞い型が順次先読み処理を示す前記振る舞い型である場合に、前記設定情報は、先読みデータ数をさらに含む、ことを特徴とする付記８記載のコマンド実行システム。
【０１６８】
（付記１０）  前記振る舞い型決定部は、前記データ処理に用いられるデータに含まれる振る舞い型識別情報に基づいて、前記振る舞い型を決定する、ことを特徴とする付記６〜９のいずれか１項に記載のコマンド実行システム。
【０１６９】
（付記１１）  投入されたコマンドにより実行されるデータ処理の内容に応じて、データの入出力動作の内容を示す振る舞い型を決定する振る舞い型決定ステップと、前記振る舞い型ごとに予め設定されている設定情報を参照し、前記設定情報に含まれる優先度に基づいて、前記優先度ごとに設けられたコマンドキューに前記コマンドを格納するコマンド格納ステップと、前記コマンドキューに格納された前記コマンドのうち、前記優先度が最も高い前記コマンドキューに格納された前記コマンドを、前記コマンドキューから取り出して実行するコマンド実行ステップと、を含むことを特徴とするコマンド実行方法。
【０１７０】
（付記１２）  クライアントとサーバとを備えるコマンド実行システムを制御するコマンド実行方法であって、前記クライアントが、投入されたコマンドにより実行されるデータ処理の内容に応じて、データの入出力動作の内容を示す振る舞い型を決定する振る舞い型決定ステップと、前記振る舞い型ごとに予め設定されている設定情報を参照し、前記設定情報に含まれる優先度に基づいて、前記優先度ごとに設けられたコマンドキューに前記コマンドを格納する第１コマンド格納ステップと、前記第１コマンド格納ステップにおいて前記コマンドキューに格納された前記コマンドのうち、前記優先度が最も高い前記コマンドキューに格納された前記コマンドを、前記コマンドキューから取り出して前記サーバに送信するコマンド送信ステップと、を含み、前記サーバが、前記クライアントから送信された前記コマンドを受信するコマンド受信ステップと、前記受信された前記コマンドに対応する前記優先度に基づいて、前記優先度ごとに設けられたコマンドキューに前記コマンドを格納する第２コマンド格納ステップと、前記第２コマンド格納ステップにおいて前記コマンドキューに格納された前記コマンドのうち、前記優先度が最も高い前記コマンドキューに格納された前記コマンドを、前記コマンドキューから取り出して実行するコマンド実行ステップと、を含む、ことを特徴とするコマンド実行方法。
【０１７１】
（付記１３）  付記１１または１２に記載の各ステップをコンピュータに実行させるためのコマンド実行プログラム。
【符号の説明】
【０１７２】
１…サーバ、２…バッチ処理基盤、３…コマンド実行装置、３Ｃ…コマンド実行クライアント、３Ｓ…コマンド実行サーバ、４…データストア、２１…給与計算バッチ、３１…メインエンジン、３２、３４、３６…通信モジュール、３３…ＳＲＯエンジン、３５…ＳＷＯエンジン、３１１…設定情報記憶部、３１２…コントローラ、３１３…コマンドキュー、３２１、３４１、３６１…送信バッファ、３２２、３４２、３６２…受信バッファ、３１２１…生成部、３１２２…振る舞い型決定部、３１２３…コマンド格納部、３１２４…コマンド実行部。
【図１】
0005733680.tif 000002
【図２】
0005733680.tif 000003
【図３】
0005733680.tif 000004
【図４】
0005733680.tif 000005
【図５】
0005733680.tif 000006
【図６】
0005733680.tif 000007
【図７】
0005733680.tif 000008
【図８】
0005733680.tif 000009
【図９】
0005733680.tif 000010
【図１０】
0005733680.tif 000011
【図１１】
0005733680.tif 000012
【図１２】
0005733680.tif 000013
【図１３】
0005733680.tif 000014
【図１４】
0005733680.tif 000015
【図１５】
0005733680.tif 000016