(57)【要約】【課題】  プリンタのスプール/ジョブ保存領域の不足を防ぐ。【解決手段】  ネットワーク106を介して接続されたクライアント101〜103の印刷ジョブを処理するプリンタ104〜105は、クライアント101〜103から印刷ジョブを受信し、受信した印刷ジョブをキューに格納して管理する。プリンタ104〜105は、クライアント101〜103の要求に応じて、キューに格納した印刷ジョブのジョブリストをクライアント101〜103に送信する。プリンタ104〜105は、ジョブリストに含まれる印刷ジョブの印刷実行指示をクライアント101〜103から受信すると、当該印刷ジョブの印刷データをクライアント101〜103に要求する。そして、プリンタ104〜105は、クライアント101〜103から印刷データを受信し、受信した印刷データを印刷する。【選択図】  図1
2008059372.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して接続されたクライアント装置の印刷ジョブを処理するプリンタの印刷制御装置であって、
前記クライアント装置から印刷データの実体を含まない印刷ジョブを受信するジョブ受信手段と、
前記受信手段が受信した印刷ジョブをキューに格納して管理する管理手段と、
前記キューに格納された印刷ジョブのジョブリストに含まれる印刷ジョブの順番を変更する変更手段と、
前記ジョブリストに含まれる印刷ジョブの印刷実行指示を受けると、前記ジョブリストに含まれる印刷ジョブの印刷データを前記クライアント装置に要求する要求手段と、
前記クライアント装置から印刷データを受信するデータ受信手段と、
前記データ受信手段が受信した印刷データを前記プリンタに供給する供給手段とを有することを特徴とする印刷制御装置。
【請求項２】
前記管理手段は、前記プリンタから前記印刷データの印刷完了通知を受信すると、前記印刷ジョブの完了通知を前記クライアント装置に通知し、前記完了通知を通知した印刷ジョブを前記キューから削除することを特徴とする請求項1に記載された印刷制御装置。
【請求項３】
前記データ受信手段は、前記印刷実行が指示された印刷ジョブにグループIDが設定されている場合、当該グループIDが設定された、前記キューに格納された印刷ジョブに対応する印刷データを、順次、前記クライアント装置に要求し受信することを特徴とする請求項1または請求項2に記載された印刷制御装置。
【請求項４】
前記供給手段は、前記クライアント装置によって、前記グループIDに対応する印刷指示情報が設定されている場合、前記グループIDが設定された印刷ジョブの印刷データに前記印刷指示情報を付加して、前記プリンタに供給することを特徴とする請求項3に記載された印刷制御装置。
【請求項５】
ネットワークを介して接続されたクライアント装置の印刷ジョブを処理するプリンタの印刷制御方法であって、
前記クライアント装置から印刷データの実体を含まない印刷ジョブを受信するジョブ受信ステップと、
前記受信ステップで受信した印刷ジョブをキューに格納して管理する管理ステップと、
前記キューに格納された印刷ジョブのジョブリストに含まれる印刷ジョブの順番を変更する変更ステップと、
前記ジョブリストに含まれる印刷ジョブの印刷実行指示を受けると、前記ジョブリストに含まれる印刷ジョブの印刷データを前記クライアント装置に要求する要求ステップと、
前記クライアント装置から印刷データを受信するデータ受信ステップと、
前記データ受信ステップで受信した印刷データを前記プリンタに供給する供給ステップとを有することを特徴とする印刷制御方法。
【請求項６】
前記管理ステップは、前記プリンタから前記印刷データの印刷完了通知を受信すると、前記印刷ジョブの完了通知を前記クライアント装置に通知し、前記完了通知を通知した印刷ジョブを前記キューから削除することを特徴とする請求項5に記載された印刷制御方法。
【請求項７】
前記データ受信ステップは、前記印刷実行が指示された印刷ジョブにグループIDが設定されている場合、当該グループIDが設定された、前記キューに格納された印刷ジョブの印刷データを、順次、前記クライアント装置に要求し受信することを特徴とする請求項5または請求項6に記載された印刷制御方法。
【請求項８】
前記供給ステップは、前記クライアント装置によって、前記グループIDに対応する印刷指示情報が設定されている場合、前記グループIDが設定された印刷ジョブの印刷データに前記印刷指示情報を付加して、前記プリンタに供給することを特徴とする請求項7に記載された印刷制御方法。
【請求項９】
プリンタを制御して、請求項5から請求項8の何れかに記載された印刷制御を実現することを特徴とするコンピュータプログラム。
【請求項１０】
請求項9に記載されたコンピュータプログラムが記録されたことを特徴とするコンピュータが読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークを介して接続されたクライアント装置の印刷ジョブを処理するプリンタの印刷制御に関する。
【背景技術】
【０００２】
印刷システムにおける印刷順序の制御は、クライアントからプリンタに対するジョブの投入順序に依存する。従って、同じ印刷属性のジョブを連続印刷してプリンタのスループットを向上するには、クライアントのジョブの優先順位を決定する手段により、ジョブの投入順序を制御する必要がある。このような方式によれば、あるクライアントから投入するジョブの順序変更が可能になる。しかし、複数のクライアントから投入されるジョブの順序を制御するには、ジョブの順序を制御するサーバの設置が必要である。
【０００３】
一方、プリンタ側でジョブの順番を制御する場合、プリンタは、ジョブを一旦スプールする。しかし、カラードキュメントの普及に伴い印刷ジョブのデータサイズが増大し、プリンタのスプール/ジョブ保存領域が不足ぎみである。このため、印刷（実行順序）管理対象のジョブ数が不足したり、プリンタに保存可能ジョブの数が不足するなどの問題が発生する。プリンタの資源（例えばハードディスク）の拡張は、コストやデバイスの構造面から限界があり、スプール/ジョブ保存領域の劇的な拡大は困難である。
【０００４】
また、ジョブ情報を送付し、オペレータが予め保持されているコンテンツとジョブ情報の組み合わせ操作を行った後、印刷を行うシステムが考案されている。しかし、コンテンツとジョブ情報の組み合わせにオペレータが介在し、コンテンツは予めコンテンツサーバなどに保持しておく必要があり、決して操作性がよいとは言えない。
【０００５】
従って、操作性を低下させずに、プリンタのスプール/ジョブ保存領域の不足を防ぐことが望まれる。
【０００６】
【特許文献１】特開平11-053149号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明は、プリンタのスプール/ジョブ保存領域の不足を防ぐことを目的とする。
【課題を解決するための手段】
【０００８】
本発明は、前記の目的を達成する一手段として、以下の構成を備える。
【０００９】
本発明にかかる印刷制御装置は、ネットワークを介して接続されたクライアント装置の印刷ジョブを処理するプリンタの印刷制御装置であって、前記クライアント装置から印刷データの実体を含まない印刷ジョブを受信するジョブ受信手段と、前記受信手段が受信した印刷ジョブをキューに格納して管理する管理手段と、前記キューに格納された印刷ジョブのジョブリストに含まれる印刷ジョブの順番を変更する変更手段と、前記ジョブリストに含まれる印刷ジョブの印刷実行指示を受けると、前記ジョブリストに含まれる印刷ジョブの印刷データを前記クライアント装置に要求する要求手段と、前記クライアント装置から印刷データを受信するデータ受信手段と、前記データ受信手段が受信した印刷データを前記プリンタに供給する供給手段とを有することを特徴とする。
【００１０】
本発明にかかる印刷制御方法は、ネットワークを介して接続されたクライアント装置の印刷ジョブを処理するプリンタの印刷制御方法であって、前記クライアント装置から印刷データの実体を含まない印刷ジョブを受信するジョブ受信ステップと、前記受信ステップで受信した印刷ジョブをキューに格納して管理する管理ステップと、前記キューに格納された印刷ジョブのジョブリストに含まれる印刷ジョブの順番を変更する変更ステップと、前記ジョブリストに含まれる印刷ジョブの印刷実行指示を受けると、前記ジョブリストに含まれる印刷ジョブの印刷データを前記クライアント装置に要求する要求ステップと、前記クライアント装置から印刷データを受信するデータ受信ステップと、前記データ受信ステップで受信した印刷データを前記プリンタに供給する供給ステップとを有することを特徴とする。
【発明の効果】
【００１１】
本発明によれば、プリンタのスプール/ジョブ保存領域の不足を防ぐことができる。
【発明を実施するための最良の形態】
【００１２】
以下、本発明にかかる実施例の印刷制御を図面を参照して詳細に説明する。
【実施例１】
【００１３】
［印刷システムの構成］
図1は実施例のプリントシステムの構成例を示すブロック図である。
【００１４】
プリントシステムは、ネットワーク106を介して相互接続された、情報処理装置（以下「クライアント装置」または「クライアント」と呼ぶ）101〜103と、印刷装置としてのネットワークプリンタ（以下「プリンタ」と呼ぶ）104〜105を有す。なお、プリントシステムが含む装置間の通信は、ケーブルを利用した有線通信でもよいし、電波や光を利用した無線通信でもよい。また、クライアント101〜103は、典型的にはパーソナルコンピュータ(PC)である。
【００１５】
クライアント101〜103は、印刷制御プログラムを実行し、プリンタ104〜105を管理する機能を有する。さらに、ネットワーク106で使用されるファイルを蓄積する機能、ネットワーク106の使用状態を監視する機能を有する。また、クライアント101〜103は、印刷ジョブを作成し、プリンタ104〜105のスケジューラにスケジュール要求を発行する機能、プリンタ104〜105のスケジューラの指示により印刷データを含む印刷ジョブの転送を開始する機能を有する。
【００１６】
プリンタ104〜105は、クライアント101〜103から印刷データを含む印刷ジョブを受信し、受信した印刷ジョブを解析して印刷処理を実行する。さらに、印刷ジョブの状態や順序の制御が可能な印刷指示表示機能をもつ。プリンタ104〜105として、電子写真方式のレーザビームプリンタ、インクジェットプリンタ、熱転写プリンタなど、様々な方式の印刷装置を採用することができる。
【００１７】
また、プリンタ104〜105は、複数のクライアント101〜103からのスケジュール要求を受け付け、受け付けたスケジュール要求に対応する印刷ジョブの順序を決定する。そして、印刷ジョブの転送を指示する機能、受信した印刷ジョブやプリンタエンジンの状態を監視して、印刷処理の終了やプリンタの状態をクライアント101〜103に通知する機能を有する。
【００１８】
［クライアントのハードウェア構成］
図2はクライアント101〜103用のPCの構成例を示すブロック図である。
【００１９】
図2において、CPU 200は、RAM 202をワークメモリとして、ROM 201、ハードディスク(HD) 205に格納されたソフトウェアを実行し、システムバス208を介して装置全体を制御する。なお、ROM 201は、基本I/Oシステム(BIOS)などのプログラムが格納する。また、HD 205は、オペレーティングシステム(OS)、各種ドライバ、フォントデータ、アプリケーションプログラムとそれに関係するテンプレートや各種データ、後述する印刷制御プログラムなどを格納する。
【００２０】
ディスクドライブ203は、CD-ROMのような記憶媒体204からデータを読み込む手段で、記憶媒体204に格納されたプログラムやデータなどをRAM 202やHD 205にロードする際に使用される。なお、記憶媒体204はCD-ROMに限らず、CD-R、CD-RW、PCカード、DVD、メモリカード、MOなど任意である。
【００２１】
また、CPU 200は、印刷データのスプールにHD 205を利用する。なお、クライアント101〜103におけるスプール機能はクライアントスプーラと呼び、プリンタサーバにおけるスプール機能はサーバスプーラと呼ぶことにする。
【００２２】
また、CPU 200は、ディスプレイ207にユーザインタフェイス、アプリケーションソフトの動作状態、プリンタの動作状態などを表示する。CPU 200は、キーボード206や図示しないマウスを介して、ユーザのクライアントに対する指示や、オペレータや管理者のプリンタサーバに対する指示を入力する。
【００２３】
インタフェイス209は、USBやIEEE1394などのシリアルバスインタフェイス、ネットワークインタフェイスを備える。CPU 200は、インタフェイス209を介して他のクライアントやプリンタ105などと通信し、データの送受信を行う。
【００２４】
［印刷制御プログラム］
図3はRAM 202のメモリマップの一例を示す図である。
【００２５】
例えば、プリンタ制御プログラム303が、記憶媒体204からRAM 202にロードされ、実行可能となった状態の一例を示している。例えば、RAM 202の下位アドレスから順にBIOS 301、OS 302（各種ドライバを含む）、印刷制御プログラム303とその関連データ304が配置され、残りのメモリ領域はワークエリア305に利用される。
【００２６】
BIOS 301は、コンピュータの電源がオンされると、ROM 201からRAM 202に読み込まれる。CPU 200はBIOS 301を実行することで、HD 205に格納されたOS 302をRAM 202にロードし実行する。つまり、BIOS 301はイニシャルプログラムローダ(IPL)としての機能を有する。
【００２７】
以下では、印刷制御プログラム303を記憶媒体204からRAM 202にロードして実行する例を説明するが、印刷制御プログラム303をHD 205にインストールして、HD 205からRAM 202にロードしてもよい。あるいは、印刷制御プログラム303をROM 201に格納して、印刷制御プログラム303の格納領域がメインメモリの一部になるように構成してもよい。この場合、印刷制御プログラム303は、CPU 200から直接（言い替えればRAM 202にロードせずに）で実行することができる。
【００２８】
クライアント101〜103において、印刷制御プログラムは、印刷データを含む印刷ジョブの転送、印刷ジョブの実行先（プリンタ）の変更指示、印刷順序の変更指示をするための制御プログラムである。
【００２９】
図4は記憶媒体204のメモリマップの一例を示す図である。
【００３０】
図4において、ボリューム情報401は記憶媒体204自体の情報を示す。ディレクトリ情報402は、記憶媒体204に格納されたプログラムやデータの格納位置を示す。記憶媒体204には、印刷制御プログラム403とその関連データ404などが格納されている。
【００３１】
［プリンタのハードウェア構成］
図5はプリンタ104のハードウェア構成例を示すブロック図である。なお、プリンタ105もほぼ同様のハードウェア構成を有する。
【００３２】
プリンタ104は、大別して、印刷制御装置であるプリンタサーバ520と、プリンタ制御装置であるコントローラ519から構成される。
【００３３】
プリンタサーバ520のCPU 501は、RAM 502をワークメモリとして、書換可能なROM 503に記憶された制御プログラムに基づき、システムバス504に接続された各構成を制御する。ネットワークコントローラ(LANC) 505は、ネットワーク106に接続されたクライアント101〜103などの外部機器と所定の通信プロトコルを用いて通信を行う。CPU 501は、外部機器から受信した印刷データやプリンタ制御命令などを含む各種データを統括的に制御し、拡張インタフェイスコントローラ(EXPC) 507を介して接続されるコントローラ519に対して適切なデータ転送制御を行う。また、CPU 501は、表示部(LED) 506を利用して、プリンタサーバ520の動作状態などを表示する。例えば、LANC 505とネットワーク106の電気的な接続状態(LINK)や、通信モード（10Baseや100Base、全二重、半二重など）の状態をLEDの点滅パターンや色で示す。
【００３４】
プリンタサーバ520とコントローラ519を接続する拡張インタフェイス517は、図示しないコネクタで構成されている。拡張インタフェイス517の構成により、プリンタサーバ520をプリンタ104に着脱可能に装着することができる。
【００３５】
コントローラ519のCPU 508は、RAM 514をワークメモリとして、ROM 509に記憶された制御プログラムやリソースデータなどに基づき、システムバス511に接続された各構成を制御する。また、ディスクコントローラ(DKC) 515を介して接続される外部メモリ510に記憶された制御プログラムやリソースデータを利用することもできる。また、RAM 514で、図示しない増設ポートに接続されるオプションRAMにより、記憶容量を増加することができる。
【００３６】
CPU 508は、ラスタコントローラ512を制御して、EXPC 513を介してプリンタサーバ520から入力される印刷データをレンダリングし、レンダリングした画像の画像信号をプリンタエンジン516に出力する。プリンタエンジン516は、画像信号に応じた画像を記録媒体に印刷する。
【００３７】
操作パネル（操作部）518は、プリンタ104の動作モードの設定、印刷データの取り消し、ジョブの印刷順序などをユーザが指示するための操作ボタンや、プリンタ104の動作状態を示す液晶パネルやLEDなどを備える。CPU 508は、操作パネル518から入力されるユーザ指示に応じてプリンタ104の設定や動作を制御し、プリンタ104の設定状態や操作状態を操作パネル518に表示する。
【００３８】
［クライアントのソフトウェア構成］
図6はクライアント101におけるソフトウェア構成例を示すブロック図で、アプリケーション601が発行した描画コマンドを含む印刷ジョブをどのように処理するかを示している。なお、図6に示す各構成は、図2に示すCPU 200の処理によって実現される。また、クライアント102〜103もほぼ同様のソフトウェア構成を有する。
【００３９】
ワードプロセッサソフトウェアなど一般的なアプリケーション601は、ユーザから印刷を指示されると、OSを介して一連の描画コマンドを生成し、生成した描画コマンドをPDLドライバ602に渡す。なお、描画命令としては、Windows（登録商標）におけるDDI (device drive interface)関数やGDI (graphic device interface)関数が知られている。なお、OSはWindows（登録商標）に限定されるわけではなく、描画命令を備えるOSであればよい。
【００４０】
描画コマンドを受け取ったPDLドライバ602は、一連の描画コマンドに基づきプリンタが解釈可能なページ記述言語(PDL)のようなプリンタ記述言語で記述されたデータファイル（以下「PDLファイル」と呼ぶ）を含む印刷ジョブを生成する。PDLドライバ602は、生成した印刷ジョブをスプーラ603に渡す。なお、PDLドライバ602は、PDLに限らず、BDL (band description language)データや、圧縮ビットマップデータを生成してもよい。あるいは、アプリケーション601とOSにより、PDLドライバ602のようなプリンタドライバを介さずに、印刷データを生成することも可能である。
【００４１】
スプーラ603は、ユーザがユーザインタフェイスを介して選択指示したポートモニタ604に印刷ジョブを渡し、プリンタ104に送信させる手順aを実行する。なお、以下では、ユーザが予めジョブ制御プリントサービス605に印刷データを転送するポートモニタ604を指定して、印刷を指示したとして説明する。また、PDLドライバ602のユーザインタフェイスを介してユーザが設定した記録紙サイズやステープル指示などの印刷指示情報もポートモニタ604に送信される。ポートモニタ604は、ジョブ制御プリントサービス605に対して印刷ジョブおよび印刷指示情報の送信bを実行する。
【００４２】
ジョブ制御プリントサービス605は、受信した印刷ジョブをHD 205にスプールして管理し、プリンタ104の状態を管理する機能を備える。また、プリンタ104から通知されるプリンタ状態やジョブ状態などを示す情報を管理し、プリンタ104に対して所定の命令を発行する機能も備える。これは、複数のプリンタ104〜105のデバイス情報やジョブ情報を管理する機能に相当する。そして、印刷データを含む印刷ジョブをプリンタ104に送信する前に、プリンタ104の印刷順序管理機能にスケジュール要求cを発行する。そして、印刷の順番に達するとプリンタ104から発行される印刷指示dに従い、プリンタ104に印刷データを含む印刷ジョブeを送信する。
【００４３】
プリンタ104は、印刷ジョブの印刷処理が完了すると、印刷の完了通知fをジョブ制御プリントサービス605に通知する。また、プリンタ状態fを通知する。
【００４４】
プリントマネージャ607は、印刷ジョブの操作を行うユーザインタフェイスを提供するプログラムである。つまり、ユーザが印刷指示した印刷ジョブのアーカイブ、アーカイブした印刷ジョブによる印刷、印刷済みジョブとしてアーカイブした印刷ジョブの再印刷、ジョブ制御プリントサービス605内における印刷ジョブの状態の調査などの機能をユーザに提供する。プリントマネージャ607は、ソフトウェアインタフェイスであるAPI (application program interface)を介して、ジョブ制御プリントサービス605と通信を行う。
【００４５】
プリントマネージャ607は、主に、ジョブ制御プリントサービス605が管理するプリンタ104〜105の状態情報をイベントとして取得する機能を備える。イベント通知の種別には、トナー残量が少ない、クライアントとデバイスの間の通信障害、メモリ不足、排紙トレイが満載状態などを示すエラー/警告通知、エラー状態から正常状態に復帰した旨を示す正常情報の通知などが想定される。ジョブ制御プリントサービス605は、ネットワーク106を介して通信可能なプリンタ104〜105を含む印刷装置の印刷実行中、電力制御状態、障害情報（紙ジャムやトナー不足）などを示すステータスを受信する機能を備える。
【００４６】
さらに、プリントマネージャ607は、プリンタ104〜105などのデバイスを指定したイベントをジョブ制御プリントサービス605に発行する。ジョブ制御プリントサービス605は、発行されたイベントに基づきデバイスのステータスを取得し認識して、認識結果に基づく情報をプリントマネージャ607に通知する。
【００４７】
［印刷ジョブの流れ］
図7はアプリケーション601からプリンタ104〜105までの印刷ジョブの流れを説明する図である。
【００４８】
概念的には、図7に示すように、PDLドライバ602、スプーラ603およびポートモニタ604は、プリンタ104〜105ごとに用意されている。これらをまとめてプリントシステム700と称する場合がある。
【００４９】
ジョブ制御プリントサービス605は、プリンタ104〜105に対応する数のプリントキュー701および出力ポート702を備える。詳細は後述するが、ジョブ制御プリントサービス605は、テーブルを利用して、プリントキュー701や出力ポート702を管理する。
【００５０】
出力ポート702には、対応するプリンタのアドレス（例えばIPアドレス）またはDNS (domain name service)によって名前解決が可能なURL (uniform resource locator)が関連付けられる。このアドレスまたはURLに基づき、印刷ジョブのスケジュール要求先や送信先を特定して、印刷ジョブの送信（出力）を実行する。
【００５１】
アプリケーション601は、プリンタ104または105を指定して印刷指示を発行する。PDLドライバ602は、印刷指示に基づき印刷ジョブを生成する。ポートモニタ604は、印刷ジョブのジョブ情報をジョブ制御プリントサービス605に渡す。ジョブ制御プリントサービス605は、印刷ジョブ情報をプリントキュー701に保持して、出力ポート702に印刷ジョブの受け付けを指示する。出力ポート702は、印刷ジョブを受け付けると、出力ポート702に設定されたアドレスに該当するプリンタ104または105のスケジューラにスケジュール要求を発行する。
【００５２】
プリンタ104または105のスケジューラは、スケジューリング機能により、複数のクライアント101〜103から受信したスケジュール要求に対応する印刷ジョブのスケジューリングを行う。そして、印刷の順番に達した印刷ジョブの印刷指示を出力ポート702に発行する。印刷指示を受信した出力ポート702は、プリンタ104または105に印刷データを含む印刷ジョブを送信する。
【００５３】
［プリンタサーバのソフトウェア構成］
図8はプリンタサーバ520およびコントローラ519のソフトウェア構成例を示すブロック図である。
【００５４】
OS 801は、次の構成により、プリンタサーバ520の基本的なデータ入出力制御を統括する。ファイルシステム805は、プログラムやデータを記憶する記憶部808やライセンス記憶部809の入出力を制御する。拡張インタフェイスドライバ807は、拡張インタフェイス517を介したコントローラ519との通信を制御する。ネットワークインタフェイスドライバ806は、ネットワーク106を介してクライアント101〜103などの外部装置と通信を行う。
【００５５】
API 802は、プリンタサーバ520上で動作するユーザアプリケーション803や管理アプリケーション804などに対してOS 801が備える各種機能を提供する。なお、管理アプリケーション804は、プリンタ104または105の管理、ユーザアプリケーション803の登録、管理を行う。
【００５６】
API 802は、少なくとも次のAPIを備える。データ転送APIは、印刷データの送受信機能を提供する。リソース制御APIは、ビットマップ画像や表示メッセージなどのリソースデータの入出力を制御する。プリンタ制御APIは、プリンタの再起動、設定値の初期化や設定などを制御する。ジョブ制御APIは、印刷ジョブの取り消しや再印刷指示などを制御する。プリンタサーバ制御API、プリンタサーバ520の再起動、設定値の初期化や設定、アプリケーションプログラム803の起動、登録、削除を行う。ジョブ情報表示制御APIは、ジョブ管理キューやジョブ情報を操作パネル518に表示する表示制御を行う。
【００５７】
OS 812は、次の構成により、コントローラ519の各種処理や各種制御を統括する。エンジン制御部814は、プリンタエンジン516と通信しプリンタエンジン516の動作を制御する。ファイルシステム815は、機種に依存するリソースやプログラムを記憶する記憶部816やライセンス記憶部817の入出力を制御する。記憶部816は、プリンタサーバ520が参照するビットマップ画像やエラーメッセージなどの機種依存リソース、および、プリンタサーバ520上で稼働する機種依存アプリケーションプログラムなどを記憶する。
【００５８】
拡張インタフェイス制御部813は、拡張インタフェイス517を介したプリンタサーバ520との通信を制御する。
【００５９】
拡張インタフェイス制御部813は、少なくとも次のインタフェイス(I/F)を備える。データ転送論理I/Fは、制御種別ごとに印刷データの入出力を制御する。リソース制御論理I/Fは、機種依存リソース/プログラム記憶部816が記憶する各種データの入出力を制御する。プリンタ制御論理I/Fは、プリンタの再起動、設定値の初期化や設定などを制御する。ジョブ制御論理I/Fは、印刷ジョブの取り消しや再印刷指示などを制御する。ジョブ情報表示制御論理I/Fは、ジョブ管理キューやジョブ情報を操作パネル518に表示する表示制御を行う。拡張インタフェイス制御部813は、これら論理I/Fを介して、プリンタサーバ520の命令をOS 812に転送し、その結果をプリンタサーバ520に返す。
【００６０】
ネットワークインタフェイスドライバ806は、ネットワーク106を介してクライアント101〜103から通知を受信すると、ネットワーク制御部811に受信通知を送信する。ネットワーク制御部811は、受信通知により、どのクライアントからの通信かを判断し、当該通信を制御するソフトウェアモジュールである。
【００６１】
LPD/RAWモジュール810は、クライアントから印刷データを受信する際の通信プロトコルを制御するソフトウェアモジュールで、受信した印刷データをコントローラ519に渡す。
【００６２】
ユーザアプリケーション803は、コントローラ519の記憶部816またはプリンタサーバ520の記憶部808に格納される。プリンタ104または105が起動すると、OS 801は、記憶部808または816に格納されたアプリケーションに付加（または埋め込まれた）のライセンス情報と、ライセンス記憶部809やライセンス記憶部817が記憶するライセンス情報を比較する。そして、ライセンスが適正と判断すると、記憶部808または816に格納されたアプリケーションをプリンタサーバ520のRAM 502にロードする。
【００６３】
［スケジューラのソフトウェア構成］
図9はプリンタ104〜105のスケジューラ900のソフトウェア構成例を示すブロック図である。
【００６４】
スケジューラ900は、プリンタサーバ520上で稼働するユーザアプリケーション803の一つで、印刷ジョブのスケジューリングや管理機能を提供する。
【００６５】
通信接続管理部901は、API 802のデータ転送APIと、ネットワークインタフェイスドライバ806を介してクライアント101〜103と通信を行う。そして、印刷を要求するクライアント101〜103の接続状況を含むクライアント情報をクライアント管理キューで管理し、クライアント101〜103に通知すべき情報を管理する。
【００６６】
スケジュール管理部902は、クライアント101〜103から受け付けた印刷ジョブのスケジューリングを行うためのジョブ管理部903とデバイス管理部904を備える。ジョブ管理部903は、ジョブ管理キューを使用して、クライアント101〜103が発行したスケジュール要求や、クライアント101〜103の要求に従い印刷処理した印刷ジョブを管理する。
【００６７】
デバイス管理部904は、次の情報をイベントハンドラ905を経由してコントローラ519との間で通信する。コントローラ519が管理する、プリンタ状態や受け付けた印刷ジョブの状態。操作パネル518に表示するジョブ管理キューのジョブリスト。各印刷ジョブのジョブ情報の通知要求、および、操作パネル518によって印刷指示された印刷ジョブの情報など。デバイス管理部904は、コントローラ519から受信したイベントを通信接続管理部901やジョブ管理部903に通知する。
【００６８】
図10Aは通信接続管理部901が管理するクライアント管理キュー1001の一例を示す図である。
【００６９】
通信接続管理部901は、クライアント101〜103とのセッションが開始されると、該当するクライアントにクライアントIDを発行してクライアント管理キュー1001に登録する。勿論、セッションが終了し、クライアント101〜103との接続が切断されると、該当するクライアントIDを削除する。
【００７０】
図10Bは通信接続管理部901が管理するクライアント情報テーブル1002の構成例を示す図である。
【００７１】
通信接続管理部901は、クライアントID、接続クライアントのアドレス（例えばIPアドレス）、接続クライアントに対応するイベントの種類などの情報をクライアント情報テーブル1002に登録する。なお、イベントの種類は、コントローラ519が発行するデバイス状態のイベント、印刷ジョブ状態のイベントなどの種類を示す。
【００７２】
図11Aはスケジュール管理部902が管理するジョブ管理キュー1101の一例を示す図である。
【００７３】
スケジュール管理部902は、クライアント101〜103のスケジュール要求を受け付けると、印刷ジョブごとにジョブIDを発行してジョブ管理キュー1101に登録する。勿論、印刷ジョブの印刷処理が終了すると、該当するジョブIDを削除する。
【００７４】
図11Bはスケジュール管理部902が管理するジョブ情報テーブル1102の構成例を示す図である。
【００７５】
スケジュール管理部902は、スケジュール要求に付加された印刷ジョブ情報に基づきジョブ情報テーブル1102にジョブ情報を登録する。ジョブ情報は次の情報などを含む。
ドキュメント名
ジョブIDおよびグループID
印刷を指示したクライアントのユーザ名
頁数
印刷ジョブの状況を表すジョブ状態
クライアントから転送される印刷データに含まれるジョブデータID
印刷を指示したクライアントのアドレス（例えばIPアドレス）
印刷ジョブを印刷処理する際に必要な印刷指示情報
【００７６】
なお、グループIDは、印刷ジョブをグルーピングしたグループジョブを示すが、グルーピングされていない印刷ジョブのグループIDの値は例えばnullである。また、印刷指示情報は、部数、面付け設定、製本やステイプルなどのフィニッシング設定などの情報（以下「ジョブチケット」と呼ぶ）を含む。
【００７７】
また、ジョブ状態は、クライアント101〜103がスケジュール要求を発行してから、印刷ジョブがプリンタから削除されるまでの状況を表し、印刷待機中、スケジュールアップ、転送中、転送済み、印刷完了などの状態が存在する。
【００７８】
ジョブデータIDは、印刷データに含まれる印刷データを示すIDで、コントローラ519内のジョブ状態の通知などに付加される。
【００７９】
［印刷ジョブの処理シーケンス］
図12は、印刷ジョブを受け付けたジョブ制御プリントサービス605がプリンタ104または105のスケジューラ900と接続し、スケジュール要求を発行して、プリンタ104または105が印刷処理を終了するまでの処理シーケンスを示す図である。
【００８０】
ジョブ制御プリントサービス605は、印刷ジョブを受け付けると、ケジューラ900とのセッションを開始する(S121)。そして、クライアントの情報を通知する接続要求コマンド(S122)、ジョブ/デバイス状態の通知を依頼するためのイベント登録(S123)、スケジューラ900が管理するジョブ情報を取得するためのジョブリスト取得コマンド(S124)を発行する。
【００８１】
スケジューラ900は、接続要求を受信すると(S122)、クライアントIDをクライアント管理キュー1001に登録し、クライアント情報をクライアント情報テーブル1002に登録する。そして、イベント登録を受信すると(S123)、当該クライアントのクライアント情報としてイベントの種類を登録する。また、ジョブリスト取得コマンドを受信すると(S124)、ジョブ管理キュー1101に登録されたジョブリストを返信する。
【００８２】
次に、ジョブ制御プリントサービス605は、印刷を予約するためにスケジュール要求を発行する(S125)。
【００８３】
スケジューラ900は、スケジュール要求を受信すると(S125)、ジョブIDをジョブ管理キュー1101に登録し、ジョブ情報をジョブ情報テーブル1102に登録する。そして、後述する処理によって、印刷ジョブの処理順が決定すると、当該印刷ジョブに対するスケジュールアップ通知を発行して(S126)、ジョブ制御プリントサービス605に印刷データを含む印刷ジョブの送信開始を促す。また、スケジュールアップ通知を発行すると(S126)、当該印刷ジョブのジョブ情報に含まれるジョブ状態を「スケジュールアップ」に更新する。
【００８４】
ジョブ制御プリントサービス605は、スケジュールアップ通知を受信すると(S126)、LPD/RAWモジュール810に対して印刷データの送信を開始し(S127)、送信が始まるとスケジューラ900に送信開始を通知する(S128)。
【００８５】
スケジューラ900は、送信開始通知を受信すると(S128)、当該印刷ジョブのジョブ情報に含まれるジョブ状態を「転送中」に更新する。
【００８６】
LPD/RAWモジュール810は、印刷データを受信するとコントローラ519に印刷データを供給（転送）する(S129)。コントローラ519はプリンタエンジン516を制御して印刷を開始し、印刷開始をジョブ状態の通知としてスケジューラ900に通知する(S130)。
【００８７】
スケジューラ900は、印刷開始を示すジョブ状態の通知を受信すると(S130)、当該印刷ジョブのクライアントのクライアント情報に含まれるイベントの種類の情報に基づき、印刷開始をジョブ状態の通知としてクライアントに通知する(S131)。
【００８８】
ジョブ制御プリントサービス605は、印刷データの送信が終了すると(S132)、スケジューラ900に送信終了を通知する(S133)。
【００８９】
スケジューラ900は、転送終了通知を受信すると(S133)、当該印刷ジョブのジョブ情報に含まれるジョブ状態を「転送済み」に更新する。
【００９０】
LPD/RAWモジュール810は、印刷データの転送終了をコントローラ519に通知する(S134)。コントローラ519は、印刷処理を終了すると、印刷完了をジョブ状態の通知としてスケジューラ900に通知する(S135)。
【００９１】
スケジューラ900は、印刷完了を示すジョブ状態の通知を受信すると(S135)、当該印刷ジョブのクライアントのクライアント情報に含まれるイベントの種類の情報に基づき、印刷完了をジョブ状態の通知としてクライアントに通知する(S136)。
【００９２】
ジョブ制御プリントサービス605は、印刷完了の通知(S136)により、印刷ジョブが完了したことを認識すると、プリンタ104または105からの通知が不要になる。そこで、印刷ジョブの状態などの通知を解除するために、イベント登録の解除要求を発行する(S137)。
【００９３】
スケジューラ900は、イベント登録の解除要求を受信すると(S137)、当該クライアントのクライアント情報に含まれるイベントの種類をイベント非通知を示す情報に更新する。
【００９４】
その後、ジョブ制御プリントサービス605は、スケジューラ900との接続を切断するために、切断要求を発行し(S138)、セッションを終了する。
【００９５】
スケジューラ900は、切断要求を受信すると(S138)、クライアント管理キュー1001から該当するクライアントIDを削除し、当該クライアントとのセッションを終了する(S139)。
【００９６】
［印刷処理の流れ］
図13は印刷処理の流れを示すフローチャートである。
【００９７】
ジョブ制御プリントサービス605は印刷ジョブを受け付ける(S1301)。印刷ジョブの受付方法には、ジョブ制御プリントサービス605の管理下にあるアーカイブジョブから受け付ける方法、印刷済みジョブリストから受け付ける方法、アプリケーション601から受け付ける方法などがある。
【００９８】
アーカイブジョブは、ジョブ制御プリントサービス605が受け付けた印刷ジョブを印刷せずに、一旦、HD 205に保存した印刷ジョブである。ユーザが、プリントマネージャ607を利用して、アーカイブジョブのジョブリストから印刷ジョブを選択することで、印刷ジョブの受け付け(S1301)が行われる。
【００９９】
印刷済みジョブリストに含まれる印刷ジョブは、既に印刷が完了しているが、所定期間、HD 205に保持されている印刷ジョブである。アーカイブジョブと同様に、ユーザが印刷済みジョブリストから印刷ジョブを選択することで、印刷ジョブの受け付け(S1301)が行われる。なお、印刷済みジョブリストに含まれる印刷ジョブには、前回印刷時に使用した印刷指示情報が付加されている。
【０１００】
次に、ジョブ制御プリントサービス605は、受け付けた印刷ジョブに印刷指示情報を付加する(S1302)。既に印刷指示情報が付加されている印刷ジョブについては、必要があれば、その印刷指示情報を変更する。印刷指示情報は、印刷部数や片面/両面印刷の指示、製本面付け、多面付けなどの面付け設定、パンチ、ステイプルなどのフィニッシング設定、および、カラープロファイルなどの画像処理情報を含む。印刷指示情報は、印刷ジョブに対応するジョブ情報の一つとしてHD 205に格納される。
【０１０１】
次に、ジョブ制御プリントサービス605は、受け付けた印刷ジョブのスケジュール要求を発行し、印刷ジョブ情報をスケジューラ900に通知する(S1303)。
【０１０２】
一方、スケジューラ900は起動すると、スケジューラ900を介さずに、言い替えれば印刷を予約せずに、直接、LPD/RAWモジュール810に印刷データが転送されることを防ぐ処置を行う。つまり、外部の機器（任意のクライアント）から印刷要求や印刷データを受信しないようにネットワーク制御部811を設定する(S1310)。この設定により、ネットワーク制御部811は、外部の機器のアドレス（例えばIPアドレス）に基づき、印刷要求や印刷データを送信するための接続要求を拒否する（以下「ブロック」と呼ぶ）。
【０１０３】
スケジューラ900は、スケジュール要求を受信すると(S1311)、ジョブ管理部903により、ジョブ管理キュー1101にジョブIDを登録し、ジョブ情報テーブル1102にジョブ情報を登録する(S1312)。なお、ジョブ情報は、スケジュール要求とともに通知された印刷ジョブ情報から生成する。なお、ジョブ管理キュー1101のジョブIDの登録順は、スケジュール要求を受け付けた順になる。
【０１０４】
次に、スケジューラ900は、ジョブ管理キュー1101の登録情報に基づき操作パネル518にジョブリストを一覧表示し、オペレータによる印刷ジョブの選択と印刷の実行指示があったか否かを判定する(S1313)。なお、オペレータは、印刷を実行する印刷ジョブをジョブリストから選択し、操作パネル518の印刷ボタンを押すことで、印刷の実行を指示する。スケジューラ900は、印刷の実行指示があった場合は処理をステップS1314へ進め、印刷の実行指示がなかった場合は処理をステップS1311に戻す。
【０１０５】
印刷の実行が指示された場合、スケジューラ900は、印刷の実行が指示された印刷ジョブを要求するクライアントからの印刷データの受信を許可する必要がある。そのために、当該クライアントのアドレス（例えばIPアドレス）に対するブロックを解除（部分解除）するようにネットワーク制御部811を設定する(S1314)。
【０１０６】
次に、スケジューラ900は、印刷の実行を指示された印刷ジョブに対するスケジュールアップの通知を行う(S1315)。詳細は後述するが、ジョブリストから選択された印刷ジョブのジョブIDに対応するジョブ情報を読み出してスケジュールアップを通知する。また、グループジョブが指定された印刷ジョブに関しては、グループIDに従い印刷データが送信されるように、順次、スケジュールアップ通知に関する処理を行う。その際、該当するジョブ情報に含まれるジョブ状態を「スケジュールアップ」に更新する。
【０１０７】
ジョブ制御プリントサービス605は、スケジュールアップ通知を受信すると(S1304)、受信したスケジュールアップ通知に対応する印刷ジョブの印刷データを送信する(S1305)。
【０１０８】
スケジューラ900は、スケジュールアップを通知した印刷ジョブの印刷データをLPD/RAWモジュール810が受信すると、コントローラ519を制御して印刷処理を実行する。そして、印刷処理が完了すると、印刷ジョブの完了を該当するクライアントに通知する(S1316)。その後、処理をステップS1310に戻し、再び、ネットワーク制御部811にブロックを設定する(S1310)。
【０１０９】
ジョブ制御プリントサービス605は、印刷完了通知を受信すると(S1306)、印刷が完了した印刷ジョブを印刷済みジョブリストに保存し(S1307)、処理をステップS1301に戻す。なお、印刷済みジョブリストには、印刷指示情報を付加した状態で印刷ジョブを保存する。
【０１１０】
なお、図13には、ジョブ制御プリントサービス605とスケジューラ900がそれぞれ連続した処理を実行するように記載した。しかし、ジョブ制御プリントサービス605は、印刷ジョブの受け付け、スケジュールアップ通知の受信待機、印刷データの送信などをそれぞれ並列に実行することが可能である。例えば、一件の印刷ジョブを受け付けから当該印刷ジョブが完了するまでの期間、他の印刷ジョブを受け付けて並列に処理することができる。同様に、スケジューラ600は、スケジュール要求の受信、印刷の実行指示の判定、印刷処理の実行などをそれぞれ並列に実行することが可能である。例えば、印刷処理を実行するとともに、スケジュール要求を受信して印刷ジョブのスケジューリングを行い、印刷の実行指示を判定することができる。
【０１１１】
●印刷の実行指示の判定
図14は印刷の実行指示を判定する処理(S1313)を示すフローチャート、図15A、15Bはジョブリストを説明する図である。
【０１１２】
スケジューラ900は、ジョブ管理キュー1101およびジョブ情報テーブル1102からジョブリストを取得して操作パネル518に、図15Aに一例を示すように、ジョブリストを表示する(S1401)。次に、ジョブリストのソートが指示されたか否かを判定する(S1412)。ジョブリストには、ジョブID、ジョブ名称、用紙サイズ、用紙種類、フィニッシングなどの印刷指示情報がジョブ属性として表示される。オペレータは、操作パネル518を操作してジョブ属性を指示することでジョブリストのソートを指示することができる。
【０１１３】
ソートが指示された場合、スケジューラ900は、オペレータが指示するジョブ属性の値により、ジョブリストをソートし(S1403)、図15Bに一例を示すように、ソート結果を表示する(S1404)。ソート方法としては、ジョブ属性の値が数値であれば数値の大小によるソート、ジョブ属性の値が文字であれば文字コードによるソートなどがあるが、詳細は省略する。
【０１１４】
次に、スケジューラ900は、オペレータによる印刷ジョブの選択を受け付ける(S1405)。オペレータは、例えば、ジョブリストの印刷ジョブに対応する行にスタイラスや指を触れることで、所望する印刷ジョブを選択する。なお、印刷ジョブの選択状態を示すため、図15Bに示すように、ジョブリストのジョブ選択列にマークを表示する。
【０１１５】
次に、スケジューラ900は、操作パネル518のキャンセルボタンが押されたか(S1406)、操作パネル518の印刷ボタンが押されたか(S1408)を判定する。キャンセルボタンが押された場合は、印刷ジョブの選択を解除して(S1407)、印刷の実行指示を判定する処理(S1313)を終了する。また、印刷ボタンが押された場合は、印刷ジョブの選択を記憶して(S1409)、印刷の実行指示を判定する処理(S1313)を終了する。また、何れのボタンも押されない場合は、処理をステップS1402に戻す。あるいは、所定時間、ソートまたは印刷ジョブの選択が指示されない場合は、図14には示さないが、印刷ジョブの選択を記憶せずに、印刷の実行指示を判定する処理(S1313)を終了する。
【０１１６】
●クライアントにおける印刷の実行指示
上記では、プリンタ104〜105の操作パネル518により、印刷ジョブを選択して、印刷の実行を指示する処理を説明した。以下では、クライアント101〜103において、ジョブ制御プリントサービス605とプリントマネージャ607を利用して、印刷ジョブを選択して印刷の実行指示する処理を説明する。
【０１１７】
図16はクライアント101〜103において印刷の実行指示を行う処理を示すフローチャートで、ジョブ制御プリントサービス605が実行する処理である。
【０１１８】
ジョブ制御プリントサービス605は、プリントマネージャ607を介してユーザから印刷ジョブの選択を指示されると(S1501)、ジョブリスト要求をスケジューラ900に発行する(S1502)。スケジューラは、ステップS1401と同様にジョブリストを取得して、ジョブリストをジョブ制御プリントサービス605に返す。ただし、この場合のジョブリストは、ジョブリストを要求したクライアントの印刷ジョブだけをジョブ管理キュー1101から抽出したものになる。
【０１１９】
ジョブ制御プリントサービス605は、受信したジョブリストをプリントマネージャ607に送って、ジョブリスト画面を表示させる(S1503)。
【０１２０】
図17はジョブリスト画面の一例を示す図である。ジョブリスト画面には、ドキュメント名、ジョブ状態、用紙サイズ、用紙種類、（ジョブ制御プリントサービス605またはスケジューラ900の）受付時刻などがジョブ属性として表示する。なお、操作パネル518に表示するジョブリストと同様に、ユーザはジョブ属性を指示することでジョブリストのソートが可能である。なお、図17は用紙サイズでソートされた状態を示している。
【０１２１】
次に、ジョブ制御プリントサービス605は、印刷ジョブの選択を受け付ける(S1504)。ユーザは、印刷ジョブに対応する各行の行頭に配置されたチェックボックスをチェックすることで、所望する印刷ジョブを選択する。
【０１２２】
次に、ジョブ制御プリントサービス605は、図17に示すグルーピングボタン1702が押されたか否かを判定する(S1505)。グルーピングボタン1702が押された場合は、選択された印刷ジョブにグループIDを設定し(S1506)、グルーピングした印刷ジョブ全体に新たに印刷指示情報を付加する(S1507)。
【０１２３】
次に、ジョブ制御プリントサービス605は、図17に示す属性変更ボタン1703が押されたか否かを判定する(S1508)。属性変更ボタン1703が押された場合は、グルーピングした印刷ジョブ全体に付加された印刷指示情報を変更する(S1509)。なお、図には示さないが既存の印刷指示情報を表示して変更の便宜を図る。
【０１２４】
次に、ジョブ制御プリントサービス605は、図17に示す印刷ボタン1701が押されたか否かを判定する(S1510)。印刷ボタン1701が押された場合は、印刷ジョブの選択情報、グルーピングが指示された場合はグループID、および、最新の印刷指示情報をスケジューラ900に送信して、ジョブ情報テーブルの更新を依頼する(S1511)。なお、スケジューラ900は、グループIDと印刷指示情報を対応付けて記憶する。そして、選択された印刷ジョブの印刷処理の実行を依頼し(S1512)、処理をステップS1501に戻す。
【０１２５】
また、キャンセルボタン1700が押された場合(S1513)、ジョブ制御プリントサービス605は、印刷ジョブの選択情報、グルーピングが指示された場合のグループID、および、最新の印刷指示情報を破棄する(S1514)。そして、処理をステップS1501に戻す。
【０１２６】
また、何れのボタンも押されない場合は、処理をステップS1504に戻す。
【０１２７】
●スケジューラの印刷処理
図18は印刷ジョブの印刷が指示された場合にスケジューラ900が実行する印刷処理を示すフローチャートである。
【０１２８】
スケジューラ900は、印刷が指示された印刷ジョブに対してスケジュールアップを発行し、当該印刷ジョブの印刷データを受信してスプールする(S1600)。
【０１２９】
次に、スケジューラ900は、印刷が指示された印刷ジョブがグループジョブを構成するか否かを判定する(S1601)。印刷が指示された印刷ジョブがグループジョブを構成する場合は、グループジョブを構成する印刷ジョブに対して、順次、スケジュールアップを発行し、印刷データを受信してスプールする(S1602)。なお、グループジョブを構成するか否かはジョブ情報テーブル1102のグループIDを参照すればよい。そして、グループジョブを構成するすべての印刷ジョブの印刷データをスプールしたか否かを判定し(S1603)、未了であれば処理をステップS1602に戻し、完了であれば処理をステップS1604へ進める。なお、印刷ジョブの結合方法は、既知の技術であり説明を省略する。
【０１３０】
次に、スケジューラ900は、スプールした印刷データに印刷指示情報を付加する(S1604)。グループジョブではない場合は、当該印刷ジョブのジョブ情報テーブル1102の印刷指示情報に従い印刷指示情報を付加する。また、グループジョブの場合はグループIDに対応する印刷指示情報に従い印刷指示情報を付加する。なお、印刷指示情報の付加方法にはJDF (job definition format)などを利用すればよい。
【０１３１】
次に、スケジューラ900は、印刷データをコントローラ519に送信して印刷処理を実行する(S1605)。そして、コントローラ519の印刷処理が終了すると、該当するクライアントに印刷完了を通知する(S1606)。ただし、グループジョブの場合は、グループジョブを構成するすべての印刷ジョブの印刷処理が終了した後、各印刷ジョブについて印刷完了を通知する。
【０１３２】
次に、スケジューラ900は、ジョブ管理キュー1101から印刷処理が完了した印刷ジョブに対応するジョブIDを削除し、印刷処理が完了した印刷ジョブに対応するジョブ情報テーブル1102を削除し(S1607)、処理を終了する。
【０１３３】
●ジョブ管理部の処理
図19はジョブ管理部903が実行するジョブ状態の更新およびジョブリストの送信処理を示すフローチャートである。
【０１３４】
ジョブ管理部903は、通信接続管理部901やデバイス管理部904から要求や通知を受信すると、デバイス管理部904からのジョブ状態通知か、通信接続管理部901からのジョブリスト要求かを判定する(S1701)。
【０１３５】
ジョブ状態通知の場合、ジョブ管理部903は、該当する印刷ジョブのジョブ情報テーブルに含まれるジョブ状態を更新する(S1702)。さらに、印刷完了の通知か否かを判定し(S1703)、印刷完了の通知以外であれば通信接続管理部901に印刷ジョブのジョブ状態を示すイベントを該当するクライアントに発行するよう指示し(S1704))、処理をステップS1701に戻す。
【０１３６】
印刷完了の通知を受信した場合、ジョブ管理部903は、ジョブ管理キュー1101から該当する印刷ジョブのジョブIDを削除する(S1705)。そして、通信接続管理部901に印刷ジョブの完了を示すイベントを該当するクライアントに発行するよう指示し(S1706)、処理をステップS1701に戻す。
【０１３７】
また、ジョブリスト要求を受信した場合、ジョブ管理部903は、ジョブリストを要求するクライアントのジョブリストを、ジョブ管理キュー1101およびジョブ情報テーブル1102から作成する(S1707)。そして、ジョブリストを当該クライアントに送信するように、通信接続管理部901に指示し(S1708)、処理をステップS1701に戻す。
【０１３８】
●デバイス管理部の処理
図20はデバイス管理部904が実行する状態通知の受信および通知処理を示すフローチャートである。
【０１３９】
デバイス管理部904は、スケジューラ900の起動後、イベントハンドラを経由してコントローラ519に対し、デバイス状態が変化した場合、印刷ジョブの状態が変化した場合、それらの状態を通知するようにイベント登録を行う(S1801)。
【０１４０】
次に、デバイス管理部904は、コントローラ519が発生したイベントをイベントハンドラ経由で受信すると、印刷ジョブのイベント（ジョブイベント）かデバイスのイベント（デバイスイベント）かを判定する(S1802)。ジョブイベントの場合は、ジョブ管理部903に当該イベントを通知する(S1803)。また、デバイスイベントの場合は、デバイス状態を記憶し(S1804)、通信接続管理部901に当該イベントを通知する(S1805)。
【０１４１】
デバイス管理部904は、上記の処理の後、処理をステップS1802に戻す。
【０１４２】
●通信接続管理部の処理
図21は通信接続管理部901が実行する要求、状態通知の受信および送信処理を示すフローチャートである。
【０１４３】
通信接続管理部901は、クライアント101〜103、デバイス管理部904、ジョブ管理部903から要求や通知を受信すると、要求や通知の種類を判定する(S1901)。
【０１４４】
クライアント101〜103の接続または切断要求の場合、通信接続管理部901は、接続要求か切断要求かを判定する(S1902)。接続要求ならば、クライアントIDを発行してクライアント管理キュー1001に登録し、当該クライアントのクライアント情報テーブル1002を生成する(S1903)。また、切断要求ならば、クライアント管理キュー1001から該当するクライアントのクライアントIDを削除する(S1904)。
【０１４５】
クライアント101〜103からのイベント登録の場合、通信接続管理部901は、当該クライアントのクライアント情報テーブル1002のイベントの種類に通知すべきイベントの種類を設定する(S1905)。なお、イベントの種類には、ジョブ状態の変化を通知するジョブイベント、デバイス状態の変化を通知するデバイスイベントなどがある。
【０１４６】
デバイス管理部904からのデバイスイベントやジョブ管理部903からのジョブイベントの場合、通信接続管理部901は、クライアント情報テーブル1002を参照して、当該イベントを通知するクライアントを抽出する(S1906)。そして、抽出したクライアントに当該イベントを送信する(S1907)。
【０１４７】
通信接続管理部901は、上記の処理の後、処理をステップS1901に戻す。
【０１４８】
［ジョブ制御プリントサービス］
ジョブ制御プリントサービス605は、ジョブ管理キュー2001によって複数の印刷ジョブを管理し、印刷ジョブのジョブ情報をジョブ情報テーブル2002によって管理する。
【０１４９】
図22Aはジョブ管理キュー2001の一例を示す図、図22Bはジョブ情報テーブル2002の構成例を示す図である。
【０１５０】
ジョブ制御プリントサービス605は、印刷ジョブを受け付けるとジョブIDを発行し、ジョブ管理キュー2001に登録する。そして、印刷ジョブに付加された印刷ジョブ情報に基づきジョブ情報テーブル2002にジョブ情報を登録する。ジョブ情報は次の情報などを含む。
ドキュメント名
ジョブIDおよびグループID
印刷を指示したユーザ名
頁数
印刷ジョブの状況を表すジョブ状態
印刷データに含めるジョブデータID
印刷を指示したプリンタのアドレス（例えばIPアドレス）
印刷ジョブを印刷処理する際に必要な印刷指示情報
【０１５１】
なお、グループIDは、印刷ジョブをグルーピングしたグループジョブを示すが、グルーピングされていない印刷ジョブのグループIDの値は例えばnullである。また、印刷指示情報は、部数、面付け設定、製本やステイプルなどのフィニッシング設定などの情報（ジョブチケット）を含む。
【０１５２】
また、ジョブ状態は、クライアント101〜103がスケジュール要求を発行してから、印刷ジョブがプリンタから削除されるまでの状況を表し、スプール中、印刷待機中、スケジュールアップ、転送中、転送済み、印刷完了などの状態が存在する。
【０１５３】
ジョブデータIDは、印刷データに含まれる印刷データを示すIDで、スケジューラ900からのジョブイベントに設定される情報である。
【０１５４】
また、ジョブ制御プリントサービス605は、プリンタ情報テーブル2101によってプリンタ104〜105を管理し、ポート情報テーブル2102によって出力ポート702を管理する。
【０１５５】
図23Aはプリンタ情報テーブル2101の一例を示す図、図23Bはポート情報テーブル2102の構成例を示す図である。
【０１５６】
プリンタ情報テーブル2101は、プリンタごと用意され、プリンタ名、プリンタドライバ名、例えば機種名のようなプリンタタイプなどの情報を含む。
【０１５７】
ポート情報テーブル2102は、プリンタにそれぞれ対応する出力ポート702ごとに用意され、ポート名、プリンタドライバ名、プリンタのアドレス（例えばIPアドレス）などを含む。
【０１５８】
●ジョブ制御プリントサービスの印刷処理
図24はジョブ制御プリントサービス605が実行する印刷処理を示すフローチャートである。
【０１５９】
ジョブ制御プリントサービス605は、ポートモニタ604から印刷ジョブを受け付けるか、スケジューラ900からスケジュールアップ通知を受信すると、それに応じて処理を分岐する(S2201)。
【０１６０】
印刷ジョブを受け付けた場合、ジョブ制御プリントサービス605は、ジョブIDを発行してジョブ管理キュー2001に登録し、ジョブ情報をジョブ情報テーブル2002に登録する(S2202)。
【０１６１】
次に、ジョブ制御プリントサービス605は、接続要求をプリンタ104または105に送信する(S2203)。前述したように、スケジューラ900は、クライアントの接続要求により、クライアントIDを発行し、クライアント管理キュー1001に登録する。以降、ジョブ制御プリントサービス605とスケジューラ900の間の通信が確立する。
【０１６２】
次に、ジョブ制御プリントサービス605は、スケジューラ900にイベント登録を要求する(S2204)。前述したように、イベント登録により、自クライアントの印刷ジョブの状態や、デバイス（プリンタ）の状態の変化を示す通知を受け取ることができる。
【０１６３】
次に、ジョブ制御プリントサービス605は、スケジューラ900にジョブリストを要求し取得する(S2205)。前述したように、ジョブリストとジョブイベントにより、スケジューラ900が管理する印刷ジョブの状況を把握することが可能になる。
【０１６４】
次に、ジョブ制御プリントサービス605は、印刷ジョブのスケジュール要求を発行する(S2206)。これにより、スケジューラ900は、当該印刷ジョブをジョブ管理キュー1101に登録する。なお、当該印刷ジョブの登録により、ジョブイベントが発生し、ジョブリストが交信される。この後、ジョブ制御プリントサービス605は、処理をステップS2201に戻す。
【０１６５】
ジョブ制御プリントサービス605は、スケジュールアップ通知を受信した場合(S2201)、スケジュールアップに対応する印刷ジョブの印刷データの送信を開始する(S2207)。続いて、スケジューラ900に印刷データの送信開始を通知する(S2208)。これにより、クライアントからプリンタへ印刷データが送信される。
【０１６６】
次に、ジョブ制御プリントサービス605は、印刷データの送信が終了すると、スケジューラ900に印刷データの送信終了を通知する(S2209)。そして、印刷ジョブの処理が完了すると、スケジューラ900から印刷完了通知を受信する(S2210)。その後、処理をステップS2201に戻す。
【０１６７】
●ジョブ制御プリントサービスの受信処理
図25はジョブ制御プリントサービス605が実行する受信処理を示すフローチャートである。
【０１６８】
ジョブ制御プリントサービス605は、スケジューラ900から受信があると、イベント通知の受信かジョブリストの受信かを判定する(S2301)。ジョブリストを受信した場合は、ジョブリストをプリントマネージャ607に送信して(S2302)、処理をステップS2301に戻す。なお、ジョブリストの受信にはジョブリストの更新も含まれる。
【０１６９】
また、イベント通知を受信した場合、ジョブ制御プリントサービス605は、印刷完了通知の受信かジョブ状態変更通知の受信かを判定する(S2303)。ジョブ状態変更通知を受信した場合は、該当する印刷ジョブのジョブ情報テーブル2002に含まれるジョブ状態を更新して(S2304)、処理をステップS2301に戻す。
【０１７０】
また、印刷完了通知を受信した場合、ジョブ制御プリントサービス605は、該当する印刷ジョブのジョブIDをジョブ管理キュー2001から削除する(S2305)。そして、ジョブ管理キュー2001にジョブIDが存在するか否かを判定する(S2306)。ジョブ管理キュー2001にジョブIDが存在すればスケジューラ900との通信が必要であるから、プリンタ104または105との接続を継続して（言い替えれば接続を切断せずに）、処理をステップS2301に戻す。
【０１７１】
また、ジョブ管理キュー2001にジョブIDが存在しない場合、ジョブ制御プリントサービス605は、スケジューラ900との通信が不要であるから、プリンタ104または105との接続を切断する処理を開始する。まず、スケジューラ900に依頼したイベント登録の解除をスケジューラ900に依頼する(S2307)。スケジューラ900は、この依頼に応じて、該当するクライアントのクライアント情報テーブル1002に含まれるイベントの種類の値を削除する。イベントの種類が登録されていない場合、スケジュ−ラ900が管理する印刷ジョブの状態や、デバイスの状態が変化してもイベント通知は発行されない。
【０１７２】
次に、ジョブ制御プリントサービス605は、スケジューラ900に接続の切断を要求する(S2308)。スケジューラ900は、この要求に従い、クライアント管理キュー1001から該当するクライアントのクライアントIDを削除する。
【０１７３】
次に、ジョブ制御プリントサービス605は、スケジューラ900とのセッションを切断し(S2309)、処理を終了する。
【０１７４】
このように、印刷ジョブの投入（スケジュール要求）時は、印刷ジョブの実体（印刷データ）はクライアント側にある。一方、プリンタ側は、スケジュール要求に対応するジョブIDをキューに格納し、スケジュール要求とともに受信したジョブ情報に基づき印刷ジョブの順序を変更することも可能である。そして、印刷ジョブを処理する際に、クライアントからプリンタへ印刷データが転送される。
【０１７５】
また、印刷ジョブの実体をプリンタに送信せずに、ジョブ情報だけをプリンタに通知するため、プリンタの処理を軽減することができる。従って、プリンタのユーザインタフェイスにジョブリストとジョブ情報を表示し、ジョブリストのソート、印刷ジョブの選択などを行った場合、レスポンスがよく、オペレータに軽快な作業を提供することができる。勿論、プリンタにスプールされた印刷ジョブだけでなく、クライアントにスプールされた印刷ジョブも対象になるから、プリンタのユーザインタフェイスで管理が可能な印刷ジョブの数を飛躍的に増すことができる。
【０１７６】
また、クライアントのユーザインタフェイスに、プリンタのキューに格納された印刷ジョブのジョブリストとジョブ情報を表示し、ジョブリストのソート、印刷ジョブの選択、グルーピング、印刷指示情報の変更などを行うことができる。従って、ユーザは、プリンタのユーザインタフェイスを操作することなく、軽快に作業を行うことができる。
【０１７７】
このように、たとえメモリ資源が小さいプリンタであっても、クライアントのメモリ資源を利用することで、メモリ資源の不足を補って印刷ジョブを管理することができる。つまり、クライアントのスプール領域（メモリ）を効率的に利用した印刷ジョブの管理および印刷処理を行って、プリンタのスプール/ジョブ保存領域（メモリ）の不足を防ぐことができる。その結果、効率的な印刷ワークフローを、より多くのユーザに提供して、印刷処理の利便性を向上させることができる。
【０１７８】
［他の実施例］
なお、本発明は、複数の機器（例えばホストコンピュータ、インタフェイス機器、リーダ、プリンタなど）から構成されるシステムに適用しても、一つの機器からなる装置（例えば、複写機、ファクシミリ装置など）に適用してもよい。
【０１７９】
また、本発明の目的は、上記実施例の機能を実現するソフトウェアを記録した記憶媒体（記録媒体）をシステムまたは装置に供給し、そのシステムまたは装置のコンピュータ（CPUやMPU）が前記ソフトウェアを実行することでも達成される。この場合、記憶媒体から読み出されたソフトウェア自体が上記実施例の機能を実現することになり、そのソフトウェアを記憶した記憶媒体は本発明を構成する。
【０１８０】
また、前記ソフトウェアの実行により上記機能が実現されるだけでなく、そのソフトウェアの指示により、コンピュータ上で稼働するオペレーティングシステム(OS)などが実際の処理の一部または全部を行い、それによって上記機能が実現される場合も含む。
【０１８１】
また、前記ソフトウェアがコンピュータに接続された機能拡張カードやユニットのメモリに書き込まれ、そのソフトウェアの指示により、前記カードやユニットのCPUなどが実際の処理の一部または全部を行い、それによって上記機能が実現される場合も含む。
【０１８２】
本発明を前記記憶媒体に適用する場合、その記憶媒体には、先に説明したフローチャートに対応するソフトウェアが格納される。
【図面の簡単な説明】
【０１８３】
【図１】実施例のプリントシステムの構成例を示すブロック図、
【図２】クライアント用のPCの構成例を示すブロック図、
【図３】RAMのメモリマップの一例を示す図、
【図４】記憶媒体のメモリマップの一例を示す図、
【図５】プリンタのハードウェア構成例を示すブロック図、
【図６】クライアントにおけるソフトウェア構成例を示すブロック図、
【図７】アプリケーションからプリンタまでの印刷ジョブの流れを説明する図、
【図８】プリンタサーバおよびコントローラのソフトウェア構成例を示すブロック図、
【図９】プリンタのスケジューラのソフトウェア構成例を示すブロック図、
【図１０Ａ】通信接続管理部が管理するクライアント管理キューの一例を示す図
【図１０Ｂ】通信接続管理部901が管理するクライアント情報テーブルの構成例を示す図、
【図１１Ａ】スケジュール管理部が管理するジョブ管理キューの一例を示す図、
【図１１Ｂ】スケジュール管理部が管理するジョブ情報テーブルの構成例を示す図、
【図１２】印刷ジョブの受け付けから印刷処理の終了までの処理シーケンスを示す図、
【図１３】印刷処理の流れを示すフローチャート、
【図１４】印刷の実行指示を判定する処理を示すフローチャート、
【図１５Ａ】ジョブリストを説明する図、
【図１５Ｂ】ジョブリストを説明する図、
【図１６】クライアントにおいて印刷の実行指示を行う処理を示すフローチャート、
【図１７】ジョブリスト画面の一例を示す図、
【図１８】印刷ジョブの印刷が指示された場合にスケジューラが実行する印刷処理を示すフローチャート、
【図１９】ジョブ管理部が実行するジョブ状態の更新およびジョブリストの送信処理を示すフローチャート、
【図２０】デバイス管理部が実行する状態通知の受信および通知処理を示すフローチャート、
【図２１】通信接続管理部が実行する要求、状態通知の受信および送信処理を示すフローチャート、
【図２２Ａ】ジョブ管理キューの一例を示す図、
【図２２Ｂ】ジョブ情報テーブルの構成例を示す図
【図２３Ａ】プリンタ情報テーブルの一例を示す図、
【図２３Ｂ】ポート情報テーブルの構成例を示す図、
【図２４】ジョブ制御プリントサービスが実行する印刷処理を示すフローチャート、
【図２５】ジョブ制御プリントサービスが実行する受信処理を示すフローチャートである。
【図１】
2008059372.tif 000003
【図２】
2008059372.tif 000004
【図３】
2008059372.tif 000005
【図４】
2008059372.tif 000006
【図５】
2008059372.tif 000007
【図６】
2008059372.tif 000008
【図７】
2008059372.tif 000009
【図８】
2008059372.tif 000010
【図９】
2008059372.tif 000011
【図１０Ａ】
2008059372.tif 000012
【図１０Ｂ】
2008059372.tif 000013
【図１１Ａ】
2008059372.tif 000014
【図１１Ｂ】
2008059372.tif 000015
【図１２】
2008059372.tif 000016
【図１３】
2008059372.tif 000017
【図１４】
2008059372.tif 000018
【図１５Ａ】
2008059372.tif 000019
【図１５Ｂ】
2008059372.tif 000020
【図１６】
2008059372.tif 000021
【図１７】
2008059372.tif 000022
【図１８】
2008059372.tif 000023
【図１９】
2008059372.tif 000024
【図２０】
2008059372.tif 000025
【図２１】
2008059372.tif 000026
【図２２Ａ】
2008059372.tif 000027
【図２２Ｂ】
2008059372.tif 000028
【図２３Ａ】
2008059372.tif 000029
【図２３Ｂ】
2008059372.tif 000030
【図２４】
2008059372.tif 000031
【図２５】
2008059372.tif 000032