(57)【特許請求の範囲】
【請求項１】
複数のジョブを並行処理するために複数のプログラムを有するデータ処理システムと、該データ処理システムに複数のデータを並行送信するデータ送信システムと、を有するデータ転送システムにおいて、
上記データ送信システムは、
上記ジョブの識別記号と該ジョブが実行中であるか、終了したか、又は、実行の中止であるかのステータスを登録するジョブステータス管理テーブルと、上記データ処理システムにおいて並列実行可能なジョブ数を管理するジョブ多重度管理テーブルと、上記データ処理システムの複数のプログラムを起動処理するジョブ起動制御手段と、を有し、
該ジョブ起動制御手段は、上記ジョブステータス管理テーブルを参照して、上記データ処理システムにて新規に実行する予定のジョブと同一のジョブのうち実行中のジョブ数を読み出し、更に、上記ジョブ多重度管理テーブルを参照して、上記データ処理システムにて新規に実行する予定のジョブの並列実行可能数を読み出し、上記新規に実行する予定のジョブを実行しても該ジョブの実行数が上記並列実行可能数内にあるか否かを判定し、上記並列実行可能数内である場合に、上記データ処理システムに上記ジョブの識別記号と該ジョブを実行するプログラム名を含む起動命令を送信し、
上記データ処理システムは、
複数のジョブを並行処理する複数のプログラムと、ジョブとジョブを実行するプログラムを管理するジョブステップ管理テーブルと、上記複数のプログラムの排他関係を管理する排他管理テーブルと、上記複数のプログラムの起動を制御するジョブ登録実行手段と、を有し、
該ジョブ登録実行手段は、上記データ送信システムから新規に実行する予定のジョブの識別記号を受信したとき、該実行予定のジョブを実行するプログラム名を上記ジョブステップ管理テーブルから読み出し、読み出したプログラム名に基づいて上記排他管理テーブルを検索し、上記受信したジョブ識別記号と上記実行予定のジョブを実行するプログラム名が上記排他管理テーブルに登録されていない場合には、上記受信したジョブ識別記号と上記実行予定のジョブを実行するプログラム名を上記排他管理テーブルに登録し、上記実行予定のジョブを実行するプログラムを起動することを特徴とするデータ転送システム。
【請求項２】
請求項１記載のデータ転送システムにおいて、上記ジョブ登録実行手段は、上記受信したジョブ識別記号と上記実行予定のジョブを実行するプログラム名が上記排他管理テーブルに登録されていない場合には、上記ジョブステップ管理テーブルにおいて上記受信したジョブ識別記号に排他対象フラグが付与されているか否かを判定し、排他対象フラグが付与されている場合には、上記受信したジョブ識別記号と上記実行予定のジョブを実行するプログラム名を上記排他管理テーブルに登録し、上記実行予定のジョブを実行するプログラムを起動することを特徴とするデータ転送システム。
【請求項３】
請求項１記載のデータ転送システムにおいて、上記ジョブ登録実行手段は、上記ジョブの実行が終了したとき、上記排他管理テーブルに登録されている該当するジョブ識別記号及びプログラム名を削除することを特徴とするデータ転送システム。
【請求項４】
請求項１記載のデータ転送システムにおいて、上記ジョブ登録実行手段は、上記実行予定のジョブを実行するプログラムを起動したとき、該プログラムを起動したことを上記送信システムに送信することを特徴とするデータ転送システム。
【請求項５】
請求項１記載のデータ転送システムにおいて、上記データ送信システムから送信されたジョブの識別記号と該ジョブが実行中であるか、終了したか、又は、実行の中止であるかのステータスを登録するジョブステータス概要テーブルを有することを特徴とするデータ転送システム。
【請求項６】
請求項５記載のデータ転送システムにおいて、上記プログラムのステータスを監視するジョブ監視手段が設けられ、該ジョブ監視手段は上記プログラムのステータスに変更があったとき、上記ジョブステータス概要テーブルを更新することを特徴とするデータ転送システム。
【請求項７】
請求項１記載のデータ転送システムにおいて、上記ジョブ起動制御手段は、上記データ処理システムに送信した起動命令に対して上記データ処理システムから上記ジョブ及びそれを実行するプログラムが正常に起動されたか否かを示すリターン値を受信し、該リターン値に基づいて上記ジョブステータス管理テーブルのステータスを更新することを特徴とするデータ転送システム。
【請求項８】
請求項１記載のデータ転送システムにおいて、上記ジョブ多重度管理テーブルは、ジョブの種別毎の並列実行可能数と全てのジョブ種別の並列実行可能数を有し、上記ジョブ起動制御手段は、上記新規に実行する予定のジョブを実行しても、ジョブ実行数が該ジョブと同一種別のジョブの並列実行可能数以内であり且つ全てのジョブ種別の並列実行可能数以内である場合に、上記データ処理システムに上記ジョブの識別記号と該ジョブを実行するプログラム名を含む起動命令を送信することを特徴とするデータ転送システム。
【請求項９】
請求項１記載のデータ転送システムにおいて、上記データ処理システムにおけるジョブのステータスを定期的に取得し、該取得したステータスに基づいて上記ジョブステータス管理テーブルのステータスを更新するジョブステータス更新手段を有することを特徴とするデータ転送システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、転送されたデータを処理するデータ処理システムに関し、特に、並列処理と排他処理の制御を行うデータ処理システムに関する。
【背景技術】
【０００２】
企業の情報システムにおけるジョブの実行管理には、ジョブスケジューラを用いて定期的にジョブを実行する方法、及び、ジョブを並列で実行する並列処理制御システムが知られている。特許文献１には、処理時間を削減するためにバッチ処理を処理グループ単位に並列に実行する並列処理制御システムが記載されている。
【０００３】
【特許文献１】特開２００２−１４８２９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１に記載されているような従来の並列処理システムでは、並列処理するプログラムばかりでなく他のジョブと排他関係で実行するジョブを行うシステムに適用することができない。
【０００５】
本発明の目的は、並列処理するプログラムばかりでなく他のジョブと排他関係で実行するジョブを行う場合に効率よくジョブを実行することができるシステムを提供することにある。
【課題を解決するための手段】
【０００６】
本発明によると、複数のジョブを並行処理するために複数のプログラムを有するデータ処理システムと、該データ処理システムに複数のデータを並行送信するデータ送信システムと、を有するデータ転送システムにおいて、上記データ送信システムは、上記データ処理システムにおける複数のジョブの並行処理と上記プログラムの起動を管理し、上記データ処理システムは、上記プログラムの排他処理を管理する。
【発明の効果】
【０００７】
本発明によれば、並列処理するプログラムばかりでなく他のジョブと排他関係で実行するジョブを行う場合に効率よくジョブを実行することができる。
【発明を実施するための最良の形態】
【０００８】
図１は、本発明のデータ転送システムの全体構成を示すものである。受信システムは、１台のデータベースサーバＳｖ１と複数台のアプリケーションサーバＳｖ２、Ｓｖ３・・・Ｓｖｊ・・・Ｓｖｎ（ｎはサーバの構成台数。システムにより異なる。）を有し、両者は互いに通信可能に接続されている。以下、アプリケーションサーバを示す時は、Ｓｖｊで表現する。各アプリケーションサーバＳｖｊ上には、業務プログラムＰＧ１、ＰＧ２、ＰＧ３・・・ＰＧｉ（ｉは業務プログラムの本数であり、かつ本実施例におけるプログラム識別番号。）がそれぞれ１つ以上設定されている。
【０００９】
データベースサーバＳｖ１上には、ジョブ登録実行プログラムＺＢＩ０１、ジョブ監視プログラムＺＢＢ０１、ジョブステータス取得プログラムＺＢＩ０２、ジョブステップ管理テーブルＺＴＢ０１、排他管理テーブルＺＴＢ０２、及び、ジョブステータス概要テーブルＴＢＴＣＯが設定されている。
【００１０】
送信システムのサーバＳｖｍ上には、ジョブ起動制御プログラムＭＩ０１、Ｉ／Ｆ（インターフェース）データ作成プログラムＭＩ０２、ジョブステータス更新プログラムＭＩ０３、ジョブ多重度管理テーブルＸＴＢ０１、ジョブステータス管理テーブルＸＴＢ０２、及び、受信データワークテーブルＸＴＢ０３が設定されている。
【００１１】
本例では、送信システムにて並列処理を行い、受信システムにて排他処理を行う。本例では、受信システムにおいて、アプリケーションサーバＳｖｎの業務プログラムＰＧ５が排他処理の対象である。業務プログラムＰＧ５に対して、例えば、業務プログラムＰＧ１が排他関係にあると仮定する。２つの業務プログラムＰＧ５、ＰＧ１のうち、先に起動したプログラムによって他方のプログラムの起動が排除される。業務プログラムＰＧ５が起動中、業務プログラムＰＧ１は起動することができない。業務プログラムＰＧ５がジョブの実行を終了すると、他の業務プログラムＰＧ１はジョブを実行することができる。排他関係の管理は、排他管理テーブルＺＴＢ０２によってなされる。以下に、単に排他関係というとき、業務プログラムＰＧ５に対する排他関係を意味するものとする。
【００１２】
本例によると、業務プログラムＰＧ１、ＰＧ２、ＰＧ３はジョブ起動制御プログラムＭＩ０１とジョブ登録実行プログラムＺＢＩ０１の連携によって起動するが、業務プログラムＰＧ５は、これらの業務プログラムＰＧ１、ＰＧ２、ＰＧ３とは独立的に起動する。
【００１３】
図２はジョブステップ管理テーブルＺＴＢ０１の例を示す。ジョブステップ管理テーブルＺＴＢ０１は、ジョブ種別２０１、ジョブステップ番号２０２、プログラム名２０３、バリアント２０４、排他対象フラグ２０５、実行サーバ２０６を含む。これらはユーザによって設定される。この例では、ジョブ種別ＴＭＣは、３つのジョブステップからなり、サーバＳｖ２上にて、３つのプログラムＰＧ１、ＰＧ２、ＰＧ３によって実行される。
【００１４】
バリアント２０４は、ジョブの実行パラメータ定義であり、各業務プログラムＰＧｉはバリアントの中のＩ／Ｆ情報により、Ｉ／Ｆデータの読込み処理を行う。バリアント２０４の欄が空欄の場合、ジョブ登録実行プログラムＺＢＩ０１が、実行毎にバリアントを生成し、それを業務プログラムＰＧｉに送信する。
【００１５】
排他対象フラグ２０５の「Ｘ」は、そのジョブが業務プログラムＰＧ５に対する排他処理の対象であることを示す。本例では、ジョブステップ管理テーブルＺＴＢ０１に登録されたジョブ種別、ジョブステップ番号、プログラム名の組み合わせに対して排他対象フラグが付されている。
【００１６】
図３は排他管理テーブルＺＴＢ０２の例を示す。排他管理テーブルＺＴＢ０２は、３つの排他キーを含む。第１排他キー３０１にはプログラム名、第２排他キー３０２にはジョブ種別、第３排他キー３０３には、ジョブ起動制御プログラムＭＩ０１よりパラメータ渡しされた並列実行可能数を登録する。第３排他キー３０３が登録されていない場合には、２つの排他キーによって排他処理を行う。
【００１７】
図４はジョブステータス管理テーブルＸＴＢ０２の例を示す。ジョブステータス管理テーブルＸＴＢ０２は、シーケンス番号４０１、ジョブ種別４０２、ジョブ名４０３、ジョブＩＤ４０４、ステータス４０５を含む。ステータス４０５は、ジョブの状態を示し、未処理、実行中、完了のいずれかを表す。ここで未処理のジョブには、前回起動時に排他処理されたジョブを含む。
【００１８】
図５はジョブ多重度管理テーブルＸＴＢ０１の例を示す。ジョブ多重度管理テーブルＸＴＢ０１は、ジョブ種別５０１と並列実行可能数５０２を含む。並列実行可能数５０２は、並行実行可能なジョブ数を示す。ジョブ種別５０１が「Ａｌｌ」のとき、並列実行可能数５０２が「１０」である。これは、各ジョブ種別の実行数が並列実行可能数以内であっても、全てのジョブ種別の実行数の総計が１０個以内でなければならないことを示す。
【００１９】
図６はジョブステータス概要テーブルＴＢＴＣＯの例を示す。ジョブステータス概要テーブルＴＢＴＣＯは、ジョブ名６０１、ジョブＩＤ６０２、ジョブステータス６０３、実行サーバ６０４を含む。ジョブステータス６０３は、図４のジョブステータス管理テーブルＸＴＢ０２のステータス４０５と同一である。
【００２０】
次に、図１を参照して、送信システムから受信システムにデータを転送する処理の概要を説明する。送信システムの受信データワークテーブルＸＴＢ０３には、外部のＥＤＩ（電子データ交換）取引先システム及び自社システムからの受信データが登録される。Ｉ／Ｆデータ作成プログラムＭＩ０２は、新規に起動する複数のジョブを受信データワークテーブルＸＴＢ０３から取り出し（１）、Ｉ／Ｆデータを作成（２）し、それらのジョブをジョブステータス管理テーブルＸＴＢ０２へ登録（３）し、それを受信システムに並列送信（４）する。Ｉ／Ｆデータはジョブ種別毎に作成された実データを含むファイルである。業務プログラムＰＧ１、ＰＧ２、ＰＧ３・・は、ジョブ起動制御プログラムＭＩ０１及びジョブ登録実行プログラムＺＢＩ０１の連携によって起動されると、Ｉ／Ｆデータを取り込み（４）、ジョブステップを実行する。
【００２１】
業務プログラムＰＧ５は、排他管理テーブルＺＴＢ０２をチェック（６）し、他の業務プログラムとジョブ種別が登録されていない場合に、起動する。業務プログラムＰＧ５は、ジョブを起動したとき、排他キーを登録（６）し、ジョブを終了したとき、排他キーを削除（６）する。
【００２２】
図７を参照してジョブ起動制御プログラムＭＩ０１の処理を説明する。ジョブ起動制御プログラムＭＩ０１は定期的に起動される。ステップＳ１にて、ジョブ起動制御プログラムＭＩ０１は、ジョブステータス管理テーブルＸＴＢ０２を参照し、ステータスが未処理であるジョブ、即ち未だ起動されていないジョブを抽出する。ここで抽出したジョブをここでは起動予定ジョブと呼ぶ。
【００２３】
ステップＳ２にて、ジョブ起動制御プログラムＭＩ０１は、ジョブ多重度管理テーブルＸＴＢ０１を参照し、起動予定ジョブの並列実行可能数を取得する。
【００２４】
ステップＳ３にて、ジョブ起動制御プログラムＭＩ０１は、ジョブステータス管理テーブルＸＴＢ０２のジョブステータス４０５の列を参照し、各起動予定ジョブと同一のジョブ種別のジョブのうち「実行中」であるジョブ数を読み出し、起動予定ジョブを起動したとしても、実行中のジョブ数が並列実行可能数以下となるか否かをチェックする。更に、起動予定ジョブを起動したとしても、実行中となる全てのジョブ種別のジョブ数の合計が、ジョブ多重度管理テーブルＸＴＢ０１の「ＡＬＬ」の並列実行可能数以下となるか否かをチェックする。ステップＳ４にて、チェックの結果、ＯＫであればステップＳ５に進み、ＮＧであればステップＳ６に進み、起動予定ジョブの起動を行わない。
【００２５】
ステップＳ５にて、ジョブ起動制御プログラムＭＩ０１は、ジョブ登録実行プログラムＺＢＩ０１を起動し、起動予定のジョブ種別、Ｉ／Ｆデータの識別情報等を送信する。ジョブ起動制御プログラムＭＩ０１は、ジョブステータス管理テーブルＸＴＢ０２において、送信したジョブ種別のステータスを「未処理」から「実行中」に変更する。
【００２６】
ステップＳ７にて、ジョブ起動制御プログラムＭＩ０１は、ジョブ登録実行プログラムＺＢＩ０１からのリターン値を判定し、リターン値が正常ならステップＳ８に進み、リターン値が正常でないならステップＳ９に進む。リターン値が正常でない場合とは、排他制御により、又は、他の理由により、起動予定ジョブが起動できなかった場合である。
【００２７】
ステップＳ８にて、ジョブ起動制御プログラムＭＩ０１は、ジョブステータス管理テーブルＸＴＢ０２において、起動されたジョブのステータスを実行中に確定する。ステップＳ９にて、ジョブ起動制御プログラムＭＩ０１は、ジョブステータス管理テーブルＸＴＢ０２にて、起動されなかったジョブのステータスを実行中から未処理に戻す。
【００２８】
図８を参照してジョブ登録実行プログラムＺＢＩ０１の処理を説明する。ジョブ登録実行プログラムＺＢＩ０１は、送信システムのサーバＳｖｍ上のジョブ起動制御プログラムＭＩ０１によって起動される。ステップＳ１０にて、ジョブ登録実行プログラムＺＢＩ０１は、ジョブ起動制御プログラムＭＩ０１から起動予定ジョブのジョブ種別を受信し、そのジョブ種別に対応するジョブステップ番号及びプログラム名をジョブステップ管理テーブルＺＴＢ０１より抽出する。ステップＳ１１にて、ジョブ登録実行プログラムＺＢＩ０１は、排他管理テーブルＺＴＢ０２を参照し、ステップＳ１０にて抽出した起動予定ジョブのジョブ種別とプログラム名の組み合わせが排他レコードとして登録されていないかをチェックする。即ち、起動予定ジョブのプログラム名が第１排他キー３０１に登録され、ジョブ種別が第２排他キー３０２に登録されていないかをチェックする。
【００２９】
ステップＳ１２にて、排他レコードとして登録されていない場合にはステップＳ１３に進み、排他レコードとして登録されている場合には、ステップＳ１４に進む。ステップＳ１４にて、起動予定ジョブの実行を行わず、起動予定ジョブが排他されていることをジョブ起動制御プログラムＭＩ０１へ通知する。
【００３０】
ステップＳ１３にて、ジョブ登録実行プログラムＺＢＩ０１は、ジョブステップ管理テーブルＺＴＢ０１の排他対象フラグ２０５の列を参照し、起動予定ジョブのジョブ種別の排他対象フラグが「Ｘ」であるか否かをチェックする。起動予定ジョブのジョブ種別の排他対象フラグが「Ｘ」である場合、排他管理テーブルＺＴＢ０２に起動予定ジョブのプログラム名とジョブ種別を排他レコードとして登録する。即ち、起動予定ジョブのプログラム名を第１排他キー３０１に登録し、ジョブ種別を第２排他キー３０２に登録する。
【００３１】
ステップＳ１５にて、ジョブ登録実行プログラムＺＢＩ０１は、ジョブステップ管理テーブルＺＴＢ０１を参照して、起動予定ジョブのジョブステップ番号、プログラム名、バリアント、及び、実行サーバを読み出し、それに従ってジョブを実行する。ステップＳ１６にて、ジョブ登録実行プログラムＺＢＩ０１は、ジョブステータス概要テーブルＴＢＴＣＯのステータスの列に「実行中」のレコードを登録する。ステップＳ１７にて、ジョブ登録実行プログラムＺＢＩ０１は、ジョブ起動制御プログラムＭＩ０１へ、実行中のジョブ名とジョブＩＤを返送する。ジョブ登録実行プログラムＺＢＩ０１は、実行中のジョブが終了したら、そのジョブの排他レコードを排他管理テーブルＺＴＢ０２より削除する。
【００３２】
再び図１を参照して他のプログラム及びテーブルを説明する。ジョブ監視プログラムＺＢＢ０１は、ジョブ登録実行プログラムＺＢＩ０１によって起動されたジョブの状況を監視（１１）し、それが変化したとき、ジョブステータス概要テーブルＴＢＴＣＯのジョブのステータスを更新（１２）する。
【００３３】
ジョブステータス更新プログラムＭＩ０３は、定期的にジョブステータス管理テーブルＸＴＢ０２を参照し、ステータスが実行中のレコードを抽出（１３）し、抽出したレコードのジョブ名とジョブＩＤをジョブステータス取得プログラムＺＢＩ０２へ送信（１４）する。ジョブステータス取得プログラムＺＢＩ０２は、送信システムのサーバＳｖｍ上のジョブステータス更新プログラムＭＩ０３により起動され、ジョブステータス更新プログラムＭＩ０３から送信されたジョブ名とジョブＩＤを受信する。
【００３４】
ジョブステータス取得プログラムＺＢＩ０２は、受信したジョブ名とジョブＩＤに基づいて、ジョブステータス概要テーブルＴＢＴＣＯを参照（１５）し、ジョブ登録実行プログラムＺＢＩ０１によって起動されたジョブのステータスを取得（１６）し、それをジョブステータス更新プログラムＭＩ０３へ返送（１７）する。ジョブステータス更新プログラムＭＩ０３は、受信したステータスによってジョブステータス管理テーブルＸＴＢ０２のステータスを更新（１８）する。
【００３５】
以上、本発明の例を説明したが、本発明は上述の例に限定されるものではなく、特許請求の範囲に記載された発明の範囲にて様々な変更が可能であることは当業者によって容易に理解されよう。
【図面の簡単な説明】
【００３６】
【図１】本発明のデータ転送システム全体構成を示す図である。
【図２】ジョブステップ管理テーブルの内容の一例を示す図である。
【図３】排他管理テーブルの内容の一例を示す図である。
【図４】ジョブステータス管理テーブルの内容の一例を示す図である。
【図５】ジョブ多重度管理テーブルの内容の一例を示す図である。
【図６】ジョブステータス概要テーブルの内容の一例を示す図である。
【図７】ジョブ起動制御プログラムの処理の流れ図である。
【図８】ジョブ登録実行プログラムの処理の流れ図である。
【符号の説明】
【００３７】
Ｓｖ１…データベースサーバ、Ｓｖ２…アプリケーションサーバ、Ｓｖ３…アプリケーションサーバ、Ｓｖｎ…アプリケーションサーバ、ＰＧ１…業務プログラム、ＰＧ２…業務プログラム、ＰＧ３…業務プログラム、ＺＢＩ０１…ジョブ登録実行プログラム、ＺＢＩ０２…ジョブステータス取得プログラム、ＺＢＢ０１…ジョブ監視プログラム、ＺＴＢ０１…ジョブステップ管理テーブル、ＺＴＢ０２…排他管理テーブル、ＴＢＴＣＯ…ジョブステータス概要テーブル、ＭＩ０１…ジョブ起動制御プログラム、ＭＩ０２…Ｉ／Ｆデータ作成プログラム、ＭＩ０３…ジョブステータス更新プログラム、ＸＴＢ０１…ジョブ多重度管理テーブル、ＸＴＢ０２…ジョブステータス管理テーブル、ＸＴＢ０３…受信データワークテーブル
【図１】
0004537307.tif 000002
【図２】
0004537307.tif 000003
【図３】
0004537307.tif 000004
【図４】
0004537307.tif 000005
【図５】
0004537307.tif 000006
【図６】
0004537307.tif 000007
【図７】
0004537307.tif 000008
【図８】
0004537307.tif 000009