(57)【要約】【課題】プルプリントシステムでは、プリンタの傍にプルしたジョブを制御／参照するＰＣが無くジョブ操作できず、一時停止、削除、移動や代行など、プリンタに転送されたジョブを制御する手段がない。【解決手段】プルプリント要求対象の印刷ジョブが既にプリンタでスケジュールされている場合には（Ｓ２５０４−Ｙ）、指示元のプリンタとジョブの送信先が一致していれば（Ｓ２５０４−Ｙ）、当該ジョブを中止し（Ｓ２５０６，２５０７）、一致していなければ指示元のプリンタに当該ジョブを移動する（Ｓ２５０９，２５１１）。【選択図】図２５
2008107921.tif 000002
【特許請求の範囲】
【請求項１】
印刷装置から印刷を起動可能な印刷ジョブを提供するプルプリントサーバであって、
一または複数の印刷ジョブを保持し、保持された印刷ジョブのうち印刷装置からの印刷開始要求に応じた印刷ジョブを印刷装置に送信するジョブ送信手段と、
印刷ジョブの変更要求を受信し、受信した変更要求および当該変更要求の対象となる印刷ジョブの状態に応じて、当該印刷ジョブの一時的な中断または中止または他のプリンタへの転送を行う要求処理手段と
を備えることを特徴とするプルプリントサーバ。
【請求項２】
前記変更要求の対象となる印刷ジョブが、前記印刷装置に送信されており、該印刷ジョブが送信されている印刷装置と、前記印刷ジョブの変更要求の発行元の印刷装置とが同一である場合には、前記要求処理手段は、前記印刷ジョブの変更要求に応じて、該当する印刷ジョブを中止または一時的に中断させることを特徴とする請求項１に記載のプルプリントサーバ。
【請求項３】
前記変更要求の対象となる印刷ジョブが、前記印刷装置に送信されており、該印刷ジョブが送信されている印刷装置と、前記印刷ジョブの変更要求の発行元の印刷装置とが同一でない場合には、前記要求処理手段は、前記印刷ジョブの変更要求に応じて、該当する印刷ジョブを前記変更要求の発行元の印刷装置に転送することを特徴とする請求項１に記載のプルプリントサーバ。
【請求項４】
前記プルプリントサーバは、前記印刷装置に対して転送前の印刷ジョブを、ユーザ識別情報と関連づけて保存するジョブ保存手段を更に備え、
前記要求処理手段は、前記変更要求とともに受信したユーザ識別情報に基づいて、変更要求の対象となる印刷ジョブを特定することを特徴とする請求項１に記載のプルプリントサーバ。
【請求項５】
印刷装置から印刷を起動可能な印刷ジョブを提供するためのプルプリントサーバの制御方法であって、
ジョブ送信手段が、一または複数の印刷ジョブを保持し、保持された印刷ジョブのうち印刷装置からの印刷開始要求に応じた印刷ジョブを印刷装置に送信するジョブ送信工程と、
要求処理手段が、印刷ジョブの変更要求を受信し、受信した変更要求および当該変更要求の対象となる印刷ジョブの状態に応じて、当該印刷ジョブの一時的な中断または中止または他のプリンタへの転送を行う要求処理工程と
を有することを特徴とするプルプリントサーバの制御方法。
【請求項６】
前記変更要求の対象となる印刷ジョブが、前記印刷装置に送信されており、該印刷ジョブが送信されている印刷装置と、前記印刷ジョブの変更要求の発行元の印刷装置とが同一である場合には、前記要求処理工程では、前記印刷ジョブの変更要求に応じて、該当する印刷ジョブを中止または一時的に中断させることを特徴とする請求項５に記載の方法。
【請求項７】
前記変更要求の対象となる印刷ジョブが、前記印刷装置に送信されており、該印刷ジョブが送信されている印刷装置と、前記印刷ジョブの変更要求の発行元の印刷装置とが同一でない場合には、前記要求処理工程では、前記印刷ジョブの変更要求に応じて、該当する印刷ジョブを前記変更要求の発行元の印刷装置に転送することを特徴とする請求項５に記載の方法。
【請求項８】
前記プルプリントサーバは、前記印刷装置に対して転送前の印刷ジョブを、ユーザ識別情報と関連づけて保存するジョブ保存工程を更に備え、
前記要求処理工程では、前記変更要求とともに受信したユーザ識別情報に基づいて、変更要求の対象となる印刷ジョブを特定することを特徴とする請求項５に記載の方法。
【請求項９】
請求項５乃至８のいずれか１項に記載の方法における各工程をコンピュータにより実行させるためのプログラム。
【請求項１０】
請求項５乃至８のいずれか１項に記載の方法における各工程をコンピュータにより実行させるためのプログラムを記憶したことを特徴とする記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プルプリントサーバとその制御方法に関する。
【背景技術】
【０００２】
一般的なプリントシステムでは、ホストコンピュータがイニシエータとなって印刷データをプリンタに送信し、プリンタにより印刷が実行される。これに対してプルプリントシステムと呼ばれるプリントシステムがある。プルプリントシステムでは、たとえば、オペレータが識別データを入力するための操作パネルがプリンタに備えられている。また、ホストコンピュータには、識別データが付加されたプリントデータが保存されている。プリンタにおいて識別データを入力すると、プリンタは、入力された識別データと一致する印刷データを持つ印刷ジョブをホストコンピュータから引き出して、その印刷ジョブを実行する（たとえば特許文献１等参照）。
【特許文献１】特開平１０−１６３５５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
このようなプルプリントシステムでは、プリンタのそばに実行中の印刷ジョブの送信元であるホストコンピュータがあるとは限らない。そのため、印刷の一時停止や削除、移動や代行など、プリンタに転送された印刷ジョブをその場で制御することができない場合がある。印刷ジョブを制御するためには、印刷ジョブの送信元のホストコンピュータで操作を行う必要があるが、印刷データの作成者と印刷指示者とが相異なる場合、印刷ジョブの送信元のホストコンピュータが分からないことがある。そのような場合には、印刷指示を行った者はいったん開始された印刷を制御することは困難であった。
【０００４】
本発明は上記従来例に鑑みてなされたものである。すなわち、デバイスの状況およびジョブの状況に応じて、プリンタから印刷ジョブの制御を行うことが可能となり、操作性を向上させることのできるプルプリントサーバとその制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００５】
上記目的を達成するために、本発明は以下の構成を備える。すなわち、印刷装置から印刷を起動可能な印刷ジョブを提供するプルプリントサーバであって、
一または複数の印刷ジョブを保持し、保持された印刷ジョブのうち印刷装置からの印刷開始要求に応じた印刷ジョブを印刷装置に送信するジョブ送信手段と、
印刷ジョブの変更要求を受信し、受信した変更要求および当該変更要求の対象となる印刷ジョブの状態に応じて、当該印刷ジョブの中断、中止または他のプリンタへの転送を行う要求処理手段とを備える。
【発明の効果】
【０００６】
本発明によれば、デバイスの状況およびジョブの状況に応じて、プリンタに接続された認証情報読み取り装置などを使用してジョブの制御を行うことが可能となり、プルプリントの操作性が向上する。
【発明を実施するための最良の形態】
【０００７】
＜システム構成＞
図１は、本発明の実施形態に係るプリントシステムの全体構成を示すブロック図である。本プリントシステムは、情報処理装置としてのサーバ（コンピュータ）１０１〜１０２と、印刷装置（プリントデバイス）としてのネットワークプリンタ１０３〜１０５と、クライアントＰＣ１０７とを含む。これらが互いに接続されてネットワークを構成している。
【０００８】
サーバ（コンピュータ）１０１〜１０２には、印刷制御プログラムが実行可能に格納されている。印刷制御プログラムは、本プリントシステムに含まれるネットワークプリンタ１０３〜１０５を管理する機能のほか、ネットワークで使用されるファイルを蓄積したり、ネットワークの使用状態を監視したりする機能を有する。具体的には、サーバ（コンピュータ）１０１〜１０２は印刷ジョブを作成する。そして、ネットワークプリンタ１０３〜１０５のエージェントからのプルプリント要求をもとに、ネットワークプリンタ１０３〜１０５のスケジューラに対してスケジュール要求を発行する機能を有する。さらに、ネットワークプリンタ１０３〜１０５のスケジューラからの指示により、印刷データの転送を開始する機能を有する。本実施形態でいう印刷制御プログラムは、図６に示すプルプリントサーバ６０５に該当する。
【０００９】
ネットワークプリンタ１０３〜１０５は、サーバ（コンピュータ）１０１〜１０２から、印刷データを含む印刷ジョブを受信し、受信した印刷ジョブを解析して印刷する物理的な装置としてのプリントデバイスである。ネットワークプリンタ１０３〜１０５としては、電子写真方式を採用したレーザービームプリンタやインクジェット方式を採用したインクジェットプリンタや熱転写方式を利用したプリンタ等、あらゆる方式の印刷装置を採用することができる。
【００１０】
また、ネットワークプリンタ１０３〜１０５は、複数のサーバ（コンピュータ）１０１〜１０２からの印刷要求を受け付け、受け付けた印刷要求の順序を決定し、印刷指示を発行する機能を有する。また、ネットワークプリンタ１０３〜１０５に転送された印刷ジョブ、ネットワークプリンタ１０３〜１０５の状態を監視し、印刷の終了やプリンタ状態をサーバ（コンピュータ）１０１〜１０２に通知する機能を有する。
【００１１】
クライアントＰＣ１０７は、たとえば文書処理アプリケーションなどを実行することで印刷対象となる文書データを作成する。また、作成した文書データをサーバ１０１，１０２に登録することができる。文書データからは印刷ジョブが作成されて、プルプリント要求に応じて出力される。
【００１２】
なお、本プリントシステムに含まれる装置間の通信は、イーサネット（登録商標）ケーブルなどを利用した有線通信でもよいし、電波や光などを利用した無線通信でもよい。
【００１３】
＜プリンタ及びサーバの構成＞
図２は、図１に示したサーバ（コンピュータ）１０１〜１０２のハードウェア構成を説明するブロック図である。
【００１４】
図２において、ＣＰＵ２００は、ＨＤ（ハードディスク）２０５に格納されているアプリケーションプログラム、プリンタドライバプログラム、ＯＳや印刷制御プログラム等を読出して実行する制御手段である。ＣＰＵ２００は、ＲＡＭ２０２にプログラムの実行に必要な情報、ファイル等を一時的に格納制御を行う。
【００１５】
ＲＯＭ２０１は、基本Ｉ／Ｏプログラム等のプログラム、文書処理の際に使用するフォントデータ、テンプレート用データ等の各種データを記憶する記憶手段である。ＲＡＭ２０２は、ＣＰＵ２００の主メモリやワークエリア等として機能する一時記憶手段である。  ＦＤ（フレキシブルディスク）ドライブ２０３は、後述する図５に示すように記憶媒体としてのＦＤ２０４に記憶されたプログラム等を本コンピュータシステムにロードするための記憶媒体読み込み手段である。なお、サーバ（コンピュータ）１０１〜１０２は、ＦＤドライブ２０３に代えて、或いはＦＤドライブ２０３と共に、他の記憶媒体読込手段を備えてもよい。他の記憶媒体としては、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＰＣカード、ＤＶＤ、ＩＣメモリカード、ＭＯ、メモリスティック等、コンピュータが読み取り可能なあらゆる記憶媒体が挙げられる。
【００１６】
ＨＤ２０５は、大容量メモリとして機能する外部記憶手段であり、アプリケーションプログラム、プリンタドライバプログラム、ＯＳ、印刷制御プログラム、及び関係プログラム等を格納している。さらに、スプール手段であるスプーラはここに確保される。なお、サーバ（コンピュータ）１０１〜１０２ではスプール手段としてスプーラが確保される。
【００１７】
キーボード２０６は、ユーザがサーバ（コンピュータ）１０１〜１０２に対して、デバイスの制御コマンドの命令等を入力指示するための指示入力手段である。
【００１８】
ディスプレイ２０７は、キーボード２０６から入力したコマンドや、プリンタ１０３〜１０５の状態等を表示する表示手段である。尚、実際にはサーバ１０１〜１０２上で稼動するオペレーティングシステムを介して表示手段に表示指示がなされ、このオペレーティングシステムに本印刷処理プログラムによりリソースファイルの表示指示が行われ、後述する各表示が実現される。システムバス２０８は、サーバ（コンピュータ）１０１〜１０２としてのコンピュータ内のデータの流れを司る。
【００１９】
またインターフェース２０９は、入出力手段であり、サーバ１０１〜１０２は、インターフェース２０９を介してネットワーク上の他の装置とのデータのやり取りを行う。
＜メモリマップ等の説明＞
図３は、図２に示したＲＡＭ２０２のメモリマップの一例を示す図であり、印刷制御プログラム３０３がＲＡＭ２０２にロードされ実行可能となった状態のメモリマップである。
【００２０】
印刷制御プログラム３０３及び関係データ３０４は、予めＦＤ２０４からＨＤ２０５にインストールされて、ＨＤ２０５からＲＡＭ２０２にロードするようにしてもよいしＦＤ２０４から直接ＲＡＭ２０２にロードして実行させてもよい。さらに、印刷制御プログラム３０３をＲＯＭ２０１に記憶しておき、これをメモリマップの一部となすように構成し、直接ＣＰＵ２００で実行することも可能である。また、以上の各装置と同等の機能を実現するソフトウェアをもって、ハードウェア装置の代替として構成することもできる。
【００２１】
印刷制御プログラム３０３は、サーバ１０１〜１０２においては、印刷データを転送したり、印刷ジョブの印刷先の変更を指示したり、印刷順序を変更したりする指示をするための制御を行う。
【００２２】
基本Ｉ／Ｏプログラム３０１は、装置（サーバ１０１〜１０２）の電源がＯＮされたときに、ＨＤ２０５からＯＳがＲＡＭ２０２に読み込まれ、ＯＳの動作を開始させるＩＰＬ（イニシャルプログラムローデイング）機能などを有しているプログラムである。
【００２３】
ＯＳ（オペレーティングシステム）３０２は、コンピュータの有する資源を管理する。印刷制御プログラム３０３は、本実施形態で説明するような手順を実行するプログラムである。関係データ３０４は、印刷制御プログラム３０３実行時に参照されるデータである。ワークエリア３０５は、ＣＰＵ２００が各種のプログラムを実行するための領域である。
【００２４】
図４は、図２に示したＦＤ２０４のメモリマップの一例を示す図である。図４において、データ内容４００はＦＤ２０４に記録された内容であり、データの情報を示すボリューム情報４０１と、ディレクトリ情報４０２と、印刷制御プログラム４０３と、その関係データ４０４を含んでいる。
【００２５】
＜コンピュータのハードウェア＞
図５は、本発明の実施形態に関わる印刷システムのハードウェア構成を説明するブロック図である。プリンタ５００は、ネットワークプリントサーバ５２０とプリンタコントローラ５１９という異なる２つの制御系で構成されている。ネットワークプリントサーバ５２０において、ネットワークプリントサーバ用ＣＰＵ５０１は、制御プログラムに基づいて外部装置であるサーバ６００から送られる印刷データやプリンタ制御命令等の各種データ送受信要求を統括的に制御する。また、拡張インタフェースコントローラ（ＥＸＰＣ５０７）を介して接続されるプリンタコントローラ５１９に対して適切なデータ転送制御を行う。サーバ６００は、ネットワークコントローラ（ＬＡＮＣ５０５）に接続されたローカルエリアネットワーク（ＬＡＮ５１２）上のサーバ１０１，１０２などのホストコンピュータ等である。これらサーバ６００とは所定のネットワーク通信プロトコルを用いて通信する。
【００２６】
ＲＡＭ５０２はＣＰＵ５０１の主メモリ、ワークエリア等の一時記憶領域をして用いられる。フラッシュＲＯＭ５０３には制御プログラムやデータが保存されている。ＬＥＤ５０６はネットワークプリントサーバの動作状態を示す表示部として用いる。ＬＥＤ５０６は、例えばネットワークコントローラ（ＬＡＮＣ５０５）とローカルエリアネットワーク（ＬＡＮ５１２）の電気的な接続状態や、ネットワーク通信モード等の各種動作状態を点滅パターンや色で示す。Ｉ／Ｏインターフェース５２１は、ホストコンピュータとローカル接続するためなどに使用される。本実施形態では使用しない。
【００２７】
さらにネットワークプリントサーバ５２０とプリンタコントローラ５１９とを繋ぐ拡張インターフェース５１７は、図示しないコネクタで構成されている。拡張インターフェース５１７は、ネットワークプリントサーバ５２０のみが着脱し、同じ構成を持つ別のプリンタ５００にネットワークプリントサーバ５２０を装着することも可能な構成となっている。
【００２８】
プリンタコントローラ５１９において、プリンタコントローラ用ＣＰＵ５０８は、制御プログラムやリソースデータ等に基づいて、システムバス５１１に接続される各種デバイスとのアクセスを統括的に制御する。ラスタコントローラ５２３は、拡張インタフェースコントローラ（ＥＸＰＣ５１３）を介して接続されるネットワークプリントサーバ５２０から受信される印刷データを基に、出力画像データを生成する。ラスタコントローラ５２３は生成した画像データをプリントエンジン５１６に対して出力する。制御プログラムやリソースデータは、ＲＯＭ５０９あるいはディスクコントローラ（ＤＫＣ５１５）を介して接続された外部メモリ５１０に記憶されている。
【００２９】
ＲＡＭ５１４は、ＣＰＵ５０８の主メモリ、ワークエリア等として機能するＲＡＭである。ＲＡＭ５１４は、図示しない増設ポートに接続されるオプションＲＡＭによりメモリ容量を拡張することができるように構成されている。
【００３０】
操作パネル（操作部）５１８は、プリンタ５００の動作モード等の設定や印刷データの取り消し等の操作を行うためのボタンと、プリンタ５００の動作状態を示す液晶パネルやＬＥＤ等の表示部とを有する。操作は液量パネルに重畳されたタッチパネルから行うこともできる。
【００３１】
プリンタエンジン５１６は既知の印刷技術を利用するものであり、好適な実施系として例えば電子写真方式（レーザービーム方式）やインクジェット方式、昇華方（熱転写）方式等が挙げられる。
【００３２】
＜サーバのソフトウェア構成＞
次に、本プリントシステムのサーバのソフトウェア構成について説明する。図６のサーバ６００は、サーバ１０１〜１０２におけるソフトウェア構成の一例を示す図である。それぞれの構成間の矢印は、アプリケーションから発行された描画コマンドを含む印刷ジョブが、どのように処理されるかを示す。また、各ブロックで示されたソフトウェア構成は、図２のＣＰＵ２００によって実行され、所望の機能を実現する。
【００３３】
通常、印刷アプリケーションプログラム６０１は印刷の指示を受け付けると、一連の描画コマンドをＯＳを介して生成する。ＯＳを介して生成された描画コマンドを受け取ったＰＤＬドライバ６０２は、一連の描画コマンドに基づいてネットワークプリンタ１０３〜１０５で解釈可能なＰＤＬファイルを含む印刷ジョブを生成する。なお、以下の説明ではＰＤＬドライバを例に説明を行うが、これに限定されるものではない。例えば、ＢＤＬ（Ｂａｎｄ  ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）や、圧縮ビットマップを作成するプリンタドライバ、或いは、アプリケーション及びＯＳによりプリンタドライバを介さずに印刷データを生成する形態などにも適用可能である。
【００３４】
また、本提案の印刷アプリケーション６０１は、プルプリントユーザの印刷ジョブを作成するアプリケーションである。印刷アプリケーション６０１は、プルプリントサーバ６０５で提供されるプルプリント用印刷ジョブを作成し、その印刷ジョブに該当するプルプリントユーザの識別情報を設定する機能を有する。印刷アプリケーション６０１は、ユーザ識別情報と印刷すべき印刷データの関係などの情報を、印刷アプリケーション６０１が連携しているデータベースやＷｅｂアプリケーションからの指示により保持することが可能である。
【００３５】
ＰＤＬドライバ６０２は、プリンタ５００（ネットワークプリンタ１０３〜１０５に相当する）へ印刷ジョブを送信するためにスプーラ６０３に渡す。
【００３６】
ここではＯＳをウィンドウズ（登録商標）と仮定しているので、スプーラ６０３はウィンドウズ（登録商標）スプーラである。ただし、本発明を適用するコンピュータのＯＳはウィンドウズ（登録商標）に限定されるものではなく、描画命令を備えるものであれば他のＯＳも適用可能である。
【００３７】
スプーラ６０３は、ユーザがユーザインターフェースを介して選択し指示したポートモニタ６０４に印刷ジョブを渡して、ネットワークプリンタ１０３〜１０５等のプリントデバイスに送信させる（矢印ａ）。ここでは、ユーザはあらかじめプルプリントサーバ６０５に印刷データを転送するポートモニタ６０４を指定して印刷を指示したものとして説明を進める。なお、プリントサーバ６０５にジョブを送信するポートモニタを特にジョブ制御ポートモニタと呼ぶことにする。また、プリンタドライバが提供するユーザインターフェースを介して設定された用紙サイズ、ステープル指示等の印刷設定情報も、ジョブ制御ポートモニタ６０４に送信される。ジョブ制御ポートモニタ６０４はプリントサーバ６０５に印刷ジョブ及び印刷設定情報を送信する（矢印ｂ）。プリントサーバ６０５は、印刷ジョブをごとに、たとえばジョブＩＤを関連づけて印刷データをハードディスク２０５に保存する。
【００３８】
印刷アプリケーション６０１が印刷指示を行う際には、その指示と共に印刷ジョブに関連付けられるべきユーザ識別情報を引き渡す。プルプリントサーバ６０５は、引き渡されたユーザ識別情報を印刷ジョブと関連づけて保存する。
【００３９】
プルプリントサーバ６０５は、印刷ジョブ及びデバイスの状態を管理する機能を備える。また、プリントデバイスから通知されるデバイス状態やジョブの状態などの情報を管理したり、また、プリントデバイスに対して所定の命令をする機能も備える。これは、複数のネットワークプリンタ１０３〜１０５のデバイス情報やジョブ情報を管理する機能に相当する。管理機能には、たとえばデバイスから取得した情報をデバイスに関連づけて保存し、要求に応じてそれを出力したり削除したりする機能を含む。
【００４０】
そして、プリンタ５００からのプルプリント要求（矢印ｄ）が来ると、プリンタ５００が持つ印刷ジョブの順序管理機能に対して印刷の要求（スケジュール要求）を発行する。順序管理機能に基づき順番が到来した場合には、プリンタ５００からの印刷指示により、ネットワークプリンタ１０３〜１０５に印刷データを送信する（矢印ｅ、ｇ）。
【００４１】
プリンタ５００は、印刷データの完了を確認すると印刷完了の通知をプルプリントサーバ６０５に通知したり、また、プリンタ５００の状態を通知する（矢印ｈ）。
【００４２】
プリントマネージャ６０７は、ユーザが、プルプリントサーバ６０５内部でプリントジョブがどのような状態にあるかを調べたり、プリントジョブを操作したりするためのユーザインターフェースを提供するプログラムである。プリントマネージャ６０７は、プルプリントサーバ６０５のソフトウェアのインターフェース（ＡＰＩ：Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍ  Ｉｎｔｅｒｆａｃｅ）を介して、プルプリントサーバ６０５と情報・指示をやり取りしている。
【００４３】
そして、プリントマネージャ６０７は、主に、プルプリントサーバ６０５が管理するネットワークプリンタ１０３〜１０５の状態情報をイベントとして取得する機能を備える。イベントの通知の種別としては、トナー残量が少なくなった警告、サーバとデバイスとの通信障害、メモリ不足、排紙トレイ満載などのエラー／警告情報の通知や、エラー状態から正常状態に復帰した正常情報の通知などが想定される。ここでのプルプリントサーバ６０５はネットワークを介して通信可能な各プリンタデバイス（印刷装置）の印刷実行中、電力制御状態、障害情報（紙ジャム）等のステータスの通知を受け付ける機能を備える。
【００４４】
更に詳細な処理としては、プリントマネージャ６０７がプルプリントサーバ６０５に対してデバイスを指定したイベントを発行する。プルプリントサーバ６０５は発行されたイベントに基づくデバイスのステータスを認識して、監視に基づく結果をプリントマネージャ６０９に通知する。
【００４５】
クライアントＰＣ６０８はジョブ登録アプリケーション６０９を備えており、不図示のプリンタドライバで作成された印刷ジョブを、サーバ６００のプルプリントサーバ６０５に送信する（矢印ｆ）。プルプリントサーバ６０５は、受信した印刷ジョブをプルプリント対象の印刷ジョブとしてハードディスク２０５に保存する。プルプリントサーバ６０５は、印刷ジョブの発行元がサーバ自身であるかクライアントであるかを区別することはない。
【００４６】
＜印刷ジョブの流れ＞
次に、図７を用いてアプリケーション６０１からプリントデバイスまでの印刷ジョブの流れについて説明する。ここで、図６と同じソフトウェア構成について同じ参照番号を付与しており、その機能については詳説しない。
【００４７】
図７に示すように、概念的には、ＰＤＬドライバ６０２、スプーラ６０３、ジョブ制御ポートモニタ６０４は、プリントデバイス６０７、６０７Ａごとに用意されている。ＯＳがウィンドウズ（登録商標）の場合には、これらをまとめてウィンドウズ（登録商標）プリントシステム７００と称する場合もある。
【００４８】
プルプリントサーバ６０５には、ＰＤＬドライバ１０２に対応する数のプリントキュー７０１、７０１Ａが含まれている。また、プリンタ５００、５００Ａからのプルプリント要求により決定した宛先のプリンタ５００、５００Ａに印刷データを送信するユニバーサル出力ポート７０２が含まれている。また、プリントキュー７０２、７０２Ａは、プルプリントサーバ６０５により、図１２に示すジョブ管理キュー１２０１の形式で印刷ジョブが管理されている。
【００４９】
印刷を行う場合、アプリケーション６０１は、印刷ジョブにユーザ識別情報を指定し印刷指示を発行する。この印刷指示に基づいてＰＤＬドライバ６０２によって生成された印刷ジョブがジョブ制御ポートモニタ６０４からプルプリントサーバ６０５に渡されると、その印刷ジョブ情報は、まずプリントキュー７０１に保持される。
【００５０】
プリンタ５００は、プルプリントの要求が入力されると、出力ポート７０２に対してプルプリント要求を発行する。そのプルプリント要求には、プルプリント要求を発行したプリンタの宛先が指定されている。出力ポート７０２は、プルプリント要求を受け付けると、指定された宛先に該当するプリンタ５００の有するスケジューラに対して、スケジュールの要求を発行する。プリンタ５００のスケジューラは、そのスケジューリング機能により、複数のプリントサーバ１０１〜１０２から受け付けたジョブのスケジューリング処理を行い、出力ポート７０２に対して印刷指示を発行する。印刷指示を受け付けた出力ポート７０２はプリンタ５００に印刷データを送信する。
【００５１】
＜プリンタのソフトウェア＞
図８は、本発明の実施形態に好適な印刷システムにおけるプリンタ５００内のネットワークプリントサーバ５２０およびプリンタコントローラ５１９の各記憶デバイスに記憶された制御プログラムのソフトウェア構成を説明するブロック図である。なお上記各制御プログラムは各制御機器のＣＰＵによってプログラムが解析され処理される。
【００５２】
オペレーティングシステム８０１は、ネットワークプリントサーバ５２０の基本的なデータの入出力制御を統括するオペレーティングシステムである。オペレーティングシステム８０１内にはプログラム／データ記憶部５０９との入出力制御を行うファイルシステム８０５、プリンタコントローラ５１９と拡張インターフェース５１７を介して通信制御を行う拡張インタフェースドライバ８０７がある。また、オペレーティングシステム８０１は、ローカルエリアネットワーク（ＬＡＮ５１２）の通信媒体を介して不図示のホストコンピュータ等の外部装置と通信を行うネットワークインターフェースドライバ８０６を有する。
【００５３】
アプリケーションプログラムインタフェース（ＡＰＩ）８０２は、アプリケーションプログラムに対してＯＳ８０１が備える各種機能を提供する。アプリケーションプログラムには、ネットワークプリントサーバ５０２で動作するデバイススケジューラ９００やプルプリントエージェント９０６が含まれる。また、プリンタ５００やユーザアプリケーションの登録・管理を行う管理アプリケーション８０４等も含まれる。ＡＰＩ８０２には、印刷データの送受信機能を提供するデータ転送ＡＰＩ、ビットマップ画像や表示メッセージ等のリソースデータの入出力制御を行うリソース制御ＡＰＩが含まれる。さらに、プリンタ５００の再起動や設定値の初期化や設定等の制御を行うプリンタ制御ＡＰＩ、印刷ジョブの取り消しや再印刷指示などを制御するジョブ制御ＡＰＩが含まれる。また、ネットワークプリントサーバ５２０の再起動や設定値の初期化や設定、およびアプリケーションプログラムの起動、登録、削除を行うプリントサーバ制御ＡＰＩが含まれる。
【００５４】
ＵＳＢ制御部８１８は、ＵＳＢケーブル８１９で接続された外部機器である、認証情報読み取り装置８２０を介し、認証情報記録媒体８２１からユーザ識別情報を取得する。認証情報読み取り装置８２０はたとえばカードリーダなど、記録媒体８２１に記録されたデータを読み取るためのデバイスである。
【００５５】
ネットワーク制御モジュール８１１は、ネットワークインターフェースドライバ８０６がＬＡＮ５１２を介してサーバ１０１〜１０２からの受信の通知を受け付けるネットワーク制御部である。どのサーバからの通信を判断することや、通信の制御を行うことができるモジュールである。
【００５６】
ＬＰＤ／ＲＡＷモジュール８１０は、サーバ１０１〜１０２が送信する印刷データを受け取るために、所定のプロトコルに従った制御手順を実行するモジュールであり、受け付けた印刷データをプリンタコントローラに渡すことができる。
【００５７】
デバイススケジューラ９００は、プリントコントローラ５１９のプログラム記憶部８１６またはネットワークプリントサーバ５２０のプログラム記憶部８０８に格納される。アプリケーションプログラムは、プリンタ５００が起動すると、プログラム記憶部８０８に格納されたアプリケーションが持つライセンスと、ライセンス記憶部８０９に保存されているライセンスと比較し一致しているかどうかを判断する。一致していた場合は適正アプリケーションプログラムであると判断し、アプリケーションプログラムをネットワークプリントサーバ５２０のＲＡＭ５１４にロードされる。これは、プリンタコントローラ５１９についても同様であり、プログラム記憶部８１６に記憶されたアプリケーションのライセンスと、ライセンス記憶部８１７に記憶されたライセンスとが比較される。
【００５８】
一方プリンタコントローラ５１９には、プリンタコントローラ５１９の各種処理制御を統括するオペレーティングシステム８１２が実行されている。ＯＳ８１２は、その内部にプリントエンジン制御部８１４およびファイルシステム８１５を内包している。プリントエンジン制御部８１４はプリントエンジンとの通信制御を行う。ファイルシステム８１５は、機種依存リソース／プログラム記憶部８１６との入出力制御を行う。機種依存リソース／プログラム記憶部８１６には、ネットワークプリントサーバ５２０から参照されるビットマップ画像やエラーメッセージ等の機種依存リソースが記憶されている。またネットワークプリントサーバ５２０上で動作する機種依存アプリケーションプログラム等も記憶されている。
【００５９】
拡張インターフェース制御部８１３は、拡張インターフェース５１７を介してネットワークプリントサーバ５２０との通信制御を行う。拡張インターフェース制御部５１７は、制御種別毎に印刷データの入出力を制御するデータ転送論理インターフェース、機種依存リソース／プログラム記憶部５０９に記憶された各種データの入出力を制御するリソース制御論理インターフェースを含む。また、拡張インターフェース制御部５１７は、プリンタ５００の再起動や設定値の初期化や設定等の制御を行うプリンタ制御論理インターフェース、印刷ジョブの取り消しや再印刷指示などを制御するジョブ制御論理インターフェースを備えている。拡張インターフェース制御部５１７は、各論理インターフェースを介してプルプリントサーバ５２０から要求された命令をオペレーティングシステム８１２に対して転送し、その処理結果をネットワークプリントサーバ５２０に対して返信する。
【００６０】
＜デバイススケジューラ＞
次に、デバイススケジューラ９００とプルプリントエージェント９０６のソフトウェア構成について説明する。これらのアプリケーションプログラムは、本プリントシステムのスケジューリング機能やサーバ１０１〜１０２から受け付けた印刷ジョブの管理機能を持つデバイス上のユーザアプリケーションである。
【００６１】
図９において、デバイススケジューラ９００の通信接続管理部９０１は、印刷するサーバ１０１〜１０２の接続状況や、サーバ１０１〜１０２に通知すべき情報を管理する。具体的には、サーバ１０１、１０２の接続状況の情報や、サーバ１０１〜１０２に通知すべき情報を取得し、保存し、要求に応じて出力する。接続しているサーバ情報はサーバ管理キューで管理される。通信接続管理部９０１は、プログラムアプリケーションインターフェース８０２のデータ転送ＡＰＩ、ネットワークインターフェースドライバ８０６を経由してサーバと通信を行う。
【００６２】
スケジュール管理部９０２は、サーバ１０１〜１０２から受け付けた印刷ジョブのスケジューリングを行うであり、ジョブ管理部９０３、デバイス管理部９０４を持つ。
【００６３】
ジョブ管理部９０３は、サーバ１０１〜１０２が発行したスケジュール要求や、サーバ１０１〜１０２が印刷したジョブを管理する。ジョブ管理部９０３は、サーバが印刷するジョブの情報２００２をジョブ管理キュー１１０１（図１１）で管理している。
【００６４】
デバイス管理部９０４は、プリンタコントローラ５１９が持つプリンタの状態や受け付けた印刷ジョブの状態をイベントハンドラ９０５経由で受け付ける。またデバイス管理部９０４は、プリンタコントローラ５１９から受け付けたイベントを通信接続管理部９０１やジョブ管理部９０３に通知する。
【００６５】
またプルプリントエージェント９０６において、ＵＳＢ管理部９０７は、ＵＳＢ制御部８１８を介し、認証情報記憶媒体８２１からユーザ識別情報やプルプリントサーバのアドレスを取得してサーバ通信部９０８に渡す。デバイス管理部９０９は、デバイスのアドレス情報等を取得しサーバ管理部９０８に渡す。サーバ管理部９０８は取得した情報をプルプリントサーバ６０５に送信する。
【００６６】
＜サーバ管理キュー＞
図１０は、通信接続管理部９０１が管理する、サーバのサーバ情報１００２と、サーバ情報１００２を管理するためのサーバ管理キュー１００１である。
【００６７】
サーバ情報１００２は、接続されているサーバ毎に通信接続管理部９０１が割り振ったサーバＩＤと、接続されているサーバそれぞれのＩＰアドレス、接続されているサーバが登録したイベントの種類などの情報を持つ。イベントの種類とは、プリンタコントローラ５１９が発行するデバイス状態のイベントやジョブ状態のイベントの種類を表す。
【００６８】
サーバ管理キュー１００１は、接続されているサーバ１０１〜１０２のサーバ情報を、キューの形式で保持する。サーバとの通信のセッションが開始されると、該当するサーバの情報がサーバ管理キュー１００１およびサーバ情報１００２に登録され、切断すると該当するサーバ情報が削除されるようになっている。
【００６９】
＜デバイススケジューラのジョブ管理キュー＞
図１１は、ジョブ管理部９０３が管理する情報で、接続されているサーバ１０１〜１０２が発行したスケジュール要求に対応するジョブ情報１１０２と、複数発生するジョブ情報を管理するジョブ管理キュー１１０１とを示す図である。
【００７０】
ジョブ情報１１０２は、サーバ１０１〜１０２が印刷を開始するために発行するスケジュール要求に付加される印刷ジョブの情報である。このジョブ情報１１０２は、印刷ジョブのドキュメント名、ジョブ管理部９０３が発行したジョブＩＤ、サーバで印刷を開始したユーザ名、ジョブのページ数、印刷ジョブの状況を表すジョブ状態を含む。さらに、サーバ１０１〜１０２が転送する印刷データに含まれるジョブデータＩＤ、印刷したサーバのＩＰアドレスが登録される。
【００７１】
ジョブ状態は、サーバ１０１〜１０２が当該印刷ジョブのスケジュール要求を発行してから、その印刷ジョブがプリンタ５００から無くなるまでの状態を表している。ジョブ状態には、印刷待機中、スケジュールアップ状態、転送中、転送済み、印刷完了などの状態が存在する。
【００７２】
ジョブデータＩＤは、印刷データに含まれるジョブのＩＤで、プリンタコントローラ５１９内でのジョブ状態を通知するときなど付加させるＩＤである。
【００７３】
ジョブ管理キュー１１０１は、複数のジョブ情報１１０２を管理するための管理キューである。サーバ１０１〜１０２から印刷ジョブのスケジュール要求を受け付けると、受け付けたジョブＩＤがジョブ管理キュー１１０１に登録され、対応するジョブ情報１１０２がジョブ情報１００２に登録される。印刷ジョブが印刷終了すると、該当するジョブＩＤがジョブ管理キュー１１０１から削除され、対応するジョブ情報も削除される。
【００７４】
＜プルプリントサーバのジョブ管理キュー＞
図１２は、プルプリントサーバ６０５が管理するジョブ情報と、複数のジョブ情報を管理するジョブ管理キュー（プリントキュー７０１に相当する）を表している。
【００７５】
ジョブ情報１２０２は、印刷アプリケーション６０１が印刷指示したジョブの情報と、デバイススケジューラ９００から、ジョブイベントと登録すると通知される他のサーバの印刷ジョブのジョブ情報である。ジョブ情報１２０２には、印刷ジョブのドキュメント名、ジョブＩＤ、ジョブのページ数、印刷ジョブの状況を表すジョブ状態、印刷データに含まれるジョブデータＩＤ、印刷アプリケーションがジョブに設定するユーザ識別情報が含まれる。
【００７６】
ジョブ状態は、サーバ１０１〜１０２が印刷を開始してからジョブがプリンタから無くなるまでの状態を表している。ジョブ状態には、スプール中、印刷待機中、スケジュールアップ状態、転送中、転送済み、印刷完了などの状態がある。ジョブがプリンタにいったん転送された後（印刷待機中、スケジュールアップ状態、転送中、転送済み、印刷完了などの状態）には、転送先のプリンタアドレスもジョブ状態に含まれる。プリンタアドレスは独立した項目としてジョブ情報に含めても良い。ジョブデータＩＤは、印刷データに含まれるジョブのＩＤで、デバイススケジューラからのジョブイベントに設定される通知される情報である。
【００７７】
ジョブ管理キュー１２０１は、複数のジョブ情報１２０２を管理するための管理キューであり、自サーバの印刷アプリケーション６０１から印刷指示したジョブのジョブ情報とデバイススケジューラから通知される他サーバのジョブＩＤが登録される。ジョブ情報１２０２には、ジョブ管理キューに登録された印刷ジョブの状態が登録される。
【００７８】
＜プリンタ情報＞
図１３は、プルプリントサービス６０５が管理するプリンタ情報を表している。プリンタ情報１３０１は、ジョブ制御プリンタサービスが管理するそれぞれのプリンタキューの情報を表していて、ＰＤＬドライバ６０２に該当するプリンタ名などの情報が含まれている。
【００７９】
＜プルプリント要求＞
図１４は、認証情報読み取り装置８２０で認証情報記録媒体８２１を検知した後にプルプリントエージェント９０６がプルプリントサーバ６０５に送信するプルプリント要求１４０２の図である。プルプリント要求１４０２には、デバイスアドレスとユーザ識別情報とが含まれる。デバイスアドレスは、プルプリントエージェント９０６が登録されているプリンタ５００のＩＰアドレス情報などである。ユーザ識別情報は認証情報記録媒体８２１から読み取った情報である。
【００８０】
図１５は、認証情報記録媒体８２１に含まれる情報の形式の一例である。ユーザ識別情報は、認証情報記録媒体８２１の所有者を識別する情報が含まれる。プルプリントサーバ情報は、プルプリントする印刷データを管理するサーバのＩＰアドレスなどの情報が含まれる。
【００８１】
＜プルプリント印刷ジョブの登録＞
図１６は、印刷アプリケーション６０１がプルプリント用印刷ジョブをプルプリントサーバ６０５に登録するするまでの処理の流れを示す図である。
【００８２】
ステップＳ１６０１では、プルプリント用印刷ジョブを発行する必要が発生すると、アプリケーション６０１は、図６で示したように印刷処理を開始する。ステップＳ１６０２において、印刷データをジョブ制御ポートモニタ６０４が受け付けると、プルプリントサーバ６０５にジョブが引き渡される。ここまでは、印刷要求を発行したコンピュータのプリントシステムで実行される。これ以降は、ジョブ制御ポートモニタ６０４の送信先のプルプリントサーバ６０５により実行される。したがって、印刷要求元がクライアントコンピュータである場合には、
ステップＳ１６０３では、プルプリントサーバ６０５は、図７で説明したようにプリントキュー７０１にジョブを登録する。プリントキューは、ジョブ情報１２０２を作成し、関連する情報を設定する。また、そのジョブ情報１２０２をジョブ管理キュー１２０１で管理する。
【００８３】
ステップＳ１６０４において、印刷アプリケーション６０１が印刷ジョブに付したユーザ識別情報を、プルプリントサーバ６０４が受け取る。ユーザ識別情報は、印刷ジョブに付して送信しても良いし、印刷ジョブとは別に送信しても良い。ステップＳ１６０５においてプルプリントサーバ６０５は、該当するジョブＩＤのジョブ情報１２０２に受け取ったユーザ識別情報を設定する。
【００８４】
ステップＳ１６０６では、プリントキューは印刷ジョブの受け付け、ジョブ管理キュー１２０１及びジョブ情報１２０２への登録を終了すると、ジョブ情報１２０２のジョブ状態を「停止状態」とする。
【００８５】
以上のようにプルプリントサーバ６０５は、印刷アプリケーション６０１からユーザ識別情報と関連した印刷ジョブを保持し、プルプリントエージェントからのプルプリント要求を待機することになる。
【００８６】
＜プルプリント要求処理＞
図１７は、プルプリントユーザが認証記憶媒体８２１を、認証読み取り装置８２０にセットすると、プルプリントエージェント９０６がプルプリントサーバ６０５にプルプリント要求を発行する処理の流れを示す図である。図１７は、プリンタ５００、特にプルプリントエージェント９０６で実行される。
【００８７】
ステップＳ１７０１では、プルプリントユーザが認証記憶媒体８２１を認証読み取り装置８２０にセットすると、認証読み取り装置８２０がそれを検知する。ステップＳ１７０２において、図１５で示す認証記憶媒体の情報を読み取る。
【００８８】
ステップＳ１７０３では、プルプリントエージェント９０６が登録されているプリンタデバイスのＩＰアドレスを取得する。ステップＳ１７０４では、プルプリントエージェント９０６は、ステップＳ１７０２で取得した認証記憶媒体の情報に含まれる、プルプリントサーバのアドレスに対してプルプリント要求を発行する。プルプリント要求には、ステップＳ１７０２で取得した認証記憶媒体の情報に含まれるユーザ識別情報と、ステップＳ１７０３で取得したプリンタのＩＰアドレスが、図１４に示す形式で付加されている。
【００８９】
図１８には、プルプリントサーバ６０５がプルプリントエージェント９０６からプルプリント要求を受け付けてから印刷データを転送するまでの流れを示している。図１８は、印刷開始時に受けるプルプリント要求に対応した処理を説明するもので、図２５に示すような、ジョブがプリンタにキューイングされている際に当該ジョブに関して受けた再度のプルプリント要求に対する処理は含まれていない。図２５においては、その場合処理も含めて説明する。
【００９０】
ステップＳ１８０１では、プルプリントエージェント９０６からのプルプリント要求か、または、デバイススケジューラ９００からのスケジュールアップの受け付けを待機する。プルプリントエージェントからのプルプリント要求を受け付ければステップＳ１８０２に処理を移行する。スケジュールＵＰのコマンドを受け付けるとステップＳ１８０９に処理を移行する。
【００９１】
ステップＳ１８０２では、プルプリント要求の内容を読み、それに付加されているデバイスアドレス、ユーザ識別情報を取得する。ステップＳ１８０３では、図１６でプリントキューに登録された印刷ジョブの中から、ステップＳ１８０２で取得したユーザ識別情報に該当するジョブが存在するかを検索する。検索はジョブ情報を対象にして行い、ヒットしたなら該当するジョブＩＤが保存される。
【００９２】
該当するジョブが存在する場合には、Ｓ１８０４に移行する。該当するジョブが存在しない場合は、Ｓ１８０５でプルプリントエージェント９０６にエラーを通知しステップＳ１８０１に処理を移行する。
【００９３】
ステップＳ１８０４では、デバイススケジューラ９００に接続し、接続要求コマンドを発行する。サーバが接続要求コマンドを発行すると、サーバの情報がデバイススケジューラ９００のサーバ管理キュー１００１に登録される。これ以降、サーバとデバイススケジューラ９０１間で情報のやり取りを行うことができる。
【００９４】
ステップＳ１８０６では、デバイススケジューラ９００に対して、ジョブイベント、デバイスイベントを登録する。ジョブイベントを登録すると、自サーバが印刷するジョブや、他のサーバが印刷するジョブの状態の変化の通知がデバイススケジューラ９００より各サーバに通知されるようになる。また、デバイスイベントを登録すると、プリンタ５００の状態の変化がサーバに通知されるようになる。
【００９５】
ステップＳ１８０７では、デバイススケジューラ９００で管理しているジョブ管理キュー１１０１に登録されているジョブのリスト（ジョブ管理キュー１１０１そのもので良い）を取得する。このジョブリストとジョブイベントにより、デバイススケジューラ９００が管理するジョブの進捗状況を把握することが可能となる。
【００９６】
以上の処理により、印刷する準備が整う。ステップＳ１８０８においては、印刷するジョブのスケジュール要求をデバイススケジューラ９００に行い、ステップＳ１８０１で次の指示を待機する。この際、ステップＳ１８０３で見つけた該当ジョブが複数存在すれば、複数のジョブのスケジュール要求を発行する場合もある。
【００９７】
ステップＳ１８０１において、デバイススケジューラ９００から印刷データの転送指示であるスケジュールＵＰのコマンドを受け付けるとステップＳ１８０７に処理を移行する。ステップＳ１８０９では、印刷指示を受けたジョブの印刷データの転送を開始する。
【００９８】
印刷データの送信が開始されるとステップＳ１８１０において、デバイススケジューラ９００に対して、転送が開始されたことを通知するために転送開始状態を通知する。
【００９９】
ステップＳ１８１１で印刷データの転送が終了すると、ステップＳ１８１２においてデバイススケジューラに転送が終了したことを通知し、処理をステップＳ１８０１に移行する。
【０１００】
この手順により、プリンタ５００から受信したプルプリント要求に対してスケジュール要求を発行する。また、スケジュール要求によりスケジュールされた印刷ジョブが、その実行タイミングに達することで送信されるスケジュールアップメッセージに対して、印刷データの送信を行う。
【０１０１】
＜スケジュール管理＞
図１９では、プルプリントサービス６０５のスケジュール要求の受け付けから、スケジュールＵＰを発行するまでの、デバイススケジューラ９００のスケジュール管理部９０２により実行される処理の流れについて説明する。
【０１０２】
ステップＳ１９０１において、プルプリントサーバ６０５からのメッセージを受け付けると、それがスケジュール要求の通知（Ｓ１８０８）なのか、転送済み状態の通知（Ｓ１８１２）なのかを判断する。スケジュール要求の通知であれば、ステップＳ１９０２に処理を移行し、転送済み状態の通知であればステップＳ１９０３に処理を移行する。
【０１０３】
ステップＳ１９０２では、ジョブ管理部９０３で発行したジョブＩＤを設定したジョブ情報１１０２を作成し、スケジュール要求に付加された情報をジョブ情報１１０２に設定して、スケジュール要求を受け付けた順でジョブ管理キュー１１０１に登録する。
【０１０４】
次に、ステップＳ１９０３で、ジョブ管理キュー１２０１に登録されたジョブ情報のジョブ状態を確認する。ジョブ状態がスケジュールＵＰ、転送中のものがあれば、既にあるサーバに印刷データを転送するように指示しているため、ステップＳ１９０１に処理を移行する。ジョブ状態がスケジュールＵＰ、または転送中のものがなければステップＳ１９０４に処理を移行し、スケジュールＵＰの発行の準備を行う。
【０１０５】
ステップＳ１９０４では、ジョブ管理キュー１２０１で、先にスケジュール要求を受け付けた順にジョブ状態を確認し、スケジュール待機中のジョブが見つかるとステップＳ１９０５に処理を移行する。すなわち、待機中のジョブの内キューの先頭にあるジョブに着目する。スケジュール待機中とはジョブ状態が「停止状態」であるようなジョブである。スケジュール待機中のジョブが無ければ、ステップＳ１９０１に処理を移行する。
【０１０６】
ステップＳ１９０５では、処理の順番に達したジョブについて、該当するサーバのプルプリントサーバ６０５に対して、印刷データの転送を開始させるスケジュールＵＰを通知する。ステップＳ１９０６で、該当するジョブ情報のジョブ状態を「スケジュールＵＰ」状態に更新し、ステップＳ１９０１に処理を移行する。
【０１０７】
＜プルプリントサーバ処理＞
図２０は、デバイススケジューラ９００からの通知やコマンドを受け付けた場合のプルプリントサーバ６０５の処理の流れについて説明している。なお図２０の処理は図１８の処理とマージすることもできる。その場合には、図１８のステップＳ１８０１においてステップＳ２００１の判定も合わせて行い、条件に応じた処理に分岐させる。
【０１０８】
ステップＳ２００１では、デバイススケジューラ９００からのメッセージを待機し、ジョブイベントの通知があるか、またはジョブリストが返送されてくるかを判断する。ジョブイベントが来ると、ステップＳ２００２に処理を移行し、ジョブリストが来るとステップＳ２００８に処理を移行する。
【０１０９】
ジョブリストが返送されてくると、ステップＳ２００８で、プルプリントサーバ６０５が管理するジョブ管理キュー１２０１のジョブ情報１２０２に、受信したジョブリストから得られたジョブ情報を設定する。
【０１１０】
ステップＳ２００２では、デバイススケジューラ９００から通知されたジョブイベント通知が、ジョブ完了通知であるか、ジョブ状態変更通知であるかを判断する。ジョブ状態変更通知であれば、ステップＳ２００９において、該当するジョブ情報のジョブ状態を、通知された状態へと変更する。
【０１１１】
ステップＳ２００２において、受け付けたイベント通知がジョブ完了通知であれば、ステップＳ２００３において、該当するジョブ情報を、ジョブ管理キュー１２０１から削除する。同時に削除したジョブのジョブ情報をジョブ情報１２０２から削除する。
【０１１２】
ステップＳ２００４では、ジョブ管理キュー１２０１に、印刷が終了していない自サーバのジョブが残されているかを判定する。残されていれば、まだデバイススケジューラ９００とのやり取りが必要であるため、デバイススケジューラ９００との接続を継続するために、ステップＳ２００１に処理を移行する。
【０１１３】
ステップＳ２００４で、自サーバのジョブがなければ、ステップＳ２００５に処理を移行し、デバイススケジューラ９００との接続を終了するための処理を開始する。
【０１１４】
ステップＳ２００５では、接続を開始したときにデバイススケジューラ９００に登録したジョブイベント、デバイスイベントの登録解除を依頼する。デバイススケジューラ９００は、この依頼に応じて、サーバ情報のイベント登録の内容を削除する。このイベント登録の情報がなければ、デバイススケジューラ９００が管理するジョブの状態が変化してもイベントが通知されてくることはない。
【０１１５】
次にステップＳ２００６において、デバイススケジューラ９００に対して切断の要求を発行する。デバイススケジューラ９００は、切断要求に応じて、サーバ管理キューから該当するサーバ情報を削除する。
【０１１６】
ステップＳ２００７では、デバイススケジューラ９００とのセッションを切断する処理を行い、処理をステップＳ２００１で待機する。
【０１１７】
＜ジョブ管理処理＞
図２１では、後述するデバイス管理からのジョブ状態通知イベントの受け付けからプルプリントサーバ６０５からのジョブリスト要求の受け付けに対するジョブ管理部９０３の処理を示している。
【０１１８】
ステップＳ２１０１では、通信接続管理部９０１やデバイス管理部９０４からの通知を受け付けると、デバイス管理部９０４からのジョブ状態通知であるか、ジョブリスト要求であるかを判断する。
【０１１９】
デバイス管理部９０４からのジョブ状態通知であれば、ステップＳ２１０２に処理を移行し、該当するジョブ情報１１０２のジョブ状態を更新する。更にステップＳ２１０３に処理を移行し、印刷完了の通知であるかを判断する。印刷完了でなければ処理をステップＳ２１０４に移行し、接続管理部９０１に、ジョブの状態のイベントをサーバに発行するように通知する。
【０１２０】
ステップＳ２１０３で、印刷完了の通知であれば、ステップＳ２１０５に処理を移行し、ジョブ管理キュー１１０１から該当するジョブを削除する。ステップＳ２１０６で、接続管理部９０１にジョブの完了イベントをサーバに発行するように通知し、処理をステップＳ２１０１に移行する。
【０１２１】
ステップＳ２１０１で、プルプリントサーバ６０５からのジョブリスト要求の受け付けると、ステップＳ２１０７に分岐する。ステップＳ２１０７においては、ジョブ管理キュー１１０１に登録されたジョブ情報１１０２のリストを要求元のサーバに送信するように接続管理部９０１にジョブ情報リストを通知する。
【０１２２】
＜イベント通知処理＞
図２２は、プリンタコントローラ５１９からのデバイス状態、ジョブ状態通知をイベントハンドラ９０５を経由して受け付け、ジョブ管理部９０３や通信接続管理部９０１に通知するデバイス管理部９０４の処理である。
【０１２３】
デバイススケジューラ９００が起動されると、ステップＳ２２０１では、デバイス管理部９０４が、イベントハンドラ９０５を経由してプリンタコントローラ５１９に対して、イベント登録の処理を行う。イベント登録は、デバイスの状態が変更した場合や、プリンタコントローラ５１９が処理する印刷ジョブの状態が変更したばあいにそれらの状態を通知するように行われるものである。
【０１２４】
ステップＳ２２０２では、プリンタコントローラ５１９で発生したイベントをイベントハンドラ９０５経由で受け付けると、ジョブのイベントであるかデバイスのイベントであるかを判断する。ジョブのイベントであれば、ステップＳ２２０３でジョブ管理部９０３にジョブイベントを通知し、ステップＳ２２０２に処理を移行する。デバイスのイベントであれば、処理をステップＳ２２０４に移行する。ステップＳ２２０４では、デバイスの状態をデバイス管理部９０４で保持した後、ステップＳ２２０５で通信接続管理部９０１にデバイスイベントを通知し、処理をステップＳ２２０２に移行する。
【０１２５】
＜プリンタにおける受信処理＞
図２３は、サーバ１０１〜１０２からの要求や通知、デバイス管理部９０４からの通知、ジョブ管理部９０３への要求や通知を処理する通信接続管理部９０１の処理の流れについて記載する。
【０１２６】
ステップＳ２３０１では、サーバ１０１〜１０２やデバイス管理部９０４、ジョブ管理部９０３からの通知や要求を受け付け、どの通知や要求であるかを判断する。
【０１２７】
ステップＳ２３０１において受け付けた要求やイベントがサーバ１０１〜１０２からの接続要求であれば、ステップＳ２３０２に移行する。ステップＳ２３０２では、サーバ管理キュー１００１に、通信接続管理部９０１で発行したサーバＩＤと、要求を発したサーバのＩＰアドレスを設定し、サーバ管理キュー１００１にサーバ情報を登録する。
【０１２８】
ステップＳ２３０１において受け付けた要求やイベントがサーバ１０１〜１０２からのイベント登録であれば、ステップＳ２３０３に処理を移行する。ステップＳ２３０３では、該当するサーバ情報１００２の登録イベントとして、通知されたイベントの種類を登録する。イベントの種類には、ジョブの状態の変化を通知するジョブイベント、デバイスの状態の変化を通知するデバイスイベントがある。
【０１２９】
ステップＳ２３０１において受け付けた要求やイベントがデバイス管理部９０４からのデバイスイベントやジョブ管理部９０３からのジョブイベントであれば、ステップＳ２３０４に分岐する。ステップＳ２３０４では、これらのイベントを通知すべきサーバを認識するために、サーバ管理キュー１００１に登録された全てのサーバ情報から、サーバ情報１００２の登録イベントの設定を参照して、通知すべきかどうかを判断する。通知すべきであると判断されたサーバについて、そのＩＰアドレスを保持し、ステップＳ１７０５において、通知すべき全てのサーバに対してイベントを送信する。
【０１３０】
ステップＳ２３０１において受け付けた要求やイベントがサーバからの切断要求であればステップＳ２３０６に処理を移行し、サーバ管理キュー１００１から該当するサーバのサーバ情報を削除する。
【０１３１】
＜プルプリントの処理シーケンス＞
図２４は、これまで説明してきた各コンポーネントのフローの全体の流れの概略を示した図である。サーバ１０１〜１０２のプルプリントサーバ６０５が、ジョブを受け付け後、プリンタデバイス６０６にスケジュール要求を発行するところから、プリンタで印刷が終了するところまでのやり取りについて図２４に記載する。
【０１３２】
プルプリントサーバ６０５は、印刷データを受け付けると、デバイススケジューラ９００とセッション接続２４０１を開始する。サーバの情報を通知する接続要求コマンド２４０２、ジョブ／デバイス状態を通知してもらうためのイベント登録２４０３、デバイススケジューラがスケジュール管理するジョブの情報を取得するジョブリスト取得コマンド２４０４を発行する。
【０１３３】
デバイススケジューラ９００は、接続要２４０２求を受け付けると、サーバ情報をサーバ管理キュー１００１に登録し、イベントの登録２４０３を受け付けると該当するサーバ情報１００２の登録イベントに設定する。ジョブリスト要求２４０４を受け付けると、ジョブ管理キューに登録されているジョブ情報のリストを送信する。
【０１３４】
次に、サーバ１０１〜１０２が印刷を予約するためのスケジュール要求２４０５のコマンドを発行する。デバイススケジューラ９００はスケジュール要求２４０５を受け付けると、ジョブ管理キュー１１０１にジョブＩＤを登録する。ジョブ情報１１０２には、ドキュメント名等の情報を設定する。デバイススケジューラ９００は、プリンタ５００が印刷データを受け付けられるようになるとスケジュールＵＰ２４０６を発行し、プルプリントサーバ６０５に対して印刷データの送信を開始するように促す。また、スケジュールＵＰ２４０６を発行すると、ジョブ情報のジョブ状態をスケジュールＵＰ状態に更新する。
【０１３５】
プルプリントサーバ６０５は、スケジュールＵＰを受け付けるとＬＰＤ／ＲＡＷ８１０に印刷データ２４０７の転送を開始し、転送が始まるとデバイススケジューラに対して転送開始通知２４０９を送る。デバイススケジューラ９００は、転送開始通知２４０９を受けると、ジョブ情報のジョブ状態に転送中の状態に更新する。
【０１３６】
ＬＰＤ／ＲＡＷ８１０が印刷データ２４０７を受け付けるとプリンタコントローラ５１９にデータ２４０８を転送し、プリンタコントローラ５１９で印刷が開始される。プリンタコントローラ５１９は、印刷が開始されるとジョブ状態２４１０をデバイススケジューラ９００に通知する。デバイススケジューラ９００は、サーバ情報１００２の登録イベントの情報を基に、サーバにジョブの印刷状態２４１１を通知する。
【０１３７】
また、プルプリントサーバ６０５は印刷データ２４１２の転送が終了するとデバイススケジューラ９００に対して、転送終了通知２４１４を送信する。デバイススケジューラ９００は、転送終了通知２４１４を受けると、ジョブ情報のジョブ状態に転送済の状態に更新する。
【０１３８】
プリンタコントローラ９００で印刷処理が終了すると、ジョブの状態として印刷完了の通知２４１３をデバイススケジューラ９００に通知する。デバイススケジューラ９００は、サーバ情報１１０２の登録イベントの情報を基に、サーバにジョブの印刷完了の状態２４１６を通知する。
【０１３９】
プルプリントサーバ６０５は、上記通知により印刷が完了したことを確認すと、プリンタ５００からの通知が必要なくなるので、デバイススケジューラ９００からのイベント通知の登録を解除要求２４１７を発行する。イベント解除要求２４１７を受け付けたデバイススケジューラ９００は、サーバ情報１００２の登録イベントにイベントを通知しない旨の情報を設定する。
【０１４０】
その後、プルプリントサーバ６０５は、デバイススケジューラ９００との接続を終了するための切断要求２４１８を発行し、セッションを終了する。
【０１４１】
デバイススケジューラ９００は、切断要求２４１８を受け付けると、サーバ管理キュー１１０１及びサーバ情報１１０２から該当するサーバ情報を削除し、該サーバとの処理を終了する。
【０１４２】
＜印刷ジョブの中断あるいは移動処理＞
図２５は、プルプリントサーバ６０５がプルプリント要求を受け取った際、そのプルプリント要求を行ったユーザに該当するジョブがプリンタ５００に転送されている場合、該当ジョブに対して削除、代行などの処理を行うフローである。この処理は、ネットワークプリンタからプルプリントサーバへのプルプリント要求をトリガにして実行される。すなわち、プリンタにキューイングされているジョブに対するプルプリント要求は、当該ジョブの中断あるいは他のプリンタへの転送などの指示として解釈される。
【０１４３】
ステップＳ２５０１において、プルプリント要求を待機する。プルプリント要求が来るとステップＳ２５０２において、プルプリント要求に付加されているユーザ識別情報とデバイスのＩＰアドレスを取得する。ここで受信するプルプリント要求としては、あるジョブに対して初めてのプルプリント要求である場合と、あるジョブに対しての再度のプルプリント要求である場合がある。この再度のプルプリント要求はジョブ処理に係る変更要求に該当する。ここで、Ｓ２５０２におけるプルプリント要求に係る情報の取得方法は、図１７で説明した通りである。
【０１４４】
ステップＳ２５０３においてステップＳ２５０２で取得したユーザ識別情報に該当するジョブがプリントキュー（ジョブ管理キュー１２０１）に存在するか判定される。存在すればステップＳ２５１３に処理を移行し、存在しなければ、ステップＳ２５０１に処理を移行する。
【０１４５】
ステップＳ２５１３では、ステップＳ２５０３でプリントキューに存在すると判定されたジョブが、いずれかのプリンタに転送されているか判定する。この判定は、デバイススケジューラ９００が管理するプリントキュー（図１２）を参照することで可能である。ジョブ情報（ジョブ状態）にプリンタアドレスが登録されていれば、そのジョブは転送済みである。プリンタに転送済みであれば、ステップＳ２５０４に分岐する。転送済みでなければ、図１８のステップＳ１８０１に分岐する。ステップＳ１８０１ではプルプリント要求に応じてプリンタにジョブをスケジュールさせる。
【０１４６】
ステップＳ２５０４では、ステップＳ２５０２で取得したプルプリント要求を発行したプリンタのアドレスと、ステップＳ２５０３で見つけたプリンタに転送されているジョブのデバイスアドレスとが同じであるかを判定する。同じアドレスであればステップＳ２５０５に移行し、異なればステップＳ２５０８に処理を移行する。同じアドレスであるとは、或るジョブについてプルプリントを要求したプリンタと、当該ジョブについて再度プルプリント要求を発行したプリンタとが同一であることを意味する。
【０１４７】
ステップＳ２５０５では、ステップＳ２５０３で見つけたジョブが転送されているプリンタの状態を判定する。プリンタの状態は、前述の通りデバイススケジューラ９００からイベントで通知されている。プリンタの状態が正常であれば、ステップＳ２５０６に処理を移行し、ステップＳ２５０３で見つけたプリンタに転送された該当ジョブ全ての一時停止要求をデバイススケジューラに発行し、該当ジョブ全てを一時停止状態にする。一時停止されたジョブが実行中の場合には、その後にキューされたジョブが繰り上げられて実行されることが望ましい。それというのは、実行中のジョブも含めて印刷の一時的な中断は、たとえばオフラインキーなどを用いて指示可能なプリンタが多いためである。
【０１４８】
ステップＳ２５０５で確認したプリンタの状態が用紙無しなどのエラー状態であれば、ステップＳ２５０７に処理を移行し、プリンタに転送された該当ジョブのキャンセル要求をデバイススケジューラ９００に発行し、該当ジョブを削除する。
【０１４９】
ステップＳ２５０８では、ステップＳ２５０３で見つけたジョブが転送されているプリンタの状態を確認する。確認したプリンタの状態が正常であれば、ステップＳ２５０９に処理を移行する。ステップＳ２５０９では、ステップＳ２５０３で見つけたジョブで、印刷待機中の状態のジョブ、つまり、まだ印刷処理がされていないジョブを、プルプリント要求の発行元のプリンタに対して送信する。すなわちそのプリンタによる印刷処理を開始させる。それとともに、ステップＳ２５１０において、そのジョブがもともと転送されているプリンタのジョブ管理キューから、そのジョブを削除する。ステップＳ２５０９、ステップＳ２５１０の組み合わせ処理によって、あるプリンタで待機しているジョブは別のプリンタに移動される。そのため、先頭ジョブつまりまさに印刷処理されているジョブと、２台のプリンタで並行して印刷されることになる。プルプリントによる負荷分散印刷となる。
【０１５０】
ステップＳ２５０８で確認したデバイスの状態が異常であれば、ステップＳ２５１１に処理を移行する。たとえばプリンタが用紙無しなどのエラーで止まっており、プリンタの先頭のジョブを含め、プリンタが正常な状態に戻るまで印刷が待たされた状態となっている。
【０１５１】
ステップＳ２５１１では、先頭ジョブを含め、プルプリント要求を発行したプリンタに対して印刷処理を開始する。ステップＳ２５１２において、もともと転送していたプリンタの該ジョブを削除する。ステップＳ２５１１、ステップＳ２５１２の組み合わせ処理によって、元々印刷していたプリンタの先頭ジョブつまりまさに印刷処理されているジョブと、後続で待機していたジョブが別のプリンタに移動され、代行印刷されることになる。先頭ジョブを別のプリンタで代行する場合には、当然、そのジョブの先頭から代行されるようにすることも、途中のページから代行することも動作的に可能であることはいうまでもない。
【０１５２】
以上のように、従来のプルプリントシステムでは、ユーザがプリンタまで出向いて処理をするため、その場でジョブ制御を行うことができない。これに対して本実施形態によれば、認証情報読み取り装置に認証情報記録媒体を通すことで、プリンタから、ジョブの削除や停止、あるいは代行印刷や振替印刷が可能となる。このためプリンタの状態に応じてよってジョブの制御を指定することが可能となり、プルプリントシステムの利便性を向上させることになる。
【０１５３】
具体的には、プルプリントジョブがプリンタにスケジュールされた状態でプリンタから発行されたプルプリント要求は、ジョブの変更要求として解釈される。その変更要求は更に、プルプリント要求元のプリンタとジョブの状態とに応じて、中断要求或いは転送要求として解釈される。すなわちプルプリントを開始させる指示と、印刷ジョブの中断、中止または転送指示とは同一の操作で行われる。そのため、従来のプルプリントサービスに対応したプリンタが有するユーザインターフェースを変更することなく、プリンタからジョブの中断や転送の指示を行うことができる。また、プリンタからジョブの中断や転送の指示が可能になったことで、プルプリントの利便性を向上させることができる。
【０１５４】
［他の実施形態］
なお本発明は、複数の機器（例えばホストコンピュータ、インターフェース機器、リーダ、プリンタなど）から構成されるシステムに適用しても、一つの機器からなる装置（例えば、複写機、ファクシミリ装置など）に適用してもよい。また本発明の目的は、前述の実施形態の機能を実現するプログラムコードを記録した記録媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータが記憶媒体に格納されたプログラムコードを読み出し実行することによっても達成される。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコード自体およびプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【０１５５】
また、本発明には、プログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム（ＯＳ）などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた場合についても、本発明は適用される。その場合、書き込まれたプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される。
【図面の簡単な説明】
【０１５６】
【図１】本発明の実施形態としてのプリントシステムの全体構成を示すブロック図である。
【図２】サーバのハードウェア構成を説明するブロック図である。
【図３】図２に示したＲＡＭ２０２のメモリマップの一例を示す図である。
【図４】図２に示したＦＤ２０４のメモリマップの一例を示す図である。
【図５】プリンタのハードウェア構成を説明するブロック図である。
【図６】サーバのプリントシステムのソフトウェア構成の例を示す図である。
【図７】サーバの印刷時の印刷ジョブの流れを示す図である。
【図８】プリンタのソフトウェア構成の例を示す図である。
【図９】プリンタのユーザアプリケーションのソフトウェア構成の例を示す図である。
【図１０】デバイススケジューラで管理するサーバ情報とサーバ管理キューを示す図である。
【図１１】デバイススケジューラで管理するジョブ情報とジョブ管理キューを示す図である。
【図１２】ルプリントサーバが管理するジョブ情報とジョブ管理キューを示す図である。
【図１３】プルプリントサーバが管理するプリンタキューの情報を表す図である。
【図１４】プルプリントエージェントがプルプリントサーバに送信する情報を示す図である。
【図１５】認証情報記憶媒体が記憶している情報を示す図である。
【図１６】プルプリントサーバがプルプリントジョブを印刷アプリケーションから受け付けるフローを示す図である。
【図１７】プルプリントエージェントの処理の流れを示す図である。
【図１８】プルプリントサーバがプルプリント要求を受け付けてから印刷データを送信するまでの処理の流れを示す図である。
【図１９】デバイススケジューラがジョブを受け付け、スケジュールアップする処理の流れを示す図である。
【図２０】プルプリントサーバのジョブ転送後の処理を示す図である。
【図２１】ジョブ管理部のジョブ状態通知イベントの受け付けからジョブリスト要求の受け付けに対する処理を示すフローチャートである。
【図２２】デバイススケジューラのイベント登録処理に関する処理の流れを示す図である。
【図２３】サーバからの要求や通知、デバイス管理部からの通知、ジョブ管理部９０３への要求や通知を処理する通信接続管理部の処理を示すフローチャートある。
【図２４】プルプリントサーバとデバイススケジューラ、ＬＰＤ／ＲＡＷ、プリンタコントローラ間の印刷シーケンスを示す図である。
【図２５】プルプリントサーバのジョブ制御に関する処理の流れを示す図である。
【図１】
2008107921.tif 000003
【図２】
2008107921.tif 000004
【図３】
2008107921.tif 000005
【図４】
2008107921.tif 000006
【図５】
2008107921.tif 000007
【図６】
2008107921.tif 000008
【図７】
2008107921.tif 000009
【図８】
2008107921.tif 000010
【図９】
2008107921.tif 000011
【図１０】
2008107921.tif 000012
【図１１】
2008107921.tif 000013
【図１２】
2008107921.tif 000014
【図１３】
2008107921.tif 000015
【図１４】
2008107921.tif 000016
【図１５】
2008107921.tif 000017
【図１６】
2008107921.tif 000018
【図１７】
2008107921.tif 000019
【図１８】
2008107921.tif 000020
【図１９】
2008107921.tif 000021
【図２０】
2008107921.tif 000022
【図２１】
2008107921.tif 000023
【図２２】
2008107921.tif 000024
【図２３】
2008107921.tif 000025
【図２４】
2008107921.tif 000026
【図２５】
2008107921.tif 000027