(57)【要約】【目的】  ジョブネット異常終了後に規定の終了時間を越えてしまうリスクを低減するための再実行負荷低減する。【解決手段】同一データを処理するジョブネット内ジョブのデータを、分割したデータで置換したサブジョブのいくつかが異常終了しても、ジョブネットを続行する。分割データごとに、各ジョブの状態や実行サーバＩＤを格納し、ジョブネット進捗状況を管理する。状態が「正常」でない分割データのみを再実行対象とする。実行サーバの状態と、ジョブ間で受け渡す中間ファイルの実行サーバ間の共有の有無および後続ジョブ終了後の削除の有無により、中間ファイルを参照可能か、どのジョブまで戻ればよいかを判別する。【選択図】  図３
2011053995.tif 000002
【特許請求の範囲】
【請求項１】
記憶装置を備えた複数の計算機から構成される計算機システムにおいて、
前記第1の計算機は、
前記記憶装置に格納された同一系統のジョブネットに属し、同一のデータを処理する複数のジョブの実行順序を定義する手段と、
前記データを分割した分割データを一意に識別するデータＩＤを付与して前記分割データに対応付けて前記記憶装置にジョブネット情報として格納する手段と、
前記複数のジョブのある第一のジョブが実行する前記データを前記分割データに置換したサブジョブの実行要求を前記分割データの前記データＩＤとともに第２の前記計算機に送信する手段と、
前記第２の計算機は、
前記送られた前記サブジョブの終了状態と前記データＩＤとを受信する手段と、
前記第１の計算機は、
前記データＩＤと、前記終了状態と、前記サブジョブに対応した前記第一のジョブを前記ジョブネット内で一意に識別するジョブ識別子と、を対応付けて格納した分割データ管理情報を前記記憶装置に記憶する手段と、
前記分割データ管理情報を参照して
前記ジョブ識別子が前記第一のジョブの識別子でありかつ前記終了状態が正常である前記分割データ管理情報のデータＩＤが示す分割データのうち、前記実行順序が前記第一のジョブの直後である第二のジョブの識別子でありかつ前記終了状態が正常でない前記分割データ管理情報のデータＩＤが示す分割データで、前記第二のジョブの前記データを置換したサブジョブの実行要求を、前記分割データの前記データＩＤとともに前記第２の計算機に送信する手段と、
を含むことを特徴とする計算機システム。
【請求項２】
第1の計算機は、
前記分割データ管理情報格納した分割データ管理情報に、前記分割データ管理情報に格納したデータＩＤが示す分割データを処理する前記サブジョブを実行した前記計算機を一意に識別するサーバＩＤを記憶する手段と、
前記第二のジョブにおけるサブジョブの実行要求を、当該サブジョブの分割データのデータＩＤと前記第一のジョブの識別子とを含む前記分割データ管理情報のサーバＩＤが示す第２の計算機に送信する手段と、
を含むことを特徴とする請求項１記載の計算機システム。
【請求項３】
請求項１記載のデータ分割処理制御システムにおいて、
第1の計算機は、
前記第一のジョブのキャンセル要求を受け付ける手段と、
前記第二のジョブのサブジョブの出力ファイルを識別する手段と、
前記第一のジョブのキャンセル要求を受け付けたときに、前記第二のジョブのサブジョブが出力したファイルの削除処理を呼び出す手段と、
を含むことを特徴とする請求項１記載の計算機システム。
【請求項４】
第1の計算機は、
前記第一のジョブの出力ファイルが任意の前記計算機からアクセス可能か否かを判別する手段と、
前記第一のジョブの出力ファイルが任意の前記計算機からアクセス可能である場合に、前記サブジョブで処理した分割データを処理する前記第二のジョブを実行する要求を前記第２の計算機に送信する手段と、
を含むことを特徴とする請求項１記載の計算機システム。
【請求項５】
第1の計算機は、
前記第一のジョブの出力ファイルが任意の前記第２の計算機からアクセス可能か否かを判別する手段と、
前記実行順序が前記第一のジョブの直前である第三のジョブのサブジョブが正常終了したときに、前記第一のジョブの入力ファイルである前記第三のジョブの出力ファイルを削除する設定であるか否かを判別する手段と、
前記第一のジョブのサブジョブが出力したファイルが、前記第一のジョブのサブジョブを実行した前記第２の計算機からのみアクセス可能で、かつ前記第一のジョブのサブジョブを実行した前記第２の計算機が異常状態である場合に、前記第三のジョブの出力ファイルを削除しない設定であれば前記第一のジョブのサブジョブを実行してから前記第二のジョブのサブジョブを実行し、削除する設定であれば前記第三のジョブのジョブと前記第一のジョブを実行してから前記第二のジョブのサブジョブを実行する手段と、
を含むことを特徴とする請求項１記載の計算機システム。
【請求項６】
記憶装置を備えた複数の計算機から構成される計算機システムにおけるデータ処理制御方法において、
前記第1の計算機は、
前記記憶装置に格納された同一系統のジョブネットに属し、同一のデータを処理する複数のジョブの実行順序を定義し、
前記データを分割した分割データを一意に識別するデータＩＤを付与して前記分割データに対応付けて前記記憶装置にジョブネット情報として格納し、
前記複数のジョブのある第一のジョブが実行する前記データを前記分割データに置換したサブジョブの実行要求を前記分割データの前記データＩＤとともに第２の前記計算機に送信し、
前記第２の計算機は、
前記送られた前記サブジョブの終了状態と前記データＩＤとを受信し、
前記第１の計算機は、
前記データＩＤと、前記終了状態と、前記サブジョブに対応した前記第一のジョブを前記ジョブネット内で一意に識別するジョブ識別子と、を対応付けて格納した分割データ管理情報を前記記憶装置に記憶するし、
前記分割データ管理情報を参照して、前記ジョブ識別子が前記第一のジョブの識別子でありかつ前記終了状態が正常である前記分割データ管理情報のデータＩＤが示す分割データのうち、前記実行順序が前記第一のジョブの直後である第二のジョブの識別子でありかつ前記終了状態が正常でない前記分割データ管理情報のデータＩＤが示す分割データで、前記第二のジョブの前記データを置換したサブジョブの実行要求を、前記分割データの前記データＩＤとともに前記第２の計算機に送信することを特徴とするデータ処理制御方法。
【請求項７】
第1の計算機は、
前記分割データ管理情報格納した分割データ管理情報に、前記分割データ管理情報に格納したデータＩＤが示す分割データを処理する前記サブジョブを実行した前記計算機を一意に識別するサーバＩＤを記憶し、
前記第二のジョブにおけるサブジョブの実行要求を、当該サブジョブの分割データのデータＩＤと前記第一のジョブの識別子とを含む前記分割データ管理情報のサーバＩＤが示す第２の計算機に送信することを特徴とする請求項６記載のデータ処理制御方法。
【請求項８】
第1の計算機は、
前記第一のジョブのキャンセル要求を受け付け、
前記第二のジョブのサブジョブの出力ファイルを識別し、
前記第一のジョブのキャンセル要求を受け付けたときに、前記第二のジョブのサブジョブが出力したファイルの削除処理を呼び出すことを特徴とする請求項６記載のデータ処理制御方法。
【請求項９】
第1の計算機は、
前記第一のジョブの出力ファイルが任意の前記計算機からアクセス可能か否かを判別し、
前記第一のジョブの出力ファイルが任意の前記計算機からアクセス可能である場合に、前記サブジョブで処理した分割データを処理する前記第二のジョブを実行する要求を前記第２の計算機に送信することを特徴とする請求項６記載のデータ処理制御方法。
【請求項１０】
記憶装置を備えた複数の計算機から構成される計算機システムを機能させるデータ処理制御プログラムにおいて、
前記第1の計算機では、
前記記憶装置に格納された同一系統のジョブネットに属し、同一のデータを処理する複数のジョブの実行順序を定義するステップと、
前記データを分割した分割データを一意に識別するデータＩＤを付与して前記分割データに対応付けて前記記憶装置にジョブネット情報として格納するステップと、
前記複数のジョブのある第一のジョブが実行する前記データを前記分割データに置換したサブジョブの実行要求を前記分割データの前記データＩＤとともに第２の前記計算機に送信するステップと、
前記第２の計算機では、
前記送られた前記サブジョブの終了状態と前記データＩＤとを受信するステップと、
前記第１の計算機では、
前記データＩＤと、前記終了状態と、前記サブジョブに対応した前記第一のジョブを前記ジョブネット内で一意に識別するジョブ識別子と、を対応付けて格納した分割データ管理情報を前記記憶装置に記憶するステップと、
前記分割データ管理情報を参照して、前記ジョブ識別子が前記第一のジョブの識別子でありかつ前記終了状態が正常である前記分割データ管理情報のデータＩＤが示す分割データのうち、前記実行順序が前記第一のジョブの直後である第二のジョブの識別子でありかつ前記終了状態が正常でない前記分割データ管理情報のデータＩＤが示す分割データで、前記第二のジョブの前記データを置換したサブジョブの実行要求を、前記分割データの前記データＩＤとともに前記第２の計算機に送信するステップと、
を含むことを特徴とするデータ処理制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データを処理するジョブのスケジュール技術に関する。
【背景技術】
【０００２】
複数のバッチジョブを関連付けしたジョブネット（ジョブネットワークともいう）を制御する方法が、例えば文献１に開示されている。
ジョブネットの実行結果を利用するサービスを所定の開始時刻に開始可能とするため、ジョブネットは所定時間内に終了させる必要がある。ところが、バッチジョブの処理時間は入出力するデータ量に依存するため、データが増大すると所定時間内にジョブネットを終了できなってしまう。この対策として、データを分割し、分割したデータをそれぞれジョブに割り当てて複数の計算機上で並列処理させて大量データのバッチジョブ処理を高速化するジョブスケジュール方法が、例えば、特許文献２に開示されている。特許文献２のジョブスケジュール方法では、あらかじめデータを分割して、分割数分のジョブ定義を生成し、分割したデータとジョブ定義との関係を並列処理管理テーブルに記録する。スケジュール時に並列処理管理テーブルを参照して実行するジョブを判定してそのジョブの識別データを含むジョブ定義をジョブ管理に与える。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００６-２７７６９６号公報
【特許文献２】特開２００２-１４８２９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ジョブネットのなかには、大量データを処理するジョブが１つではなく、大量データの並び替えや加工をしながら、ジョブ間でデータを受け渡しして、同一のデータを複数のジョブで処理するジョブネットが存在する。文献２では、ジョブネットに関する記載がない。
【０００５】
文献１をはじめとする従来のジョブネットのジョブスケジュール方法では、ジョブネット定義に分割もしくは割り付けたまたは割り当てデータを処理する各ジョブ間の関連性や定義が存在しないため、後続のジョブにデータを割り当てるときに、先行処理しているジョブの実行結果や実行場所が考慮されていない。このため、データ形式不良などにより、一部のジョブのみが異常終了してもジョブネットを中断しなければならず、再実行時の処理量が多くなり、所定時間内に終了できないリスクが増大する。
【０００６】
本願発明の目的は、ジョブネット内の少なくとも１つのジョブで処理する分割データの一部が異常終了した場合でも、規定終了予定時間を超えるリスクを低減可能なジョブネットのデータ分割処理制御システムを提供することにある。
【課題を解決するための手段】
【０００７】
上記課題を改善するのため、同一のジョブネットに属し同一のデータを処理する一連のジョブの実行順序を定義する手段と、データを分割した分割データを一意に識別するデータＩＤを付与する手段と、一連のジョブの１つである第一のジョブのデータを分割データに置換したサブジョブの実行要求を分割データのデータＩＤとともに計算機に送信する手段と、サブジョブの終了状態とデータＩＤとを受信する手段と、
データＩＤと、終了状態と、サブジョブに対応した第一のジョブをジョブネット内で一意に識別するジョブ識別子と、をセットとした分割データ管理情報を記憶する手段と、ジョブ識別子が第一のジョブの識別子でありかつ終了状態が正常である分割データ管理情報のデータＩＤが示す分割データのうち、実行順序が第一のジョブの直後である第二のジョブの識別子でありかつ終了状態が正常でない分割データ管理情報のデータＩＤが示す分割データで第二のジョブのデータを置換したサブジョブの実行要求を、分割データのデータＩＤとともに計算機に送信する手段と、を有する。
【発明の効果】
【０００８】
本発明によれば、ジョブネット内の少なくとも１つのジョブで処理する分割データの一部が異常終了した場合でも、規定終了予定時間を超えるリスクを低減可能なる。
【図面の簡単な説明】
【０００９】
【図１】本発明のハードウェア構成の形態を示した図
【図２】ジョブネットの実行の概要の一例を示した図
【図３】本実施例におけるサブジョブ異常終了後の再実行イメージ図
【図４】ジョブネット情報の構造を示した図
【図５】ジョブ情報の構造を示した図
【図６】分割データ管理情報の構造を示した図
【図７】異常終了サブジョブ管理情報の構造を示した図
【図８】実行サーバ管理情報の構造を示した図
【図９】ジョブスケジュール処理部におけるジョブネットスケジュール処理のフローチャート図
【図１０】ジョブスケジュール処理部におけるサブジョブスケジュール処理のフローチャート図
【図１１】サブジョブスケジュール処理における実行サーバ選択処理のフローチャート図
【図１２】サブジョブスケジュール処理における実行サーバとの送受信処理のフローチャート図
【図１３】サブジョブスケジュール処理における入力データ準備処理のフローチャート図
【図１４】ジョブスケジュール処理部におけるジョブキャンセル処理のフローチャート図
【図１５】サブジョブ実行制御処理部の処理フローチャート図
【発明を実施するための形態】
【実施例１】
【００１０】
各図を参照しながら発明の実施形態を説明する。
【００１１】
図１は、本発明が適用される計算機システム１のハードウェア構成を示した図である。計算機システム１には、本発明のジョブスケジュール処理部１０００のプログラムコードが動作する計算機であるスケジュールサーバ１０と、サーバ１０から要求を受けてサブジョブ３２を実行するサブジョブ実行制御処理部２０００のプログラムコードが動作する計算機である少なくとも１つの実行サーバ２０とが含まれる。ここで、サブジョブ３２は、ジョブ３１を分割して生成されるジョブ３１の実行単位である。ジョブ３１で処理するデータを分割して各サブジョブ３２に割り当てるため、同一ジョブから生成されるサブジョブは、実行されるデータ処理プログラムは同一であるが、処理するデータは異なる。また、実行順序が定義され、一度のスケジュール要求で実行順序に従って実行する一連のジョブ３２の集合を、ジョブネット３０と呼ぶ。ジョブネット３０において、あるジョブの実行順序が直前のジョブを先行ジョブと定義する。また、あるジョブの実行順序が直後のジョブを後続ジョブと定義する。
【００１２】
サーバ１０には、ジョブスケジュール処理部１０００のプログラムの命令コードを格納した主記憶装置１１ａ、処理部１０００のプログラム命令コードをロードして解釈実行するＣＰＵ(Central Processing Unit)１２ａ、通信路２を介して１つないし複数のサーバ２０と実行要求や実行結果を送受信する通信インタフェース１３ａ、入出力インタフェース１４ａが含まれる。
【００１３】
主記憶装置１１ａには、ジョブスケジュール処理部１０００が割り当てて読み込みまたは更新される管理テーブルである、ジョブネット情報１００、ジョブ情報１１０、分割データ管理情報１２０、異常終了サブジョブ管理情報１３０、実行サーバ管理情報１４０が含まれる。
【００１４】
実行サーバ２０には、サブジョブ実行制御処理部２０００のプログラムの命令コードを格納した主記憶装置１１ｂ、処理部２０００のプログラムの命令コードをロードして解釈実行するＣＰＵ１２ｂ、通信路２を介してサーバ１０と実行要求や実行結果を送受信する通信インタフェース１３ｂ、入出力インタフェース１４ｂが含まれる。記憶装置１５ｂは、インタフェース１４ｂを介して複数の実行サーバ２０からアクセス可能な記憶装置である。記憶装置１５ｃは、特定の実行サーバ２０からのみインタフェース１４ｂを介してアクセス可能な記憶装置または主記憶装置１１a内の仮想ファイル（ＲＡＭディスク）である。
主記憶装置１１ｂには、処理部２０００から起動される各サブジョブ３２のデータ処理プログラム２１００の命令コードが含まれる。ジョブネット３０の先頭のジョブ３１におけるプログラム２１００の入力となる入力データファイル２１は、記憶装置１５ｂに格納される。同一のジョブネット３０に属する各ジョブ３１のプログラム２１００の出力データであり、ジョブネット３０内の次のジョブ３１における入力データでもある中間データファイル２２は、記憶装置１５ｂまたは記憶装置１５ｃに格納される。ファイル２１は、単一のファイルでもよく、事前にサブジョブごとのファイルに分割してもよい。ファイル２２は、サブジョブごとに生成される。上述した各サーバや各処理部は、各処理手段と言い換えてもよい。上述した各サーバや各処理部は、ハードウェア（例えば回路）、コンピュータプログラム、或いはそれらの組み合わせ（例えば、一部をコンピュータプログラムで実行し一部をハードウェア回路で実行すること）によって実現することもできる。各コンピュータプログラムは、コンピュータマシンに備えられる記憶資源（例えばメモリ）から読み込むことができる。その記憶資源には、ＣＤ−ＲＯＭやＤＶＤ（Digital Versatile Disk）等の記録媒体を介してインストールすることもできるし、インターネットやＬＡＮ等の通信ネットワークを介してダウンロードすることもできる。
【００１５】
図２に、ジョブネット３０における実行の概要の一例を示す。ジョブネット３０には、４つのジョブ(ジョブＡ、ジョブＢ、ジョブＣ、ジョブＤ)が情報１００に定義されているものとする。４つのジョブのうち、ジョブＡの出力である中間データファイル２２がジョブＢの入力となり、ジョブＢの出力ある中間データファイル２２がジョブＣの入力となっていると仮定する。すなわち、ジョブＡの入力データファイル２１内の同一データを、ジョブＡ・ジョブＢ・ジョブＣの３つのジョブが順々に処理されることを想定する。
【００１６】
ジョブネット３０が実行されるとき、ジョブスケジュール処理部１０００は、情報１００と情報１１０とを、インタフェース１４を介して接続された記憶装置１５ａ内のファイルから主記憶装置１１ａに読み込み、情報１２０と情報１４０とを主記憶装置１１ａに生成する。ジョブスケジュール処理部１０００は、ジョブ３１からサブジョブ３２を生成して、実行可能な(空き実行多重度に余裕がある)実行サーバ２０内の処理部２０００にサブジョブ３２の実行を依頼する。
【００１７】
図３に、図２に示した例のジョブネット３０が異常終了した場合の状態と、再実行範囲を示す。図３において、サブジョブＢ２とサブジョブＣ２が異常終了したとする。また、ジョブネットを再実行するときに、実行サーバＢが障害状態であったとする。ジョブＡの処理が重いため、ジョブＡを再実行しないように、ジョブＡの中間データファイルは、入力となるジョブＢが終了しても削除せずに残す設定とする。ジョブＢの処理は軽いため、ジョブＢの出力は再実行時間よりも正常実行時の性能を優先して、高速な非共有記憶装置１５ｃに格納して正常終了後に削除する設定とする。
サブジョブＢ２が異常終了しても、ジョブネット実行を中断せずに、サブジョブＢ２に割り当てたデータ２以外のデータをジョブＣの各サブジョブ(サブジョブＢｎ＋１およびサブジョブＣｎ)に割り当てて実行する。ジョブネットを再実行するときは、データ２をジョブＢとジョブＣのサブジョブに割り当てて実行する。ジョブＣ２に割り当てたデータ３は、サーバＢが障害で中間データファイルが非共有の記憶装置１５ｃに格納されていることを判別して、入力となる中間データファイルが存在するジョブＢから実行する(サブジョブＢｎ＋２およびサブジョブＣｎ＋１)。
【００１８】
本実施例では、ジョブネット再実行時の実行範囲を把握するために、分割したデータごとにジョブネット内の進捗状況や出力ファイルの共有・削除状態を記録または参照するところと、ジョブをキャンセルするときに、実行済みのサブジョブが出力したデータを削除するところに特徴がある。
【００１９】
図４に、ジョブネット３０の定義情報であるジョブネット情報１００の構造を示す。ジョブネット情報１００内に存在しジョブ３１と１対１に対応したエントリには、ジョブネット３０中でジョブ３１を一意に識別する識別子であるジョブＩＤ１０１と、終了コード異常閾値１０２と、分割データ管理情報１２０をサーバ１０全体で一意に識別する識別子１０３と、入力データの分割数１０４とが含まれる。
ジョブＩＤ１０１は、例えばジョブスケジュール処理部１０００が生成する順序番号である。閾値１０２は、サブジョブ３２で実行したデータ処理プログラム２１００の終了コードを異常終了とみなす下限の整数値である。識別子１０３は、例えば情報１２０のバックアップファイルのパス名である。
【００２０】
図５に、ジョブ３１の定義情報であるジョブ情報１１０の構造を示す。ジョブ情報１１０に存在しジョブ３１と１対１に対応したエントリには、ジョブＩＤ１１１と、出力ファイル共有情報１１２と、出力ファイル削除情報１１３と、出力する中間データファイルの名称である出力ファイル名１１４とが含まれる。画含まれているときは、情報１１２と情報１１３は、サブジョブを再実行するときに中間データファイルにアクセス可能か否かを判断するために参照する。出力ファイル名１１４中の＃は、＃を分割データＩＤで置換することを示す。出力ファイル名に分割データＩＤを付加するのは、分割データＩＤごとに中間データファイルが生成されるため、各中間データファイルを識別する必要があるためである。
出力ファイル共有情報１１２には、サブジョブの出力ファイルである中間データファイルが実行サーバ２０間で共有する記憶装置１５ｂに出力するときは「共有」、実行サーバ２０間で共有しない記憶装置１５ｃに出力するときは「非共有」が格納される。中間データファイルを共有記憶装置１５ｂに格納した場合は、実行サーバ２０が障害になっても、他の実行サーバからアクセス可能である。高速な非共有記憶装置１５ｃや主記憶装置１１ｂ内の仮想ファイルに出力すると実行サーバ２０が障害になった場合はアクセスできないが、ジョブの処理が比較的少なく再実行に要する時間が少ない場合は、実行時の性能を優先して非共有の記憶装置に出力する場合もあると考えられる。
出力ファイル削除情報１１３には、中間データファイルを入力する後続サブジョブが終了する時に、中間データファイルを削除する場合は「DELETE」、削除しない場合は「KEEP」が格納される。
図６に、分割データ管理情報１２０の構造を示す。情報１２０に存在し分割データ１対１に対応したエントリには、入力データファイル２１を分割した各データをジョブネット３０内で一意に識別する識別子である分割データＩＤ１２１と、分割データを処理したサブジョブのジョブ識別子であるジョブＩＤ１２２と、サブジョブをジョブ内またはジョブネット内で一意に識別するサブジョブＩＤ１２３と、サブジョブを実行した実行サーバ２０の識別子１２４と、サブジョブ状態１２５と、が含まれる。サブジョブ状態１２５には、分割データを処理したサブジョブの終了コードが閾値１０２を下回るとき「正常」を、上回るとき「異常」を、サブジョブ実行中には「実行中」を、サブジョブが一度も実行されていない場合は「空白」を、それぞれ設定する。
なお、再実行時に常にジョブネットの先頭から実行する場合は、ジョブネット内で最後に実行されたサブジョブ以外の実行サーバの情報が不要であるため、図６において、最後に実行されたサブジョブ以外のエントリは不要である。また、サブジョブ状態１２５を設定せずに、サブジョブの状態が「正常」なときのみジョブＩＤ１２２を代入してもよい。
図７に、異常終了サブジョブ管理情報１３０の構造を示す。分割データ管理情報１２０のエントリは、データＩＤとジョブＩＤがともに等しければ、サブジョブを再実行することで上書きされるが、障害原因が解明できていないが終了予定時間がせまっており原因解明より再実行を優先する場合（実行サーバ２０に原因があり他の実行サーバ２０で実行すれば正常終了する場合）は、原因解明に必要な情報を残す必要がある。このため、
図８に、実行サーバ管理情報１４０の構造を示す。実行サーバ管理情報１４０には、実行サーバ２０の数のエントリがあり、各エントリには、実行サーバ２０を一意に識別するサーバＩＤ１４１と、実行サーバ２０にサブジョブを実行中ないし投入可能な「正常」状態か、サーバ障害などの「異常」状態かを示すサーバ状態１４２と、実行サーバ２０に投入可能なサブジョブの数である空き多重度１４３と、が含まれる。
【００２１】
図９に、ジョブスケジュール処理部１０００におけるジョブスケジュール処理のフローチャート図を示す。まず、ジョブネット情報１００とジョブ情報１１０と実行サーバ管理情報１４０とを主記憶装置１１aに割り当てて初期化する（ステップ１１０１）。ジョブネット情報１００やジョブ情報１１０の初期化は、例えば、事前に定義したジョブネット情報やジョブ情報を記録した記憶装置１５a内のファイルからロードする。実行サーバ管理情報１４０の初期化は、例えば、事前に定義したサーバＩＤと空き多重度の一覧をロードし、サーバ状態は、サーバＩＤが示す実行サーバ２０のヘルスチェックの結果を代入する。
【００２２】
次に、ジョブネット情報１００から次に実行するジョブ(先行ジョブの次のエントリにおけるジョブ)を選択する（ステップ１１０２）。すべてのジョブを実行し、選択するジョブがなければ終了する（ステップ１１０３）。選択したジョブのエントリの分割でータ管理情報識別子１０３が空白であれば（ステップ１１０４）、ジョブを分割せずに任意の実行サーバ２０に要求してジョブを実行し（ステップ１１０５）、受信した実行結果が異常閾値１０２以上であれば終了し、未満であれば次のジョブを選択する（ステップ１１０６）。
識別子１０３が空白でない場合、識別子１０３が示す分割データ管理情報１２０が記憶装置１５aにも主記憶装置１１aにも存在しなければ、主記憶装置１１aに割り当てて初期化する（ステップ１１０７）。ジョブネット情報１００の識別子１０３が空白でない各エントリのジョブごとに、分割数１０４の数だけエントリを生成し、生成したエントリに分割データＩＤに１から分割数１０４が示す数まで順番に代入する。ジョブＩＤ１２２にはジョブＩＤ１０１を代入し、状態１２５と実行サーバ１２４は空白とする。記憶装置１５aにのみ存在する場合は、記憶装置１５a内の識別子１０３が示すパスのファイルからロードする。
次に、サブジョブが実行済か否かを状態１２５の値によって判別可能とするため、識別子１０３が示す分割データ管理情報１２０のエントリのうち、実行するジョブとジョブＩＤ１２２が一致する全エントリの状態１２５を消去する（ステップ１１０９）。ただし、ジョブネットを異常終了後に再実行する場合は（ステップ１１０８）、正常終了した分割データの処理は実行しないため、実行するジョブとジョブＩＤ１２２が一致するエントリのうち、状態１２５が「異常」であるエントリのみ状態１２５を消去する（ステップ１１１０）。
サブジョブスケジュール処理１２００を実行して、分割数１０４が示す数のサブジョブを実行サーバ２０に実行させる。実行したジョブのジョブＩＤとジョブＩＤ１２２とが一致する分割データ管理情報１２０のエントリの状態１２５がすべて「異常」または未設定であれば、（ステップ１１１１）、次のジョブで実行すべき分割データがないので終了する。そうでなければ、次のジョブを選択する
【００２３】
図１０に、ジョブスケジュール処理部１０００におけるサブジョブスケジュール処理１２００のフローチャート図を示す。まず、ジョブネット情報１００を参照して、実行対象ジョブの先行ジョブを求める（ステップ１２０１）。すなわち、実行対象ジョブのジョブＩＤとジョブＩＤ１０１が一致するエントリの直前のエントリにおけるジョブＩＤ１０１を先行ジョブのジョブＩＤとする。
次に、実行対象の分割データを選択する。先行ジョブのジョブＩＤ１０１とジョブＩＤ１２２とが一致するエントリの状態１２５が「正常」である分割データＩＤ１２１を１つ選択する（ステップ１２０２）。選択可能な分割データＩＤがなければ処理１２００を終了する（ステップ１２０３）。選択したエントリのデータＩＤと分割データＩＤ１２１が一致し、かつ実行対象ジョブのジョブＩＤとジョブＩＤ１２２が一致するエントリの状態１２５が「正常」でも「実行中」でもない（「未設定」または「異常」）である分割データ管理情報１２０のエントリを求める（ステップ１２０４）。
【００２４】
次に、入力データ準備処理１２４０を実行し、実行対象ジョブの入力データがアクセスできない場合は、先行ジョブをさかのぼって実行して入力データにアクセス可能とする。
最後に、実行サーバ選択処理１２１０と、実行サーバ送受信処理１２２０を実行したのち、次の分割データを処理するため、ステップ１２０２に戻る。サブジョブを投入する実行サーバ２０を決定し、分割データＩＤを実行サーバに送信して分割データＩＤに対応したデータを処理するサブジョブを実行サーバに実行させる。
【００２５】
図１１に、ジョブスケジュール処理部１０００における実行サーバ選択処理１２１０のフローチャート図を示す。分割データＩＤ１２１の先行ジョブを実行した実行サーバ２０（先行ジョブのエントリの実行サーバ）のサーバＩＤ１２４とサーバＩＤ１４１とが一致するエントリの空き多重度１４３が１以上であれば（ステップ１２１１）、先行ジョブを実行した実行サーバ２０を、サブジョブを実行する実行サーバ２０として選択する（ステップ１２１２）。ここで、プログラム２１００を識別するための情報は、例えばプログラム２１００の名称および引数であり、あるいはジョブスクリプトであり、あるいはジョブスクリプトの識別名である。
先行ジョブを実行した実行サーバ２０のサーバ状態１４２が「異常」または空き多重度１４３が０であれば、先行ジョブの出力ファイル共有情報が「共有」であれば（ステップ１２１３）、他の実行サーバからも先行ジョブの出力ファイルを入力できるため、実行サーバ管理情報１４０から空き多重度１４３が１以上のエントリを検索し、そのエントリのサーバＩＤ１４１が示す実行サーバを、サブジョブを実行する実行サーバ２０として選択する（ステップ１２１４）。
【００２６】
先行ジョブの出力ファイル共有情報が「共有」でなければ、先行ジョブを実行した実行サーバ２０の空き多重度が１以上になるまで待つか、ステップ１２０２に戻って他の分割データＩＤを選択する（ステップ１２１５）。
図１２に、ジョブスケジュール処理部１０００における実行サーバとの送受信処理１２２０のフローチャート図を示す。まず、選択した実行サーバ２０とサーバＩＤ１４１が一致するエントリの空き多重度１４３を−１し（ステップ１２２１）、先行ジョブを実行した実行サーバ２０のサブジョブ実行制御処理部２０００に対して、サブジョブで実行するデータ処理プログラム２１００を識別するための情報と分割データＩＤとを送信し、サブジョブ実行を依頼する（ステップ１２２２）。選択した実行サーバのサーバＩＤを、送信した分割データＩＤと分割データＩＤ１２１とが一致し、実行するサブジョブのジョブＩＤとジョブＩＤ１２２とが一致する分割データ管理情報１２０のエントリのサーバＩＤ１４１を実行サーバ１２４に、サーバ状態１２５を「実行中」に、それぞれ代入し、サブジョブＩＤをサブジョブＩＤ１２３に代入する（ステップ１２２３）。サブジョブＩＤは、例えば、サブジョブ実行を依頼するごとに＋１する順序番号である。
【００２７】
次に、実行サーバからの応答受信を待ち（ステップ１２２４）、終了コードを受信し（ステップ１２２５）、選択した実行サーバ２０とサーバＩＤ１４１が一致するエントリの空き多重度１４３を＋１する（ステップ１２２６）。終了コードが異常閾値１０２以上であれば、（ステップ１２２７）、実行するサブジョブのジョブＩＤとジョブＩＤ１２２とが一致する分割データ管理情報１２０のエントリの状態１２５に「正常」を代入する（ステップ１２２８）。終了コードが異常閾値１０２未満であれば状態１２５に「異常」を代入し（ステップ１２２９）、異常終了サブジョブ管理情報１３０にエントリを割り当てて、分割データＩＤ１２１を分割データＩＤ１３１に、ジョブＩＤ１２２をジョブＩＤ１３２に、サブジョブＩＤ１２３をサブジョブＩＤ１３３に、サーバＩＤ１２４をサブジョブＩＤ１３４にそれぞれ代入する（ステップ１２３０）。
【００２８】
図１３に、ジョブスケジュール処理部１０００における入力データ準備処理１２４０のフローチャート図を示す。実行対象ジョブの先行ジョブのジョブＩＤとジョブＩＤ１１１が一致するジョブ情報１１０のエントリの出力ファイル共有情報１１２が「共有」か、先行ジョブのエントリの実行サーバＩＤ１２４とサーバＩＤ１４１が一致するサーバの状態１４２が「正常」か、先行ジョブが存在しない、のいずれかであればアクセス可能であるとみなし、処理１２４０を終了する（ステップ１２４１）。
アクセス不可能であれば、入力データが存在する先行ジョブまでさかのぼって実行する。すなわち、ジョブネット情報１００を参照して、先行ジョブの出力ファイル削除情報が「KEEP」である（先行ジョブの出力データが削除されていて残っている）か先行ジョブがない先行ジョブをさかのぼって求め、実行ジョブとする（ステップ１２４２）。実行ジョブに対する、選択された分割データＩＤを処理するサブジョブを実行するため、実行サーバ選択処理１２１０と実行サーバ送受信処理１２２０とを実行する（ステップ１２４３）。実行ジョブの後続ジョブは実行対象ジョブであれば処理１２４０を終了し、実行対象ジョブでなければ、後続ジョブを実行ジョブとしてステップ１２４３に戻る（ステップ１２４４）。
【００２９】
図１４に、ジョブスケジュール処理部１０００におけるジョブキャンセル処理のフローチャート図を示す。まず、実行中のサブジョブの実行を中止させる。特定のジョブの中止を要求された場合でも、そのジョブの先行ジョブや後続ジョブが動作している場合があるため、分割データ管理情報識別子１０３が等しいすべてのジョブを中止対象とする。分割情報管理情報１２０のエントリの中から、状態１２５が「実行中」のエントリを１つ選択する（ステップ１３０１）。選択可能なエントリがなければステップ１３０５に進む（ステップ１３０２）。選択したエントリの実行サーバ１２４が示す実行サーバ２０の処理部２０００に、サブジョブの実行中止を要求する（ステップ１３０３）。エントリの状態１２５を「空白」にする（ステップ１３０４）。
【００３０】
サブジョブの異常終了原因がデータ不正などサブジョブ固有の原因ではなく、プログラム不良などのジョブ全体に影響する原因の場合、ジョブ全体を再実行する必要がある。ところが、一部のサブジョブが異常終了しても後続ジョブを実行するため、再実行するジョブやその後続ジョブに属する実行済サブジョブの出力ファイルが記憶装置１５ｂや記憶装置１５ｃに残ってしまっている。このため、ジョブキャンセル要求時に実行済サブジョブも含めたキャンセル要求指定がされた場合（ステップ１３０５）、実行済サブジョブの出力ファイルを削除する。
【００３１】
キャンセル対象ジョブおよびその後続ジョブ（ジョブネット情報１００においてキャンセル対象ジョブより後に位置するエントリのジョブ）のジョブＩＤとジョブＩＤ１２２とが等しい分割情報管理情報１２０のエントリから、状態１２５が「正常」のエントリを１つ選択する（ステップ１３０６）。選択可能なエントリがなければ終了する（ステップ１３０７）。選択したエントリの実行サーバ１２４が示す実行サーバ２０の処理部２０００に、エントリのジョブＩＤ１２２とジョブＩＤ１１１とが等しいジョブ情報１１０のエントリの（＃を分割データＩＤで置換した後の）出力フィル名１１４を送信し、出力ファイル削除を要求する（ステップ１３０８）。エントリの状態１２５を「空白」にする（ステップ１３０９）。
【００３２】
図１５に、サブジョブ実行制御処理部２０００の処理フローチャート図を示す。処理部２０００は、起動後、スケジュールサーバ１０からの要求を受信するまで待つ（ステップ２００１）。実行中止要求を受信した場合は（ステップ２００２）、プログラム２１００の実行を中止する（ステップ２００３）。出力ファイル削除要求を受信した場合は（ステップ２００４）、受信したファイル名のファイルを削除する（ステップ２００５）。
サブジョブ処理要求を受信した場合は、サブジョブで実行するデータ処理プログラム２１００を識別するための情報と、プログラム２１００で処理するデータを識別するための情報である分割データＩＤとを受信し（ステップ２００６）、プログラム２１００を起動し、受信した分割データＩＤに対応したデータの処理を実行する（ステップ２００７）。プログラム２１００の完了を待って（ステップ２００８）、スケジュールサーバ１０に終了コードと分割データＩＤとを送信する（ステップ２００９）。
【００３３】
以上、本発明の実施形態を説明したが、この実施形態は本発明の説明のための例示にすぎず、本発明の範囲をその実施形態にのみ限定する趣旨ではない。本発明は、その要旨を逸脱することなく、その他の様々な態様でも実施することができる。
【符号の説明】
【００３４】
１：計算機システム、２：通信路、１０：スケジュールサーバ計算機、１１：主記憶装置、１２：ＣＰＵ、１３：通信インタフェース、１４：入出力インタフェース、１５a：スケジュールサーバの記憶装置、１５ｂ：実行サーバ間共有記憶装置、１５ｃ：実行サーバ間非共有記憶装置、２０：実行サーバ計算機、２１：入力ファイル、２２：入力ファイルの分割ファイル、２３：中間ファイル、１００：ジョブネット情報、１１０：ジョブ情報、１２０：分割データ管理情報、１３０:異常終了サブジョブ管理情報、１４０：実行サーバ管理情報、１０００：ジョブスケジュール処理部、２０００：サブジョブ実行制御処理部
【図１】
2011053995.tif 000003
【図２】
2011053995.tif 000004
【図３】
2011053995.tif 000005
【図４】
2011053995.tif 000006
【図５】
2011053995.tif 000007
【図６】
2011053995.tif 000008
【図７】
2011053995.tif 000009
【図８】
2011053995.tif 000010
【図９】
2011053995.tif 000011
【図１０】
2011053995.tif 000012
【図１１】
2011053995.tif 000013
【図１２】
2011053995.tif 000014
【図１３】
2011053995.tif 000015
【図１４】
2011053995.tif 000016
【図１５】
2011053995.tif 000017