(57)【要約】【課題】円滑なスケジューリングを行い、システム全体としてみた場合のジョブスケジューリングを最適化すること。【解決手段】キューに投入された印刷ジョブを優先順位に基づいて処理する印刷システムにおいて、代行印刷時にはジョブの優先順位を繰り上げて他のジョブに優先して処理する。【選択図】　　　図５
2004102986.tif 000002
【特許請求の範囲】
【請求項１】
代行印刷する際にジョブの優先度を変更する変更手段と、
前記変更手段により変更された優先度に基づき印刷処理を実行する実行手段とを有することを特徴とする印刷制御装置。
【請求項２】
前記代行印刷は、印刷ジョブのキューを変更することにより実行されることを特徴とする請求項１記載の印刷制御装置。
【請求項３】
前記変更手段は、優先度を上げることを特徴とする請求項１記載の印刷制御装置。
【請求項４】
前記変更手段は、印刷ジョブの受け付け時間に基づき優先度を変更することを特徴とする請求項１記載の印刷制御装置。
【請求項５】
前記変更手段は、すでに存在する印刷ジョブの受付時間より代行印刷するジョブの受け付け時間が早い場合、代行印刷するジョブの優先度を上げることを特徴とする請求項１記載の印刷制御装置。
【請求項６】
代行印刷する際にジョブの優先度を変更する変更ステップと、
前記変更ステップにより変更された優先度に基づき印刷処理を実行する実行ステップとを有することを特徴とする印刷制御方法。
【請求項７】
前記代行印刷は、印刷ジョブのキューを変更することにより実行されることを特徴とする請求項６記載の印刷制御方法。
【請求項８】
前記変更ステップは、優先度を上げることを特徴とする請求項６記載の印刷制御方法。
【請求項９】
前記変更ステップは、印刷ジョブの受け付け時間に基づき優先度を変更することを特徴とする請求項６記載の印刷制御方法。
【請求項１０】
前記変更ステップは、すでに存在する印刷ジョブの受付時間より代行印刷するジョブの受け付け時間が早い場合、代行印刷するジョブの優先度を上げることを特徴とする請求項６記載の印刷制御方法。
【請求項１１】
代行印刷する際にジョブの優先度を変更する変更ステップと、
前記変更ステップにより変更された優先度に基づき印刷処理を実行する実行ステップとを有することを特徴とするコンピュータ読み取り可能なプログラム。
【請求項１２】
前記代行印刷は、印刷ジョブのキューを変更することにより実行されることを特徴とする請求項１０記載のコンピュータ読み取り可能なプログラム。
【請求項１３】
前記変更ステップは、優先度を上げることを特徴とする請求項１０記載のコンピュータ読み取り可能なプログラム。
【請求項１４】
前記変更ステップは、印刷ジョブの受け付け時間に基づき優先度を変更することを特徴とする請求項１０記載のコンピュータ読み取り可能なプログラム。
【請求項１５】
前記変更ステップは、すでに存在する印刷ジョブの受付時間より代行印刷するジョブの受け付け時間が早い場合、代行印刷するジョブの優先度を上げることを特徴とする請求項１０記載のコンピュータ読み取り可能なプログラム。
【請求項１６】
印刷データをジョブ単位毎に管理する印刷システムであって、
複数のジョブを管理するための複数の印刷キューと、
各々のキューに投入された印刷ジョブをジョブに割り当てられた優先順位に基づいて処理するためのスケジュール手段と、
ジョブを元のキューから別のキューへと移動することにより代行印刷を実行する代行手段と、
前記代行手段により代行印刷する際に、ジョブの優先度を上げる優先順位変更手段とを有することを特徴とする印刷システム。
【請求項１７】
前記優先順位変更手段は、ジョブの受け付け時間に基づき優先度を上げることを特徴とする請求項１６記載の印刷システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数のジョブ管理するためのキューを複数兼ね備え、キューから別のキューへ代行印刷可能な印刷システムに関する。
【０００２】
【従来の技術】
従来より、印刷装置のエラーを検知し、或いはキューに投入されているジョブのサイズを判定し、別の印刷キュー或いは印刷装置へ代行印刷可能な印刷システムが存在した。
【０００３】
【発明が解決しようとする課題】
しかしながら、従来の印刷システムにおいては、代行印刷時に代行先のキューの一番後ろにジョブを追加してしまい、代行したために、代行する前よりも印刷の完了に時間が掛かるといった問題があった。また、ジョブ送信時に代行判定しているシステムにおいては、無条件に印刷可能なデバイスへ送信してしまい、後から代行したジョブが先に印刷されてしまう場合があるという問題があった。
【０００４】
本発明は、上記問題点を解決するものであり、代行印刷時にも円滑なスケジューリングを行い、システム全体としてみた場合のジョブスケジューリングを最適化することを目的とする。
【０００５】
【課題を解決するための手段】
上記目的を達成するために本発明の印刷制御装置は、
代行印刷する際にジョブの優先度を変更する変更ユニットと、
前記変更ユニットにより変更された優先度に基づき印刷処理を実行する実行ユニットとを有することを特徴とする。
【０００６】
また、本発明の印刷システムは、
複数のジョブを管理するための複数の印刷キューと、
各々のキューに投入された印刷ジョブをジョブに割り当てられた優先順位に基づいて処理するためのスケジュール手段と、
ジョブを元のキューから別のキューへと代行する代行印刷手段とを持ち、
代行印刷実行時には、ジョブの優先度を自動的に１ポイント繰り上げる自動優先順位変更手段とを有することを特徴とする。
【０００７】
また、本発明の印刷システムは、
複数のジョブを管理するための複数の印刷キューと、
各々のキューに投入された印刷ジョブをジョブに割り当てられた優先順位に基づいて処理するためのスケジュール手段と、
ジョブを元のキューから別のキューへと代行する代行印刷手段とを持ち、
代行印刷実行時には、ジョブの受け付け時間を元にジョブの優先順位を自動設定する優先順位自動設定手段とを有することを特徴とする。
【０００８】
【発明の実施の形態】
以下、図面を参照して本発明の実施例について説明する。
【０００９】
＜印刷処理システムの構成例＞
図１０は、実施形態に係る印刷処理システムの構成を示す図である。
【００１０】
同図において、１０１、１０２、１０３、１０４は、ネットワーク１０６に接続され、相互に通信可能なネットワークコンピュータであり、典型的にはパーソナルコンピュータ（ＰＣ）である。
【００１１】
これらのうち、１０２，１０３，１０４はクライアントコンピュータ（以下、クライアント）であり、それぞれイーサネット（登録商標）などのネットワークケーブルによってネットワーク１０６に接続され、アプリケーションプログラム等の各種のプログラムを実行可能であり、印刷データをプリンタに対応するプリンタ言語に変換する機能を有するプリンタドライバを搭載している。ここで、各クライアントは複数のプリンタドライバをサポートするものとする。
【００１２】
これに対し１０１はサーバコンピュータ（以下、サーバ）であり、ネットワークケーブルによってネットワーク１０６に接続され、ネットワークで使用されるファイルを蓄積したり、ネットワーク１０６の使用状態を監視する。このサーバは、ネットワーク１０６に接続されているプリンタを管理するプリントサーバとしても機能する。具体的には、プリントサーバ１０１は、クライアントコンピュータ１０２、１０３、１０４から印刷要求が出されたプリントデータを含む印刷ジョブを格納して印刷する機能や、クライアントコンピュータ１０２〜１０４から印字データを含まないジョブ情報を受け取って印刷順序を管理し、印刷順序になったクライアントに対して印字データを含む印刷ジョブの送信許可を通知する機能、後述するプリンタデバイス（プリンタデバイス）１０５のステータスや印刷ジョブの各種情報を取得して、クライアントコンピュータ１０２〜１０４に通知する機能などを有している。サーバコンピュータ１０１は本発明の印刷システムにおいてサーバの機能が動作する論理的な存在である。図１で示されるように専用のサーバコンピュータを設けることもできるし、また、クライアントコンピュータ１０２〜１０４或いはプリンタデバイス１０５にサーバコンピュータの機能を代替させる事も可能である。
【００１３】
１０５は、印刷制御装置としてのプリンタデバイスであり、図示しないネットワークインタフェースを介してネットワーク１０６と接続されており、クライアントコンピュータから送信されてくる印字データを含む印刷ジョブを解析し、１ページずつドットイメージに変換して印刷する。なお、同図にプリンタデバイス１０５は１台しか示されていないが、他のプリンタデバイスが複数接続されていても良い。各プリンタデバイスの機能は相違するものであってもよい。
【００１４】
また、１０６はネットワークであり、クライントコンピュータ１０２〜１０４、プリントサーバ１０１、プリンタデバイス１０５等と接続している。
【００１５】
図１は、本発明に係る印刷システムの機能を示す論理ブロック図であり、印刷システムは、データの変換を行うジョブ生成部１１と、印刷処理に関するジョブの処理を監視するジョブ管理部１２と、印刷キュー１３と、ユーザーインターフェイス部分を構成するＧＵＩプロセス部１８と、実際に印字処理が行われる印刷処理部とで構成されている。
【００１６】
ジョブ生成部１１は、外部から受け取ったジョブデータを後続のサブシステムが理解できる形に変換すると共に、ジョブ管理部１２へ転送する機能を有するものである。また、ジョブ生成部１１は、ジョブ生成部１１がユーザＰＣ上に構成される場合に、ワープロや表計算等のドキュメントを印刷装置の外部仕様に応じた形式のジョブデータに変換する機能を有するものであり、さらに、ジョブ生成部１１が印刷装置上に構成される場合に、ホストコンピュータから受信した外部形式のジョブデータを、内部で管理するデータ形式に変換する機能を有している。
【００１７】
ジョブ管理部１２は、一般にスプーラと呼ばれる機能を有している。このジョブ管理部１２は、ジョブ生成部１１から受け取ったジョブを印刷キュー１３へ保存する（スプール処理）と共に、ＦＩＦＯ方式で印刷キュー１３から順次読み出して（デスプール処理）印刷処理部１４へ転送する機能を備えている。ジョブ管理部１２は、ジョブの停止、再開、削除、優先順位の変更等のＩＳＯ１０１７５で定義された機能を有しており、外部システムからの命令を受けてこれらの機能を実行する役割を有している。ジョブ管理部１２は、印刷装置、ホストコンピュータのいずれか一方、またはその両方に配置することが可能となっている。
【００１８】
印刷キュー１３内のジョブは、一意のＩＤで識別されており、ジョブ管理部１２は、このＩＤとジョブデータとの対応を管理する機能を有している。ジョブ管理部１２を利用する全てのサブシステムは、このＩＤを指定することによりジョブの制御を行うことが可能となる。印刷キュー１３は、ハードディスクやＮＶＲＡＭ、ＤＶＤ−ＲＡＭ等任意の不揮発性記憶媒体や、ＲＡＭ等の揮発性メモリ上に配置することが可能となっており、必ずしもジョブ管理部１２と同一装置上に存在する必要はない。
【００１９】
符号１４は印刷処理部であり、ジョブ管理部１２から渡されたジョブデータをプリンタエンジンに応じたフォーマットに展開し、インクやトナー等を用いて記録紙へ転写する役割を有している。
【００２０】
符号１８は、ＧＵＩプロセス部であり、イベントハンドリング部１５と、プログラム制御部１６と、ジョブ表示部１７とを有している。ＧＵＩプロセス部１８は、ユーザに対してジョブ管理部１２が管理しているジョブの一覧表示を提供し、ユーザからの入力を印刷システムへ供給する窓口としての役割を有している。ＧＵＩプロセス部１８は、一般に印刷装置上に、或いはユーザ又はオペレータのＰＣ上に配置される。
【００２１】
イベントハンドリング部１５は、キーボードやマウス、タッチパネル等の入力装置からのハードウェア割り込みをハンドリングし、マウス移動イベントや、マウス押下イベント、キーボード押下イベント等の論理イベントを作成して、プログラム制御部１６で定義されている処理プログラをコールバックする役割を有している。
【００２２】
プログラム制御部１６は、イベントハンドリング部１５からのイベントを詳細に解析したり、ジョブ表示部１７に表示されているジョブの情報から指示されたジョブを検出したり、ジョブに対してコマンド処理を実行するためにジョブ管理部１２へ要求を転送したりする機能を有している。さらに、プログラム制御部１６は、ジョブ管理部１２からジョブのリストを取得するか、ジョブ管理部１２からのジョブ変更イベント通知に応じて、随時ジョブ表示部１７に対して表示の更新を指示する機能を有している。
【００２３】
ジョブ表示部１７は、グラフィカルユーザインタフェースを備えている。
【００２４】
なお、図１に示す各ブロックは、１つの印刷装置上に配置されていても良く、また、ブロック毎に異なる印刷装置或いはホストコンピュータ上に配置することも可能である。さらに、各ブロックは１つの印刷システムにおいて１つに限定されることはない。本発明のシステムにおいては複数の印刷処理部が設けられており、印刷キューも各々の印刷処理部と１対１で対応して設けられている。また、本印刷システムは、印刷処理部に障害が発生していた場合に、印刷中或いは印刷待ちのジョブを印刷キューから別の印刷キューへ移動（代行印刷）可能なように構成されている。
【００２５】
システムにおける各ブロックの配置は、初期化ファイル，ディレクトリ，プログラムコードへのハードコーディング等の方法でシステムに提供される。２つのブロックが同一のプロセス内に存在する場合には、プロシージャコール（関数呼び出し）やメッセージ通信がブロック間の通信手段として利用される。ブロック同士が、異なるプロセス或いはＰＣにある場合には、ブロック間の通信手段としてＴＣＰ／ＩＰのソケットやＲＰＣなどが利用される。どの場合であってもブロックの配置を問わずに、各ブロック同士で通信を行うことが可能である。
【００２６】
各ブロックは任意の装置に配置することが可能であるが、原則として本発明を適用する印刷システムの運用時点で固定される。例えば、ジョブ表示部がユーザの操作しているホストコンピュータから印刷装置へダイナミックに移動することはない。但し、例外としてジョブ管理部や印刷処理部など、エラーや処理状況に応じて複数の装置間を論理的に移動可能なブロックは存在し得る。
【００２７】
＜Ｗｉｎｄｏｗｓ（登録商標）プリントシステムと印刷ジョブの関係＞
次に、図８を用い、複数のキューを用いて代行印刷する例を説明する。なお、前述の図１の印刷キュー１３は図８のプリンタキュー７２２Ａ、７２２Ｂに相当し、図１のジョブ生成部１１は図８のグループプリンタドライバ６０３、ＰＤＬドライバ６０２Ａ、６０２Ｂに相当し、図１のジョブ管理部１２は図８のジョブ制御プリントサービスに相当し、図１の印刷処理部１４はプリントデバイス６５０Ａ、Ｂ内のプリンタコントローラに相当する。また、Ｗｉｎｄｏｗｓ（登録商標）が提供するプリントシステムと印刷ジョブ制御システムにおける印刷ジョブの関係並びに処理概要をさらに詳しく述べる。この図８の処理系は、グループプリンタドライバ６０３を介する印刷処理に関する。
【００２８】
図８中で印刷ジョブ制御システム７００は、サーバ１０１とクライアント１０２、１０３または１０４の制御プログラムが動作する物理的なマシンを跨いだ印刷ジョブ制御システムの範囲を示している。また、サーバ１０１が管理している出力ポート（ＯｕｔｐｕｔＰｏｒｔ）７１１は、クライアントのジョブ制御プリントサービス６２２のプロキシ出力ポート（ＰｒｏｘｙＯｕｔｐｕｔＰｏｒｔ）７１２と関係づけられ、１つのポートに関係付けられた各クライアント上のプロキシ出力ポート全てを統一的に管理している。
【００２９】
本実施形態では、実際のプリントジョブデータは各々のクライアントのプロキシ出力ポート７１２に保持される。ジョブ制御サーバ６３０は、プリントジョブデータ自体の送信処理は行わず、ジョブ制御プリントサービス６２２に対して印刷ジョブの送信指示のみを行う。その指示に応じてクライアントのジョブ制御プリントサービス６２２はプリントジョブデータをデバイス６５０に送信する。
【００３０】
次に、印刷ジョブ制御システム７００が、代行印刷、分散印刷、及び同報印刷などの付加価値的な印刷を行う場合の処理を説明する。
【００３１】
印刷ジョブ制御システム７００が、代行印刷、分散印刷、及び同報印刷などの付加価値的な印刷を行う場合には、１つの方法として、前述のようにユーザまたはアプリケーション６０１はグループプリンタドライバ６０３が割り当てられたプリンタに印刷ジョブを発行する必要がある。また、後述するが、もう１つの方法として、ＰＤＬドライバ６０２の出力先のポートをジョブ制御ポートモニタ６２１に割り当てられていれば、ＰＤＬドライバ６０２に印刷ジョブを発行してもよい。
【００３２】
アプリケーション６０１が印刷処理を開始すると、グループプリンタドライバ６０３は、ジョブ制御プリントサービス６２２のロジカルキュー情報（後述）を取得し、印刷プロパティで参照できる情報を、汎用印刷ファイルに設定する。図９は、論理プリンタ管理７０５の印刷プロパティを設定するためのユーザインターフェース画面の一例である。ここでは、同図に示すように、出力方法として自動代行が選択でき、更に出力先プリンタ（メンバプリンタドライバ）として優先順位を付けて登録することができる。
【００３３】
ジョブ制御プリントサービス６２２は、グループプリンタドライバ６０３によって処理されたジョブデータをジョブ制御ポートモニタ６２１を介して汎用印刷ファイルとして受け取る。ジョブ制御プリントサービス６２２はこのプリントジョブを受け取り、デスプーラ７０１を介してＰＤＬドライバが割り当てられた別のプリンタにジョブ（メンバジョブ）を発行して印刷を行わせる。デスプーラ７０１は、通常のアプリケーションと同様に、プリントジョブである汎用印刷ファイルのドキュメントデータに基づいて、ＯＳの描画手段を介して描画コマンド（ＧＤＩ関数）の生成と出力を行い、ＰＤＬドライバ６０２Ａが描画コマンド（ＤＤＩ関数）を受け取ることになる。
【００３４】
この時、デスプーラ７０１は汎用印刷ファイルの印刷指示部（ジョブチケット部）を解釈し、ドキュメントデータ部のドキュメントデータを加工して、Ｗｉｎｄｏｗｓ（登録商標）のＧＤＩに変換し、各プリンタドライバに対して印刷指示を行い印刷ジョブを発行する。例えば印刷体裁指定部に、「２−ＵＰ」の指示が記録されていた場合、用紙１枚に２ページ分のドキュメントデータを縮小レイアウトする。また、分散印刷あるいは同報印刷の場合には、それらの設定に応じて印刷指示部に記述されている複数のメンバプリンタにジョブを発行する。代行印刷の場合は、代行する条件が満たされた時に、自動代行では事前の設定に応じて、手動代行ではユーザの操作に応じて、メンバジョブを発行する。
【００３５】
また、上述したデスプーラ７０１とは別のモジュールに各メンバプリンタドライバに対応する指示情報を印刷指示部から抽出させ、該抽出された各メンバプリンタドライバに対する印刷指示をデスプーラ７０１に解釈させるような形態も想定される。
【００３６】
さらに、デスプーラ７０１は、各メンバプリンタにジョブを発行する際、メンバプリンタドライバに対応する印刷指示として、各メンバプリンタのＤＥＶＭＯＤＥ（印刷設定情報）を作成する必要があるが、このＤＥＶＭＯＤＥは印刷指示部に記載された内容を適宜各メンバプリンタのＤＥＶＭＯＤＥに反映させて生成する。なお、本実施形態では、米国マイクロソフト社のＯＳであるＷｉｎｄｏｗｓ（登録商標）２０００やＷｉｎｄｏｗｓ（登録商標）ＸＰを用いた印刷システムについて説明しているため、印刷設定情報としてプリンタドライバが制御可能な構造体としてのＤＥＶＭＯＤＥを用いているが、印刷設定情報はＤＥＶＭＯＤＥに限る必要はなく、印刷設定情報が記述されたＸＭＬ形式のファイルであっても構わない。つまり印刷設定情報のプリンタドライバへの渡し方は、ＯＳにより異なるものであり、本発明はいずれか１つに限定されるものではない。
【００３７】
クライアント側のジョブ制御プリントサービス６２２は、ＰＤＬドライバ６０２によって生成された、それぞれのメンバジョブのＰＤＬデータをジョブ制御ポートモニタ６２１を介して受け取り、受け取ったＰＤＬ形式のプリントジョブに関する情報をサーバ１０１側に知らせ、ジョブデータは自身のプロキシ出力ポート（ＰｒｏｘｙＯｕｔｐｕｔＰｏｒｔ）７１２Ａまたは７１２Ｂで一時保持する。その後、ジョブ制御サーバ６３０からの送信指示を受けた後に、印刷ジョブ制御システム７００はプロキシ出力ポート７１２を介してＰＤＬ形式の印刷データをプリンタデバイス６５０に送信する。
【００３８】
図８の構成により、たとえば、プリンタキュー７２２Ａに格納されたジョブを代行（あらかじめ設定されているグループのプリンタで代行する自動代行、またはエラーが起きたときにユーザにより代行するプリンタを選択させる手動代行）する場合、ジョブ制御プリントサービスが、代行（自動または手動）の指示に応じて、ジョブをプリンタキュー７２２Ｂに移動し、ジョブをプリンタデバイス６５０Ｂに出力することによりプリントデバイス６５０Ａからプリントデバイス６５０Ｂへの代行印刷を実行することができる。
【００３９】
図２は、プログラム制御部における処理のプログラムの概要を説明するためのフローチャートである。まず、ステップＳ２００においてプログラム制御部１６自身及びサブシステムの初期化を行う。続いてステップＳ２０１において、イベント待ちの無限ループになる。ステップＳ２０１はマウスやキーボード、ジョブ受付等のイベント等が発生すると終了し、以下に示すイベント処理へ移る。
【００４０】
ステップＳ２０２では、発生したイベントがジョブリストの更新イベントか否かをチェックする。ＹＥＳの場合には、プログラム制御部１６は、ステップＳ２０３においてジョブ管理部１２から新しいジョブ情報の一覧を取得し、ジョブ表示部１７に対してジョブ情報の一覧を更新表示するように指示する。ステップＳ２０３の終了後は、ステップＳ２０１のイベント待ちに処理が移る。
【００４１】
ステップＳ２０２でＮＯと判定された場合には、続いてステップＳ２０４で、ジョブ受付イベントか否かを判定する。ＹＥＳの場合には、ステップＳ２０５におけるジョブ受付処理に移る。この処理の詳細については、後に図４を用いて説明する。ステップＳ２０５終了後は、ステップＳ２０１のイベント待ちに処理が移る。
【００４２】
ステップＳ２０４でＮＯと判定された場合には、続くステップＳ２０６において発生したイベントが、印刷エラーイベントか否かが判定される。ＹＥＳの場合には、ステップＳ２０７において代行印刷処理が行われる。この処理の詳細については、後に図５を用いて説明する。ステップＳ２０７終了後は、ステップＳ２０１のイベント待ちに処理が移る。
【００４３】
ステップＳ２０６でＮＯと判定された場合には、続くステップＳ２０８において発生したイベントが、ジョブ送信イベントか否か判定される。ＹＥＳの場合には、ステップＳ２０９においてジョブ送信処理が行われる。この処理の詳細については、後に図６を用いて説明する。ステップＳ２０９終了後は、ステップＳ２０１のイベント待ちに処理が移る。
【００４４】
ステップＳ２０８でＮＯと判定された場合には、続くステップＳ２１０において発生したイベントがその他のイベントか否かが判定される。ＹＥＳの場合には、続くステップＳ２１１においてその他のイベント処理が行われる。これは、本発明と直接関係が無いため詳しい説明を省略する。ステップＳ２０９の終了後は、ステップＳ２０１のイベント待ちに処理が移る。
【００４５】
ステップＳ２１０でＮＯと判定された場合には、ステップＳ２１２の終了判定が行われる。ＮＯの場合には、無効なイベントが発生したとしてステップＳ２０１のイベント待ち処理へ戻り、ＹＥＳの場合には、ステップＳ２１３の終了処理を経て本処理は停止する。
【００４６】
図３は、ジョブ管理部１２内にあるメモリ上に保管されているジョブ情報管理テーブルの一部である。すべのジョブは印刷システム内でユニークな識別子（ＪｏｂＩＤ）を持ち、他のジョブと区別して管理される。各ジョブは識別子のほか、処理状態、優先順位、受付時刻、ユーザ名、文書名、ユーザによって最初に選択された印刷装置等の情報をもっている。図３からは、合わせて４つのジョブがあり、ＪｏｂＩＤ２００の文書．ｄｏｃが印刷中で、ＪｏｂＩＤ２０１のジョブが送信中、他の２つのジョブが送信待ちであることが分かる。このジョブ情報管理テーブルの１つのジョブ情報は、通常、印刷システムがジョブを受け付けた時点で生成され、印刷装置によって排紙が完了されるかユーザ或いはデバイスの理由によりキャンセル処理が行われた時点で消滅する。対象とする印刷装置が排紙完了確認機能をサポートしていない場合には、ジョブの送信完了を持ってジョブ情報を抹消する。
【００４７】
図４は、本発明に係る印刷システムのジョブ受付処理のプログラムの概要を示すフローチャートである。ジョブ受付処理においては、受付時に、先ずステップＳ４００でこのジョブをシステム中で一意に識別するための識別子（ＪｏｂＩＤ）が割り当てられる。ＪｏｂＩＤとしては、ＵＵＩＤ（Ｕｎｉｖｅｒｓａｌｌｙｕｎｉｑｕｅ　ｉｄｅｎｔｉｆｉｅｒ）等の一意なＩＤが利用可能であるが、本実施例におけるシステムではサーバ上で発行されたシーケンシャルナンバーが利用されている。続いて、ステップＳ４０１でジョブのスクリプト中或いは、受付コマンドのオプション等で印刷に利用するキュー名、ユーザ名、文書名、優先順位等基本的なジョブ属性を指定し、ジョブ情報を作成する。仮に指定されない属性が合った場合にはシステムで用意されたデフォルトの値がジョブの属性として利用される。続いて、ステップＳ４０２においてステップＳ４０１で作成したジョブ情報を登録し、ジョブ情報管理テーブルを更新する。リストが更新されると、連動してジョブリスト更新イベントがセットされる。ジョブリスト更新イベントがセットされると、前述のジョブリスト更新処理がシステムによって起動される。続いてステップＳ４０３で、ステップＳ４０１で指定された印刷キューに対して、ジョブ送信イベントがセットされる。ジョブ送信イベントがセットされると、ジョブ送信処理が起動される。これは図６を用いて詳述する。
【００４８】
図５は、本発明に掛かる印刷システムで行う代行印刷処理プログラムの一実施例を示すフローチャートである。
【００４９】
代行印刷処理は、本発明の印刷システムにおいてはデバイスのエラー時に自動的に、或いはユーザ（或いは本印刷システムを監視している外部システムからのコマンド）の指示によって任意のタイミングで実行される。
【００５０】
代行印刷処理が起動されると、ステップＳ５００の代行先選択処理において代行先を選択する。代行先の選択方法としては、予めキューに対応する代替キューを登録しておく方法や印刷時にジョブの属性として指示する方法、オペレータに候補を表示してオペレータが選択する方法等が存在するが本発明とは直接関係無いため此処では詳しく説明しない。
【００５１】
続くステップＳ５０１で代行先が見つかったか否かを判定する。代行先が見つからない場合には、代行処理は終了する。
【００５２】
ステップＳ５０１で代行先が「あり」と判定された場合には、ステップＳ５０２において代行するジョブのジョブ情報を復元する。この情報は後でジョブを代行する際に利用する。続くステップＳ５０３で元のジョブをキャンセルする。本発明の印刷システムでは、ジョブキャンセル処理の際に、ジョブ情報を消去するのみならず、印刷処理部で印刷処理中の場合にはこれを中断する機能を有する事も可能である。更にステップＳ５０４でステップＳ５０２で保存されたジョブ情報の印刷キュー情報をステップＳ５００で選択された印刷キューに変更する。そして、ステップＳ５０５でジョブの優先順位を１ポイント増加させ、ステップＳ５０６でジョブ情報管理テーブルに新しいジョブ情報を登録する。ジョブ情報中のジョブ処理状態は登録時に「送信待ち」に初期化される。そして、ジョブリスト更新イベントをセットする。続くステップＳ５０７で新しく選択された印刷キューに対しジョブ送信イベントをセットして代行処理は終了する。
【００５３】
図６は、本発明の印刷システムにおけるジョブ送信処理プログラムの一実施例である。本発明の印刷システムではジョブ送信処理は印刷キュー毎に並行して起動されるように構成されている。ジョブ送信処理ではステップＳ６００において、未送信のジョブ（ジョブ状態が送信中よりも前のもの）でもっとも優先度の高いジョブを１つ選択する。ステップＳ６０１でジョブが選択されないと判定された場合には、現在処理中の印刷キューには未送信のジョブが存在しないということであり、ジョブ送信処理は終了する。
【００５４】
ステップＳ６０１でジョブが選択された場合には、ステップＳ６０２でジョブの状態を「送信中」に更新し、ジョブリスト更新イベントをセットする。続いてステップＳ６０３でジョブデータを読み込み、印刷処理部へジョブを転送する。ジョブの転送方法にはＬＰＲ，ＦＴＰ，ＩＰＰ等多数の方法が存在するが本発明とは直接関係無いため此処では説明しない。また、ジョブ送信失敗時の処理も本発明とは直接関係無いため説明を省略する。ジョブの送信が完了するとステップＳ６０４において、ジョブの状態を「送信済み」にし、ジョブリスト更新イベントをセットしてジョブ送信処理が終了する。
【００５５】
以上説明したように、本発明の実施の形態に係る印刷システムにおいては、代行印刷時に自動的にジョブの優先度を１ポイントあげる事により円滑なスケジューリングを行い、システム全体としてみた場合のスケジューリングを最適化する事が可能なため、代行印刷時に代行先のキューの一番後ろにジョブが追加されてしまい余計に出力時間が掛かると言った問題や、他のジョブを無条件に追い越してしまうと言った問題を回避することが可能となる。
【００５６】
（他の実施の形態）
前述した実施の形態では代行印刷時に自動的にジョブの優先度を１ポイントあげる事により円滑なスケジューリングを行う例を説明したが、次に、代行印刷時に自動的にジョブの受付時刻に応じてジョブの優先度を設定する事により円滑なスケジューリングを行う他の実施の形態を説明する。
【００５７】
印刷システムや、プログラム制御部における処理や、ジョブ受付の処理、ジョブ送信処理等は前述の実施の形態と同様なので説明は省略する。
【００５８】
図７は、本発明の他の実施の形態に掛かる印刷システムで行う代行印刷処理の一実施例を示すフローチャートである。
【００５９】
代行印刷処理は、本発明の印刷システムにおいてはデバイスのエラー時に自動的に、或いはユーザ（或いは本印刷システムを監視している外部システムからのコマンド）の指示によって任意のタイミングで実行される。
【００６０】
代行印刷処理が起動されると、ステップＳ７００の代行先選択処理において代行先を選択する。代行先の選択方法としては、予めキューに対応する代替キューを登録しておく方法や印刷時にジョブの属性として指示する方法、オペレータに候補を表示してオペレータが選択する方法等が存在するが本発明とは直接関係無いため此処では詳しく説明しない。
【００６１】
続くステップＳ７０１で代行先が見つかったか否かを判定する。代行先が見つからない場合には、代行処理は終了する。
【００６２】
ステップＳ７０１で代行先が「あり」と判定された場合には、ステップ７０２において代行するジョブのジョブ情報を復元する。この情報は後でジョブを代行する際に利用する。続くステップＳ７０３で元のジョブをキャンセルする。本発明の印刷システムでは、ジョブキャンセル処理の際に、ジョブ情報を消去するのみならず、印刷処理部で印刷処理中の場合にはこれを中断する機能を有する事も可能である。更にステップＳ７０４でステップＳ７０２で保存されたジョブ情報の印刷キュー情報をステップＳ７００で選択された印刷キューに変更する。そして、ステップＳ７０５ジョブ情報管理テーブルに新しいジョブ情報を登録する。ジョブ情報中のジョブ処理状態は登録時に「送信待ち」に初期化される。そして、ステップＳ７０６で、ジョブの受付時間に応じて代行先キューのジョブの優先順位を設定しなおす。
【００６３】
たとえば図３において、ＪｏｂＩＤ２０３で示されるジョブがＰｒｉｎｔｅｒＡからＰｒｉｎｔｅｒＢへ代行された場合、ＪｏｂＩＤ２０２の受付時刻は１０時２１分３３秒であり、ＪｏｂＩＤ２０２の１０時２３分３５秒よりも優先される。そこで、ＪｏｂＩＤ２０３の優先順位を２と設定する。仮に、ＪｏｂＩＤ２０２と２０３の間の１０時２２分００秒に受け付けられたジョブが代行してきた場合には、そのジョブの優先度を２とし、ＪｏｂＩＤ２０３の優先度を３に設定する。ジョブの優先度を設定しなおした後に、代行先キューにジョブ送信イベントをセットして代行処理は終了する。
【００６４】
以上説明したように、本発明の実施の形態に係る印刷システムにおいては、代行印刷時に自動的にジョブの受付時刻に応じてジョブの優先度を設定する事により円滑なスケジューリングを行い、システム全体としてみた場合のスケジューリングを最適化する事が可能なため、代行印刷時に代行先のキューの一番後ろにジョブが追加されてしまい余計に出力時間が掛かると言った問題や、他のジョブを無条件に追い越してしまうと言った問題を回避することが可能となる。
【００６５】
また、本発明の目的は、前述した実施形態の機能（プログラム制御部における処理、ジョブ受付処理、代行印刷処理、ジョブ送信処理等）を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読出し実行することによっても、達成されることは言うまでもない。
【００６６】
この場合、記憶媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【００６７】
プログラムコードを供給するための記憶媒体としては、例えば、フロッピディスク，ハードディスク，光ディスク，光磁気ディスク，ＣＤ−ＲＯＭ，ＣＤ−Ｒ，磁気テープ，不揮発性のメモリカード，ＲＯＭなどを用いることができる。
【００６８】
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【００６９】
さらに、記憶媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【００７０】
【発明の効果】
以上説明したように、本発明のよれば、システム全体としてみた場合のスケジューリングを最適化する事が可能なため、代行印刷時に代行先のキューの一番後ろにジョブが追加されてしまい余計に出力時間が掛かると言った問題や、他のジョブを無条件に追い越してしまうと言った問題を回避することが可能となる。
【図面の簡単な説明】
【図１】本発明を適用する印刷システムの機能ブロック図
【図２】本発明を適用する印刷システムの概要を示すフローチャート
【図３】本発明の印刷システムにおけるジョブ管理テーブルの一例
【図４】ジョブ受付処理の一例を示すフローチャート
【図５】本発明の印刷システムにおける代行印刷処理の概要を示すフローチャート
【図６】ジョブ送信処理の一例を示すフローチャート
【図７】本発明の他の実施の形態の印刷システムにおける代行印刷処理の概要を示すフローチャート
【図８】Ｗｉｎｄｏｗｓ（登録商標）が提供するプリントシステム６６０と印刷ジョブ制御システムにおける印刷ジョブの関係を示す図
【図９】論理プリンタ管理７０５の印刷プロパティを設定するためのユーザインターフェース画面
【図１０】本発明の印刷システムを運用するネットワーク構成の概略を示す図
【図１】
2004102986.tif 000003
【図２】
2004102986.tif 000004
【図３】
2004102986.tif 000005
【図４】
2004102986.tif 000006
【図５】
2004102986.tif 000007
【図６】
2004102986.tif 000008
【図７】
2004102986.tif 000009
【図８】
2004102986.tif 000010
【図９】
2004102986.tif 000011
【図１０】
2004102986.tif 000012