(57)【要約】  本発明の計算機システムでは、マスタデータ管理情報として、分割キーごとにマスタデータの更新有無を管理する。マスタデータに更新があった場合にはジョブを再実行するが、ジョブ再実行時は更新されたマスタデータに対応する分割キーでのみデータ分割を行い、再実行対象のサブジョブを分割キー単位で局所化してジョブを再実行する。（図１参照）
2012063339.tif 000002
【特許請求の範囲】
【請求項１】
ジョブを実行する複数のジョブ実行計算機と、
マスタデータの分割単位を示す分割キーでマスタデータを分割して複数の分割データを生成し、当該複数の分割データのそれぞれに対してジョブネットを適用してサブジョブを実行するジョブ実行計算機を決定する管理計算機と、
少なくとも前記マスタデータと、前記サブジョブの実行結果を格納する少なくとも１つのストレージ装置と、を有し、
前記管理計算機は、
前記マスタデータに対する更新の有無に関する更新関連情報と、更新があった部分に対応する分割キーである更新分割キー情報を管理し、
前記サブジョブ実行後又はサブジョブ実行中に前記マスタデータに対して更新がなされた場合、前記更新分割キー情報に対応する分割データを前記複数の分割データから特定し、
前記特定された分割データのみに対して前記ジョブネットを適用してサブジョブを再実行するように前記ジョブ実行計算機に指示し、
前記ジョブ実行計算機は、前記管理計算機からのサブジョブ実行指示に応答して、前記特定された分割データのみに対して前記サブジョブを再実行する、
ことを特徴とする計算機システム。
【請求項２】
請求項１において、
前記管理計算機は、前記複数のジョブ実行計算機のそれぞれにおける、サブジョブを実行する余裕があるか否かを示す空き多重度情報を管理し、
前記管理計算機は、前記空き多重度情報を参照し、サブジョブを実行する余裕があるジョブ実行計算機を、前記サブジョブを再実行する前記ジョブ実行計算機として決定することを特徴とする計算機システム。
【請求項３】
請求項２において、
前記管理計算機は、前記ジョブネットを構成する複数のジョブの実行結果が複数のジョブ実行計算機間で共有されているか否かを示す出力ファイル共有情報を管理し、
前記管理計算機は、現時点で実行しようとする現在ジョブに先行する先行ジョブを実行したジョブ実行計算機における現時点での空き多重度情報がジョブ実行の余裕がないことを示す場合、前記出力ファイル共有情報を参照し、前記先行ジョブの実行結果が他のジョブ実行計算機で利用可能であるか否か確認して、当該確認結果に基づいて前記サブジョブを再実行する前記ジョブ実行計算機を決定することを特徴とする計算機システム。
【請求項４】
請求項３において、
前記管理計算機は、前記先行ジョブの実行結果が他のジョブ実行計算機で利用不可能である場合、前記先行ジョブを実行したジョブ実行計算機にジョブ実行の余裕ができるまで前記ジョブ実行計算機の決定を保留することを特徴とする計算機システム。
【請求項５】
請求項１において、
前記更新関連情報は、前記マスタデータが変更されたことを示す、ファイルサイズを含むファイル属性であり、
前記管理計算機は、前記ファイル属性の情報を用いて前記マスタデータの更新の有無を判断することを特徴とする計算機システム。
【請求項６】
請求項１において、
前記更新関連情報は、前記マスタデータが変更された履歴を示す更新履歴情報であり、
前記管理計算機は、前記更新履歴情報を用いて前記マスタデータの更新の有無を判断することを特徴とする計算機システム。
【請求項７】
請求項１において、
前記更新関連情報は、前記マスタデータの内容を表示するためのマスタデータ表示画面に設けられたマスタデータ編集ボタンが押下されたか否かのユーザアクション情報であり、
前記管理計算機は、前記ユーザアクション情報が存在する場合に前記マスタデータの更新がなされたと判断することを特徴とする計算機システム。
【請求項８】
請求項１において、
前記管理計算機は、前記サブジョブの実行後、前記マスタデータの管理情報及び前記サブジョブ実行結果を表示装置の表示画面上に表示することを特徴とする計算機システム。
【請求項９】
請求項８において、
前記管理計算機は、ユーザの要求に応答して、前記関す他データの管理情報及び前記サブジョブ実行結果を表示装置の表示画面上に表示することを特徴とする計算機システム。
【請求項１０】
請求項８において、
前記管理計算機は、ユーザの指示に応答して、前記マスタデータを編集するための編集画面を前記表示画面上に表示し、前記マスタデータの更新を受け付けると共に、更新の有無を前記マスタデータの管理情報に反映することを特徴とする計算機システム。
【請求項１１】
ジョブを実行する複数のジョブ実行計算機と、前記ジョブの実行と前記複数のジョブ実行計算機を管理する管理計算機とを含む計算機システムにおけるジョブ実行管理方法であって、
前記管理計算機は、マスタデータに対する更新の有無に関する更新関連情報と、更新があった部分に対応する分割キーである更新分割キー情報を管理しており、
前記ジョブ実行管理方法は、
前記管理計算機が、マスタデータの分割単位を示す分割キーでマスタデータを分割して複数の分割データを生成するステップと、
前記管理計算機が、当該複数の分割データのそれぞれに対してジョブネットを適用してサブジョブを実行するジョブ実行計算機を決定するステップと、
前記管理計算機が、前記サブジョブ実行後又はサブジョブ実行中に前記マスタデータに対して更新がなされた場合、前記更新分割キー情報に対応する分割データを前記複数の分割データから特定するステップと、
前記管理計算機が、前記特定された分割データのみに対して前記ジョブネットを適用してサブジョブを再実行するように前記ジョブ実行計算機に指示するステップと、
前記ジョブ実行計算機が、前記管理計算機からのサブジョブ実行指示に応答して、前記特定された分割データのみに対して前記サブジョブを再実行するステップと、
を有することを特徴とするジョブ実行管理方法。
【請求項１２】
請求項１１において、
さらに、前記管理計算機が、前記サブジョブの実行後、前記マスタデータの管理情報及び前記サブジョブ実行結果を表示装置の表示画面上に表示するステップを有することを特徴とするジョブ実行管理方法。
【請求項１３】
請求項１２において、
さらに、前記管理計算機が、ユーザの指示に応答して、前記マスタデータを編集するための編集画面を前記表示画面上に表示し、前記マスタデータの更新を受け付けると共に、更新の有無を前記マスタデータの管理情報に反映するステップを有することを特徴とするジョブ実行管理方法。
【請求項１４】
請求項１１において、
前記管理計算機は、前記複数のジョブ実行計算機のそれぞれにおける、サブジョブを実行する余裕があるか否かを示す空き多重度情報を管理し、
前記ジョブ実行計算機を決定するステップにおいて、前記管理計算機は、前記空き多重度情報を参照し、サブジョブを実行する余裕があるジョブ実行計算機を、前記サブジョブを再実行する前記ジョブ実行計算機として決定することを特徴とするジョブ実行管理方法。
【請求項１５】
ジョブを実行する複数のジョブ実行計算機を有する計算機システムにおいて、前記ジョブの実行と前記複数のジョブ実行計算機を管理する管理計算機に、
マスタデータに対する更新の有無に関する更新関連情報と、更新があった部分に対応する分割キーである更新分割キー情報を管理する機能と、
前記マスタデータの分割単位を示す分割キーで前記マスタデータを分割して複数の分割データを生成する機能と、
当該複数の分割データのそれぞれに対してジョブネットを適用してサブジョブを実行するジョブ実行計算機を決定する機能と、
前記サブジョブ実行後又はサブジョブ実行中に前記マスタデータに対して更新がなされた場合、前記更新分割キー情報に対応する分割データを前記複数の分割データから特定する機能と、
前記特定された分割データのみに対して前記ジョブネットを適用してサブジョブを再実行するように前記ジョブ実行計算機に指示する機能と、
を実現させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機システム、ジョブ実行管理方法及びプログラムに関し、例えば、ジョブネットワークを制御するための技術に関するものである。
【背景技術】
【０００２】
金融・口座レコードの日次・月次処理などの大量データに対してはバッチ処理が行われる。このバッチ処理において重要な点は、終了時間保証である。バッチ処理が終わらないと、次の業務サービス開始に支障が生じてしまうからである。従って、バッチ処理には、大量データでも所定時間内に終了させる高速性や、確実に終了させるための信頼性・障害対応迅速化が求められている。また、バッチ処理には、ＴＣＯ（Total Cost of Ownership）削減に必要な、低コスト化・運用容易化も求められている。【０００３】
この点に関し、例えば特許文献１には、大量ジョブを集中的に制御し、ジョブの実行状況を容易に監視するために、複数のバッチジョブを関連付けしたジョブネット（ジョブネットワークともいう）を制御する方法（ジョブスケジュール方法）が開示されている。【０００４】
一方、ジョブネットの実行結果を利用するサービスを所定の開始時刻に開始可能とするため、ジョブネットは所定時間内に終了させる必要がある。ところが、バッチジョブの処理時間は入出力するデータ量に依存するため、データが増大すると所定時間内にジョブネットを終了できなくなってしまう。この対策として、例えば、特許文献２には、データを分割し、分割したデータをそれぞれジョブに割り当てて複数の計算機上で並列処理させて大量データのバッチジョブ処理を高速化するジョブスケジュール方法が開示されている。特許文献２のジョブスケジュール方法では、あらかじめデータを分割して、分割数分のジョブ定義を生成し、分割したデータとジョブ定義との関係を並列処理管理テーブルに記録する。スケジュール時に並列処理管理テーブルを参照して実行するジョブを判定してそのジョブの識別データを含むジョブ定義をジョブ管理に与える。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００６−２７７６９６号公報
【特許文献２】特開２００２−１４８２９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ジョブネットの中には、大量データを処理するジョブが１つではなく、大量データの並び替えや加工をしながらジョブ間でデータを受け渡しして、同一のデータを複数のジョブで処理するジョブネットが存在する。【０００７】
しかしながら、特許文献１を含む従来のジョブネットのジョブスケジュール方法では、大量データの分割データを処理する各ジョブ間の関係性が定義されておらず、後続ジョブにデータを割り当てるときに、先行ジョブの実行結果や実行場所が考慮されていない。このため、特定のジョブに関連する一部の正常レコードを更新して部分的に再実行する必要がある場合、ジョブネットを最初から実行し直すか、若しくは別のジョブを用意して部分的な更新データだけを処理するといった特殊な運用をする必要がある。したがって、再実行時の処理量が多くなったり、処理が煩雑になったりして、所定時間内にジョブを終了できないリスクが増大する。【０００８】
また、特許文献２では、上述のように大量データを分割して並列処理させることについては開示しているが、ジョブネットに関する記述がない。このため、ジョブネット上でどのように分割データを処理してジョブの効率化を図るかについて全く考慮されていない。【０００９】
本発明はこのような状況に鑑みてなされたものであり、ジョブネット内の１つないし複数のジョブに関連する一部のレコードを更新してジョブを再実行したい場合に、規定終了予定時間を超えるリスクを低減可能なジョブネットのジョブ実行管理技術を提供するものである。
【課題を解決するための手段】
【００１０】
上記課題を解決するために、本発明の計算機システムでは、マスタデータ管理情報として、分割キーごとにマスタデータの更新有無を管理する。マスタデータに更新があった場合にはジョブを再実行するが、ジョブ再実行時は更新されたマスタデータに対応する分割キーでのみデータ分割を行い、再実行対象のサブジョブを分割キー単位で局所化してジョブを再実行する。【００１１】
また、当該計算機システムでは、ジョブ実行後又はジョブ実行中に、マスタデータを更新することができるようになっている。上述のように、マスタデータが更新された場合には、サブジョブが再実行されるが、そのサブジョブの対象である分割データを特定するときに、マスタデータの更新の有無を判断できる情報（更新有無のフラグ、履歴（修正履歴、修正用画面操作履歴、SQLの履歴、ジョブ参照画面からの誤り箇所確認操作など））から更新されたマスタデータに対応する分割キーを特定し、分割キーごとの更新有無をマスタデータ管理情報として管理する。【００１２】
即ち、本発明による計算機システムは、ジョブを実行する複数のジョブ実行計算機と、マスタデータの分割単位を示す分割キーでマスタデータを分割して複数の分割データを生成し、当該複数の分割データのそれぞれに対してジョブネットを適用してサブジョブを実行するジョブ実行計算機を決定する管理計算機と、少なくともマスタデータとサブジョブの実行結果を格納する少なくとも１つのストレージ装置と、を有している。そして、管理計算機は、マスタデータに対する更新の有無に関する更新関連情報と、更新があった部分に対応する分割キーである更新分割キー情報を管理する。また、管理計算機は、サブジョブ実行後又はサブジョブ実行中に、マスタデータに対して更新がなされた場合、更新分割キー情報に対応する分割データを前記複数の分割データから特定する。さらに、管理計算機は、特定された分割データのみに対してジョブネットを適用してサブジョブを再実行するようにジョブ実行計算機に指示する。そして、ジョブ実行計算機は、管理計算機からのサブジョブ実行指示に応答して、特定された分割データのみに対してサブジョブを再実行する。
【発明の効果】
【００１３】
本発明によれば、マスタデータを更新した場合に、分割キー単位で特定のサブジョブのみを再実行可能となり、ジョブ全体の終了時間を保証することができると共に、ジョブ実行処理の効率を向上させることができる。【００１４】
なお、上述した以外の課題、構成及び効果は、以下の本発明を実施するための形態および添付図面によって明らかになるものである。
【図面の簡単な説明】
【００１５】
【図１】本発明の実施形態による計算機システムの構成例を示す図である。
【図２】本実施形態の計算機システム１において実行されるジョブネットの処理の概要（例）を説明するための図である。
【図３】サブジョブの再実行の概念を説明するための図である。
【図４】ジョブネット情報管理テーブル１００の構成例を示す図である。
【図５】ジョブ情報管理テーブル１１０の構成例を示す図である。
【図６】分割データ管理テーブル１２０の構成を示す図である。
【図７】実行サーバ管理テーブル１３０の構成例を示す図である。
【図８】マスタデータ管理テーブル１４０の構成例を示す図である。
【図９】ジョブスケジュール処理プログラム１０００によるジョブスケジュール処理の内容を説明するためのフローチャートである。
【図１０】ジョブ実行処理（ステップ９０５及び９１２）の詳細を説明するためのフローチャートである。
【図１１】サブジョブスケジュール処理（サブジョブ実行処理）の詳細を説明するためのフローチャートである。
【図１２】マスタデータ表示・編集処理の詳細を説明するためのフローチャートである。
【図１３】マスタデータ表示画面例（図１３Ａ）及びマスタデータ編集画面例（図１３Ｂ）を示す図である。
【発明を実施するための形態】
【００１６】
以下、添付図面を参照して本発明の実施形態について説明する。ただし、本実施形態は本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではないことに注意すべきである。また、各図において共通の構成については同一の参照番号が付されている。
【００１７】
なお、以後の説明では「テーブル」という表現にて本発明の情報を説明する場合もあるが、これら情報は必ずしもテーブルによるデータ構造で表現されていなくても良く、リスト、ＤＢ、キュー等のデータ構造やそれ以外で表現されていても良い。そのため、データ構造に依存しないことを示すために「テーブル」、「リスト」、「ＤＢ」、「キュー」等について単に「情報」と呼ぶことが可能である。
【００１８】
また、各情報の内容を説明する際に、「識別情報」、「識別子」、「名」、「名前」、「ＩＤ」という表現を用いることが可能であり、これらについてはお互いに置換が可能である。
【００１９】
以後の説明では「プログラム」を主語として説明を行うが、プログラムはプロセッサによって実行されることで定められた処理をメモリ及び通信ポート（通信制御装置）を用いながら行うため、プロセッサを主語とした説明としてもよい。また、「プログラム」を「モジュール」と読み替えても良い。なお、プログラムを主語として開示された処理は管理サーバ等の計算機、情報処理装置が行う処理としてもよい。プログラムの一部または全ては専用ハードウェアで実現してもよく、また、モジュール化されていても良い。各種プログラムはプログラム配布サーバや記憶メディアによって各計算機にインストールされてもよい。
【００２０】
＜計算機システムの構成＞
図１は、本発明の実施形態による計算機システム１のハードウェア構成を示す図である。計算機システム１は、ジョブのスケジュール処理等、ジョブの管理処理を実行するスケジュールサーバ（管理サーバ、管理計算機ともいう）１０と、スケジュールサーバ１０からの指示を受けてジョブネットを構成する１つ以上のジョブのサブジョブを実行する少なくとも１つの実行サーバ２０ａ乃至２０ｎ（実行サーバ（ジョブ実行計算機）１乃至ｎともいう）と、を有し、それらがネットワーク２を介して接続されている。また、スケジュールサーバ１０には、マスタデータを格納する記憶装置１５が接続されている。なお、ここで、ジョブネットとは、実行順序が定義され、一度のスケジュール要求で実行順序に従って実行する一連のジョブの集合をいう。ジョブネットにおいて、あるジョブの実行順序が前の（特に直前の）ジョブを先行ジョブと定義し、後の（直後の）ジョブを後続ジョブと定義する。また、サブジョブとは、処理対象であるマスタデータを分割して生成された分割データに対する、ジョブネットを構成する各ジョブの単位をいう。ジョブで処理するデータを分割して各サブジョブに割り当てるため、同一ジョブから生成されるサブジョブにおいては、処理対象の分割データは異なるがデータ処理の内容は同一となっている。
【００２１】
スケジュールサーバ１０は、各種情報と処理プログラムを格納する主記憶装置１１と、処理プログラムのコードを実際に解釈して実行したり、他の各処理を実行するＣＰＵ(Central Processing Unit)１２と、実行サーバ２０ａ乃至２０ｎと通信を行うための通信インタフェース(I/F)１３と、スケジュールサーバ１０に接続される記憶装置１５に対してデータの読み書きを実行するための入出力インタフェース(I/F)１４と、を有している。
【００２２】
スケジュールサーバ１０の主記憶装置１１は、後述するジョブスケジュール処理を実行するためのジョブスケジュール処理プログラム１０００と、データ編集・分割・表示処理プログラム１１００と、ジョブネットを構成する各ジョブの情報を管理するジョブネット情報管理テーブル１００と、各ジョブの出力ファイルの特徴を管理するジョブ情報管理テーブル１１０と、サブジョブの処理対象である各分割データを管理する分割データ管理テーブル１２０と、実行サーバの状態を管理する実行サーバ管理テーブル１３０と、マスタデータの更新状況を管理するマスタデータ管理テーブル１４０と、を格納する。なお、本実施形態では、ジョブスケジュール処理プログラム１０００が、データ編集・分割・表示処理プログラム１１００に対して、各サブジョブ実行結果やマスタデータのデータ編集・分割・表示処理を実行するように指示するようになっている。また、このデータ編集・分割・表示処理プログラム１１００を各実行サーバに設け、実行サーバ側でマスタデータの分割・表示・編集処理を実行させるようにしても良い。この場合には、ジョブ実行する実行サーバ２０は、マスタデータも併せて有していなければならない。
【００２３】
各実行サーバ２０ａ乃至２０ｎはそれぞれ、各種情報と処理プログラムを格納する主記憶装置２１と、処理プログラムのコードを実際に解釈して実行したり、他の各処理を実行するＣＰＵ(Central Processing Unit)２２と、スケジュールサーバ１０と通信を行うための通信インタフェース(I/F)２３と、スケジュールサーバ１０に接続される記憶装置２５ａ及び２５ｂ等に対してデータの読み書きを実行するための入出力インタフェース(I/F)２４と、を有している。
【００２４】
主億記憶装置２１は、後述するサブジョブの実行を制御するサブジョブ実行制御処理プログラム２０００を格納する。
【００２５】
記憶装置２５ｂは、例えば、ジョブネットの先頭ジョブ（例えば、図２におけるジョブＡ）に対する入力となる入力データファイル２５１と、ジョブネットの各ジョブの出力データである中間データファイル２５２と、を格納する。また、記憶装置２５ａは、例えば、各ジョブの出力データである中間データファイル２５２を格納する。入力データファイル２５１は、単一のファイルでもよく、事前にサブジョブごとに分割された分割ファイルであっても良い。中間データファイル２５２は、サブジョブごとに生成させる。
【００２６】
ネットワーク２としては、ＩＰネットワーク、ストレージネットワーク、その他のいかなる種類のデータ通信用のネットワーク等が適用可能である。
【００２７】
＜ジョブネット実行概要＞
図２は、本実施形態の計算機システム１において実行されるジョブネットの処理の概要（例）を説明するための図である。
【００２８】
ここで、例えば、ジョブネット情報管理テーブル１００に、５つのジョブ（分割ジョブ１０２、ジョブＡ１０３、ジョブＢ１０４、ジョブＣ１０５、ジョブＤ１０６）で構成されるジョブネット１０１が定義されているものとする。また、当該ジョブネットでは、ジョブＡ１０３の出力である中間データファイル２５２がジョブＢ１０４の入力となり、ジョブＢ１０４の出力である中間データファイル２５２がジョブＣの入力となっているとする。すなわち、ジョブＡ１０３の入力データファイル２５１を分割ジョブ１０２によって生成された同一の分割データを、ジョブＡ１０３・ジョブＢ１０４・ジョブＣ１０５の３つのジョブにまたがって処理するものとする。例えば、ジョブＡが日ごとのデータを月ごとのデータに変更する処理、ジョブＢがその月ごとのデータを所定の条件でソートする処理、ジョブＣが個人データを印刷する処理、ジョブＤが処理結果を統合する処理に相当するものと設定することができる。
【００２９】
ジョブネット１００が実行されるとき、ジョブスケジュール処理プログラム１０００は、ジョブネット情報管理テーブル１００の情報とジョブ情報管理テーブル１１０の情報に基づいて、分割データ管理テーブル１２０と実行サーバ管理テーブル１３０とを主記憶装置１１内に生成し、ジョブ実行可能な（空き多重度が「０」ではない、つまり、ジョブを処理する余裕を有することを示す）実行サーバ２０ａ乃至２０ｎのいずれかにサブジョブ２０４の実行を依頼する。
【００３０】
サブジョブ実行の依頼を受けた実行サーバ（例えば実行サーバ２０ａとする）のサブ実行制御処理プログラム２０００は、ジョブスケジュール処理によって決定されたジョブネットを構成するジョブの実行順序に従って、各分割データに対してサブジョブを実行する。図２は、実行サーバ２０ａが、サブジョブＡ１、サブジョブＢ１、サブジョブＢ２、及びサブジョブＣ１を実行するようにジョブが割り当てられた例を示している。
【００３１】
まず、マスタデータは、データ編集・分割・表示処理プログラム１１００によって、複数の分割データ（入力データ１乃至ｎ２５１）に分割される。実行サーバは、処理対象である複数の分割データをスケジュールサーバ１０から受信する。或いは、データ編集・分割・表示処理プログラムを各実行サーバに設け、マスタデータを実行サーバ側の記憶装置２５に格納している場合には、各実行サーバがマスタデータを分割する。そして、サブジョブ実行制御処理プログラム２０００は、入力データ１を、サブジョブＡ１（ジョブＡ＝プログラムＡ）によって処理し、中間データ１_２５２ａを生成する。そして、サブジョブ実行制御処理プログラム２０００は、中間データ１_２５２ａをサブジョブＢ１（ジョブＢ＝プログラムＢ）によって処理し、中間データ１_２５２ｂを生成する。並行して、サブジョブ実行制御処理プログラム２０００は、中間データ２_２５２ａをサブジョブＢ２（ジョブＢ＝プログラムＢ）によって処理し、中間データ２_２５２ｂを生成する。さらに、サブジョブ実行制御処理プログラム２０００は、中間データ１_２５２ｂをサブジョブＣ１（ジョブＣ＝プログラムＣ）によって処理し、出力データ１を生成する。図２の例では、入力データ１に関してのみサブジョブＡからＣまで実行され、中間データ２に関してサブジョブＢのみが実行されているが、入力データ２のサブジョブＡ及びサブジョブＣや、他の入力データの各サブジョブは他の実行サーバ２０で実行されていることになる。
【００３２】
なお、各実行サーバ２０で得られた処理結果は、ジョブＤ１０６によって統合されるようにしても良い。なお、計算機システム１において、複数のスケジュールサーバ（管理サーバ、管理計算機）１０を設置し、各スケジュールサーバで実行された分割ジョブ、ジョブＡ乃至Ｃまでの処理結果を何れかのスケジュールサーバ１０のジョブＤで最終処理するようにしても良い。
【００３３】
＜再実行の概念＞
図３は、サブジョブの再実行の概念を説明するための図である。図３では、分割データ２についてサブジョブＡ２（分割データ２についてのジョブＡ）を実行した後に、マスタデータ２（分割データ２に相当）に更新があった場合、或いは、サブジョブＡ２が異常終了した場合に、サブジョブＡ２を再実行する様子が示されている。
【００３４】
図３において、分割データ１については、サブジョブＡ１及びＢ１が実行され、正常に中間データＡ１及びＢ１が生成されている。また、分割データ３についても同様に正常に終了している。ところが、分割データ２については、サブジョブＡ２の実行が異常終了（例えば、サーバの障害等）したか、或いは、サブジョブＡ２実行中にマスタデータ２（分割データ２に相当）が更新されたとする。従って、当該分割データ２（実線長方形で囲まれている分割データ２）のサブジョブＡ２（短点線で囲まれたサブジョブ２）の処理結果（中間データ）をそれ以降の処理において用いることは出来ない。そこで、この場合には、分割データ２についてのサブジョブを再実行する。本発明では、ジョブネット構成においても、各サブジョブは分割データごとに管理され、実行されるようになっているため、当該更新があった部分を含む分割データ或いは異常終了した処理の対象であった分割データのみに再度サブジョブを実行すれば良いことになる。
【００３５】
例えば、図３中、更新されたマスタデータ２は二点鎖線で示されている。この場合、更新された分割データ２（点線長方形で囲まれている分割データ２）については、サブジョブＡ２が再実行される。サブジョブＡ２の再実行（点線台形）によって、更新された分割データ２（長点線で囲まれた分割データ２）にサブジョブＡ２が実行されて中間データＡ２が生成される。そして、中間データＡ２に対してサブジョブＢ２が実行され、中間データＢ２が生成される。この再実行時には処理の異常も、処理途中のデータ更新もなかったため、正常にサブジョブ処理が終了する。
【００３６】
なお、マスタファイルの更新は、例えば、登録したマスタデータの値にエラーがあったため、管理者が書き換えたような場合に実行される。マスタデータの更新の有無は、後述のように、マスタデータ管理テーブル１４０で管理しているため、実行サーバ２０はスケジュールサーバ１０との通信により、更新の有無を検知することができるようになっている。
【００３７】
＜ジョブネット情報管理テーブル＞
図４は、ジョブネット情報管理テーブル１００の構成例を示す図である。ジョブネット情報管理テーブル１００は、ジョブＩＤ１００１と、終了コード異常閾値１００２と、分割データ管理情報識別子１００３と、分割数１００４と、を構成項目として有している。
【００３８】
ジョブＩＤ１００１は、ジョブネットを構成するジョブを特定するための情報である。ジョブＩＤ１００１の欄に記載されているジョブは、例えば、上から順に実行されるようになっている。
【００３９】
終了コード異常閾値１００２は、ジョブＩＤで特定されたジョブを実行した結果に示される終了コードの値がいくつ以上の場合に、次の処理に移行せずに終了するかを示す情報である。通常、終了コードの値は０から２５５の値を取るが、大きな値ほど重大な障害が発生したことを示している。
【００４０】
分割管理情報識別子１００３は、ジョブの実行対象であって、分割される元のマスタデータのファイル名を特定するための情報である。
【００４１】
分割数１００４は、マスタデータの分割数を示す情報であり、即ち、サブジョブ数を示す値である。
【００４２】
なお、ここでは、ジョブＤの分割データ管理情報識別子１００３はＮ／Ａ（−）となっており、分割数１００４の欄が空欄となっている。これは、例えば、ジョブＤが計算機システム１における全ての、或いはいくつかのスケジュールサーバ１０によるジョブ実行結果を統合する処理等である場合は、特定のファイルを分割して管理する必要がないからである。
【００４３】
＜ジョブ情報管理テーブル＞
図５は、ジョブ情報管理テーブル１１０の構成例を示す図である。ジョブ情報管理テーブル１１０は、ジョブＩＤ１１０１と、出力ファイル共有情報１１０２と、出力ファイル削除情報１１０３と、出力ファイル名１１０４と、を構成項目として有している。
【００４４】
ジョブＩＤ１１０１は、ジョブネットを構成するジョブを特定するための情報である。
【００４５】
出力ファイル共有情報１１０２は、該当するジョブの結果である中間データファイルが他の実行サーバとも処理できるファイルか否か示す情報である。つまり、出力ファイル共有情報１１０２の欄には、サブジョブの出力ファイルである中間データファイルが複数の実行サーバ間で共有する記憶装置（例えば記憶装置２５ｂ）に出力するときは「共有」、実行サーバ間で共有しない記憶装置（例えば記憶装置２５ａ）に出力するときは「非共有」が格納される。例えば、ジョブＡの出力ファイル共有情報１１０２は「共有」となっているが、ジョブＡを実行して中間データファイルを出力し、この中間データファイルがどの実行サーバからもアクセスできて処理可能となっている。「共有」に設定されていれば、ジョブＡを実行した実行サーバに障害が発生しても、空きのある実行サーバでジョブＡの中間データファイルに対して他のジョブを実行することができるか判断することができる。このように、「共有」に設定されている場合には、該当する実行サーバが障害になっても、他の実行サーバからアクセス可能である。また、「非共有」に設定されている場合には、該当する実行サーバが障害となった場合はアクセスできないが、ジョブの処理が比較的少なく再実行に要する時間が少ないときは、実行時の性能を優先して非共有の記憶装置に出力することもあると考えられる。
【００４６】
出力ファイル削除情報１１０３は、中間データファイルを出力した後に、作成した中間データファイルを保持しておくか、削除してしまうかを示す情報である。中間データファイルを入力する後続のサブジョブが終了するときに、中間データファイルを削除する場合には「ＤＥＬＥＴＥ」、削除しない場合は「ＫＥＥＰ」が格納される。
【００４７】
出力ファイル名１１０４は、ジョブ実行結果の中間データファイルのファイル名を示す情報である。出力ファイル名１１０４における＃は、＃を分割データＩＤで置換することを示している。出力ファイル名に分割データＩＤを付加するのは、分割データＩＤ毎に中間データファイルが生成されるため、書く中間データファイルを識別する必要があるからである。
【００４８】
なお、出力ファイル共有情報１１０２及び出力ファイル削除情報１１０３は、サブジョブを再実行するときに中間データファイルにアクセス可能か否か判断するためにも参照される。
【００４９】
＜分割データ管理テーブル＞
図６は、分割データ管理テーブル１２０の構成を示す図である。分割データ管理テーブル１２０は、マスタデータ毎に設けられており、図６は、Ｆｉｌｅ１に対しての分割データ管理テーブルを示している。
【００５０】
分割データ管理テーブル１２０は、分割データＩＤ１２０１と、ジョブＩＤ１２０２と、サブジョブＩＤ１２０３と、実行サーバＩＤ１２０４と、状態１２０５と、を構成項目として有している。
【００５１】
分割データＩＤ１２０１は、マスタデータ（例えばＦｉｌｅ１）をｎ個に分割して生成された分割データを特定するための識別情報である。
【００５２】
ジョブＩＤ１２０２は、該当する分割データに割り当てられたジョブ（サブジョブ）を特定するための情報である。
【００５３】
サブジョブＩＤ１２０３は、該当するサブジョブの識別子を示す情報である。
【００５４】
実行サーバＩＤ１２０４は、該当するサブジョブを実行する実行サーバを特定するための情報である。
【００５５】
状態１２０５（サブジョブ状態）は、サブジョブの結果が正常に終了したか否かを示す情報である。分割データを処理したサブジョブの終了コードが閾値１００２を下回るときに「正常」、上回るときに「異常」と設定され、また、サブジョブ実行中の場合は「実行中」、サブジョブが一度も実行されていない場合は「空白（空欄）」に設定される。分割データ２に対するジョブＣの欄は空白であるが、これは分割データ２に対するジョブＢが異常終了したため、そのジョブを用いる分割データ２のジョブＣは実行されないことが示されている。
【００５６】
なお、再実行時に常にジョブネットの先頭から実行する場合、ジョブネット内で最後に実行されたサブジョブ以外の実行サーバ情報は不要であるため、図６では、最後に実行されたサブジョブ以外のエントリは不要である。また、状態１２０５を設定せずに、サブジョブの状態が「正常」のときのみジョブＩＤ１２０２を入力するようにしても良い。
【００５７】
＜実行サーバ管理テーブル＞
図７は、実行サーバ管理テーブル１３０の構成例を示す図である。実行サーバ管理テーブル１３０は、実行サーバ数分のエントリを有しており、各エントリの構成項目として、サーバＩＤ１３０１と、サーバ状態１３０２と、空き多重度１３０３と、を有している。
【００５８】
サーバＩＤ１３０１は、実行サーバを特定するための情報である。
【００５９】
サーバ状態１３０２は、該当する実行サーバにサブジョブが実行中、或いは投入可能な「正常」状態か、サーバ障害などの「異常」な状態かを示す情報である。
【００６０】
空き多重度１３０３は、該当する実行サーバに投入可能なサブジョブの数を示す情報である。
【００６１】
＜マスタデータ管理テーブル＞
図８は、マスタデータ管理テーブル１４０の構成例を示す情報であり、マスタデータ毎に存在する。各マスタ管理テーブル１４０は、分割データ数分のエントリを有しており、各エントリの構成項目として、分割データＩＤ１４０１と、分割キー１４０２と、更新履歴１４０３と、更新有無１４０４と、を有している。
【００６２】
分割データＩＤ１４０１は、マスタデータを分割して得られる分割データを特定するための識別情報である。
【００６３】
分割キー１４０２は、マスタデータを分割するための単位を示す情報である。例えば、マスタデータが各エントリに事業所名や日付情報を有する場合、その事業所名や期間で情報をまとめ、それらを分割単位とすることができる。このときに用いられるキーワードや関連情報等が分割キーとなる。また、分割キーはキーワード等に限られず、例えば、マスタデータを１０００エントリ単位でまとめるような分割キーであっても良い。分割キーがキーワード等の場合には、まとめられた各情報には関連性があるが、エントリ数でまとめる場合には各情報には必ずしも関連性があるわけではない。
【００６４】
更新履歴１４０３は、該当する分割データを更新した日時、或いはマスタデータを最初に分割した日時が挿入される。マスタデータが更新されたことがない場合には、当該更新履歴１４０３の欄には、マスタデータを分割した日時が設定されたままとなっている。
【００６５】
更新有無１０４０４は、該当する分割データに更新がなされたか否かを示す情報である。例えば、「無」の場合には、マスタデータを分割して当該分割データを生成してから更新がなされていないことが示されている。
【００６６】
＜ジョブスケジュール処理＞
図９は、ジョブスケジュール処理プログラム１０００によるジョブスケジュール処理の内容を説明するためのフローチャートである。
【００６７】
ジョブスケジュール処理プログラム１０００は、ユーザ（管理者等）からの指示入力を受付け、ジョブネットの再実行の指示か否か判断する（ステップＳ９０１）。ユーザからの指示入力は、例えば、ジョブネット再実行の場合には、ファイルＩＤ（例えば、Ｆｉｌｅ１）の指定とジョブネット再実行の指示によって構成され、ジョブネット実行の場合には、ファイルＩＤの指定と、ジョブネット実行指示と、分割キー及び実行サーバの指定によって構成されている。入力指示がジョブネット再実行である場合（ステップＳ９０１でＹｅｓの場合）は、処理はステップＳ９０２に移行し、ジョブネット実行である場合（ステップＳ９０１でＮｏの場合）は、処理はステップＳ９０９に移行する。
【００６８】
ステップＳ９０２では、ジョブスケジュール処理プログラム１０００は、マスタデータ管理テーブル（マスタデータ管理情報）１４０の更新有無１４０４に「有」が含まれているか判断する。更新有無１４０４に「有」がある場合（ステップＳ９０２でＹｅｓの場合）、処理はステップＳ９０３に移行し、「有」がない場合（ステップＳ９０２でＮｏの場合）、処理は終了する。なお、更新有無１４０４以外にも、例えば、ファイル属性（日付やデータサイズ）により、マスターデータが変更・修正されたことを判断しても良い。また、データ修正用のエディタ（例えば、図１３Ｂ参照）を用いてマスタデータが更新されたか否かを示す更新履歴（ログ）を参照して更新の有無を判断しても良い。さらに、マスタデータ表示画面（例えば、図１３Ａ）に設けられたマスタデータ編集指示ボタン１３０１が押下されたか否かを示すアクション情報に基づいて、更新の有無を判断しても良い。また、ＳＱＬやジャーナルなどの履歴（ログ）を解析することにより、更新の有無を判断しても良い。
【００６９】
次に、ジョブスケジュール処理プログラム１０００は、ステップ９０２で得られた、更新有無１４０４が「有」の分割キー１４０２を用いて、該当する実行サーバ２０上でマスタデータを分割し、ジョブ再実行の対象である入力データを生成する（ステップＳ９０３）。例えば、更新有無１４０４の状態が図８に示されるよう様な場合には、分割キー１４０２「ｂｂｂｂ」でマスタデータ（Ｆｉｌｅ１）を分割し、更新された部分を含む分割データ２が生成される。
【００７０】
そして、ジョブスケジュール処理プログラム１０００は、分割データ管理テーブル１２０のエントリの状態を変更（消去）する（ステップＳ９０４）。つまり、ジョブスケジュール処理プログラム１０００は、分割データ管理テーブル（分割データ管理情報）１２０のエントリのうち、ステップＳ９０３で再度作成した分割データのＩＤに対応するエントリの状態１２０５を消去することにより、ジョブ再実行の対象を特定する。例えば、分割データＩＤが「２」に更新があった場合、分割データ管理テーブル１２０における分割データＩＤが「２」に一致するエントリ１２０６（図６参照）における状態１２０５である「正常」或いは「異常」を消去し、空欄に設定する。なお、空欄にする以外にも、再実行処理の対象であることを示す特別のフラグを設定するようにしても良い。
【００７１】
続いて、ジョブスケジュール処理プログラム１０００は、ステップＳ９０４でジョブ再実行の対象であると特定された分割データに対してのみ各ジョブを実行する（ステップＳ９０５）。ジョブ実行処理の詳細については後述する。
【００７２】
さらに、ジョブスケジュール処理プログラム１０００は、ジョブが再実行され、ジョブ結果が以前の結果と異なるようになったため、データ編集・分割・表示処理プログラム１１００を呼出し、マスタデータ表示・編集処理を実行させる（ステップＳ９０６）。このマスタデータ表示・編集処理の詳細については後述する。
【００７３】
次に、ジョブスケジュール処理プログラム１０００は、マスタデータが更新されているか（特定の分割キーに該当するデータが更新されているか）判断する（ステップＳ９０７）。マスタデータが更新されていれば（ステップＳ９０７でＹｅｓの場合）、処理はステップＳ９０８に移行する。マスタデータが更新されていなければ（ステップＳ９０７でＮｏの場合）、処理は終了する。
【００７４】
ステップＳ９０８において、ジョブスケジュール処理プログラム１０００は、マスタデータ管理テーブル１４０の更新された分割キーに該当する更新有無１４０４を「無」から「有」に変更する。ステップＳ９０８が終了すると、処理はステップＳ９０１に移行する。
【００７５】
一方、ステップＳ９０１でジョブネット再実行でないと判断された場合（通常のジョブネット実行が指示された場合）、ジョブスケジュール処理プログラム１０００は、データ編集・分割・表示処理プログラム１１００を呼出す。呼び出されたデータ編集・分割・表示処理プログラム１１００は、指定された分割キーを用いて、指定された実行サーバ上でマスタデータを分割し、ジョブネットに対する入力データを生成する（ステップＳ９０９）。
【００７６】
次に、ジョブスケジュール処理プログラム１０００は、マスタデータ管理テーブル１４０に情報を必要な情報を入力する。つまり、ジョブスケジュール処理プログラム１０００は、マスタデータ管理テーブル（マスタデータ管理情報）１４０を生成し、ステップＳ９０９で生成した各分割データに対応する分割ＩＤ１４０１と分割キー１４０２を登録すると共に、更新履歴１４０３の欄に分割日時を登録し、更新有無１４０４に「無」（この時点で更新がないとする）を登録する（ステップＳ９１０）。
【００７７】
そして、ジョブスケジュール処理プログラム１０００は、分割データ管理テーブル（分割データ管理情報）１２０に必要な情報を登録する（ステップＳ９１１）。つまり、ジョブスケジュール処理プログラム１０００は、分割データ管理テーブル１２０にジョブネット管理テーブル（ジョブネット情報）１００の分割データＩＤ１２０１、対応するジョブＩＤ１２０２、対応するサブジョブＩＤ１２０３、及び各サブジョブを実行する実行サーバＩＤを入力する。
【００７８】
続いて、ジョブスケジュール処理プログラム１０００は、各分割データに対して該当するジョブを順次実行する（ステップＳ９１２）。当該ジョブ実行処理の詳細についても後述する。
【００７９】
ジョブ実行処理（ステップＳ９１２）が終了すると、処理はステップＳ９０６に移行する。
【００８０】
＜ジョブ実行処理＞
図１０は、ジョブ実行処理（ステップＳ９０５及び９１２）の詳細を説明するためのフローチャートである。
【００８１】
ジョブスケジュール処理プログラム１０００は、ジョブネット情報管理テーブル１００を参照し、実行すべきジョブに対応する分割データ管理情報識別子１００３の設定があるか否か判定する（ステップＳ１００１）。分割データ管理情報識別子１００１の設定がなければ（ステップＳ１００１でＮｏの場合）、処理はステップＳ１００７に移行する。この場合、ジョブスケジュール処理プログラム１０００は、複数のサブジョブを作成せずに（マスタデータを分割せずに）、任意の実行サーバ２０にジョブネットに従ってジョブを実行させる（ステップＳ１００７）。
【００８２】
一方、分割データ管理情報識別子１００１の設定があれば（ステップＳ１００１でＹｅｓの場合）、ジョブスケジュール処理プログラム１０００は、分割データ管理情報識別子１００１に対応する分割データ管理テーブル１２０がなければ、主記憶装置１１に割り当てて初期化する（ステップＳ１００２）。すなわち、ジョブネット実行対象のマスタデータ（例えば、Ｆｉｌｅ１）に関し、分割データ管理テーブル１２０を完成させる。
【００８３】
次に、ジョブスケジュール処理プログラム１０００は、実行すべきジョブがジョブネットの再実行であるか否か判断する（ステップＳ１００３）。つまり、マスタデータが更新されたためジョブネット再実行が指示された場合、或いは、ユーザからジョブネット再実行が指示された場合には、該当する分割データに対してジョブネットが実行される。一方、通常のジョブネット実行が指示された場合には、マスタデータを分割して生成した各分割データに対してジョブネットが実行される。ジョブネット再実行が指示されている場合（ステップＳ１００３でＹｅｓの場合）、処理はステップＳＳ１００５に移行する。ジョブネット実行が指示されている場合（ステップＳ１００３でＮｏの場合）、処理はステップＳ１００４に移行する。
【００８４】
ステップＳ１００４では、ジョブスケジュール処理プログラム１０００は、分割データ管理情報識別子１００３に対応する分割データ管理テーブル１２０の各エントリのうち、実行すべきジョブとジョブＩＤが一致する全エントリの状態１２０５の情報を消去し、ジョブ実行対象として選択する。
【００８５】
一方、ステップＳ１００５では、ジョブスケジュール処理プログラム１０００は、分割データ管理情報識別子１００３に対応する分割データ管理テーブル１２０の各エントリのうち、実行すべきジョブとジョブＩＤが一致し、状態１２０５の欄が空欄のエントリを選択する。なお、ジョブネット再実行の場合には、ステップＳ９０４において、再実行対象の分割データに関する状態１２０５が空欄になっている。
【００８６】
続いて、ジョブスケジュール処理プログラム１０００は、サブジョブ実行制御処理プログラム２０００に、ステップＳ１００４又はステップＳ１００５で選択されたエントリ（分割データ）に対して、実行サーバのサブジョブスケジュール処理（サブジョブ）を実行するように指示する。そして、サブジョブ実行制御処理プログラム２０００は、この指示に従って、サブジョブスケジュール処理を実行する（ステップＳ１００６）。なお、どの実行サーバでサブジョブを実行させるかはサブジョブスケジュール処理において選択される。実行サーバの選択を含むサブジョブスケジュール処理の詳細については、後述する。
【００８７】
＜サブジョブスケジュール処理＞
図１１は、サブジョブスケジュール処理（サブジョブ実行処理）の詳細を説明するためのフローチャートである。
【００８８】
ジョブスケジュール処理プログラム１０００は、まず、ジョブネット情報管理テーブル１００を参照し、実行対象ジョブの先行ジョブを特定する（ステップＳ１１０１）。例えば、ジョブネットが図２に示されるジョブネット１０１である場合、対象ジョブがジョブＡである場合には、先行ジョブは存在しないが、他のジョブＢ乃至Ｄに関しては、それぞれ対応する先行ジョブが存在するため、その対応するジョブが特定される。
【００８９】
そして、ジョブスケジュール処理プログラム１０００は、ステップＳ１１０１において、特定された先行ジョブが存在するか判定する（ステップＳ１１０２）。先行ジョブがある場合には処理はステップＳ１１０９に移行し、先行ジョブがない場合には処理はステップＳ１１０３に移行する。
【００９０】
ステップＳ１１０３において、ジョブスケジュール処理プログラム１０００は、分割データ管理テーブル１２０から実行対象となる分割データ（エントリ）を１つ選択する。なお、通常のジョブネット実行の場合には、分割データ１乃至ｎのうち分割データ１から順に選択して処理される。また、ジョブネット再実行の場合には、対象となる分割データ（更新部分を含む分割データ）の中で１つ選択される。ジョブネット再実行の場合、通常、対象となる分割データは１つであることが多いので、当該１つの分割データのみが処理されることになる。
【００９１】
そして、ジョブスケジュール処理プログラム１０００は、選択可能なエントリがない場合には処理をステップＳ１１０７に移行させ、選択可能なエントリがある場合には処理をステップＳ１１０５に移行させる（ステップＳ１１０４）。
【００９２】
次に、ジョブスケジュール処理プログラム１０００は、ステップＳ１１０３で選択された分割データに関するサブジョブを実行する実行サーバを決定する（ステップＳ１１０５）。具体的には、実行サーバを決定する場合、ジョブスケジュール処理プログラム１０００が、実行サーバ管理テーブル１３０を参照し、空き多重度１３０３が「０」ではない任意のサーバ２０を選択する。登録された全てのサーバにおいて、空き多重度が「０」である場合には、何れかのサーバ２０において空き多重度１３０３が「１」以上になるまで待機し、空き多重度が「１」になってから実行サーバが特定される。
【００９３】
そして、ジョブスケジュール処理プログラム１０００は、ステップＳ１１０５で決定したサーバ２０に対して分割データＩＤ或いは処理対象の分割データを送信してサブジョブを実行するように指示する。実行サーバがマスタデータを有している場合には、分割ジョブＩＤのみの送信で良いが、実行サーバがマスタデータを有していない場合には、分割データそのものが当該実行サーバに送信される。指示を受けたサーバ２０のサブジョブ実行制御処理プログラム２０００は、受信した分割データＩＤに対応するデータに対してサブジョブを実行する。ステップＳ１１０６では先頭のジョブ（例えばジョブＡ）が実行されるので、決定された実行サーバ２０では、特定された分割データに対して先頭ジョブが実行されることになる。
【００９４】
ステップＳ１１０４で選択可能なエントリがないと判断された場合には、ジョブスケジュール処理プログラム１０００は、ジョブネット上の全ジョブを実行したか判断する（ステップＳ１１０７）。全ジョブが実行されている場合には、処理は終了する。全ジョブが実行されていない場合には、ジョブスケジュール処理プログラム１０００は、次のジョブ（今まで実行したジョブがジョブＡであればジョブＢ）を選択し、処理をステップＳ１１０１に移行させる（ステップＳ１１０８）。
【００９５】
一方、ステップＳ１１０２で先行ジョブがあると判断された場合、ジョブスケジュール処理プログラム１０００は、分割データ管理テーブル１２０から先行ジョブの状態１２０５が「正常」であるエントリを1つ選択する（ステップＳ１１０９）。つまり、後続のジョブにおいては先行ジョブの実行結果（中間データファイル）を用いるため、先行ジョブが正常終了してなければならないからである。
【００９６】
そして、ジョブスケジュール処理プログラム１０００は、選択可能なエントリがない場合には処理をステップＳ１１０７に移行させ、選択可能なエントリがある場合には処理をステップＳ１１１１に移行させる（ステップＳ１１１０）。
【００９７】
ステップＳ１１１１では、ジョブスケジュール処理プログラム１０００は、サブジョブの実行対象があるか否か判断する。具体的には、選択した先行ジョブ（例えばジョブＡ）のエントリの分割データＩＤと分割データＩＤが同一の分割データであって、実行対象ジョブのジョブＩＤ（例えばジョブＢ）とジョブＩＤが一致する分割データにおける状態１２０５が未設定（空欄）であるかが判断される。つまり、先行ジョブに続いて現ジョブを実行すべき分割データが存在するか判断され、サブジョブ実行対象の分割データが特定される。サブジョブ対象がない場合には、処理はステップＳ１１０９に移行し、次のエントリについて処理される。サブジョブ実行対象があると判断された場合には、処理はステップＳ１１１２に移行する。
【００９８】
ステップＳ１１１２では、ジョブスケジュール処理プログラム１０００は、ステップＳ１１１１で特定された分割データに対してサブジョブを実行するサーバを決定する。より具体的には、ジョブスケジュール処理プログラム１０００は、実行サーバ管理テーブル１３０を参照し、先行ジョブを実行した実行サーバの空き多重度が「１」以上であるかチェックする。１以上であれば、先行ジョブを実行したサーバを実行サーバとして決定する。空き多重度が「０」であった場合、ジョブスケジュール処理プログラム１０００は、ジョブ管理テーブル１１０を参照し、先行ジョブ（例えば、ジョブＡ））の出力ファイル共有情報１１０２が「共有」であるかチェックする。「共有」であれば、空き多重度が「１」以上の他のサーバを実行サーバとして決定する。空き多重度が「０」、かつ先行ジョブの出力ファイル共有情報１１０２が「非共有」である場合には、ジョブスケジュール処理プログラム１０００は、先行ジョブを実行したサーバの空き多重度が「１」以上になるまで処理を待機し、空き多重度が「１」以上になった時点で、当該サーバを実行サーバとして決定する。
【００９９】
続いて、ジョブスケジュール処理プログラム１０００は、ステップＳ１１１２で決定したサーバ２０に対して分割データＩＤ或いは分割データを送信してサブジョブを実行するように指示する（ステップ１１１３）。指示を受けたサーバ２０のサブジョブ実行制御処理プログラム２０００は、受信した分割データＩＤに対応するデータに対してサブジョブを実行する。
【０１００】
また、ステップＳ１１１０で選択可能なエントリがないと判断された場合には、ジョブスケジュール処理プログラム１０００は、ジョブネット上の全ジョブを実行したか判断する（ステップＳ１１０７）。全ジョブが実行されている場合には、処理は終了する。全ジョブが実行されていない場合には、ジョブスケジュール処理プログラム１０００は、次のジョブ（今まで実行したジョブがジョブＢであればジョブＣ）を選択し、処理をステップＳ１１０１に移行させる（ステップＳ１１０８）。
【０１０１】
＜マスタデータ表示・編集処理＞
図１２は、マスタデータ表示・編集処理の詳細を説明するためのフローチャートである。また、図１３は、マスタデータ表示画面例及びマスタデータ編集画面例を示す図である。
【０１０２】
ジョブ実行処理（ステップＳ９０５或いはステップＳ９１２）が終了すると、ジョブスケジュール処理プログラム１０００は、データ編集・分割・表示処理プログラム１１００を呼び出し、マスタデータ及びジョブ結果を図示しない表示装置の画面上に表示させる（ステップＳ１２０１）。例えば、データ編集・分割・表示処理プログラム１１００は、分割データ管理テーブル１２０及びマスタデータ管理テーブル１４０を参照し、そこから、分割データＩＤ１４０１、分割キー１４０２、更新履歴１４０３、マスタデータの更新の有無１４０４、サブジョブＩＤ１２０３、実行サーバＩＤ１２０４、状態１２０５を抽出し、それらを表形式（図１３Ａ参照）で表示する。
【０１０３】
そして、ジョブスケジュール処理プログラム１０００は、マスタデータ更新の要求があったか否か判断する（ステップＳ１２０２）。要求がなければ、処理は終了し、要求があれば処理はステップＳ１２０３に移行する。なお、マスタデータ更新の要求の有無は、例えば、マスタデータ表示画面（図１３Ａ）に設けられたマスタデータ編集ボタン１５０１が押下されたか否かで判断される。マスタデータ編集ボタン１５０１が押下されると、データ編集・分割・表示処理プログラム１１００は、図１３Ｂに示されるようなマスタデータ編集画面が表示装置の画面上に表示する。
【０１０４】
ステップＳ１２０３では、データ編集・分割・表示処理プログラム１１００は、ユーザ（管理者）のマスタデータの更新入力に従って、マスタデータを変更（更新）する。マスタデータの更新は、図１３Ｂに示されるようなマスタデータ編集画面上で行われる。
【０１０５】
そして、ジョブスケジュール処理プログラム１０００は、ステップＳ１２０３における更新入力に従って、マスタデータ管理テーブル１４０を更新する（ステップＳ１２０４）。つまり、ジョブスケジュール処理プログラム１０００は、更新履歴等から、更新されたマスタデータに対応する分割キーを特定し、マスタデータ管理テーブル１４０のマスタデータ更新の有無１４０５を「有」に設定し、更新履歴１４０４に更新日時を入力する。
【０１０６】
なお、マスタデータ表示・編集処理は、上述のように、図９におけるジョブスケジュール処理の流れの中で実行されるようにしても良いし、ユーザの指示により、現時点でのマスタデータ表示画面（図１３Ａ）を表示するようにしても良い。そして、ユーザが希望するときに、マスタデータの編集処理ができるようにしても良い。
【０１０７】
＜まとめ＞
本発明の実施形態では、グリッドバッチの再実行可否をマスタデータの更新有無に基づいて判断する。これを実現するために、マスタデータの管理情報として、データの更新情報を管理する。そして、更新済みであれば再実行対象とし、未更新であれば再実行対象としない。より詳細には、データ分割に対するジョブ実行時に、ジョブネット再実行要求（マスタデータに更新があった場合のジョブネット実行要求）があれば、マスタデータ管理情報から更新有無を判断し、更新された分割キーに対応するマスタデータのみをデータ分割し、該当する分割データを処理していたサブジョブは異常状態に更新して再実行対象とする。このようにすることにより、サブジョブ状態が正常／異常に関わらず、マスタデータを部分的に更新して再実行したい場合に、特定サブジョブのみを再実行できるようになる。
【０１０８】
また、ジョブ実行後に分割データ管理情報とマスタデータ管理情報を表示し、さらにマスタデータ編集画面を起動し、マスタデータを更新することができる。そして、この更新履歴から、更新箇所に対応する分割キーを特定し、マスタデータ管理情報の更新有無を「有」に更新する。この場合にも、更新があった部分を含む分割データに対してのみジョブ（サブジョブ）を実行する。このようにすることにより、ユーザが自発的に行ったマスタデータの更新処理に対応して、即座にサブジョブを実行することができ、規定終了予定時間を超過するリスクを抑えることが可能となる。
【０１０９】
なお、本発明は、実施形態そのままに限定されるものではなく、実施段階では、その要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【０１１０】
また、実施形態で示された各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現しても良い。また、上記各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現しても良い。各機能等を実現するプログラム、テーブル、ファイル等の情報は、メモリやハードディスク、ＳＳＤ（Solid State Drive）等の記録或いは記憶装置、またはＩＣカード、ＳＤカード、ＤＶＤ等の記録或いは記憶媒体に格納することができる。
【０１１１】
さらに、上述の実施形態において、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。全ての構成が相互に接続されていても良い。
【符号の説明】
【０１１２】
１・・・計算機システム、２・・・ネットワーク、１０・・・スケジュールサーバ（管理計算機）、２０・・・実行サーバ（ジョブ実行計算機）、１５・・・スケジュールサーバ側の記憶装置、２５・・・実行サーバ側の記憶装置、１００・・・ジョブネット情報管理テーブル、１１０・・・ジョブ情報管理テーブル、１２０・・・分割データ管理テーブル、１３０・・・実行サーバ管理テーブル、１４０・・・マスタデータ管理テーブル、１０００・・・ジョブスケジュール処理プログラム、２０００・・・サブジョブ実行制御処理プログラム
【図１】
2012063339.tif 000003
【図２】
2012063339.tif 000004
【図３】
2012063339.tif 000005
【図４】
2012063339.tif 000006
【図５】
2012063339.tif 000007
【図６】
2012063339.tif 000008
【図７】
2012063339.tif 000009
【図８】
2012063339.tif 000010
【図９】
2012063339.tif 000011
【図１０】
2012063339.tif 000012
【図１１】
2012063339.tif 000013
【図１２】
2012063339.tif 000014
【図１３】
2012063339.tif 000015
【国際調査報告】
2012063339.tif 000016
2012063339.tif 000017
2012063339.tif 000018
2012063339.tif 000019