(57)【要約】  ジョブ管理装置（２００）において、受け付け部（２０１）は、複数のジョブステップの実行順序及び実行条件を定義する定義情報（１１１）の入力を受け付ける。制御部（２０３）は、定義情報（１１１）に従って実行部（２０２）により実行されたジョブに含まれるジョブステップに異常終了が発生した場合、異常終了が発生したジョブステップである再開ステップと、定義情報（１１１）で定義された実行順序が再開ステップよりも後であり、定義情報（１１１）で定義された実行条件を再開ステップの異常終了の発生時に満たすジョブステップとを含むリトライジョブ（２２１）を実行部（２０２）に実行させる。制御部（２０３）は、少なくともリトライジョブ（２２１）の実行が完了するまでは、定義情報（１１１）で定義された実行順序が再開ステップ以降のジョブステップの実行を実行部（２０２）に停止させる。
2017046939.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサを用いてジョブを実行する実行部と、
前記実行部により実行されるジョブの構成要素となる複数のジョブステップの実行順序及び実行条件を定義する定義情報の入力を受け付ける受け付け部と、
前記定義情報に従って前記実行部により実行されたジョブに含まれるジョブステップに異常終了が発生した場合、前記定義情報で定義された実行順序が、異常終了が発生したジョブステップである再開ステップ以降のジョブステップの実行を前記実行部に停止させる制御部と
を備えるジョブ管理装置。
【請求項２】
前記制御部は、前記定義情報に従って前記実行部により実行されたジョブに含まれるジョブステップに異常終了が発生した場合、前記再開ステップと、前記定義情報で定義された実行順序が前記再開ステップよりも後であり、前記定義情報で定義された実行条件を前記再開ステップの異常終了の発生時に満たすジョブステップとを含むジョブをリトライジョブとして生成し、前記リトライジョブを前記実行部に実行させる請求項１に記載のジョブ管理装置。
【請求項３】
前記制御部は、少なくとも前記リトライジョブの実行が完了するまでは、前記定義情報で定義された実行順序が前記再開ステップ以降のジョブステップの実行を前記実行部に停止させる請求項２に記載のジョブ管理装置。
【請求項４】
前記定義情報は、さらに、前記複数のジョブステップの種別を定義する情報を含み、
前記制御部は、前記定義情報で定義された種別によって、前記リトライジョブに含まれるジョブステップの実行順序を決定する請求項２又は３に記載のジョブ管理装置。
【請求項５】
前記定義情報で定義される１つの種別として、前記制御部に対し、前記リトライジョブに含まれるジョブステップのうち、前記定義情報で定義された種別が当該１つの種別であるジョブステップの実行順序を、前記定義情報で定義された種別が他の種別であるジョブステップよりも後にさせる種別がある請求項４に記載のジョブ管理装置。
【請求項６】
前記定義情報は、さらに、前記複数のジョブステップの種別を定義する情報を含み、
前記制御部は、前記定義情報で定義された種別によって、前記リトライジョブに含めるジョブステップを決定する請求項２又は３に記載のジョブ管理装置。
【請求項７】
前記定義情報で定義される１つの種別として、前記制御部に対し、前記定義情報で定義された実行順序が前記再開ステップよりも前であり、前記定義情報で定義された種別が当該１つの種別であるジョブステップを前記リトライジョブに含めさせる種別がある請求項６に記載のジョブ管理装置。
【請求項８】
前記定義情報で定義される１つの種別として、前記制御部に対し、前記複数のジョブステップの中に、前記定義情報で定義された実行順序が前記再開ステップ以前にあり、前記定義情報で定義された種別が当該１つの種別であるジョブステップがない場合、前記定義情報で定義された実行順序が前記再開ステップよりも後であり、前記定義情報で定義された種別が当該１つの種別であるジョブステップを前記リトライジョブから除かせる種別がある請求項６に記載のジョブ管理装置。
【請求項９】
情報を記憶するための記憶部
をさらに備え、
前記定義情報は、前記複数のジョブステップの実行条件として、前記複数のジョブステップの実行間隔を定義する情報を含み、
前記実行部は、ジョブステップごとに、前回の実行時刻を示す実行情報を前記記憶部に書き込み、前記定義情報に従ってジョブを実行する場合、前記定義情報で定義された実行順序に沿って、前記実行情報で示された前回の実行時刻から前記定義情報で定義された実行間隔以上の時間が経過したジョブステップを実行し、実行したジョブステップについて、前記実行情報で示された前回の実行時刻を実行中のジョブの起動時刻に書き換え、前記リトライジョブを実行する場合、前記制御部により決定される実行順序に沿って、前記リトライジョブに含まれるジョブステップを実行し、前記複数のジョブステップについて、前記実行情報で示された前回の実行時刻を共通の時刻に変更する請求項２から８のいずれか１項に記載のジョブ管理装置。
【請求項１０】
情報を記憶するための記憶部
をさらに備え、
前記実行部は、ジョブステップごとに、異常終了の発生の有無を示す実行情報を前記記憶部に書き込み、前記定義情報に従ってジョブを実行する場合、異常終了が発生したジョブステップについて、前記実行情報を、異常終了が発生したことを示す情報に更新し、前記リトライジョブを実行する場合、前記再開ステップについて、異常終了が発生しなければ、前記実行情報を、異常終了が発生していないことを示す情報に更新し、
前記制御部は、前記実行情報で異常終了が発生したことが示されたジョブステップが複数ある場合、前記実行情報で異常終了が発生したことが示されたジョブステップがなくなるまで、前記定義情報で定義された実行順序が後のジョブステップを先に前記再開ステップに決定して前記リトライジョブを生成し、前記リトライジョブを前記実行部に実行させる処理を繰り返す請求項２から８のいずれか１項に記載のジョブ管理装置。
【請求項１１】
前記定義情報は、さらに、前記複数のジョブステップのうち、他のジョブステップに異常終了が発生しても実行されるべきジョブステップを優先ステップとして定義する情報を含み、
前記制御部は、前記定義情報に従って前記実行部により実行されたジョブに含まれるジョブステップに異常終了が発生した場合、前記定義情報で定義された実行順序が前記再開ステップよりも前であり、前記定義情報で前記優先ステップとして定義されていないジョブステップの実行を前記実行部に停止させる請求項１から１０のいずれか１項に記載のジョブ管理装置。
【請求項１２】
コンピュータが、プロセッサを用いてジョブを実行し、
前記コンピュータが、実行するジョブの構成要素となる複数のジョブステップの実行順序及び実行条件を定義する定義情報の入力を受け付け、
前記コンピュータが、前記定義情報に従って実行したジョブに含まれるジョブステップに異常終了が発生した場合、前記定義情報で定義された実行順序が、異常終了が発生したジョブステップである再開ステップ以降のジョブステップの実行を停止するジョブ管理方法。
【請求項１３】
コンピュータに、
プロセッサを用いてジョブを実行する処理と、
実行されるジョブの構成要素となる複数のジョブステップの実行順序及び実行条件を定義する定義情報の入力を受け付ける処理と、
前記定義情報に従って実行されたジョブに含まれるジョブステップに異常終了が発生した場合、前記定義情報で定義された実行順序が、異常終了が発生したジョブステップである再開ステップ以降のジョブステップの実行を停止する処理と
を実行させるジョブ管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ジョブ管理装置及びジョブ管理方法及びジョブ管理プログラムに関するものである。
【背景技術】
【０００２】
ユーザが事前に定義した順序に従って複数の処理を実行するバッチ処理を周期的又は不定期に繰り返し実行するためのジョブ管理技術がある。バッチ処理は、「ジョブ」と呼ばれる。ジョブを構成する複数の処理の１つ１つは、「ジョブステップ」と呼ばれる。【０００３】
あるジョブ管理技術（例えば、特許文献１参照）では、毎回実行する必要がないジョブステップをスキップするために、ユーザが、ジョブ内の各ジョブステップについて、ジョブステップ別の実行間隔を設定できる。即ち、ジョブを実行する際、前回の実行時刻からユーザが指定した間隔以上の時間が経過しているジョブステップを実行するようにできる。【０００４】
データをデータベースのテーブルに投入するジョブステップと、そのテーブルのバックアップを取るジョブステップとからなるジョブがあるとする。このジョブにおいて、バックアップを毎回取ると、１回当たりのジョブの実行時間が長くなる。しかし、上記の技術を使えば、バックアップを１日に１回だけ実行するようにできる。【０００５】
実行間隔を設定可能なジョブ管理技術の目的として、以下の２種類がある。【０００６】
第１の目的は、ユーザが指定した２つのジョブステップについて、依存関係を成立させつつ、あるジョブステップが異常終了した場合には、任意のタイミングでリトライ実行できるように当該ジョブステップが異常終了した状態を保つことである。依存関係としては、あるジョブで先行する方のジョブステップを実行する場合には、必ず後続する方のジョブステップを実行するという第１の依存関係がある。或いは、あるジョブで後続する方のジョブステップを実行する場合には、必ず先行する方のジョブステップが実行済であるという第２の依存関係がある。第１の目的が達成できれば、ジョブ管理技術を適用するシステムの安全性を確保できる。【０００７】
１つの例として、データベースのテーブルからデータを抽出して一時ファイルに上書きするジョブステップと、抽出したデータを別のテーブルへ投入するジョブステップとからなるジョブがあるとする。このジョブにおいて、データ抽出のジョブステップを実行した後に、データ投入のジョブステップをスキップした場合、次に起動したジョブでデータ抽出のジョブステップを実行すると、一時ファイルに残っていた、別のテーブルに未投入のデータが消失するという問題が生じる。或いは、データ投入のジョブステップが異常終了した場合、次に起動したジョブでデータ抽出のジョブステップを実行すると、投入に失敗したデータが消失するという問題が生じる。よって、データ投入のジョブステップがリトライ実行されて正常終了するまでは、データ抽出のジョブステップを実行しないようにして、第１の依存関係を成立させつつ、データ投入のジョブステップが異常終了した状態を保つ必要がある。【０００８】
別の例として、定期的に収集したデータが投入される蓄積用テーブルと、蓄積用テーブルから抽出及び加工したデータが格納される参照用テーブルとの２つのテーブルを有するシステムがあるとする。また、このシステムにおいて、データを蓄積用テーブルへ投入するジョブステップと、蓄積用テーブルのバックアップを行うジョブステップと、蓄積用テーブルからデータを抽出して一時ファイルに上書きするジョブステップと、抽出したデータを参照用テーブルへ投入するジョブステップと、参照用テーブルのバックアップを行うジョブステップとの５つのジョブステップを順に実行するジョブが繰り返し実行されるものとする。このジョブにおいて、参照用テーブルのバックアップを実行する場合には必ず蓄積用テーブルのバックアップが実行済であるという第２の依存関係を成立させることで、蓄積用テーブルのバックアップと参照用テーブルのバックアップとの整合性が保たれる。このため、データ復元時に蓄積用テーブルと参照用テーブルとを並列にリストアすることでリストア時間が短縮される。また、システムの安全性を高めることができる。【０００９】
第１の目的と関連する技術として、特許文献１では、実行間隔の設定のみで、ジョブステップ間の依存関係を表現する方法が開示されている。特許文献２では、実行間隔の設定とは別に、ジョブステップ間の依存関係をユーザに明示的に設定させる方法が開示されている。【００１０】
第２の目的は、あるジョブステップが異常終了した場合に、そのジョブステップよりも前にある一部のジョブステップの繰り返し実行を継続することである。この目的が達成できれば、ジョブ管理技術を適用するシステムの可用性が高まる。【００１１】
第２の目的と関連する技術として、特許文献３では、異常終了したジョブステップを特定し、リトライ実行する方法が開示されている。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】特開平６−５９９１３号公報
【特許文献２】特開２００９−２８２５７７号公報
【特許文献３】特開平８−２２７３６８号公報
【発明の概要】
【発明が解決しようとする課題】
【００１３】
従来の技術では、異常終了したジョブステップに後続するジョブステップと、異常終了したジョブステップに先行するジョブステップとの間に依存関係がある場合に、それら２つのジョブステップの状態に不整合が生じる。一例として、第１のテーブルへのデータ投入、第１のテーブルのバックアップ、第１のテーブルからのデータ抽出、抽出したデータの第２のテーブルへの投入、第２のテーブルのバックアップを順に実行するジョブを繰り返し実行することを仮定する。第１のテーブルのバックアップと第２のテーブルのバックアップとの間に第２の依存関係があるとする。あるジョブにおいて、第１のテーブルのバックアップを実行した後に第１のテーブルからのデータ抽出が異常終了したとする。その後、第１のテーブルへのデータ投入の繰り返し実行を継続したとする。従来の方法（例えば、特許文献３参照）により自動でリトライ実行すると、第１のテーブルからのデータ抽出からジョブが再開され、抽出したデータの第２のテーブルへの投入、第２のテーブルのバックアップが実行される。しかし、リトライ実行時に取られる第２のテーブルのバックアップは、第１のテーブルからのデータ抽出が異常終了した後に第１のテーブルへ投入されたデータを含む。そのため、第２のテーブルのバックアップが、第１のテーブルからのデータ抽出が異常終了した際に取られた第１のテーブルのバックアップと整合しないという問題が生じる。このように、従来の技術では、上記の第１及び第２の目的を両立させることができない。【００１４】
本発明は、異常終了したジョブステップに後続するジョブステップと、異常終了したジョブステップに先行するジョブステップとの間に依存関係がある場合に、それら２つのジョブステップの状態に不整合が生じない範囲でジョブの繰り返し実行を継続することを目的とする。即ち、本発明は、上記の第１及び第２の目的を両立させることを目的とする。なお、第１の目的は、第２の目的よりも優先される。
【課題を解決するための手段】
【００１５】
本発明の一態様に係るジョブ管理装置は、
プロセッサを用いてジョブを実行する実行部と、
前記実行部により実行されるジョブの構成要素となる複数のジョブステップの実行順序及び実行条件を定義する定義情報の入力を受け付ける受け付け部と、
前記定義情報に従って前記実行部により実行されたジョブに含まれるジョブステップに異常終了が発生した場合、前記定義情報で定義された実行順序が、異常終了が発生したジョブステップである再開ステップ以降のジョブステップの実行を前記実行部に停止させる制御部とを備える。
【発明の効果】
【００１６】
本発明では、ある２つのジョブステップが依存関係にある場合にも、後続する方のジョブステップが異常終了した場合には、次回以降のジョブでは、定義情報に従い、それら２つのジョブステップの状態に不整合が生じない範囲でジョブの繰り返し実行を継続することができる。このため、本発明に係る装置等が適用されるシステムの安全性を確保しつつ、可用性を高めることができる。
【図面の簡単な説明】
【００１７】
【図１】実施の形態１に係るデータ管理システムの構成を示すブロック図。
【図２】実施の形態１に係るジョブ管理装置の構成を示すブロック図。
【図３】実施の形態１に係るジョブ管理装置が保持する実行情報の内容を示す図。
【図４】実施の形態１に係るジョブ管理装置に入力される定義情報の例を示す図。
【図５】実施の形態１に係るジョブ管理装置に入力される定義情報の例を示す図。
【図６】実施の形態１に係るジョブ管理装置に入力される定義情報の例を示す図。
【図７】実施の形態１に係るジョブ管理装置が生成するリトライジョブの例を示す図。
【図８】実施の形態１に係るジョブ管理装置の通常動作を示すフローチャート。
【図９】実施の形態１に係るジョブ管理装置のリトライ動作を示すフローチャート。
【図１０】図９のステップＳ２４の詳細を示すフローチャート。
【図１１】図１０のステップＳ３５の詳細を示すフローチャート。
【図１２】図１１のステップＳ４２の詳細を示すフローチャート。
【図１３】図１１のステップＳ４３の詳細を示すフローチャート。
【図１４】実施の形態１に係るジョブ管理装置がジョブを実行した結果の例を示す表。
【図１５】実施の形態１に係るジョブ管理装置がジョブを実行した結果の例を示す表。
【図１６】実施の形態１に係るジョブ管理装置が生成するリトライジョブの例を示す図。
【図１７】実施の形態１の変形例に係るジョブ管理装置の構成を示すブロック図。
【発明を実施するための形態】
【００１８】
以下、本発明の実施の形態について、図を用いて説明する。なお、各図中、同一又は相当する部分には、同一符号を付している。実施の形態の説明において、同一又は相当する部分については、その説明を適宜省略又は簡略化する。
【００１９】
実施の形態１．
本実施の形態に係るシステム及び装置の構成、本実施の形態に係る装置の動作、本実施の形態の効果を順番に説明する。
【００２０】
＊＊＊構成の説明＊＊＊
図１を参照して、本実施の形態に係るシステムであるデータ管理システム１００の構成を説明する。
【００２１】
データ管理システム１００は、ジョブ管理装置２００を用いて、データベースへのデータの投入のコマンド、及び、データのバックアップのコマンドを実行する。データは、任意のデータでよいが、本実施の形態では機器データである。
【００２２】
データ管理システム１００は、ジョブ管理装置２００に加えて、データ収集装置１０１と、ＤＢＭＳ１０３（ＤａｔａＢａｓｅ・Ｍａｎａｇｅｍｅｎｔ・Ｓｙｓｔｅｍ）と、プログラム起動装置１０７とを備える。
【００２３】
データ収集装置１０１は、データ管理システム１００の外部の機器からデータを収集する。データ収集装置１０１は、収集したデータを含むデータファイル１０２をデータ管理システム１００の内部に出力する。なお、データの収集と、収集したデータの出力は、データ収集装置１０１ではなく、ジョブ管理装置２００が行ってもよい。
【００２４】
ＤＢＭＳ１０３が実行する種々のデータ管理用のコマンドは、種々の実行条件とともに定義情報１１１で定義されている。コマンド及び実行条件は、任意の形式で定義されてよいが、本実施の形態ではジョブ定義文という形式、即ち、テキスト形式で記述されている。
【００２５】
プログラム起動装置１０７は、ジョブ管理装置２００を周期的に起動する。なお、ジョブ管理装置２００をいつ起動するかというスケジューリングは、プログラム起動装置１０７ではなく、ジョブ管理装置２００が行ってもよい。また、ジョブ管理装置２００は、周期的に起動される必要はなく、不定期に起動されてもよい。
【００２６】
ジョブ管理装置２００は、プログラム起動装置１０７により起動されると、定義情報１１１を読み込む。ジョブ管理装置２００は、定義情報１１１に従って、ＤＢＭＳ１０３のデータ管理用のコマンドを実行する。これにより、ジョブ管理装置２００は、データファイル１０２のデータを蓄積用テーブル１０４、一時参照用テーブル１０５、参照用テーブル１０６に出力する。
【００２７】
図２を参照して、本実施の形態に係る装置であるジョブ管理装置２００の構成を説明する。
【００２８】
ジョブ管理装置２００は、受け付け部２０１と、実行部２０２と、制御部２０３と、情報を記憶するための記憶部２０４とを備える。
【００２９】
本実施の形態において、ジョブ管理装置２００は、コンピュータである。ジョブ管理装置２００の機能は、ソフトウェアで実現される。ジョブ管理装置２００は、プロセッサ９０１、記憶装置９０２、入力装置９０３、通信装置９０４といったハードウェアを備える。プロセッサ９０１は、信号線を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
【００３０】
プロセッサ９０１は、プロセッシングを行うＩＣ（Ｉｎｔｅｇｒａｔｅｄ・Ｃｉｒｃｕｉｔ）である。プロセッサ９０１は、具体的には、ＣＰＵ（Ｃｅｎｔｒａｌ・Ｐｒｏｃｅｓｓｉｎｇ・Ｕｎｉｔ）である。
【００３１】
記憶装置９０２は、補助記憶装置及びメモリを含む。補助記憶装置は、具体的には、ＲＯＭ（Ｒｅａｄ・Ｏｎｌｙ・Ｍｅｍｏｒｙ）、フラッシュメモリ、又は、ＨＤＤ（Ｈａｒｄ・Ｄｉｓｋ・Ｄｒｉｖｅ）である。メモリは、具体的には、ＲＡＭ（Ｒａｎｄｏｍ・Ａｃｃｅｓｓ・Ｍｅｍｏｒｙ）である。記憶部２０４は、記憶装置９０２により実現される。記憶部２０４は、特にメモリにより実現される。
【００３２】
入力装置９０３は、具体的には、マウス、キーボード、又は、タッチパネルである。
【００３３】
ジョブ管理装置２００は、ハードウェアとして、ディスプレイを備えていてもよい。
【００３４】
ディスプレイは、具体的には、ＬＣＤ（Ｌｉｑｕｉｄ・Ｃｒｙｓｔａｌ・Ｄｉｓｐｌａｙ）である。
【００３５】
通信装置９０４は、データを受信するレシーバ及びデータを送信するトランスミッタを含む。通信装置９０４は、具体的には、通信チップ又はＮＩＣ（Ｎｅｔｗｏｒｋ・Ｉｎｔｅｒｆａｃｅ・Ｃａｒｄ）である。
【００３６】
補助記憶装置には、受け付け部２０１、実行部２０２、制御部２０３といった「部」の機能を実現するプログラムが記憶されている。このプログラムは、メモリにロードされ、プロセッサ９０１に読み込まれ、プロセッサ９０１によって実行される。補助記憶装置には、ＯＳ（Ｏｐｅｒａｔｉｎｇ・Ｓｙｓｔｅｍ）も記憶されている。ＯＳの少なくとも一部がメモリにロードされ、プロセッサ９０１はＯＳを実行しながら、「部」の機能を実現するプログラムを実行する。
【００３７】
ジョブ管理装置２００は、１つのプロセッサ９０１のみを備えていてもよいし、複数のプロセッサ９０１を備えていてもよい。複数のプロセッサ９０１が「部」の機能を実現するプログラムを連携して実行してもよい。
【００３８】
「部」の処理の結果を示す情報、データ、信号値、及び、変数値は、補助記憶装置、メモリ、又は、プロセッサ９０１内のレジスタ又はキャッシュメモリに記憶される。
【００３９】
「部」の機能を実現するプログラムは、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ（登録商標）ディスク、ＤＶＤ（Ｄｉｇｉｔａｌ・Ｖｅｒｓａｔｉｌｅ・Ｄｉｓｃ）等の可搬記録媒体に記憶されてもよい。
【００４０】
受け付け部２０１は、定義情報１１１の入力を受け付ける。具体的には、受け付け部２０１は、通信装置９０４を用いて定義情報１１１をジョブ管理装置２００の外部から受信し、定義情報１１１を記憶装置９０２に書き込む。なお、受け付け部２０１は、入力装置９０３を用いて定義情報１１１の入力を受け付け、定義情報１１１を記憶装置９０２に書き込んでもよい。
【００４１】
定義情報１１１は、実行部２０２により実行されるジョブの構成要素となる複数のジョブステップの実行順序及び実行条件を定義する情報を含む。各ジョブステップの実行条件としては、任意の条件が定義されてよいが、本実施の形態では各ジョブステップの実行間隔が定義される。
【００４２】
本実施の形態において、定義情報１１１は、さらに、上記複数のジョブステップのうち、他のジョブステップに異常終了が発生しても実行されるべきジョブステップを優先ステップとして定義する情報を異常状態動作定義１２１として含む。
【００４３】
本実施の形態において、定義情報１１１は、さらに、上記複数のジョブステップの種別を定義する情報をリトライ動作定義１２２として含む。
【００４４】
実行部２０２は、プロセッサを用いてジョブを実行する。このプロセッサは、ジョブ管理装置２００に搭載されるプロセッサ９０１でもよいが、本実施の形態ではＤＢＭＳ１０３に備えられるプロセッサである。即ち、実行部２０２は、ジョブを直接実行してもよいが、本実施の形態ではＤＢＭＳ１０３によるジョブの実行を管理することでジョブを間接的に実行する。具体的には、実行部２０２は、各ジョブステップを外部プログラムとして起動し、外部プログラムから実行結果を受け取る。そのための方法としては、任意の方法を採用することができるが、本実施の形態ではＯＳの提供するＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ・Ｐｒｏｇｒａｍｍｉｎｇ・Ｉｎｔｅｒｆａｃｅ）を利用する方法が採用される。外部プログラムを起動するためのＡＰＩとしては、ＯＳがＷｉｎｄｏｗｓ（登録商標）であれば、ＣｒｅａｔｅＰｒｏｃｅｓｓ、ＯＳがＵｎｉｘ（登録商標）であれば、ｅｘｅｃｌｐ等を利用することができる。外部プログラムから実行結果を受け取るためのＡＰＩとしては、ＯＳがＷｉｎｄｏｗｓ（登録商標）であれば、ＧｅｔＥｘｉｔＣｏｄｅＰｒｏｃｅｓｓ、ＯＳがＵｎｉｘ（登録商標）であれば、ｗａｉｔｐｉｄ等を利用することができる。
【００４５】
制御部２０３は、後述する異常状態動作制御部２３１及びリトライ動作制御部２３２を有する。
【００４６】
制御部２０３は、定義情報１１１に従って実行部２０２により実行されたジョブに含まれるジョブステップに異常終了が発生した場合、リトライジョブ２２１を生成し、リトライジョブ２２１を実行部２０２に実行させる。具体的には、実行部２０２は、定義情報１１１に従ってジョブを実行している際に、そのジョブに含まれるジョブステップに異常終了が発生した場合、プロセッサ９０１に例外を通知する。この例外の通知によってリトライジョブ２２１の生成処理が起動され、制御部２０３が、プロセッサ９０１を用いてリトライジョブ２２１を生成し、リトライジョブ２２１をメモリに展開する。実行部２０２は、メモリ上のリトライジョブ２２１を実行する。リトライジョブ２２１は、異常終了が発生したジョブステップである再開ステップと、定義情報１１１で定義された実行順序が再開ステップよりも後であり、定義情報１１１で定義された実行条件を再開ステップの異常終了の発生時に満たすジョブステップとを含むジョブである。
【００４７】
制御部２０３は、少なくともリトライジョブ２２１の実行が完了するまでは、定義情報１１１で定義された実行順序が再開ステップ以降のジョブステップの実行を実行部２０２に停止させる。制御部２０３は、本実施の形態では、少なくともリトライジョブ２２１の実行が完了するまでは、定義情報１１１で定義された実行順序が再開ステップよりも前であり、定義情報１１１で優先ステップとして定義されていないジョブステップの実行も実行部２０２に停止させる。具体的には、実行部２０２は、定義情報１１１に従ってジョブを実行している際に、そのジョブに含まれるジョブステップごとに、ジョブステップの実行を停止すべきかどうかを判断するための情報を制御部２０３から取得する。この情報は、制御部２０３が、後述する実行情報２１２に基づき、プロセッサ９０１を用いて生成する情報である。制御部２０３は、記憶部２０４に記憶された実行情報２１２を基に生成した情報を実行部２０２に通知することで、所望のジョブステップの実行を実行部２０２に停止させる。
【００４８】
したがって、本実施の形態では、上記複数のジョブステップのいずれかに異常終了が発生した場合、異常終了が発生したジョブステップよりも実行順序が前の優先ステップ以外のジョブステップが実行周期に達しても、そのジョブステップの実行はスキップされる。このように実行周期に達したジョブステップの実行がスキップされる状態は、リトライジョブ２２１に含まれるジョブステップに異常終了が発生せずにリトライジョブ２２１の実行が完了した場合に解除される。
【００４９】
本実施の形態において、制御部２０３は、定義情報１１１で定義された種別によって、リトライジョブ２２１に含めるジョブステップを決定する。また、制御部２０３は、定義情報１１１で定義された種別によって、リトライジョブ２２１に含まれるジョブステップの実行順序を決定する。リトライジョブ２２１に含まれるジョブステップの実行順序は、リトライジョブ２２１におけるジョブステップの並び順によって表される。リトライジョブ２２１に含めるジョブステップの具体的な決定方法、及び、ジョブステップの実行順序の具体的な決定方法については後述する。
【００５０】
以下では、実行部２０２が定義情報１１１に従ってジョブを実行する動作をジョブ管理装置２００の「通常動作」、制御部２０３がリトライジョブ２２１を生成し、実行部２０２がリトライジョブ２２１を実行する動作をジョブ管理装置２００の「リトライ動作」と呼ぶ。
【００５１】
リトライ動作は、自動的に開始されてもよいが、本実施の形態では、ユーザから、ジョブを指定してジョブのリトライ実行を指示するリトライ実行命令１３１が入力されたときに開始される。通常動作は、リトライ動作中は停止されている。ただし、通常動作の周期的な実行は、リトライ動作が開始されるまでは継続される。
【００５２】
本実施の形態において、実行部２０２は、ジョブステップごとに、実行情報２１２を記憶部２０４に書き込む。記憶部２０４には、図３に示すように、ジョブステップの個数分の実行情報２１２がジョブ実行情報２１１として記憶される。各ジョブステップの実行情報２１２は、ジョブステップ識別子と、前回実行時のジョブ起動時刻と、異常終了フラグと、異常終了時のジョブ起動時刻とを含む。ジョブステップ識別子は、ジョブステップを識別する情報である。前回実行時のジョブ起動時刻は、ジョブステップの前回の実行時刻を示す情報である。異常終了フラグは、ジョブステップの異常終了の発生の有無を示す情報である。異常終了時のジョブ起動時刻は、ジョブステップの異常終了の発生時刻を示す情報である。
【００５３】
通常動作中、実行部２０２は、定義情報１１１で定義された実行順序に沿って、実行情報２１２で示された前回の実行時刻から定義情報１１１で定義された実行間隔以上の時間が経過したジョブステップを実行する。即ち、実行部２０２は、実行順序に沿って、実行周期に達したジョブステップを実行する。実行部２０２は、実行したジョブステップについて、実行情報２１２を更新する。具体的には、実行部２０２は、実行したジョブステップの実行情報２１２で示された前回の実行時刻を、実行中のジョブの起動時刻に書き換える。
【００５４】
一方、リトライ動作中、実行部２０２は、制御部２０３により決定される実行順序に沿って、リトライジョブ２２１に含まれるジョブステップを実行する。具体的には、実行部２０２は、リトライジョブ２２１におけるジョブステップの並び順に沿って、リトライジョブ２２１に含まれるジョブステップを実行する。リトライ動作の終了時に、実行部２０２は、上記複数のジョブステップについて、実行情報２１２で示された前回の実行時刻を共通の時刻に変更する。即ち、実行部２０２は、全てのジョブステップの実行情報２１２で示される前回の実行時刻を、同じ時刻に書き換える。
【００５５】
通常動作中、いずれかのジョブステップに異常終了が発生すると、実行部２０２は、異常終了が発生したジョブステップについて、実行情報２１２を更新する。具体的には、実行部２０２は、異常終了が発生したジョブステップの実行情報２１２に含まれる異常終了フラグを「オン」に変更する。即ち、実行部２０２は、再開ステップの実行情報２１２を、異常終了が発生したことを示す情報に更新する。
【００５６】
リトライ動作中、実行部２０２は、再開ステップについて、異常終了が発生しなければ、実行情報２１２を更新する。具体的には、実行部２０２は、再開ステップの実行情報２１２に含まれる異常終了フラグを「オフ」に変更する。即ち、実行部２０２は、再開ステップの実行情報２１２を、異常終了が発生していないことを示す情報に更新する。
【００５７】
リトライ動作中、制御部２０３は、実行情報２１２で異常終了が発生したことが示されたジョブステップが複数ある場合、実行情報２１２で異常終了が発生したことが示されたジョブステップがなくなるまで、リトライジョブ２２１を生成し、リトライジョブ２２１を実行部２０２に実行させる処理を繰り返す。制御部２０３は、リトライジョブ２２１を生成する際に、定義情報１１１で定義された実行順序が後のジョブステップを先に再開ステップに決定する。即ち、制御部２０３は、実行情報２１２で異常終了が発生したことが示されたジョブステップのうち、定義情報１１１で定義された実行順序が最後のジョブステップを再開ステップとしてリトライジョブ２２１に含める。
【００５８】
ここで、図４及び図５及び図６に定義情報１１１の例を示す。
【００５９】
定義情報１１１には、ジョブステップの実行順序を判定するための情報が含まれる。
【００６０】
また、定義情報１１１には、各ジョブステップについて、ジョブステップ識別子と、実行するコマンドの内容が含まれる。
【００６１】
本実施の形態では、異常状態動作定義１２１として、あるジョブステップが異常終了した後に各ジョブステップを実行すべきかどうかを判定するための優先実行フラグが含まれる。優先実行フラグは、各ジョブステップが優先ステップであるかどうかを示す情報に相当する。
【００６２】
本実施の形態では、リトライ動作定義１２２として、ジョブステップを分類するためのジョブステップカテゴリと、ジョブステップカテゴリごとのリトライ動作を定義するためのリトライ種別とが含まれる。リトライ種別は、前述したジョブステップの種別に相当する。ジョブステップカテゴリとしては、「ｂａｃｋｕｐ」と「ｐａｒｔ・ｏｆ・ｔｒａｎｓａｃｔｉｏｎ」とを指定可能である。ジョブステップカテゴリ「ｂａｃｋｕｐ」については、リトライ種別として、「ａｆｔｅｒ・ｏｔｈｅｒ・ｃａｔｅｇｏｒｙ」と「ｎｅｇａｔｉｖｅ」とを指定可能である。ジョブステップカテゴリ「ｐａｒｔ・ｏｆ・ｔｒａｎｓａｃｔｉｏｎ」については、リトライ種別として「ｎｅｇａｔｉｖｅ」を指定可能である。ジョブステップカテゴリとリトライ種別との組み合わせごとに、リトライ動作制御部２３２によるリトライジョブ２２１の生成手順が定められている。ただし、リトライ種別としてどのようなものが指定可能であるか、リトライ種別ごとにどのようにリトライジョブ２２１を生成及び変更するかは、適宜決定することができる。
【００６３】
図４から図６の例において、定義情報１１１に含まれるジョブ定義文は、複数のｊｏｂｓｔｅｐセクションと、複数のｃａｔｅｇｏｒｙセクションとからなる。ｊｏｂｓｔｅｐセクションには、実行するジョブステップの情報が記述される。１つのｊｏｂｓｔｅｐセクションが１つのジョブステップに対応する。ｊｏｂｓｔｅｐセクションの記載順序が、ジョブステップの実行順序となる。
【００６４】
ｊｏｂｓｔｅｐセクションは、「キー」＝「値」という形式の行からなる。キーには、ｊｏｂｓｔｅｐｉｄキーと、ｃｏｍｍａｎｄキーと、ｉｎｔｅｒｖａｌキーと、ｐｒｉｏｒｉｔｙキーと、ｃａｔｅｇｏｒｙキーとがある。ｊｏｂｓｔｅｐｉｄキーは、ジョブステップ識別子を定義するためのキーである。ｃｏｍｍａｎｄキーは、ジョブステップ識別子に対応するジョブステップで実行するコマンドの内容を定義するためのキーである。ｉｎｔｅｒｖａｌキーは、当該ジョブステップの実行間隔を定義するためのキーである。ｐｒｉｏｒｉｔｙキーは、当該ジョブステップを、他の１つのジョブステップが異常終了した後に実行すべきかどうかを判定するためのキーである。ｃａｔｅｇｏｒｙキーは、当該ジョブステップのジョブステップカテゴリを指定するためのキーである。
【００６５】
ｃｏｍｍａｎｄキーは、任意の形式でコマンドを指定するものであってよいが、本実施の形態では、ＯＳに備わったコマンドラインインタプリタが受け付け可能なコマンドの名称を値として持つことでコマンドを指定するものとなっている。実行部２０２は、ｃｏｍｍａｎｄキーで指定されたコマンドを、コマンドラインインタプリタを介して実行する。コマンドラインインタプリタとしては、ＯＳがＷｉｎｄｏｗｓ（登録商標）であれば、ｃｍｄ．ｅｘｅ、ＯＳがＵｎｉｘ（登録商標）であれば、ｓｈ等を利用することができる。図４から図６の例では、説明を簡単にするため、疑似的なコマンドを記載している。それぞれの擬似的なコマンドの意味については後述する。
【００６６】
ｊｏｂｓｔｅｐセクションが「ｐｒｉｏｒｉｔｙ＝１」という行を含む場合、当該ｊｏｂｓｔｅｐセクションに対応するジョブステップの優先実行フラグが「オン」であることになる。
【００６７】
ｉｎｔｅｒｖａｌキーには、ジョブステップの実行間隔が時間単位付きで指定される。「ｉｎｔｅｒａｖａｌ＝１ｍｉｎｕｔｅ」の場合の実行間隔は１分である。「ｉｎｔｅｒａｖａｌ＝１ｈｏｕｒ」の場合の実行間隔は１時間である。「ｉｎｔｅｒａｖａｌ＝１ｄａｙ」の場合の実行間隔は１日である。
【００６８】
ｃａｔｅｇｏｒｙセクションは、「キー」＝「値」という形式の行からなる。キーには、ｃａｔｅｇｏｒｙキーと、ｒｅｔｒｙ・ｔｙｐｅキーとがある。ｃａｔｅｇｏｒｙキーは、ジョブステップカテゴリを指定するためのキーである。ｒｅｔｒｙ・ｔｙｐｅキーは、当該ジョブステップカテゴリに属するジョブステップのリトライ種別を定義するためのキーである。
【００６９】
図４に示すように、第１のジョブステップは、ジョブステップ識別子が「ｊｏｂｓｔｅｐ０１」であり、データファイル１０２のデータを蓄積用テーブル１０４へ投入するコマンドを５分ごとに実行するように指定されたジョブステップである。
【００７０】
第２のジョブステップは、ジョブステップ識別子が「ｊｏｂｓｔｅｐ０２」であり、蓄積用テーブル１０４の増分バックアップを取るコマンドを１日ごとに実行するように指定されたジョブステップである。
【００７１】
第３のジョブステップは、ジョブステップ識別子が「ｊｏｂｓｔｅｐ０３」であり、蓄積用テーブル１０４から差分を抽出し、差分を中間ファイルに上書きするコマンドを１時間ごとに実行するように指定されたジョブステップである。差分とは、最後に差分を抽出した後に蓄積用テーブル１０４に投入されたデータのことである。
【００７２】
第４のジョブステップは、ジョブステップ識別子が「ｊｏｂｓｔｅｐ０４」であり、第３のジョブステップによって抽出された差分、即ち、中間ファイルのデータを一時参照用テーブル１０５へ投入するコマンドを１時間ごとに実行するように指定されたジョブステップである。
【００７３】
第５のジョブステップは、ジョブステップ識別子が「ｊｏｂｓｔｅｐ０５」であり、一時参照用テーブル１０５の増分バックアップを取るコマンドを１日ごとに実行するように指定されたジョブステップである。
【００７４】
第６のジョブステップは、ジョブステップ識別子が「ｊｏｂｓｔｅｐ０６」であり、一時参照用テーブル１０５から非欠損レコードを抽出し、非欠損レコードを中間ファイルに上書きするコマンドを１日ごとに実行するように指定されたジョブステップである。
【００７５】
図５に示すように、第７のジョブステップは、ジョブステップ識別子が「ｊｏｂｓｔｅｐ０７」であり、第６のジョブステップによって抽出された非欠損レコード、即ち、中間ファイルのデータを参照用テーブル１０６へ投入するコマンドを１日ごとに実行するように指定されたジョブステップである。
【００７６】
第８のジョブステップは、ジョブステップ識別子が「ｊｏｂｓｔｅｐ０８」であり、参照用テーブル１０６の増分バックアップを取るコマンドを１日ごとに実行するように指定されたジョブステップである。
【００７７】
第９のジョブステップは、ジョブステップ識別子が「ｊｏｂｓｔｅｐ０９」であり、一時参照用テーブル１０５から欠損レコードを抽出し、欠損レコードを中間ファイルに上書きするコマンドを２日ごとに実行するように指定されたジョブステップである。
【００７８】
第１０のジョブステップは、ジョブステップ識別子が「ｊｏｂｓｔｅｐ１０」であり、一時参照用テーブル１０５内のデータを全件削除するコマンドを２日ごとに実行するように指定されたジョブステップである。
【００７９】
第１１のジョブステップは、ジョブステップ識別子が「ｊｏｂｓｔｅｐ１１」であり、第９のジョブステップによって抽出された欠損レコード、即ち、中間ファイルのデータを一時参照用テーブル１０５に投入するコマンドを２日ごとに実行するように指定されたジョブステップである。
【００８０】
図６に示すように、第１２のジョブステップは、ジョブステップ識別子が「ｊｏｂｓｔｅｐ１２」であり、一時参照用テーブル１０５の増分バックアップを取るコマンドを２日ごとに実行するように指定されたジョブステップである。
【００８１】
図４から図６の例では、蓄積用テーブル１０４と一時参照用テーブル１０５と参照用テーブル１０６とのバックアップの整合が取れるように、各ジョブステップの実行間隔が設定されている。具体的には、第２のジョブステップの実行間隔と第５のジョブステップの実行間隔と第８のジョブステップの実行間隔とが同一に設定されている。また、第１２のジョブステップの実行間隔が、第２のジョブステップ及び第８のジョブステップの実行間隔の倍数に設定されている。これにより、ある周期に実行されたジョブにおいて、第５のジョブステップで一時参照用テーブル１０５の増分バックアップが取られた後に第１０のジョブステップ及び第１１のジョブステップが実行されて一時参照用テーブル１０５のデータが更新された場合にも、バックアップの整合をとることができる。
【００８２】
図６に示すように、ジョブステップカテゴリ「ｂａｃｋｕｐ」に対しては、リトライ種別「ａｆｔｅｒ・ｏｔｈｅｒ・ｃａｔｅｇｏｒｙ」が指定されている。
【００８３】
このように、本実施の形態では、複数のジョブステップのうち、データをバックアップするジョブステップに対して定義情報１１１で定義される種別が、共通の種別「ａｆｔｅｒ・ｏｔｈｅｒ・ｃａｔｅｇｏｒｙ」になっている。
【００８４】
制御部２０３は、定義情報１１１で定義された実行順序が再開ステップよりも前であり、定義情報１１１で定義された種別が共通の種別「ａｆｔｅｒ・ｏｔｈｅｒ・ｃａｔｅｇｏｒｙ」であるジョブステップをリトライジョブ２２１に含める。
【００８５】
また、制御部２０３は、リトライジョブ２２１に含まれるジョブステップのうち、定義情報１１１で定義された種別が共通の種別「ａｆｔｅｒ・ｏｔｈｅｒ・ｃａｔｅｇｏｒｙ」であるジョブステップの実行順序を、定義情報１１１で定義された種別が他の種別であるジョブステップよりも後にする。なお、定義情報１１１で定義された種別が他の種別であるジョブステップには、定義情報１１１で定義された種別が種別「ｎｅｇａｔｉｖｅ」であるジョブステップだけでなく、定義情報１１１で定義された種別がないジョブステップも該当する。
【００８６】
このように、本実施の形態では、定義情報１１１で定義される１つの種別として、「ａｆｔｅｒ・ｏｔｈｅｒ・ｃａｔｅｇｏｒｙ」がある。この１つの種別「ａｆｔｅｒ・ｏｔｈｅｒ・ｃａｔｅｇｏｒｙ」は、制御部２０３に対し、リトライジョブ２２１に含まれるジョブステップのうち、定義情報１１１で定義された種別が当該１つの種別であるジョブステップの実行順序を、定義情報１１１で定義された種別が他の種別であるジョブステップよりも後にさせる種別である。また、この１つの種別「ａｆｔｅｒ・ｏｔｈｅｒ・ｃａｔｅｇｏｒｙ」は、制御部２０３に対し、定義情報１１１で定義された実行順序が再開ステップよりも前であり、定義情報１１１で定義された種別が当該１つの種別であるジョブステップをリトライジョブ２２１に含めさせる種別である。
【００８７】
図６に示すように、ジョブステップカテゴリ「ｐａｒｔ・ｏｆ・ｔｒａｎｓａｃｔｉｏｎ」に対しては、リトライ種別「ｎｅｇａｔｉｖｅ」が指定されている。
【００８８】
このように、本実施の形態では、複数のジョブステップのうち、トランザクション処理を行うジョブステップに対して定義情報１１１で定義される種別が、共通の種別「ｎｅｇａｔｉｖｅ」になっている。
【００８９】
制御部２０３は、上記複数のジョブステップの中に、定義情報１１１で定義された実行順序が再開ステップ以前にあり、定義情報１１１で定義された種別が共通の種別「ｎｅｇａｔｉｖｅ」であるジョブステップがない場合、定義情報１１１で定義された実行順序が再開ステップよりも後であり、定義情報１１１で定義された種別が共通の種別「ｎｅｇａｔｉｖｅ」であるジョブステップをリトライジョブ２２１から除く。
【００９０】
このように、本実施の形態では、定義情報１１１で定義される１つの種別として、「ｎｅｇａｔｉｖｅ」がある。この１つの種別「ｎｅｇａｔｉｖｅ」は、制御部２０３に対し、上記複数のジョブステップの中に、定義情報１１１で定義された実行順序が再開ステップ以前にあり、定義情報１１１で定義された種別が当該１つの種別であるジョブステップがない場合、定義情報１１１で定義された実行順序が再開ステップよりも後であり、定義情報１１１で定義された種別が当該１つの種別であるジョブステップをリトライジョブ２２１から除かせる種別である。
【００９１】
本実施の形態において、受け付け部２０１は、図４から図６の例のようなジョブ定義文の内容を読み取る。
【００９２】
実行部２０２は、受け付け部２０１が読み込んだジョブ定義文とジョブ実行情報２１１とを基に、ジョブの開始処理及び終了処理を行う。実行部２０２は、さらに、ジョブ内のジョブステップの開始処理及び終了処理を行う。実行部２０２は、ジョブステップの開始処理及び終了処理を行う度に、ジョブ実行情報２１１の内容を変更する。
【００９３】
制御部２０３の異常状態動作制御部２３１は、ジョブ実行情報２１１に基づいて、あるジョブステップが異常終了した後のジョブの実行動作を制御する。制御部２０３のリトライ動作制御部２３２は、入力装置９０３を用いてリトライ実行命令１３１の入力をユーザから受け付ける。リトライ動作制御部２３２は、リトライ実行命令１３１が入力されると、ジョブ実行情報２１１を基に、メモリ上に図７の例のようなリトライジョブ２２１を生成して実行部２０２を起動する。このメモリは、ジョブ管理装置２００に搭載されるメモリであるが、リトライジョブ２２１は、最終的には実行部２０２によってＤＢＭＳ１０３に備えられるメモリに展開され、ＤＢＭＳ１０３によって実行される。即ち、実行部２０２は、本実施の形態ではＤＢＭＳ１０３を利用してリトライジョブ２２１を間接的に実行する。なお、実行部２０２は、リトライジョブ２２１を直接実行してもよい。
【００９４】
リトライジョブ２２１には、実行対象となるジョブステップの実行順序を判定するための情報と、各ジョブステップの識別子が含まれている。図７の例において、リトライジョブ２２１は、ｊｏｂｓｔｅｐｉｄ＝「ジョブステップ識別子」という形式の行からなる。ジョブステップ識別子の記載順序が、リトライジョブ２２１におけるジョブステップの実行順序となる。
【００９５】
＊＊＊動作の説明＊＊＊
図８から図１３を参照して、本実施の形態に係る装置であるジョブ管理装置２００の動作を説明する。ジョブ管理装置２００の動作は、本実施の形態に係るジョブ管理方法に相当する。ジョブ管理装置２００の動作は、本実施の形態に係るジョブ管理プログラムの処理手順に相当する。
【００９６】
図８は、ジョブ管理装置２００の通常動作のフローを示している。
【００９７】
ステップＳ１１において、受け付け部２０１は、ジョブを定義する定義情報１１１を実行部２０２に渡す。具体的には、受け付け部２０１は、通信装置９０４を用いて定義情報１１１を含む１つ又は複数のファイルを受信する。受け付け部２０１は、受信したファイルを記憶装置９０２に保存する。受け付け部２０１は、記憶装置９０２に保存したファイルのアドレス情報を実行部２０２に入力する。実行部２０２は、受け付け部２０１から入力されたアドレス情報によって特定されるファイルを取得する。実行部２０２は、取得したファイルに含まれる定義情報１１１を読み込む。
【００９８】
ステップＳ１２において、実行部２０２は、ステップＳ１１で読み込んだ定義情報１１１を参照し、未実行のジョブステップがあるかどうかを判定する。未実行のジョブステップがある場合には、実行部２０２は、未実行のジョブステップのうち、実行順序が最初のものを読み込む。即ち、実行部２０２は、定義情報１１１で定義された実行順序が次のジョブステップを選択する。そして、フローはステップＳ１３へ進む。未実行のジョブステップがない場合には、フローは終了する。
【００９９】
ステップＳ１３において、実行部２０２は、異常状態動作制御部２３１に対して、異常終了フラグが「オン」となっているジョブステップが存在するかどうかを問い合わせる。異常状態動作制御部２３１は、ジョブ実行情報２１１を参照し、問い合わせ結果を実行部２０２に返す。実行部２０２は、問い合わせ結果を参照する。異常終了フラグが「オン」となっているジョブステップが存在する場合には、フローはステップＳ１４へ進む。異常終了フラグが「オン」となっているジョブステップが存在しない場合には、フローはステップＳ１５へ進む。
【０１００】
ステップＳ１４において、実行部２０２は、ステップＳ１１で読み込んだ定義情報１１１を参照する。実行対象のジョブステップの優先実行フラグが「オン」になっている場合には、フローはステップＳ１５へ進む。実行対象のジョブステップの優先実行フラグが「オフ」になっている場合には、フローは終了する。実行対象のジョブステップとは、ステップＳ１２で選択されたジョブステップのことである。
【０１０１】
ステップＳ１５において、実行部２０２は、ステップＳ１１で読み込んだ定義情報１１１とジョブ実行情報２１１とを参照し、実行対象のジョブステップの実行間隔が、現在実行中のジョブの起動時刻と当該ジョブステップの前回実行時のジョブ起動時刻との差分以上であるか否かを判定する。現在実行中のジョブの起動時刻と当該ジョブステップの前回実行時のジョブ起動時刻との差分が、当該ジョブステップの実行間隔以上である場合には、実行部２０２は、当該ジョブステップが実行周期に達しているものと判定する。そして、フローはステップＳ１６へ進む。現在実行中のジョブの起動時刻と当該ジョブステップの前回実行時のジョブ起動時刻との差分が、当該ジョブステップの実行間隔未満である場合には、実行部２０２は、当該ジョブステップが実行周期に達していないものと判定する。そして、フローはステップＳ１２へ戻る。
【０１０２】
ステップＳ１６において、実行部２０２は、異常状態動作制御部２３１に対して、実行対象のジョブステップの異常終了フラグが「オン」になっているかどうかを問い合わせる。異常状態動作制御部２３１は、ジョブ実行情報２１１を参照し、問い合わせ結果を実行部２０２に返す。実行部２０２は、問い合わせ結果を参照する。当該ジョブステップの異常終了フラグが「オン」になっている場合には、フローは終了する。当該ジョブステップの異常終了フラグが「オフ」になっている場合には、フローはステップＳ１７へ進む。
【０１０３】
ステップＳ１７において、実行部２０２は、ステップＳ１２で選択したジョブステップを実行する。そして、フローはステップＳ１８へ進む。
【０１０４】
ステップＳ１８において、実行部２０２は、ステップＳ１７のジョブステップの実行結果を参照し、ジョブ実行情報２１１に含まれる当該ジョブステップの実行情報２１２を更新する。具体的には、ステップＳ１７のジョブステップの実行結果が正常終了であった場合には、実行部２０２は、当該ジョブステップの実行情報２１２の前回実行時のジョブ起動時刻を、現在実行中のジョブの起動時刻で置き換える。当該ジョブステップの実行結果が異常終了であった場合には、実行部２０２は、当該ジョブステップの実行情報２１２の異常終了フラグを「オン」にする。また、実行部２０２は、当該ジョブステップの実行情報２１２の異常終了時のジョブ起動時刻を、現在実行中のジョブの起動時刻で置き換える。そして、フローはステップＳ１９へ進む。
【０１０５】
ステップＳ１９において、実行部２０２は、ステップＳ１７のジョブステップの実行結果を参照する。当該ジョブステップの実行結果が正常終了であった場合には、フローはステップＳ１２へ戻る。当該ジョブステップの実行結果が異常終了であった場合には、フローは終了する。
【０１０６】
図９は、ジョブ管理装置２００のリトライ動作のフローを示している。
【０１０７】
リトライ動作制御部２３２は、リトライ実行命令１３１に応じて起動する。リトライ動作制御部２３２は、起動時に、ステップＳ１１で記憶装置９０２に保存されたファイルのアドレス情報を実行部２０２から取得する。リトライ動作制御部２３２は、取得したアドレス情報によって特定されるファイルに含まれる定義情報１１１を読み込む。
【０１０８】
ステップＳ２１において、リトライ動作制御部２３２は、ジョブ実行情報２１１を参照して、リトライ実行命令１３１で指定されたジョブにおいて異常終了フラグが「オン」になっているジョブステップがあるかどうかを判定する。リトライ実行命令１３１で指定されたジョブにおいて異常終了フラグが「オン」になっているジョブステップがある場合には、フローはステップＳ２２へ進む。リトライ実行命令１３１で指定されたジョブにおいて異常終了フラグが「オン」になっているジョブステップがない場合には、フローはステップＳ２９へ進む。
【０１０９】
ステップＳ２２において、リトライ動作制御部２３２は、ジョブ実行情報２１１を参照して、リトライ実行命令１３１で指定されたジョブにおいて異常終了フラグが「オン」になっているジョブステップのうち、実行順序が最後のものを再開位置として取得する。そして、フローはステップＳ２３へ進む。
【０１１０】
ステップＳ２３において、リトライ動作制御部２３２は、ジョブ実行情報２１１を参照して、再開位置に対応するジョブステップの実行情報２１２の異常終了時のジョブ起動時刻をリトライジョブ２２１の起動時刻として取得する。そして、フローはステップＳ２４へ進む。なお、再開位置に対応するジョブステップは、前述した再開ステップに相当する。
【０１１１】
ステップＳ２４において、リトライ動作制御部２３２は、ジョブ実行情報２１１及び定義情報１１１を参照して、リトライジョブ２２１を生成する。リトライ動作制御部２３２は、リトライジョブ２２１を起動する。具体的には、リトライ動作制御部２３２は、実行部２０２を起動して、実行部２０２にリトライジョブ２２１を実行させる。
【０１１２】
ステップＳ２５において、実行部２０２は、通常動作のステップＳ１２と同じように、未実行のジョブステップがあるかどうかを判定する。未実行のジョブステップがある場合には、実行部２０２は、未実行のジョブステップのうち、実行順序が最初のものを読み込む。即ち、実行部２０２は、リトライジョブ２２１で実行順序が次のジョブステップを選択する。そして、フローはステップＳ２６へ進む。未実行のジョブステップがない場合には、フローはステップＳ２１へ戻る。
【０１１３】
ステップＳ２６及びステップＳ２７の動作については、通常動作のステップＳ１７及びステップＳ１８と同じである。
【０１１４】
ステップＳ２８において、実行部２０２は、通常動作のステップＳ１９と同じように、ステップＳ２６のジョブステップの実行結果を参照する。当該ジョブステップの実行結果が正常終了であった場合には、フローはステップＳ２５へ戻る。当該ジョブステップの実行結果が異常終了であった場合には、フローは終了する。
【０１１５】
ステップＳ２９において、実行部２０２は、ステップＳ２４でリトライジョブ２２１が１つ以上生成された場合には、ジョブ実行情報２１１に含まれる全ての実行情報２１２の前回実行時のジョブ起動時刻を、現在時刻で置き換える。ここで、全ての実行情報２１２の前回実行時のジョブ起動時刻を同一の時刻に揃える点が本質であり、全ての実行情報２１２の前回実行時のジョブ起動時刻が現在時刻とは異なる時刻に置き換えられてもよい。
【０１１６】
以下、図１０を用いて、ステップＳ２４の詳細を説明する。
【０１１７】
ステップＳ３１において、リトライ動作制御部２３２は、ステップＳ２２で取得した再開位置から最後尾までのジョブステップのうち、実行周期に達しているもののみを実行するジョブを、暫定リトライジョブとして生成する。各ジョブステップが実行周期に達しているかどうかは、各ジョブステップの異常終了時のジョブ起動時刻と各ジョブステップの前回実行時のジョブ起動時刻との差分が、各ジョブステップの実行間隔以上であるか否かで判定される。そして、フローはステップＳ３２へ進む。
【０１１８】
ステップＳ３２において、リトライ動作制御部２３２は、起動時に読み込んだ定義情報１１１に含まれるジョブステップカテゴリの一覧を取得する。そして、フローはステップＳ３３へ進む。
【０１１９】
ステップＳ３３において、リトライ動作制御部２３２は、ステップＳ３２で取得したジョブステップカテゴリのうち、ステップＳ３４及びステップＳ３５の処理を実施していないジョブステップカテゴリがあるかどうかを判定する。ステップＳ３４及びステップＳ３５の処理を実施していないジョブステップカテゴリがある場合には、リトライ動作制御部２３２は、そのようなジョブステップカテゴリを１つ取得する。即ち、リトライ動作制御部２３２は、ステップＳ３２で取得した一覧から次のジョブステップカテゴリを選択する。そして、フローはステップＳ３４へ進む。ステップＳ３４及びステップＳ３５の処理を実施していないジョブステップカテゴリがない場合には、フローはステップＳ３６へ進む。
【０１２０】
ステップＳ３４において、リトライ動作制御部２３２は、起動時に読み込んだ定義情報１１１を参照して、ステップＳ３３で取得したジョブステップカテゴリに対応するリトライ種別を取得する。そして、フローはステップＳ３５へ進む。
【０１２１】
ステップＳ３５において、リトライ動作制御部２３２は、起動時に読み込んだ定義情報１１１を参照して、ステップＳ３３で取得したジョブステップカテゴリとステップＳ３４で取得したリトライ種別との組み合わせに応じて、暫定リトライジョブを変更する。そして、フローはステップＳ３３へ戻る。
【０１２２】
ステップＳ３６において、リトライ動作制御部２３２は、暫定リトライジョブをリトライジョブ２２１として採用する。そして、フローはステップＳ２５へ進む。
【０１２３】
以下、図１１を用いて、ステップＳ３５の詳細を説明する。
【０１２４】
ステップＳ４１において、リトライ動作制御部２３２は、定義情報１１１で指定されたジョブステップカテゴリとリトライ種別との組み合わせが「ｂａｃｋｕｐ」と「ａｆｔｅｒ・ｏｔｈｅｒ・ｃａｔｅｇｏｒｙ」との組み合わせである場合には、フローはステップＳ４２へ進む。指定されたジョブステップカテゴリとリトライ種別との組み合わせが「ｂａｃｋｕｐ」と「ｎｅｇａｔｉｖｅ」との組み合わせ又は「ｐａｒｔ・ｏｆ・ｔｒａｎｓａｃｔｉｏｎ」と「ｎｅｇａｔｉｖｅ」との組み合わせである場合には、フローはステップＳ４３へ進む。
【０１２５】
ステップＳ４２において、リトライ動作制御部２３２は、第１のリトライジョブ変更処理を実行する。そして、フローはステップＳ３３へ戻る。
【０１２６】
ステップＳ４３において、リトライ動作制御部２３２は、第２のリトライジョブ変更処理を実行する。そして、フローはステップＳ３３へ戻る。
【０１２７】
以下、図１２を用いて、ステップＳ４２の詳細を説明する。
【０１２８】
ステップＳ５１において、リトライ動作制御部２３２は、起動時に読み込んだ定義情報１１１からジョブステップの一覧を取得する。そして、フローはステップＳ５２へ進む。
【０１２９】
ステップＳ５２において、リトライ動作制御部２３２は、ステップＳ５１で取得したジョブステップのうち、ステップＳ５３の処理を実施していないジョブステップがあるかどうかを判定する。ステップＳ５３の処理を実施していないジョブステップがある場合には、リトライ動作制御部２３２は、そのようなジョブステップのうち、実行順序が最初のものを取得する。即ち、リトライ動作制御部２３２は、ステップＳ５１で取得した一覧から次のジョブステップを選択する。そして、フローはステップＳ５３へ進む。ステップＳ５３の処理を実施していないジョブステップがない場合には、フローはステップＳ３３へ戻る。
【０１３０】
ステップＳ５３において、リトライ動作制御部２３２は、ステップＳ５２で取得したジョブステップが指定されたジョブステップカテゴリに属するかどうかを判定する。ステップＳ５２で取得したジョブステップが指定されたジョブステップカテゴリに属する場合には、フローはステップＳ５４へ進む。ステップＳ５２で取得したジョブステップが指定されたジョブステップカテゴリに属さない場合には、フローはステップＳ５２へ戻る。
【０１３１】
ステップＳ５４において、リトライ動作制御部２３２は、ステップＳ５２で取得したジョブステップが暫定リトライジョブに既に含まれていれば、そのジョブステップを暫定リトライジョブの最後尾に移動する。リトライ動作制御部２３２は、ステップＳ５２で取得したジョブステップが暫定リトライジョブに含まれていなければ、そのジョブステップを暫定リトライジョブの最後尾に追加する。そして、フローはステップＳ５２へ戻る。
【０１３２】
以下、図１３を用いて、ステップＳ４３の詳細を説明する。
【０１３３】
ステップＳ６１において、リトライ動作制御部２３２は、起動時に読み込んだ定義情報１１１からジョブステップの一覧を取得する。そして、フローはステップＳ６２へ進む。
【０１３４】
ステップＳ６２において、リトライ動作制御部２３２は、ステップＳ６１で取得したジョブステップのうち、ステップＳ６３の処理を実施していないジョブステップがあるかどうかを判定する。ステップＳ６３の処理を実施していないジョブステップがある場合には、リトライ動作制御部２３２は、そのようなジョブステップのうち、実行順序が最初のものを取得する。即ち、リトライ動作制御部２３２は、ステップＳ６１で取得した一覧から次のジョブステップを選択する。そして、フローはステップＳ６３へ進む。ステップＳ６３の処理を実施していないジョブステップがない場合には、フローはステップＳ３３へ戻る。
【０１３５】
ステップＳ６３において、リトライ動作制御部２３２は、ステップＳ６２で取得したジョブステップが指定されたジョブステップカテゴリに属するかどうかを判定する。ステップＳ６２で取得したジョブステップが指定されたジョブステップカテゴリに属する場合には、フローはステップＳ６４へ進む。ステップＳ６２で取得したジョブステップが指定されたジョブステップカテゴリに属さない場合には、フローはステップＳ６２へ戻る。
【０１３６】
ステップＳ６４において、リトライ動作制御部２３２は、ステップＳ６２で取得したジョブステップがステップＳ２２で取得した再開位置に対応するジョブステップより実行順序が後かどうかを判定する。ステップＳ６２で取得したジョブステップが再開位置に対応するジョブステップより実行順序が後である場合には、フローはステップＳ６５へ進む。ステップＳ６２で取得したジョブステップの実行順序が再開位置に対応するジョブステップ以前にある場合には、フローはステップＳ３３へ戻る。
【０１３７】
ステップＳ６５において、リトライ動作制御部２３２は、ステップＳ６２で取得したジョブステップを暫定リトライジョブから削除する。そして、フローはステップＳ６２へ戻る。
【０１３８】
＊＊＊実施の形態の効果の説明＊＊＊
本実施の形態では、ある２つのジョブステップが依存関係にある場合にも、後続する方のジョブステップが異常終了した場合には、次回以降のジョブでは、定義情報１１１に従い、それら２つのジョブステップの状態に不整合が生じない範囲でジョブの繰り返し実行を継続することができる。このため、本実施の形態に係るジョブ管理装置２００、ジョブ管理方法、又は、ジョブ管理プログラムが適用されるデータ管理システム１００の安全性を確保しつつ、可用性を高めることができる。
【０１３９】
本実施の形態では、異常状態動作制御部２３１により、あるジョブステップが異常終了した後の通常動作を柔軟に変更することが可能となる。これにより、データ管理システム１００の安全性を保ちつつ、システムの可用性を高めることができる。また、リトライ動作制御部２３２により、リトライ実行の効率を高めることができる。
【０１４０】
以下、定義情報１１１の内容が図４から図６に示したものであり、プログラム起動装置１０７がジョブ管理装置２００を起動する周期が５分であるケースを例にとって、本実施の形態の効果を説明する。
【０１４１】
図１４は、どのジョブステップも正常終了している場合のジョブの実行結果の例を示している。
【０１４２】
本実施の形態では、異常終了フラグを用いることにより、異常終了したジョブステップ以降の実行状態を保存可能とする。以下、詳細を説明する。
【０１４３】
１０月３日０時０分に起動されたジョブで第４のジョブステップが異常終了したとする。ジョブは第１のジョブステップから順に実行され、第３のジョブステップで蓄積用テーブル１０４からデータを抽出した際に中間ファイルを上書きする。本実施の形態から異常終了フラグを除いた場合には、１０月３日０時０分のジョブで一時参照用テーブル１０５に投入できなかったデータが消失するという問題が発生する。本実施の形態では、１０月３日０時０分に起動されたジョブにおいて、ステップＳ１８の処理で第４のジョブステップが異常終了したことが異常終了フラグに記録される。１０月４日１時０分に起動されたジョブではステップＳ１６の処理により第４のジョブステップの実行前にジョブが終了される。そのため、上記の問題は回避される。即ち、異常終了フラグを用いることにより、異常終了したジョブステップ以降の実行状態が保存されていることになる。したがって、本実施の形態では、データ管理システム１００の安全性を高めることができる。
【０１４４】
本実施の形態では、異常終了フラグに加えて優先実行フラグを用いることで、あるジョブステップが異常終了した後に実行されるジョブにおいてどのジョブステップまでを実行するかを調整可能である。以下、詳細を説明する。
【０１４５】
１０月３日０時０分に起動されたジョブで第４のジョブステップが異常終了したとする。本実施の形態から優先実行フラグを除いた場合、次にジョブが起動された場合には、ジョブステップは１件も実行されない。本実施の形態では、第１のジョブステップと第２のジョブステップとが実行される。一方、第３のジョブステップは実行されない。そのため、１０月３日０時０分のジョブで一時参照用テーブル１０５に投入できなかったデータは中間ファイルに残るため、第４のジョブステップが異常終了した状態を保存することができる。このように、本実施の形態では、データ管理システム１００の安全性を保ちつつ、可用性を高めることができる。可用性を高める点については、具体的には、一時参照用テーブル１０５へのデータ投入に失敗した場合であっても、データ管理システム１００の動作を継続するため、データの喪失を防ぐことが可能となる。このような点は、近年盛んに活用されているエネルギーマネジメントシステム等の機器データ収集及び管理の事業において有用である。
【０１４６】
本実施の形態では、あるジョブステップが異常終了した後に異常終了したジョブステップからリトライ実行したい場合に、ジョブ管理装置２００が自動的に再開位置を取得してリトライジョブ２２１を生成及び実行する。そのため、データ管理システム１００のユーザがログファイル等を解析して再開位置を判定したり、手動でリトライジョブ２２１を生成したりする手間がかからない。したがって、本実施の形態では、データ管理システム１００におけるリトライ実行の効率性を高めることができる。
【０１４７】
本実施の形態では、異常終了したジョブステップが複数ある場合に、ステップＳ２２の処理で異常終了した時刻が最も古いジョブステップを再開位置とする。そのため、異常終了した時刻が古いジョブステップから順番にリトライ実行される。これにより、データ管理システム１００に保存したデータの整合性を保ってリトライ実行することが可能となる。したがって、本実施の形態では、データ管理システム１００の安全性を確保することができる。
【０１４８】
本実施の形態では、ステップＳ２９で全てのジョブステップの前回実行時刻を揃える。そのため、実行周期によって示されるジョブステップ間の依存関係を、リトライ実行成功後のジョブにおいて保つことが可能となる。以下、詳細を、図１５を用いて説明する。
【０１４９】
図１５は、本実施の形態からステップＳ２９を除いた場合のジョブの実行結果の例を上部に示し、本実施の形態におけるジョブの実行結果の例を下部に示している。
【０１５０】
図４に示したように、第５のジョブステップの実行周期は１日である。図６に示したように、第１２のジョブステップの実行周期は２日である。即ち、第１２のジョブステップの実行周期は、第５のジョブステップの実行周期の２倍である。よって、ステップＳ１５の処理により、第５のジョブステップと第１２のジョブステップとの間には、第１２のジョブステップが実行されるジョブにおいては、必ず第５のジョブステップが実行されるという依存関係が成立する。図１５の例では、１０月２日０時０分に起動されたジョブで第１、第５及び第１２のジョブステップが実行されている。そして、１０月３日０時０分に起動されたジョブで第１及び第５のジョブステップが実行されている。１０月３日０時０分に起動されたジョブでは、第１２のジョブステップは、実行周期に達していないため、実行されていない。１０月３日０時５分に起動されたジョブで第１のジョブステップが異常終了した後、１０月３日０時１０分にジョブがリトライ実行されている。図４に示したように、第５のジョブステップのジョブステップカテゴリは「ｂａｃｋｕｐ」で、ジョブステップカテゴリ「ｂａｃｋｕｐ」のリトライ種別は「ａｆｔｅｒ・ｏｔｈｅｒ・ｃａｔｅｇｏｒｙ」である。よって、ステップＳ４２の処理により、リトライジョブ２２１に第５のジョブステップが含まれる。リトライ実行時にステップＳ２９の処理を省くと、ステップＳ２３及びＳ２７の処理により、リトライ実行後の第５のジョブステップの前回実行時刻は、第１のジョブステップの異常終了時のジョブ起動時刻である１０月３日０時５分となる。一方、図６に示したように、第１２のジョブステップのジョブステップカテゴリは「ｐａｒｔ・ｏｆ・ｔｒａｎｓａｃｔｉｏｎ」で、ジョブステップカテゴリ「ｐａｒｔ・ｏｆ・ｔｒａｎｓａｃｔｉｏｎ」のリトライ種別は「ｎｅｇａｔｉｖｅ」である。よって、ステップＳ４３の処理により、リトライジョブ２２１に第１２のジョブステップは含まれない。即ち、第１２のジョブステップの前回実行時刻は１０月２日０時０分のままとなる。よって、図１５の例では、１０月４日０時０分に起動されたジョブでは、第５のジョブステップがスキップされるにも関わらず、第１２のジョブステップが実行されてしまう。即ち、第５のジョブステップと第１２のジョブステップとの間にあった依存関係が破たんする。リトライ実行時に、ステップＳ２９で全てのジョブステップの前回実行時刻を揃えておけば、このようなことは起こらない。本実施の形態では、ステップＳ２９で全てのジョブステップの前回実行時刻を揃えることで、実行周期によって示されるジョブステップ間の依存関係を、リトライ実行成功後のジョブにおいて保つことが可能である。したがって、本実施の形態では、データ管理システム１００の安全性を確保することができる。
【０１５１】
本実施の形態では、ステップＳ２３の処理により再開位置に対応するジョブステップが異常終了したときのジョブの起動時刻をリトライジョブ２２１の起動時刻とする。そのため、ステップＳ２６の処理により再開位置に対応するジョブステップが異常終了したときに実行予定であったジョブステップのみを実行することができる。したがって、本実施の形態では、データ管理システム１００におけるリトライ実行の効率性を高めることができる。
【０１５２】
本実施の形態では、ジョブ管理装置２００がリトライ動作定義１２２を用いることでリトライ実行時の動作を柔軟に制御することが可能となる。したがって、本実施の形態では、データ管理システム１００におけるリトライ実行の効率性を高めることができる。以下、リトライ動作定義１２２のリトライ種別ごとに詳細を説明する。
【０１５３】
リトライ種別「ｎｅｇａｔｉｖｅ」については、リトライ実行で実行する必要のないジョブステップをスキップすることで、リトライ実行時の実行時間を短縮し、リトライ実行の効率性を高める効果がある。図４から図６に示したジョブ定義文の場合、第４のジョブステップ、第７のジョブステップ、第１０から第１２までのジョブステップのジョブステップカテゴリが「ｐａｒｔ・ｏｆ・ｔｒａｎｓａｃｔｉｏｎ」である。ジョブステップカテゴリ「ｐａｒｔ・ｏｆ・ｔｒａｎｓａｃｔｉｏｎ」のリトライ種別は「ｎｅｇａｔｉｖｅ」に設定されている。よって、蓄積用テーブル１０４に対する処理を実行する第１のジョブステップが異常終了した後にリトライ実行する際には、一時参照用テーブル１０５又は参照用テーブル１０６に対する処理を実行する第４のジョブステップ、第７のジョブステップ、第１０から第１２までのジョブステップがスキップされる。これは、第４のジョブステップ、第７のジョブステップ、第１０から第１２までのジョブステップを実行しなくても、各テーブルの整合性が保たれるからである。
【０１５４】
リトライ種別「ａｆｔｅｒ・ｏｔｈｅｒ・ｃａｔｅｇｏｒｙ」についても、リトライ実行の効率性を高める効果がある。以下、詳細を説明する。
【０１５５】
１０月３日０時０分に第３のジョブステップが異常終了し、１０月３日１時０分までジョブが実行された状況で、１０月３日１時５分にリトライ実行すると仮定する。図４から図６に示したジョブ定義文の場合、第２のジョブステップ、第５のジョブステップ、第８のジョブステップのジョブステップカテゴリが「ｂａｃｋｕｐ」である。ジョブステップカテゴリ「ｂａｃｋｕｐ」のリトライ種別は「ａｆｔｅｒ・ｏｔｈｅｒ・ｃａｔｅｇｏｒｙ」に設定されている。ジョブステップカテゴリ「ｂａｃｋｕｐ」の設定がないと仮定すると、１０月３日１時５分にリトライ実行する際にジョブ管理装置２００が生成するリトライジョブ２２１は、図１６の上部のような内容となる。即ち、リトライジョブ２２１は、第３、第４、第５、第６、第８、第９のジョブステップを順番に実行するジョブとなる。このリトライジョブ２２１を実行すると、１０月３日０時０分に第２のジョブステップで実行した蓄積用テーブル１０４のバックアップの結果と、１０月３日１時５分にリトライジョブ２２１の第５のジョブステップで実行した一時参照用テーブル１０５のバックアップの結果の間に不整合が生じる。この理由は次の通りである。
【０１５６】
１０月３日０時０分に第２のジョブステップで実行した蓄積用テーブル１０４のバックアップの結果には１０月３日０時０分までのデータしか含まれていないが、１０月３日１時０分まで第１のジョブステップにより蓄積用テーブル１０４へデータが投入されている。そのため、１０月３日１時５分にリトライ実行する際には、蓄積用テーブル１０４に１０月３日０時０分から１０月３日１時０分までのデータがある。１０月３日１時５分のリトライ実行時には、第３のジョブステップにより蓄積用テーブル１０４から１０月３日０時０分から１０月３日１時０分までのデータが差分として抽出され、第４のジョブステップで一時参照用テーブル１０５へ投入される。１０月３日１時５分のリトライジョブ２２１において第５のジョブステップで一時参照用テーブル１０５の増分バックアップを取ると、一時参照用テーブル１０５の増分バックアップの結果は１０月３日０時０分から１０月３日１時０分までのデータを含む。このデータは第２のジョブステップで実行した蓄積用テーブル１０４のバックアップの結果には含まれないため、不整合が生じることとなる。
【０１５７】
上記のような不整合を生じさせない単純な方法としては、データ管理システム１００のユーザがジョブ管理装置２００のログファイル等を参照して１０月３日０時０分に第３のジョブステップが異常終了したことを把握し、第３のジョブステップから手動でリトライ実行するという方法がある。しかし、リトライ実行の効率が悪いという問題がある。
【０１５８】
本実施の形態では、１０月３日１時５分にリトライ実行する際にジョブ管理装置２００が生成するリトライジョブ２２１は、図１６の下部のような内容となる。即ち、リトライジョブ２２１は、第３、第４、第６、第９、第２、第５、第８のジョブステップを順番に実行するジョブとなる。このリトライジョブ２２１を１０月３日１時５分に実行すると、第３のジョブステップにより蓄積用テーブル１０４から１０月３日０時０分から１０月３日１時０分までのデータが差分として抽出され、第４のジョブステップで一時参照用テーブル１０５へ投入された後、第２、第５、第８のジョブステップが実行される。そのため、蓄積用テーブル１０４のバックアップと一時参照用テーブル１０５のバックアップとの整合が取られる。また、リトライジョブ２２１をジョブ管理装置２００が自動で生成及び実行するため、手動でリトライ実行する方法よりも効率が良い。
【０１５９】
本実施の形態において、ステップＳ６４の処理は、あるジョブで先行する方のジョブステップを実行する場合には、必ず後続する方のジョブステップを実行するという第１の依存関係を保つために実施される。以下、データベースのテーブルからデータを抽出して一時ファイルに上書きするジョブステップカテゴリ「ｐａｒｔ・ｏｆ・ｔｒａｎｓａｃｔｉｏｎ」のジョブステップと、抽出したデータを変換して一時ファイルに上書きするジョブステップと、変換したデータを別のテーブルへ投入するジョブステップカテゴリ「ｐａｒｔ・ｏｆ・ｔｒａｎｓａｃｔｉｏｎ」のジョブステップとからなるジョブを例に挙げて詳細を説明する。
【０１６０】
ジョブをある時刻に起動した際に、変換のジョブステップが異常終了したとする。もしステップＳ６４の処理がなければ、リトライ実行時に生成されるリトライジョブ２２１は変換のみを実行するジョブである。このリトライジョブ２２１を実行した後に、通常実行を行うと、変換の実行時に、リトライ実行後にテーブルへ投入されずに一時ファイルとして残っていた変換データが消失するという問題が生じる。ステップＳ６４の処理を実施することで、再開ステップより前にジョブステップカテゴリ「ｐａｒｔ・ｏｆ・ｔｒａｎｓａｃｔｉｏｎ」の処理がある場合には暫定リトライジョブをステップＳ６５の処理で変更しないようにできる。
【０１６１】
本実施の形態によれば、リトライジョブ２２１の生成時に定義情報１１１に従ってジョブを変更することでリトライジョブ２２１の実行時に２つのジョブステップの状態に不整合が生じないようにできる。このため、ジョブ管理装置２００が適用されるシステムの安全性を確保することができる。
【０１６２】
＊＊＊他の構成＊＊＊
本実施の形態に係るジョブ管理装置２００が適用されるシステムの構成は、図１に示したようなデータ管理システム１００に限らない。具体的には、ジョブ管理装置２００は、蓄積用テーブル１０４、一時参照用テーブル１０５、参照用テーブル１０６とは異なる１つ以上のテーブルを利用するシステムに適用することができる。
【０１６３】
また、本実施の形態では、ジョブ管理装置２００の機能がソフトウェアで実現されるが、変形例として、ジョブ管理装置２００の機能がハードウェアで実現されてもよい。この変形例について、主に本実施の形態との差異を説明する。
【０１６４】
図１７を参照して、本実施の形態の変形例に係るジョブ管理装置２００の構成を説明する。
【０１６５】
ジョブ管理装置２００は、処理回路９０９、入力装置９０３、通信装置９０４といったハードウェアを備える。
【０１６６】
処理回路９０９は、前述した「部」及び記憶部２０４の機能を実現する専用の電子回路である。処理回路９０９は、具体的には、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックＩＣ、ＧＡ（Ｇａｔｅ・Ａｒｒａｙ）、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ・Ｓｐｅｃｉｆｉｃ・Ｉｎｔｅｇｒａｔｅｄ・Ｃｉｒｃｕｉｔ）、又は、ＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ・Ｇａｔｅ・Ａｒｒａｙ）である。
【０１６７】
「部」及び記憶部２０４の機能は、１つの処理回路９０９で実現されてもよいし、複数の処理回路９０９に分散して実現されてもよい。
【０１６８】
別の変形例として、ジョブ管理装置２００の機能がソフトウェアとハードウェアとの組み合わせで実現されてもよい。即ち、ジョブ管理装置２００の一部の機能が専用のハードウェアで実現され、残りの機能がソフトウェアで実現されてもよい。
【０１６９】
プロセッサ９０１、記憶装置９０２、及び、処理回路９０９を、総称して「プロセッシングサーキットリ」という。つまり、ジョブ管理装置２００の構成が図２及び図１７のいずれに示した構成であっても、「部」及び記憶部２０４の機能は、プロセッシングサーキットリにより実現される。
【０１７０】
「部」を「工程」又は「手順」又は「処理」に読み替えてもよい。また、「部」の機能をファームウェアで実現してもよい。
【０１７１】
以上、本発明の実施の形態について説明したが、この実施の形態を部分的に実施しても構わない。具体的には、この実施の形態の説明において「部」として説明するもののうち、いずれか１つのみを採用してもよいし、いくつかの任意の組み合わせを採用してもよい。なお、本発明は、この実施の形態に限定されるものではなく、必要に応じて種々の変更が可能である。
【符号の説明】
【０１７２】
１００  データ管理システム、１０１  データ収集装置、１０２  データファイル、１０３  ＤＢＭＳ、１０４  蓄積用テーブル、１０５  一時参照用テーブル、１０６  参照用テーブル、１０７  プログラム起動装置、１１１  定義情報、１２１  異常状態動作定義、１２２  リトライ動作定義、１３１  リトライ実行命令、２００  ジョブ管理装置、２０１  受け付け部、２０２  実行部、２０３  制御部、２０４  記憶部、２１１  ジョブ実行情報、２１２  実行情報、２２１  リトライジョブ、２３１  異常状態動作制御部、２３２  リトライ動作制御部、９０１  プロセッサ、９０２  記憶装置、９０３  入力装置、９０４  通信装置、９０９  処理回路。
【図１】
2017046939.tif 000003
【図２】
2017046939.tif 000004
【図３】
2017046939.tif 000005
【図４】
2017046939.tif 000006
【図５】
2017046939.tif 000007
【図６】
2017046939.tif 000008
【図７】
2017046939.tif 000009
【図８】
2017046939.tif 000010
【図９】
2017046939.tif 000011
【図１０】
2017046939.tif 000012
【図１１】
2017046939.tif 000013
【図１２】
2017046939.tif 000014
【図１３】
2017046939.tif 000015
【図１４】
2017046939.tif 000016
【図１５】
2017046939.tif 000017
【図１６】
2017046939.tif 000018
【図１７】
2017046939.tif 000019
【手続補正書】
【提出日】平成29年4月7日(2017.4.7)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
プロセッサを用いてジョブを実行する実行部と、
前記実行部により実行されるジョブの構成要素となる複数のジョブステップの実行順序及び実行条件を定義する定義情報の入力を受け付ける受け付け部と、
前記定義情報に従って前記実行部により実行されたジョブに含まれるジョブステップに異常終了が発生した場合、前記定義情報で定義された実行順序が、異常終了が発生したジョブステップである再開ステップ以降のジョブステップの実行を前記実行部に停止させる制御部と
を備え、
前記制御部は、前記定義情報に従って前記実行部により実行されたジョブに含まれるジョブステップに異常終了が発生した場合、前記再開ステップと、前記定義情報で定義された実行順序が前記再開ステップよりも後であり、前記定義情報で定義された実行条件を前記再開ステップの異常終了の発生時に満たすジョブステップとを含むジョブをリトライジョブとして生成し、前記リトライジョブを前記実行部に実行させるジョブ管理装置。
【請求項２】
前記制御部は、少なくとも前記リトライジョブの実行が完了するまでは、前記定義情報で定義された実行順序が前記再開ステップ以降のジョブステップの実行を前記実行部に停止させる請求項１に記載のジョブ管理装置。
【請求項３】
前記定義情報は、さらに、前記複数のジョブステップの種別を定義する情報を含み、
前記制御部は、前記定義情報で定義された種別によって、前記リトライジョブに含まれるジョブステップの実行順序を決定する請求項１又は２に記載のジョブ管理装置。
【請求項４】
前記定義情報で定義される１つの種別として、前記制御部に対し、前記リトライジョブに含まれるジョブステップのうち、前記定義情報で定義された種別が当該１つの種別であるジョブステップの実行順序を、前記定義情報で定義された種別が他の種別であるジョブステップよりも後にさせる種別がある請求項３に記載のジョブ管理装置。
【請求項５】
前記定義情報は、さらに、前記複数のジョブステップの種別を定義する情報を含み、
前記制御部は、前記定義情報で定義された種別によって、前記リトライジョブに含めるジョブステップを決定する請求項１又は２に記載のジョブ管理装置。
【請求項６】
前記定義情報で定義される１つの種別として、前記制御部に対し、前記定義情報で定義された実行順序が前記再開ステップよりも前であり、前記定義情報で定義された種別が当該１つの種別であるジョブステップを前記リトライジョブに含めさせる種別がある請求項５に記載のジョブ管理装置。
【請求項７】
前記定義情報で定義される１つの種別として、前記制御部に対し、前記複数のジョブステップの中に、前記定義情報で定義された実行順序が前記再開ステップ以前にあり、前記定義情報で定義された種別が当該１つの種別であるジョブステップがない場合、前記定義情報で定義された実行順序が前記再開ステップよりも後であり、前記定義情報で定義された種別が当該１つの種別であるジョブステップを前記リトライジョブから除かせる種別がある請求項５に記載のジョブ管理装置。
【請求項８】
情報を記憶するための記憶部
をさらに備え、
前記定義情報は、前記複数のジョブステップの実行条件として、前記複数のジョブステップの実行間隔を定義する情報を含み、
前記実行部は、ジョブステップごとに、前回の実行時刻を示す実行情報を前記記憶部に書き込み、前記定義情報に従ってジョブを実行する場合、前記定義情報で定義された実行順序に沿って、前記実行情報で示された前回の実行時刻から前記定義情報で定義された実行間隔以上の時間が経過したジョブステップを実行し、実行したジョブステップについて、前記実行情報で示された前回の実行時刻を実行中のジョブの起動時刻に書き換え、前記リトライジョブを実行する場合、前記制御部により決定される実行順序に沿って、前記リトライジョブに含まれるジョブステップを実行し、前記複数のジョブステップについて、前記実行情報で示された前回の実行時刻を共通の時刻に変更する請求項１から７のいずれか１項に記載のジョブ管理装置。
【請求項９】
情報を記憶するための記憶部
をさらに備え、
前記実行部は、ジョブステップごとに、異常終了の発生の有無を示す実行情報を前記記憶部に書き込み、前記定義情報に従ってジョブを実行する場合、異常終了が発生したジョブステップについて、前記実行情報を、異常終了が発生したことを示す情報に更新し、前記リトライジョブを実行する場合、前記再開ステップについて、異常終了が発生しなければ、前記実行情報を、異常終了が発生していないことを示す情報に更新し、
前記制御部は、前記実行情報で異常終了が発生したことが示されたジョブステップが複数ある場合、前記実行情報で異常終了が発生したことが示されたジョブステップがなくなるまで、前記定義情報で定義された実行順序が後のジョブステップを先に前記再開ステップに決定して前記リトライジョブを生成し、前記リトライジョブを前記実行部に実行させる処理を繰り返す請求項１から７のいずれか１項に記載のジョブ管理装置。
【請求項１０】
前記定義情報は、さらに、前記複数のジョブステップのうち、他のジョブステップに異常終了が発生しても実行されるべきジョブステップを優先ステップとして定義する情報を含み、
前記制御部は、前記定義情報に従って前記実行部により実行されたジョブに含まれるジョブステップに異常終了が発生した場合、前記定義情報で定義された実行順序が前記再開ステップよりも前であり、前記定義情報で前記優先ステップとして定義されていないジョブステップの実行を前記実行部に停止させる請求項１から９のいずれか１項に記載のジョブ管理装置。
【請求項１１】
プロセッサを用いてジョブを実行する実行部と、
前記実行部により実行されるジョブの構成要素となる複数のジョブステップの実行順序及び実行条件を定義する定義情報の入力を受け付ける受け付け部と、
前記定義情報に従って前記実行部により実行されたジョブに含まれるジョブステップに異常終了が発生した場合、前記定義情報で定義された実行順序が、異常終了が発生したジョブステップである再開ステップ以降のジョブステップの実行を前記実行部に停止させる制御部と
を備え、
前記定義情報は、さらに、前記複数のジョブステップのうち、他のジョブステップに異常終了が発生しても実行されるべきジョブステップを優先ステップとして定義する情報を含み、
前記制御部は、前記定義情報に従って前記実行部により実行されたジョブに含まれるジョブステップに異常終了が発生した場合、前記定義情報で定義された実行順序が前記再開ステップよりも前であり、前記定義情報で前記優先ステップとして定義されていないジョブステップの実行を前記実行部に停止させるジョブ管理装置。
【請求項１２】
コンピュータが、プロセッサを用いてジョブを実行し、
前記コンピュータが、実行するジョブの構成要素となる複数のジョブステップの実行順序及び実行条件を定義する定義情報の入力を受け付け、
前記コンピュータが、前記定義情報に従って実行したジョブに含まれるジョブステップに異常終了が発生した場合、前記定義情報で定義された実行順序が、異常終了が発生したジョブステップである再開ステップ以降のジョブステップの実行を停止し、
前記コンピュータが、前記定義情報に従って実行したジョブに含まれるジョブステップに異常終了が発生した場合、前記再開ステップと、前記定義情報で定義された実行順序が前記再開ステップよりも後であり、前記定義情報で定義された実行条件を前記再開ステップの異常終了の発生時に満たすジョブステップとを含むジョブをリトライジョブとして生成し、前記リトライジョブを実行するジョブ管理方法。
【請求項１３】
コンピュータが、プロセッサを用いてジョブを実行し、
前記コンピュータが、実行するジョブの構成要素となる複数のジョブステップの実行順序及び実行条件を定義する定義情報の入力を受け付け、
前記コンピュータが、前記定義情報に従って実行したジョブに含まれるジョブステップに異常終了が発生した場合、前記定義情報で定義された実行順序が、異常終了が発生したジョブステップである再開ステップ以降のジョブステップの実行を停止し、
前記定義情報は、さらに、前記複数のジョブステップのうち、他のジョブステップに異常終了が発生しても実行されるべきジョブステップを優先ステップとして定義する情報を含み、
前記コンピュータが、前記定義情報に従って実行したジョブに含まれるジョブステップに異常終了が発生した場合、前記定義情報で定義された実行順序が前記再開ステップよりも前であり、前記定義情報で前記優先ステップとして定義されていないジョブステップの実行を停止するジョブ管理方法。
【請求項１４】
コンピュータに、
プロセッサを用いてジョブを実行する処理と、
実行されるジョブの構成要素となる複数のジョブステップの実行順序及び実行条件を定義する定義情報の入力を受け付ける処理と、
前記定義情報に従って実行されたジョブに含まれるジョブステップに異常終了が発生した場合、前記定義情報で定義された実行順序が、異常終了が発生したジョブステップである再開ステップ以降のジョブステップの実行を停止する処理と
を実行させ、
前記コンピュータに、
前記定義情報に従って実行されたジョブに含まれるジョブステップに異常終了が発生した場合、前記再開ステップと、前記定義情報で定義された実行順序が前記再開ステップよりも後であり、前記定義情報で定義された実行条件を前記再開ステップの異常終了の発生時に満たすジョブステップとを含むジョブをリトライジョブとして生成し、前記リトライジョブを実行する処理
を実行させるジョブ管理プログラム。
【請求項１５】
コンピュータに、
プロセッサを用いてジョブを実行する処理と、
実行されるジョブの構成要素となる複数のジョブステップの実行順序及び実行条件を定義する定義情報の入力を受け付ける処理と、
前記定義情報に従って実行されたジョブに含まれるジョブステップに異常終了が発生した場合、前記定義情報で定義された実行順序が、異常終了が発生したジョブステップである再開ステップ以降のジョブステップの実行を停止する処理と
を実行させ、
前記定義情報は、さらに、前記複数のジョブステップのうち、他のジョブステップに異常終了が発生しても実行されるべきジョブステップを優先ステップとして定義する情報を含み、
前記コンピュータに、
前記定義情報に従って実行されたジョブに含まれるジョブステップに異常終了が発生した場合、前記定義情報で定義された実行順序が前記再開ステップよりも前であり、前記定義情報で前記優先ステップとして定義されていないジョブステップの実行を停止する処理
を実行させるジョブ管理プログラム。
【国際調査報告】
2017046939.tif 000020
2017046939.tif 000021