(57)【特許請求の範囲】
【請求項１】
複数の印刷デバイスと通信可能な情報処理装置であって、
前記印刷デバイスに転送すべき印刷ジョブが生成された場合に、印刷ジョブの出力先の印刷デバイスを監視対象キューに順次登録する登録手段と、
前記印刷デバイスの監視のための接続数が最大接続数に達していない場合、前記登録手段による前記監視対象キューへの印刷デバイスの登録順序に従い印刷デバイスの監視を開始する監視手段と、
前記印刷デバイスに連続で転送された印刷ジョブの数を示す連続転送数、及び、前記印刷デバイスを連続で監視している時間を示す連続監視時間に関する特定の条件が成立したか否かを判定する判定手段と、
前記判定手段の判定に基づき印刷デバイスの監視を一旦中断する監視中断手段と、を有し、
前記登録手段は、監視中断した印刷デバイスに登録されている印刷ジョブの中で完了していない印刷ジョブがある場合に、前記監視中断した印刷デバイスを前記監視対象キューに再登録することを特徴とする情報処理装置。
【請求項２】
前記監視手段は、前記監視中断手段により監視の中断後、前記登録手段により前記監視対象キューに登録された登録状況に基づき印刷デバイスを監視することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記監視対象キューに再登録された印刷デバイスの監視が再度開始された場合、監視中断時に印刷が完了していないジョブの処理結果を取得する取得手段を備えたことを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
前記判定手段は、前記特定の条件として、前記連続転送数または前記連続監視時間が上限値に達したか否かを判定することを特徴とする請求項１乃至３の何れかに記載の情報処理装置。
【請求項５】
前記連続転送数の上限値を設定する第１設定手段を有することを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記連続監視時間の上限値を設定する第２設定手段を有することを特徴とする請求項４又は５に記載の情報処理装置。
【請求項７】
前記連続監視時間が前記第２設定手段で設定された上限値に達するまでに、被監視対象の印刷デバイスからの印刷ジョブの状態が変化した通知を受けた場合、前記連続監視時間を初期値に戻す初期化手段を有することを特徴とする請求項６に記載の情報処理装置。
【請求項８】
請求項１乃至７の何れかに記載の情報処理装置と印刷デバイスとを含む印刷システムであって、
前記印刷デバイスは、
接続中の情報処理装置を記憶する接続管理手段と、
接続中の情報処理装置から印刷ジョブを受け付ける受信手段と、
印刷デバイス内で印刷ジョブの状態が変化したことを検知する検知手段と、
印刷ジョブ状態が変化したことを、前記接続管理手段に記憶された情報処理装置へ通知する通知手段と、
前記印刷ジョブ状態の変化通知を行う際に、通知すべき情報処理装置が前記接続管理手段に記憶されていない場合、通知すべきジョブ状態変化通知を保存する保存手段とを有し、
前記通知手段は、情報処理装置から前記保存されたジョブ状態の取得を受けた際に、保存しているジョブ状態を通知することを特徴とする印刷システム。
【請求項９】
複数の印刷デバイスと通信可能な情報処理装置における印刷デバイスの監視方法であって、
前記印刷デバイスに転送すべき印刷ジョブが生成された場合に、印刷ジョブの出力先の印刷デバイスを監視対象キューに順次登録する第１登録工程と、
前記印刷デバイスの監視のための接続数が最大接続数に達していない場合、前記監視対象キューへの印刷デバイスの登録順序に従い印刷デバイスの監視を開始する監視工程と、
前記印刷デバイスに連続で転送された印刷ジョブの数を示す連続転送数、及び、前記印刷デバイスを連続で監視している時間を示す連続監視時間に関する特定の条件が成立したか否かを判定する判定工程と、
前記判定工程の判定に基づき印刷デバイスの監視を一旦中断する監視中断工程と、
監視中断した印刷デバイスに登録されている印刷ジョブの中で完了していない印刷ジョブがある場合に、前記監視中断した印刷デバイスを前記監視対象キューに再登録する第２登録工程を有することを特徴とする監視方法。
【請求項１０】
前記監視工程は、前記監視中断工程による監視の中断後、前記第２登録工程により前記監視対象キューに登録された登録状況に基づき印刷デバイスを監視することを特徴とする請求項９に記載の監視方法。
【請求項１１】
前記監視対象キューに再登録された印刷デバイスの監視が再度開始された場合、監視中断時に印刷が完了していないジョブの処理結果を取得する取得工程を備えたことを特徴とする請求項９又は１０に記載の監視方法。
【請求項１２】
前記判定工程は、前記特定の条件として、前記連続転送数または前記連続監視時間が上限値に達したか否かを判定することを特徴とする請求項９乃至１１の何れかに記載の監視方法。
【請求項１３】
前記連続転送数の上限値を設定する第１設定工程を有することを特徴とする請求項９に記載の監視方法。
【請求項１４】
前記連続監視時間の上限値を設定する第２設定工程を有することを特徴とする請求項９又は１３に記載の監視方法。
【請求項１５】
前記連続監視時間が第２設定工程において設定された上限値に達するまでに、被監視対象の印刷デバイスからの印刷ジョブの状態が変化した通知を受けた場合、前記連続監視時間を初期値に戻す初期化工程を有することを特徴とする請求項１４に記載の監視方法。
【請求項１６】
請求項９乃至１５の何れかに記載の監視方法と印刷デバイスによる監視方法を含む監視方法であって、
前記印刷デバイスは、
接続中の情報処理装置を接続管理手段に記憶する接続管理工程と、
接続中の情報処理装置から印刷ジョブを受け付ける受信工程と、
印刷デバイス内で印刷ジョブの状態が変化したことを検知する検知工程と、
印刷ジョブ状態が変化したことを前記接続管理手段に記憶された情報処理装置へ通知する通知工程と、
前記印刷ジョブ状態の変化通知を行う際に、通知すべき情報処理装置が前記接続管理手段に記憶されていない場合、通知すべきジョブ状態変化通知を保存手段に保存する保存工程とを有し、
前記通知工程は、情報処理装置から前記保存されたジョブ状態の取得を受けた際に、保存しているジョブ状態を通知することを特徴とする監視方法。
【請求項１７】
請求項９乃至１６の何れかに記載の監視方法をコンピュータに実行させる為のプログラムをコンピュータ可読の形態で記憶した記憶媒体。
【請求項１８】
請求項９乃至１６の何れかに記載の監視方法をコンピュータに実行させる為のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータの負荷を軽減し効率的に印刷ジョブ又は印刷デバイスを管理する為の仕組みに関する。
【背景技術】
【０００２】
ネットワーク上に印刷ジョブを分散し、複数のプリンタを用いて高速印刷を実現する分散印刷技術が特許文献１等により知られている。この特許文献１によれば、複数に分散された印刷ジョブの状態をパーソナルコンピュータ等のジョブ発行元で収集し、各印刷ジョブの状態をパーソナルコンピュータで平行して管理することが開示されている。
【特許文献１】特開２００１−２９０６２３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかし、例えば、ネットワークで接続された全国各拠点に存在する大量の印刷デバイスに大量の印刷ジョブを投入し印刷を行うケースがある。数台の印刷デバイスならまだしも、例えば数百台の印刷デバイスの監視を行おうとすると、特許文献１に開示される監視方法では現実的ではない。数百台の印刷デバイスを平行して監視するのは処理負荷が非常に大きくなる。又は、著しく監視を行うコンピュータのコストを上昇させてしまう。
【課題を解決するための手段】
【０００４】
本発明は上記問題点に鑑みてなされたものであり、複数の印刷デバイスと通信可能な情報処理装置であって、前記印刷デバイスに転送すべき印刷ジョブが生成された場合に、印刷ジョブの出力先の印刷デバイスを監視対象キューに順次登録する登録手段と、前記印刷デバイスの監視のための接続数が最大接続数に達していない場合、前記登録手段による前記監視対象キューへの印刷デバイスの登録順序に従い印刷デバイスの監視を開始する監視手段と、前記印刷デバイスに連続で転送された印刷ジョブの数を示す連続転送数、及び、前記印刷デバイスを連続で監視している時間を示す連続監視時間に関する特定の条件が成立したか否かを判定する判定手段と、前記判定手段の判定に基づき印刷デバイスの監視を一旦中断する監視中断手段と、を有し、前記登録手段は、監視中断した印刷デバイスに登録されている印刷ジョブの中で完了していない印刷ジョブがある場合に、前記監視中断した印刷デバイスを前記監視対象キューに再登録することを特徴とする。
【発明の効果】
【０００５】
本発明によれば、例えば、複数の各印刷デバイスに大量の印刷ジョブを投入した場合等に、監視側の印刷デバイス又は印刷ジョブの監視負荷を軽減し、必要以上にコンピュータのコストを上昇させる必要がない。
【発明を実施するための最良の形態】
【０００６】
以下、本発明の実施の形態を図面に基づいて説明する。
【０００７】
図１は、本発明の印刷システムの構成を示すブロック図である。なお、本システムにおけるネットワークプリンタは、複数台接続されていることを仮定している。
【０００８】
図１において、デバイス１０４Ａ、１０４Ｂ、１０４Ｎは印刷デバイス（以下デバイスと呼ぶ）である。各印刷デバイスには図示省略したネットワークインタフェースを介しネットワーク１０２に接続されている。印刷管理サーバコンピュータ１０１から転送される印字データを含む印刷ジョブを解析して１ページずつドットイメージに変換し印刷を行なう。なお、ここでの、印刷ジョブとは、ページ記述言語等の描画データ、及び、印刷レイアウト設定などの印字に係る各種ジョブ設定データを含めた総称を指す。また、デバイス１０４Ａ、１０４Ｂ、１０４Ｎとしては、電子写真方式を採用したレーザービームプリンタやインクジェット方式を採用したインクジェットプリンタ等を適宜適用することができる。
【０００９】
またデバイス１０４Ａ、１０４Ｂ、１０４Ｎは、印刷ジョブのスケジュール管理や、後述する印刷ジョブの履歴の保持や印刷ジョブの各種状態管理を行うデバイススケジューラ１０３を含む。
【００１０】
このデバイススケジューラ１０３については、例えば、専用ハードウェアで構成することができる。また、ＥＡＰ（Ｅｍｂｅｄｄｅｄ  Ａｐｐｌｉｃａｔｉｏｎ  Ｐｌａｔｆｏｒｍ）と呼ばれるデバイス内部に用意されたプラットフォームでアプリケーションを実行させることにより構成することもできる。また、デバイススケジューラ１０３は、ハードウェアとソフトウェアの協働により構成もできるし、デバイス１０４Ａ、１０４Ｂ、１０４Ｎと相互通信可能に接続された情報処理装置において処理の一部を実行させ同等の機能を実現するようにしても良い。また、予め印刷デバイスに内蔵させても良いし、オプションとして機能追加する形態でも良い。
【００１１】
１０１は本実施形態の印刷管理サーバコンピュータ（以下、印刷管理サーバと呼ぶ）としての情報処理装置であり、ネットワークケーブルによって、ネットワーク１０２に接続され、ネットワークで使用されるファイルを蓄積したり、ネットワーク１０２の使用状態を監視したりする。印刷管理サーバ１０１は、ネットワーク１０２に接続されている複数のプリンタを管理している。構成としては、印刷管理サーバ１０１は、一般的な情報処理装置であり、印刷管理サービスが実行可能に格納されている。
【００１２】
＜ハードウェア構成図＞
図２は、図１で示した印刷管理サーバ１０１とデバイス１０４が接続される様子を簡易的に表したものであり、夫々の、ハードウェア構成を説明するブロック図である。
【００１３】
ＣＰＵ２０１は、ＲＯＭ２０３のプログラム用ＲＯＭに記憶された、或いはハードディスク２１１からＲＡＭ２０２にロードされたＯＳやアプリケーション等のプログラムを実行する。ＯＳとはコンピュータ上で稼動するオペレーティングシステムの略語であり、以下オペレーティングシステムのことをＯＳと呼ぶ。後述する各フローチャートの処理はこのプログラムの実行により実現できる。ＲＡＭ２０２は、ＣＰＵ２０１の主メモリ、ワークエリア等として機能する。キーボードコントローラ（ＫＢＣ）２０５は、キーボード２０９や不図示のポインティングデバイスからのキー入力を制御する。ＣＲＴコントローラ（ＣＲＴＣ）２０６は、ＣＲＴディスプレイ２１０の表示を制御する。ディスクコントローラ（ＤＫＣ）２０７は各種データを記憶するハードディスク（ＨＤ）２１１やフロッピー（登録商標）ディスク（ＦＤ）等におけるデータアクセスを制御する。ＰＲＴＣ２０８は、接続されたデバイス１０４との間の信号の交換を制御する。ＮＣ２１２はネットワークに接続されて、ネットワークに接続された他の機器との通信制御処理を実行する。尚、ＮＣ２１２は、ＰＲＴＣ２０８と区別して示されているが、ＰＲＴＣ２０８と協働しネットワーク通信手段として機能するので、ＰＲＴＣに含めるよう考えることもできる。
【００１４】
次に、デバイス１０４の構成について説明する。図示するように、デバイス１０４において、１３０１はプリンタＣＰＵであり、ＲＯＭ１３０２や、外部メモリ１３０３に記憶された制御プログラムに基づいてシステムバス１３０４に接続される各ブロックを制御する。ＣＰＵ１３０１の処理により生成された画像信号が、印刷部Ｉ／Ｆ１３０５を介して、印刷部（プリンタエンジン）１３０６に出力情報として出力される。また、ＣＰＵ１３０１は、入力部１３０７を介して印刷管理サーバ１０１との通信処理が可能となっており、デバイス１０４内の情報等を印刷管理サーバ１０１に通知できる。
【００１５】
ＲＯＭ１３０２内のプログラムＲＯＭには、ＣＰＵ１３０１の制御プログラム等を記憶している。ＲＯＭ１３０２内のフォント用ＲＯＭには、出力情報を生成する際に使用するフォントデータ等を記憶している。ＲＯＭ１３０２内のデータ用ＲＯＭには、ハードディスク等の外部メモリ１３０３がないプリンタの場合、印刷管理サーバ１０１上で利用される各種情報を記憶している。
【００１６】
ＲＡＭ１３０８は、ＣＰＵ１３０１の主メモリや、ワークエリア等として機能するＲＡＭであり、図示しない増設ポートに接続されるオプションＲＡＭによりメモリ容量を拡張することができるように構成されている。また、ＲＡＭ１３０８は、出力情報展開領域（ビットマップデータ展開領域）、環境データ格納領域（印刷ジョブ設定、印刷ジョブの状態情報等）、ＮＶＲＡＭ等に用いられる。上述したハードディスク（ＨＤ）、ＩＣカード等の外部メモリ１３０３は、メモリコントローラ（ＭＣ）１３０９によりアクセスを制御される。外部メモリ１３０３は、オプションとして接続され、フォントデータ、エミュレーションプログラム、フォームデータ等を記憶する。また、操作パネル１３１１は操作のためのスイッチ及びＬＥＤ表示器等で構成されている。
【００１７】
図３は、図２に示したＲＡＭ２０２のメモリマップの一例を示す図であり、印刷管理サービスが、ＲＡＭ２０２にロードされ実行可能となった状態のメモリマップである。
【００１８】
外部メモリ２１１から直接ＲＡＭ２０２にロードして実行させても良い。さらに、印刷管理サービスをプログラムＲＯＭ２０３に記憶しておき、これをメモリマップの一部となすように構成し、直接ＣＰＵ２０１で実行することも可能である。また、以上の各装置と同等の機能を実現するソフトウェアをもって、ハードウェア装置の代替として構成することも出来る。
【００１９】
印刷管理サービスは、印刷管理サーバにおいては、印刷ジョブを転送したり、印刷ジョブの印刷先の変更を指示したり、印刷順序を変更したりする指示をするための制御を行う。
【００２０】
３０１は基本Ｉ／Ｏプログラムを記憶するための領域である。基本Ｉ／Ｏプログラムは、印刷管理サーバ１０１の電源がＯＮされたときに、外部メモリ２１１からＯＳがＲＡＭ２０２に読み込まれ、ＯＳの動作を開始させるＩＰＬ（イニシャルプログラムローディング）機能などを有しているプログラムである。
【００２１】
３０２はＯＳ（オペレーティングシステム）を記憶する領域であり、３０３は印刷管理サービスを記憶する領域である。３０４は、関係データを記憶する領域である。３０５はワークエリアで、ＣＰＵ２０１が各種のプログラムを実行するための領域である。
【００２２】
＜ソフトウェア構成図＞
次に、本プリントシステムの印刷管理サーバ１０１のソフトウェア構成について説明する。図４は、印刷管理サーバ１０１におけるソフトウェア構成の一例を示す図である。また、各ブロックで示されたソフトウェア構成は、図２のＣＰＵ２０１がＲＯＭ、ＨＤＤ等に記憶される各種プログラムを実行することにより実現される機能を示す。
【００２３】
通常、Ｍｉｃｒｏｓｏｆｔ  Ｗｏｒｄ（登録商標）などの一般的なアプリケーション４０１は印刷の指示を受け付けると、一連の描画コマンドをＯＳを介して生成する。ＯＳを介して生成された描画コマンドを受け取ったプリンタドライバ４０２は、一連の描画コマンドに基づいてデバイス１０４Ａ〜１０４Ｎで解釈可能なＰＤＬファイルを含む印刷ジョブを生成する。また、デバイス１０４Ａ〜１０４Ｎの各々の機種が異なる場合には、場合によっては、各々のデバイスに対応するプリンタドライバ４０２Ａ〜４０２Ｎが、印刷管理サーバ１０１に具備されることもある。
【００２４】
そして、プリンタドライバ４０２は、デバイスへ生成した印刷ジョブを転送するために該生成した印刷ジョブのデータをプリントスプーラ４０３に渡す。ここではＯＳをウィンドウズ（登録商標）と仮定しているのでプリントスプーラ４０３はウィンドウズ（登録商標）スプーラである。但し、本発明を適用するコンピュータのＯＳはＷｉｎｄｏｗｓ（登録商標）に限定されるものではなく、描画命令を備えるものであれば他のＯＳも適用可能であることは言うまでもない。
【００２５】
プリントスプーラ４０３は、ユーザがユーザインタフェースを介して選択し指示したジョブ制御ポートモニタ４０４に印刷ジョブを渡して、デバイス１０４Ａ〜１０４Ｎのデバイスに転送させる手順をとる。
【００２６】
ここでは、ユーザは予め印刷管理サービス４０５に印刷ジョブを転送する、ジョブ制御ポートモニタ４０４を指定して印刷を指示したものとして説明を進める。
【００２７】
また、プリンタドライバインタフェースを介して設定された用紙サイズ、ステイプル指示等の印刷設定情報も、ジョブ制御ポートモニタ４０４に通知される。ジョブ制御ポートモニタ４０４は上位から渡された印刷ジョブのみならず通知された印刷設定情報も印刷管理サービス４０５に通知する。
【００２８】
印刷管理サーバ１０１、又は、印刷管理サーバ１０１が利用可能なネットワーク１０２上の別の情報処理装置のカスタマイズアプリケーション４０６は、ＡＰＩ４０７を介し、印刷管理サービス４０５に印刷ジョブを投入する。なお、ＡＰＩとはＡＰＩ：Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍ  Ｉｎｔｅｒｆａｃｅの略語である。
【００２９】
印刷管理サービス４０５は、外部アプリケーションとのインタフェースであるＡＰＩ４０７と、印刷管理部４１０と、接続管理部４２０と、印刷ジョブを各デバイスに転送する複数の転送部４３０と含む。これらの各機能ブロックはソフトウェア的に構成されているものとして示すが、何れかの機能ブロックをハードウェア的に構成しても同様の機能を得ることができる。
【００３０】
印刷管理部４１０は、現在のジョブ状況を保持するジョブ管理部４１１と、複数のプリントキューを管理するプリントキュー管理部４１２と、複数のプリンタポートを管理するプリンタポート管理部４１３とを含む。各構成部の機能は後述で詳しく説明する。
【００３１】
接続管理部４２０は、現在のデバイスに係る状態を保持するデバイス管理部４２１と、デバイスとの接続順序を管理する接続順序制御部４２２と、それら順序を保持する接続順序リストとを備え、本発明の特徴である、印刷先の切り替え処理を制御している。この印刷先の切り替え処理の制御の詳細は後述で説明する。
【００３２】
＜プリントキュー情報＞
図５は、ジョブ制御ポートモニタ４０４からプリントキュー（印刷管理部４１０の最左上部）で受け付けた印刷ジョブの動作を決めるプリントキュー情報５００を示す図である。このプリントキュー情報５００は何れかのタイミングで事前にプリントキューに対応して設定されているものとする。
【００３３】
ここで、プリントキュー情報５００の設定内容である、プリンタ名５０１、プリンタドライバ名５０２、ポート名５０３、及びバックアッププリンタ名５０４について説明する。
【００３４】
プリンタ名５０１は、ＷｉｎｄｏｗＳ（登録商標）のプリンタオブジェクトの名前を示しており、プリンタオブジェクト毎に異なる名前であり、プリンタオブジェクトを識別することができる。プリンタドライバ名５０２は、プリンタオブジェクトに設定されているプリンタドライバの名前である。ポート名５０３は、プリンタ名に対応するプリンタポートの名称である。バックアッププリンタ名５０４は、代行印刷、負荷分散印刷処理等の場合に使用される代行印刷するためのプリンタの名前であり、図５の例のように複数登録可能である。
【００３５】
印刷ジョブ投入先のデバイスで紙なし等エラーが発生すると、印刷ジョブを受け付けたプリントキューとプリントキュー情報に設定されている複数のバックアッププリンタを用いて負荷分散印刷処理を行う。具体的には、印刷ジョブを受け付けたプリントキューとプリントキュー情報に設定されている複数のバックアッププリンタの中から、順次転送可能なデバイスに印刷ジョブを転送又は移動し代行印刷を行う。ここで、転送可能なプリンタの決定方法としては、最初に転送可能と判定されるデバイス、予め決められた優先度に従うデバイスを抽出する方法が取られる。
【００３６】
＜プリンタポート情報＞
図６は各プリンタへ印刷ジョブを転送するときの動作を決めるプリンタポート情報６００を示す図である。図４の印刷管理部４１０の最左下部の各プリンタポートに対応付けられ、何れかのタイミングで事前に設定される。また、プリンタポート情報６００はプリントキューにも対応して設定される。また、図６に示される設定は、プリンタポート毎、プリンタキュー毎に設定可能である。プリンタアドレス６０１は、印刷ジョブ転送先のデバイスのネットワークアドレスであり、対応するデバイスのＩＰアドレス又は名前解決（ＤＮＳ：Ｄｏｍａｉｎ  Ｎａｍｅ  Ｓｙｓｔｅｍ）で使用されるネームが関連付けられている。プリンタモデル６０２は、印刷ジョブ転送先のデバイスの種別を示すプリンタモデル名であり、プリンタモデルの違いによる動作差異が発生した際には、プリンタモデルごとの定義を作成し差異を吸収する。この差異吸収に係る処理の詳細な説明は個々では省略する。プロトコル６０３はデバイスへ印刷ジョブを転送する際の通信プロトコルであり、例えばＬＰＲ（Ｌｉｎｅ  ＰＲｉｎｔｅｒ  ｄｅａｍｏｎ  Ｐｒｏｔｏｃｏｌ）と呼ばれる、相互通信しながら印刷ジョブを転送するプロトコルや、印刷ジョブを直接転送するＲＡＷプロトコル等がある。
【００３７】
本印刷システムの特徴的な設定として、プリンタポート情報６００に設定されているデバイス又はジョブ監視にかかわる設定がある。印刷先切り替えモード６０４は後述のフローチャートで詳しく説明する印刷先切り替えに係る設定フィールドである。連続監視時間６０５、連続転送数６０６は、印刷切り替えを行う条件である。
【００３８】
連続監視時間６０５は、デバイス又は印刷ジョブを連続して監視する上限時間を示す。この連続監視時間６０５は、ユーザ任意の値に設定可能であり、カスタマイズアプリケーション４０６が提供す設定画面（不図示）を介しての入力値に基づき設定される。
【００３９】
また、連続転送数６０６は、同じデバイスに対して連続して印刷ジョブを幾つ転送するかの条件を示す。この連続転送数６０６は、ユーザ任意の値に設定可能であり、カスタマイズアプリケーション４０６が提供す設定画面（不図示）を介しての入力値に基づき設定される。
【００４０】
尚、印刷先の切り替え条件として、連続監視時間６０５、連続転送数６０６が示されているが、これに、限定されるものではない。例えば、印刷ジョブ転送サイズ等、各種、特定の条件を含めることができる。
【００４１】
＜ジョブ情報＞
図７は一般アプリケーション４０１もしくはカスタマイズアプリケーション４０６から投入される印刷ジョブのジョブ情報７００であり、ＨＤＤ２１１に保存され、ジョブ管理部４１１によって管理される情報である。
【００４２】
カスタマイズアプリケーション４０６からジョブが投入される場合には、図４中のＡＰＩ４０７経由で印刷管理部４１０に印刷ジョブが入力される。一方、一般アプリケーション経由では、ジョブ制御ポートモニタ４０４経由で印刷管理部４１０に印刷ジョブが入力される。印刷管理部４１０は印刷ジョブを入力するとそれに対応するジョブ情報７００を生成し、プリントキューに生成したジョブ情報７００を登録する。また、印刷ジョブの実体のデータはジョブ情報７００に関連付けられ、図４に図示される如くＨＤＤ２１１に保存される。
【００４３】
ジョブ情報７００には、ドキュメント名７０１、印刷管理サービスで発行されるジョブＩＤ７０２、印刷したユーザ名７０３、ページ数７０４、ジョブ状態７０５等が含まれる。また、同ジョブ情報７００には、デバイス内で生成されるデバイスジョブＩＤ７０６、スケジューリングの順序を決定する優先度７０７、完了結果７０８、および完了時間７０９も含まれる。
【００４４】
ジョブ状態７０５は、そのときのジョブの状態によって、例えばスプール中、転送中、印刷中、停止中、印刷完了などの状態をとる。
【００４５】
＜接続順序リスト＞
図８は図４で示した接続順序リスト８００の一例である。この接続順序リスト８００には、監視対象となるデバイスの識別子及び各デバイスの付属情報が基本的にＦＩＦＯで登録されている。この接続順序リスト８００又は接続順序リスト８００に基づく設定の事を、印刷管理サーバ１０１による監視対象の順序を管理する為の設定ということで、監視対象キューと呼ぶこともある。そして、この接続順序リスト８００におけるデバイスの登録順序に従い、順次、デバイスに関連する状態の監視を実行する。
【００４６】
なお、ここでの”接続”とは上述の接続管理部４２０の管理に基づく、通信セッションの確立のことを指し、該通信セッションの中で、各種状態の取得や要求等を行うことができる。また、印刷デバイスの監視を中断するとは、確立された通信セッションを切断することを指す。図８に示される接続順序リスト８００は、後述の図１５のＳ１５０２で更新される。
【００４７】
接続順序リスト８００の横方向の項目には、接続対象プリンタ名、各プリンタキューに登録されている未転送のジョブ数、接続優先度、接続状態、今回の接続ですでに転送したジョブ数である転送済みジョブ数が設定されている。図８中では、１乃至３の接続順番において、デバイスと接続中であり、４番目以降では接続待機中であることが示されている。また、接続中、接続待機中の他にも、一旦接続を切断し再度の接続を待機する「確認待ち」の状態もある。この「確認待ち」は広義で接続待機中に含まれる。
【００４８】
そして上述の接続管理部４２０は、この接続順序リスト８００に登録（設定）された情報を元に接続順序を決定する。処理の詳細は後述にて説明する。
【００４９】
＜印刷デバイスの機能ブロック図＞
図９は図１で示したデバイス１０４Ａ〜１０４Ｎの構成の一例を示す図である。なお、図中ではハードウェアブロックとソフトウェアブロックとが混在しているが、何れもデバイスの特定の機能を示す。
【００５０】
デバイスコントローラ９０１はデバイスの制御を行うモジュールであり、ハードウェアの状態や、投入された印刷ジョブの状態の管理、制御を行う。先の図２で説明したＣＰＵ１３０１及び印刷部Ｉ/Ｆ１３０５等に相当する。また、デバイスがＭＦＰ（Ｍｕｌｔｉ  Ｆｕｎｃｔｉｏｎ  Ｐｒｉｎｔｅｒ）と呼ばれる印刷、コピー、ＦＡＸ、スキャン等の複数の機能を備える複合機である場合は、該デバイスコントローラ９０１はそれら全ての機能を統合的に管理、制御するモジュールに該当する。
【００５１】
デバイスストレージ９０２は、デバイス内に具備、又は相互通信可能に接続された永続記憶領域、もしくは永続記憶装置であり、ＲＡＭもしくはＨＤＤといったデータ記憶手段によって実現される。
【００５２】
また前述したように、デバイス１０４Ａ〜１０４Ｎは印刷ジョブのスケジュール管理や、後述する印刷ジョブ履歴の保持及び管理を行うデバイススケジューラ１０３を備えている。デバイススケジューラ１０３は、接続管理部９１１、スケジュール管理部９１２、イベント管理部９１３、履歴管理部９１４で構成される。
【００５３】
接続管理部９１１は、印刷管理サービス４０５との通信を行う複数の接続部および、印刷管理サービス４０５との接続状況や、印刷管理サービス４０５から登録されているイベント情報を保持する、後述する接続リスト１０００を備える。
【００５４】
スケジュール管理部９１２は、印刷管理サービス４０５から受け付けた印刷ジョブのリストを管理する部分である。後述するスケジュールリスト１１００および、それら印刷ジョブを制御するジョブ制御部を含み、印刷ジョブのスケジューリングを行う。
【００５５】
イベント管理部９１３は、デバイスコントローラ９０１が持つハードウェアの状態を保持し、デバイスコントローラ９０１からハードウェア状態の変化を受け付け、スケジュール管理部９１３および接続管理部９１１を経由して接続している印刷管理サービス４０５に情報を通知する。
【００５６】
またデバイスコントローラ９０１内の印刷ジョブ状態の変化を受け付け、スケジュール管理部９１２に通知する。通知を受けたスケジュール管理部９１２はスケジュールリストに含まれるジョブ状態を更新し、接続している印刷管理サービス４０５に通知するよう接続管理部９１１に依頼する。
【００５７】
履歴管理部９１４は、印刷ジョブの完了履歴を管理するモジュールであり、接続管理部９１１の指示によって、デバイスストレージ９０２に履歴ファイルを生成、読み書き、削除を行う。それら履歴ファイルは履歴管理部９１４によって操作される履歴管理ファイルによって管理される。これら印刷ジョブ履歴の管理処理の詳細は後述する。
【００５８】
尚、図９中には示されていないが、デバイス１０４Ａ〜１０４Ｎの各々には、例えば、記録媒体への像形成を行うプリンタエンジン及びプリンタエンジンの各種情報を検知するセンサ機構等も具備されている。これら、プリンタエンジン等については、図３で説明した通りである。
【００５９】
＜デバイス側における接続リスト１０００＞
図１０は接続管理部９１１によって生成される接続リスト１０００（以降、接続リスト）の一例である。接続リスト１０００にはデバイススケジューラ１０３に通信セッションを張って接続しているコンピュータの固有ＩＤが登録されている。接続リスト１０００には複数のコンピュータ（固有ＩＤ）が含まれているが、この中の１つが、図１の印刷管理サーバ１０１である。ここで留意する点として、接続リスト１０００へのコンピュータの登録順番は印刷順番を定義するものではない。印刷順番は後述するスケジュールリスト１００に基づき決定される。以下、接続リスト１０００について、具体的に説明する。
【００６０】
接続リストは、管理ＩＤ、印刷管理サービスから通知されるユニークである固有ＩＤ、デバイスコントローラから通知されるイベントを要求するかを設定するイベント登録フィールド、及び印刷ジョブ履歴機能を利用するかを設定する履歴モードフィールドからなる。以下では、履歴機能を利用する設定を前提として説明する。
【００６１】
また固有ＩＤは、本実施形態ではＵＵＩＤ（Ｕｎｉｖｅｒｓａｌｌｙ  Ｕｎｉｑｕｅ  ＩＤｅｎｔｉｆｉｅｒ）と呼ばれる、１６進数３２桁の数値を用いたが、接続するサービス毎にユニークに識別可能な手段であれば手法は問わない。
【００６２】
＜デバイス側におけるスケジュールリスト＞
図１１はデバイスのスケジュール管理部９１２によって生成されるスケジュールリスト１１００の一例である。スケジュール管理部９１２には、接続リスト１０００に含まれるコンピュータからの印刷ジョブがどのような順番で処理されるかを示すリストである。図１１のスケジュールリスト１１００では、順番１乃至３に同じコンピュータ（印刷ジョブ発行元）からの印刷ジョブが登録されている。
【００６３】
スケジュールリストは、印刷順序、接続リストと共通である固有ＩＤ、デバイスコントローラ９０１より通知されるデバイスジョブＩＤ、ジョブ状態および、図７で示したジョブ情報が含まれる。スケジュールリストはスケジュールを受けた順序およびジョブ情報に含まれる優先度７０７によってスケジューリングされる。
【００６４】
＜デバイス側における履歴管理ファイル＞
図１２には履歴管理部９１４によって生成される履歴管理ファイル１２００および履歴ファイル１２２０が示されている。
【００６５】
履歴管理ファイル１２００は、生成された各履歴ファイル情報１２１０（以後、履歴ファイル情報）のリストである。履歴ファイル情報１２１０には、履歴ファイルのバージョン１２１１、最終更新日１２１２、接続リスト（図１０）と共通の固有ＩＤ１２１３、およびデバイスストレージ９０２に保存されている履歴ファイル名１２１４が含まれる。この履歴ファイル名１２１４は履歴ファイルを特定する為の情報として機能する。履歴ファイルには、バージョン１２２１および図７で示したジョブ情報７００が複数個保存される。
【００６６】
本実施形態では、デバイススケジューラ１０３により、上述の図１２のような履歴情報が生成される。印刷デバイス内で印刷ジョブの状態が変化したことを検知し、印刷ジョブ状態が変化したことを通知すべき印刷管理サーバ１０１が接続中（監視対象）でなくとも対応出来る。つまり通知すべきジョブ状態変化通知を保存しているので、印刷管理サーバ１０１から再度ジョブ状態の取得を要求を受けた場合でも、保存しているジョブ状態を通知することが可能となる。
【００６７】
＜印刷ジョブ実行フロー＞
次に、本発明の特徴である、印刷管理サーバ１０１による、大量の複数デバイスの監視および大量の複数印刷ジョブの投入、完了までの追跡を実現するための処理を説明する。
【００６８】
まず、概略を述べると、印刷要求に応じて、図１３のフローチャートが実行され、ジョブ制御ポートモニタ４０４によりプリントキュー管理部４１２が呼び出される。そして、プリントキュー管理部４１２によりプリンタポート管理部４１３が呼び出され、図１４のフローチャートが実行される。なお、この図１３のフローチャートは印刷要求毎、且つ、プリンタポート及びプリンタキュー毎に実行可能される。
【００６９】
図１４のフローチャートでは、プリントポート管理部４１３は、接続管理部４２０にデバイスとの接続に係る処理を依頼し、接続管理部４２０に図１５、図１６のフローチャートを夫々実行させる。
【００７０】
そして、接続管理部４２０は、図１５のフローチャートにより接続先又は接続先候補の各デバイスの状態を監視し、また、図１６のフローチャートにより印刷ジョブの転送処理を行う。
【００７１】
図１７、１８、１９のフローチャートは、図１６のフローチャートにおける転送処理の詳細を示す。接続管理部４２０は、図１７、１８、１９のフローチャートにより、特定の各種条件成立を判定し、接続順序リスト８００のデバイス登録に基づく接続先デバイスの切り替え処理を行う。
【００７２】
また、図２０のフローチャートは、図１５の各デバイスの状態監視に基づき行われる代行印刷処理（Ｓ１５１４）の詳細を示す。以下、各フローチャートの詳細を説明する。
【００７３】
＜印刷管理サーバ１０１の処理＞
図１３は、一般アプリケーション４０１より印刷ジョブを投入された時の、ジョブ制御ポートモニタ４０４及びプリントキュー管理部４１２の処理を示したフローチャートである。また、カスタマイズアプリケーション４０６は生成した印刷ジョブを、ジョブ制御ポートモニタ４０４と同様の処理によりＡＰＩ４０７を経由してプリントキュー管理部４１２に投入する。
【００７４】
まずＳ１３０１で、ジョブ制御ポートモニタ４０４は、プリントスプーラ４０３よりジョブを受け付け、Ｓ１３０２で、プリントキュー管理部４１２へジョブ追加通知を行う。この際、プリンタ名を通知する。引き続きジョブ制御ポートモニタ４０４は、プリントキュー管理部４１２よりジョブＩＤが付与されたジョブファイル名を受け付け、Ｓ１３０４でジョブを指定されたファイル名でＨＤＤ２１１に保存する。
【００７５】
次にＳ１３０５でジョブ制御ポートモニタ４０４は、プリントキュー管理部４１２へジョブのスケジュール依頼を通知する。この際、Ｓ１３０３でプリントキュー管理部４１２から受けたジョブＩＤを通知する。Ｓ１３０６で、ジョブファイルのＨＤＤ２１１への保存が終了すると、Ｓ１３０７でジョブ制御ポートモニタ４０４はプリントキュー管理部４１２へジョブ生成完了を通知し、処理を終了する。この際にも、Ｓ１３０３でプリントキュー管理部４１２から受けたジョブＩＤを通知する。
【００７６】
プリントキュー管理部４１２は、Ｓ１３１１で、ジョブ制御ポートモニタ４０４からジョブ追加通知を受け付けると、Ｓ１３１２でジョブＩＤを発行する。そして引き続きＳ１３１３でプリンタポートへジョブ追加通知を行う。この際、発行したジョブＩＤを通知する。次に、Ｓ１３１４で、プリンタポート管理部４１３よりジョブファイル名を受け付け、Ｓ１３１５でジョブ制御ポートモニタ４０４へ通知する。
【００７７】
プリントキュー管理部４１２は、そしてＳ１３１６でジョブ制御ポートモニタ４０４からジョブスケジュール通知を受け付けると、Ｓ１３１７でプリンタポート管理部４１３へジョブスケジュール通知を行う。この際、プリントキュー管理部４１２はプリンタポート管理部４１３へＳ１３１２で発行したジョブＩＤを通知する。
【００７８】
Ｓ１３１８で、プリントキュー管理部４１２はジョブ制御ポートモニタ４０４からジョブ生成完了通知を受け付けると、Ｓ１３１９でプリンタポート管理部４１３へジョブ生成完了通知を行い処理を終了する。この際にも、Ｓ１３１２で発行したジョブＩＤを通知する。
【００７９】
図１４は、Ｓ１３１３でプリントキュー管理部４１２より印刷ジョブが投入された時の、プリンタポート管理部４１３の処理を示したフローチャートである。
【００８０】
まず、Ｓ１４０１で、プリンタポート管理部４１３は、プリントキュー管理部４１２よりジョブ追加通知を受け付けると、Ｓ１４０２で接続管理部４２０から該プリンタが既に接続処理済みでデバイス状態を取得しているかを確認する。デバイス状態を取得済みでない場合、即ち、デバイスと接続していない場合は、Ｓ１４０３で接続管理部４２０へ接続開始を通知する。その際、印刷要求の際に指定されたプリンタに基づくプリンタポート情報６００を通知する。
【００８１】
次にプリンタポート管理部４１３は、Ｓ１４０４で受け付けたジョブＩＤからジョブファイル名を発行し、Ｓ１４０５でプリントキュー管理部４１２へ印刷ジョブに対応するファイル名を通知する。
【００８２】
Ｓ１４０６で、プリンタポート管理部４１３が、プリントキュー管理部４１２よりスケジュール依頼の通知を受け付けると、Ｓ１４０７で接続管理部４２０へスケジュール通知を行い処理を終了する。この際に、プリンタポート管理部４１３は、プリントキュー管理部４１２より通知されたジョブＩＤを、接続管理部４２０へ通知する。
【００８３】
図１５は、プリンタポート管理部４１３より接続開始を通知された時の、接続管理部４２０の処理を示したフローチャートである。
【００８４】
接続管理部４２０は、Ｓ１５０１でプリントポート管理部４１３より接続開始通知を受け付けると、Ｓ１５０２で接続順序リスト登録処理により、図８で説明した接続順序リスト８００の最後尾に該接続情報を登録する。このＳ１５０２の処理により図８の順序リスト８００が更新される。なお、Ｓ１５０２では監視対象キューへの再登録処理として最後尾に登録する例を説明したがこれに限定されない。デバイスに再度接続できる形態であれば最後尾でなくとも良い。例えば、再登録する際に登録対象に所定の優先度を与え、該優先度に従う最前位置に登録される形態でも良い。また、印刷要求で指定デバイスへ転送すべき印刷ジョブが順次生成された場合には、印刷ジョブの出力先のデバイスを監視対象キューとしての接続順序リスト８００に順次接続情報が登録されることとなる。
【００８５】
次にＳ１５０３で接続順序リスト８００内の接続しているデバイス数と設定された最大接続数を比較する。ここで接続数が最大接続数に達している場合はＳ１５０４でデバイス状態を「接続待機中」とし、Ｓ１５０９へ処理を移行する。一方、接続数が最大接続数に達していない場合は、デバイス管理部４２１において接続処理を実行する。ここで最大接続数はユーザが予め設定画面を介して任意に設定した特定の数に従い決定されるものとする。
【００８６】
接続処理を開始したデバイス管理部４２１では、Ｓ１５０５でプリンタポートに対応するデバイススケジューラ１０３に対して接続通知を行う。この際、設定された固有ＩＤを通知する。接続成功後、Ｓ１５０６でデバイス管理部４２１はデバイススケジューラ１０３に対してイベント登録を行なう。そして、Ｓ１５０７で、デバイス管理部４２１は、Ｓ１５０７でデバイススケジューラ１０３から通知されるデバイス状態変化イベントの受信を待つ。
【００８７】
デバイス管理部４２１は、Ｓ１５０８でデバイススケジューラ１０３よりデバイス状態を取得、又はＳ１５０４でデバイス状態を待機中に設定すると、Ｓ１５０８で内部で管理しているデバイス状態を更新する。次にＳ１５１０で更新したデバイス状態をプリンタポート管理部４１３へ通知する。
【００８８】
なお、Ｓ１５０６、Ｓ１５０７のデバイス状態の取得方法としては、例えば、監視対象のデバイスへのポーリング及びポーリング応答待機処理と置き換えても良い。このＳ１５０６、Ｓ１５０７の処理は、接続順序リスト８００に登録された監視対象デバイスの各種情報をネットワークを介して監視できる方法であれば、各種デバイス監視のための構成を適用することができる。
【００８９】
Ｓ１５１１でデバイス管理部４２１は、更新したデバイス状態が「切断」又は「接続待機中」又は「確認待ち」であるかを判断し、何れかの状態に該当する場合は処理を終了する。接続中ではない状態は例えば後述の図１８の処理によって引き起こされる。一方、何れのデバイス状態にも該当しない場合は、Ｓ１５１２でデバイス状態が「エラー」に該当するかを判断する。ここでの「エラー」とは、印刷出力を続行できない状態を指すものであり、例えば、用紙・トナー等の消耗品切れや、用紙ジャムや、ソフトウェアハングアップ等を指す。Ｓ１５１２で「エラー」に該当しないと判断した場合はＳ１５０７へ処理を戻す。一方Ｓ１５１２で「エラー」に該当すると判断した場合は、Ｓ１５１３で、取得したプリンタポート情報にバックアッププリンタが設定されているかを判断する。バックアッププリンタが設定されている場合は、Ｓ１５１４で後述の図２０で詳しく説明する代行印刷処理へ処理を移し、処理を終了する。一方、バックアッププリンタが設定されていない場合はＳ１５０７へ処理を戻す。
【００９０】
図１６は、図１４のフローチャートに従いプリンタポート管理部４１３よりスケジュール依頼を通知された時の、接続管理部４２０の処理を示すフローチャートである。このプリンタポート管理部４１３からのスケジュール通知は、上に説明した、図１４のフローチャートのＳ１４０７に対応する。
【００９１】
Ｓ１６０１で、接続管理部４２０は、プリンタポート管理部４１３よりスケジュール通知を受け付ける。Ｓ１６０２で、デバイス管理部４２１において、デバイスとの接続を行いデバイス状態を取得済みかを判断する。より具体的には、Ｓ１６０２でデバイス状態が「切断状態」でないか判断する。デバイス状態を取得済みでない、即ち、デバイス状態が「切断状態」の場合は、Ｓ１６０３でデバイスとの接続を待つ。一方、Ｓ１６０３でＹＥＳと判定する場合には、Ｓ１６０４で、接続順序リストの未転送ジョブ数をカウントアップする。
【００９２】
次にＳ１６０５で、デバイス管理部４２１は、該デバイス状態が「接続待機中」であるかを判断する。デバイス状態が「接続待機中」であった場合は、Ｓ１６０６でスケジュールされる印刷ジョブの優先度設定を確認し、優先度が通常より高い場合はＳ１６０７で接続順序制御部４２２において接続順序リスト変更処理を行う。接続順序リスト変更処理においては、該接続の接続順序リストの優先度設定を変更し、「接続待機中」のリストを優先度順にソートし、処理を終了する。スケジュールされる印刷ジョブの優先度が通常以下であった場合は処理を終了する。
【００９３】
なお、接続順序制御部４２２で行われる接続順序リスト変更処理において、設定される優先度は、スケジュールされている全てのジョブの優先度の合計、もしくは最大を用いることも可能であるし、平均を用いることも可能である。つまりは、接続順序を優先する条件のポリシーをどこに設定するかによって、振る舞いが決定される。
【００９４】
一方、デバイス管理部４２１は、Ｓ１６０５の判断によって、該デバイス状態が「接続待機中」に該当しない場合は、Ｓ１６０８で後述する転送処理を開始する。また、デバイス状態が「確認待ち」である場合には、デバイス管理部４２１は、Ｓ１６０５でＹＥＳと判断する。これは「確認待ち」の状態が広義で接続待機中と同義であるからである。
【００９５】
図１７は、デバイス管理部４２１において、ジョブ転送処理が開始されたときの、デバイス管理部４２１の処理を示したフローチャートである。より具体的には、デバイスの監視を中断すべきかを判断する為に、特定の条件成立を判断し、特定の条件が成立しておらず、監視対象を変更しないと判断した場合に印刷ジョブの転送を行う処理を示す。尚、ここでのジョブ転送処理とは、印刷ジョブの転送そのものの処理、及び、印刷ジョブのスケジュール要求の処理等、印刷ジョブの転送に係わる各種処理を含む広義の言葉とする。
【００９６】
まずＳ１７０１は、デバイス管理部４２１は、プリンタポートに対応するデバイススケジューラ１０３に対してスケジュール登録をジョブ情報と共に通知する。
【００９７】
次にＳ１７０２で、デバイス管理部４２１は該デバイスの連続監視タイマを開始する。次にＳ１７０３でこの連続監視タイマがタイムアップしたかを判断する。該判断はプリンタポート情報６００に設定された連続監視時間制限数に達したかを判断することにより行う。Ｓ１７０３で、タイムアップしていると判断場合は、印刷デバイスの監視を中断すべく、Ｓ１７０４で後述の図１８ので説明する印刷先切り替え処理を実行する。
【００９８】
Ｓ１７０３で、タイムアップしていないと判断した場合には、Ｓ１７０５でデバイススケジューラ１０３からジョブ状態変化イベントを受信したかを判断する。Ｓ１７０５でジョブ状態変化イベントを受信していない場合は、Ｓ１７０６でタイマをカウントアップしＳ１７０３へ処理を戻す。
【００９９】
Ｓ１７０７では、デバイス管理部４２１は、デバイススケジューラ１０３からジョブ状態変化イベントを受信すると、連続監視タイマをリセットし、受信したイベントがスケジュールアップ、つまり印刷許可であるかをＳ１７０８で判断する。このようにＳ１７０７の処理により、連続で監視を継続する最大時間に達するまでに、監視を開始している印刷デバイスからの印刷ジョブの状態が変化通知を受けた場合、連続監視時間を初期値に戻し、監視を継続することが出来る。
【０１００】
受信したジョブ状態変化イベントがスケジュールアップでない場合は、Ｓ１７０９でプリントキューに登録されている印刷ジョブが全て印刷完了しているかを判断する。まだ印刷完了していないジョブが登録されている場合はＳ１７０３へ処理を戻す。現在注目しているプリントキューに登録されている印刷ジョブが全て印刷完了している場合は、印刷デバイスの監視を中断すべく、Ｓ１７１０で図１８の印刷先切り替え処理を行った後に処理を終了する。
【０１０１】
デバイス管理部４２１は、Ｓ１７０８でデバイススケジューラ１０３よりスケジュールアップを受信したと判断すると、Ｓ１７１１で該ジョブの状態を「転送中」に変更し、プリンタポート管理部４１３に通知する。次にＳ１７１２で連続監視タイマを一時停止状態とし、Ｓ１７１３で転送部４３０に印刷ジョブの転送開始を通知し、Ｓ１７１４で転送完了を待つ。この際、デバイス管理部４２１は、転送部４３０に転送先のプリンタポート情報およびジョブＩＤを通知する。
【０１０２】
転送部４３０では、デバイス管理部４２１より転送開始の通知を受け付けると、取得したプリンタポート情報に設定されたプロトコルおよび転送先のアドレスを用いてデバイス１０４に対して印刷ジョブデータを転送する。その際、取得したジョブＩＤを元にＨＤＤ２１１から印刷ジョブデータを特定する。転送部４３０は全ての印刷ジョブのデータ転送が完了すると、転送完了をデバイス管理部４２１に通知する。
【０１０３】
デバイス管理部４２１は、Ｓ１７１５で転送部４３０より転送完了通知を受け付けると、Ｓ１７１６で該ジョブの状態を「転送済み」に変更し、プリンタポート管理部４１３に通知する。次にＳ１７１７で接続順序リスト内の未転送ジョブ数をカウントダウン、転送済みジョブ数をカウントアップする。
【０１０４】
デバイス管理部４２１は、Ｓ１７１８でカウントアップされた転送済みジョブ数とプリンタポート情報に設定されている連続転送数と比較する。Ｓ１７１８の判定で連続転送数に達している場合は、Ｓ１７１９で、印刷デバイスの監視を中断すべく、図１８の印刷先切り替え処理を実行する。後で詳しく説明するがＳ１７１８でＮＯと判断すると、図１８のフローを実行し、Ｓ１８０３でＹＥＳ（言い換えれば他の待機している登録ジョブがある）と判定するとＳ１８０９で最後尾に回す候補のデバイスにおける印刷未完了の印刷ジョブの存在を調べる。印刷未完了の印刷ジョブの存在があると判断するとＳ１８１１で最後尾に登録する。そして、Ｓ１８１５で次順（接続中以外のものであり、図８では上から４つ目の順序４が該当）の接続処理を開始指示する。転送済みジョブ数が連続転送数に達していない場合は、Ｓ１７２０で未転送ジョブがまだ残っているかを判断し、残っていない場合は、Ｓ１７１９で図１８の印刷先切り替え処理を実行する。一方、Ｓ１７２０の判断でまだ未転送のジョブが残っている場合はＳ１７０２に処理を戻す。
【０１０５】
図１８は、印刷先切り替え処理が開始された時の、デバイス管理部４２１による印刷デバイスの監視中断、及び、監視中断したデバイスを監視対象キュー（接続順序リスト８００）に再登録する処理を示したフローチャートである。
【０１０６】
まず、デバイス管理部４２１は、Ｓ１８０１で、印刷先切り替え処理を開始すると、接続順序リストの連続送信数をリセットし、次にＳ１８０２で連続監視タイマをリセットする。
【０１０７】
デバイス管理部４２１は、Ｓ１８０３で接続順序リストに現在「接続待機中」又は「確認待ち」の状態のデバイスがあるかを判断する。該当するデバイスが接続順序リストにない場合は、Ｓ１８０４でプリントキューに完了していないジョブがあるかを判断する。Ｓ１８０５で完了していないジョブが存在する場合は印刷切り替え処理の呼び元に処理を戻す。また、完了していないジョブが存在しない場合は、Ｓ１８０６で連続監視タイマを停止し、Ｓ１８０７でデバイススケジューラ１０３に登録しているイベントの抹消を指示する。そしてＳ１８０８でデバイススケジューラ１０３に切断を通知しデバイス状態を「切断」に更新して処理を終える。
【０１０８】
一方、Ｓ１８０３の判断で、デバイス管理部４２１は、接続順序リストに現在「接続待機中」もしくは「確認待ち」の状態のデバイスがあった場合は、Ｓ１８０９で監視対象（監視中断対象）のプリントキューに印刷が完了していない他のジョブがあるかを判断する。Ｓ１８０９の判断で印刷が完了していないジョブが存在する場合は、Ｓ１８１０でデバイス状態を「確認待ち」に変更し、Ｓ１８１１で接続順序リストの最後尾にリストを移動する。なお、Ｓ１８１１では監視対象キューへの再登録処理として最後尾に登録する例を説明したがこれに限定されない。デバイスに再度接続できる形態であれば最後尾でなくとも良い。例えば、再登録する際に登録対象に所定の優先度を与え、該優先度に従う最前位置に登録される形態でも良い。このＳ１８１１の処理により、一旦監視を中断したデバイスについても再度監視対象キュー（接続順序リスト８００）の後尾に再登録するので、再度、監視対象キューに登録された登録状況に従いデバイスを監視できる。
【０１０９】
そしてＳ１８１２で連続監視タイマを停止し、Ｓ１８１３で、印刷デバイスの監視を中断すべく、デバイススケジューラ１０３に登録しているイベントの抹消を指示する。そしてＳ１８１４でデバイススケジューラ１０３に切断を通知し、Ｓ１８１５で接続順序リストの次順にリストされているデバイスへの接続処理開始を指示しデバイス状態を「切断」として処理を終える。
【０１１０】
図１９は、デバイス管理部４２１において、図８の接続順序リスト８００の次順の接続処理が指示されたときの、デバイス管理部４２１の処理を示したフローチャートである。この図１９の処理は、一旦、監視が中断され印刷監視対象キューに再登録され、再度接続処理が行われた場合の処理に対応する。
【０１１１】
デバイス管理部４２１は、まずＳ１９０１で接続順序リスト８００の次順にリストされているデバイスの状態が「確認待ち」であるかを判断する。「確認待ち」でなかった場合は通常の接続処理を行うため、図１５のポイント１５−１（Ｓ１５０５）へ遷移する。一方「確認待ち」であった場合は、Ｓ１９０２でプリンタポート（印刷管理部４１０の最左下部）に対応するデバイススケジューラ１０３に対して接続を行う。この際、設定された固有ＩＤを通知する。接続成功後、Ｓ１９０３でデバイス管理部４２１は履歴取得通知をデバイススケジューラ１０３に通知し、デバイススケジューラ１０３が保持している履歴を取得する。このＳ１９０３の処理により、監視対象キューに再登録された印刷デバイスの監視が開始された時に、監視中断時に印刷が完了していないジョブの印刷結果を取得することができる。尚、Ｓ１９０３の取得処理に対応するデバイス側の処理は後述の図２２で詳しく説明する。
【０１１２】
Ｓ１９０４で次に取得した履歴を基にジョブ状態（図７のジョブ情報の７０５、７０８、７０９等）を更新する。
【０１１３】
Ｓ１９０５でデバイス管理部４２１は更新されたジョブ状態からプリントキューに登録されている全てのジョブが完了したかを判断する。全てのジョブが完了している場合はＳ１９０６で接続順序リストから該デバイスの情報を削除する、次にＳ１９０７でデバイススケジューラ１０３に登録しているイベントの抹消を通知する。そしてＳ１９０８でデバイススケジューラ１０３に切断を通知し、デバイスとの接続状態を「切断」として処理を終える。
【０１１４】
デバイス管理部４２１は、プリントキューに登録されているジョブが全て完了していない場合は、Ｓ１９０９でデバイススケジューラ１０３にイベント登録を通知し、図１７のポイント１７および図１５のポイント１５−２へ遷移する。遷移後は、少なくとも図１５、図１７のフローチャートの処理が以後並行して実行される。
【０１１５】
図２０は、デバイス管理部４２１において、代行印刷処理が実行されたときの、デバイス管理部４２１の処理を示したフローチャートである。
【０１１６】
デバイス管理部４２１は、代行印刷処理が開始されると、Ｓ２００１でエラー発生デバイスに対応するプリントキューに登録されている全てのジョブを一時停止する。次にＳ２００２でプリンタポート情報に設定されているバックアッププリンタ情報を取得する。次にＳ２００３でプリンタキューに登録されている全てのジョブを代行先のプリンタにスケジュール登録する。次にＳ２００４で代行元のプリンタキューに登録されている全てのジョブを削除し、削除されたジョブの状態を完了状態とする。そして、Ｓ２００５で、代行先のデバイスを接続順序リスト８００の「接続待機中」又は「確認待ち」の最前列に挿入する。最後にＳ２００で印刷先切り替え処理を実行し代行印刷処理を実現する。
【０１１７】
＜デバイススケジューラ１０３の処理＞
図２１は、デバイススケジューラ１０３において、履歴保存処理が発生したときの処理フローである。
【０１１８】
Ｓ２１０１で、デバイススケジューラ１０３は、デバイスコントローラ９０１からジョブの完了イベントを受信すると、対応する固有ＩＤを特定する。そして、Ｓ２１０２で特定された固有ＩＤをキーに接続リスト（図１０）の登録を確認する。
【０１１９】
次にジョブの投入元、つまりはジョブの完了イベントの通知先がイベント登録しているかをＳ２１３で判断する。より具体的には、完了イベントに対応する固有ＩＤと接続リストに含まれる固有ＩＤとを比較して一致するか否かを判断する。
【０１２０】
登録されている判断した場合はＳ２１０４で、完了イベント通知を、接続している複数又は単数のコンピュータから固有ＩＤをキーに該当するコンピュータに通知する。そして、処理を終了する。
【０１２１】
ジョブの完了イベントの通知先がイベント登録していない、又は接続していない場合は、Ｓ２１０５で履歴管理ファイルの中にＳ２１０１で特定した完了イベントに対応する固有ＩＤに対応する履歴ファイル情報が登録されているかを判断する。
【０１２２】
登録されている場合は、Ｓ２１０６で、履歴ファイル情報から紐付けられる（１２１４の履歴ファイル名により）履歴ファイルの最後尾に完了イベントを追記する。ここで追記される完了イベントとはジョブが終了しという履歴である。
【０１２３】
登録されていない場合は、Ｓ２１０７で履歴ファイルを新規作成して、完了イベントを追加する。最後にＳ２１０８で履歴管理ファイルに新規作成した履歴ファイルを登録し処理を終了する。
【０１２４】
図２２は、デバイススケジューラ１０３において、印刷管理サービス４０５より履歴取得依頼を受け付けたときの処理フローである。
【０１２５】
まず、Ｓ２００１でデバイススケジューラ１０３は、印刷管理サービスより履歴取得依頼を受け付ける。この履歴取得依頼は図１９のＳ１９０３の処理に対応する。受信した履歴取得要求には固有ＩＤが含まれており、図１１のスケジュールリストを参照することにより、Ｓ２２０２で、履歴管理ファイルから固有ＩＤが一致する履歴ファイルを検索する。そして、Ｓ２２０３で、検索により見つけ出された履歴ファイルよりジョブ完了イベントを生成して印刷管理サービスに通知する。この履歴ファイルには、少なくとも、監視中断時に印刷が完了していなかったジョブの印刷処理結果（印刷完了または印刷未終了）が含まれる。
【０１２６】
このように上記の各フローチャートを実行することにより、印刷管理サーバ１０１にかかる負荷を大幅に軽減することができる。一台のサーバをもって大量のデバイスの監視および大量の印刷ジョブの投入、完了までの追跡が可能となる。結果、印刷管理サーバ１０１に要する大幅なコスト削減を実現できる。
【０１２７】
例えば、上記実施形態と同様の効果を奏するために、遠隔の各拠点に配置される各デバイスに投入された印刷ジョブを一元的に管理する場合、各拠点にプリントサーバを配置しそれらプリントサーバを統合的に管理する統合サーバを更に配置する方法も考えられる。この構成では、統合サーバの負荷を軽減できる。しかしながら、各拠点に配置されるプリントサーバの設置コスト、管理コストが高く、またプリントサーバでトラブルが発生したときに、統合サーバで把握、管理することが困難である。また、複数の拠点のプリントサーバで生成されるジョブ情報を集計する等の新たな処理が発生する。また、デバイスの変更が発生した場合に、各プリントサーバと統合サーバの情報の整合性を保つ煩雑な作業も想定される。本実施形態によれば、例えば上述のような、遠隔の各拠点に配置される各デバイスに投入された印刷ジョブを一元的に管理する場合でも、印刷ジョブの状態監視を行うプリントサーバのコストを抑えることができる。
【０１２８】
［他の実施の形態］
以上、様々な実施形態を詳述したが、本発明は、複数の機器から構成されるシステムに適用してもよいし、また、一つの機器からなる装置に適用してもよい。例えば、プリンタ、ファクシミリ、ＰＣ、サーバとクライアントとを含むコンピュータシステムなどの如くである。
【０１２９】
本発明は、前述した実施形態の各機能を実現するソフトウェアプログラムを、システム若しくは装置に対して直接または遠隔から供給し、そのシステム等に含まれるコンピュータが該供給されたプログラムコードを読み出して実行することによっても達成される。
【０１３０】
従って、本発明の機能・処理をコンピュータで実現するために、該コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、上記機能・処理を実現するためのコンピュータプログラム自体も本発明の一つである。
【０１３１】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳに供給するスクリプトデータ等、プログラムの形態を問わない。
【０１３２】
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＭＯ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷなどがある。また、記録媒体としては、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−Ｒ）などもある。
【０１３３】
また、プログラムは、クライアントコンピュータのブラウザを用いてインターネットのホームページからダウンロードしてもよい。すなわち、該ホームページから本発明のコンピュータプログラムそのもの、もしくは圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードしてもよいのである。また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるＷＷＷサーバも、本発明の構成要件となる場合がある。
【０１３４】
また、本発明のプログラムを暗号化してＣＤ−ＲＯＭ等の記憶媒体に格納してユーザに配布してもよい。この場合、所定条件をクリアしたユーザにのみ、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせ、その鍵情報で暗号化されたプログラムを復号して実行し、プログラムをコンピュータにインストールしてもよい。
【０１３５】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現されてもよい。なお、そのプログラムの指示に基づき、コンピュータ上で稼動しているＯＳなどが、実際の処理の一部または全部を行ってもよい。もちろん、この場合も、前述した実施形態の機能が実現され得る。
【０１３６】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれてもよい。そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行ってもよい。このようにして、前述した実施形態の機能が実現されることもある。
【図面の簡単な説明】
【０１３７】
【図１】本実施形態における印刷システムの全体構成を示すブロック図である。
【図２】図１で示した印刷管理サーバ１０１及びデバイス１０４のハードウェア構成の一例を示すブロック図である。
【図３】図２で示したＲＡＭ２０２のメモリマップの一例を示す図である。
【図４】図１で示した印刷管理サーバコンピュータ１０２のソフトウェア構成の一例を示すブロック図である。
【図５】プリントキュー情報を模式的に示した図である。
【図６】プリンタポート情報を模式的に示した図である。
【図７】ジョブ情報を模式的に示した図である。
【図８】図４で示した接続順序リストを模式的に示した図である。
【図９】図１で示したデバイススケジューラ１０３およびデバイス１０４の構成の一例を示すブロック図である。
【図１０】図９で示した接続リストを模式的に示した図である。
【図１１】図９で示したスケジュールリストを模式的に示した図である。
【図１２】図９で示した履歴ファイル及び履歴管理ファイルを模式的に示した図である。
【図１３】ジョブ制御ポートモニタ４０４およびプリントキュー管理部４１２の処理例を示したフローチャートである。
【図１４】プリンタポート管理部４１３の処理例を示したフローチャートである。
【図１５】接続管理部４２０の処理例を示したフローチャートである。
【図１６】接続管理部４２０の処理例を示したフローチャートである。
【図１７】デバイス管理部４２１の処理例を示したフローチャートである。
【図１８】デバイス管理部４２１の印刷先切り替えに係る処理例を示したフローチャートである。
【図１９】デバイス管理部４２１の接続順序リストにおける次順の接続に係る処理例を示したフローチャートである。
【図２０】デバイス管理部４２１の代行印刷に係る処理例を示したフローチャートである。
【図２１】デバイススケジューラ１０３の履歴保存処理の例を示したフローチャートである。
【図２２】デバイススケジューラ１０３の履歴取得処理の例を示したフローチャートである。
【符号の説明】
【０１３８】
１０１  印刷管理サーバコンピュータ
１０２  イーサネット（登録商標）
１０３  デバイス
１０４  デバイススケジューラ
４０１  一般アプリケーション
４０２  プリンタドライバ
４０３  プリントスプーラ
４０４  ジョブ制御ポートモニタ
４０５  印刷管理サービス
４０６  カスタマイズアプリケーション
４０７  ＡＰＩ
４１０  印刷管理部
４２０  接続管理部
４３０  転送部
９０１  デバイスコントローラ
【図１】
0004827615.tif 000002
【図２】
0004827615.tif 000003
【図３】
0004827615.tif 000004
【図４】
0004827615.tif 000005
【図５】
0004827615.tif 000006
【図６】
0004827615.tif 000007
【図７】
0004827615.tif 000008
【図８】
0004827615.tif 000009
【図９】
0004827615.tif 000010
【図１０】
0004827615.tif 000011
【図１１】
0004827615.tif 000012
【図１２】
0004827615.tif 000013
【図１３】
0004827615.tif 000014
【図１４】
0004827615.tif 000015
【図１５】
0004827615.tif 000016
【図１６】
0004827615.tif 000017
【図１７】
0004827615.tif 000018
【図１８】
0004827615.tif 000019
【図１９】
0004827615.tif 000020
【図２０】
0004827615.tif 000021
【図２１】
0004827615.tif 000022
【図２２】
0004827615.tif 000023