本発明の情報処理装置における管理方法、情報処理装置、プログラム及び記憶媒体の実施の形態について、図面を参照しながら説明する。
[第1の実施形態]
まず、本発明の第1の実施の形態を、図1乃至図11に基づき説明する。
<印刷処理システムの構成>
図1は、本実施の形態に係る情報処理装置及びその管理方法を適用するネットワークシステムの構成を示すブロック図である。
図1において、101,102,103,104はネットワークコンピュータで、後述するネットワーク106に接続され、相互に通信可能となっている。この第1〜第4のネットワークコンピュータ101〜104は、典型的にはパーソナルコンピュータ(PC)である。
これらの第1〜第4のネットワークコンピュータ101〜104のうち、第2〜第4のネットワークコンピュータ102,103,104は、クライアントコンピュータ(以下、クライアント装置と記述する)であり、それぞれイーサネット(登録商標)等のネットワークケーブルによって後述するネットワーク106に接続され、アプリケーションプログラム等の各種のプログラムを実行可能であり、印刷データをプリンタに対応するプリンタ言語に変換する機能を有するプリンタドライバを搭載している。ここで、各クライアント装置102〜104は、複数のプリンタドライバをサポートするものとする。
これに対して、第1のネットワークコンピュータ101は、サーバコンピュータ(以下、サーバ装置と記述する)であり、ネットワークケーブルによって後述するネットワーク106に接続され、このネットワーク106で使用されるファイルを蓄積したり、ネットワーク106の使用状態を監視する。このサーバ装置101は、ネットワーク106に接続されている後述するネットワークプリンタ105を管理するプリントサーバ装置としても機能する。具体的には、プリントサーバ装置101は、クライアント装置102〜104から印刷要求が出されたプリントデータを含む印刷ジョブを格納して印刷する機能や、クライアント装置102〜104から印字データを含まないジョブ情報を受け取って印刷順序を管理し、印刷順序になったクライアント装置101に対して印字データを含む印刷ジョブの送信許可を通知する機能や、後述するネットワークプリンタ(プリンタデバイス)105のステータスや印刷ジョブの各種情報を取得して、クライアント装置102〜104に通知する機能等を有している。
105は印刷制御装置としてのネットワークプリンタであり、図示しないネットワークインタフェースを介して後述するネットワーク106と接続されている。ネットワークプリンタ105は、クライアント装置102〜104から送信されて来る印字データを含む印刷ジョブを解析し、1ページずつドットイメージデータに変換して印刷する。
尚、図1にネットワークプリンタ105は1台しか示されていないが、他のネットワークプリンタが複数接続されているものとする。また、その場合、各ネットワークプリンタの機能は、互いに相違するものであっても良い。
106はネットワークであり、クライント装置102〜104、サーバ装置101、ネットワークプリンタ105等と接続されている。
<ネットワークコンピュータのハードウエア構成>
図2は、クライアント装置102〜104とサーバ装置101として使用されるネットワークコンピュータの構成を示すブロック図である。
尚、本実施の形態においては、このように、クライント装置102〜104もサーバ装置101も同様或いは同等のハードウエア構成とするが、それぞれ専用のハードウエア構成であっても構わない。
図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、CDR、CD−RW、PCカード、DVD、ICメモリカード、MO、メモリスティック等、任意である。
205は外部記憶手段の1つであり且つ大容量メモリとして機能するハードディスク(HD)であり、アプリケーションプログラム、プリンタドライバプログラム、OS、ネットワークプリンタ制御プログラム、関連プログラム等を格納している。更に、スプール手段であるスプーラはここに確保される。スプール手段は、クライアント装置102〜104ではクライアントスプーラのことであり、サーバ装置101ではサーバスプーラのことである。また、サーバ装置101では、クライアント装置102〜104から受けたジョブ情報を格納し、順序制御を行なうためのテーブルも、このHD205に生成されて格納される。
206は指示入力手段であるキーボードであり、ユーザがクライアント装置102〜104に対して、また、オペレータや管理者がサーバ装置101に対して、プリンタデバイス105の制御コマンドの命令等を入力指示するものである。207は表示手段であるディスプレイであり、キーボード206から入力したコマンドや、プリンタデバイス105の状態等を表示するものである。
208はシステムバスであり、クライアント装置102〜104やサーバ装置101であるネットワークコンピュータ内のデータの流れを司るものである。209は入出力手段であるインタフェースであり、該インタフェース209を介して本ネットワークコンピュータ(情報処理装置)は、外部装置とのデータのやり取りを行なう。
尚、上記ネットワークコンピュータの構成は、その一例であり、図2の構成例に限定されるものではない。例えば、データやプログラムの格納先は、その特徴に応じてROM(リードオンリーメモリ)、RAM(ランダムアクセスメモリ)、HD(ハードディスク)等に変更することも可能である。
図3は、図2に示したRAM202のメモリマップの一例を示す図であり、FD204からロードされる上記ネットワークプリンタ制御プログラムが、RAM202にロードされて実行可能となった状態のメモリマップを示している。
尚、本実施の形態では、ネットワークプリンタ制御プログラム及び関連データをFD204から直接RAM202にロードして実行させる例を示すが、これ以外にも、ネットワークプリンタ制御プログラムを動作させる度に、既にネットワークプリンタ制御プログラムがFD204からインストールされているHD205から、RAM202にロードするようにしても良い。また、前記ネットワークプリンタ制御プログラムを記憶する記憶媒体は、FD以外にCD−ROM、CDR、PCカード、DVD、ICメモリカード等であっても良い。更に、前記ネットワークプリンタ制御プログラムをROM201に記憶しておき、これをメモリマップの一部となすように構成し、直接CPU200で実行することも可能である。また、以上の各装置と同等の機能を実現するソフトウエアをもって、ハードウエアの代替として構成することもできる。
また、以下では、前記ネットワークプリンタ制御プログラムのことを、簡単に印刷制御プログラムまたはプリンタドライバと呼ぶこともある。印刷制御プログラムは、クライアント装置102〜104においては、印刷ジョブの印刷先の変更を指示したり、印刷順序の変更を指示するための制御を行なうプログラムを含む。
一方、サーバ装置101においては、印刷ジョブの順序制御を行なったり、印刷ジョブの印刷終了や印刷先変更要求等を通知するためのプログラムを含んでいる。
また、このような制御を行なう本実施の形態における印刷制御プログラムは、クライアント装置102〜104にインストールされるモジュールと、サーバ装置101にインストールされるモジュールとを別々に分けても良いし、1つの印刷制御プログラムが、実行される環境によりクライアント装置用として或いはサーバ装置用として機能するようにしても良い。或いは、1台のコンピュータに、クライアント装置用の機能を持つモジュールとサーバ装置用として機能するモジュールとを共にインストールし、同時に或いは時分割で擬似的に平行動作させる構成も可能である。
図3において、301は基本I/Oプログラムであり、コンピュータの電源がオン(ON)された場合に、HD205からOS(オペレーティングシステム)がRAM202に読み込まれ、OSの動作を開始させるIPL(イニシャルプログラムローデイング)機能等を有しているプログラムが入っている領域である。302はオペレーティングシステム(OS)、303はネットワークプリンタ制御プログラムで、RAM202上に確保される領域に記憶される。304は関連データで、RAM202上に確保される領域に記憶される。305はワークエリアで、CPU200が本プリンタ制御プログラムを実行する領域が確保されている。
図4は、図2に示したFD204のメモリマップの一例を示す図である。
図4において、401はデータの情報を示すボリューム情報、402はディレクトリ情報、403は本実施の形態において説明する印刷制御プログラムであるネットワークプリンタ制御プログラム、404はその関連データである。
ネットワークプリンタ制御プログラム403は、本実施の形態において説明するフローチャートに基づいてプログラム化したものであり、本実施の形態では、クライアント装置102〜104及びサーバ装置101共に、同様の構成をとっている。
図5は、図2に示したFDドライブ203に対して挿入されるFD204との関係を示す図であり、図2と同一構成には同一符号を付してある。
図5において、FD204には、本実施の形態において説明するネットワークプリンタ制御プログラム及び関連データが格納されている。
<印刷処理システムにおけるソフトウエア構成>
ここで、本実施の形態における用語の技術的意味について説明する。
複数のプリンタを1つのプリンタとして仮想的に束ねる仮想プリンタを「グループプリンタ」、束ねられるプリンタを「メンバプリンタ」と記述する。また、グループプリンタ及びメンバプリンタに所定の出力ポートが、対応付けられた仮想プリンタドライバ及びデバイスドライバに対応しているので、グループプリンタ及びメンバプリンタをドライバに対応して考えることもできる。
グループプリンタを更に具体的に説明すると、アプリケーションからOSを介して生成される描画命令に基づいて中間形式ファイル(汎用印刷ファイル)を生成するためのデータを生成する仮想ドライバをグループプリンタドライバと記述する。そして、後述するジョブ制御プリントサービスにより、先の中間形式のファイルに基づいてページ記述言語を生成させるべく各個別のプリンタドライバに印刷指示がなされるが、この個別の各プリンタドライバに対応するプリンタをメンバプリンタと記述する。また、各メンバプリンタは、最終的には特定のデバイスに対応することとなる。
一方、本実施の形態において、アプリケーションにおける印刷指示に応じてWindows(登録商標)等のOSを介して出力される描画命令(一般的にDDI或いはGDIと呼ばれている)或いはEMF(Enhanced Metafi1e Format:拡張メタファイル)を解釈し、ページ記述言語を生成し、プリンタデバイスへ出力させるようなプリンタドライバを通常プリンタドライバ、このときのデバイスを通常デバイスと記述し、グループプリンタやメンバプリンタと区別する。
尚、OSとしては、Windows(登録商標)に限定されるものではなく、描画命令を備えるOSであれば適用可能であることは言うまでもない。また、デバイスであるプリンタとは区別して、プリンタドライバとプリンタ出力ポートとの組み合わせをプリンタと記述することもある。例えば、後述する図7のLogical Port(ジョブ制御ポートモニタ)とグループプリンタドライバとの組み合わせを指定することを、グループプリンタを指定すると記述する。
図6は、印刷処理システムのサーバ装置/クライアント装置型において、Microsoft Word(登録商標)等の一般的なアプリケーションから発行された描画コマンドを含む印刷ジョブが、印刷ジョブ制御システムにおいてどのように処理されるかを示した図であり、同図において、図1と同一部分には同一符号が付してある。
図6において、101はサーバ装置(Server machine)、102〜104はクライアント装置(Client machine)、105はプリンタデバイス、601はアプリケーションプログラム、602はPDLドライバ(Driver)、603はグループプリンタドライバ(Driver)、604はウインドウズスプーラ(Windows(登録商標) Spooler)、605はジョブ制御ポートモニタ、606はジョブ制御プリントサービス、607はプリントマネージャ、608はマネージメントコンソール、609はジョブ制御サーバ、610はデバイス情報コントロールモジュールである。
通常、印刷の指示がなされると、アプリケーションプログラムは、一連の描画命令を、OSを介して生成させる。この生成された描画命令は、プリンタドライバを経て所定の形式に変換された後、ウインドウズスプーラに渡される。ウインドウズスプーラは、ユーザがユーザインタフェースを介して選択して指示したポートモニタにプリントジョブデータを渡して、プリンタデバイスに送信させる手順をとる。
本実施の形態では、上述した通常の動作に対してユーザは、予め印刷ジョブ制御システム用のジョブ制御ポートモニタ605を指定して印刷を指示する。
アプリケーションプログラム601は、一連の描画命令を、OSを介して生成させる。ここで、OSを介して生成された描画命令は、グループプリンタドライバ603或はPDLドライバ602の何れかの指定されたプログラムに引き渡される。
OSを介して生成された描画命令を受け取ったグループプリンタドライバ603では、汎用印刷ファイルを生成するための汎用ドキュメントデータを生成し、プリンタデバイス105へプリントジョブデータを送信する従来のポートモニタではなく、ジョブ制御ポートモニタ605にプリントジョブデータとして送信する。また、プリンタドライバインタフェースを介して設定された用紙サイズ、ステイプル指示等の印刷設定情報も、ジョブ制御ポートモニタ605に送信される。
ジョブ制御ポートモニタ605は、プリントジョブデータである汎用印刷ドキュメントデータをプリンタデバイス105に送信するのではなく、印刷ジョブ制御システム用プリントサービス606(以降、ジョブ制御プリントサービスと記述する)に送信する。ジョブ制御プリントサービス606は、プリントジョブデータに対して、後述するような印刷ジョブ制御処理を行なう。
一方、OSを介して生成された描画命令がPDLドライバ602に投入された場合には、PDLドライバ602によって頁記述言語が生成され、該生成された頁記述言語は、印刷処理を行なうように設定されたPDLドライバ602に対応するジョブ制御ポートモニタ605、ジョブ制御プリントサービス606を介して対応するデバイスに送信される。
印刷ジョブ制御システム用プリントマネージャ607(以降、ジョブ制御プリントマネージャと記述する)は、ユーザがジョブ制御プリントサービス606の内部でプリントジョブがどのような状態にあるかを調べたり、プリントジョブを操作したりするためのユーザインタフェースを提供するプログラムである。ジョブ制御プリントマネージャ607は、ジョブ制御プリントサービス606のソフトウエアのインタフェース(API:Application Program Interface)を介して、ジョブ制御プリントサービス606と情報及び指示をやり取りしている。更に詳細な処理としては、ジョブ制御プリントマネージャ607がジョブ制御プリントサービス606に対してデバイスを指定してのイベントを発行する。ジョブ制御プリントサービス606は、発行されたイベントに基づくデバイスのステータスを監視して、該監視に基づく結果をジョブ制御プリントマネージャ607に通知する。
印刷ジョブ制御システム用サーバ609(以降、ジョブ制御サーバと記述する)は、個々のクライアント装置102〜104上のジョブ制御プリントサービス606がプリンタデバイス105にプリントジョブデータを送信するタイミングを集中制御(スケジューリング)している。これにより、クライアント装置102〜104からプリンタデバイス105へのアクセスが競合することが回避されるため、クライアント装置102〜104のCPU資源及びネットワーク通信資源が有効に利用できる。
印刷ジョブ制御システム用マネージメントコンソール608(以降、ジョブ制御マネージメントコンソールと記述する)は、ジョブ制御サーバ609が持つソフトウエアがアクセスするためのAPIを介して、ジョブ制御サーバ609と情報及び指示をやり取りすることで、印刷ジョブ制御システム全体を監視することができる。
また、ジョブ制御サーバ609は、デバイス情報コントロールモジュール610を用いてプリンタデバイス105と通信を行ない、プリンタデバイス105内の印刷ジョブや動作状態に関する情報を入手したり、操作を行なったりする。入手した情報は、クライアント装置102〜104側のジョブ制御プリントサービス606に渡すことができる。
尚、上記のように、ジョブ制御サーバ609によりジョブ制御プリントサービス606から発行される印刷ジョブに対して提供される各種処理を総称し、サービス或いは出力管理サービスと呼ぶこともある。そして、ここでは、ジョブ制御サーバ609(サーバ装置)がサービス或いは出力管理サービスを提供すると記載したり、ジョブ制御プリントサービス606(クライアント)がサービス或いは出力管理サービスを要求すると記載したり、ジョブ制御プリントサービス606がサービス或いは出力管理サービスを受けると記載することもある。
<印刷処理システムの動作>
次に、本実施の形態におけるグループプリンタドライバ603からの印刷について説明する。
グループプリンタドライバ603は、アプリケーションプログラム601が生成した一連の描画コマンドをプリンタデバイス105やOSの種類に依存しない汎用中間フォーマットデータ(前述の汎用ドキュメントデータに相当)に変換する。この汎用中間フォーマットデータは、ウインドウズスプーラ604からジョブ制御ポートモニタ605を経て「図6の(a)参照」、ジョブ制御プリントサービス606に導かれる「図6の(b)参照」。ここで、汎用中間フォーマットデータは、汎用印刷ファイルに構築される。この汎用印刷ファイルの構成については、後述する。
ジョブ制御プリントサービス606は、このプリントジョブに対して行なうジョブ制御の種類に応じて、汎用印刷ファイルをもとに描画コマンドを生成し「図6の(c)参照」、続いてPDLドライバ602は、その描画コマンドをプリンタデバイス105が解釈可能なPDL形式のファイルにする。
図6では、ジョブ制御プリントサービス606で、このプリントジョブに対してプリンタデバイス105側のエラーを検知して代行印刷を行なう例を示しており、同図において、実線で示される矢印は、当初印刷を予定していたメンバジョブであり、破線で示される矢印は、代行印刷のために生成されたジョブを示している「図6の(c)参照」。
PDLドライバ602で生成されたPDLファイルは、ウインドウズスプーラ604、ジョブ制御ポートモニタ605を経て「図6の(d)参照」、再びジョブ制御プリントサービス606に渡される「図6の(e)参照」。ジョブ制御プリントサービス606は、ジョブ制御サーバ609の指示に従ってPDLのプリントジョブデータをプリンタデバイス105に送信する「図6の(f)参照」。
ジョブ制御プリントサービス606は、汎用印刷ファイル中の印刷指示書の指示に従って、1つの汎用印刷ファイルを複数のプリントジョブに論理的に分割して、それぞれ別のプリンタデバイスに送信したり、一度送信したプリントジョブデータを別のプリンタデバイスに送信し直したりする。
図6中に示す(c)、(d)、(e)、(f)は、そのような場合のプリントジョブデータの経路を示している。
一方、汎用印刷ファイルをアプリケーションソフトウエアが作成し、そのアプリケーションソフトウエアが直接汎用印刷ファイルを印刷ジョブとして投入する場合は、一般のアプリケーションとはグループプリンタドライバ603への情報の渡し方やグループプリンタドライバ603での処理内容が異なる。
前述のように、一般のアプリケーションの場合には、アプリケーションは、グループプリンタドライバ603に描画情報を渡す際、通常のプリンタドライバと同じようにWindows(登録商標)のGDI関数を呼び出し、それに応じてグループプリンタドライバ603が汎用印刷ファイルを生成する。これに対して汎用印刷ファイルを直接作成するアプリケーションの場合は、アプリケーションが汎用印刷ファイルを既に持ち、それをグループプリンタドライバ603に供給する。グループプリンタドライバ603は、必要に応じて予め設定された印刷方法に基づいて汎用印刷ファイル内部の印刷指示書を書き換えてウインドウズスプーラ604に送る。
<汎用印刷ファイルの構成>
図7は、構築された汎用印刷ファイルの構成の一例を示す図である。
図7に示すように、本実施の形態で使用される汎用印刷ファイルは、印刷指示部700a(前述の印刷指示書に相当)とドキュメントデータ部700bとから成る。印刷指示部700aは、ドキュメントの情報と印刷指示とを記述した部分である。また、ドキュメントデータ700bは、上述した如くアプリケーションのドキュメントのデータを汎用的な形式のデータに変換したものであり、プリンタ言語やOSの種類に依存しない或は依存し難い形式のデータフォーマットとなっている。
アプリケーションデータを変換した後の変換後データ(汎用印刷データ)としては、印刷リソースデータとして利用可能で且つワードプロセッサアプリケーション等により再度編集可能な形式のデータであることが想定され、実質的な標準形式のうち、例えば、XML形式や、Windows(登録商標)システムにより提供されるEMF形式、或はAdobe Systems IncorporatedによるPDF(Portable Document Format)形式やSVG形式等が汎用形式の汎用印刷データとして採用できる。
また、図示はされてはいないが、汎用印刷ファイルには、各メンバプリンタに対応したDEVMODEも含まれているものとする。該DEVMODEには、後述する図12にて詳しく説明する共通設定項目及び拡張設定項目の双方が含まれるものとする。
更に詳細に説明すると、印刷指示部700aは、ヘッダ部701、ページ情報部702、ドキュメント属性部703、印刷体裁指示部704、出力方法指定部705、メンバプリンタ数706、メンバプリンタドライバ名707等から構成されている。
ヘッダ部701は、本ファイルのバージョン識別やファイル情報等の情報を格納する部分である。ページ情報部702は、ドキュメントデータ部700bのドキュメントデータのページ数、各ページのサイズ等の情報を格納する部分である。
印刷体裁指示部704は、グループプリンタドライバ603のUI(User Interface)や、メンバプリンタの個別のUIを介して設定された印刷ページ範囲、印刷部数、ドキュメントデータの面付け情報(N−UPや製本印刷等)、ステイプル指示やパンチ指示等、出力体裁に関する情報を格納する部分である。
尚、ステイプル及びパンチ指示については、ページ(Page)単位で指定(サブセットステイプル等)されることもある。
尚、各メンバプリンタの個別のUIを介して設定された内容は、印刷指示部704に反映されると共に、各メンバプリンタに対応するDEVMODEにも反映されて保存される。
出力方法指定部705は、出力方法として、分散印刷、同報印刷、代行印刷、通常印刷(代行しない印刷)等の出力方法に関する情報を格納する部分である。この出力方法指定部705に代行印刷が設定されている場合には、更に優先順位情報(第1候補、第2候補・・・)を付したプリンタ情報が含まれる。
メンバプリンタ数706は、グループプリンタドライバ603が関連付けているメンバプリンタの数を格納する部分である。メンバプリンタドライバ名707は、メンバプリンタのプリンタドライバ名を格納する部分である。このメンバプリンタドライバ名707は、前述のメンバプリンタ数706の数だけの格納エリアを持っている。
前述の図6で説明したジョブ制御プリントサービス606では、汎用印刷中間フォーマットデータより汎用印刷ファイルを生成する際、グループプリンタドライバ603のGUI(Graphical User Interface)上での設定を印刷指示部700aへ記憶する。更に、グループプリンタドライバ603から受け取った汎用印刷中間フォーマットデータを、汎用印刷ファイルのドキュメントデータ部700bに記録する処理も、ジョブ制御プリントサービス606により実行される。
<ウインドウズプリントシステム(Windows(登録商標) Print System)と印刷ジョブ制御システムとの関係>
次に、ウインドウズ(Windows(登録商標))が提供するプリントシステム(Print System)と印刷ジョブ制御システムとにおける印刷ジョブの関係と処理概要とを、図8を用いて更に詳しく説明する。
図8は、本実施の形態に係る情報処理装置の管理システムにおけるプリントジョブの処理動作の流れを説明する図であり、同図において、図6と同一部分には同一符号を付してある。
図8において、105はプリントデバイス(A)、601はアプリケーションプログラム、602はPDLドライバ、603はグループプリンタドライバ、604はウインドウズスプーラ、605はジョブ制御ポートモニタ、609はジョブ制御サーバ、800aは印刷ジョブ制御システム、800bは印刷ジョブ制御システム、801はデスプーラ(De-spooler)、802a,802bはプロシキ出力ポート(Proxy Output Port)、803a,803bは出力ポート(Output Port)、804はロジカルポート(Logical Port)、805は汎用印刷ファイル構築、806はデバイス(B)である。
印刷ジョブ制御システム800bは、各クライアント装置から発行される印刷ジョブの管理を行なうサーバ装置101とクライアント装置102〜104との物理的なマシンを跨いだ印刷ジョブ制御システムの範囲を示している。また、サーバ装置101が管理している出力ポート803a,803bは、クライアント装置102〜104のジョブ制御プリントサービス606のプロキシ出力ポート802a,802bとそれぞれ関連付けられ、1つのポートに関連付けられた各クライアント装置102〜104上のプロキシ出力ポート802a,802b全てを統一的に管理している。
本実施の形態では、実際のプリントジョブデータは、各々のクライアント装置102〜104のプロキシ出力ポート802a,802bに保持される。
ジョブ制御サーバ609は、プリントジョブデータ自体の送信処理は行なわず、ジョブ制御プリントサービス606に対して印刷ジョブの送信指示のみを行なう。その指示に応じて、クライアント装置102〜104のジョブ制御プリントサービス606は、プリントジョブデータをプリントデバイス(A)105に送信する。
次に、印刷ジョブ制御システム800bが、代行印刷といった付加価値印刷を行なう場合の処理について説明する。
印刷ジョブ制御システム800bが、代行印刷といった付加価値的な印刷を行なう場合には、前述のようにユーザまたはアプリケーションプログラム601は、グループプリンタドライバ603に割り当てられたプリンタに印刷ジョブを発行しなければならない。ジョブ制御プリントサービス606は、グループプリンタドライバ603によって処理された汎用印刷中間フォーマットデータを、ジョブ制御ポートモニタ605を介して受け取る。
ジョブ制御プリントサービス606は、この汎用印刷中間フォーマットデータより汎用印刷ファイルを構築し(図8の汎用印刷ファイル構築805)、上述した印刷指示部700aの指示内容に従う印刷指示をデスプーラ801に対して行なう。そして、デスプーラ801を介してPDLドライバ602が割り当てられた別のプリンタにジョブ(メンバジョブ)を発行して、印刷を行なわせる。
このとき、デスプーラ801は、ジョブ制御プリントサービス606の汎用印刷ファイルの印刷指示部700aの解釈に基づく指示に応じて、ドキュメントデータ部700bのドキュメントデータを加工してウインドウズ(Windows(登録商標))のGDIに変換し、プリンタドライバに対して印刷指示を行ない、印刷ジョブを発行する。例えば、印刷体裁指定部704に2−UPに相当する指示が記録されていた場合、用紙1枚に2ページ分のドキュメントデータを縮小レイアウトするようにDEVMODEを介してメンバプリンタに対して指示する。また、印刷体裁指定部704にステイプル指示がある場合には、DEVMODEを介してステイプルの指示を行なう。また、代行印刷時には、印刷指示部700aに記述されている代行先メンバプリンタにジョブを発行する。
尚、2−UP等の縮小レイアウトを処理する場合に、デスプーラ801自身が印刷体裁指定部704の内容に基づき縮小レイアウトするようにして、メンバプリンタにはDEVMODEを介して1−UPを指示するようにしても良い。
また、デスプーラ801は、メンバプリンタにジョブを発行する際、メンバプリンタドライバに対応する印刷指示として、メンバプリンタのDEVMODEを作成する必要があるが、このDEVMODEは、印刷指示部700a或は各メンバプリンタに対応して保存されたDEVMODEに記載された内容を適宜各メンバプリンタのDEVMODEに反映させて生成する。
クライアント装置102〜104側のジョブ制御プリントサービス606は、PDLドライバ602によってレンダリングされたそれぞれのメンバジョブのPDLデータを、ジョブ制御ポートモニタ605を介して受け取り、該受け取ったジョブ(PDLデータ)に関する情報をサーバ装置101側に知らせ、ジョブデータは、自身のプロキシ出力ポート802aで一時保持する。その後、ジョブ制御サーバ609からの送信指示を受けた後に、プリンタデバイス(A)105に送信する。
次に、本実施形態の印刷ジョブ制御システムにおける制御について説明する。
前述したように、クライアント装置102〜104上のプロキシ出力ポート802a,802bは、サーバ装置101上の出力ポート803a,803bに関連付けられている。新たなインスタンスを作成する場合に、その名前は、以下の規則で決められる。
ここで、上記「インスタンス」について説明する。
一般に「インスタンス」とは、ある「クラス」という抽象的なグループに属する具体的なメンバーを指す。「プロキシ出力ポート」は、ジョブ制御サーバ上のある出力ポートに関連して幾つでも作成(または追加)することができるものであり、本発明では、作成された「プロキシ出力ポート」を「インスタンス」と呼ぶこととする。即ち、ポートモニタには、OS付属の「Standard TCP/IPポート」や、本発明で使用する「Output Managerポート」等の種類が存在するが、それを「クラス」と見なし、デバイスのアドレス、デバイスの種類、データの転送方法等の属性を持った個々の実態を「インスタンス」と呼ぶこととする。
プロキシ出力ポート名=
<サーバ装置101上の出力ポートの名前>@<サーバ装置101のIPアドレス>
(例:output-port1@172.24.20.2)
または
プロキシ出力ポート名=
<サーバ装置101上の出力ポートの名前>@<サーバ装置101のホスト名>
(例:output-port1@our-server)
ここで、サーバ装置101のIPアドレスまたはホスト名は、ユーザによって指定される。本実施の形態では、クライアント装置側にサーバ装置の通信を行なうための通信情報として、ユーザがIPアドレスを指定した場合について説明する。
尚、ユーザが指定する内容としては、IPアドレスに限定されるものではない。
図9は、本実施の形態に係る情報処理装置における管理システムのサーバ装置101、クライアント装置102〜104の内部構成を示すブロック図である。
図9において、900はクライアント装置で、図1のクライアント装置102〜104に対応する。901はサーバ装置で、図1のサーバ装置101に対応する。
902はクライアント装置全体制御モジュールであり、図8におけるジョブ制御プリントサービス606に相当させることができ、ジョブ受付制御モジュール903、クライアントジョブ制御モジュール904、905はプロシキ出力ポート制御モジュール905を機能的に備える。また、設定プログラム906は後述の図10、図11に示すフローチャートを統括的に管理する機能部分に相当する。
907はサーバ装置全体制御モジュールであり、図8のジョブ制御サーバ609に相当させることができ、サーバジョブ制御モジュール908、出力ポート制御モジュール909は、デバイス監視制御モジュール910を機能的に備える。一方、911はウインドウズ(Windows(登録商標))プリンタ(図8におけるPDLドライバ602を含む論理プリンタに相当)、912はジョブ制御ポートモニタ(図8におけるジョブ制御ポートモニタ605に相当)、913はネットワーク、914は出力デバイス(例えば、プリンタ)である。
クライアント装置900では、クライアント装置全体制御モジュール902が各機能モジュールを制御している。個々の機能モジュールとしては、ウインドウズプリンタ911に発行されたジョブを取り込むジョブ受付制御モジュール903、クライアントシステム900上のジョブの制御を行なうクライアントジョブ制御モジュール904、サーバ装置901の出力ポートと連携してジョブの一時保持、出力デバイス914への転送等を行なうプロキシポート制御モジュール905が含まれる。プロキシ出力ポート制御モジュール905は、クライアント装置900の起動時に、上述したプロキシ出力ポート名に含まれているIPアドレスを持つマシンで動作しているサーバ装置901に対してサービス接続要求を行なう。接続が確立された後は、図8を用いて既に説明したように、サーバ装置901上の出力ポート及びそれに関連付けられている他のプロキシ出力ポート制御モジュール905との間で統一的にジョブ管理される。
サーバ装置901では、サーバ装置全体制御モジュール902が各機能モジュールを制御している。個々の機能モジュールとしては、ある出力ポートに関連している全てのプロキシ出力ポート制御モジュール905で管理されているジョブについての情報を保持している出力ポート制御モジュール909、全てのクライアント装置900で発行されるジョブのスケジュール管理を行なうサーバジョブ制御モジュール908、出力デバイス914のステータスやデバイス914に転送したジョブのステータスを追跡するデバイス監視制御モジュール910が含まれる。出力ポート制御モジュール909は、上述したプロキシ出力ポート制御モジュール905からのサービス接続要求に応じる機能も持つ。
ここで、「プロキシ出力ポート」と「プロキシ出力ポート制御モジュール」との定義及びそれらの関係について説明する。
「プロキシ出力ポート」とは、Windows(登録商標)の印刷システムにおけるポートモニタの一種であって、あるデバイスにより印刷するジョブの情報をクライアント装置上で保持し、デバイスにジョブの情報を送信する機能単位を指すものである。
一方、「プロキシ出力ポート制御モジュール」とは、「プロキシ出力ポート」の機能を実現するソフトウェアモジュールである。
具体例としては、Windows(登録商標)では、コントロールパネル中の「プリンタとFAX」というアプレットがあり、そのUIでアイコンによって表現されるものもある。これは、通常“プリンタオブジェクト”と称されるものであり、Windows(登録商標)スプーラが実現する機能単位である。
また、「プロキシ出力ポート」と「プロキシ出力ポート制御モジュール」との関係は、Windows(登録商標)のプリンタオブジェクトとWindows(登録商標)スプーラとの関係に類似している。
図6で示されるジョブ制御プリントサービス606は、図9においては、クライアント装置全体制御モジュール902が統括する範囲全体に対応し、図6で示されるジョブ制御サーバ609は、図9においては、サーバ装置全体制御モジュール907が統括する範囲全体に対応する。
設定プログラム906は、クライアント装置全体制御モジュール902にAPI(Application Program Interface)を介してアクセスし、クライアント装置900に関する情報の入手や設定等を行なう。
次に、クライアント装置900上にプロキシ出力ポート制御モジュール905を追加する場合の処理について、図10を用いて説明する。
図10は、クライアント装置900上にプロキシ出力ポートを追加する場合の処理動作の流れ示すフローチャートである。
図10において、まず、ステップS1001で、クライアント装置900上において設定プログラムは、ユーザが追加したいプロキシ出力ポートに対応する出力ポートの名前とそれが存在するサーバ装置901のIPアドレスを指定する。このIPアドレスは、ユーザが事前に調べておくことにより知ることができたり、ネットワーク上の装置探索を行ない、その探索結果により知ることができる。
次に、ステップS1002で、クライアント装置900上において設定プログラム906は、前記ステップS1001において指定されたサーバ装置901のIPアドレスと出力ポートの名前を用いてプロキシ出力ポートを作成する。サーバ装置901のIPアドレスと出力ポートの名前は、前述したように、このプロキシ出力ポートの名前の中に使用される。
次に、ステップS1003で、クライアント装置900上において設定プログラム906は、サーバ装置901に対してサーバIDを要求する。このサーバIDとしては、サーバ装置901のMACアドレスや、シリアル番号等のサーバ装置901固有の識別子であれば適宜可能とする。
次に、ステップS1004で、サーバ装置901内のサーバ全体制御モジュール907は、サーバ装置901のサーバIDをクライアント装置900の設定プログラム906に返す。
次に、ステップS1005で、クライアント装置900の設定プログラム906は、前記ステップS1004において返されたサーバIDを、前記ステップS1002において作成したプロキシ出力ポートの属性値として、該プロキシ出力ポートに関連付けて保存し、その後、本処理動作を終了する。
次に、プロキシ出力ポートが保持するサーバ装置901のアドレスを更新する処理を行ないながら、サーバ装置901との接続処理を行なう動作について、図11を用いて説明する。
図11は、プロキシ出力ポートが保持するサーバ装置901のアドレスを更新する処理を行ないながら、サーバ装置901との接続処理を行なう処理動作の流れを示すフローチャートである。
図11において、まず、ステップS1101で、クライアント装置900上のプロキシ出力ポート制御モジュール905が、ネットワーク913上のサーバ装置を探索するためのサーバ装置探索パケットをネットワーク913に送信する。このネットワーク913を構成するものとしては、有線でも無線でも良く、その通信方式としては、イーサネット(登録商標)通信方式、IEEE802.11bの規格に従った無線通信方式でも良い。
次に、ステップS1102で、ネットワーク913上に存在する、本実施の形態に係る情報処理装置における管理システムのサーバ装置901は、前記ステップS1101において送信されたサーバ装置探索パケットを受信したら、サーバIDを含む探索応答パケットをネットワーク913に送信する。この探索応答パケットの中には、それぞれのサーバID情報及びアドレスが含まれている。
次に、ステップS1103で、クライアント装置900のプロキシ出力ポート制御モジュール905は、サーバ装置900からのサーバ装置探索パケットに対する探索応答パケットを受け取ると、受け取った探索応答パケットの中に、自らが保持しているサーバIDと同じサーバIDを有するサーバ装置を探す。
次に、ステップS1104で、前記ステップS1103における探索の結果、同じサーバIDを有するサーバ装置が見つかった場合は、ステップS1105へ進み、また、見つからない場合は、本処理動作を終了する。
ステップS1105では、クライアント装置900のプロキシ出力ポート制御モジュール905は、前記ステップS1103において見つけたサーバ装置が有するIPアドレスが、自らが保持しているサーバ装置のアドレスと等しいか否かを判断する。そして、等しいと判断された場合は、ステップS1107へ、また、等しくないと判断された場合は、ステップS1106へ、それぞれ進む。
ステップS1106では、クライアント装置900のプロキシ出力ポート制御モジュール905は、自らが保持しているサーバ装置のアドレスを、前記ステップS1103,1104において見つけたサーバ装置のアドレスに変更する。
また、ステップS1107では、クライアント装置900のプロキシ出力ポート制御モジュール905は、自らが保持しているサーバ装置のアドレスを有するサーバ装置に対して接続処理を行ない、その後、本処理動作を終了する。
ここで、前記ステップS1107における「接続処理」の定義について説明する。
サーバ装置609上の出力ポート803a,803bとクライアント装置606上のプロキシ出力ポート802a,802bとの関係は、各プロキシ出力ポート802a,802bは、一つの出力ポート803a,803bに関連付けられているものである。そして、出力ポート803a,803bと該出力ポート803a,803bに関連付けられた一つまたは複数のプロキシ出力ポート802a,802bの集合が一つの仮想的なキューを構成していると見ることができる。つまり、サーバ装置101上のジョブ制御サーバ609が、出力ポート803a,803bと該出力ポート803a,803bに関連付けられた一つまたは複数のプロキシ出力ポート802a,802bで受け取った全てのジョブの印刷投入時刻やジョブの優先度を参酌して、各ジョブをデバイスに送信する順序を決定するものである。
このことから明らかなように、サーバ装置609上のジョブ制御サーバ609aは、クライアント装置606で投入されたジョブの存在や、その投入時刻や優先度等の情報を持っている必要があり、その前提として、クライアント装置606上のプロキシ出力ポート802a,802bの存在を知っている必要がある。
本実施の形態に係る情報処理装置における管理システムでは、サーバ装置609上のジョブ制御サーバ609aは、クライアント装置606上に存在するプロキシ出力ポート802a,802bに関する情報を静的に管理しない。つまり、クライアント装置606が動作している(と認識されている)間だけ、プロキシ出力ポート802a,802bの情報を保存している。
本実施の形態に係る情報処理装置における管理システムでは、クライアント装置606は、起動時にプロキシ出力ポート802a,802bをサーバ装置609上のジョブ制御サーバ609aに認識させる処理を行なうが、この処理を「接続処理」と定義する。
そして、上に説明した接続処理が行われた後に、クライアント装置606とサーバ装置609とが通信を互いに行い、図6中の「Job Info」「Scheduling、Device Status」で示されるような、各種ステータスのやり取りを行うことができ、図6において説明したようなプリントジョブデータの送信が可能となる。
以上説明してきたように、図11のフローチャートを実行することにより、例えば、組織変更等の人為的要因により、システムを稼動しているネットワークの通信設定(例えば、IPアドレス)が変更になったり、或いはプリント管理サーバを別のマシンに移管するといった環境の変更があったりした場合にも対応することができる。
特に、クライアント装置単位ではなく、サーバ装置とクライアント装置との間の通信モジュール単位でサーバ装置のアドレスを設定するような出力管理システムの場合、クライアント側のサーバ装置のアドレス設定変更を非常に効率良く行なうことができる。
[第2の実施の形態]
第1の実施の形態では、サーバ装置101をネットワークプリンタ105と別の装置として説明してきた。しかしながら、サーバ装置101をネットワークプリンタ105に含ませる場合も想定される。この場合には、ネットワークプリンタ105の制御部に含めるようにしても良い。また、ネットワークプリンタ105に着脱可能な、ネットワークプリンタ105がネットワーク106を介して外部の何れかの装置と通信を行なうためのネットワークインタフェースカードにサーバ装置105の機能を含めるようにしても良い。
尚、本実施の形態においても、サーバ装置105に相当する装置部分とクライアント装置102〜104とで行なわれる処理は、第1の実施の形態における図10、図11のフローチャートの各ステップの処理と同様に行なわれるので、その説明は省略する。
本実施の形態によれば、サーバ装置105を、わざわざネットワークプリンタ105とは別途の装置として設ける必要がなく、ネットワークプリンタ105の環境をよりシンプルな形態に構築することができる。
[その他の実施形態]
以上が本発明の実施の形態の説明であるが、本発明は、これら実施の形態に限られるものではなく、特許請求の範囲で示した機能、または実施の形態の構成が持つ機能を達成できる構成であれば、どのようなものであっても適用可能である。
また、本発明の目的は、前述した実施の形態の機能を実現するソフトウエアのプログラムコードを記憶した記憶媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)が記憶媒体に格納されたプログラムコードを読み出し実行することによっても、達成されることは言うまでもない。この場合、記憶媒体から読み出されたプログラムコード自体が本発明の新規な機能を実現することになり、そのプログラムコードを記憶した記憶媒体及びプログラムは本発明を構成することになる。
また、プログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、CD−ROM、CD−R、磁気テープ、不揮発性のメモリカード、ROM等を用いることができる。
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施の形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているOS(オペレーティングシステム)等が実際の処理の一部または全部を行ない、その処理によって前述した実施の形態の機能が実現される場合も含まれることは言うまでもない。
更に、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPU等が実際の処理の一部または全部を行ない、その処理によって前述した実施の形態の機能が実現される場合も含まれることは言うまでもない。