以下、添付の図面を参照して本発明の好適な実施形態について説明する。
〔第1実施例〕
図1は、本発明を適用可能な情報処理システムの構成を説明するブロック図である。なお、本システムにおけるクライアントコンピュータは、1台、または複数台接続されていることを仮定している。
図1において、102、103、104はクライアントコンピュータ(クライアント)としての情報処理装置であり、イーサネット(登録商標)などのネットワークケーブルによって、ネットワーク106に接続される。クライアント装置102〜104の各々は、アプリケーションプログラム等の各種のプログラムを実行可能であり、印刷データをプリンタに対応するプリンタ言語に変換する機能を有するプリンタドライバを搭載している。なお、プリンタドライバは複数登録可能なものとする。101は本実施形態のサーバ(以下、プリントサーバと呼ぶ)としての情報処理装置であり、ネットワークケーブルによって、ネットワーク106に接続される。プリントサーバ101は、ネットワークで使用されるファイルを蓄積したり、ネットワーク106の使用状態を監視したりする。プリントサーバ101は、ネットワーク106に接続されている複数のプリンタを管理している。
なお、クライアント102〜104とプリントサーバ101は、一般的な情報処理装置にそれぞれ異なる制御を行う印刷制御プログラムを実行可能に格納することにより構成することができる。
また、プリントサーバ101として一般的な情報処理装置を用いた場合、クライアント102〜104の機能を同時に持たせることもできる。本実施形態におけるプリントサーバ101は、さらにクライアント102、103、104から出力された印字データを含む印刷ジョブを格納してプリンタに印刷させたり、または、クライアント102、103、104から印字データを含まない印刷ジョブを受け取り、クライアント102、103、104の印刷順序を管理し、印刷順序になったクライアントに対して印字データを含む印刷ジョブの送信許可を通知したり、ネットワークプリンタ105のステータスや印刷ジョブの各種情報を取得し、クライアント102、103、104に通知したりする機能を揃えている。
105はネットワークプリンタであり、不図示のネットワークインタフェースを介してネットワーク106と接続されている。ネットワークプリンタ105は、クライアントコンピュータ102〜104から送信される印字データを含む印刷ジョブを解析して1ページずつドットイメージに変換して、1ページ毎に印刷する。106はネットワークであり、クライント102、103、104、サーバ101、ネットワークプリンタ105等と接続している。
また、図中ではネットワークプリンタ105は1台しか示されていないが実際には複数台のネットワークプリンタが接続されているものとする。更に、このネットワークプリンタ105は、後述するデバイス614に相当するものであるが、このデバイス614には、電子写真方式のレーザービームプリンタ/複写機/デジタル複合機/ファクシミリや、インクジェット方式のプリンタ/デジタル複合機など様々な記録方式の画像形成装置が適用されることはいうまでもない。
図2は、本実施形態のクライアント102〜105及びプリントサーバ101として利用可能な情報処理装置の構成を説明するブロック図である。上述したように、クライント102、103、104及びプリントサーバ101は同様のハードウェア構成を有した情報処理装置によって実現可能である。以下、図2をクライアントとサーバの構成を説明するブロック図として説明する。
図2において、200は情報処理装置の制御手段であるCPUであり、ハードディスク(HD)205に格納されているアプリケーションプログラム、プリンタドライバプログラム、OSや本発明のネットワークプリンタ制御プログラム等を実行し、RAM202にプログラムの実行に必要な情報、ファイル等を一時的に格納する制御を行う。
201はROMであり、内部には、基本I/Oプログラム等のプログラム、文書処理の際に使用するフォントデータ、テンプレート用データ等の各種データを記憶する。202は一時記憶手段を提供するRAMであり、CPU200の主メモリ、ワークエリア等として機能する。203はフレキシブルディスク(FD)ドライブであり、後述する図5に示すようにFDドライブ203を通じて記憶媒体としてのFD204に記憶されたプログラム等を本コンピュータシステムにロードすることができる。204は記憶媒体としてのフレキシブルディスク(FD)であり、コンピュータが読み取り可能なプログラムが格納された記憶媒体である。なお、記憶媒体としては、FDに限らず、CD−ROM、CD−R、CD−RW、PCカード、DVD、ICメモリカード、MO、メモリスティック等、任意の媒体を利用できる。
205は外部記憶装置の一つであり、大容量メモリとして機能するハードディスク(HD)である。HD205には、アプリケーションプログラム、プリンタドライバプログラム、OS、ネットワークプリンタ制御プログラム、関連プログラム等が格納されている。また、スプール手段であるスプーラはこのHD205に確保される。なお、スプール手段は、クライアント102〜104ではクライアントスプーラのことであり、プリントサーバ101ではサーバスプーラのことである。また、プリントサーバ101では、クライアント102〜104から受けたジョブ情報を格納し、順序制御を行うためのテーブルもこの外部記憶装置(HD205)に生成されて格納される。
206は指示入力を行なうためのキーボードである。キーボード206を用いることにより、ユーザがクライアントコンピュータに対して、或いは、オペレータや管理者がプリントサーバに対して、デバイスの制御コマンドの命令等を入力指示する。なお、指示入力を行なうためにポインティングデバイス(不図示)を備えてもよい。
207はディスプレイであり、キーボード206から入力したコマンドや、プリンタの状態等を表示したりする。208はシステムバスであり、クライアントやプリントサーバであるコンピュータ内のデータの流れを司る。209はインタフェースであり、該インタフェース209を介して情報処理装置はネットワーク106と接続され、外部装置とのデータのやり取りを行うことが可能となる。
図3は、図2に示したRAM202のメモリマップの一例を示す図である。図3には、FD204に格納されている上記ネットワークプリンタ制御プログラムがRAM202にロードされ、実行可能となった状態のメモリマップが示されている。
本実施形態では、FD204からネットワークプリンタ制御プログラムおよび関連データを直接RAM202にロードして実行させる例を示すが、これ以外にも、FD204からネットワークプリンタ制御プログラムを動作させる度に、既にネットワークプリンタ制御プログラムがインストールされているHD205からRAM202にロードするようにしてもよい。また、本ネットワークプリンタ制御プログラムを記憶する媒体は、FD以外にCD−ROM、CD−R、PCカード、DVD、ICメモリカード等であってもよい。さらに、本ネットワークプリンタ制御プログラムをROM201に記憶しておき、これをメモリマップの一部となすように構成し、直接CPU200で実行することも可能である。また、以上の各装置と同等の機能を実現するソフトウェアをもって、ハードウェア装置の代替として構成することもできる。
また、本ネットワークプリンタ制御プログラムのことを、簡単に印刷制御プログラムと呼ぶこともある。印刷制御プログラムは、クライアント102〜104において印刷ジョブの印刷先の変更を指示したり、印刷順序の変更を指示するための制御を行うプログラムを含む。また、印刷制御プログラムは、プリントサーバ101において、印刷ジョブの順序制御を行ったり、印刷ジョブの印刷終了や印刷先変更要求などを通知するためのプログラムを含んでいる。また、このような制御を行う本実施形態の印刷制御プログラムは、クライアント102〜104にインストールされるモジュールと、プリントサーバ101にインストールされるモジュールを別々に分けてもよい。或いは、一つの印刷制御プログラムが、実行される環境によりクライアント用として機能したり、またはプリントサーバ用として機能するようにしてもよい。あるいは一台のコンピュータに、クライアント用の機能を持つモジュールと、プリントサーバ用として機能するモジュールをともにインストールし、同時に、あるいは時分割で擬似的に平行動作させる構成をとることも可能である。
図3において、301は基本I/Oプログラムであり、本制御装置の電源がONされたときに、HD205からOSがRAM202に読み込まれ、OSの動作を開始させるIPL(イニシャルプログラムローデイング)機能などを有しているプログラムが入っている領域である。302はオペレーティングシステム(OS)、303はネットワークプリンタ制御プログラムであり、それぞれRAM202上に確保された領域に記憶される。304は関連データで、RAM202上に確保される領域に記憶される。305はワークエリアで、CPU200が本実施形態のプリンタ制御プログラム(303)等を実行する際に利用される作業領域が確保されている。
図4は、図2に示したFD204のメモリマップの一例を示す図である。図4において、400は上記FD204のデータ内容であり、401はデータの情報を示すボリューム情報であり、402はディレクトリ情報、403は本実施形態で説明する印刷制御プログラムであるネットワークプリンタ制御プログラム、404はその関連データである。403のネットワークプリンタ制御プログラムは、実施形態で説明するフローチャートに基づいてプログラム化したものであり、本実施例では、クライアント、サーバ共、同様の構成をとっている。
図5は、図2に示したFDドライブ203に対して挿入されるFD204との関係を示す図であり、図2と同一のものには同一の符号を付してある。図5において、FD204には、図4で説明したように本実施形態で説明するネットワークプリンタ印刷制御プログラムおよび関連データが格納されている。
次に上に述べてきた各構成に基づき動作する印刷制御処理についての説明を行う。
図6は本実施形態における印刷システムの概要を示す。
クライアントコンピュータの表示部に表示されたアプリケーションUI(以下UIのことをユーザインタフェースと呼ぶ)を介して印刷指示がされる。この印刷指示に基づきアプリケーションからOSを介した印刷指示がプリンタドライバ601に行われる。プリンタドライバ601はOSを介して供給される描画命令(DDI)に基づき頁記述言語データを作成する。この頁記述言語データには描画データとジョブ制御データの双方が含まれる。また、本実施形態においては頁記述言語データのことを印刷データと呼ぶこともある。なお、以下ではプリンタドライバにより印刷データが作成される形態を例に説明を行なうがこれに限定されるものではない。例えば、アプリケーション607が帳票アプリケーションの場合などにアプリケーション607にプリンタドライバの機能が含まれる場合がある。印刷データ作成モジュールとして機能するものであればプリンタドライバやアプリケーションが適用される。
作成された頁記述言語データは、スプーラ602によりスプールファイル603として書込まれる。アプリケーションから選択されたプリンタに関連付けられたポートがLPRポート604の場合は、LPRプロトコルを用いてスプーラ602から転送されてきた印刷データがデバイス614に送られる。また、デバイス614に送信された印刷データは送信後に順次消去されていく。一方、プリンタに関連付けられたポートがジョブ制御サービスポートモニタ605である場合には、スプーラ602から転送されてきた印刷データがジョブ制御サービスポートモニタ605を介してジョブファイル609が再度スプールされる。
このスプーラ602からジョブ制御サービスポートモニタ605に印刷データが転送される際に、図7のポート名が特定される。なお、デスプール開始時スプーラ602からジョブ制御サービスポートモニタ605に通知される情報の様子を図7に示す。
ここで、図7の説明を行う。701はジョブ転送の開始を示し、702はプリンタ名を示す。702のプリンタ名は図8の801のプルダウンメニューに表示されたプリンタ名から、ユーザの指示に応じた選択されたプリンタ名に対応する。尚、図8の801に示される各プリンタ名に対応するプリンタには、ポート名が対応しており、複数のプリンタ名から何れのプリンタが選択されると、図9の901に示されるようにポートに対応した表示がなされる。
703は、図8の801から選択されたプリンタ名に対応し、予め設定されたポート名を示す。これは、図9の901に相当する。
704は例えば印刷要求に応じてOSの仕組みを介して発行されたジョブIDに対応する。704はOSを介して発行された印刷要求を識別する為のIDに関連付けられていれば良い。
更に図8、図9について詳しく説明すると、図8は、印刷時にクライアント102〜104の表示部に表示される印刷設定画面の一例を示す。図8はクライアント102〜104が選択可能な複数のプリンタのリストを示すものであり、801の選択リストから「プリンタE」が選択されている様子を示している。
「プリンタA」はPort604に関連付けられた通常のプリンタを、「プリンタC」はPDF(Portable Document Format(登録商標))ライターを、「自動代行君」、「同報君」は複数のデバイス614を対象とした印刷を行う為の仮想プリンタを示し、プリンタB及びプリンタDをメンバプリンタとして登録してある。プリンタB及びプリンタDは、仮想プリンタからの印刷のほか、直接これらのプリンタを選択して、印刷を行う事も可能である。
図9は「プリンタE」が選択された場合に図8の表示が変更された様子を示す。901は「プリンタE」のポート名を示す。
図6の説明に戻ると、図7に示される情報を受けたジョブ制御サービスポートモニタ605は、受信した図7の情報をジョブ開始通知としてジョブ制御プリントサービス610に通知する。この通知には少なくとも第1ジョブID(第1IDとも呼ぶ)が含まれていればよい。ジョブ制御プリントサービス610はジョブ制御サービスポートモニタ605からのジョブ開始通知(S1402)に応答して、ジョブ制御サービス内部で印刷要求を識別するための第2のジョブID(第2IDとも呼ぶ)と、第2IDに対応したジョブファイル609のパスを応答する(S1403)。さらに、ジョブ制御プリントサービスポートモニタ605は、ジョブファイル609にスプーラから投入された印刷データを書込み、ジョブ制御プリントサービス610へジョブの書き込みを通知する(S1404)。
ジョブ制御プリントサービス610はジョブ制御プリントサービスポートモニタ605からのジョブファイルへのジョブの書き込み通知(S1404)を受けると、ジョブファイル609に書込まれた頁記述言語データを順次読込み複数のデバイス614の中で対応するデバイスに送信する。
プリントマネージャ611はAPI612を介してジョブ制御プリントサービス610と各種情報の送受信を行う。例えば、プリントマネージャ611はジョブ制御プリントサービス610が監視するデバイス614の状態情報の通知を反映したUIを作成したり、各種印刷指示の入力画面を提供する。特に、代行UI613はジョブ制御プリントサービスからデバイス614の障害情報を受け取ったことに対応して、代行印刷の指示を行う機能を備えたUIをクライアント画面に表示する。ここで、表示されるUIは図11に示されるものであり、後述にて詳しく説明する。
図10は、図6のジョブ制御プリントサービス610の詳細を示す。610内の各ブロックはプログラムコードとそれに付随するデータをひとまとまりの単位としたオブジェクトを示す。
ジョブ出力モジュール1001は印刷データのデバイス614への送信を制御する。
デバイス監視モジュール1003はネットワークケーブルなどの通信回線を介してデバイスの状態情報を監視する機能を備える。デバイス監視モジュール1003はデバイスに問合せを行ったり、デバイスから自発的に通知されてくる状態情報を受信する機能を備える。
状態情報としては、デバイス614における紙/トナーなどの消耗品無し、ジャム、ドアオープン、等のエラー情報や、デバイス614におけるジョブの予約数などデバイスの負荷情報などを含む。ジョブ管理モジュール1002或いは或いはジョブ出力モジュールは検知した障害情報を上に説明したプリントマネージャ611ジョブ制御プリントサービス610として通知する。
ジョブ管理モジュール1002はデバイス監視モジュール1003とジョブ出力モジュール1001との情報の送受信を仲介する機能を備える。またジョブ制御プリントサービスが、前述のサーバ101上でサーバプログラムとして動作している場合、及び/又は、同一デバイスへジョブ出力を行う複数のジョブが出力モジュール中に存在した場合には、それぞれのジョブの送信順序を制御する機能も備える。図10中の双方向矢印1004はスケジュール(出力順序制御)の依頼と、スケジュールアップ(出力開始指示)とを示す。
図12はジョブ出力モジュール1001の詳細を示す。605及び1001内の各ブロックはオブジェクトを示す。
ジョブ出力モジュール1001内では、プリンタ及びProxy Output Portという単位でジョブを管理する。これは、OSのスプーラに登録されているプリンタ及びポートに対応しているが、ジョブ制御プリントサービス内部で制御を行う為に必要な拡張プリンタ情報を保持している。この設定可能なプリンタの情報としては、例えば図16に記載のように、ジョブの優先度や、印刷待ちジョブの個数がいくつあった場合に代行印刷を行うかなどの代行発生条件がある。
また、ポート(Proxy Output Port)のオプション属性としては、図17に記載のように、デバイスのアドレスやモデル名のほか、送信プロトコル、デバイスへの転送方法等がある。
プリンタで受け付けたジョブは対応するProxy Output Portを経由してデバイスへ転送される。なお、1つのデバイスを指すProxy Output Portが複数存在した場合、プリンタで受け付けた印刷データは、Proxy Output Portにおいて順序制御され順次デバイスへ転送される。
次に、図11、図12、図13、図15、図16、図17を併せて図14のフローチャートの説明を行う。図14はプリンタドライバを介して作成されてスプールされる印刷データを再度独自スプールし、この独自スプールと、独自スプールされた代行先デバイスへの印刷データの送信と、を並行して実行する処理に対応する。
図9に示されるユーザインタフェースを介して設定されたプリンタEへのアプリケーションからの印刷指示がなされると、OSからの印刷開始イベントがジョブ出力モジュール1001内のプリンタEに通知されステップS1401の印刷開始イベントとして認識される。プリンタEでは新規にジョブが発行された事を検知したらジョブ管理情報から、未使用の第2IDを選択/生成し、OSから取得したジョブの属性及び第1IDと共にジョブ情報をジョブ管理情報1201に登録する。プリンタEによる新規ジョブ発行の検知はプリンタEが直接でもよく、所定のソフトウェアモジュールを介して検知するような形態でも良い。尚、ジョブ管理情報1201はRAM202上に保存され高速にアクセス可能な構成となっているが、図13に記載のジョブ属性のコピーはファイルとしてHD205上に保存され、ジョブファイル609と共に、PC再起動時にも利用可能な構成となっている。
ジョブ情報の詳細は図13(a)に示されるように、第1ID1303と第2ID1301、1302の対応のほか、ジョブファイル609の名称1304、プリンタ名1305、ポート名1306、ジョブの状態1307、受け付け時刻等1308、優先順位1309が保存されている。また、図13の(b)の1310乃至1318の情報は図13の(a)の1301乃至1309に夫々対応しているので、ここでは詳しい説明を省略する。この図13に示されるジョブ識別子やオリジナルジョブ識別子を作成することにより、OSジョブIDに連度するジョブファイル609のスプール処理とは別にジョブファイル609にスプールされた印刷データをデバイスへ適宜転送することが可能となる。
ジョブ情報はジョブ識別子やオリジナルジョブ識別子やプリンタ名や第1IDの中から任意組み合わせで抽出することによって検索可能であり、API612や不図示の内部インタフェースによって、プリンタ1208、Proxy Output Port1209等からアクセス可能に構成されている。また、ジョブ識別子については単独でも検索可能となっている。また、図12中のProxy Output Port1209、1213はプリンタE、プリンタBとは別個に記載してあるが、プリンタE、プリンタB等の所定の機能モジュールに含めるようにしても良い。
前記印刷指示の結果、アプリケーションプログラムが描画したデータは、DDIを通してOSのスプーラ602によってスプールされ、スプールファイル603が作成される。スプーラ602は該ファイルを順次読み取りジョブ制御サービスポートモニタ605へジョブデータを通知する。
スプーラ602からジョブ制御サービスポートモニタ605へのジョブデータ送信開始が通知されると、ステップS1402においては、ジョブ制御サービスポートモニタ605から図7に示される情報を含んだJob開始要求をプリンタEに通知する。
ステップS1403においては、ジョブ制御ポートモニタ605はステップS1401の通知に基づきプリンタEより更新されたジョブ管理情報1201中からプリンタ名及び第1IDをキーとして検索された図13に示されているジョブ情報のうち第2ID及びFile名をステップS1402の応答として受け取る。
スプーラ602からジョブデータを受け取ったジョブ制御サービスポートモニタ605はステップS1403において受信した情報に基づき第2IDに対応するジョブのジョブファイル名のファイルへジョブの書き込みを開始し、ステップS1404において、第2IDとジョブの書き込み開始をプリンタEへ通知する。ステップS1404の通知を受けたプリンタEでは、ステップS1405において、ProxyOutPutPortEに対して第2IDに対応するジョブの送信予約/登録を行う。そして、Proxy Output PortEでは、プリンタEから登録された第2IDを送信待ちジョブのキュー1210へ登録する。
本発明の実施例における印刷制御プログラムは、ジョブ制御サービスポートモニタ605におけるジョブファイル609のスプール処理の動作と、Proxy Output Portにおける送信処理を並行動作するか否かを排他的に選択可能なものとする。
この選択可能についての具体的に説明すると、図17において、「ジョブのデバイスへの転送」チェックボックスが選択ボタンに対応するものであり、「スプールしながら転送する」が選択されている場合には、スプール動作と送信処理を並行動作し、「スプール後に転送する」が選択されている場合は、従来のプログラム同様スプール完了後に転送するように構成されている。この図17の設定画面は各Proxy Output Port毎の設定のために用意されている。
ポートの転送モードの属性として、スプールしながら転送するが選択されている場合、Proxy Output PortEでは、後述のステップS1412における第2IDジョブ書き込み終了通知を待たずとも、転送候補としてピックアップされる。転送候補としてマークされたジョブは、1201及び図13に示されているジョブ情報から、優先順位、受付時刻等によって送信順序が決定される。ジョブ送信順序の決定方法に関しては本発明とは直接関係が無いため、此処では詳細を説明しない。
プリンタEによって登録された第2IDで識別されるジョブは、送信順序に達すると、ステップS1406において、プリンタEに対応しているProxyOutputPortEは、ジョブファイル609の読込を行うと共に、読み込んだ印刷データをデバイス614(プリンタデバイスE)に送信する。送信される印刷データを受信したプリンタデバイスEでは、印刷データに基づくメディアへの記録を実行する。このようにProxyOutputPortの機能により、ジョブファイル609へのプリンタドライバを介して作成されて印刷データの独自スプールを継続しながら、出力先デバイスへの印刷データの転送とを並行して実行する制御が実現され、スループットの早い印刷制御の仕組みを提供することができる。
ここで、デバイスにおいて所定の障害が発生したことが、デバイス監視モジュール1003を介してプリントマネージャ611に通知がされると(S1501に対応)、図11に示されるような代行UI613がプリントマネージャ611によって起動される(S1502に対応)。
ここで図11の説明を詳しくすると、図11中の「代行先として選択可能なプリンタ一覧」に表示されるプリンタのリストは図12中のProxyOutPutPortを備えるプリンタEや、プリンタBなどに対応する。
代行UI613においては、代行が発生したジョブとその印刷を遂行するに必要なプリンタ機能/装備(1101)及び代行可能なプリンタのリスト及びその状態(1104)が表示される。1101においてはスプールファイル603にスプールされた印刷データに基づき特定されるプリンタの機能/装備などのジョブの情報が表示される。例えば、ステイプル機能の有無、所定サイズ給紙カセットを備えるか否か等の機能に係る表示が行われる。
さらに代行先のプリンタ候補例えばプリンタBを選択すると該プリンタが保持しているオプション構成(用紙サイズ、ステイプル、両面等)の情報が、プリンタ機能画面(1103)に表示される。本発明に係わる印刷装置においてはスプールしながらジョブの転送を行う為に、代行が発生した時点ではジョブの属性が確定していない場合がある。具体的には、スプーラ602に全ての印刷データがスプールされておらず、全印刷データの枚数が確定しないない、用紙サイズの確定が行われていない場合などが挙げられる。
また、図11においては印刷に必要な機能が表示されていないが、このような場合に1102に記載の「プリンタ情報の更新」ボタンを押下することにより、プリントマネージャ611からジョブ制御プリントサービス610に対してジョブ及びプリンタの属性/状態情報取得が行われ、最新の処理状況に応じたジョブの情報或いは代行先プリンタの状態を表示する事ができる。また最新の処理状況の変更をジョブ制御プリントサービスからプリントマネージャに対し非同期に通知し、これを検知して代行UI図11の再表示を行う様に構成しても良い。
そして、1104に指示がなされると、図18に示されるUI(印刷設定画面)が表示される。図18のUIを介して代行先のプリンタでの印刷開始ページ(論理ページ)をクライアントから指定する事ができる。詳細にいては後述する。
図14の説明に戻ると、図11の代行UIを介して代行プリンタの指定が本印刷システムに入力されると、ステップS1407においてAPI612を介しプリンタEに代行指示の通知がされる(S1503に対応)。
図14の場合は図11の代行UIを介してプリンタBを代行先プリンタとする指示が本印刷システムに入力された場合を示す。
ステップS1408において、プリンタEは、第2IDと続行して出力すべき印刷範囲を示す頁情報或いは部数情報とを少なくともプリンタBに通知する。
ここで出力すべき印刷範囲について詳しく説明する。
(1)排紙時のバイスからのイベント、或いは、デバイス監視モジュールからデバイス614へのポーリングよって取得される排紙済みの面数に基づく。
(2)図18のような代行先プリンタにおける出力開始ページに基づく。
まず、(1)について詳しく説明すると、物理媒体が一枚排紙される毎にデバイスからイベントがデバイス監視モジュール1003に通知される。
或いは、イベントを取りこぼした場合に備え、ポーリングにより排紙済みの面数を取得する。具体的にはデバイス監視モジュール1003がデバイス614から印刷続行できない状態を検知した時に、ポーリングによりデバイス614での排紙済みの面数を取得する。この際、デバイス614から印刷続行できない状態を検知した後に、所定時間待機してデバイス監視モジュール1003よりポーリングするようにすれば、より確実な排紙面数を取得することができる。
次に(2)について詳しくすると、図11は、デバイス監視モジュール1003(ジョブ制御プリントサービス610)によってデバイス614で印刷続行できない状態を検知した時に、代行元のプリンタの排紙状況に応じて、プリントマネージャー611によって代行UI613が表示されることによってユーザに提示される。
代行元のプリンタの排紙状況が一枚(物理媒体)も排紙されていない場合には、図18は表示されない。例えば、物理媒体の排紙が9枚確認されていれば、図18の18801に示されるように、「10」が初期値として設定されている。例えば、排紙済みのページが汚れているような場合や、何らかの原因でデバイス管理モジュールの検知が間違っていたような場合に備え、ユーザに開始ページを設定させることもできる。
一方、一枚でも排紙されている場合には1801に、排紙済みの面数を加味した開始ページが初期値に設定された図18のUIが表示される。そして、図18の1802の印刷開始ボタンに指示がなされると、開始ページ1801で設定された「続頁」と、ジョブファイル609の全てとをデバイス614に送る。また、「続頁」に該当するページからのジョブファイル609を代行先のデバイス614に転送しても良いし、「続頁」に該当するページからのジョブファイル609を生成しなおしても良い。
また、ステップS1407の代行指示を受けたプリンタEは、ステップS1409において、ステップS1408の処理と並行して、ProxyOutPutPortEに対して第2IDに対応するジョブのキャンセル/削除の指示を行う。この際、スプール処理が継続されている場合には、送信処理のみをキャンセルし、ジョブの状態1307を「スプール中 削除中」として図13(a)のジョブ情報をジョブ管理情報1201に残しておく。
ステップS1408の通知を受けたプリンタBは、ステップS1410において新規にジョブを管理するための第3のID(第3IDとも言う)を生成し、代行されたジョブを示す第2IDを用いてジョブ管理情報1201から第2ID(ジョブ識別子或いはオリジナルジョブ識別子)に対応したジョブ情報図13(a)を参照し、第3IDのジョブ属性としてコピーし設定する。コピーすべきジョブ属性を参照する情報としては代行元のジョブを特定できる情報であれば良い。
この際、プリンタEにおけるプリンタEに固有の属性(引く継ぐべきではない属性)、例えばジョブの状態(プリンタEではスプール中−削除中でありプリンタBでは送信待ちである)はコピーしない。これによって作成されたジョブ情報を図13(b)に示す。
そして、ステップS1410において、印刷データの代行時或いは再送時に、代行前或いは再送前に既にスプール済みの続きからスプールを継続しながら、スプールされたデータを代行先或いは再送先のプリンタデバイスに送信することができる。これにより、最初にプリンタE用にスプールした処理をプリンタB用に再度やり直す必要がなく、プリンタEにおいて行なったスプールの処理を新たな代行先或いは再送先に活用することができる。
ステップS1411においては、ステップS1406と同様にプリンタドライバを介して作成されてスプールされる印刷データを再度独自スプール(ジョブファイル609)し、この独自スプールと、代行先デバイスへの独自スプールされた印刷データの送信とが並行して実行される。尚、このステップS1411の処理と、ジョブ制御サービスポートモニタ605によるジョブファイル609の処理は異なるIDの元に並行して実行されているものとする。具体的に説明すると、ジョブ制御サービスポートモニタ605は、代行が発生した場合にも、ジョブファイル609への書き込みを最初からやり直すことなく、既にスプール済みの続きから継続する。さらに具体的には、プリンタEからプリンタBに代行が発生した場合に、第3IDの元にスプールされるジョブファイル609は、以前に第2IDに対応してジョブ制御サービスポートモニタによって書き込まされていたジョブファイル609の既存部分の続きから書き込むことになる。
このようにステップS1406、S1412のProxy Output Portの機能により、ジョブファイル609へのプリンタドライバを介して作成されて印刷データの独自スプールをステップS1404乃至1412の処理の実行中も継続でき、また代行先デバイスへの印刷データの転送を並行して実行する印刷制御が実現される。
例えば、ステップS1408における通知をプリンタBが受信した際に、ジョブ制御サービスポートモニタ650によりジョブファイル609のスプールが80%既に完了していたような場合でも、プリンタBは代行先のプリンタデバイスに対して既にスプールされたファイルの必要な部分から適宜転送を行うことができる。必要な部分としては例えば、最初からのスプールファイルであったり(デバイス614へ送信する際にはS1408の通知に基づく頁情報を付す)、S1408の通知に基づく頁からのスプールファイルであったりする。更新された情報は1102に記載の「プリンタ情報の更新」ボタン押下に応じて図11UIに反映される。
一方、ジョブ制御サービスポートモニタ605により、ジョブファイル609の書き込みが終了した場合にはジョブファイルの書き込み終了の同期シグナルが通知される(ステップS1412)。同期シグナルの通知は、プリンタBに直接通知しても良いし、セマフォ等を用いて(semaphore:並行して動作しているプロセス間で同期を取ったり割り込み処理の制御を行なう機構。また、そのためにプロセス間で交換される信号。)通知しても良い。
一方、図12の1206に示されるように第2IDを付した書き込み終了通知がジョブ制御サービスポートモニタ605からプリンタEに対して行われる。プリンタEは、確定されたジョブの属性情報(用紙サイズ、用紙枚数等)を元にジョブ管理情報1201を更新する。この更新の際にはオリジナル識別子(第2ID)を持つ全てのジョブ情報が更新される。このように、第2IDを併用した所定の通知に基づき再度スプールされるジョブファイル609の管理をすることができる。
また、ステップS1412の同期シグナルを検知したプリンタB(ProxyOutPutPortB)では、ステップS1411において、検知をした時点で存在したプリンタデバイスBに送信するジョブファイルの読込が終了した際に、これ以上送信すべきジョブファイルがないことを認識すると共に、ジョブの送信処理を終了する。さらに別の形態としては、ジョブ制御サービスポートモニタ650からプリンタEとプリンタBとに第2IDに対応するジョブの書き込みを終了したことを通知するようにしても良いし、或いは、ジョブ制御サービスポートモニタがプリンタEへ通知し、さらにプリンタEが代行先のプリンタBへ通知するようにしても良い。
デバイスBでの印刷完了が、デバイス監視モジュール1003によって検知され、ジョブ管理モジュール1002を経由してジョブ出力モジュール1001へ通知されるとジョブ管理情報1201からジョブ情報の図13(a)(b)と、ジョブファイル609が削除され、印刷処理が完了する。
このように第1実施例によれば、プリンタドライバを介して作成されてスプールされる印刷データを再度独自スプールし、この独自スプールと、独自スプールされた代行先デバイスへの印刷データの送信と、を並行して実行することができるようになったので、印刷データの再送や他のデイバスへの転送を行う上で必要になってくる独自スプールファイルのデバイスへの送信開始を迅速に行えるようになった。
また、プリンタドライバを介して作成される印刷データに対応してOSを介して発行される第1IDとは別に、独自スプールされる印刷データに第2IDを作成し、この第2IDに基づく、言い換えればオリジナルジョブとは別に発行されたID(第2IDや第3ID)に対応したジョブ管理を行うことができるようになったので、スプーラ602からジョブ制御サービスポートモニタ605へのデスプールなどのOS独自の処理が終了した後も再送/代行を伴うジョブ追跡/管理が可能となった。さらに、情報処理装置(PC)の再起動が行われ、OSが再起動前の印刷処理において発行したジョブIDと重複するようなID(第1ID)を発行するようなことがあっても。確実にジョブの追跡/管理を行えるようになった。
また、従来の独自スプールファイルの書き込みが既に終了していることを前提にして独自スプールファイルの転送/再送信を行い、スプールファイルの書き込み終了を意識する必要がなかった。これに対して、本実施形態においては、独自スプールファイル(ジョブファイル609)の書き込み終了を検知できるようになったので、独自スプールファイルの書き込みをしながらデバイスへ独自スプールファイルを送信する形態において、これ以上送信すべく独自スプールファイルがないとされた場合も、独自スプールファイルの終了が認識されているので確実に独自スプールファイルの送信終了できるようになった。
なお、上記説明においては、スプールについて「独自」という言葉を用いてきたが、本質的には、これに限定されるものではない。つまり、再スプールされるジョブファイル609を、スプールファイル603とは別のジョブとして管理できるIDであれば適用可能となる。
例えば、ジョブ制御サービスポートモニタ605がジョブ制御プリントサービス610の機能を含み、且つ、ジョブファイル609を保持しつつ該保持したジョブファイル609をOSのスプーラ602を用いて「スプールファイル603’」を再スプールしジョブ制御サービスポートモニタ605への再投入を行う。
そして、この「スプールファイル603’」に対してOSから発行されたIDに対応して再送信される「ジョブファイル609’」を管理でき、再度スプールする印刷データ(ジョブファイル609)のスプールと、再送先或は代行先デバイスへの印刷データ(ジョブファイル609’)の送信とを並行して実行することができる。
〔第2実施例〕
第1実施例では、プリンタEがプリンタBを代行先のプリンタとして処理することを説明してきが、第2実施例においては、更にプリンタBが代行処理を実行することについて説明を行う。尚、第2実施例における印刷システムも、図1乃至17と同様の仕組みを備えるものとする。ここでは、第1実施例との差異について説明を行う。
プリンタBにおいて代行ID3に対応するジョブの代行がさらに発生した場合、代行UIによって第3IDのジョブの代行先としてプリンタDが指定された場合には、プリンタDによって第4IDが生成される。また、代行されたジョブを示す第3IDを用いてジョブ管理情報1201から第3IDに対応したジョブ情報図13(b)から必要なジョブ属性をコピーし新たなジョブ情報を作成する。即ち、上に説明したステップS1410、S1411の処理が行われ、図13(b)に相当する新たなジョブ情報が作成される。また、ステップS1412応じたジョブ情報の削除も第1実施例と同様に行われる。
一方、プリンタBではステップS1408と同様に、第3ID及び第2IDの情報と、続行して出力すべき印刷範囲を示す頁情報或いは部数情報をプリンタDに通知する。尚、この通知には少なくとも第2IDが含まれるようにして、被通知元のプリンタDが通知元がオリジナルジョブ識別子の第2IDに対応するファイル名などの各種属性を特定可能であれば良い。
さらにプリンタBは、ステップS1409と同様のProxyOutputPortBにおける第3IDに対応するジョブのキャンセル/削除の指示を行う。この際、スプール処理が継続されている場合には、送信処理のみをキャンセルし、ジョブの状態1316を「スプール中 削除中」として図13(b)に表示のジョブ情報をジョブ管理情報1201に残しておく。
〔第3実施例〕
第1実施例及び第2実施例においては、代行時に代行先のProxyOutputの送信モード設定に従う事を説明してきたが、第3の実施例については、さらに代行元(プリンタEにおけるProxyOutputPortE)の設定に従う処理について説明を行う。尚、第3実施例における印刷システムも図1乃至図17と同様の仕組みを備えるものとする。ここでは第1実施例及び第2実施例との差異についの説明を行う。
ステップS1402において、ジョブ制御サービスポートモニタ605からジョブのスプール開始とポート名が通知されると、プリンタEはポート名からProxy Output PortEの送信モード設定(図12では転送モードと記載)を取得し、ジョブ属性の情報として図13(a)や(b)に記載のジョブ情報に追加保存を行う(図13には図示せず)。
ここで、ステップS1407のような代行指示が入力されると、代行先のProxyOutputPortBは、ジョブの属性を判定し、Proxy Output PortBの送信モード設定が「スプール終了後送信する」であってもジョブの属性が「スプールしながら送信する」であった場合にはジョブ制御サービスポートモニタ605からの書き込み開始通知があったジョブについて、送信候補としてマークの情報をつける。
マークが付されたジョブに対応する独自スプールファイルはスプール中であったとしても、Proxy Output PortBの送信モード設定に係らず、直ちにデバイスに送信される。
また、マークが付けされたジョブが複数あった場合には予め定められた優先順位に従って、送信すべきジョブを1つ決定する。送信モードはステップS1410において代行先のプリンタ(プリンタB)においてジョブ情報の参照が行われる際に、代行先のジョブ情報としてコピーされる。
このように第3の実施形態によれば、代行先のポートの設定(属性)が「スプール後送信」するモードであったとしても、当初ユーザが意図した最初に指定したプリンタのポートの設定(属性)を引き継ぐ事により、ユーザの意図した通りの速やかな印刷が実現される。
〔その他の実施形態〕
本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記憶した記憶媒体を、システムあるいは装置のコンピュータ(またはCPUやMPU)が記憶媒体に格納されたプログラムコードを読出し実行することによっても、達成される。
この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体はプログラムコードを供給するための記憶媒体としては、例えば、フロッピー(登録商標)ディスク、ハードディスク、光ディスク、光磁気ディスク、CD−ROM、CD−R、磁気テープ、不揮発性のメモリカード、ROMなどを用いることができる。
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているOS(オペレーティングシステム)などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
さらに、記憶媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。