(57)【特許請求の範囲】
【請求項１】
実行される順番が予め定められた複数の構成コマンドから構成されるコマンドネットを周期的に実行するコマンド実行部と、
ある前記構成コマンドが前記コマンド実行部による実行継続ができないエラーコマンドである場合の前記周期的実行における各構成コマンドごとの実行の可否を、各構成コマンドがエラーコマンドである場合について定めた実行可否情報を記憶する実行可否情報記憶部と、
周期的に呼び出されることにより前記コマンドネットを前記コマンド実行部に周期的に実行させるとともに、いずれかの前記構成コマンドが前記エラーコマンドになると前記エラーコマンドを特定するエラーコマンド情報を記憶し、前記エラーコマンド情報が記憶されているときに前記コマンドネットの実行処理が呼び出されると前記実行可否情報を参照することにより、記憶されている前記エラーコマンド情報の示す前記エラーコマンドに対して実行が認められている前記構成コマンドを特定し、特定された前記構成コマンドを前記コマンド実行部に実行させるコマンド処理部と
を備えたことを特徴とするコマンドネット実行装置。
【請求項２】
前記コマンド処理部は、
前記実行可否情報を参照した場合には、記憶されている前記エラーコマンド情報の示す前記エラーコマンドに対して実行が認められていない前記構成コマンドをも特定し、特定された前記構成コマンドを実行履歴として記憶することを特徴とする請求項１記載のコマンドネット実行装置。
【請求項３】
前記実行可否情報記憶部に記憶される前記実行可否情報は、
各構成コマンドごとの前記実行の可否と対応付けられた情報であって、前記構成コマンドが前記実行履歴として記憶された場合にリカバリのための実行が必要かどうかの実行の要否を示すリカバリ実行要否情報を有し、
前記コマンド処理部は、
前記リカバリ実行要否情報を参照することによりリカバリのための実行が必要な前記構成コマンドを特定し、特定された前記構成コマンドを前記コマンド実行部に実行させることを特徴とする請求項２記載のコマンドネット実行装置。
【請求項４】
コンピュータを
（１）実行される順番が予め定められた複数の構成コマンドから構成されるコマンドネットを周期的に実行するコマンド実行部、
（２）ある前記構成コマンドが前記コマンド実行部による実行継続ができないエラーコマンドである場合の前記周期的実行における各構成コマンドごとの実行の可否を、各構成コマンドがエラーコマンドである場合について定めた実行可否情報を記憶する実行可否情報記憶部、
（３）周期的に呼び出されることにより前記コマンドネットを前記コマンド実行部に周期的に実行させるとともに、いずれかの前記構成コマンドが前記エラーコマンドになると前記エラーコマンドを特定するエラーコマンド情報を記憶し、前記エラーコマンド情報が記憶されているときに前記コマンドネットの実行処理が呼び出されると前記実行可否情報を参照することにより、記憶されている前記エラーコマンド情報の示す前記エラーコマンドに対して実行が認められている前記構成コマンドを特定し、特定された前記構成コマンドを前記コマンド実行部に実行させるコマンド処理部
として機能させるためのコマンドネット実行プログラム。
【請求項５】
コンピュータを
（１）実行される順番が予め定められた複数の構成コマンドから構成されるコマンドネットを周期的に実行するコマンド実行部、
（２）ある前記構成コマンドが前記コマンド実行部による実行継続ができないエラーコマンドである場合の前記周期的実行における各構成コマンドごとの実行の可否を、各構成コマンドがエラーコマンドである場合について定めた実行可否情報を記憶する実行可否情報記憶部、
（３）周期的に呼び出されることにより前記コマンドネットを前記コマンド実行部に周期的に実行させるとともに、いずれかの前記構成コマンドが前記エラーコマンドになると前記エラーコマンドを特定するエラーコマンド情報を記憶し、前記エラーコマンド情報が記憶されているときに前記コマンドネットの実行処理が呼び出されると前記実行可否情報を参照することにより、記憶されている前記エラーコマンド情報の示す前記エラーコマンドに対して実行が認められている前記構成コマンドを特定し、特定された前記構成コマンドを前記コマンド実行部に実行させるコマンド処理部
として機能させるためのコマンドネット実行プログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、複数の外部コマンドからなるコマンドネットを実行するコマンドネット実行装置、コマンドネット実行プログラム及びコマンドネット実行プログラムを記録したコンピュータ読み取り可能な記録媒体に関する。
【背景技術】
【０００２】
複数の外部コマンドを予め定められた順番で実行し、すべてのコマンドが正常に実行されることで処理が完了する処理（コマンドネット）で、外部コマンドの一つが異常終了して処理が中断した後、異常原因を取り除き、コマンドネットを再実行する復旧（リカバリ）方式において、従来のリカバリ方式は、コマンドネットの実行処理でコマンド単位に正常終了した実行情報を記録しておき、任意のコマンドの異常終了で処理が中断し、異常原因の除去後のコマンドネット実行再開時には記録した実行情報に従って中断したコマンドから処理を再開するといった方法が考えられている（例えば、特許文献１）。
【０００３】
このとき、コマンドネットが周期的に実行されるシステムでは、コマンド異常終了によるコマンドネット処理の中断の後、異常原因を取り除いて中断したコマンドネットの再実行によるリカバリ処理の前に、周期的呼び出しによる次のコマンドネット実行が起動されてしまうことがある。周期的に実行されるコマンドネットを構成するコマンドが、前回の実行結果を受けて処理を行うようなコマンドの場合、中断したコマンドネットのリカバリ処理前に起動されたコマンドは正常終了できないためコマンドネットは中断し、中断状態のコマンドネット、つまりリカバリ対象のコマンドネットが増加していってしまう。
【特許文献１】特開２００３−８５０２０１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
コマンドネットにおいて異常終了により中断したコマンドによっては、コマンドネット再実行後の追加実行が不要な場合もある。例えば、コマンドネットにおけるコマンド間でのデータの受け渡しがワークファイルを生成することにより行われる場合、入力指定をファイル単位で行うコマンドでは追加実行が必要となるが、入力をフォルダ単位で指定する（フォルダに在するすべてのファイルを入力）コマンドの場合は、リカバリ前の実行による途中経過のファイルはフォルダに追加され、リカバリ後の再実行によりすべて入力できるため、追加実行は必要ない。コマンドネットでは一連の外部コマンドを実行するため、このような追加実行の必要がないコマンドの実行は、起動コストの高い外部コマンドを冗長に起動してしまうという課題があった。
【０００５】
またコマンドによっては冗長なコマンド実行により、入力データがないといった警告メッセージの出力や、次のコマンドネット実行準備のためのリソース（フォルダ、ファイルなど）生成を無駄に行ってしまうなど、余分な処理に伴う副作用が発生するという課題があった。
【０００６】
この発明は、周期的に実行されるコマンドネットを構成する複数の外部コマンドの一覧情報に、コマンドネットにおけるエラー時動作情報を追加し、異常終了による中断後、コマンドネット再実行の際に追加実行の必要性を判定できるようにすることで、冗長な外部コマンド実行を回避するリカバリ方式を備えたコマンドネット実行装置の提供を目的とする。
【課題を解決するための手段】
【０００７】
この発明のコマンドネット実行装置は、
実行される順番が予め定められた複数の構成コマンドから構成されるコマンドネットを周期的に実行するコマンド実行部と、
ある前記構成コマンドが前記コマンド実行部による実行継続ができないエラーコマンドである場合の前記周期的実行における各構成コマンドごとの実行の可否を、各構成コマンドがエラーコマンドである場合について定めた実行可否情報を記憶する実行可否情報記憶部と、
周期的に呼び出されることにより前記コマンドネットを前記コマンド実行部に周期的に実行させるとともに、いずれかの前記構成コマンドが前記エラーコマンドになると前記エラーコマンドを特定するエラーコマンド情報を記憶し、前記エラーコマンド情報が記憶されているときに前記コマンドネットの実行処理が呼び出されると前記実行可否情報を参照することにより、記憶されている前記エラーコマンド情報の示す前記エラーコマンドに対して実行が認められている前記構成コマンドを特定し、特定された前記構成コマンドを前記コマンド実行部に実行させるコマンド処理部と
を備えたことを特徴とする。
【発明の効果】
【０００８】
この発明により、周期的な実行を停止させずに実行処理を継続するコマンドネット実行装置を提供することができる。
【発明を実施するための最良の形態】
【０００９】
実施の形態１．
図１は、コンピュータであるコマンドネット実行装置１０００の外観の一例を示す図である。図１において、コマンドネット実行装置１０００は、システムユニット８３０、ＣＲＴ（Ｃａｔｈｏｄｅ・Ｒａｙ・Ｔｕｂｅ）やＬＣＤ（液晶）の表示画面を有する表示装置８１３、キーボード８１４（Ｋｅｙ・Ｂｏａｒｄ：Ｋ／Ｂ）、マウス８１５、ＦＤＤ８１７（Ｆｌｅｘｉｂｌｅ・Ｄｉｓｋ・  Ｄｒｉｖｅ）、コンパクトディスク装置８１８（ＣＤＤ：Ｃｏｍｐａｃｔ  Ｄｉｓｋ  Ｄｒｉｖｅ）、プリンタ装置８１９などのハードウェア資源を備え、これらはケーブルや信号線で接続されている。
【００１０】
図２は、実施の形態１におけるコマンドネット実行装置１０００のハードウェア資源の一例を示す図である。図２において、コマンドネット実行装置１０００は、プログラムを実行するＣＰＵ８１０（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ：中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう）を備えている。ＣＰＵ８１０は、バス８２５を介してＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）８１１、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）８１２、表示装置８１３、キーボード８１４、マウス８１５、通信ボード８１６、ＦＤＤ８１７、ＣＤＤ８１８、プリンタ装置８１９、磁気ディスク装置８２０と接続され、これらのハードウェアデバイスを制御する。磁気ディスク装置８２０の代わりに、光ディスク装置、フラッシュメモリなどの記憶装置でもよい。
【００１１】
ＲＡＭ８１２は、揮発性メモリの一例である。ＲＯＭ８１１、ＦＤＤ８１７、ＣＤＤ８１８、磁気ディスク装置８２０等の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置あるいは記憶部、格納部、バッファの一例である。通信ボード８１６、キーボード８１４、ＦＤＤ８１７などは、入力部、入力装置の一例である。また、通信ボード８１６、表示装置８１３、プリンタ装置８１９などは、出力部、出力装置の一例である。
【００１２】
通信ボード８１６は、ネットワーク（ＬＡＮ等）に接続されている。通信ボード８１６は、ＬＡＮに限らず、インターネット、ＩＳＤＮ等のＷＡＮ（ワイドエリアネットワーク）などに接続されていても構わない。
【００１３】
磁気ディスク装置８２０には、オペレーティングシステム８２１（ＯＳ）、ウィンドウシステム８２２、プログラム群８２３、ファイル群８２４が記憶されている。プログラム群８２３のプログラムは、ＣＰＵ８１０、オペレーティングシステム８２１、ウィンドウシステム８２２により実行される。
【００１４】
上記プログラム群８２３には、以下に述べる実施の形態の説明において「〜部」として説明する機能を実行するプログラムが記憶されている。プログラムは、ＣＰＵ８１０により読み出され実行される。「〜部」として説明する機能を実行するプログラムは、ＤＶＤやＨＤＤなどの記録媒体に記録可能である。
【００１５】
ファイル群８２４には、以下に述べる実施の形態の説明において、「コマンドネット情報１１１」、「コマンド実行情報２１１」、「エラー時動作情報２１」として説明する情報や、「〜の判定結果」、「〜の算出結果」、「〜の抽出結果」、「〜の生成結果」、「〜の処理結果」、「〜の実行結果」として説明する情報や、データや信号値や変数値やパラメータなどが、「〜ファイル」や「〜データベース」の各項目として記憶されている。「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してＣＰＵ８１０によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示などのＣＰＵの動作に用いられる。抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示のＣＰＵの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
【００１６】
また、以下に述べる実施の形態の説明においては、データや信号値は、ＲＡＭ８１２のメモリ、ＦＤＤ８１７のフレキシブルディスク、ＣＤＤ８１８のコンパクトディスク、磁気ディスク装置８２０の磁気ディスク、その他光ディスク、ミニディスク、ＤＶＤ（Ｄｉｇｉｔａｌ・Ｖｅｒｓａｔｉｌｅ・Ｄｉｓｋ）等の記録媒体に記録される。また、データや信号は、バス８２５や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
【００１７】
また、以下に述べる実施の形態の説明において、「〜部」として説明するものは、「手段」、「〜回路」、「〜機器」、「〜装置」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明するものは、ＲＯＭ８１１に記憶されたファームウェアで実現されても、或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実現されても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、ＤＶＤ等の記録媒体に記憶される。プログラムはＣＰＵ８１０により読み出され、ＣＰＵ８１０により実行される。すなわち、プログラムは、以下に述べる「〜部」としてコンピュータを機能させるものである。あるいは、以下に述べる「〜部」の手順や方法をコンピュータに実行させるものである。
【００１８】
図３は、周期的な複数コマンド実行での異常終了時のリカバリ方式を実行するコマンドネット実行装置１０００の構成を示す図である。コマンドネット実行装置１０００は、コマンドネット実行システム１００とコマンド実行情報格納部２００とを備えている。
【００１９】
（１）コマンドネット実行システム１００は、複数の外部コマンド３００の実行と、外部コマンド３００の中で任意のコマンド（構成コマンド）の異常終了による中断からのリカバリを行うプロセスである。「コマンドネット」とは、実行される順番が予め定められた複数の構成コマンドから構成されるコマンドの集合である。コマンドネット実行システム１００は、単独で実行可能なユーティリティプログラムである。コマンドネット実行システム１００は、コマンドネット実行システム１００が動作する環境にある一般的なタスクスケジューラを利用することで、周期的に実行することができる。
（２）コマンド実行情報格納部２００に格納されるコマンド実行情報２１１は、外部コマンド３００の実行状態に関する情報を記録するファイルである。
（３）外部コマンド３００（コマンドネット）は、コマンドネット実行システム１００とは別プロセスとして実行される複数の外部コマンド（構成コマンド）からなる。
【００２０】
（コマンドネット実行システム１００）
（１）コマンドネット情報格納部１１０に格納されるコマンドネット情報１１１は、実行する複数の外部コマンド３００（コマンドネット）の情報を管理する情報である。コマンドネット情報１１１は、予め設定された内容が格納される。
（２）コマンド制御部１２０は、コマンドネット情報１１１とコマンド実行情報２１１とをもとに、外部コマンド３００の実行制御を行う。
（３）エラー時動作判定部１３０は、異常終了による中断からのリカバリの際の追加実行の要否などを判定する。コマンド制御部１２０とエラー時動作判定部１３０とは、コマンド処理部を構成する。
（４）コマンド実行部１４０は、コマンド制御部１２０からの指示に従って外部コマンド３００を実行し、実行結果をコマンド制御部１２０に返す。
【００２１】
（コマンドネット情報１１１）
コマンドネット情報１１１は、コマンドネットを構成する外部コマンド３００の実行順序などに関する情報を記録するコマンドリスト１１１ａと、コマンドネット内のコマンドが異常終了した際のシステムの動作を判断するために用いるエラー時動作情報１１１ｂとを有する。以下にコマンドリスト１１１ａ、エラー時動作情報１１１ｂを説明する。
【００２２】
（コマンドリスト１１１ａ）
図４はコマンドリスト１１１ａの一例を示す図である。コマンドリスト１１１ａは、コマンドの実行順序を表す順番１１１ａ−１、コマンドを起動する際のコマンドライン情報を表すコマンドライン１１１ａ−２、コマンド実行結果の正常・異常を判定するための式を表す成否判定式１１１ａ−３を有するレコードの集まりとして定義される。コマンドネットの一つのコマンドは、一つのレコードとして指定する。コマンドライン１１１ａ−２では実際のコマンドラインの値以外に、変数を用いることでコマンド間でのデータ受け渡しといった指定が可能である。
【００２３】
（エラー時動作情報１１１ｂ）
図５は、エラー時動作情報１１１ｂの一例を示す図である。実行コマンド１１１ｂ−１とエラーコマンド１１１ｂ−２とは、それぞれコマンドリスト１１１ａの各レコードに対応付けられている。図５の（１）等がコマンドの順番を示す。実行コマンド１１１ｂ−１は、コマンドネットの内での処理対象のコマンドを示し、エラーコマンド１１１ｂ−２は、異常終了しコマンドネットが中断する原因となったコマンドを示す。
【００２４】
（判定用テーブル１１１ｂ−３）
判定用テーブル１１１ｂ−３は、縦軸が実行コマンド１１１ｂ−１、横軸がエラーコマンド１１１ｂ−２からなるテーブルであり、エラー時動作を判定するためのフラグ情報が記録される。フラグは、三つのビットから構成されている。図５に示すフラグのうち、左から順に、第１フラグ、第２フラグ（実行可否情報の一例）、第３フラグ（リカバリ実行要否情報の一例）と呼ぶこととする。
（１）第１フラグは、エラー時動作（１＝中断、０＝続行または適用外）、
（２）第２フラグは、リカバリ前実行の可否（１＝不可、０＝可能または適用外）、
（３）第３フラグは、追加実行の要否（１＝必要、０＝不要または適用外）を示す。
判定用テーブル１１１ｂ−３は、コマンドネットのｍ番目のコマンドで異常終了が発生したときにｎ番目のコマンドの動作を判定する場合、ｎ行ｍ列にあるフラグを参照する。なお、コマンドネット情報１１１は予めコマンドネット実行システム１００に組み込まれていても、あるいはファイルやデータベースといった外部記憶装置に格納され、実行時にコマンドネット実行システム１００が読み込んでもよい。
【００２５】
（コマンド実行情報２１１）
図６は、コマンド実行情報２１１の各状態を示す図である。コマンド実行情報２１１は、コマンドネット状態２１１ａ、エラーコマンド情報２１１ｂ、実行履歴情報２１１ｃを有する。コマンド実行情報２１１は、コマンド制御部１２０によって、更新される。
（１）コマンドネット状態２１１ａは、コマンドネット実行システム１００により実行されたコマンドネットの実行結果状態を表す。コマンドネット状態２１１ａは、「正常終了」、「終了（異常コマンドあり）」、「異常終了」の３つの状態がある。これらは、動作の説明で述べる。
（２）エラーコマンド情報２１１ｂは、コマンドネットの中で任意のコマンドが異常終了（すなわちコマンドネット状態２１１ａが「異常終了」と記録される場合）した際の「エラーコマンド」の情報を記録する。ここで「エラーコマンド」とは、「異常終了」したコマンド（後述する図８のＳ４８で続行不可と判定されたコマンド）である。
（３）実行履歴情報２１１ｃは、コマンドの異常終了により中断されたコマンドネットがリカバリによる再実行の前に周期的実行により呼びだされたときの実行履歴が記録される。「実行履歴」については、動作の説明で詳しく説明する。
【００２６】
（コマンドネット状態２１１ａ〜実行履歴情報２１１ｃ）
図７は、コマンド実行情報２１１の内容を示す図である。
（１）コマンドネット状態２１１ａは、「正常終了」、「終了（異常コマンド有）」、「異常終了」のいずれかが記録される。
（２）エラーコマンド情報２１１ｂは、「異常終了」したコマンドのコマンドネット内の位置、異常終了の際のコマンドライン文字列、入力データなどを含む。
（３）実行履歴情報２１１ｃは、異常終了後であってリカバリ前にコマンドネットが起動されたとき、そのコマンドネットで処理を中断した際、次に実行すべきコマンドに関する情報（コマンドネット内の位置、コマンドライン文字列、入力データなど）が記録される。
【００２７】
次に動作について説明する。コマンドネット実行システム１００における周期的なコマンドネット実行処理の流れを図８のフローチャートを用いて説明する。
【００２８】
（動作１：コマンド実行処理）
図８は、本実施の形態１の周期的なコマンドネット実行の任意の一周期におけるコマンドネット実行手順を示すフローチャートであり、周期的な実行では図８の手順が繰り返される。
【００２９】
ステップ４１で、タスクスケジューラなどからコマンドネット実行システム１００が起動され、コマンドネットの実行を開始する。
【００３０】
ステップ４２で、コマンド制御部１２０はコマンド実行情報２１１の内容を読み込む。ここで初回の実行といった理由によりコマンド実行情報２１１が存在しない場合はコマンドネット状態２１１ａは「正常終了」、エラーコマンド情報２１１ｂ及び実行履歴情報２１１ｃは無いものとして処理を続ける（図６（ａ）の状態）。
【００３１】
ステップ４３で、コマンド制御部１２０はコマンドネット状態２１１ａを調べ、コマンドネット状態２１１ａが「異常終了」（図６（ｃ）あるいは（ｄ）の状態）を示す場合はステップ５０に、そうでない場合はステップ４４に進む。なお、コマンドネット状態２１１ａが「異常終了」を示す場合、コマンドネットの周期的実行において異常終了による処理の中断が起こり、その中断がリカバリされていないことを表す。コマンドネット状態２１１ａが「正常終了」（図６（ａ）の状態）を示す場合は、これまでの周期的実行において問題のない状態であることを表す。コマンドネット状態２１１ａが「終了（異常コマンド有）」（図６（ｂ）の状態）を示す場合は、周期的実行には支障がないが、処理が完了していないコマンドが残っていることを表す。
【００３２】
（Ｓ４３のＮＯ：異常終了ではない場合）
ステップ４４で、コマンド制御部１２０は、コマンドリスト１１１ａから実行すべきコマンドライン１１１ａ−２を取り出し、コマンド実行部１４０にコマンドの実行を指示する。コマンド実行部１４０は指示に従い外部コマンド３００の該当するコマンドを実行し、実行結果をコマンド制御部１２０に返す。
【００３３】
ステップ４５で、コマンド制御部１２０はコマンド実行部１４０から受け取った実行結果をもとに、「成否判定式１１１ａ−３」を使ってコマンド実行が正常終了したかエラー終了したか判定し、正常終了した場合はステップ４６へ、エラー終了した場合はステップ４８に進む。
【００３４】
（Ｓ４５のＮＯ：正常の場合）
ステップ４６で、コマンド制御部１２０は、コマンドリスト１１１ａに未実行のコマンドが残っているか調べ、残っている場合はステップ４４に、残っていない場合はステップ４７に進む。
【００３５】
ステップ４７で、コマンド制御部１２０はコマンドネット実行で続行可能なエラーが発生したコマンドがあった場合（Ｓ４８のＹＥＳが存在する場合）、そのコマンドに関する情報（コマンドリスト１１１ａ内の順番、コマンドライン文字列、入力データなど）を実行履歴情報２１１ｃに追加し、コマンドネット状態２１１ａに終了（異常コマンド有）を設定して、コマンド実行情報２１１を更新して終了する。
【００３６】
（Ｓ４５のＹＥＳ：エラー時動作判定）
ステップ４８では、コマンド制御部１２０は、エラー時動作情報１１１ｂと、エラーの発生したコマンドのコマンドリスト１１１ａにおける順番とをエラー時動作判定部１３０に渡す。エラー時動作判定部１３０は、判定用テーブル１１１ｂ−３で実行コマンド１１１ｂ−１、エラーコマンド１１１ｂ−２が共にエラーの発生したコマンドの順番の位置の第１フラグ値を参照し、エラー時動作が中断か続行可能か調べ、結果をコマンド制御部１２０へ返す。コマンド制御部１２０は中断の場合はステップ４９に、続行可能な場合はステップ４６に進む。
【００３７】
ステップ４９で、コマンド制御部１２０はコマンドネット状態２１１ａを「異常終了」に、エラーコマンド情報２１１ｂにコマンドネット内の順番１１１ａ−１、コマンドライン文字列、入力データなどを設定し、コマンド実行情報２１１を更新して終了する（図６（ｃ））。
【００３８】
（Ｓ４３のＹＥＳ：異常終了の場合）
ステップ５０では、コマンド制御部１２０は、エラー時動作情報１１１ｂと「エラーコマンド情報２１１ｂ」に含まれるエラーコマンドのコマンドリスト１１１ａにおける順番とをエラー時動作判定部１３０に渡す。エラー時動作判定部１３０は、判定用テーブル１１１ｂ−３で、「エラーコマンド情報２１１ｂ」に記載されているエラーコマンドの順番の列の第２フラグ値を使って、コマンドリスト１１１ａのコマンドが、リカバリ前に実行可能か判定し、判定結果をコマンド制御部１２０に返す。コマンド制御部１２０は、実行不可のコマンド（第２フラグ値＝１）が現れるまで、コマンドリスト１１１ａのコマンドを順に実行する。
【００３９】
ステップ５１ではコマンド制御部１２０は実行を停止したコマンドに関する情報（コマンドリスト１１１ａ内の順番１１１ａ−１、コマンドライン文字列、入力データなど）を実行履歴情報２１１ｃに追加し、コマンド実行情報２１１を更新して終了する（図６（ｄ））。
【００４０】
以上から、周期的なコマンドネットの実行において、正常状態およびコマンド異常終了による中断後のリカバリ前状態からの実行においても、コマンドネットを停止することなく継続的に実行できる。
【００４１】
図９は、図８の処理が実行される場合に、具体例を用いて、コマンド実行情報２１１の内容の推移を示した図である。上記で述べた図８の動作１を図９を参照して更に具体的に説明する。
【００４２】
図９（ａ）は、タスクスケジューラが、コマンドＣ１〜Ｃ４からなるコマンドネットを周期的に起動する場合を示している。図９（ａ）の左列は、図８のコマンドネット実行処理を実行した場合、Ｃ１、Ｃ２、Ｃ４は「丸」によって示される正常終了をし、Ｃ３は「三角」によって示される「終了（異常コマンド）」をするものとする。また、図９で使用する「四角」は未実施のコマンドを示し、「×」は異常終了のコマンドを示すものとする。
図９（ｂ）は、（ａ）の左列に対応するコマンド実行情報２１１を示す。
図９（ｃ）は、図９の設例におけるエラー時動作情報１１１ｂを示す。
図９（ｄ）は、（ｃ）のエラー時動作情報１１１ｂに基づきコマンドが実行された状態（中央列、右列）を示している。また、左列は、図８のコマンドネット実行処理を実行した場合、Ｃ１、Ｃ２は正常終了し、Ｃ３は異常終了し、Ｃ４は未実施となる（Ｃ３が異常終了のため）ことを示している。
図９（ｅ）は、（ｄ）の左列の実行後におけるコマンド実行情報２１１を示す。
図９（ｆ）は、（ｄ）の中央列の実行後におけるコマンド実行情報２１１を示す。
図９（ｇ）は、（ｄ）の右列の実行後におけるコマンド実行情報２１１を示す。
【００４３】
（動作１−１：続行可能なエラー発生の場合）
まず、続行可能なエラーが発生する場合（Ｓ４８のＹＥＳとなる場合）を説明する。ステップ４１で、タスクスケジューラによって、図９（ａ）左列のコマンドネット（Ｃ１〜Ｃ４）が起動される。なお、以下の説明では、ステップ４１等はＳ４１と表記する。
【００４４】
Ｓ４２で、コマンド制御部１２０は、コマンド実行情報２１１の内容を読み込む。図９（ａ）の左列の場合は初回実行を想定し、コマンド実行情報２１１は、図６（ａ）（正常終了）の状態とする。
【００４５】
Ｓ４３で、コマンド制御部１２０はコマンドネット状態２１１ａを調べる。図６（ａ）の状態（正常終了）のため、Ｓ４４に進む。
【００４６】
Ｓ４４で、コマンド制御部１２０は、コマンドＣ１の実行をコマンド実行部１４０に指示する。コマンド実行部１４０は指示に従いコマンドＣ１を実行し、実行結果をコマンド制御部１２０に返す。
【００４７】
Ｓ４５で、コマンド制御部１２０はコマンド実行部１４０から受け取った実行結果をもとに、「成否判定式１１１ａ−３」を使ってコマンドＣ１が正常終了したかエラー終了したか判定する。この例では、コマンドＣ１は正常終了するので、処理はＳ４６に進む。
【００４８】
Ｓ４６で、コマンド制御部１２０は、コマンドリスト１１１ａに未実行のコマンドが残っているか調べ、残っている場合はＳ４４に、残っていない場合はＳ４７に進む。この例では、次にコマンドＣ２があるので、Ｓ４４に進む。コマンドＣ２は正常終了するので、Ｓ４４→Ｓ４５→Ｓ４６へと進み、Ｓ４６において、コマンドＣ３があるのでＳ４４、Ｓ４５と進む。
【００４９】
Ｓ４５で、コマンド制御部１２０は、判定式からコマンドＣ３を実行エラーと判定する。また、Ｓ４８で、エラー時動作判定部１３０は、エラー時動作情報１１１ｂの判定用テーブル１１１ｂ−３の第１フラグから、コマンドＣ３を続行可能と判定し、Ｓ４６に進む。
【００５０】
Ｓ４６で、コマンドＣ４があるので、コマンドＣ４が実行される。コマンドＣ４は正常終了するので、コマンドＣ４の処理はＳ４６→Ｓ４４→Ｓ４５→Ｓ４６のループ経路を進む。Ｓ４６では残りのコマンドは無いので、処理はＳ４７に進む。
【００５１】
Ｓ４７で、図９（ｂ）に示すように、コマンド制御部１２０は、コマンドネット実行（Ｃ１〜Ｃ４）で続行可能なエラーが発生したコマンドＣ３があったので、コマンドＣ３に関する情報（コマンドリスト１１１ａ内の順番、コマンドライン文字列、入力データなど）を実行履歴情報２１１ｃに追加し、コマンドネット状態２１１ａに「終了（異常コマンド有）」を設定して、コマンド実行情報２１１を更新して終了する。
【００５２】
（動作１−２：異常終了する場合）
以上の動作は、続行可能な実行エラーの場合の具体例を説明したが、次に、続行不能な実行エラー（異常終了）の場合を説明する。
【００５３】
Ｓ４１で、タスクスケジューラによって、図９（ｄ）の左列のコマンドネット（Ｃ１〜Ｃ４）が起動されるとする。
【００５４】
Ｓ４２で、コマンド制御部１２０は、コマンド実行情報２１１の内容を読み込む。図９（ｄ）左列の場合は初回実行を想定し、図６（ａ）の状態（正常終了）とする。
【００５５】
Ｓ４３で、コマンド制御部１２０はコマンドネット状態２１１ａを調べる。図６（ａ）の状態（正常終了）のため、Ｓ４４に進む。コマンドＣ１，コマンドＣ２については図９（ｄ）左列に示すように正常終了するコマンドであるため、これらの処理はＳ４４→Ｓ４５→Ｓ４６→Ｓ４４のループを進む。
【００５６】
Ｓ４６で、コマンド制御部１２０は、次にコマンドＣ３があるので、Ｓ４４の処理に進む。コマンドＣ３は、図９（ｄ）に示すように異常終了するコマンドであるため、処理は、Ｓ４４→Ｓ４５→Ｓ４８へと進む。Ｓ４８で、エラー時動作判定部１３０は、エラー時動作情報１１ｂの判定用テーブル１１１ｂ−３の第１フラグから、コマンドＣ３を続行ＮＧと判定し、処理はＳ４９に進む。
【００５７】
ステップ４９では、図９（ｅ）に示すように、コマンド制御部１２０は、コマンドネット状態２１１ａを「異常終了」に、エラーコマンド情報２１１ｂにコマンドＣ３のコマンドネット内の順番である「３」、コマンドライン文字列、入力データなどを設定し、コマンド実行情報２１１を更新して終了する。
【００５８】
（動作１−３：異常終了後かつリカバリ前の周期的実行）
次に、コマンド実行情報２１１が図９（ｅ）の状態において、リカバリ前にコマンドネットが再び起動された場合を説明する。これは図９（ｄ）の中央列の場合に相当する。
【００５９】
Ｓ４１で、図９（ｄ）の中央列のコマンドネットが、タスクスケジューラによって起動される。
【００６０】
Ｓ４２で、コマンド制御部１２０は、コマンド実行情報２１１の内容を読み込む。この場合は、コマンド実行情報２１１は、図９（ｅ）の状態（異常終了）である。従って、Ｓ４２→Ｓ４３→Ｓ５０へと進む。
【００６１】
Ｓ５０において、コマンド制御部１２０は、エラー時動作情報１１１ｂと「エラーコマンド情報２１１ｂ」に含まれるエラーコマンドのコマンドリスト１１１ａにおける順番とをエラー時動作判定部１３０に渡す。図９（ｅ）の場合、コマンド制御部１２０は、エラー時動作情報１１１ｂと、エラーコマンドであるコマンドＣ３のコマンドリスト１１１ａにおける順番「３」とをエラー時動作判定部１３０に渡す。エラー時動作判定部１３０は、図９（ｃ）に示すエラー時動作情報１１１ｂで、コマンドＣ３の順番「３」の列（すなわち，ＡＢＴ（３））の第２フラグ値を使って、コマンドリスト１１１ａのコマンド（この場合、Ｃ１〜Ｃ４）が、リカバリ前に実行可能か判定し、判定結果をコマンド制御部１２０に返す。図９（ｃ）の例では、エラー時動作判定部１３０は、コマンドＣ１、Ｃ４については第２フラグが「０」であるためリカバリ前の実行が可能と判定し、コマンドＣ２、Ｃ３については第２フラグが「１」であるためリカバリ前の実行が不可と判定する。コマンド制御部１２０は、エラー時動作判定部１３０によって実行可能と判定されたコマンドＣ１、Ｃ４を実行する。
【００６２】
ステップ５１では、コマンド制御部１２０は、実行を停止したコマンドＣ２、Ｃ３に関する情報（コマンドリスト１１１ａ内の順番１１１ａ−１、コマンドライン文字列、入力データなど）を実行履歴情報２１１ｃに追加し、コマンド実行情報２１１を更新して終了する。図９（ｆ）は、図９（ｅ）に対して、コマンドＣ２、Ｃ３に関する情報が実行履歴情報２１１ｃに追加された状態を示している。
【００６３】
（動作１−４：さらに、異常終了後かつリカバリ前の周期的実行）
次に、コマンド実行情報２１１が図９（ｆ）の状態において、再びコマンドネットが起動された場合を説明する。これは図９（ｄ）の右列がタスクスケジューラによって起動された場合である。
【００６４】
Ｓ４１→Ｓ４２→Ｓ４３→Ｓ５０までは、「動作１−３」の場合と同様である。
【００６５】
Ｓ５０において、図９（ｄ）の右列に示すように、「動作１−３」の場合と同様に、コマンドＣ１、Ｃ４のみが実行され、処理はＳ５１に進む。
【００６６】
ステップ５１では、「動作１−３」の場合と同様に、コマンド制御部１２０は、実行を停止したコマンドＣ２、Ｃ３に関する情報（コマンドリスト１１１ａ内の順番１１１ａ−１、コマンドライン文字列、入力データなど）を実行履歴情報２１１ｃに追加し、コマンド実行情報２１１を更新して終了する。図９（ｇ）は、図９（ｆ）に対して、コマンドＣ２、Ｃ３に関する情報が実行履歴情報２１１ｃに追加された状態を示している。
【００６７】
以上、図９を参照して具体的に説明したように、周期的なコマンドネットの実行において、正常状態およびコマンド異常終了による中断後のリカバリ前状態からの実行においても、コマンドネットを停止することなく継続的に実行できる。
【００６８】
（動作２：リカバリ処理）
コマンド異常終了による中断後のリカバリ実行処理の流れを図１０のフローチャートを用いて説明する。図１０は、周期的なコマンドネット実行のリカバリ実行手順を示すフローチャートである。なお、図１０は、異常終了したコマンドから異常原因が既に取り除かれた後の「再実行処理」をリカバリ処理として示している。
【００６９】
ステップ６１で、管理者などがコマンドネット実行システム１００をリカバリ用に起動し、コマンドネットの実行を開始する。リカバリ用としての指示は、コマンドネットのパラメータなどで指定する。
ステップ６２で、コマンド制御部１２０はコマンド実行情報２１１の内容を読み込む。
ステップ６３で、コマンド制御部１２０は、コマンドネット状態２１１ａを調べ、「異常終了」を示す場合はステップ６６に、そうでない場合（終了または正常終了）は、ステップ６４に進む。
【００７０】
（Ｓ６３のＮＯ：異常終了でない場合）
ステップ６４で、コマンド制御部１２０は実行履歴情報２１１ｃを調べ、実行履歴情報２１１ｃにデータが存在する場合はステップ６５に、存在しない場合はそのまま終了する。実行履歴情報２１１ｃにデータが存在する場合（図６（ｂ））、周期的実行には支障がないが、処理の完了していないコマンドが残っていることを示している。
【００７１】
（Ｓ６４の判定で、実行履歴情報＝有り）
ステップ６５で、コマンド制御部１２０は実行履歴情報２１１ｃのデータをもとに、コマンド実行部１４０に対してコマンドの実行を指示する。コマンド実行部１４０は指示に従ってコマンドを実行する。実行履歴情報２１１ｃに記録されているすべてのコマンドの実行が完了した後、ステップ６９に進む。
【００７２】
（Ｓ６３のＹＥＳ：異常終了の場合）
ステップ６６で、コマンド制御部１２０はエラーコマンド情報２１１ｂをもとに、コマンド実行部１４０に対してコマンドの実行を指示、コマンド実行部１４０は指定されたコマンドを実行し、ステップ６７に進む。
【００７３】
（追加実行の要否判定）
ステップ６７で、コマンド制御部１２０は、エラー時動作情報１１１ｂと、エラーコマンド情報２１１ｂに記載されたエラーコマンドのコマンドリスト１１１ａにおける順番とを、エラー時動作判定部１３０に渡す。エラー時動作判定部１３０は、判定用テーブル１１１ｂ−３で、エラーコマンド情報２１１ｂに記載されたエラーコマンドの示す順番の列の第２フラグ値、第３フラグ値を使って、追加実行の必要性を判定する。具体的には、判定用テーブル１１１ｂ−３の該当する列の先頭からリカバリ前実行の可否を示す第２フラグの値が不可（フラグ値＝１）の行まで移動し、その行の追加実行の要否を示す第３フラグ値が必要（フラグ値＝１）の場合はステップ６８に、そうでない場合はステップ６９へ進む。
【００７４】
（Ｓ６７の判定で必要あり）
ステップ６８で、実行履歴情報２１１ｃのデータをもとに、コマンド制御部１２０はコマンドネットの追加実行を行う。実行履歴情報２１１ｃに記録されているすべてのコマンドネットの実行が完了した後、ステップ６９に進む。
ステップ６９で、コマンド制御部１２０はコマンドネット状態２１１ａを正常終了に、エラーコマンド情報２１１ｂと実行履歴情報２１１ｃを初期化して、コマンド実行情報２１１を更新して終了する（図６（ａ））。
【００７５】
以上から、コマンドネットの異常終了による中断からのリカバリ処理において、エラー時動作情報１１１ｂを使用することで、再実行の際に追加実行の必要性を判定し、冗長なコマンド実行を回避することができる。
【００７６】
（動作３：判定用テーブル１１１ｂ−３の定義）
次に、エラー時動作情報１１１ｂの判定用テーブル１１１ｂ−３の定義処理の流れを図１１のフローチャートを用いて説明する。図１１は、エラー時動作情報１１１ｂの定義手順を示すフローチャートである。
【００７７】
（ステップ７１）
ステップ７１で、コマンドリスト１１１ａの情報をもとにコマンドネットを構成するコマンドの一覧を実行する順番に列挙する。
【００７８】
（ステップ７２）
ステップ７２で、列挙したコマンドネットのコマンド一覧において、各コマンド間の相互依存関係を明確にする。「相互依存関係」とは、あるコマンドの出力が、別のコマンドの入力として使用されることを指す。また、コマンドネットが周期的に実行される場合に、前回のコマンドネットの実行結果を入力として使用する場合も依存関係があることとなる。
【００７９】
（ステップ７３）
ステップ７３で、コマンドネット内のコマンドの処理単位を明確にする。「処理単位」とは、複数のコマンドで構成される処理の意味的なまとまりであり、処理の意味的な区切りとなる。
【００８０】
（ステップ７４）
ステップ７４で、コマンドネットを構成するコマンド数分の行と列を持つテーブルを用意して、すべてのデータを０で初期化する。これが判定用テーブル１１１ｂ−３のもとになる。
【００８１】
（ステップ７５）
ステップ７５で、ステップ７２で調べたコマンド間の相互依存関係をもとに、エラー時動作を示す第１フラグを設定する。エラー時動作は各コマンドについて、行と列がコマンド位置のデータについてのみ設定する。コマンドが以降の別のコマンドと依存関係がある場合は、エラー時動作を示す第１フラグの値を１（中断）に設定する。
【００８２】
（ステップ７６）
ステップ７６で、ステップ７３で調べたコマンドの処理単位をもとに、リカバリ前実行の可否を示す第２フラグを設定する。判定用テーブル１１１ｂ−３の各列において、列の位置に相当するエラーコマンド１１ｂ−２と同一の処理単位に含まれる実行コマンド１１１ｂ−１行のデータについて、リカバリ前実行の可否を示す第２フラグの値を１（不可）に設定する。
【００８３】
（ステップ７７）
ステップ７７ではステップ７５で設定したエラー時動作を示す第１フラグと、ステップ７６で設定したリカバリ前実行の可否を示す第２フラグ及びコマンド仕様をもとに、追加実行の要否を示す第３フラグを設定する。判定用テーブル１１１ｂ−３の各列において、先頭行からリカバリ前実行の可否を示す第２フラグの値が不可の行まで移動する。その行に対応するコマンドの仕様をもとに、入力内容がコマンド実行毎に個別に分ける必要があるか、あるいは複数の入力をまとめて集約可能か調べて、集約できない場合は追加実行の要否を示す第３フラグの値を１（必要）に設定する。入力集約の可能不可能の判断は、コマンドリスト１１１ａの定義者にとっては通常容易に行えるが、明確な判断ができないコマンドが存在した場合は、第３フラグの値を１（必要）に設定することとする。
【００８４】
以上から、エラー時動作情報１１１ｂの判定用テーブル１１１ｂ−３を定義することができ、周期的実行やリカバリ実行におけるエラーに対する動作判定を行うことができる。
【００８５】
以上のように、コマンドネットにおけるエラー時動作情報１１１ｂを定義し、周期的なコマンドネット実行で任意のコマンドの異常終了による中断後、コマンドネット再実行で追加実行の必要性を判定できるようにし、冗長な外部コマンド実行を回避することで、冗長な外部コマンド起動による処理負荷を削減することができる。また、冗長な外部コマンド実行を回避することで、冗長な外部コマンド実行に伴う副作用の発生をなくすことができる。さらに、コマンドネットが任意のコマンドでの異常終了による中断後、リカバリ処理が行われる前に周期的な実行が行われても、実行可能な範囲でコマンドネットの実行が可能で、かつ、その実行自体は異常終了とはならないため、運用管理者がリカバリを直ちに実行しなくとも異常終了したコマンドネットは増加せず、また、リカバリは最初の異常終了により中断したコマンドネットに対して行うことで、中断後からリカバリ前までのすべてのコマンドネット実行がリカバリできるため、運用管理者の運用負荷を軽減することができる。
【００８６】
実施の形態２．
以上の実施形態１では、周期的に実行する外部コマンドのコマンドリスト１１１ａと、コマンドが異常終了した際のシステムの動作を判断するためのエラー時動作情報１１１ｂとを一組として定義したが、実施の形態２では、メールアーカイブシステムにおいて、予め周期的に実行する外部コマンドが限定され、その振る舞いを認識している場合にコマンドリストとは独立してエラー時動作情報を管理する実施形態を示す。
【００８７】
図１２は、メールアーカイブシステムにおける電子メールロード処理の周期的実行での異常終了時のリカバリ方式を行うコマンドネット実行装置１０００の構成図である。
【００８８】
図１２において、コマンドネット実行装置１０００は、コマンドネット実行システム１００とコマンド実行情報格納部２００とから構成される。
（１）メールアーカイブサーバ２０００は、メールアーカイブシステム４００が動作するサーバである。（２）コマンドリスト１１は、コマンドネットを構成するロードユーティリティ４１０、範囲管理ユーティリティ４２０、アーカイブユーティリティ４３０の実行順序に関する情報である。
（２）エラー時動作情報２１は、ロードユーティリティ４１０、範囲管理ユーティリティ４２０、アーカイブユーティリティ４３０について、各コマンドが異常終了した際のシステムの動作を判断するためのエラー時動作情報である。
（３）エラー時動作判定部１３０は、実施の形態１と同じく、コマンドネット内のコマンドが異常終了した際のシステムの動作を判断するモジュールである。
（４）メールアーカイブコマンド実行部１４０２は、実施の形態１のコマンド実行部１４０と同じく、メールアーカイブシステム４００が提供するロードユーティリティ４１０、範囲管理ユーティリティ４２０、アーカイブユーティリティ４３０を実行するモジュールである。
（５）メールアーカイブシステム４００は、電子メールファイルをデータベース６００に格納し、格納した電子メールに対して検索などの機能を提供するプロセスである。
（６）ロードユーティリティ４１０は、メールアーカイブシステム４００に電子メールをロードする外部コマンドである。ロードユーティリティ４１０は、電子メールを格納している電子メール格納部と接続しており、電子メール格納部から電子メールを取得する。
（７）範囲管理ユーティリティ４２０は、データベース６００において電子メールの格納領域を区切る範囲の設定を行うための外部コマンドである。
（８）アーカイブユーティリティ４３０は、データベース６００の全体や範囲管理ユーティリティ４２０により区切られた格納領域の範囲をファイルにアーカイブする外部コマンドである。
（９）タスクスケジューラ５００は、コマンドネット実行システム１００を周期的に起動するスケジューラプロセスである。
（１０）データベース６００は、メールアーカイブシステム４００が管理する電子メールを格納するデータベースである。
【００８９】
図１３は、図１２のコマンド実行情報２１１に含まれるコマンドリスト１１の一例を示す図である。コマンドリスト１１は、コマンドの実行順序を表す順番１１−１、コマンドを識別するＩＤを表すコマンドＩＤ１１−２、コマンドのパラメータを表すコマンドパラメータ１１−３等を有するレコードの集まりとして定義される。
【００９０】
本実施の形態２では、コマンドネット実行システム１００が実行する外部コマンドは、メールアーカイブシステム４００が提供するロードユーティリティ４１０、範囲管理ユーティリティ４２０、アーカイブユーティリティ４３０と限定される。このため、メールアーカイブコマンド実行部１４０２において各コマンドの識別ＩＤを定義して、その内容をコマンドＩＤ１１−２に指定する。また、メールアーカイブコマンド実行部１４０２では、コマンド毎に成否判定式を予め組み込んでおくことで、コマンドリスト１１では、実施の形態１のコマンドリスト１１１ａに存在する成否判定式１１１ｃを省略できる。
【００９１】
図１４は、本実施の形態２におけるエラー時動作情報２１の一例を示す図である。実行コマンド２１−１とエラーコマンド２１−２は、それぞれロードユーティリティ４１０、範囲管理ユーティリティ４２０、アーカイブユーティリティ４３０に対応付けられる。実行コマンド２１−１は、コマンドネットの内での処理対象のコマンドを示し、エラーコマンド２１−２は、異常終了しコマンドネットが中断する原因となったコマンドを示す。
【００９２】
（判定用テーブル２１−３）
判定用テーブル２１−３は、縦軸が実行コマンド２１−１、横軸がエラーコマンド２１−２からなるテーブルであり、エラー時動作を判定するためのフラグ情報（第１フラグ〜第３フラグ）が記録される。フラグの内容は、実施の形態１の判定用テーブル１１１ｂ−３と同様である。
【００９３】
ここで、メールアーカイブシステム４００のユーティリティによる電子メールロード処理は、必ずロードユーティリティ４１０、範囲管理ユーティリティ４２０、アーカイブユーティリティ４３０の順番で呼び出される。
【００９４】
（コマンド実行処理の動作）
次に動作について説明する。メールアーカイブシステムでの電子メールロード処理における周期的な実行処理の流れを、図１５のフローチャートを用いて説明する。図１５は、実施の形態２の周期的なコマンドネット実行の任意の一周期におけるコマンドネット実行手順を示すフローチャートであり、周期的な実行では図１５の手順が繰り返される。図１５は、実施の形態１の図８に同じである。すなわち、ステップＳ１０１〜Ｓ１１１は、図８のＳ４１〜Ｓ５１に対応する。
【００９５】
（１）ステップ１０１で、タスクスケジューラ５００からコマンドネット実行システム１００が起動され、コマンドネット（電子メールのロード処理）の実行を開始する。
（２）ステップ１０２で、コマンド制御部１２０は、コマンド実行情報２１１の内容を読み込む。
（３）ステップ１０３で、コマンドネット状態２１１ａを調べ、コマンドネット状態２１１ａが異常終了を示す場合はステップ１１０に、そうでない場合はステップ１０４に進む。
（４）ステップ１０４で、コマンド制御部１２０はコマンドリスト１１から実行すべきコマンドＩＤ１１−２とコマンドパラメータ１１−３を取り出し、メールアーカイブコマンド実行部１４０２にコマンドの実行を指示する。メールアーカイブコマンド実行部１４０２は、指示に従い、ロードユーティリティ４１０か範囲管理ユーティリティ４２０、アーカイブユーティリティ４３０の中でいずれか該当するコマンドを実行し、実行の成否をコマンド制御部１２０に返す。
（５）ステップ１０５で、コマンド制御部１２０はメールアーカイブコマンド実行部１４０２からの結果をもとに、コマンドが「正常終了」した場合はステップ１０６へ、エラー終了した場合はステップ１０８に進む。
（６）ステップ１０６で、コマンド制御部１２０は、コマンドリスト１１に未実行のコマンドが残っているか調べ、残っている場合はステップ１０４に、残っていない場合はステップ１０７に進む。
（７）ステップ１０７で、コマンド制御部１２０は、コマンドネット実行で続行可能なエラーが発生したコマンドがあった場合、そのコマンドに関する情報（コマンドリスト１１内の順番１１−１、コマンドパラメータ、入力データなど）を実行履歴情報２１１ｃに追加し、コマンドネット状態２１１ａに「終了（異常コマンド有）」を設定して、コマンド実行情報２１１を更新して終了する。
（８）ステップ１０８では、コマンド制御部１２０は、エラー時動作情報２１と、エラーの発生したコマンドのコマンドリスト１１におけるコマンドＩＤ１１−２をエラー時動作判定部１３０に渡す。エラー時動作判定部１３０は、コマンドＩＤ１１−２が示すコマンドのエラー時動作（第１フラグ）が中断か続行可能かを判定用テーブル２１−３から調べ、コマンド制御部１２０へ返す。コマンド制御部１２０は、中断の場合はステップ１０９に、続行可能な場合はステップ１０６に進む。
（９）ステップ１０９で、コマンド制御部１２０は、コマンドネット状態２１１ａを「異常終了」に、エラーコマンド情報２１１ｂにコマンドネット内の順番、コマンドパラメータ、入力データなどを設定し、コマンド実行情報２１１を更新して終了する。
（１０）ステップ１１０では、コマンド制御部１２０は、エラーコマンド情報２１１ｂに含まれるエラーの発生したコマンドＩＤ１１−２と、エラー時動作情報２１とをエラー時動作判定部１３０に渡す。エラー時動作判定部１３０は、コマンドＩＤ１１−２と判定用テーブル２１−３（第２フラグ）からコマンドがリカバリ前に実行可能か判定し、コマンド制御部１２０に結果を返す。コマンド制御部１２０では、実行不可のコマンドが現れるまでコマンドリスト１１のコマンドを順に実行する。
（１１）ステップ１１１では、コマンド制御部１２０は、実行を停止したコマンドに関する情報（コマンドリスト内の順番１３１、コマンドライン文字列、入力データなど）を実行履歴情報２１１ｃに追加し、コマンド実行情報２１１を更新して終了する。
【００９６】
以上から、メールアーカイブシステムにおける周期的な電子メールロード処理実行において、正常状態およびコマンド異常終了による中断後のリカバリ前状態からの実行においても、電子メールロード処理を実行できる。
【００９７】
メールアーカイブシステムにおけるコマンド異常終了による中断後のリカバリ実行処理の流れを図１６のフローチャートを用いて説明する。図１６は実施の形態２の周期的なコマンドネット実行のリカバリ実行手順を示すフローチャートである。図１６は、実施の形態１の図１０に同じである。すなわち、ステップＳ１２１〜Ｓ１２９は、図１０のＳ６１〜Ｓ６９に対応する。
【００９８】
（１）ステップ１２１で、管理者などがコマンドネット実行システム１００をリカバリ用に起動し、コマンドネット（電子メールのロード処理）の実行を開始する。リカバリ用としての指示は、コマンドネットのパラメータなどで指定する。
（２）ステップ１２２で、コマンド制御部１２０は、コマンド実行情報２１１の内容を読み込む。
（３）ステップ１２３で、コマンド制御部１２０は、コマンドネット状態２１１ａを調べ、「異常終了」を示す場合はステップ１２６に、そうでない場合はステップ１２４に進む。
（４）ステップ１２４で、コマンド制御部１２０は実行履歴情報２１１ｃを調べ、実行履歴情報２１１ｃにデータが存在する場合はステップ１２５に、存在しない場合はそのまま終了する。
（５）ステップ１２５で、コマンド制御部１２０は実行履歴情報２１１ｃのデータをもとに、メールアーカイブコマンド実行部１４０２に対してコマンドの実行を指示する。メールアーカイブコマンド実行部１４０２は指示に従ってコマンドを実行する。実行履歴情報２１１ｃに記録されているすべてのコマンドの実行が完了した後、ステップ１２９に進む。
（６）ステップ１２６で、コマンド制御部１２０は、エラーコマンド情報２１１ｂをもとに、メールアーカイブコマンド実行部１４０２に対してコマンドの実行を指示し、メールアーカイブコマンド実行部１４０２は指定されたコマンドを実行し、ステップ１２７に進む。
（７）ステップ１２７で、コマンド制御部１２０は、エラー時動作情報２１とエラーコマンド情報２１１ｂのコマンドリスト１１におけるコマンドＩＤ１１−２をエラー時動作判定部１３０に渡す。エラー時動作判定部１３０は、コマンドＩＤ１１−２と判定用テーブル２１−３（フラグ値）から追加実行の必要性を判定し、必要な場合はステップ１２８に、そうでない場合はステップ１２９へ進む。
（８）ステップ１２８で、実行履歴情報２１１ｃのデータをもとに、コマンド制御部１２０は、コマンドネットの追加実行を行う。実行履歴情報２１１ｃに記録されているすべてのコマンドネットの実行が完了した後、ステップ１２９に進む。
（９）ステップ１２９で、コマンドネット状態２１１ａを正常終了に、エラーコマンド情報２１１ｂと実行履歴情報２１１ｃを初期化して、コマンド実行情報２１１を更新して終了する。
【００９９】
以上から、メールアーカイブシステムにおけるコマンドの異常終了による中断からのリカバリ処理において、エラー時動作情報２１を使用することで、再実行の際に追加実行の必要性を判定し、冗長なコマンド実行を回避することができる。
【０１００】
以上のように、メールアーカイブシステムでの電子メールロード処理（コマンドネット）におけるエラー時動作情報を定義し、周期的なコマンドネット実行で任意のコマンドの異常終了による中断後、コマンドネット再実行で追加実行の必要性を判定できるようにし、冗長な外部コマンド実行を回避することで、冗長な外部コマンド起動による処理負荷を削減することができる。
【０１０１】
また、冗長な外部コマンド実行を回避することで、冗長な外部コマンド実行に伴う副作用の発生をなくすことができる。
【０１０２】
さらに、コマンドネットが任意のコマンドでの異常終了による中断後、リカバリ処理が行われる前に周期的な実行が行われても、実行可能な範囲でコマンドネットの実行が可能で、かつ、その実行自体は異常終了とはならないため、運用管理者がリカバリを直ちに実行しなくとも異常終了したコマンドネットは増加せず、また、リカバリは最初の異常終了により中断したコマンドネットに対して行うことで、中断後からリカバリ前までのすべてのコマンドネット実行がリカバリできるため、運用管理者の運用負荷を軽減することができる。
【０１０３】
また、エラー時動作情報をコマンドネットのコマンドリストとは別に定義できるため、コマンドネットの内容を変更してもエラー時動作情報を変更する必要がなく、変更時の作業ステップを削減できる。
【０１０４】
さらに、コマンドネットで実行する外部コマンドとその実行順序や相互依存関係などを予め特定できるため、指定すべき外部コマンドに関する情報を簡略化でき、設定コストを軽減できる。
【０１０５】
以上の実施の形態では、
複数の外部コマンドを予め定められた順序で実行し、すべてのコマンドが正常に実行されることで処理が完了するコマンド実行処理が、ある一定間隔で周期的に呼び出されるシステムにおいて、
実行する外部コマンドの一覧情報と、
外部コマンドのエラー時動作を判定するためのエラー時動作情報と、
実行状態と、処理が中断したエラーコマンド情報と、周期的な実行呼び出しに関する実行履歴情報を管理するコマンド実行情報と
を備え、
上記情報をもとに実行制御を行うコマンド制御手段と、
エラーにより外部コマンドが中断した実行のリカバリを行う際の動作を判定する手段と
を備えたことを特徴とする周期的な複数コマンド実行における異常終了時のリカバリ方式をもつコマンドネット実行装置１０００を説明した。
【０１０６】
以上の実施の形態では、
ある特定のユーティリティコマンドを予め定められた規則に従って周期的に実行することにより、電子メールをデータベースにロードする処理を行うメールアーカイブシステムにおいて、
コマンドのエラー時動作を判定するためのエラー時動作情報と、
実行するコマンドの順序情報と、その実行状態及び処理が中断したエラーコマンド情報と、周期的な実行呼び出しに関する実行履歴情報を管理するコマンド実行情報と
を備え、
上記情報をもとに実行制御を行うコマンド制御手段と、
エラーにより外部コマンドが中断した実行のリカバリを行う際の動作を判定する手段と
を備えたことを特徴とするメールアーカイブシステムの周期的な電子メールロード処理実行における異常終了時のリカバリ方式をもつコマンドネット実行装置１０００を説明した。
【０１０７】
以上の実施の形態では、
ある特定のユーティリティコマンドを予め定められた規則に従って周期的に実行することにより、電子メールをデータベースにロードする処理を行うメールアーカイブシステムにおいて、
コマンドのエラー時動作を判定するためのエラー時動作情報と、
実行するコマンドの順序情報と、その実行状態及び処理が中断したエラーコマンド情報と、周期的な実行呼び出しに関する実行履歴情報を管理するコマンド実行情報と
を備え、
上記情報をもとに実行制御を行うコマンド制御手段と、
エラーにより外部コマンドが中断した実行のリカバリを行う際の動作を判定する手段と
メールアーカイブシステムのユーティリティコマンドを実行する実行手段と
を備えたことを特徴とするメールアーカイブシステムの周期的な電子メールロード処理実行における異常終了時のリカバリ方式をもつコマンドネット実行装置を説明した。
【図面の簡単な説明】
【０１０８】
【図１】実施の形態１のコマンドネット実行装置の外観。
【図２】実施の形態１のマンドネット実行装置のハードウェア構成。
【図３】実施の形態１のマンドネット実行装置のブロック図。
【図４】実施の形態１のコマンドリスト１１１ａ。
【図５】実施の形態１のエラー時動作情報１１１ｂ。
【図６】実施の形態１のコマンド実行情報２１１の各状態を示す図。
【図７】実施の形態１のコマンド実行情報２１１の内容を示す図。
【図８】実施の形態１のコマンド実行装置によるコマンド実行のフロー。
【図９】図８の処理が実行される場合における、コマンド実行情報２１１の内容の推移の具体例を示す図。
【図１０】実施の形態１のコマンド実行装置によるリカバリ処理フロー。
【図１１】実施の形態１の判定用テーブル１１１ｂ−３の定義処理を示すフロー。
【図１２】実施の形態２のマンドネット実行装置のブロック図。
【図１３】実施の形態２のコマンドリスト１１。
【図１４】実施の形態２のエラー時動作情報２１。
【図１５】実施の形態２のコマンド実行装置によるコマンド実行のフロー。
【図１６】実施の形態２のコマンド実行装置によるリカバリ処理フロー。
【符号の説明】
【０１０９】
１１  コマンドリスト、１１−１  順番、１１−２  コマンドＩＤ、１１−３  コマンドパラメータ、２１  エラー時動作情報、１００  コマンドネット実行システム、１１０  コマンドネット情報格納部、１１１  コマンドネット情報、１１１ａ  コマンドリスト、１１１ａ−１  順番、１１１ａ−２  コマンドライン、１１１ａ−３  成否判定式、１１１ｂ  エラー時動作情報、１１１ｂ−１  実行コマンド、１１１ｂ−２  エラーコマンド、１１１ｂ−３  判定用テーブル、１２０  コマンド制御部、１３０  エラー時動作判定部、１４０  コマンド実行部、２００  コマンド実行情報格納部、２１１  コマンド実行情報、２１１ａ  コマンドネット状態、２１１ｂ  エラーコマンド情報、２１１ｃ  実行履歴情報、３００  外部コマンド、４００  メールアーカイブシステム、４１０  ロードユーティリティ、４２０  範囲管理ユーティリティ、４３０  アーカイブユーティリティ、５００  タスクスケジューラ、６００  データベース、１０００  コマンドネット実行装置、１４０２  メールアーカイブコマンド実行部。
【図１】
0004989496.tif 000002
【図２】
0004989496.tif 000003
【図３】
0004989496.tif 000004
【図４】
0004989496.tif 000005
【図５】
0004989496.tif 000006
【図６】
0004989496.tif 000007
【図７】
0004989496.tif 000008
【図８】
0004989496.tif 000009
【図９】
0004989496.tif 000010
【図１０】
0004989496.tif 000011
【図１１】
0004989496.tif 000012
【図１２】
0004989496.tif 000013
【図１３】
0004989496.tif 000014
【図１４】
0004989496.tif 000015
【図１５】
0004989496.tif 000016
【図１６】
0004989496.tif 000017