(57)【要約】【課題】複数のクライアント端末コンピュータからネットワークプリンタに対して、複数の印刷ジョブの処理を行った場合において、印刷ジョブと印刷ジョブとの間に、他のクライアント端末コンピュータの印刷ジョブが割り込まれることを防止する印刷ジョブ管理プログラムを提供する。【解決手段】クライアント端末コンピュータからネットワークプリンタに対して送信する印刷ジョブ毎にネットワークの通信セッションを張るのではなく、１回の通信セッションで複数の印刷ジョブを送信し得るようにし、同一のクライアント端末コンピュータの複数の印刷ジョブの間に、他のクライアント端末コンピュータからの印刷ジョブを割り込ませないようにする。【選択図】図４
2008129978.tif 000002
【特許請求の範囲】
【請求項１】
印刷を指示する１乃至複数のクライアント端末コンピュータと印刷を実行する１乃至複数のネットワークプリンタとがネットワークを介して接続され、前記クライアント端末コンピュータから印刷指示された印刷ジョブを前記ネットワークプリンタにて印刷するネットワーク印刷システムにおいて、前記クライアント端末コンピュータに実行させるプログラムであって、
Ａ）印刷ジョブを格納する第２のプリントスプーラ領域を確保するステップと、
Ｂ）第１のプリントスプーラ領域にある印刷ジョブを前記第２のプリントスプーラ領域に移動し格納するステップと、
Ｃ）前記第２のプリントスプーラ領域に印刷ジョブが存在し、且つ、前記ネットワークプリンタとの通信セッションが確立していない場合は、前記ネットワークプリンタとの通信セッションを開始するステップと、
Ｄ）前記第２のプリントスプーラ領域にある印刷ジョブを前記ネットワークプリンタに送信するステップと、
Ｅ）前記第２のプリントスプーラ領域に印刷ジョブが存在するか否かを確認するステップと、
Ｆ）前記第２のプリントスプーラ領域に印刷ジョブが存在する間は前記Ｄ）乃至Ｆ）の処理を行うステップと、
Ｇ）前記第２のプリントスプーラ領域に印刷ジョブが存在しない場合、前記ネットワークプリンタとの通信セッションを終了するステップと、
を前記クライアント端末コンピュータに実行させることを特徴とする印刷ジョブ管理プログラム。
【請求項２】
印刷を指示する１乃至複数のクライアント端末コンピュータと印刷を実行する１乃至複数のネットワークプリンタとがネットワークを介して接続され、前記クライアント端末コンピュータから印刷指示された印刷ジョブを前記ネットワークプリンタにて印刷するネットワーク印刷システムにおいて、前記クライアント端末コンピュータに実行させるプログラムであって、
Ａ）印刷ジョブを格納する第２のプリントスプーラ領域を確保するステップと、
Ｂ）第１のプリントスプーラ領域にある印刷ジョブを前記第２のプリントスプーラ領域に移動し格納するステップと、
Ｃ）前記第２のプリントスプーラ領域に印刷ジョブが存在し、且つ、前記ネットワークプリンタとの通信セッションが確立していない場合は、前記ネットワークプリンタとの通信セッションを開始するステップと、
Ｄ）前記第２のプリントスプーラ領域にある印刷ジョブを前記ネットワークプリンタに送信するステップと、
Ｅ）前記第２のプリントスプーラ領域に印刷ジョブが存在するか否かを確認するステップと、
Ｆ）前記第２のプリントスプーラ領域に印刷ジョブが存在する間は前記Ｄ）乃至Ｆ）の処理を行うステップと、
Ｇ）前記第２のプリントスプーラ領域に印刷ジョブが存在しない場合、タイマーを開始するステップと、
Ｈ）前記タイマーが所定時間を経過する前に印刷ジョブが前記第２のプリントスプーラ領域に格納された場合は、前記Ｄ）乃至Ｈ）の処理を行うステップと、
Ｉ）前記タイマーが所定時間を経過した場合、前記ネットワークプリンタとの通信セッションを終了するステップと、
を前記クライアント端末コンピュータに実行させることを特徴とする印刷ジョブ管理プログラム。
【請求項３】
前記クライアント端末コンピュータの画面操作により、前記第２のプリントスプーラ領域にある印刷ジョブを制御するステップを更に前記クライアント端末コンピュータに実行させることを特徴とする請求項１又は２に記載の印刷ジョブ管理プログラム。
【請求項４】
ネットワーク上の他のクライアント端末コンピュータから印刷ジョブを受付けるステップと、
前記他のクライアント端末コンピュータの印刷ジョブを前記第２のプリントスプーラ領域に格納するステップと、
を更に前記クライアント端末コンピュータに実行させることを特徴とする請求項１乃至３のいずれか１つに記載の印刷ジョブ管理プログラム。
【請求項５】
前記ネットワークプリンタに対してステータス要求を行い、前記ネットワークプリンタから専有信号を受信した場合、前記ネットワークプリンタを専有しているクライアント端末コンピュータを特定するステップと、
前記ネットワークプリンタを専有しているクライアント端末コンピュータに対して印刷ジョブを送信するステップと、
を更に前記クライアント端末コンピュータに実行させることを特徴とする請求項１乃至４のいずれか１つに記載の印刷ジョブ管理プログラム。
【請求項６】
前記第２のプリントスプーラ領域が、ユーザアカウント毎にスプール領域を割り当てられることを特徴とする請求項１乃至５のいずれか１つに記載の印刷ジョブ管理プログラム。
【請求項７】
請求項１乃至６のいずれか１つに記載の印刷ジョブ管理プログラムを記録したコンピュータ読み取り可能な記憶媒体。
【請求項８】
印刷を指示する１乃至複数のクライアント端末コンピュータと印刷を実行する１乃至複数のネットワークプリンタとがネットワークを介して接続され、前記クライアント端末コンピュータから印刷指示された印刷ジョブを前記ネットワークプリンタにて印刷する印刷ジョブ管理システムであって、
前記クライアント端末コンピュータは、
Ａ）印刷ジョブを格納する第２のプリントスプーラ領域を確保する手段と、
Ｂ）第１のプリントスプーラ領域にある印刷ジョブを前記第２のプリントスプーラ領域に移動し格納する手段と、
Ｃ）ネットワーク上の他のクライアント端末コンピュータから印刷ジョブを受付ける手段と、
Ｄ）前記他のクライアント端末コンピュータの印刷ジョブを前記第２のプリントスプーラ領域に格納する手段と、
Ｅ）前記第２のプリントスプーラ領域に印刷ジョブが存在し、且つ、前記ネットワークプリンタとの通信セッションが確立していない場合は、前記ネットワークプリンタとの通信セッションを開始する手段と、
Ｆ）前記ネットワークプリンタに対してステータス要求を行い、前記ネットワークプリンタから専有信号を受信した場合、前記ネットワークプリンタを専有しているクライアント端末コンピュータを特定する手段と、
Ｇ）前記ネットワークプリンタを専有しているクライアント端末コンピュータに対して印刷ジョブを送信する手段と、
Ｈ）前記第２のプリントスプーラ領域にある印刷ジョブを前記ネットワークプリンタに送信する手段と、
Ｉ）前記第２のプリントスプーラ領域に印刷ジョブが存在するか否かを確認する手段と、
Ｊ）前記第２のプリントスプーラ領域に印刷ジョブが存在する間は前記Ｈ）乃至Ｊ）の処理を行う手段と、
Ｋ）前記第２のプリントスプーラ領域に印刷ジョブが存在しない場合、タイマーを開始する手段と、
Ｌ）前記タイマーが所定時間を経過する前に印刷ジョブが前記第２のプリントスプーラ領域に格納された場合は、前記Ｈ）乃至Ｌ）の処理を行う手段と、
Ｍ）前記タイマーが所定時間を経過した場合、前記ネットワークプリンタとの通信セッションを終了する手段と、
を備え、
前記ネットワークプリンタは、
Ｎ）前記クライアント端末コンピュータからステータス要求を受信した場合に、ステータス応答を返信する手段と、
Ｏ）前記クライアント端末コンピュータから専有中のクライアント端末コンピュータの問合せを受けた場合、前記専有中のクライアント端末コンピュータの識別情報を返信する手段と、
を備えたことを特徴とする印刷ジョブ管理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークプリンタに対して、クライアント端末コンピュータから複数の印刷ジョブの処理を行う際に、他のクライアント端末コンピュータからの印刷ジョブの割り込みを防止し得るプログラムおよびシステムに関する。
【背景技術】
【０００２】
ネットワークプリンタは複数のクライアント端末コンピュータの共用プリンタであり、ネットワークを経由して、複数のクライアント端末コンピュータから印刷ジョブを受付ける。通常、ネットワークプリンタは、印刷ジョブを管理する機能を有しないため、印刷ジョブを受付けた順番に印刷を行う。このため、複数のクライアント端末コンピュータからネットワークプリンタに対して、複数の印刷ジョブの処理を行った場合、以下に述べるような問題が生じる。
【０００３】
先ず、印刷ジョブと印刷ジョブとの間に、他のクライアント端末コンピュータの印刷ジョブが割り込んで印刷されることがある。かかる場合、印刷物の中に、意図しない他人の印刷物が混じってしまうこととなり好ましくない。すなわち、印刷枚数が多い場合は、別のクライアント端末コンピュータの印刷ジョブがどこに割り込まれたのかを探す作業が大変煩雑である。
【０００４】
また、別のクライアント端末コンピュータの印刷ジョブが割り込まれて、意図しない他人の印刷物が混じっていることに気がつかず、そのまま印刷物をネットワークプリンタの所から持っていってしまう場合もある。
また、封筒の宛名印刷など差込み印刷で非定型印刷を大量に行う場合に、他の印刷ジョブが割り込まれることにより、印刷用紙の不一致な印刷が行われてしまう場合もある。
更に、帳票処理ソフトによっては、ファイル単位で印刷要求しても、帳票シート単位で印刷ジョブが分かれるものもあり、別のクライアント端末コンピュータの印刷ジョブが割り込まれることが少なくない。
【０００５】
これを解決するために、印刷ジョブと印刷ジョブとの間に、他のクライアント端末コンピュータの印刷ジョブが割り込んで印刷されることを防止するために、例えば、印刷ジョブに識別番号を割り当て、必要に応じて印刷ジョブが統合され、関連する印刷ジョブを連続印刷するものがある（例えば、特許文献１を参照）。
【０００６】
【特許文献１】特開平１１−１９４９０５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
Ｗｉｎｄｏｗｓ（登録商標）に代表されるＯＳ（オペレーティング・システム）環境における従来のネットワークプリンタに対する印刷処理は、文書処理ソフトウェアや帳票処理ソフトウェアなどのアプリケーション・プログラムから印刷を実行すると、プリントスプーラ領域に印刷ジョブが格納され、プリンタドライバに関連付けられたポートモニタ・プログラムが起動される。かかるポートモニタ・プログラムは、プリントスプーラ領域から印刷ジョブを読み込み、ＬＰＲ（Line printer daemon）等の印刷プロトコルを用いて、印刷ジョブをネットワークプリンタに送信する。
【０００８】
かかる印刷ジョブを送信する場合において、上記ポートモニタ・プログラムは、ネットワークプリンタに送信する印刷ジョブ毎に、ネットワークプリンタとの間で通信セッションを確立し、印刷ジョブの送信が完了すると確立した通信セッションを切断していた。ポートモニタ・プログラムは、印刷ジョブ毎に起動されるため、複数の印刷ジョブを印刷した場合でも、１個の印刷ジョブの印刷が完了する度に、一旦通信セッションが切断されてしまう。
【０００９】
従来のシステムにおけるネットワークプリンタは、１個の印刷ジョブの印刷を完了すると、次の印刷ジョブを受付けるが、ネットワーク上の複数のクライアント端末コンピュータから印刷要求があった場合、必ずしも前回と同一のクライアント端末コンピュータの印刷ジョブを受付けるとは限らない。そのため、複数の印刷ジョブの間に、他のクライアント端末コンピュータからの印刷ジョブが割り込まれるといった状態が生じるのである。
【００１０】
上記の内容について図１〜図３を用いてより詳細に説明する。図１は、従来のシステムのネットワーク印刷において、クライアント端末コンピュータからネットワークプリンタに対して印刷処理を行う場合の機能ブロック図を示している。また、図２は、従来のシステムのネットワーク印刷において、複数のクライアント端末コンピュータからネットワークプリンタに対して印刷する場合の問題点の説明図である。また、図３は、従来のシステムのネットワーク印刷の通信セッション・フロー図を示している。
【００１１】
図１において、クライアント端末コンピュータ１００のアプリケーション・プログラム１１０から印刷を実行すると、プリンタドライバ１２０を介して、プリントスプーラ領域１３０に印刷ジョブ１３１が格納され、プリンタドライバ１２０に関連付けられたポートモニタ・プログラム１４０が起動される。ポートモニタ・プログラム１４０は、プリントスプーラ領域１３０から印刷ジョブ１３１を読み込み、ネットワークプリンタ３００との間で通信セッション（本明細書では、通信セッションを、データ転送の開始や終了にかかわる一連の過程と定義する。）を確立する。かかる通信セッションを確立すると、ポートモニタ・プログラム１４０は、印刷ジョブ１３１をネットワークプリンタ３００に送信し、ネットワークプリンタ３００は印刷ジョブ１３１を印刷出力する。
【００１２】
ここで、クライアント端末コンピュータ１００のアプリケーション・プログラム１１０から複数の印刷が連続して実行されると、プリントスプーラ領域１３０に複数の印刷ジョブ１３１，１３２，・・・が格納される。そして、プリンタドライバ１２０に関連付けられたポートモニタ・プログラム１４０が、印刷ジョブごとに複数回起動される。ポートモニタ・プログラム１４０は、ネットワークプリンタ３００との間で印刷ジョブ毎に通信セッションを確立して、印刷ジョブ１３１，１３２，・・・をネットワークプリンタ３００に送信する。つまり、図３に示されるようにネットワークプリンタとの間で確立される通信セッションは印刷ジョブ毎に行われるのである。
【００１３】
図３を用いて詳細に説明する。クライアント端末コンピュータ１００のポートモニタ・プログラム１４０は、印刷ジョブ１３１を読み込むとネットワークプリンタ３００に対してコネクト要求を行う（ステップＳ３１）。これを受けてネットワークプリンタ３００はコネクト応答を行う（ステップＳ３２）。これにより通信セッションが確立される。通信セッションが確立すると、クライアント端末コンピュータ１００のポートモニタ・プログラム１４０は、印刷ジョブ１３１をネットワークプリンタ３００に送信する（ステップＳ４１）。ここでポートモニタ・プログラム１４０は印刷ジョブ１３１を処理するために起動されたので、プリントスプーラ領域１３０に他の印刷ジョブ１３２が残っている場合でも、印刷ジョブ１３１の送信処理が完了すれば、ネットワークプリンタ３００に対して通信セッションの終了処理を行う。具体的には、ポートモニタ・プログラム１４０はディスコネクト要求を送信し（Ｓ５１）、これを受けてネットワークプリンタ３００はディスコネクト応答を行う（Ｓ５２）。これにより通信セッションが終了する。ここでプリントスプーラ領域１３０に印刷ジョブ１３２が残っている場合は、当該印刷ジョブ１３２に対して再びポートモニタ・プログラム１４０が起動され同様の処理を行う。
【００１４】
従って、ネットワークプリンタ３００において、クライアント端末コンピュータ１００からの複数印刷ジョブを処理中に、他のクライアント端末コンピュータのアプリケーション・プログラムから印刷を実行されると、以下に説明するように、他のクライアント端末コンピュータの印刷ジョブがクライアント端末コンピュータ１００の複数印刷ジョブの途中に割り込む場合が生じるのである。
【００１５】
図２を用いてこれを説明する。まず、クライアント端末コンピュータ１００のアプリケーション・プログラム１１０から印刷を実行する。このとき、プリントスプーラ領域１３０には複数の印刷ジョブ１３１，１３２，・・・が格納されたとする。これは、印刷対象データの容量が大きく複数の印刷ジョブに分割された場合、またはユーザが短時間に複数の印刷指示を行った場合などに生じる。印刷ジョブ１３１，１３２，・・・は、先に説明したようにポートモニタ・プログラム１４０によって個別に処理されるので、まず、ポートモニタ・プログラム１４０は、印刷ジョブ１３１を送信するための通信セッションを確立する。
【００１６】
ここで、クライアント端末コンピュータ１００の通信セッションが確立した後に、クライアント端末コンピュータ２００のポートモニタ・プログラム２４０から印刷ジョブ２３１のための通信セッションのコネクト要求が行われたとする。この場合、ネットワークプリンタ３００は、既に、クライアント端末コンピュータ１００との通信セッションを確立しているので、かかる通信セッションを確立している間は、クライアント端末コンピュータ１００の専有状態となっている。従って、ネットワークプリンタ３００は、クライアント端末コンピュータ２００から通信セッションのコネクト要求があると、コネクト応答を行い、通信セッションの確立はするが、印刷ジョブ２３１を受信待ちの状態とする。そして、クライアント端末コンピュータ１００のポートモニタ・プログラム１４０が印刷ジョブ１３１の通信セッションを終了すると、待ち状態となっていたクライアント端末コンピュータ２００からの印刷ジョブ２３１の受信処理を行う。そして、クライアント端末コンピュータ２００の通信セッション終了までクライアント端末コンピュータ２００の専有状態となる。その後、クライアント端末コンピュータ１００の印刷ジョブ１３２の受信処理が行われる。
【００１７】
ネットワークプリンタ３００は受信した印刷ジョブを受信した順番で印刷出力するので、その結果、印刷ジョブ１３１と１３２の間に他のクライアント端末コンピュータ２００の印刷ジョブ２３１が割り込むのである。このように、従来のネットワーク印刷においては、ネットワークプリンタ３００との間で印刷ジョブ毎に通信セッションを確立しているので、図２に示すように、印刷ジョブ２３１が印刷ジョブ１３１，１３２，・・・の途中に割り込まれるのである。
【００１８】
こうした状況になると、他のクライアント端末コンピュータ２００の印刷物が、クライアント端末コンピュータ１００の印刷物に混じって印刷されることになる。
また、クライアント端末コンピュータ１００において複数のアプリケーション・プログラムが同時に印刷を実行した場合も同様な状態を生じることとなる。
【００１９】
本発明は、上記の問題点に鑑みてなされたものであり、複数のクライアント端末コンピュータからネットワークプリンタに対して、複数の印刷ジョブの処理を行った場合において、印刷ジョブと印刷ジョブとの間に、他のクライアント端末コンピュータの印刷ジョブが割り込まれることのない印刷ジョブ管理プログラムおよび印刷ジョブ管理システムを提供することを目的としている。
【課題を解決するための手段】
【００２０】
上記の目的を達成するため、本発明は、印刷ジョブ毎にネットワークの通信セッションを張るのではなく、１回の通信セッションで複数の印刷ジョブを送信するようにし、同一のクライアント端末コンピュータの複数の印刷ジョブの間に、他のクライアント端末コンピュータからの印刷ジョブを割り込ませないようにするものである。
このために、本発明に係る請求項１の印刷ジョブ管理プログラムは、印刷を指示する１乃至複数のクライアント端末コンピュータと印刷を実行する１乃至複数のネットワークプリンタとがネットワークを介して接続され、前記クライアント端末コンピュータから印刷指示された印刷ジョブを前記ネットワークプリンタにて印刷するネットワーク印刷システムにおいて、前記クライアント端末コンピュータに実行させるプログラムであって、以下の（ａ）〜（ｇ）のステップを実行させる。
【００２１】
（ａ）印刷ジョブを格納する第２のプリントスプーラ領域を確保するステップ
（ｂ）第１のプリントスプーラ領域にある印刷ジョブを第２のプリントスプーラ領域に移動し格納するステップ
（ｃ）第２のプリントスプーラ領域に印刷ジョブが存在し、且つ、ネットワークプリンタとの通信セッションが確立していない場合は、ネットワークプリンタとの通信セッションを開始するステップ
（ｄ）第２のプリントスプーラ領域にある印刷ジョブをネットワークプリンタに送信するステップ
（ｅ）第２のプリントスプーラ領域に印刷ジョブが存在するか否かを確認するステップ
（ｆ）第２のプリントスプーラ領域に印刷ジョブが存在する間は前記ｄ）乃至ｆ）の処理を行うステップ
（ｇ）第２のプリントスプーラ領域に印刷ジョブが存在しない場合、ネットワークプリンタとの通信セッションを終了するステップ
【００２２】
印刷を指示する１乃至複数のクライアント端末コンピュータと印刷を実行する１乃至複数のネットワークプリンタとがネットワークを介して接続され、前記クライアント端末コンピュータから印刷指示された印刷ジョブを前記ネットワークプリンタにて印刷するネットワーク印刷システムにおいては、アプリケーション・プログラムとプリンタドライバとプリントスプーラ領域（第１のプリントスプーラ領域）を備えており、アプリケーション・プログラムから印刷指示を受けたタイミングで、ポートモニタ・プログラムが呼出され、ネットワークプリンタにプリントスプーラ領域に存在する印刷ジョブを送信している。
【００２３】
本発明の印刷ジョブ管理プログラムは、印刷ジョブを格納する第２のプリントスプーラ領域を確保するステップ（ａ）を実行させる。
第２のプリントスプーラ領域を確保するのは、第１のプリントスプーラ領域に格納された印刷ジョブの処理において、印刷ジョブ毎に上記ポートモニタ・プログラムが呼出され、ネットワークプリンタに送信されているのを回避するためである。
すなわち、第２のプリントスプーラ領域を確保して、第１のプリントスプーラ領域に格納された印刷ジョブ毎に呼出されるポートモニタ・プログラムに、ネットワークプリンタに印刷ジョブを送信させるのではなく、第１のプリントスプーラ領域にある印刷ジョブを第２のプリントスプーラ領域に移動し格納するステップ（ｂ）を行わせるのである。
そして、第２のプリントスプーラ領域内に格納された複数の印刷ジョブを纏めて、１回の通信セッションでネットワークプリンタに送信するのである。
【００２４】
第２のプリントスプーラ領域に印刷ジョブが存在し、且つ、ネットワークプリンタとの通信セッションが確立していない場合は、ネットワークプリンタとの通信セッションを開始するステップ（ｃ）としたのは、第２のプリントスプーラ領域に連続した印刷ジョブが格納されたときに、既にネットワークプリンタとの通信セッションが確立している場合、ネットワークプリンタとの通信セッションを新たに開始しないで、先に開始された通信セッションの中で印刷ジョブをネットワークプリンタに送信するためである。
【００２５】
そして、第２のプリントスプーラ領域にある印刷ジョブをネットワークプリンタに送信するステップ（ｄ）において、確立した通信セッションにより印刷ジョブがネットワークプリンタに送信される。
【００２６】
第２のプリントスプーラ領域に印刷ジョブが存在するか否かを確認するステップ（ｅ）としたのは、印刷ジョブを送信した後に他の印刷ジョブが第２のプリントスプーラ領域に存在する場合には、通信セッションを終了することなく、継続して既に確立した通信セッションを利用して印刷ジョブを送信するためである。
【００２７】
こうして、第２のプリントスプーラ領域に印刷ジョブが存在する間は前記ｄ）乃至ｆ）の処理を行うステップ（ｆ）を行わせるのである。
【００２８】
そして、第２のプリントスプーラ領域に印刷ジョブが存在しない場合、ネットワークプリンタとの通信セッションを終了するステップ（ｇ）としたのは、第２のプリントスプーラに印刷ジョブがなくなったときには、ネットワークプリンタの専有状態を解除し、通信セッションを確立し待ち状態となっている他のクライアント端末コンピュータにネットワークプリンタの使用権を与えるために通信セッションを終了するためである。
【００２９】
ここで、上記ステップ（ａ）と（ｃ）〜（ｇ）を備える部分のプログラムは、ポートモニタ・プログラムと区別すべく、印刷サービス・プログラムと定義する。
【００３０】
本発明の印刷ジョブ管理プログラムにおいてネットワークプリンタに対する印刷は、文書ソフトウェアや帳票ソフトウェアなどのアプリケーションから印刷を行うと、標準のプリントスプーラ領域（第１のプリントスプーラ領域）に印刷ジョブが格納され、プリンタドライバに関連付けられたポートモニタ・プログラムが起動される。ポートモニタ・プログラムは、第１のプリントスプーラ領域から印刷ジョブを読み込み、第２のプリントスプーラ領域に印刷ジョブを格納する。印刷サービス・プログラムは常駐しており、周期的に第２のプリントスプーラ領域の状態を監視する。第２のプリントスプーラ領域に印刷ジョブが格納されると印刷サービス・プログラムが第２のプリントスプーラ領域に格納されている印刷ジョブを読み込み、ネットワークプリンタに印刷ジョブを送信する。印刷サービス・プログラムは、印刷が完了しても、第２のプリントスプーラ領域に印刷ジョブが存在している間は、ネットワークの通信セッションを確立した状態を保持する。印刷サービス・プログラムは、第２のプリントスプーラ領域に印刷ジョブがなくなったときに、ネットワークの通信セッションを終了する。
【００３１】
本発明の印刷ジョブ管理プログラムは、クライアント端末コンピュータにインストールするだけで、ネットワークプリンタは既存のまま変更することなく、複数の印刷ジョブの印刷の際に、他のクライアント端末コンピュータからの印刷ジョブの割り込みを防止することができるのである。
【００３２】
また、本発明に係る請求項２の印刷ジョブ管理プログラムは、印刷を指示する１乃至複数のクライアント端末コンピュータと印刷を実行する１乃至複数のネットワークプリンタとがネットワークを介して接続され、前記クライアント端末コンピュータから印刷指示された印刷ジョブを前記ネットワークプリンタにて印刷するネットワーク印刷システムにおいて、前記クライアント端末コンピュータに実行させるプログラムであって、以下の（ａ）〜（ｉ）のステップを実行させる。
【００３３】
ａ）印刷ジョブを格納する第２のプリントスプーラ領域を確保するステップ
ｂ）第１のプリントスプーラ領域にある印刷ジョブを第２のプリントスプーラ領域に移動し格納するステップ
ｃ）第２のプリントスプーラ領域に印刷ジョブが存在し、且つ、ネットワークプリンタとの通信セッションが確立していない場合は、ネットワークプリンタとの通信セッションを開始するステップ
ｄ）第２のプリントスプーラ領域にある印刷ジョブをネットワークプリンタに送信するステップ
ｅ）第２のプリントスプーラ領域に印刷ジョブが存在するか否かを確認するステップ
ｆ）第２のプリントスプーラ領域に印刷ジョブが存在する間は前記ｄ）乃至ｆ）の処理を行うステップ
ｇ）第２のプリントスプーラ領域に印刷ジョブが存在しない場合、タイマーを開始するステップ
ｈ）タイマーが所定時間を経過する前に印刷ジョブが第２のプリントスプーラ領域に格納された場合は、前記ｄ）乃至ｈ）の処理を行うステップ
ｉ）タイマーが所定時間を経過した場合、ネットワークプリンタとの通信セッションを終了するステップ
【００３４】
（ａ）〜（ｆ）の処理は本発明に係る請求項１の印刷ジョブ管理プログラムの処理と同様である。請求項２の印刷ジョブ管理プログラムは（ｇ）〜（ｉ）の処理が異なる。
【００３５】
第２のプリントスプーラ領域に印刷ジョブが存在しない場合、タイマーを開始するステップ（ｇ）としたのは、印刷ジョブが存在しない場合にすぐに通信セッションを終了するのでなく、一定時間待って終了させるためである。これは、印刷ジョブによっては、その内容により非常に短時間で処理を終えるものもあり、アプリケーションからの連続した印刷指示であっても、次の印刷指示前に前回の印刷処理を終えてしまう場合があるからである。また、ユーザが、短時間の間に複数回、データ量の少ない印刷対象データの印刷指示を行った場合も同様のことがいえる。これらの場合、ユーザが連続印刷を行ったつもりでも、第２のプリントスプーラ領域に格納される印刷ジョブの間に間隔を生じてしまい、他のクライアント端末コンピュータからの印刷ジョブの混在を招いてしまうからである。
【００３６】
また、タイマーが所定時間を経過する前に印刷ジョブが第２のプリントスプーラ領域に格納された場合は、前記ｄ）乃至ｈ）の処理を行うステップ（ｈ）としたのは、所定時間を待っている間に新しい印刷ジョブが第２のプリントスプーラ領域に格納された場合は、連続した印刷ジョブとして取り扱うためである。
【００３７】
そして、タイマーが所定時間を経過した場合、ネットワークプリンタとの通信セッションを終了するステップ（ｉ）において、所定時間が経過したのち、通信セッションを終了し、ネットワークプリンタの専有を解除する。すなわち、第２のプリントスプーラ領域内に印刷ジョブが無くなって所定時間が経過した状態を、連続した印刷ジョブが無くなったと判断するとしたのである。
【００３８】
このように、印刷ジョブによっては、印刷データ内容によって非常に短時間で処理を終えるものもあり、アプリケーションからの連続した印刷指示であっても、次の印刷指示前に前回の印刷処理を終えてしまい、連続した印刷ジョブとはならない場合があるので、第２のプリントスプーラ領域内に印刷ジョブが無くなった場合でも、所定時間経過するまでは、ネットワークプリンタとの通信セッションを確立したまま維持することで、印刷ジョブに短時間で処理を終えるものが存在した場合であっても、連続した印刷ジョブとして処理できるようにしたのである。
【００３９】
また、本発明に係る請求項３の印刷ジョブ管理プログラムは、上記請求項１又は２の印刷ジョブ管理プログラムにおいて、更に、クライアント端末コンピュータの画面操作により、第２のプリントスプーラ領域にある印刷ジョブを制御するステップを実行させるものである。
【００４０】
通常のプリントスプーラ領域では、印刷ジョブはＦＩＦＯ（First-In First-Out）方式で、格納した印刷ジョブを、古く格納した順に取り出すものである。しかしながら、第２のプリントスプーラ領域では、クライアント端末コンピュータのユーザに対し、ＧＵＩ（Graphical User Interface）により、第２のプリントスプーラ領域にある印刷ジョブの制御（順序の変更や削除など）を操作できるようにしたものである。すなわち、印刷ジョブを操作できるようにし、ユーザの利便性の向上を図るものである。
【００４１】
また、本発明に係る請求項４の印刷ジョブ管理プログラムは、上記請求項１乃至３のいずれか１つの印刷ジョブ管理プログラムにおいて、ネットワーク上の他のクライアント端末コンピュータから印刷ジョブを受付けるステップと、他のクライアント端末コンピュータの印刷ジョブを第２のプリントスプーラ領域に格納するステップとを更にクライアント端末コンピュータに実行させるものである。
【００４２】
かかる構成により、ネットワーク上の他のクライアント端末コンピュータから、例えば緊急の優先度の高い印刷ジョブが生じた場合に、ネットワークプリンタに現に印刷を行っているクライアント端末コンピュータに対して、当該優先度の高い印刷ジョブを送り、当該クライアント端末コンピュータが当該印刷ジョブを第２のプリントスプーラ領域に格納したものである。
【００４３】
また、本発明に係る請求項５の印刷ジョブ管理プログラムは、ネットワークプリンタに対してステータス要求を行い、ネットワークプリンタから専有信号を受信した場合、ネットワークプリンタを専有しているクライアント端末コンピュータを特定するステップと、ネットワークプリンタを専有しているクライアント端末コンピュータに対して印刷ジョブを送信するステップとを更にクライアント端末コンピュータに実行させるものである。
【００４４】
ステータス要求に対する専有信号とは、ネットワークプリンタがクライアント端末コンピュータとの通信セッションを確立し、かつ当該クライアント端末コンピュータの専有状態となっていることを示す信号のことである。例えば、Ｂｕｓｙ信号があげられるが、これはあくまでも一例であり、ネットワークプリンタの機種や仕様によって異なるものである。
【００４５】
ここで、ネットワークプリンタを専有しているクライアント端末コンピュータの情報を取得する方法としては、ネットワーク上のクライアント端末コンピュータに同報通信（ブロードキャスト通信）などで問合せる方法がある。また、ネットワークプリンタが通信セッションを確立し現に印刷ジョブを受信中のクライアント端末コンピュータのホスト名やネットワークアドレスなどの情報を認識し、問合せのあったクライアント端末コンピュータに返信する方法もある。
【００４６】
また、本発明に係る請求項６の印刷ジョブ管理プログラムは、上記請求項１乃至５のいずれか１つの印刷ジョブ管理プログラムにおいて、第２のプリントスプーラ領域が、ユーザアカウント毎にスプール領域を割り当てられることを特徴とする。
【００４７】
第２のプリントスプーラ領域が、ユーザアカウント毎にスプール領域を割り当てられるとしたのは、単一のクライアント端末コンピュータのユーザアカウントが短時間で変更された場合、第２のプリントスプーラ領域内部で印刷ジョブの混在が発生するので、これを回避するためにユーザアカウント毎にスプール領域を割り当てたものである。
【００４８】
また、本発明に係る請求項７のコンピュータ読み取り可能な記憶媒体は、上記請求項１乃至６のいずれか１つの印刷ジョブ管理プログラムを記憶したものである。
【００４９】
次に、本発明に係る請求項８の印刷ジョブ管理システムは、印刷を指示する１乃至複数のクライアント端末コンピュータと印刷を実行する１乃至複数のネットワークプリンタとがネットワークを介して接続され、クライアント端末コンピュータから印刷指示された印刷ジョブをネットワークプリンタにて印刷する印刷ジョブ管理システムであって、以下の（Ａ１）〜（Ａ１５）の手段を備える。
【００５０】
クライアント端末コンピュータは、次の（Ａ１）〜（Ａ１３）の手段を備える。
（Ａ１）印刷ジョブを格納する第２のプリントスプーラ領域を確保する手段
（Ａ２）第１のプリントスプーラ領域にある印刷ジョブを第２のプリントスプーラ領域に移動し格納する手段
（Ａ３）ネットワーク上の他のクライアント端末コンピュータから印刷ジョブを受付ける手段
（Ａ４）他のクライアント端末コンピュータの印刷ジョブを第２のプリントスプーラ領域に格納する手段
（Ａ５）第２のプリントスプーラ領域に印刷ジョブが存在し、且つ、ネットワークプリンタとの通信セッションが確立していない場合は、ネットワークプリンタとの通信セッションを開始する手段
（Ａ６）ネットワークプリンタに対してステータス要求を行い、ネットワークプリンタから専有信号を受信した場合、ネットワークプリンタを専有しているクライアント端末コンピュータを特定する手段
（Ａ７）ネットワークプリンタを専有しているクライアント端末コンピュータに対して印刷ジョブを送信する手段
（Ａ８）第２のプリントスプーラ領域にある印刷ジョブをネットワークプリンタに送信する手段
（Ａ９）第２のプリントスプーラ領域に印刷ジョブが存在するか否かを確認する手段
（Ａ１０）第２のプリントスプーラ領域に印刷ジョブが存在する間は前記（Ａ８）乃至（Ａ１０）の処理を行う手段
（Ａ１１）第２のプリントスプーラ領域に印刷ジョブが存在しない場合、タイマーを開始する手段
（Ａ１２）タイマーが所定時間を経過する前に印刷ジョブが第２のプリントスプーラに格納された場合は、前記（Ａ８）乃至（Ａ１２）の処理を行う手段
（Ａ１３）タイマーが所定時間を経過した場合、ネットワークプリンタとの通信セッションを終了する手段
【００５１】
また、ネットワークプリンタは、次の（Ａ１４）および（Ａ１５）の手段を備える。
（Ａ１４）クライアント端末コンピュータからステータス要求を受信した場合に、ステータス応答を返信する手段
（Ａ１５）クライアント端末コンピュータから専有中のクライアント端末コンピュータの問合せを受けた場合、専有中のクライアント端末コンピュータの識別情報を返信する手段
【発明の効果】
【００５２】
本発明に係る印刷ジョブ管理プログラムおよび印刷ジョブ管理システムでは、複数のクライアント端末コンピュータからネットワークプリンタに対して、複数の印刷ジョブの処理を行った場合において、印刷ジョブと印刷ジョブとの間に、他のクライアント端末コンピュータの印刷ジョブが割り込まれること無く、複数の印刷ジョブが連続して印刷処理できるといった効果を有する。
【００５３】
また、本発明に係る印刷ジョブ管理プログラムおよび印刷ジョブ管理システムでは、複数のクライアント端末コンピュータからネットワークプリンタに対して、複数の印刷ジョブの処理を行った場合において、印刷ジョブと印刷ジョブとの間に、他のクライアント端末コンピュータの印刷ジョブが割り込まれることのないプログラムおよびシステムを提供するとともに、特定の印刷ジョブを優先的に印刷する必要が生じた場合には、当該印刷ジョブを割り込ませて優先的に印刷出力することができるといった効果を有する。
【発明を実施するための最良の形態】
【００５４】
以下、本発明の実施形態について、図を参照しながら詳細に説明する。ただし、本発明の範囲は、図示例に限定されるものではない。
【実施例１】
【００５５】
図４は、実施例１の印刷ジョブ管理プログラムにおけるネットワーク印刷の機能ブロック図を示している。
クライアント端末コンピュータ１００は、ネットワーク１０を介して、ネットワークプリンタ３００と通信可能に接続されている。クライアント端末コンピュータ１００は、一般的なパーソナルコンピュータであり、以下では、ＯＳ（オペレーティング・システム）としてＷｉｎｄｏｗｓ（登録商標）ＸＰが稼動しているものを一例として説明する。なお、本発明は他のＯＳでも適用可能である。ネットワークプリンタ３００は、クライアント端末コンピュータ１００から送信された印刷ジョブを受信して印刷出力する。図４において、ネットワークプリンタ３００はネットワーク１０に直接接続されているが、プリンタと別体のプリントサーバを介してネットワーク１０に接続されていても良い。この場合、プリントサーバがネットワークプリンタのネットワーク通信機能を担うことになる。
【００５６】
次に、クライアント端末コンピュータ１００の内部構成について説明する。アプリケーション・プログラム１１０は、文書処理ソフトウェアや帳票処理ソフトウェアなどであり印刷対象データを作成または管理する。通常、ユーザは、アプリケーション・プログラム１１０のＧＵＩ（Graphical User Interface）を操作して印刷先ネットワークプリンタと印刷対象データを指定し印刷指示を行う。プリンタドライバ１２０は、印刷対象データをネットワークプリンタ３００にて出力可能な形式（ＰＤＬ：Page Description Language）へと変換し、印刷ジョブ１３１を生成する。第１のプリントスプーラ領域１３０、第２のプリントスプーラ領域１６０、ポートモニタ・プログラム１５０、印刷サービス・プログラム１７０に関する説明は後述する。
【００５７】
次に、図４を参照しながら本発明の動作プロセスの概要を説明する。ユーザは、クライアント端末コンピュータ１００のアプリケーション・プログラム１１０を操作して、印刷先ネットワークプリンタ（ここではネットワークプリンタ３００とする）と印刷対象データを指定し印刷を指示する。クライアント端末コンピュータ１００のアプリケーション・プログラム１１０から印刷要求が出されると、プリンタドライバ１２０が起動して、印刷対象データをネットワークプリンタ３００にて印刷出力可能な形式へと変換し、印刷ジョブ１３１として第１のプリントスプーラ領域１３０に格納する。
【００５８】
ここで、第１のプリントスプーラ領域１３０は、従来のネットワーク印刷で用いられていたＯＳ標準のプリントスプーラ領域（図１に示すプリントスプーラ領域１３０）のことである。後述する第２のプリントスプーラ領域と区別するために第１のプリントスプーラ領域と呼ぶことにする。第１のプリントスプーラ領域１３０に印刷ジョブが格納されると、プリンタドライバ１２０に関連付けられたポートモニタ・プログラム１５０が起動する。このポートモニタ・プログラム１５０は、印刷ジョブ毎に起動されるものである。
【００５９】
ポートモニタ・プログラム１５０は、第１のプリントスプーラ領域１３０に格納された印刷ジョブ１３１を、第２のプリントスプーラ領域１６０へと移動して処理を終了する。本発明においては、従来のネットワーク印刷と異なり、ポートモニタ・プログラム１５０はネットワークプリンタ３００と通信セッションを確立することはなく、第１のプリントスプーラ領域１３０から第２のプリントスプーラ領域１６０に印刷ジョブを移動する機能のみを担う。
【００６０】
次に、印刷サービス・プログラム１７０は、第２のプリントスプーラ領域１６０に格納された印刷ジョブ１３１を取得しネットワークプリンタ３００との通信セッションを確立する。印刷サービス・プログラム１７０は、常駐プログラムであり、クライアント端末コンピュータ１００が起動してから終了するまでの間、常に処理をおこなっている。
【００６１】
この印刷サービス・プログラム１７０は、クライアント端末コンピュータ１００の初期化時に第２のプリントスプーラ領域１６０を確保する。そして、第２のプリントスプーラ領域１６０に印刷ジョブが格納されていないかを周期的にチェックする。第２のプリントスプーラ領域１６０に印刷ジョブが格納されていれば、ネットワークプリンタ３００と通信セッションを開始して印刷ジョブを送信するのである。
【００６２】
印刷サービス・プログラム１７０は、通信セッションを確立し、ネットワークプリンタ３００に印刷ジョブ１３１を送信した後、再び、第２のプリントスプーラ領域１６０に印刷ジョブが存在するか否かを判断する。もし別の印刷ジョブが第２のプリントスプーラ領域１６０に格納されていた場合（例えば印刷ジョブ１３２とする）、印刷サービス・プログラム１７０はネットワークプリンタ３００との通信セッションを終了することなく、続けて別の印刷ジョブ１３２をネットワークプリンタ３００へと送信する。
【００６３】
一方、ネットワークプリンタ３００は、クライアント端末コンピュータ１００との通信セッションが継続的に確立されているので、この間に他のクライアント端末コンピュータから通信セッションの確立要求を受けても、これを待たせる処理（通信セッションの確立はするが印刷ジョブの受信は待たせる）を行う。このように、通信セッションが確立している間は当該通信セッションを確立したクライアント端末コンピュータ以外のクライアント端末コンピュータからの印刷ジョブの受信を待たせるので、その結果、ネットワークプリンタ３００にて印刷出力される印刷ジョブの混在を防ぐことができる。なお、印刷サービス・プログラム１７０は、第２のプリントスプーラ領域１６０に印刷ジョブがないことを判断してからネットワークプリンタ３００との通信セッションを終了する。ここで、通信セッション終了のタイミングとして、第２のプリントスプーラ領域１６０に印刷ジョブがないことを確認すれば直ちに通信セッションの終了処理を行っても良いし、また、後述するように第２のプリントスプーラ領域に印刷ジョブがないことを確認してから所定時間を待って通信セッションの終了処理を行っても良い。
【００６４】
上記の構成としているため、クライアント端末コンピュータ１００において、１つのアプリケーションから複数の印刷ジョブが発生した場合や、複数のアプリケーションから同時に複数の印刷ジョブが発生した場合に、第２のプリントスプーラ領域１６０にこれら複数の印刷ジョブが格納され、ネットワークプリンタ３００との間で一度に複数の印刷ジョブを送信することができるのである。
なお、ここでいう同時とは厳密に同タイミングということではなく、１つの印刷ジョブが終了したのち一定時間が経過する前に別の印刷ジョブが発生するといった意味で用いている。
【００６５】
すなわち、図４において、符号Ａで示す点線で囲まれた部分が従来から存在する機能ブロックの部分であり、また、符号Ｂで示す点線で囲まれた部分が本発明で追加された機能ブロックの部分である。
追加されたプログラムは２つで、印刷サービス・プログラム１７０が、
（ａ）印刷ジョブを格納する第２のプリントスプーラ領域を確保するステップ
（ｃ）第２のプリントスプーラ領域に印刷ジョブが存在し、且つ、ネットワークプリンタとの通信セッションが確立していない場合は、ネットワークプリンタとの通信セッションを開始するステップ
（ｄ）第２のプリントスプーラ領域にある印刷ジョブをネットワークプリンタに送信するステップ
（ｅ）第２のプリントスプーラ領域に印刷ジョブが存在するか否かを確認するステップ
（ｆ）第２のプリントスプーラ領域に印刷ジョブが存在する間は前記ｄ）乃至ｆ）の処理を行うステップ
（ｇ）第２のプリントスプーラ領域に印刷ジョブが存在しない場合、ネットワークプリンタとの通信セッションを終了するステップ
を実施し、
ポートモニタ・プログラム１５０が、
（ｂ）第１のプリントスプーラ領域にある印刷ジョブを第２のプリントスプーラ領域に移動し格納するステップ
を実施する。
【００６６】
なお、後述する、第２のプリントスプーラ領域１６０に印刷ジョブがなくなってから所定時間を待って通信セッションを終了するという処理を入れるならば、印刷サービス・プログラムは、上記（ａ）〜（ｆ）のステップに加えて、
（ｇ）第２のプリントスプーラ領域に印刷ジョブが存在しない場合に、タイマーを開始するステップ
（ｈ）タイマーが所定時間を経過する前に印刷ジョブが第２のプリントスプーラ領域に格納された場合は、前記ｄ）乃至ｈ）の処理を行うステップ
（ｉ）タイマーが所定時間を経過した場合、ネットワークプリンタとの通信セッションを終了するステップ
を実施する。
【００６７】
このように、ポートモニタ・プログラム１５０がネットワークプリンタ３００と通信セッションを確立するのではなく、印刷サービス・プログラム１７０がネットワークプリンタ３００と通信セッションを確立して、第２のプリントスプーラ領域１６０に格納された印刷ジョブをネットワークプリンタ３００に送信することにしたものである。
【００６８】
次に、図５を用いてクライアント端末コンピュータ１００とネットワークプリンタ３００との間で確立される通信セッションについて説明する。図５は、本システムのネットワーク印刷の通信セッション・フロー図である。
先ず、クライアント端末コンピュータ１００の印刷サービス・プログラム１７０は、周期的に第２のプリントスプーラ領域１６０を監視している。第２のプリントスプーラ領域１６０に印刷ジョブが格納されると、印刷サービス・プログラム１７０はこれを検知し、ネットワークプリンタ３００に対してコネクト要求を送信する（ステップＳ３１）。ネットワークプリンタ３００では、通信セッションが確立できる場合はコネクト応答を行う（ステップＳ３２）。これにより通信セッションが確立される。ネットワークプリンタ３００との通信セッションが確立されると、印刷サービス・プログラム１７０が、第２のプリントスプーラ領域１６０に格納されている複数の印刷ジョブ１，２，・・・ｎを送信する。ここで、ネットワークプリンタ３００が、既に他のクライアント端末コンピュータと通信セッションを確立し印刷ジョブの受信処理を行っている場合は、クライアント端末コンピュータ１００の印刷ジョブ１，２，・・・ｎの送信が待たされる。
そして、印刷サービス・プログラム１７０は、第２のプリントスプーラ領域１６０内に印刷ジョブがなくなれば、ディスコネクト要求を送信する（ステップＳ５１）。これを受けてネットワークプリンタ３００はディスコネクト応答を返信する（ステップＳ５２）。これにより、ネットワークプリンタとの通信セッションを終了する。
【００６９】
なお、後述するように、第２のプリントスプーラ領域１６０内に印刷ジョブがなくなってから所定時間を計測して通信セッションを終了させても良い。また、通信セッション確立手順としてコネクト要求とコネクト応答を行うとしたが、この手順は通信プロトコルによって異なる。例えば、ＴＣＰ／ＩＰプロトコルを用いた通信セッションの確立は、３ウェイハンドシェイクの手順となる。通信セッションの終了処理も同様である。
【００７０】
このように、本発明では、第２のプリントスプーラ領域１６０に複数の印刷ジョブが格納されている場合には、１回の通信セッションで複数の印刷ジョブ１，２，・・・ｎを送信できるようにしている。これに対して、従来のネットワーク印刷では、印刷ジョブごとに起動されるポートモニタ・プログラムが通信セッションの確立を行っていたので、１つの印刷ジョブの送信が終了すると、通信セッションも切断されていた（図３参照）。本発明では、印刷サービス・プログラム１７０が通信セッションの管理と印刷ジョブの送信を行うことで、複数の印刷ジョブを１つの通信セッションで送信するものとしたのである。
【００７１】
図６は本発明の印刷ジョブ管理プログラムにおけるポートモニタ・プログラム１５０のフローチャート図を、図７は本発明の印刷ジョブ管理プログラムにおける印刷サービス・プログラム１７０のフローチャート図を示している。
本発明の印刷ジョブ管理プログラムは、図４において符号Ｂで示された点線で囲まれた部分のプログラムを称している。
【００７２】
先ず、図６を用いてポートモニタ・プログラム１５０の動作を説明する。
ポートモニタ・プログラム１５０は、第１のプリントスプーラ領域から第２のプリントスプーラ領域に印刷ジョブを移動する処理（ステップＳ１１）だけを行っている。これは、ポートモニタ・プログラムが、第１のプリントスプーラ領域に格納された印刷ジョブ毎に起動するため、処理を簡素化したものである。
【００７３】
次に、図７を用いて印刷サービス・プログラムの処理について説明する。ここで、所定時間を待って通信セッションを終了する処理についても併せて説明する。
印刷サービス・プログラム１７０は、先ず初期化処理として、クライアント端末コンピュータ１００が起動したときに、第２のプリントスプーラ領域１６０を確保する処理（図示せず）を行い、定常処理として、第２のプリントスプーラ領域１６０に印刷ジョブが存在するかを監視する処理（ステップＳ２１）を行っている。
第２のプリントスプーラ領域１６０に印刷ジョブが存在する場合、ネットワークプリンタ３００に対してコネクト要求を出し通信セッションを開始（オープン）し（ステップＳ２２）、第２のプリントスプーラ領域１６０に格納された印刷ジョブをネットワークプリンタ３００に送信する（ステップＳ２３）。印刷ジョブの送信が終了すると、再び第２のプリントスプーラ領域１６０に印刷ジョブが存在するか否かを判断し（ステップＳ２４）、存在すれば印刷ジョブの送信処理を行う（ステップＳ２３）。このように、第２のプリントスプーラ領域１６０に格納された印刷ジョブがなくなるまで、印刷ジョブの送信を繰り返す。
【００７４】
そして、第２のプリントスプーラ領域１６０に印刷ジョブが無くなった場合、所定時間経過するまで待って（ステップＳ２５）、通信セッションを終了する（ステップＳ２６）。所定時間経過するまで待つ方法としてタイマーを用いている。所定時間が経過する前に、第２のプリントスプーラ領域１６０に印刷ジョブが格納された場合、タイマーの計測をリセットし、再び当該印刷ジョブを送信する（ステップＳ２３）。そして第２のプリントスプーラ領域１６０を確認し（ステップＳ２４）、印刷ジョブが存在しない場合は、再びタイマーを開始し、所定時間の経過を待つ（ステップＳ２５）。所定時間が経過した場合、ネットワークプリンタ３００との通信セッションを終了（クローズ）する（ステップＳ２６）。なお、タイマーで所定時間の計測をしない場合は、ステップＳ２５の処理が省略される。すなわち、ステップＳ２４で印刷ジョブが存在しないと判断された場合は、ステップＳ２６に進み、通信セッションが終了される。
【００７５】
次に、本発明のネットワーク印刷における割込み防止に関して、図８，９を参照して説明する。以下の説明図において、２台のクライアント端末コンピュータをそれぞれＰＣ１００，ＰＣ２００で示している。
図８では、ＰＣ１００内のアプリケーション・プログラムから印刷ジョブ１１〜１４が生成されネットワークプリンタ３００に送信されようとする状態、およびＰＣ２００内のアプリケーション・プログラムから印刷ジョブ２１が生成されネットワークプリンタ３００に送信されようとする状態を模式的に示している。
【００７６】
まず、ＰＣ１００とネットワークプリンタ３００との間で先に通信セッションが確立したとする。
図９に示されるように、ＰＣ１００においては第２のプリントスプーラ領域１６０の印刷ジョブ１１〜１４を、１回の通信セッションでネットワークプリンタ３００にまとめて送信を行う。ここで、ＰＣ１００との通信セッション確立中に、ＰＣ２００から通信セッションのコネクト要求を受信した場合、ネットワークプリンタ３００は、コネクト応答を返信し通信セッションは確立するが、印刷ジョブ２１の受信処理を待たせる。そしてＰＣ１００とネットワークプリンタ３００との通信セッションが終了したときに、待たせておいた印刷ジョブ２１の受信処理を開始する。
従って、ネットワークプリンタ３００からは、ＰＣ１００の印刷物がまとまって印刷出力することとなり、ＰＣ２００の印刷物がＰＣ１００の印刷物に混在して印刷出力されることはない。
【実施例２】
【００７７】
次に実施例２では、実施例１の印刷ジョブ管理プログラムに、クライアント端末コンピュータの画面操作により、第２のプリントスプーラ領域にある印刷ジョブを制御するステップを更にクライアント端末コンピュータに実行させる印刷ジョブ管理プログラムについて説明する。
図１０に、実施例２の印刷ジョブ管理プログラムの機能ブロック図を示す。実施例１の印刷ジョブ管理プログラムの機能ブロック図と相違する点は、印刷ジョブ順序制御プログラム１８０が追加された点である。
【００７８】
ここで、印刷ジョブ順序制御プログラム１８０は、第２のプリントスプーラ領域１６０に格納されている印刷ジョブに対して、「停止」、「削除」、「入れ替え」の３つの処理操作を行うものである。まず「停止」は、第２のプリントスプーラ領域１６０の印刷ジョブの処理を一時停止する操作である。次に「削除」は、第２のプリントスプーラ領域１６０にある印刷ジョブを削除する操作である。そして「入れ替え」は、第２のプリントスプーラ領域１６０にある印刷ジョブの優先順位の変更を行う操作である。
【００７９】
印刷ジョブ順序制御プログラム１８０は、また、ユーザに対してＧＵＩ（Graphical User Interface）を提供する。ＧＵＩを提供するとは、例えば、印刷ジョブ順序操作ウィンドウ画面を表示端末（図示せず）に表示して、ユーザに印刷ジョブ操作を促すものである。ユーザは、印刷ジョブ順序制御プログラム１８０のＧＵＩを操作して、印刷ジョブ操作を指示する。
このようにして、ユーザは、印刷処理の優先順位に応じて印刷順序を入れ替えたり、印刷指示後に印刷不要と判断した印刷ジョブを削除することができる。
印刷ジョブ順序制御プログラム１８０は、イベント駆動型のプログラムであり、ユーザからの操作イベント若しくは後述する実施例で説明する他のクライアント端末コンピュータからの印刷ジョブを受付けるといったイベントにより、第２のプリントスプーラ領域１６０の印刷ジョブを制御するのである。
【実施例３】
【００８０】
次に実施例３では、本発明の印刷ジョブ管理プログラムにおける強制割込み機能について説明する。
図１１は、実施例３の印刷ジョブ管理プログラムの機能ブロック図を示している。
上述した実施例２の印刷ジョブ管理プログラムの機能ブロック図と相違する点は、緊急ジョブ管理プログラム１９０が追加された点である。
【００８１】
ここで、緊急ジョブ管理プログラム１９０は、以下のステップをクライアント端末コンピュータに実行させるものである。
すなわち、ネットワーク上の他のクライアント端末コンピュータから印刷ジョブを受付けるステップと他のクライアント端末コンピュータの印刷ジョブを前記第２のプリントスプーラ領域に格納するステップとをクライアント端末コンピュータに実行させる。
また一方で、ネットワークプリンタに対してステータス要求を行い、ネットワークプリンタから専有信号を受信した場合、ネットワークプリンタを専有しているクライアント端末コンピュータを特定するステップと、ネットワークプリンタを専有しているクライアント端末コンピュータに対して印刷ジョブを送信するステップとをクライアント端末コンピュータに実行させる。
なお、他のクライアント端末コンピュータの印刷ジョブを前記第２のプリントスプーラ領域に格納するステップは、緊急ジョブ管理プログラム１９０が直接第２のプリントスプーラに印刷ジョブを格納しても良いし、印刷ジョブ順序制御プログラムを経由して格納しても良い。
【００８２】
実施例３の印刷ジョブ管理プログラムの処理フローについて、図１２を参照しながら説明する。説明の前提として、ＰＣ１００とネットワークプリンタ３００との通信セッションが既に確立しており、ＰＣ１００がネットワークプリンタ３００を専有しているものとする。
（処理１）ＰＣ２００の印刷サービス・プログラムは、第２のプリントスプーラ領域に印刷ジョブが格納されたことを検知すると、ネットワークプリンタ３００との間に通信セッションを確立するため、コネクト要求を行う。
（処理２）ネットワークプリンタ３００は、かかる要求に対してコネクト応答を行う。これにより通信セッションが確立する。
（処理３）ＰＣ２００の印刷サービス・プログラムは、ネットワークプリンタに対して、ステータス要求を行う。
（処理４）ＰＣ１００が既にネットワークプリンタ３００を専有しているので、ネットワークプリンタ３００からステータス応答としてＢｕｓｙ信号を受信する。
【００８３】
（処理５）割込印刷を行うかどうかを決定する。かかる決定には、ユーザが選択する方法と自動的に割込印刷を実行する方法とがあり、以下に場合を分けて説明する。
まず、ユーザが選択する方法を説明する。ＰＣ２００の印刷サービス・プログラムはネットワークプリンタ３００からＢｕｓｙ信号を受信した場合、その旨を印刷ジョブ順序制御プログラム２８０に伝える。印刷ジョブ順序制御プログラム２８０はＧＵＩを有しているのでメッセージウインドウ等によりユーザに割込印刷を行うかどうかを伝える。ユーザは印刷ジョブ順序制御プログラム２８０を操作して割込印刷の指示を与える。割込印刷を行う場合、かかる指示は印刷ジョブ順序制御プログラム２８０を介して緊急ジョブ管理プログラム２９０へと伝えられる。割込印刷を行わない場合、ＰＣ２００の通信セッションが終了するまで印刷ジョブの送信が待たされる。つまり実施例１の手順が続く。
【００８４】
次に、自動的に実行する方法は、ユーザに割込印刷の選択を促すことなく、ネットワークプリンタからＢｕｓｙ信号を受けると、いつでも割込印刷処理を行うものである。この場合、Ｂｕｓｙ信号を受信した印刷サービス・プログラムは、その旨を緊急ジョブ管理プログラム２９０へと伝える。この方法は、例えば、役員の端末コンピュータからの印刷の場合は必ず最優先となるよう設定するといったケースに適用できる。
【００８５】
（処理６）割込印刷を行うことが決定されると、緊急ジョブ管理プログラム２９０がネットワークプリンタを専有中のクライアント端末コンピュータを特定する。なお、特定する方法については後述する。ここでは、ＰＣ１００が特定されるとする。
（処理７）ネットワークプリンタを専有中のクライアント端末コンピュータ（ここではＰＣ１００）が特定されたので、ＰＣ２００の緊急ジョブ管理プログラム２９０は、印刷ジョブに緊急フラグを付与して、緊急フラグ付き印刷ジョブをＰＣ１００へ送信する。ここで、緊急フラグとは、優先印刷すべき印刷ジョブであることを示すために、印刷ジョブに付与する情報のことである。
【００８６】
（処理８）ＰＣ１００の緊急ジョブ管理プログラム１９０は、緊急フラグ付き印刷ジョブを受信すると、これをＰＣ１００の印刷ジョブ順序制御プログラム１８０へと渡す。
（処理９）ＰＣ１００の印刷ジョブ順序制御プログラム１８０は、受信した印刷ジョブを第２のプリントスプーラ領域１６０に格納する。この時、第２のプリントスプーラ領域１６０内の印刷ジョブの待ち行列のうち高い優先順位のところに格納する。
（処理１０）ＰＣ１００の印刷サービス・プログラムは、当該印刷ジョブをネットワークプリンタ３００へ送信し印刷出力する。
【００８７】
以上（処理１）〜（処理１０）のプロセスを経て、強制的に優先度（緊急度）の高い印刷ジョブを割り込ませて印刷を行うのである。
ここで、上記（処理６）ネットワークプリンタを使用中のクライアント端末コンピュータを特定する方法としては、ネットワーク上のクライアント端末コンピュータに同報通信（ブロードキャスト通信）やユニキャスト又はマルチキャスト通信を利用して問合せる方法や、ネットワークプリンタに問合せる方法があり、以下に具体的な動作プロセスを説明する。
【００８８】
まず、ブロードキャスト通信およびユニキャストもしくはマルチキャスト通信を利用する方法とは、図１２において、ＰＣ２００が、ネットワークプリンタ３００からＢｕｓｙ信号を受け取った場合、ＰＣ２００はネットワーク上の複数のクライアント端末コンピュータに対してネットワークプリンタ３００を専有中かどうかの問合せを行う（図１２の処理６ａ）。図１２に示すように、ＰＣ１００がネットワークプリンタ３００を専有中とすると、ＰＣ１００の緊急ジョブ管理プログラム１９０は専有中であるメッセージをＰＣ２００に応答する（図１２の処理６ｂ）。ここで、あらかじめ問合せをするクライアント端末コンピュータ群を登録している場合はユニキャスト又はマルチキャスト通信で行い、登録していない場合はブロードキャスト通信を利用する。
【００８９】
次に、ネットワークプリンタに問合せる方法について、図１３−１〜図１３−３を参照しながら説明する。なお、以下では、ＰＣ１００とネットワークプリンタ３００との通信セッションが既に確立しており、ＰＣ１００がネットワークプリンタ３００を専有しているものとする。
図１３−１に示されるように、ＰＣ２００はネットワークプリンタ３００に対してコネクト要求を行い（ステップＳ７１）、ネットワークプリンタ３００はコネクト応答する（ステップＳ７２）。これにより通信セッションを確立する。次に、ＰＣ２００でステータス要求（ステップＳ８１）に対してネットワークプリンタ３００からＢｕｓｙ応答が返信された場合（ステップＳ８２）、ＰＣ２００からホスト情報の問合せ要求を出す（ステップＳ９０）。ネットワークプリンタ３００では、ネットワークプリンタ３００を使用しているクライアント端末コンピュータのホスト情報（ホスト名、ネットワークアドレスなど）を返信する（ステップＳ９１）。ここでは、ＰＣ１００と通信セッションを確立しＰＣ１００の専有状態となっているので、ＰＣ１００の情報を返信することになる。
【００９０】
次に、図１３−２に示されるように、ＰＣ２００はＰＣ１００に対して印刷ジョブ２１に緊急フラグを付加して送信する。緊急フラグは、印刷ジョブ２１を現在印刷中の印刷ジョブ１１〜１４に対して優先的に処理を行うように促すものである。
【００９１】
ＰＣ１００では、図１３−３に示されるように、第２のプリントスプーラ領域１６０の中の印刷ジョブの順番を入れ替えて、または印刷ジョブに付加された連番を付け替えて、または緊急フラグを有している印刷ジョブを最優先にデータ送信するようにして、印刷ジョブ２１を強制的にＰＣ１００の印刷物に割り込ませて印刷させるのである。
図１３−３においては、ＰＣ１００の印刷ジョブ１１が既にデータ転送を始めたタイミングで、ＰＣ２００の印刷ジョブ２１の要求が来たことから、ＰＣ１００の第２のプリントスプーラ領域１６０の中の印刷ジョブの順番を印刷ジョブ１１，１２，１３，１４から印刷ジョブ１１，２１，１２，１３，１４というように入れ替えている。
【００９２】
実施例３の印刷ジョブ管理プログラムでは、緊急フラグ付き印刷ジョブを受信した場合、これを第２のプリントスプーラ領域の印刷ジョブ待ち行列のうち優先度の高いところに格納するようにしたが、印刷ジョブの順序を変更することなく、印刷ジョブ待ち行列の一番後ろに格納するようにしても良い。この場合、順序変更を行わないので、緊急ジョブ管理プログラムは、印刷ジョブ順序制御プログラムを経由することなく、直接第２のプリントスプーラ領域にアクセスし印刷ジョブの格納を行っても良い。
【実施例４】
【００９３】
次に実施例４では、本発明の印刷ジョブ管理プログラムにおける第２のプリントスプーラ領域がユーザアカウント毎にスプール領域を割り当てられる場合について説明する。
上述の実施例１の印刷ジョブ管理プログラムでは、同一クライアント端末コンピュータ内のユーザ毎の印刷ジョブ管理までは想定していない。同一クライアント端末コンピュータ上において、例えば、短いタイミングで、ユーザＡが印刷指示を行い、ユーザを切り替えて、ユーザＢが印刷指示を行い、ユーザを切り替えて、ユーザＣが印刷指示を行い、さらにユーザを切り替えて、ユーザＡ，Ｃと再び印刷指示を行った場合を想定する。実施例１の印刷ジョブ管理プログラムでは、第２のプリントスプーラ領域に時系列順に格納されるため、印刷ジョブはＡ１，Ｂ１，Ｃ１，Ａ２，Ｃ２と格納される。ここでは説明上、ユーザＡの印刷ジョブをＡｎ（ｎ＝１，２，・・）、ユーザＢの印刷ジョブをＢｎ（ｎ＝１，２，・・）、ユーザＣの印刷ジョブをＣｎ（ｎ＝１，２，・・）と表記する。印刷サービス・プログラム１７０は、第２のプリントスプーラ領域の印刷ジョブを順番にネットワークプリンタに送信するため、ユーザＡの印刷とユーザＢの印刷とユーザＣの印刷が混同してしまうという問題が生じる。
【００９４】
実施例４の印刷ジョブ管理プログラムは、上記問題を解決するために、クライアント端末コンピュータ内部の第２のプリントスプーラ領域が、ユーザアカウント毎にスプール領域を割り当てられるものである。
図１４に、実施例４の印刷ジョブ管理プログラムにおけるネットワーク印刷の機能ブロック図を示す。図１４に示されるように、クライアント端末コンピュータ１００内部の第２のプリントスプーラ領域１６０が、ユーザアカウント（ユーザＡ，ユーザＢ，ユーザＣ）毎にスプール領域を割り当てられる。
【００９５】
印刷サービス・プログラム１７０は、ユーザアカウント（ユーザＡ，ユーザＢ，ユーザＣ）毎のスプール領域に格納している印刷ジョブが複数あればそれらを連続してネットワークプリンタ３００に送信する。図１４の場合は、まずユーザＡ領域１６１の２つの印刷ジョブＡをネットワークプリンタ３００に送信し、次にユーザＢ領域１６２の１つの印刷ジョブＢをネットワークプリンタ３００に送信し、最後にユーザＣ領域１６３の２つの印刷ジョブＣをネットワークプリンタ３００に送信することとなる。
【００９６】
ここで、クライアント端末コンピュータ１００内部の第２のプリントスプーラ領域１６０が、ユーザアカウント毎にスプール領域を割り当てられる替わりに、外部サーバのスプール領域に対して、ユーザアカウントごとにユーザ領域を割り当てることにしてもよい。
このように、ユーザアカウント毎にスプール領域を分離することにより、印刷ジョブが混在するということはない。なお、この場合、予めクライアント端末コンピュータ若しくは外部サーバに、ユーザアカウントを登録することが必要となる。
【００９７】
実施例１〜実施例４では、あるクライアント端末コンピュータがネットワークプリンタを専有している間、他のクライアント端末コンピュータからコネクト要求を受けた場合、コネクト応答を行い、通信セッションを確立していたが、コネクト応答を行わないように構成しても良い。すなわち、ネットワークプリンタが許可する通信セッション数は１本とし、この通信セッションが終了するまでは、他のクライアント端末コンピュータからのコネクト要求には応じないようにするのである。
【００９８】
実施例１〜実施例４では、印刷ジョブを、プリンタドライバで変換されたデータ形式であるとしたが、プリンタドライバで変換される前のデータ形式であっても良い。すなわち、クライアント端末コンピュータの第２のプリントスプーラ領域に格納される印刷ジョブは、特定のネットワークプリンタに特化したデータ形式ではなく、汎用的なデータ形式で格納されるのである。この場合、当該印刷ジョブを受信したネットワークプリンタにて、データの変換処理を行い、印刷出力可能な形式へと変換すれば良い。また、ネットワーク上にある他のサーバコンピュータにてデータの変換処理をさせるようにしても良い。
【産業上の利用可能性】
【００９９】
本発明の印刷ジョブ管理プログラムは、複数のクライアント端末コンピュータからネットワークプリンタに対して印刷するシステムに有用である。
【図面の簡単な説明】
【０１００】
【図１】従来のシステムのネットワーク印刷の機能ブロック図
【図２】従来のシステムのネットワーク印刷において、複数のクライアント端末コンピュータからネットワークプリンタに対して印刷する場合の問題点の説明図
【図３】従来のシステムのネットワーク印刷の通信セッション・フロー図
【図４】実施例１の印刷ジョブ管理プログラムにおけるネットワーク印刷の機能ブロック図
【図５】実施例１の印刷ジョブ管理プログラムにおけるネットワーク印刷の通信セッション・フロー図
【図６】実施例１の印刷ジョブ管理プログラムにおけるポートモニタ・プログラムのフローチャート図
【図７】実施例１の印刷ジョブ管理プログラムにおける印刷サービス・プログラムのフローチャート図
【図８】実施例１の印刷ジョブ管理プログラムにおける割込み防止の説明図（１）
【図９】実施例１の印刷ジョブ管理プログラムにおける割込み防止の説明図（２）
【図１０】実施例２の印刷ジョブ管理プログラムにおけるネットワーク印刷の機能ブロック図
【図１１】実施例３の印刷ジョブ管理プログラムにおけるネットワーク印刷の機能ブロック図
【図１２】実施例３の印刷ジョブ管理プログラムにおける強制割込みフロー（ブロードキャストで問合せする場合）の説明図
【図１３−１】実施例３の印刷ジョブ管理プログラムにおける強制割込みフロー（ネットワークプリンタに問合せする場合）の説明図（１）
【図１３−２】実施例３の印刷ジョブ管理プログラムにおける強制割込みフロー（ネットワークプリンタに問合せする場合）の説明図（２）
【図１３−３】実施例３の印刷ジョブ管理プログラムにおける強制割込みフロー（ネットワークプリンタに問合せする場合）の説明図（３）
【図１４】実施例４の印刷ジョブ管理プログラムにおけるネットワーク印刷の機能ブロック図
【符号の説明】
【０１０１】
１００，２００  クライアント端末コンピュータ
３００  ネットワークプリンタ
１０    通信ネットワーク
１１０，２１０  アプリケーション・プログラム
１２０，２２０  プリンタドライバ
１３０，２３０  プリントスプーラ領域
１４０，２４０  ポートモニタ・プログラム
１３１，１３２，２３１  印刷ジョブ
１５０  専用のポートモニタ・プログラム
１６０  第２のプリントスプーラ領域
１７０  印刷サービス・プログラム
１８０  印刷ジョブ順序制御プログラム
１９０  緊急ジョブ管理プログラム
【図６】
2008129978.tif 000003
【図７】
2008129978.tif 000004
【図１】
2008129978.tif 000005
【図２】
2008129978.tif 000006
【図３】
2008129978.tif 000007
【図４】
2008129978.tif 000008
【図５】
2008129978.tif 000009
【図８】
2008129978.tif 000010
【図９】
2008129978.tif 000011
【図１０】
2008129978.tif 000012
【図１１】
2008129978.tif 000013
【図１２】
2008129978.tif 000014
【図１３−１】
2008129978.tif 000015
【図１３−２】
2008129978.tif 000016
【図１３−３】
2008129978.tif 000017
【図１４】
2008129978.tif 000018