(57)【特許請求の範囲】
【請求項１】
複数のタスクをバックグラウンドで実行する情報処理装置であって、
前記複数のタスクを実行する実行手段と、
前記実行手段で実行するタスクが途中再開不可のタスクであり、かつ、ＣＰＵの使用制限があり、かつ、当該途中再開不可のタスクの待機処理が発生した場合、当該待機処理が発生したタスク以降で実行予定の他のタスクをキャンセルするキャンセル手段と、
を備える
ことを特徴とする情報処理装置。
【請求項２】
前記ＣＰＵの使用制限があり、かつ前記実行手段で実行する前記複数のタスクの中に途中再開不可のタスクが存在する場合、前記途中再開不可のタスクを優先的に実行するように前記複数のタスクの実行順序を決定する決定手段をさらに有し、
前記実行手段は、前記決定手段で決定した前記実行順序に基づいて、前記複数のタスクを実行する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記実行手段は、前記キャンセル手段により前記他のタスクがキャンセルされた場合、一定時間、タスクの実行の待機をする
ことを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
前記実行手段は、前記待機処理が発生したタスクが所定の条件を満たすと、当該待機処理が発生したタスクをＣＰＵの使用制限がない状況で実行させるように制御する
ことを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記所定の条件を満たす場合とは、ＣＰＵの使用制限を所定の回数以上超過した場合である
ことを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記決定手段は、オペレーティングシステムから前記ＣＰＵの使用制限に関する情報を取得し、当該取得した情報を基に前記実行順序を決定する
ことを特徴とする請求項２に記載の情報処理装置。
【請求項７】
前記途中再開不可のタスクは、画像形成装置のログ収集タスクである
ことを特徴とする請求項１〜６のいずれか１項に記載の情報処理装置。
【請求項８】
複数のタスクをバックグラウンドで実行する情報処理装置の制御方法であって、
前記複数のタスクを実行する実行工程と、
前記実行工程において実行するタスクが途中再開不可のタスクであり、かつ、ＣＰＵの使用制限があり、かつ、当該途中再開不可のタスクの待機処理が発生した場合、当該待機処理が発生したタスク以降で実行予定の他のタスクをキャンセルするキャンセル工程と、
を有する
ことを特徴とする情報処理装置の制御方法。
【請求項９】
請求項１〜７のいずれか１項に記載の情報処理装置の各手段としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理装置の制御方法、及びプログラムに関し、特に実行リソースの使用制限が存在する環境下における、複数のタスクをバックグラウンドで実行する情報処理装置のタスク実行に関する。
【背景技術】
【０００２】
デバイス等から使用状況を収集し、収集した使用状況をインターネット上の管理サーバへ送信するシステムの手順として、以下が考えられる。まず、収集対象となるデバイスに対して使用状況を収集するためのリクエストを送信し、使用状況ログを取得する。次に、取得したデータを加工し、管理サーバへ送信する。
【０００３】
ここで、システムを動作させる環境として、実行リソースに制限が存在する環境が考えられる。具体的には、例えば、携帯端末（デバイス）におけるバックグラウンドでの処理等が挙げられる。携帯端末では、バッテリー消費を抑制する目的で、バックグラウンドで動作するプログラムが使用できるリソースに制限がある。このような環境下において、デバイスや管理サーバとの通信を行う場合、通信先のレスポンスがＣＰＵの使用可能時間より遅い場合、待機もしくは別の処理を先に実行すると、その別の処理によってＣＰＵを消費し、データ通信に失敗してしまうことがある。また、デバイスの種類によっては、途中で通信がキャンセルされてしまった場合、途中再開できずに初めから通信を行うことがある。この場合、データ通信に失敗した後リトライを行っても繰り返し失敗してしまい、通信が完了しないこともある。このような状況を解決するために、実行リソースの制限を考慮した実行リソースの配分制御やタスク制御が必要となる。
【０００４】
そこで、特定のタスクに多くの時間ＣＰＵを使用して特定の処理をより多く実行できるようにするための方法が特許文献１に開示されている。特許文献１では、実行すべき処理が予め決められた特定の処理であるかどうかを判定し、予め決められた特定の処理である場合、既に割り当てられている処理を前記特定の処理に割当てる処理を行う。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１１−１８６６１９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１では、予め決められた処理にＣＰＵを割り当てるのみであり、デバイスのレスポンス状況など、動的な条件の場合が考慮されていない。また、処理がキャンセルされてしまった際に途中再開できずに初めから行う必要がある場合についても考慮されていない。そのため、通信先のレスポンスがＣＰＵの使用可能時間より遅い場合に、通信の失敗が続く恐れがある。つまり、実行リソースに制限がある環境下において、デバイスやサーバと通信を行う場合、通信先のレスポンスがＣＰＵの使用可能時間より遅い場合に待機もしくは別の処理を先に実行すると、別の処理によってＣＰＵを消費し、データ通信に失敗してしまう。また、途中で通信がキャンセルされてしまった際に途中再開できずに初めから通信を行う場合、データ通信に失敗した後リトライを行っても繰り返し失敗してしまい、通信が完了しない場合がある。
【０００７】
本発明は、上記課題を鑑みて、実行リソースに制限がある環境下においてデバイスやサーバと通信を行う場合であっても、複数のタスクをバックグラウンドで実行することができる情報処理装置を提供すること目的とする。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、本発明の情報処理装置は、複数のタスクをバックグラウンドで実行する情報処理装置であって、前記複数のタスクを実行する実行手段と、前記実行手段で実行するタスクが途中再開不可のタスクであり、かつ、ＣＰＵの使用制限があり、かつ、当該途中再開不可のタスクの待機処理が発生した場合、当該待機処理が発生したタスク以降で実行予定の他のタスクをキャンセルするキャンセル手段と、を備えることを特徴とする。
【発明の効果】
【０００９】
本発明によれば、実行リソースに制限がある環境下においてデバイスやサーバと通信を行う場合であっても、複数のタスクをバックグラウンドで実行することができる情報処理装置を提供することができる。これにより、実行リソースに制限がある環境下における途中再開不可タスクで待機が発生した場合、他のタスクをキャンセルし、実行リソースの割り当てを前記タスクに集中させることで実行リソース制限内にタスクが完了できる確率を高めることができる。また、タスクの実行が実行リソース使用制限内に完了しなかった場合でもリトライ回数が一定値を上回ると実行リソースの制限がないときにのみタスクを実行するようにする。従って、途中再開不可のタスクが繰り返し完了できず、他のタスクにも影響を与える状況を防止することができ、より効率的なタスク処理を実現することが可能となる。
【図面の簡単な説明】
【００１０】
【図１】全体システム構成の一例を示す概念図である。
【図２】コンピュータのハードウェア構成を示すブロック図である。
【図３】全体システム構成の一例を示す詳細図である。
【図４】バックグラウンドタスクのソフトウェア構成を示す図である。
【図５】クライアント端末のデータ構造の一例を示す図である。
【図６】クライアント端末の一連の処理を示すフローチャートである。
【図７】第１実施形態に係るタスク順序決定処理を示すフローチャートである。
【図８】第１実施形態に係るタスク実行処理を示すフローチャートである。
【図９】第１実施形態に係る制限あり時実行キューのデータ遷移を示す図である。
【図１０】第２実施形態に係るタスク実行処理を示すフローチャートである。
【図１１】第２実施形態に係るタスク順序決定処理を示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下、本発明を実施するための最良の形態について図面などを参照して説明する。なお、本明細書で説明するシステムおよび方法は、各デバイスのログを収集、加工し、送信するものである。以降の説明および発明の図の中で、当事者にとって周知であり、本発明の説明を理解するために必要ない箇所は、本明細書では省略する。
【００１２】
（第１実施形態）
図１は、本実施形態に係る全体システム構成の一例を示す概念図である。本システムは、サーバコンピュータ１０２と、クライアント端末１０３と、デバイス１０４とを備え、各装置は、ＬＡＮ２０７を介してインターネット１０１に接続されている。インターネット１０１は、ファイアウォールを越えて上述の各装置間で情報をやり取りするための通信回線である。インターネット１０１により、サーバコンピュータ１０２、クライアント端末１０３、デバイス１０４が属するＬＡＮ２０７とは、ファイアウォールを越えて通信が可能である。なお、デバイス１０４とは、パーソナルコンピュータ（情報処理装置）や、パーソナルコンピュータでのオペレーションシステムを仮想化した仮想ＰＣやリモートＰＣを指す。また、画像形成装置、プリンタやＭＦＰ（マルチファンクションペリフェラル）等の組み込みコンピュータであってもよい。ＬＡＮ２０７およびインターネット１０１は、例えば、ＴＣＰ／ＩＰプロトコルなどをサポートする通信回線網であり、有線・無線は問わずいずれであってもよい。なお、本実施形態では、サーバコンピュータ１０２、デバイス１０４は、それぞれ１台として示しているが、複数台で構成されていてもよく、仮想ＰＣとして構成されていてもよい。
【００１３】
図２は、本実施形態に係るコンピュータ２００のハードウェア構成の一例を示すブロック図である。なお、特に断らない限り、本発明の機能が実行されるのであれば、単体の機器であっても、複数の機器から成るシステムであってもよい。また、特に断らない限り、本発明の機能が実行されるのであれば、ＬＡＮ、ＷＡＮ、インターネット等のネットワークを介して接続が為され処理が行われるシステムであっても本発明を適用できる。
【００１４】
なお、以降の説明で、コンピュータ２００は、サーバコンピュータ１０２、クライアント端末１０３、デバイス１０４のいずれであってもよい。コンピュータ２００は、ＲＯＭ２０２のプログラム用ＲＯＭあるいは外部記憶装置２０５に記憶された文書処理プログラム等に基づいて図形、イメージ、文字、表（表計算等を含む）等が混在した処理を実行するＣＰＵ２０１を備える。ＣＰＵ２０１は、システムバス２０４に接続される各デバイスを統括的に制御する。なお、これら以外に入出力装置を備えていてもよい。また、このＲＯＭ２０２のプログラム用ＲＯＭあるいは外部記憶装置２０５には、ＣＰＵ２０１の制御プログラムであるオペレーションシステムや各種データ等を記憶する。ＲＡＭ２０３は、ＣＰＵ２０１の主メモリ、ワークエリア等として機能し、ネットワークＩ／Ｆ制御部２０６は、ＬＡＮ２０７とのデータの送受信を制御する。加えて、ＣＰＵ２０１が外部記憶装置２０５に記憶されているプログラムに基づき処理を実行することによって、後述の図４に示されるようなコンピュータ２００のソフトウェア構成及び後述するフローチャートの各ステップの処理が実現される。
【００１５】
図３は、本実施形態に係る全体システム構成の一例を示す詳細図である。まず、インターネット１０１経由でアクセス可能な管理サーバ３０１があるものとする。管理サーバ３０１は、図１で示すサーバコンピュータ１０２と同様の構成であってよく、デバイスＡおよびデバイスＢ（１０４）から収集したログデータを回収するためのサーバである。また、クライアント端末１０３は、デバイスＡおよびデバイスＢ（１０４）からのログ収集、管理サーバ３０１へのログ送信等を行う機能を有し、アプリケーション３０２と、バックグラウンドタスク３０３から構成されている。アプリケーション３０２は、ユーザからの指示で起動するプログラムであり、不図示のユーザインタフェースを介してユーザとやり取りを行う。また、アプリケーション３０２は、ユーザ指示を受けてバックグラウンドタスク３０３を起動することも可能である。バックグラウンドタスク３０３は、クライアント端末１０３のバックグラウンドで動作するプログラムである。一般的には、定期間隔でオペレーティングシステム（以下、ＯＳ）から起動されるが、前述のように、ユーザからの指示を受けてアプリケーション３０２から起動される場合もある。デバイスＡおよびデバイスＢ（１０４）は、インターネット１０１に直接接続されており、クライアント端末１０３からの要求を受けて自デバイス内の情報を取得し、ログ情報を送信する。
【００１６】
次に、本実施形態に係るクライアント端末１０３内のバックグラウンドタスク３０３のソフトウェア構成の一例を図４にて示す。バックグラウンドタスク３０３は、デバイス１０４のログを収集、送信する機能を有する。バックグラウンドタスク３０３は、データ処理プログラムと情報格納領域の２つの種類に分類できる。データ処理プログラムは、タスク管理部４０１、タスク順序決定部４０２、タスク実行部４０３、プログラム状態管理部４０４、ネットワークＩ／Ｆ４０５から構成されている。情報格納領域は、実行履歴情報４０６、タスク定義情報４０７、制限あり時実行キュー４０８、制限なし時実行キュー４０９から構成されている。なお、情報格納領域は、ファイルやメモリなど、データの保存形式は問わないが、ＲＯＭ２０２のデータ用ＲＯＭあるいは外部記憶装置２０５と同等の場所に永続的に保管出来ることが望ましい。また、制限あり時実行キュー４０８と、制限なし時実行キュー４０９の２つのキューは、同一の構成であってよく、本実施形態では、２つのキューを総じて述べる場合は、単に、実行キューと記載する。
【００１７】
タスク管理部４０１は、実行するタスクを管理する処理部である。主な役割としては、本プログラムで実行すべきタスクの決定やキューへの格納および各処理部への指示を行う。また、タスク管理部４０１は、実行履歴情報４０６とタスク定義情報４０７を管理している。タスク順序決定部４０２は、実行キューに格納されている複数のタスクを、ある条件を基に順序を変更する役割を担う。タスク順序決定部４０２が行う処理は、図７において後述する。タスク実行部４０３は、実行キューに格納されている複数のタスクを決められた順序に従って実行する処理部である。プログラム状態管理部４０４は、プログラムの状態、状況について管理する。具体的には、本プログラムがどのようなトリガーを受けて起動されたかの情報や、使用できるリソースに制限があるかどうか、使用できるリソースを超過したか等の情報を、ＯＳを介して管理している。そして、これらの情報は、各処理部へ通知される。ネットワークＩ／Ｆ４０５は、外部ネットワークとの接続を行うためのインタフェースを担う部分である。そして、タスク実行部４０３は、ネットワークＩ／Ｆ４０５を介して管理サーバ３０１やデバイス１０４と通信することが可能である。
【００１８】
実行履歴情報４０６は、実行されたタスクの履歴を格納する領域であり、本プログラムにおいてタスクが完了した場合やタスクが途中でキャンセルされた場合にデータが書き出され、プログラム起動時に参照される。なお、その詳細は、図５（Ａ）にて後述する。タスク定義情報４０７は、本プログラムが実行するタスクの種類を定義する領域である。なお、その詳細は、図５（Ｂ）にて後述する。制限あり時実行キュー４０８および制限なし時実行キュー４０９は、実行すべきタスクを格納するキューである。制限あり時実行キュー４０８は、本プログラムを動作させるＣＰＵに使用制限がある場合に、制限なし時実行キュー４０９は、ＣＰＵの使用制限がない場合に実行されるキューである。実行キュー内のデータは、タスク管理部４０１によって格納され、タスク実行部４０３によって取り出される。なお、その詳細は、図５（Ｃ）にて後述する。
【００１９】
次に、本実施形態に係るクライアント端末１０３のデータ構造の一例について、図５を参照して説明する。なお、本実施形態で扱う主なデータは、図４に示す実行履歴情報４０６、タスク定義情報４０７、制限あり時実行キュー４０８、制限なし時実行キュー４０９の４つとするが、これらに限定しない。
【００２０】
図５（Ａ）は、実行履歴情報４０６のデータ構造の一例を示す図である。実行履歴情報４０６は、履歴ＩＤ５０１、タスクＩＤ５０２、対象デバイス５０３、ステータス５０４、リトライ回数５０５から構成されている。履歴ＩＤ５０１は、タスクの実行履歴を一意に識別するための識別子である。タスクＩＤ５０２は、タスクの内容を一意に識別するための識別子であり、タスク定義情報４０７に保存されている情報と紐付けられている。対象デバイス５０３は、どのデバイスに対するタスクであるかを示す。本実施形態では、デバイスの名称を記載しているが、デバイスを特定できれば名称でなくてもよい。ステータス５０４は、タスクの現在の実行ステータスを示し、「未実行」、「実行中」、「完了」の３つの種類が存在する。「未実行」は、対象のタスクがまだ実行されていないことを示す。「進行中」は、対象のタスクが実行中であることを示す。すなわち、前回のプログラム起動時に実行が完了せずに途中でキャンセルされた状態であることを示す。「完了」は、対象のタスクが完了したことを示し、これ以上タスクを実行する必要はない。
【００２１】
図５（Ｂ）は、タスク定義情報４０７のデータ構造の一例を示す図である。タスク定義情報４０７は、タスクＩＤ５０２、処理内容５０６、タスク種類５０７から構成されている。処理内容５０６は、このタスクがどのような内容の処理を行うかを示している。なお、本実施形態では、「デバイスからのログ収集」、「ログの加工」、「管理サーバへログファイル送信」の３種類のタスクが存在するが、これらに限定することなく、他のタスクであってもよい。タスク種類５０７は、タスクの種類を示し、本実施形態では、「途中再開可能」または「途中再開不可」のいずれかである。文字通り、「途中再開可能」は、タスクがキャンセルされても途中から再開可能であることを示し、「途中再開不可」は、タスクがキャンセルされたら最初からやり直しとなることを示している。
【００２２】
図５（Ｃ）は、実行キュー（制限あり時実行キュー４０８および制限なし時実行キュー４０９）のデータ構造の一例を示す図である。実行キューは、キューＩＤ５０８、タスクＩＤ５０２、対象デバイス５０３、ステータス５０４から構成されている。キューＩＤ５０８は、キュー内のタスクを一意に識別する識別子であり、数字が小さいキューＩＤ５０８を有するタスクが優先されて実行される。この場合、デバイスＡに対するログの加工処理が始めに実行され、デバイスＢに対するログファイルの送信処理が最後に実行される。また、本実施形態では、ステータス５０４は、図５（Ａ）と異なり、「未実行」および「実行中」の２種類のみが存在する。これは、完了済みのタスクは、実行キューに格納されないためである。
【００２３】
次に、クライアント端末１０３が行う処理の一例を、複数のフローチャートを用いて説明する。本実施形態では、ＣＰＵの制限が存在する環境下でデバイスＡ、デバイスＢの２つのデバイスに対して図５（Ｂ）に示す３種類のタスク（計６タスク）を実行した場合について説明を行う。まず、図６は、本実施形態に係るクライアント端末の一連の処理の一例を示すフローチャートであり、タスク順序決定処理（ステップＳ１）、タスク実行処理（ステップＳ２）の２つのステップを順番に実行する。なお、図６の処理は、本実施形態および後述する第２実施形態で同一の処理である。ステップＳ１については、図７を参照し、ステップＳ２については、図８を参照して詳細に説明する。
【００２４】
次に、本実施形態に係るクライアント端末１０３が実施する、タスクの実行順序を決定するタスク順序決定処理の詳細を、図７に示すフローチャートを用いて説明する。前述したように、ＯＳからの定期起動かユーザ指示により本フローが開始される。まず、ステップＳ１１において、タスク管理部４０１は、プログラム起動後に実行するタスクを実行履歴情報４０６またはタスク定義情報４０７から取得する。なお、本実施形態では、実行タスクの取得処理は、新規にタスクを実行する場合と、前回のプログラム起動時に実行したタスクの途中から実行する場合の２つのケースがある。新規にタスクを実行する場合、実行履歴情報４０６が存在しないため、定められた処理をタスク定義情報４０７から取得する。本実施形態において、定められた処理とは、図５で説明したデバイス１０４からのログ収集処理を、接続されているデバイス数分実行することである。このデバイス数を得るため、ＯＳに登録されているデバイス１０４の情報を取得する。途中から実行する場合は、図５において説明した実行履歴情報４０６に記録されている、ステータス５０４が「完了」でないタスクを実行することを認識する。
【００２５】
実行タスクが取得出来たら、ステップＳ１２において、タスク管理部４０１は、プログラムが動作している環境にＣＰＵの使用制限が存在しているか否かを、プログラム状態管理部４０４に問い合わせる。ＣＰＵ制限が存在しない場合（Ｎｏ）、制限なし実行キュー４０９に実行予定のタスクを格納して本フローを終了し、ステップＳ１１で取得したタスクを実行する処理に移る。一方、ＣＰＵ制限が存在する場合（Ｙｅｓ）、制限を考慮したタスクの実行が必要であるとみなし、ステップＳ１３、Ｓ１４でタスク順序決定部４０２に対してタスク順序を決定する指示を行う。また、取得したタスクを制限あり時実行キュー４０８へと格納する。
【００２６】
次に、ステップＳ１３において、タスク順序決定部４０２は、ステップＳ１１で取得したタスクの中に途中再開不可のタスクが存在するか否かを判定する。存在しない場合（Ｎｏ）、本フローを終了し、タスク実行処理に進む。一方、途中再開不可のタスクが存在する場合（Ｙｅｓ）、ステップＳ１４に進み、途中再開不可のタスクを優先的に実行するように順序を決定する。具体的には、制限あり時キュー４０８の各タスクのうち、タスク種類５０７が「途中再開不可」のタスクが先に実行されるようにタスクを並び替える。この処理により途中再開不可のタスクが途中再開可能なタスクより先に実行されるため、途中再開不可のタスクに対してＣＰＵを優先して割り当てることが可能となり、処理途中でＣＰＵの制限超過の可能性を軽減することができる。なお、順序決定の具体例については図９（Ａ）および（Ｂ）で後述する。
【００２７】
タスク順序が決定したら、タスク実行処理（ステップＳ２：図６）が実行される。図８は、タスク実行部４０３によるタスク実行処理の一例を示すフローチャートである。まず、ステップＳ２１において、タスク実行部４０３は、実行タスクを実行キューから取得する。具体的には、ＣＰＵ制限がある場合は、制限あり時実行キュー４０８から、ＣＰＵ制限がない場合は、制限なし実行キュー４０９からタスクを取得する。次に、ステップＳ２２において、タスク実行部４０３は、実行予定のタスクがデバイス１０４からのログ収集タスクであるか否かを、タスクＩＤ５０２から判定する。ログ収集タスクでない場合（Ｎｏ）、ステップＳ２ｂに進み、当該タスクを実行する。そして、完了したら、ステップＳ２ｃにおいて、次のタスクが存在するか否かを判定する。次のタスクが存在する場合（Ｙｅｓ）、ステップＳ２１に戻って、次のタスクを実行する。一方、次のタスクが存在しない場合（Ｎｏ）、本フローを終了する。本実施形態において、ログ収集タスク以外のタスクとしては、収集したログの加工タスクや管理サーバ３０１へのログ送信タスクが挙げられるが、本発明を理解する上で不要であるため詳細の説明は割愛する。
【００２８】
一方、ステップＳ２２で、ログ収集タスクである場合（Ｙｅｓ）、ステップＳ２３に進む。そして、ステップＳ２３においてタスク実行部４０３は、デバイス１０４からのログ収集タスクを実行する。タスク実行部４０３は、ネットワークＩ／Ｆ４０５を介してＯＳに登録されているデバイス１０４に対してログ要求指示を出す。要求指示を出した後、デバイス１０４からレスポンスが返ってくる。次に、ステップＳ２４において、タスク実行部４０３は、返ってきたレスポンスの内容が待機であるか否かを判定する。待機ではない場合（Ｎｏ）、ステップＳ２５に進み、ログファイルを取得する。その後は本タスクを終了し、ステップＳ２６において、次のタスクが存在するか否かを、実行キューの状況をみて判定する。次のタスクが存在しない場合（Ｎｏ）、本フローを終了し、次のタスクが存在する場合（Ｙｅｓ）、ステップＳ２１に戻り、次のタスクについて同様のフローでタスクを実行する。
【００２９】
一方、ステップＳ２４で、待機処理が発生した場合（Ｙｅｓ）、ステップＳ２７に進み、動作プログラムの環境においてＣＰＵ制限があるか否かを、プログラム状態管理部４０４を介して取得する。ＣＰＵ制限がない場合（Ｎｏ）、本タスクはＣＰＵの使用制限を考慮することなくタスクを実行できるため、ステップＳ２ａに進み、一定時間待機を行う。なお、本実施形態は、複数スレッドによる並行処理も可能であるため、待機中は、他のタスクを実行することが可能である。そして、待機完了後、ステップＳ２３に戻り、タスク実行部４０３は、再度デバイス１０４に対してログ要求指示を出し、ログファイルの取得をする。
【００３０】
一方、ステップＳ２７で、ＣＰＵ制限がある場合（Ｙｅｓ）、ステップＳ２８に進み、当該タスクが途中再開不可のタスクであるか否かを判定する。途中再開不可のタスクでない場合（Ｎｏ）、ＣＰＵ制限下においてタスクが途中でキャンセルされてしまっても途中から再開できるため処理のオーバーヘッドは発生しない。そのため、ＣＰＵ制限を考慮せずにタスクを実行することが可能であり、ステップＳ２ａに進み、一定時間待機する。一方、ステップＳ２８で、途中再開不可のタスクである場合（Ｙｅｓ）、ＣＰＵ制限下においてタスクが途中でキャンセルされてしまうと初めからやり直しになり、処理のオーバーヘッドが発生してしまう。そのため、ＣＰＵ制限内での実行完了を試みるためにステップＳ２９に進み、現在キューに格納されている他のタスクをキャンセルし、当該タスク以外のタスクの実行によりＣＰＵを消費しないようにする。つまり、実行するタスク以降で実行予定のタスクをキャンセルする。そして、キャンセル後にステップＳ２ａに進み、一定時間待機を行う。
【００３１】
以上のように、図８では、タスク実行処理フローの一例を示したが、本実施形態は、図に示したフローに限定されるものではない。例えば、ステップＳ２４で待機が発生した場合にＣＰＵ制限があるか否かを判定した後、途中再開不可のタスクであるか否かを判定したが、これら２つのステップの順序を入れ替えたフローでもよい。また、待機が発生した後、ＣＰＵ制限があるか否かを判定しているが、タスク実行前にＣＰＵ制限があるか否かを判定し、その情報に基づいて、ステップＳ２８以降の処理を実行する順序であってもよい。
【００３２】
次に、図９は、本実施形態における制限あり時実行キュー４０８のデータ遷移の一例を示す図である。まず、図９（Ａ）と図９（Ｂ）でタスク順序決定前後のデータ遷移を、次に、図９（Ｃ）と図９（Ｄ）でタスクのキャンセル前後のデータ遷移について説明する。
【００３３】
図９（Ａ）は、タスク順序決定前の制限あり時実行キュー４０８のデータを示す。本データは、図７で説明したように、タスク管理部４０１が実行履歴情報４０６を基に格納を行ったデータである。図９（Ａ）では、デバイスＡ（１０４）に対するログの加工処理が実行中、すなわち前回のプログラム起動時に途中でキャンセルされた状態で終了したタスクを含んでいる。また、その他未実行のタスクとしてデバイスＡ（１０４）に対するログファイル送信処理とデバイスＢ（１０４）に対する３つのタスクが存在していることを示している。
【００３４】
図９（Ｂ）は、タスク順序決定後の制限あり時実行キュー４０８のデータを示す。すなわち、図９（Ａ）の状態からステップＳ１４が実行されることにより順序が変更された状態である。つまり、図９（Ａ）の状態において、タスク順序決定部４０２は各キューのタスクのタスクＩＤ５０２から、定義情報４０７のタスク種類５０７を取得する。そして、タスク種類５０７が「途中再開不可」である場合、優先的に実行するようにキューの順序を変更する。この場合、デバイスＢ（１０４）からのログ収集処理が途中再開不可のタスクであるため、キューＩＤ５０８が０００３（３番目に実行予定）からキューＩＤ５０８が０００１（１番目に実行予定）に変更される。また、キューＩＤ５０８が０００１と０００２に格納されていたタスクは、それぞれキューＩＤが０００２、０００３へと変更される。
【００３５】
図９（Ｃ）は、デバイスＢ（１０４）からのログ収集処理後の制限あり時実行キュー４０８のデータを示している。図９（Ｂ）と比較して、キューＩＤ５０８が０００１のタスクが実行されているため、キューから取り除かれている状態となっている。このような状態から、タスクのキャンセル（ステップＳ２９）後の制限あり時実行キュー４０８の状態が図９（Ｄ）となる。図に示す通り、実行タスク以外の全てのタスクをキャンセルしてＣＰＵを他のタスクに割り当てないようにするため、キュー内は空の状態となる。
【００３６】
以上のように、本実施形態では、タスク順序決定処理においてＣＰＵ制限がある場合、複数あるタスクのうち途中再開不可のタスクを優先的に実行するように、優先度を高くして順序を決定することで、当該タスクにＣＰＵを優先的に割り当てている。また、タスク実行処理において、ＣＰＵ制限がある状況で途中再開不可のタスクで待機が発生した場合、他のタスクを実行してＣＰＵの割り当てを前記タスクに集中させることでＣＰＵ制限内にタスクが完了できる確率を高めている。これらの処理により、途中再開不可のタスクが繰り返し完了できないケースを軽減することができ、効率の良いタスク処理を実現することができる。
【００３７】
（第２実施形態）
第１実施形態では、ＣＰＵの制限が存在する環境下で２種類のデバイスに対して３種類のタスクを実行した場合について説明をした。第１実施形態により、デバイスとの通信において待機をする必要があった場合に他のタスクをキャンセルしてＣＰＵ消費を抑えることでデバイスとの通信をＣＰＵ制限内で完了させる確率を高めることが可能となった。しかしながら、ネットワークの状態やデバイスからのレスポンスが極端に遅い場合はタスク実行を完了できない場合がある。そこで、本実施形態では、ＣＰＵ制限が存在する環境下で途中再開不可のタスクが失敗してしまった場合のエラー処理について説明する。
【００３８】
図１０は、本実施形態における、タスク実行部４０３が行うタスク実行処理の一例を示すフローチャートである。なお、タスク実行処理は、図８において説明済みであり、ここでは本実施形態のポイントとなるタスク失敗時のエラー処理に限定したフローチャートを示す。まず、タスクが実行中にＣＰＵ使用制限を超過してしまった場合について説明する。ステップＳ２ａの一定時間待機中、ステップＳ３１において、ＣＰＵ制限を超過したか否かを判定する。具体的には、ＣＰＵ制限の超過は、ＯＳからプログラム状態管理部４０４に対して通知され、その後、タスク実行部４０３に通知される。ＣＰＵ制限を超過した通知がない場合（Ｎｏ）、処理を継続可能であるため、ステップＳ２３に戻る。一方、ＣＰＵ制限を超過した通知がある場合（Ｙｅｓ）、本プログラムは、終了処理を経た後、ＯＳによって強制的に終了させられてしまう。その終了処理（ステップＳ３２）においてタスク管理部４０１は、実行履歴情報４０６に実行ステータスを格納するが、その際に現在実行中のタスクのリトライ回数５０５を１増加させる。この処理により、タスクが何回目のトライであるかを記録することができる。
【００３９】
次に、図１１を用いて本実施形態におけるタスク順序決定部が行うタスク順序決定処理の一例を示す。本実施形態では、図１０で説明したフローがＣＰＵ制限超過により終了した後、次にプログラムが起動された際に本フローが実行される場合について説明する。すなわち、図１０では、ＣＰＵ制限を超過した場合に実行履歴情報４０６にリトライ回数を記録したが、このリトライ回数を基に実行キュー中のタスクを移動する処理を行う。
【００４０】
ステップＳ１１、Ｓ１２で実行履歴情報を取得した後、ＣＰＵ制限があった場合（ステップＳ１２でＹｅｓ）、実行履歴情報内のリトライ回数５０５が一定以上のタスクが存在するか否かを判定する。一定数以上のタスクが存在する場合（Ｙｅｓ）、そのタスクはＣＰＵ制限がある環境において実行しても処理できないタスクであるとみなし、ステップＳ４２に進む。そして、ステップＳ４２において、制限あり時実行キュー４０８から制限なし時実行キュー４０９にタスクを移動させる。なお、リトライ回数の閾値は、プログラム内に固定値を保持していても良いし設定ファイルを用意して記載しておき、プログラム実行時に前記設定ファイルから値を読み出してもよい。
【００４１】
以上、本実施形態では、タスクの実行がＣＰＵ使用制限内に完了しなかった場合にリトライ回数を記憶し、リトライ回数が一定値を上回るとＣＰＵ制限あり時に実行しないようにキューを移動させる処理を行う。これにより、永続的に実行エラーが発生し、他のタスクにも影響を与えることを防止することができ、より効率的なタスク処理を実現することが可能となる。
【００４２】
（その他の実施例）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【００４３】
また、本発明の好ましい実施形態について説明したが、本発明は、これらの実施形態に限定されず、その要旨の範囲内で種々の変形および変更が可能である。
【図１】
0006702762.tif 000002
【図２】
0006702762.tif 000003
【図３】
0006702762.tif 000004
【図４】
0006702762.tif 000005
【図５】
0006702762.tif 000006
【図６】
0006702762.tif 000007
【図７】
0006702762.tif 000008
【図８】
0006702762.tif 000009
【図９】
0006702762.tif 000010
【図１０】
0006702762.tif 000011
【図１１】
0006702762.tif 000012