説明

情報処理装置及びジョブ転送制御方法

【課題】プリントサーバがない環境や、プリンタドライバやプリンタデバイスでジョブグルーピング機能が実装されていないプリントシステム環境でも、印刷ジョブのグルーピング機能を簡易な構成で実現可能とする。
【解決手段】情報処理装置と画像形成装置とで構成される印刷システムにおける情報処理装置の印刷ジョブの転送制御方法は、アプリケーションデータに基づく印刷ジョブを複数受け取り、これら受け取った複数の印刷ジョブ(プリントジョブ)をグルーピングして、グループジョブとして管理する。そして、複数の印刷ジョブのスプールが完了した後に、所定の印刷プロトコルを用いて1つのセッションで該複数の印刷ジョブ(プリントジョブデータ)を画像形成装置へ転送するように制御する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プリントシステムにおけるジョブのグルーピングに関するものである。
【背景技術】
【0002】
従来からプリンタデバイスに印刷ジョブのデータを送信する方法として様々な層における様々な種類のプロトコルが考案されている。一般に、プリンタデバイスで印刷する場合、プリンタデバイスは、ホストから送信された印刷ジョブを受け付け、印刷ジョブを受け付けた順に印刷を行っている。
【0003】
一方、ホスト側では、複数のドキュメントを夫々異なる印刷要求として発行するため、複数ドキュメントの印刷要求の間に他のユーザの印刷要求が割り込んでしまう場合がある。そして、このような場合、出力結果の途中に他のユーザの印刷結果が混在してしまうという問題点があった。
【0004】
例えば、複数のホストから、ホスト毎に複数の印刷ジョブをプリンタデバイスに送信すると、複数のホストからの印刷ジョブによる印刷結果が排紙トレイに混在する。このため、他ホストから送信した印刷ジョブによる印刷結果と区別するためにユーザが印刷結果の仕分けを行わなければならなかった。また、この場合、印刷結果の仕分けミスにより、他ホストから印刷したジョブを間違って持っていくという問題も発生していた。
【0005】
そこで、このような問題点に鑑み、ホスト側で複数の印刷ジョブを1つにまとめて出力する、以下に述べるような「ジョブグルーピング」の仕組みが提案されている。
【0006】
(1)ドキュメント結合方式
プリンタデバイスに送信する前に、ホストにおいて、複数の印刷ジョブを、中間形式のデータを介して1つのドキュメントとして結合してしまい、1つのドキュメントに基づく印刷データを作成し、作成した印刷データをプリンタデバイスに投入する方式。
【0007】
(2)IPP(Internet Printing Protocol)方式
ホストが複数の印刷ジョブをプリントサーバに送信するときに、印刷ジョブを結合するコマンドを送り、プリントサーバ或いはプリンタデバイスで印刷ジョブの結合処理を行って排紙する方式。
【0008】
IPP方式の代表的な例として、例えばインターネットを通じて遠隔地にあるプリントサーバに対して印刷を行うことや遠隔地からの印刷を受けることができるIPPが知られている。このIPP方式においては、マルチドキュメント宣言のコマンドを用いて複数のドキュメント(Microsoft Word(登録商標)、Microsoft Excel(登録商標)で作成された文書など)をサーバへ送る機能(1ジョブマルチドキュメント機能)などが知られている。
【0009】
この1ジョブマルチドキュメント機能では、予めプリントサーバ(プリンタに装着されるネットワークカードを含む)にCreate Jobコマンドを通知し、その通知に応答してサーバ側から返答されるジョブIDを各々のジョブ(ドキュメント)に含め、各々のジョブをプリントサーバに送信する。
【0010】
一方、プリントサーバ側では、Create Jobのコマンドに対応して生成したジョブIDに対応する器を作成すると共にクライアント側に通知し、ジョブIDが含まれる任意の印刷ジョブがクライアントから個々送信されてきた場合、その印刷ジョブを器の中に一旦格納する。そして、Job Endのコマンドが送信されてきた場合に、それまで器の中に格納した印刷ジョブを他のジョブの出力が割り込まないように制御する。
【0011】
(3)特許文献1に記載された方法
プリントサーバがプリントサーバに登録された複数ホストからの印刷ジョブの順序制御を行い、印刷ジョブをグループ単位にプリンタデバイスに送信することで、プリンタデバイスで排紙される印刷ジョブがグループ毎にまとまって排紙される方式。
【0012】
特許文献1には印刷するドキュメントをグループ化し、他の印刷要求を割り込ませないようにして印刷を行う仕組みが記載されている。
【特許文献1】特開2002−182878号公報
【発明の開示】
【発明が解決しようとする課題】
【0013】
しかしながら、従来のグルーピング方式では、上記(1)の場合、1つのドキュメントを中間形式のデータを介してホスト側で作成し、その後作成した中間形式のデータを印刷データに変換する処理が介入するため、スループットが落ちると言う問題点があった。
【0014】
また、上記(2)において、プリントサーバでジョブを結合する場合、IPPのコマンドに従った処理を実行するための機能をプリントサーバ側に設ける必要がある。また、プリンタIDに基づく煩雑な処理をプリントサーバ側で行う必要があるという問題点があった。また、プリンタデバイスでジョブを結合する場合、例えばプリンタ記述言語にジョブの結合コマンドを用意する等の処置が必要であり、その結合コマンドがデバイス側で処理できなければならない。このため、プリンタドライバ、プリンタデバイスに機能を追加する必要があり、結合コマンドに対応していないプリンタ(ジョブのグルーピング機能を持たないプリンタデバイス)ではジョブグルーピングの機能を利用できなかった。また、プリンタデバイスでジョブを結合する場合には、デバイスに全てのグループジョブがスプールされるまで印刷できないなどの制約があり、大量ページのジョブを印刷できないという問題もあった。
【0015】
更に、上記(3)では、プリントサーバでグループ毎に印刷ジョブの制御を行う場合に、プリントサーバが管理していないホストや他のプリントサーバからデバイスへ印刷する印刷ジョブの割り込みが発生し、印刷ジョブのグルーピングが正確に行われないケースやプリントサーバがなければ実現できないケースなどがあった。
【0016】
一方、FTP(File Transfer Protocol)に準じた通信を行うことにより複数の電子ファイルをまとめて送信することができるが、これを印刷システムに適用した場合に、個々のアプリケーションデータから個々の印刷データファイルをプリンタドライバなどを利用して作成し、かつ、作成した複数の印刷データファイルをプリンタ装置にFTPを用いてプリンタに送信するようユーザが操作を行なう必要があり、煩雑な作業を要するなど現実的ではなかった。
【0017】
本発明は、簡単な構成で複数の印刷ジョブをグルーピングすることを目的とする。
また、本発明の目的は、プリントサーバがない環境や、プリンタドライバやプリンタデバイスでジョブグルーピング機能が実装されていないプリントシステム環境でも印刷ジョブのグルーピング機能を実現可能とすることにある。
【課題を解決するための手段】
【0018】
上記目的を達成するための本発明によるジョブ転送制御方法は、
情報処理装置と画像形成装置とを含む印刷システムにおける情報処理装置の印刷ジョブの転送制御方法であって、アプリケーションデータに基づく印刷ジョブを複数受け取る工程と、前記受け取る工程において受け取った複数の印刷ジョブをグルーピングし、グループジョブとして管理する工程と、前記複数の印刷ジョブのスプールが完了した後に、所定の印刷プロトコルを用いて1つのセッションで該複数の印刷ジョブを画像形成装置へ転送するように制御する工程とを有する。
【0019】
また、上記目的を達成するための本発明による情報処理装置は次の構成を備える。すなわち、
情報処理装置と画像形成装置とを含む印刷システムにおける情報処理装置であって、アプリケーションデータに基づく印刷ジョブを複数受け取る手段と、前記受け取る手段において受け取った複数の印刷ジョブをグルーピングし、グループジョブとして管理する手段と、前記複数の印刷ジョブのスプールが完了した後に、所定の印刷プロトコルを用いて1つのセッションで該複数の印刷ジョブを画像形成装置へ転送するように制御する手段とを有する。
【発明の効果】
【0020】
本発明によれば、簡単な構成で複数の印刷ジョブをグルーピングすることが可能となる。 また、プリントサーバがない環境や、プリンタドライバやプリンタデバイスでジョブグルーピング機能が実装されていないプリントシステム環境でも印刷ジョブのグルーピング機能を実現することが可能になる。
【発明を実施するための最良の形態】
【0021】
以下、添付の図面を参照して本発明の好適な実施形態について詳細に説明する。
【0022】
<実施形態の概要>
ネットワーク環境において印刷ジョブを受け付けて印刷を行うために、プリンタデバイスはLPRプロトコルやRAW印刷プロトコル、IPPプロトコルなどネットワークプロトコルをベースとした印刷プロトコルを持っている。プリンタデバイスは、これらの印刷プロトコルで印刷ジョブを受け付けるが、印刷プロトコルのセッションを張っているときには他のセッションの印刷ジョブのデータを受け付けることが出来ない。本実施形態の印刷処理システムではそのようなプリンタデバイスの印刷プロトコルの特性を利用してジョブグルーピングを実現する。
【0023】
より具体的には、アプリケーションが印刷ジョブをグルーピングする場合には、アプリケーションはグルーピング開始の呼び出しをプリントシステムに行い、グルーピングする印刷ジョブを通常の印刷と同じように処理する。グルーピングするジョブの印刷処理が終了するとアプリケーションがグルーピングの終了の呼び出しを行う。印刷処理システムはこの呼び出しにより複数のジョブをグルーピングし、グルーピングされた複数のジョブをプリンタデバイスの印刷プロトコルの1つのセッション内で送信する。
【0024】
また、本実施形態では、グルーピング機能における1セッション内で送信する方式に以下の方式(グループモード)を設ける。
[グループモード1]アプリケーションがジョブのグルーピングの指示を開始すると、セッションを開始する方法。グループモード1の方式によれば1ページめの印刷が早くなる。つまり、FirstPrintが速くなる。
[グループモード2]グループジョブの内、1つのジョブのスプールが完了すると、セッションを開始する方法。グループモード2の方式によれば、グループモード1の方式よりセッションを保持する時間が減り、他のホストからの印刷を妨げる可能性が低減する。また、FirstPrintも速くなる。
[グループモード3]ホスト全てのジョブのスプールが完了してからセッションを開始する方法。グループモード3の方式によれば、グループジョブとして印刷を指示した後でも、所望のジョブをグループジョブから削除したりする等の対処が可能となる。また、グループモード1,2では、アプリケーションがグループジョブに途中で失敗しても最初のジョブなどは印刷されてしまい無駄な印刷が発生するが、グループモード3ではこのような不具合を解消できる。
【0025】
本実施形態においては、印刷するジョブの状況やプリントシステムの状況により、所望のグループモードを選択することを可能としている。例えば、グルーピングするジョブの内、最初のジョブが小さいジョブでスプールの時間が短い状況では、グループモード1や2の方式を使用することで、プリンタで1ページめの出力が早くすることができる。つまり、FirstPrintを重視した方式が行える。
【0026】
また、グループモード1、2の方式では、ジョブのスプール中からプリンタデバイスにセッションが張られるため、グルーピングするホストがプリンタを占有する時間が長くなる。複数のクライアントからの印刷要求に対してプリンタデバイスを効率的に使用したい場合には、グループモード3を選択することも可能となる。
【0027】
更に本実施形態の印刷処理システムでは以下の特徴を有する。
(1)グルーピングジョブを印刷中に、デバイスで紙無しなどのエラーが発生した場合には、グルーピングを解除して個別のジョブとして、代行印刷を行う。
(2)グルーピングされた個々のジョブは、個別のジョブとして扱えるようにする。グルーピングによって複数のジョブの送信中であっても、まだ転送されていないジョブの操作を可能にする。例えば、ジョブの一時停止や削除である。ジョブの削除よりグループジョブの差し替えが可能。アプリケーションが一度追加したグループジョブの差し替えが可能になる。
(3)一時停止されたジョブが複数ある場合、2つ以上の一時停止のジョブを再開すれば、グループジョブとして1セッションで送信する。これにより、一度1つにグルーピングしたジョブを複数のグループに分割することが可能となる。
【0028】
<印刷処理システムの構成例>
図1は、本実施形態における情報処理システムの構成を示すブロック図である。図1において、102、103、104はそれぞれ情報処理装置であり、クライアント・サーバシステムのクライアントとして機能する。各クライアントは、イーサネット(登録商標)などのネットワークケーブルによってネットワーク106に接続され、アプリケーションプログラム等の各種プログラムを実行可能である。
【0029】
尚、本システムにおけるクライアントはパーソナルコンピュータであり、1台又は複数台が接続されているものとする。また各クライアントのことを「クライアントPC」とも称す。またネットワーク106はイーサネット(登録商標)ケーブルなどを提供できるが、イーサネット(登録商標)ケーブルに限定されるものではなく、例えば、RS232Cインタフェースに準じた通信ケーブルや、無線通信を利用するようにしてもよい。
【0030】
また、クライアントPCは、印刷データをプリンタに対応するプリンタ言語に変換する機能を有するプリンタドライバを搭載している。尚、ジョブ制御プリントサービスは後述の図12において説明するように、複数の印刷装置(ネットワークプリンタ)を利用した仮想的プリンティング機能を備えており、複数の印刷装置に対応するためにプリンタドライバは複数のプリンタドライバをサポートするものとする。
【0031】
101は情報処理装置であり、クライアント・サーバシステムのサーバとして機能する。また、サーバ101はネットワークケーブルによってネットワーク106に接続され、ネットワーク106上のクライアントで使用されるファイルを蓄積したり、ネットワーク106の使用状態を監視したりする。尚、このサーバ101はネットワーク106に接続されている複数のプリンタを管理するプリントサーバとしても機能する。
【0032】
本実施形態のクライアントPC102〜104及びプリントサーバ101は、一般的な情報処理装置であり、クライアントPCとプリントサーバにはそれぞれ異なる制御を行う印刷制御プログラムが実行可能に格納されている。また、プリントサーバ101はクライアントPC102〜104の機能を同時に持つこともできる。
【0033】
本実施形態におけるプリントサーバ101は、更に各クライアントPC102、103、104から印刷要求が出された印字データを含む印刷ジョブを格納して印刷する機能、又はクライアントPC102、103、104から印字データを含まないジョブ情報のみ受け取り、クライアントPC102、103、104の印刷順序を管理し、印刷順序になったクライアントPCに対して印字データを含む印刷ジョブの送信許可を通知する機能、或いは後述するネットワークプリンタのステータスや印刷ジョブの各種情報などを取得し、クライアントPC102、103、104に通知する機能などを有する。
【0034】
105は印刷装置である。本実施形態では印刷装置105としてネットワークプリンタを用いる。よって、印刷装置105はネットワークインタフェース(不図示)を介してネットワーク106と接続され、クライアントPCから送信される印字データを含む印刷ジョブを解析して1ページずつドットイメージに変換し、1ページ毎に印刷する。106はネットワークであり、サーバ101、クライントPC102、103、104、ネットワークプリンタ105等を接続している。
【0035】
尚、印刷装置105としては、電子写真方式を採用したものや、インクジェット方式を採用したものなど様々な印字方式を採用した印刷装置を適用可能とする。尚、印刷データを受信し、該受信した印刷データに基づく印刷データをどのような仕組みをもって行うかについては既に周知の技術を流用すれば実現することができ、詳しい説明は省略する。また、本実施形態のグループプリンティングはネットワークプリンタに限らず、ホストPCとローカルプリンタとの間でも実現できることは明らかであろう。
【0036】
<ネットワークコンピュータのハードウェア構成例>
図2は、本実施形態における情報処理装置の構成を示すブロック図である。尚、上述した情報処理装置であるプリントサーバ101、クライントPC102、103、104は同様或いは同等のハードウェア構成とする。よって、クライアントとサーバの構成を示すブロック図として説明する。
【0037】
図2において、200はCPUであり、後述するハードディスク(HD)に格納されているアプリケーションプログラム、プリンタドライバプログラム、オペレーティングシステム(OS)やネットワークプリンタ制御プログラム等を実行し、RAM202にプログラムの実行に必要な情報、ファイル等を一時的に格納する制御を行う。
【0038】
201はROMであり、内部には基本I/Oプログラム等のプログラム、文書処理の際に使用するフォントデータ、テンプレート用データ等の各種データを記憶する。202は各種データを一時記憶するためのRAMであり、CPU200の主メモリ、ワークエリア等として機能する。
【0039】
203は記録媒体へのアクセスを実現するためのドライブ装置であり、本実施形態ではフレキシブルディスク(FD)ドライブを用いている。FDドライブ203を通じて記録媒体としてのFD204に記録されたプログラム等を本コンピュータシステムにロードすることができる。尚、記録媒体はFDだけに限らず、例えばCD−ROM、CD−R、CD−RW、PCカード、DVD、ICメモリカード、MO、メモリスティック等、任意である。
【0040】
204は記録媒体であるフレキシブルディスク(FD)であり、コンピュータが読み取り可能なプログラムが格納された記録媒体である。205は外部記憶装置であり、本実施形態では大容量メモリとして機能するハードディスク(HD)を用いている。ハードディスク205には、アプリケーションプログラム、プリンタドライバプログラム、OS、ネットワークプリンタ制御プログラム、関連プログラム等が格納される。
【0041】
尚、印刷ジョブをスプールするためのスプーラはここに確保される。スプーラはクライアントPCではクライアントスプーラのことであり、プリントサーバ101ではサーバスプーラのことである。また、プリントサーバ101では、各クライアントPCから受けたジョブ情報を格納し、順序制御を行うための各種テーブルもこの外部記憶装置(ハードディスク205)に格納される。
【0042】
206は指示入力装置としてのキーボードであり、ユーザがクライアントPCに対して、或いはオペレータや管理者がプリントサーバ101に対して、デバイスの制御コマンドの命令等を入力指示するものである。
【0043】
207はディスプレイであり、キーボード206から入力したコマンドや、プリンタの状態等を表示したりするものである。
【0044】
208はシステムバスであり、クライアントPCやプリントサーバである情報処理装置内のデータの流れを司るものである。209はインタフェースであり、このインタフェース209を介して外部装置とのデータのやり取りを行う。本実施形態では、インターフェース209はネットワーク106との接続を実現する。
【0045】
本実施形態では、FD204からネットワークプリンタ制御プログラム及び関連データを直接RAM202にロードして実行させる例を示すが、これ以外にもネットワークプリンタ制御プログラムを動作させる際に、既にネットワークプリンタ制御プログラムがインストールされているHD205からRAM202にロードするようにしても良い。
【0046】
また、このネットワークプリンタ制御プログラムを記録した媒体は、FD以外にCD−ROM、CD−R、PCカード、DVD、ICメモリカードであっても良い。更に、このネットワークプリンタ制御プログラムをROM201に記憶させておき、メモリマップの一部となすように構成し、直接CPU200で実行することも可能である。
【0047】
また、以上の各装置と同等の機能を実現するソフトウェアにより、ハードウェア装置の代替として構成することもできる。
【0048】
また、このネットワークプリンタ制御プログラムのことを、簡単に印刷制御プログラムと呼ぶこともある。この印刷制御プログラムは、クライアントPCにおいて印刷ジョブの印刷先の変更を指示したり、印刷順序を変更する指示をするための制御を行うプログラムを含み、プリントサーバ101において、印刷ジョブの順序制御を行ったり、印刷ジョブの印刷終了や印刷先変更要求などを通知するためのプログラムを含んでいる。
【0049】
また、このような制御を行う印刷制御プログラムは、クライアントPCにインストールされるモジュールと、プリントサーバ101にインストールされるモジュールとを別々に分けても良いし、1つの印刷制御プログラムが、実行される環境によりクライアントPC用として機能したり、プリントサーバ用として機能するようにしても良い。或いは一台のコンピュータに、クライアントPC用の機能を持つモジュールとプリントサーバ用として機能するモジュールを一緒にインストールし、同時に、或いは時分割で擬似的に平行動作させる構成も可能である。
【0050】
また、制御プログラムは、クライアントにインストールされるモジュールと、プリントサーバにインストールされるモジュールとが協働することによって実現するようにしても良いし、クライアント或いはプリントサーバにインストールされるモジュール単独で実現するようにしても良い。
【0051】
<印刷処理システムにおけるソフトウェア構成例>
ここで、本実施形態で用いる用語の技術的意味について説明する。アプリケーションにおける印刷指示に応じてWindows(登録商標)などのOSのグラフィックエンジンを介して出力される描画命令(一般的にDDI:Device Driver Interface或いはGDI:Graphic Device Interfaceと呼ばれている)を解釈し、ページ記述言語(PDL)を生成してプリンタへ出力させるようなドライバを通常「プリンタドライバ」と呼び、このプリンタを通常「デバイス」と呼ぶ。
【0052】
尚、OSとしてはWindows(登録商標)に限定されるものではなく、描画命令を備えるOSであれば適用可能であることは言うまでもない。
【0053】
また、デバイスであるプリンタとは区別して、プリンタドライバとプリンタ出力ポート(ポートモニタ)との組み合わせを「プリンタ」と呼ぶこともある。
【0054】
次に、本実施形態におけるクライアント・サーバシステムにおけるDOMS(Document Output Management Service:文書出力管理サービス)で処理される印刷ジョブ(文書などを印刷するアプリケーションから発行された描画コマンドを含む)の流れについて説明する。
【0055】
図3は、印刷処理システムにおける印刷ジョブの流れを説明するための図である。通常、ユーザがクライアントPCで印刷の指示を行うと、アプリケーションプログラムが一連の描画命令をOSのグラフィックエンジンを介して生成し、その描画命令はプリンタドライバを経てOSのスプーラに渡される。そして、OSのスプーラは、ユーザが印刷を指示する際に選択したポートモニタにプリントジョブデータを渡してプリンタデバイスに送信させる手順をとる。
【0056】
尚、上述のポートモニタを設定するユーザインタフェースとしては、例えばWindows(登録商標)にインストールされているプリンタのプロパティーを設定する設定画面などを利用することが一例として挙げられる。
【0057】
本実施形態では、ユーザは予め印刷ジョブ制御システム用のポートモニタ321(以降、「ジョブ制御ポートモニタ」と略記)を指定して印刷を指示する。アプリケーションプログラム301は、一連の描画命令をOSのグラフィックエンジンを介して生成させる。そして、OSのグラフィックエンジンを介して生成された描画命令は、プリンタドライバ(PDL Driver)302に引き渡される。
【0058】
一方、OSのグラフィックエンジンを介して生成された描画命令を受け取ったプリンタドライバ302は、デバイスで印刷するためのページ記述言語データを生成し、スプーラ304へ出力するが、生成されたデータは、従来のポートモニタ305ではなく、ジョブ制御ポートモニタ321に対してプリンタデバイス105へのプリントジョブデータとして送信される。また、プリンタドライバ302によって提供されるユーザインタフェースを介して設定された用紙サイズ、ステープル指示などの印刷設定情報も、ジョブ制御ポートモニタ321に送信される。
【0059】
ジョブ制御ポートモニタ321は、プリントジョブデータをプリンタデバイス105に送信するのではなく、印刷ジョブ制御システム用プリントサービス322(以降、「ジョブ制御プリントサービス」と略記)に渡す。具体的にはジョブ制御ポートモニタがスプールファイルパス504をジョブ制御プリントサービス322に通知し、ジョブ制御プリントサービス322は通知されたスプールファイルパス504に基づき格納された印刷ジョブを受け取る。ジョブ制御プリントサービス322は、ジョブ制御ポートモニタ321からプリントジョブデータを受け、対応するプリンタデバイスに受けたプリントジョブデータを送信する。ジョブ制御プリントサービス322による所定のプリントデバイスに対する再印刷が行われる場合には、以前に通知されたスプールファイルパス504に基づきHD205から再度印刷ジョブを読み出しプリンタデバイスに読み出した印刷ジョブを転送する。
【0060】
印刷ジョブ制御システム用プリントマネージャ323(以降、「プリントマネージャ」と略記)は、ジョブ制御プリントサービス322内部でプリントジョブがどのような状態にあるかを調べ、調べた内容をグラフィックユーザインタフェースに表示したり、ユーザがプリントジョブを操作したりするためのユーザインタフェースを提供するプログラムである。このプリントマネージャ323は、ジョブ制御プリントサービス322のソフトウェアのインタフェース(API:Application Program Interface)を介してジョブ制御プリントサービス322と情報や指示をやり取りしている。APIによるやり取りは、ジョブ制御プリントサービス322に対してのポーリングでも、ジョブ制御プリントサービス322からのイベント通知によるものであっても良い。また更に詳細な処理としては、プリントマネージャ323がジョブ制御プリントサービス322に対してデバイスを指定したイベントを発行し、ジョブ制御プリントサービス322がそのイベントに基づくデバイスのステータスを監視し、監視結果をプリントマネージャ323に通知する。
【0061】
尚、デバイス情報コントロールモジュール306、326は、プリンタデバイス105と通信を行い、各デバイス内の印刷ジョブや動作状態に関する情報を入手したり、操作を行ったりする。また、入手した情報は、ジョブ制御プリントサービス322に渡すことができる。
【0062】
<Windows(登録商標)プリントシステムと印刷ジョブの関係>
次に、図4でWindows(登録商標)が提供するプリントシステムと印刷ジョブ制御システムにおける印刷ジョブの関係と処理概要をさらに詳しく述べる。
【0063】
図4に示すように、概念的には、プリンタドライバ302、スプーラ304、ジョブ制御ポートモニタ321は、ネットワークプリンタ105ごとに用意されている。OSがWindows(登録商標)の場合には、これらをまとめてウィンドウズ(登録商標)プリントシステム400と称する場合もある。また、プリンタドライバ302と出力ポート402との組合せが1つの論理的なプリンタに対応する。
【0064】
ジョブ制御プリントサービス322には、出力デバイスであるネットワークプリンタ105,105A,105Bに対応する数のプリンタキュー401、401A、401B及び出力ポート402,402A,402Bが含まれている。この出力ポートには対応する印刷装置のIPアドレス又は名前解決(DNS:Domain Name System)で使用されるネームなどの通信情報が関連付けられている。そして、このIPアドレス又はネームに基づきジョブの送信先が特定され、ジョブの送信(出力)が行なわれる。なお、本実施形態では、物理的な装置であるネットワーク単位にプリンタキューを設定することとしているが、これに限定されるものではなく、論理プリンタ単位にプリンタキューを設定してもよい。つまり、複数のネットワークプリンタに対して1つの論理プリンタを設定して、その論理プリンタについて1つのプリンタキューを設定しても良い。或いはその逆に、1つのネットワークプリンタに対して複数の論理プリンタを設定して、その複数の論理プリンタのそれぞれに対してプリンタキューを設定してもよい。
【0065】
プリントジョブをネットワークに転送する場合、アプリケーション301は、印刷機能を持つネットワークプリンタに対応するプリンタキューを指定して印刷指示を発行する。この印刷指示に基づいてプリンタドライバ302によって生成されたプリントジョブがジョブ制御ポートモニタ321からジョブ制御プリントサービス622に渡されると、そのプリントジョブのジョブ情報(後述)は、まずプリンタキュー701に保持される。そして、そのプリントジョブがネットワークプリンタ105に送られる。
【0066】
<印刷処理システムによる印刷ジョブ制御の説明>
次に、アプリケーション301が複数の印刷ジョブをグルーピングし、ジョブ制御プリントサービス322がグルーピングされたジョブ(以下、グループジョブともいう)をプリンタデバイス105との通信のコネクションを切断することなく、プリンタデバイス105へ転送する処理について説明する。まず、ジョブ制御プリントサービス322のプリンタキュー401で管理される印刷ジョブ情報テーブルについて説明する。尚、プリンタキュー401を印刷ジョブ情報テーブルを管理するという意味でジョブ管理部と呼ぶこともある。
【0067】
図5は、ジョブ管理部であるところのプリンタキュー401が管理する印刷ジョブ情報テーブルの構成の一例を示す図である。本実施形態における印刷ジョブ情報テーブル501は、ジョブ制御ポートモニタ321からプリントジョブデータがジョブ制御プリントサービス322へ出力されると、プリンタキュー401によって作成されるテーブルである。
【0068】
尚、この印刷ジョブ情報テーブル501は、プリントジョブデータが後述するグループジョブの場合、そのグループジョブを構成する個々のプリントジョブデータに対して発行されるものである。
【0069】
図5に示す印刷ジョブ情報テーブル501において、ジョブID502は、プリンタキュー401が管理する印刷ジョブ情報テーブルに割り当てる任意のIDであり、印刷ジョブを識別するIDとして使用される。ドキュメント名503は、アプリケーション301が印刷するドキュメント(ドキュメントファイル)の名前であり、ジョブ制御ポートモニタ321からジョブ制御プリントサービス322へプリントジョブデータが送信された際にジョブ制御ポートモニタ321からプリンタキュー401に通知される。スプールファイルパス504は、ジョブ制御ポートモニタ321からジョブ制御プリントサービス322へ送信されたプリントジョブデータをジョブ制御プリントサービス322がHD205に保存した際のファイルパスであり、ファイルの格納場所を特定する情報として利用される。
【0070】
グループID505は、アプリケーション301が複数の印刷したいファイルをグルーピング指定したときに、プリンタキュー401が発行した当該グループのためのIDである。また、このグループID505によって個々のプリントジョブデータをグループジョブとして識別することができ、アプリケーション301を介して受け取った複数の印刷ジョブをグループジョブとして管理するもできる。グループ終了フラグ506は、グループジョブにおける最後のプリントジョブデータを示すフラグである。このフラグは、グルーピング指定された複数のプリントジョブデータのうち、最後にグルーピング対象となるプリントジョブに付加される。
【0071】
グループモード507はジョブグルーピング機能のモードを表しており、アプリケーション301がジョブのグルーピングを指定したときに指定することができる。本実施形態では、<実施形態の概要>において説明したように、グループモード1〜3の何れかを指定することができ、グループモード507にはいずれのグループモードが指定されているかを示す情報が記録される。
【0072】
図6は、プリンタキュー401で受付た印刷ジョブの動作を決めるプリンタキュー情報を示す図である。プリンタキュー情報601の設定内容としては、プリンタ名602、ドライバ名603、デバイスIPアドレス604、グループID605、グループモード606が含まれる。
【0073】
プリンタ名602は、Windows(登録商標)のプリンタオブジェクトの名前を示している。プリンタ名はプリンタオブジェクト毎に異なる名前であり、これによりプリンタオブジェクトを識別することができる。ドライバ名603は、プリンタオブジェクトに設定されているドライバの名前である。デバイスIPアドレス604は対応する出力デバイス(本実施形態ではネットワークプリンタ)のIPアドレスである。グループID605は、当該グループを識別するための、IDである。このIDに基づきアプリケーション301を介して受け取った複数の印刷ジョブをグルーピングし、グループジョブとして管理することができる。グループモード606には、アプリケーションによって指定されたグループモードが設定される。
【0074】
図7は、アプリケーション301がジョブのグルーピングを指定する際の処理を示すフローチャートである。
【0075】
ステップS701では、グループジョブの開始を指定するジョブ制御プリントサービス322のAPI(StartGroupJob)を呼び出す。例えば、アプリケーションから提供される印刷画面において、プリンタのプロパティボタンを選択してグループジョブを指定することにより図8に示すようなグループジョブ設定画面801がディスプレイ207に表示される。ユーザはこのグループジョブ設定画面801により、所望のグループモードとグループプリンティングするべき印刷ジョブの数を設定することができる(804,805)。そして、開始ボタン802をクリックすることによりグループジョブが開始される。尚、キャンセルボタン803をクリックすればグループジョブを開始せずに通常のプリント処理へ戻る。グループジョブ設定画面801を用いて設定されたグループモードはプリンタキュー情報601のグループモード606に設定される。また、802への指示に応じてサーバ及びアプリケーション301を介して複数のジョブが自動的に発行される場合には、805への設定は不要となる。
【0076】
ステップS702では、アプリケーション301が通常印刷と同じように印刷処理を行う。ステップS703では、アプリケーション301がグルーピングすべきジョブが残っているか判断し、残っていれば処理をステップS705に移行する。例えば、図8のグループジョブ設定画面801において10個のジョブをグループにするべく指定されている場合は、10個のジョブが印刷されたかどうかを判断し、10個未満であればグルーピングすべきジョブがあると判定する。
【0077】
ステップS705では、ステップS702でグループのジョブとして既にアプリケーション301で印刷処理したジョブを差し替える等の、グループジョブ構成編集の指示があるかどうかを確認する。グループジョブ構成を編集する指示があればステップS706において、指示された編集処理を施し、ステップS702に戻る。また、ステップS705において、グループジョブ構成を編集する指示がなければそのままステップS702に処理を移行し、グルーピングすべき次のジョブの印刷処理を行う。
【0078】
グループジョブの構成の編集指示について説明する。ステップS701で提示されたグループジョブ設定画面801において開始ボタン802を選択すると図9に示すグループジョブモニタ画面901が表示される。この画面901には、グループジョブリスト902が表示され、ステップS702の印刷操作によりアプリケーションによる印刷処理を終えたジョブのドキュメント名が一覧表示される。尚、リスト902に表示しきれない場合はスクロールバー903を操作することにより全てのジョブを確認できる。また、リスト902には各ジョブの状態が示されており、例えば、「スプール済み」はジョブ制御プリントサービス322によるスプールが完了したことを示している。また、グループモード1または2の場合は、スプールを完了次第印刷が開始されるので、状態として「印刷中」となるジョブも存在することになる。
【0079】
残りジョブ数904には、図8の設定画面において設定したジョブ数に対して、後何個のジョブをグループジョブとして印刷できるかを表している。終了ボタン905は、グループジョブの強制終了を指示するボタンである。終了ボタン905がクリックされると、残りジョブの有無にかかわらず、その時点で最後に印刷を指示されたジョブを当該グループプリンティングの最終ジョブとし、ステップS704へ進む。尚、終了ボタン905は設定画面801で設定されたジョブ数よりも少ないジョブ数でグループプリンティングを終えたい場合に用いられるが、逆に設定されたジョブ数よりも多くしたくなる場合もありうる。このような場合に対応するために、残りジョブ数904の内容を変更可能に構成してもよい。
【0080】
906〜909はグループジョブの構成を編集するためのユーザインターフェースである。リスト902において所望のジョブを指定し、削除ボタン906を押すことにより、指定されたジョブをグループジョブの構成から削除することができる。また、リスト902において所望のジョブを指定し、一時停止ボタン907を押すことにより、指定されたジョブを一時停止の状態とすることができる。一時停止の状態では、スプールされたジョブを削除はしないものの、グループ印刷の対象からは除外される。リスト902において一時停止の状態のジョブを選択し、一時停止解除ボタン908を押せば一時停止状態が解除され、グループのジョブとして復帰する。更に、リスト902において所望のジョブを指定し、差し替えボタン909を押すことにより、指定されたジョブを差し替え対象とすることができる。差し替え対象となったジョブは削除され、元々グループジョブの対象外であった別のドキュメントに基づく印刷ジョブが、削除されたジョブの位置(順番)に挿入される。この別のジョブは、ユーザに任意に選択させるようにしても良いし、アプリケーション301を介してサーバから自動的にジョブ制御プリントサービス322に投入されたドキュメント(アプリケーションデータ)に従う印刷ジョブでも良い。
【0081】
ステップS703でグルーピングするジョブが残っていなければ、ステップS704に移行し、グループジョブの終了を示すジョブ制御プリントサービス322のAPI(EndGroupjob)を呼び出し終了する。この呼び出しによって、ジョブ情報テーブル501のグループ終了フラグ506に、グループジョブ内の最後のジョブを示すフラグをセットする。
【0082】
以上の処理におけるアプリケーションの具体的な例を説明する。例えば、アプリケーション301において10個のジョブをグルーピングするべく指定された場合、サーバやデータベースなどから、印刷する10個のドキュメントを取得し印刷するときに、印刷処理の途中で、サーバやデータベースのドキュメントが変わってしまうケースや、また、複数のサーバやデータベースから10個のジョブを取得するケースなどが存在する。
【0083】
更に、サーバやデータベースから取得するドキュメントの内、一つのドキュメントの取得に失敗したために、それに関連するジョブ(既に印刷処理をしてグループジョブとして登録されたジョブ)を当該グループから削除する必要が生じる場合がある。このような場合においても、上記グループ構成編集を用いて、削除が必要となったジョブを削除することができる。例えば、2個のグループジョブを削除する必要が生じた場合、取得に失敗したジョブと合わせて3個のジョブがグループから除外され、7個のグループジョブとして印刷することとなる。
【0084】
また、アプリケーションが印刷処理を行っている間に、サーバやデータベースから取得するドキュメントの内、サーバやデータベースであるドキュメントが変更されてしまった場合など、グループ処理を終了する前に差し替える必要が発生するケースもある。この際、既に印刷処理をしたジョブをグループから削除し、例えばアプリケーション301とは別のデータベース、サーバ或いはアプリケーション301を介して新しいジョブをグループに追加して、差し替えることが可能となる。
【0085】
また、大量ページのドキュメントなどは、サイズが大きいために、サーバやデータベースからドキュメントのデータを取得しながら印刷する場合もある。この際、ドキュメントのデータの取得途中で失敗した場合などを、印刷してしまったグループのジョブを削除し、再取得後、また、印刷するような差し替える必要が発生することがある。差し替えの要求元としてはジョブ制御プリントサービス322からサーバ及びデータベースに新たなドキュメントを要求しても良いし、図9のグループジョブモニタ画面901を介してユーザに任意のドキュメントを選択させジョブ制御プリントサービス322に投入するようにしても良いし、データベース及びサーバを介して自動的に差替えのドキュメントをジョブ制御プリントサービス322に投入するようにしても良い。
【0086】
また、アプリケーションがグループジョブの印刷を処理している間に、サーバやデータベースの状況が変わり、10個のグループジョブを、4個と6個の2つのグループジョブに分けることなどが発生するケースもある。この際、分ける必要がある片方のグループジョブを一時停止にしておき、一時停止のジョブを再印刷することで別のグループとして印刷することが可能となる(この処理については後述する)。
【0087】
図9の説明では、ドキュメントの変更等ある状況に対して、グループジョブモニタ画面901を介して各種指示を行なうように説明してきたが、サーバ及びデータベースが自動的に上に説明してきた削除、差し替え、再印刷、停止の処理を、直接又はアプリケーション301を介してジョブ制御プリントサービス322に指示するような形態も想定することもできる。尚、アプリケーション301、サーバ、データベースは論理的に区別できればよく、別々のハードウェア及びソフトウェアであっても良いし、同じハードウェア及びソフトウェアであっても良い。
【0088】
図10は、プリンタキュー401によるジョブのグルーピング処理を表したフローチャートである。
ステップS1001は、ジョブを受け付けるときにアプリケーション301がジョブのグルーピング開始を示すジョブ制御プリントサービス322のAPI(StartGroupJob)を呼び出したかを判断する。StartGroupJobが呼ばれていればステップS1002に移行し、StartGroupJobが呼び出されたことの通知を出力ポート402に対して行う。また、プリンタキュー情報601のグループID605にグループIDを設定する。グループIDは、プリンタキュー401が管理しており、各グループ毎に任意のグループIDを設定する。さらに、アプリケーションがステップS701(設定画面801)で指定したグループモードをプリンタキュー情報601のグループモード606に設定する。
【0089】
ステップS1003において、ジョブ制御ポートモニタ321からプリントジョブデータを受信する。ステップS1004では、受信したジョブに関するジョブ情報テーブル501を作成し、ジョブID502、ドキュメント名503、スプールファイルパス504を設定する。ステップS1005では、プリンタキュー情報601のグループID605を参照し、その値をジョブ情報テーブル501のグループID505に設定する。また、プリンタキュー情報601のグループモード606の値を、ジョブ情報テーブル501のグループモード507に設定する。そして、このジョブを受付順を維持してプリンタキューに登録する。
【0090】
ステップS1006では、ジョブ情報テーブル501のグループモード507を参照し、どのグループモードであるか(本実施形態では上述の3つのグループモードのいずれであるか)を確認し、ステップS1003で受け取った複数の印刷ジョブをグループジョブとして管理する。グループモード1或いはグループモード2の場合はステップS1007へ、グループモード3の場合はステップS1010へ処理を移行する。
【0091】
ステップS1007では、出力ポート402に対して、ステップS1003で受け付けたジョブの送信指示を発行する。送信指示においては、ジョブ情報テーブル501のジョブID502の情報もあわせて通知される。ステップS1008では、アプリケーション301がステップS704(図7)でグルーピングの終了(EndGroupjob)を指示したかを判断する。このグルーピングの終了とステップS1001のグルーピングの開始とを認識することによりグルーピングジョブを識別し管理することができる。グルーピング終了が指示されていなければ、まだ送信するグループジョブが存在すると判断し、ステップS1003に処理を戻す。一方、グルーピング終了が指示されたと判断した場合には、ステップS1008からステップS1009に処理を移行し、当該ジョブのジョブ情報テーブルにおけるグループ終了フラグ506を設定し、グループ終了通知を出力ポートに発行する。更に、ステップS1015に処理を移行し、グループモードをプリンタキュー情報601のグループID605、グループモード906をクリアして、本処理を終了する。
【0092】
また、ジョブ情報テーブル501のグループモード507を参照した結果、グループモードが3であった場合は、ステップS1006からステップS1010へ処理を移行する。
【0093】
グループモード3は、ジョブ制御プリントサービス322によってグループジョブとすべき全てのジョブのスプールが完了してからセッションを開始するモードである。従って、ステップS1010において、アプリケーション301がステップS704でグルーピングの終了を指示したかを判断する。ステップS1010で、グルーピング終了の指示がなされたと判断された場合は、全てのグルーピングするジョブを受け付けたとして、ステップS1011に処理を移行する。
【0094】
ステップS1011では、受け付けたジョブのジョブ情報テーブル501のグループID505を参照し、同じグループIDの全てのジョブの送信指示をジョブを受け付けた順に出力ポート702に対して発行する。送信指示には、ジョブ情報テーブル501のジョブID502の情報をあわせて通知する。また、その際、ステップS1006においてアプリケーションが、ジョブの削除や一時停止を指定されたジョブがあれば、そのジョブの送信指示は行わない。
【0095】
一方、ステップS1010においてグルーピング終了の指示が行われていないと判断された場合は、ステップS1020へ進む。ステップS1020において、ジョブの一時停止が指定されている場合は、ステップS1021に処理を移行し、一時停止の指定されたジョブの状態を一時停止にする。一時停止状態のジョブはプリンタに送信されず、スプーラで停止しているジョブのことである。また、ステップS1022においてジョブの削除または差し替えが指定されていれば、ステップS1023に処理を移行し、対象ジョブのスプールデータとそれに関連する情報を削除する。その後、差替えを行なった後にステップS1003に処理を戻し、次のジョブを受け付ける処理を行う。なお、差替えが行なわれた場合に、次に登録するジョブを優先して印刷させるのではなく、元々グループジョブの対象外であった別のドキュメントに基づく印刷ジョブが、外部からジョブ制御プリントサービス322に削除されたジョブの位置(順番)に挿入される。
【0096】
また、ステップS1001において、アプリケーション301がジョブのグルーピング開始を示すジョブ制御プリントサービス322のAPI(StartGroupJob)が呼び出されていないと判断した場合は、グルーピングを指定されていないジョブであると認識し、ステップS1012に処理を移行し、通常のプリント動作を実行する。すなわち、ステップS1012でジョブ制御ポートモニタ321からプリントジョブデータを受信し、ステップS1013においてステップS1012で受信したジョブを登録する。ここで、当該ジョブに関するジョブ情報テーブル501を作成し、ジョブID502、ドキュメント名503、スプールファイルパス504を設定する。そして、ステップS1014で、出力ポート402に対して、ステップS1012で受け付けたジョブの送信指示を行い処理を終了する。尚、送信指示には、ジョブ情報テーブル801のジョブID802の情報をあわせて通知する。
【0097】
図11は、出力ポート402によるジョブのグルーピング処理を示すフローチャートである。
【0098】
ステップS1101において、ステップS1002で通知されたStartGrouJobの指示を受信したか、プリンタキュー401で発行された送信指示を受信したかを判断する。なお、ここで受信される送信指示には、ステップS1007、S1011、S1014のいずれかにおいて発行された送信指示や、一時停止により未印刷で残っているグループジョブ(後述のステップS1112やS1104で、一時停止により送信されなかったグループジョブ)の再印刷をユーザやアプリケーションが指示することによって発行された送信指示がある。なお、一時停止によって残されたグループジョブの再印刷指示については以下のようなインターフェースが挙げられる。すなわち、図9と類似の画面において所望のジョブの一時停止を解除し、グループプリント再開ボタン(不図示)をクリックすることによって一時停止を解除されたグループジョブについて送信が開始されるようにする。また、一時停止が設定された全てのグループジョブの一時停止を解除し、それらのジョブを一つのセッションで送信させるための指示ボタンを設けてもよい。
【0099】
StartGroupJobの指示であれば処理をステップS1107に移行し、ステップS1102で通知された送信指示に指定されているジョブIDに対応するジョブ情報テーブル501のグループモード506を参照して当該ジョブのグループモードを判別する。グループモード1であれば、ステップS1108へ進み、プリンタキュー情報601のデバイスIPアドレス604に対して接続処理を行う。この処理により、グループモード1の場合はグルーピングの開始指示の直後にセッションが開始されることになる。一方、ステップS1102においてグループモード2或いはグループモード3であると判定された場合は、ステップS1101に処理を移行し、送信指示を待機する。
【0100】
さて、送信指示が発行されると、処理はステップS1101からステップS1102へ進む。ステップS1102では、グループジョブが指定されているジョブであるか否かを判定する。具体的には、送信指示に指定されたジョブIDに対応するジョブ情報テーブル501のグループID505を参照し、グループIDが設定されているかを確認する。グループIDが設定されていれば、グループジョブが指定されているとして、ステップS1103に処理を移行する。
【0101】
ステップS1103では、出力ポート402が既にグループジョブを転送するためのセッションを接続しているかを確認する。接続済みでなければ、ステップS1111で、プリンタキュー情報601のデバイスIPアドレス604に対して接続処理を行う。ステップS1112では、スプールファイルパス504のファイルの転送(プリントジョブ転送)を行い、転送を完了した後にステップS1105に処理を移行する。尚、ステップS1112やS1104では、一時停止を指定されたジョブの転送は行われず、一時停止ジョブとして残る。例えば、ステップS706でグループジョブの一部が一時停止を指定された場合、そのジョブは送信されず残される。また、この残された一時停止ジョブのグループモード507やグループIDなどの情報も残される。
【0102】
ステップS1105では、図10のステップS1009で発行されたグループ終了通知が通知されているかを確認し、グループ終了通知が発行されていなければ、まだ、送信するグルーピングのジョブがあると判断し、処理をステップS1101に移行する。ステップS1105で、グループ終了通知が発行されていれば、送信するグループのジョブが無いと判断し、ステップS1106に移行する。ステップS1106では、ステップS1111、ステップS1108或いはステップS1109で接続を開始したセッションを切断し処理を終了する。ステップS1113では、グルーピングした全てのジョブのジョブ情報テーブル601を削除し処理を終了する。
【0103】
ステップS1103において、グループジョブを転送するためのセッションが接続されていればステップS1104に処理を移行し、スプールファイルパス504のファイルの転送(プリントジョブ転送)を行い、転送が完了した後にステップS1105に処理を移行する。また、ステップS1102において、グループIDが設定されていなければ、グループジョブではないと判断し、ステップS1109に処理を移行して通常のプリント処理を実行する。すなわち、プリンタキュー情報601のデバイスIPアドレス604に対して接続処理を行い、ステップS1112で、スプールファイルパス504のファイルの転送を行い、ステップS1105に処理を移行する。
【0104】
なお、図11に示したフローチャートでは、ステップS1020〜S1023の処理はグループモード3の場合にのみ実行され、グループモードが3の場合に限りグループジョブ構成を編集できるものとした。しかしながら、グループモード1や2の場合にも、スプールを完了して転送待ちとなっているジョブについて削除、差し替え、一時停止といった構成編集を行うように構成してもよいことは明らかであろう。この場合、ステップS1008の「NO」の分岐先をステップS1020とすればよい。
【0105】
以上のようにしてグルーピングされたジョブの印刷が開始された後、デバイスにおいて紙無しなどのエラーが発生した場合に、代行印刷処理を開始させることが考えられる。しかしながら、グループプリンティングにおいて、複数のジョブからなるグループを単位とした代行印刷を行った場合、代行先のデバイスでは紙サイズなどが原因で一部のジョブが印刷されなくなる可能性がある。本実施形態では、このような課題を解消するべく以下のように制御する。
【0106】
図12は、プリンタキュー401の処理で、プリンタエラーなどが発生したことにより、グルーピングしたジョブを異なるプリンタに代行印刷させることを可能にする処理について説明するフローチャートである。
【0107】
ステップS1201において、ジョブ制御プリントサービス322がネットワークプリンタ105でエラーが発生したことを検知すると、ステップS1202に処理を移行する。プリンタエラーが発生しなければ、ステップS1201で待機する。
【0108】
ステップS1202では、プリンタエラーが発生したネットワークプリンタ105に対応するプリンタキュー401に登録されているジョブ情報テーブル501を検索する。このとき、プリンタキュー401に登録されているジョブ情報テーブル501は、エラーが発生したネットワークプリンタ105に印刷するジョブのものである。
【0109】
ステップS1203では、ステップS1202で検索したジョブ情報テーブル501の情報を元に、プリンタエラーが発生したことを通知するとともに、プリンタキュー401に登録されているジョブのドキュメント名503と、ジョブ制御サービス322に登録されているプリンタキュー601のプリンタ名602を表示し、オペレーションユーザに対して、他のプリンタへの代行印刷を促す代行通知ダイアログを表示する。オペレーションユーザは、代行通知ダイアログにおいて、他のプリンタに代行印刷するジョブを選択し、代行印刷先のプリンタを選択する。また、ユーザが代行印刷を指定しない場合は、何も操作せずダイアログを閉じるオペレーションを行う。
【0110】
ステップS1204では、代行通知ダイアログ1501からの代行指定するか否かの指示入力を待機する。代行指定の指示においては、代行印刷するジョブのジョブIDと代行印刷先のプリンタ名が指定される。このような代行指定が指示されると、処理はステップS1205に移行し、代行指定が指示されなければ処理を終了する。
【0111】
ステップS1205において代行指定されたジョブIDより、プリンタキュー401に登録されているジョブ情報テーブル501を検索し、代行印刷を指示されたジョブを検索する。更に、ジョブ情報テーブル501のグループID505にグループIDが登録されているか確認する。グループIDが登録されていれば、グルーピングされたグループジョブであるため、ステップS1206で、グループIDをジョブ情報テーブル501から削除する。この結果、代行印刷先にジョブが移動しても、グループID505が設定されていないため、グループジョブの解除が行われたことになる。ステップS1205でグループIDが設定されていなければ、そのままステップS1207に処理を移行する。
【0112】
ステップS1207では、ステップS1204で指定された代行印刷先のプリンタ名に該当するプリンタキュー701に対して、ステップS1205で検索したジョブ情報テーブル501を移動する。そして、ステップS1208において、代行印刷先のプリンタキュー701に対してジョブ情報テーブル501の登録を行い、ステップS1209に進む。以上のステップS1205〜S1208の処理を現在印刷中のグループ内の全ジョブについて実行する(ステップS1209)。
【0113】
図16は、図12のステップS1203の処理によって表示される代行通知ダイアログの表示例を示す図である。このダイアログは、プリンタエラーが発生したことをユーザに通知し、プリンタキュー401に登録されているエラーが発生したジョブのドキュメント名503を処理待ちジョブリスト1602に表示し、ジョブ制御サービス322に登録されているプリンタキュー401のプリンタ名902を1601に表示し、オペレーションユーザに対して他のプリンタへの代行印刷を促すダイアログである。時処理待ちジョブリスト1602中の所望のジョブと、代行先プリンタリスト1603中の所望のプリンタを選択し、代行印刷ボタン1604をクリックすると代行指定の指示が発行されることになる。
尚、上の説明においては、エラーが発生したジョブのみをグループジョブから解除し代行するように説明してきたが、グループジョブに含まれる複数のジョブ全てを代行するようにしても良い。その場合にはジョブリスト1602にグループジョブの全てが表示させることとなる。
【0114】
図13は、データ送信部とプリンタデバイスとの間でジョブグルーピング機能を実現するための印刷プロトコルの流れを示す図である。図13に示すように、1つの通信セッションの中で、複数のプリントジョブデータを送信している。
【0115】
尚、Windows(登録商標)の標準TCP/IPポートモニタにジョブを投入すると個々の印刷ジョブでセッション開始と切断が繰り返されるが、本実施形態では、独自のジョブ制御ポートモニタ321を介して印刷ジョブを投入することを実現し、複数の印刷ジョブのセッションをジョブ毎に切断することなく、1つのセッションで送信できるように構成されている。
【0116】
図14は、プリントジョブデータの構成の一例を示す図である。図14に示すように、ジョブスタート(job Start)、印刷設定情報、記述データ及びジョブエンド(Job End)で構成される。図13におけるプリントジョブデータがこの図14に示されるプリントジョブデータに相当する。
【0117】
図15は、プリンタデバイスへ転送されるジョブパケットの構成を示す図である。尚、このジョブパケット(以降、「パケット」と略記)は、TCP/IP層とは別に図14に示すプリントジョブデータそのものがパケット化されて送信される場合のパケットの構造を示すものである。
【0118】
図15に示す縦軸はバイトを示し、横軸は各バイトのビットを示している。以下、順にパケットの構造について説明する。
【0119】
まず、0〜1バイト目のオペレーションコードは、パケットの機能を示す長さ2バイトのIDである。このオペレーションコートとしては、以下の値を取ることができる。
・0x0201 ジョブ開始オペレーション
・0x0202 ジョブ属性設定オペレーション
・0x0204 PDLデータ送信オペレーション
・0x0205 ジョブ終了オペレーション。
【0120】
次に、2〜3バイト目のブロック番号はパケットを送信した側が返答を要求する場合に、受信側からの返答が送信側のどの返答要求に対するものであるか、その対応を取るために使用する番号である。例えば、ブロック番号=1,2,3というパケットを立て続けに送信した時に、ブロック番号=2というエラーパケットが帰ってきた場合、送信側では、2番目に送ったジョブパケットにエラーが発生したことを特定することが可能である。
【0121】
次に、4〜5バイト目のパラメータ長はデータ部のバイト長さを示す領域で、0〜64Kバイトまでを示すことが可能である。
【0122】
次に、6〜7バイト目はパケットの各種フラグを示す領域で、それぞれ以下の値を示す。
〈エラーフラグ〉この値が「1」の場合、プリンタデバイスで何らかのエラーが発生したことを示す。このフラグはプリンタデバイスからコンピュータへ送られる返信パケットに付加される。
〈通知フラグ〉この値が「1」の場合、コンピュータからの要求パケットに対する返答ではなく、プリンタデバイスが何らかの通知事項があることをコンピュータに通知することを示している。
〈継続フラグ〉この値が「1」の場合、データ部にすべてのデータが入らなかったため、次のパケットで残りのデータが送られることを示す。尚、次のパケットは前のパケットと同じオペレーション・コード、ブロック番号を設定しなくてはならない。
〈返答要求〉コンピュータからプリンタデバイスに対して返答パケットが必要な場合に、「1」をセットする。「0」のときは要求パケットが正常に処理された場合であり、返答は返さない。また、プリンタデバイスでエラーが発生した場合には、返答要求の0/1に関わらず、常にエラーフラグを「1」に設定した返答パケットを送出する。
【0123】
次に、8〜9バイト目のユーザID及び10〜11バイト目のパスワードは、要求パケットでできる操作にセキュリティ的制限を設ける際の認証に使われる領域である。本実施形態には影響しない。
【0124】
次に、12バイト目以降はオペレーションコードに対応した追加データを格納する領域である。ジョブ開始オペレーションの場合、追加データとしてジョブの実行モードが記述される。ここで、指定可能な実行モードを以下に挙げる。
〈0x01:ジョブの通常実行〉
当該ジョブは通常ジョブとして印刷装置のキューの最後に追加され、スケジューリングが回ってきたら印刷処理を行う。
〈0x04:ジョブの割り込み実行〉
当該ジョブは割り込みジョブとして扱い、すべてのジョブを処理を停止して当該ジョブの印刷を優先して実行する。
【0125】
以上説明したように、実施形態によれば、コンピュータ(クライアントPCやプリントサーバ)において、複数の印刷ジョブをグルーピングし、グループジョブとしてプリンタデバイスへ転送することで、複数のコンピュータからコンピュータ毎に複数の印刷ジョブが送信されたとしても、プリンタデバイスではコンピュータ毎にグルーピングされた印刷ジョブを受信し、確実に印刷処理を行うことができる。
【0126】
また、グループジョブ指定中に一部のジョブを差し替える必要が生じた場合に、一度グルーピングしたジョブの内の所望のジョブを解除したりすることができ、グルーピングジョブにおける柔軟性が向上する。
【0127】
以上説明したように、上記実施形態によれば、ジョブグルーピング機能を持つプリンタデバイスやプリンタドライバでなければジョブグルーピングが出来なかったという課題や、複数のクライアントホストから印刷ジョブを制御するプリントサーバが無ければジョブグルーピングを実現できなかったという課題に対して、複数のホストから、ホスト毎に複数の印刷ジョブをプリンタデバイスに送信しても確実にジョブのグルーピングを実現することが可能となる。
【0128】
また、デバイスにおいて、グルーピングされたジョブで紙無しなどのエラーが発生し、代行印刷処理が発生した場合、代行先のデバイスでは、紙サイズなどが原因で、一部のジョブが印刷されないという課題に対して、代行印刷の場合にはグルーピングの指定を解除して他のプリンタに印刷することにより、そのジョブの特性に合ったプリンタに移動できる。
【0129】
また、グループジョブ指定中に一部のジョブを差し替える必要があっても、一度グルーピングを指定したジョブを解除することができず、グルーピングジョブを2度印刷しなければならなかったという課題に対して、全てのグループ化されるジョブがスプールしてからプリンタに送信するという方式を選択できることによって、送信が開始されるまえにジョブの一時停止や削除を実現できる。
【0130】
尚、本発明は複数の機器(例えば、ホストコンピュータ,インタフェース機器,リーダ,プリンタなど)から構成されるシステムに適用しても、1つの機器からなる装置(例えば、複写機,ファクシミリ装置など)に適用しても良い。
【0131】
また、本発明の目的は前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ(CPU若しくはMPU)が記録媒体に格納されたプログラムコードを読出し実行することによっても、達成されることは言うまでもない。
【0132】
この場合、記録媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記録媒体は本発明を構成することになる。
【0133】
このプログラムコードを供給するための記録媒体としては、例えばフロッピー(登録商標)ディスク,ハードディスク,光ディスク,光磁気ディスク,CD−ROM,CD−R,磁気テープ,不揮発性のメモリカード,ROMなどを用いることができる。
【0134】
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているOS(オペレーティングシステム)などが実際の処理の一部又は全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【0135】
更に、記録媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部又は全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【図面の簡単な説明】
【0136】
【図1】本実施形態による印刷処理システムの構成を示す図である。
【図2】本実施形態によるネットワークコンピュータのハードウエア構成を示す図である。
【図3】本実施形態における印刷処理を説明するための図である。
【図4】本実施形態における、Windows(登録商標)が提供するプリントシステムと印刷ジョブ制御システムにおける印刷ジョブの関係を示す図である。
【図5】本実施形態におけるジョブ制御サービス322が管理する印刷ジョブ情報テーブルを示した図である。
【図6】本実施形態におけるプリンタキューで管理するプリンタキュー情報を示す図である。
【図7】本実施形態におけるアプリケーションがジョブのグルーピングを指定する処理を示すフローチャートである。
【図8】グループジョブの設定画面の一例を示す図である。
【図9】グループジョブをモニタする画面の一例を示す図である。
【図10】本実施形態におけるプリンタキューのジョブのグルーピング処理を表したフローチャートである。
【図11】本実施形態における出力ポートのジョブのグルーピング処理を示すフローチャートである。
【図12】本実施形態における代行印刷する場合の動作の流れを示すフローチャートである。
【図13】データ送信部とプリンタデバイスとの間でジョブグルーピング機能を実現するための印刷プロトコルの流れを示す図である。
【図14】プリントジョブデータの構成の一例を示す図である。
【図15】プリンタデバイスへ転送されるジョブパケットの構成を示す図である。
【図16】図12のステップS1203の処理によって表示される代行通知ダイアログの表示例を示す図である。

