(57)【要約】【課題】プリントサーバがない環境や、プリンタドライバやプリンタデバイスでジョブグルーピング機能が実装されていないプリントシステム環境でも、印刷ジョブのグルーピング機能を簡易な構成で実現可能とする。【解決手段】情報処理装置と画像形成装置とで構成される印刷システムにおける情報処理装置の印刷ジョブの転送制御方法は、アプリケーションデータに基づく印刷ジョブを複数受け取り、これら受け取った複数の印刷ジョブ（プリントジョブ）をグルーピングして、グループジョブとして管理する。そして、複数の印刷ジョブのスプールが完了した後に、所定の印刷プロトコルを用いて１つのセッションで該複数の印刷ジョブ（プリントジョブデータ）を画像形成装置へ転送するように制御する。【選択図】    図１３
2006004077.tif 000002
【特許請求の範囲】
【請求項１】
情報処理装置と画像形成装置とを含む印刷システムにおける情報処理装置の印刷ジョブの転送制御方法であって、
アプリケーションデータに基づく印刷ジョブを複数受け取る工程と、
前記受け取る工程において受け取った複数の印刷ジョブをグルーピングし、グループジョブとして管理する工程と、
前記複数の印刷ジョブのスプールが完了した後に、所定の印刷プロトコルを用いて１つのセッションで該複数の印刷ジョブを画像形成装置へ転送するように制御する工程とを有することを特徴とするジョブ転送制御方法。
【請求項２】
前記複数の印刷ジョブのスプールが完了したタイミングを含み、前記印刷ジョブの複数種類のスプール状況に対応した複数種類のタイミングから、前記セッションの開始タイミングを選択可能であることを特徴とする請求項１に記載のジョブ転送制御方法。
【請求項３】
前記複数のタイミングの一つが、ジョブグルーピングの開始時であることを特徴とする請求項２に記載のジョブ転送制御方法。
【請求項４】
前記複数のタイミングの一つが、１つめの印刷ジョブのスプールの完了時点であることを特徴とする請求項２に記載のジョブ転送制御方法。
【請求項５】
前記セッションが開始されるまでの間に、前記受け取る工程において受け取った印刷ジョブのうち所望の印刷ジョブを当該セッションにおける送信対象から除外する工程を更に備えることを特徴とする請求項１に記載のジョブ転送制御方法。
【請求項６】
前記除外する工程では、所望の印刷ジョブが削除されることを特徴とする請求項５に記載のジョブ転送制御方法。
【請求項７】
前記除外する工程では、所望の印刷ジョブを一時停止状態に設定することにより前記セッションにおける送信対象から除外し、
複数の印刷ジョブの一時停止状態を解除して、前記一時停止状態を解除された複数の印刷ジョブをグループジョブとして１セッションで画像形成装置へ転送する工程を更に備えることを特徴とする請求項５に記載のジョブ転送制御方法。
【請求項８】
前記セッションにおける前記複数の印刷ジョブの印刷中に、前記画像形成装置にエラーが発生し、代行印刷が指示された場合、前記グルーピングを解除し、別の画像形成装置に印刷ジョブを転送する工程を更に備えることを特徴とする請求項１に記載のジョブ転送制御方法。
【請求項９】
情報処理装置と画像形成装置とを含む印刷システムにおける情報処理装置の印刷ジョブの転送制御方法であって、
アプリケーションデータに基づく印刷ジョブを複数受け取る工程と、
前記受け取る工程において受け取った複数の印刷ジョブをグルーピングし、グループジョブとして管理する工程と、
前記受け取る工程で受け取られ、画像形成装置へ送信されていない状態の印刷ジョブのうち、指定された印刷ジョブを該画像形成装置への送信対象のジョブから除外する工程と、
所定の印刷プロトコルを用いて１つのセッションで該複数の印刷ジョブを画像形成装置へ転送するように制御する工程とを有することを特徴とするジョブ転送制御方法。
【請求項１０】
情報処理装置と画像形成装置とを含む印刷システムにおける情報処理装置であって、
アプリケーションデータに基づく印刷ジョブを複数受け取る手段と、
前記受け取る手段において受け取った複数の印刷ジョブをグルーピングし、グループジョブとして管理する手段と、
前記複数の印刷ジョブのスプールが完了した後に、所定の印刷プロトコルを用いて１つのセッションで該複数の印刷ジョブを画像形成装置へ転送するように制御する手段とを有することを特徴とする情報処理装置。
【請求項１１】
情報処理装置と画像形成装置とを含む印刷システムにおける情報処理装置であって、
アプリケーションデータに基づく印刷ジョブを複数受け取る手段と、
前記受け取る手段において受け取った複数の印刷ジョブをグルーピングし、グループジョブとして管理する手段と、
前記受け取る手段で受け取られ、画像形成装置へ送信されていない状態の印刷ジョブのうち、指定された印刷ジョブを該画像形成装置への送信対象のジョブから除外する手段と、
所定の印刷プロトコルを用いて１つのセッションで該複数の印刷ジョブを画像形成装置へ転送するように制御する手段とを有することを特徴とする情報処理装置。
【請求項１２】
請求項１乃至８のいずれかに記載のジョブ転送制御方法をコンピュータに実行させるための制御プログラム。
【請求項１３】
請求項１乃至８のいずれかに記載のジョブ転送制御方法をコンピュータに実行させるための制御プログラムを格納した記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プリントシステムにおけるジョブのグルーピングに関するものである。
【背景技術】
【０００２】
従来からプリンタデバイスに印刷ジョブのデータを送信する方法として様々な層における様々な種類のプロトコルが考案されている。一般に、プリンタデバイスで印刷する場合、プリンタデバイスは、ホストから送信された印刷ジョブを受け付け、印刷ジョブを受け付けた順に印刷を行っている。
【０００３】
一方、ホスト側では、複数のドキュメントを夫々異なる印刷要求として発行するため、複数ドキュメントの印刷要求の間に他のユーザの印刷要求が割り込んでしまう場合がある。そして、このような場合、出力結果の途中に他のユーザの印刷結果が混在してしまうという問題点があった。
【０００４】
例えば、複数のホストから、ホスト毎に複数の印刷ジョブをプリンタデバイスに送信すると、複数のホストからの印刷ジョブによる印刷結果が排紙トレイに混在する。このため、他ホストから送信した印刷ジョブによる印刷結果と区別するためにユーザが印刷結果の仕分けを行わなければならなかった。また、この場合、印刷結果の仕分けミスにより、他ホストから印刷したジョブを間違って持っていくという問題も発生していた。
【０００５】
そこで、このような問題点に鑑み、ホスト側で複数の印刷ジョブを１つにまとめて出力する、以下に述べるような「ジョブグルーピング」の仕組みが提案されている。
【０００６】
（１）ドキュメント結合方式
プリンタデバイスに送信する前に、ホストにおいて、複数の印刷ジョブを、中間形式のデータを介して１つのドキュメントとして結合してしまい、１つのドキュメントに基づく印刷データを作成し、作成した印刷データをプリンタデバイスに投入する方式。
【０００７】
（２）ＩＰＰ（Internet Printing Protocol）方式
ホストが複数の印刷ジョブをプリントサーバに送信するときに、印刷ジョブを結合するコマンドを送り、プリントサーバ或いはプリンタデバイスで印刷ジョブの結合処理を行って排紙する方式。
【０００８】
ＩＰＰ方式の代表的な例として、例えばインターネットを通じて遠隔地にあるプリントサーバに対して印刷を行うことや遠隔地からの印刷を受けることができるＩＰＰが知られている。このＩＰＰ方式においては、マルチドキュメント宣言のコマンドを用いて複数のドキュメント（Microsoft Word（登録商標）、Microsoft Excel（登録商標）で作成された文書など）をサーバへ送る機能（１ジョブマルチドキュメント機能）などが知られている。
【０００９】
この１ジョブマルチドキュメント機能では、予めプリントサーバ（プリンタに装着されるネットワークカードを含む）にCreate Jobコマンドを通知し、その通知に応答してサーバ側から返答されるジョブＩＤを各々のジョブ（ドキュメント）に含め、各々のジョブをプリントサーバに送信する。
【００１０】
一方、プリントサーバ側では、Create Jobのコマンドに対応して生成したジョブＩＤに対応する器を作成すると共にクライアント側に通知し、ジョブＩＤが含まれる任意の印刷ジョブがクライアントから個々送信されてきた場合、その印刷ジョブを器の中に一旦格納する。そして、Job Endのコマンドが送信されてきた場合に、それまで器の中に格納した印刷ジョブを他のジョブの出力が割り込まないように制御する。
【００１１】
（３）特許文献１に記載された方法
プリントサーバがプリントサーバに登録された複数ホストからの印刷ジョブの順序制御を行い、印刷ジョブをグループ単位にプリンタデバイスに送信することで、プリンタデバイスで排紙される印刷ジョブがグループ毎にまとまって排紙される方式。
【００１２】
特許文献１には印刷するドキュメントをグループ化し、他の印刷要求を割り込ませないようにして印刷を行う仕組みが記載されている。
【特許文献１】特開２００２−１８２８７８号公報
【発明の開示】
【発明が解決しようとする課題】
【００１３】
しかしながら、従来のグルーピング方式では、上記（１）の場合、１つのドキュメントを中間形式のデータを介してホスト側で作成し、その後作成した中間形式のデータを印刷データに変換する処理が介入するため、スループットが落ちると言う問題点があった。
【００１４】
また、上記（２）において、プリントサーバでジョブを結合する場合、ＩＰＰのコマンドに従った処理を実行するための機能をプリントサーバ側に設ける必要がある。また、プリンタＩＤに基づく煩雑な処理をプリントサーバ側で行う必要があるという問題点があった。また、プリンタデバイスでジョブを結合する場合、例えばプリンタ記述言語にジョブの結合コマンドを用意する等の処置が必要であり、その結合コマンドがデバイス側で処理できなければならない。このため、プリンタドライバ、プリンタデバイスに機能を追加する必要があり、結合コマンドに対応していないプリンタ（ジョブのグルーピング機能を持たないプリンタデバイス）ではジョブグルーピングの機能を利用できなかった。また、プリンタデバイスでジョブを結合する場合には、デバイスに全てのグループジョブがスプールされるまで印刷できないなどの制約があり、大量ページのジョブを印刷できないという問題もあった。
【００１５】
更に、上記（３）では、プリントサーバでグループ毎に印刷ジョブの制御を行う場合に、プリントサーバが管理していないホストや他のプリントサーバからデバイスへ印刷する印刷ジョブの割り込みが発生し、印刷ジョブのグルーピングが正確に行われないケースやプリントサーバがなければ実現できないケースなどがあった。
【００１６】
一方、ＦＴＰ（File Transfer Protocol）に準じた通信を行うことにより複数の電子ファイルをまとめて送信することができるが、これを印刷システムに適用した場合に、個々のアプリケーションデータから個々の印刷データファイルをプリンタドライバなどを利用して作成し、かつ、作成した複数の印刷データファイルをプリンタ装置にＦＴＰを用いてプリンタに送信するようユーザが操作を行なう必要があり、煩雑な作業を要するなど現実的ではなかった。
【００１７】
本発明は、簡単な構成で複数の印刷ジョブをグルーピングすることを目的とする。
また、本発明の目的は、プリントサーバがない環境や、プリンタドライバやプリンタデバイスでジョブグルーピング機能が実装されていないプリントシステム環境でも印刷ジョブのグルーピング機能を実現可能とすることにある。
【課題を解決するための手段】
【００１８】
上記目的を達成するための本発明によるジョブ転送制御方法は、
情報処理装置と画像形成装置とを含む印刷システムにおける情報処理装置の印刷ジョブの転送制御方法であって、アプリケーションデータに基づく印刷ジョブを複数受け取る工程と、前記受け取る工程において受け取った複数の印刷ジョブをグルーピングし、グループジョブとして管理する工程と、前記複数の印刷ジョブのスプールが完了した後に、所定の印刷プロトコルを用いて１つのセッションで該複数の印刷ジョブを画像形成装置へ転送するように制御する工程とを有する。
【００１９】
また、上記目的を達成するための本発明による情報処理装置は次の構成を備える。すなわち、
情報処理装置と画像形成装置とを含む印刷システムにおける情報処理装置であって、アプリケーションデータに基づく印刷ジョブを複数受け取る手段と、前記受け取る手段において受け取った複数の印刷ジョブをグルーピングし、グループジョブとして管理する手段と、前記複数の印刷ジョブのスプールが完了した後に、所定の印刷プロトコルを用いて１つのセッションで該複数の印刷ジョブを画像形成装置へ転送するように制御する手段とを有する。
【発明の効果】
【００２０】
本発明によれば、簡単な構成で複数の印刷ジョブをグルーピングすることが可能となる。 また、プリントサーバがない環境や、プリンタドライバやプリンタデバイスでジョブグルーピング機能が実装されていないプリントシステム環境でも印刷ジョブのグルーピング機能を実現することが可能になる。
【発明を実施するための最良の形態】
【００２１】
以下、添付の図面を参照して本発明の好適な実施形態について詳細に説明する。
【００２２】
＜実施形態の概要＞
ネットワーク環境において印刷ジョブを受け付けて印刷を行うために、プリンタデバイスはＬＰＲプロトコルやＲＡＷ印刷プロトコル、ＩＰＰプロトコルなどネットワークプロトコルをベースとした印刷プロトコルを持っている。プリンタデバイスは、これらの印刷プロトコルで印刷ジョブを受け付けるが、印刷プロトコルのセッションを張っているときには他のセッションの印刷ジョブのデータを受け付けることが出来ない。本実施形態の印刷処理システムではそのようなプリンタデバイスの印刷プロトコルの特性を利用してジョブグルーピングを実現する。
【００２３】
より具体的には、アプリケーションが印刷ジョブをグルーピングする場合には、アプリケーションはグルーピング開始の呼び出しをプリントシステムに行い、グルーピングする印刷ジョブを通常の印刷と同じように処理する。グルーピングするジョブの印刷処理が終了するとアプリケーションがグルーピングの終了の呼び出しを行う。印刷処理システムはこの呼び出しにより複数のジョブをグルーピングし、グルーピングされた複数のジョブをプリンタデバイスの印刷プロトコルの１つのセッション内で送信する。
【００２４】
また、本実施形態では、グルーピング機能における１セッション内で送信する方式に以下の方式（グループモード）を設ける。
［グループモード１］アプリケーションがジョブのグルーピングの指示を開始すると、セッションを開始する方法。グループモード１の方式によれば１ページめの印刷が早くなる。つまり、FirstPrintが速くなる。
［グループモード２］グループジョブの内、１つのジョブのスプールが完了すると、セッションを開始する方法。グループモード２の方式によれば、グループモード１の方式よりセッションを保持する時間が減り、他のホストからの印刷を妨げる可能性が低減する。また、FirstPrintも速くなる。
［グループモード３］ホスト全てのジョブのスプールが完了してからセッションを開始する方法。グループモード３の方式によれば、グループジョブとして印刷を指示した後でも、所望のジョブをグループジョブから削除したりする等の対処が可能となる。また、グループモード１，２では、アプリケーションがグループジョブに途中で失敗しても最初のジョブなどは印刷されてしまい無駄な印刷が発生するが、グループモード３ではこのような不具合を解消できる。
【００２５】
本実施形態においては、印刷するジョブの状況やプリントシステムの状況により、所望のグループモードを選択することを可能としている。例えば、グルーピングするジョブの内、最初のジョブが小さいジョブでスプールの時間が短い状況では、グループモード１や２の方式を使用することで、プリンタで１ページめの出力が早くすることができる。つまり、FirstPrintを重視した方式が行える。
【００２６】
また、グループモード１、２の方式では、ジョブのスプール中からプリンタデバイスにセッションが張られるため、グルーピングするホストがプリンタを占有する時間が長くなる。複数のクライアントからの印刷要求に対してプリンタデバイスを効率的に使用したい場合には、グループモード３を選択することも可能となる。
【００２７】
更に本実施形態の印刷処理システムでは以下の特徴を有する。
（１）グルーピングジョブを印刷中に、デバイスで紙無しなどのエラーが発生した場合には、グルーピングを解除して個別のジョブとして、代行印刷を行う。
（２）グルーピングされた個々のジョブは、個別のジョブとして扱えるようにする。グルーピングによって複数のジョブの送信中であっても、まだ転送されていないジョブの操作を可能にする。例えば、ジョブの一時停止や削除である。ジョブの削除よりグループジョブの差し替えが可能。アプリケーションが一度追加したグループジョブの差し替えが可能になる。
（３）一時停止されたジョブが複数ある場合、２つ以上の一時停止のジョブを再開すれば、グループジョブとして１セッションで送信する。これにより、一度１つにグルーピングしたジョブを複数のグループに分割することが可能となる。
【００２８】
＜印刷処理システムの構成例＞
図１は、本実施形態における情報処理システムの構成を示すブロック図である。図１において、１０２、１０３、１０４はそれぞれ情報処理装置であり、クライアント・サーバシステムのクライアントとして機能する。各クライアントは、イーサネット（登録商標）などのネットワークケーブルによってネットワーク１０６に接続され、アプリケーションプログラム等の各種プログラムを実行可能である。
【００２９】
尚、本システムにおけるクライアントはパーソナルコンピュータであり、１台又は複数台が接続されているものとする。また各クライアントのことを「クライアントＰＣ」とも称す。またネットワーク１０６はイーサネット（登録商標）ケーブルなどを提供できるが、イーサネット（登録商標）ケーブルに限定されるものではなく、例えば、ＲＳ２３２Ｃインタフェースに準じた通信ケーブルや、無線通信を利用するようにしてもよい。
【００３０】
また、クライアントＰＣは、印刷データをプリンタに対応するプリンタ言語に変換する機能を有するプリンタドライバを搭載している。尚、ジョブ制御プリントサービスは後述の図１２において説明するように、複数の印刷装置（ネットワークプリンタ）を利用した仮想的プリンティング機能を備えており、複数の印刷装置に対応するためにプリンタドライバは複数のプリンタドライバをサポートするものとする。
【００３１】
１０１は情報処理装置であり、クライアント・サーバシステムのサーバとして機能する。また、サーバ１０１はネットワークケーブルによってネットワーク１０６に接続され、ネットワーク１０６上のクライアントで使用されるファイルを蓄積したり、ネットワーク１０６の使用状態を監視したりする。尚、このサーバ１０１はネットワーク１０６に接続されている複数のプリンタを管理するプリントサーバとしても機能する。
【００３２】
本実施形態のクライアントＰＣ１０２〜１０４及びプリントサーバ１０１は、一般的な情報処理装置であり、クライアントＰＣとプリントサーバにはそれぞれ異なる制御を行う印刷制御プログラムが実行可能に格納されている。また、プリントサーバ１０１はクライアントＰＣ１０２〜１０４の機能を同時に持つこともできる。
【００３３】
本実施形態におけるプリントサーバ１０１は、更に各クライアントＰＣ１０２、１０３、１０４から印刷要求が出された印字データを含む印刷ジョブを格納して印刷する機能、又はクライアントＰＣ１０２、１０３、１０４から印字データを含まないジョブ情報のみ受け取り、クライアントＰＣ１０２、１０３、１０４の印刷順序を管理し、印刷順序になったクライアントＰＣに対して印字データを含む印刷ジョブの送信許可を通知する機能、或いは後述するネットワークプリンタのステータスや印刷ジョブの各種情報などを取得し、クライアントＰＣ１０２、１０３、１０４に通知する機能などを有する。
【００３４】
１０５は印刷装置である。本実施形態では印刷装置１０５としてネットワークプリンタを用いる。よって、印刷装置１０５はネットワークインタフェース（不図示）を介してネットワーク１０６と接続され、クライアントＰＣから送信される印字データを含む印刷ジョブを解析して１ページずつドットイメージに変換し、１ページ毎に印刷する。１０６はネットワークであり、サーバ１０１、クライントＰＣ１０２、１０３、１０４、ネットワークプリンタ１０５等を接続している。
【００３５】
尚、印刷装置１０５としては、電子写真方式を採用したものや、インクジェット方式を採用したものなど様々な印字方式を採用した印刷装置を適用可能とする。尚、印刷データを受信し、該受信した印刷データに基づく印刷データをどのような仕組みをもって行うかについては既に周知の技術を流用すれば実現することができ、詳しい説明は省略する。また、本実施形態のグループプリンティングはネットワークプリンタに限らず、ホストＰＣとローカルプリンタとの間でも実現できることは明らかであろう。
【００３６】
＜ネットワークコンピュータのハードウェア構成例＞
図２は、本実施形態における情報処理装置の構成を示すブロック図である。尚、上述した情報処理装置であるプリントサーバ１０１、クライントＰＣ１０２、１０３、１０４は同様或いは同等のハードウェア構成とする。よって、クライアントとサーバの構成を示すブロック図として説明する。
【００３７】
図２において、２００はＣＰＵであり、後述するハードディスク（ＨＤ）に格納されているアプリケーションプログラム、プリンタドライバプログラム、オペレーティングシステム（ＯＳ）やネットワークプリンタ制御プログラム等を実行し、ＲＡＭ２０２にプログラムの実行に必要な情報、ファイル等を一時的に格納する制御を行う。
【００３８】
２０１はＲＯＭであり、内部には基本Ｉ／Ｏプログラム等のプログラム、文書処理の際に使用するフォントデータ、テンプレート用データ等の各種データを記憶する。２０２は各種データを一時記憶するためのＲＡＭであり、ＣＰＵ２００の主メモリ、ワークエリア等として機能する。
【００３９】
２０３は記録媒体へのアクセスを実現するためのドライブ装置であり、本実施形態ではフレキシブルディスク（ＦＤ）ドライブを用いている。ＦＤドライブ２０３を通じて記録媒体としてのＦＤ２０４に記録されたプログラム等を本コンピュータシステムにロードすることができる。尚、記録媒体はＦＤだけに限らず、例えばＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＰＣカード、ＤＶＤ、ＩＣメモリカード、ＭＯ、メモリスティック等、任意である。
【００４０】
２０４は記録媒体であるフレキシブルディスク（ＦＤ）であり、コンピュータが読み取り可能なプログラムが格納された記録媒体である。２０５は外部記憶装置であり、本実施形態では大容量メモリとして機能するハードディスク（ＨＤ）を用いている。ハードディスク２０５には、アプリケーションプログラム、プリンタドライバプログラム、ＯＳ、ネットワークプリンタ制御プログラム、関連プログラム等が格納される。
【００４１】
尚、印刷ジョブをスプールするためのスプーラはここに確保される。スプーラはクライアントＰＣではクライアントスプーラのことであり、プリントサーバ１０１ではサーバスプーラのことである。また、プリントサーバ１０１では、各クライアントＰＣから受けたジョブ情報を格納し、順序制御を行うための各種テーブルもこの外部記憶装置（ハードディスク２０５）に格納される。
【００４２】
２０６は指示入力装置としてのキーボードであり、ユーザがクライアントＰＣに対して、或いはオペレータや管理者がプリントサーバ１０１に対して、デバイスの制御コマンドの命令等を入力指示するものである。
【００４３】
２０７はディスプレイであり、キーボード２０６から入力したコマンドや、プリンタの状態等を表示したりするものである。
【００４４】
２０８はシステムバスであり、クライアントＰＣやプリントサーバである情報処理装置内のデータの流れを司るものである。２０９はインタフェースであり、このインタフェース２０９を介して外部装置とのデータのやり取りを行う。本実施形態では、インターフェース２０９はネットワーク１０６との接続を実現する。
【００４５】
本実施形態では、ＦＤ２０４からネットワークプリンタ制御プログラム及び関連データを直接ＲＡＭ２０２にロードして実行させる例を示すが、これ以外にもネットワークプリンタ制御プログラムを動作させる際に、既にネットワークプリンタ制御プログラムがインストールされているＨＤ２０５からＲＡＭ２０２にロードするようにしても良い。
【００４６】
また、このネットワークプリンタ制御プログラムを記録した媒体は、ＦＤ以外にＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＰＣカード、ＤＶＤ、ＩＣメモリカードであっても良い。更に、このネットワークプリンタ制御プログラムをＲＯＭ２０１に記憶させておき、メモリマップの一部となすように構成し、直接ＣＰＵ２００で実行することも可能である。
【００４７】
また、以上の各装置と同等の機能を実現するソフトウェアにより、ハードウェア装置の代替として構成することもできる。
【００４８】
また、このネットワークプリンタ制御プログラムのことを、簡単に印刷制御プログラムと呼ぶこともある。この印刷制御プログラムは、クライアントＰＣにおいて印刷ジョブの印刷先の変更を指示したり、印刷順序を変更する指示をするための制御を行うプログラムを含み、プリントサーバ１０１において、印刷ジョブの順序制御を行ったり、印刷ジョブの印刷終了や印刷先変更要求などを通知するためのプログラムを含んでいる。
【００４９】
また、このような制御を行う印刷制御プログラムは、クライアントＰＣにインストールされるモジュールと、プリントサーバ１０１にインストールされるモジュールとを別々に分けても良いし、１つの印刷制御プログラムが、実行される環境によりクライアントＰＣ用として機能したり、プリントサーバ用として機能するようにしても良い。或いは一台のコンピュータに、クライアントＰＣ用の機能を持つモジュールとプリントサーバ用として機能するモジュールを一緒にインストールし、同時に、或いは時分割で擬似的に平行動作させる構成も可能である。
【００５０】
また、制御プログラムは、クライアントにインストールされるモジュールと、プリントサーバにインストールされるモジュールとが協働することによって実現するようにしても良いし、クライアント或いはプリントサーバにインストールされるモジュール単独で実現するようにしても良い。
【００５１】
＜印刷処理システムにおけるソフトウェア構成例＞
ここで、本実施形態で用いる用語の技術的意味について説明する。アプリケーションにおける印刷指示に応じてWindows（登録商標）などのＯＳのグラフィックエンジンを介して出力される描画命令（一般的にＤＤＩ：Device Driver Interface或いはＧＤＩ：Graphic Device Interfaceと呼ばれている）を解釈し、ページ記述言語（ＰＤＬ）を生成してプリンタへ出力させるようなドライバを通常「プリンタドライバ」と呼び、このプリンタを通常「デバイス」と呼ぶ。
【００５２】
尚、ＯＳとしてはWindows（登録商標）に限定されるものではなく、描画命令を備えるＯＳであれば適用可能であることは言うまでもない。
【００５３】
また、デバイスであるプリンタとは区別して、プリンタドライバとプリンタ出力ポート（ポートモニタ）との組み合わせを「プリンタ」と呼ぶこともある。
【００５４】
次に、本実施形態におけるクライアント・サーバシステムにおけるＤＯＭＳ（Document Output Management Service：文書出力管理サービス）で処理される印刷ジョブ（文書などを印刷するアプリケーションから発行された描画コマンドを含む）の流れについて説明する。
【００５５】
図３は、印刷処理システムにおける印刷ジョブの流れを説明するための図である。通常、ユーザがクライアントＰＣで印刷の指示を行うと、アプリケーションプログラムが一連の描画命令をＯＳのグラフィックエンジンを介して生成し、その描画命令はプリンタドライバを経てＯＳのスプーラに渡される。そして、ＯＳのスプーラは、ユーザが印刷を指示する際に選択したポートモニタにプリントジョブデータを渡してプリンタデバイスに送信させる手順をとる。
【００５６】
尚、上述のポートモニタを設定するユーザインタフェースとしては、例えばWindows（登録商標）にインストールされているプリンタのプロパティーを設定する設定画面などを利用することが一例として挙げられる。
【００５７】
本実施形態では、ユーザは予め印刷ジョブ制御システム用のポートモニタ３２１（以降、「ジョブ制御ポートモニタ」と略記）を指定して印刷を指示する。アプリケーションプログラム３０１は、一連の描画命令をＯＳのグラフィックエンジンを介して生成させる。そして、ＯＳのグラフィックエンジンを介して生成された描画命令は、プリンタドライバ（ＰＤＬ Driver）３０２に引き渡される。
【００５８】
一方、ＯＳのグラフィックエンジンを介して生成された描画命令を受け取ったプリンタドライバ３０２は、デバイスで印刷するためのページ記述言語データを生成し、スプーラ３０４へ出力するが、生成されたデータは、従来のポートモニタ３０５ではなく、ジョブ制御ポートモニタ３２１に対してプリンタデバイス１０５へのプリントジョブデータとして送信される。また、プリンタドライバ３０２によって提供されるユーザインタフェースを介して設定された用紙サイズ、ステープル指示などの印刷設定情報も、ジョブ制御ポートモニタ３２１に送信される。
【００５９】
ジョブ制御ポートモニタ３２１は、プリントジョブデータをプリンタデバイス１０５に送信するのではなく、印刷ジョブ制御システム用プリントサービス３２２（以降、「ジョブ制御プリントサービス」と略記）に渡す。具体的にはジョブ制御ポートモニタがスプールファイルパス５０４をジョブ制御プリントサービス３２２に通知し、ジョブ制御プリントサービス３２２は通知されたスプールファイルパス５０４に基づき格納された印刷ジョブを受け取る。ジョブ制御プリントサービス３２２は、ジョブ制御ポートモニタ３２１からプリントジョブデータを受け、対応するプリンタデバイスに受けたプリントジョブデータを送信する。ジョブ制御プリントサービス３２２による所定のプリントデバイスに対する再印刷が行われる場合には、以前に通知されたスプールファイルパス５０４に基づきＨＤ２０５から再度印刷ジョブを読み出しプリンタデバイスに読み出した印刷ジョブを転送する。
【００６０】
印刷ジョブ制御システム用プリントマネージャ３２３（以降、「プリントマネージャ」と略記）は、ジョブ制御プリントサービス３２２内部でプリントジョブがどのような状態にあるかを調べ、調べた内容をグラフィックユーザインタフェースに表示したり、ユーザがプリントジョブを操作したりするためのユーザインタフェースを提供するプログラムである。このプリントマネージャ３２３は、ジョブ制御プリントサービス３２２のソフトウェアのインタフェース（API:Application Program Interface）を介してジョブ制御プリントサービス３２２と情報や指示をやり取りしている。ＡＰＩによるやり取りは、ジョブ制御プリントサービス３２２に対してのポーリングでも、ジョブ制御プリントサービス３２２からのイベント通知によるものであっても良い。また更に詳細な処理としては、プリントマネージャ３２３がジョブ制御プリントサービス３２２に対してデバイスを指定したイベントを発行し、ジョブ制御プリントサービス３２２がそのイベントに基づくデバイスのステータスを監視し、監視結果をプリントマネージャ３２３に通知する。
【００６１】
尚、デバイス情報コントロールモジュール３０６、３２６は、プリンタデバイス１０５と通信を行い、各デバイス内の印刷ジョブや動作状態に関する情報を入手したり、操作を行ったりする。また、入手した情報は、ジョブ制御プリントサービス３２２に渡すことができる。
【００６２】
＜Windows（登録商標）プリントシステムと印刷ジョブの関係＞
次に、図４でWindows（登録商標）が提供するプリントシステムと印刷ジョブ制御システムにおける印刷ジョブの関係と処理概要をさらに詳しく述べる。
【００６３】
図４に示すように、概念的には、プリンタドライバ３０２、スプーラ３０４、ジョブ制御ポートモニタ３２１は、ネットワークプリンタ１０５ごとに用意されている。ＯＳがWindows（登録商標）の場合には、これらをまとめてウィンドウズ（登録商標）プリントシステム４００と称する場合もある。また、プリンタドライバ３０２と出力ポート４０２との組合せが１つの論理的なプリンタに対応する。
【００６４】
ジョブ制御プリントサービス３２２には、出力デバイスであるネットワークプリンタ１０５，１０５Ａ，１０５Ｂに対応する数のプリンタキュー４０１、４０１Ａ、４０１Ｂ及び出力ポート４０２，４０２Ａ，４０２Ｂが含まれている。この出力ポートには対応する印刷装置のＩＰアドレス又は名前解決（ＤＮＳ：Domain Name System）で使用されるネームなどの通信情報が関連付けられている。そして、このＩＰアドレス又はネームに基づきジョブの送信先が特定され、ジョブの送信（出力）が行なわれる。なお、本実施形態では、物理的な装置であるネットワーク単位にプリンタキューを設定することとしているが、これに限定されるものではなく、論理プリンタ単位にプリンタキューを設定してもよい。つまり、複数のネットワークプリンタに対して１つの論理プリンタを設定して、その論理プリンタについて１つのプリンタキューを設定しても良い。或いはその逆に、１つのネットワークプリンタに対して複数の論理プリンタを設定して、その複数の論理プリンタのそれぞれに対してプリンタキューを設定してもよい。
【００６５】
プリントジョブをネットワークに転送する場合、アプリケーション３０１は、印刷機能を持つネットワークプリンタに対応するプリンタキューを指定して印刷指示を発行する。この印刷指示に基づいてプリンタドライバ３０２によって生成されたプリントジョブがジョブ制御ポートモニタ３２１からジョブ制御プリントサービス６２２に渡されると、そのプリントジョブのジョブ情報（後述）は、まずプリンタキュー７０１に保持される。そして、そのプリントジョブがネットワークプリンタ１０５に送られる。
【００６６】
＜印刷処理システムによる印刷ジョブ制御の説明＞
次に、アプリケーション３０１が複数の印刷ジョブをグルーピングし、ジョブ制御プリントサービス３２２がグルーピングされたジョブ（以下、グループジョブともいう）をプリンタデバイス１０５との通信のコネクションを切断することなく、プリンタデバイス１０５へ転送する処理について説明する。まず、ジョブ制御プリントサービス３２２のプリンタキュー４０１で管理される印刷ジョブ情報テーブルについて説明する。尚、プリンタキュー４０１を印刷ジョブ情報テーブルを管理するという意味でジョブ管理部と呼ぶこともある。
【００６７】
図５は、ジョブ管理部であるところのプリンタキュー４０１が管理する印刷ジョブ情報テーブルの構成の一例を示す図である。本実施形態における印刷ジョブ情報テーブル５０１は、ジョブ制御ポートモニタ３２１からプリントジョブデータがジョブ制御プリントサービス３２２へ出力されると、プリンタキュー４０１によって作成されるテーブルである。
【００６８】
尚、この印刷ジョブ情報テーブル５０１は、プリントジョブデータが後述するグループジョブの場合、そのグループジョブを構成する個々のプリントジョブデータに対して発行されるものである。
【００６９】
図５に示す印刷ジョブ情報テーブル５０１において、ジョブＩＤ５０２は、プリンタキュー４０１が管理する印刷ジョブ情報テーブルに割り当てる任意のＩＤであり、印刷ジョブを識別するＩＤとして使用される。ドキュメント名５０３は、アプリケーション３０１が印刷するドキュメント（ドキュメントファイル）の名前であり、ジョブ制御ポートモニタ３２１からジョブ制御プリントサービス３２２へプリントジョブデータが送信された際にジョブ制御ポートモニタ３２１からプリンタキュー４０１に通知される。スプールファイルパス５０４は、ジョブ制御ポートモニタ３２１からジョブ制御プリントサービス３２２へ送信されたプリントジョブデータをジョブ制御プリントサービス３２２がＨＤ２０５に保存した際のファイルパスであり、ファイルの格納場所を特定する情報として利用される。
【００７０】
グループＩＤ５０５は、アプリケーション３０１が複数の印刷したいファイルをグルーピング指定したときに、プリンタキュー４０１が発行した当該グループのためのＩＤである。また、このグループＩＤ５０５によって個々のプリントジョブデータをグループジョブとして識別することができ、アプリケーション３０１を介して受け取った複数の印刷ジョブをグループジョブとして管理するもできる。グループ終了フラグ５０６は、グループジョブにおける最後のプリントジョブデータを示すフラグである。このフラグは、グルーピング指定された複数のプリントジョブデータのうち、最後にグルーピング対象となるプリントジョブに付加される。
【００７１】
グループモード５０７はジョブグルーピング機能のモードを表しており、アプリケーション３０１がジョブのグルーピングを指定したときに指定することができる。本実施形態では、＜実施形態の概要＞において説明したように、グループモード１〜３の何れかを指定することができ、グループモード５０７にはいずれのグループモードが指定されているかを示す情報が記録される。
【００７２】
図６は、プリンタキュー４０１で受付た印刷ジョブの動作を決めるプリンタキュー情報を示す図である。プリンタキュー情報６０１の設定内容としては、プリンタ名６０２、ドライバ名６０３、デバイスＩＰアドレス６０４、グループＩＤ６０５、グループモード６０６が含まれる。
【００７３】
プリンタ名６０２は、Windows（登録商標）のプリンタオブジェクトの名前を示している。プリンタ名はプリンタオブジェクト毎に異なる名前であり、これによりプリンタオブジェクトを識別することができる。ドライバ名６０３は、プリンタオブジェクトに設定されているドライバの名前である。デバイスＩＰアドレス６０４は対応する出力デバイス（本実施形態ではネットワークプリンタ）のＩＰアドレスである。グループＩＤ６０５は、当該グループを識別するための、ＩＤである。このＩＤに基づきアプリケーション３０１を介して受け取った複数の印刷ジョブをグルーピングし、グループジョブとして管理することができる。グループモード６０６には、アプリケーションによって指定されたグループモードが設定される。
【００７４】
図７は、アプリケーション３０１がジョブのグルーピングを指定する際の処理を示すフローチャートである。
【００７５】
ステップＳ７０１では、グループジョブの開始を指定するジョブ制御プリントサービス３２２のＡＰＩ（StartGroupJob）を呼び出す。例えば、アプリケーションから提供される印刷画面において、プリンタのプロパティボタンを選択してグループジョブを指定することにより図８に示すようなグループジョブ設定画面８０１がディスプレイ２０７に表示される。ユーザはこのグループジョブ設定画面８０１により、所望のグループモードとグループプリンティングするべき印刷ジョブの数を設定することができる（８０４，８０５）。そして、開始ボタン８０２をクリックすることによりグループジョブが開始される。尚、キャンセルボタン８０３をクリックすればグループジョブを開始せずに通常のプリント処理へ戻る。グループジョブ設定画面８０１を用いて設定されたグループモードはプリンタキュー情報６０１のグループモード６０６に設定される。また、８０２への指示に応じてサーバ及びアプリケーション３０１を介して複数のジョブが自動的に発行される場合には、８０５への設定は不要となる。
【００７６】
ステップＳ７０２では、アプリケーション３０１が通常印刷と同じように印刷処理を行う。ステップＳ７０３では、アプリケーション３０１がグルーピングすべきジョブが残っているか判断し、残っていれば処理をステップＳ７０５に移行する。例えば、図８のグループジョブ設定画面８０１において１０個のジョブをグループにするべく指定されている場合は、１０個のジョブが印刷されたかどうかを判断し、１０個未満であればグルーピングすべきジョブがあると判定する。
【００７７】
ステップＳ７０５では、ステップＳ７０２でグループのジョブとして既にアプリケーション３０１で印刷処理したジョブを差し替える等の、グループジョブ構成編集の指示があるかどうかを確認する。グループジョブ構成を編集する指示があればステップＳ７０６において、指示された編集処理を施し、ステップＳ７０２に戻る。また、ステップＳ７０５において、グループジョブ構成を編集する指示がなければそのままステップＳ７０２に処理を移行し、グルーピングすべき次のジョブの印刷処理を行う。
【００７８】
グループジョブの構成の編集指示について説明する。ステップＳ７０１で提示されたグループジョブ設定画面８０１において開始ボタン８０２を選択すると図９に示すグループジョブモニタ画面９０１が表示される。この画面９０１には、グループジョブリスト９０２が表示され、ステップＳ７０２の印刷操作によりアプリケーションによる印刷処理を終えたジョブのドキュメント名が一覧表示される。尚、リスト９０２に表示しきれない場合はスクロールバー９０３を操作することにより全てのジョブを確認できる。また、リスト９０２には各ジョブの状態が示されており、例えば、「スプール済み」はジョブ制御プリントサービス３２２によるスプールが完了したことを示している。また、グループモード１または２の場合は、スプールを完了次第印刷が開始されるので、状態として「印刷中」となるジョブも存在することになる。
【００７９】
残りジョブ数９０４には、図８の設定画面において設定したジョブ数に対して、後何個のジョブをグループジョブとして印刷できるかを表している。終了ボタン９０５は、グループジョブの強制終了を指示するボタンである。終了ボタン９０５がクリックされると、残りジョブの有無にかかわらず、その時点で最後に印刷を指示されたジョブを当該グループプリンティングの最終ジョブとし、ステップＳ７０４へ進む。尚、終了ボタン９０５は設定画面８０１で設定されたジョブ数よりも少ないジョブ数でグループプリンティングを終えたい場合に用いられるが、逆に設定されたジョブ数よりも多くしたくなる場合もありうる。このような場合に対応するために、残りジョブ数９０４の内容を変更可能に構成してもよい。
【００８０】
９０６〜９０９はグループジョブの構成を編集するためのユーザインターフェースである。リスト９０２において所望のジョブを指定し、削除ボタン９０６を押すことにより、指定されたジョブをグループジョブの構成から削除することができる。また、リスト９０２において所望のジョブを指定し、一時停止ボタン９０７を押すことにより、指定されたジョブを一時停止の状態とすることができる。一時停止の状態では、スプールされたジョブを削除はしないものの、グループ印刷の対象からは除外される。リスト９０２において一時停止の状態のジョブを選択し、一時停止解除ボタン９０８を押せば一時停止状態が解除され、グループのジョブとして復帰する。更に、リスト９０２において所望のジョブを指定し、差し替えボタン９０９を押すことにより、指定されたジョブを差し替え対象とすることができる。差し替え対象となったジョブは削除され、元々グループジョブの対象外であった別のドキュメントに基づく印刷ジョブが、削除されたジョブの位置（順番）に挿入される。この別のジョブは、ユーザに任意に選択させるようにしても良いし、アプリケーション３０１を介してサーバから自動的にジョブ制御プリントサービス３２２に投入されたドキュメント（アプリケーションデータ）に従う印刷ジョブでも良い。
【００８１】
ステップＳ７０３でグルーピングするジョブが残っていなければ、ステップＳ７０４に移行し、グループジョブの終了を示すジョブ制御プリントサービス３２２のＡＰＩ（EndGroupjob）を呼び出し終了する。この呼び出しによって、ジョブ情報テーブル５０１のグループ終了フラグ５０６に、グループジョブ内の最後のジョブを示すフラグをセットする。
【００８２】
以上の処理におけるアプリケーションの具体的な例を説明する。例えば、アプリケーション３０１において１０個のジョブをグルーピングするべく指定された場合、サーバやデータベースなどから、印刷する１０個のドキュメントを取得し印刷するときに、印刷処理の途中で、サーバやデータベースのドキュメントが変わってしまうケースや、また、複数のサーバやデータベースから１０個のジョブを取得するケースなどが存在する。
【００８３】
更に、サーバやデータベースから取得するドキュメントの内、一つのドキュメントの取得に失敗したために、それに関連するジョブ（既に印刷処理をしてグループジョブとして登録されたジョブ）を当該グループから削除する必要が生じる場合がある。このような場合においても、上記グループ構成編集を用いて、削除が必要となったジョブを削除することができる。例えば、２個のグループジョブを削除する必要が生じた場合、取得に失敗したジョブと合わせて３個のジョブがグループから除外され、７個のグループジョブとして印刷することとなる。
【００８４】
また、アプリケーションが印刷処理を行っている間に、サーバやデータベースから取得するドキュメントの内、サーバやデータベースであるドキュメントが変更されてしまった場合など、グループ処理を終了する前に差し替える必要が発生するケースもある。この際、既に印刷処理をしたジョブをグループから削除し、例えばアプリケーション３０１とは別のデータベース、サーバ或いはアプリケーション３０１を介して新しいジョブをグループに追加して、差し替えることが可能となる。
【００８５】
また、大量ページのドキュメントなどは、サイズが大きいために、サーバやデータベースからドキュメントのデータを取得しながら印刷する場合もある。この際、ドキュメントのデータの取得途中で失敗した場合などを、印刷してしまったグループのジョブを削除し、再取得後、また、印刷するような差し替える必要が発生することがある。差し替えの要求元としてはジョブ制御プリントサービス３２２からサーバ及びデータベースに新たなドキュメントを要求しても良いし、図９のグループジョブモニタ画面９０１を介してユーザに任意のドキュメントを選択させジョブ制御プリントサービス３２２に投入するようにしても良いし、データベース及びサーバを介して自動的に差替えのドキュメントをジョブ制御プリントサービス３２２に投入するようにしても良い。
【００８６】
また、アプリケーションがグループジョブの印刷を処理している間に、サーバやデータベースの状況が変わり、１０個のグループジョブを、４個と６個の２つのグループジョブに分けることなどが発生するケースもある。この際、分ける必要がある片方のグループジョブを一時停止にしておき、一時停止のジョブを再印刷することで別のグループとして印刷することが可能となる（この処理については後述する）。
【００８７】
図９の説明では、ドキュメントの変更等ある状況に対して、グループジョブモニタ画面９０１を介して各種指示を行なうように説明してきたが、サーバ及びデータベースが自動的に上に説明してきた削除、差し替え、再印刷、停止の処理を、直接又はアプリケーション３０１を介してジョブ制御プリントサービス３２２に指示するような形態も想定することもできる。尚、アプリケーション３０１、サーバ、データベースは論理的に区別できればよく、別々のハードウェア及びソフトウェアであっても良いし、同じハードウェア及びソフトウェアであっても良い。
【００８８】
図１０は、プリンタキュー４０１によるジョブのグルーピング処理を表したフローチャートである。
ステップＳ１００１は、ジョブを受け付けるときにアプリケーション３０１がジョブのグルーピング開始を示すジョブ制御プリントサービス３２２のＡＰＩ（StartGroupJob）を呼び出したかを判断する。StartGroupJobが呼ばれていればステップＳ１００２に移行し、StartGroupJobが呼び出されたことの通知を出力ポート４０２に対して行う。また、プリンタキュー情報６０１のグループＩＤ６０５にグループＩＤを設定する。グループＩＤは、プリンタキュー４０１が管理しており、各グループ毎に任意のグループＩＤを設定する。さらに、アプリケーションがステップＳ７０１（設定画面８０１）で指定したグループモードをプリンタキュー情報６０１のグループモード６０６に設定する。
【００８９】
ステップＳ１００３において、ジョブ制御ポートモニタ３２１からプリントジョブデータを受信する。ステップＳ１００４では、受信したジョブに関するジョブ情報テーブル５０１を作成し、ジョブＩＤ５０２、ドキュメント名５０３、スプールファイルパス５０４を設定する。ステップＳ１００５では、プリンタキュー情報６０１のグループＩＤ６０５を参照し、その値をジョブ情報テーブル５０１のグループＩＤ５０５に設定する。また、プリンタキュー情報６０１のグループモード６０６の値を、ジョブ情報テーブル５０１のグループモード５０７に設定する。そして、このジョブを受付順を維持してプリンタキューに登録する。
【００９０】
ステップＳ１００６では、ジョブ情報テーブル５０１のグループモード５０７を参照し、どのグループモードであるか（本実施形態では上述の３つのグループモードのいずれであるか）を確認し、ステップＳ１００３で受け取った複数の印刷ジョブをグループジョブとして管理する。グループモード１或いはグループモード２の場合はステップＳ１００７へ、グループモード３の場合はステップＳ１０１０へ処理を移行する。
【００９１】
ステップＳ１００７では、出力ポート４０２に対して、ステップＳ１００３で受け付けたジョブの送信指示を発行する。送信指示においては、ジョブ情報テーブル５０１のジョブＩＤ５０２の情報もあわせて通知される。ステップＳ１００８では、アプリケーション３０１がステップＳ７０４（図７）でグルーピングの終了（EndGroupjob）を指示したかを判断する。このグルーピングの終了とステップＳ１００１のグルーピングの開始とを認識することによりグルーピングジョブを識別し管理することができる。グルーピング終了が指示されていなければ、まだ送信するグループジョブが存在すると判断し、ステップＳ１００３に処理を戻す。一方、グルーピング終了が指示されたと判断した場合には、ステップＳ１００８からステップＳ１００９に処理を移行し、当該ジョブのジョブ情報テーブルにおけるグループ終了フラグ５０６を設定し、グループ終了通知を出力ポートに発行する。更に、ステップＳ１０１５に処理を移行し、グループモードをプリンタキュー情報６０１のグループＩＤ６０５、グループモード９０６をクリアして、本処理を終了する。
【００９２】
また、ジョブ情報テーブル５０１のグループモード５０７を参照した結果、グループモードが３であった場合は、ステップＳ１００６からステップＳ１０１０へ処理を移行する。
【００９３】
グループモード３は、ジョブ制御プリントサービス３２２によってグループジョブとすべき全てのジョブのスプールが完了してからセッションを開始するモードである。従って、ステップＳ１０１０において、アプリケーション３０１がステップＳ７０４でグルーピングの終了を指示したかを判断する。ステップＳ１０１０で、グルーピング終了の指示がなされたと判断された場合は、全てのグルーピングするジョブを受け付けたとして、ステップＳ１０１１に処理を移行する。
【００９４】
ステップＳ１０１１では、受け付けたジョブのジョブ情報テーブル５０１のグループＩＤ５０５を参照し、同じグループＩＤの全てのジョブの送信指示をジョブを受け付けた順に出力ポート７０２に対して発行する。送信指示には、ジョブ情報テーブル５０１のジョブＩＤ５０２の情報をあわせて通知する。また、その際、ステップＳ１００６においてアプリケーションが、ジョブの削除や一時停止を指定されたジョブがあれば、そのジョブの送信指示は行わない。
【００９５】
一方、ステップＳ１０１０においてグルーピング終了の指示が行われていないと判断された場合は、ステップＳ１０２０へ進む。ステップＳ１０２０において、ジョブの一時停止が指定されている場合は、ステップＳ１０２１に処理を移行し、一時停止の指定されたジョブの状態を一時停止にする。一時停止状態のジョブはプリンタに送信されず、スプーラで停止しているジョブのことである。また、ステップＳ１０２２においてジョブの削除または差し替えが指定されていれば、ステップＳ１０２３に処理を移行し、対象ジョブのスプールデータとそれに関連する情報を削除する。その後、差替えを行なった後にステップＳ１００３に処理を戻し、次のジョブを受け付ける処理を行う。なお、差替えが行なわれた場合に、次に登録するジョブを優先して印刷させるのではなく、元々グループジョブの対象外であった別のドキュメントに基づく印刷ジョブが、外部からジョブ制御プリントサービス３２２に削除されたジョブの位置（順番）に挿入される。
【００９６】
また、ステップＳ１００１において、アプリケーション３０１がジョブのグルーピング開始を示すジョブ制御プリントサービス３２２のＡＰＩ（StartGroupJob）が呼び出されていないと判断した場合は、グルーピングを指定されていないジョブであると認識し、ステップＳ１０１２に処理を移行し、通常のプリント動作を実行する。すなわち、ステップＳ１０１２でジョブ制御ポートモニタ３２１からプリントジョブデータを受信し、ステップＳ１０１３においてステップＳ１０１２で受信したジョブを登録する。ここで、当該ジョブに関するジョブ情報テーブル５０１を作成し、ジョブＩＤ５０２、ドキュメント名５０３、スプールファイルパス５０４を設定する。そして、ステップＳ１０１４で、出力ポート４０２に対して、ステップＳ１０１２で受け付けたジョブの送信指示を行い処理を終了する。尚、送信指示には、ジョブ情報テーブル８０１のジョブＩＤ８０２の情報をあわせて通知する。
【００９７】
図１１は、出力ポート４０２によるジョブのグルーピング処理を示すフローチャートである。
【００９８】
ステップＳ１１０１において、ステップＳ１００２で通知されたStartGrouJobの指示を受信したか、プリンタキュー４０１で発行された送信指示を受信したかを判断する。なお、ここで受信される送信指示には、ステップＳ１００７、Ｓ１０１１、Ｓ１０１４のいずれかにおいて発行された送信指示や、一時停止により未印刷で残っているグループジョブ（後述のステップＳ１１１２やＳ１１０４で、一時停止により送信されなかったグループジョブ）の再印刷をユーザやアプリケーションが指示することによって発行された送信指示がある。なお、一時停止によって残されたグループジョブの再印刷指示については以下のようなインターフェースが挙げられる。すなわち、図９と類似の画面において所望のジョブの一時停止を解除し、グループプリント再開ボタン（不図示）をクリックすることによって一時停止を解除されたグループジョブについて送信が開始されるようにする。また、一時停止が設定された全てのグループジョブの一時停止を解除し、それらのジョブを一つのセッションで送信させるための指示ボタンを設けてもよい。
【００９９】
StartGroupJobの指示であれば処理をステップＳ１１０７に移行し、ステップＳ１１０２で通知された送信指示に指定されているジョブＩＤに対応するジョブ情報テーブル５０１のグループモード５０６を参照して当該ジョブのグループモードを判別する。グループモード１であれば、ステップＳ１１０８へ進み、プリンタキュー情報６０１のデバイスＩＰアドレス６０４に対して接続処理を行う。この処理により、グループモード１の場合はグルーピングの開始指示の直後にセッションが開始されることになる。一方、ステップＳ１１０２においてグループモード２或いはグループモード３であると判定された場合は、ステップＳ１１０１に処理を移行し、送信指示を待機する。
【０１００】
さて、送信指示が発行されると、処理はステップＳ１１０１からステップＳ１１０２へ進む。ステップＳ１１０２では、グループジョブが指定されているジョブであるか否かを判定する。具体的には、送信指示に指定されたジョブＩＤに対応するジョブ情報テーブル５０１のグループＩＤ５０５を参照し、グループＩＤが設定されているかを確認する。グループＩＤが設定されていれば、グループジョブが指定されているとして、ステップＳ１１０３に処理を移行する。
【０１０１】
ステップＳ１１０３では、出力ポート４０２が既にグループジョブを転送するためのセッションを接続しているかを確認する。接続済みでなければ、ステップＳ１１１１で、プリンタキュー情報６０１のデバイスＩＰアドレス６０４に対して接続処理を行う。ステップＳ１１１２では、スプールファイルパス５０４のファイルの転送（プリントジョブ転送）を行い、転送を完了した後にステップＳ１１０５に処理を移行する。尚、ステップＳ１１１２やＳ１１０４では、一時停止を指定されたジョブの転送は行われず、一時停止ジョブとして残る。例えば、ステップＳ７０６でグループジョブの一部が一時停止を指定された場合、そのジョブは送信されず残される。また、この残された一時停止ジョブのグループモード５０７やグループＩＤなどの情報も残される。
【０１０２】
ステップＳ１１０５では、図１０のステップＳ１００９で発行されたグループ終了通知が通知されているかを確認し、グループ終了通知が発行されていなければ、まだ、送信するグルーピングのジョブがあると判断し、処理をステップＳ１１０１に移行する。ステップＳ１１０５で、グループ終了通知が発行されていれば、送信するグループのジョブが無いと判断し、ステップＳ１１０６に移行する。ステップＳ１１０６では、ステップＳ１１１１、ステップＳ１１０８或いはステップＳ１１０９で接続を開始したセッションを切断し処理を終了する。ステップＳ１１１３では、グルーピングした全てのジョブのジョブ情報テーブル６０１を削除し処理を終了する。
【０１０３】
ステップＳ１１０３において、グループジョブを転送するためのセッションが接続されていればステップＳ１１０４に処理を移行し、スプールファイルパス５０４のファイルの転送（プリントジョブ転送）を行い、転送が完了した後にステップＳ１１０５に処理を移行する。また、ステップＳ１１０２において、グループＩＤが設定されていなければ、グループジョブではないと判断し、ステップＳ１１０９に処理を移行して通常のプリント処理を実行する。すなわち、プリンタキュー情報６０１のデバイスＩＰアドレス６０４に対して接続処理を行い、ステップＳ１１１２で、スプールファイルパス５０４のファイルの転送を行い、ステップＳ１１０５に処理を移行する。
【０１０４】
なお、図１１に示したフローチャートでは、ステップＳ１０２０〜Ｓ１０２３の処理はグループモード３の場合にのみ実行され、グループモードが３の場合に限りグループジョブ構成を編集できるものとした。しかしながら、グループモード１や２の場合にも、スプールを完了して転送待ちとなっているジョブについて削除、差し替え、一時停止といった構成編集を行うように構成してもよいことは明らかであろう。この場合、ステップＳ１００８の「ＮＯ」の分岐先をステップＳ１０２０とすればよい。
【０１０５】
以上のようにしてグルーピングされたジョブの印刷が開始された後、デバイスにおいて紙無しなどのエラーが発生した場合に、代行印刷処理を開始させることが考えられる。しかしながら、グループプリンティングにおいて、複数のジョブからなるグループを単位とした代行印刷を行った場合、代行先のデバイスでは紙サイズなどが原因で一部のジョブが印刷されなくなる可能性がある。本実施形態では、このような課題を解消するべく以下のように制御する。
【０１０６】
図１２は、プリンタキュー４０１の処理で、プリンタエラーなどが発生したことにより、グルーピングしたジョブを異なるプリンタに代行印刷させることを可能にする処理について説明するフローチャートである。
【０１０７】
ステップＳ１２０１において、ジョブ制御プリントサービス３２２がネットワークプリンタ１０５でエラーが発生したことを検知すると、ステップＳ１２０２に処理を移行する。プリンタエラーが発生しなければ、ステップＳ１２０１で待機する。
【０１０８】
ステップＳ１２０２では、プリンタエラーが発生したネットワークプリンタ１０５に対応するプリンタキュー４０１に登録されているジョブ情報テーブル５０１を検索する。このとき、プリンタキュー４０１に登録されているジョブ情報テーブル５０１は、エラーが発生したネットワークプリンタ１０５に印刷するジョブのものである。
【０１０９】
ステップＳ１２０３では、ステップＳ１２０２で検索したジョブ情報テーブル５０１の情報を元に、プリンタエラーが発生したことを通知するとともに、プリンタキュー４０１に登録されているジョブのドキュメント名５０３と、ジョブ制御サービス３２２に登録されているプリンタキュー６０１のプリンタ名６０２を表示し、オペレーションユーザに対して、他のプリンタへの代行印刷を促す代行通知ダイアログを表示する。オペレーションユーザは、代行通知ダイアログにおいて、他のプリンタに代行印刷するジョブを選択し、代行印刷先のプリンタを選択する。また、ユーザが代行印刷を指定しない場合は、何も操作せずダイアログを閉じるオペレーションを行う。
【０１１０】
ステップＳ１２０４では、代行通知ダイアログ１５０１からの代行指定するか否かの指示入力を待機する。代行指定の指示においては、代行印刷するジョブのジョブＩＤと代行印刷先のプリンタ名が指定される。このような代行指定が指示されると、処理はステップＳ１２０５に移行し、代行指定が指示されなければ処理を終了する。
【０１１１】
ステップＳ１２０５において代行指定されたジョブＩＤより、プリンタキュー４０１に登録されているジョブ情報テーブル５０１を検索し、代行印刷を指示されたジョブを検索する。更に、ジョブ情報テーブル５０１のグループＩＤ５０５にグループＩＤが登録されているか確認する。グループＩＤが登録されていれば、グルーピングされたグループジョブであるため、ステップＳ１２０６で、グループＩＤをジョブ情報テーブル５０１から削除する。この結果、代行印刷先にジョブが移動しても、グループＩＤ５０５が設定されていないため、グループジョブの解除が行われたことになる。ステップＳ１２０５でグループＩＤが設定されていなければ、そのままステップＳ１２０７に処理を移行する。
【０１１２】
ステップＳ１２０７では、ステップＳ１２０４で指定された代行印刷先のプリンタ名に該当するプリンタキュー７０１に対して、ステップＳ１２０５で検索したジョブ情報テーブル５０１を移動する。そして、ステップＳ１２０８において、代行印刷先のプリンタキュー７０１に対してジョブ情報テーブル５０１の登録を行い、ステップＳ１２０９に進む。以上のステップＳ１２０５〜Ｓ１２０８の処理を現在印刷中のグループ内の全ジョブについて実行する（ステップＳ１２０９）。
【０１１３】
図１６は、図１２のステップＳ１２０３の処理によって表示される代行通知ダイアログの表示例を示す図である。このダイアログは、プリンタエラーが発生したことをユーザに通知し、プリンタキュー４０１に登録されているエラーが発生したジョブのドキュメント名５０３を処理待ちジョブリスト１６０２に表示し、ジョブ制御サービス３２２に登録されているプリンタキュー４０１のプリンタ名９０２を１６０１に表示し、オペレーションユーザに対して他のプリンタへの代行印刷を促すダイアログである。時処理待ちジョブリスト１６０２中の所望のジョブと、代行先プリンタリスト１６０３中の所望のプリンタを選択し、代行印刷ボタン１６０４をクリックすると代行指定の指示が発行されることになる。
尚、上の説明においては、エラーが発生したジョブのみをグループジョブから解除し代行するように説明してきたが、グループジョブに含まれる複数のジョブ全てを代行するようにしても良い。その場合にはジョブリスト１６０２にグループジョブの全てが表示させることとなる。
【０１１４】
図１３は、データ送信部とプリンタデバイスとの間でジョブグルーピング機能を実現するための印刷プロトコルの流れを示す図である。図１３に示すように、１つの通信セッションの中で、複数のプリントジョブデータを送信している。
【０１１５】
尚、Windows（登録商標）の標準ＴＣＰ／ＩＰポートモニタにジョブを投入すると個々の印刷ジョブでセッション開始と切断が繰り返されるが、本実施形態では、独自のジョブ制御ポートモニタ３２１を介して印刷ジョブを投入することを実現し、複数の印刷ジョブのセッションをジョブ毎に切断することなく、１つのセッションで送信できるように構成されている。
【０１１６】
図１４は、プリントジョブデータの構成の一例を示す図である。図１４に示すように、ジョブスタート（job Start）、印刷設定情報、記述データ及びジョブエンド（Job End）で構成される。図１３におけるプリントジョブデータがこの図１４に示されるプリントジョブデータに相当する。
【０１１７】
図１５は、プリンタデバイスへ転送されるジョブパケットの構成を示す図である。尚、このジョブパケット（以降、「パケット」と略記）は、ＴＣＰ／ＩＰ層とは別に図１４に示すプリントジョブデータそのものがパケット化されて送信される場合のパケットの構造を示すものである。
【０１１８】
図１５に示す縦軸はバイトを示し、横軸は各バイトのビットを示している。以下、順にパケットの構造について説明する。
【０１１９】
まず、０〜１バイト目のオペレーションコードは、パケットの機能を示す長さ２バイトのＩＤである。このオペレーションコートとしては、以下の値を取ることができる。
・0x0201  ジョブ開始オペレーション
・0x0202  ジョブ属性設定オペレーション
・0x0204  ＰＤＬデータ送信オペレーション
・0x0205  ジョブ終了オペレーション。
【０１２０】
次に、２〜３バイト目のブロック番号はパケットを送信した側が返答を要求する場合に、受信側からの返答が送信側のどの返答要求に対するものであるか、その対応を取るために使用する番号である。例えば、ブロック番号＝１，２，３というパケットを立て続けに送信した時に、ブロック番号＝２というエラーパケットが帰ってきた場合、送信側では、２番目に送ったジョブパケットにエラーが発生したことを特定することが可能である。
【０１２１】
次に、４〜５バイト目のパラメータ長はデータ部のバイト長さを示す領域で、０〜６４Ｋバイトまでを示すことが可能である。
【０１２２】
次に、６〜７バイト目はパケットの各種フラグを示す領域で、それぞれ以下の値を示す。
〈エラーフラグ〉この値が「１」の場合、プリンタデバイスで何らかのエラーが発生したことを示す。このフラグはプリンタデバイスからコンピュータへ送られる返信パケットに付加される。
〈通知フラグ〉この値が「１」の場合、コンピュータからの要求パケットに対する返答ではなく、プリンタデバイスが何らかの通知事項があることをコンピュータに通知することを示している。
〈継続フラグ〉この値が「１」の場合、データ部にすべてのデータが入らなかったため、次のパケットで残りのデータが送られることを示す。尚、次のパケットは前のパケットと同じオペレーション・コード、ブロック番号を設定しなくてはならない。
〈返答要求〉コンピュータからプリンタデバイスに対して返答パケットが必要な場合に、「１」をセットする。「０」のときは要求パケットが正常に処理された場合であり、返答は返さない。また、プリンタデバイスでエラーが発生した場合には、返答要求の０／１に関わらず、常にエラーフラグを「１」に設定した返答パケットを送出する。
【０１２３】
次に、８〜９バイト目のユーザＩＤ及び１０〜１１バイト目のパスワードは、要求パケットでできる操作にセキュリティ的制限を設ける際の認証に使われる領域である。本実施形態には影響しない。
【０１２４】
次に、１２バイト目以降はオペレーションコードに対応した追加データを格納する領域である。ジョブ開始オペレーションの場合、追加データとしてジョブの実行モードが記述される。ここで、指定可能な実行モードを以下に挙げる。
〈0x01：ジョブの通常実行〉
当該ジョブは通常ジョブとして印刷装置のキューの最後に追加され、スケジューリングが回ってきたら印刷処理を行う。
〈0x04：ジョブの割り込み実行〉
当該ジョブは割り込みジョブとして扱い、すべてのジョブを処理を停止して当該ジョブの印刷を優先して実行する。
【０１２５】
以上説明したように、実施形態によれば、コンピュータ（クライアントＰＣやプリントサーバ）において、複数の印刷ジョブをグルーピングし、グループジョブとしてプリンタデバイスへ転送することで、複数のコンピュータからコンピュータ毎に複数の印刷ジョブが送信されたとしても、プリンタデバイスではコンピュータ毎にグルーピングされた印刷ジョブを受信し、確実に印刷処理を行うことができる。
【０１２６】
また、グループジョブ指定中に一部のジョブを差し替える必要が生じた場合に、一度グルーピングしたジョブの内の所望のジョブを解除したりすることができ、グルーピングジョブにおける柔軟性が向上する。
【０１２７】
以上説明したように、上記実施形態によれば、ジョブグルーピング機能を持つプリンタデバイスやプリンタドライバでなければジョブグルーピングが出来なかったという課題や、複数のクライアントホストから印刷ジョブを制御するプリントサーバが無ければジョブグルーピングを実現できなかったという課題に対して、複数のホストから、ホスト毎に複数の印刷ジョブをプリンタデバイスに送信しても確実にジョブのグルーピングを実現することが可能となる。
【０１２８】
また、デバイスにおいて、グルーピングされたジョブで紙無しなどのエラーが発生し、代行印刷処理が発生した場合、代行先のデバイスでは、紙サイズなどが原因で、一部のジョブが印刷されないという課題に対して、代行印刷の場合にはグルーピングの指定を解除して他のプリンタに印刷することにより、そのジョブの特性に合ったプリンタに移動できる。
【０１２９】
また、グループジョブ指定中に一部のジョブを差し替える必要があっても、一度グルーピングを指定したジョブを解除することができず、グルーピングジョブを2度印刷しなければならなかったという課題に対して、全てのグループ化されるジョブがスプールしてからプリンタに送信するという方式を選択できることによって、送信が開始されるまえにジョブの一時停止や削除を実現できる。
【０１３０】
尚、本発明は複数の機器（例えば、ホストコンピュータ，インタフェース機器，リーダ，プリンタなど）から構成されるシステムに適用しても、１つの機器からなる装置（例えば、複写機，ファクシミリ装置など）に適用しても良い。
【０１３１】
また、本発明の目的は前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ（ＣＰＵ若しくはＭＰＵ）が記録媒体に格納されたプログラムコードを読出し実行することによっても、達成されることは言うまでもない。
【０１３２】
この場合、記録媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記録媒体は本発明を構成することになる。
【０１３３】
このプログラムコードを供給するための記録媒体としては、例えばフロッピー（登録商標）ディスク，ハードディスク，光ディスク，光磁気ディスク，ＣＤ−ＲＯＭ，ＣＤ−Ｒ，磁気テープ，不揮発性のメモリカード，ＲＯＭなどを用いることができる。
【０１３４】
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）などが実際の処理の一部又は全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１３５】
更に、記録媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部又は全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【図面の簡単な説明】
【０１３６】
【図１】本実施形態による印刷処理システムの構成を示す図である。
【図２】本実施形態によるネットワークコンピュータのハードウエア構成を示す図である。
【図３】本実施形態における印刷処理を説明するための図である。
【図４】本実施形態における、Windows（登録商標）が提供するプリントシステムと印刷ジョブ制御システムにおける印刷ジョブの関係を示す図である。
【図５】本実施形態におけるジョブ制御サービス３２２が管理する印刷ジョブ情報テーブルを示した図である。
【図６】本実施形態におけるプリンタキューで管理するプリンタキュー情報を示す図である。
【図７】本実施形態におけるアプリケーションがジョブのグルーピングを指定する処理を示すフローチャートである。
【図８】グループジョブの設定画面の一例を示す図である。
【図９】グループジョブをモニタする画面の一例を示す図である。
【図１０】本実施形態におけるプリンタキューのジョブのグルーピング処理を表したフローチャートである。
【図１１】本実施形態における出力ポートのジョブのグルーピング処理を示すフローチャートである。
【図１２】本実施形態における代行印刷する場合の動作の流れを示すフローチャートである。
【図１３】データ送信部とプリンタデバイスとの間でジョブグルーピング機能を実現するための印刷プロトコルの流れを示す図である。
【図１４】プリントジョブデータの構成の一例を示す図である。
【図１５】プリンタデバイスへ転送されるジョブパケットの構成を示す図である。
【図１６】図１２のステップＳ１２０３の処理によって表示される代行通知ダイアログの表示例を示す図である。
【図１】
2006004077.tif 000003
【図２】
2006004077.tif 000004
【図３】
2006004077.tif 000005
【図４】
2006004077.tif 000006
【図５】
2006004077.tif 000007
【図６】
2006004077.tif 000008
【図７】
2006004077.tif 000009
【図８】
2006004077.tif 000010
【図９】
2006004077.tif 000011
【図１０】
2006004077.tif 000012
【図１１】
2006004077.tif 000013
【図１２】
2006004077.tif 000014
【図１３】
2006004077.tif 000015
【図１４】
2006004077.tif 000016
【図１５】
2006004077.tif 000017
【図１６】
2006004077.tif 000018