図1を参照して、実施の形態のプリントコントローラシステムを含んだネットワークシステムの例を概説する。
このシステムは、ローカル・エリア・ネットワークなどのネットワーク10に接続されたクライアント12a,12b,…(以下、区別する必要がない場合はクライアント12と総称する)とプリントコントローラシステム14とを含んでいる。プリントコントローラシステム14には、1以上のプリントエンジン16a,16b,…(以下、区別する必要がない場合はプリントエンジン16と総称する)が接続されている。
クライアント12は、ユーザが操作するパーソナルコンピュータ等のコンピュータ装置である。ユーザは、クライアント12を操作して、プリントコントローラシステム14に対して印刷指示を行う。この印刷指示には、典型的には、用紙サイズや出力部数等の印刷条件と、印刷する画像をPDL(ページ記述言語)で記述した印刷データが含まれる。印刷指示は、「ジョブ」とも呼ばれる。
プリントコントローラシステム14は、クライアント12から受信したジョブをスプールし、順番にプリントエンジン16に印刷させる。
プリントエンジン16は、プリントコントローラシステム14から与えられた画像データを用紙に印刷する。なお、以下の例では、プリントコントローラシステム14に接続されたプリントエンジン16がすべて、ジョブを1つずつしか受け付けないタイプのものであるとする。
次に図2を参照して、実施の形態のプリントコントローラシステム14の内部構成を詳細に説明する。
図示例では、プリントコントローラシステム14は、1つのクライアントジョブ処理部140と、1以上のエンジンコントローラ部150a,150b,…(以下、区別する必要がない場合はエンジンコントローラ部150と総称する)とを備えている。
クライアントジョブ処理部140は、ネットワーク10を介してクライアント12から到来したジョブをスプール142に格納し、キュー管理を行う。キュー(図示省略)は、プリントエンジン16ごとに用意され、管理される。あるプリントエンジンを出力先に指定したジョブが到来した場合、クライアントジョブ処理部140は、そのジョブをそのプリントエンジン16に対応するキューに挿入する。キュー内のジョブは、対応するプリントエンジン16に対し、先頭から順に送信されることになる。また、クライアントジョブ処理部140は、ジョブのPDLデータを解釈して印刷用のラスター画像データを生成するRIP(Raster Image Processor)部を備えている。RIP部が生成したラスター画像データは、エンジンコントローラ部150を介してプリントエンジン16に送られる。
また、ジョブ管理テーブル144には、スプール142(及びキュー)に登録された各ジョブの管理情報が登録される。図3に、ジョブ管理テーブル144のデータ構造の一例を示す。この例では、ジョブ管理テーブル144には、ジョブごとに、クライアント側のジョブ識別情報20,コントローラ内でのジョブ識別情報22,及びステータス24の情報が登録されている。
クライアント側のジョブ識別情報20は、当該ジョブに対してクライアント12が付与した識別情報であり、ジョブと共にクライアント12からプリントコントローラシステム14に送信されたものである。
コントローラ内でのジョブ識別情報22は、当該ジョブに対してプリントコントローラシステム14が付与した識別情報である。この実施の形態では、個々のエンジンコントローラ部150がこのジョブ識別情報22を付与する。このジョブ識別情報22は、ジョブIDと連結番号とを含んでいる。この実施の形態では、プリントコントローラシステム14は、受信した複数のジョブ(実ジョブと呼ぶ)を仮想的に1つに連結し、プリントエンジン16には1つのジョブ(仮想ジョブと呼ぶ)として認識させることで、実ジョブ間のサイクルダウンを減らす。コントローラ内でのジョブ識別情報22のうちのジョブIDは、プリントエンジン16に対してジョブ(すなわち仮想ジョブ)を識別するときに用いる識別情報であり、連結番号は仮想ジョブ内での個々の実ジョブを識別するための識別情報(典型的には通し番号)である。
クライアント12からジョブを受信した時点では、コントローラ内でのジョブ識別情報22は空である。この欄には、後でエンジンコントローラ部150からジョブIDと連結番号を取得した際に、それらの値が書き込まれる。
ステータス24は、当該ジョブの状態を示す情報である。ステータス24の値には、例えば、「実行待ち」、「実行中」、「実行完了」、又は「失敗」などがある。ステータス24の値は、クライアントジョブ処理部140での処理の進行や、エンジンコントローラ部150からの通知に従って更新される。このようなジョブのステータスの管理は周知技術なのでこれ以上の説明は省略する。
再び図2に戻ると、クライアントジョブ処理部140は、受信したジョブを順にRIP(すなわちラスター画像データへ変換)し、そのジョブの出力先のプリントエンジン16に対応するエンジンコントローラ部150に出力を依頼する。
エンジンコントローラ部150は、プリントコントローラシステム14に接続されたプリントエンジン16ごとに設けられる。エンジンコントローラ部150は、クライアントジョブ処理部140から実ジョブを受け取り、受け取ったジョブが現在実行中の実ジョブに連結可能であるか否かを判定する。そして、連結可能と判定した場合、エンジンコントローラ部150は、現在実行中の実ジョブの実行が終了しても、プリントエンジン16にジョブ終了通知を送らずに、受け取ったジョブの画像データを続けてプリントエンジン16に送って印刷させる。
エンジンコントローラ部150は、キュー152と連結条件記憶部154を備えている。キュー152は、クライアントジョブ処理部140から受信した実ジョブが登録される待ち行列である。連結条件記憶部154は、当該エンジンコントローラ150に接続されたプリントエンジン16において、受信した実ジョブが現在実行中のジョブに対して連結可能か否かを判定するための判定条件を記憶する。
受信した実ジョブを現在実行中のジョブに連結できるかは、前者と後者の印刷条件同士の関係により判定される。ただし、前者と後者の印刷条件同士の関係が同じであっても、前者と後者の連結が認められるかどうかは、プリントエンジン16の機種ごとに異なる。例えば、受信した実ジョブ又は現在実行中のジョブのどちらかが両面印刷のジョブである場合、あるプリントエンジンでは両者の連結が認められないが、別のプリントエンジンでは両者の連結が認められるといった差異がある。また、別の例として、受信した実ジョブ又は現在実行中のジョブのどちらかがステープル留めの指定を含む場合、あるプリントエンジンでは両者の連結が認められないが、別のプリントエンジンでは両者の連結が認められるといった差異がある。例えば、1つの例では、連結条件記憶部154に記憶される判定条件は、印刷条件の項目の値(例えば両面印刷、ステープル留めなど)ごとに、受信した実ジョブと現在実行中のジョブとのどちらかがその項目を含む場合に、ジョブ連結を認めるか否かを記述する。例えば、あるプリントエンジン16についての判定条件は、受信した実ジョブと現在実行中のジョブのどちらか1以上が両面印刷であってもジョブ連結を認めるが、どちらか1以上がステープル留めを含む場合はジョブ連結を認めない、などという内容を表す。以上に例示した判定条件はあくまで一例に過ぎない。より詳細に、例えば、受信した実ジョブと現在実行中のジョブとの間の印刷条件の項目の値同士の関係がどのような場合に連結を認める(あるいは認めない)か、を記述する判定条件を用いてもよい。
例えば、エンジンコントローラ部150は、プリントエンジン16に電源が投入されたときに行われる初期化処理(パワー・オン・シーケンス等とも呼ばれる)の際に、プリントエンジン16から機種識別情報を取得し、その機種識別情報に応じた判定条件を連結条件記憶部154に記憶すればよい。この場合、エンジンコントローラ部150が、各機種識別情報に対応する判定条件が登録されたテーブルを保持していればよい。なお、プリントコントローラシステム14にそのテーブルを管理するソフトウエアモジュールを設け、エンジンコントローラ部150がそのソフトウエアモジュールに対し、機種識別情報に対応する判定条件を問い合わせるようにしてもよい。また、対応するプリントエンジン16についての判定条件があらかじめ書き込まれた連結条件記憶部154を有するエンジンコントローラ部150を用いるようにしてもよい。
以上に例示したプリントコントローラシステム14は、例えば、パーソナルコンピュータやワークステーションなどといった汎用のコンピュータ装置をベースに構築することができる。プリントコントローラシステム14のうち、クライアントジョブ処理部140は、プリントコントローラシステム14を制御するオペレーティングシステム上のアプリケーションソフトウエアとして実装することができる。
一方、エンジンコントローラ部150は、そのコンピュータ装置に対して接続される制御ボードとして実装することができる。制御ボードは、例えば、PCI(Peripheral Component Interconnect)のようなバス規格に準拠したボードとして構成される。制御ボードには、そのコンピュータ装置とのインタフェース回路、プリントエンジン16とのインタフェース回路、制御ボードで実行する制御手順を記述したプログラムを記憶したROM(リード・オンリー・メモリ)やEEPROM(Electrically Erasable Programmable ROM)などの記憶装置、そのプログラムを実行するプロセッサ、プログラム実行時に利用されるワークメモリ(例えばRAM(ランダム・アクセス・メモリ))などが搭載される。
次に、図4を参照して、クライアントジョブ処理部140の処理手順の一例を説明する。この手順は、プリントコントローラシステム14に接続されたプリントエンジン16ごと(すなわちエンジンコントローラ部ごと)について、それぞれ実行される。
この手順では、クライアントジョブ処理部140は、スプール142内に未処理のジョブが存在するか否かを判定する(S100)。プリントエンジン16が複数接続されている場合、スプール142にはエンジン16ごとにキューが形成されており、ステップS100では、当該手順に対応するエンジン16のキューにジョブがあるかどうかを調べる。
ステップS100でキューにジョブが存在すると判定した場合、クライアントジョブ処理部140は、キューの先頭のジョブを取得する(S102)。このとき、そのジョブのPDLデータのRIP処理が未だ行われていなければ、RIP処理を開始する。先頭のジョブを取得すると、その手順が対象としているエンジンコントローラ部150に対してジョブ開始通知を送信する(S104)。このジョブ開始通知には、印刷条件の情報が含まれる。
このジョブ開始通知に応じて、エンジンコントローラ部150からはジョブ開始応答が返される。このジョブ開始応答には、エンジンコントローラ部150が割り当てたジョブID及び連結番号が含まれる。クライアントジョブ処理部140は、そのジョブ開始応答を受信し(S106)、その応答に含まれるジョブID及び連結番号を、ジョブ管理テーブル144における当該ジョブの、コントローラ内でのジョブ識別情報22の欄に記憶する(S108)。
ジョブ開始応答を受信した後、クライアントジョブ処理部140は、RIP処理により得られた当該ジョブの各ページの画像データを、順番にエンジンコントローラ部150に渡す。そして、ジョブを構成する全ページの画像データをエンジンコントローラ部150に渡し終えた場合には(ステップS110の判定結果が肯定(Y))、クライアントジョブ処理部140は、エンジンコントローラ部150に対してジョブ終了通知を送信する(S112)。
この実施の形態では、クライアントジョブ処理部140からエンジンコントローラ部150へ送るジョブ終了通知には第1段階と第2段階の2種類がある。第1段階のジョブ終了通知は、後続するジョブが現に存在する又は近く現れる可能性があることを示すものである。ステップS112ではこの第1段階のジョブ終了通知が送信される。なお、エンジンコントローラ部150は、第1段階のジョブ終了通知を受けただけではプリントエンジン16に対してジョブ終了通知を送信しない。更にその後に第2段階のジョブ終了通知を受けて初めて、エンジンコントローラ部150はプリントエンジン16にジョブ終了通知を送信する。
ステップS112の後、クライアントジョブ処理部140は、当該手順の処理対象であるプリントエンジン16に関して連結モードに移行する(S114)。既に当該プリントエンジン16に関して連結モードに入っている場合は、連結モードを維持する。この後、処理はステップS100に戻り、スプール142に当該プリントエンジン16宛のジョブがあるかどうかを調べる。
ステップS100で、スプール142内に当該プリントエンジン16宛のジョブがない場合には、クライアントジョブ処理部140は、当該プリントエンジン16に関するモードが連結モードであるかどうかを判定する(S120)。連結モードでなければ、ステップS100に戻り、所定時間の経過後に再びスプール142内に当該プリントエンジン16宛のジョブがあるかどうかを調べる。
ステップS120で連結モードと判定された場合には、クライアントジョブ処理部140は、当該プリントエンジン16が現在出力している実ジョブの印刷結果の最終ページが排出されるタイミング(排出終了タイミングと呼ぶ)が到来したかどうかを判定する(S122)。この実施の形態では、エンジンコントローラ部150がプリントエンジン16に対して、実ジョブ単位ではなく仮想ジョブ単位でジョブの区切りを通知しているので、プリントエンジン16は、仮想ジョブは認識しているが実ジョブは認識していない。そこで、排出終了タイミングが到来したかどうかは、クライアントジョブ処理部140が判定する。
この判定では、例えば、ジョブ終了通知(S112)を発した後、タイマーにより時間計測を開始し、タイマーが計測した時間がしきい値時間以上となった場合に、排出終了タイミングが到来したと判定してもよい。しきい値時間は、固定値でもよいが、当該ジョブで印刷する総ページ数(ジョブのページ数×部数)に応じた値としてもよい。
また、タイマーの計測開始のタイミングは、ジョブ終了通知の発行時点に限定されるわけではない。例えば、プリントエンジン16が印刷結果を1枚排出するごとに排出終了通知をプリントコントローラシステム14に送信する場合、クライアントジョブ処理部140は、その排出終了通知をカウントすることで、ジョブの総ページ数の内の何ページ目までの排出が完了したかを把握できる。したがって、例えば、ジョブの最後の排出ページから所定ページ数だけ前のページの排出完了を検知した時点からタイマーによる時間計測を開始してもよい。この場合、しきい値時間は固定値でよい。
いずれの場合も、タイマーは、ステップS100でスプール142にジョブがあると判定された場合に、初期値0にリセットされる。
ステップS122で排出終了タイミングが到来していないと判定した場合は、ステップS100に戻る。
一方、到来したと判定した場合には、クライアントジョブ処理部140は、エンジンコントローラ部150に対して第2段階のジョブ終了通知を送信する(S124)。この第2段階のジョブ終了通知は、後続のジョブがないことを示しており、この通知を受けたエンジンコントローラ部150はプリントエンジン16に対してジョブ終了通知を送信する。
ステップS124の後、クライアントジョブ処理部140は、当該プリントエンジン16の連結モードを解除する(S126)。そして、処理はステップS100に戻る。
次に、図5及び図6及び図7を参照して、エンジンコントローラ部150の処理手順の例を説明する。まず、図5を参照して、ジョブ受け入れ制御の例について説明する。
エンジンコントローラ部150は、クライアントジョブ処理部140からジョブ開始通知が到来するのを待つ(S200)。ジョブ開始通知が到来すると、プリントエンジン16が現在実行中のジョブが存在するかどうかを判定する(S202)。
存在しなければ、エンジンコントローラ部150は、新たなジョブIDを生成し、連結番号を初期値(例えば1)にリセットする(S204)。そして、そのジョブIDと連結番号とを含んだジョブ開始応答をクライアントジョブ処理部140に返す(S210)とともに、到来したジョブ(ジョブIDと連結番号の組)をキュー152の末尾に追加する(S212)。
ステップS202でプリントエンジン16が実行中のジョブがあると判定した場合、エンジンコントローラ部150は、到来したジョブが実行中のジョブに連結可能かどうかを判定する(S206)。この判定は、ジョブ開始通知に含まれる到来したジョブの印刷条件と、実行中のジョブの印刷条件と、連結条件記憶部154に記憶された判定条件とに基づき行う。
ステップS206で連結可能と判定した場合、エンジンコントローラ部150は、ジョブIDは変更せずに連結番号を1増加させる(S208)。そして、そのジョブIDと連結番号とを伴うジョブ開始応答をクライアントジョブ処理部140に返し(S210)、そのジョブIDと連結番号の組をキュー152の末尾に追加する(S212)。
ステップS206で連結不可と判定した場合、エンジンコントローラ部150は、クライアントジョブ処理部140から第1段階のジョブ終了通知が受信済みであるか否かを判定する(S214)。この判定は、図7の手順のステップS242でセットされ、ステップS246でリセットされる第1段階フラグを参照して行えばよい。第1段階のジョブ終了通知を未受信であれば、所定時間待って再度ステップS214の判定を行う。そして、第1段階のジョブ終了通知が受信済みとなれば、プリントエンジン16にジョブ終了通知を送る(S216)。このジョブ終了通知には、プリントエンジン16が実行中のジョブのジョブIDが含まれる。なお、この時点では、その「実行中のジョブ」はプリントエンジン16ではまだ印刷が完了していないので「実行中」であるが、クライアントジョブ処理部140では処理が終了している。
また、ステップS206で連結不可と判定した場合、エンジンコントローラ部150は、新たなジョブIDを生成して連結番号をリセットし(S204)、そのジョブIDと連結番号とを伴うジョブ開始応答をクライアントジョブ処理部140に返す(S210)。また、そのジョブIDと連結番号の組をキュー152の末尾に追加する(S212)。
次に、図6を参照して、ジョブ実行制御の例について説明する。この処理では、エンジンコントローラ部150は、プリントエンジン16がジョブ(仮想ジョブ)を実行していない間は、定期的にキュー152にジョブがあるかどうかを調べる(S220)。あれば、キューの先頭のジョブを取得する(S222)。そして、プリントエンジン16が現在実行中のジョブがあるかどうかを判定し(S224)、無ければ、プリントエンジン16に対してジョブ開始通知を送信する(S232)。このとき送信されるジョブ開始通知には、当該ジョブのジョブIDの情報が含まれる。ただし、連結番号の情報は含まれない。また、印刷条件の情報もプリントエンジン16に送られる。そして、このジョブ開始通知の後、当該ジョブの各ページの画像データを順番にプリントエンジン16に送信する(S234)。
ステップS224で実行中のジョブがあると判定された場合、エンジンコントローラ部150は、プリントエンジン16が実行中のジョブ(ここでは実ジョブ)を終えるのを待つ(S226)。例えば、プリントエンジン16から1枚ごとにプリント終了(すなわち1枚の印刷結果を排出完了)の通知が来る場合、エンジンコントローラ部150は、その通知の受信回数をカウントし、カウント値がクライアントジョブ処理部140から受け取った当該ジョブの出力枚数(これは印刷条件に基づきエンジンコントローラ部150が計算してもよい)に達した時点でジョブが終了したと判定すればよい。なお、カウント値が出力枚数に達してから次の実ジョブの画像データ転送を開始したのではプリントエンジン16の空転時間が長くなりすぎる場合には、出力枚数から所定枚数を引いた値にカウント値が達した時点を基準にジョブ終了のタイミングを推定(例えばその時点から所定時間が経過した時点でジョブ終了と推定するなど)してもよい。
プリントエンジン16が実行中の実ジョブが終了すると、エンジンコントローラ部150は、ジョブ終了通知をクライアントジョブ処理部140に送信する(S228)。この通知には、当該実ジョブのジョブIDと連結番号の組が含まれる。
また、エンジンコントローラ部150は、ステップS222で取得した先頭ジョブのジョブIDとステップS226で終了したと判定したジョブのジョブIDとが同じか否かを判定する(S230)。同じでなければ、その先頭ジョブは実行中のジョブに連結できないジョブであるということなので、その先頭ジョブのジョブIDを含んだジョブ開始通知をプリントエンジン16に送信(S232)したのち、当該ジョブの各ページの画像データを順番にプリントエンジン16に送信する(S234)。
また、ステップS230で先頭ジョブと終了したジョブのジョブID同士が一致した場合は、エンジンコントローラ部150は、ステップS232をスキップし(すなわちジョブ開始通知を送らない)、当該ジョブの各ページの画像データを順番にプリントエンジン16に送信する(S234)。この場合、プリントエンジン16は、終了したジョブとその先頭ジョブとを同じジョブと認識する。
次に、図7を参照して、エンジンコントローラ部150がプリントエンジン16にジョブ終了通知を送る処理の例を説明する。
この手順では、エンジンコントローラ部150は、クライアントジョブ処理部140から第1段階のジョブ終了通知を受け取るのを待つ(S240)。第1段階のジョブ終了通知を受け取ると、第1段階フラグをセット(オン)する(S242)。そして、クライアントジョブ処理部140から第2段階のジョブ終了通知を受け取るのを待つ(S244)。第2段階のジョブ終了通知を受け取ると、プリントエンジン16に、当該ジョブのジョブIDを含んだジョブ終了通知を送る(S246)。そして、第1段階フラグをリセット(オフ)し(S246)、ステップS240に戻る。
以上、クライアントジョブ処理部140及びエンジンコントローラ部150が実行する処理手順の一例を説明した。
次に、このようなクライアントジョブ処理部140及びエンジンコントローラ部150からなるシステムの動作の具体例を説明する。
図8の例では、(1)まずクライアント12a(図1参照)がプリントコントローラシステム14にジョブを送信する。この時点では、プリントコントローラシステム14及びプリントエンジン16はジョブを実行していないものとする。すると、クライアントジョブ処理部140は、そのジョブをスプール142及びジョブ管理テーブル144に登録すると共に、(2)エンジンコントローラ部150に対してジョブ開始通知を送信する。この通知には、そのジョブの印刷条件が含まれている。この通知を受けたエンジンコントローラ部150は、そのジョブに対して新たなジョブIDとして値Nを付与し、(3)ジョブID=Nと連結番号=1を含んだジョブ開始応答をクライアントジョブ処理部140に返す。なお、エンジンコントローラ部150は、ジョブ開始通知と共に受け取った印刷条件を、後の連結可否の判定のために記憶する。また、この時点ではプリントエンジン16はジョブを実行していないので、エンジンコントローラ部150は、(4)ジョブID=Nを含んだジョブ開始通知をプリントエンジン16に送り、その後そのジョブの各ページの画像を順にプリントエンジン16に送信して印刷させる。
クライアントジョブ処理部140は、そのジョブ(ジョブID=N,連結番号=1)のRIP処理が完了し、そのジョブの全ページの画像をエンジンコントローラ部150に渡し終わると、(5)後続のジョブが存在する可能性があることを示した第1段階のジョブ終了通知をエンジンコントローラ部150に送信する。
その後、(6)クライアント12bがクライアントジョブ処理部140に対してジョブを送信する。このジョブは、プリントエンジン16が実行中のジョブの印刷出力を完了する時点で次のジョブの画像データを供給できるようなタイミングまでにクライアントジョブ処理部140に到達したとする。この場合、(7)クライアントジョブ処理部140は、エンジンコントローラ部150にジョブ開始通知を送信する。エンジンコントローラ部150は、その通知と共に送られてきた印刷条件と、記憶している実行中のジョブの印刷条件と、連結条件記憶部154に記憶された判定条件とに基づき、実行中のジョブに対して今回到来したジョブが連結可能か否かを判定する。図8の例では、連結可能と判定されたとする。
この場合、エンジンコントローラ部150は、ジョブIDはNのままで連結番号を2に変更し、(8)それらジョブIDと連結番号を含んだジョブ開始応答をクライアントジョブ処理部140に返す。
(9)プリントエンジン16からの1枚ごとのプリント終了通知に基づき、実行中の実ジョブ(ジョブID=N,連結番号=1)の印刷出力が全て完了したとエンジンコントローラ部150が判定すると、(10)エンジンコントローラ部150は、クライアントジョブ処理部140に対してそのジョブについてのジョブ終了通知を送信する。また、エンジンコントローラ部150は、既に到来している次の実ジョブ(ジョブID=N,連続番号=2)の画像データをプリントエンジン16に送る。
クライアントジョブ処理部140は、ジョブID=N,連結番号=2のジョブの全ページの画像をエンジンコントローラ部150に渡し終わると、(11)第1段階のジョブ終了通知をエンジンコントローラ部150に送信する。
その後、プリントエンジン16が実行中のジョブ(ジョブID=N,連続番号=2)の印刷出力を完了する時点で次のジョブの画像データを供給できるタイミングまでには次のジョブがクライアントジョブ処理部140に到来しなかったとする。この場合、(12)クライアントジョブ処理部140は、第2段階のジョブ終了通知をエンジンコントローラ部150に送る。(13)これを受けたエンジンコントローラ部150は、実行中のジョブのジョブID=Nを含んだジョブ終了通知をプリントエンジン16に送信する。
この後、エンジンコントローラ部150は、(14)プリントエンジン16からの1枚ごとのプリント終了通知に基づき、実行中の実ジョブ(ジョブID=N,連結番号=2)の印刷出力が全て完了したと判定すると、(15)クライアントジョブ処理部140に対してそのジョブについてのジョブ終了通知を送信する。
次に、別の例を説明する。図9の例のうち(1)〜(7)の流れは図8の例と同じである。この例では、段階(7)の開始通知に係るジョブが実行中のジョブに連結できないと判定される。この場合、(8)エンジンコントローラ部150は、プリントエンジン16に対して実行中のジョブのジョブID=Nを含んだジョブ終了通知を送信する。(9)また、段階(7)の開始通知に係るジョブに対して新たなジョブID=Mを付与すると共に、連結番号を1にリセットし、それらジョブID=M,連結番号=1を含んだジョブ開始応答をクライアントジョブ処理部140に返す。
エンジンコントローラ部150は、(10)プリントエンジン16からのプリント終了通知に基づき、実行中の実ジョブ(ジョブID=N,連結番号=1)の印刷出力が全て完了したと判定すると、(11)クライアントジョブ処理部140に対してそのジョブについてのジョブ終了通知を送信する。(12)また、エンジンコントローラ部150は、既に到来している次の実ジョブ(ジョブID=M,連続番号=1)のジョブIDを含んだジョブ開始通知をプリントエンジン16に送り、その後当該ジョブの画像データをプリントエンジン16に送る。
クライアントジョブ処理部140は、ジョブID=M,連結番号=1のジョブの全ページの画像をエンジンコントローラ部150に渡し終わると、(13)第1段階のジョブ終了通知をエンジンコントローラ部150に送信する。
その後、プリントエンジン16が実行中のジョブ(ジョブID=M,連続番号=1)の印刷出力を完了する時点で次のジョブの画像データを供給できるタイミングまでには次のジョブがクライアントジョブ処理部140に到来しなかったとする。この場合、(14)クライアントジョブ処理部140は、第2段階のジョブ終了通知をエンジンコントローラ部150に送る。(15)これを受けたエンジンコントローラ部150は、実行中のジョブのジョブID=Mを含んだジョブ終了通知をプリントエンジン16に送信する。
この後、エンジンコントローラ部150は、(16)プリントエンジン16からの1枚ごとのプリント終了通知に基づき、実行中の実ジョブ(ジョブID=M,連結番号=1)の印刷出力が全て完了したと判定すると、(17)クライアントジョブ処理部140に対してそのジョブについてのジョブ終了通知を送信する。
この実施の形態では、クライアントジョブ処理部140は、ジョブ管理テーブル140の情報を利用することで、ジョブステータスの表示画面として、連結されたジョブをそうでないジョブと区別して表示した画面を生成することができる。すなわち、ジョブ管理テーブル140には、各ジョブについて、エンジンコントローラ部150が付与したジョブIDと連結番号との組が登録されており、ジョブIDが等しいジョブ同士は連結されていると判定することができる。そこで、ジョブIDが等しいジョブ同士を図10に例示するように、同じ表示形態(ただし、その他のジョブの表示形態とは異なる)で表示する。図10の例では、文書1と文書2が連結されていることが分かる。この表示画面は、例えばプリントコントローラシステム14に付属する表示装置に表示される。
以上に説明した実施の形態では、プリントコントローラシステム14の機能をクライアントジョブ処理部140とエンジンコントローラ部150との2階層に分け、プリントエンジン16の機種に依存する連結可否の判定はエンジンコントローラ部150で実行するようにした。このため、クライアントジョブ処理部140は、接続されるプリントエンジン16の機種を意識する必要ない。すなわち、複数の機種のプリントエンジン16が接続される場合でも、クライアントジョブ処理部140は共通の処理を実行すればよい。
以上では、エンジンコントローラ部150に接続されたプリントエンジン16がジョブを1つずつしか受け付けない仕様である場合を例にとって説明したが、これは一例に過ぎない。ジョブを複数受け付けるタイプ(すなわちジョブを実行中に他のジョブを受け付け可能なタイプ)のプリントエンジン16がプリントコントローラシステム14に接続されている場合でも、そのプリントエンジン16がジョブ間でサイクルダウン及びサイクルアップを行うものであれば、同様の処理を行えばよい。なお、接続されているプリントエンジン16が、ジョブを複数受け付け且つジョブ間でサイクルダウン及びサイクルアップを行わないタイプのものである場合については、そのような処理は行わなくてもよい。
以上に例示した実施の形態におけるプリントコントローラシステム14は、例えば、汎用のコンピュータに上述の各機能モジュールの処理を表すプログラムを実行させることにより実現される。ここで、コンピュータは、例えば、ハードウエアとして、図11に示すように、CPU1000等のマイクロプロセッサ、ランダム・アクセス・メモリ(RAM)1002およびリード・オンリー・メモリ(ROM)1004等のメモリ(一次記憶)、HDD(ハードディスクドライブ)1006を制御するHDDコントローラ1008、各種I/O(入出力)インタフェース1010、ローカル・エリア・ネットワークなどのネットワークとの接続のための制御を行うネットワークインタフェース1012等が、たとえばバス1014を介して接続された回路構成を有する。また、そのバス1014に対し、例えばI/Oインタフェース1010経由で、CDやDVDなどの可搬型ディスク記録媒体に対する読み取り及び/又は書き込みのためのディスクドライブ1016、フラッシュメモリなどの各種規格の可搬型の不揮発性記録媒体に対する読み取り及び/又は書き込みのためのメモリリーダライタ1018、などが接続されてもよい。上に例示した各機能モジュールの処理内容が記述されたプログラムがCDやDVD等の記録媒体を経由して、又はネットワーク等の通信手段経由で、ハードディスクドライブ等の固定記憶装置に保存され、コンピュータにインストールされる。固定記憶装置に記憶されたプログラムがRAM1002に読み出されCPU1000等のマイクロプロセッサにより実行されることにより、上に例示した機能モジュール群が実現される。なお、それら機能モジュール群のうちの一部又は全部を、専用LSI(Large Scale Integration)、ASIC(Application Specific Integrated Circuit、特定用途向け集積回路)又はFPGA(Field Programmable Gate Array)等のハードウエア回路として構成してもよい。
10 ネットワーク、12a,12b クライアント、14 プリントコントローラシステム、16a,16b プリントエンジン、140 クライアントジョブ処理部、150a,150b エンジンコントローラ部。