(57)【要約】【課題】ユーザが煩雑な作業を行うことなく、連結タスクのリカバリタスクとして、タスクの全てを完了させられる可能性が高い処理対象に対する処理を優先して完了可能なリカバリタスクを自動生成すること。【解決手段】デバイス管理装置１０１のタスク制御部３０１は、連結タスクに失敗した場合、該連結タスクの複数の処理対象から、該連結タスクの後段タスクのみ実行すべき処理対象群と、前段タスクから実行すべき処理対象群を抽出し（Ｓ１３０８〜Ｓ１３０９）、後段タスクのみ実行すべき処理対象群に対し、後段タスクのみを実行するタスクを作成し（Ｓ１３１０）、前段タスクから実行すべき処理対象群に対し、前段タスクから後段タスクまでを前段タスクの処理結果に関係付けて連結したタスクを作成し（Ｓ１３１２〜Ｓ１３１７）、これらのタスクをこの順に、前段タスクの処理結果に無関係に連結したリカバリタスクを作成する（Ｓ１３１１）。【選択図】図９
2017085303.tif 000002
【特許請求の範囲】
【請求項１】
複数の処理対象に対して実行するタスクを複数連続して所定の順序で実行する連結タスクを実行可能なデータ処理装置であって、
前記連結タスクの実行に失敗した場合、該連結タスクの複数の処理対象から、該連結タスクの後段タスクのみを実行すべき処理対象群と、前段タスクから実行すべき処理対象群を抽出する抽出手段と、
前記後段タスクのみ実行すべき処理対象群に対し、後段タスクのみを実行するタスクを作成する第１作成手段と、
前記前段タスクから実行すべき処理対象群に対し、前段タスクから後段タスクまでを前段タスクの結果に関係付けて連結したタスクを作成する第２作成手段と、
前記第１作成手段で作成したタスク、前記第２作成手段で作成したタスクの順に、前段タスクの結果に無関係に連結したリカバリタスクを作成する第３作成手段と、
を有することを特徴とするデータ処理装置。
【請求項２】
前記リカバリタスクを、他のタスクより優先して実行するように制御する制御手段を有することを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
前記連結タスクのリカバリに関する時刻を指定する指定手段と、
前記連結タスクの実行に失敗した場合に、前記指定手段で指定された時刻を超えているか否かを判定する判定手段と、を有し、
前記制御手段は、前記判定手段により前記指定手段で指定された時刻を超えていないと判定された場合には、前記リカバリタスクを他のタスクより優先して実行し、前記指定手段で指定された時刻を超えていると判定された場合には、前記第１作成手段で作成したタスクを他のタスクより優先して実行し、前記第２作成手段で作成したタスクを優先することなく実行するように制御することを特徴とする請求項２に記載のデータ処理装置。
【請求項４】
前記連結タスクの実行に失敗した場合に、実行待ちのタスクが存在するか否かを判定する判定手段を有し、
前記制御手段は、前記判定手段により実行待ちのタスクが存在すると判定された場合には、前記リカバリタスクを他のタスクより優先して実行し、実行待ちのタスクが存在しないと判定された場合には、前記第１作成手段で作成したタスクを他のタスクより優先して実行し、前記第２作成手段で作成したタスクを優先することなく実行するように制御することを特徴とする請求項２に記載のデータ処理装置。
【請求項５】
前記処理対象は、前記データ処理装置と同一のネットワークに接続されるものであり、
前記制御手段からの制御により、前記処理対象に対してタスクを実行する実行手段を有することを特徴とする請求項２乃至４のいずれか１項に記載のデータ処理装置。
【請求項６】
前記処理対象は、前記データ処理装置が接続されるネットワークとは異なるネットワークに接続されているものであり、
前記制御手段からの制御により、前記処理対象が接続されているネットワークに接続されて前記処理対象と該ネットワークを介して通信を行う情報処理装置が、前記処理対象に対してタスクを実行することを特徴とする請求項２乃至４のいずれか１項に記載のデータ処理装置。
【請求項７】
複数の処理対象に対して実行するタスクを複数連続して所定の順序で実行する連結タスクを実行可能なデータ処理装置の制御方法であって、
前記連結タスクの実行に失敗した場合、該連結タスクの複数の処理対象から、該連結タスクの後段タスクのみを実行すべき処理対象群と、前段タスクから実行すべき処理対象群を抽出する抽出ステップと、
前記後段タスクのみ実行すべき処理対象群に対し、後段タスクのみを実行するタスクを作成する第１作成ステップと、
前記前段タスクから実行すべき処理対象群に対し、前段タスクから後段タスクまでを前段タスクの結果に関係付けて連結したタスクを作成する第２作成ステップと、
前記第１作成ステップで作成したタスク、前記第２作成ステップで作成したタスクの順に、前段タスクの結果に無関係に連結したリカバリタスクを作成する第３作成ステップと、
を有することを特徴とするデータ処理装置の制御方法。
【請求項８】
コンピュータを、請求項１乃至６のいずれか１項に記載の手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のタスクを連結して実行する場合におけるタスク失敗時のリカバリ処理技術に関するものである。
【背景技術】
【０００２】
処理対象に対して、複数の処理を連続して実行する従来の技術として、特許文献１がある。特許文献１では、前段処理の処理結果に応じて、後段処理として、どのような処理を実施するかという判断を、処理作成時にユーザが起こり得るケースを想定し、ケース毎に処理を指定することで、連続した処理の全体が差異的に完了するようにする技術を開示している。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１１−１４１６９７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
連結タスクを、そこに含まれるタスク個々、デバイス個々の失敗を想定し、できるだけ多くの処理対象に対し連結タスク全体を完了させるには、特許文献１に開示されているように、複雑な連結タスクを作成する必要があった。また、作成が複雑なため、ユーザの誤設定も多く発生する可能性があった。
また、連結タスクが失敗した場合に、連結タスクのリカバリタスクを作成することが考えられる。しかし、連結タスクの形を変えずにリカバリタスクを作成すると、本来はより早く正常状態で稼働させられるはずのデバイスの稼働が、前タスクを失敗したデバイスのタスク完了を待たされることで、遅れてしまう可能性があった。
【０００５】
また、従来技術では、上述した、本来はより早く正常状態で稼働させられるはずのデバイスの稼働の遅れを防ぐためには、連結タスクを元にしたリカバリタスクとは別に、新規のタスクを作成する必要があった。しかし、リカバリタスクとは別の新規のタスクが自動的に作成されてしまうと、ユーザにとって未知のタスクが実行されることになり、ユーザの結果判断に混乱を生じさせる可能性があった。一方、ユーザが手動でタスクを作り直す場合が考えられるが、この場合も、連結タスクに含まれるタスク個々、デバイス個々の処理結果を見ての判断が必要になり、煩雑な作業が必要であった。 
【０００６】
本発明は、上記の問題点を解決するためになされたものである。本発明の目的は、従来のようにユーザが煩雑な作業を行うことなく、連結タスクのリカバリタスクとして、タスクの全てを完了させられる可能性が高い処理対象に対する処理を優先して完了可能なリカバリタスクを自動で生成することができる仕組みを提供することである。
【課題を解決するための手段】
【０００７】
本発明は、複数の処理対象に対して実行するタスクを複数連続して所定の順序で実行する連結タスクを実行可能なデータ処理装置であって、前記連結タスクの実行に失敗した場合、該連結タスクの複数の処理対象から、該連結タスクの後段タスクのみを実行すべき処理対象群と、前段タスクから実行すべき処理対象群を抽出する抽出手段と、前記後段タスクのみ実行すべき処理対象群に対し、後段タスクのみを実行するタスクを作成する第１作成手段と、前記前段タスクから実行すべき処理対象群に対し、前段タスクから後段タスクまでを前段タスクの結果に関係付けて連結したタスクを作成する第２作成手段と、前記第１作成手段で作成したタスク、前記第２作成手段で作成したタスクの順に、前段タスクの結果に無関係に連結したリカバリタスクを作成する第３作成手段と、を有することを特徴とする。
【発明の効果】
【０００８】
本発明によれば、従来のようにユーザが煩雑な作業を行うことなく、連結タスクのリカバリタスクとして、タスクの全てを完了させられる可能性が高い処理対象に対する処理を優先して完了可能なリカバリタスクを自動で生成することができる。
【図面の簡単な説明】
【０００９】
【図１】実施例１のデバイス管理装置を含むシステムの全体構成を例示する図
【図２】デバイス管理装置のハードウェア構成図
【図３】実施例１のデバイス管理装置のタスク処理に関連するソフトウェア構成図
【図４】単独のタスク作成画面を例示する図
【図５】連結タスク作成画面を例示する図
【図６】連結タスク作成画面の内容で作成した連結タスクの構成を例示する図
【図７】連結タスクの処理結果テーブルを例示する図
【図８】図１３の処理で作成する連結タスクのリカバリタスクを例示する図
【図９】図１２の処理で作成する連結タスクのリカバリタスクを例示する図
【図１０】タスク実行予約領域とタスク実行スレッドを例示する図
【図１１】連結タスクのリカバリタスク作成処理を例示するフローチャート
【図１２】連結タスクのリカバリタスク作成処理を例示するフローチャート
【図１３】連結タスクのリカバリタスク作成処理を例示するフローチャート
【図１４】実施例２のデバイス管理装置を含むシステムの全体構成を例示する図
【図１５】実施例２のデバイス管理装置のタスク処理に関連するソフトウェア構成図
【図１６】実施例２のＡｇｅｎｔのタスク処理に関連するソフトウェア構成図
【発明を実施するための形態】
【００１０】
以下、本発明を実施するための形態について図面を用いて説明する。
まず、本実施例において、データ処理装置であるデバイス管理装置が、管理下のデバイスに対し実行する処理を「タスク」と呼称する。ここで、デバイスに対して実行する処理とは、故障情報や状態情報、宛先表などデバイスからの情報取得、デバイスへのファームウェア、アプリケーションデータ、宛先表などのデータ配信、再起動命令、電源断命令などの命令送信である。また、本実施例のデバイス管理装置では、複数の「タスク」を連続して実行させる「連結タスク」を作成、実行することが可能である。
【実施例１】
【００１１】
図１は、本発明の実施例１を示すデバイス管理装置を含むシステムの全体構成を例示する図である。
図１において、１０１はデバイス管理装置で、ＬＡＮ１０７に接続している。デバイス管理装置１０１は、例えばパーソナルコンピュータ（ＰＣ）で構成されている。１０２はクライアントＰＣで、ＬＡＮ１０７に接続している。クライアントＰＣ１０２は、デバイス管理装置１０１が提供するユーザインタフェースを表示し、ユーザからの入力を受け付ける。１０３〜１０６は印刷装置（画像形成装置）であり、１０３、１０４、１０５は複合機、１０６はプリンタである。複合機１０３〜１０５およびプリンタ１０６は、ＬＡＮ１０７に接続しており、デバイス管理装置１０１により管理されている。
【００１２】
デバイス管理装置１０１は、複合機１０３〜１０５およびプリンタ１０６等の複数の処理対象に対して実行するタスクを複数連続して所定の順序で実行する連結タスクを実行可能なデータ処理装置である。
なお、ここでは、タスクの処理対象となるデバイスを複合機、プリンタ等の画像形成装置として説明した。しかし、タスクの処理対象となるデバイスとなるデバイスは、画像形成装置に限定されるものではなく、ネットワークカメラ、パーソナルコンピュータ、ナビゲーションシステム、テレビジョン、エアーコンディショナー、冷蔵庫等のネットワーク家電機器などの、各種の電子機器（情報処理装置）であってもよい。
【００１３】
図２は、デバイス管理装置１０１のハードウェア構成を例示するブロック図である。
ＣＰＵ２０１は、ＲＯＭ２０２やＨＤＤ２０４に記憶されたプログラムを必要に応じてＲＡＭ２０３に読み出して実行することにより、デバイス管理装置１０１全体を統括制御する。ＲＡＭ２０３は、ＣＰＵ２０１の主メモリ、ワークエリア等の一時記憶領域として用いられる。ＲＡＭ２０３には、例えば、本装置上の入出力を司る基本Ｉ／Ｏプログラム、各処理プログラムに動作環境を提供するシステム・プログラム、本実施例の処理プログラムを初めとする各種処理プログラム、関連データを格納するエリア、各種プログラムが動作する際に一時的に利用するワークエリア等が確保される。なお、容量の制約によりＲＡＭ２０３内に利用する領域が足りなくなった場合、ＨＤＤ２０４をＲＡＭ２０３の領域の一部として扱うことも可能である。
【００１４】
ＨＤＤ２０４は、デバイス管理プログラムを始めとする各種プログラム、或いは各種プログラムが利用するデータを記憶するハードディスクである。なお、ＨＤＤの代わりに又は併用してＳＳＤ（ソリッドステートドライブ）等の他の記憶装置を設けてもよい。ビデオＩ／Ｆ２０５は、ディスプレイを接続し、デバイス管理装置１０１内の各種プログラムが提供するユーザインタフェースを表示する。外部Ｉ／Ｆ２０６は、キーボードやマウスといった入力デバイスを接続し、ユーザの入力を受け付ける。ネットワークＩ／Ｆ２０７は、ＬＡＮ１０７に接続し、ＬＡＮ上の機器と通信を行う。
【００１５】
図３は、実施例１のデバイス管理装置１０１のタスク処理に関連するソフトウェア構成を例示する図である。なお、図３に示す各部は、デバイス管理装置１０１のＣＰＵ２０１がＨＤＤ２０４等に記憶されたプログラムを必要に応じてＲＡＭ２０３に読み出して実行することにより実現されるものである。
【００１６】
タスク制御部３０１は、ユーザにより作成されてデータベース３０２に格納されたタスクの内容を判断し、該タスクをデータベース３０２内に存在するタスク実行予約領域に登録する。タスク実行予約領域については、図１０で詳述する。タスク制御部３０１は、タスク実行予約領域を監視し、順次または指定時刻に起動すべきタスクを実行する。その際、タスク制御部３０１は、内部的にＲＥＳＴインタフェース３０８に含まれるタスク起動部３０６を呼び出す。また、タスク制御部３０１は、内部的にＲＥＳＴインタフェース３０８に含まれるタスク処理結果取得部３０７を呼び出し、タスクの処理結果を取得する。ここで、ＲＥＳＴとは、ＳＯＡＰを利用せずにＵＲＩによりリソースを指定し、ＨＴＴＰやＨＴＴＰＳを利用して情報を取得または設定するための手法である。ＳＯＡＰは拡張性が高いが、拡張性が高い分、開発が複雑であり、また動作保証の確認にも時間がかかる。一方、ＲＥＳＴはＨＴＴＰのＧＥＴ、ＰＯＳＴ、ＰＵＴ、ＤＥＬＥＴＥの４つのメソッドを利用し、リソース毎に固有のＵＲＩを持たせる。よって、リソースの数だけＵＲＩを使い分ける必要があるが、ＳＯＡＰと比較して開発し易く、動作確認もし易いというメリットがある。また、一般的なＨＴＴＰ通信は、処理の応答を待つ場合にコネクションを確立し続ける必要があるが、ＲＥＳＴを利用して無くすことができる。なお、本実施例においてはタスク制御部３０１からタスク起動部３０６の内部呼び出しにＲＥＳＴを用いて実現したが、これに限定するものではない。例えば、ＳＯＡＰで実現することも可能であるし、タスクリモートプロシージャコールで実現することも可能である。
【００１７】
共通ライブラリ３０５は、データベース３０２へのアクセスや、Ｗｅｂユーザインタフェースの共通部品などを提供する。ＲＥＳＴインタフェース３０８において、タスク起動部３０６は、ＨＴＴＰサーバ３０９を経由して受信されたタスク起動用のＲＥＳＴのＷｅｂサービスを解釈し、タスクの起動を行うモジュールである。また、タスク処理結果取得部３０７は、タスクの処理結果の詳細取得用のＲＥＳＴのＷｅｂサービスを解釈し、タスク処理結果の詳細を取得するモジュールである。タスクの実行は、タスク実行部１（３０３）とタスク実行部２（３０４）の２つのスレッドで実行する。即ち、最大２つのタスクが同時に実行可能となっている。また、タスクの処理対象デバイス、処理内容等の詳細は、データベース３０２に格納されている。タスク起動部３０６は、タスク制御部３０１がデータベース３０２から読み出し、タスク起動用のＲＥＳＴのＷｅｂサービスを呼び出す際に付与した情報から適当な処理プログラムを決定し、タスク実行部１（３０３）またはタスク実行部２（３０４）で実行する。
【００１８】
図４は、デバイス管理装置１０１がクライアントＰＣ１０２上に表示する単独のタスク作成画面５０１を例示する図である。単独のタスク作成画面５０１は、例えば、クライアントＰＣ１０２上で動作するＷｅｂブラウザからの要求に応じて、デバイス管理装置１０１から該Ｗｅｂブラウザに送信され、該Ｗｅｂブラウザにて表示される。
【００１９】
処理内容設定ボタン５０２は、別ウィンドウを開き、ファームアップ、設定配信等の処理内容を指定するためのものである。デバイス選択ボタン５０３は、別ウィンドウを開き、本タスクの処理対象デバイスを管理対象デバイスの中から指定するためのものである。プルダウンリスト５０４は、タスクの実行タイミングを指定するためのものである。「登録のみ」の場合、実行の設定は行わず、後に連結タスク作成時に組み込んで実行する。その他に、「即時実行」、「指定時刻実行」を選択可能である。「即時実行」は、タスク作成後すぐに実行する場合に指定する。「指定時刻実行」は、指定した時刻にタスク実行する。実行時刻は、実行時刻設定ボタン５０５により開く別ウィンドウで指定する。日付と時刻による単発実行や、毎日や曜日指定などによる定期反復実行が指定可能である。５０６は、タスクの登録名をユーザの任意に指定するための入力領域である。タスク登録ボタン５０７は、本画面で作成したタスクをデバイス管理装置１０１に送信してデータベース３０２に登録するためのものである。キャンセルボタン５０８は、本画面で作成したタスクを破棄するためのものである。
【００２０】
図５は、デバイス管理装置１０１がクライアントＰＣ１０２上に表示する連結タスク作成画面６０１を例示する図である。連結タスク作成画面６０１は、例えば、クライアントＰＣ１０２上で動作するＷｅｂブラウザからの要求に応じて、デバイス管理装置１０１から該Ｗｅｂブラウザに送信され、該Ｗｅｂブラウザにて表示される。
【００２１】
６０２は、連結タスク内先頭タスクとなる「タスク１」を作成するための領域である。プルダウンリスト６０３は、データベース３０２に登録されているタスクの中から実行させるタスクを選択する。本実施例においては「宛先表バックアップ」を選択している。このタスクは、各デバイスが持つＦＡＸやメール通信の宛先表を、バックアップ目的でデバイス管理装置１０１に取得し、保管するタスクである。６０４では、本タスクの次に実行するタスクの実行条件を指定する。６０４では「前のタスク結果に無関係に次のタスクを実行」を選択している。タスク実行結果に無関係なため、実行結果の条件を示す領域６０５はグレーアウトしている。この「タスク１」で実行する「宛先表バックアップ」は、この後実行予定のファームアップの前に念のために実行しておく処理のため、本タスクが失敗しても次のタスクを実行してしまって構わないという意図である。
【００２２】
６０６は、「タスク１」に引き続き実行する「タスク２」を作成するための領域である。プルダウンリスト６０７は、データベース３０２に登録されているタスクの中から実行させるタスクを選択する。本実施例においては「ファームアップ」を選択している。６０８は、本タスクを実行する処理対象を指定する。６０８では「前のタスクの対象デバイス」を選択している。さらに６０９は、前のタスクがどのタスクであるかを示し、前のタスクの処理結果がどのようになったデバイスかを指定する。本実施例では、前タスクとして「タスク１」即ち「宛先表バックアップ」タスクであり、「タスク１」の処理対象全てのデバイスを、「タスク２」の処理対象としている。６１０では、本タスクの次に実行するタスクの実行条件を指定する。６１０では「実行結果が以下の場合、次のタスク実行」を選択している。そして、６１１において、実行結果として「成功」したデバイスを指定している。この設定を行っている理由は、この後「タスク３」において配信する設定の中に、「タスク２」のファームアップにより使用可能となる機能の設定が含まれているため、ファームアップが成功しないデバイスに設定を配信しても意味がないからである。タスク削除ボタン６１２は、編集後に「タスク２」６０６を削除するためのボタンである。
【００２３】
６１３は、「タスク２」に引き続き実行する「タスク３」を作成するための領域である。プルダウンリスト６１４は、データベース３０２に登録されているタスクの中から実行させるタスクを選択する。本実施例においては「設定配信」を選択している。６１５は、本タスクを実行する処理対象を指定する。６１５では「前のタスクの対象デバイス」を選択している。さらに６１６は、前のタスクがどのタスクであるかを示し、前のタスクの処理結果がどのようになったデバイスかを指定する。本実施例では、前タスクとして「タスク２」即ち「ファームアップ」タスクであり、「タスク２」の処理対象全てのデバイスを、「タスク３」の処理対象としている。
【００２４】
タスク追加ボタン６１７は、「タスク３」の後にさらにタスクを連結するためのボタンである。タスク追加ボタン６１７により、６１３同様の入力領域を、「タスク４」として表示する。また、「タスク３」（６１３）の領域内には、「タスク４」の実行条件を指定するために、６１０〜６１１と同様の入力項目を表示する。
【００２５】
６１８は、本画面で作成した連結タスクのリカバリ実行に関し、時間で、既存のタスクの実行を優先する処理（第１のリカバリタスク作成処理）と、リカバリタスクの実行を優先する処理（第２のリカバリタスク作成処理）とを切り替えるためのものである。６１８では、まず、処理切り替え時刻を設けるか否かをチェックボックスで指定する。処理切り替えを行う場合は、プルダウンリストにより時刻指定する。なお、本実施例では、この時刻についてユーザインタフェースを用意し、ユーザが任意に設定可能としたが、他の方法もある。その方法としては、予めデバイス管理装置１０１として規定の時刻を保持する方法、デバイス管理装置１０１内の編集可能なファイルに記述して置く事で、デバイス管理装置がそのファイルを読み出して処理に用いる方法がある。このリカバリ制限時刻６１８で処理切り替えを行うことにより、例えば、深夜等の会社の営業時間外（非営業時間）ではリカバリタスクの実行を優先し、会社の営業時間内では通常予定されているタスクの実行を優先するように切り替えを行うといった運用が可能となる。
【００２６】
６１９は、本画面で作成される連結タスクの登録名をユーザの任意に指定するための入力領域であり、この例では「緊急ファーム更新」と名付けている。タスク登録ボタン６２０は、本画面で作成したタスクをデバイス管理装置１０１に送信してデータベース３０２に登録するためのものである。キャンセルボタン６２１は、本画面で作成したタスクを破棄するためのものである。
【００２７】
図６は、図５に示した連結タスク作成画面６０１の内容で作成した連結タスク７０１の構成を例示する図である。
７０２は、「タスク１」（図６の６０２）で作成した「宛先表バックアップ」タスクである。本タスクの処理対象は、複合機１０３、複合機１０４、複合機１０５、およびプリンタ１０６である。７０３は、「タスク２」（図６の６０６）で作成した「ファームアップ」タスクである。本タスクの処理対象は、図６の６０８〜６０９の指定により「タスク１」（６０２）の処理対象全てであるから、複合機１０３、複合機１０４、複合機１０５、およびプリンタ１０６である。そして、「宛先表バックアップ」タスク７０２と、「ファームアップ」タスク７０３は、図６の６０４の指定により「前タスク結果に無関係」という実行条件７０５で繋がっている。
【００２８】
７０４は、「タスク３」（図６の６１３）で作成した「設定配信」タスクである。本タスクの処理対象は、図６の６１５の６１６の指定により「タスク２」（６０６）の処理対象全てであるから、複合機１０３、複合機１０４、複合機１０５、およびプリンタ１０６である。そして、「ファームアップ」タスク７０３と、「設定配信」タスク７０４は、図６の６１０の指定により「前タスク成功」という実行条件７０６で繋がっている。
【００２９】
図７は、連結タスク７０１「緊急ファーム更新」を実行した結果（処理結果）を例示するテーブル８０１を示す図である。
本テーブル８０１は、タスク処理結果取得部３０７により、データベース３０２内に保存される。デバイス管理装置１０１では、本テーブルを参照し、ユーザに対しタスク処理結果を提示する。提示する内容は、連結タスク全体として、さらに連結タスクを構成する個別タスクの結果として、さらに各タスク内のデバイス毎に提示している。
【００３０】
「タスク１」は、複合機１０３、複合機１０４、複合機１０５、プリンタ１０６に対し実行し、複合機１０４のみ失敗している。「タスク１」としてのステータスは失敗である。
「タスク２」は、「タスク１」の結果に無関係に実行するように指定されているため、複合機１０３、複合機１０４、複合機１０５、プリンタ１０６に対し実行し、複合機１０５、プリンタ１０６に対して失敗している。「タスク２」としてのステータスは失敗である。
「タスク３」は、「タスク２」の結果が成功という実行条件のため、複合機１０３、複合機１０４、複合機１０５、プリンタ１０６へのタスク実行は行われず、「未実施」というステータスである。「タスク３」としてのステータスも「未実施」となる。
連結タスク７０１「緊急ファーム更新」としてのステータスは、「失敗」である。
【００３１】
図８は、連結タスク７０１「緊急ファーム更新」がテーブル８０１のような結果になった場合に図１３で後述する処理でリカバリのためのタスクを作成した場合のタスク構成を例示する図である。なお、本図で説明する各タスクの、タスク制御部３０１による、データベース３０２内のタスク実行予約領域への登録順については、図１０および図１３で説明する。
【００３２】
「リカバリタスクＡ」９０１は、「宛先表バックアップ」タスク７０２のリカバリを行うタスクであり、実行に失敗した複合機１０４のみを処理対象とする。
「リカバリタスクＢ」９０２は、「ファームアップ」タスク７０３が成功しているデバイスに対し、「設定配信」タスク７０４を実行するためのタスクである。「ファームアップ」タスク７０３に成功し、「設定配信」タスク７０４未実施の複合機１０３、複合機１０４を処理対象とする。
「リカバリタスクＣ」９０３は、「ファームアップ」タスク７０３が失敗しているデバイスに対し、「ファームアップ」タスク９０４および「設定配信」タスク９０５を実行するためのタスクである。「ファームアップ」タスク７０３に失敗し、「設定配信」タスク７０４未実施の複合機１０５、プリンタ１０６を処理対象としている。「ファームアップ」タスク９０４と「設定配信」タスク９０５を、連結タスク７０１「緊急ファーム更新」と同じ「前タスク成功」９０６という条件で連結したものである。
【００３３】
図９は、連結タスク７０１「緊急ファーム更新」がテーブル８０１のような結果になった場合に図１２で後述する処理でリカバリのためのタスクを作成した場合のタスク構成を例示する図である。なお、本図で説明する各タスクの、タスク制御部３０１による、データベース３０２内のタスク実行予約領域への登録順については、図１０および図１２で説明する。
【００３４】
１００１は、連結タスク７０１のリカバリタスクＡ'である。
タスク１００２は、「宛先表バックアップ」タスク７０２のリカバリを行うタスクであり、実行に失敗した複合機１０４のみを処理対象とする。
タスク１００３は、「ファームアップ」タスク７０３が成功しているデバイスに対し、「設定配信」タスク７０４を実行するためのタスクである。「ファームアップ」タスク７０３に成功し、「設定配信」タスク７０４未実施の複合機１０３、複合機１０４を処理対象とする。
【００３５】
「宛先表バックアップ」タスク７０２は、処理結果が後段タスクに影響を与えない設定であったため、「宛先表バックアップ」タスク１００２と「設定配信」タスク１００３は、「前タスク結果に無関係」１００６という条件で連結する。また、「設定配信」タスク１００３は、「ファームアップ」タスク７０３と「設定配信」タスク７０４のような前後関係から独立したものとなる。そのため、「設定配信」タスク１００３とその後ろに続くタスクは、「前タスク結果に無関係」１００７という条件で連結する。
【００３６】
１００４〜１００５は、「ファームアップ」タスク７０３が失敗しているデバイスに対し、「ファームアップ」タスク１００４および「設定配信」タスク１００５を実行するためのタスクである。これらのタスクは、「ファームアップ」タスク７０３に失敗し、「設定配信」タスク７０４未実施の複合機１０５、プリンタ１０６を処理対象とする。「ファームアップ」タスク１００４と「設定配信」タスク１００５を、連結タスク７０１「緊急ファーム更新」と同じ「前タスク成功」１００８という条件で連結する。
上記構成でタスク１００２〜１００５を連結したタスクを、「リカバリタスクＡ'」１００１とする。
【００３７】
図１０は、データベース３０２内に存在するタスク実行予約領域の状態と、タスク実行部１（３０３）、タスク実行部２（３０４）でのタスク実行例を示す図である。
タスク実行予約領域１１０１、１１０５において、「緊急ファーム更新」タスクが、本実施例におけるリカバリ対象タスクである。また、タスク実行予約領域１１０１、１１０５には、「トナー残量確認」、「緊急ファーム更新」、「ログ回収」、「カウンタ収集」タスクが、図に示す順に入っているものとする。さらに、説明の都合上、タスク実行部１（３０３）、タスク実行部２（３０４）は空の状態から説明を始める。
タスク実行予約領域１１０１では、リカバリタスクが９０１、９０２、９０３の３つに分かれている。一方、タスク実行予約領域１１０５では、リカバリタスクが１００１の１つだけである。この点で、タスク実行予約領域１１０１とタスク実行予約領域１１０５は異なる。
【００３８】
タスク実行予約領域１１０１は、後述する図１３の第２のリカバリタスク作成処理により作成した「緊急ファーム更新」タスクのリカバリタスクＡ（９０１）、リカバリタスクＢ（９０２）、リカバリタスクＣ（９０３）をタスク実行予約領域内に配置した状態を示す。リカバリタスクＡ（９０１）、リカバリタスクＢ（９０２）は「緊急ファーム更新」タスク失敗直後に優先度を上げてタスク実行予約領域に登録され、リカバリタスクＣ（９０３）はタスク実行予約領域の末尾に登録される。
【００３９】
最初に、「トナー残量確認」タスクがタスク実行部１（１１０３）に、「緊急ファーム更新」タスクがタスク実行部２（１１０４）で実行される。「トナー残量確認」タスクが終了すると、タスク実行部１（１１０３）が空くため、「ログ回収」タスクが実行される。次に、「緊急ファーム更新」タスクが失敗し、後述する図１３の処理により作成した優先度を高めたリカバリタスクＡ（９０１）がタスク実行部２（１１０４）で実行される。この時点で、タスク実行部１（１１０３）は空いていないため、次に優先度を高めたリカバリタスクＢ（９０２）は、待機状態となる。次に、「ログ回収」タスクの終了により、空いたタスク実行部１（１１０３）で、リカバリタスクＢ（９０２）が実行される。続いて、リカバリタスクＢ（９０２）の終了により、空いたタスク実行部１（１１０３）で、「カウンタ収集」タスク１１０２が実行される。その後、リカバリタスクＡ（９０１）の終了により、空いたタスク実行部２（１１０４）でリカバリタスクＣ（９０３）が実行される。
【００４０】
一方、タスク実行予約領域１１０５では、後述する図１２の第１のリカバリタスク作成処理により作成した「緊急ファーム更新」タスクのリカバリタスクＡ'（１００１）をタスク実行予約領域内に配置した状態を示す。リカバリタスクＡ'（１００１）は、「緊急ファーム更新」タスク失敗直後に優先度を上げてタスク実行予約領域に登録される。
【００４１】
最初に、「トナー残量確認」タスクがタスク実行部１（１１０７）に、「緊急ファーム更新」タスクがタスク実行部２（１１０８）で実行される。「トナー残量確認」タスクが終了すると、タスク実行部１（１１０７）が空くため、「ログ回収」タスクが実行される。次に、「緊急ファーム更新」タスクが失敗し、後述する図１２の処理により作成した優先度を高めたリカバリタスクＡ'（１００１）がタスク実行部２（１１０８）で実行される。この時点で、タスク実行部１（１１０３）は空いていないため、「カウンタ収集」タスクは、待機状態となる。次に、「ログ回収」タスクの終了により、空いたタスク実行部１（１１０７）で「カウンタ収集」タスク実行される。
【００４２】
なお、リカバリタスクＡ（９０１）、リカバリタスクＢ（９０２）、リカバリタスクＣ（９０３）の合計処理時間と、リカバリタスクＡ'（１００１）の処理時間は同じと考える。ここで、最初からタスク実行予約領域に入っていた「カウンタ収集」タスク１１０２の終了時点１１０９と、「カウンタ収集」タスク１１０６の終了時点１１１０を比較すると、図１２の第１のリカバリタスク作成処理の方が既存タスクへの影響が少ないことが判る。
【００４３】
よって、タスク実行スレッドが複数あり、かつ、待機タスク（実行待ちのタスク）が存在する場合には、図１２の第１のリカバリタスク作成処理を実行し、他の場合に図１３の第２のリカバリタスク作成処理を実行するよう制御することで、既存タスクへの影響を少なくすることができる。また、図６のリカバリ制限時刻６１８に基づく指定時間内では、図１２の第１のリカバリタスク作成処理を実行し、該指定時間外では図１３の第２のリカバリタスク作成処理を実行するよう制御することで、例えば、深夜等の会社の営業時間外（非営業時間）ではリカバリタスクの実行を優先し、会社の営業時間内では通常予定されているタスクの実行を優先するように切り替えを行うといった運用を可能となる。
【００４４】
図１１は、デバイス管理装置１０１における連結タスクリカバリ処理を例示するフローチャートである。図１１及び後述する図１２、図１３のフローチャートに示す処理は、例えば、デバイス管理装置１０１のタスク制御部３０１により実行される。即ち、これらの処理は、ＣＰＵ２０１がＨＤＤ２０４に格納されたプログラムを必要に応じてＲＡＭ２０３にロードして実行することにより実現されるものである。
【００４５】
連結タスク（例えば図６の７０１のような連結タスク）の実行が終了した時点で、タスク制御部３０１は、Ｓ１２０１以降の処理を開始する。Ｓ１２０１において、タスク制御部３０１は、該実行が終了した連結タスクの成否を判断する。そして、連結タスクの実行が成功した（失敗していない）と判断した場合（Ｓ１２０１でＮｏの場合）、タスク制御部３０１は、Ｓ１２０６に処理を進める。
一方、連結タスクの実行が失敗したと判断した場合（Ｓ１２０１でＹｅｓの場合）、タスク制御部３０１は、Ｓ１２０２に処理を進める。
【００４６】
Ｓ１２０２において、タスク制御部３０１は、タスク実行スレッドが複数あり、かつ、待機タスク（実行待ちのタスク）が存在するか否かを判断する。そして、タスク実行スレッドが１つ、又は、待機タスクが存在しないと判断した場合（Ｓ１２０２でＮｏの場合）、タスク制御部３０１は、Ｓ１２０５（詳細は後述する図１３）に処理を進める。
一方、タスク実行スレッドが複数あり、かつ、待機タスクが存在すると判断した場合（Ｓ１２０２でＹｅｓの場合）、タスク制御部３０１は、Ｓ１２０３に処理を進める。
【００４７】
Ｓ１２０３において、タスク制御部３０１は、現時刻と該連結タスクの指定時間（例えば図６のリカバリ制限時刻６１８）を比較して指定時間内であるか否かを判断する。タスク制御部３０１は、現時刻が上記指定時間以降である場合には指定時間外と判断し（Ｓ１２０３でＮｏと判断し）、Ｓ１２０５の第２のリカバリタスク作成処理（後述する図１３）に処理を進める。
一方、タスク制御部３０１は、現時刻が上記指定時間前の場合には指定時間内と判断し（Ｓ１２０３でＹｅｓと判断し）、Ｓ１２０４の第１のリカバリタスク作成処理（後述する図１２）に処理を進める。なお、本実施例では、連結タスクの指定時間（リカバリ制限時刻６１８）が指定されていない場合には、指定時間内と判断するものとするが、指定時間外と判断してもよい。
【００４８】
Ｓ１２０４では、タスク制御部３０１は、図１２に示す第１のリカバリタスク作成処理を実行してリカバリタスクを作成し、Ｓ１２０６に処理を進める。
また、Ｓ１２０５では、タスク制御部３０１は、図１３に示す第２のリカバリタスク作成処理を実行してリカバリタスクを作成し、Ｓ１２０６に処理を進める。
Ｓ１２０６において、タスク制御部３０１は、タスク処理結果取得部３０７により、データベース３０２内に設けるタスク処理結果テーブル８０１を更新する。
【００４９】
デバイス管理装置１０１は、例えば図７のような処理結果テーブル８０１を用いて、タスクの処理結果をユーザに提示する。連結タスクの場合、連結タスクに含まれる各タスクが、どのデバイスに対してどのようなステータスになっているかまで詳細に提示する。
なお、本実施例において、実行するタスクはタスクＩＤで一意に識別可能としている。タスクＩＤは、データベース３０２内の各タスクの情報として保持している。また、自動的に生成するリカバリタスクにも前記タスクＩＤを実行時に付与するとともに、元のタスクＩＤをデータベース３０２内の各タスクの情報として保持する。リカバリタスクの処理結果は、元のタスクＩＤを用いて元のタスクの処理結果テーブル８０１をみつけ、書き込む。これにより、ユーザは、リカバリタスクがどのように作成されたかを知らなくても、ユーザ自信が作成した元の連結タスク７０１の処理結果をみることが可能である。
【００５０】
図１２は、デバイス管理装置１０１において連結タスクが失敗した場合にリカバリタスクを自動作成して実行する第１のリカバリタスク作成処理を例示するフローチャートである。本フローチャートの処理は、図１１のＳ１２０４での処理に対応する。なお、本フローチャートの処理の説明として、例えば図６の連結タスク７０１が図７のような結果で失敗に終わったケースで、図９のリカバリタスクを生成するケースを例に示しながら説明する。
【００５１】
Ｓ１３０１において、タスク制御部３０１は、図１１のＳ１２０１で失敗したと判断された連結タスクに含まれる全ての連結部（図６の例では連結タスク７０１における７０５と７０６）を処理し終えたかを判定する。そして、まだ処理していない連結タスクが存在すると判定した場合（Ｓ１３０１でＮｏの場合）、タスク制御部３０１は、Ｓ１３０２に処理を進める。
Ｓ１３０２において、タスク制御部３０１は、上述の連結部の１つをＳ１３０３以降の処理対象とする。ここでは、連結タスク内の最後部の連結部から順に処理対象としていく。連結タスク７０１の場合には連結部７０６、７０５の順に処理する。
【００５２】
Ｓ１３０３において、タスク制御部３０１は、処理対象とした連結部の連結条件を判定する。そして、連結条件が「前タスク成功」であると判定した場合、タスク制御部３０１は、Ｓ１３０８〜Ｓ１３１７の処理を行う。一方、連結条件が「前タスクに無関係」であると判定した場合、Ｓ１３０４〜Ｓ１３０７の処理を行う。図７の連結タスク７０１の例では、最初に連結部７０６を処理し、Ｓ１３０３〜Ｓ１３０８に移行する。
【００５３】
Ｓ１３０８において、タスク制御部３０１は、連結部直前タスクが成功しているデバイスの有無を判定する。該当デバイスがないと判定した場合（Ｓ１３０８でＮｏの場合）、タスク制御部３０１は、Ｓ１３１２に処理を進める。
一方、該当するデバイスがあると判定した場合（Ｓ１３０８でＹｅｓの場合）、タスク制御部３０１は、Ｓ１３０９に処理を進める。
【００５４】
Ｓ１３０９において、タスク制御部３０１は、連結部直前タスクが成功しているデバイスを抽出する。連結タスク７０１の場合、タスク処理結果テーブル８０１によれば、複合機１０３、１０４についてタスク２が成功しているため、Ｓ１３０９において複合機１０３、１０４を抽出する。即ち、タスク制御部３０１は、連結タスクの実行に失敗した場合、該連結タスクの複数の処理対象から、該連結タスクの後段タスクのみを実行すべき処理対象群と、前段タスクから実行すべき処理対象群を抽出する。
【００５５】
次に、Ｓ１３１０において、タスク制御部３０１は、上記Ｓ１３０９で抽出したデバイスに対し、連結部直後タスク（連結タスク７０１の場合タスク３）の処理を行うタスクを作成する。ここで作成したタスクは、Ｓ１３０８〜Ｓ１３１７の処理で作成するタスクの中で、最前部に配置するものとする。
Ｓ１３１１において、タスク制御部３０１は、上記Ｓ１３１０で作成したタスクと、次に作成するタスクの連結方法を「前のタスク結果に無関係」とする。ここまでの処理で、図９のリカバリタスク１００１の、タスク１００３と連結部１００７が作成される。Ｓ１３１１の処理の後、タスク制御部３０１は、Ｓ１３１２に処理を進める。
【００５６】
Ｓ１３１２において、タスク制御部３０１は、連結部直前タスクが失敗または未実施デバイスの有無を判定する。そして、連結部直前タスクが失敗または未実施のデバイスがないと判定した場合（Ｓ１３１２でＮｏの場合）、タスク制御部３０１は、そのままＳ１３０１に処理を戻す。
一方、連結部直前タスクが失敗または未実施のデバイスがあると判定した場合（Ｓ１３１２でＹｅｓの場合）、タスク制御部３０１は、Ｓ１３１３に処理を進める。
【００５７】
Ｓ１３１３において、タスク制御部３０１は、連結部直前タスクが失敗または未実施のデバイスに対し、連結部直前タスクの処理を行うタスクを作成する。連結タスク７０１の場合、タスク処理結果テーブル８０１によれば、複合機１０５、プリンタ１０６についてタスク２が失敗しているため、Ｓ１３１３において、複合機１０５、プリンタ１０６に対しタスク２の処理を行うタスクを作成する。
【００５８】
次に、Ｓ１３１４において、タスク制御部３０１は、次に作成するタスクとの連結条件を「前タスク成功」とする。ここまでの処理で、リカバリタスク１００１の、タスク１００４と連結部１００８が作成されることになる。
次に、Ｓ１３１５において、タスク制御部３０１は、連結部直前タスクが失敗または未実施のデバイスに対し、連結部直後タスクの処理を行うタスクを作成する。
即ち、タスク制御部３０１は、上記Ｓ１３１３〜Ｓ１３１５において、前段タスクから実行すべき処理対象群に対し、前段タスクから後段タスクまでを前段タスクの処理結果に関係付けて連結したタスクを作成する。
【００５９】
Ｓ１３１６において、タスク制御部３０１は、現在処理対象としている連結部が、連結タスクにおける最終連結部か否かを判定する。そして、最終連結部であると判定した場合（Ｓ１３１６でＹｅｓの場合）、タスク制御部３０１は、Ｓ１３０１に処理を戻す。
一方、最終連結部でないと判定した場合（Ｓ１３１６でＮｏの場合）、タスク制御部３０１は、Ｓ１３１７に処理を進める。
Ｓ１３１７において、タスク制御部３０１は、次のタスクとの連結方法を「前タスク成功」とし、Ｓ１３０１に処理を戻す。
【００６０】
連結タスク７０１の場合、タスク処理結果テーブル８０１によれば、複合機１０５、プリンタ１０６についてタスク２が失敗している。そのため、上記Ｓ１３１５において複合機１０５、プリンタ１０６に対しタスク３の処理を行うタスクを作成する。さらに、上記Ｓ１３１６において、連結部７０６が最終連結部であるため、上記Ｓ１３０１に戻る。ここまでの処理で、リカバリタスク１００１の、タスク１００５が作成される。
【００６１】
また、上記Ｓ１３０３において、連結条件が「前タスクに無関係」であると判定した場合、タスク制御部３０１は、Ｓ１３０４〜Ｓ１３０７の処理を行う。連結タスク７０１では、連結部７０５が２番目の処理対象となる。連結部７０５は、上記Ｓ１３０３において連結条件が「前タスクに無関係」である判定され、Ｓ１３０４に進む。
【００６２】
Ｓ１３０４において、タスク制御部３０１は、連結部直前タスクが失敗しているデバイスを対象として、連結部直前タスクの処理を行うタスクを作成し、本フローチャートの処理で作成したタスクの先頭に配置する。
次に、Ｓ１３０５において、タスク制御部３０１は、次のタスクとの連結方法を「前タスクに無関係」とする。
【００６３】
さらに、Ｓ１３０６において、タスク制御部３０１は、現在処理対象としている連結部が、連結タスクにおける最終連結部か否かを判定する。最終連結部でないと判定した場合（Ｓ１３０６でＮｏの場合）、タスク制御部３０１は、Ｓ１３０１に処理を戻す。
一方、最終連結部であると判定した場合（Ｓ１３０６でＹｅｓの場合）、タスク制御部３０１は、Ｓ１３０７に処理を進める。
Ｓ１３０７において、タスク制御部３０１は、連結部直後タスクが失敗または未実施デバイスに対し、連結部直後タスクの処理を行うタスクを作成し、Ｓ１３０１に処理を戻す。
【００６４】
連結タスク７０１の場合、タスク処理結果テーブル８０１によれば、複合機１０４についてタスク１が失敗している。そのため、Ｓ１３０４において複合機１０４に対しタスク１の処理を行うタスクを作成し、次のタスクとの連結方法を「前タスクに無関係」とする。Ｓ１３０６では、連結部７０５は最終連結部でないため、Ｓ１３０１に戻る。ここまでの処理で、リカバリタスク１００１の、タスク１００２と連結部１００６が作成され、Ｓ１３０１に戻る。
【００６５】
また、上記Ｓ１３０１において、全ての連結箇所を処理し終えたと判定した場合（Ｓ１３０１でＹｅｓの場合）、タスク制御部３０１は、Ｓ１３１８に処理を進める。
Ｓ１３１８において、タスク制御部３０１は、本フローチャートの処理で作成したタスクを最優先で実行可能な位置にタスク実行予約領域に入れ、本フローチャートの処理を終了する。これにより、本フローチャートの処理で作成したリカバリタスクは、連結タスク７０１が失敗終了した後、タスク実行部が空き次第、直ちに実行されることになる。
【００６６】
以上、図１２の処理では、デバイス管理装置１０１のタスク制御部３０１は、連結タスクに失敗した場合、該連結タスクの複数の処理対象から、該連結タスクの後段タスクのみ実行すべき処理対象群と、前段タスクから実行すべき処理対象群を抽出し（Ｓ１３０８〜Ｓ１３０９）、後段タスクのみ実行すべき処理対象群に対し、後段タスクのみを実行するタスクを作成し（Ｓ１３１０）、前段タスクから実行すべき処理対象群に対し、前段タスクから後段タスクまでを前段タスクの処理結果に関係付けて連結したタスクを作成し（Ｓ１３１２〜Ｓ１３１７）、これらのタスクをこの順に、前段タスクの処理結果に無関係に連結したリカバリタスクを作成し（Ｓ１３１１）、該リカバリタスクを、他のタスクより優先して実行するように制御する。これにより、例えば、図６の連結タスク７０１のリカバリタスクとして、図９に示すリカバリタスク'Ａ１００１が生成され、連結タスク７０１失敗直後に優先的に実行される。
【００６７】
図１３は、デバイス管理装置１０１において連結タスクが失敗した場合にリカバリタスクを自動作成して実行する第２のリカバリタスク作成処理を例示するフローチャートである。本フローチャートの処理は、図１１のＳ１２０５での処理に対応する。なお、本フローチャートの処理の説明として、例えば図６の連結タスク７０１が図７のような結果で失敗に終わったケースで、図９のリカバリタスクを生成するケースを例に示しながら説明する。なお、図１２と同一のステップについては説明を省略する。
【００６８】
まず、Ｓ１４０１〜Ｓ１４０３、Ｓ１４１１〜Ｓ１４１３の処理は、図１２のＳ１３０１〜Ｓ１３０３、Ｓ１３０８〜Ｓ１３１０の処理と同一であるので説明を省略する。
Ｓ１４１４において、タスク制御部３０１は、Ｓ１４１３において作成したタスク（連結タスク７０１の例ではタスク３の処理を行うタスク）を、優先度を上げてタスク実行予約領域に登録する。ここまでの処理で、図８のリカバリタスクＢ９０２が作成され、優先的に実行されるように登録される。Ｓ１４１４の処理の後、タスク制御部３０１は、Ｓ１４１５に処理を進める。
【００６９】
また、Ｓ１４１５〜Ｓ１４２０の処理は、図１２のＳ１３１２〜Ｓ１３１７の処理と同一であるので説明を省略する。なお、連結タスク７０１の場合、タスク処理結果テーブル８０１によれば、複合機１０５、プリンタ１０６についてタスク２が失敗しているため、Ｓ１４１６において複合機１０５、プリンタ１０６に対しタスク２の処理を行うタスク９０４を作成する。Ｓ１４１７において、次に作成するタスクとの連結条件９０６を「前タスク成功」とする。ここまでの処理で、リカバリタスク９０３の、タスク９０４と連結部９０６が作成される。また、Ｓ１４１８において、タスク２を失敗している複合機１０５、プリンタ１０６に対しタスク３の処理を行うタスク９０５を作成する。Ｓ１４１９において、連結部７０６は最終連結部であるため、Ｓ１４０１に戻る。ここまでの処理で、リカバリタスクＣ９０３が作成される。
【００７０】
また、上記Ｓ１４０３において、連結条件が「前タスクに無関係」であると判定した場合、タスク制御部３０１は、Ｓ１４０４〜Ｓ１４１０の処理を行う。連結タスク７０１では、連結部７０５が２番目の処理対象となる。連結部７０５は、上記Ｓ１４０３において連結条件が「前タスクに無関係」である判定され、Ｓ１４０４に進む。
【００７１】
Ｓ１４０４において、タスク制御部３０１は、本フローチャートの処理内でこれまでに作成し、タスク実行予約領域に未登録のタスクの有無を確認する。未登録のタスクがあると判定した場合（Ｓ１４０４でＹｅｓの場合）、タスク制御部３０１は、Ｓ１４０５に処理を進める。Ｓ１４０５において、タスク制御部３０１は、上記未登録のタスクをタスク実行予約領域の末尾に入れる。ここで、上記Ｓ１４１１〜Ｓ１４２０で作成したリカバリタスクＣ９０３が、タスク実行予約領域に登録される。Ｓ１４０４の処理の後、タスク制御部３０１は、Ｓ１４０６に処理を進める。
一方、未登録のタスクがないと判定した場合（Ｓ１４０４でＮｏの場合）、タスク制御部３０１は、そのままＳ１４０６に処理を進める。
【００７２】
Ｓ１４０６において、タスク制御部３０１は、連結部直前タスクが失敗しているデバイスを対象として、連結部直前タスクの処理を行うタスクを作成する。これにより、リカバリタスクＡ９０１が作成される。
次に、Ｓ１４０７において、タスク制御部３０１は、上記Ｓ１４０６で作成したタスクをタスク実行予約領域に登録する。この時、優先度を上げて登録しても、タスク実行予約領域の末尾に登録しても構わない。本実施例では、タスク実行予約領域１１０１に記載のように、リカバリタスクＡ９０１の優先度を上げて登録している。
【００７３】
Ｓ１４０８において、タスク制御部３０１は、現在処理対象としている連結部が、連結タスクにおける最終連結部か否かを判定する。最終連結部でないと判定した場合（Ｓ１４０８でＮｏの場合）、タスク制御部３０１は、Ｓ１４０１に処理を戻す。
一方、最終連結部であると判定した場合（Ｓ１４０８でＹｅｓの場合）、タスク制御部３０１は、Ｓ１４０９に処理を進める。
Ｓ１４０９において、タスク制御部３０１は、連結部直後タスクが失敗または未実施デバイスに対し、連結部直後タスクの処理を行うタスクを作成する。
次に、Ｓ１４１０において、タスク制御部３０１は、上記Ｓ１４０９で作成したタスクをタスク実行予約領域に登録し、Ｓ１４０１に処理を戻す。
【００７４】
また、上記Ｓ１４０１において、全ての連結箇所を処理し終えたと判定した場合（Ｓ１４０１でＹｅｓの場合）、タスク制御部３０１は、Ｓ１４２１に処理を進める。
Ｓ１４２１において、タスク制御部３０１は、本フローチャートで作成したタスクで、タスク実行予約領域に未登録のタスクの有無を判定する。そして、未登録タスクがないと判定した場合（Ｓ１４２１でＮｏの場合）、そのまま本フローチャートの処理を終了する。
一方、未登録タスクがあると判定した場合（Ｓ１４２１でＹｅｓの場合）、タスク制御部３０１は、Ｓ１４２２に処理を進める。
Ｓ１４２２において、タスク制御部３０１は、上記未登録のタスクをタスク実行予約領域末尾に入れ、本フローチャートの処理を終了する。
【００７５】
以上、図１３の処理では、デバイス管理装置１０１のタスク制御部３０１は、連結タスクに失敗した場合、該連結タスクの複数の処理対象から、該連結タスクの後段タスクのみ実行すべき処理対象群と、前段タスクから実行すべき処理対象群を抽出し（Ｓ１４１１〜Ｓ１４１２）、後段タスクのみ実行すべき処理対象群に対し、後段タスクのみを実行するリカバリタスクを作成し（Ｓ１４１３）、他のタスクより優先して実行するように制御する（Ｓ１４１４）。さらに、タスク制御部３０１は、前段タスクから実行すべき処理対象群に対し、前段タスクから後段タスクまでを前段タスクの処理結果に関係付けて連結したリカバリタスクを作成し（Ｓ１４１５〜Ｓ１４２０）、優先することなく実行するように制御する（Ｓ１４０５）。
【００７６】
以上のように、連結タスクにすることで、前タスクの影響を受け、本来連結タスクに含まれる全てのタスクを完了できないデバイスがあったが、これらのデバイスに対し、本実施例の処理を適用してタスクを作成することで、ユーザが手作業で、複雑なリカバリタスクを構成し直すことなく、全てのタスクを完了し、正しく運用できるデバイスを増やすことが可能である。
【実施例２】
【００７７】
上記実施例１では、デバイス管理装置を管理対象のデバイスと同一のＬＡＮ上においたデバイス管理システムの例を示した。本実施例２では、デバイス管理装置をインターネット上に置き、Ａｇｅｎｔと呼ばれるデバイスと直接通信するモジュールを、顧客環境に置くことで、デバイスを管理するデバイス管理システムの例を示す。
【００７８】
図１４は、本発明の実施例２を示すデバイス管理装置を含むシステムの全体構成を例示する図である。
図１４において、１５０１はサーバで、本実施例においてはデバイス管理装置の役割を担っている（以下、デバイス管理装置１５０１）。デバイス管理装置１５０１は、通常データセンタのＬＡＮ１５０８に接続しており、さらにＬＡＮ１５０８を介してインターネット１５０９に接続している。デバイス管理装置１５０１が提供するユーザインタフェースは、ＬＡＮ１５０８やインターネット１５０９を介して利用される。
【００７９】
１５０２は、上述したＡｇｅｎｔ機能を担う情報処理装置（例えばＰＣ）であり、ＬＡＮ１５０７に接続している。１５０３〜１５０５は印刷装置（画像形成装置）であって、１５０３〜１５０５は複合機であり、１５０６はプリンタである。複合機１５０３〜１５０５およびプリンタ１５０６は、ＬＡＮ１５０７に接続しており、デバイス管理装置１５０１により管理されている。さらに、複合機１５０３〜１５０５およびプリンタ１５０６は、ＬＡＮ１５０７を介してＡｇｅｎｔ１５０２と通信する。デバイス管理装置１５０１におよびＡｇｅｎｔ１５０２のハードウェア構成は、図２と同様である。
【００８０】
図１５は、実施例２のデバイス管理装置１０１のタスク処理に関連するソフトウェア構成を例示する図である。なお、図１５に示す各部は、デバイス管理装置１０１のＣＰＵ２０１がＨＤＤ２０４等に記憶されたプログラムを必要に応じてＲＡＭ２０３に読み出して実行することにより実現されるものである。
【００８１】
タスク制御部１７０１は、ユーザが作成し、データベース１７０２に格納されたタスクの内容を判断し、データベース１７０２内に存在するタスク実行予約領域に登録する。タスク実行予約領域については、実施例１において図１０で説明した通りである。また、タスク制御部１７０１は、タスク実行予約領域を監視し、順次または指定時刻に起動すべきタスクを実行する。その際、タスク制御部１７０１は、内部的にＲＥＳＴインタフェース１７０３に含まれるタスク起動部１７０４を呼び出す。また、タスク制御部１７０１は、内部的にＲＥＳＴインタフェース１７０３に含まれるタスク処理結果取得部１７０５を呼び出し、タスクの処理結果を取得する。
【００８２】
共通ライブラリ１７０６は、データベース１７０２へのアクセスや、Ｗｅｂユーザインタフェースの共通部品などを提供する。ＲＥＳＴインタフェース１７０３内のタスク起動部１７０４は、ＨＴＴＰサーバ１７０７を経由して受信されたタスク起動用のＲＥＳＴのＷｅｂサービスを解釈し、タスクの起動を行うモジュールである。また、タスク処理結果取得部１７０５は、タスクの処理結果の詳細取得用のＲＥＳＴのＷｅｂサービスを解釈し、タスク処理結果の詳細を取得するモジュールである。
【００８３】
本実施例においては、実際に複合機１５０３、１５０４、１５０５、プリンタ１５０６と通信し、処理を行うのはＡｇｅｎｔ１５０２である。タスク起動部１７０４およびタスク処理結果取得部１７０５は、タスク制御部１７０１からの内部的な呼び出しに対し、実際にはＨＴＴＰサーバ１７０７を経由してＡｇｅｎｔ１５０２と通信し、処理を依頼する。また、タスクの処理対象デバイス、処理内容等の詳細はデータベース１７０２に格納されている。
【００８４】
図１６は、実施例２のＡｇｅｎｔ１５０２のタスク処理に関連するソフトウェア構成を例示する図である。なお、図１６に示す各部は、Ａｇｅｎｔ１５０２のＣＰＵ２０１がＨＤＤ２０４等に記憶されたプログラムを必要に応じてＲＡＭ２０３に読み出して実行することにより実現されるものである。
【００８５】
ＲＥＳＴインタフェース１８０２内のタスク起動部１８０３は、デバイス管理装置１５０１からＨＴＴＰサーバ１８０１を経由して受信されたタスク起動用のＲＥＳＴのＷｅｂサービスを解釈し、タスクの起動を行うモジュールである。また、タスク処理結果取得部１８０４は、デバイス管理装置１５０１からのタスク処理結果の詳細取得用のＲＥＳＴのＷｅｂサービスを解釈し、タスク処理結果の詳細を取得するモジュールである。タスクの実行は、タスク実行部１（１８０５）とタスク実行部２（１８０６）の２つのスレッドで実行する。即ち、最大２つのタスクが同時実行可能となっている。
【００８６】
タスク起動部１８０３は、タスクの処理対象デバイス、処理内容等の詳細を、デバイス管理装置１５０１から、タスク起動用のＲＥＳＴのＷｅｂサービス呼び出しの付与情報として受ける。ここで、Ｗｅｂサービス呼び出しに呼応する複合機１５０３、１５０４，１５０５、プリンタ１５０６との通信プログラム、および、処理プログラムは、Ａｇｅｎｔ１５０２のＨＤＤ２０４に格納されている。また、タスク起動部１８０３は、タスク起動用のＲＥＳＴのＷｅｂサービスの呼び出しを解釈し、Ａｇｅｎｔ１５０２のＨＤＤ２０４内より適当な処理プログラムを決定する。該決定された処理プログラムは、タスク実行部１（１８０５）またはタスク実行部２（１８０６）で実行される。
【００８７】
なお、本実施例においてはデバイス管理装置１５０１とＡｇｅｎｔ１５０２の通信にＲＥＳＴを用いたが、ＳＯＡＰで実現する事も可能である。
また、本実施例においてはＡｇｅｎｔとしてＰＣ１５０２を使用したが、複合機１５０３、１５０４、１５０５、プリンタ１５０６のいずれか、または、すべてに図１６の構成を持たせ、Ａｇｅｎｔの役割を担うことも可能である。
【００８８】
以上のように、実施例２によれば、実施例１で示したタスクのリカバリ処理を、顧客環境にデバイス管理装置を置かないクラウド環境にも適用することが可能になる。
【実施例３】
【００８９】
上述した実施例１および実施例２においては、デバイス管理装置による複数のデバイスを対象にした連結タスクについて説明した。本処理は、１つのサーバ内の複数のフォルダやファイルに対して実施する複数の処理にも適用可能である。
例えば、複数のフォルダに対し、第一タスクとしてフォルダ内の画像ファイルをＯＣＲによりテキスト化し、第二タスクとしてフォルダ内のファイルを１ファイルにまとめ、第三のタスクとして任意の宛先に転送するような処理に適用可能である。このように、本発明は、デバイス管理装置のみではなく、一般的なデータ処理装置においても、実施例１で示したタスクのリカバリ処理を適用可能である。
【００９０】
以上のように、本発明の各実施例によれば、従来のように、連結タスクを作成するユーザが、連結タスク内の各タスクにおいて、処理対象デバイス毎のタスク成否を想定して煩雑なタスクの作成を行う等の煩雑な作業を行うことなく、処理を失敗した連結タスクのリカバリタスクとして、タスクの全てを完了させられる可能性が高い処理対象に対する処理を優先して完了可能なリカバリタスクを自動で生成することができる。この結果、実行を失敗した連結タスクについて、自動的、かつ、多くの処理対象を正常状態にするリカバリ処理を実現することができる。また、複数タスクを同時実行可能な環境において、リカバリタスク実行による、待機中タスクの処理タイミングへの影響を少なくすることが可能となる。さらに、例えば、会社の非営業時間はリカバリタスクを優先し実行し、会社の営業中の時間は、通常予定されているタスクの実行を優先するという切り替えが可能となる。
【００９１】
なお、上述した各種データの構成及びその内容はこれに限定されるものではなく、用途や目的に応じて、様々な構成や内容で構成されていてもよい。
以上、一実施形態について示したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記憶媒体等としての実施態様をとることが可能である。具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
また、上記各実施例を組み合わせた構成も全て本発明に含まれるものである。
【００９２】
（その他の実施例）
本発明は、上述の実施例の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
また、本発明は、複数の機器から構成されるシステムに適用しても、１つの機器からなる装置に適用してもよい。
本発明は上記実施例に限定されるものではなく、本発明の趣旨に基づき種々の変形（各実施例の有機的な組合せを含む）が可能であり、それらを本発明の範囲から除外するものではない。即ち、上述した各実施例及びその変形例を組み合わせた構成も全て本発明に含まれるものである。
【図１】
2017085303.tif 000003
【図２】
2017085303.tif 000004
【図３】
2017085303.tif 000005
【図４】
2017085303.tif 000006
【図５】
2017085303.tif 000007
【図６】
2017085303.tif 000008
【図７】
2017085303.tif 000009
【図８】
2017085303.tif 000010
【図９】
2017085303.tif 000011
【図１０】
2017085303.tif 000012
【図１１】
2017085303.tif 000013
【図１２】
2017085303.tif 000014
【図１３】
2017085303.tif 000015
【図１４】
2017085303.tif 000016
【図１５】
2017085303.tif 000017
【図１６】
2017085303.tif 000018