(57)【特許請求の範囲】
【請求項１】
入力された印刷ジョブを管理エリアに登録して管理するプリンタと通信可能な印刷制御装置であって、
前記プリンタから、入力された印刷ジョブがプリンタの管理エリアに登録されることによって削除可能な状態にあることを示す状態情報を取得する取得手段と、
前記取得手段により取得した前記状態情報に基づいて、取消指示された印刷ジョブが削除可能であるか判定し、削除可能であると判定した場合に、当該印刷ジョブの削除命令を前記プリンタに対して発行する削除制御手段とを備え、
前記削除制御手段は、前記取消指示された印刷ジョブが前記管理エリアに登録されていないために削除可能でないと判定した場合、前記取消指示された印刷ジョブが前記管理エリアに登録されるまで前記印刷ジョブに対する取消指示を保存し、前記取得手段により取得される最新の前記状態情報に基づいて当該印刷ジョブが削除可能であると判定した時点で、当該印刷ジョブの削除命令を前記プリンタに対して発行することを特徴とする印刷制御装置。
【請求項２】
前記削除制御手段は、前記取消指示された印刷ジョブが削除可能でないと判定した場合には当該印刷ジョブに対する削除指示を装置内に保存することを特徴とする請求項１に記載の印刷制御装置。
【請求項３】
前記取得手段は、前記プリンタから入力された印刷ジョブがジョブキューに登録された旨の通知を受信することを特徴とする請求項１に記載の印刷制御装置。
【請求項４】
前記取得手段は、登録された印刷ジョブのリストを取得する命令を前記プリンタに発行して当該リストを取得することを特徴とする請求項１に記載の印刷制御装置。
【請求項５】
前記プリンタと通信ネットワークを介して接続されることを特徴とする請求項１乃至４のいずれか１項に記載の印刷制御装置。
【請求項６】
請求項１乃至４のいずれか１項に記載の印刷制御装置と、
印刷ジョブをプリンタに対して発行する手段と、前記印刷ジョブに対する取消要求を前記印刷制御装置に対して発行する手段とを備えるクライアント装置と
を具備することを特徴とする印刷システム。
【請求項７】
入力された印刷ジョブを管理エリアに登録して管理するプリンタと通信可能な印刷制御装置の制御方法であって、
前記プリンタから、入力された印刷ジョブがプリンタの管理エリアに登録されることによって削除可能な状態にあることを示す状態情報を取得する取得工程と、
前記取得工程により取得した前記状態情報に基づいて、取消指示された印刷ジョブが削除可能であるか判定し、削除可能であると判定した場合に、当該印刷ジョブの削除命令を前記プリンタに対して発行する削除制御工程とを備え、
前記削除制御工程では、前記取消指示された印刷ジョブが前記管理エリアに登録されていないために削除可能でないと判定した場合、前記取消指示された印刷ジョブが前記管理エリアに登録されるまで前記印刷ジョブに対する取消指示を保存し、前記取得工程により取得される最新の前記状態情報に基づいて当該印刷ジョブが削除可能であると判定した時点で、当該印刷ジョブの削除命令を前記プリンタに対して発行することを特徴とする印刷制御装置の制御方法。
【請求項８】
前記削除制御工程は、前記取消指示された印刷ジョブが削除可能でないと判定した場合には当該印刷ジョブに対する削除指示を装置内に保存することを特徴とする請求項７に記載の印刷制御装置の制御方法。
【請求項９】
前記取得工程は、前記プリンタから入力された印刷ジョブがジョブキューに登録された旨の通知を受信することを特徴とする請求項７に記載の印刷制御装置の制御方法。
【請求項１０】
前記取得工程は、登録された印刷ジョブのリストを取得する命令を前記プリンタに発行して当該リストを取得することを特徴とする請求項７に記載の印刷制御装置の制御方法。
【請求項１１】
入力された印刷ジョブを管理エリアに登録して管理するプリンタと通信可能なコンピュータを、
前記プリンタから、入力された印刷ジョブがプリンタの管理エリアに登録されることによって削除可能な状態にあることを示す状態情報を取得する取得手段と、
前記取得手段により取得した前記状態情報に基づいて、取消指示された印刷ジョブが削除可能であるか判定し、削除可能であると判定した場合に、当該印刷ジョブの削除命令を前記プリンタに対して発行する削除制御手段とて機能させるためのコンピュータプログラムであって、
前記削除制御手段は、前記取消指示された印刷ジョブが前記管理エリアに登録されていないために削除可能でないと判定した場合、前記取消指示された印刷ジョブが前記管理エリアに登録されるまで前記印刷ジョブに対する取消指示を保存し、前記取得手段により取得される最新の前記状態情報に基づいて当該印刷ジョブが削除可能であると判定した時点で、当該印刷ジョブの削除命令を前記プリンタに対して発行することを特徴とするコンピュータプログラム。
【請求項１２】
前記削除制御手段は、前記取消指示された印刷ジョブが削除可能でないと判定した場合には当該印刷ジョブに対する削除指示を装置内に保存することを特徴とする請求項１１に記載のコンピュータプログラム。
【請求項１３】
前記取得手段は、前記プリンタから入力された印刷ジョブがジョブキューに登録された旨の通知を受信することを特徴とする請求項１１に記載のコンピュータプログラム。
【請求項１４】
前記取得手段は、登録された印刷ジョブのリストを取得する命令を前記プリンタに発行して当該リストを取得することを特徴とする請求項１１に記載のコンピュータプログラム。
【請求項１５】
請求項１１乃至１４のいずれか１項に記載のコンピュータプログラムを格納したことを特徴とするコンピュータ可読記憶媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、例えば印刷ジョブをプリンタに送り、プリンタからジョブのステータスを取得し、プリンタ内部のジョブをキャンセルすることが可能な印刷システム及び印刷制御装置及び方法に関するものである。
【０００２】
【従来の技術】
ＬＡＮ等のネットワークに直接接続されるネットワークプリンタは、DPA（Document Printing Architecture）などの勧告に従った機能を装備し、プリンタ内のジョブのキャンセルや、ジョブ情報の列挙や、ジョブの出力優先順の変更などプリンタ内部の操作までネットワーク上の端末からできるようになってきている。またネットワークプリンタを操作可能なプリンティングシステムなどが登場し、ユーザアプリケーションからコールされる関数を提供し、プリンタをより使いやすくしている。
【０００３】
ネットワークプリンタは、NIC（ネットワークインターフェースカード）と呼ばれるLANインターフェイスカードを通常装備し、これを介してプリンタ内部のコントローラ部へ出力画像を送っている。ユーザアプリケーションからプリンティングシステムを介してプリンタへジョブを投入した後で、ユーザアプリケーションよりそのジョブのキャンセルが起動されると、プリンティングシステムは、決められた手順でジョブのキャンセルを実行する。
【０００４】
プリンティングシステムは、アプリケーションから発行された印刷ジョブをプリンタに渡すほか、プリンタにおいて処理されている印刷ジョブや待ち状態とされている印刷ジョブ等を把握し、上述したキャンセル処理のほか、要求に応じてプリンタの状態をアプリケーション等に対して出力したり、印刷ジョブの処理順序を変更したりといった様々な管理作業を可能としている。
【０００５】
【発明が解決しようとする課題】
しかしながら、現状の印刷システムにおいては、以下のような不具合があった。
【０００６】
アプリケーションプログラムから、プリンティングシステムを介して印刷ジョブがプリンタに投入された場合であっても、例えばジョブの上限数をオーバーしたことなどでプリンタ内のジョブ管理エリアに到着できず、プリンタの管理下におかれていないジョブは、プリンティングシステムからも見ることができなかった。このため、このようなジョブについてはキャンセルすることもできなかった。
【０００７】
このような場合、上位アプリケーションにインターフェースを公開しているプリンティングシステムとしては、アプリケーションからのキャンセル要求に対して応答しなければその間システム停止などの障害を生じてしまうため、即答しなければならない。そのため、指定された印刷ジョブを消去せずにアプリケーションに対してはキャンセル失敗のエラーコードを返すか、あるいは、他のジョブも消してしまう危険を冒してソフトリセットなどを実施し、キャンセル成功のリターンコードを返すなどしていた。いずれにしてもキャンセル処理の遂行が不確実なばかりか、方法によっては本来キャンセルすべきでない印刷ジョブまで消滅させる危険があった。
【０００８】
本発明は上記従来に鑑みて成されたもので、過渡的な状態にある印刷ジョブについても、それに対するキャンセル要求を確実に処理することが可能な印刷システム及び印刷制御装置及び方法を提供することを目的とする。
【０００９】
【課題を解決するための手段】
上記目的を達成するために本発明は次のような構成をとる。
【００１０】
入力された印刷ジョブを管理エリアに登録して管理するプリンタと通信可能な印刷制御装置であって、
前記プリンタから、入力された印刷ジョブがプリンタの管理エリアに登録されることによって削除可能な状態にあることを示す状態情報を取得する取得手段と、
前記取得手段により取得した前記状態情報に基づいて、取消指示された印刷ジョブが削除可能であるか判定し、削除可能であると判定した場合に、当該印刷ジョブの削除命令を前記プリンタに対して発行する削除制御手段とを備え、
前記削除制御手段は、前記取消指示された印刷ジョブが前記管理エリアに登録されていないために削除可能でないと判定した場合、前記取消指示された印刷ジョブが前記管理エリアに登録されるまで前記印刷ジョブに対する取消指示を保存し、前記取得手段により取得される最新の前記状態情報に基づいて当該印刷ジョブが削除可能であると判定した時点で、当該印刷ジョブの削除命令を前記プリンタに対して発行する。
【００１６】
【発明の実施の形態】
以下、本発明の好適な実施形態に関して詳細に説明する。
【００１７】
＜システム及びその操作の概説＞
図１は、本発明にかかる印刷システムで実現されるソフトウエア的な構成を示すシステムブロック図である。図１において、ユーザアプリケーション１１やプリンティングシステム１２が実行されるホストコンピュータとネットワークプリンタ１３とはＬＡＮにより接続されている。ホストコンピュータにおいて印刷を行おうとするユーザアプリケーションプログラム１１は、プリンティングシステム１２に対して、印刷要求であるジョブの投入を行い、排紙の終了を待つ。プリンティングシステム１２とネットワークプリンタ１３の間には、ジョブの投入、排紙終了イベント、印刷待ちのジョブの列挙等のコマンドあるいはレスポンスが、ＬＡＮを介して交換される。
【００１８】
ネットワークプリンタ１３の内部には、受信したジョブが処理順に登録されたジョブキュー１３０１が設けられている。ネットワークプリンタ１３は、プリンティングシステム１２よりジョブの投入コマンドを受信すると、そのジョブを内部のジョブキュー１３０１に結合する。ジョブキュー１３０１に結合後、ジョブの生成イベントをプリンティングシステム１２に対して通知する。そしてジョブキュー１３０１の先頭から順次処理し、印刷出力する。ひとつのジョブについての印刷処理が終了し、排紙が終了した時点で、ネットワークプリンタ１３はプリンティングシステム１２に対して排紙終了イベントを通知する。なお、このジョブ生成イベントは、プリンタが受信したジョブが削除可能となったことを示す情報でもある。
【００１９】
プリンティングシステム１２からジョブの列挙コマンドをネットワークプリンタ１３が受信した場合、ネットワークプリンタ１３はジョブキュー１３０１に登録された各ジョブについてのジョブ情報をプリンティングシステム１２に渡す。プリンティングシステム１２は、ネットワークプリンタ１３からのジョブ生成イベントや、ジョブ削除イベント、ジョブの列挙コマンドに対する応答を受信すると、その内容に応じて、プリンティングシステム１２が持つ管理テーブル上のステータスを変更する。例えば、ジョブキュー１３０１からのジョブ生成イベントの通知によってジョブが生成ことを確認すると、管理テーブルに生成されたジョブのジョブ情報を登録する。また、ジョブキュー１３０１からのジョブ削除イベントの通知によってジョブが削除されたことを確認すると、管理テーブルから生成されたジョブのジョブ情報を消去する。
【００２０】
＜プリンティングシステムの構成＞
図２は、本発明にかかる印刷システムのブロック図である。本例では、クライアント２０１、サーバ２０２、ネットワークプリンタ２３１をＬＡＮ２３０によって接続してなる。
【００２１】
クライアント２０１においては、システムバス２１にＣＰＵ２２やその他のデバイスが接続されて構成される。ＣＰＵ２２は、ＲＡＭ２４にロードされたプログラムを実行することで、システム全体の制御をつかさどる。実行されるプログラムなどの制御コードやデータはハードディスク２３にファイルとして書き込まれ、必要に応じてＲＡＭ２４にロードされる。キー入力部２７はキーボードやポインティングデバイスを含み、表示部２８は画像のディスプレイ装置やＬＥＤインジケータ等であって、オペレータとの間の情報の交換に使用される。通信部２１０は、WinSock等通信をつかさどる。
【００２２】
クライアント２０１では、上述したハードウエア資源を用いて、ＣＰＵ２２によって所定のプログラムを実行することで、画像管理部２５、ジョブ管理部２６、印刷部２９、サーバ通信部２１１を含むクライアントプリンティングシステム１２−１をも実現している。これらブロックの機能は、専用のハードウエアにより実現することもできる。
【００２３】
画像管理部２５は、アプリケーションプログラムなどにより発行されたジョブを管理する。ジョブ管理部２６は、クライアント２０１からプリンタ２３１に対して発行された印刷ジョブの情報を管理するためのエリアであり、後述するジョブ管理テーブル１２０１を含む。物理的にはハードディスク２３やＲＡＭ２４上に設けられる。印刷部２９は、プリンタ２３１などための印刷プロトコルをつかさどる。すなわち、コマンドの形式や手順を管理している。サーバ通信部２１１は、サーバとの通信をつかさどる部分であり、RPC（リモートプロシジャーコール）などの通信を担当し、サーバ２０２との通信２１１ａを実行する。図示した通信２１１ａは論理的な結合を示し、物理的には通信回線を介して通信は行われる。
【００２４】
クライアント２０１のユーザアプリケーションあるいは外部のパーソナルコンピュータのアプリケーションよりジョブが投入されると、画像管理部２５により画像が格納されるとともに、ジョブ管理部２６の管理するFIFOキューにジョブ情報が格納されて管理される。そしてそのジョブ情報はジョブ管理部２６のキューに格納され管理される。
【００２５】
一方サーバ２０２においては、システムバス２２０にＣＰＵ２２１やその他のデバイスが接続されて構成される。ＣＰＵ２２１は、ＲＡＭ２２３にロードされたプログラムを実行することで、システム全体の制御をつかさどる。実行されるプログラムなどの制御コードやデータはハードディスク２２１にファイルとして書き込まれ、必要に応じてＲＡＭ２２１にロードされる。
【００２６】
サーバ２０２では、上述したハードウエア資源を用いて、ＣＰＵ２２１によって所定のプログラムを実行することで、クライアント通信部２２４、ジョブ管理部２２５、イベント受信部２２６、ジョブ列挙部２２７、ログ列挙部２２８を含むサーバプリンティングシステム１２−２をも実現している。これらブロックの機能は、専用のハードウエアにより実現することもできる。
【００２７】
クライアント通信部２２４は、クライアント２０１との通信２１１ａをつかさどる。
【００２８】
ジョブ管理部２２５は、ＬＡＮ２３０に接続されたクライアントがプリンタ２３１に投入したジョブが、現在どのようなステータスであるかを管理テーブル１２０２に記憶して管理する。イベント受信部２２６は、プリンタ２３１からのイベント通知を受信する。ジョブ列挙部２２７は、プリンタ２３１にキューイングされているジョブ情報を獲得し、それらジョブのリストを作成する。ログ列挙部２２８は、プリンタ２３１から、その内部に保持される印刷結果ログを獲得して参照する。
【００２９】
なお、ジョブ管理部２２５、イベント受信部２２６、ジョブ列挙部２２７、ログ列挙部２２８は、所定のプログラムをＣＰＵ２２１により実行することで実現される。
【００３０】
プリンタインターフェース部２２９は、プリンタとクライアントの間で取り決められているプロトコルによる通信の手順やデータ形式に従って、互いに交換されるデータの設定や解析をする。プリンタインターフェース部２２９により、プリンタ２３１との論理的な接続２２９ａが実現される。
【００３１】
なお、サーバ２０２についてはサーバとしての機能のみに着目した構成を示したが、サーバがクライアントとしての機能を有する場合も当然あり得る。この場合には、サーバ２０２もクライアントプリンティングシステム１２−１を備える。また、キー入力部や表示部も備える。
【００３２】
以下では、クライアントプリンティングシステム１２−１とサーバプリンティングシステム１２−２とをまとめてプリンティングシステム１２と呼ぶ。
【００３３】
＜プリンティングシステムの動作＞
次に図１及び図２におけるシステムの動作を説明する。
【００３４】
ユーザアプリケーションより印刷要求を受けたクライアントプリンティングシステム１２−１は、画像管理部２５、ジョブ管理部２６にそれぞれ画像と、ジョブ情報を保持している。印刷開始時には、クライアントプリンティングシステム１２−１は、まず、サーバ通信部２１１を介して印刷開始要求をサーバ２０２へ送信する。
【００３５】
プリンタ２３１を管理しているサーバプリンティングシステム１２−２は、クライアント２０１からの印刷開始要求を受けると、プリンタ２３１が空き、新たなジョブの受付が可能となり次第、クライアント通信部２２４を介してクライアント２０１へ印刷開始応答を送信する。その際に、受信した印刷開始要求ごとに固有のシステムIDを割り振り、その値を印刷開始応答とともにクライアント２０１へと送信する。
【００３６】
印刷開始応答を受けたクライアント２０１のプリンティングシステム１２−１は、その印刷開始要求に対応するジョブに、受信したシステムＩＤを埋め込む。プリンティングシステム１２−１では、そのジョブを印刷部２９、通信部２１０経由で印刷プロトコルを生成してプリンタ２３１へ送信する。これとともに、サーバ２０２に対してジョブを投入した旨をそのシステムＩＤとともに通知する。この通知によりサーバ２０２では後述のジョブステータスを更新する。こうすることにより、サーバプリンティングシステム１２−２は、印刷開始要求を受けるだけで、ジョブそのものを受けることがない。そのため、ジョブがクライアント２０１からサーバ２０２へ転送されることにより生じるネットワークの通信負荷を削除することができる。
【００３７】
プリンタ２３１は、ジョブを受付次第、印刷待ちキューへキューイングし、FIFOで順次印刷を行う。印刷待ちキューに登録された段階で、プリンタ２３１は、サーバ２０２（すなわちサーバプリンティングシステム１２−２）へジョブの生成イベントを発行する。ジョブの生成イベントには、ジョブハンドルと呼ばれる、プリンタがジョブに対して割り振ったIDが付加されている。このジョブハンドルは、キューに登録されたジョブごとに識別可能に格納されている。
【００３８】
サーバプリンティングシステム１２−２は、プリンタ２３１から受信したジョブハンドルを使用して、プリンタに対してジョブハンドルに対応するシステムIDを要求する。プリンタ２３１は、その要求に応えて、受信したジョブハンドルに対応したシステムIDを返す。
【００３９】
ジョブ列挙部２２７は、印刷待ちキューの情報をプリンタ２３１に要求し、プリンタは、その要求に応えて、キューに保持されているジョブに関する情報を全てサーバへ返す。
【００４０】
ログ列挙部２２８は、印刷結果のキュー情報をプリンタ２３１に要求し、プリンタ２３１は、要求された分だけサーバプリンティングシステム１２−２へ返す。
【００４１】
プリンタ２３１がジョブを実行して画像形成された用紙の排出が完了すると、サーバプリンティングシステム１２−２へジョブ完了イベントを通知する。その際にもプリンタが割り振ったジョブハンドルがプリンタ２３１からサーバプリンティングシステム１２−２へ通知される。
【００４２】
イベント受信部２２６がジョブ生成イベントやジョブ完了イベントあるいはジョブ削除イベント等のイベントを受信したり、ジョブ列挙部２２７からの要求によってプリンタのキュー情報を獲得した場合、ジョブ管理部２２５は、管理しているステータスを変更する。ジョブ管理部２２５による管理ジョブのうち実際にそのジョブを管理しているクライアントのプリンティングシステム１２−１に対して、サーバプリンティングシステム１２−２は、クライアント通信部２２４経由でジョブのステータス変化を通知する。サーバ通信部２１１経由で通知を受けたクライアントプリンティングシステム１２−１は、受け取ったそのジョブのステータス変化によって管理テーブル２６を更新する。
【００４３】
また、ユーザアプリケーション等からジョブのキャンセル要求があると、クライアントプリンティングシステム１２−１はそのキャンセル要求をサーバ通信部２１１，クライアント通信部２２４経由でサーバプリンティングシステム１２−２に送信する。それを受信したサーバプリンティングシステム１２−２は、ジョブ管理部２２５により管理されているジョブのステータスに応じてキャンセル処理を実行する。この処理の詳細は後述する。
【００４４】
＜プリンタの構成＞
図３は、プリンタ内のブロック図である。このブロック図は、ジョブがエンジン部により出力されるまでの径路を示す。以下図３に従って詳細に説明する。
【００４５】
LAN３１は、ネットワークプリンタの入り口に当たる。NIC３２は、ネットワークプリンタとＬＡＮ３１とのインターフェースだる。通常ネットワークプリンタはNIC経由でコントローラへデータを流す。コントローラ部３０は、バッファメモリ３３、ジョブ管理エリア３４，エンジン部３５を含む。バッファメモリ３３は、ジョブ管理エリア３４へ登録される前に一時的にジョブが蓄えられる領域であり、また、ジョブ管理エリア３４がフル状態のときにジョブが蓄えられる領域である。ジョブ管理エリア３４には規定個数のジョブが格納され管理され、いわゆるジョブキューが形成される。規定個数は、32個、64個などプリンタにより様々である。規定個数を越えた分のジョブの管理は、ジョブ管理エリア３４では行われない。規定個数を超えた分のジョブは、バッファ部３３や、ＮＩＣ３２の内部に残されたままとなる。また、ＮＩＣ３２，バッファ部３３もフルになった場合には、LAN経由でデータを受け取らなくなる。エンジン部３５は、プリンタ内のエンジン部であり、翻訳処理、ビットマップ展開処理、印刷処理が行われる。
【００４６】
図４は、プリンタ内のジョブ管理の様子を示す模式図である。ジョブ管理エリア３４では規定個数のジョブが管理されている。管理されているジョブ情報には、システムＩＤ及びジョブハンドルも含まれる。バッファ部３３ではジョブ管理エリア３４に投入できないジョブが管理されており、NIC３２内にもバッファ３３に入りきれないジョブが存在する可能性がある。
【００４７】
ジョブ管理エリア３４がフルになった場合にもバッファ部４２にジョブがたまる可能性はある。さらにプリンタの状態により、例えば、プリンタが障害を起こしてとまった際にバッファ部３３、ＮＩＣ３２にジョブがのこる可能性はある。本プリンタとLANを経由してつながっているパーソナルコンピュータ及びそこで実現されるプリンティングシステムなどは、ジョブ管理エリア４１のジョブしか見ることができず、バッファ部３３，ＮＩＣ３２にたまっているジョブを見たり削除したりすることができない。それは、ジョブ管理エリア３４に登録されることによって初めてジョブハンドルが発生し、ジョブ生成イベントが発生することによる。サーバプリンティングシステム１２−２は、ジョブ生成イベントの通知があって初めてプリンタ内のジョブの存在を知ることになるためである。
【００４８】
図５は、サーバ２０２及びクライアント２０１のプリンティングシステム１２−１，１２−２内で使用するジョブ管理テーブル１２０１，１２０２の一例を示す図である。これは、ジョブ管理部26及び225に存在している管理テーブルであり、システムID、ジョブハンドル、ステータスが一元管理されている。
【００４９】
システムIDは、サーバプリンティングシステム１２−１が、クライアントからの印刷要求に応じて生成したジョブごとに固有のIDである。ジョブハンドルは、ジョブがジョブ管理エリア３４に格納された際にプリンタ２３１が生成し、ジョブ生成イベント、ジョブの列挙などでサーバプリンティングシステム１２−２へ知らせることができる。ステータスは、プリンティングシステム１２−１，１２−２が変更させていくものであり、本発明にかかるジョブ管理方法の基礎となっている。本例では、システムＩＤが0x00000001のジョブは、0xc9000001なるジョブハンドルを与えられており、そのステータスは「削除済み」である。削除済みのジョブは管理外となるので、このジョブはまさにこれからテーブル１２０１，１２０２から消去されようとしている。
【００５０】
次のジョブ0x00000002はプリンタへ投入され、サーバ２０２がプリンタ２３１からジョブの生成イベントを受けたか、あるいは周期的に行われるジョブの列挙によりそのステータスが得られたジョブである。すでにジョブハンドルが発生されていることから、ジョブ管理エリア３４に格納されていることがわかる。
【００５１】
次のジョブ0x0000010は、ステータスが「削除中」であり、ジョブのキャンセルコマンドをプリンティングシステム１２が発行して、削除を行っている途中であることを示している。
【００５２】
ジョブ0x0000011は、プリンタ２３１へと投入中であることを示している。これは、LPR等の印刷プロトコルの途中か、終了しているがジョブ管理エリア３４にジョブがまだたどりついていないことを示している。ジョブ管理エリア３４により管理されていないため、ジョブハンドルは生成されておらず、したがってジョブ生成イベントの発生していないためにその欄の値は初期値の0x00000000のままである。
【００５３】
ジョブ0x0000020もジョブ権利エリア３４へたどり着く前のジョブであり、したがってジョブハンドルは初期値のままである。さらにこのジョブはプリンティングシステム１２からキャンセル要求を受けた際のステータスである「削除予約」を有する。このステータスは、ジョブ管理エリア３４へ格納されたなら、直ちにプリンティングシステムによってキャンセルされる。
【００５４】
ジョブ0x0000021は未投入のジョブであり、まだLPR等の印刷プロトコルを実施せず、クライアント２０１の画像管理部２５で管理されたまである。
【００５５】
本実施形態では、以上説明したようにジョブ情報をジョブ管理テーブル１２０１，１２０２により管理し、特に「削除予約」ステータスを設け、ジョブ管理エリア３４にジョブが格納されたことを知ってからユーザのキャンセルを実行することで、確実にジョブを削除することができるようになった。「削除予約」ステータスを設けないと、ジョブ管理エリア３４に到達していないジョブのキャンセル要求があったことを記憶できず、そのジョブを実行し印刷も行ってしまう。
【００５６】
＜印刷要求の処理＞
図６は、アプリケーション等からクライアントプリンティングシステム１２−１に対して印刷要求が発生した際のフローチャートである。以下、図６に従って詳細に説明する。
【００５７】
ステップS61は、システムIDの割り当てをするステップである。クライアント２０１に対して印刷要求が出されると、クライアントプリンティングシステム１２−１は、印刷を一元管理しているサーバプリンティングシステム１２−２に対して印刷開始要求を発行する。サーバプリンティングシステム１２−２は、その印刷開始要求に対してシステムにおいて固有の識別子を割り当てる。これがシステムIDである。サーバプリンティングシステム１２−２は、割り当てたシステムＩＤをクライアントプリンティングシステム１２−１に送信する。サーバプリンティングシステム１２−２では、印刷開始要求に対して割り当てたシステムＩＤをジョブ管理テーブル１２０２に登録する。その際、ステータスは「未投入」、ジョブハンドルは０としておく。これは図６のステップＳ６２，Ｓ６３と同様である。
【００５８】
サーバから割り当てられたシステムＩＤを受信したクライアントプリンティングシステム１２−１は、ステップS62で、ジョブ管理テーブル１２０１へのシステムＩＤの登録処理をおこなう。ジョブハンドルは初期値の０がセットされる。
【００５９】
ステップS63では、ステップＳ６２でジョブ管理テーブル１２０１に登録したジョブのステータス部に「未投入」をセットする。
【００６０】
ステップS64では、サーバ２０２からの印刷順序コマンドを待ち、順番がきたら、S65へ進み投入を開始する。ジョブの投入の開始は、LPR等のプロトコルにより行われる。投入されるジョブの情報には、割り当てられたシステムＩＤも含まれている。なお、このとき、サーバ２０２へもジョブを投入した旨通知する。これを受けたサーバでは、そのジョブのステータスを「未投入」から「投入中」へ変更する。
【００６１】
ステップS66では、クライアント２０１でも、プリンタ２３１へ投入したジョブの管理テーブル１２０１におけるステータスを「投入中」に変更する。ステップS67では、印刷手順を終了する。
【００６２】
以上の手順により、クライアント２０１はジョブにシステムＩＤを割り当ててプリンタ２３１に投入し、ジョブ管理テーブルの内容を更新する。サーバ２０２も、クライアント２０１の有するジョブ管理テーブル１２０１に合わせて、ジョブ管理テーブル１２０２の内容を更新する。
【００６３】
＜ジョブキャンセル要求の処理＞
次に、サーバプリンティングシステム１２−２による、クライアントプリンティングシステム１２−１から受信したジョブキャンセル要求の処理手順を説明する。前述のように、アプリケーション等からジョブキャンセルの要求が出されると、クライアントプリンティングシステム１２−１は、サーバプリンティングシステム１２−２に対して、ジョブキャンセル要求を発行する。図９はそれを受信したサーバプリンティングシステム１２−２による動作手順である。
【００６４】
ステップS81では、受信したジョブキャンセル要求からキャンセルしようとするジョブのシステムIDを取得する。このシステムIDはキャンセル要求に含まれるもので、管理テーブル１２０２にも同じIDが登録されている。ステップS82では、管理テーブル１２０２上のステータスを確認する。ステップS83では、そのステータスが「投入中」であるか判定する。もし投入中でなければ、ステップS84へ進み、「投入済み」か確認する。投入済みであれば、プリンタのジョブ管理エリア３４に存在するということなので、ステップS85でジョブキャンセルコマンドをプリンタ２３１に対して発行する。ステップS86では、キャンセルコマンドの応答を受信する。ステップS87は、ステータスを削除中に変えている。
【００６５】
一方、ステップS84で「投入済み」でないと判定されると、ステップS89へ進み「未投入」か否かが判定され、未投入であると管理テーブル１２０２からジョブ情報を削除し、未投入ジョブを本プリンティングシステムから消去する。ステップS83で「投入中」と判定されると、ステップS88へ進み、ステータスを「削除予約」にする。これは、そのジョブはすでにプリンタ２３１に対して投入されてはいるが、未だにプリンタのジョブ管理エリア３４に登録されていない状態であることから、プリンタに対してキャンセルコマンドを発行できない、あるいは、発行しても削除できないためである。
【００６６】
このようにして、キャンセル要求に対しては、削除できるジョブは削除し、削除できなジョブは削除予約としておく。削除予約とされたジョブは、次に説明するイベント処理手順により、削除可能となり次第削除される。
【００６７】
＜イベント処理手順＞
図７は、サーバプリンティングシステム１２−２に対してプリンタ２３１からイベントが発生した際の処理手順を示すフローチャートである。以下図７に従って詳細に説明する。
【００６８】
ステップS71は、イベントの受信を待っているステップである。イベントを受信するとステップS72へ進む。ステップS72は、受信したイベントがジョブ生成イベントか否かを判定するステップである。
【００６９】
ジョブ生成イベントでない場合には、ステップS78でジョブ削除イベントか否かを判定する。ジョブ削除イベントであれば、ステップS79へ進む。ステップS79では、ジョブ削除イベントから削除されたジョブのジョブハンドルを取得する。
【００７０】
ステップS710では取得されたジョブハンドルを管理テーブル１２０２から検索し、ステップS71で、削除されたジョブがジョブ管理テーブル１２０２で上管理されていたか否かを判定する。登録されていればステップS711からステップS712へ進む。
【００７１】
ステップS712では、該当ジョブのステータスを「削除済み」に変更する。ステップS713では、そのジョブ情報を管理テーブル１２０２から削除する。
【００７２】
一方、受信したイベントがジョブ生成イベントの場合に、ステップS73において、プリンタが管理するジョブのハンドルを取得する。
【００７３】
ステップS74は、プリンタ２３１から、ジョブ生成イベントで通知されたジョブに対応するシステムIDを取得するステップである。これにはステップS73で取得したジョブハンドルが用いられる。所定のシステムＩＤ取得命令を、ジョブハンドルととともプリンタに送信することで、このシステムＩＤの取得が行われる。
【００７４】
プリンタは、ステップS75で発行された命令を受信すると、命令とともに受信したジョブハンドルが付されたジョブをジョブ管理エリア３４から検索し、そのジョブハンドルと、それに対応するシステムＩＤをサーバプリンティングシステム１２−２に応答する。
【００７５】
ステップS75は、ステップS74で発行した命令に対する応答をプリンタ２３１から受信するステップである。
【００７６】
ステップS76では、ステップS75で受信した応答に含まれるシステムIDを有するジョブのジョブハンドルとして、そのシステムＩＤとともに受信したジョブハンドルを、ジョブ管理テーブル１２−２に登録する。
【００７７】
次に、ステップＳ９１では、ステップS75でジョブハンドルを登録したジョブのステータスが「削除予約」であるか判定する。「削除予約でなければ、そのジョブのステータスは「投入中」であるはずなので、ステップS77で、管理テーブル１２−２上のそのジョブのステータスを「投入済み」とする。
【００７８】
ステップＳ９１での判定の結果、既に「削除予約」となっていれば、ステップS92に進む。ステップS92では、そのジョブを指定してジョブキャンセルコマンドをプリンタ２３１へ発行する。ステップS93では、その結果を受信するまで待つ。
【００７９】
プリンタ２３１から応答がくればステップS94へ移行し、そのジョブのステータスを「削除中」とする。削除中のジョブは、プリンタからのジョブ削除イベントによって、ステップS78〜S713の手順により削除済みになる。
【００８０】
このように、未だプリンタ２３１のジョブ管理エリアに登録されていないジョブに対して「削除予約」のステータスをセットしておくことで、ジョブが管理エリアに投入された場合に、ただちにそのジョブのキャンセルを実行することが可能になる。
【００８１】
＜ジョブ列挙処理＞
図９は本プリンティングシステムが持つ、プリンタ内のジョブを列挙させるタスクの処理を記載しているフローチャートである。
【００８２】
ステップS101は、適当な時間、例えば10秒間スリープするステップである。すなわち、本タスク（図９の手順）は、10秒間隔で起動される。
【００８３】
10秒経ったならば、ステップS102へ進み、ジョブの列挙コマンドをプリンタ２３１に発行する。このコマンドは、プリンタがジョブ管理エリア３４に管理しているプリント待ちジョブキューの一覧を列挙させるためのコマンドである。ステップS103は、プリンタからのジョブキューを待つステップであり、列挙されると、すなわちジョブキューが返されるとステップS104へ進む。ジョブの列挙は、プリンタ内に存在する全ジョブのジョブハンドルをプリンタが返すことで行われる。ステップS104は、列挙されたジョブがあるか否かを判定するステップである。ジョブが複数あれば、本ステップをとおるたびに次のジョブがあるかの判定が行われる。
【００８４】
ジョブが存在すればステップS105へ進み、列挙されたジョブハンドルに対応するシステムIDが何であるかをプリンタに問い合わせる。ステップS106はその応答を待つ。ステップS106でシステムIDが返されて管理テーブル上のステータスを知ることができる。
【００８５】
ステータスが「削除予約」であれば、ジョブが本列挙によって生成されたとみなし、ステップS108へ向かいジョブのキャンセルコマンドを発行する。ステップS109は、その応答を待つステップである。ステップS1010は、管理テーブル上のステータスを「削除中」に変更している。次にステップS104に向かいステップS105からステップS1010までの処理を列挙されたジョブの数だけ繰り返す。つまり、何らかの理由でジョブ生成イベントがこなかった場合を考慮して、ジョブの列挙を行うことで、列挙からジョブの生成を知ることができる。しかも、ステータスが「削除予約」であることを検知し、そこから、キャンセルコマンドをプリンタに発行させることができる。本例では、ジョブの列挙間隔を10秒で説明したが、プリンタの種類によって間隔を決めてもよい。
【００８６】
以上のようにして、アプリケーションなどから印刷ジョブの削除要求があった場合、プリンティングシステムは、削除要求されたジョブが、プリンタのジョブ管理エリアに登録されて削除可能となっているか否か判定し、未だ登録されずに削除可能な状態となっていない場合には、そのジョブを「削除予約」としておく。そして、プリンタからのジョブ生成イベントによって、削除予約された印刷ジョブがプリンタのジョブ管理エリアに登録された旨の通知を受けると、そのときに削除予約されたジョブのキャンセル命令をプリンタに対して発行する。あるいは、プリンティングシステムがプリンタに対して発行したジョブ列挙コマンドに対する応答として、削除予約された印刷ジョブのジョブハンドルが得られ、その印刷ジョブがプリンタのジョブ管理エリアに登録された旨を知った場合に、削除予約されたジョブのキャンセル命令をプリンタに対して発行する。
【００８７】
このようにして、従来キャンセルすることのできなかった、プリンタに対して発行されてはいるものの、そのプリンタの管理下におかれていない印刷ジョブについても、確実に削除することができる。
【００８８】
【他の実施形態】
本例では、ネットワークプリンタを例に示したが、プリンタは、パラレルインターフェースなどで接続されるローカルプリンタでもよく、プリンタの種類に限定はない。
【００８９】
本例では、ジョブ生成イベント、及びジョブの列挙両方のフローチャートを示しキャンセルの実施に関して説明したが、どちらか一方の機能で実現しても構わない。
【００９０】
プリンタにより独自な方法でジョブの生成を知ってもよく、ジョブの生成を知った後で、削除することができるところに特徴がある。
【００９１】
プリンタのコントローラ部にバッファが存在していなくてもよく、プリンタ内の構成には、影響しない。
【００９２】
【発明の効果】
以上説明したように、本発明によれば、プリンタにおけるジョブ状態を把握することで、ジョブの削除要求に対して、指定されたジョブの状態が削除される条件を満たしていない場合には、そのジョブの状態が削除される条件に至るまで削除を繰り延べ、当該条件に至った際に、直ちにそのジョブを削除することで、印刷ジョブの削除を迅速且つ確実に行うことが可能となった。
【図面の簡単な説明】
【図１】システムブロック図である。
【図２】印刷システムの内部ブロック図である。
【図３】プリンタ内のブロック図である。
【図４】プリンタ内のジョブ管理を示すブロック図である。
【図５】本プリンティングシステム内で使用するジョブ管理テーブル図である。
【図６】本プリンティングシステムに対して印刷要求が発生した際のフローチャートである。
【図７】本プリンティングシステムに対してプリンタからイベントが発生した際のフローチャートである。
【図８】本プリンティングシステムに対して上位アプリケーションよりジョブのキャンセル要求が発生した際のフローチャートである。
【図９】ジョブを列挙させる処理を示すフローチャートである。
【符号の説明】
１１は、印刷を行おうとするユーザアプリケーションプログラム
１２は、本発明による機能を搭載した、プリンティングシステム
１３は、ネットワークプリンタ
【図１】
0004408590.tif 000002
【図２】
0004408590.tif 000003
【図３】
0004408590.tif 000004
【図４】
0004408590.tif 000005
【図５】
0004408590.tif 000006
【図６】
0004408590.tif 000007
【図７】
0004408590.tif 000008
【図８】
0004408590.tif 000009
【図９】
0004408590.tif 000010