以下、図面を参照しながら本発明の実施の形態に係る印刷システムについて説明する。
図1は、本発明の実施の形態にかかる印刷システムの構成を示すブロック図である。情報処理装置であり、イーサネット(登録商標)などのネットワークケーブルによって、ネットワーク106に接続されており、アプリケーションプログラム等の各種のプログラムを実行可能であり、印刷データをプリンタに対応するプリンタ言語に変換する機能を有するプリンタドライバを搭載している。また、ネットワーク106に接続されている他の機器と双方向に通信可能な通信装置を備えている。
プリンタドライバは複数のプリンタドライバをサポートするものである。また、プリンタ(入出力装置)は、電子写真方式を採用したレーザービームプリンタ、インクジェット方式を採用したインクジェットプリンタ、熱転写方式を利用したプリンタ等の様々な方式のもののうち何れであってもよい。
101はホストコンピュータであるサーバ(以下、プリントサーバと呼ぶ)としての情報処理装置である。プリントサーバ101はネットワークケーブルによってネットワーク106に接続されており、ネットワーク106で使用されるファイルを蓄積したり、ネットワーク106の使用状態を監視したりする。また、プリ出力方法指定部701ントサーバ101は、ネットワーク106に接続されている他の機器と双方向に通信可能な通信装置を備えており、複数のプリンタの管理も行っている。
クライアント102〜104及びプリントサーバ101は一般的な情報処理装置である。プリントサーバ101は、クライアント102〜104としての機能を併せて持つこともできる。クライアント及びプリントサーバには、それぞれ異なる制御を行う印刷制御プログラムが実行可能に格納されている。
プリントサーバ101は、さらにクライアント102、103、104から印刷要求が出された印字データを含む印刷ジョブを格納して印刷したり、または、クライアント102、103、104から印字データを含まないジョブ情報のみを受け取ってクライアント102、103、104の印刷順序を管理し、印刷の順番が来たクライアントに対して印字データを含む印刷ジョブの送信許可を通知したり、ネットワークプリンタ105のステータスや印刷ジョブの各種情報を取得してクライアント102、103、104に通知したりする機能を揃えている。
105は印刷制御装置であるネットワークプリンタであり、図示省略したネットワークインタフェースを介してネットワーク106に接続されており、クライアント102、103、104から送信される印字データを含む印刷ジョブを解析して1ページずつドットイメージに変換して、1ページ毎に印刷する。ネットワーク106にはクライント102、103、104、サーバ101、ネットワークプリンタ105等が接続されている。
図2は、図1におけるクライアントの構成を示すブロック図である。サーバ101も同様あるいは同等のハードウエア構成を有している。従って、以下にクライアントの構成についてだけ説明し、サーバ100の構成についての説明は省略する。
図2において、200はクライアント102、103、104の制御手段であるCPUであり、ハードディスク(HD)205に格納されているアプリケーションプログラム、プリンタドライバプログラム、OSや本発明のネットワークプリンタ制御プログラム等を実行し、RAM202にプログラムの実行に必要な情報、ファイル等を一時的に格納する制御を行う。
201は記憶手段であるROMであり、内部には基本I/Oプログラム等のプログラム、文書処理の際に使用するフォントデータ、テンプレート用データ等の各種データが記憶される。202は一時記憶手段であるRAMであり、CPU200の主メモリ、ワークエリア等として機能する。
203は記憶媒体読み込み手段としてのフロッピー(登録商標)ディスク(FD)ドライブである。後述する図5に示すように、このFDドライブ203を介して、記憶媒体としてのフロッピー(登録商標)ディスク(FD)204に記憶されたプログラム等をクライアントである本コンピュータシステムにロードすることができる。なお、記憶媒体はFDに限らず、CD−ROM、CD−R、CD−RW、PCカード、DVD、ICメモリカード、MO、メモリスティック等、任意である。
FD204には、コンピュータによって読み取り可能なプログラムが格納されている。
205は外部記憶手段の一つであり、大容量メモリとして機能するハードディスク(HD)であり、アプリケーションプログラム、プリンタドライバプログラム、OS、ネットワークプリンタ制御プログラム、関連プログラム等が格納されている。さらにスプーラがここに確保される。スプーラは、クライアントにおいてはクライアントスプーラであり、プリントサーバではサーバスプーラである。また、プリントサーバでは、クライアントから受けたジョブ情報を格納し、順序制御を行うためのテーブルもこの外部記憶手段に生成されて格納される。
206はキーボード(指示入力手段)であり、ユーザがクライアントに対して、また、オペレータや管理者がプリントサーバに対して、デバイスの制御コマンドの命令等を入力するものである。
207はディスプレイ(表示手段)であり、キーボード206から入力されたコマンドや、プリンタの状態等を表示するものである。
208はシステムバスであり、クライアントであるコンピュータ内のデータの流れを司るものである。
209はインタフェース(入出力手段)であり、該インタフェース209を介してクライアントは外部装置とのデータのやり取りを行う。
図3は、図2におけるRAM202のメモリマップの一例を示す図である。これは、上記のネットワークプリンタ制御プログラムがFD204からRAM202にロードされ実行可能となった状態のメモリマップである。
本実施の形態では、FD204からネットワークプリンタ制御プログラム及び関連データを直接にRAM202にロードして実行する例を示すが、これ以外にも、FD204からネットワークプリンタ制御プログラムを動作させる度に、既にHD205にインストールされているネットワークプリンタ制御プログラムをRAM202にロードするようにしてもよい。
なお、ネットワークプリンタ制御プログラムを記憶する媒体は、FD以外にCD−ROM、CD−R、PCカード、DVD、ICメモリカードであってもよい。さらに、ネットワークプリンタ制御プログラムをROM201に記憶しておき、これをメモリマップの一部となすように構成し、直接にCPU200で実行することも可能である。
また、以上の各装置と同等の機能を実現するソフトウェアをもって、ハードウェア装置の代替として構成することもできる。
また、ネットワークプリンタ制御プログラムのことを、簡単に印刷制御プログラムと呼ぶこともある。印刷制御プログラムは、クライアントにおいて印刷ジョブの印刷先の変更を指示したり、印刷順序の変更を指示したりするための制御を行うプログラムを含み、また、プリントサーバにおいて、印刷ジョブの順序制御を行ったり、印刷ジョブの印刷終了や印刷先変更要求などを通知するためのプログラムを含んでいる。また、このような制御を行う印刷制御プログラムは、クライアントにインストールされるモジュールと、プリントサーバにインストールされるモジュールを別々に分けてもよいし、ひとつの印刷制御プログラムが、実行される環境によりクライアント用として機能したり、またはプリントサーバ用として機能したりするものでもよい。あるいは一台のコンピュータに、クライアントとして機能するモジュールと、プリントサーバとして機能するモジュールとをともにインストールし、同時に、あるいは時分割で擬似的に平行動作させる構成であってもよい。
301は基本I/Oプログラムであり、制御装置の電源がONされたときに、HD205からOSがRAM202に読み込まれ、OSの動作を開始させるIPL(イニシャルプログラムローデイング)機能などを有しているプログラムが入っている領域である。
302はオペレーティングシステム(OS)であり、303はネットワークプリンタ制御プログラムで、RAM202上に確保される領域に記憶される。304は関連データであり、これもRAM202上に確保される領域に記憶される。305はワークエリアであり、CPU200がプリンタ制御プログラムを実行する領域が確保されている。
図4は、図2におけるFD204のメモリマップの一例を示す図である。図4において、400はFD204のデータ内容であり、401はデータの情報を示すボリューム情報、402はディレクトリ情報、403は後述する印刷制御プログラムであるネットワークプリンタ制御プログラム、404はその関連データである。
403のネットワークプリンタ制御プログラムは、後述するフローチャートに基づいてプログラム化したものであり、クライアント及びサーバ双方ともに同様の構成をとっている。
図5は、図2におけるFDドライブ203、及びこれに挿入されるFD204を示す図である。図2と同一のものには同一の符号を付してある。
図5において、FD204にはネットワークプリンタ制御プログラム及び関連データが格納されている。
なお、本実施の形態では、複数のプリンタデバイスの夫々に対応する個々のプリンタドライバに対して一元的な印刷設定の指示が可能であり、且つ、後述するDe−Spoolerが各プリンタドライバに描画命令を通知する為の中間形式ファイルを生成する為の基データ(中間形式データ)を生成するドライバをグループプリンタドライバと呼ぶ。また、プリンタデバイスに依存した個々のプリンタドライバをメンバプリンタドライバと呼ぶ。
図6は、クライアントから発行された印刷ジョブが印刷ジョブ制御システムにおいてどのように処理されるかを示す図である。図6において、600はクライアントマシンで、印刷ジョブ制御システムのクライアントモジュールが動作するマシンを指す。
通常、Microsoft Word(登録商標)などの一般的なアプリケーションから印刷が指示されると、アプリケーションプログラムはOSのグラフィック機能を介して一連の描画命令を生成させ、この描画命令をプリンタドライバ経由でWindows(登録商標)Spooler604に渡す。Windows(登録商標) Spooler604は、ユーザが選択したポートモニタにプリントジョブデータを渡してプリンタデバイス650に送信させる手順をとる。
ユーザはあらかじめ印刷ジョブ制御システム用のポートモニタ621(以降、ジョブ制御ポートモニタ)を指定して印刷を指示する。アプリケーションプログラム601は一連のOSを介して描画命令を生成する。
描画命令を受け取ったグループプリンタドライバ603は中間形式ファイルを生成する為の中間形式データを生成し、ジョブ制御ポートモニタ621にプリントジョブデータとして送信する。ジョブ制御ポートモニタ621はプリントジョブデータを印刷ジョブ制御システム用プリントサービス622(以降、ジョブ制御プリントサービス)に送信する。ジョブ制御プリントサービス622は、ジョブ制御サーバ630の管理するジョブ/デバイスの状態を管理する機能を備える。更に、デバイスとクライアントとがピアツーピア接続環境で互いに動作するような場合には、ジョブ制御プリントサービス622はデバイスから通知されるデバイス状態やジョブの状態などの情報を管理したり、また、デバイスに対して所定の命令を出したりする機能も備える。これは、複数のプリンタデバイス650のデバイス情報やジョブ情報を管理する機能に相当する。
印刷ジョブ制御システム用のプリントマネージャ623(以降、ジョブ制御プリントマネージャ)は、ユーザがジョブ制御プリントサービス622内部でプリントジョブがどのような状態にあるかを調べたり、プリントジョブを操作したりするためのユーザインタフェース(UI)を提供するプログラムである。
ジョブ制御プリントマネージャ623はジョブ制御プリントサービス622のソフトウェアのインタフェース(API)を介して、ジョブ制御プリントサービス622と情報の送受信を実行し、主に、ジョブ制御プリントサービス622が管理する外部のプリンタデバイスの状態の情報をイベントとして取得する機能を備える。イベントの通知の種別としては、トナー残量が少なくなったことの警告、クライアントとデバイスとの間の通信障害、メモリ不足、排紙トレー満載等のエラー/警告情報の通知や、エラー状態から正常状態に復帰した正常情報の通知などが想定される。
印刷ジョブ制御システム用サーバ630(以降、ジョブ制御サーバ)は、個々のクライアント600上のジョブ制御プリントサービス622がプリンタデバイス650にプリントジョブデータを送信するタイミングを集中制御(スケジューリング)している。また、ジョブ制御サーバ630はネットワークを介して通信可能な各デバイス(印刷装置)の印刷実行中、電力制御状態、障害情報(紙ジャム)等のステータスを監視し、ジョブ制御プリントサービス622にイベントを通知する機能を備える。ここで、プリンタステータスの状態変化の監視について、ジョブ制御プリントサービス622は直接に状態の変化の通知(イベント)をプリンタデバイスから取得することもできる。
印刷ジョブ制御システム用のマネージメントコンソール633(以降、ジョブ制御マネージメントコンソール)は、ジョブ制御サーバ630が持つソフトウェアがアクセスするためのAPIを介してジョブ制御サーバ630と情報・指示をやり取りすることで、印刷ジョブ制御システム全体を監視することができる。
また、ジョブ制御サーバ630はデバイス情報コントロールモジュール631を用いて各プリンタデバイス650と通信を行い、各プリンタ内の印刷ジョブや動作状態に関する情報を入手したり、操作を行ったりする。入手した情報はクライアント600側のジョブ制御プリントサービス622に渡すことができる。
次に本実施の形態におけるグループプリンタドライバ603からの印刷について説明する。
グループプリンタドライバ603はアプリケーションプログラムが生成した一連の描画コマンドを、上に説明した中間形式データを生成する。この中間形式データはジョブ制御プリントサービス622によってプリンタデバイスの種類に依存しない中間フォーマットのファイルである中間形式ファイルに変換される。この中間形式ファイルの構成については後述する。
この中間形式ファイルは前述したようにWindows(登録商標) Spooler604からジョブ制御ポートモニタ621を経て(a)、ジョブ制御プリントサービス622に導かれる(b)。ジョブ制御プリントサービス622はこのプリントジョブに対して行うジョブ制御の種類に応じて、中間形式ファイルをもとに描画コマンドを生成し(c)、続いてPDLドライバ602がその描画コマンドをPDLファイルにして、プリンタデバイス650が解釈可能にする。図6に示す例では、ジョブ制御プリントサービス622がこのプリントジョブに対してプリントジョブを2つに分けるジョブ制御を行っており、2つのメンバジョブが生成されたことを2つの矢印(c)で示している。
本実施の形態においては、上に説明したようにジョブ制御サービス622を介して分散印刷処理が行なわれ中間形式ファイルを元に生成された2つのメンバジョブを「子ジョブ1」、「子ジョブ2」と呼ぶ。また、「子ジョブ1」、「子ジョブ2」の基になる中間形式ファイルに対応させた仮想ジョブのことを「親ジョブ」と呼ぶ。
PDLドライバ602で生成されたPDLファイルはWindows(登録商標)Spooler604、ジョブ制御ポートモニタ621を経て(d)、再びジョブ制御プリントサービス622に渡される(e)。ジョブ制御プリントサービス622は、ジョブ制御サーバ630の指示に従ってPDLのプリントジョブデータをプリンタデバイス650に送信する(f)。
ジョブ制御プリントサービス622は、中間形式ファイル中の印刷指示書の指示にしたがって、一つの中間形式ファイルを複数のプリントジョブに論理的に分割してそれぞれ別のプリンタデバイスに送信したり、一度送信したプリントジョブデータを別のプリンタデバイスに送信し直したりする。図6中の(c)、(d)、(e)、(f)はそのような場合のプリントジョブデータの経路を示している。
図7は、中間形式ファイルの構成の一例を示す図である。
本実施の形態で使用される中間形式ファイルは、印刷指示部7aと、ドキュメントデータ部7bとからなる。印刷指示部は、ドキュメントの情報と印刷指示を記述した部分である。また、ドキュメントデータは、アプリケーションのデータを汎用的な形式のデータに変換したものであり、プリンタ言語に依存しないデータフォーマットとなっている。
印刷指示部はヘッダ部、ページ情報部、印刷体裁指示部、出力方法指定部701、グループプリンタドライバ設定情報部、メンバプリンタ数、メンバプリンタドライバ名702及び703、メンバプリンタドライバ設定情報部などから構成されている。
ヘッダ部は本ファイルのバージョン識別やファイル情報などの情報を格納する部分である。
ページ情報部は、ドキュメントデータ部7bのドキュメントデータのページ数、各ページのサイズなどの情報を格納する部分である。
印刷体裁指示部は、印刷ページ範囲、印刷部数、ドキュメントデータの面付け情報(N−UPや製本印刷など)、ステイプル指示やパンチ指示など、出力体裁に関する情報を格納する部分である。
出力方法指定部701は、出力方法として、分散印刷、カラーモノクロ分散印刷、代行印刷、同報印刷などの情報を格納する部分である。
グループプリンタドライバ設定情報部は、後述するグループプリンタドライバのUIの設定情報を格納する部分である。
メンバプリンタ数はグループプリンタドライバが関連付けているメンバプリンタの数を格納する部分である。
メンバプリンタドライバ名702及び703は、メンバプリンタのプリンタドライバ名を格納する部分である。このメンバプリンタドライバ名は、出力方法指定部701で設定された出力方法を実現する為の、メンバプリンタを構成する情報であり、ここで指定されたメンバプリンタが実際のプリンタに転送する印刷データを生成する。
メンバプリンタドライバ設定情報部はメンバプリンタのドライバUIの設定情報として例えばDEVMODE情報を格納する部分である。
このメンバプリンタドライバ名とメンバプリンタドライバ設定情報部は、前述のメンバプリンタ数に格納された数だけの格納エリアを持っている。
尚、中間形式ファイルは、印刷指示部8aとドキュメントデータ部8bが分離可能な形態として処理することができるファイルであってもかまわない。その場合、印刷指示部は印刷指示書ファイルとして、ドキュメントデータ部はドキュメントデータファイルとしてそれぞれ存在し、これらを一つのアーカイブ形式でまとめて同様に一つのファイルのように扱うことも可能である。
上述の図6で説明したグループプリンタドライバ603では、中間形式ファイルを生成する際、グループプリンタドライバGUI上の設定を印刷指示部7aへ記録する。さらに、グループプリンタドライバ603はGDIで受け取ったデータを汎用的なデータに変換しドキュメントデータとして、中間形式ファイルのドキュメントデータ部に記録することとなる。
図8は、印刷システムと印刷ジョブ制御システムにおける印刷ジョブの関係及び処理の概要を示す図である。
図8において印刷システムはWindows(登録商標)によって提供されるPrintSystemである。
図8中で印刷ジョブ制御システム700は、サーバ及びクライアントの制御プログラムが動作する物理的なマシンをまたいだ、印刷ジョブ制御システムの範囲を示している。また、サーバが管理している出力ポート(Output Port)711A,Bは、クライアントのジョブ制御プリントサービス622のプロキシ出力ポート(Proxy Output Port)712A,Bと関連付けられ、ひとつのポートに関連づけられた各クライアント上のプロキシ出力ポート全てを統一的に管理している。プリントジョブデータはおのおののクライアントのプロキシ出力ポート712A,Bに保持される。
ジョブ制御サーバ630は、プリントジョブデータ自体の送信処理は行わず、ジョブ制御プリントサービス622に対して印刷ジョブの送信指示のみを行う。その指示に応じてクライアントのジョブ制御プリントサービス622はプリントジョブデータをデバイス650に送信する。
次に、印刷ジョブ制御システム700が、代行印刷、分散印刷、同報印刷などの付加価値的な印刷を行う場合の処理を説明する。
印刷ジョブ制御システム700が、代行印刷、分散印刷、同報印刷などの付加価値的な印刷を行う場合には、上述のようにユーザまたはアプリケーション601は、グループプリンタドライバ603が割り当てられたプリンタに印刷ジョブを属性情報とともに発行しなければならない。ジョブ制御プリントサービス622は、グループプリンタドライバ603によって処理されたジョブデータをジョブ制御ポートモニタ621を介して中間形式ファイルとして受け取る。ジョブ制御プリントサービス622はこのジョブを受け取り、De−Spooler701を介してPDLドライバが割り当てられた別のプリンタにジョブ(メンバジョブ)を発行して印刷を行わせる。
この時、De−Spooler701は上述の図7で説明した中間形式ファイルの印刷指示部7aを解釈し、ドキュメントデータ部7bのドキュメントデータを加工して、Windows(登録商標)のGDIに変換し、各プリンタドライバに対して印刷指示を行い印刷ジョブを発行する。例えば印刷体裁指定部に、2−UPの指示が記録されていた場合、用紙1枚に2ページ分のドキュメントデータを縮小レイアウトする。また分散印刷あるいは同報印刷の場合には、それらの設定に応じて印刷指示部7aに記述されている複数のメンバプリンタにジョブを発行する。代行印刷の場合は、代行する条件が満たされた時に、自動代行では事前の設定、手動代行ではユーザの操作に応じてメンバジョブを発行する。また、上に説明したDe−spoolerとは別のモジュールに印各メンバプリンタドライバに対応する指示情報を刷指示部7aから抽出させ、該抽出された各メンバプリンタドライバに対する印刷指示をDe−spoolerに解釈させるような形態も想定される。
また、De−spooler701は各メンバプリンタにジョブを発行する際、メンバプリンタドライバに対応する印刷指示として、各メンバプリンタのDEVMODEを作成する必要があるが、このDEVMODEは印刷指示部8aに記載された内容を適宜各メンバプリンタのDEVMODEに反映させて生成する。
クライアント側のジョブ制御プリントサービス622は、PDLドライバ602によってレンダリングされた、それぞれのメンバジョブのPDLデータをジョブ制御ポートモニタ621を介して受け取り、受け取ったジョブに関する情報をサーバ側に知らせ、ジョブデータは自身のプロキシ出力キュー(Proxy Output Port)712で一時保持する。その後、ジョブ制御サーバ630からの送信指示を受けた後にプリントデバイス650に送信する。
プリントサーバ101(ホスト側)、或いは、クライアントコンピュータが本印刷制御プログラムに対して図1〜図8に示されるようなシステムを介して印刷先設定をした場合に、図7における出力方法指定部701に分散印刷が指定された場合には、複数のメンバプリンタドライバ名702、703に基づく図6において説明した仕組みで分散印刷処理を行なう。また、出力方法指定部701に代行印刷が指定された場合には、第1に利用するように設定されたメンバプリンタドライバ名に基づくメンバプリンタにメンバジョブを発行するよう指示が行なわれ、代行印刷処理が実行される。また、カラーモノクロ分散印刷印刷、同報印刷においても同様にメンバプリンタ名の設定に基づくメンバプリンタによりメンバジョブが発行され、各々の機能を実現する。以下では、分散印刷を例に説明を行なうが、無論これに限定されるものではなく、様々な出力方法指定部において指定された印刷方法に本発明が適用可能であることはいうまでもない。
分散印刷システムはジョブ制御プリントサービス622の指示に従いPDLドライバ602にてジョブの分割処理を行い、印刷ジョブ作成モジュールを実行することにより、設定された分散割合にて子ジョブを作成し(ステップS1001)、ジョブ印刷モジュールを実行することにより、各々を分散印刷を実行する(ステップS1002)。
ジョブ印刷モジュールとしては、上に説明した図7の印刷ジョブ制御システム700やジョブ制御プリントサービス622を相当させることができる。
以下では、分散ジョブとして「子ジョブ1」、「子ジョブ2」、及び「子ジョブ3」の3つの画像形成装置(夫々プリンタA、プリンタB、プリンタC)を利用した分散印刷処理を説明する。また上にも説明したように、「子ジョブ1」、「子ジョブ2」、「子ジョブ3」の基になる中間形式ファイルに対応させた仮想ジョブのことを「親ジョブ」と呼ぶこととする。先に説明した図9の「親ジョブ」、「子ジョブ1」、「子ジョブ2」の表示は、ステップS1001で生成される各子ジョブに夫々対応するものとなる。
分散印刷先では印刷ジョブの属性情報(印刷続行不能と考えられる障害が発生していないかなど)を判断し、印刷が正常に実行できる状態であることの確認処理を経てから必要に応じて分散先情報の転送が行われる。
転送においては、ジョブ制御プリントサービス622は印刷ジョブを追跡管理する為に中間形式ファイル識別子(親ジョブの識別子)をキーにして分散先情報を保持する。この分散先情報には分散された頁記述言語の印刷ジョブ識別子(子ジョブの識別子)も含まれ、これらはメモリ上に保持される他に、作成された中間形式ファイルに付属して補助記憶装置などにも併せて保持(付属情報)される。
子ジョブの識別子および親ジョブの識別子には夫々付属情報としてのステータス(スプール中、稼動中、印刷中止、印刷正常終了等、図6のジョブプリント制御サービス622とジョブ制御サーバ630の間のステータスの送受信)が割り当てられており、該ステータスはプリンタデバイスから通知されてくるイベントの監視によって更新される。
ステップS1004では、HD205に保持される印刷ジョブのデータとしての中間形式ファイルのデータが、この中間形式ファイルのデータに基づくメンバジョブのプリンタにおける印刷出力完了が確認されたことに応じて、保持を制御する手段により開放される。
具体的には、分散印刷において発行されたメンバジョブである子ジョブの各々のステータスが印刷正常終了になり印刷完了が確認された場合に親ジョブのステータスが正常終了となる。親ジョブのステータスが終了となることに応じて親ジョブのデータ(中間形式ファイル)の開放処理(削除処理)が実行される(ステップS1004に対応)。ここで、子ジョブのステータスの取得方法としては、例えば、印刷データ発行側(クライアント或いはサーバ)によるポーリングでも良いし、プリンタからの印刷出力完了を監視するような形態でも良い。
さらに、付属情報には分散印刷の際の各分散ジョブの頁範囲の情報や、何頁まで印刷が正常に終了したかの情報および、ファイル作成日時情報などが含まれている。この親ジョブ及び子ジョブの状態やプリンタデバイスの状態の監視及び管理は、例えば、上に説明したジョブ制御プリントサービス622により行なわれる。本実施形態における仕組みには、この付属情報を管理する仕組みを備えることにより、ステップS1004や、後述する図11の処理や、図9のUIの提示を可能としている。
複数の子ジョブのステータスに基づき親ジョブの終了が認識されると(ステップS1003)、中間形式ファイル及びそれに関連する付属情報(親ジョブ及び子ジョブの付属情報を含む)は解放される(ステップS1004)。ステップS1004における親ジョブの開放処理は複数の子ジョブ(分散ジョブ)がすべて正常に終了したことに対応する。
ステップS1003にて親ジョブの終了が印刷システムによって認識されないままの段階で、なんらかの不具合によりホスト側が電源OFFなどに陥った場合は、次回ホスト起動時に伴い印刷制御プログラムが起動した際に復元印刷処理が起動する(図11)。
復元印刷処理が起動される場合としては、印刷制御プログラムがメンバジョブの印刷出力の完了を認識しないまま、印刷制御プログラムが終了し、再度起動する場合に対応するが、このような事態が発生するケースとしては、印刷制御プログラムが仮想するコンピュータの突然の電源OFFの他に、オペレーティングシステムのフリーズ、印刷制御プログラムが強制終了する場合などが想定される。
以下、印刷制御プログラムがメンバジョブの印刷出力の完了を認識しないまま、印刷制御プログラムが終了し、再度起動する場合に実行される、復元処理並びに復元ジョブの有効確認処理について説明する。
図11は、復元ジョブの有効確認処理のフローである。
図12は、保持手段(HD205)に保持される印刷ジョブのデータに関連付けられ、ジョブ制御プリントサービス622が起動時に読み込む再印刷設定の一例である。
まず、図12について説明を行なうと、キー“ShowList”の値が0の場合は、復元ジョブを表示しない。また、キー“SaveDays”の値が−1の場合は、ジョブを無効化しない。0以上の場合は経過日数によりジョブを無効化するか判断する。これらの情報は管理者によって各種の情報を記載され、ファイルとしてHD205に保存、または、メモリ上に保存、または、外部記録装置に保存される。
次に復元印刷処理を、図11のフローチャートに基づき説明する。
まず、ステップS1101では、例えばPCの再起動等で、スタートメニューに登録されたジョブ制御プリントサービス622が再起動すると、図12に例示したジョブ制御プリントサービス情報設定ファイルを読み込み、各種初期化を行う。
そしてステップS1102では、キー“ShowList”の値を読み込み、復元ジョブを表示するかしないか判断する。
ここでは、ShowList=0の場合は、復元ジョブの表示を行わない。0以外の場合は復元ジョブ表示するために、中間形式ファイルを検索する。尚、ShowList=0の場合に復元ジョブの表示を行なわないように説明をしたが、ShowListの値としては「0」に限定されるものではなく、復元ジョブの表示、或いは、復元上に係る処理を行なわないということを本印刷制御プログラムが認識可能なものであれば、適宜任意の値を採用することができる。
また、親ジョブの終了がなされないまま、即ち印刷未終了の子ジョブが存在するか否かの判断は、付属情報を参照することによりなされる。印刷未終了の子ジョブが存在するということは、中間形式ファイルが残っていることに対応し、印刷未終了の子ジョブに対応する中間形式ファイル(親ジョブ)の探索を実行し(ステップS1103)、終了通知を受信せずに障害にあった可能性がある子ジョブを中間形式ファイルから再生成して復元ジョブとして管理する。
尚、印刷終了についてはデバイスからの印刷完了通知に基づくものであってもよいが、印刷ジョブをホストコンピュータからデバイスに転送終了したことに基づくものであることが実際には想定される。
ステップS1104では、復元ジョブが見つかった場合、情報設定ファイルからキー“SaveDays”の値を読み込み、現在時刻と比較しジョブが有効か判断する。例えば、SaveDays=2の場合、現時刻とファイル作成日を秒単位で比較し、差が172800秒(2日)を越えていた場合、有効期間を超えていると判断する。
ステップS11404でYESと判断され、有効期間内の場合は、ステップS1105で、図9のUIを表示する。
図9は、印刷システムの部分印刷機能のページ指定を示すGUIを例示する図であり、既に説明したプリントマネジャー623により実現される。図9においては「子ジョブ1」、「子ジョブ2」が未終了のままでホストコンピュータの電源が遮断されるなど、印刷が完了したか否かが不明であることを示している。また、「子ジョブ3」がリストに無いことは子ジョブ3に対応する印刷完了通知がなされ「子ジョブ3」が正常に印刷終了したことを示している。そして、ドキュメント名から指定されたジョブの再印刷が再印刷ボタン901への指示に応じて実行される。またドキュメント名から指定されたジョブの削除がジョブの削除ボタン902への指示に応じて実行される。
また、リスト中には子ジョブに対応する親ジョブの表示制御もなされている。これにより未終了な可能性のある子ジョブが、どの親ジョブに対応するかを容易に知ることができる。このように図9の表示がなされることにより、ユーザは、未完了の可能性があるジョブを一覧でき、再印刷及び削除を自由に行なうことができる。
リスト表示された復元ジョブは個別の子ジョブ(メンバジョブ)又は親ジョブを選択して全てのメンバジョブの再印刷を指示することが可能である。
ステップS1106では再印刷の指示が有るか否かを判別する。ステップS1106では再印刷の指示が所定の子ジョブについて行なわれたのか、或いは、親ジョブに対して行なわれたのかを判定し、指示が行なわれたジョブの出力をする処理が図6〜8に基づく仕組みにより実行される。
再印刷の指示が所定の子ジョブである場合は、中間形式ファイルから指示のあった所定の子ジョブの付属情報に含まれる子ジョブの印刷頁範囲に対応する再度印刷ジョブ作成の再生成を行印刷処理(S1107)を再実行する。一方、親ジョブに対して際いい再印刷の指示があった場合には、親ジョブに基づく各メンバジョブの再印刷の処理が行われる。
図9のような一覧リストの表示をジョブ制御プリントサービス622の指示によりプリントマネージャー623に行わせるので子ジョブ毎に再印刷指示を選択的に実行させることができるようになり、例えば、分散印刷の複数の子ジョブのうち印刷が終了したと認識されていないもののみを再印刷候補に提示することが可能となる。これは、付属情報に含まれる、子ジョブ毎の印刷終了に関わるステータスをクライアントマシーン(情報処理装置)に保持しておき、該保持された付属情報を参照することにより、実現される。
一方、終了通知を受けていないが、終了しているとユーザが判断もしくは再印刷が不要であるとする場合は中間形式ファイルを無効化(例えばジョブの削除や、)して(ステップS1108)、印刷処理を中止することも可能である。
ステップS1102で、復元ジョブを表示しないと判断した場合は、復元ジョブ検索処理を行わないで、復元印刷処理を終了する。
ステップS1104で、見つかった復元ジョブが有効期間を越えていたと判断した場合は、ステップS1108でジョブを無効化する。
以上説明したように、本実施の形態に係る印刷システムによれば、転送されたジョブの終了が認識されないまま再起動された場合に、再印刷を促すリストを提示するので、例えば突然の停電によりホストコンピュータの電源が遮断されたような場合にでも、ユーザに無駄の無い再印刷の機会を提供することができる。また、ジョブの有効期間を設けているので再印刷が必要となくなったジョブを、ユーザにキャンセルを選択させることなく、自動で無効化(例えば削除)が可能となる。