以下、本発明の好適な実施形態を添付の図面を参照して説明する。
<第1実施形態>
図1は第1実施形態に係る印刷システムの全体構成を示すブロック図である。この印刷システムは、情報処理装置としてのクライアント(コンピュータ)101〜103と、印刷装置(デジタル複合機)としてのデバイス104〜105とを含み、これらが互いに接続されていることにより、全体としてネットワークを構成している。
クライアント101〜103の夫々には印刷制御プログラムが実行可能に格納されており、本印刷システムに含まれるデバイス104〜105を管理する機能を有する。又、クライアント101〜103の夫々は、この他に、ネットワークで使用されるファイルを蓄積したり、ネットワークの使用状態を監視したりする機能を有する。より、具体的には、クライアント101〜103は、印刷ジョブを作成し、デバイス104、105のスケジュールを管理するスケジューラへスケジュール要求を発行する。スケジューラはこのスケジュール要求に応じてジョブ情報を登録し、ジョブの実行順序を管理する。そして、スケジューラは、実行すべきジョブ情報に対応するジョブデータをデバイス104,105へ送信するように、送信許可をクライアント101〜103に対して送信する。クライアント101〜103は、スケジューラからの指示(送信許可)により、ジョブデータ(印刷データを含む)の転送を開始する機能を有する。尚、スケジューラは、デバイス104〜105のアプリケーションとして当該印刷システムに実装されてもよいし、外部接続された情報処理装置として当該印刷システムに実装されてもよい。
デバイス104〜105は、クライアント101〜103から、印刷データを含むジョブデータを受信し、受信したジョブデータを解析して印刷する物理的な装置としてのデバイスであり、本実施形態ではデジタル複合機を利用している。また、デバイス104〜105は、デバイスコントローラ(後述のデジタル複合機制御部503に相当)を備え、該デバイスコントローラに登録された印刷要求を順次印刷するプリンタエンジンも備える。デバイス104はジョブデータを受信すると、該ジョブデータに基づく印刷要求として登録し、登録した順番に対応するジョブデータの印刷を実行していく。なお、本印刷システムに含まれる装置間の通信は、イーサネット(登録商標)ケーブルなどを利用した有線通信でも良いし、電波や光などを利用した無線通信でもよい。
図2は、図1で示したクライアント101〜103のハードウェア構成を説明するブロック図である。
図2において、CPU200は、HD(ハードディスク)205に格納されているアプリケーションプログラム、プリンタドライバプログラム、OSや印刷制御プログラム等を読み出して各種処理を実行する。又、CPU200は、各種処理を実行するにおいて、RAM202にプログラムの実行に必要な情報、ファイル等を一時的に格納する制御を行う。ROM201は、基本I/Oプログラム等のプログラム、文書処理の際に使用するフォントデータ、テンプレート用データ等の各種データを記憶する。RAM202は、CPU200の主メモリやワークエリア等として機能する。
FD(フロッピー(登録商標)ディスク)ドライブ203は、記憶媒体としてのFD204に記憶されたプログラム等を本コンピュータシステムにロードするための記憶媒体読取ユニットである。なお、クライアント101〜103において、FDドライブ203に変えて、或いはFDドライブ203と共に、他の記憶媒体に対応した読取ユニットを備えても良い。他の記憶媒体としては、CD−ROM、CD−R、CD−RW、PCカード、DVD、ICメモリカード、MO、メモリスティック等、コンピュータが読み取り可能なあらゆる記憶媒体が挙げられる。
HD205は、大容量メモリとして機能する外部記憶装置であり、アプリケーションプログラム、プリンタドライバプログラム、OS、印刷制御プログラム、及び関係プログラム等を格納している。さらに、印刷データのスプール機能を提供するスプーラは、このHD205に確保される。
キーボード206は、ユーザがクライアント101〜103に対して、デバイスの制御コマンドの命令等を入力するための入力装置である。ディスプレイ207は、キーボード206から入力したコマンドや、デバイス104〜105の状態等を表示する。なお、実際にはクライアント101〜103上で稼動するオペレーティングシステムを介してディスプレイ207への表示指示がなされる。従って、このオペレーティングシステムに対して本実施形態の印刷処理プログラムによる表示指示が行われることにより後述する各表示が実現される。システムバス208は、クライアント101〜103内のデータの流れを司る。また、クライアント101〜103は、インタフェース209を介してネットワーク上の他の装置とデータのやり取りを行う。
図3は、図2に示したRAM202のメモリマップの一例を示す図である。図2は、印刷制御プログラムがRAM202にロードされ実行可能となった状態のメモリマップを示している。印刷制御プログラム及び関係データは、予めFD204からHD205にインストールされて、HD205からRAM202にロードするようにしても良いし、FD204から直接RAM202にロードして実行させても良い。さらに、印刷制御プログラムをROM201に記憶しておき、これがメモリマップの一部をなすように構成し、直接CPU200で実行することも可能である。
領域301には基本I/Oプログラムが格納される。基本I/Oプログラムは、クライアント101〜103の電源がONされたときに、HD205からOSをRAM202にロードし、OSの動作を開始させるIPL(イニシャルプログラムローディング)機能等を有しているプログラムである。領域302にOS(オペレーティングシステム)が格納される。又、領域303には、印刷制御プログラムが格納される。印刷制御プログラムは、クライアントにおいては、印刷データを転送したり、印刷ジョブの印刷先の変更を指示したり、印刷順序を変更したりする指示をするための制御を行う。領域304は、関連データを記憶する領域である。305はワークエリアで、CPU200が各種のプログラムを実行するための領域である。
図4は、図2に示したFD204のメモリマップの一例を示す図である。図4において、400はFD204のデータ内容を示しており、データの情報を示すボリューム情報401と、ディレクトリ情報402と、印刷制御プログラム403と、その関連データ404を含んでいる。
図5は図1におけるデバイス(デジタル複合機)104〜105の制御構成を示すブロック図である。図5において、画像形成部501は、紙媒体のハンドリングや、画像転写及び定着等の一連の画像形成プロセスを実行して、記録紙などの記憶媒体上に画像を形成する。又、画像形成部501は、形成した画像を、後述する外部記憶装置制御部509を介して大容量記憶装置510に保存する。画像形成部501は、例えばインクジェットプリンタや電子写真方式の画像形成ユニットを備えている。画像読取部502はスキャナ等を備え、原稿画像を光学的に読み取ってデジタル画像情報に変換する。得られたデジタル画像情報は、例えば画像形成部501に出力されて画像形成されたり、大容量記憶装置510に保存されたり、或はファックス部504やネットワークインタフェース部507に出力されて回線を介して伝送される。
デジタル複合機制御部503(以下、デバイスコントローラ)は、画像形成部501と画像読取部502の夫々の動作を制御する。例えば、デバイスコントローラ503は、画像読取部502で読み取った原稿情報を画像形成部501で複写するように制御する。又、デバイスコントローラ503は、ネットワークインタフェース部507、プリント処理部506、ファックス部504、操作部制御部505、外部記憶装置制御部509を有し、これら各部の間における情報のやり取りをも制御している。
ファックス部504は、ファクシミリ画像の送受信を行う。すなわち、ファクス部504は、画像読取部502で読み取ったデジタル画像情報をファクシミリ送信したり、外部より受信したファクシミリ信号を復号して画像形成部501で画像記録したりする等の処理を実行する。
操作部制御部505はデバイス104,105が具備する操作パネル511に対するユーザ操作に応じた信号を発生したり、また操作パネル511が具備する表示器に各種データやメッセージなどを表示したりする制御を行う。
プリント処理部506は例えばネットワークインタフェース部507を介して入力した印刷データや、外部記憶装置制御部509を介して大容量記憶装置510に保存した印刷データを処理し、ジョブ登録順で画像形成部501に出力して印刷する等の制御を行う。ネットワークインタフェース部507は通信回線を介して他の通信端末との間のデータの送受信を制御する。例えば、ネットワークインターフェース部507は、接続されたクライアント101〜103等の外部装置と所定のネットワーク通信プロトコルを用いて、外部装置から送られる印刷データやプリンタ制御命令等を含む各種データの送受信を行う。外部記憶装置制御部509は、接続した大容量記憶装置510に印刷データを保存したり、また逆に保存した印刷データを取り出して画像形成部501に出力したりする。本実施形態では、この大容量記憶装置510に、所謂ボックス機能における保存ジョブを保存する。
仮想マシン508はデバイスコントローラ503の上位に位置し、この仮想マシン508からデバイスコントローラ503を制御できるようになっている。またネットワークインタフェース507はデバイスコントローラ503と仮想マシン508の双方から直接利用可能であり、それぞれ独立して外部ネットワークにアクセスすることが可能であるように構成されている。
さらに、この仮想マシン508の上位には仮想マシン508が提供するAPI(Application Programming Interface)に対応したプログラミング言語で記述されたアプリケーションA〜Dが存在している。これらアプリケーションは、仮想マシン508を介して間接的にデバイスコントローラ503に働きかけることができ、また画像形成部501や画像読取部502を動作させることが可能になっている。
次に、本印刷システムのクライアントのソフトウェア構成について説明する。図6は、クライアント101〜103におけるソフトウェア構成の一例を示す図である。夫々の構成間の矢印は、アプリケーションから発行された描画コマンドを含む印刷ジョブもしくは保存ジョブが、どのように処理されるかを示している。又、各ブロックで示されたソフトウェア構成は、図2のCPU200によって実現される。
通常、Microsoft Word(登録商標)等のOS上で稼動する一般的なアプリケーションプログラム601は、印刷の指示を受け付けると、一連の描画コマンドを、OSを介して生成する。OSを介して生成された描画コマンドを受け取ったPDLドライバ602は、一連の描画コマンドに基づいてデバイス104〜105で解釈可能なPDLファイルを含む印刷ジョブを生成する。なお、以下の説明ではPDLドライバを用いた例により説明を行うが、これに限定されるものではない。例えば、BDL(Band description Language)や、圧縮ビットマップを作成するプリンタドライバ、或いは、アプリケーション及びOSによりプリンタドライバを介さずに印刷データを生成する形態などにも適用可能である。
PDLドライバ602は、デバイスへ印刷ジョブもしくは保存ジョブを送信するために、これらジョブをスプーラ603に渡す。ここではOSをWindows(登録商標)と仮定しているのでスプーラ603はウィンドウズスプーラである。ただし、本発明を適用するコンピュータのOSはWindows(登録商標)に限定されるものではなく、描画命令を備えるものであれば他のOSも適用可能であることは言うまでもない。
スプーラ603は、ユーザインタフェースを介してユーザによって選択指示されたジョブ制御ポートモニタ604に印刷ジョブを渡して、デバイス104〜105等に送信させる手順をとる(矢印a)。ここでは、ユーザは予めジョブ制御プリントサービス605に印刷データを転送するポートモニタ604(以降、ジョブ制御ポートモニタ)を指定して印刷を指示したものとして説明を進める。また、プリンタドライバインタフェースを介して設定された用紙サイズ、ステイプル指示等の印刷設定情報も、ジョブ制御ポートモニタ604に送信される。ジョブ制御ポートモニタ604は、受信したジョブをプリントサービス605(以降、ジョブ制御プリントサービスと称する)に送信する(矢印b)。
また、クライアント101〜103においてジョブ制御プリントサービス605と別のクライアント608のジョブ登録アプリケーション609は、ジョブ制御プリントサービス605にAPI610を介して印刷データを投入する(矢印g)。
ジョブ制御プリントサービス605は、転送された印刷ジョブもしくは保存ジョブ及びデバイスの状態を管理する機能を備える。また、ジョブ制御プリントサービス605は、デバイス104,105のスケジューラ(図8の800)から通知されるデバイス状態やジョブの状態などの情報を管理したり、スケジューラに対して所定の命令をしたりする機能も備える。これは、複数のデバイス104〜105のデバイス情報やジョブ情報を管理する機能に相当する。
又、ジョブ制御プリントサービス605は、印刷データ(即ち、ジョブデータ)をデバイス104,105に送信する前に、デバイス104,105が持つ印刷ジョブもしくは保存ジョブの順序管理機能に相当するスケジューラに印刷の要求(スケジュール要求)を発行する。そして、スケジューラの順序管理機能に基づき順番が到来した場合には、スケジューラからの送信許可に応じて、デバイス104〜105にジョブデータを送信する(矢印c、d、e)。
スケジューラは、印刷データの印刷完了を確認すると印刷完了の通知をジョブ制御プリントサービス605に通知(矢印f)したり、また、デバイス104,105の状態を通知したりする(矢印f)。
プリントマネージャ607は、ユーザが、ジョブ制御プリントサービス605内部でプリントジョブがどのような状態にあるかを調べたり、印刷ジョブや保存ジョブを操作したりするためのユーザインタフェースを提供するプログラムである。プリントマネージャ607は、ジョブ制御プリントサービス605のソフトウェアのインタフェース(API:Application Program Interface)を介して、ジョブ制御プリントサービス605と情報・指示をやり取りしている。プリントマネージャ607は、主に、ジョブ制御プリントサービス605が管理するデバイス104〜105の状態情報をイベントとして取得する機能を備える。イベントの通知の種別としては、トナー残量が少なくなった警告、クライアントとデバイスとの通信障害、メモリ不足、排紙トレイ満載などのエラー/警告情報の通知や、エラー状態から正常状態に復帰した正常情報の通知などが想定される。ここでのジョブ制御プリントサービス605はネットワークを介して通信可能な各デバイス(印刷装置)の印刷実行中、電力制御状態、障害情報(紙ジャム)等のステータスの通知を受け付ける機能を備える。又、プリントマネージャ607は、ジョブ制御プリントサービス605に対してデバイスを指定したイベントを発行する。ジョブ制御プリントサービス605は発行されたイベントに基づくデバイスのステータスを認識して、そのステータスの監視に基づく結果をプリントマネージャ607に通知する。又、プリントマネージャ607が提供するユーザインターフェースにより、保存ジョブの指定、印刷実行を指示する(ボックス機能による印刷を指示する)ことができる。
次に、図7を用いてアプリケーション601からデバイス104,105までの印刷ジョブの流れについて説明する。ここで、図6と同じソフトウェア構成について同じ参照番号を付与している。
図7に示すように、概念的には、PDLドライバ602、スプーラ603、ジョブ制御ポートモニタ604は、デバイス104〜105ごとに用意されている。OSがウィンドウズの場合には、これらをまとめてウィンドウズプリントシステム700と称する場合もある。ジョブ制御プリントサービス605には、デバイス104〜105に対応する数のプリントキュー701、701A及び出力ポート702、702Aが含まれている。これらのプリントキュー701,701Aや出力ポート702,702Aは、ジョブ制御プリントサービス605が管理している。
印刷を行う場合、アプリケーション601はプリンタを指定して印刷指示を発行する。この印刷指示に基づいて、PDLドライバ602は生成した印刷ジョブをジョブ制御ポートモニタ604に渡し、ジョブ制御ポートモニタ604はその印刷ジョブをジョブ制御プリントサービス605に渡す。ジョブ制御プリントサービス605に渡された印刷ジョブ情報は、まずプリントキュー701に保持される。プリントキュー701は、出力ポート702に印刷ジョブを受け付けるよう指示を出す。出力ポート702は、印刷するジョブを受け付けると、出力ポートに設定されたIPアドレスに該当する、デバイス104,105のスケジューラ(図8の800)に対してスケジュール要求を発行する。デバイス104,105のスケジューラは、スケジュール要求に応じて当該ジョブ情報を登録し、自身が持つスケジューリング機能に基づいて複数のジョブ制御プリントサービス605から受け付けたジョブのスケジューリング処理を行う。そして、スケジューラは、スケジューリングに則って出力ポート702に対してジョブデータの送信を許可する送信許可(印刷指示)を発行する。デバイス104,105(スケジューラ)からの送信許可を受け付けた出力ポート702はデバイス104,105にジョブデータを送信する。
次に、本印刷システムのスケジューリング機能やクライアント101〜103から受け付けた印刷ジョブの管理機能を持つスケジューラについて説明する。本実施形態では、スケジューラはデバイス上のユーザアプリケーションにより実現されており、以下、そのソフトウェア構成について説明する。
図8はスケジューラ800の機能構成を示すブロック図である。スケジューラ800は、仮想マシン508の上位の、仮想マシン508が提供するAPIに対応したプログラミング言語で記述されたアプリケーションである。スケジューラ800は、仮想マシン508を介して間接的にデバイスコントローラ503に働きかけることができ、また画像形成部501や画像読取部502を動作させることが可能である。
通信接続管理部801は、クライアント101〜103の接続状況や、クライアントに通知すべき情報を管理する。通信接続管理部801は、接続されているクライアントのクライアント情報1002(図10)をクライアント管理キュー1001で管理する。通信接続管理部801は、仮想マシン508が提供するAPI、ネットワークインタフェース部507を経由してクライアントと通信を行う。
スケジュール管理部802は、クライアント101〜103から受け付けた印刷ジョブのスケジューリングを行う。スケジュール管理部802は、ジョブ管理部803とデバイス管理部804を具備する。ジョブ管理部803は、クライアント101〜103から発行されたスケジュール要求や、クライアント101〜103が印刷したジョブを管理する。ジョブ管理部803は、クライアントがスケジュール要求として発行したジョブの情報(ジョブ情報902、図9)をジョブ管理キュー901で管理している。デバイス管理部804は、デバイスコントローラ503が持つプリンタの状態や受け付けた印刷ジョブの状態をイベントハンドラ805経由で受け付ける。デバイス管理部804は、デバイスコントローラ503から受け付けたイベントを通信接続管理部801やジョブ管理部803に通知する。
また、スケジューラ800は、デバイス104〜105に対してオプションとして追加可能であり、スケジューラ800がデバイスに具備されている場合といない場合とではデバイスの動作は異なってくる。後述の図15、図16B、図18、図19等のフローチャート又はシーケンスはスケジューラ800がオプションとしてデバイスに具備されている場合の処理を示す。一方、スケジューラ800がデバイスに具備されていない状態でローカル印刷機能が利用された場合には、印刷指示に対応する印刷要求はスケジューラ800を介することなくデバイスコントローラに直接投入される。スケジューラ800がオプションとして具備されていない場合には、スケジューラ800によるジョブスケジューリングが行われていないので、リモート印刷の印刷要求をデバイスコントローラに直接投入しても実質的に印刷順序という観点で問題は無い。
図9は、クライアント101〜103が印刷すべく発行したスケジュール要求に付加されるジョブ情報902と、複数発生するジョブ情報を管理するジョブ管理キュー901のデータ構成例を示す図である。ジョブ情報902は、クライアント101〜103が印刷を開始するために発行するスケジュール要求に付加される印刷ジョブの情報を含む。このジョブ情報902は、印刷ジョブの「ドキュメント名」、ジョブ管理部803が発行した「ジョブID」、クライアントにおいて印刷を開始した「ユーザ名」、ジョブの「ページ数」、印刷ジョブの状況を表す「ジョブ状態」、「優先度」等を含む。
「ジョブ状態」は、クライアント101〜103が印刷のスケジュール要求を発行してから当該ジョブがプリンタから無くなるまでの間の当該ジョブの状態を表す。「ジョブ状態」としては、印刷待機中、スケジュールアップ状態(送信許可状態)、転送中、転送済み、印刷完了、保存中、保存済などが挙げられる。「ジョブID」は、印刷データに含まれるジョブのIDであり、デバイスコントローラ503内でのジョブ状態を通知するとき等において用いられる。「優先度」はスケジューラ800が印刷順序を制御する際に利用される。即ち、スケジューラ800は、「優先度」の値の高いものから優先的にジョブデータの送信を許可していく。尚、「優先度」には、クライアントから発行され設定されるものと、スケジューラ800の判断により設定されるものがある。また、以下では、スケジューラによるジョブデータの送信許可を「印刷許可」と称する。即ち、スケジューラによる「印刷許可」とは、印刷ジョブデータ又は印刷データの送信許可のことであり、クライアントからのジョブデータ(印刷データ)の転送と即印刷することとは必ずしも一致しない。
ジョブ管理キュー901は、複数のジョブ情報902を管理する管理キューである。スケジューラ800(ジョブ管理部803)は、スケジュール要求を受け付けるとジョブ情報902をジョブ管理キュー901に登録し、印刷ジョブが印刷終了すると、該当するジョブ情報を削除する。
図10は、通信管理部801が管理する、ジョブ制御プリントサービス605のクライアント情報1002と、ジョブ制御プリントサービス605のクライアント情報1002を管理するクライアント管理キュー1001を示す図である。
クライアント情報1002は、「クライアントID」、「クライアントIPアドレス」、「登録イベント」を有する。「クライアントID」は、接続するクライアント毎に通信接続管理部801が割り振ったIDである。又、「クライアントIPアドレス」は、ジョブ制御プリントサービス605のIPアドレスを示す。「登録イベント」は、接続するクライアントが登録したイベントの種類などの情報を持つ。ここで、イベントの種類とは、デバイスコントローラ503が発行するデバイス状態のイベントやジョブ状態のイベントの種類を表す。
クライアント管理キュー1001は、接続したジョブ制御プリントサービス605のクライアント情報をキューの形式で保持する管理キューである。クライアントとのセッションが開始されると、該当するクライアントの情報がクライアント管理キュー1001に登録され、切断すると該当するクライアント情報が削除されるようになっている。
図11は、スケジューラ800のスケジュール管理部802が、ジョブ制御プリントサービス605からスケジュール要求を受け付けてから印刷許可を発行するまでの処理を示すフローチャートである。
スケジュール管理部802は、ステップS1101において、ジョブ制御プリントサービス605からの通知を受け付けると、受け付けた通知がスケジュール要求の通知なのか、転送済み状態の通知なのかを判断する。スケジュール要求の通知であれば、ステップS1101からステップS1102に処理を移行する。ステップS1102において、スケジュール管理部802は、ジョブ管理部803で発行したジョブIDと、スケジュール要求に付加された情報を用いてジョブ情報902を生成する。そして、スケジュール要求を受け付けた順および、スケジュール要求に付加された優先度を考慮した順序で、生成したジョブ情報をジョブ管理キュー901に登録する。
次に、ステップS1103において、ジョブ管理キュー901に登録されているジョブ情報のジョブ状態を確認する。ジョブ状態が「印刷許可」、「転送中」のものがあれば、既にあるクライアントに印刷データを転送するように指示しているため、ステップS1101に処理を移行する。ジョブ状態が「印刷許可」或は「転送中」のものがなければ、ジョブ制御プリントサービス605から印刷データが送られてくる予定のジョブは無い。従って、スケジュール管理部802は、次のジョブに対する印刷許可の発行を行うべく、ステップS1104以降に処理を進める。
まず、ステップS1104において、スケジュール管理部802は、ジョブ管理キュー901にスケジュール待機中のジョブが存在するかどうかを調べる。スケジュール待機中のジョブがジョブ管理キュー901に存在しない場合は、印刷許可をすべきジョブが存在しないので、ステップS1101に処理を戻す。一方、スケジュール待機中のジョブが見つかった場合は、ステップS1105に処理を移行する。ステップS1105では、ジョブ管理キュー901から実行すべきジョブを検出し、そのジョブの発行元のクライアントに対して印刷データの転送を開始させる印刷許可を通知する。尚、スケジュール管理部802は、ジョブ管理キュー901を調べ、スケジュール要求を受け付けた順及び夫々のジョブに設定された優先度に基づいて、実行すべきジョブを決定する。その後、ステップS1106において、スケジュール管理部802は、該当するジョブ情報のジョブ状態を印刷許可状態に更新し、ステップS1101に処理を移行する。
図12は、ジョブ管理部803が、デバイス管理部804からジョブ状態通知イベントを受け付けた際、及びジョブ制御プリントサービス605からジョブリスト要求を受け付けた際の処理を示すフローチャートである。
ステップS1201において、ジョブ管理部803は、通信接続管理部801やデバイス管理部804からの通知を受け付けると、ジョブ状態通知であるかジョブリスト要求であるかを判断する。ジョブ状態通知はデバイス管理部804が発行するイベントである。又、ジョブリスト要求は、クライアントのジョブ制御プリントサービス605から通信接続管理部801を介してジョブ管理部803に到達する。
デバイス管理部804からのジョブ状態通知であると判断された場合は、ステップS1202に処理を移行し、ジョブ管理部803は受信したジョブ状態通知に従って該当するジョブ情報のジョブ状態を更新する。そして、ステップS1203に進み、その通知が印刷完了の通知であるか否かを判断する。印刷完了でなければ処理をステップS1204に移行し、通信接続管理部801に更新されたジョブ状態を通知するためのイベントをクライアントへ発行するように通知する。
一方、ステップS1203において印刷完了の通知であると判断された場合は、ステップS1205に処理を移行する。ステップS1205では、ジョブ管理キュー901から該当するジョブを削除する。そして、ステップS1206で、通信接続管理部801にジョブの完了イベントをクライアントへ発行するように通知する。そして、処理をステップS1201に戻す。
一方、ステップS1201で、ジョブ制御プリントサービス605からのジョブリスト要求であると判断された場合は、ステップS1207へ進む。ステップS1207では、ジョブ管理キュー901に登録されたジョブ情報902のリストを通信接続管理部801に通知し、当該リストを要求元のクライアントへ送信させる。
図13は、デバイス管理部804が、デバイスコントローラ503からイベントハンドラ805を経由してデバイス状態やジョブ状態通知を受け付け、ジョブ管理部803や通信接続管理部801に通知する処理を説明するフローチャートである。
ステップS1301において、スケジューラ800が起動すると、デバイス管理部804はイベントハンドラ805を経由してデバイスコントローラ503に対してイベント登録の処理を行う。例えば、デバイスの状態が変化した場合や、デバイスコントローラ503が処理する印刷ジョブの状態が変化した場合に、それらの状態を通知するようにイベント登録の処理が行われる。
ステップS1302において、デバイス管理部804は、デバイスコントローラ503で発生したイベントをイベントハンドラ805経由で受け付けると、当該イベントがジョブのイベントであるかデバイスのイベントであるかを判断する。ジョブのイベントであれば、ステップS1303へ進み、ジョブ管理部803にジョブのイベントを通知し、ステップS1302に処理を移行する。デバイスのイベントであれば、処理をステップS1304に移行し、デバイスの状態をデバイス管理部804で保持する。そして、ステップS1305へ進み、通信接続管理部801にデバイスイベントを通知し、処理をステップS1302に戻す。
図14は、ジョブ制御プリントサービス605からの要求や通知、デバイス管理部804からの通知、ジョブ管理部803への要求や通知を処理する通信接続管理部801の処理を説明するフローチャートである。
ステップS1401において、通信接続管理部801は、ジョブ制御プリントサービス605やデバイス管理部804、ジョブ管理部803からの通知や要求を受け付け、どこからの通知や要求であるかを判断する。ステップS1401において、受け付けた要求やイベントがジョブ制御プリントサービス605からの接続要求であると判定されると、ステップS1402に移行する。ステップS1402では、クライアント管理キュー1001に通信接続管理部801で発行したクライアントIDと、要求を発したクライアントのIPアドレスを設定し、クライアント管理キュー1001にクライアント情報を登録する。
又、ステップS1401において受け付けた要求やイベントがジョブ制御プリントサービス605からのイベント登録であれば、ステップS1403に処理を移行し、該当するクライアント情報の登録イベントに通知するイベントの種類を設定する。上述したように、イベントの種類には、ジョブの状態の変化を通知するジョブイベント、デバイスの状態の変化を通知するデバイスイベントがある。
又、ステップS1401において受け付けた要求やイベントがデバイス管理部804からのデバイスイベントやジョブ管理部803からのジョブイベントであれば、ステップS1404に進む。ステップS1404では、これらのイベントを通知すべきクライアントを認識するために、クライアント管理キュー1001に登録された全てのクライアント情報1002から、クライアント情報の登録イベントの設定を参照する。通知すべきクライアントが認識されたならば、通知すべき全てのクライアントのIPアドレスを保持する。そして、ステップS1405において通知すべき全てのクライアントに対して、ステップS1401で受け付けたイベントを送信する。
又、ステップS1401において受け付けた要求やイベントがクライアントからの切断要求であればステップS1406に処理を移行し、クライアント管理キューから該当するクライアントのクライアント情報を削除する。
次に、図15のフローチャートを用いて本実施形態による、ローカル印刷ジョブとリモート印刷ジョブの統合的なスケジュール管理処理について説明する。尚、デバイスはネットワークを介して受信した印刷データを用紙に印刷するリモート印刷機能、ネットワークを介するか又は原稿を読み取って得た印刷データを記憶する印刷データ蓄積機能、記憶した印刷データを用紙に印刷するローカル印刷機能を持つ。なお、ローカル印刷機能に利用される印刷データ蓄積機能(不揮発性記憶装置)に記憶された印刷データとしては、例えば、ページ記述言語形式データ、又は、ビットマップ画像データ、又は、XML形式データ、又は、PDLデータ等から生成した中間言語データ等が想定される。これら印刷データ蓄積機能に蓄積された印刷データをドキュメントと呼ぶこともある。また、リモート印刷機能としては、特に上述の図11のフローチャートに従い、ジョブ制御プリントサービス605及びスケジューラ800間で行われるスケジュール処理に従う印刷処理が挙げられる。そして、リモート印刷とはリモート印刷機能による印刷であり、ローカル印刷とはローカル印刷機能による印刷を用いた印刷である。
スケジューラ800は、ステップS1501においてクライアントもしくは操作パネル511からスケジュール要求を受信すると、ステップS1502においてスケジュールの種類を判断する。ここでのスケジュールの種類とは、ローカル印刷経路かリモート印刷経路かを指す。尚、クライアントからのスケジュール要求はネットワークインターフェース部507及び通信接続管理部801によりスケジューラ800に受け付けられる。又、操作パネル511からのスケジュール要求は、操作部制御部505及び通信接続管理部801を介してスケジューラ800に受け付けられる。上記判断の結果、リモート印刷の場合はステップS1507へ、ローカル印刷の場合はステップS1503へ処理を移行する。
ローカル印刷の場合、スケジューラ800は、ステップS1503において、ローカル印刷のスケジュール要求に対応したジョブ情報をジョブ管理キュー901に登録する。このとき、ジョブ情報のドキュメント名としては保存ジョブのドキュメント名、ジョブIDとしては保存ジョブのジョブIDが登録される。尚、保存ジョブは大容量不揮発性記憶装置510に格納されたジョブである。例えば、所謂ボックス機能により、プリントデータに基づく画像データが保存ジョブとして保持される。ステップS1504で当該ジョブが印刷順序に達するまで待機する。印刷順序に達した場合、処理はステップS1505に進み、スケジューラ800は自身に印刷許可を発行する。そして、ステップS1506においてデバイスコントローラ503に保存ジョブの印刷を指示する。例えば、ボックス機能は、印刷許可に応じて対応する印刷データをデバイスコントローラへ送信し、これを印刷させる。
ステップS1502においてリモート印刷が要求された場合は、まず、ステップS1507において、スケジューラ800のジョブ管理キュー901にジョブ情報のスケジュール登録を行う。そして、ステップS1508において当該ジョブが印刷順序に達するまで待機する。当ジョブが印刷順序に達した場合は、ステップS1509において印刷許可を発行し、ステップS1510でスケジュール要求を行ったクライアントに対して印刷許可を通知する。尚、以上は単一のジョブに対する処理の観点から説明している。複数のジョブが存在する場合は、ジョブ管理キューに登録されたジョブの登録順序や優先度に従ってその実行順序が決定され、決定された順で各ジョブが実行される。
ステップS1511において、クライアント101〜103又は操作パネル511はユーザからの印刷の指示を受け付ける。受け付けた印刷指示がローカル印刷の場合は、ステップS1512からステップS1516へ進む。ステップS1516では、印刷対象の保存ジョブのドキュメント名およびジョブIDをデバイスコントローラ503から取得する。ここで取得されるドキュメント名は保存されたジョブの名称であり、ジョブIDはデバイスコントローラ503が保存ジョブに対して発行したものである。そして、当該保存ジョブのスケジュール要求をスケジューラ800に対して発行し、本処理を終了する。
また、スケジュールの種類がリモート印刷の場合は、ステップS1512からステップS1513へ進む。ステップS1513では、スケジュール要求をスケジューラに発行し、ステップS1514においてスケジューラからの印刷許可を待つ。印刷許可(上述のステップS1510で発行される)を受信すると、ステップS1515において、クライアントはデバイスコントローラ503に対して対応するジョブデータ(印刷データを含む)を転送する。デバイスコントローラ503は受信したジョブデータ(印刷データ)を印刷要求として順次登録し、順次に印刷データを印刷していく。
上記処理により、リモート印刷機能と、印刷データ蓄積機能と、ローカル印刷機能を備えた画像処理装置において、リモート印刷とローカル印刷を統合的にスケジュール管理することが可能となる。即ち、スケジュール管理部802は、ネットワークを介して外部装置(クライアント101〜103)より受信したジョブデータを順次解析して印刷する処理を画像形成部501に行わせるための印刷要求を受信してジョブ管理キュー901に登録する。例えば、図11のステップS1101、S1102、図15のステップS1501,S1502,S1507に示したように、スケジュール管理部802は、リモート印刷に係るスケジュール要求の受信に応じ、対応するジョブ情報をジョブ管理キュー901に登録する。同様に、ローカル印刷に係るスケジュール要求を受信した場合も、スケジュール管理部802は、対応するジョブ情報をジョブ管理キュー901に登録する(図15のステップS1501〜S1503)。そして、スケジュール管理部802は、ジョブ管理キュー901に登録されたリモート印刷及びローカル印刷のジョブの実行順序を、その受付順及び優先度に基づいて一元的に管理し、該実行順序に従って画像形成部501に印刷を実行させる。
以上説明したジョブ管理制御を実現する際の第1実施形態の印刷システムにおける動作を、各装置間の通信動作の観点から説明する。図16Aは、本印刷システムのリモート印刷における装置間の通信動作を説明する図である。又、図17はジョブ管理に係る通信内容を説明する図である。図16A、図17を参照して、クライアント101〜103のジョブ制御プリントサービス605がジョブを受け付けてデバイス104,105にスケジュール要求を発行してから、プリンタで印刷が終了するまでの通信内容を説明する。
クライアントのジョブ制御プリントサービス605(以下、単にクライアントということもある)は、印刷データを受け付けると、スケジューラ800とセッション接続を開始する。そして、クライアントは、クライアントの情報を通知する接続要求コマンド、ジョブ/デバイス状態を通知してもらうためのイベント登録をスケジューラ800に通知する。更に、クライアントは、スケジューラ800がスケジュール管理するジョブの情報を取得するジョブリスト取得コマンドを発行する。
スケジューラ800は、接続要求を受け付けると、当該クライアント情報をクライアント管理キュー1001に登録する。又、イベントの登録を受け付けると該当するクライアント情報の登録イベントに設定する。又、ジョブリスト要求を受け付けると、ジョブ管理キューに登録されているジョブ情報のリストを送信する。
次に、クライアントは印刷を予約するためのスケジュール要求のコマンドを発行する(図17の1700,1701)。スケジューラ800はスケジュール要求を受け付けると、ジョブ管理キュー901にジョブ情報を登録する(図17の1702、1703)。ジョブ情報には、図9に示した情報が設定される。スケジューラ800は、デバイス104,105が印刷データを受け付けられるようになったか否かを判断する。そして、スケジューラ800は、デバイス104,105が印刷データを受け付けられるようになったと判断すると、クライアントに印刷許可を発行し、ジョブデータ(印刷データ)の送信を開始するように促す(図17の1704,1705)。
また、スケジューラ800は、印刷許可を発行すると、ジョブ管理キュー901で管理されているジョブ情報のジョブ状態を印刷許可状態に更新する。クライアントは、印刷許可を受け付けるとLPD/RAWへ印刷データの転送を開始する(図17の1706,1707)。尚、LPD/RAWはLPDプロトコル或はRAWプロトコルによる印刷データの転送を受信するユニットである。又、クライアントは印刷データの転送が開始されるとスケジューラ800に対して転送開始の通知を行う。スケジューラ800は、転送開始通知を受けると、ジョブ情報のジョブ状態を転送中に更新する。図17の例では、印刷許可1704を受けたジョブJob1のデバイス(LPD/RAW)へのジョブ転送1706がまず実行され、これが転送済みになったら次のジョブJob2について印刷許可が通知され、ジョブ転送1707が実行される。このジョブ転送1707がデバイスコントローラに対する実際の印刷要求に相当する。
デバイス104,105において、LPD/RAWは、印刷データを受け付けるとデバイスコントローラ503にデータを転送する。デバイスコントローラ503は、LPD/RAWから転送されたデータにより画像形成部501を用いて印刷を開始する。デバイスコントローラ503は、印刷待機状態1708を経て印刷を開始すると、当該ジョブの状態(印刷状態1709)をスケジューラ800に通知する。スケジューラ800は、クライアント情報の登録イベントの情報を基に、クライアントにジョブの印刷状態を通知する。
ジョブ制御プリントサービス605は印刷データの転送が終了するとスケジューラ800に対して、転送終了通知を送信する。スケジューラ800は、転送終了通知を受けると、ジョブ情報のジョブ状態を転送済に更新する。
デバイスコントローラ503で印刷処理が終了すると、ジョブの状態として印刷完了の通知をスケジューラ800に通知する。スケジューラ800は、クライアント情報の登録イベントの情報を基に、クライアントにジョブの印刷完了の状態を通知する。
クライアントが上記印刷完了の状態の通知により印刷が完了したこと(図17の例では2つのジョブ(Job1,Job2)の印刷の完了)を確認すると、以降は、デバイスからクライアントへの通知は不要となる。よって、クライアントは、スケジューラ800に対して、イベント通知の登録の解除要求を発行する。イベント解除要求を受け付けた、スケジューラ800は、クライアント情報の登録イベントにイベントを通知しない旨の情報を設定する。
その後、ジョブ制御プリントサービス605は、スケジューラ800との接続を終了するための切断要求を発行し、セッションを終了する。スケジューラ800は、切断要求を受け付けると、クライアント管理キューから該当するクライアント情報を削除し、該クライアントとの処理を終了する。
図16Bは、ローカル印刷におけるシステムの通信を説明する図である。図16B、図17を参照して、デバイス104,105に接続された大容量記憶装置510に格納された保存ジョブの印刷処理におけるシステムの通信内容を説明する。図16Bは、クライアント(コンピュータ)101〜103もしくはデバイス104,105に接続された操作部(デバイスパネル)からスケジュール要求を発行し、プリンタで印刷が終了するまでのやり取りを示している。
ジョブ制御プリントサービス605、もしくはデバイス104,105に接続されている操作部は、印刷の要求指示を受け付けると、スケジューラ800とセッション接続を開始する。以下、ジョブ制御プリントサービス605、もしくはデバイス104,105に接続されている操作パネル511をまとめてクライアント/デバイスパネルと称する。
クライアント/デバイスパネルは、クライアントの情報を通知する接続要求コマンド、ジョブ/デバイス状態を通知してもらうためのイベント登録、スケジューラ800がスケジュール管理するジョブの情報を取得するジョブリスト取得コマンドを発行する。
スケジューラ800は、接続要求を受け付けると、クライアント情報をクライアント管理キューに登録する。又、スケジューラ800は、イベントの登録を受け付けると、該当するクライアント情報の登録イベントを設定する。又、スケジューラ800は、ジョブリスト要求を受け付けると、ジョブ管理キューに登録されているジョブ情報のリストをクライアントに送信する。
次に、クライアント/パネルは、保存ジョブ(図17ではBoxJpb4)の印刷を予約するためのスケジュール要求のコマンドを発行する。即ち、クライアント又はデバイスの操作パネルから保存ジョブの指定及び印刷を指示することによりスケジューラ800に対して保存ジョブのスケジュール要求が発行される(1710)。尚、このような保存ジョブの印刷機能は所謂ボックス印刷機能として知られたものであり、そのユーザインターフェース等の説明は省略する。
スケジューラ800は保存ジョブのスケジュール要求(1710)を受け付けると、ジョブ管理キューにジョブ情報を登録する(1711)。なお、このとき、スケジューラ800には、保存ジョブ及び外部のクライアントの双方から登録されたジョブ情報が混在して登録されている。ジョブ情報には、保存ジョブ名等の情報を設定する。スケジューラ800は、デバイス104,105が、当該保存ジョブ1711の印刷を開始できるようになったか否かを判断する。スケジューラ800は、デバイス104,105が印刷を開始できるようになったと判断すると、印刷許可を自身に発行し、保存ジョブの印刷開始を指示し(図17の1712)、ジョブ情報のジョブ状態を印刷開始状態に更新する。
デバイスコントローラ503は、印刷開始が指示されると、大容量記憶装置510から当該スケジュール要求によって指定されている保存ジョブを読み出し、画像形成部501を用いて印刷要求を行う(1713)。デバイスコントローラ503は、印刷が開始されるとジョブの状態をスケジューラ800に通知する。尚、当該スケジュール要求がクライアントから発行された場合、スケジューラ800は、クライアント情報の登録イベントの情報を基に、クライアントにジョブの印刷状態を通知することになる。
デバイスコントローラ503は、印刷処理が終了すると、ジョブの状態として印刷完了の通知をスケジューラ800に通知する。スケジューラ800は、当該スケジュール要求がクライアントから発行された場合には、クライアント情報の登録イベントの情報を基に、クライアントにジョブの印刷完了の状態を通知する。
クライアントは、上記通知により印刷が完了したことを確認すると、以降はデバイスから通知を受ける必要なくなる。従って、クライアントは、スケジューラ800からのイベント通知の登録の解除要求を発行する。イベント解除要求を受け付けたスケジューラ800は、クライアント情報の登録イベントにイベントを通知しない旨の情報を設定する。
その後、クライアントは、スケジューラ800との接続を終了するための切断要求を発行し、セッションを終了する。スケジューラ800は、切断要求を受け付けると、クライアント管理キューから該当するクライアント情報を削除し、該クライアントとの処理を終了する。
以上のように、第1実施形態によれば、通常のリモート印刷のジョブ(図17ではJob1,Job2)と、保存ジョブの印刷を行うローカル印刷(図17のBoxJob4)のジョブをジョブ管理キュー901によって一元的に管理することができる。このため、例えば、Job1或はJob2のジョブ転送中(1707)にボックス印刷(BoxJob4)の指示が発生した場合に、Job1とJob2の間にBoxJob4が割り込んで印刷されてしまうといったような事態を防止できる。
また、リモート印刷とローカル印刷を統合的にスケジュール管理できるので、ジョブそれぞれに設定された優先度によって印刷順序の入れ替えを行ったりする等、リモート印刷とローカル印刷が混在する環境において多彩なジョブ管理を実現できる。例えば、スケジュール要求時に発行される優先度設定により、ローカル印刷ジョブは常時優先度を最高に設定することで、リモート印刷に割り込まれることなく印刷することが可能である。また、複数のリモート印刷ジョブに高優先度を設定することにより、それら複数のリモート印刷ジョブの間にローカル印刷ジョブが出力されることを防止できる。また、スケジューラに認証機能を設け、ログイン情報を利用することで、権限によって優先度を設定したりすることも可能であり、よりユーザビリティの高いスケジュール管理を行うことが可能である。
なお、上述したように、スケジューラ800がデバイスに具備されていない状態でローカル印刷機能が利用された場合には、印刷指示に対応する印刷要求はそのまま経路1712及び1713を経て、デバイスコントローラに投入されることになる。もともと、スケジューラ800によるジョブスケジューリングが行われていないので、リモート印刷の印刷要求がデバイスコントローラに直接投入されても実質的に印刷順序という観点で問題は無い。
<第2実施形態>
第2実施形態では、デバイスコントローラ503にジョブ生成イベントを予め登録しておき、ジョブ生成時に発生したイベントを検知することによりジョブの生成、スケジュールが行われる。そのため第2実施形態においては、保存ジョブ、印刷ジョブにとどまらず、その他のローカルジョブ、例えば複写ジョブやFAXジョブ等、印刷が伴うあらゆるジョブのスケジュール管理が可能となる。
図18は第2実施形態におけるスケジューラ800の処理を説明するフローチャートである。第2実施形態のスケジューラ800は、デバイスコントローラ503におけジョブの生成を検知してスケジュール管理を行う。この生成が検知されるジョブには、第1実施形態で説明したローカル印刷(保存ジョブの印刷)のジョブが含まれる。更に、生成が検知されるジョブとして、コピー操作によって画像読取部502からの画像を画像形成部501によって記録するジョブ、ファックス部504によって受信されたFAXデータに基づく画像を画像形成部501によって記録するジョブ等が挙げられる。尚、リモート印刷に係る動作は第1実施形態と同様である。
デバイスコントローラ503は、複写指示やFAX受信による印刷処理の開始時に、ジョブ生成をスケジューラ800に通知する。ステップS1701において、スケジューラ800はデバイスコントローラ503からジョブ生成の通知を受信すると、ステップS1702においてデバイスコントローラ503へ当該ジョブの一時停止を指示する。そして、ステップS1703において当該ジョブのスケジュール登録を行う。即ち、ジョブ管理キュー901に当該ジョブに対応するジョブ情報を登録する。このとき、ジョブの種類によってはそのまま一時停止を解除して印刷するよう設定することもできるし、またジョブの種類によって印刷の優先度を自動設定することも可能である。
次に、ステップS1704において、スケジューラ800は、スケジュールした印刷ジョブが印刷順に達するまで待機し、印刷順序に達するとステップS1705で自身に印刷許可を発行する。ステップS1706において、先ほど一時停止したジョブの一時停止解除をデバイスコントローラ503に依頼する。
次に、図19及び図20を参照して、デバイスコントローラ503におけるジョブの生成から、画像形成部501で印刷が終了するまでのやり取りについて説明する。尚、図20において、Job1、Job2に関する動作は図16Aにより説明したとおりである。
スケジューラ800はデバイスコントローラ503の起動時、もしくはスケジューラ自身の起動時に予めジョブ生成を検知するためのイベント登録を行う。このイベント登録により、デバイスパネルやクライアントから印刷を伴うジョブが投入された場合に、デバイスコントローラ503はスケジューラ800に対してジョブ生成のイベントを通知する。図20では、デバイスパネルからのコピー指示2001に応じてプリント処理部506が原稿を読み取って得られたイメージによるジョブをデバイスコントローラ503に生成させる(2002)。或は、ファックス部504がファクシミリイメージによるジョブをデバイスコントローラ503に生成させる。デバイスコントローラ503は、ファックス部504又はプリント処理部506からの指示に応じてジョブ2010を生成すると、スケジューラ800にジョブ生成通知を行う(2003)。通知を受けたスケジューラ800は当ジョブ2010の一時停止をデバイスコントローラ503に指示(図20の一時停止指示2004)して、当該ジョブ2010の印刷を停止させ、ジョブ管理キュー901に当該ジョブを登録する(図20の2005)。このとき、ジョブの種類によってはそのまま一時停止を解除して印刷するよう設定することもできるし、またジョブの種類によって印刷の優先度を自動設定することも可能である。
スケジュール登録したジョブが印刷順序に達すると、スケジューラ800は自身に印刷許可を発行し、デバイスコントローラ503に対して一時停止の解除を行う(2006)。デバイスコントローラ503は、先のジョブ一時停止指示に応じて処理を停止していたジョブ2010の処理を開始し、印刷を行う。又、デバイスコントローラ503は、ジョブの状態の変化があるたびにスケジューラ800に通知する。
こうしてジョブの状態が完了に変化すると、その旨をデバイスコントローラ503はスケジューラ800に通知し、その通知を受信したスケジューラは自身のジョブ管理キューに登録されたジョブ情報を削除する。
また、スケジューラ800は自身の終了処理時に起動時に登録したイベントの解除をデバイスコントローラ503に依頼する。
尚、第2実施形態において、リモート印刷は第1実施形態と同様の手順でスケジュール管理を行うものとしたが、リモート印刷及びローカル印刷を含む全てのジョブに関して第2実施形態の手順を適用してもよい。即ち、全てのジョブについて、デバイスコントローラ503からのジョブ発生検知を利用したスケジュール登録、管理を行うようにしてもよい。或は、リモート印刷及びボックス機能によるローカル印刷については第1実施形態によるスケジュール登録を適用し、FAXやコピーによって発生したジョブについては第2実施形態によるスケジュール登録を適用するという構成にしてもよい。
上記処理により、リモート印刷機能と、印刷データ蓄積機能と、ローカル印刷機能を備えた画像処理装置において、リモート印刷とローカル印刷を統合的にスケジュール管理することが可能となる。ここで、リモート印刷機能とは、ネットワークを介して受信した印刷データを用紙に印刷する機能である。印刷データ蓄積機能とは、ネットワークを介するかもしくは原稿を読み取って得た印刷データを記憶する機能である。又、ローカル印刷機能とは、記憶した印刷データを用紙に印刷する機能である。又、第2実施形態によれば、コピー操作等によって実施される印刷や、ファックス受信によって実施される印刷等も、統合的なジョブ管理の対象としてのローカル印刷機能に含めることができ、利便性が向上する。
以上、実施形態を詳述したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記憶媒体等としての実施態様をとることが可能である。具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
又、上記実施形態では、デバイス104,105のスケジューラ800がジョブの実行順序の管理を行う例を説明したがこれに限られるものではない。例えば、デバイス104,105とは別体のネットワークに接続されたプリントサーバにおいて上記ジョブ管理を実現するようにしてもよいことは明らかである。
尚、本発明は、ソフトウェアのプログラムをシステム或いは装置に直接或いは遠隔から供給し、そのシステム或いは装置のコンピュータが該供給されたプログラムコードを読み出して実行することによって前述した実施形態の機能が達成される場合を含む。この場合、供給されるプログラムは実施形態で図に示したフローチャートに対応したプログラムである。
従って、本発明の機能処理をコンピュータで実現するために、該コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、OSに供給するスクリプトデータ等の形態であっても良い。
プログラムを供給するための記録媒体としては以下が挙げられる。例えば、フロッピー(登録商標)ディスク、ハードディスク、光ディスク、光磁気ディスク、MO、CD−ROM、CD−R、CD−RW、磁気テープ、不揮発性のメモリカード、ROM、DVD(DVD−ROM,DVD−R)などである。
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続し、該ホームページから本発明のコンピュータプログラムをハードディスク等の記録媒体にダウンロードすることが挙げられる。この場合、ダウンロードされるプログラムは、圧縮され自動インストール機能を含むファイルであってもよい。また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるWWWサーバも、本発明に含まれるものである。
また、本発明のプログラムを暗号化してCD−ROM等の記憶媒体に格納してユーザに配布するという形態をとることもできる。この場合、所定の条件をクリアしたユーザに、インターネットを介してホームページから暗号を解く鍵情報をダウンロードさせ、その鍵情報を使用して暗号化されたプログラムを実行し、プログラムをコンピュータにインストールさせるようにもできる。
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される他、そのプログラムの指示に基づき、コンピュータ上で稼動しているOSなどとの協働で実施形態の機能が実現されてもよい。この場合、OSなどが、実際の処理の一部または全部を行ない、その処理によって前述した実施形態の機能が実現される。
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれて前述の実施形態の機能の一部或いは全てが実現されてもよい。この場合、機能拡張ボードや機能拡張ユニットにプログラムが書き込まれた後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行なう。