【特許請求の範囲】
【請求項1】
情報処理装置と画像形成装置とを含む印刷システムにおける情報処理装置の印刷ジョブの転送制御方法であって、
アプリケーションデータに基づく印刷ジョブを複数受け取る工程と、
前記受け取る工程において受け取った複数の印刷ジョブをグルーピングし、グループジョブとして管理する工程と、
前記複数の印刷ジョブのスプールが完了した後に、所定の印刷プロトコルを用いて1つのセッションで該複数の印刷ジョブを画像形成装置へ転送するように制御する工程とを有することを特徴とするジョブ転送制御方法。
【請求項2】
前記複数の印刷ジョブのスプールが完了したタイミングを含み、前記印刷ジョブの複数種類のスプール状況に対応した複数種類のタイミングから、前記セッションの開始タイミングを選択可能であることを特徴とする請求項1に記載のジョブ転送制御方法。
【請求項3】
前記複数のタイミングの一つが、ジョブグルーピングの開始時であることを特徴とする請求項2に記載のジョブ転送制御方法。
【請求項4】
前記複数のタイミングの一つが、1つめの印刷ジョブのスプールの完了時点であることを特徴とする請求項2に記載のジョブ転送制御方法。
【請求項5】
前記セッションが開始されるまでの間に、前記受け取る工程において受け取った印刷ジョブのうち所望の印刷ジョブを当該セッションにおける送信対象から除外する工程を更に備えることを特徴とする請求項1に記載のジョブ転送制御方法。
【請求項6】
前記除外する工程では、所望の印刷ジョブが削除されることを特徴とする請求項5に記載のジョブ転送制御方法。
【請求項7】
前記除外する工程では、所望の印刷ジョブを一時停止状態に設定することにより前記セッションにおける送信対象から除外し、
複数の印刷ジョブの一時停止状態を解除して、前記一時停止状態を解除された複数の印刷ジョブをグループジョブとして1セッションで画像形成装置へ転送する工程を更に備えることを特徴とする請求項5に記載のジョブ転送制御方法。
【請求項8】
前記セッションにおける前記複数の印刷ジョブの印刷中に、前記画像形成装置にエラーが発生し、代行印刷が指示された場合、前記グルーピングを解除し、別の画像形成装置に印刷ジョブを転送する工程を更に備えることを特徴とする請求項1に記載のジョブ転送制御方法。
【請求項9】
情報処理装置と画像形成装置とを含む印刷システムにおける情報処理装置の印刷ジョブの転送制御方法であって、
アプリケーションデータに基づく印刷ジョブを複数受け取る工程と、
前記受け取る工程において受け取った複数の印刷ジョブをグルーピングし、グループジョブとして管理する工程と、
前記受け取る工程で受け取られ、画像形成装置へ送信されていない状態の印刷ジョブのうち、指定された印刷ジョブを該画像形成装置への送信対象のジョブから除外する工程と、
所定の印刷プロトコルを用いて1つのセッションで該複数の印刷ジョブを画像形成装置へ転送するように制御する工程とを有することを特徴とするジョブ転送制御方法。
【請求項10】
情報処理装置と画像形成装置とを含む印刷システムにおける情報処理装置であって、
アプリケーションデータに基づく印刷ジョブを複数受け取る手段と、
前記受け取る手段において受け取った複数の印刷ジョブをグルーピングし、グループジョブとして管理する手段と、
前記複数の印刷ジョブのスプールが完了した後に、所定の印刷プロトコルを用いて1つのセッションで該複数の印刷ジョブを画像形成装置へ転送するように制御する手段とを有することを特徴とする情報処理装置。
【請求項11】
情報処理装置と画像形成装置とを含む印刷システムにおける情報処理装置であって、
アプリケーションデータに基づく印刷ジョブを複数受け取る手段と、
前記受け取る手段において受け取った複数の印刷ジョブをグルーピングし、グループジョブとして管理する手段と、
前記受け取る手段で受け取られ、画像形成装置へ送信されていない状態の印刷ジョブのうち、指定された印刷ジョブを該画像形成装置への送信対象のジョブから除外する手段と、
所定の印刷プロトコルを用いて1つのセッションで該複数の印刷ジョブを画像形成装置へ転送するように制御する手段とを有することを特徴とする情報処理装置。
【請求項12】
請求項1乃至8のいずれかに記載のジョブ転送制御方法をコンピュータに実行させるための制御プログラム。
【請求項13】
請求項1乃至8のいずれかに記載のジョブ転送制御方法をコンピュータに実行させるための制御プログラムを格納した記憶媒体。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate


【公開番号】特開2006−4077(P2006−4077A)
【公開日】平成18年1月5日(2006.1.5)
【国際特許分類】
【出願番号】特願2004−178402(P2004−178402)
【出願日】平成16年6月16日(2004.6.16)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】