(57)【要約】【課題】  優先印刷時、或いは割り込み印刷時にユーザの意に沿った適切な印刷制御を行うことが可能になる印刷システムを提供することを目的とする。【解決手段】  印刷ジョブを解析して優先ジョブ／割り込み印刷ジョブの実行を検知し、検知された優先／割り込みジョブの指示に従いスプーラに優先／割り込み印刷ジョブの投入を指示し、この優先／割り込み印刷ジョブを優先的にデバイスへ送信する。この検知動作は、印刷ジョブ中に含まれる属性を解析することにより、又は、プリンタドライバから通知される優先／割り込みジョブのＩＤを検知することにより、実行される。【選択図】  図６
2005174225.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションデータに基づき作成されたデータをスプーラーにより外部に出力可能な情報処理装置であって、
アプリケーションデータに基づき作成されたプリントジョブのデータを受け取る受信手段と、
前記受け取ったプリントジョブのデータに、プリンタデバイスにおいて優先的に印刷出力されるよう指示された先送りジョブの属性が含まれる場合に、前記受け取ったプリントジョブのデータを優先的に前記プリンタデバイスに転送するようにする制御手段と、を有することを特徴とする情報処理装置。
【請求項２】
前記受信手段は、前記プリントジョブのデータをスプーラーから受け取ることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
さらに、前記受け取ったプリントジョブのデータを解析する解析手段を有し、
前記制御手段は、前記解析手段による解析に基づき前記先送りジョブの属性を検知することを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
さらに、前記プリンタデバイスにおける先送りジョブの指定に応じて発行される前記制御手段が解釈できる先送りジョブＩＤを、前記制御手段に通知する通知制御手段を備え、
前記制御手段は、前記スプーラーから受信した前記プリントジョブのデータに前記先送りジョブＩＤが含まれる場合に、前記プリントジョブのデータを優先的に前記プリンタデバイスに出力することを特徴とする請求項２又は３に記載の情報処理装置。
【請求項５】
前記通知制御手段は、前記プリンタデバイスにおける先送りジョブの指定に応じて発行されるオペレーティングシステムジョブＩＤを、通知するようにし、
前記制御手段は、前記通知されたオペレーティングシステムジョブＩＤに基づき前記スプーラーに対して前記オペレーティングシステムジョブＩＤのジョブを優先的に出力するよう指示することを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記通知制御手段は前記プリンタデバイスにおける先送りジョブの指定に応じて発行される、前記オペレーティングシステムジョブＩＤを前記先送りジョブＩＤと共に前記制御手段に通知し、
前記制御手段は、前記先送りジョブＩＤと共に通知されたオペレーティングシステムジョブＩＤに基づき前記スプーラーに対して前記オペレーティングシステムジョブＩＤのジョブを優先的に出力させることを特徴とする請求項４に記載の情報処理装置。
【請求項７】
前記先送りジョブは、優先ジョブ又は割り込みジョブを含むことを特徴とする請求項１乃至６の何れか１項に記載の情報処理装置。
【請求項８】
さらに、イベントの発生を検知するイベント検知手段と、
前記イベント検知手段によって検知されたイベントがジョブ投入コマンドであった場合には、投入されたジョブのＩＤとジョブ属性を生成するジョブ情報作成手段と、
を備えることを特徴とする請求項１乃至７の何れか１項に記載の情報処理装置。
【請求項９】
さらに、前記イベント検知手段によって検知されたイベントがスプール開始コマンドであった場合に、前記情報作成手段によって作成された、対応するジョブ情報をプリントジョブデータの送出元に出力するジョブ情報出力手段を備えることを特徴とする請求項８に記載の情報処理装置。
【請求項１０】
印刷装置と、この印刷装置と通信回線を介して通信可能な、印刷処理を行う情報処理装置とを有する印刷システムであって、
先送りプリントジョブを検知するジョブ検知手段と、
前記ジョブ検知手段によって検知された前記先送りジョブを優先的にプリンタデバイスに送信するようにするスケジュールアップの指示を検知するスケジュールアップ検知手段と、
前記スケジュールアップ検知手段により検知された指示に従い、前記プリンタデバイスへ先送りジョブの属性を含むジョブを出力する制御手段と、を備え、
前記印刷装置においては前記先送りジョブの属性に基づく印刷処理が行なわれることを特徴とする印刷システム。
【請求項１１】
アプリケーションデータに基づき作成されたデータをスプーラーにより外部に出力可能な情報処理方法であって、
アプリケーションデータに基づき作成されたプリントジョブのデータを受け取る受信工程と、
前記受け取ったプリントジョブのデータに、プリンタデバイスにおいて優先的に印刷出力されるよう指示された先送りジョブの属性が含まれる場合に、前記受け取ったプリントジョブのデータを優先的に前記プリンタデバイスに転送するようにする制御工程と、を有することを特徴とする情報処理方法。
【請求項１２】
前記受信工程では、前記プリントジョブのデータをスプーラーから受け取ることを特徴とする請求項１１に記載の情報処理方法。
【請求項１３】
さらに、前記受け取ったプリントジョブのデータを解析する解析工程を有し、
前記制御工程では、前記解析工程による解析に基づき前記先送りジョブの属性を検知することを特徴とする請求項１１又は１２に記載の情報処理方法。
【請求項１４】
さらに、前記プリンタデバイスにおける先送りジョブの指定に応じて発行される前記制御工程で解釈できる先送りジョブＩＤを、前記制御工程に通知する通知制御工程を備え、
前記制御工程では、前記スプーラーから受信した前記プリントジョブのデータに前記先送りジョブＩＤが含まれる場合に、前記プリントジョブのデータが優先的に前記プリンタデバイスに出力されることを特徴とする請求項１２又は１３に記載の情報処理方法。
【請求項１５】
前記通知制御工程では、前記プリンタデバイスにおける先送りジョブの指定に応じて発行されるオペレーティングシステムジョブＩＤを、通知するようにし、
前記制御工程では、前記通知されたオペレーティングシステムジョブＩＤに基づき前記スプーラーに対して前記オペレーティングシステムジョブＩＤのジョブを優先的に出力するよう指示することを特徴とする請求項１４に記載の情報処理方法。
【請求項１６】
前記通知制御工程では、前記プリンタデバイスにおける先送りジョブの指定に応じて発行される、前記オペレーティングシステムジョブＩＤが前記先送りジョブＩＤと共に前記制御工程に通知され、
前記制御工程では、前記先送りジョブＩＤと共に通知されたオペレーティングシステムジョブＩＤに基づき前記スプーラーに対して前記オペレーティングシステムジョブＩＤのジョブが優先的に出力されることを特徴とする請求項１４に記載の情報処理方法。
【請求項１７】
前記先送りジョブは、優先ジョブ又は割り込みジョブを含むことを特徴とする請求項１１乃至１６の何れか１項に記載の情報処理方法。
【請求項１８】
さらに、イベントの発生を検知するイベント検知工程と、
前記イベント検知工程で検知されたイベントがジョブ投入コマンドであった場合には、投入されたジョブのＩＤとジョブ属性を生成するジョブ情報作成工程と、
を備えることを特徴とする請求項１１乃至１７の何れか１項に記載の情報処理方法。
【請求項１９】
さらに、前記イベント検知工程で検知されたイベントがスプール開始コマンドであった場合に、前記情報作成工程で作成された、対応するジョブ情報をプリントジョブデータの送出元に出力するジョブ情報出力工程を備えることを特徴とする請求項１８に記載の情報処理方法。
【請求項２０】
請求項１１乃至１９の何れか1項に記載の情報処理方法を実現することを特徴とするコンピュータプログラム。
【請求項２１】
請求項２０に記載のコンピュータプログラムを記憶したことを特徴とする、コンピュータで読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、印刷システムのジョブ制御処理に関する。
【背景技術】
【０００２】
従来、ＤＰＡ  （ＩＳＯ１０１７５）で定義される割り込み印刷あるいは優先印刷を処理可能な印刷装置と、前記印刷装置で処理可能な割り込み印刷あるいは優先印刷指示を含んだジョブデータを生成可能なプリンタドライバが存在した。
【０００３】
このようなプリンタドライバについては、例えば、特開平７−１８２１２４号公報や特開平７−３２５６８５号公報に開示されている。特開平７−１８２１２４号公報では、プリンタドライバが優先印刷指令を受け、かつプリンタ装置が現在他の印刷データの出力処理中であるときに、優先印刷する印刷データから描画データを生成することにより印刷データを展開することなく優先印刷を可能とする印刷システムが開示されている。また、特開平７−３２５６８５号公報では、印刷データに付加された優先度情報に基づいて印刷順位を定め、印刷順位を管理する印刷システムが開示されている。
【特許文献１】特開平０７―１８２１２４
【特許文献２】特開平０７―３２５６８５
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、昨今の印刷システムでは印刷効率を向上させるために、プリンタドライバと印刷装置の間には、印刷ジョブをスプールし、順次デバイスへ送信する機能を有するスプーラーが存在することが普通となっている。例えば、Ｗｉｎｄｏｗｓ（登録商標）におけるプリントスプーラーが代表例的なスプーラーとして知られている。そして、これらスプーラーにおいてはドキュメントに優先順位のパラメータを付加して、優先順位の高いドキュメントを優先順により低いドキュメントよりも先に出力するという機能が備わっていた。
【０００５】
また、上に説明したＤＰＡ（ＩＳＯ１０１７５）で定義される割り込み印刷あるいは優先印刷と、オペレーティングシステムにおける優先順位とのリンクは取られていなかった。
【０００６】
このため、プリンタドライバで指示された優先印刷ジョブ或いは割り込み印刷ジョブがスプーラーに通常ジョブと同様にＷｉｎｄｏｗｓ（登録商標）プリントスプーラーにスプールされてしまうため、例えば先行するジョブが複数存在した場合には、該複数の印刷ジョブの送信処理が完了するまで、プリンタデバイスにおいて割り込み印刷ジョブ或いは優先印刷されるはずの印刷ジョブの送信が待たされてしまうという問題があった。
【０００７】
このように、単に印刷ジョブに優先度を付して、該付された優先度に基づく先送り印刷処理を行うという概念は既に公知であるものの、昨今の複雑化した高機能印刷システムにおいては改善の余地があった。
【０００８】
本発明は上記の問題点を解消するためになされたもので、プリントジョブのデータをプリンタデバイスに出力する順番を、プリンタデバイスにおける先送りジョブの指定を考慮して行える仕組みを提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記課題を解決するために、本発明による情報処理装置は、アプリケーションデータに基づき作成されたデータをスプーラーにより外部に出力可能な情報処理装置であって、アプリケーションデータに基づき作成されたプリントジョブのデータを受け取る受信手段と、前記受け取ったプリントジョブのデータに、プリンタデバイスにおいて優先的に印刷出力されるよう指示された先送りジョブの属性が含まれる場合に、前記受け取ったプリントジョブのデータを優先的に前記プリンタデバイスに転送するようにする制御手段と、を有することを特徴とする。
【００１０】
また、本発明による印刷システムは、印刷装置と、この印刷装置と通信回線を介して通信可能な、印刷処理を行う情報処理装置とを有する印刷システムであって、先送りプリントジョブを検知するジョブ検知手段と、前記ジョブ検知手段によって検知された前記先送りジョブを優先的にプリンタデバイスに送信するようにするスケジュールアップの指示を検知するスケジュールアップ検知手段と、前記スケジュールアップ検知手段により検知された指示に従い、前記プリンタデバイスへ先送りジョブの属性を含むジョブを出力する制御手段と、
を備え、前記印刷装置においては前記先送りジョブの属性に基づく印刷処理が行なわれることを特徴とする。
【００１１】
さらに、本発明による情報処理方法は、アプリケーションデータに基づき作成されたデータをスプーラーにより外部に出力可能な情報処理方法であって、  アプリケーションデータに基づき作成されたプリントジョブのデータを受け取る受信工程と、前記受け取ったプリントジョブのデータに、プリンタデバイスにおいて優先的に印刷出力されるよう指示された先送りジョブの属性が含まれる場合に、前記受け取ったプリントジョブのデータを優先的に前記プリンタデバイスに転送するようにする制御工程と、を有することを特徴とする。
【００１２】
なお、本発明による情報処理方法を実現することを特徴とするコンピュータプログラム、及びそのプログラムを記憶したコンピュータで読み取り可能な記憶媒体も開示される。
【発明の効果】
【００１３】
本発明によれば、プリントジョブのデータをプリンタデバイスに出力する順番を、プリンタデバイスにおける先送りジョブの指定を考慮して行なえる印刷制御を行なうことが可能となる。つまり、プリンタドライバで指示された優先印刷ジョブ或いは割り込み印刷ジョブがスプーラーに通常ジョブと同様にスプールされてしまうため、例えば先行するジョブが複数存在した場合には、該印刷ジョブの送信処理が完了するまで割り込み印刷ジョブ或いは優先印刷ジョブの送信が待たされてしまうという問題が解決される。
【発明を実施するための最良の形態】
【００１４】
以下、図面を参照して本発明の好適な実施形態について詳細に説明する。
【００１５】
＜第１の実施の形態＞
（印刷処理システムの構成例）
図１は、実施形態に係る印刷処理システムの構成を示す図である。
【００１６】
同図において、１０１、１０２、１０３、１０４は、ネットワーク１０６に接続され、相互に通信可能なネットワークコンピュータであり、典型的にはパーソナルコンピュータ（ＰＣ）である。
【００１７】
これらのうち、１０２，１０３，１０４はクライアントコンピュータ（以下、クライアント）であり、それぞれイーサネット（登録商標）などのネットワークケーブルによってネットワーク１０６に接続され、アプリケーションプログラム等の各種のプログラムを実行可能であり、印刷データをプリンタに対応するプリンタ言語に変換する機能を有するプリンタドライバを搭載している。ここで、各クライアントは複数のプリンタドライバをサポートするものとする。
【００１８】
これに対し１０１はサーバコンピュータ（以下、サーバ）であり、ネットワークケーブルによってネットワーク１０６に接続され、ネットワークで使用されるファイルを蓄積したり、ネットワーク１０６の使用状態を監視する。このサーバは、ネットワーク１０６に接続されているプリンタを管理するプリントサーバとしても機能する。具体的には、プリントサーバ１０１は、クライアントコンピュータ１０２、１０３、１０４から印刷要求が出されたプリントデータを含む印刷ジョブを格納して印刷する機能や、クライアントコンピュータ１０２〜１０４から印字データを含まないジョブ情報を受け取って印刷順序を管理し、印刷順序になったクライアントに対して印字データを含む印刷ジョブの送信許可を通知する機能、後述するプリンタデバイス（プリンタデバイス）１０５のステータスや印刷ジョブの各種情報を取得して、クライアントコンピュータ１０２〜１０４に通知する機能などを有している。サーバコンピュータ１０１は本発明の印刷システムにおいてサーバの機能が動作する論理的な存在である。図１で示されるように専用のサーバコンピュータを設けることもできるし、また、クライアントコンピュータ１０２〜１０４或いはプリンタデバイス１０５にサーバコンピュータの機能を代替させる事も可能である。
【００１９】
１０５は、印刷制御装置としてのプリンタデバイスであり、図示しないネットワークインタフェースを介してネットワーク１０６と接続されており、クライアントコンピュータから送信されてくる印字データを含む印刷ジョブを解析し、１ページずつドットイメージに変換して印刷する。なお、同図にプリンタデバイス１０５は１台しか示されていないが、他のプリンタデバイスが複数接続されていても良い。各プリンタデバイスの機能は相違するものであってもよい。尚、プリンタデバイスにおける画像記録方式としては様々な方式のものを適用可能であり、例えば、電子写真方式や、インクジェット方式の記録方式を採用した印刷制御装置を想定することができる。
【００２０】
また、１０６はネットワークであり、クライントコンピュータ１０２〜１０４、プリントサーバ１０１、プリンタデバイス１０５等と接続している。
【００２１】
（ネットワークコンピュータのハードウェア構成例）
図２は、クライアント１０２〜１０４とプリントサーバ１０１として使用されるコンピュータの構成を説明するブロック図である。なお、本実施形態においてはこのように、クライントコンピュータ１０２〜１０４もプリントサーバ１０１も同様あるいは同等のハードウェア構成とするが、それぞれ専用のハードウェア構成であっても構わない。
【００２２】
図２において、２００は装置全体の制御を行うＣＰＵであり、ハードディスク（ＨＤ）２０５に格納されているアプリケーションプログラム、プリンタドライバプログラム、ＯＳや、本実施形態のプリンタデバイス制御プログラム等を実行し、ＲＡＭ２０２にプログラムの実行に必要な情報、ファイル等を一時的に格納する制御を行う。
【００２３】
２０１は記憶手段としてのＲＯＭであり、内部には、基本Ｉ／Ｏプログラム等のプログラム、文書処理の際に使用するフォントデータ、テンプレート用データ等の各種データを記憶する。２０２は一時記憶手段としてのＲＡＭであり、ＣＰＵ２００の主メモリ、ワークエリア等として機能する。
【００２４】
２０３は記憶媒体読み込み手段としてのフロッピディスクドライブであり、後述する図５に示すようにＦＤドライブ２０３を通じて、記憶媒体としてのＦＤ２０４に記憶されたプログラム等を本コンピュータにロードすることができる。２０４は記憶媒体であるフロッピディスク（ＦＤ）であり、コンピュータが読み取り可能にプログラムが格納された記憶媒体である。なお、記憶媒体はＦＤに限らず、ＣＤ−ＲＯＭ、ＣＤＲ、ＣＤＲＷ、ＰＣカード、ＤＶＤ、ＩＣメモリカード、ＭＯ、メモリスティック等、任意である。
【００２５】
２０５は外部記憶手段の一つであり、大容量メモリとして機能するハードディスク（ＨＤ）であり、アプリケーションプログラム、プリンタドライバプログラム、ＯＳ、プリンタデバイス制御プログラム、関連プログラム等を格納している。更に、スプール手段であるスプーラーはここに確保される。スプール手段は、クライアントではクライアントスプーラのことであり、プリントサーバではサーバスプーラのことである。また、プリントサーバでは、クライアントから受けたジョブ情報を格納し、順序制御を行うためのテーブルもこの外部記憶手段に生成されて格納される。
【００２６】
２０６は指示入力手段であるキーボードであり、ユーザがクライアントコンピュータに対して、また、オペレータや管理者がプリントサーバに対して、デバイスの制御コマンドの命令等を入力指示するものである。２０７は表示手段であるディスプレイであり、キーボード２０６から入力したコマンドや、プリンタの状態等を表示したりするものである。
【００２７】
２０８はシステムバスであり、クライアントやプリントサーバであるコンピュータ内のデータの流れを司るものである。２０９は入出力手段であるインタフェースであり、該インタフェース２０９を介して情報処理装置は外部装置とのデータのやり取りを行う。
【００２８】
なお、上記コンピュータの構成はその一例であり、図２の構成例に限定されるものではない。例えば、データやプログラムの格納先は、その特徴に応じてＲＯＭ、ＲＡＭ、ＨＤなどで変更することも可能である。
【００２９】
図３は、図２に示したＲＡＭ２０２のメモリマップの一例を示す図であり、ＦＤ２０４からロードされる上記プリンタデバイス制御プログラムが、ＲＡＭ２０２にロードされ実行可能となった状態のメモリマップである。
【００３０】
なお、本実施形態では、プリンタデバイス制御プログラムおよび関連データをＦＤ２０４から直接ＲＡＭ２０２にロードして実行させる例を示すが、これ以外にも、プリンタデバイス制御プログラムを動作させる度に、既にプリンタデバイス制御プログラムがＦＤ２０４からインストールされているＨＤ２０５から、ＲＡＭ２０２にロードするようにしてもよい。また、本プリンタデバイス制御プログラムを記憶する媒体は、ＦＤ以外にＣＤ−ＲＯＭ、ＣＤＲ、ＰＣカード、ＤＶＤ、ＩＣメモリカードであってもよい。
【００３１】
さらに、本プリンタデバイス制御プログラムをＲＯＭ２０１に記憶しておき、これをメモリマップの一部となすように構成し、直接ＣＰＵ２００で実行することも可能である。また、以上の各装置と同等の機能を実現するソフトウェアをもって、ハードウェア装置の代替として構成することもできる。
【００３２】
また、以下では、本プリンタデバイス制御プログラムのことを、簡単に印刷制御プログラムまたはプリンタドライバと呼ぶこともある。印刷制御プログラムは、クライアントにおいては、印刷ジョブの印刷先の変更を指示したり、印刷順序を変更する指示をするための制御を行うプログラムを含む。一方、プリントサーバにおいては、印刷ジョブの順序制御を行ったり、印刷ジョブの印刷終了や印刷先変更要求などを通知するためのプログラムを含んでいる。
【００３３】
また、このような制御を行う本実施形態の印刷制御プログラムは、クライアントにインストールされるモジュールと、プリントサーバにインストールされるモジュールを別々に分けてもよいし、ひとつの印刷制御プログラムが、実行される環境によりクライアント用として機能したり、プリントサーバ用として機能するようにしてもよい。あるいは、一台のコンピュータに、クライアント用の機能を持つモジュールとプリントサーバ用として機能するモジュールとをともにインストールし、同時にあるいは時分割で、擬似的に平行動作させる構成も可能である。
【００３４】
３０１は基本Ｉ／Ｏプログラムであり、コンピュータの電源がＯＮされたときに、ＨＤ２０５からＯＳがＲＡＭ２０２に読み込まれ、ＯＳの動作を開始させるＩＰＬ（イニシャルプログラムローデイング）機能などを有しているプログラムが入っている領域である。３０２はオペレーティングシステム（ＯＳ）であり、３０３はプリンタデバイス制御プログラムで、ＲＡＭ２０２上に確保される領域に記憶される。３０４は関連データで、ＲＡＭ２０２上に確保される領域に記憶される。３０５はワークエリアで、ＣＰＵ２００が本プリンタ制御プログラムを実行する領域が確保されている。
【００３５】
図４は、図２に示したＦＤ２０４のメモリマップの一例を示す図である。図４において、４０１はデータの情報を示すボリューム情報であり、４０２はディレクトリ情報、４０３は本実施形態で説明する印刷制御プログラムであるプリンタデバイス制御プログラム、４０４はその関連データである。プリンタデバイス制御プログラム４０３は、本実施形態で説明するフローチャートに基づいてプログラム化したものであり、本実施形態では、クライアント及びサーバ共に、同様の構成をとっている。
【００３６】
図５は、図２に示したＦＤドライブ２０３に対して挿入されるＦＤ２０４との関係を示す図であり、図２と同一のものには同一の符号を付してある。図５において、ＦＤ２０４には、本実施形態で説明するプリンタデバイス制御プログラムおよび関連データが格納されている。
【００３７】
（印刷処理システムにおけるソフトウェア構成例及び動作例）
図６は、本システムのクライアントサーバモデルにおいて、Ｍｉｃｒｏｓｏｆｔ  Ｗｏｒｄ（登録商標）などの一般的なアプリケーションから発行された描画コマンドを含む印刷ジョブが、印刷ジョブ制御システムにおいてどのように処理されるかを示した図である。
【００３８】
通常、印刷の指示がされると、アプリケーションプログラムは一連の描画命令をＯＳを介して生成させる。この生成された描画命令はプリンタドライバを経て所定の形式に変換された後、ウインドウズスプーラ（Ｗｉｎｄｏｗｓ（登録商標）  Ｓｐｏｏｌｅｒ）に渡される。Ｗｉｎｄｏｗｓ（登録商標）  Ｓｐｏｏｌｅｒは、ユーザがユーザインタフェースを介して選択し指示したポートモニタにプリントジョブデータを渡して、プリンタデバイスに送信させる手順をとる。本実施形態では、今述べた通常の動作に対してユーザはあらかじめ印刷ジョブ制御システム用のポートモニタ６２１（以降、ジョブ制御ポートモニタと略記）を指定して印刷を指示する。
【００３９】
また、図示はされていないが、ユーザが予めポートモニタとして他のポートモニタ、例えば、Ｗｉｎｄｏｗｓ（登録商標）のＯＳ（オペレーティングシステム）に設けられたスタンダードＴＣＰ／ＩＰポート（モニタ）を指定している場合には、ウインドウズスプーラ６０３からスタンダードＴＣＰ／ＩＰポート（モニタ）にプリントジョブデータが渡され、その後にプリントジョブデータがプリンタデバイス１０５に転送される。この場合に図６に示されるジョブ制御プリントサービス６２２を介してプリントジョブデータはプリンタデバイスに送信されない。
【００４０】
なお、ジョブ制御ポートモニタ６２１はＷｉｎｄｏｗｓ（登録商標）で定義されたポートモニタだけでなく、ランゲージモニタ、プリントプロセッサ等、ジョブデータを渡されて処理可能なモジュールであってもよい。またジョブ制御ポートモニタの機能をこれらモジュールの複数に割り当てる事も可能である。また、ＵＮＩＸ(登録商標）等の印刷システムにおいては、印刷時に使用されるフィルタプログラムであってもよい。
【００４１】
アプリケーションプログラム６０１は一連の描画命令をＯＳを介して生成させる。ここで、ＯＳを介して生成された描画命令は、ＰＤＬＤｒｉｖｅｒ６０２に引き渡させる。尚、以下の説明においては、ＰＤＬＤｒｉｖｅｒを例に説明を行うが、アプリケーションデータに基づく印刷データを生成するソフトウェアモジュールであればこれに限定されるものではなく、例えば、ＢＤＬ（Ｂａｎｄ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）Ｄｒｉｖｅｒなどに適用することも可能である。
【００４２】
ＯＳを介して生成された描画命令がＰＤＬＤｒｉｖｅｒ６０２に投入された場合に、ＰＤＬＤｒｉｖｅｒ６０２よって頁記述言語が生成され、該生成された頁記述言語は、印刷処理を行うよう設定されたＰＤＬＤｒｉｖｅｒ６０２に対応するジョブ制御ポートモニタ６２１からジョブ制御サービス６２２を介して対応するデバイス１０５に送信される。
【００４３】
印刷ジョブ制御システム用プリントマネージャ６２３（以降、ジョブ制御プリントマネージャと略記）は、ユーザがジョブ制御プリントサービス６２２内部でプリントジョブがどのような状態にあるかを調べたり、プリントジョブを操作したりするためのユーザインタフェースを提供するプログラムである。ジョブ制御プリントマネージャ６２３は、ジョブ制御プリントサービス６２２のソフトウェアのインタフェース（ＡＰＩ：Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍ  Ｉｎｔｅｒｆａｃｅ）を介して、ジョブ制御プリントサービス６２２と情報・指示をやり取りしている。更に詳細な処理としては、プリントマネージャ６２３がジョブ制御プリントサービス６２２に対してデバイスを指定してのイベントを発行し、ジョブ制御プリントサービス６２２は発行されたイベントに基づくデバイスのステータスを監視して、該監視に基づく結果をプリントマネージャ６２３に通知する。
【００４４】
印刷ジョブ制御システム用サーバ６３０（以降、ジョブ制御サーバと略記）は、個々のクライアント１０２〜１０４上のジョブ制御プリントサービス６２２がプリンタデバイス１０５にプリントジョブデータを送信するタイミングを集中制御（スケジューリング）している。印刷ジョブ制御システム用マネージメントコンソール６３３（以降、ジョブ制御マネージメントコンソールと略記）は、ジョブ制御サーバ６３０が持つソフトウェアがアクセスするためのＡＰＩを介して、ジョブ制御サーバ６３０と情報・指示をやり取りすることで、印刷ジョブ制御システム全体を監視することができる。
【００４５】
また、ジョブ制御サーバ６３０は、デバイス情報コントロールモジュール６３１を用いて各プリンタデバイス１０５と通信を行い、各プリンタ内の印刷ジョブや動作状態に関する情報を入手したり、操作を行ったりする。入手した情報は、クライアント１０２〜１０４側のジョブ制御プリントサービス６２２に渡すことができる。
【００４６】
（ジョブ制御の流れ）
次に、本発明におけるプリントジョブデータの制御の流れについて説明する。
まずジョブ生成装置であるクライアントコンピュータにおいて（ジョブ生成装置がプリントサーバである場合にはプリントサーバ）アプリケーションからのＧＤＩ呼び出しはＯＳによって変換されプリンタドライバ６０２が呼び出される。プリンタドライバはＤＥＶＭＯＤＥの設定に従いＰＤＬデータを作成する。割り込み或いは優先印刷を指示する情報は印刷の初期設定或いは印刷実行時に表示されるプリンタドライバＵＩ（ＵＳＥＲ  ＩＮＴＥＲＦＡＣＥ）によって、ＤＥＶＭＯＤＥの拡張領域に保存される。プリンタドライバではこの拡張領域を確認することによって、割り込み或いは優先印刷ジョブを作成する。図７はＰＤＬプリンタドライバ６０２によって生成される割り込み印刷コマンドの一例である。割り込み或いは優先印刷コマンドは図７の左部に示すように、通常のジョブスタートコマンドに対し、オプションの印刷種別が「割り込み」のジョブとして表される。優先印刷コマンドは図示しないがオプションの印刷種別が「優先」として表現される。
【００４７】
ここで、割り込み処理と優先処理の違いについて述べておく。割り込み処理とは、プリンタデバイス１０５において実行中のジョブを中断して別のジョブの印刷を行うことをいう。仕様例としては、２重割り込みは禁止される。また、優先処理は、実行中のジョブは中断せずにその実行中のジョブの次に実行するよう予約する処理をいう。これら割り込み処理と優先処理を合せて、先送り処理と呼んでも良い。また、割り込み処理及び優先処理の対象となっているジョブを先送りジョブと呼んでも良い。
【００４８】
処理の具体例について説明する。まず、プリンタデバイス１０５において所定のプリントジョブを出力中に優先ジョブが投入されると、現在実行している所定のプリントジョブの次の出力にスケジューリングされる。次に通常ジョブを出力中に割り込みジョブが投入されると、出力中のジョブが中断され、割り込みジョブが出力される。割り込みジョブの出力が終了すると、中断された通常ジョブの出力が再開される。そして、通常ジョブの出力が終了した後に優先ジョブの出力が開始される。また、優先ジョブの出力中に割り込みジョブが投入されると、優先ジョブは中断され、割り込みジョブが出力され始める。
【００４９】
クライアントコンピュータにおいて作成されたデータはジョブ単位に管理され、順次Ｗｉｎｄｏｗｓ（登録商標）  Ｓｐｏｏｌｅｒ６０３へスプールされる。
【００５０】
Ｗｉｎｄｏｗｓ（登録商標）  Ｓｐｏｏｌｅｒ６０３では、該プリントジョブデータを、１頁分のスプールが完了したタイミング、或いは全頁分のスプールが完了したタイミング、或いはスプールが行われる都度、順次デスプール（送信処理）を行い、ジョブ制御ポートモニタ６２１にジョブデータを渡して行く。この際にＷｉｎｄｏｗｓ（登録商標）プリントキューの操作におけるジョブの優先度が他のものよりも高く設定されたプリントジョブデータはＯＳの仕組みにより優先的にＷｉｎｄｏｗｓ（登録商標）  Ｓｐｏｏｌｅｒ６０３から外部に出力される。
【００５１】
図８はジョブ制御ポートモニタ６２１における書き込み処理の一例を示すフローチャートである。
【００５２】
まず、ステップＳ８００においてＷｉｎｄｏｗｓ（登録商標）  Ｓｐｏｏｌｅｒ６０３からの最初の書き込みであるか否か判断される。この判断は、「最初の書き込みフラグ」をチェックして行われる。ステップＳ８００で最初の書き込みであると判断されると処理はステップＳ８０１に移行し、ここでジョブ制御プリントサービスに対してジョブ制御ポートモニタ６２１からスプール開始コマンドが呼び出され、ジョブ制御プリントサービスで管理している独自ジョブＩＤとスプールファイ名がジョブデータの送出元であるジョブ制御ポートモニタ６２１に通知される。
【００５３】
ステップＳ８００でＮｏの場合、又はステップＳ８０１の処理が終了すると、処理はステップＳ８０２に移行し、「最初の書き込みフラグ」がＯＦＦにされ、後続する書き込み処理においてステップＳ８０１が重複しないように制御される。
【００５４】
なおステップＳ８０２の「最初の書き込みフラグ」は、Ｗｉｎｄｏｗｓ（登録商標）  Ｓｐｏｏｌｅｒ６０３におけるジョブＩＤと関連付けられて管理され、Ｗｉｎｄｏｗｓ（登録商標）  Ｓｐｏｏｌｅｒ６０３からの送信開始呼び出しの時点でＯＮに初期化される。
【００５５】
続いてステップＳ８０３でジョブ制御ポートモニタ６２１がＷｉｎｄｏｗｓ（登録商標）  Ｓｐｏｏｌｅｒ６０３から渡されたジョブデータの解析を行い、渡されたデータがジョブ開始コマンドか否かの判定が行われる。ジョブ開始コマンドであると判定された場合、ステップＳ８０４で割り込み或いは優先指示があるか否かが判定（検知）される。
【００５６】
ステップＳ８０４でジョブデータの解析に基づき割り込み或いは優先指示があると判定された場合には、ステップＳ８０５で、ジョブ制御プリントサービス６２２に対し割り込み或いは優先印刷指示ジョブ属性の変更がジョブ制御プリンタサービス６２２により対象となるプリントジョブが識別可能なＩＤ（上の説明した独自ジョブＩＤ）とともに通知される。
【００５７】
なおジョブ属性は、「割り込み或いは優先印刷指示」等具体的な属性ではなく、「印刷タイプ」のような汎用的なジョブ属性を用いても良い。また、本発明の実施例ではジョブ制御プリントサービスへ割り込み或いは優先ジョブの投入を指示する手段としてジョブ属性の変更コマンドを用いているが、優先度変更或いは割り込み印刷実行等の別なコマンドを用いても良い。
【００５８】
続いてステップＳ８０６において、Ｗｉｎｄｏｗｓ（登録商標）  Ｓｐｏｏｌｅｒ６０３から受け取ったジョブデータを順次前述のステップＳ８０１で取得されたファイル名に基づく格納領域にジョブデータを書き込み、ジョブ書き込み処理が終了する。ジョブ制御ポートモニタ６２１ではＷｉｎｄｏｗｓ（登録商標）  Ｓｐｏｏｌｅｒ６０３から該ジョブについてのジョブデータ送信終了が通知されると、ジョブ制御プリントサービス６２２に対し、該ジョブのスケジュールを依頼する。ジョブ制御プリントサービス６２２における割り込み或いは優先印刷制御の詳細は後述の図９で説明する。
【００５９】
図９はジョブ制御プリントサービス６２２の動作概要を示すフローチャートである。本実施例においてジョブ制御プリントサービス６２２は、コンピュータの起動と共に起動されるサービスプログラムである。また、この図９の処理は図８に示された処理とは別個独立して並行に行われる。
【００６０】
まずステップＳ９００において初期化処理を行う。初期化処理では、サーバと通信のイベント処理待ちであるステップＳ９０１へ移行する。ステップＳ９０１のイベント待ちループでは、ジョブ制御プリントサービス６２２を利用するアプリケーションプログラム６２３、１３２４やジョブ制御ポートモニタ６２２によるＡＰＩ呼び出しや、ジョブ制御サーバ６３０からのイベント通知、或いは内部処理の遷移によるイベント通知により、イベントの発生が検知される。そして、イベントの種類によってステップＳ９０２以下の処理が実行される。
【００６１】
ステップＳ９０２でイベントがジョブ投入コマンドであると判定される。Ｙｅｓの場合、ステップＳ９０３に処理が移行し、ジョブ情報データがジョブ制御プリントサービス６２２がアクセス可能なＲＡＭ２０２中に作成される。ジョブ情報データには最低限、ジョブの送信順序を制御するために必要なデータ（ジョブ制御プリントサービス６２２が発行した独自ジョブＩＤとジョブを発行したＷｉｎｄｏｗｓ（登録商標）  ＳｐｏｏｌｅｒでのオペレーティングシステムジョブＩＤ（以下ではＯＳジョブＩＤと呼ぶ）、ジョブファイル名、受け付け時刻、優先順位等）が含まれ、必要に応じ文書名、ユーザ名等の付加情報等が含まれる。ジョブ情報が作成されると続いてステップＳ９０１のイベント待ちループへ戻る。ステップＳ９０３の処理によって、複数のジョブが投入されたとしてもこれらの処理の順番が制御され、また、割り込みや優先処理（先送り処理）の指示が入力されてもどのジョブをスキップしたか、先送り処理の次はどのジョブを処理するか等、複雑な制御でも簡単に行うことができる。
【００６２】
ステップＳ９０２における判定がＮＯの場合は、ステップＳ９０４において、該イベントがスプール開始コマンドか否かが判定される。このスプール開始コマンドは、例えばステップＳ８０１におけるスプール開始コマンドの呼び出しに対応するものである。ＹＥＳの場合にはステップＳ９０５において独自ジョブＩＤとスプールファイル名が要求元（ここではジョブ制御ポートモニタ６２１）返却される。
【００６３】
なお、ジョブ制御プリントサービス６２２は、スプール開始コマンドではＷｉｎｄｏｗｓ（登録商標）  Ｓｐｏｏｌｅｒ６０３等、ジョブ制御プリントサービス６２２の前段にある外部のジョブＩＤ（印刷要求に応じてＯＳを介して発行されるＯＳジョブＩＤがジョブ制御ポートモニタ６２１から通知される）が通知され、ステップＳ９０３で作成されたジョブ情報から適切なジョブファイル名を返却し、ステップＳ９０１のイベント待ちループへ戻る。
また、ステップＳ９０５において、ステップＳ９０３で作ったジョブ情報ファイルに該当するジョブ情報が存在しない場合には、ステップＳ９０３に相当する処理が実行され、ジョブ情報が新規に作成される。
【００６４】
ステップＳ９０４においてＮＯと判定された場合、処理はステップＳ９０６に移行する。そして、ステップＳ９０６において該イベントが属性設定コマンドか否かが判定される。ＹＥＳと判定されると処理はステップＳ９０７に移行し、そこでＳ９０３において作成されたジョブ属性の更新処理が行われる。本実施形態において割り込み或いは優先ジョブを示す属性は文書名、ユーザ名等、通常のジョブ属性と同様に管理されている。その様子が図１６に示される。ジョブ属性の更新が終了するとステップＳ９０１のイベント待ちループへ戻る。
【００６５】
なお、このステップＳ９０６でＹｅｓと判断されると、即ち、イベントが属性設定コマンドである場合に、ステップＳ９０７で、ジョブ制御プリントサービス６２２によってジョブ制御ポートモニタ６２１から受け取ったプリントジョブデータの属性設定内容がチェックされ、優先ジョブ又は割り込みジョブであることが判明する（検知される）。
【００６６】
ステップＳ９０６においてＮＯと判定された場合、ステップＳ９０８において何れかからの該イベントがスケジュールコマンドか否か判定される。図９のフローチャートにおいてはジョブ制御ポートモニタ６２１からステップＳ８０１に対応してスケジュールコマンドのイベントが発行される。ＹＥＳと判定されるとステップＳ９０９においてジョブ制御サーバ６３０にスケジュール依頼が通知される。この時該ジョブのステップＳ９０７でチェックされたジョブ属性も同時に通知される。ステップＳ９０９のスケジュール依頼処理が終わるとステップＳ９０１のイベント待ちループへ戻る。尚ジョブ制御サーバ６３０での処理は後述の図１０で説明する。
【００６７】
ステップＳ９０８でＮＯと判定された場合には、ステップＳ９１０において該イベントがジョブ制御サーバ６３０からのスケジュールアップイベントか否か判定される。ＹＥＳの場合にはステップＳ９１１において該ジョブをデバイス１０５へ送信し、ステップＳ９０１のイベント待ちループへと戻る。該ジョブが割り込み或いは優先印刷指示されたジョブである場合には、印刷装置１０５において優先印刷処理が行われる。印刷装置１０５における処理の詳細は、後述の図１２において詳しく説明することとする。
【００６８】
ステップＳ９１０でＮＯと判定された場合には、ステップＳ９１２において該イベントがサーバからのジョブ完了イベントか否かが判定される。ＹＥＳの場合には処理はステップＳ９１３に移行し、そこで該Ｓ９０７で更新され管理されるジョブ属性及びファイルが削除され、該ジョブの印刷処理が終了する。続いてステップＳ９０１のイベント待ちループへと戻る。尚、ジョブ制御サーバ６３０においても、プリントジョブが完了したジョブ情報は削除される。
【００６９】
ステップＳ９１２においてＮＯと判定された場合には、ステップＳ９１４において終了イベントか否かが判定される。ＹＥＳの場合には、ステップＳ９１５において終了処理が行われ、ジョブ制御プリントサービスは処理を終了する。ステップＳ９１４においてＮＯの場合には、ステップＳ９１６においてその他のコマンド処理が行われ、ステップＳ９０１のイベント待ちループへと戻る。その他のコマンド処理については本発明と直接関係が無いため詳細な説明は割愛する。
【００７０】
図１０は、ジョブ制御サーバ６３０の処理の概要を示すフローチャートである。ジョブ制御サーバ６３０もジョブ制御プリントサービス６２２と同様にサービスプログラムであり、コンピュータの起動と共に開始され常駐を続ける。尚、Ｓｅｒｖｅｒ  Ｍａｃｈｉｎｅ１０１の機能がクライアントコンピュータ内に設けられた場合には、図１０の処理は、図８、９の処理と同じコンピュータ上で実行されることとなる。また、後述する図１１の処理も同様にクライアントコンピュータにおいて実行される。
【００７１】
ジョブ制御プリントサーバは起動時にステップＳ１０００で初期化処理を行い、ステップＳ１００１のイベント受信待ちループへと入る。ステップＳ１００１のイベント待ちループはＡＰＩ呼び出しやジョブ制御プリントサービス６２２からのリクエスト、デバイス情報コントロールモジュール６３１からの通知、内部処理の遷移の結果として終了する。イベント発生しイベント待ちループＳ１００１が終了するとステップＳ１００２で該イベントがスケジュール予約コマンド呼び出しか否かが判定される。この処理は図９のステップＳ９０９の処理に相当するものである。ステップＳ１００２でＹＥＳの場合には、ステップＳ１００３においてジョブ制御サーバ６３０側のＲＡＭ２０２に保持しているジョブリストが更新される。なお、この際にジョブ属性が判定され、「割り込み或いは優先印刷指示」属性があるジョブについては他のジョブに比べて優先的に処理されるようにセットされる。例えば、ジョブ属性が優先印刷指示である場合には他のジョブに比べて当該ジョブの優先度が最高に設定される。そして、この優先度を最高に設定する処理工程は、後述する図１１のフローチャートのＳ１１０１の処理において参照されることになる。続いてステップＳ１００４において送信ジョブ選択イベントをセットしてステップＳ１００１のイベント受信待ちループへと戻る。
【００７２】
ステップＳ１００２の判定においてＮＯと判定された場合には、ステップＳ１００５において該イベントが送信ジョブ選択イベントか否かが判定される。ＹＥＳの場合はステップＳ１００６において送信ジョブ選択処理が行われる。本処理の詳細については図１１で後述する。続いてステップＳ１００１のイベント受信待ちループへと戻る。
【００７３】
ステップＳ１００５の判定においてＮＯと判定された場合には、ステップＳ１００７において該イベントがプリントジョブの状態を定期的に監視するためのタイマーイベントか否か判定される。ＹＥＳの場合には、ステップＳ１００８において、デバイス情報コントロールモジュール６３１を用いて送信済みのジョブ状態を確認する。ステップＳ１００９においてジョブの完了が確認されると、ステップＳ１０１０においてジョブ選択イベントを設定し、続いてステップＳ１０１１においてジョブの完了をジョブ制御プリントサービス６２２へ通知する。この際のジョブ制御プリントサービスの動作は前述した通りである。ステップＳ１００９でＮＯと判定された場合或いはステップＳ１０１１が終了した時点でステップＳ１００１のイベント待ちループへと戻る。なお、タイマーイベントは定期的に発生するイベントであり、この他にも印刷デバイス１０５の状態監視や、ジョブ制御プリントサービス６２２の生存確認等の処理を行っているが、本発明とは直接の関係がないため此処では割愛する。
【００７４】
ステップＳ１００７の判定においてＮＯと判定された場合、ステップＳ１０１２において該イベントが終了イベントか否かが判定される。ＹＥＳの場合にはステップＳ１０１３において終了処理が行われ、ジョブ制御サーバ６３０は終了する。ステップＳ１０１２においてＮＯと判定された場合にはその他のコマンドであると判定され、その他のコマンドに対する処理が行われるが、本発明とは関係が無いため割愛する。
【００７５】
図１１は、ジョブ制御サーバ６３０における送信ジョブ決定処理の概略を示すフローチャートである。ステップＳ１１００において印刷ジョブに関連付けられて指定された所定の印刷デバイス（例えば印刷デバイス１０５）へプリントジョブデータを送信可能な状態か否かが判定される。尚、ジョブ制御サーバ６３０においては、該印刷デバイスの状態や送信済みのジョブ数を管理しており、該デバイスにエラーが発生している場合や、一定数以上のジョブを送信済みの場合にはジョブの送信を行わずに送信ジョブ選択処理を終了し、印刷デバイスにおいて、エラーが解除されるか、一定数未満のジョブを送信済みの状態になるまで他の処理をする。
【００７６】
ステップＳ１１００においてＹＥＳと判定された場合には、ステップＳ１１０１において優先度の最も高いジョブを選択する。この時に先に説明したステップＳ１００３における優先度の設定が選択基準に加味される。そして、優先度の最も高いジョブが複数選択された場合には受け付け時刻の早いジョブを選択する。
【００７７】
ステップＳ１１０２において、選択されたジョブのリストを判定し、複数のジョブが選択された場合には、ステップＳ１１０３において受け付け時刻の早いジョブを選択する。続いて、ステップＳ１１０１或いはステップＳ１１０３で選択された唯一のジョブを送信候補とし、該ジョブのＰＤＬデータ６４０を保持しているジョブ制御プリントサービスに対して送信順序が来たことを通知する。本発明においてはこの処理のことをスケジュールアップ通知と呼んでいる。
【００７８】
ステップＳ１１００においてデバイス１０５が送信可能状態ではない場合、またはステップＳ１１１０４においてスケジュールアップ処理が行われた場合に、送信ジョブ選択処理は終了する。このステップＳ１１０４の処理は、上に説明した図９のステップＳ９１０において判定対象となるスケジュールアップに相当するものである。そして、ステップＳ１１０４の処理を受けたジョブ制御プリントサービス６２２では、保持された複数のプリントジョブデータの中から、指定されたプリントジョブデータを印刷デバイスに優先的に送信するように制御される。つまり、ステップＳ８０５で、ジョブ制御プリントサービス６２２に対し割り込み或いは優先印刷指示ジョブ属性の変更の通知の対象となったプリントジョブデータは、ジョブ制御プリントサービス６２２から先送りジョブとして優先的に所定のプリンタデバイスに送信される。
【００７９】
図１２は本発明を適用する印刷装置１０５における割り込み印刷処理の概略を示すフローチャートである。割り込み印刷処理は印刷装置１０５がジョブデータを受信すると起動される。ステップＳ１２００において印刷中（エンジン使用中）のジョブがあるか否かが判定され、ＹＥＳの場合には、ステップＳ１２０１において印刷中のジョブ情報を退避するとともにステップＳ１２０２において印刷中のジョブを中止する。
【００８０】
続いて、ステップＳ１２０３において解析中（トランスレート中）のジョブがあるか否かが判定され、ＹＥＳの場合にはステップＳ１２０４において解析処理が中断される。解析処理の中断に関してはジョブデータを退避するだけで良く解析結果（中間データ）を保持する必要はないが、解析途中のデータを合わせて退避する構成としても良い。続いてステップＳ１２０５において割り込み発生イベントを送信する。このイベントは該イベントを欲するデバイス情報コントロールモジュール６３１によって受信され処理される。続いてＳ１２０６において該割り込みジョブの印刷を開始する。
【００８１】
印刷が完了すると印刷完了通知が発せられ、デバイス情報コントロールモジュール６３１、ジョブ制御サーバ６３０を経由して、ジョブ制御プリントサービス６２２へ通知される。ジョブ完了イベント発生時におけるジョブ制御プリントサービスの処理は前述した通りである。
【００８２】
続いて印刷デバイス１０５では、スプールされているその他のジョブを優先順位或いは受け付け順に従って処理するが本発明とは直接関係ないため此処では割愛する。
なお、ステップＳ１２００からステップＳ１２０６は割り込み印刷における印刷装置１０５の処理であり、優先印刷時にはスケジュールの優先順位をあげるだけで、印刷中、解析中のジョブの中断処理は行われない。
【００８３】
以上のように第１の実施の形態によれば、従来はＤＰＡに規定される、プリントデバイスにおける優先ジョブや割り込みジョブの仕組みと、プリントデータ作成元であるクライアントコンピュータにおける優先的にプリントデバイスにプリントジョブデータを送信するようにする順序制御の仕組みとのリンクを取る事ができるようになる。さらに、本印刷の仕組みによればＷｉｎｄｏｗｓ（登録商標）  Ｓｐｏｏｌｅｒから出力されるプリントジョブデータをジョブ制御プリントサービス６２２で保持し、該保持されたプリントジョブデータを適切なタイミングでプリントデバイスにおいて送信するようにするので、Ｗｉｎｄｏｗｓ（登録商標）  Ｓｐｏｏｌｅｒにおいて、プリントジョブデータが滞ることもない。従ってＷｉｎｄｏｗｓ（登録商標）  Ｓｐｏｏｌｅｒの仕組みにおいてプリントジョブデータを滞らせることもなく、且つ、ジョブ制御プリントサービス６２２でプリントジョブデータの送信を滞らせることもなく、且つ、プリントデバイスにおいても印刷出力を滞らせることもない。
【００８４】
＜第２の実施の形態＞
第２の実施の形態においても、第１の実施の形態の図１乃至５、図７、及び図１０乃至１２が適用される。これらの図面については、冗長となるので詳細な説明を省略する。ただし、これらの図面及びその説明についても第２の実施形態の内容となるものである。
【００８５】
なお、第１の実施形態と第２の実施形態では、優先ジョブ又は割り込みジョブの指定がなされているか否かを判断するタイミング及び方法が異なる。つまり、第１の実施形態では、Ｗｉｎｄｏｗｓ（登録商標）  Ｓｐｏｏｌｅｒからのデータをジョブ制御ポートモニタ６２１の解析に基づいてプリントジョブ制御サービス６２２が優先ジョブ等の指定の有無を判断するが、第２の実施形態では、事前にジョブ制御プリントサービス６２２に通知される先送りジョブＩＤ（以下、ＵＵＩＤと呼ぶ）とジョブ制御ポートモニタ（後述される）から投入されるデータに含まれるＵＵＩＤとをチェックし、それによって優先ジョブ等か否かが判断される。
【００８６】
（印刷処理システムにおけるソフトウェア構成例及び動作例）
図１３は、第１の実施の形における図６に相当する図であり、本システムのクライアントサーバモデルにおいて、Ｍｉｃｒｏｓｏｆｔ  Ｗｏｒｄ（登録商標）などの一般的なアプリケーションから発行された描画コマンドを含む印刷ジョブが、印刷ジョブ制御システムにおいてどのように処理されるかを示した図である。図６と同じ参照番号のブロックは、同じ機能ブロックを示している。
【００８７】
通常、印刷の指示がされると、アプリケーションプログラムは一連の描画命令をＯＳを介して生成させる。この生成された描画命令はプリンタドライバを経て所定の形式に変換された後、ウインドウズスプーラ（Ｗｉｎｄｏｗｓ（登録商標）  Ｓｐｏｏｌｅｒ）に渡される。Ｗｉｎｄｏｗｓ（登録商標）  Ｓｐｏｏｌｅｒは、ユーザがユーザインタフェースを介して選択し指示したポートモニタにプリントジョブデータを渡して、プリンタデバイスに送信させる手順をとる。本実施形態では、今述べた通常の動作に対してユーザはあらかじめ印刷ジョブ制御システム用のポートモニタ６２１（以降、ジョブ制御ポートモニタと略記）を指定して印刷を指示する。
【００８８】
なお、ジョブ制御ポートモニタ６２１はＷｉｎｄｏｗｓ（登録商標）で定義されたポートモニタだけでなく、ランゲージモニタ、プリントプロセッサ等、ジョブデータを渡されて処理可能なモジュールであってもよい。またジョブ制御ポートモニタの機能をこれらモジュールの複数に割り当てる事も可能である。また、ＵＮＩＸ(登録商標）等の印刷システムにおいては、印刷時に使用されるフィルタプログラムであってもよい。
【００８９】
アプリケーションプログラム６０１は一連の描画命令をＯＳを介して生成させる。ここで、ＯＳを介して生成された描画命令は、ＰＤＬＤｒｉｖｅｒ６０２に引き渡させる。
【００９０】
ＯＳを介して生成された描画命令がＰＤＬＤｒｉｖｅｒ６０２に投入された場合に、ＰＤＬＤｒｉｖｅｒ６０２よって頁記述言語が生成される。またＰＤＬ  Ｄｒｉｖｅｒ６０２はジョブ情報を解析し、割り込み印刷或いは優先印刷指示や、使用する用紙サイズ、用紙の枚数等をジョブ情報通知サービス１３２４へ通知し、外部（ジョブ情報通知サービス１３２４）からジョブの識別子を受け取る。ジョブ情報通知サービスではＰＤＬ  Ｄｒｉｖｅｒ６０２からジョブ情報を通知された際に、一意なジョブ識別子（ＵＵＩＤ）を生成すると共に、ジョブ情報に従い適切な処理を行い、ジョブ制御プリントサービス６２２にジョブの識別子（ＵＵＩＤ）とＷｉｎｄｏｗｓ（登録商標）  ＳｐｏｏｌｅｒでのＯＳジョブＩＤ及びジョブの情報を通知する。ジョブ情報通知サービスから返却されたジョブ識別子（ＵＵＩＤ）は、ＰＤＬＤｒｉｖｅｒ６０２によってジョブデータに埋め込まれる。
【００９１】
一方、ＰＤＬＤｒｉｖｅｒ６０２によって生成された頁記述言語は、ポートモニタを通してデバイスへ送信されるか或いは、予め設定されたＰＤＬＤｒｉｖｅｒ６０２に対応するジョブ制御ポートモニタ６２１からジョブ制御プリントサービス６２２を介して対応するデバイス１０５に送信される。
【００９２】
例えば、スタンダードＴＣＰ／ＩＰポート（モニタ）から送信されたジョブは、デバイス１０５によって優先順位に従った印刷処理が行われる。
【００９３】
一方、ジョブ制御ポートモニタ６２１を経由した場合は、ジョブデータがジョブ制御プリントサービス６２２へ通知される際に、ジョブ制御ポートモニタ６２１は前述のジョブ識別子（ＵＵＩＤ）を抜き取り、Ｗｉｎｄｏｗｓ（登録商標）  Ｓｐｏｏｌｅｒで発行されたＯＳジョブＩＤも合わせて通知する。またこのジョブ識別子（ＵＵＩＤ）はデバイス１０５内部のジョブ状態確認においても利用される。これによりジョブ制御プリントサービス６２２及びジョブ制御サーバ６３０ではＷｉｎｄｏｗｓ（登録商標）で発行されたジョブの情報とデバイス１０５内部でのジョブ情報を関連付け、印刷ジョブの確実な追跡を行っている。
【００９４】
印刷ジョブ制御システム用プリントマネージャ６２３、印刷ジョブ制御システム用サーバ６３０の動作については、第１の実施の形態において説明したものと同様なので、ここでは説明を省略する。
【００９５】
（ジョブ制御の流れ）
次に、本発明の印刷システムにおけるＰＤＬジョブの制御の流れについて説明する。
アプリケーションからのＧＤＩ呼び出しはＯＳによって変換されプリンタドライバ６０２が呼び出される。プリンタドライバはＤＥＶＭＯＤＥの設定に従いＰＤＬデータを作成する。割り込み或いは優先印刷を指示する情報は印刷の初期設定或いは印刷実行時に表示されるプリンタドライバＵＩ（ＵＳＥＲ  ＩＮＴＥＲＦＡＣＥ）によって、ＤＥＶＭＯＤＥの拡張領域に保存される。プリンタドライバではこの拡張領域を確認することによって、割り込み或いは優先印刷ジョブを作成する。
【００９６】
なお、ＰＤＬプリンタドライバ６０２によって生成される割り込み印刷コマンドの一例は、第１の実施形態の図７と同じである。
このようにして作成されたデータはジョブ単位に管理され、順次Ｗｉｎｄｏｗｓ（登録商標）  Ｓｐｏｏｌｅｒ６０３へスプールされる。
【００９７】
Ｗｉｎｄｏｗｓ（登録商標）  Ｓｐｏｏｌｅｒ６０３では、該ジョブデータを、１頁分のスプールが完了したタイミング、或いは全頁分のスプールが完了したタイミング、或いはスプールが行われる都度、順次デスプール（送信処理）を行い、ジョブ制御ポートモニタ６２１にジョブデータを渡して行く。
【００９８】
図１４はジョブ情報通知処理の概要を示すフローチャートである。この処理はＰＤＬＤｒｉｖｅｒ６０２において、ＰＤＬデータ生成が始まった時及びデータの生成が終了したときの２度呼び出される。
【００９９】
なお、ＰＤＬＤｒｉｖｅｒ６０２からジョブ情報通知サービスからジョブ制御プリントサービス６２２へ通知されるジョブ情報の概要は図１６に示される。ここには、Ｗｉｎｄｏｗｓ（登録商標）上のＯＳジョブＩＤ、ジョブ名、プリンタ名、割り込み属性等、Ｗｉｎｄｏｗｓ（登録商標）で管理しているジョブ情報の他、用紙サイズや用紙枚数、更にジョブ生成終了時の通知においては、ジョブ生成時にジョブ通知サービスから通知されたジョブ識別子（ＵＵＩＤ）も含まれる。この他のＯＳあるいはプリンタドライバを用いて収集可能なジョブ属性を含むことも任意であり本発明の趣旨に反するものではない。尚、図１６における割込み属性には、割り込み或いは優先印刷を指示する属性が含まれるものとする。
【０１００】
まずステップＳ１４００でＰＤＬＤｒｉｖｅｒ６０２からジョブ情報が通知されるとジョブ情報通知サービス１３２４はジョブ情報をジョブ制御プリントサービス６２２が識別するための識別子（ＵＵＩＤ）を生成する。
【０１０１】
続いてステップＳ１４０１においてジョブ情報に割り込み印刷指示が含まれるかを確認（検知）する。ＮＯの場合には続いてステップＳ１４０２において優先印刷指示が含まれるかを確認（検知）する。
【０１０２】
ステップＳ１４０１或いはＳ１４０２においてＹＥＳと判定された場合には、ステップＳ１４０３においてＰＤＬＤｒｉｖｅｒ６０２から通知されたＷｉｎｄｏｗｓ（登録商標）  Ｓｐｏｏｌｅｒ上のＯＳジョブＩＤを用いて、Ｗｉｎｄｏｗｓ（登録商標）  Ｓｐｏｏｌｅｒに対して優先順位変更が指示される。尚、このＷｉｎｄｏｗｓ（登録商標）  Ｓｐｏｏｌｅｒに対しての優先順位変更の指示は事前にＯＳジョブＩＤの通知を受けているジョブ制御プリントサービス６２２が行うようにしても良い。
【０１０３】
優先順位が変更されたジョブは、Ｗｉｎｄｏｗｓ（登録商標）  Ｓｐｏｏｌｅｒ中に先行するジョブが存在する場合でもＷｉｎｄｏｗｓ（登録商標）  Ｓｐｏｏｌｅｒによって優先的にポートモニタ或いはジョブ制御ポートモニタ６２１に渡される。ジョブ制御ポートモニタ以外のポートモニタに渡されたＰＤＬジョブは直ちにデバイスへ送信され、デバイス１０５によって後述する割り込み印刷処理或いは優先印刷処理が行われる。
【０１０４】
そして、処理がステップＳ１４０４に移行し、ステップＳ１４０３でジョブの優先順位が変更された場合には、ジョブ情報の更新が実行される。ステップＳ１４０２から処理が移行してきた場合には、更新処理は行われない。
【０１０５】
ステップＳ１４０５では、通知されたジョブ識別子（ＵＵＩＤ）がドライバに返還される。
【０１０６】
一方ジョブ制御ポートモニタを経由した際のジョブ制御の動作概要を以下に説明する。
【０１０７】
図１５はジョブ制御プリントサービス６２２及びジョブ制御ポートモニタ６２１の協働の動作概要を示すフローチャートである。このフローチャートにおいて、第１の実施形態との差はステップＳ１５１７が存在することである。他のステップの機能は第１の実施形態と同じなので、同じ参照番号が付されている。
【０１０８】
本実施形態においてジョブ制御プリントサービス６２２及びジョブ制御ポートモニタ６２１は、コンピュータの起動と共に起動されるサービスプログラムである。まずステップＳ９００において初期化処理を行う。
【０１０９】
初期化処理では、ジョブ制御プリントサービス６２２はサーバと通信を行いサーバからプリンタデバイス等の最新の情報を取得する。続いてステップＳ９０１のイベント処理待ちへ移る。イベント待ちループは、ジョブ制御プリントサービスを利用するアプリケーションプログラム６２３、１３２４やジョブ制御ポートモニタ６２２によるＡＰＩ呼び出しや、ジョブ制御サーバからのイベント通知、或いは内部処理の遷移によるイベント通知により、イベントの発生が検知される。そして、イベントの種類によってステップＳ９０２以下の処理が実行される。
【０１１０】
まず、ステップＳ９０２でジョブ投入コマンドの投入があるか否かの判定が行われる。
【０１１１】
ステップＳ９０２でイベントがジョブ投入コマンドであると判定されるとステップＳ９０３でジョブ情報データをＲＡＭ２０２中に作成する。ジョブ情報データには最低限、ジョブの送信順序を制御するために必要なデータ（ジョブ制御プリントサービス６２２が発行した独自ジョブＩＤとジョブを発行したＷｉｎｄｏｗｓ（登録商標）  ＳｐｏｏｌｅｒでのＯＳジョブＩＤ、ジョブファイル名、受け付け時刻、優先順位等）が含まれ、必要に応じ文書名、ユーザ名等の付加情報等が含まれる。そして、ジョブ情報が作成されると続いてステップＳ９０１のイベント待ちループへ戻る。
【０１１２】
一方、ステップＳ９０２における判定がＮＯの場合は、ステップＳ９０４において、該イベントがスプール開始コマンドか否かが判定される。図６に対応させると、ジョブ制御ポートモニタ６２１がＷｉｎｄｏｗｓ（登録商標）  Ｓｐｏｏｌｅｒ６０３からスプール開始コマンドを受けたか否かを判定する。
【０１１３】
ステップＳ９０４において、ＹＥＳの場合には、処理はステップ１５１７に移行する。ステップＳ１５１７では、ジョブ制御ポートモニタ６２１からジョブ制御プリントサービス６２２へスプールファイルの読み出しがＵＵＩＤと共に通知され、処理はステップＳ９０５に移行する。ＵＵＩＤの通知の結果、ステップＳ９０５において独自ジョブＩＤとスプールファイル名がジョブ制御ポートモニタ６２１に返却される。ジョブ制御プリントサービス６２２は、このＵＵＩＤの通知に基づいて投入されたジョブが割り込み印刷であるか否かを区別（何れであるかを検知）することができる。これは、図１４のステップＳ１４０５において事前に割り込み印刷或いは優先印刷を指示されたプリントジョブのＵＵＩＤが事前にジョブ制御プリントサービス６２２に通知されていることにより実現する。
【０１１４】
つまり、スプール開始コマンドではジョブ制御ポートモニタ６２１はジョブ制御プリントサービス６２２にＷｉｎｄｏｗｓ（登録商標）  Ｓｐｏｏｌｅｒ６０３等のジョブ制御プリントサービス６２２の前段にある外部のＷｉｎｄｏｗｓ（登録商標）のＯＳジョブＩＤと共に前述のジョブ情報通知サービス１３２４が発行したジョブ識別子（ＵＵＩＤ）が通知される。この時、ジョブ制御プリントサービス６２２はジョブ識別子（ＵＵＩＤ）を用いて、予めジョブ情報通知サービスから通知されていたジョブ情報を検索する。一致したジョブ属性があれば、そのジョブに割り込み印刷指示或いは優先印刷指示が含まれるかを確認し、含まれていれば図１５のステップＳ９０７におけるジョブ属性の更新処理も合わせて行う。
【０１１５】
更にステップＳ９０３で作成されたジョブ情報から適切なジョブファイル名を返却し、ステップＳ９０１のイベント待ちループへ戻る。なお、ステップＳ９０５において、ステップＳ９０３で作ったジョブ情報ファイルに該当するジョブ情報が存在しない場合には、ステップＳ９０３に相当する処理を行いジョブ情報を新規に作成する。
【０１１６】
ステップＳ９０４においてＮＯと判定された場合、ステップＳ９０６において該イベントが属性設定コマンドか否かが判定される。ＹＥＳと判定されるとステップＳ９０７においてジョブ制御ポートモニタ６２１からのジョブ制御プリントサービス６２２へのジョブ属性の更新処理が行われる。本実施形態において割り込み或いは優先ジョブを示す属性は文書名、ユーザ名等、通常のジョブ属性と同様に管理されている。ジョブ属性の更新が終了するとステップＳ９０１のイベント待ちループへ戻る。
【０１１７】
一方、ステップＳ９０６においてＮＯと判定された場合、ステップＳ９０８において該イベントがスケジュールコマンドか否か判定される。ＹＥＳと判定されるとステップＳ９０９においてサーバ６３０にスケジュール依頼が通知される。この時該ジョブのジョブ属性も同時に通知される。また、このジョブ属性には独自ジョブＩＤが含まれるものとする。ステップＳ９０９のスケジュール依頼処理が終わるとステップＳ９０１のイベント待ちループへ戻る。尚ジョブ制御サーバ６３０での処理は第１の実施形態と同様である。
【０１１８】
ステップＳ９０８でＮＯと判定された場合には、ステップＳ９１０において該イベントがサーバ６３０からのスケジュールアップイベントか否か判定される。ＹＥＳの場合にはステップＳ９１１において該ジョブをデバイス１０５へ送信し、ステップＳ９０１のイベント待ちループへと戻る。該ジョブが割り込み或いは優先印刷指示されたジョブである場合には、印刷装置１０５において優先印刷処理が行われる。
【０１１９】
ステップＳ９１０でＮＯと判定された場合には、ステップＳ９１２において該イベントがサーバからのジョブ完了イベント（デバイスからのジョブ完了イベントに対応）か否かが判定される。ＹＥＳの場合には処理はステップＳ９１３に移行し、そこで独自ジョブＩＤを含むジョブ属性及びファイルが削除され、該ジョブの印刷処理が終了する。続いて処理はステップＳ９０１のイベント待ちループへと戻る。
【０１２０】
ステップＳ９１２においてＮＯと判定された場合には、ステップＳ９１４において終了イベントか否かが判定される。ＹＥＳの場合には、ステップＳ９１５において終了処理が行われ、ジョブ制御プリントサービスは終了する。ステップＳ９１４においてＮＯの場合には、ステップＳ９１６においてその他のコマンド処理が行われ、ステップＳ９０１のイベント待ちループへと戻る。その他のコマンド処理は本発明とは直接関係が無いため本実施例においては割愛する。
【０１２１】
このように、第２の実施の形態によれば、Ｗｉｎｄｏｗｓ（登録商標）のＳｐｏｏｌｅｒにジョブを投入したとしても、事前にジョブ制御プリントサービス６２２にＯＳジョブＩＤ及びＵＵＩＤが通知されているので、プリンタドライバに対して複雑な制御を施すことなく、ジョブ制御プリントサービス６２２から通知されたＯＳジョブＩＤについてＷｉｎｄｏｗｓ（登録商標）  Ｓｐｏｏｌｅｒの順番制御を簡単に行うことができる。
【０１２２】
以上第１実施形態及び第２実施形態で説明したように、本発明は、単に印刷ジョブに優先度を付して、該付された優先度に基づく先送り印刷処理を行うという概念に留まるものではない。つまり、プリンタドライバで指示された優先印刷ジョブ或いは割り込み印刷ジョブが、通常ジョブと同様にＷｉｎｄｏｗｓ（登録商標）プリントスプーラーでスプールされ、且つ、このスプーラーに先行するジョブが複数存在した場合であっても、複数の印刷ジョブの送信処理が完了するまで、割り込み或いは優先印刷の対象である印刷ジョブの送信を待機しなければならないという状態を回避することができる。従って、割り込み或いは優先印印刷の指示がなされれば、対象の印刷ジョブを迅速に処理することができる。
【０１２３】
＜その他＞
各実施の形態の処理は、各機能を具現化したソフトウェアのプログラムコードを記録した記憶媒体をシステム或は装置に提供し、そのシステム或は装置のコンピュータ（又はＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読み出し実行することによっても実現することができる。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フロッピィ（登録商標）ディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ，ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭなどを用いることができる。
【０１２４】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した各実施の形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳ（オペレーティングシステム）などが実際の処理の一部又は全部を行い、その処理によって前述した各実施の形態の機能が実現される場合も含まれている。
【０１２５】
更に、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書きこまれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部又は全部を行い、その処理によって前述した各実施の形態の機能が実現される場合も含むものである。
【図面の簡単な説明】
【０１２６】
【図１】本発明の実施形態に係る印刷処理システムの構成概略を示す図である。
【図２】本発明の実施例におけるコンピュータの構成を概要ブロック図である。
【図３】図２に示したＲＡＭ２０２のメモリマップの一例を示す図である。
【図４】図２に示したＦＤ２０４のメモリマップの一例を示す図である。
【図５】図２に示したＦＤドライブ２０３とＦＤ２０４との関係を示す図である。
【図６】第１の実施形態に係る印刷システムの機能ブロック図である。
【図７】割込みジョブ印刷コマンドのデータ構造例である。
【図８】ジョブ制御ポートモニタにおけるデータ書き込み処理のフローチャートである。
【図９】第１の実施形態における、ジョブ制御プリントサービス（クライアント）でのフローチャートである。
【図１０】ジョブ制御プリントサーバでのメインフローチャートである。
【図１１】ジョブ制御プリントサーバでのジョブ選択フローチャートである。
【図１２】割り込み印刷を処理するプリンタデバイスのフローチャートである。
【図１３】第１の実施形態に係る印刷システムの機能ブロック図である。
【図１４】ジョブ情報通知処理の概要を示すフローチャートである。
【図１５】第２の実施形態における、ジョブ制御プリントサービス（クライアント）でのフローチャートである。
【図１６】ドライバからジョブ情報通知サービスに通知される情報の一例を示す図である。
【符号の説明】
【０１２７】
１０１   サーバコンピュータ
１０２〜１０４   クライアントコンピュータ
１０５   プリンタデバイス
１０６   ネットワーク
６０２   ＰＤＬプリンタドライバ
６２１   ジョブ制御ポートモニタ
６２２   ジョブ制御プリントサービス
６３０   ジョブ制御サーバ
【図１】
2005174225.tif 000003
【図２】
2005174225.tif 000004
【図３】
2005174225.tif 000005
【図４】
2005174225.tif 000006
【図５】
2005174225.tif 000007
【図６】
2005174225.tif 000008
【図７】
2005174225.tif 000009
【図８】
2005174225.tif 000010
【図９】
2005174225.tif 000011
【図１０】
2005174225.tif 000012
【図１１】
2005174225.tif 000013
【図１２】
2005174225.tif 000014
【図１３】
2005174225.tif 000015
【図１４】
2005174225.tif 000016
【図１５】
2005174225.tif 000017
【図１６】
2005174225.tif 000018