(57)【要約】【課題】スケジューリング機能付きプリンタを用いて印刷を行った際のスケジュール機能を用いない印刷ジョブによる割り込みお防止する。【解決手段】プリンタのデバイススケジューラは、スケジュール要求があった場合（Ｓ１３０１−Ｙ）、ＩＰブロック設定を行って、全てのクライアントからの印刷要求を拒否する。そして、その後スケジュール待機の印刷ジョブがジョブキューにあるか判定して（Ｓ１３０５）、あれば、そのジョブの送信元のクライアントについてＩＰブロックを解除する（Ｓ１３０７）。また、転送済み通知があっても、その転送済み通知と同じクライアントのジョブが未転送のまま残っていれば、そのクライアントについてはＩＰブロックを操作せず、残っていなければそのクライアントについてＩＰブロックを設定する（Ｓ１３１３）。【選択図】図１３
2006056069.tif 000002
【特許請求の範囲】
【請求項１】
複数の情報処理装置と通信可能な印刷制御装置であって、
情報処理装置からの印刷ジョブのスケジュール要求を管理する管理手段と、
前記管理手段にスケジュール要求が登録されている場合に、スケジュール要求に基づくことのない印刷データの受信を抑制する抑制手段とを有することを特徴とする印刷制御装置。
【請求項２】
前記抑制手段は、前記スケジュール要求の発行元の情報処理装置の識別情報に基づきスケジュール要求に基づくことのない印刷データの受信を抑制することを特徴とする請求項１に記載の印刷制御装置。
【請求項３】
印刷データの受信を許可する情報処理装置の識別情報または禁止する識別情報をテーブルに登録する設定手段をさらに備え、
前記抑制手段は、前記テーブルを参照して受信が許可された識別情報に対応する情報処理装置からの印刷データの受信を許可し、前記設定手段は、受信が許可された情報処理装置から送信されてくる印刷データの受信の完了、或いは、受信が許可された情報処理装置から受信した印刷データの出力完了に応じて、当該情報処理装置からの印刷データの受信を禁止するよう前記テーブルの登録内容を変更することを特徴とする請求項２に記載の印刷制御装置。
【請求項４】
複数の印刷ジョブをひとまとまりに関連付けたグループジョブを受信した場合に、前記グループジョブについては、それに含まれる複数の印刷ジョブの受信が完了するまで、前記複数の印刷ジョブの何れかの印刷ジョブの受信が終了したとしても、前記設定手段は、前記グループジョブの送信元の情報処理装置からの印刷データの受信を禁止するように前記テーブルの登録内容を変更しないことを特徴とする請求項３に記載の印刷制御装置。
【請求項５】
前記管理手段によりスケジュール要求が登録されていない場合には、前記抑制手段は、スケジュール要求に基づくことのない印刷データの受信を許可することを特徴とする請求項１乃至３の何れかに記載の印刷制御装置。
【請求項６】
前記識別情報は、前記情報処理装置のＩＰアドレス又はＭＡＣアドレスであることを特徴とする請求項２乃至４のいずれか１項に記載の印刷制御装置。
【請求項７】
複数の情報処理装置からの印刷ジョブを制御するための印刷制御方法であって、
情報処理装置からの印刷ジョブのスケジュール要求を管理する管理工程と、
前記管理工程によりスケジュール要求が登録されている場合に、スケジュール要求に基づくことのない印刷データの受信を抑制する抑制工程とを有することを特徴とする印刷制御方法。
【請求項８】
前記抑制工程では、前記スケジュール要求の発行元の情報処理装置の識別情報に基づきスケジュール要求に基づくことのない印刷データの受信を抑制することを特徴とする請求項７に記載の印刷制御方法。
【請求項９】
印刷データの受信を許可する情報処理装置の識別情報または禁止する識別情報をテーブルに登録する設定工程をさらに備え、
前記抑制工程は、前記テーブルを参照して受信が許可された識別情報に対応する情報処理装置からの印刷データの受信を許可し、前記設定工程は、受信が許可された情報処理装置から送信されてくる印刷データの受信の完了、或いは、受信が許可された情報処理装置から受信した印刷データの出力完了に応じて、当該情報処理装置からの印刷データの受信を禁止するよう前記テーブルの登録内容を変更することを特徴とする請求項８に記載の印刷制御方法。
【請求項１０】
複数の印刷ジョブをひとまとまりに関連付けたグループジョブを受信した場合に、前記グループジョブについては、それに含まれる複数の印刷ジョブの受信が完了するまで、前記複数の印刷ジョブの何れかの印刷ジョブの受信が終了したとしても、前記設定工程では、前記グループジョブの送信元の情報処理装置からの印刷データの受信を禁止するように前記テーブルの登録内容を変更しないことを特徴とする請求項９に記載の印刷制御方法。
【請求項１１】
前記管理工程によりスケジュール要求が管理されていない場合には、前記抑制工程では、スケジュール要求に基づくことのない印刷データの受信を許可することを特徴とする請求項７乃至９の何れかに記載の印刷制御方法。
【請求項１２】
前記識別情報は、前記情報処理装置のＩＰアドレス又はＭＡＣアドレスであることを特徴とする請求項８乃至１０のいずれか１項に記載の印刷制御方法。
【請求項１３】
請求項７乃至１２のいずれか１項に記載の印刷制御方法をコンピュータにより実行させることを特徴とするコンピュータプログラム。
【請求項１４】
請求項１３に記載のコンピュータプログラムを記録したことを特徴とするコンピュータ可読記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、たとえば印刷装置のフロントエンドなどにあって、情報処理装置から受信する印刷ジョブのスケジューリング機能を持つ印刷制御装置および印刷制御方法に関する。
【背景技術】
【０００２】
ネットワーク環境下において、複数のユーザにより、ネットワーク印刷装置を共有して利用する形態が知られている。印刷装置が複数のユーザにより共有して利用されるようになると処理負荷が増大し、複数のユーザに対応するために容量の大きな記憶手段が要求される。そのような中、印刷装置のメモリ容量の削減や、処理負荷の軽減を目的とした印刷システムが特許文献１に記載されている。特許文献１の印刷システムでは、クライアントコンピュータから印刷装置側に印刷データを送信するスケジュール要求のみを予約情報として送信し、印刷装置側からスケジューリングの処理に基づき、印刷データの送信を許可する信号が送信されてきた時点で、クライアントコンピュータから描画情報を含む印刷データを印刷装置に送信する。
【０００３】
この特許文献１記載の発明によれば、印刷装置の都合によりクライアントコンピュータに印刷データの送信の許可を行なうため、次々に印刷データが印刷装置に送信されて印刷装置に過大な処理負荷がかかる場合に比べて、印刷装置の制御部の処理能力が低くても対応でき、結果として安価な印刷装置を実現することができる。
【特許文献１】特開平02-146618号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
一方、上記特許文献１のような印刷装置を想定した場合に、複数のクライアントコンピュータから複数個の印刷予約がなされているにも係らず、印刷予約をせずに単に無線インタフェースを介し、ＬＰＲ（ライン・プリンタリモート）機能を用い、印刷装置のＩＰアドレスを指定して印刷データを上記印刷予約無しで、投入してしまう場合が想定され、スケジュール予約に基づくクライアントコンピュータからの印刷データの送信スケジュールが崩れてしまうという問題がある。たとえば、印刷装置の備えた印刷予約機能を利用できるクライアントと、利用できないクライアントとが印刷予約機能を有する印刷装置を利用する場合、印刷予約機能を利用できないクライアントは予約無しで印刷ジョブを投入するために、そのジョブが、印刷予約機能を利用できるクライアントによる印刷予約を無視して実行されてしまうことがある。
【０００５】
本発明は上記課題を解決するためになされたものであり、様々な印刷データの印刷装置への投入方式、たとえば印刷予約機能を利用する方式と、利用しない方式とが混在するような環境下においても、上記スケジューリング予約に基づく印刷を順番どおりに実行させることを目的とする。更には、上記スケジューリング予約に基づく印刷を順番どおりに実行させつつ、他の印刷ジョブ投入方式による印刷投入をも利用可能にせしめる仕組みを提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記目課題を解決するために本発明は以下の構成を備える。
【０００７】
複数の情報処理装置と通信可能な印刷制御装置であって、
情報処理装置からの印刷ジョブのスケジュール要求を管理する管理手段と、
前記管理手段にスケジュール要求が登録されている場合に、スケジュール要求に基づくことのない印刷データの受信を抑制する抑制手段とを有する。
【０００８】
さらに好ましくは、前記抑制手段は、前記スケジュール要求の発行元の情報処理装置の識別情報に基づきスケジュール要求に基づくことのない印刷データの受信を抑制する
さらに好ましくは、印刷データの受信を許可する情報処理装置の識別情報または禁止する識別情報をテーブルに登録する設定手段をさらに備え、
前記抑制手段は、前記テーブルを参照して受信が許可された識別情報に対応する情報処理装置からの印刷データの受信を許可し、前記設定手段は、受信が許可された情報処理装置から送信されてくる印刷データの受信の完了、或いは、受信が許可された情報処理装置から受信した印刷データの出力完了に応じて、当該情報処理装置からの印刷データの受信を禁止するよう前記テーブルの登録内容を変更する
さらに好ましくは、複数の印刷ジョブをひとまとまりに関連付けたグループジョブを受信した場合に、前記グループジョブについては、それに含まれる複数の印刷ジョブの受信が完了するまで、前記複数の印刷ジョブの何れかの印刷ジョブの受信が終了したとしても、前記設定手段は、前記グループジョブの送信元の情報処理装置からの印刷データの受信を禁止するように前記テーブルの登録内容を変更しない
さらに好ましくは、前記管理手段によりスケジュール要求が登録されていない場合には、前記抑制手段は、スケジュール要求に基づくことのない印刷データの受信を許可する
さらに好ましくは、前記識別情報は、前記情報処理装置のＩＰアドレス又はＭＡＣアドレスである。
【発明の効果】
【０００９】
本発明によれば、様々な印刷データの印刷装置への投入方式が混在するような環境下においても、上記スケジューリング予約に基づく印刷を順番どおりに実行させることができる。更には、上記スケジューリング予約に基づく印刷を順番どおりに実行させつつ、他の印刷ジョブ投入方式による印刷投入をも利用可能にする仕組みを実現できる。
【発明を実施するための最良の形態】
【００１０】
以下、本発明の発明を実施するための最良と思われる形態について図面を用いて説明する。
【００１１】
＜システム構成＞
図１は、本発明の実施形態に係るプリントシステムの全体構成を示すブロック図である。本プリントシステムは、情報処理装置としてのクライアント（コンピュータ）１０１〜１０３と、印刷装置（プリントデバイス）としてのネットワークプリンタ１０４〜１０５とを含み、これらが互いに接続されていることにより、全体としてネットワークを構成している。
【００１２】
クライアント（コンピュータ）１０１〜１０３には、印刷制御プログラムが実行可能に格納されており、本プリントシステムに含まれるネットワークプリンタ１０４〜１０５を管理する機能のほか、ネットワークで使用されるファイルを蓄積したり、ネットワークの使用状態を監視したりする機能を有する。具体的には、クライアント（コンピュータ）１０１〜１０３は、自身により印刷ジョブを作成し、ネットワークプリンタ１０４〜１０５のスケジューラにスケジュール要求を発行する機能、ネットワークプリンタ１０４〜１０５のスケジューラからの指示により、印刷データの転送を開始する機能を有する。
【００１３】
ネットワークプリンタ１０４〜１０５は、クライアント（コンピュータ）１０１〜１０３から、印刷データを含む印刷ジョブを受信し、受信した印刷ジョブを解析して印刷する物理的な装置としてのプリントデバイスである。ネットワークプリンタ１０４〜１０５としては、電子写真方式を採用したレーザービームプリンタやインクジェット方式を採用したインクジェットプリンタや熱転写方式を利用したプリンタ等、あらゆる方式の印刷装置を採用することができる。
【００１４】
また、ネットワークプリンタ１０４〜１０５は、複数のクライアント（コンピュータ）１０１〜１０４からの印刷要求を受け付け、受け付けた印刷要求の順序を決定し、印刷指示を発行する機能、ネットワークプリンタ１０４〜１０５に転送された印刷ジョブ、ネットワークプリンタ１０４〜１０５の状態を監視し、
印刷の終了やプリンタ状態をクライアント（コンピュータ）１０１〜１０４に通知する機能を有する。
【００１５】
なお、本プリントシステムに含まれる装置間の通信は、イーサネット（登録商標）ケーブルなどを利用した有線通信でもよいし、電波や光などを利用した無線通信でもよい。さらに、本システムのコンピュータおよびネットワークプリンタはすべて優先通史名類は無線通信をベースにしてＴＣＰ／ＩＰをサポートしていることが望ましい。
【００１６】
＜プリントサーバ及びクライアントの構成＞
図２は、図１に示したクライアント（コンピュータ）１０１〜１０３のハードウェア構成を説明するブロック図である。
【００１７】
図２において、ＣＰＵ２００は、ＨＤ（ハードディスク）２０５に格納されているアプリケーションプログラム、プリンタドライバプログラム、ＯＳや印刷制御プログラム等を読出して実行し、ＲＡＭ２０２にプログラムの実行に必要な情報、ファイル等を一時的に格納制御を行うための制御手段である。
【００１８】
ＲＯＭ２０１は、基本Ｉ／Ｏプログラム等のプログラム、文書処理の際に使用するフォントデータ、テンプレート用データ等の各種データを記憶する記憶手段である。ＲＡＭ２０２は、ＣＰＵ２００の主メモリやワークエリア等として機能する一時記憶手段である。
【００１９】
ＦＤ（フレキシブルディスク）ドライブ２０３は、後述する図５に示すように記憶媒体としてのＦＤ２０４に記憶されたプログラム等を本コンピュータシステムにロードするための記憶媒体読み込み手段である。なお、クライアント（コンピュータ）１０１〜１０３は、ＦＤドライブ２０３に代えて、或いはＦＤドライブ２０３と共に、他の記憶媒体読込手段を備えてもよい。他の記憶媒体としては、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＰＣカード、ＤＶＤ、ＩＣメモリカード、ＭＯ、メモリスティック等、コンピュータが読み取り可能なあらゆる記憶媒体が挙げられる。
【００２０】
ＨＤ２０５は、大容量メモリとして機能する外部記憶手段であり、アプリケーションプログラム、プリンタドライバプログラム、ＯＳ、印刷制御プログラム、及び関係プログラム等を格納している。さらに、スプール手段であるスプーラはここに確保される。なお、クライアント（コンピュータ）１０１〜１０３ではスプール手段としてスプーラが確保される。
【００２１】
キーボード２０６は、ユーザがプリントサーバ１０１やクライアント１０７、１０８に対して、デバイスの制御コマンドの命令等を入力指示するための指示入力手段である。
【００２２】
ディスプレイ２０７は、キーボード２０６から入力したコマンドや、プリンタ１０４〜１０５の状態等を表示する表示手段である。尚、実際にはクライアント（コンピュータ）１０１〜１０３上で稼動するオペレーティングシステムを介して表示手段に表示指示がなされ、このオペレーティングシステムに本印刷処理プログラムによりリソースファイルの表示指示が行われ、後述する各表示が実現される。２０８はシステムバスであり、クライアント（コンピュータ）１０１〜１０３としてのコンピュータ内のデータの流れを司るものである。
【００２３】
またインタフェース２０９は、入出力手段であり、プリントサーバ１０１またはクライアント１０７，１０８は、インタフェース２０９を介してネットワーク上の他の装置とのデータのやり取りを行う。
【００２４】
＜メモリマップ等の説明＞
図３は、図２に示したＲＡＭ２０２のメモリマップの一例を示す図であり、印刷制御プログラムが、ＲＡＭ２０２にロードされ実行可能となった状態のメモリマップである。
【００２５】
印刷制御プログラム及び関係データは、予めＦＤ２０４からＨＤ２０５にインストールされて、ＨＤ２０５からＲＡＭ２０２にロードするようにしてもよいしＦＤ２０４から直接ＲＡＭ２０２にロードして実行させてもよい。さらに、印刷制御プログラムをＲＯＭ２０１に記憶しておき、これをメモリマップの一部となすように構成し、直接ＣＰＵ２００で実行することも可能である。また、以上の各装置と同等の機能を実現するソフトウェアをもって、ハードウェア装置の代替として構成することもできる。
【００２６】
印刷制御プログラムは、クライアントにおいては、印刷データを転送したり、印刷ジョブの印刷先の変更を指示したり、印刷順序を変更したりする指示をするための制御を行う。
【００２７】
３０１は基本Ｉ／Ｏプログラムを記憶するための領域である。基本Ｉ／Ｏプログラムは、装置（プリントサーバ１０１またはクライアント１０７，１０８）の電源がＯＮされたときに、ＨＤ２０５からＯＳがＲＡＭ２０２に読み込まれ、ＯＳの動作を開始させるＩＰＬ（イニシャルプログラムローデイング）機能などを有しているプログラムである。
【００２８】
３０２はＯＳ（オペレーティングシステム）を記憶する領域であり、３０３は印刷制御プログラムを記憶する領域である。３０４は、関係データを記憶する領域である。３０５はワークエリアで、ＣＰＵ２００が各種のプログラムを実行するための領域である。
【００２９】
図４は、図２に示したＦＤ２０４のメモリマップの一例を示す図である。図４において、４００はＦＤ２０４のデータ内容であり、データの情報を示すボリューム情報４０１と、ディレクトリ情報４０２と、印刷制御プログラム４０３と、その関係データ４０４を含んでいる。
【００３０】
図５は、本発明の実施形態に関わるネットワークプリンタ１０４，１０５のハードウェア構成を説明するブロック図である。５００はプリンタで、内部で大きくネットワークプリンタサーバ５２０とプリンタコントローラ５１９からなる異なる制御系を司る機器で構成されている。ネットワークネットワークプリントサーバ５２０において、５０１はネットワークプリントサーバ用ＣＰＵで、書き換え可能なＦｌａｓｈＲＯＭ５０３に記憶された制御プログラムに基づいてシステムバス５０４に接続されるネットワークコントローラ（ＬＡＮＣ５０５）を介してローカルエリアネットワーク（ＬＡＮ５１２）に接続されたホストコンピュータ等の複数の外部装置（不図示）と所定のネットワーク通信プロトコルを用いて、前記外部装置から送られる印刷データやプリンタ制御命令等の各種データ送受信要求を統括的に制御し、拡張インタフェースコントローラ（ＥＸＰＣ５０７）を介して接続されるプリンタコントローラ５１９に対して適切なデータ転送制御を行なう。
【００３１】
ＲＡＭ５０２はＣＰＵ５０１の主メモリ、ワークエリア等の一時記憶領域をして用いられる。ＬＥＤ５０６はネットワークプリントサーバの動作状態を示す表示部として用いられており、例えばネットワークコントローラ（ＬＡＮＣ５０５）とローカルエリアネットワーク（ＬＡＮ５１２）の電気的な接続状態（ＬＩＮＫ）やネットワーク通信モード（１０Ｂａｓｅや１００Ｂａｓｅ、全二重、半二重）等の各種動作状態をＬＥＤの点滅パターンや色で示すこと可能となっている。さらにネットワークプリントサーバ５２０とプリンタコントローラ５１９を繋ぐ拡張インタフェース５１７は、図示しないコネクタで構成されておりネットワークプリントサーバ５２０のみが着脱し、同じ構成を持つ別のプリンタ５００にネットワークプリントサーバ５２０を装着することも可能な構成となっている。
【００３２】
プリンタコントローラ５１９において、５０８はプリンタコントローラ用ＣＰＵで、ＲＯＭ５０９に記憶された制御プログラム等あるいはディスクコントローラ（ＤＫＣ５１５）を介して接続された外部メモリ５１０に記憶された制御プログラムやリソースデータ（資源情報）等に基づいてシステムバス５１１に接続される各種デバイスとのアクセスを統括的に制御し、拡張インタフェースコントローラ（ＥＸＰＣ５１３）を介して接続されるネットワークプリントサーバ５２０から受信される印刷データを基にラスタコントローラ５１２によって出力画像情報を生成し、プリントエンジン５１６に対して画像信号を出力する。
５１４はＣＰＵ５０８の主メモリ、ワークエリア等として機能するＲＡＭで、図示しない増設ポートに接続されるオプションＲＡＭによりメモリ容量を拡張することができるように構成されている。
【００３３】
５１８は操作パネル（操作部）でプリンタ５００の動作モード等の設定や印刷データの取り消し等の操作を行なうためのボタンおよびプリンタ５００の動作状態を示す液晶パネルやＬＥＤ等の表示部が配されている。
【００３４】
次に、本プリントシステムのクライアントのソフトウェア構成の概要について説明する。図６は、クライアント１０１〜１０３におけるソフトウェア構成の一例を示す図である。それぞれの構成間の矢印は、アプリケーションから発行された描画コマンドを含む印刷ジョブが、どのように処理されるかを示したものである。また、各ブロックで示されたソフトウェア構成は、図２のＣＰＵ２００によって実行され、所望の機能を実現する。
【００３５】
通常、Ｍｉｃｒｏｓｏｆｔ  Ｗｏｒｄ（登録商標）などの一般的なアプリケーションプログラム６０１は印刷の指示を受け付けると、一連の描画コマンドをＯＳを介して生成する。ＯＳを介して生成された描画コマンドを受け取ったＰＤＬドライバ６０２は、一連の描画コマンドに基づいてネットワークプリンタ１０４〜１０５で解釈可能なＰＤＬファイルを含む印刷ジョブを生成する。なお、以下の説明ではＰＤＬドライバを例に説明を行うが、これに限定されるものではなく、例えば、ＢＤＬ（Ｂａｎｄ  ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）や、圧縮ビットマップを作成するプリンタドライバ、或いは、アプリケーション及びＯＳによりプリンタドライバを介さずに印刷データを生成する形態などにも適用可能であることはいうまでもない。
【００３６】
ＰＤＬドライバ６０２は、プリントデバイスへ印刷ジョブを送信するためにスプーラ６０３に渡す。ここではＯＳをウィンドウズ（登録商標）と仮定しているのでスプーラ６０３はウィンドウズ（登録商標）スプーラである。ただし、本発明を適用するコンピュータのＯＳはＷｉｎｄｏｗｓ（登録商標）に限定されるものではなく、描画命令を備えるものであれば他のＯＳも適用可能であることは言うまでもない。
【００３７】
スプーラ６０３は、ユーザがユーザインタフェースを介して選択し指示したポートモニタ６０４に印刷ジョブを渡して、ネットワークプリンタ１０４〜１０５等のプリントデバイス５００に送信させる手順をとる（矢印ａ）。
ここでは、ユーザはあらかじめジョブ制御プリントサービス６０５に印刷データを転送する、ポートモニタ６０４（以降、ジョブ制御ポートモニタと略記）を指定して印刷を指示したものとして説明を進める。
【００３８】
また、プリンタドライバインタフェースを介して設定された用紙サイズ、ステープル指示等の印刷設定情報も、ジョブ制御ポートモニタ６０４に送信される。ジョブ制御ポートモニタ６０４はプリントサービス６０５（以降、ジョブ制御プリントサービスと称する）に送信する（矢印ｂ）。
【００３９】
ジョブ制御プリントサービス６０５は、転送された印刷ジョブ及びデバイスの状態を管理する機能を備える。また、プリントデバイスから通知されるデバイス状態やジョブの状態などの情報を管理したり、また、プリントデバイスに対して所定の命令をする機能も備える。これは、複数のネットワークプリンタ１０４〜１０５のデバイス情報やジョブ情報を管理する機能に相当する。
【００４０】
そして、印刷データをプリンタデバイス５００に送信する前に、プリンタデバイス５００が持つ印刷ジョブの順序管理機能に印刷の要求を発行し（矢印ｃ）、順序管理機能に基づき順番が到来した場合には、プリンタデバイス５００からの印刷指示により（矢印ｄ）、ネットワークプリンタ１０４〜１０５に印刷データを送信する（矢印ｅ）。
【００４１】
プリンタデバイス６０６は、印刷データの完了を確認すると印刷完了の通知をジョブ制御プリントサービス６０５に通知（矢印ｆ）したり、また、プリンタデバイス５００の状態を通知する（矢印ｆ）。この矢印ｆの通知は後述にて詳しく説明する、図１２のシーケンス図における”印刷状態通知”に相当する。また、転送開始、転送終了の通知も、プリンタデバイス５００に対して送信される。
【００４２】
プリントマネージャ６０７は、ユーザが、ジョブ制御プリントサービス６０５内部でプリントジョブがどのような状態にあるかを調べたり、プリントジョブを操作したりするためのユーザインタフェースを提供するプログラムである。プリントマネージャ６０７は、ジョブ制御プリントサービス６０５のソフトウェアのインタフェース（ＡＰＩ：Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍ  Ｉｎｔｅｒｆａｃｅ）を介して、ジョブ制御プリントサービス６０５と情報・指示をやり取りしている。
【００４３】
そして、主に、ジョブ制御プリントサービス６０５が管理するネットワークプリンタ１０４〜１０５の状態情報をイベントとして取得する機能を備える。イベントの通知の種別としては、トナー残量が少なくなった警告、クライアントとデバイスとの通信障害、メモリ不足、排紙トレイ満載などのエラー／警告情報の通知や、エラー状態から正常状態に復帰した正常情報の通知などが想定される。ここでのジョブ制御プリントサービス６０５はネットワークを介して通信可能な各デバイス（印刷装置）の印刷実行中、電力制御状態、障害情報（紙ジャム）等のステータスの通知を受け付ける機能を備える。
【００４４】
更に詳細な処理としては、プリントマネージャー６０９がジョブ制御プリントサービス６０５に対してデバイスを指定したイベントを発行し、ジョブ制御プリントサービス６０５は発行されたイベントに基づくデバイスのステータスを認識して、監視に基づく結果をプリントマネージャー６０９に通知する。
【００４５】
＜印刷ジョブの流れ＞
次に、図７を用いてアプリケーション６０１からプリントデバイスまでの印刷ジョブの流れについて説明する。ここで、図６と同じソフトウェア構成について同じ参照番号を付与しており、その機能については詳説しない。図７に示すように、概念的には、プリンタドライバ６０２、スプーラ６０３、ジョブ制御ポートモニタ６０４は、プリントデバイス１０４〜１０５ごとに用意されている。ＯＳがウィンドウズ（登録商標）の場合には、これらをまとめてウィンドウズ（登録商標）プリントシステム７００と称する場合もある。
【００４６】
ジョブ制御プリントサービス６０５には、プリントデバイス１０４〜１０５に対応する数のプリントキュー７０１、７０１Ａ及び出力ポート７０２、７０２Ａが含まれている。これらのプリントキューや出力ポート７０２、７０２Ａは、それぞれ１８０１、１８０２に示されるようなテーブルでジョブ制御プリントサービス６０５が管理している。プリントキューはスプール２０５に確保される。
【００４７】
この出力ポートには対応する印刷装置のＩＰアドレス又は名前解決（ＤＮＳ：Ｄｏｍａｉｎ  Ｎａｍｅ  Ｓｙｓｔｅｍ）で使用されるネームが関連付けられている。そして、このＩＰアドレス又はネームに基づき、ジョブのスケジュール要求先やジョブの送信先が特定されジョブの送信（出力）が行なわれる。
【００４８】
印刷を行なう場合、アプリケーション６０１はプリンタを指定して印刷指示を発行する。この印刷指示に基づいてＰＤＬドライバ６０２によって生成された印刷ジョブがジョブ制御ポートモニタ６０４からジョブ制御プリントサービス６０５に渡されると、その印刷ジョブ情報は、まずプリントキュー７０１に保持され、出力ポート７０２に印刷ジョブを受け付け指示を出す。出力ポート７０２は、印刷するジョブを受け付けると、出力ポートに設定されたＩＰアドレスに該当する、プリンタデバイス５００の後述するスケジューラに対してスケジュールの要求を発行する。プリンタデバイス５００の後述するスケジューラは、自身が持つスケジューリング機能に基づいて、複数のクライアント１０１〜１０３から受け付けたジョブのスケジューリング処理を行い、出力ポート７０２に対して印刷指示を発行する。印刷指示を受け付けた出力ポート７０２はプリンタデバイス５００に印刷データを送信する。
【００４９】
また、プリントキュー７０１が負荷分散用のプリンタで、プリントキュー７０１Ａが負荷分散用バックアッププリンタである場合のジョブの流れについて説明する。プリントキュー７０１が負荷分散用のプリンタに投入されたジョブは負荷分散ジョブとして登録されるが、ジョブ制御プリントサービス６０５は、プリントキュー７０１、７０１Ａに登録されたジョブの状況に応じて、全ての負荷分散ジョブが最短で終了するようにジョブを振り分ける。その際、ジョブの流れとしては、プリントキュー７０１に投入されたジョブは、プリントキュー７０１Ａに移動される。また、例えば、プリントデバイス６０７Ａがエラーした場合には、プリントキュー７０１Ａのジョブがプリントキュー７０１に移動されたりする。
【００５０】
また、印刷された複数のジョブがグループジョブ指定されていた場合に関しては、プリントキュー７０１で全てのグループジョブを受け付け後、出力ポート７０２が、プリンタデバイス５００の後述するスケジューラに対して、複数のグループジョブをまとめ、スケジュールの要求を発行する。その後、プリンタデバイス５００のスケジューラは、自身が持つスケジューリング機能に基づいて、受け付けたグループジョブのスケジューリング処理を行い、出力ポート７０２に対して印刷指示を発行する。印刷指示を受け付けた出力ポート７０２はプリンタデバイス６０６に対して、グループジョブの単位で、複数のジョブをまとめて１つのセッション内で送信する。
【００５１】
＜プリンタのソフトウエア構成＞
図８は、本発明の実施形態に好適な印刷システムにおけるプリンタ５００内の制御機器であるネットワークプリントサーバ５２０およびプリンタコントローラ５１９の各記憶デバイスに記憶された制御プログラム内のソフトウェア構成を説明するブロック図である。なお上記各制御プログラムは各制御機器のＲＡＭにロードされ、ＣＰＵ５０１または５０８によって実行される。
【００５２】
８０１はネットワークプリントサーバ５２０の基本的なデータの入出力制御を統括するオペレーティングシステムである。さらに前記オペレーティングシステム８０１内にはプログラム/データ記憶部５０９との入出力制御を行なうファイルシステム８０５、プリンタコントローラ５１９と拡張インタフェース５１７を介して通信制御を行なう拡張インタフェースドライバ８０７、ローカルエリアネットワーク(LAN５１２)の通信媒体を介して不図示のホストコンピュータ等の外部装置と通信を行なうネットワークインタフェースドライバ８０６を内包している。
【００５３】
８０２はアプリケーションプログラムインタフェース(API)であり、ネットワークプリントサーバ５０２で動作するユーザアプリケーション８０３やプリンタ５００やユーザアプリケーションの登録・管理を行う管理アプリケーション等のアプリケーションプログラムに対して前記オペレーティングシステムが備える各種機能を提供する。また前記アプリケーションプログラムインタフェース８０２で提供される機能は、印刷データの送受信機能を提供するデータ転送API、ビットマップ画像や表示メッセージ等のリソースデータの入出力制御を行なうリソース制御API、プリンタ５００の再起動や設定値の初期化や設定等の制御を行なうプリンタ制御API、印刷ジョブの取り消しや再印刷指示などを制御するジョブ制御API、ネットワークプリントサーバ５２０の再起動や設定値の初期化や設定、およびアプリケーションプログラムの起動、登録、削除を行なうプリントサーバ制御APIを備える。
【００５４】
８１２はプリンタコントローラ５１９の各種処理制御を統括するオペレーティングシステムであり、内部にプリントエンジンとの通信制御を行なうプリントエンジン制御部８１４およびネットワークプリントサーバ５２０から参照されるビットマップ画像やエラーメッセージ等の機種依存リソースおよびネットワークプリントサーバ上で動作する機種依存アプリケーションプログラム等を記憶する機種依存リソース/プログラム記憶部との入出力制御を行なうファイルシステム８１５を内包している。
【００５５】
８１３は拡張インタフェース制御部であり、拡張インタフェース５１７を介してネットワークプリントサーバ５２０との通信制御を行なう。さらに前記拡張インタフェース制御部は、制御種別毎に印刷データの入出力を制御するデータ転送論理インタフェース、機種依存リソース/プログラム記憶部５０９に記憶された各種データの入出力を制御するリソース制御論理インタフェース、プリンタ５００の再起動や設定値の初期化や設定等の制御を行なうプリンタ制御論理インタフェース、印刷ジョブの取り消しや再印刷指示などを制御するジョブ制御論理インタフェースを備えており、各論理インタフェースを介してネットワークプリントサーバ５２０から要求された命令をオペレーティングシステム８１２に対して転送し、その処理結果をネットワークプリントサーバ５２０に対して返信する。
【００５６】
８１１は、ネットワークインターフェースドライバ８０６がＬＡＮ５１２を介してクライアント１０１〜１０３からの通知を受けると、その受信の通知を受け付けるネットワーク制御部であり、どのクライアントからの通信を判断することや、通信の制御（たとえば指定ＩＰアドレスや指定ＭＡＣアドレスからのパケットの廃棄、あるいは指定ＩＰアドレスや指定ＭＡＣアドレス以外からのパケットの廃棄）を行うことができるモジュールである。通信の制御のために、テーブル８１１ａを用いてブロックするアドレスを指定できる。
【００５７】
８１０は、クライアントが送信する印刷データを受け付けるプロトコルを制御するモジュールであり、受け付けた印刷データをプリンタコントローラに渡すことができる。
【００５８】
また、アプリケーション８０３はプリントコントローラ５１９のプログラム記憶部８１６またはネットワークプリントサーバ５２０のプログラム記憶部８０８に格納される。プリンタ５００が起動するとプログラム記憶部８０８または８１６に格納されたアプリケーションが持つライセンスと、ライセンス記憶部８０９やプログラム記憶部８１６やライセンス記憶部８１７が持つライセンスと比較し一致しているかどうかを判断する。一致していた場合は適正アプリケーションプログラムであると判断し、アプリケーションプログラムがネットワークプリントサーバ５２０のRAM５１４にロードされる。
【００５９】
＜デバイススケジューラ９００＞
次に、本プリントシステムのスケジューリング機能やクライアント１０１〜１０３から受け付けた印刷ジョブの管理機能を持つデバイス上のユーザアプリケーションであるデバイススケジューラ９００のソフトウェア構成について説明する。９０１は、印刷するクライアント１０１〜１０３の接続状況や、クライアントに通知すべき情報を管理する通信接続管理部９０１であり、接続しているクライアント情報１００２をクライアント管理キュー１００１で管理する。通信接続管理部９０１は、プログラムアプリケーションインターフェース８０２のデータ転送ＡＰＩ、ネットワークインターフェースドライバ８０６を経由してクライアントと通信を行う。９０２は、クライアント１０１〜１０３から受け付けた印刷ジョブのスケジューリングを行うスケジュール管理部であり、ジョブ管理部９０３、デバイス管理部９０４を持つ。９０３は、クライアント１０１〜１０３が発行したスケジュール要求や、クライアント１０１〜１０３が印刷したジョブを管理するジョブ管理部９０３である。ジョブ管理部９０３は、クライアントが印刷するジョブの情報１１０２をジョブ管理キュー１１０１で管理している。９０４は、プリンタコントローラ５１９が持つプリンタの状態や受け付けた印刷ジョブの状態をイベントハンドラ９０５経由で受け付けるデバイス管理部であり、プリンタコントローラ５１９から受け付けたイベントを通信接続管理部９０１やジョブ管理部９０３に通知する。
【００６０】
＜クライアント管理キューおよびジョブ管理キュー＞
図１０は、通信管理部９０１が管理する、接続クライアント１０１〜１０３のクライアント情報１００２と、複数の接続するクライアント１０１〜１０３のクライアント情報１００２を管理するクライアント管理キュー１００１である。クライアント管理キュー１００１には、クライアントＩＤに対応するクライアント情報が関連づけられている。図９では、通信接続管理部９０１内部に表しているが、もちろん独立したテーブルであることが望ましい。
【００６１】
クライアント情報１００２は、接続するクライアント毎に接続管理部が割り振ったクライアントＩＤ１００２ａ、接続するクライアント１０１〜１０３のＩＰアドレス１００２ｂ、接続するクライアントが登録したイベントの種類を示すイベント情報１００２ｃなどの情報を持つクライアント情報である。また、負荷分散モード１００２ｄは、クライアント１０１〜１０３が複数のデバイスを使用して、多数のジョブを効率的に印刷するために、ネットワークプリンタを占有するために設定するモードで、後述するようにクライアントが接続するときに設定する情報である。イベント情報１００２ｃで指定された種類の、デバイス状態のイベントやジョブ状態などのイベントが、プリンタコントローラによりクライアントに対して通知される。
【００６２】
１００１は、接続したクライアント１０１〜１０３のクライアント情報をキューの形式で保持する管理キューである。クライアントとのセッションが開始されると、該当するクライアントの情報が本管理キューに登録され、切断すると該当するクライアント情報が削除されるようになっている。図１０ではクライアント管理キュー１００１のポインタでクライアント情報にリンクしているように表しているが、もちろんクライアント管理キュー１００１の各レコードにクライアント情報１００２が登録されていても良い。これはジョブ管理キューについても同様である。
【００６３】
図１１は、クライアント１０１〜１０３が印刷すべく発行したスケジュール要求に付加するジョブ情報１１０２と、複数発生するジョブ情報を管理するジョブ管理キュー１１０１を示す図である。ジョブ管理キュー１１０１には、ジョブＩＤに対応するジョブ情報が関連づけられている。
【００６４】
ジョブ情報１１０２は、クライアント１０１〜１０３が印刷を開始するために発行するスケジュール要求に付加される印刷ジョブの情報である。このジョブ情報１１０２は、印刷ジョブのドキュメント名１１０２ａ、ジョブ管理部９０３が発行したジョブＩＤ１１０２ｂ、クライアントで印刷を開始したユーザ名１１０２ｃ、ジョブのページ数１１０２ｄ、印刷ジョブの状況を表すジョブ状態１１０２ｅ、クライアント１０１〜１０３が転送する印刷データに含まれるジョブデータＩＤ１１０２ｆ、印刷ジョブの送信元のクライアントのＩＰアドレス１１０２ｇが登録される。ジョブ状態１１０２ｅは、クライアント１０１〜１０３が印刷のスケジュール要求を発行してからジョブがプリンタから無くなるまでの状態を表しており、印刷待機中、スケジュールアップ状態、転送中、転送済み、印刷完了などの状態が存在する。ジョブデータＩＤは、印刷データに含まれるジョブのＩＤで、プリンタコントローラ５１９内でのジョブ状態を通知するときなど、付加させるＩＤである。
【００６５】
１１０１は、複数のジョブ情報１１０２を管理する管理キューであり、クライアント１０１〜１０３からのスケジュール要求を受け付けるとジョブ情報１１０２が管理キューに登録され、印刷ジョブが印刷終了すると、該当するプリンタ情報が削除されるようになっている。
【００６６】
＜スケジュールジョブのシーケンス＞
図１２では、クライアント１０１〜１０３のジョブ制御プリントサービス６０５が、ジョブを受け付け後、プリンタデバイス５００にスケジュール要求を発行するところから、プリンタで印刷が終了するところまでのやり取りについて記載する。なお、図１２のかっこ内のアルファベットは図６のジョブ制御プリントサービス６０５とプリンタデバイス５００との間のメッセージの符号に対応している。また、以下の説明のクライアントとは、図１２のジョブ制御プリントサービス６０５に相当する。
【００６７】
ジョブ制御プリントサービス６０５は、印刷データを受け付けると、デバイススケジューラ９００とセッション接続を開始する（１２０１）。
クライアントの情報を通知する接続要求コマンド（１２０２）、ジョブ／デバイス状態を通知してもらうためのイベント登録（１２０３）、デバイススケジューラ９００がスケジュール管理するジョブの情報を取得するジョブリスト取得コマンド（１２０４）を発行する。デバイススケジューラ９００は、接続要求を受け付けると、クライアント情報１００２をクライアント管理キュー１００１に登録し、イベントの登録を受け付けると該当するクライアント情報の登録イベントに設定する。ジョブリスト要求を受け付けると、ジョブ管理キュー１１０１に登録されているジョブ情報１１０２のリストを送信する。
【００６８】
次に、クライアント１０１〜１０３が印刷を予約するためのスケジュール要求のコマンド（１２０５）を発行する。デバイススケジューラ９００はスケジュール要求（１２０５）を受け付けると、ジョブ管理キュー１１０１にジョブ情報１１０２を登録する。ジョブ情報１１０２には、ドキュメント名等の情報を設定する。デバイススケジューラ９００は、後述する判断でプリンタデバイス５００が印刷データを受け付けられるようになるとスケジュールＵＰを発行し（１２０６）、ジョブ制御プリントサービス６０５に対して印刷データの送信を開始するように促す。また、スケジュールＵＰを発行すると、ジョブ情報１１０２のジョブ状態をスケジュールＵＰ状態に更新する。
【００６９】
ジョブ制御プリントサービス６０５は、スケジュールＵＰを受け付けるとＬＰＤ（プリンタへの印刷ジョブの流れを制御するデーモン）／ＲＡＷに印刷データの転送を開始し（１２０７）、転送が始まるとデバイススケジューラ９００に対して転送開始の通知を行う（１２０８）。デバイススケジューラ９００は、転送開始通知を受けると、ジョブ情報１１０２のジョブ状態に転送中の状態に更新する。ＬＰＤ／ＲＡＷが印刷データを受け付けるとプリンタコントローラ５１９にデータを転送し、プリンタコントローラ５１９で印刷が開始される。プリンタコントローラ５１９は、印刷が開始されるとジョブの状態をデバイススケジューラ９００に通知する（１２０９）。デバイススケジューラ９００は、クライアント情報の登録イベントの情報を基に、クライアントにジョブの印刷状態を通知する（１２１０）。
【００７０】
また、ジョブ制御プリントサービス６０５は印刷データの転送が終了するとデバイススケジューラ９００に対して、転送終了通知を送信する（１２１１）。デバイススケジューラ９００は、転送終了通知を受けると、ジョブ情報１１０２のジョブ状態に転送済の状態に更新する。
【００７１】
プリンタコントローラ５１９で印刷処理が終了すると、ジョブの状態として印刷完了の通知をデバイススケジューラ９００に通知する（１２１２）。デバイススケジューラ９００は、クライアント情報の登録イベントの情報を基に、クライアントにジョブの印刷完了の状態を通知する（１２１３）。ジョブ制御プリントサービス６０５は、上記通知により印刷が完了したことを確認すると、デバイスからの通知が必要なくなるので、デバイススケジューラ９００からのイベント通知の登録を解除要求を発行する（１２１４）。イベント解除要求を受け付けた、デバイススケジューラ９００は、クライアント情報の登録イベントにイベントを通知しない旨の情報を設定する。その後、ジョブ制御プリントサービス６０５は、デバイススケジューラ９００との接続を終了するための切断要求を発行し（１２１５）、セッションを終了する（１２１６）。
【００７２】
デバイススケジューラ９００は、切断要求を受け付けると、クライアント管理キュー１００１から該当するクライアント情報１００２を削除し、該クライアントとの処理を終了する。
【００７３】
＜スケジュール管理部９０２による処理手順＞
図１３を用いて、情報処理装置からの印刷のスケジュール要求を管理する管理手段を備える印刷制御装置（印刷制御装置はネットワークプリンタサーバ５２０に相当する。）において、管理手段（スケジュール管理部９０２に相当する。）にスケジュール要求が登録されている場合に、スケジュール要求に基づくことのない印刷データの受信を抑制する処理について説明する。図１３は、ジョブ制御プリントサービス６０５のスケジュール要求の受け付けから、スケジュールＵＰを発行するまでのデバイススケジュラのスケジュール管理部の処理の流れについて説明する。また、ここでは、デバイススケジューラ９００がスケジューリングを行っている場合や、クライアントがジョブグルーピングを指定して複数のジョブをまとめて出力させる指定をして印刷した場合に、ジョブ制御プリントサービス６０５を持たずデバイススケジューラ９００のスケジューリング機能を使用しないクライアントが、直接ＬＰＤ/ＲＡＷに対して印刷データの転送を行い、スケジュールしているジョブの間に割り込み印刷を行うことをガードするための機能の処理についても記載する。なお、たとえば送信先がスケジュール管理部９０２であるかそれともＬＰＤ／ＲＡＷであるのかは、宛先のポート番号等で指定できる。
【００７４】
ステップＳ１３０１では、ジョブ制御プリントサービス６０５からの通知を受け付けると、図１２で示すようなスケジュール要求の通知なのか、転送済み状態の通知なのかを判断する。
【００７５】
スケジュール要求の通知であれば、ステップＳ１３０２に処理を移行し、現在スケジュール管理しているジョブがあるかどうかを、ジョブ管理キュー１１０１を参照し判断する。スケジュール管理しているジョブがなければステップＳ１３０３に処理を移行し、全てのクライアントから印刷ができないように、全てのＩＰアドレスからの接続を拒否するようにＩＰブロック設定をネットワーク制御部８１１に指示する。ネットワーク制御部８１１は、ＩＰブロック設定がされたＩＰアドレス（すなわちこの場合には全てのＩＰアドレス）からの印刷要求の接続に対して接続拒否の応答を行う。
【００７６】
また、ステップＳ１３０２で既にスケジューリングしているジョブがあれば、ステップＳ１３０４に処理を移行する。この処理によれば、デバイススケジューラ９００がスケジューリングを行っている場合には、デバイススケジューラ９００に印刷を予約せず直接ＬＰＤ/ＲＡＷに対して印刷データの転送を行うことをガードし、デバイススケジューラ９００がスケジューリングを行っていない場合には、デバイススケジューラ９００に印刷を予約せず直接ＬＰＤ/ＲＡＷに対して印刷データの転送を行うこと許可することが可能となる。
【００７７】
ステップＳ１３０４では、ジョブ管理部９０３で発行したジョブＩＤを設定したジョブ情報１１０２を作成し、スケジュール要求に付加された情報をジョブ情報１１０２に設定して、スケジュール要求を受け付けた順でジョブ管理キュー１１０１に登録する。
【００７８】
次に、ステップＳ１３０５において、ジョブ管理キュー１１０１に登録されたジョブ情報１１０２のジョブ状態を確認する。ジョブ状態がスケジュールＵＰ、または転送中のものがあれば、既にあるクライアントに印刷データを転送するように指示しているジョブがあるため、ステップＳ１３０１に処理を移行する。ジョブ状態がスケジュールＵＰのものも、転送中のものもなければ、クライアント１０１〜１０３から印刷データが送られてくる予定が無く、プリンタが印刷データの受信が行えるため以降スケジュールＵＰの発行の準備を行うためにステップＳ１３０６に処理を移行する。
【００７９】
ステップＳ１３０６では、ジョブ管理キュー１１０１に登録されたジョブの先頭から順に、スケジュール待機の状態のジョブを検索する。スケジュール待機のジョブが無ければ、送信指示を出すジョブが無いため、処理をステップＳ１３０１に移行する。スケジュール待機のジョブがあれば、ステップＳ１３０７に処理を移行する。ステップＳ１３０７では、スケジュール待機の状態のジョブはスケジュールＵＰを発行する対象であるため、そのジョブをスケジュール登録したクライアントから印刷データを受け付けられるように、該クライアントのＩＰアドレスのＩＰブロックを解除するように、ネットワーク制御８１１に対して指示する。クライアントのＩＰアドレスは、クライアント管理キュー１００１またはジョブ管理キュー１１０１にクライアントのＩＰアドレスとして登録されているので、ジョブＩＤからも、クライアントＩＤからも特定できる。
【００８０】
更に、ステップＳ１３０８で該当するクライアントに対して印刷データの転送を開始させるスケジュールＵＰのコマンドを通知し、ステップＳ１３０９で、該当するジョブ情報１１０２のジョブ状態をスケジュールＵＰ状態に更新し、ステップＳ１３０１に処理を移行する。
【００８１】
一方、ステップＳ１３０１において、ジョブ制御プリントサービス６０５からの通知を受け付け、転送済み状態の通知であれば、スケジュールＵＰしたクライアントが印刷データの転送が終了したたことを意味するために、該当クライアントのＩＰアドレスをブロックする処理を行うために、ステップＳ１３１０に処理を移行する。
【００８２】
ステップＳ１３１０では、ジョブ管理キュー１１０１に、スケジュール要求されており、まだ転送されていないジョブが残っているかを判断する。スケジュール要求時にスケジュール対象のジョブが通知されているので、ステップＳ１３１０の判定はこの通知されたジョブ情報に基づいて行える。転送されるべきジョブが残っていなければ、ステップ１３１１において、ＩＰブロックの設定を解除する。そのために、全クライアントに相当するＩＰアドレスからのデータ受信を許可する旨のＩＰブロック設定の解除をネットワーク制御８１１に対して指示し、ステップＳ１３０１に処理を移行する。
【００８３】
ステップＳ１３１０でスケジュールされておりしかも未転送のジョブがあると判定されれば、ステップＳ１３１２に分岐する。ステップＳ１３１２では、ステップＳ１３０１で検知された「転送済み」状態を通知したクライアントに、それがスケジュール要求してまだ転送していないジョブがあるか判定する。すなわち、「転送済み」状態の送信元と、スケジュールされている未送信のジョブの送信元とが同じか判定する。同じではないと判定された場合、スケジュール要求したクライアントからの印刷データの転送は無いので、ステップＳ１３１３に処理を移行し、スケジュール要求したクライアントからの印刷を抑制するために、該クライアントのＩＰアドレスからの印刷を受け付けない旨のＩＰブロック設定をネットワーク制御８１１に対して指示し、ステップＳ１３０５に処理を移行する。
【００８４】
一方、ステップＳ１３１２において、転送済み状態を通知したクライアントに、それがスケジュール要求してまだ転送していないジョブがあると判定されば、ＩＰブロックの設定をせず（設定を変更せず）、ステップＳ１３０５に処理を移行する。
【００８５】
上記のようにな処理を行えば、あるクライアントがデバイススケジューリング機能を使用して通常のジョブの印刷やグループジョブを指定して印刷している場合に、デバイススケジューラ９００のスケジューリング機能を使用しないクライアントが、直接ＬＰＤ/ＲＡＷに対して印刷データの転送を行い、スケジュールしているジョブの間に割り込み印刷を行うことをガードすることができる。
【００８６】
＜デバイス管理部による処理＞
図１４は、プリンタコントローラからのデバイス状態、ジョブ状態通知をイベントハンドラを経由して受け付け、ジョブ管理部９０３や通信接続管理部９０１に通知するデバイス管理部９０４の処理について記載する。
【００８７】
ステップＳ１４０１では、デバイススケジューラ９００が起動すると、デバイス管理部９０４がイベントハンドラを経由してプリンタコントローラに対して、デバイスの状態が変更した場合や、プリンタコントローラが処理する印刷ジョブの状態が変更したばあいにそれらの状態を通知するようにイベント登録の処理を行う。ステップＳ１４０２では、プリンタコントローラで発生したイベントをイベントハンドラ経由で受け付けるとジョブのイベントであるかデバイスのイベントであるかを判断する。ジョブのイベントであれば、ステップＳ１４０３でジョブ管理部９０３にジョブイベントを通知し、ステップＳ１４０２に処理を移行する。デバイスのイベントであれば、処理をステップＳ１４０４に移行し、デバイスの状態をデバイス管理部９０４で保持した後、ステップＳ１４０５で通信接続管理部９０１にデバイスイベントを通知し、処理をステップＳ１４０２に移行する。
【００８８】
＜ジョブ管理部による処理＞
図１５では、デバイス管理部９０４からのジョブ状態通知イベントの受け付け、またはジョブ制御プリントサービス６０５からのジョブリスト要求の受け付けに対する、ジョブ管理部９０３の処理を示している。ステップＳ１５０１では、通信接続管理部９０１やデバイス管理部９０４からの通知を受け付けると、それがデバイス管理部９０４からのジョブ状態通知であるか、ジョブリスト要求であるかを判断する。デバイス管理部９０４からのジョブ状態通知であれば、ステップＳ１５０２に処理を移行し、該当するジョブ情報１１０２のジョブ状態１１０２ｅを更新する。更にステップＳ１５０３に処理を移行し、印刷完了の通知であるかを判断する。印刷完了でなければ処理をステップＳ１５０４に移行し、通信接続管理部９０１にジョブの状態のイベントをクライアントに発行するように通知する。
【００８９】
ステップＳ１５０３で、印刷完了の通知であれば、ステップＳ１５０５に処理を移行し、ジョブ管理キュー１１０１から該当するジョブ情報を削除し、ステップＳ１５０６で、通信接続管理部９０１にジョブの完了イベント（削除通知）をクライアントに発行するように通知し、処理をステップＳ１５０１に移行する。
【００９０】
ステップＳ１５０１で、ジョブ制御プリントサービス６０５からのジョブリスト要求の受け付けると、ステップＳ１５０７において、ジョブ管理キュー１１０１に登録されたジョブ情報１１０２のリストを要求元のクライアントに送信するように通信接続管理部９０１にジョブ情報１１０２リストを通知する。
【００９１】
以上のようにしてクライアント（ジョブ管理プリントサービス）にジョブの状態を通知できる。またジョブ管理キューをジョブの状態にあわせて更新できる。
【００９２】
＜通信接続管理部による処理＞
図１６は、クライアント１０１〜１０３からの要求や通知、デバイス管理部９０４からの通知、ジョブ管理部９０３への要求や通知を処理する通信接続管理部９０１の処理の流れについて記載する。また、クライアントが複数のプリンタデバイスを使用して多数のジョブを効率的に印刷するために負荷分散指定の印刷をしている場合に、デバイススケジューラ９００が他のクライアントからの印刷を拒否する処理の流れについても記載する。
【００９３】
ステップＳ１６０１では、クライアント１０１〜１０３やデバイス管理部９０４、ジョブ管理部９０３からの通知や要求を受け付け、どの通知や要求であるかを判断する。ステップＳ１６０１において受け付けた要求やイベントがクライアント１０１〜１０３からの接続要求であれば、ステップＳ１６０２に移行する。
【００９４】
ステップＳ１６０２では、クライアントの接続を管理するクライアント管理キュー１００１に登録されたクライアント情報１００２の負荷分散モードを参照し、ステップＳ１６０１で接続要求を発したクライアント以外で、負荷分散モード印刷を行っているかを確認する。負荷分散モードのクライアントの接続がなければステップＳ１６０３に処理を移行し、通信接続管理部９０１で発行したクライアントＩＤと、要求を発したクライアントのＩＰアドレスを設定し、クライアント管理キュー１００１にクライアント情報１００２を登録する。ステップＳ１６０２で、ステップＳ１６０１で接続要求を発したクライアント以外の負荷分散モードのクライアントの接続があればステップＳ１６０４に処理を移行し、接続要求を拒否し接続を中断する。
【００９５】
この処理によれば、負荷分散印刷の処理を行っているクライアントの接続が発生移行、そのクライアントが切断するまでクライアントからの接続が発生しない。また、図１３で示したように、デバイススケジューラ９００がスケジュールしたクライアントからのジョブのみ印刷できるようにＩＰブロック設定を行っているため、クライアントが負荷分散印刷を行っている間は、他のクライアントからの割り込み印刷が発生せず、効率的な負荷分散印刷処理が行えるようになる。
【００９６】
ステップＳ１６０１において受け付けた要求やイベントがクライアント１０１〜１０３からのイベント登録であれば、ステップＳ１６０５に処理を移行し、該当するクライアント情報の登録イベントに通知するイベントの種類を設定する。イベントの種類には、ジョブの状態の変化を通知するジョブイベント、デバイスの状態の変化を通知するデバイスイベントがある。
【００９７】
ステップＳ１６０１において受け付けた要求やイベントがデバイス管理部９０４からのデバイスイベントやジョブ管理部９０３からのジョブイベントであれば、ステップＳ１６０６において、これらのイベントを通知すべきクライアントを認識するために、クライアント管理キュー１００１に登録された全てのクライアント情報１００２から、クライアント情報の登録イベントの設定を参照し通知すべきかどうかを判断する。通知すべきであると判断した場合には、クライアントのＩＰアドレスを保持し、ステップＳ１６０７において通知すべき全てのクライアントに対してイベントを送信する。
【００９８】
ステップＳ１６０１において受け付けた要求やイベントがクライアントからの切断要求であればステップＳ１６０８に処理を移行し、クライアント管理キュー１００１から該当するクライアントのクライアント情報１００２を削除する。
【００９９】
ステップＳ１６０１において受け付けた要求やイベントがクライアントからのその他の要求であれば、ステップＳ１６０９に処理を移行し、ジョブリスト要求であるか判定する。ジョブリスト要求であれば、ジョブ管理部９０３にその要求を渡す。ジョブリスト要求でなければ、スケジュール管理部９０２にその要求を渡す。
【０１００】
＜ジョブ制御プリントサービスによる処理＞
図１７は、ジョブ制御プリントサービス６０５が管理する印刷ジョブの情報と、複数のジョブ情報１７０２を管理するジョブ管理キュー１７０１を表している。１７０２は、自クライアントで印刷したジョブの情報とデバイススケジューラ９００にジョブイベントと登録すると通知される他のクライアントの印刷ジョブのジョブ情報である。ジョブ情報１７０２には、印刷ジョブのドキュメント名１７０２ａ、ジョブＩＤ１７０２ｂ、クライアント１０１〜１０３で印刷を開始したユーザ名１７０２ｃ、ジョブのページ数１７０２ｄ、印刷ジョブの状況を表すジョブ状態１７０２ｅ、印刷データに含まれるジョブデータＩＤ１７０２ｆ、負荷分散やグループジョブや通常の印刷ジョブかを判断するジョブタイプ１７０２ｇが含まれる。ジョブ状態１７０２ｅは、クライアント１０１〜１０３が印刷を開始してからジョブがプリンタから無くなるまでの状態を表しており、スプール中、印刷待機中、スケジュールアップ状態、転送中、転送済み、印刷完了などの状態が存在する。ジョブデータＩＤ１７０２ｆは、印刷データに含まれるジョブのＩＤで、デバイススケジューラ９００からのジョブイベントに設定される情報である。
【０１０１】
１７０１は、複数のジョブ情報１７０２を管理する管理キューであり、自クライアントで印刷したジョブのジョブ情報とデバイススケジューラ９００から通知される他クライアントのジョブ情報１７０２が登録される。
【０１０２】
図１８は、ジョブ制御プリントサービス６０５が管理するプリンタ情報１８０１、出力ポート情報１８０２を表している。プリンタ情報１８０１は、ジョブ制御プリンタサービスが管理するそれぞれのプリンタキューの情報を表していて、プリンタ名１８０１ａや、プリンタドライバ名１８０１ｂ、負荷分散プリンタかどうかの設定であるプリントタイプ１８０１ｃ、負荷分散印刷の場合に負荷分散印刷のバックアッププリンタの設定１８０１ｄや、グループジョブを印刷するプリントモード１８０１ｅなどの情報が含まれている。ポート情報１８０２は、ジョブ制御プリンタサービス６０５が管理するそれぞれの出力ポートの情報を表していて、印刷するデバイスのポート名１８０２ａ、ドライバ名１８０２ｂ、ＩＰアドレス１８０２ｃなどの情報が含まれている。
【０１０３】
＜ジョブ制御プリントサービスによる処理＞
図１９は、図１２で示される印刷処理の流れで、クライアント１０１〜１０３のジョブ制御プリントサービス６０５が印刷データを受け付けてから、印刷データの転送までの流れを示している。
【０１０４】
ステップＳ１９０１では、ジョブ制御ポートモニタ６０４から印刷ジョブを受け付けたか、デバイススケジューラ９００から印刷データの転送の開始を指示するスケジュールＵＰのコマンドを受け付けたか判断する。ジョブ制御ポートモニタ６０４から印刷ジョブを受け付けるとステップＳ１９０２に処理を移行し、スケジュールＵＰのコマンドを受け付けるとステップＳ１９０６に処理を移行する。
【０１０５】
ステップＳ１９０２では、受け付けた印刷ジョブの情報をジョブ情報１７０２に設定し、ジョブ管理キュー１７０１に登録する。
ジョブ情報１７０２に設定する情報は、プリントシステムから取得したり、印刷データを解析して得られることができる。
【０１０６】
次にステップＳ１９１１において印刷受け付けしたジョブがグループジョブであるかを判断し、グループジョブでなければステップＳ１９０３に処理を移行する。グループジョブであれば、複数のグループジョブをまとめてスケジュール要求を発行するために、全てのグループジョブを受け付けるまで待機するため、ステップＳ１９１２に処理を移行する。
【０１０７】
ステップＳ１９１２では、グループジョブに含まれる印刷ジョブのうち最後のジョブかどうかを判断する。最後のジョブ出なければ、続きのグループジョブの印刷を受け付けるためにステップＳ１９０１に処理を移行する。ステップＳ１９１２で全てのグループジョブを受け付けると、スケジュール要求を発行するために、ステップＳ１９０３に処理を移行する。
【０１０８】
ステップＳ１９０３では、デバイススケジューラ９００に接続し、接続要求コマンドを発行する。クライアントが接続要求を発行すると、クライアントの情報がデバイススケジューラ９００のクライアント管理キュー１００１に登録され、以降、クライアントとデバイススケジューラ９００間で情報のやり取りを行うことができる。ここで、印刷を受け付けたジョブが負荷分散印刷を行う対象であれば、デバイススケジューラ９００に対して接続要求時に負荷分散の設定を通知する。デバイススケジューラ９００は、クライアント情報１００２に負荷分散モードを登録する。
【０１０９】
ステップＳ１９０４では、デバイススケジューラ９００に対して、ジョブイベント、デバイスイベントを登録する。ジョブイベントを登録すると、自クライアントが印刷したジョブや、他のクライアントが印刷したジョブの状態の変化の通知がデバイススケジューラ９００より通知されることになる。また、デバイスイベントを登録すると、プリンタデバイス５００の状態の変化を通知されるようになる。
【０１１０】
ステップＳ１９０５では、デバイススケジューラ９００で管理しているジョブ管理キュー１１０１に登録されているジョブのリストを要求する。このジョブリストとジョブイベントにより、デバイススケジューラ９００が管理するジョブの印刷状況を把握することが可能となる。
【０１１１】
以上の処理により、印刷する準備が整い、ステップＳ１９０６において印刷するジョブのスケジュール要求をデバイススケジューラ９００に通知し、ステップＳ１９０１で次の指示を待機する。例えば、印刷するジョブがグループジョブである場合、グルーピングする複数のジョブをまとめてスケジュール要求する。
【０１１２】
ステップＳ１９０１においてデバイススケジューラ９００から印刷データの転送指示であるスケジュールＵＰのコマンドを受け付けるとステップＳ１９０７に処理を移行する。ステップＳ１９０７では、印刷指示を受けたジョブの転送を開始する。印刷データの送信が開始されるとステップＳ１９０８において、デバイススケジューラ９００に転送が開始されたことを通知するために、転送開始状態を通知する。
【０１１３】
ステップＳ１９０９で印刷データの転送が終了するとステップＳ１９１０においてデバイススケジューラ９００に転送が終了したことを通知する。
【０１１４】
図２０は、デバイススケジューラ９００からの通知やコマンドを受け付けた場合のジョブ制御プリントサービス６０５の処理の流れについて説明している。
【０１１５】
ステップＳ２００１では、デバイススケジューラ９００からジョブイベントの通知または、ジョブリストが返送されてくるかを判断しており、ジョブイベントが来ると、ステップＳ２００２に処理を移行し、ジョブリストが来るとステップＳ２００８に処理を移行する。
【０１１６】
ステップＳ２００８では、ジョブリストが返送されてくるとジョブ制御プリントサービス６０５が管理するジョブ管理キュー１７０１にジョブリストから得られたジョブ情報を設定する。
【０１１７】
ステップＳ２００２では、デバイススケジューラ９００から通知されたジョブイベント通知の内、ジョブ完了通知であるか、ジョブ状態変更通知であるかを判断し、ジョブ状態変更通知であれば、ステップＳ２００９において、該当するジョブ情報のジョブ状態を更新する。
【０１１８】
ステップＳ２００２において、受け付けたイベント通知がジョブ完了通知であれば、ステップＳ２００３において、該当するジョブ情報を、ジョブ管理キュー１７０１から削除する。
【０１１９】
ステップＳ２００４では、ジョブ管理キュー１７０１に、印刷が終了していない自クライアントのジョブが残されているかを確認し、残されていれば、まだデバイススケジューラ９００とのやり取りが必要であるため、デバイススケジューラ９００との接続を継続するために、ステップＳ２００１に処理を移行する。
【０１２０】
ステップＳ２００４で、自クライアントのジョブがなければ、ステップＳ２００５に処理を移行し、デバイススケジューラ９００との接続を終了するための処理を開始する。
【０１２１】
ステップＳ２００４において、自クライアントに負荷分散のジョブが存在し、接続要求時に負荷分散の指定をしていれば、対象のプリンタに印刷するジョブがなくなっても、切断処理は行わず、ステップＳ２００１に処理を移行する。
【０１２２】
ステップＳ２００５では、接続を開始したときにデバイススケジューラ９００に登録したジョブイベント、デバイスイベントの登録解除を依頼する。デバイススケジューラ９００は、この依頼によりクライアント情報１００２のイベント登録の内容を削除する。このイベント登録の情報がなければ、デバイススケジュラーが管理するジョブの状態が変化されてもイベントが通知されてくることはない。
【０１２３】
次にステップＳ２００６において、デバイススケジューラ９００に対して切断の要求を発行する。デバイススケジューラ９００が切断要求を受け付けると、クライアント管理キュー１００１から該当するクライアント情報１００２を削除する。
【０１２４】
ステップＳ２００７では、デバイススケジューラ９００とのセッションを切断する処理を行い、処理をステップＳ２００１で待機する。
【０１２５】
また、ジョブ制御プリントサービス６０５が負荷分散印刷のジョブがなくなるのを検知すると、ステップＳ２００１から、ステップＳ２００５に処理を移行し、切断処理を開始する。
【０１２６】
以上説明したように、従来、プリンタがスケジューリング機能を持っていても、スケジュール要求を発せず直接プリンタのＬＰＤ/ＲＡＷに対して印刷するクライアントがあると印刷の割り込みが発生していた。本発明では、デバイススケジューラを介して印刷ジョブを印刷装置に送信しようとするクライアントがあれば、その間のデバイススケジューラを介さない印刷ジョブを受信しないよう、デバイススケジューラにより印刷装置が制御される。具体的には、本実施の形態では、確実にスケジューリングを行うために、印刷データの転送指示を意味するスケジュールＵＰを発したクライアントにのみ、ＬＰＤ/ＲＡＷと通信ができるようにＩＰブロックを解除する方式を実施している。
【０１２７】
このため、スケジュール機能を使用して印刷するクライアントのジョブが待たされたり、複数のジョブをまとめて印刷するグループジョブに対して割り込み印刷されたり、複数のプリンタを使用し多数のジョブを効率的に印刷する負荷分散印刷を行っているときに割り込み印刷されたり、直接プリンタのＬＰＤ/ＲＡＷに対して印刷するクライアントが集中してしまい、印刷ができなくなってしまうなどの不具合の発生を防止できる。その結果、大量に印刷する多数のクライアントがネットワークプリンタを共有して使用する環境でも、効率的に、確実に印刷が行えるようにすることが可能となる。
【０１２８】
なお、本発明は、複数の機器（例えばホストコンピュータ、インタフェイス機器、リーダ、プリンタなど）から構成されるシステムに適用しても、一つの機器からなる装置（例えば、複写機、ファクシミリ装置など）に適用してもよい。また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体（または記録媒体）を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはCPUやMPU）が記憶媒体に格納されたプログラムコードを読み出し実行することによっても達成される。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコード自体およびプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【０１２９】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム(OS)などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【図面の簡単な説明】
【０１３０】
【図１】本発明の実施形態としてのプリントシステムの全体構成を示すブロック図である。
【図２】クライアントのハードウェア構成を説明するブロック図である。
【図３】図２に示したＲＡＭ２０２のメモリマップの一例を示す図である。
【図４】図２に示したＦＤ２０４のメモリマップの一例を示す図である。
【図５】プリンタのハードウェア構成を説明するブロック図である。
【図６】クライアントのプリントシステムのソフトウェア構成の例を示す図である。
【図７】クライアントの印刷時の印刷ジョブの流れを示す図である。
【図８】プリンタのソフトウェア構成の例を示す図である。
【図９】プリンタのユーザアプリケーションのソフトウェア構成の例を示す図である。
【図１０】デバイススケジューラ９００で管理するクライアント情報１００２とクライアント管理キュー１００１を示す図である。
【図１１】デバイススケジューラ９００で管理するジョブ情報１１０２とジョブ管理キュー１１０１を示す図である。
【図１２】ジョブ制御プリントサービスとデバイススケジューラ９００、ＬＰＤ／ＲＡＷ、プリンタコントローラ間の印刷シーケンスを示す図である。
【図１３】ジョブ制御プリントサービスのスケジュール要求の受け付けから、スケジュールＵＰを発行するまでのデバイススケジュラのスケジュール管理部の処理の流れを示すフローチャートである。
【図１４】ジョブ管理部９０３のジョブ状態通知イベントの受け付けからジョブリスト要求の受け付けに対する処理を示すフローチャートである。
【図１５】プリンタコントローラからのデバイス状態、ジョブ状態通知を受け付けた時のデバイス管理部の処理を示すフローチャートである。
【図１６】クライアントからの要求や通知、デバイス管理部からの通知、ジョブ管理部９０３への要求や通知を処理する通信接続管理部９０１の処理を示すフローチャートである。
【図１７】ジョブ制御プリントサービスが管理する印刷ジョブの情報とジョブ管理キューを表す図である。
【図１８】ジョブ制御プリントサービスが管理するプリンタキュー、出力ポートの情報を表す図である。
【図１９】ジョブ制御プリントサービスが印刷データを受け付けてから、印刷データの転送までの流れを示す図である。
【図２０】デバイススケジューラ９００からの通知やコマンドを受け付けた場合のジョブ制御プリントサービスの処理の流れを示すフローチャートである。
【図１】
2006056069.tif 000003
【図２】
2006056069.tif 000004
【図３】
2006056069.tif 000005
【図４】
2006056069.tif 000006
【図５】
2006056069.tif 000007
【図６】
2006056069.tif 000008
【図７】
2006056069.tif 000009
【図８】
2006056069.tif 000010
【図９】
2006056069.tif 000011
【図１０】
2006056069.tif 000012
【図１１】
2006056069.tif 000013
【図１２】
2006056069.tif 000014
【図１３】
2006056069.tif 000015
【図１４】
2006056069.tif 000016
【図１５】
2006056069.tif 000017
【図１６】
2006056069.tif 000018
【図１７】
2006056069.tif 000019
【図１８】
2006056069.tif 000020
【図１９】
2006056069.tif 000021
【図２０】
2006056069.tif 000022