(57)【要約】【課題】印刷装置の柔軟な代替を簡易な操作で実現する。【解決手段】ユーザは代行印刷する装置のパネルからＩＤやフィルタリング条件を入力する。フィルタリング条件はネットワークの他の印刷装置にブロードキャストされる（１６０４）。それを受信した印刷装置は、フィルタ条件に適合するジョブのリストを作成して、代行印刷する印刷装置に送信する（１６０６）。そのジョブリストはパネルに表示され、ユーザはそこからジョブを選択できる。ユーザにより選択されたジョブは、それがある印刷装置から代行印刷する装置へ送信され、印刷が実行される。【選択図】図１６
2007122093.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークに接続された、印刷ユニットを制御するための印刷制御装置であって、
前記ネットワークに接続された他の印刷制御装置により実行されている印刷ジョブ又は実行予定の印刷ジョブのうち、指定した条件に適合する印刷ジョブを、前記他の印刷制御装置から前記印刷制御装置へと移動させ、移動された印刷ジョブを実行することを特徴とする印刷制御装置。
【請求項２】
前記他の印刷制御装置からの移動の対象となる印刷ジョブに係る印刷データが前記他の印刷制御装置に保存されている場合には、前記印刷データは前記他の印刷制御装置から前記印刷制御装置へと送信され、
前記他の印刷制御装置からの移動の対象となる印刷ジョブに係る印刷データが前記他の印刷制御装置に保存されていない場合には、前記印刷データは前記他の印刷制御装置に対して前記印刷ジョブを発行したクライアントコンピュータから前記印刷制御装置へと送信されることを特徴とする請求項１に記載の印刷制御装置。
【請求項３】
ネットワークに接続された、印刷ユニットを制御するための印刷制御装置であって、
実行されている印刷ジョブ又は実行予定の印刷ジョブのうち、前記ネットワークに接続された他の印刷制御装置から指定された条件に適合する印刷ジョブを、前記他の印刷制御装置へと移動し、
移動した印刷ジョブは前記他の印刷制御装置により実行されることを特徴とする印刷制御装置。
【請求項４】
前記他の印刷制御装置への移動の対象となる印刷ジョブに係る印刷データを保存している場合には、前記印刷データを前記他の印刷制御装置へと送信し、
前記他の印刷制御装置への移動の対象となる印刷ジョブに係る印刷データを保存していない場合には、当該印刷ジョブを発行したクライアントコンピュータに対して、前記印刷データを前記他の印刷制御装置へ送信する旨の指示を送信することを特徴とする請求項３に記載の印刷制御装置。
【請求項５】
請求項１又は２に記載の印刷制御装置と、請求項３又は４に記載の印刷制御装置とを接続したことを特徴とする印刷システム。
【請求項６】
ネットワークに接続された、印刷ユニットを制御するための印刷制御装置であって、
印刷ジョブの条件を入力する入力手段と、
前記入力手段により入力された条件で、他の印刷制御装置が有する印刷ジョブを探索する探索手段と、
前記探索手段により得られた印刷ジョブのリストのうちから選択された印刷ジョブを前記他の印刷制御装置から取得するジョブ取得手段と、
前記ジョブ取得手段により取得した印刷ジョブを実行するジョブ実行手段と
を備えることを特徴とする印刷制御装置。
【請求項７】
ネットワークに接続された、印刷ユニットを制御するための印刷制御装置であって、
印刷ジョブを保持するジョブ保持手段と、
受信した条件に適合する印刷ジョブを前記保持手段から探索する探索手段と、
前記探索手段により得られた印刷ジョブのリストを、前記条件の送信元へと返信するリスト返信手段と、
指定された印刷ジョブを前記のうちから選択された印刷ジョブを前記他の印刷制御装置から取得するジョブ取得手段と、
前記ジョブ取得手段により取得した印刷ジョブを実行するジョブ実行手段と
を備えることを特徴とする印刷制御装置。
【請求項８】
前記条件には、印刷ジョブのオーナーであるユーザの識別子を指定可能であることを特徴とする請求項１乃至４または６または７のいずれか１項に記載の印刷制御装置。
【請求項９】
前記条件には、印刷ジョブを実行している印刷制御装置または実行予定の印刷制御装置が検知した状態を指定可能であることを特徴とする請求項１乃至４または６乃至８のいずれか１項に記載の印刷制御装置。
【請求項１０】
請求項６に記載の印刷制御装置と、請求項７に記載の印刷制御装置とを接続したことを特徴とする印刷システム。
【請求項１１】
ネットワークに接続された、印刷ユニットを制御するための印刷制御方法であって、
前記ネットワークに接続された他の印刷制御装置により実行されている印刷ジョブ又は実行予定の印刷ジョブのうち、指定した条件に適合する印刷ジョブを、前記他の印刷制御装置から前記印刷制御装置へと移動させ、移動された印刷ジョブを実行することを特徴とする印刷制御方法。
【請求項１２】
ネットワークに接続された、印刷ユニットを制御するための印刷制御方法であって、
実行されている印刷ジョブ又は実行予定の印刷ジョブのうち、前記ネットワークに接続された他の印刷制御装置から指定された条件に適合する印刷ジョブを、前記他の印刷制御装置へと移動し、
移動した印刷ジョブは前記他の印刷制御装置により実行されることを特徴とする印刷制御方法。
【請求項１３】
ネットワークに接続された、印刷ユニットを制御するための印刷制御方法であって、
印刷ジョブの条件を入力する入力手段と、
前記入力手段により入力された条件で、他の印刷制御装置が有する印刷ジョブを探索する探索手段と、
前記探索手段により得られた印刷ジョブのリストのうちから選択された印刷ジョブを前記他の印刷制御装置から取得するジョブ取得手段と、
前記ジョブ取得手段により取得した印刷ジョブを実行するジョブ実行手段と
を備えることを特徴とする印刷制御方法。
【請求項１４】
ネットワークに接続された、印刷ユニットを制御するための印刷制御方法であって、
印刷ジョブを保持するジョブ保持手段と、
受信した条件に適合する印刷ジョブを前記保持手段から探索する探索手段と、
前記探索手段により得られた印刷ジョブのリストを、前記条件の送信元へと返信するリスト返信手段と、
指定された印刷ジョブを前記のうちから選択された印刷ジョブを前記他の印刷制御装置から取得するジョブ取得手段と、
前記ジョブ取得手段により取得した印刷ジョブを実行するジョブ実行手段と
を備えることを特徴とする印刷制御方法。
【請求項１５】
ネットワークに接続された、印刷ユニットを制御するためのコンピュータプログラムであって、
コンピュータにより、前記ネットワークに接続された他の印刷制御装置により実行されている印刷ジョブ又は実行予定の印刷ジョブのうち、指定した条件に適合する印刷ジョブを、前記他の印刷制御装置から前記印刷制御装置へと移動させ、移動された印刷ジョブを実行させることを特徴とするプログラム。
【請求項１６】
ネットワークに接続された、印刷ユニットを制御するためのコンピュータプログラムであって、
コンピュータにより、実行されている印刷ジョブ又は実行予定の印刷ジョブのうち、前記ネットワークに接続された他の印刷制御装置から指定された条件に適合する印刷ジョブを前記他の印刷制御装置へと移動させ、
移動した印刷ジョブは前記他の印刷制御装置により実行されることを特徴とするプログラム。
【請求項１７】
ネットワークに接続された、印刷ユニットを制御するためのコンピュータプログラムであって、
印刷ジョブの条件を入力する入力手段と、
前記入力手段により入力された条件で、他の印刷制御装置が有する印刷ジョブを探索する探索手段と、
前記探索手段により得られた印刷ジョブのリストのうちから選択された印刷ジョブを前記他の印刷制御装置から取得するジョブ取得手段と、
前記ジョブ取得手段により取得した印刷ジョブを実行するジョブ実行手段と
してコンピュータを機能させることを特徴とするプログラム。
【請求項１８】
ネットワークに接続された、印刷ユニットを制御するためのコンピュータプログラムであって、
印刷ジョブを保持するジョブ保持手段と、
受信した条件に適合する印刷ジョブを前記保持手段から探索する探索手段と、
前記探索手段により得られた印刷ジョブのリストを、前記条件の送信元へと返信するリスト返信手段と、
指定された印刷ジョブを前記のうちから選択された印刷ジョブを前記他の印刷制御装置から取得するジョブ取得手段と、
前記ジョブ取得手段により取得した印刷ジョブを実行するジョブ実行手段と
してコンピュータを機能させることを特徴とするプログラム。
【請求項１９】
請求項１乃至４又は請求項６乃至９のいずれか１項に記載された前記印刷制御装置と、
前記印刷制御装置により制御される印刷ユニットとを備えたことを特徴とする印刷装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、たとえばネットワークに接続した印刷装置の印刷制御を行う印刷制御装置及び印刷制御方法ならびに印刷制御方法を実行するプログラムに関するものである。
【背景技術】
【０００２】
近年、パーソナルコンピュータ等の情報処理装置で作成された印刷データを、ネットワークを介してプリンタに出力するネットワークプリントシステムが普及している。ネットワークプリントシステムでは、ネットワークに接続された１台以上のクライアントから、ネットワークを介して１台以上の印刷装置に印刷要求し、印刷データを送信する。印刷装置では、印刷データを順次受信してイメージを形成し、紙等の媒体に印刷する。このように、ネットワークプリントシステムでは、クライアントからネットワークを介してプリンタに印刷要求するプリントシステムが主流になっている。
【０００３】
上記システムでは、複数の印刷装置をシステム内に設置するケースが多い。ユーザは複数の印刷装置の中から１台を選択して印刷を行うことが可能である。例えばある印刷装置が、紙等の媒体や消耗品の不足、紙ジャム、ネットワーク不良等の障害発生によって印刷の継続が困難になった場合は、その印刷装置に代えて、正常状態にある他の印刷装置を用いて印刷を行うことができる。このように代替印刷装置を用いて印刷処理を遂行することを代行印刷と呼ぶ。
【０００４】
特許文献１には、障害発生時に印刷装置の操作パネル上に障害レベルを表示し、レベルが高い場合は自動的に他の印刷装置へ印刷ジョブを移動し、印刷装置の操作パネル上に移動先の印刷装置を表示する自動代行印刷システムが提案されている。
【０００５】
しかしながら、上記従来技術では予め印刷装置に代行先のデバイスを設定する必要があり障害発生時に設定にしたがって自動的に代行印刷が行われる。そのため、ユーザは代替する印刷装置を、代行印刷が行われる際に指定できず、ユーザが希望する印刷装置によって代行印刷が行われるとは限らなかった。また、代行印刷を行う印刷装置の設置場所はユーザには特定が困難である。特に、同じ印刷装置が併設されているような環境では特定が困難であり、ユーザは１台１台の印刷装置を確認しなければならなかった。
【０００６】
一方特許文献２には、ユーザが印刷を行いたい印刷装置をその場で決定し、その決定した印刷装置の操作パネル上から印刷指示を行うことが可能な印刷装置が記載されている。この印刷装置では、印刷しようとするジョブのある場所として自印刷装置または他の印刷装置を選択させる。ジョブのある場所として自印刷装置が選択され場合には、ジョブ記憶部に記憶されたジョブのリストを表示する。一方ジョブのある場所として他の印刷装置が選択され場合には、選択された印刷装置にアクセスしてその印刷装置に記憶されたジョブのリストを表示する。そして、表示されたリストよりジョブが選択されると、選択されたジョブの印刷を実行する。
【特許文献１】特開平８−１１５１８３号公報
【特許文献２】特開平１１−１１９９２４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、上述した特許文献１記載の技術では、障害発生時の代行印刷は行うが、代行印刷する印刷装置はあらかじめ決められ、ユーザが機動的に印刷装置を選択することができず、操作性や柔軟性に乏しい。
【０００８】
一方、特許文献２記載の印刷装置は、印刷装置に障害が発生したときの代行印刷としての機能は備えていない。そのため、この印刷装置を用いて代行印刷を行おうとすれば、障害が生じた印刷装置を指定する必要がある。また、印刷データが印刷要求を発行したクライアントにあり、印刷装置に送信されていないような印刷ジョブについては、それを有する印刷装置から他の印刷装置へと移動させて処理することはできなかった。
【０００９】
このように、障害等の理由により代行印刷を行う際に、ユーザが、簡易な操作で機動的に代行印刷装置を選択して、代行印刷を行わせることは困難であった。
【課題を解決するための手段】
【００１０】
上述した課題を解決するために、本発明は以下の構成を備える。ネットワークに接続された、印刷ユニットを制御するための印刷制御装置であって、
前記ネットワークに接続された他の印刷制御装置により実行されている印刷ジョブ又は実行予定の印刷ジョブのうち、指定した条件に適合する印刷ジョブを、前記他の印刷制御装置により前記印刷制御装置へと移動させ、移動された印刷ジョブを実行することを特徴とする。
【００１１】
あるいは、ネットワークに接続された、印刷ユニットを制御するための印刷制御装置であって、
実行されている印刷ジョブ又は実行予定の印刷ジョブのうち、前記ネットワークに接続された他の印刷制御装置から指定された条件に適合する印刷ジョブを、前記他の印刷制御装置へと移動し、
移動した印刷ジョブは前記他の印刷制御装置により実行されることを特徴とする。
【００１２】
あるいは、ネットワークに接続された、印刷ユニットを制御するための印刷制御装置であって、
印刷ジョブの条件を入力する入力手段と、
前記入力手段により入力された条件で、他の印刷制御装置が有する印刷ジョブを探索する探索手段と、
前記探索手段により得られた印刷ジョブのリストのうちから選択された印刷ジョブを前記他の印刷制御装置から取得するジョブ取得手段と、
前記ジョブ取得手段により取得した印刷ジョブを実行するジョブ実行手段とを備えることを特徴とする。
【００１３】
あるいは、ネットワークに接続された、印刷ユニットを制御するための印刷制御装置であって、
印刷ジョブを保持するジョブ保持手段と、
受信した条件に適合する印刷ジョブを前記保持手段から探索する探索手段と、
前記探索手段により得られた印刷ジョブのリストを、前記条件の送信元へと返信するリスト返信手段と、
指定された印刷ジョブを前記のうちから選択された印刷ジョブを前記他の印刷制御装置から取得するジョブ取得手段と、
前記ジョブ取得手段により取得した印刷ジョブを実行するジョブ実行手段とを備えることを特徴とする。
【発明の効果】
【００１４】
本発明によれば、ユーザが代行先として選択した印刷制御装置の操作パネル上に、指定した条件に適合する印刷ジョブを表示し、そのなかから実行する印刷ジョブを選択できるので、容易かつ機動的にジョブの代行印刷を行うことが可能となる。
【００１５】
特に、条件として、ユーザ識別子および印刷制御装置が検出した状態を指定できる。そのため、たとえば障害発生時における、選択した印刷制御装置における代替印刷が極めて簡易に行える。
【発明を実施するための最良の形態】
【００１６】
＜構成＞
以下、本発明の実施の形態を図面に基づいて説明する。図１は本発明の実施形態に係る印刷システムの全体構成の一例を示すブロック図である。本印刷システムは、情報処理装置としてのクライアント（コンピュータ）１０１〜１０３と、印刷装置としてのデバイス１０４〜１０５とを含み、これらが互いに接続されていることにより、全体としてネットワークを構成している。
【００１７】
クライアント１０１〜１０３には、印刷制御プログラムが実行可能に格納されている。クライアントはこのプログラムを実行することで、本プリントシステムに含まれるデバイス１０４〜１０５を管理する機能のほか、ネットワークで使用されるファイルを蓄積したり、ネットワークの使用状態を監視したりする機能を有する。具体的には、クライアント１０１〜１０３は印刷ジョブを作成できる。そして、デバイス１０４〜１０５のアプリケーションとしてのスケジュール管理装置（図２のスケジューラ３００）にスケジュール要求を発行する機能や、当該スケジュール管理装置からの指示により、印刷データの転送を開始する機能を有する。スケジュール管理装置は、外部接続された情報処理装置である場合もある。
【００１８】
デバイス１０４〜１０５は、クライアント１０１〜１０３から、印刷データを含む印刷ジョブを受信し、受信した印刷ジョブを解析して印刷する物理的な装置としてのデバイスであり、本実施形態では印刷装置である。なお、本プリントシステムに含まれる装置間の通信は、イーサネット（登録商標）ケーブルなどを利用した有線通信でも良いし、電波や光などを利用した無線通信でもよい。
【００１９】
図１７に、クライアント１０１と印刷装置１０４とを例として、ハードウエアブロック図を示す。図１７に示す印刷装置は単機能のプリンタであるが、複合機の印刷機能部のみを抽出した図でもある。クライアントコンピュータ１０１は、ＲＯＭ３あるいはハードディスク等の外部メモリ１１に格納されたプログラムを実行して、図形、イメージ、文字、表（表計算等を含む）等が混在した文書処理を実行する。プログラムはＣＰＵ１により実行される。ＣＰＵ１は、システムバス４に接続される各デバイスを統括的に制御する。ＲＡＭ２は、ＣＰＵ１の主メモリ、ワークエリア等として機能する。キーボードコントローラ（ＫＢＣ）５は、キーボード９や不図示のポインティングデバイスからのキー入力を制御する。ＣＲＴコントローラ（ＣＲＴＣ）６は、ＣＲＴディスプレイ１０の表示を制御する。ディスクコントローラ（ＤＫＣ）７は外部メモリ１１とのアクセスを制御する。外部メモリ１１には、ブートプログラムや種々のアプリケーション、フォントデータ、ユーザファイル、編集ファイル等を記憶するためのハードディスク（ＨＤ）やフレキシブルディスク（ＦＤ）などがある。外部メモリ１１には、アプリケーションプログラムにより印刷時に入出力スーパバイザを介して実行されたプリンタドライバによって作成された印刷スプールファイルも保存される。ネットワークインターフェース（ＮＩＣ）８は、ネットワーク１０６を介して印刷装置１０４（及び他のクライアント）に接続されており、印刷装置１０４との通信制御処理を実行する。ＣＰＵ１は、例えばＲＡＭ２上に設定された表示情報ＲＡＭヘのアウトラインフォントの展開（ラスタライズ）処理を実行し、ＣＲＴ１０上でのＷＹＳＩＷＹＧ（表示内容と印刷内容とを一致させる機能）を可能としている。また、ＣＰＵ１はＣＲＴ１０上の不図示のマウスカーソル等で指示されたコマンドに基づいて登録された種々のウィンドウを開き、種々のデータ処理を実行する。
【００２０】
印刷装置１０４は、印刷制御部２２とプリンタエンジンである印刷ユニット１７、操作部２１、外部メモリ１４とに分けることができる。印刷制御部２２は、ネットワーク１０６に接続され、印刷データのラスタライズやジョブキューの管理等を行う。プリンタＣＰＵ１２は、ＲＯＭ１３あるいは外部メモリ１４からＲＡＭ１９にロードされた制御プログラムを実行してシステムバス１５に接続される各種のデバイスとのアクセスを統括的に制御する。そして、印刷部Ｉ／Ｆ１６を介して接続される印刷ユニット（プリンタエンジン）１７に出力情報としての画像信号を出力する。ＣＰＵ１２はネットワークインターフェース１８を介してクライアントコンピュータとの通信処理が可能である。それにより、プリンタの情報はクライアントコンピュータ１０１に通知される。また、クライアントからの情報もプリンタに通知される。ＲＡＭ１９はＣＰＵ２１の主メモリ、ワークエリア等として機能するＲＡＭである。ネットワークインターフェース１８はクライアントコンピュータ１０１とネットワーク１０６を介して印刷状態情報などのステータス情報などの交信を制御する。それにより、プリンタ内の情報等をクライアントコンピュータ１０１に通知可能である。メモリコントローラ（ＭＣ）２０は、ブートプログラム、種々のアプリケーション、フォントデータ、ユーザファイル、編集ファイル等を記憶するハードディスク（ＨＤ）、フレキシブルディスク（ＦＤ）等の外部メモリ１４とのアクセスを制御する。操作部２１は、タッチパネルやキーボードを含んでおり、オペレータへの情報の提供や、オペレータからの指示の入力を行わせる
クライアント１０１が印刷を行う場合には、まず印刷装置１０４に対して印刷ジョブのスケジュール要求を、ジョブ情報を付して発行する。そして、そのスケジュール要求に対して、スケジュールが完了した旨を応答を印刷装置は返す。それを受信したクライアント１０１は、印刷データを印刷装置に送信する。印刷データの送信時には、ジョブ情報を含むジョブヘッダを印刷データに付した形式で、クライアントは印刷装置に印刷データを送信する。これが印刷処理の実行単位であり、印刷ジョブと呼ぶ。印刷装置は、受信した印刷ジョブを、スケジュール要求に応じてしたスケジュールにしたがって実行する。
【００２１】
図２は、図１におけるデバイス（印刷装置）１０４〜１０５の構成を示すブロック図である。図２では、印刷装置は複合機能を有する装置として記載されている。画像形成部２０１は、紙媒体のハンドリングや画像転写、定着等の一連の画像形成プロセスを実行して、記録紙などの記憶媒体上に画像を形成する。図１７の印刷ユニット１７に相当する。もしくは、画像形成部２０１は、後述する外部記憶装置制御部を介して、大容量記憶領域に形成した画像を保存する。画像形成部２０１は、例えばインクジェットプリンタや電子写真方式の画像形成ユニットを備えている。
【００２２】
画像読み取り部２０２はスキャナ等を備え、原稿画像を光学的に読み取ってデジタル画像情報に変換する。そのデジタル画像情報を画像形成部２０１に出力して画像を形成したり、あるいはファックス部２０４やネットワークインタフェース部２０７に渡すことで、回線を介して送信することもできる。
【００２３】
印刷装置制御部２０３はデバイスコントローラとも呼ばれ、画像形成部２０１と画像読み取り部２０２のそれぞれの動作を制御し、例えば画像読み取り部２０２で読み取った原稿情報を画像形成部２０１で複写するように制御する。印刷装置制御部２０３は、図１７の印刷制御部２２に相当する。また、印刷装置制御部２０３は、ネットワークインタフェース部２０７、プリント処理部２０６、ファックス部２０４、操作部制御部２０５、外部記憶装置制御部２０９を有し、これら各部の間での情報をやり取りをも制御している。
【００２４】
ファックス部２０４は、ファクシミリ画像の送受信を行う。すなわち、画像読み取り部２０２で読み取ったデジタル画像情報を送信したり、また逆に受信したファクシミリ信号を復号して画像形成部２０１で記録する等の処理を実行することができる。操作部制御部２０５は操作部の操作パネルを使用したユーザとの間のインターフェースを制御する。たとえば、ユーザの操作に応じた信号を発生したり、また操作部に表示部に各種データやメッセージなどを表示したりするような制御を行う。プリント処理部２０６は、例えばネットワークインタフェース部２０７を介して入力した印刷データや、外部記憶装置制御部２０９を介して大容量記憶装置に保存した印刷データを処理する。処理したデータを画像形成部２０１に出力して印刷する等の制御を行う。
【００２５】
ネットワークインタフェース部２０７は通信回線を介して他の通信端末との間のデータの送受信を制御する。例えば、接続されたクライアント１０１〜１０３などの外部装置と所定のネットワーク通信プロトコルを用いて、前記外部装置から送られる印刷データやプリンタ制御命令等の各種データの送受信を行う。外部記憶装置制御部２０９は、接続した大容量記憶装置に印刷データを保存したり、また逆に保存した印刷データを取り出し画像形成部２０１に出力する。仮想マシン２０８は、印刷装置制御部２０３の上位に位置し、印刷装置制御部２０３を制御できるようになっている。ネットワークインタフェース２０７は印刷装置制御部２０３と仮想マシン２０８の双方から直接利用可能であり、それぞれ独立して外部ネットワークにアクセスすることが可能であるように構成されている。
【００２６】
さらに、この仮想マシン２０８の上位には仮想マシン２０８が提供するＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ Ｐｒｏｇｒａｍｍｉｎｇ Ｉｎｔｅｒｆａｃｅ）に対応したプログラミング言語で記述されたアプリケーションＡ〜Ｄが存在している。これらアプリケーションは、仮想マシン２０８を介して間接的に印刷装置制御部に働きかけることができ、また画像形成部２０１や画像読み取り部２０２を動作させることが可能になっている。なお図２ではアプリケーションＤは、スケジューラ３００と呼ばれるアプリケーションプログラムである。
【００２７】
すなわち仮想マシンとは、アプリケーションプログラムに対して印刷装置制御部２０３およびネットワークインターフェース部２０７を仮想化するためのプラットフォームである。仮想マシン２０８により、機種の異なる様々な印刷装置や、備える資源の異なる印刷装置などを仮想化できる。このため、仮想マシン２０８の提供するインターフェースを利用することで、印刷装置の機種間の相違があっても共通のアプリケーションプログラムを実行できる。
【００２８】
＜スケジューラ＞
次に、本プリントシステムのスケジューリング機能やクライアント１０１〜１０３から受け付けた印刷ジョブの管理機能を持つデバイス上のユーザアプリケーションであるスケジューラのソフトウェア構成について説明する。
【００２９】
図３は本発明における印刷制御システムの構成要素であるスケジューラの構成例である。スケジューラ３００は、仮想マシン２０８が提供するＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ Ｐｒｏｇｒａｍｍｉｎｇ Ｉｎｔｅｒｆａｃｅ）に対応したプログラミング言語で記述されたアプリケーションプログラム（アプリケーションと呼ぶ）である。これらアプリケーションは、仮想マシン２０８を介して間接的に印刷装置制御部２０３に働きかけることができ、また画像形成部２０１や画像読み取り部２０２を動作させることが可能になっている。また、スケジューラ３００は、仮想マシン２０８上のアプリケーションとして実現されるだけではなく、例えばデバイスコントローラ２０３と相互通信可能な外部コンピュータにインストールされたアプリケーションとして実現してもよい。デバイスコントローラ２０３の内部に組み込みアプリケーションとして実現することも可能である。そしてスケジューラ３００は、デバイスあるいはクライアントにインストールされたスケジューラと互いに接続できる。接続したスケジューラは、スケジュールされたジョブに関する情報の交換や、ジョブの移動などを行える。
【００３０】
また、スケジューラ３００は、仮想マシン２０８を介して操作部制御部２０５の制御を間接的に行うことができ、操作部制御部２０５に入力された情報の取得や、操作部の表示項目の変更を行うことが可能である。
【００３１】
通信接続管理部３０１は、印刷要求の発行元となるクライアント１０１〜１０３の接続状況および他のスケジューラ３００の接続状況や、クライアントもしくはスケジューラに通知すべき情報を管理する。デバイス等との接続に関する接続先情報５０２（図５）を接続管理キュー５０１で管理する（後述）。通信接続管理部３０１は、仮想マシン２０８が提供するＡＰＩ、ネットワークインタフェース部２０７を経由してクライアントもしくは他のスケジューラと通信を行う。
【００３２】
スケジュール管理部３０２は、クライアント１０１〜１０３から受け付けた印刷ジョブのスケジューリングを行う。スケジュール管理部３０２は、ジョブ管理部３０３およびデバイス管理部３０４を持つ。ジョブ管理部３０３は、クライアント１０１〜１０３が発行したスケジュール要求や、クライアント１０１〜１０３が印刷したジョブを管理する。ジョブ管理部３０３は、クライアントが印刷する印刷ジョブに関するジョブ情報４０２（図４）をジョブ管理キュー４０１で管理している。デバイス管理部３０４は、印刷装置制御部２０３が持つプリンタの状態や受け付けた印刷ジョブの状態を、イベントハンドラ３０５経由で受け付ける。デバイス管理部３０４は、プリンタコントローラ２０３から受け付けたイベントを通信接続管理部３０１やジョブ管理部３０３に通知する。
【００３３】
操作管理部３０６は、印刷装置制御部２０３を介して操作部制御部２０５と印刷装置の操作部２１（図１７）を制御する。これにより操作部２１の表示制御および、他のスケジューラ３００から受け付けた印刷ジョブの移動要求に関しての処理を行う。移動要求とは、印刷装置間における印刷ジョブの移動を促す要求である。操作管理部３０６は、印刷装置の入力パネル（操作部）からの入力を受信する。また、操作管理部３０６は、印刷装置の入力パネル上の表示を制御する表示制御処理および、他のスケジューラ３００へジョブのスケジュール要求をしたり、クライアント１０１〜１０３に対してジョブの移動要求を行う。
【００３４】
図４は、スケジューラ３００においてクライアント１０１〜１０３が、印刷を行うべく発行したスケジュール要求に付加するジョブ情報４０２と、複数発生するジョブ情報を管理するジョブ管理キュー４０１を示す図である。
【００３５】
印刷ジョブ情報（ジョブ情報）４０２は、クライアント１０１〜１０３が印刷を開始するために発行するスケジュール要求に付加される印刷ジョブの情報である。このジョブ情報４０２は、印刷ジョブのドキュメント名４０２１、ジョブ管理部３０３が発行したジョブＩＤ４０２２、クライアントで印刷を開始したユーザ名４０２３、ジョブのページ数４０２４、印刷ジョブの状況を表すジョブ状態４０２５が含まれる。
【００３６】
ジョブ状態４０２５は、クライアント１０１〜１０３が印刷ジョブのスケジュール要求を発行してからそのジョブがプリンタから無くなるまでの状態を表している。ジョブ状態には、「印刷待機中」、「印刷許可」状態、「転送中」、「転送済み」、「印刷待ち」、「印刷中」、「印刷完了」などの状態がある。ジョブＩＤは、印刷ジョブのスケジュール要求を受け付けるとジョブ管理部３０３が発行するＩＤで、印刷装置制御部２０３から受け付けたジョブ状態をクライアントに通知するときなど付加されて、ジョブの識別に利用される。なお、ジョブの識別のために通常クライアントもジョブに識別名を付している。印刷装置内部で使用されるジョブＩＤとクライアントの識別名とは必ずしも一致していない。そこで、印刷装置においてスケジュールされたジョブを一元的にあつかうために、印刷装置内部で使用されるジョブＩＤとクライアントの識別名との対応付けを行うためのテーブルを保持しても良い。本実施形態では、ジョブＩＤは印刷装置において付与されるが、このＩＤは、たとえば上記テーブルを用いて印刷装置とクライアントとで共有されるものとして説明する。
【００３７】
さらに、ジョブの発行元であるクライアントを特定するために、ジョブ情報４０２に接続ＩＤ（後述）を持たせても良い。このようにすれば、ジョブの発行元の特定が容易になる。
【００３８】
管理キュー４０１は、複数のジョブ情報４０２を管理する。スケジュール要求を受け付けると、スケジュール要求とともに受信したジョブ情報４０２が管理キュー４０１に登録される。印刷ジョブが終了すると、該当するプリンタ情報が削除される。
【００３９】
図５は、通信接続管理部３０１が管理する接続したクライアントもしくはスケジューラの情報５０２と、接続したクライアントもしくはスケジューラの接続先情報５０２を管理する接続管理キュー５０１を示す図である。
【００４０】
接続先情報５０２は、接続ＩＤ５０２１、接続したクライアントもしくはスケジューラのＩＰアドレス５０２２、接続するクライアントもしくはスケジューラが登録したイベントの種類などの登録イベント情報５０２３を持つ。接続ＩＤとは、接続しているクライアントもしくはスケジューラ毎に通信接続管理部３０１が割り振った識別名である。イベントの種類とは、印刷装置制御部２０３が発行するデバイス状態の変化や、ジョブ状態の変化といったイベントの種類を表す。たとえば、デバイス状態の変化には、装置各部のセンサが検出した故障や用紙切れ、色材切れの発生などがある。通信の切断によるタイムアウトなども、ネットワークインターフェース部２０７から通知されるイベントではあるが、デバイス状態の変化を示すイベントに含めることもできる。また、ジョブ状態の変化には、ジョブのスケジュールや、スケジュールされているジョブの実行の開始や終了や中断、スケジュールされていたジョブの消滅などがある。
【００４１】
５０１は、接続したクライアントもしくはスケジューラの接続先情報をキューの形式で保持する管理キューである。クライアントもしくはスケジューラとのセッションが開始されると、該当するクライアントもしくはスケジューラの情報が本管理キューに登録され、切断すると該当するクライアントもしくはスケジューラ情報が削除されるようになっている。
【００４２】
＜ジョブのスケジュール処理＞
図６は、クライアント１０１〜１０３および他のスケジューラからのスケジュール要求を受け付け、印刷許可を発行するまでのスケジューラ３００のスケジュール管理部３０２における処理のフローチャートである。図６の手順は、ステップＳ６００で、クライアントや他の印刷装置のスケジューラから通知を受信すると開始される。ステップＳ６０１において、クライアント１０１〜１０３および他のスケジューラからの通知（メッセージ）が、スケジュール要求の通知なのか、転送済み状態の通知なのかを判断する。転送済み通知とは、印刷データの送信を完了した旨の通知である。
【００４３】
ステップＳ６０１においてスケジュール要求の通知であると判定されれば、ステップＳ６０２に処理を移行する。ステップＳ６０２では、ジョブ管理部３０３により、受け付けたジョブに固有のジョブＩＤを発行する。そして、ジョブＩＤと、クライアント１０１〜１０３からスケジュール要求と共に渡されたユーザ名とを含むジョブ情報４０２を作成する。さらにスケジュール要求に付加された情報、たとえばページ数やドキュメント名をジョブ情報に付加して、スケジュール要求を受け付けた順でジョブ管理キュー４０１に登録する。図４には、キュー４０１にジョブ情報４０２が登録されるように表しているが、もちろんキュー４０１にはジョブ情報そのものが登録される必要はない。キューにはジョブＩＤとジョブ情報へのリンクが登録されているだけで十分である。
【００４４】
次に、ステップＳ６０３以下で、印刷データの転送を開始させるための処理を行う。ステップＳ６０３では、ジョブ管理キュー４０１に登録されたジョブ情報４０２のジョブ状態４０２５を調べる。そのために、ジョブ管理キュー４０１の先頭から順に、登録されたジョブ情報のジョブ状態を調査し、ジョブ状態が「印刷許可」あるいは「転送中」であるか判定する。「印刷許可」または「転送中」の状態にあるジョブは、既にクライアントもしくは他のスケジューラから印刷データが転送されつつあるため、この場合には新たに印刷許可する余地はなく、ステップＳ６０１に処理を移行する。ジョブ管理キュー４０１中にジョブ状態が印刷許可、転送中のものがなければ、クライアント１０１〜１０３もしくは他のスケジューラから印刷データが送られてくる予定が無いためステップＳ６０４に処理を移行し、印刷許可の発行の準備を行う。
【００４５】
ステップＳ６０４では、ジョブ管理キュー４０１を、登録された順序（すなわちスケジュール要求を受け付けた順序）で走査し、スケジュール待機状態のジョブの有無を判定する。スケジュール待機状態のジョブが見つかるとステップＳ６０５に処理を移行する。見つからなければステップＳ６０１に移行する。
【００４６】
ステップＳ６０５で、スケジュール待機状態のジョブの発行元であるクライアントおよびスケジューラに対して、印刷データの転送を開始させる印刷許可を通知する。ステップＳ６０６で、該当するジョブ情報のジョブ状態４０２５を「印刷許可」状態に更新する。そしてステップＳ６０１に処理を移行する。
【００４７】
なお、図６では、ステップＳ６００からＳ６０６までのループが構成されている。これは、ステップＳ６００における通知待ち処理で、処理が一旦終了し、通知受信イベントの発生に応じて再開されるように構成されていても良い。
【００４８】
＜スケジューラによるジョブ状態通知イベント処理＞
図７は、後述するデバイス管理からのジョブ状態通知イベントの受け付けから、クライアント１０１〜１０３および他のスケジューラからのジョブリスト要求の受け付けに対する、ジョブ管理部３０３の処理のフローチャートである。
【００４９】
ステップＳ７００において、通信接続管理部３０１やデバイス管理部３０４からの通知を待つ。それらを受け付けると、ステップＳ７０１に進んでデバイス管理部３０４からのジョブ状態通知であるか、ジョブリスト要求であるかを判断する。
【００５０】
デバイス管理部３０４からのジョブ状態通知であれば、ステップＳ７０２に処理を移行し、該当するジョブ情報４０２のジョブ状態４０２５を、通知された状態へと更新する。更にステップＳ７０３に処理を移行し、印刷完了の通知であるかを判断する。印刷完了でなければ処理をステップＳ７０４に移行し、通信接続管理部３０１に対して、ジョブ状態のイベントをクライアントに送信するよう通知する。その通知を受けた通信接続管理部３０１は、そのジョブ状態のイベントをクライアントに発行する。
【００５１】
ステップＳ７０３で、印刷完了の通知であれば、ステップＳ７０５に処理を移行する。ステップＳ７０５では、ジョブ管理キュー４０１から該当するジョブ（ＩＤで識別可能である）を削除する。ステップＳ７０６で、通信接続管理部３０１にジョブの完了イベントをクライアントに発行するように通知し、処理をステップＳ７０１に移行する。その通知を受けた通信接続管理部３０１は、クライアントにジョブ完了イベントの発生を通知する。
【００５２】
一方ステップＳ７０１で、クライアント１０１〜１０３および他のスケジューラからのジョブリスト要求の受け付けたと判定されると、ステップＳ７０７に分岐する。ステップＳ７０７では、ジョブ管理キュー４０１に登録されたジョブ情報のリスト（以下、ジョブ情報リストと呼ぶ。）を、ジョブリスト要求の要求元クライアントあるいは要求元スケジューラに送信するように、通信接続管理部３０１に対してジョブ情報リストを通知する。
【００５３】
このとき、ジョブリスト要求内部にユーザ名が埋め込まれていた場合は、ジョブ管理キュー４０１に登録されたジョブ情報４０２のうち、ジョブリスト要求に埋め込まれたユーザ名と一致するユーザ名を持つもののみを抽出する。そして抽出したジョブ情報をリスト化してジョブ情報リストを生成し通信接続管理部３０１に渡す。
【００５４】
また、ジョブリスト要求内部にデバイス状態が埋め込まれていた場合は、デバイス管理部３０４から現在のデバイス状態を取得する。そして、取得したデバイス状態がジョブリスト要求内部に埋め込まれていたデバイス状態と一致した場合に、ジョブ情報リストを生成して通信接続管理部３０１に渡す。
【００５５】
＜イベントの通知＞
図８は、デバイスコントローラ２０３からのデバイス状態やジョブ状態通知をイベントハンドラを経由して受け付け、ジョブ管理部３０３や通信接続管理部３０１に通知するデバイス管理部３０４の処理のフローチャートである。
【００５６】
スケジューラ３００が起動すると、ステップＳ８００において、デバイス管理部３０４により、イベントハンドラ３０５を経由して、デバイスコントローラ２０３に対するイベント登録処理を行う。通知すべきイベントは、接続先情報５０２の登録イベント欄にも登録される。イベント登録により登録されたイベント、たとえばデバイスの状態の変化や、デバイスコントローラ２０３が処理する印刷ジョブの状態の変化といったイベントが発生した場合に、それらのイベントがデバイス管理部３０４に通知される。
【００５７】
ステップＳ８０１以下で、通知されたイベントのモニタが行われる。そのためステップＳ８００とステップＳ８０１とは本来非同期な処理であるが、図８では便宜的に連続するかのように表している。さて、ステップＳ８０１ではイベントの発生を待つ。
【００５８】
ステップＳ８０１において、デバイスコントローラ２０３で発生したイベントをイベントハンドラ経由で受け付けると、ステップＳ８０２へ分岐する。ステップＳ８０２では、通知されたイベントが、ジョブのイベントであるかデバイスのイベントであるかを判断する。この判断は、たとえば、イベント通知のメッセージに含まれるイベント種類を示す識別名を参照して行える。ジョブのイベントであれば、ステップＳ８０３でジョブ管理部３０３にジョブイベントを通知し、ステップＳ８０２に処理を移行する。ジョブ管理部３０３は、ジョブ情報変化イベントすなわちジョブ情報の変化を、接続しているクライアントに送信するよう、通信接続管理部３０１に通知する。
【００５９】
また、ステップＳ８０２においてデバイスのイベントであると判定されればステップＳ８０４に移行し、デバイスの状態をデバイス管理部３０４で保持（キャッシュ）する。そして、ステップＳ８０５で通信接続管理部３０１にキャッシュしたデバイスイベントを通知し、ステップＳ８０２に移行する。
【００６０】
イベント通知を受けた通信接続管理部３０１は、たとえば以下のように動作する。通信接続管理部３０１は、通知されたイベントと同じ種類のイベントを接続先情報５０２の登録イベントから検索する。同じ種類のイベントが接続先情報に含まれていれば、その接続先情報に登録されたＩＰアドレスに対して、ジョブ情報変化イベントを通知する。この手順は図９で詳説する。
【００６１】
このようにして、発生したイベントを、その通知が登録されたアドレスを持つクライアントやデバイスに対して通知することができる。
【００６２】
＜通信接続管理部によるイベントの通知＞
図９は、クライアント１０１〜１０３および他のスケジューラからの要求や通知、デバイス管理部３０４からの通知、ジョブ管理部３０３への要求や通知を処理する通信接続管理部３０１の処理のフローチャートである。
【００６３】
ステップＳ９０１では、クライアント１０１〜１０３や他のスケジューラおよびデバイス管理部３０４、ジョブ管理部３０３からの通知や要求を受け付け、どの通知や要求であるかを判断する。ステップＳ９００で、要求メッセージや通知メッセージの受信を待機し、受信するとステップＳ９０１に進む。ステップＳ９０１においては、受け付けた要求やイベントの種類を判定し、判定結果に応じて分岐する。
【００６４】
クライアント１０１〜１０３からの接続要求であれば、ステップＳ９０２に移行する。ステップＳ９０２では、接続管理キュー５０１に通信接続管理部３０１で発行した接続ＩＤと、要求を発したクライアントおよび他のスケジューラのＩＰアドレスを設定し、接続管理キューに接続先情報を登録する。
【００６５】
ステップＳ９０１において受け付けた要求やイベントがクライアント１０１〜１０３からのイベント登録であれば、ステップＳ９０３に処理を移行する。ステップＳ９０３では、該当する接続先情報５０２の登録イベント５０２３に、通知すべきと指定されたイベントの種類を設定する。イベントの種類には、ジョブの状態の変化を通知するジョブイベント、デバイスの状態の変化を通知するデバイスイベントがある。
【００６６】
ステップＳ９０１において受け付けた要求やイベントがデバイス管理部３０４からのデバイスイベントやジョブ管理部３０３からのジョブイベントであれば、ステップＳ９０４に分岐する。ステップＳ９０４おいては、これらのイベントを通知すべき接続先を認識するために、接続管理キュー５０１に登録された全ての接続先情報５０２から、接続先情報５０２の登録イベント５０２３の設定を参照する。そして、その接続先に対してそのイベントを通知すべきかどうかを判断する。通知すべきであると判断した場合には、接続しているクライアントのＩＰアドレスを読んで保持し、ステップＳ９０５において通知すべき全ての接続先（アドレス）に対してイベントを送信する。
【００６７】
ステップＳ９０１において受け付けた要求やイベントがクライアントもしくは他のスケジューラからの切断要求であればステップＳ９０６に処理を移行する。ステップＳ９０６では、接続管理キュー５０１から該当する接続先の接続先情報５０２を削除する。
【００６８】
ステップＳ９０１において受け付けた要求が他のスケジューラからの探索要求であった場合は、ステップＳ９０７に処理を移行する。ステップＳ９０７では、ジョブ管理部３０３にジョブ情報リストの要求を発行する。次にステップＳ９０８においてジョブ管理部３０３からジョブ情報リストを取得すると、要求元の他のスケジューラへ取得したジョブ情報リストを送信する。
【００６９】
＜クライアントからの印刷手順＞
図１０は、クライアント１０１〜１０３がジョブを生成後、スケジューラ３００にスケジュール要求を発行してから、印刷装置で印刷が終了するまでの手順のシーケンス図である。あわせて、ある印刷装置のスケジューラ３００から、他の印刷装置のスケジューラ３００にスケジュール要求を発行するところから、印刷装置で印刷が終了するまでのやり取りについても説明する。
【００７０】
まず、クライアントから印刷要求を発行する場合について説明する。クライアント１０１〜１０３は、印刷データを受け付けると、スケジューラ３００とセッション接続を開始する。
【００７１】
クライアント１０１〜１０３は、クライアント自身の情報を通知する接続要求コマンド１００１、ジョブ／デバイス状態を通知してもらうためのイベント登録１００２の各メッセージを発行する。またスケジューラ３００がスケジュール管理するジョブに関する情報を取得するジョブリスト取得コマンド１００３を発行する。
【００７２】
スケジューラ３００は、接続要求１００１を受け付けると、クライアント１０１〜１０３の情報を接続管理キュー５０１に接続先情報５０２として登録する。また、イベントの登録１００２を受け付けると、該当する接続先情報５０２の登録イベント５０２３に設定する。ジョブリスト取得コマンド１００３を受け付けると、ジョブ管理キュー４０１に登録されているジョブ情報４０２のリストを送信する。
【００７３】
次に、クライアント１０１〜１０３が印刷を予約するためのスケジュール要求のコマンド１００４を発行する。スケジューラ３００はスケジュール要求１００４を受け付けると、ジョブ管理キュー４０１にジョブ情報を４０２登録する。ジョブ情報４０２には、ドキュメント名４０２１、ユーザ名４０２３等の情報が含まれる。スケジューラ３００は、デバイスコントローラ２０３が印刷データを受け付けられるようになると印刷許可１００５をクライアントに発行し、クライアント１０１〜１０３に対して印刷データの送信を開始するように促す。また、印刷許可１００５を発行すると、ジョブ情報４０２のジョブ状態４０２５を「印刷許可」状態に更新する。
【００７４】
クライアント１０１〜１０３は、印刷許可１００５を受け付けると、ＬＰＤ／ＲＡＷに印刷データ１００６の転送を開始する。転送が始まるとスケジューラ３００に対して転送開始の通知１００７を行う。スケジューラ３００は、転送開始通知１００７を受けると、ジョブ情報４０２のジョブ状態４０２５を「転送中」の状態に更新する。ＬＰＤ／ＲＡＷは、たとえば仮想マシン２０８の一部を構成し、クライアントからの印刷ジョブを受信するためのプログラムである。
【００７５】
ＬＰＤ／ＲＡＷは印刷データ１００６を受け付けると、デバイスコントローラ２０３にデータ１００８を転送する。デバイスコントローラ２０３はそれを受けて印刷を開始する。デバイスコントローラ２０３は、印刷が開始されるとジョブの状態１００９をスケジューラ３００に通知する。スケジューラ３００は、接続先情報５０２の登録イベント５０２３の情報を基に、クライアント１０１〜１０３にジョブの印刷状態１０１０を通知する。
【００７６】
また、クライアント１０１〜１０３は印刷データの転送が終了すると、スケジューラ３００に対して、転送終了通知１０１１を送信する。スケジューラ３００は、転送終了通知１０１１を受けると、ジョブ情報４０２のジョブ状態４０２５を「転送済」の状態に更新する。
【００７７】
デバイスコントローラ２０３は、印刷処理が終了すると、ジョブ状態として「印刷完了」の通知１０１３をスケジューラ３００に通知する。スケジューラ３００は、接続先情報５０２の登録イベント５０２３の情報を基に、クライアント１０１〜１０３にジョブの印刷完了の状態１０１４を通知する。
【００７８】
クライアント１０１〜１０３は、印刷完了の状態通知１０１４により印刷が完了したことを確認すると、デバイスからの通知はもはや必要なくなるので、スケジューラ３００に対して、イベント通知の登録の解除要求１０１５を発行する。イベント解除要求１０１５を受け付けたスケジューラ３００は、接続先情報５０２の登録イベント５０２３にイベントを通知しない旨の情報を設定する。
【００７９】
その後、クライアント１０１〜１０３は、スケジューラ３００との接続を終了するための切断要求１０１６を発行し、セッションを終了する。
【００８０】
スケジューラ３００は切断要求を受け付けると、その切断要求の送信元クライアントの接続先情報５０２を接続管理キュー５０１から削除し、該クライアント１０１〜１０３との間の印刷処理を終了する。
【００８１】
＜印刷装置間の印刷データの移動手順＞
次に、印刷装置にいったん送信された印刷データを、他の印刷装置に転送し、その印刷装置で印刷を行う場合について説明する。この場合、印刷データは既にクライアントにより作成され、印刷装置に送信されている。以下の説明では、印刷データの転送元である印刷装置のスケジューラを符号３００’で表す。また。転送先印刷装置のスケジューラを符号３００で表す。
【００８２】
転送元スケジューラ３００’はジョブの移動指示を受ける。移動指示された印刷ジョブが転送元スケジューラ３００’により管理される印刷装置内部に保持されている場合は、移動先のスケジューラ３００とセッション接続を開始する。
【００８３】
これに続く手順は、図１０の説明におけるクライアント１０１〜１０３を転送元スケジューラ３００’と置き換えたものとなる。そこで説明は省略する。
【００８４】
＜スケジューラによるジョブの移動処理＞
図１１は、他のスケジューラ３００（転送元スケジューラ３００’）からジョブの移動指示を受け付けたときの、転送先スケジューラ３００による処理のフローチャートである。この処理は特に、スケジューラ３００内の操作管理部３０６により行われる。
【００８５】
ステップＳ１１０１において他のスケジューラ３００からジョブの移動指示を受け付けると、受信したジョブＩＤを元にジョブ管理部３０３で管理しているジョブ管理キュー内から該当ジョブを移動対象として特定する。
【００８６】
ステップＳ１１０２において、特定した移動対象ジョブについて印刷処理の停止処理を行う。ステップＳ１１０３において特定した移動対象ジョブについてジョブ状態を調べる。「印刷待機中」であれば、実際の印刷データはクライアント１０１〜１０３が保持しているということなので、ステップＳ１１０７へ移行する。
【００８７】
またジョブ状態が「印刷許可」状態、「転送中」、「転送済み」のいずれかであれば、実際の印刷データはデバイスコントローラ２０３内の記憶領域内に保持されている状態か、もしくはデータ受信中であるので、ステップＳ１１０５へ移行する。
【００８８】
またジョブ状態が「印刷待ち」、「印刷中」のいずれかであった場合は、実際の印刷データはプリント処理部２０６の記憶領域もしくは外部規則装置制御部２０７にイメージデータとして保持されている。この場合にはステップＳ１１０４へ移行する。
【００８９】
ステップＳ１１０４では、印刷データはイメージデータとして展開されているので、この展開したイメージデータを移動先の印刷装置へ転送する。この際、移動先印刷装置のスケジューラ３００への接続、イベント登録、ジョブリスト要求を行い、その後印刷許可を受信してから印刷データを転送する。このフローは、図１０で説明したとおりである。
【００９０】
ステップＳ１１０５では、印刷データはファイル形式で保持されているので、このファイルを移動先へ直接転送する。この際、移動先印刷装置のスケジューラへの接続、イベント登録、ジョブリスト要求を行い、その後印刷許可を受信してから印刷データを転送する。このフローは図１０で説明したとおりである。
【００９１】
ステップＳ１１０４、ステップＳ１１０５によるデータ転送後、ジョブの印刷（実行）が終了すると、ステップＳ１１０６において移動先のスケジューラから印刷完了通知を受信する。その後ステップＳ１１０８へと移行する。
【００９２】
ステップＳ１１０７では、ジョブはスケジュールされているものの印刷データはクライアントが保持している。そのため、通信接続管理部３０１を通して、ジョブ情報４０２および接続先情報５０２を参照して印刷要求を行ったクライアントを特定する。特定した印刷要求元クライアントに対してジョブの移動を要求し、ステップＳ１１０８へ移行する。印刷要求元クライアント特定は、ジョブ情報に含まれる接続ＩＤ（図４には不図示）を参照して行える。
【００９３】
ステップＳ１１０８において、スケジュール管理部３０２に移動した印刷ジョブ情報４０２の削除を依頼する。ジョブの特定にはジョブＩＤが用いられる。スケジュール管理部３０２は、ジョブ管理キュー４０１から該当するジョブ情報を削除する。
【００９４】
図１２Ａは印刷装置の操作パネル上に表示するＵＩ例である。このＵＩはスケジューラ３００の操作管理部３０６によって管理制御される。本実施形態ではウィンドウ形式の表示例を提示したが、コマンドベースの入力画面として実装されることも考えられる。また入力用のＩＤカード等を利用したユーザ名入力方法なども考えられる。いずれにしても、必要とされる情報をスケジューラ３００に入力する手段であればよく、どのような形式をとってもかまわない。
【００９５】
ユーザが操作パネル上から、たとえば所定のボタン操作等でスケジューラ３００のＵＩ画面を起動すると、まずウインドウ１２０１が表示される。このウィンドウ１２０１には、ユーザ名入力ＢＯＸ１２０２、入力ボタン１２０３、入力ユーザ名表示リストＢＯＸ１２０４、入力ユーザ名削除ボタン１２０５、フィルタ設定チェックＢＯＸ１２０６、サブフィルタ設定チェックＢＯＸ１２０７、リスト表示実行ボタン１２０８が含まれている。
【００９６】
ユーザ名入力ＢＯＸ１２０２を押下することで、ユーザ名入力用のキー画面がポップアップ表示され、文字列の入力を受け付ける。入力ボタン１２０３を押すことで入力したユーザ名が入力ユーザ名表示リストＢＯＸに追加される。入力ユーザ名表示リストＢＯＸには入力された単数、もしくは複数のユーザ名がリストとして表示され、選択したのちに入力ユーザ名削除ボタン１２０５を押下することでリストから削除される。
【００９７】
フィルタ設定チェックＢＯＸ１２０６は、印刷ジョブの探索要求を他の印刷装置に出す際に埋め込むか、もしくはジョブ情報の表示時にフィルタリングするためのフィルタリング情報の設定を行うためのチェックＢＯＸである。フィルタとしてユーザ名を指定するためのチェックＢＯＸと、機器エラーを指定するためのチェックＢＯＸとを例として提示した。ユーザ名入力と共に、パスワード入力欄を設けて認証を行うことも考えられる。また、印刷ジョブのエラーをフィルタとして利用するためのチェックボックスを設けても良い。
【００９８】
サブフィルタ設定チェックＢＯＸ１２０７は、機器エラーフィルタリングが選択されている場合に、フィルタから除外する条件を設定するためのチェックＢＯＸである。ボックス１２０７には、出力用紙のトレイ満載、用紙切れ、紙詰まり、カバーオープン等、エラー復帰が比較的容易な機器エラーについてフィルタリング条件から除外することができる。図１２Ａではこれらのチェックをはずした例を提示している。上記設定を行った後に、ユーザはリスト表示実行ボタン１２０８を押下することで、操作パネルは次の画面である図１２Ｂのウインドウ１２１０へ遷移する。
【００９９】
ウィンドウ１２１０は、フィルタリングジョブリスト１２１１、エラーデバイスリスト１２１２、自ジョブリスト１２１３、各種メニューボタン１２１４から構成される。
【０１００】
フィルタリングジョブリスト１２１１は、前ウィンドウ１２０１で設定したフィルタリング条件に一致するジョブのリストを表示する。エラーデバイスリスト１２１２は、機器エラーフィルタリングのみを行った結果を表示する。また、自ジョブリスト１２１３は、ユーザ名によるフィルタリングを行った結果を表示する。
【０１０１】
ユーザはフィルタリングジョブリスト１２１１から、表示されたジョブを選択し、各種メニューボタン１２１４の操作ボタンを押下することにより各種操作を行うことができる。例えば、移動ボタンを押すことで該当ジョブのジョブの移動指示を発行することができ、また削除ボタンを押すことでジョブのキャンセルを発行することができる。また、戻るボタンを押すことで、前ウィンドウ１２０１に戻ってユーザ名、フィルタリング条件の再入力を行ったり、閉じるボタンでスケジューラ３００のＵＩ画面を終了したりすることができる。
【０１０２】
＜クライアントのソフトウエア構成＞
次に、本プリントシステムのクライアント１０１〜１０３のソフトウェア構成について説明する。図１３は、クライアント１０１〜１０３におけるソフトウェア構成の一例を示す図である。それぞれの構成間の矢印は、アプリケーションから発行された描画コマンドを含む印刷ジョブもしくは保存ジョブが、どのように処理されるかを示したものである。また、各ブロックで示されたソフトウェア構成は、クライアント１０１〜１０３であるコンピュータによって実行され、所望の機能を実現する。
【０１０３】
通常、Ｍｉｃｒｏｓｏｆｔ  Ｗｏｒｄ（登録商標）などの一般的なアプリケーションプログラム１３０１は印刷の指示を受け付けると、一連の描画コマンドを、ＯＳを介して生成する。ＯＳを介して生成された描画コマンドを受け取ったＰＤＬドライバ１３０２は、一連の描画コマンドに基づいてデバイス１０４〜１０５で解釈可能なＰＤＬファイルを含む印刷ジョブを生成する。なお、以下の説明ではＰＤＬドライバを例に説明を行うが、これに限定されるものではない。例えば、ＢＤＬ（Ｂａｎｄ  ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）や、圧縮ビットマップを作成するプリンタドライバ、或いは、アプリケーション及びＯＳによりプリンタドライバを介さずに印刷データを生成する形態などにも適用可能である。
【０１０４】
ＰＤＬドライバ１３０２は、デバイスへ印刷ジョブもしくは保存ジョブを送信するためにスプーラ１３０３に渡す。ここではＯＳをマイクロソフト社のウィンドウズ（登録商標）と仮定しているのでスプーラ１３０３はウィンドウズ（登録商標）スプーラである。ただし、本発明を適用するコンピュータのＯＳはＷｉｎｄｏｗｓ（登録商標）に限定されるものではなく、描画命令を備えるものであれば他のＯＳも適用可能である。スプーラ１３０３は、ユーザがユーザインタフェースを介して選択し指示したポートモニタ１３０４に印刷ジョブを渡して、デバイス１０４〜１０５等のデバイスに送信させる手順をとる（矢印ａ）。
【０１０５】
ここでは、ユーザはあらかじめジョブ制御プリントサービス１３０５に印刷データを転送する、ポートモニタ１３０４（以降、ジョブ制御ポートモニタと略記）を指定して印刷を指示したものとして説明を進める。また、プリンタドライバインタフェースを介して設定された用紙サイズ、ステイプル指示等の印刷設定情報も、ジョブ制御ポートモニタ１３０４に送信される。ジョブ制御ポートモニタ１３０４はプリントサービス１３０５（以降、ジョブ制御プリントサービスと称する）に送信する（矢印ｂ）。
【０１０６】
また、クライアント１０１〜１０３においてジョブ制御プリントサービス１３０５と別のクライアント１３０８のジョブ登録アプリケーション１３０９は、ＡＰＩ１３１０を介し、ジョブ制御プリントサービス１３０５に印刷データを投入する（矢印g）。
【０１０７】
ジョブ制御プリントサービス１３０５は、転送された印刷ジョブもしくは保存ジョブ及びデバイスの状態を管理する機能を備える。また、デバイスのスケジューラから通知されるデバイス状態やジョブの状態などの情報を管理したり、また、スケジューラに対して所定の命令をしたりする機能も備える。これは、複数のデバイス１０４〜１０５のデバイス情報やジョブ情報を管理する機能に相当する。
【０１０８】
そして、印刷データをデバイス１３０６に送信する前に、デバイス１３０６が持つ印刷ジョブもしくは保存ジョブの順序管理機能に相当するスケジューラ３００に印刷の要求を発行する。順序管理機能に基づき順番が到来した場合には、スケジューラ３００からの印刷指示により、デバイス１０４〜１０５に印刷データを送信する（矢印ｃ、ｄ、ｅ）。
【０１０９】
スケジューラ３００は、印刷データの完了を確認すると印刷完了の通知をジョブ制御プリントサービス１３０５に通知（矢印ｆ）したり、また、デバイス１３０６の状態を通知したりする（矢印ｆ）。
【０１１０】
プリントマネージャ１３０７は、ユーザが、ジョブ制御プリントサービス１３０５内部でプリントジョブがどのような状態にあるかを調べたり、印刷ジョブや保存ジョブを操作したりするためのユーザインタフェースを提供するプログラムである。プリントマネージャ１３０７は、ジョブ制御プリントサービス１３０５のソフトウェアのインタフェース（ＡＰＩ：Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍ  Ｉｎｔｅｒｆａｃｅ）を介して、ジョブ制御プリントサービス１３０５と情報・指示をやり取りしている。
【０１１１】
そして、プリントマネージャ１３０７は、主に、ジョブ制御プリントサービス１３０５が管理するデバイス１０４〜１０５の状態情報をイベントとして取得する機能を備える。イベントの通知の種別としては、トナー残量が少なくなった警告、クライアントとデバイスとの通信障害、メモリ不足、排紙トレイ満載などのエラー／警告情報の通知や、エラー状態から正常状態に復帰した正常情報の通知などが想定される。ここでのジョブ制御プリントサービス１３０５は、ネットワークを介して通信可能な各デバイス（印刷装置）の印刷実行中、電力制御状態、障害情報（紙ジャム）等のステータスの通知を受け付ける機能を備える。
【０１１２】
更に詳細な処理としては、プリントマネージャ１３０９がジョブ制御プリントサービス１３０５に対してデバイスを指定したイベントを発行し、ジョブ制御プリントサービス１３０５は発行されたイベントに基づくデバイスのステータスを認識して、監視に基づく結果をプリントマネージャ１３０９に通知する。
【０１１３】
次に、図１４を用いてアプリケーション１３０１からデバイス１０４〜１０５までの印刷ジョブの流れについて説明する。ここで、図１３と同じソフトウェア構成について同じ参照番号を付与しており、その機能については詳説しない。
【０１１４】
図１４に示すように、概念的には、ＰＤＬドライバ１３０２、スプーラ１３０３、ジョブ制御ポートモニタ１３０４は、デバイス１０４〜１０５ごとに用意されている。ＯＳがウィンドウズ（登録商標）の場合には、これらをまとめてウィンドウズ（登録商標）プリントシステム１４００と称する場合もある。ジョブ制御プリントサービス１３０５には、デバイス１０４〜１０５に対応する数のプリントキュー１４０１、１４０１Ａ及び出力ポート１４０２、１４０２Ａが含まれている。これらのプリントキューや出力ポート１４０２、１４０２Ａは、ジョブ制御プリントサービス１３０５が管理している。
【０１１５】
この出力ポート１４０２、１４０２Ａには対応する印刷装置のＩＰアドレス又は名前解決（ＤＮＳ：Ｄｏｍａｉｎ  Ｎａｍｅ  Ｓｙｓｔｅｍ）で使用されるネームが関連付けられている。そして、このＩＰアドレス又はネームに基づき、ジョブのスケジュール要求先やジョブの送信先が特定されジョブの送信（出力）が行なわれる。
【０１１６】
印刷を行う場合、アプリケーション１３０１はプリンタを指定して印刷指示を発行する。この印刷指示に基づいてＰＤＬドライバ１３０２によって生成された印刷ジョブがジョブ制御ポートモニタ１３０４からジョブ制御プリントサービス１３０５に渡される。その印刷ジョブ情報は、まずプリントキュー１４０１に保持され、出力ポート１４０２に印刷ジョブを受け付ける指示が出される。出力ポート１４０２は、印刷するジョブを受け付けると、出力ポートに設定されたＩＰアドレスに該当する、デバイス１３０６のスケジューラ３００に対してスケジュールの要求を発行する。デバイス１３０６のスケジューラ３００は、スケジューリング機能を用いて、複数のジョブ制御プリントサービス１３０５から受け付けたジョブのスケジューリング処理を行い、出力ポート１４０２に対して印刷指示を発行する。印刷指示を受け付けた出力ポート１４０２はデバイス１３０６に印刷データを送信する。
【０１１７】
また、ジョブ制御プリントサービスはスケジューラ３００から受信したジョブ移動要求に対して、例えばプリントキュー７０１からプリントキュー７０１Ａへジョブを移動する。移動が正常に行われると、プリントキュー７０１の移動したジョブは削除される。
【０１１８】
＜代行印刷処理＞
次に、本発明の特徴である印刷ジョブの代行処理について図１５および図１６を用いて説明する。図１５は代行先（印刷ジョブの移動先）印刷制御装置であるスケジューラ３００Ａと代行元（印刷ジョブの移動元）印刷制御装置であるスケジューラ３００Ｂでの印刷ジョブの代行の処理を示すフローチャートである。図１６は代行先印刷装置の代行先操作パネル２１と、代行先のスケジューラ３００Ａである代行先印刷制御装置と、代行元のスケジューラ３００Ｂである代行元印刷制御装置と、その他デバイスのスケジューラ３００であるその他印刷制御装置と、印刷を行ったクライアント１０１〜１０３であるクライアントとをオブジェクトとしたシーケンス図である。以下、両図面を用いてフローの説明を行う。
【０１１９】
まず、ステップＳ１５０１において、スケジューラ３００Ａは操作パネルから前述したウィンドウ１２０１からユーザＩＤおよびフィルタリング条件を受信する（シーケンス：１６０１、１６０２）。ステップＳ１５０２においてネットワークを介して探索要求をブロードキャストで送信する（シーケンス：１６０３、１６０４、１６０５）。スケジューラ３００ＢはステップＳ１５１０において探索要求を受け付ける。そして受け付けたフィルタリング条件の設定をもとに、ステップＳ１５１１で、返信すべき印刷ジョブ情報リストを生成して返信する（シーケンス：１６０６）。ただし、フィルタリング条件に一致する印刷ジョブがない場合は返信をしないか、もしくはリストを空の状態で返信する（シーケンス：１６０７）。
【０１２０】
次に、スケジューラ３００Ａは、ステップＳ１５０３で受信した探索結果を、操作パネル上のウィンドウ１２１０に、ステップＳ１５０４において表示する（シーケンス：１６０８）。スケジューラ３００Ａは、ステップＳ１５０５において印刷ジョブの移動（代行）要求を受け付ける（シーケンス：１６０９）。そしてステップ１５０６で、移動元の印刷制御装置、本例ではスケジューラ３００Ｂに対してジョブ移動指示を行う（シーケンス：１６１０）。
【０１２１】
スケジューラ３００Ｂはジョブ移動指示をステップＳ１１０１で受け付けると該当するジョブの実行を中止する（Ｓ１１０２）。そして、図１１で説明したジョブの状態による判定処理を行う（Ｓ１１０３、シーケンス：１６１１）。判定結果に応じて、印刷データの転送（Ｓ１１０４またはＳ１１０５、シーケンス：１６１２〜１６１３）、もしくはクライアントへのジョブ移動指示（Ｓ１１０７、シーケンス：１６１４）の発行等を行う処理へと移行する。クライアントに対してジョブ移動指示が送信された場合には、クライアントからジョブが転送される（シーケンス：１６１６）。代行先の印刷装置で印刷が完了すると、印刷完了通知を、印刷データの送信元に送信する（ステップＳ１５０８、シーケンス：１６１７，１６１９）。印刷完了を受けた印刷装置は、代行印刷されたジョブを、ジョブ管理キューから削除する（Ｓ１１０６、Ｓ１１０８、シーケンス：１６１８）。一方、印刷完了通知を受けたクライアントは、代行元の印刷装置に対して印刷完了を通知する（シーケンス１６２０）。印刷完了を受けた印刷装置は、代行印刷されたジョブを、ジョブ管理キューから削除する（シーケンス：１６２１）。
【０１２２】
なお、スケジューラ３００Ａは、ステップＳ１５０７、ステップＳ１５０８において図１０で説明した印刷スケジュール要求から印刷完了までの処理を行う。
【０１２３】
上記構成及び手順により、本発明に係る印刷制御装置であるスケジューラ３００は、ユーザが代行先として選択した印刷装置の操作パネル上に、障害により印刷できない他の印刷装置内に登録された自分の印刷ジョブを表示できる。ユーザはその中から所望のジョブを選択して印刷させることができ、容易にジョブの代行印刷を行うことが可能となる。
【０１２４】
また、上記構成及び手順により、ユーザは実際の印刷データがどこに保持されているかを意識することなく同じオペレーションで容易に代行印刷処理をすることが可能となる。
【０１２５】
また、スケジューラ３００は上記実施形態で示したような機能を備えていれば、いかなる構成であってもよく、例えば、アプリケーションサーバやデバイスに直接組み込んだ形式や、複数のアプリケーションサーバやデバイスを一台のスケジューラで管理する形式も考えられる。
【０１２６】
また、上記実施形態で示したようなプログラムは、以下のような記憶媒体、プログラム伝送装置の形態とすることもできる。記憶媒体としては、コンピュータ装置に実行させる上気したようなプログラムを、ＣＤ−ＲＯＭ、ＤＶＤ、メモリ、ハードディスク等の記憶媒体に、コンピュータ装置が読み取り可能に記憶させればよい。また、プログラム伝送装置としては、上記したようなプログラムを記憶させたＣＤ−ＲＯＭ、ＤＶＤ、メモリ、ハードディスク等の記憶手段と、この記憶手段から当該プログラムを読み出し、当該プログラムを実行する装置側に、コネクタ、あるいはインターネットやＬＡＮ等のネットワークを介して当該プログラムを伝達する伝送手段とを備える構成とすればよい。このほかにも、本発明の主旨を逸脱しない限り上記実施の形態であげた構成を取捨選択したり、他の構成に適宜変更したりすることも可能である。
【図面の簡単な説明】
【０１２７】
【図１】本発明の実施形態に係る印刷システムの全体構成を示すブロック図である。
【図２】印刷装置であるデバイス１０４〜１０５の構成を示すブロック図である。
【図３】印刷制御装置スケジューラ３００のソフトウェア構成を示すブロック図である。
【図４】スケジューラ３００におけるジョブ情報とジョブ管理キューを示す図である。
【図５】スケジューラ３００における接続先情報と接続管理キューを示す図である。
【図６】スケジュール管理部３０２における処理のフローチャートである。
【図７】ジョブ管理部３０３の処理のフローチャートである。
【図８】デバイス管理部３０４の処理のフローチャートである。
【図９】通信接続管理部３０１の処理のフローチャートである。
【図１０】スケジューラ３００における処理のシーケンス図である。
【図１１】操作管理部３０６における処理のフローチャートである。
【図１２Ａ】スケジューラ３００が操作パネルに表示するＧＵＩの一例を示す図である。
【図１２Ｂ】スケジューラ３００が操作パネルに表示するＧＵＩの一例を示す図である。
【図１３】クライアントのソフトウェア構成を示すブロック図である。
【図１４】クライアントのソフトウェア構成の詳細ブロック図である。
【図１５】ジョブの移動代行処理を示すフローチャートである。
【図１６】ジョブの移動代行処理のシーケンス図である。
【図１７】印刷装置のハードウエアブロック図である。
【図１】
2007122093.tif 000003
【図２】
2007122093.tif 000004
【図３】
2007122093.tif 000005
【図４】
2007122093.tif 000006
【図５】
2007122093.tif 000007
【図６】
2007122093.tif 000008
【図７】
2007122093.tif 000009
【図８】
2007122093.tif 000010
【図９】
2007122093.tif 000011
【図１０】
2007122093.tif 000012
【図１１】
2007122093.tif 000013
【図１２Ａ】
2007122093.tif 000014
【図１２Ｂ】
2007122093.tif 000015
【図１３】
2007122093.tif 000016
【図１４】
2007122093.tif 000017
【図１５】
2007122093.tif 000018
【図１６】
2007122093.tif 000019
【図１７】
2007122093.tif 000020