(57)【特許請求の範囲】
【請求項１】
クライアント装置から印刷指示を受信し、その印刷指示に基づき画像データを生成する処理を行うクライアント指示処理部と、
前記クライアント指示処理部が生成した画像データを印刷装置に印刷させるための制御を行う印刷装置制御部と、
を備え、
前記クライアント指示処理部は、
クライアント装置から印刷指示を受信した場合に、前記印刷装置制御部にその印刷指示データの印刷条件を前記印刷装置制御部に通知する通知手段と、
前記印刷指示に基づき生成した画像データを前記印刷装置制御部に転送し終わった場合に、第１段階の終了指示を送信する手段と、
前記第１段階の終了指示を送信した後、前記印刷装置が前記印刷指示に基づき生成した画像データの印刷を完了するタイミングまでの間にクライアント装置から別の印刷指示を受信しなかった場合に、第２段階の終了指示を送信する手段と、
を備え、
前記印刷装置制御部は、
前記クライアント指示処理部から通知された印刷指示の印刷条件と、前記印刷装置が印刷処理中の印刷指示の印刷条件との比較に基づき、前記通知された印刷指示を前記印刷処理中の印刷指示に連結可能か否かを判定する判定手段と、
前記判定手段が連結可能と判定した場合は、前記印刷装置が印刷処理中の印刷指示についての印刷が終了した場合でも前記印刷装置に終了通知を送らずに、前記通知された印刷指示に対応する画像データを前記印刷装置に印刷させ、その後クライアント指示処理部から第２段階の終了指示を受けた場合に前記印刷装置に終了通知を送る手段と、
前記判定手段が連結不可と判定した場合は、前記クライアント指示処理部から前記第１段階の終了指示を受けた場合に前記印刷装置に終了通知を送る手段と、
を備える印刷制御システム。
【請求項２】
前記クライアント指示処理部は、コンピュータに対してプログラムを実行させることにより実装され、
前記印刷装置制御部は、前記コンピュータに接続される制御ボードとして実装される、
ことを特徴とする請求項１記載の印刷制御システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、印刷制御システムに関する。
【背景技術】
【０００２】
用紙に対する印刷を行うプリントエンジンの中には、印刷ジョブを１つずつしか受け付けない仕様となっているものが存在する。この種のプリントエンジンに、プリントコントローラから複数の印刷ジョブを順次送信して印刷させる場合、１ジョブが終わるごとにプリントエンジンがサイクルダウンし、次のジョブの実行のためにサイクルアップを行うことになる。サイクルダウンではエンジン内の感光体ドラムなどの回転部材の回転速度低下などといった処理を行い、サイクルアップではいったん落ちた回転速度を可動速度まで高める等の処理を行うので、ある程度の時間がかかる。このため、１ジョブごとにサイクルダウン及びサイクルアップを行っていたのでは、連続したジョブの処理効率が低下する。また、複数の印刷ジョブを受け付け可能なプリントエンジンの中にも、ジョブ間でサイクルダウン及びサイクルアップを行うものがあり、同様の処理効率低下の問題がある。
【０００３】
これに対し、特許文献１には、印刷属性の変化に応じてプリンタの動作モードを切り換える場合にはプリンタを一旦停止する必要があることに鑑み、属性が共通する印刷ジョブを同一のバッチにまとめ、バッチ単位でプリンタに印刷させるプリンタ制御装置が開示されている。この装置は、バッチ群を管理するためにバッチキューというデータ構造を有しており、新たな印刷ジョブを受信すると、その印刷ジョブの印刷属性と同じ属性を持ったバッチがバッチキュー内に見つかれば、見つかったバッチにその印刷ジョブを追加する。
【０００４】
また、特許文献２に開示されたシステムは、アプリケーションから連続する複数のジョブがたて続けに入力されても、それら複数のジョブを連結して印刷装置（プリントエンジン）に送ることで、印刷装置のリセットを行わずに済ませ、スループットを維持する（要約書参照）。このシステムでは、印刷制御部は、第１のジョブの描画データを印刷装置に転送した後、そのジョブの終了識別情報を検知しても、すぐにはその終了識別情報を印刷装置に転送せずに所定のセーフティタイムだけ待つ。そのセーフティタイム内に第２のジョブが到来すると、その終了識別情報と第２のジョブの開始識別情報を印刷装置に転送することをせずに、第２のジョブの描画データを印刷装置に転送する。また、セーフティタイム内に後続のジョブが到来しなければ、印刷制御部は印刷装置に対して第１のジョブの終了識別情報を印刷装置に転送する（段落００４７参照）。また、特許文献２には、そのような印刷制御部を備えたホストコンピュータが、他のホストコンピュータに対してプリントサーバとして機能する場合にも、同様の処理が可能である旨が記載される（段落００４８参照）。
【０００５】
【特許文献１】特開平１１−２１２７３９号公報
【特許文献２】特開２００４−３４２０２６号公報（要約書、段落００４７及び００４８参照）
【発明の開示】
【発明が解決しようとする課題】
【０００６】
複数の印刷ジョブを連結するといっても、印刷ジョブ同士が連結できる条件は印刷装置（プリントエンジン）の機種ごとに異なる。例えば、印刷枚数計数の仕組みなどから両面印刷のジョブを他のジョブと連結できない印刷装置もあれば、両面印刷のジョブを他のジョブと連結できる印刷装置もある。したがって、印刷制御装置が複数の機種の印刷装置に対応する場合に、機種ごとにジョブ連結のための制御機構を実装したのでは効率が悪い。
【課題を解決するための手段】
【０００７】
本発明は、クライアント装置から印刷指示を受信し、その印刷指示に基づき画像データを生成する処理を行うクライアント指示処理部と、前記クライアント指示処理部が生成した画像データを印刷装置に印刷させるための制御を行う印刷装置制御部と、を備え、前記クライアント指示処理部は、クライアント装置から印刷指示を受信した場合に、前記印刷装置制御部にその印刷指示データの印刷条件を前記印刷装置制御部に通知する通知手段と、前記印刷指示に基づき生成した画像データを前記印刷装置制御部に転送し終わった場合に、第１段階の終了指示を送信する手段と、前記第１段階の終了指示を送信した後、前記印刷装置が前記印刷指示に基づき生成した画像データの印刷を完了するタイミングまでの間にクライアント装置から別の印刷指示を受信しなかった場合に、第２段階の終了指示を送信する手段と、を備え、前記印刷装置制御部は、前記クライアント指示処理部から通知された印刷指示の印刷条件と、前記印刷装置が印刷処理中の印刷指示の印刷条件との比較に基づき、前記通知された印刷指示を前記印刷処理中の印刷指示に連結可能か否かを判定する判定手段と、前記判定手段が連結可能と判定した場合は、前記印刷装置が印刷処理中の印刷指示についての印刷が終了した場合でも前記印刷装置に終了通知を送らずに、前記通知された印刷指示に対応する画像データを前記印刷装置に印刷させ、その後クライアント指示処理部から第２段階の終了指示を受けた場合に前記印刷装置に終了通知を送る手段と、前記判定手段が連結不可と判定した場合は、前記クライアント指示処理部から前記第１段階の終了指示を受けた場合に前記印刷装置に終了通知を送る手段と、を備える印刷制御システムである。
【０００８】
１つの態様では、前記クライアント指示処理部は、コンピュータに対してプログラムを実行させることにより実装され、前記印刷装置制御部は、前記コンピュータに接続される制御ボードとして実装される。
【発明を実施するための最良の形態】
【０００９】
図１を参照して、実施の形態のプリントコントローラシステムを含んだネットワークシステムの例を概説する。
【００１０】
このシステムは、ローカル・エリア・ネットワークなどのネットワーク１０に接続されたクライアント１２ａ，１２ｂ，…（以下、区別する必要がない場合はクライアント１２と総称する）とプリントコントローラシステム１４とを含んでいる。プリントコントローラシステム１４には、１以上のプリントエンジン１６ａ，１６ｂ，…（以下、区別する必要がない場合はプリントエンジン１６と総称する）が接続されている。
【００１１】
クライアント１２は、ユーザが操作するパーソナルコンピュータ等のコンピュータ装置である。ユーザは、クライアント１２を操作して、プリントコントローラシステム１４に対して印刷指示を行う。この印刷指示には、典型的には、用紙サイズや出力部数等の印刷条件と、印刷する画像をＰＤＬ（ページ記述言語）で記述した印刷データが含まれる。印刷指示は、「ジョブ」とも呼ばれる。
【００１２】
プリントコントローラシステム１４は、クライアント１２から受信したジョブをスプールし、順番にプリントエンジン１６に印刷させる。
【００１３】
プリントエンジン１６は、プリントコントローラシステム１４から与えられた画像データを用紙に印刷する。なお、以下の例では、プリントコントローラシステム１４に接続されたプリントエンジン１６がすべて、ジョブを１つずつしか受け付けないタイプのものであるとする。
【００１４】
次に図２を参照して、実施の形態のプリントコントローラシステム１４の内部構成を詳細に説明する。
【００１５】
図示例では、プリントコントローラシステム１４は、１つのクライアントジョブ処理部１４０と、１以上のエンジンコントローラ部１５０ａ，１５０ｂ，…（以下、区別する必要がない場合はエンジンコントローラ部１５０と総称する）とを備えている。
【００１６】
クライアントジョブ処理部１４０は、ネットワーク１０を介してクライアント１２から到来したジョブをスプール１４２に格納し、キュー管理を行う。キュー（図示省略）は、プリントエンジン１６ごとに用意され、管理される。あるプリントエンジンを出力先に指定したジョブが到来した場合、クライアントジョブ処理部１４０は、そのジョブをそのプリントエンジン１６に対応するキューに挿入する。キュー内のジョブは、対応するプリントエンジン１６に対し、先頭から順に送信されることになる。また、クライアントジョブ処理部１４０は、ジョブのＰＤＬデータを解釈して印刷用のラスター画像データを生成するＲＩＰ(Raster Image Processor)部を備えている。ＲＩＰ部が生成したラスター画像データは、エンジンコントローラ部１５０を介してプリントエンジン１６に送られる。
【００１７】
また、ジョブ管理テーブル１４４には、スプール１４２（及びキュー）に登録された各ジョブの管理情報が登録される。図３に、ジョブ管理テーブル１４４のデータ構造の一例を示す。この例では、ジョブ管理テーブル１４４には、ジョブごとに、クライアント側のジョブ識別情報２０，コントローラ内でのジョブ識別情報２２，及びステータス２４の情報が登録されている。
【００１８】
クライアント側のジョブ識別情報２０は、当該ジョブに対してクライアント１２が付与した識別情報であり、ジョブと共にクライアント１２からプリントコントローラシステム１４に送信されたものである。
【００１９】
コントローラ内でのジョブ識別情報２２は、当該ジョブに対してプリントコントローラシステム１４が付与した識別情報である。この実施の形態では、個々のエンジンコントローラ部１５０がこのジョブ識別情報２２を付与する。このジョブ識別情報２２は、ジョブＩＤと連結番号とを含んでいる。この実施の形態では、プリントコントローラシステム１４は、受信した複数のジョブ（実ジョブと呼ぶ）を仮想的に１つに連結し、プリントエンジン１６には１つのジョブ（仮想ジョブと呼ぶ）として認識させることで、実ジョブ間のサイクルダウンを減らす。コントローラ内でのジョブ識別情報２２のうちのジョブＩＤは、プリントエンジン１６に対してジョブ（すなわち仮想ジョブ）を識別するときに用いる識別情報であり、連結番号は仮想ジョブ内での個々の実ジョブを識別するための識別情報（典型的には通し番号）である。
【００２０】
クライアント１２からジョブを受信した時点では、コントローラ内でのジョブ識別情報２２は空である。この欄には、後でエンジンコントローラ部１５０からジョブＩＤと連結番号を取得した際に、それらの値が書き込まれる。
【００２１】
ステータス２４は、当該ジョブの状態を示す情報である。ステータス２４の値には、例えば、「実行待ち」、「実行中」、「実行完了」、又は「失敗」などがある。ステータス２４の値は、クライアントジョブ処理部１４０での処理の進行や、エンジンコントローラ部１５０からの通知に従って更新される。このようなジョブのステータスの管理は周知技術なのでこれ以上の説明は省略する。
【００２２】
再び図２に戻ると、クライアントジョブ処理部１４０は、受信したジョブを順にＲＩＰ（すなわちラスター画像データへ変換）し、そのジョブの出力先のプリントエンジン１６に対応するエンジンコントローラ部１５０に出力を依頼する。
【００２３】
エンジンコントローラ部１５０は、プリントコントローラシステム１４に接続されたプリントエンジン１６ごとに設けられる。エンジンコントローラ部１５０は、クライアントジョブ処理部１４０から実ジョブを受け取り、受け取ったジョブが現在実行中の実ジョブに連結可能であるか否かを判定する。そして、連結可能と判定した場合、エンジンコントローラ部１５０は、現在実行中の実ジョブの実行が終了しても、プリントエンジン１６にジョブ終了通知を送らずに、受け取ったジョブの画像データを続けてプリントエンジン１６に送って印刷させる。
【００２４】
エンジンコントローラ部１５０は、キュー１５２と連結条件記憶部１５４を備えている。キュー１５２は、クライアントジョブ処理部１４０から受信した実ジョブが登録される待ち行列である。連結条件記憶部１５４は、当該エンジンコントローラ１５０に接続されたプリントエンジン１６において、受信した実ジョブが現在実行中のジョブに対して連結可能か否かを判定するための判定条件を記憶する。
【００２５】
受信した実ジョブを現在実行中のジョブに連結できるかは、前者と後者の印刷条件同士の関係により判定される。ただし、前者と後者の印刷条件同士の関係が同じであっても、前者と後者の連結が認められるかどうかは、プリントエンジン１６の機種ごとに異なる。例えば、受信した実ジョブ又は現在実行中のジョブのどちらかが両面印刷のジョブである場合、あるプリントエンジンでは両者の連結が認められないが、別のプリントエンジンでは両者の連結が認められるといった差異がある。また、別の例として、受信した実ジョブ又は現在実行中のジョブのどちらかがステープル留めの指定を含む場合、あるプリントエンジンでは両者の連結が認められないが、別のプリントエンジンでは両者の連結が認められるといった差異がある。例えば、１つの例では、連結条件記憶部１５４に記憶される判定条件は、印刷条件の項目の値（例えば両面印刷、ステープル留めなど）ごとに、受信した実ジョブと現在実行中のジョブとのどちらかがその項目を含む場合に、ジョブ連結を認めるか否かを記述する。例えば、あるプリントエンジン１６についての判定条件は、受信した実ジョブと現在実行中のジョブのどちらか１以上が両面印刷であってもジョブ連結を認めるが、どちらか１以上がステープル留めを含む場合はジョブ連結を認めない、などという内容を表す。以上に例示した判定条件はあくまで一例に過ぎない。より詳細に、例えば、受信した実ジョブと現在実行中のジョブとの間の印刷条件の項目の値同士の関係がどのような場合に連結を認める（あるいは認めない）か、を記述する判定条件を用いてもよい。
【００２６】
例えば、エンジンコントローラ部１５０は、プリントエンジン１６に電源が投入されたときに行われる初期化処理（パワー・オン・シーケンス等とも呼ばれる）の際に、プリントエンジン１６から機種識別情報を取得し、その機種識別情報に応じた判定条件を連結条件記憶部１５４に記憶すればよい。この場合、エンジンコントローラ部１５０が、各機種識別情報に対応する判定条件が登録されたテーブルを保持していればよい。なお、プリントコントローラシステム１４にそのテーブルを管理するソフトウエアモジュールを設け、エンジンコントローラ部１５０がそのソフトウエアモジュールに対し、機種識別情報に対応する判定条件を問い合わせるようにしてもよい。また、対応するプリントエンジン１６についての判定条件があらかじめ書き込まれた連結条件記憶部１５４を有するエンジンコントローラ部１５０を用いるようにしてもよい。
【００２７】
以上に例示したプリントコントローラシステム１４は、例えば、パーソナルコンピュータやワークステーションなどといった汎用のコンピュータ装置をベースに構築することができる。プリントコントローラシステム１４のうち、クライアントジョブ処理部１４０は、プリントコントローラシステム１４を制御するオペレーティングシステム上のアプリケーションソフトウエアとして実装することができる。
【００２８】
一方、エンジンコントローラ部１５０は、そのコンピュータ装置に対して接続される制御ボードとして実装することができる。制御ボードは、例えば、ＰＣＩ（Peripheral Component Interconnect）のようなバス規格に準拠したボードとして構成される。制御ボードには、そのコンピュータ装置とのインタフェース回路、プリントエンジン１６とのインタフェース回路、制御ボードで実行する制御手順を記述したプログラムを記憶したＲＯＭ（リード・オンリー・メモリ）やＥＥＰＲＯＭ(Electrically Erasable Programmable ROM)などの記憶装置、そのプログラムを実行するプロセッサ、プログラム実行時に利用されるワークメモリ（例えばＲＡＭ（ランダム・アクセス・メモリ））などが搭載される。
【００２９】
次に、図４を参照して、クライアントジョブ処理部１４０の処理手順の一例を説明する。この手順は、プリントコントローラシステム１４に接続されたプリントエンジン１６ごと（すなわちエンジンコントローラ部ごと）について、それぞれ実行される。
【００３０】
この手順では、クライアントジョブ処理部１４０は、スプール１４２内に未処理のジョブが存在するか否かを判定する（Ｓ１００）。プリントエンジン１６が複数接続されている場合、スプール１４２にはエンジン１６ごとにキューが形成されており、ステップＳ１００では、当該手順に対応するエンジン１６のキューにジョブがあるかどうかを調べる。
【００３１】
ステップＳ１００でキューにジョブが存在すると判定した場合、クライアントジョブ処理部１４０は、キューの先頭のジョブを取得する（Ｓ１０２）。このとき、そのジョブのＰＤＬデータのＲＩＰ処理が未だ行われていなければ、ＲＩＰ処理を開始する。先頭のジョブを取得すると、その手順が対象としているエンジンコントローラ部１５０に対してジョブ開始通知を送信する（Ｓ１０４）。このジョブ開始通知には、印刷条件の情報が含まれる。
【００３２】
このジョブ開始通知に応じて、エンジンコントローラ部１５０からはジョブ開始応答が返される。このジョブ開始応答には、エンジンコントローラ部１５０が割り当てたジョブＩＤ及び連結番号が含まれる。クライアントジョブ処理部１４０は、そのジョブ開始応答を受信し（Ｓ１０６）、その応答に含まれるジョブＩＤ及び連結番号を、ジョブ管理テーブル１４４における当該ジョブの、コントローラ内でのジョブ識別情報２２の欄に記憶する（Ｓ１０８）。
【００３３】
ジョブ開始応答を受信した後、クライアントジョブ処理部１４０は、ＲＩＰ処理により得られた当該ジョブの各ページの画像データを、順番にエンジンコントローラ部１５０に渡す。そして、ジョブを構成する全ページの画像データをエンジンコントローラ部１５０に渡し終えた場合には（ステップＳ１１０の判定結果が肯定（Ｙ））、クライアントジョブ処理部１４０は、エンジンコントローラ部１５０に対してジョブ終了通知を送信する（Ｓ１１２）。
【００３４】
この実施の形態では、クライアントジョブ処理部１４０からエンジンコントローラ部１５０へ送るジョブ終了通知には第１段階と第２段階の２種類がある。第１段階のジョブ終了通知は、後続するジョブが現に存在する又は近く現れる可能性があることを示すものである。ステップＳ１１２ではこの第１段階のジョブ終了通知が送信される。なお、エンジンコントローラ部１５０は、第１段階のジョブ終了通知を受けただけではプリントエンジン１６に対してジョブ終了通知を送信しない。更にその後に第２段階のジョブ終了通知を受けて初めて、エンジンコントローラ部１５０はプリントエンジン１６にジョブ終了通知を送信する。
【００３５】
ステップＳ１１２の後、クライアントジョブ処理部１４０は、当該手順の処理対象であるプリントエンジン１６に関して連結モードに移行する（Ｓ１１４）。既に当該プリントエンジン１６に関して連結モードに入っている場合は、連結モードを維持する。この後、処理はステップＳ１００に戻り、スプール１４２に当該プリントエンジン１６宛のジョブがあるかどうかを調べる。
【００３６】
ステップＳ１００で、スプール１４２内に当該プリントエンジン１６宛のジョブがない場合には、クライアントジョブ処理部１４０は、当該プリントエンジン１６に関するモードが連結モードであるかどうかを判定する（Ｓ１２０）。連結モードでなければ、ステップＳ１００に戻り、所定時間の経過後に再びスプール１４２内に当該プリントエンジン１６宛のジョブがあるかどうかを調べる。
【００３７】
ステップＳ１２０で連結モードと判定された場合には、クライアントジョブ処理部１４０は、当該プリントエンジン１６が現在出力している実ジョブの印刷結果の最終ページが排出されるタイミング（排出終了タイミングと呼ぶ）が到来したかどうかを判定する（Ｓ１２２）。この実施の形態では、エンジンコントローラ部１５０がプリントエンジン１６に対して、実ジョブ単位ではなく仮想ジョブ単位でジョブの区切りを通知しているので、プリントエンジン１６は、仮想ジョブは認識しているが実ジョブは認識していない。そこで、排出終了タイミングが到来したかどうかは、クライアントジョブ処理部１４０が判定する。
【００３８】
この判定では、例えば、ジョブ終了通知（Ｓ１１２）を発した後、タイマーにより時間計測を開始し、タイマーが計測した時間がしきい値時間以上となった場合に、排出終了タイミングが到来したと判定してもよい。しきい値時間は、固定値でもよいが、当該ジョブで印刷する総ページ数（ジョブのページ数×部数）に応じた値としてもよい。
【００３９】
また、タイマーの計測開始のタイミングは、ジョブ終了通知の発行時点に限定されるわけではない。例えば、プリントエンジン１６が印刷結果を１枚排出するごとに排出終了通知をプリントコントローラシステム１４に送信する場合、クライアントジョブ処理部１４０は、その排出終了通知をカウントすることで、ジョブの総ページ数の内の何ページ目までの排出が完了したかを把握できる。したがって、例えば、ジョブの最後の排出ページから所定ページ数だけ前のページの排出完了を検知した時点からタイマーによる時間計測を開始してもよい。この場合、しきい値時間は固定値でよい。
【００４０】
いずれの場合も、タイマーは、ステップＳ１００でスプール１４２にジョブがあると判定された場合に、初期値０にリセットされる。
【００４１】
ステップＳ１２２で排出終了タイミングが到来していないと判定した場合は、ステップＳ１００に戻る。
【００４２】
一方、到来したと判定した場合には、クライアントジョブ処理部１４０は、エンジンコントローラ部１５０に対して第２段階のジョブ終了通知を送信する（Ｓ１２４）。この第２段階のジョブ終了通知は、後続のジョブがないことを示しており、この通知を受けたエンジンコントローラ部１５０はプリントエンジン１６に対してジョブ終了通知を送信する。
【００４３】
ステップＳ１２４の後、クライアントジョブ処理部１４０は、当該プリントエンジン１６の連結モードを解除する（Ｓ１２６）。そして、処理はステップＳ１００に戻る。
【００４４】
次に、図５及び図６及び図７を参照して、エンジンコントローラ部１５０の処理手順の例を説明する。まず、図５を参照して、ジョブ受け入れ制御の例について説明する。
【００４５】
エンジンコントローラ部１５０は、クライアントジョブ処理部１４０からジョブ開始通知が到来するのを待つ（Ｓ２００）。ジョブ開始通知が到来すると、プリントエンジン１６が現在実行中のジョブが存在するかどうかを判定する（Ｓ２０２）。
存在しなければ、エンジンコントローラ部１５０は、新たなジョブＩＤを生成し、連結番号を初期値（例えば１）にリセットする（Ｓ２０４）。そして、そのジョブＩＤと連結番号とを含んだジョブ開始応答をクライアントジョブ処理部１４０に返す（Ｓ２１０）とともに、到来したジョブ（ジョブＩＤと連結番号の組）をキュー１５２の末尾に追加する（Ｓ２１２）。
ステップＳ２０２でプリントエンジン１６が実行中のジョブがあると判定した場合、エンジンコントローラ部１５０は、到来したジョブが実行中のジョブに連結可能かどうかを判定する（Ｓ２０６）。この判定は、ジョブ開始通知に含まれる到来したジョブの印刷条件と、実行中のジョブの印刷条件と、連結条件記憶部１５４に記憶された判定条件とに基づき行う。
【００４６】
ステップＳ２０６で連結可能と判定した場合、エンジンコントローラ部１５０は、ジョブＩＤは変更せずに連結番号を１増加させる（Ｓ２０８）。そして、そのジョブＩＤと連結番号とを伴うジョブ開始応答をクライアントジョブ処理部１４０に返し（Ｓ２１０）、そのジョブＩＤと連結番号の組をキュー１５２の末尾に追加する（Ｓ２１２）。
【００４７】
ステップＳ２０６で連結不可と判定した場合、エンジンコントローラ部１５０は、クライアントジョブ処理部１４０から第１段階のジョブ終了通知が受信済みであるか否かを判定する（Ｓ２１４）。この判定は、図７の手順のステップＳ２４２でセットされ、ステップＳ２４６でリセットされる第１段階フラグを参照して行えばよい。第１段階のジョブ終了通知を未受信であれば、所定時間待って再度ステップＳ２１４の判定を行う。そして、第１段階のジョブ終了通知が受信済みとなれば、プリントエンジン１６にジョブ終了通知を送る（Ｓ２１６）。このジョブ終了通知には、プリントエンジン１６が実行中のジョブのジョブＩＤが含まれる。なお、この時点では、その「実行中のジョブ」はプリントエンジン１６ではまだ印刷が完了していないので「実行中」であるが、クライアントジョブ処理部１４０では処理が終了している。
【００４８】
また、ステップＳ２０６で連結不可と判定した場合、エンジンコントローラ部１５０は、新たなジョブＩＤを生成して連結番号をリセットし（Ｓ２０４）、そのジョブＩＤと連結番号とを伴うジョブ開始応答をクライアントジョブ処理部１４０に返す（Ｓ２１０）。また、そのジョブＩＤと連結番号の組をキュー１５２の末尾に追加する（Ｓ２１２）。
次に、図６を参照して、ジョブ実行制御の例について説明する。この処理では、エンジンコントローラ部１５０は、プリントエンジン１６がジョブ（仮想ジョブ）を実行していない間は、定期的にキュー１５２にジョブがあるかどうかを調べる（Ｓ２２０）。あれば、キューの先頭のジョブを取得する（Ｓ２２２）。そして、プリントエンジン１６が現在実行中のジョブがあるかどうかを判定し（Ｓ２２４）、無ければ、プリントエンジン１６に対してジョブ開始通知を送信する（Ｓ２３２）。このとき送信されるジョブ開始通知には、当該ジョブのジョブＩＤの情報が含まれる。ただし、連結番号の情報は含まれない。また、印刷条件の情報もプリントエンジン１６に送られる。そして、このジョブ開始通知の後、当該ジョブの各ページの画像データを順番にプリントエンジン１６に送信する（Ｓ２３４）。
【００４９】
ステップＳ２２４で実行中のジョブがあると判定された場合、エンジンコントローラ部１５０は、プリントエンジン１６が実行中のジョブ（ここでは実ジョブ）を終えるのを待つ（Ｓ２２６）。例えば、プリントエンジン１６から１枚ごとにプリント終了（すなわち１枚の印刷結果を排出完了）の通知が来る場合、エンジンコントローラ部１５０は、その通知の受信回数をカウントし、カウント値がクライアントジョブ処理部１４０から受け取った当該ジョブの出力枚数（これは印刷条件に基づきエンジンコントローラ部１５０が計算してもよい）に達した時点でジョブが終了したと判定すればよい。なお、カウント値が出力枚数に達してから次の実ジョブの画像データ転送を開始したのではプリントエンジン１６の空転時間が長くなりすぎる場合には、出力枚数から所定枚数を引いた値にカウント値が達した時点を基準にジョブ終了のタイミングを推定（例えばその時点から所定時間が経過した時点でジョブ終了と推定するなど）してもよい。
【００５０】
プリントエンジン１６が実行中の実ジョブが終了すると、エンジンコントローラ部１５０は、ジョブ終了通知をクライアントジョブ処理部１４０に送信する（Ｓ２２８）。この通知には、当該実ジョブのジョブＩＤと連結番号の組が含まれる。
【００５１】
また、エンジンコントローラ部１５０は、ステップＳ２２２で取得した先頭ジョブのジョブＩＤとステップＳ２２６で終了したと判定したジョブのジョブＩＤとが同じか否かを判定する（Ｓ２３０）。同じでなければ、その先頭ジョブは実行中のジョブに連結できないジョブであるということなので、その先頭ジョブのジョブＩＤを含んだジョブ開始通知をプリントエンジン１６に送信（Ｓ２３２）したのち、当該ジョブの各ページの画像データを順番にプリントエンジン１６に送信する（Ｓ２３４）。
【００５２】
また、ステップＳ２３０で先頭ジョブと終了したジョブのジョブＩＤ同士が一致した場合は、エンジンコントローラ部１５０は、ステップＳ２３２をスキップし（すなわちジョブ開始通知を送らない）、当該ジョブの各ページの画像データを順番にプリントエンジン１６に送信する（Ｓ２３４）。この場合、プリントエンジン１６は、終了したジョブとその先頭ジョブとを同じジョブと認識する。
【００５３】
次に、図７を参照して、エンジンコントローラ部１５０がプリントエンジン１６にジョブ終了通知を送る処理の例を説明する。
【００５４】
この手順では、エンジンコントローラ部１５０は、クライアントジョブ処理部１４０から第１段階のジョブ終了通知を受け取るのを待つ（Ｓ２４０）。第１段階のジョブ終了通知を受け取ると、第１段階フラグをセット（オン）する（Ｓ２４２）。そして、クライアントジョブ処理部１４０から第２段階のジョブ終了通知を受け取るのを待つ（Ｓ２４４）。第２段階のジョブ終了通知を受け取ると、プリントエンジン１６に、当該ジョブのジョブＩＤを含んだジョブ終了通知を送る（Ｓ２４６）。そして、第１段階フラグをリセット（オフ）し（Ｓ２４６）、ステップＳ２４０に戻る。
【００５５】
以上、クライアントジョブ処理部１４０及びエンジンコントローラ部１５０が実行する処理手順の一例を説明した。
【００５６】
次に、このようなクライアントジョブ処理部１４０及びエンジンコントローラ部１５０からなるシステムの動作の具体例を説明する。
【００５７】
図８の例では、（１）まずクライアント１２ａ（図１参照）がプリントコントローラシステム１４にジョブを送信する。この時点では、プリントコントローラシステム１４及びプリントエンジン１６はジョブを実行していないものとする。すると、クライアントジョブ処理部１４０は、そのジョブをスプール１４２及びジョブ管理テーブル１４４に登録すると共に、（２）エンジンコントローラ部１５０に対してジョブ開始通知を送信する。この通知には、そのジョブの印刷条件が含まれている。この通知を受けたエンジンコントローラ部１５０は、そのジョブに対して新たなジョブＩＤとして値Ｎを付与し、（３）ジョブＩＤ＝Ｎと連結番号＝１を含んだジョブ開始応答をクライアントジョブ処理部１４０に返す。なお、エンジンコントローラ部１５０は、ジョブ開始通知と共に受け取った印刷条件を、後の連結可否の判定のために記憶する。また、この時点ではプリントエンジン１６はジョブを実行していないので、エンジンコントローラ部１５０は、（４）ジョブＩＤ＝Ｎを含んだジョブ開始通知をプリントエンジン１６に送り、その後そのジョブの各ページの画像を順にプリントエンジン１６に送信して印刷させる。
【００５８】
クライアントジョブ処理部１４０は、そのジョブ（ジョブＩＤ＝Ｎ，連結番号＝１）のＲＩＰ処理が完了し、そのジョブの全ページの画像をエンジンコントローラ部１５０に渡し終わると、（５）後続のジョブが存在する可能性があることを示した第１段階のジョブ終了通知をエンジンコントローラ部１５０に送信する。
【００５９】
その後、（６）クライアント１２ｂがクライアントジョブ処理部１４０に対してジョブを送信する。このジョブは、プリントエンジン１６が実行中のジョブの印刷出力を完了する時点で次のジョブの画像データを供給できるようなタイミングまでにクライアントジョブ処理部１４０に到達したとする。この場合、（７）クライアントジョブ処理部１４０は、エンジンコントローラ部１５０にジョブ開始通知を送信する。エンジンコントローラ部１５０は、その通知と共に送られてきた印刷条件と、記憶している実行中のジョブの印刷条件と、連結条件記憶部１５４に記憶された判定条件とに基づき、実行中のジョブに対して今回到来したジョブが連結可能か否かを判定する。図８の例では、連結可能と判定されたとする。
【００６０】
この場合、エンジンコントローラ部１５０は、ジョブＩＤはＮのままで連結番号を２に変更し、（８）それらジョブＩＤと連結番号を含んだジョブ開始応答をクライアントジョブ処理部１４０に返す。
【００６１】
（９）プリントエンジン１６からの１枚ごとのプリント終了通知に基づき、実行中の実ジョブ（ジョブＩＤ＝Ｎ，連結番号＝１）の印刷出力が全て完了したとエンジンコントローラ部１５０が判定すると、（１０）エンジンコントローラ部１５０は、クライアントジョブ処理部１４０に対してそのジョブについてのジョブ終了通知を送信する。また、エンジンコントローラ部１５０は、既に到来している次の実ジョブ（ジョブＩＤ＝Ｎ，連続番号＝２）の画像データをプリントエンジン１６に送る。
【００６２】
クライアントジョブ処理部１４０は、ジョブＩＤ＝Ｎ，連結番号＝２のジョブの全ページの画像をエンジンコントローラ部１５０に渡し終わると、（１１）第１段階のジョブ終了通知をエンジンコントローラ部１５０に送信する。
【００６３】
その後、プリントエンジン１６が実行中のジョブ（ジョブＩＤ＝Ｎ，連続番号＝２）の印刷出力を完了する時点で次のジョブの画像データを供給できるタイミングまでには次のジョブがクライアントジョブ処理部１４０に到来しなかったとする。この場合、（１２）クライアントジョブ処理部１４０は、第２段階のジョブ終了通知をエンジンコントローラ部１５０に送る。（１３）これを受けたエンジンコントローラ部１５０は、実行中のジョブのジョブＩＤ＝Ｎを含んだジョブ終了通知をプリントエンジン１６に送信する。
【００６４】
この後、エンジンコントローラ部１５０は、（１４）プリントエンジン１６からの１枚ごとのプリント終了通知に基づき、実行中の実ジョブ（ジョブＩＤ＝Ｎ，連結番号＝２）の印刷出力が全て完了したと判定すると、（１５）クライアントジョブ処理部１４０に対してそのジョブについてのジョブ終了通知を送信する。
【００６５】
次に、別の例を説明する。図９の例のうち（１）〜（７）の流れは図８の例と同じである。この例では、段階（７）の開始通知に係るジョブが実行中のジョブに連結できないと判定される。この場合、（８）エンジンコントローラ部１５０は、プリントエンジン１６に対して実行中のジョブのジョブＩＤ＝Ｎを含んだジョブ終了通知を送信する。（９）また、段階（７）の開始通知に係るジョブに対して新たなジョブＩＤ＝Ｍを付与すると共に、連結番号を１にリセットし、それらジョブＩＤ＝Ｍ，連結番号＝１を含んだジョブ開始応答をクライアントジョブ処理部１４０に返す。
【００６６】
エンジンコントローラ部１５０は、（１０）プリントエンジン１６からのプリント終了通知に基づき、実行中の実ジョブ（ジョブＩＤ＝Ｎ，連結番号＝１）の印刷出力が全て完了したと判定すると、（１１）クライアントジョブ処理部１４０に対してそのジョブについてのジョブ終了通知を送信する。（１２）また、エンジンコントローラ部１５０は、既に到来している次の実ジョブ（ジョブＩＤ＝Ｍ，連続番号＝１）のジョブＩＤを含んだジョブ開始通知をプリントエンジン１６に送り、その後当該ジョブの画像データをプリントエンジン１６に送る。
【００６７】
クライアントジョブ処理部１４０は、ジョブＩＤ＝Ｍ，連結番号＝１のジョブの全ページの画像をエンジンコントローラ部１５０に渡し終わると、（１３）第１段階のジョブ終了通知をエンジンコントローラ部１５０に送信する。
【００６８】
その後、プリントエンジン１６が実行中のジョブ（ジョブＩＤ＝Ｍ，連続番号＝１）の印刷出力を完了する時点で次のジョブの画像データを供給できるタイミングまでには次のジョブがクライアントジョブ処理部１４０に到来しなかったとする。この場合、（１４）クライアントジョブ処理部１４０は、第２段階のジョブ終了通知をエンジンコントローラ部１５０に送る。（１５）これを受けたエンジンコントローラ部１５０は、実行中のジョブのジョブＩＤ＝Ｍを含んだジョブ終了通知をプリントエンジン１６に送信する。
【００６９】
この後、エンジンコントローラ部１５０は、（１６）プリントエンジン１６からの１枚ごとのプリント終了通知に基づき、実行中の実ジョブ（ジョブＩＤ＝Ｍ，連結番号＝１）の印刷出力が全て完了したと判定すると、（１７）クライアントジョブ処理部１４０に対してそのジョブについてのジョブ終了通知を送信する。
【００７０】
この実施の形態では、クライアントジョブ処理部１４０は、ジョブ管理テーブル１４０の情報を利用することで、ジョブステータスの表示画面として、連結されたジョブをそうでないジョブと区別して表示した画面を生成することができる。すなわち、ジョブ管理テーブル１４０には、各ジョブについて、エンジンコントローラ部１５０が付与したジョブＩＤと連結番号との組が登録されており、ジョブＩＤが等しいジョブ同士は連結されていると判定することができる。そこで、ジョブＩＤが等しいジョブ同士を図１０に例示するように、同じ表示形態（ただし、その他のジョブの表示形態とは異なる）で表示する。図１０の例では、文書１と文書２が連結されていることが分かる。この表示画面は、例えばプリントコントローラシステム１４に付属する表示装置に表示される。
【００７１】
以上に説明した実施の形態では、プリントコントローラシステム１４の機能をクライアントジョブ処理部１４０とエンジンコントローラ部１５０との２階層に分け、プリントエンジン１６の機種に依存する連結可否の判定はエンジンコントローラ部１５０で実行するようにした。このため、クライアントジョブ処理部１４０は、接続されるプリントエンジン１６の機種を意識する必要ない。すなわち、複数の機種のプリントエンジン１６が接続される場合でも、クライアントジョブ処理部１４０は共通の処理を実行すればよい。
【００７２】
以上では、エンジンコントローラ部１５０に接続されたプリントエンジン１６がジョブを１つずつしか受け付けない仕様である場合を例にとって説明したが、これは一例に過ぎない。ジョブを複数受け付けるタイプ（すなわちジョブを実行中に他のジョブを受け付け可能なタイプ）のプリントエンジン１６がプリントコントローラシステム１４に接続されている場合でも、そのプリントエンジン１６がジョブ間でサイクルダウン及びサイクルアップを行うものであれば、同様の処理を行えばよい。なお、接続されているプリントエンジン１６が、ジョブを複数受け付け且つジョブ間でサイクルダウン及びサイクルアップを行わないタイプのものである場合については、そのような処理は行わなくてもよい。
【００７３】
以上に例示した実施の形態におけるプリントコントローラシステム１４は、例えば、汎用のコンピュータに上述の各機能モジュールの処理を表すプログラムを実行させることにより実現される。ここで、コンピュータは、例えば、ハードウエアとして、図１１に示すように、ＣＰＵ１０００等のマイクロプロセッサ、ランダム・アクセス・メモリ（ＲＡＭ）１００２およびリード・オンリー・メモリ（ＲＯＭ）１００４等のメモリ（一次記憶）、ＨＤＤ（ハードディスクドライブ）１００６を制御するＨＤＤコントローラ１００８、各種Ｉ／Ｏ（入出力）インタフェース１０１０、ローカル・エリア・ネットワークなどのネットワークとの接続のための制御を行うネットワークインタフェース１０１２等が、たとえばバス１０１４を介して接続された回路構成を有する。また、そのバス１０１４に対し、例えばＩ／Ｏインタフェース１０１０経由で、ＣＤやＤＶＤなどの可搬型ディスク記録媒体に対する読み取り及び／又は書き込みのためのディスクドライブ１０１６、フラッシュメモリなどの各種規格の可搬型の不揮発性記録媒体に対する読み取り及び／又は書き込みのためのメモリリーダライタ１０１８、などが接続されてもよい。上に例示した各機能モジュールの処理内容が記述されたプログラムがＣＤやＤＶＤ等の記録媒体を経由して、又はネットワーク等の通信手段経由で、ハードディスクドライブ等の固定記憶装置に保存され、コンピュータにインストールされる。固定記憶装置に記憶されたプログラムがＲＡＭ１００２に読み出されＣＰＵ１０００等のマイクロプロセッサにより実行されることにより、上に例示した機能モジュール群が実現される。なお、それら機能モジュール群のうちの一部又は全部を、専用ＬＳＩ(Large Scale Integration)、ＡＳＩＣ（Application Specific Integrated Circuit、特定用途向け集積回路）又はＦＰＧＡ（Field Programmable Gate Array）等のハードウエア回路として構成してもよい。
【図面の簡単な説明】
【００７４】
【図１】実施の形態のプリントコントローラシステムを含んだネットワークシステムの例を示す図である。
【図２】実施の形態のプリントコントローラシステムの機能構成の一例を示す図である。
【図３】ジョブ管理テーブルのデータ構造の例を示す図である。
【図４】クライアントジョブ処理部の処理手順の一例を示すフローチャートである。
【図５】エンジンコントローラ部のジョブ受け入れ制御の手順の一例を示すフローチャートである。
【図６】エンジンコントローラ部のジョブ実行制御の手順の一例を示すフローチャートである。
【図７】エンジンコントローラ部のジョブ終了通知処理の手順の一例を示すフローチャートである。
【図８】クライアントジョブ処理部及びエンジンコントローラ部からなるシステムの動作の具体例を説明するための図である。
【図９】クライアントジョブ処理部及びエンジンコントローラ部からなるシステムの動作の別の具体例を説明するための図である。
【図１０】ジョブステータスの表示画面の一例を説明するための図である。
【図１１】コンピュータのハードウエア構成の一例を示す図である。
【符号の説明】
【００７５】
１０  ネットワーク、１２ａ，１２ｂ  クライアント、１４  プリントコントローラシステム、１６ａ，１６ｂ  プリントエンジン、１４０  クライアントジョブ処理部、１５０ａ，１５０ｂ  エンジンコントローラ部。
【図１】
0004665996.tif 000002
【図２】
0004665996.tif 000003
【図３】
0004665996.tif 000004
【図４】
0004665996.tif 000005
【図５】
0004665996.tif 000006
【図６】
0004665996.tif 000007
【図７】
0004665996.tif 000008
【図８】
0004665996.tif 000009
【図９】
0004665996.tif 000010
【図１０】
0004665996.tif 000011
【図１１】
0004665996.tif 000012