(57)【要約】【課題】  印刷装置でエラーが発生した場合にも、効率的かつ効果的な印刷を行なうこと。【解決手段】  負荷分散印刷を行なうため、実ジョブに対応する仮想ジョブ７'、８'、９'を登録する。実ジョブの送信が開始されると、これらの仮想ジョブを停止状態で保持しておき、プリントデバイスにおいて、実ジョブ９についてエラーが発生すると、プリントキュー７０１、７０１Ａ内の仮想ジョブを送信待ち状態にする。プリントデバイスが復旧する前に、仮想ジョブ７'、８'のスケジュールアップがあれば、エラーのあったプリントデバイスでの処理を停止し、実ジョブ９を削除する。仮想ジョブ７'、８'のスケジュールアップがある前にエラーのあったプリントデバイスが復旧し、印刷を完了すれば、仮想ジョブ７'、８'、９'を削除する。【選択図】  図２０
2005174210.tif 000002
【特許請求の範囲】
【請求項１】
複数の印刷装置に夫々対応した複数のプリントキューを備える情報処理装置であって、
前記複数のプリントキューに、直接的或いは間接的に印刷データとリンク可能な情報を含むジョブ情報を登録する登録手段と、
プリントキューの空きに応じて最初にスケジュールアップしたジョブ情報以外のジョブ情報をスケジュールアップの対象外にし、スケジュールアップしたジョブ情報に基づく印刷ジョブが出力された印刷装置において印刷中断が発生した場合には前記スケジュールアップの対象外となっていたジョブ情報をスケジュールアップの対象とする手段とを備えることを特徴とする情報処理装置。
【請求項２】
前記プリントキューは基本プリントキュー或いはバックアッププリントキューとして機能し、前記登録手段は印刷指示に応じて前記基本プリントキューに印刷ジョブ情報を、前記バックアッププリントキューにバックアッププリント印刷ジョブ情報を、それぞれ登録することを特徴とし、更に、バックアップ印刷ジョブ情報よりも優先された印刷ジョブ情報のスケジュールアップを検知する検知手段と、
スケジュールアップした印刷ジョブ情報に基づく印刷ジョブの印刷装置への出力を行なう出力手段と、
前記印刷装置へ出力された印刷ジョブに対応する印刷ジョブ情報に関連付けられたバックアップ印刷ジョブ情報を、スケジュールアップ対象外にする変更手段と、
印刷装置における印刷中断を認識する認識手段と、
を備え、
前記変更手段は、印刷ジョブの出力先の印刷装置での印刷中断が前記認識手段により認識された場合に、スケジュールアップ対象外とされたバックアップジョブ情報をスケジュールアップ対象に変更することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記検知手段は前記印刷中断が検知された印刷装置の復旧を検知し、前記変更手段は、前記検知手段により前記復旧が検知されたことに応じて前記バックアップジョブ情報を再度スケジュールアップの対象外にすることを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記登録手段は、バックアップ印刷ジョブ情報の登録を、登録順番を付して行なうことを特徴とする請求項２又は３に記載の情報処置装置。
【請求項５】
複数の印刷装置に印刷データを送信可能な情報処理装置であって、
前記複数の印刷装置に対応する複数のプリントキューについて、前記複数のプリントキューのうち、いずれか１つを基本プリントキューとして設定し、前記基本プリントキュー以外のプリントキューをバックアッププリントキューとして設定するプリントキュー設定手段と、
印刷ジョブ情報を前記基本プリントキューに登録する印刷ジョブ登録手段と、
前記基本プリントキューに登録された前記印刷ジョブ情報に対応するバックアップジョブ情報を生成して、出力対象として前記バックアッププリントキューに登録するバックアップジョブ登録手段と、
前記基本プリントキュー及び前記バックアッププリントキューのそれぞれにおいて、印刷ジョブ情報が登録されている場合には、優先的に該印刷ジョブ情報に対応する印刷データを、対応する印刷装置に対して出力し、印刷ジョブ情報が登録されておらず、出力対象のバックアップジョブ情報が登録されている場合には、そのバックアップジョブ情報に対応する印刷ジョブ情報を生成して、生成した印刷ジョブ情報に対応する印刷データの、対応する印刷装置への出力を開始するジョブ制御手段と、
前記基本プリントキュー及び前記バックアッププリントキューにおいて、登録されている前記印刷ジョブ情報及びそれに対応するバックアップジョブ情報のいずれか１つが印刷装置への出力開始の対象となった場合に、出力開始の対象とならなかった前記バックアップジョブ情報を、出力対象ではないバックアップジョブ情報として前記バックアッププリントキューに保持する保持手段と、
前記印刷装置で印刷中断が発生したことを検知する手段と、
を有し、
前記保持手段は、前記印刷装置で印刷中断が発生した場合に、印刷中断の対象となった印刷データに対応するバックアップジョブ情報を、出力対象とすることを特徴とする情報処理装置。
【請求項６】
前記ジョブ制御手段は、前記印刷装置の印刷中断が復旧する前に、前記基本プリントキュー及び前記バックアッププリントキューのいずれかにおいて、印刷ジョブ情報が登録されておらず、印刷中断対象の印刷データに対応するバックアップジョブ情報が出力対象として登録された状態となった場合には、そのバックアップジョブ情報に対応する印刷ジョブ情報を生成して、生成した印刷ジョブ情報に対応する印刷データの、対応する印刷装置への出力を開始し、前記印刷装置において印刷中断対象の印刷データの処理をキャンセルすることを特徴とする請求項５に記載の情報処理装置。
【請求項７】
前記基本プリントキュー及び前記バックアッププリントキューのいずれかにおいて、印刷ジョブ情報が登録されておらず、印刷中断対象の印刷ジョブ情報に対応するバックアップジョブ情報が出力対象として登録された状態となる前に、前記印刷装置の印刷中断が復旧した場合には、復旧した印刷装置に存在する印刷データの印刷を実行し、印刷完了後、前記保持手段で保持された前記バックアップジョブ情報を削除することを特徴とする請求項５または６に記載の情報処理装置。
【請求項８】
複数の印刷装置に夫々対応した複数のプリントキューを備える情報処理装置における負荷分散印刷方法であって、
前記複数のプリントキューに、直接的或いは間接的に印刷データとリンク可能な情報を含むジョブ情報を登録する登録ステップと、
プリントキューの空きに応じて最初にスケジュールアップしたジョブ情報以外のジョブ情報をスケジュールアップの対象外にし、スケジュールアップしたジョブ情報に基づく印刷ジョブが出力された印刷装置において印刷中断が発生した場合には前記スケジュールアップの対象外となっていたジョブ情報をスケジュールアップの対象とするステップとを備えることを特徴とする負荷分散印刷方法。
【請求項９】
前記プリントキューは基本プリントキュー或いはバックアッププリントキューとして機能し、前記登録ステップは印刷指示に応じて前記基本プリントキューに印刷ジョブ情報を、前記バックアッププリントキューにバックアッププリント印刷ジョブ情報を、それぞれ登録することを特徴とし、更に、バックアップ印刷ジョブ情報よりも優先された印刷ジョブ情報のスケジュールアップを検知する検知ステップと、
スケジュールアップした印刷ジョブ情報に基づく印刷ジョブの印刷装置への出力を行なう出力ステップと、
前記印刷装置へ出力された印刷ジョブに対応する印刷ジョブ情報に関連付けられたバックアップ印刷ジョブ情報を、スケジュールアップ対象外にする変更ステップと、
印刷装置における印刷中断を認識する認識ステップと、
を備え、
前記変更ステップは、印刷ジョブの出力先の印刷装置での印刷中断が前記認識ステップにより認識された場合に、スケジュールアップ対象外とされたバックアップジョブ情報をスケジュールアップ対象に変更することを特徴とする請求項８に記載の情報処理方法。
【請求項１０】
前記印刷中断が検知された印刷装置の復旧を検知する第２検知ステップと、前記第２検知ステップにおいて前記復旧が検知されたことに応じて前記バックアップジョブ情報を再度スケジュールアップの対象外にする第２変更ステップとを備えることを特徴とする請求項９に記載の負荷分散印刷方法。
【請求項１１】
前記登録ステップは、バックアップ印刷ジョブ情報の登録を登録順番を付して行なうことを特徴とする請求項９又は１０に記載の負荷分散印刷方法。
【請求項１２】
複数の印刷装置に印刷データを送信することにより負荷を分散して印刷を行なう負荷分散印刷方法であって、
前記複数の印刷装置に対応する複数のプリントキューについて、前記複数のプリントキューのうち、いずれか１つを基本プリントキューとして設定し、前記基本プリントキュー以外のプリントキューをバックアッププリントキューとして設定するプリントキュー設定ステップと、
印刷ジョブ情報を前記基本プリントキューに登録する印刷ジョブ登録ステップと、
前記基本プリントキューに登録された前記印刷ジョブ情報に対応するバックアップジョブ情報を生成して、出力対象として前記バックアッププリントキューに登録するバックアップジョブ登録ステップと、
前記基本プリントキュー及び前記バックアッププリントキューのそれぞれにおいて、印刷ジョブ情報が登録されている場合には、優先的に該印刷ジョブ情報に対応する印刷データを、対応する印刷装置に対して出力し、印刷ジョブ情報が登録されておらず、出力対象のバックアップジョブ情報が登録されている場合には、そのバックアップジョブ情報に対応する印刷ジョブ情報を生成して、生成した印刷ジョブ情報に対応する印刷データの、対応する印刷装置への出力を開始するジョブ制御ステップと、
前記基本プリントキュー及び前記バックアッププリントキューにおいて、登録されている前記印刷ジョブ情報及びそれに対応するバックアップジョブ情報のいずれか１つが印刷装置への出力開始の対象となった場合に、出力開始の対象とならなかった前記バックアップジョブ情報を、出力対象ではないバックアップジョブ情報として前記バックアッププリントキューに保持させる第１保持制御ステップと、
前記印刷装置で印刷中断が発生したことを検知するステップと、
前記印刷装置で印刷中断が発生した場合に、印刷中断の対象となった印刷データに対応するバックアップジョブ情報を、出力対象としてバックアッププリントキューに保持させる第２保持制御ステップと、
を含むことを特徴とする負荷分散印刷方法。
【請求項１３】
前記印刷装置の印刷中断が復旧する前に、前記基本プリントキュー及び前記バックアッププリントキューのいずれかにおいて、印刷ジョブ情報が登録されておらず、印刷中断対象の印刷データに対応するバックアップジョブ情報が出力対象として登録された状態となった場合には、そのバックアップジョブ情報に対応する印刷ジョブ情報を生成して、生成した印刷ジョブ情報に対応する印刷データの、対応する印刷装置への出力を開始し、前記印刷装置において印刷中断対象の印刷データの処理をキャンセルする第２ジョブ制御ステップを有することを特徴とする請求項１２に記載の負荷分散印刷方法。
【請求項１４】
前記基本プリントキュー及び前記バックアッププリントキューのいずれかにおいて、印刷ジョブ情報が登録されておらず、印刷中断対象の印刷ジョブ情報に対応するバックアップジョブ情報が出力対象として登録された状態となる前に、前記印刷装置の印刷中断が復旧した場合には、復旧した印刷装置に存在する印刷データの印刷を実行し、印刷完了後、前記第２保持制御ステップで保持された前記バックアップジョブ情報を削除することを特徴とする請求項１２または１３に記載の負荷分散印刷方法。
【請求項１５】
請求項８から１４の何れかに記載の負荷分散印刷方法をコンピュータに実行させるための制御プログラム。
【請求項１６】
請求項１５に記載のプログラムをコンピュータ可読の形態で記憶した記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の印刷装置を効率よく利用するための印刷処理技術に関するものである。
【背景技術】
【０００２】
従来から、文書を大量に印刷する必要のある状況において、１つの高速大量印刷装置を使用して大量印刷を行うのではなく、複数の低価格中速印刷装置に印刷負荷を分散し、それら並列に動作させることにより安価に高速印刷を実現する負荷分散印刷システムが存在する。
【０００３】
そして、このように複数の印刷装置を並列に動作させる場合、特定の印刷装置に負荷が偏るという問題があり、この問題を解決するために、複数の印刷装置を効率よく利用するための様々な技術が提案されている（例えば、特許文献１参照）。
【特許文献１】特開平０６−２５９２０６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１に代表される従来のプリントシステムでは、印刷ジョブを印刷装置に送信した後で、その印刷装置でエラーが発生した場合を考慮していなかった。また、プリントデバイスにエラーが発生した際には、該デバイスに投入済みの印刷ジョブはオペレータの手による復旧を待つまで印刷されないか、或いは、別のデバイスに自動代行される場合には印刷順序が保証されないという問題があった。
【０００５】
本発明は上記従来の課題を解決するためになされたもので、印刷装置でエラーが発生した場合にも、効率的かつ効果的な印刷を行なうことを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するため、本発明に係る装置は、
複数の印刷装置に夫々対応した複数のプリントキューを備える情報処理装置であって、
前記複数のプリントキューに、直接的或いは間接的に印刷データとリンク可能な情報を含むジョブ情報を登録する登録手段と、
プリントキューの空きに応じて最初にスケジュールアップしたジョブ情報以外のジョブ情報をスケジュールアップの対象外にし、スケジュールアップしたジョブ情報に基づく印刷ジョブが出力された印刷装置において印刷中断が発生した場合には前記スケジュールアップの対象外となっていたジョブ情報をスケジュールアップの対象とする手段とを備えることを特徴とする。
【０００７】
前記プリントキューは基本プリントキュー或いはバックアッププリントキューとして機能し、前記登録手段は印刷指示に応じて前記基本プリントキューに印刷ジョブ情報を、前記バックアッププリントキューにバックアッププリント印刷ジョブ情報を、それぞれ登録することを特徴とし、更に、バックアップ印刷ジョブ情報よりも優先された印刷ジョブ情報のスケジュールアップを検知する検知手段と、
スケジュールアップした印刷ジョブ情報に基づく印刷ジョブの印刷装置への出力を行なう出力手段と、
前記印刷装置へ出力された印刷ジョブに対応する印刷ジョブ情報に関連付けられたバックアップ印刷ジョブ情報を、スケジュールアップ対象外にする変更手段と、
印刷装置における印刷中断を認識する認識手段と、
を備え、
前記変更手段は、印刷ジョブの出力先の印刷装置での印刷中断が前記認識手段により認識された場合に、スケジュールアップ対象外とされたバックアップジョブ情報をスケジュールアップ対象に変更することを特徴とする。
【０００８】
前記検知手段は前記印刷中断が検知された印刷装置の復旧を検知し、前記変更手段は、前記検知手段により前記復旧が検知されたことに応じて前記バックアップジョブ情報を再度スケジュールアップの対象外にすることを特徴とする。
【０００９】
前記登録手段は、バックアップ印刷ジョブ情報の登録を、登録順番を付して行なうことを特徴とする。
【００１０】
複数の印刷装置に印刷データを送信可能な情報処理装置であって、
前記複数の印刷装置に対応する複数のプリントキューについて、前記複数のプリントキューのうち、いずれか１つを基本プリントキューとして設定し、前記基本プリントキュー以外のプリントキューをバックアッププリントキューとして設定するプリントキュー設定手段と、
印刷ジョブ情報を前記基本プリントキューに登録する印刷ジョブ登録手段と、
前記基本プリントキューに登録された前記印刷ジョブ情報に対応するバックアップジョブ情報を生成して、出力対象として前記バックアッププリントキューに登録するバックアップジョブ登録手段と、
前記基本プリントキュー及び前記バックアッププリントキューのそれぞれにおいて、印刷ジョブ情報が登録されている場合には、優先的に該印刷ジョブ情報に対応する印刷データを、対応する印刷装置に対して出力し、印刷ジョブ情報が登録されておらず、出力対象のバックアップジョブ情報が登録されている場合には、そのバックアップジョブ情報に対応する印刷ジョブ情報を生成して、生成した印刷ジョブ情報に対応する印刷データの、対応する印刷装置への出力を開始するジョブ制御手段と、
前記基本プリントキュー及び前記バックアッププリントキューにおいて、登録されている前記印刷ジョブ情報及びそれに対応するバックアップジョブ情報のいずれか１つが印刷装置への出力開始の対象となった場合に、出力開始の対象とならなかった前記バックアップジョブ情報を、出力対象ではないバックアップジョブ情報として前記バックアッププリントキューに保持する保持手段と、
前記印刷装置で印刷中断が発生したことを検知する手段と、
を有し、
前記保持手段は、前記印刷装置で印刷中断が発生した場合に、印刷中断の対象となった印刷データに対応するバックアップジョブ情報を、出力対象とすることを特徴とする。
【００１１】
前記ジョブ制御手段は、前記印刷装置の印刷中断が復旧する前に、前記基本プリントキュー及び前記バックアッププリントキューのいずれかにおいて、印刷ジョブ情報が登録されておらず、印刷中断対象の印刷データに対応するバックアップジョブ情報が出力対象として登録された状態となった場合には、そのバックアップジョブ情報に対応する印刷ジョブ情報を生成して、生成した印刷ジョブ情報に対応する印刷データの、対応する印刷装置への出力を開始し、前記印刷装置において印刷中断対象の印刷データの処理をキャンセルすることを特徴とする。
【００１２】
前記基本プリントキュー及び前記バックアッププリントキューのいずれかにおいて、印刷ジョブ情報が登録されておらず、印刷中断対象の印刷ジョブ情報に対応するバックアップジョブ情報が出力対象として登録された状態となる前に、前記印刷装置の印刷中断が復旧した場合には、復旧した印刷装置に存在する印刷データの印刷を実行し、印刷完了後、前記保持手段で保持された前記バックアップジョブ情報を削除することを特徴とする。
【００１３】
上記目的を達成するため、本発明に係る方法は、
複数の印刷装置に夫々対応した複数のプリントキューを備える情報処理装置における負荷分散印刷方法であって、
前記複数のプリントキューに、直接的或いは間接的に印刷データとリンク可能な情報を含むジョブ情報を登録する登録ステップと、
プリントキューの空きに応じて最初にスケジュールアップしたジョブ情報以外のジョブ情報をスケジュールアップの対象外にし、スケジュールアップしたジョブ情報に基づく印刷ジョブが出力された印刷装置において印刷中断が発生した場合には前記スケジュールアップの対象外となっていたジョブ情報をスケジュールアップの対象とするステップとを備えることを特徴とする。
【００１４】
前記プリントキューは基本プリントキュー或いはバックアッププリントキューとして機能し、前記登録ステップは印刷指示に応じて前記基本プリントキューに印刷ジョブ情報を、前記バックアッププリントキューにバックアッププリント印刷ジョブ情報を、それぞれ登録することを特徴とし、更に、バックアップ印刷ジョブ情報よりも優先された印刷ジョブ情報のスケジュールアップを検知する検知ステップと、
スケジュールアップした印刷ジョブ情報に基づく印刷ジョブの印刷装置への出力を行なう出力ステップと、
前記印刷装置へ出力された印刷ジョブに対応する印刷ジョブ情報に関連付けられたバックアップ印刷ジョブ情報を、スケジュールアップ対象外にする変更ステップと、
印刷装置における印刷中断を認識する認識ステップと、
を備え、
前記変更ステップは、印刷ジョブの出力先の印刷装置での印刷中断が前記認識ステップにより認識された場合に、スケジュールアップ対象外とされたバックアップジョブ情報をスケジュールアップ対象に変更することを特徴とする。
【００１５】
前記印刷中断が検知された印刷装置の復旧を検知する第２検知ステップと、前記第２検知ステップにおいて前記復旧が検知されたことに応じて前記バックアップジョブ情報を再度スケジュールアップの対象外にする第２変更ステップとを備えることを特徴とする。
【００１６】
前記登録ステップは、バックアップ印刷ジョブ情報の登録を登録順番を付して行なうことを特徴とする。
【００１７】
複数の印刷装置に印刷データを送信することにより負荷を分散して印刷を行なう負荷分散印刷方法であって、
前記複数の印刷装置に対応する複数のプリントキューについて、前記複数のプリントキューのうち、いずれか１つを基本プリントキューとして設定し、前記基本プリントキュー以外のプリントキューをバックアッププリントキューとして設定するプリントキュー設定ステップと、
印刷ジョブ情報を前記基本プリントキューに登録する印刷ジョブ登録ステップと、
前記基本プリントキューに登録された前記印刷ジョブ情報に対応するバックアップジョブ情報を生成して、出力対象として前記バックアッププリントキューに登録するバックアップジョブ登録ステップと、
前記基本プリントキュー及び前記バックアッププリントキューのそれぞれにおいて、印刷ジョブ情報が登録されている場合には、優先的に該印刷ジョブ情報に対応する印刷データを、対応する印刷装置に対して出力し、印刷ジョブ情報が登録されておらず、出力対象のバックアップジョブ情報が登録されている場合には、そのバックアップジョブ情報に対応する印刷ジョブ情報を生成して、生成した印刷ジョブ情報に対応する印刷データの、対応する印刷装置への出力を開始するジョブ制御ステップと、
前記基本プリントキュー及び前記バックアッププリントキューにおいて、登録されている前記印刷ジョブ情報及びそれに対応するバックアップジョブ情報のいずれか１つが印刷装置への出力開始の対象となった場合に、出力開始の対象とならなかった前記バックアップジョブ情報を、出力対象ではないバックアップジョブ情報として前記バックアッププリントキューに保持させる第１保持制御ステップと、
前記印刷装置で印刷中断が発生したことを検知するステップと、
前記印刷装置で印刷中断が発生した場合に、印刷中断の対象となった印刷データに対応するバックアップジョブ情報を、出力対象としてバックアッププリントキューに保持させる第２保持制御ステップと、
を含むことを特徴とする。
【００１８】
前記印刷装置の印刷中断が復旧する前に、前記基本プリントキュー及び前記バックアッププリントキューのいずれかにおいて、印刷ジョブ情報が登録されておらず、印刷中断対象の印刷データに対応するバックアップジョブ情報が出力対象として登録された状態となった場合には、そのバックアップジョブ情報に対応する印刷ジョブ情報を生成して、生成した印刷ジョブ情報に対応する印刷データの、対応する印刷装置への出力を開始し、前記印刷装置において印刷中断対象の印刷データの処理をキャンセルする第２ジョブ制御ステップを有することを特徴とする。
【００１９】
前記基本プリントキュー及び前記バックアッププリントキューのいずれかにおいて、印刷ジョブ情報が登録されておらず、印刷中断対象の印刷ジョブ情報に対応するバックアップジョブ情報が出力対象として登録された状態となる前に、前記印刷装置の印刷中断が復旧した場合には、復旧した印刷装置に存在する印刷データの印刷を実行し、印刷完了後、前記第２保持制御ステップで保持された前記バックアップジョブ情報を削除することを特徴とする。
【００２０】
上記目的を達成するため、本発明に係るプログラムは、上記負荷分散印刷方法をコンピュータに実行させる。
【００２１】
上記目的を達成するため、本発明に係る記憶媒体は、上記プログラムをコンピュータ可読の形態で記憶する。
【発明の効果】
【００２２】
本発明によれば、印刷装置でエラーが発生した場合にも、効率的かつ効果的な印刷を行なうことができる。
【発明を実施するための最良の形態】
【００２３】
以下に、図面を参照して、この発明の好適な実施の形態を例示的に詳しく説明する。ただし、この実施の形態に記載されている構成要素はあくまで例示であり、この発明の範囲をそれらのみに限定する趣旨のものではない。
【００２４】
なお、本明細書において、印刷データとはＰＤＬ等で記述された画像データであり、印刷ジョブ情報は、印刷データを出力したいプリンタ、印刷データの格納場所（リンク情報）、及び印刷方法に関する情報であり、印刷ジョブは、印刷データと印刷ジョブ情報とを組み合わせたものである。
【００２５】
[第１実施形態]
＜概要＞
本実施形態に係るプリントシステムは、特開平０６−２５９２０６号公報に開示されているシステムと異なり、共有プリントキューをもたず、プリントデバイスに対応するプリントキューのみを備える。そして、複数のプリントデバイスに対応するプリントキューのいずれか１つが基本プリントキューとして設定され、それ以外のプリントキューはバックアッププリントキューとして設定される。本実施形態では、基本プリントキューに対応するプリントデバイスを基本プリントデバイスと称する。また、バックアッププリントキューに対応するプリントデバイスをバックアッププリントデバイスと称する。
【００２６】
プリンタドライバで生成された印刷ジョブの印刷ジョブ情報は、優先的に基本プリントキューに登録され、同時にその印刷ジョブ情報のバックアップとしてのジョブ情報がバックアッププリントキューに生成される。この印刷ジョブ情報に対応するバックアップジョブ情報のことを、本実施形態では仮想ジョブ情報と称し、これと比較する意味で、バックアップを目的としない通常の印刷ジョブ情報を実ジョブ情報と称する。実ジョブ情報は、印刷データの格納場所（リンク情報）を含むが、仮想ジョブは、印刷データとの直接の関連性はなく、その代わりに実ジョブ情報の識別情報（実ジョブＩＤ）を含む。これにより、仮想ジョブ情報から実ジョブ情報を導き出すことができる。
【００２７】
バックアッププリントキューを含むすべてのプリントキューは、概念的に実ジョブ情報用のキュー（実ジョブキュー）と仮想ジョブ情報用のキュー（仮想ジョブキュー）に分かれている。ユーザが印刷ジョブの状態を確認するために一般的な方法でプリントキューを参照した場合には、仮想ジョブキューはユーザインタフェースには表示されず、実ジョブキューのみが表示される。従って、ユーザは通常、実ジョブ情報の状態のみを認識可能である。
【００２８】
負荷分散印刷ではない通常の印刷指示があると、印刷指示に対応するプリントキュー内の実ジョブキューに、その印刷指示の内容を含む実ジョブ情報を登録する。そして、実ジョブキュー内の実ジョブ情報は、登録された順序に従ってプリントデバイスへの出力対象となり、その実ジョブ情報に含まれる格納場所（リンク情報）に格納された印刷データを、対応するプリントデバイスへ出力する。プリントデバイスでその印刷データの印刷が完了すれば、対応する実ジョブ情報は実ジョブキューから削除され、次に登録された他の実ジョブ情報が出力対象となる。以下、印刷ジョブ情報をプリントデバイスへの出力開始の対象とすることを、「印刷ジョブ情報をスケジュールアップする」と称する。
【００２９】
一方、負荷分散印刷の指示があると、印刷データと直接的或いは間接的にリンクした印刷ジョブ情報を、複数のプリントキューに登録する。より具体的には、その印刷指示に含まれる印刷ジョブ情報を、その指示によって指定された論理プリンタに対応するプリントキュー内の実ジョブキューに実ジョブ情報として登録し、同じプリントキュー内の仮想ジョブキューにその実ジョブ情報に対応する仮想ジョブ情報を登録する。また、他の全バックアッププリントキュー内の仮想ジョブキューにも、同様に、その実ジョブ情報に対応する仮想ジョブ情報を登録する。
【００３０】
ここで、プリントキュー内の実ジョブキューにおいて、先に登録されたすべての実ジョブ情報が、そのプリントキューに対応するプリントデバイスへの出力されてしまう前に、いずれかのバックアッププリントキュー内の実ジョブキューが空になると、そのバックアッププリントキュー内の仮想ジョブキューに登録された仮想ジョブ情報がスケジュールアップされる。そして、スケジュールアップされた仮想ジョブ情報に対応する実ジョブ情報を、そのバックアッププリントキュー内の実ジョブキューに生成し、元の実ジョブ情報の内容を新たに生成した実ジョブ情報にコピーし、元の実ジョブ情報を削除する。更に、新たな実ジョブ情報に含まれる格納場所（リンク情報）に格納された印刷データを、プリントデバイスに送信する。プリントデバイスでの印刷が完了して、それがシステムに通知されると、印刷が完了した印刷ジョブに対応するすべての実ジョブ情報及び仮想ジョブ情報を削除する。なお、本実施形態では、負荷分散印刷の指示に応じて基本プリントキューに実ジョブ情報を登録する際に、同じ基本プリントキュー内に仮想ジョブ情報も登録することとしたが、前述のように元の実ジョブ情報を削除する際に、同じプリントキュー内に仮想ジョブ情報を登録してもよい。
【００３１】
つまり、負荷分散印刷に対応する印刷ジョブ情報は、一旦基本プリントキューに登録され、その後、最も早いタイミングで印刷可能となった、いずれかのプリントデバイスに送信される。従って、複数の同じ印刷データを重複登録することなく効率的に負荷分散印刷を行うことができる。
【００３２】
また、プリントキューに登録されたジョブ情報を閲覧するユーザインタフェースにおいては、負荷分散印刷指示を行うと、まず、基本プリントキューに印刷ジョブ情報を示すオブジェクトが現われ、その後、最先に印刷可能となったバックアッププリントデバイスのプリントキューにその印刷ジョブ情報が移動して印刷が開始したように見える。即ち、１つの印刷データに対応する印刷ジョブのオブジェクトは１つしか表示されないため、ユーザが混乱することもない。
【００３３】
上記のような負荷分散印刷によって、あるプリントデバイスに印刷データが送信された後、そのプリントデバイスに印刷を実行できない事態（例えばエラー）が発生した場合、エラーが発生したプリントデバイスを含む、すべてのプリントデバイス（基本プリントデバイス及びバックアッププリントデバイス）の仮想ジョブキューに仮想ジョブ情報が残存している。そして、エラーが発生したプリントデバイスが復帰するよりも前に、他のプリントキューのいずれかにおいて、仮想ジョブ情報がスケジュールアップされた場合には、スケジュールアップされた仮想ジョブ情報に対応する新たな実ジョブ情報が実ジョブキューに登録され、元の実ジョブ情報が削除される。そして、新たな実ジョブ情報に含まれる格納場所（リンク情報）に格納された印刷データが、新たな実ジョブキューが登録されたプリントキューに対応するプリントデバイスに送信される。エラーが発生したプリントデバイスの復帰が、他のプリントキューにおける仮想ジョブ情報のスケジュールアップよりも早い場合には、復帰したプリントデバイスで印刷を再開する。そして、復帰したプリントデバイスでの印刷が完了して、それがシステムに通知されると、印刷が完了した印刷ジョブに対応するすべての実ジョブ情報及び仮想ジョブ情報を削除する。
【００３４】
つまり、プリントデバイスでエラーが発生し、出力が中断した印刷データは、エラーが発生したプリントデバイスも含めた全プリントデバイスのうち、エラー発生時点から最も早いタイミングでその印刷データを印刷可能となったいずれかのプリントデバイスにおいて出力される。負荷分散印刷の指示があった時点で登録された仮想ジョブ情報に基づいて、エラー後の代行印刷が行なわれるため、最初からプリントキューへの登録を行なわなくても、エラー発生時にも印刷順序が保証される。
【００３５】
＜システム構成＞
図１は、本発明の実施形態に係るプリントシステムの全体構成を示すブロック図である。本プリントシステムは、情報処理装置としてのプリントサーバ１０１と、印刷装置（プリントデバイス）としてのネットワークプリンタ１０２〜１０５と、クライアント（コンピュータ）１０７、１０８とを含み、これらが互いに接続されていることにより、全体としてネットワークを構成している。
【００３６】
プリントサーバ１０１には、印刷制御プログラムが実行可能に格納されており、本プリントシステムに含まれるネットワークプリンタ１０２〜１０５を管理する機能のほか、ネットワークで使用されるファイルを蓄積したり、ネットワークの使用状態を監視したりする機能を有する。具体的には、プリントサーバ１０１は、自身により印刷ジョブを作成し、ネットワークプリンタ１０２〜１０５に転送する機能と、クライアント１０７で生成された印刷データを受信し、その印刷データを含む印刷ジョブを生成してスケジューリング処理によりネットワークプリンタ１０２〜１０５に転送する機能と、クライアント１０７、１０８で作成され、そこにスプールされている印刷ジョブに対してスケジューリング処理を行いクライアント１０７、１０８からネットワークプリンタ１０２〜１０５に直接印刷ジョブを転送するよう指示する機能とを有する。プリントサーバ１０１は、必ずしもプリンタの管理に特化したコンピュータである必要はなく、プリント管理機能を備えた汎用のコンピュータであればよく、他のコンピュータとの関係でクライアントとして機能してもよい。
【００３７】
ネットワークプリンタ１０２〜１０５は、プリントサーバ１０１やクライアント１０７から、印刷データを含む印刷ジョブを受信し、受信した印刷ジョブを解析して印刷する物理的な装置としてのプリントデバイスである。ネットワークプリンタ１０２〜１０５としては、電子写真方式を採用したレーザービームプリンタやインクジェット方式を採用したインクジェットプリンタや熱転写方式を利用したプリンタ等、あらゆる方式の印刷装置を採用することができる。
【００３８】
クライアント１０７、１０８は、プリントサーバ１０１との関係でクライアントとして機能するコンピュータである。
【００３９】
なお、本プリントシステムに含まれる装置間の通信は、イーサネット（登録商標）ケーブルなどを利用した有線通信でもよいし、電波や光などを利用した無線通信でもよい。
【００４０】
＜プリントサーバ及びクライアントの構成＞
図２は、図１に示したプリントサーバ１０１及びクライアント１０７、１０８のハードウェア構成を説明するブロック図である。プリントサーバ１０１及びクライアント１０７、１０８は、ハードウェア構成上、特別な差異はないため、ここでは代表的に、プリントサーバ１０１の構成について説明する。
【００４１】
図２において、ＣＰＵ２００は、ＨＤ（ハードディスク）２０５に格納されているアプリケーションプログラム、プリンタドライバプログラム、ＯＳや印刷制御プログラム等を読出して実行し、ＲＡＭ２０２にプログラムの実行に必要な情報、ファイル等を一時的に格納制御を行うための制御手段である。
【００４２】
ＲＯＭ２０１は、基本Ｉ／Ｏプログラム等のプログラム、文書処理の際に使用するフォントデータ、テンプレート用データ等の各種データを記憶する記憶手段である。ＲＡＭ２０２は、ＣＰＵ２００の主メモリやワークエリア等として機能する一時記憶手段である。
【００４３】
ＦＤ（フロッピー（登録商標）ディスク）ドライブ２０３は、後述する図５に示すように記憶媒体としてのＦＤ２０４に記憶されたプログラム等を本コンピュータシステムにロードするための記憶媒体読み込み手段である。
【００４４】
ＨＤ２０５は、大容量メモリとして機能する外部記憶手段であり、アプリケーションプログラム、プリンタドライバプログラム、ＯＳ、印刷制御プログラム、及び関係プログラム等を格納している。更に、スプール手段であるスプーラはここに確保される。なお、プリントサーバ１０１ではスプール手段としてサーバスプーラが確保され、クライアントではスプール手段としてクライアントスプーラが確保される。
【００４５】
キーボード２０６は、ユーザがプリントサーバ１０１やクライアント１０７、１０８に対して、デバイスの制御コマンドの命令等を入力指示するための指示入力手段である。
【００４６】
ディスプレイ２０７は、キーボード２０６から入力したコマンドや、プリンタ１０２〜１０５の状態等を表示する表示手段である。なお、実際にはプリントサーバ１０１及びクライアント１０７、１０８上で稼動するオペレーティングシステムを介して表示手段に表示指示がなされ、このオペレーティングシステムに本印刷処理プログラムによりリソースファイルの表示指示が行われ、後述する各表示が実現される。２０８はシステムバスであり、プリントサーバ１０１またはクライアント１０７、１０８としてのコンピュータ内の、データの流れをつかさどるものである。
【００４７】
またインタフェース２０９は、入出力手段であり、プリントサーバ１０１またはクライアント１０７，１０８は、インタフェース２０９を介してネットワーク上の他の装置とのデータのやり取りを行う。
【００４８】
＜メモリマップ等の説明＞
図３は、図２に示したＲＡＭ２０２のメモリマップの一例を示す図であり、印刷制御プログラムが、ＲＡＭ２０２にロードされ実行可能となった状態のメモリマップである。図５は、図２に示したＦＤドライブ２０３に対して挿入されるＦＤ２０４との関係を示す図であり、図２と同一のものには同一の符号を付してある。同図において、ＦＤ２０４には、印刷制御プログラム及び関係データを格納している。
【００４９】
印刷制御プログラム及び関係データは、予めＦＤ２０４からＨＤ２０５にインストールされて、ＨＤ２０５からＲＡＭ２０２にロードするようにしてもよいしＦＤ２０４から直接ＲＡＭ２０２にロードして実行させてもよい。更に、印刷制御プログラムをＲＯＭ２０１に記憶しておき、これをメモリマップの一部となすように構成し、直接ＣＰＵ２００で実行することも可能である。また、以上の各装置と同等の機能を実現するソフトウェアをもって、ハードウェア装置の代替として構成することもできる。
【００５０】
印刷制御プログラムは、クライアントにおいては、印刷ジョブの印刷先の変更を指示したり、印刷順序を変更したりする指示をするための制御を行う。一方、プリントサーバにおいては、印刷ジョブの順序制御を行ったり、印刷ジョブの印刷終了や印刷先変更要求などを通知したりする。また、印刷制御プログラムは、クライアントにインストールされるモジュールと、プリントサーバにインストールされるモジュールとを別々に含んでいてもよいし、ひとつの印刷制御プログラムが、実行される環境によりクライアント用として機能したり、プリントサーバ用として機能したりするようにしてもよい。あるいは、一台のコンピュータに、クライアント用の機能を持つモジュールとプリントサーバ用として機能するモジュールとをともにインストールし、同時にあるいは時分割で、擬似的に平行動作させる構成も可能である。
【００５１】
３０１は基本Ｉ／Ｏプログラムを記憶するための領域である。基本Ｉ／Ｏプログラムは、装置（プリントサーバ１０１またはクライアント１０７，１０８）の電源がＯＮされたときに、ＨＤ２０５からＯＳがＲＡＭ２０２に読み込まれ、ＯＳの動作を開始させるＩＰＬ（イニシャルプログラムローデイング）機能などを有しているプログラムである。
【００５２】
３０２はＯＳ（オペレーティングシステム）を記憶する領域であり、３０３は印刷制御プログラムを記憶する領域である。３０４は、関係データを記憶する領域である。３０５はワークエリアで、ＣＰＵ２００が各種のプログラムを実行するための領域である。
【００５３】
図４は、図２に示したＦＤ２０４のメモリマップの一例を示す図である。図４において、４００はＦＤ２０４のデータ内容であり、データの情報を示すボリューム情報４０１と、ディレクトリ情報４０２と、印刷制御プログラム４０３と、その関係データ４０４を含んでいる。
【００５４】
＜プリントシステムのソフトウェア構成＞
次に、本プリントシステムのソフトウェア構成について説明する。図６Ａは、サーバ１０１あるいはクライアント１０７，１０８におけるソフトウェア構成の一例を示す図である。それぞれの構成間の矢印は、アプリケーションから発行された描画コマンドを含む印刷ジョブが、どのように処理されるかを示したものである。また、各ブロックで示されたソフトウェア構成は、図２のＣＰＵ２００によって実行され、所望の機能を実現する。
【００５５】
通常、Ｍｉｃｒｏｓｏｆｔ  Ｗｏｒｄ（登録商標）などの一般的なアプリケーションプログラム６０１は印刷の指示を受け付けると、一連の描画コマンドを、ＯＳを介して生成する。ＯＳを介して生成された描画コマンドを受け取ったＰＤＬドライバ６０２は、一連の描画コマンドに基づいてネットワークプリンタ１０２〜１０４で解釈可能なＰＤＬファイルを含む印刷ジョブを生成する。なお、以下の説明ではＰＤＬドライバを例に説明を行うが、これに限定されるものではなく、例えば、ＢＤＬ（Ｂａｎｄ  ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）や、圧縮ビットマップを作成するプリンタドライバ、あるいは、アプリケーション及びＯＳによりプリンタドライバを介さずに印刷データを生成する形態などにも適用可能であることはいうまでもない。
【００５６】
ＰＤＬドライバ６０２は、プリントデバイスへ印刷ジョブを送信するためにＯＳが用意したジョブ制御ポートモニタ６０８ではなく、ジョブ制御ポートモニタ６０４に送信すべく、生成した印刷ジョブをスプーラ６０３に渡す。ジョブ制御ポートモニタ６０４は、ジョブ制御プリントサービス６０５が印刷データを受け取るために必要なモジュールである。ジョブ制御ポートモニタ６０８は、ジョブ制御プリントサービスにプリントデータを渡さず、プリントデバイスにデータを転送するモジュールであり、ＯＳに組み込まれている。ジョブ制御ポートモニタ６０８に印刷ジョブが投入されると、ジョブ制御プリントサービスにジョブが引き継がれず、直接プリントデバイスに印刷ジョブが転送される。
【００５７】
ここではＯＳをウィンドウズ（登録商標）と仮定しているのでスプーラ６０３はウィンドウズ（登録商標）スプーラである。ただし、本発明を適用するコンピュータのＯＳはウィンドウズ（登録商標）に限定されるものではなく、描画命令を備えるものであれば他のＯＳも適用可能であることはいうまでもない。
【００５８】
スプーラ６０３は、ユーザがユーザインタフェースを介して選択し指示したポートモニタ６０４、６０８に印刷ジョブを渡して、ネットワークプリンタ１０２〜１０４等のプリントデバイスに送信させる手順をとる（矢印ａ）。ここでは、ユーザはあらかじめ負荷分散印刷用のポートモニタ６０４（以降、ジョブ制御ポートモニタと略記）を指定して印刷を指示したものとして説明を進める。
【００５９】
また、プリンタドライバインタフェースを介して設定された用紙サイズ、ステープル指示等の印刷設定情報も、ジョブ制御ポートモニタ６０４に送信される。
【００６０】
ジョブ制御ポートモニタ６０４は、印刷ジョブをそのままプリントデバイス１０２〜１０４に送信するのではなく、負荷分散印刷用のプリントサービス６０５（以降、ジョブ制御プリントサービスと称する）に送信する（矢印ｂ）。
【００６１】
ジョブ制御プリントサービス６０５は、転送された印刷ジョブ及びデバイスの状態を管理する機能を備える。特にプリントデバイスとデータ転送元とがピアツーピアで接続され直接印刷ジョブをプリントデバイスに投入する場合には、プリントデバイスから通知されるデバイス状態やジョブの状態などの情報を管理したり、また、プリントデバイスに対して所定の命令を行なったりする機能も備える。これは、複数のネットワークプリンタ１０２〜１０４のデバイス情報やジョブ情報を管理する機能に相当する。そして、印刷ジョブの順序管理機能（負荷分散印刷機能）に基づき順番が到来した印刷ジョブをネットワークプリンタ１０２〜１０４に転送する（矢印ｃ、ｄ）。
【００６２】
ここで、ジョブ制御プリントサービス６０５が実現する印刷ジョブの順序管理機能について詳しく説明する。この順序管理機能には、以下の機能が含まれる。
【００６３】
・複数のプリントデバイスに対応する複数のプリントキューのうち、負荷分散印刷用として設定されたプリントデバイスに対応するプリントキュー以外のプリントキューをバックアッププリントキューとして設定するプリントキュー設定機能
・ジョブ制御ポートモニタ６０４から転送された印刷ジョブ情報を負荷分散印刷用プリントキュー（基本プリントキュー）に登録する印刷ジョブ登録機能と、負荷分散印刷用プリントキューに登録された印刷ジョブ情報に対応するバックアップジョブ情報を生成して、バックアッププリントキューに登録するバックアップジョブ登録機能
・負荷分散印刷用プリントキュー及びバックアッププリントキューのそれぞれを管理し、印刷ジョブ情報が登録されているプリントキューにおいては、優先的に印刷ジョブ情報をスケジュールアップ（その印刷ジョブ情報に対応する印刷データを、プリントキューに対応するプリントデバイスに送信）し、送信完了前の印刷ジョブ情報が登録されておらず、バックアップジョブ情報のみが登録されているプリントキューでは、そのバックアップジョブ情報を印刷ジョブ情報に変更して、対応するプリントデバイスに印刷データを送信するジョブ制御機能
・負荷分散印刷用プリントキュー及びバックアッププリントキューにおいて、登録されている印刷ジョブ情報及びそれに対応するバックアップジョブ情報のいずれか１つがプリントデバイスに送信された場合には、送信の対象とならなかった印刷ジョブ情報またはそれに対応するバックアップジョブ情報をすべてのプリントキューから削除する削除機能
プリントマネージャ６０９は、ユーザが、ジョブ制御プリントサービス６０５内部でプリントジョブがどのような状態にあるかを調べたり、プリントジョブを操作したりするためのユーザインタフェース（例えば図２２参照）を提供するプログラムである。プリントマネージャ６０９は、ジョブ制御プリントサービス６０５のソフトウェアのインタフェース（ＡＰＩ：Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍ  Ｉｎｔｅｒｆａｃｅ）を介して、ジョブ制御プリントサービス６０５と情報・指示をやり取りしている。
【００６４】
そして、主に、ジョブ制御プリントサービス６０５が管理するネットワークプリンタ１０２〜１０４の状態情報をイベントとして取得する機能を備える。イベントの通知の種別としては、トナー残量が少なくなった警告、クライアントとデバイスとの通信障害、メモリ不足、排紙トレイ満載などのエラー／警告情報の通知や、エラー状態から正常状態に復帰した正常情報の通知などが想定される。ここでのジョブ制御プリントサービス６０５はネットワークを介して通信可能な各プリントデバイスの印刷実行中、電力制御状態、障害情報（紙ジャム）等のステータスを監視する機能を備える。
【００６５】
更に詳細な処理としては、プリントマネージャ６０９がジョブ制御プリントサービス６０５に対してデバイスを指定したイベントを発行し、ジョブ制御プリントサービス６０５は発行されたイベントに基づくデバイスのステータスを監視して、監視に基づく結果をプリントマネージャ６０９に通知する。
【００６６】
マネージメントコンソール６１０は、ソフトウェアがアクセスするためのＡＰＩを介して、ジョブ制御プリントサービス６０５と情報・指示をやり取りすることで、サーバ１０１またはクライアント１０７，１０８の全体を監視することができる。
【００６７】
また、ジョブ制御プリントサービス６０５は、デバイス情報コントロールモジュール６０６を用いて各ネットワークプリンタ１０２〜１０４と通信を行い、各プリンタ内の印刷ジョブや動作状態に関する情報を入手したりする機能を明示したものでありジョブ制御プリントサービス６０５に含めるように考えても良い。
【００６８】
一方、負荷分散印刷を行なわず、一般的なオペレーティングシステムに標準で搭載されるようなプリント機能を利用する場合においては、ＰＤＬプリンタドライバ６０２で生成されたＰＤＬファイルはスプーラ６０３からジョブ制御ポートモニタ６０８をへて（矢印ｅ）、ネットワークプリンタ１０２〜１０４に転送される（矢印ｆ）。
【００６９】
次に、図６Ａを用いて説明したシステムの変形例について、図６Ｂを参照して説明する。図６Ｂは、負荷分散印刷に必要な機能を、クライアント１０７，１０８とサーバ１０１とが分担し、それぞれが協力し合って実現する場合について表わしたものである。具体的には、クライアント１０７、１０８で作成し、サーバ１０１側のプリントキューに登録された印刷ジョブ情報に対し、プリントサーバ１０１がスケジューリングを行う場合のデータの流れを示している。なお、図６Ａと同じ構成は同じ符号で表わしている。
【００７０】
図６Ｂのシステムでは、クライアント１０７，１０８は、マネージメントコンソール６１０やデバイス情報コントロールモジュール６０６をもつ必要はなく、サーバ１０１がそれらを有することにより、一括してプリントデバイスのデバイス情報を管理する。また、サーバ１０１は、ジョブ制御サーバ６１２を有し、デバイス情報コントロールモジュール６０６を用いて各プリントデバイス１０２〜１０４と通信を行い、各プリンタ内の印刷ジョブや動作状態に関する情報を入手したり、操作を行ったりする。入手した情報は、ジョブ制御プリントサービス６０５に渡し共有することができる。
【００７１】
また、ジョブ制御サーバ６１２は、個々のクライアント１０７、１０８上のジョブ制御プリントサービス６０５がプリントデバイス１０２〜１０４に印刷ジョブを送信するタイミングを集中制御（スケジューリング）する。ジョブ制御サーバ６１２は基本的にジョブ制御プリントサービス６０５と同様の機能を備えており、論理的にジョブ制御プリントサービス６０５とジョブ情報を共有している。ここでジョブ情報とは、印刷対象となるドキュメント名や、印刷ジョブのＩＤや、印刷ジョブが投入されたプリンタ名など、印刷ジョブの各種属性情報である。
【００７２】
つまり、図６Ａで説明した、印刷ジョブの順序管理機能（負荷分散印刷制御機能）は図６Ｂではサーバ１０１のみに設けられていてもよく、クライアント１０７，１０８で生成された一旦保持される印刷ジョブを、どういう順序でどのプリントデバイスへ投入すべきかが、ジョブ制御サーバ６１２からジョブ制御プリントサービス６０５に通知される。ジョブ制御プリントサービス６０５ではジョブ制御サーバ６１２からの指示に従い、印刷ジョブをネットワークプリンタ１０２〜１０４に対して転送する。
【００７３】
以上のソフトウェア構成において、図６Ａのプリントシステムでは、ジョブ制御ポートモニタ６０４、ジョブ制御プリントサービス６０５、プリントマネージャ６０９、マネージメントコンソール６１０が印刷制御プログラムに含まれる。また、図６Ｂのクライアント１０７、１０８では、ジョブ制御ポートモニタ６０４、ジョブ制御プリントサービス６０５、プリントマネージャ６０９が印刷制御プログラムに含まれ、プリントサーバ１０１では、デバイス情報コントロールモジュール６０６、マネージメントコンソール６１０、ジョブ制御サーバ６１２が印刷制御プログラムに含まれる。
【００７４】
なお、プリントシステムのソフトウェア構成は、図６Ａ、図６Ｂに限定されるものではなく、その他の様々な構成でも本発明を実現可能である。例えば、クライアントが、アプリケーション６０１からジョブ制御サポートモニタ６０４までの構成のみを備え、ジョブ制御プリントサービス６０５、プリントマネージャ６０９、マネージメントコンソール６１０、デバイス情報コントロールモジュール６０６をサーバ１０１が備えていてもよい。
【００７５】
＜印刷ジョブの流れ＞
次に、図７を用いてアプリケーション６０１からプリントデバイスまでの印刷ジョブの流れについて説明する。ここで、図６Ａと同じソフトウェア構成について同じ参照番号を付与しており、その機能については詳説しない。
【００７６】
図７に示すように、概念的には、ＰＤＬドライバ６０２、スプーラ６０３、ジョブ制御ポートモニタ６０４は、プリントデバイス１０２〜１０４ごとに用意されている。ＯＳがウィンドウズ（登録商標）の場合には、これらをまとめてウィンドウズ（登録商標）プリントシステム７００と称する場合もある。
【００７７】
ジョブ制御プリントサービス６０５には、プリントデバイス１０２〜１０４に対応する数のプリントキュー７０１、７０１Ａ、７０１Ｂ及び出力ポート７０２、７０２Ａ、７０２Ｂが含まれている。この出力ポートには対応するプリントデバイスのＩＰアドレス又は名前解決で使用されるネーム（ＤＮＳ：Ｄｏｍａｉｎ  Ｎａｍｅ  Ｓｙｓｔｅｍ）が関連付けられている。そして、このＩＰアドレス又はＤＮＳに基づきジョブの送信先が特定されジョブの送信（出力）が行なわれる。プリントキューは、ある所定のジョブが投入された１つの基本プリントキュー７０１と複数のバックアッププリントキュー７０１Ａ、７０１Ｂとに分類されている。なお、本実施形態では、物理的な装置であるプリントデバイス単位にプリントキューを設定することとしているが、本願発明はこれに限定されるものではなく、論理プリンタ単位にプリントキューを設定してもよい。つまり、複数のプリントデバイスに対して１つの論理プリンタを設定して、その論理プリンタについて１つのプリントキューを設定しても良いし、更には、１つのプリントデバイスに対して複数の論理プリンタを設定して、その複数の論理プリンタのそれぞれに対してプリントキューを設定してもよい。
【００７８】
負荷分散印刷を行う場合、アプリケーション６０１は、負荷分散印刷の設定を持つ論理プリンタを指定して印刷指示を発行する。この印刷指示に基づいてＰＤＬドライバ６０２によって生成された印刷ジョブがジョブ制御ポートモニタ６０４からジョブ制御プリントサービス６０５に渡されると、その印刷ジョブ情報は、まずプリントキュー７０１に保持され、同時に、その印刷ジョブ情報に対応する仮想ジョブ情報がバックアッププリントキュー７０１Ａ、７０１Ｂに生成される。そして、それらのジョブのうちいずれか１つがプリントデバイス１０２〜１０４に送られる。バックアッププリントキューに対応するプリントデバイスは、バックアッププリンタと呼ばれ、ユーザが指定したプリントデバイスが混雑している場合などに利用される予備的なプリントデバイスを指す。
【００７９】
＜各種の情報の内容＞
Ｉ．プリントキューの実ジョブキューと仮想ジョブキュー
図８は、プリントキュー７０１内の実ジョブキュー８０１と仮想ジョブキュー８０２を示す図である。実ジョブキュー及び仮想ジョブキューは、印刷ジョブ情報が、実ジョブ情報または仮想ジョブ情報であることを示す属性情報（１００６、１１０３）を含むことにより、論理的に構築されるものであっても良い。また、実ジョブキュー及び仮想ジョブキューを、別の変数として実態的に構築しても良い。実ジョブキュー８０１と仮想ジョブキュー８０２は、負荷分散印刷処理を行う場合に使用する、印刷ジョブ情報を管理するキューである。そして、各論理プリンタ毎に図８に示されるような実ジョブキューと仮想ジョブキューとを含むプリントキューが対応付けられることとなる。また、１つのプリントデバイスに対して論理プリンタが１つの場合には、図８に示されるプリントキューはプリントデバイスに対応するプリントキューに相当することとなる。そしてこのプリントキューがある時は基本プリントキューとなり、ある時はバックアッププリントキューとして機能する。
【００８０】
上述したように、実ジョブ情報は、印刷データそのものは含まないが、スプールファイル名などの印刷データへのリンクを含む印刷ジョブ情報で、実ジョブキューで管理される。また、仮想ジョブ情報は、実ジョブ情報と同様に印刷データを含まず、実ジョブ情報へのリンク（実ジョブ情報のＩＤ）を含む。これにより実ジョブ情報に設定された情報を利用することができ、間接的に印刷データとリンクされる。そして、仮想ジョブ情報は、仮想ジョブキューで管理される。
【００８１】
ＩＩ．プリントキュー情報
図９は、プリントキュー７０１で受け付けた印刷ジョブの動作を決めるプリントキュー情報を示す図である。ここで、プリントキュー情報の設定内容の、プリンタ名、プリンタドライバ名、プリントタイプ、及びバックアッププリンタ名について説明する。なお、図９の情報は図６Ａのようなシステム形態では、ジョブ制御プリントサービス６０５において保持され、図６Ｂのようなシステム形態ではジョブ制御プリントサービス６０５及びジョブ制御サーバ６１２の双方において共有して保持されるものとする。
【００８２】
プリンタ名は、ウィンドウズ（登録商標）のプリンタオブジェクトの名前を示しており、プリンタオブジェクト毎に異なる名前であり、プリンタオブジェクトを識別することができる。プリンタ名は、厳密に言えば、論理プリンタを特定する文字列であるが、一般的には論理プリンタから物理的なプリントデバイスを特定できるので、結果的に、ここでのプリンタ名がプリントデバイスを特定したものとなる。
プリンタドライバ名は、プリンタオブジェクトに設定されているプリンタドライバの名前である。プリントタイプは、プリントキューで受け付けた印刷ジョブの動作を決定する設定である。バックアッププリンタ名は、負荷分散印刷をする際の負荷分散先となるプリンタオブジェクト（論理プリンタ）の名前である。
【００８３】
ＩＩＩ．実ジョブ情報
図１０は、プリントキュー７０１の実ジョブキューに登録される印刷ジョブ情報を示す図である。図１０の情報は図９と同様に図６Ａのようなシステム形態では、ジョブ制御プリントサービス６０５において保持され、図６Ｂのようなシステム形態ではジョブ制御プリントサービス６０５及びジョブ制御サーバ６１２の双方において共有して保持される。また、保持される実ジョブ情報は、関連する仮想ジョブ情報がスケジュールアップした場合や、当該実ジョブ情報に対応する印刷ジョブの出力が印刷装置で完了した場合に削除される。
【００８４】
実ジョブは、所定の記憶領域にスプールされた印刷データを含む印刷ジョブであり、出力ポートに送られて実際に転送処理が行われプリンタで出力される印刷ジョブである。実ジョブ情報は、実ジョブに含まれる各種の設定情報であり、プリントキュー７０１に登録される。
【００８５】
以下、実ジョブ情報の設定内容（ドキュメント名、ジョブＩＤ、プリントタイプ、実行タイプ、仮想ジョブＩＤ、先頭ジョブマーク、送信済みプリンタリスト）、スプールファイル名について説明する。
【００８６】
ドキュメント名はアプリケーション７０１が印刷するジョブ（印刷データファイル）の名前である。
【００８７】
図１０におけるジョブＩＤ１００２は実ジョブ情報に割り振られる任意のＩＤでジョブを識別するためのＩＤである。プリントキュー７０１が印刷ジョブを受け付けるとそのジョブにジョブＩＤを割り当てる。
【００８８】
プリントタイプ１００６は、図９と同様であり実ジョブの動作を決定する情報で、負荷分散印刷などの情報が設定される。プリントキュー７０１が実ジョブ情報を受け付けると、プリントタイプから情報を取得し実ジョブ情報のプリントタイプに設定する。また実ジョブ情報であることを示す属性も含まれている。
【００８９】
実行タイプには、印刷ジョブのタイプを表す情報で、（１）ネットワークプリンタ１０２〜１０４でパスワードを入力しなければ印刷できないパスワード入力ジョブ、（２）暗号化されたセキュアジョブ、（３）ネットワークプリンタ１０２〜１０４で出力する直前にオフラインになるオフラインジョブ、（４）ネットワークプリンタ１０２〜１０４のＨＤに保存される保存ジョブ、（５）負荷分散印刷などのタイプが設定される。これは、プリンタドライバからジョブのタイプの通知を受け付けたり、アプリケーションからジョブのタイプの通知を受け付けたりした場合に設定する項目である。また、ジョブのタイプを判別し設定する場合もある。また、プリントタイプ１００６に含めるようにしても良い。
【００９０】
仮想ジョブＩＤ１００３は、負荷分散印刷処理を行う場合に作成される仮想ジョブ情報のジョブＩＤである。複数の仮想ジョブ情報が発生する場合には、仮想ジョブＩＤは１００３〜１００５のように複数設定される。
【００９１】
先頭ジョブマークは、ネットワークプリンタ１０２〜１０４で管理されている印刷ジョブの先頭を現すマークである。
【００９２】
送信済みプリンタリストは、実ジョブを送信したプリンタの名前を設定するリストである。
【００９３】
スプールファイル名は、アプリケーションデータに基づき作成された印刷データに対応するスプールファイルの名前であり印刷データの格納場所（リンク情報）に相当する。そしてこのスプールファイル名は所定の記憶部に記憶されたスプールファイルを特定するために利用される。スプールファイル名の代わりにスプールファイルＩＤを採用するようにしても良い。実ジョブ情報に基づくジョブ出力が対応するプリントデバイスに対して行なわれる場合に、前記実ジョブ情報に関連付けられたスプールファイル名に基づき特定される印刷データがプリントデバイスに対して出力されるべく出力ポートに書きこまれる。
【００９４】
ＩＶ．仮想ジョブ情報
図１１は、プリントキュー７０１の仮想ジョブキューに登録される仮想ジョブ情報を示す図である。図１１の情報は図９、１０と同様に図６Ａのようなシステム形態では、ジョブ制御プリントサービス６０５において保持され、図６Ｂのようなシステム形態ではジョブ制御プリントサービス６０５及びジョブ制御サーバ６１２の双方において共有して保持される。仮想ジョブ情報は、仮想ジョブ情報であると識別でき、実ジョブ情報に対して非優先的にスケジュールアップされるという特徴を有する。仮想ジョブ情報には、実ジョブ情報に含まれる各種情報（図１０参照）をすべて設定しても構わない。しかし、以下では最良の形態として、必要最低限の情報を仮想ジョブ情報に持たせる形態について説明する。
【００９５】
仮想ジョブ情報は、負荷分散の実ジョブ情報と関連する情報で、負荷分散印刷処理でスケジュール管理するために必要な情報である。
【００９６】
以下、仮想ジョブ情報の設定内容のドキュメント名、ジョブＩＤ、プリントタイプ、実ジョブＩＤについて説明する。
【００９７】
ドキュメント名は、仮想ジョブ情報に対応する実ジョブ情報の印刷対象ドキュメント名であり、仮想ジョブ情報が作られるときに、実ジョブ情報からコピーされる。
【００９８】
ジョブＩＤ１１０２は仮想ジョブ情報を識別するためのＩＤで、仮想ジョブ情報が作成されるときに設定される情報である。そして、ジョブＩＤ１１０２は、図１０の仮想ジョブＩＤ１００３〜１００５の何れかに対応する。
【００９９】
プリントタイプ１１０３は、仮想ジョブ情報に対応する実ジョブのプリントタイプであり、仮想ジョブが作成されるときに、実ジョブ情報のプリントタイプからコピーされる。また、コピー内容の他に仮想ジョブ情報であることを示す属性も含まれている。
【０１００】
実ジョブＩＤ１１０４は、仮想ジョブ情報と関連する実ジョブ情報のＩＤであり、仮想ジョブ情報が作成されるときに設定される情報である。これは、図１０のジョブＩＤ１１０２に対応する。
【０１０１】
なお、図１１中には、図１０において説明した印刷データを特定するためのスプールファイル名が含まれていないが、事前に仮想ジョブ情報にスプールファイル名を含めるようにして、後述する実ジョブ情報の変更の際に、この事前に関連付けられたスプールファイル名を用いるようにしても良い。
【０１０２】
＜負荷分散処理＞
本実施形態の負荷分散印刷処理では、アプリケーションが印刷指示を行った論理プリンタの負荷分散印刷設定に従って、基本プリントキューに実ジョブ情報を、バックアッププリントキューに仮想ジョブ情報を生成し、その中で、転送開始指示（スケジュールアップ要求）の早い印刷ジョブ情報に対応する印刷データがプリントデバイスに転送される。
【０１０３】
図１２は、本実施形態の負荷分散印刷処理のジョブ受付処理から仮想ジョブ作成までの処理を示すフローチャートである。
【０１０４】
図１３は、図１２のフローチャートの処理を説明した図である。ここで、ジョブＩＤが「Ｎ」の印刷ジョブ情報を印刷ジョブ情報Ｎと表現すると、図１３では、プリントキュー７０１の実ジョブキュー８０１に実ジョブ情報１、別のプリントデバイスに対応するバックアッププリントキュー７０１Ａの実ジョブキュー８０１Ａに実ジョブ情報５があり、それぞれの実ジョブ情報に対応する印刷データを、プリントデバイスへ転送中であるという前提で説明している。なお、実ジョブ情報５は、例えば他のクライアントから発行された印刷ジョブがバックアッププリントキュー７０１Ａに対応するプリントデバイスを基本プリントデバイスとして負荷分散印刷指示を行った場合に登録されたものと考えることができる。その場合には、プリントキュー７０１および７０１Ｂなどの他のプリントキューがそれぞれバックアッププリントキューとされ、それぞれのバックアッププリントキューにおける仮想ジョブキューに仮想ジョブ情報が登録される。
【０１０５】
アプリケーション６０１が印刷を開始すると、ステップＳ１２０１において、プリントキュー７０１はスプーラ６０３、ジョブ制御ポートモニタ６０４経由で印刷ジョブを受け付ける。
【０１０６】
次に、ステップＳ１２１３において、印刷ジョブの種別を判断する。実ジョブ情報の実行タイプにより仮想ジョブ情報を作成するかどうかを判断する。ネットワークプリンタ１０２〜１０４でパスワードを入力しなければ印刷できないパスワード入力ジョブ、暗号化されネットワークプリンタ１０２〜１０４の内、特定のプリンタでのみ印刷可能なセキュアジョブ、プリントデバイスで出力する直前にオフラインになるオフラインジョブ、プリントデバイスのＨＤに保存される保存ジョブなど、特定のプリントデバイスでのみ受付可能な場合には、ステップＳ１２１１に処理を移行する。そうでない場合には、ステップＳ１２０２に処理を移行する。このステップＳ１２１３のステップの処理により、セキュリティーが考慮され決められたプリントデバイス及び量だけ印刷出力する印刷ジョブについて、他のプリントデバイスで出力させたり、重複したページを出力させたりすることを防げる。
【０１０７】
ステップＳ１２０２において、図９中のプリントキュー情報のプリントタイプを参照し、負荷分散印刷であるかを確認する。負荷分散印刷であれば、ステップ１２０３に処理を移行する。負荷分散印刷でなければ、ステップＳ１２１１に進む。ステップＳ１２０３では、複数のプリントキューのうち、印刷ジョブの第１出力対象とされたプリントデバイスに対応するプリントキューが基本プリントキューとして設定され、この基本プリントキューに含まれる実ジョブキューに、受け付けた印刷ジョブの実ジョブ情報を登録する。
【０１０８】
ドキュメント名としては、スプーラ６０３からジョブを受け付けるときに取得したものを設定する。ジョブＩＤはジョブ情報を作成するときに生成し設定する。プリントタイプは、プリントキュー情報のプリントタイプの情報を設定する。
【０１０９】
本実施の形態の場合には、プリントキュー情報のプリントタイプは負荷分散印刷であるため、実ジョブ情報のプリントタイプには、負荷分散印刷が設定される。次に、ステップＳ１２０４において、作成された実ジョブ情報をプリントキュー７０１の実ジョブキュー８０１に登録する（図１３の実ジョブ情報７）。更に仮想ジョブキュー８０２に実ジョブ情報に対応した仮想ジョブ情報を停止状態で登録する(図１３の仮想ジョブ情報７´)。ここで停止状態とは、仮想ジョブ情報が出力対象ではないことを示すステータスである。プリンタ７０１に実ジョブが存在する間は、同じプリンタの仮想ジョブキューにある仮想ジョブ情報はスケジュールアップの対象としないように抑止するため、ここでは停止状態として登録する。また、図１０、１１には図示されていないが、ステップＳ１２０４における実ジョブ情報及び仮想ジョブ情報には、時刻等の登録順番の属性が付されているものとする。
【０１１０】
仮想ジョブキューに登録された仮想ジョブ情報は、印刷が完了するかキャンセルされるまで保持され、エラー発生時の代行印刷等やジョブの移動時における印刷順序の保証をしている。なお、本印刷システムにおいては仮想ジョブと実ジョブのＩＤは同じものが使用されているが、別途対応を管理するデータを保持することにより異なるＩＤを用いても良い。ここでは、仮想ジョブ情報のジョブＩＤをＮ´(ダッシュ)で示す。つまり、例えば、実ジョブ９と仮想ジョブ９´とは対応している。
【０１１１】
つぎに、ステップＳ１２０５において、図９のプリントキュー情報のバックアッププリンタ名を取得する。複数設定されている場合には、複数のバックアッププリンタ名を取得する。そして、バックアッププリンタ名に対応するプリントキューがバックアッププリントキューとして設定される。
【０１１２】
さらに、ステップＳ１２０６において、取得した複数のバックアッププリンタ名の各々から特定されるバックアッププリントキューに、仮想ジョブ情報を作成し、各情報を設定する。
【０１１３】
図１１に示される仮想ジョブ情報の各項目で、ドキュメント名は、実ジョブ情報のドキュメント名から情報を取得し設定する。仮想ジョブのジョブＩＤ１１０２は仮想ジョブ情報を作成するときに生成し設定する。プリントタイプ１１０３は、実ジョブ情報のプリントタイプの情報から取得し設定する。実ジョブのジョブＩＤ１１０４は実ジョブ情報のジョブＩＤ１１０２から取得し設定する。
【０１１４】
ステップＳ１２０７において、実ジョブ情報の仮想ジョブＩＤに仮想ジョブ情報のジョブＩＤを設定する。仮想ジョブは複数発生する場合があるため、仮想ジョブが作成される順に仮想ジョブＩＤ１、仮想ジョブＩＤ２、...と設定していく。
【０１１５】
ステップ１２０８において仮想ジョブ情報を仮想ジョブキュー８０２Ａに登録する（図１３の仮想ジョブ情報８´）。図１１には図示されていないが、ステップＳ１２０８で登録される仮想ジョブ情報には、時刻等の登録順番の属性が付されているものとする。
【０１１６】
ステップ１２０９において、ステップＳ１２０５で取得したバックアッププリンタ名（バックアッププリントキュー）が残っていれば、ステップＳ１２０６に処理を移行する。そしてステップＳ１２０６から１２０８における処理を繰り返した結果、図１３中の仮想ジョブ情報９´が登録される。
【０１１７】
図１３では、ステップＳ１２０５で取得したバックアッププリンタ名が２つある場合を想定して説明しているため、仮想ジョブ情報は、２つ作成される。すなわち、仮想ジョブキュー８０２Ａ、８０２Ｂに仮想ジョブ情報８´、９´が作成され、実ジョブ情報７の仮想ジョブＩＤ欄に８´と９´が設定される。また、ジョブＩＤが８´と９´の仮想ジョブ情報には、その実ジョブＩＤ欄に、７が設定される。また本実施形態では、同じプリントキューに存在する実ジョブ情報とそれに対応する仮想ジョブ情報とは同じＩＤを割り当てられるため、実ジョブジョブ情報７内に、これに対応する仮想ジョブキュー８０２内の仮想ジョブのジョブＩＤ（７´）を設定する必要はない。実ジョブ情報７は、自身のＩＤを参照すれば、容易に仮想ジョブ情報７´を見つけだすことができるからである。
【０１１８】
ステップＳ１２０９において、ステップＳ１２０５で取得したバックアッププリンタ名が残っていなければ、ステップＳ１２１０に移行し、作成した実ジョブとすべての仮想ジョブのスケジュール要求を発行する。
【０１１９】
図１４は、各プリントキュー７０１、７０１Ａ、７０１Ｂの各々において発行されるアクションに対するスケジュール処理を示す図である。この処理は、ジョブ制御プリントサービス６０５における処理に相当する。
【０１２０】
ステップＳ１４０１では、各プリントキューのスケジュールの管理を行い、アクションの発生を認識する。この認識は外部からのイベントの検知によるものであっても、アクションの発生元をポーリングし応答を検知するものでも良い。さらに具体的には、いずれかのプリントキューに印刷ジョブを登録したモジュール（例えばジョブ制御ポートモニタ）からのスケジュール要求、印刷ジョブの送信完了（出力ポートからプリントデバイスへの印刷データの送信を終了したことを示す情報）、印刷ジョブの削除、印刷ジョブの完了（最終ページ排紙通知）、デバイス復帰通知（例えば電源ＯＦＦからＯＮ状態になった場合になど、動作不可能な状態から動作可能な状態に移行したことを示すイベント）などのアクションを監視する。各プリントキューに対する、上記アクションが発生すると、ステップＳ１４０２に処理を移行し、アクションが発生しない場合は、ステップＳ１４０１で待機処理を行う。ここで、スケジュール要求のアクションは例えばジョブ制御ポートモニタから発生する。また印刷ジョブの削除は、プリントマネージャ６０９から発生される。また、印刷ジョブの送信完了及び印刷ジョブの完了はプリントデバイスにおいて発生し、出力ポートを介して通知される。ただし、これらのアクションの発生ルートはこれに限定されるものではない。
【０１２１】
ステップＳ１４０２において、上記アクションが発生したプリントキュー７０１、７０１Ａ、７０１Ｂを確認し、実ジョブキュー８０１、８０１Ａ、８０１Ｂ、仮想ジョブキュー８０２、８０２Ａ、８０２Ｂの順に検索し、いずれかのプリントキューに何らかの印刷ジョブ情報が存在していればステップＳ１４０３に処理を移行し、印刷ジョブ情報が無ければステップＳ１４０１に移行する。なお、対象ジョブを検索する際には、停止状態のジョブ、削除中状態のジョブはスケジュールアップの対象からは除外される。
【０１２２】
ステップＳ１４０３において、プリントデバイスのうち、ステップＳ１４０１において所定のアクションが発生したプリントキューに対応するプリントデバイスの動作ステータスを取得する。例えば、ステップＳ１４０１において発生したアクションがジョブ完了であれば、印刷ジョブの完了のアクションに応じてステータスを取得するようにする。
【０１２３】
また、ステップＳ１４０３におけるデバイスステータスの取得で、デバイス制御コントロールモジュール６０６を介したポーリングを行い、このポーリングと所定のアクションの発生によるデバイスステータスの取得を併用するようにすれば、より迅速にプリントデバイスが転送可能な動作ステータスになったか否かを調べることができる。
【０１２４】
ステップＳ１４０４において前のステップにおいて取得されたステータスに基づいて、現在対象となっているプリントキューに対応するプリントデバイスに印刷データを転送可能かどうか判断する。ここでデータ転送不可能と判断される動作ステータスとしては、例えば（１）紙無しやトナー無しなど消耗品が不足した状態や、（２）画像記録を継続できない例えばジャム（紙詰まり）などの障害が発生している状態や、（３）印刷データを送信するチャネルがオフラインである状態や、（４）プリントデバイス側（ネットワークボードも含む）でこれ以上受信バッファに余裕がなくビジーの状態などが挙げられる。また、この（１）乃至（４）のステータスを任意に組み合わせてそれをデータ転送可能でないと判断するステータスとするようにしても良い。
【０１２５】
ステップＳ１４０４において、アクション発生の対象となっているプリントデバイスに印刷データを転送可能であれば、ステップＳ１４０５に処理を移行し、転送不可能であれば、処理をステップＳ１４０１に移行する。
【０１２６】
ステップＳ１４０５において、ステップＳ１４０２で見つけたジョブに対して、スケジュールアップ要求を発行し、処理をステップＳ１４０１に移行する。この時、実ジョブが見つかっていれば、仮想ジョブよりも先に実ジョブに対してスケジュールアップ要求を発行する。つまり、登録の順番に係わらず、実ジョブを仮想ジョブよりも優先する。また実ジョブ及び仮想ジョブの中でプリントキューへの登録が早いものがステップＳ１４０２で優先的に確認される。
【０１２７】
例えば、ステップＳ１４０１で印刷ジョブＢのスケジュール要求が発生した時に、前の印刷ジョブ（印刷ジョブＡ）が転送中であるとした場合、Ｓ１４０４でＮＯの処理に移行し、ステップ１４０１で待機する。そしてその後、ステップＳ１４０１で、印刷ジョブＡのジョブ送信完了やジョブ削除などを受け付けるとテップＳ１４０２からステップＳ１４０５に進み、ジョブＢの転送が直ちに開始される。
【０１２８】
次に、図１４のフローチャートの処理に基づき特にプリントキュー７０１でスケジュールアップ要求を受け付けてから、プリントデバイスに印刷データを送信するまでの処理の流れについて説明する。図１５は、プリントキュー７０１での負荷分散印刷処理について示すフローチャートである。また、図１６、図１７は、図１５のフローチャートに関連した処理を表した図である。
【０１２９】
負荷分散印刷では、印刷指示を受けたプリントデバイスに対応するプリントキューの実ジョブキューに実ジョブ情報が登録され、そのプリントデバイスに対してバックアッププリントデバイスとして動作するように予め設定されたプリントデバイスに対応するプリントキューの仮想ジョブキューに仮想ジョブ情報が登録される。１つのプリントキューにおいて、これらのジョブの中で早くスケジュールアップ要求を受け付けた印刷ジョブがネットワークプリンタ１０２〜１０４に転送される。
【０１３０】
ステップＳ１５０１では、スケジュールアップ要求を受け付けたか判断する。スケジュールアップを受け付けると処理をＳ１５０２に移行し、スケジュールアップが来なければステップＳ１５０１で待機する。
【０１３１】
ステップＳ１５０２では、スケジュールアップを受け付けた印刷ジョブが負荷分散ジョブかどうかを判断する。ジョブ情報のプリントタイプの情報を取得し、プリントタイプが負荷分散印刷であれば、ステップＳ１５０３に処理を移行する。負荷分散印刷でなければ、ステップＳ１５１１に処理を移行し、実ジョブキューに登録された実ジョブ情報に含まれる格納場所（リンク情報）より印刷データを特定し、特定した印刷データを含む印刷ジョブがネットワークプリンタに転送される。
【０１３２】
ステップＳ１５０３では、スケジュールアップのジョブが仮想ジョブであるか、実ジョブであるかを判断する。仮想ジョブであれば、ステップ１５０４に処理を移行し、実ジョブであればステップＳ１５１３に処理を移行する。
【０１３３】
ここで、仮想ジョブのスケジュールアップをユーザに通知してもよい。つまり、ユーザが指定した基本プリントデバイスではなく、バックアッププリントデバイスにおいて印刷が実行されることを通知すれば、ユーザは印刷結果が出力されるプリンタを特定することができ、利便性が高い。
【０１３４】
ステップＳ１５０４において、実ジョブ情報を参照するために仮想ジョブ情報中の実ジョブＩＤを取得する。ステップＳ１５０５では、ステップＳ１５０４で取得した実ジョブＩＤを用いて実ジョブ情報を参照し、実ジョブ情報に含まれる単数或いは複数の仮想ジョブＩＤを取得する。
【０１３５】
ステップＳ１５０６では、ステップＳ１５０５で取得した仮想ジョブＩＤから、スケジュールアップ要求が発生した仮想ジョブ以外の仮想ジョブを認識し、スケジュールアップ要求を受けていない送信の対象とならなかった他の仮想ジョブのステータスを、「停止」とする（図１６の矢印ｇ）。これにより、送信の対象とならなかった他の仮想ジョブは、ステータスが再度、「送信待ち」に変更されるまで、その後の出力対象（スケジュールアップの対象）から除外される。
【０１３６】
ステップＳ１５０７において、ステップＳ１５０５で取得した仮想ジョブで、ステップＳ１５０６で停止していない仮想ジョブが残っていればステップＳ１５０６に処理を移行し、仮想ジョブが残っていなければ、ステップＳ１５０８に処理を移行する。これにより、スケジュールアップ要求が発生した仮想ジョブと同じ実ジョブＩＤに関連付けられた他のすべての仮想ジョブを「停止」する。
【０１３７】
ステップＳ１５０８、Ｓ１５０９では、仮想ジョブから実ジョブを生成しプリントデバイスに送信するために、スケジュールアップ要求が発生した仮想ジョブを実ジョブに変更する処理を行う。すなわち、仮想ジョブ情報から実ジョブ情報を作成し、実ジョブキュー８０１Ｂに登録する（図１６の矢印ｈ）。そしてこの変更処理により仮想ジョブ情報が実ジョブ情報になり、変更前の実ジョブ情報に対応する印刷ジョブの送信は行わない。
【０１３８】
まず、ステップＳ１５０８において、仮想ジョブ情報に対応する新たな実ジョブ情報を、実ジョブキュー８０１Ｂに生成する（図１６の矢印ｈ）。この際に実ジョブに変更される仮想ジョブ情報を停止状態にする（図１７の９´）。更に、ステップＳ１５０９において、その仮想ジョブ情報中の実ジョブＩＤから、元の実ジョブ情報（ここではプリントキュー７０１に登録された実ジョブ情報７）を特定し、元のの実ジョブ情報の内容を取得し、新たな実ジョブ情報９にその内容をコピーする。ここで、例えば、図１０のプリントタイプ、実行タイプ、先頭ジョブマーク、送信済みプリンタリスト、スプールファイル名などを、新たな実ジョブ情報に反映させる。また、新たに作成された実ジョブ情報の実ジョブＩＤは、前の実ジョブＩＤ（ジョブＩＤ７）を流用するようにしても良いし、新たな実ジョブＩＤを生成し用いるようにしても良い。新たな実ジョブＩＤを用いる場合には、関連する仮想ジョブ情報中に含まれる実ジョブＩＤを書き換える必要がある。
【０１３９】
更にステップＳ１５１０において、スケジュールアップ要求が発生した仮想ジョブ情報の実ジョブＩＤに登録されていた元の実ジョブ（ここではプリントキュー７０１に登録された実ジョブ情報７）を削除する（図１６の矢印ｉ）。これらの処理の結果、図１７のような状況となる。この図１７には仮想ジョブ情報が各々のプリントキューに１つしか示されていないが、実際には複数のクライアントからの印刷要求に対応して複数の仮想ジョブ情報が夫々のプリントキューに登録されている場合がある。この場合でも、停止中の仮想ジョブ情報はスケジュールアップ対象外となり、対象外を除くスケジュールアップ対象のバックアップジョブ情報が登録順にスケジュールアップする。
【０１４０】
例えば、図１７の状態から実ジョブ情報５が出力済みとなった前提で、他の印刷ジョブの実ジョブ情報がプリントキュー７０１に、仮想ジョブ情報が７０１Ａ、７０１Ｂのプリントキューに登録された場合でも、仮想ジョブ情報８´は停止中でありスケジュールアップ対象外なので、プリントキュー７０１Ａに登録された仮想ジョブ情報を実ジョブ情報に変更し印刷ジョブを印刷装置へ出力することができる。このように、停止中の仮想ジョブ情報を、その登録順番を維持しつつ、スケジュールアップ対象外とする。これにより、仮想ジョブ情報が実ジョブ情報に変更された場合でも、その登録順番を維持できる。そして、後続して登録された他の仮想ジョブ情報のスケジュールアップを妨げることもない。
【０１４１】
図１５の説明に戻ると、ステップＳ１５１１において、元々実ジョブの印刷ジョブあるいは実ジョブに変更された印刷ジョブを対応するプリントデバイスに転送する。より具体的に説明すると、最終的に対象となる図１０の実ジョブ情報（ステップＳ１５０３でＮｏと判断された実ジョブ情報、あるいは、ステップＳ１５０９において切り替えられた実ジョブ情報）から特定されるスプールファイル名の印刷データが、実ジョブ情報が登録されている実ジョブキュー（プリントキュー）に対応する論理プリンタの出力ポートに関連付けられたＩＰアドレス又は名前解決に利用するネームに基づき転送される。
【０１４２】
そして、印刷ジョブの転送が終了したらステップＳ１５１２でジョブの送信終了の通知を行う。この通知は図１４のステップＳ１４０１におけるジョブ送信完了のアクションとして確認される。
【０１４３】
なお、図１６の矢印ｉの処理が実行し終えるまで二つの実ジョブが存在するが、図１６の矢印ｇから矢印ｉまでのの処理を一筆書きの（コンテキストチェンジを発生させない）プログラムで実現すれば問題は起こらない。また、図１６の矢印ｉと矢印ｈの処理順序を逆にするようにしても良い。更に、上に説明では不要となった仮想ジョブ情報及び実ジョブ情報を削除するよう説明してきたが、例えば、不要になった印刷ジョブ情報にそれを示すフラグを付加して、付加後のジョブ情報を対応するプリントデバイスに送信するようにし、プリンタ側でフラグを参照し受信した印刷ジョブ情報を破棄するようにしても良い。
【０１４４】
負荷分散処理により発生した実ジョブと複数の仮想ジョブの内、スケジュールアップを受けたジョブが実ジョブの場合には、ステップＳ１５０３からステップＳ１５１３に移行する。ステップ１５１３では、実ジョブ情報からすべての仮想ジョブ情報を取得し、ステップＳ１５１４においてすべての仮想ジョブを停止し、ステップＳ１５１１においてスケジュールアップを受け付けた実ジョブを対応するネットワークプリンタに転送する。
【０１４５】
一方。ステップＳ１５０２においてスケジュールアップを受けた印刷ジョブのプリントタイプが負荷分散印刷でなければ、ステップＳ１５１１に処理を移行し、そのままネットワークプリンタに転送される。
【０１４６】
なお、印刷ジョブ転送方法としては様々な方法を利用可能であり、独自に作成した送信出力ポートにスプールジョブを転送しても良いし、オペレーティングシステムに用意された送信出力ポートに対して印刷ジョブを転送させてもよい。
【０１４７】
この図２０の状態では、スケジュールアップ対象外のバックアップ印刷ジョブ情報を除くスケジュールアップ対象のバックアップ印刷ジョブ情報を登録順にスケジュールアップする。
【０１４８】
図１８に、基本プリントキューに対応する論理プリンタに対して、バックアッププリントキューに対応する論理プリンタを関連付けるための、設定画面を示す。この図１８は新規に論理プリンタを作成あるいは追加する際に表示されるものであるが、既に作成された論理プリンタの設定を変更する場合などに表示させるようにしても良い。
【０１４９】
１８０１は、プリンタ名を入力する入力欄である。キーボード等を介してユーザが任意に名前を指定することができる。ここに入力されるプリンタ名は、図１２のＳ１２０３で第１出力対象となるプリントデバイスに対応する。
【０１５０】
１８０２は、プリンタドライバ名を表示する表示欄である。「ドライバの選択」ボタンを選択することにより、ユーザが選択可能な複数のプリンタドライバのリストが表示され、そのリストから選択されたプリンタドライバの名前が表示欄１８０２に表示される。
【０１５１】
１８０６はプリンタドライバに関連付けるポートを選択する選択画面を表示させるための「ポートの選択」ボタンである。「ポートの選択」ボタン１８０６が選択されると、システムに登録されている複数のポートが選択可能な形態で提示される。
【０１５２】
１８０３はプリンタの出力方法を選択するための選択欄である。この選択欄において、出力方法として「負荷分散印刷」を指定することができる。
【０１５３】
１８０４は、１８０１、１８０６で設定された論理プリンタに対するバックアッププリンタ（例えば図１３のバックアッププリントキュー７０１Ａ、７０１Ｂに対応）のリストを表示する表示欄である。１８０５は、バックアッププリンタを設定するための「バックアッププリンタ設定」ボタンである。「バックアッププリンタ設定」ボタン１８０５が選択されると、バックアッププリンタとして設定可能なプリンタのリストが表示される。そして、そのリスト中から選択されたプリンタがバックアッププリンタとして設定され、バックアッププリンタリスト表示欄１８０４に表示される。「バックアッププリンタ設定」ボタン１８０５が選択された場合に、指定されたプリンタドライバにより特定されるプリンタモデルやプリンタ言語に互換性のあるプリンタのみをリスト表示すれば、適切なバックアッププリンタをユーザに効率よく選択させることができる。また図１８中の「プリンタオプション」中の「代行発生条件」の各欄では、どのような状態が発生した場合に代行印刷を行なうかを、指定することができる。
【０１５４】
このように、図１８に示す画面で設定された設定情報は、図９や、図１０や、図１１の情報の各項目に反映される。つまり、図１８に示す画面は見かけ上、論理プリンタ同士の関係を設定するための設定画面であるが、その設定画面に対する設定内容は結果としてプリントキュー同士の関係を設定するものとなる。従って、図１８は、基本プリントキューに対してバックアッププリントキューを対応付けるための設定画面と言い換えることができる。
【０１５５】
＜エラー発生時の処理＞
次に、図１９乃至図２１を用いて、プリントデバイスに何らかのエラーが起こった場合の処理について説明する。
【０１５６】
図１９は、プリントデバイスに印刷データを送信した後にプリントデバイスで印刷ができない状態が発生した場合の、プリントキューでの処理を示すフローチャートである。ここでの印刷ができない状態としては、例えばステップＳ１４０４において説明した（１）〜（４）が挙げられるが、無論これに限定されるものではない。
【０１５７】
ステップＳ１８０１では、プリントデバイスを監視してエラーが発生したか否か判定し、エラーが発生すると、ステップＳ１８０２に移行する。尚、ステップＳ１８０１ではエラーの発生を想定しているがこれに限定されるものではなく、印刷ができないことを余儀なくされる条件であればエラーに限らず様々な状態をステップＳ１８０２に移行する条件として適用できる。以下では「エラー」が発生した場合を例にして説明を行なう。
【０１５８】
次に、ステップＳ１８０２において、エラーが発生したプリントデバイスに対応するプリントキュー内の実ジョブ情報が代行状態となる。そして、その実ジョブ情報に含まれる仮想ジョブＩＤを参照して、その仮想ジョブＩＤに対応する、仮想ジョブ情報の停止状態を解除する(図２０において、実ジョブ情報９が代行状態となると、仮想ジョブ情報７´及び８´を送信待ち状態とする)。
【０１５９】
続いてプリントデバイスの復旧或いは代行先でのスケジュールアップを待つ。プリントデバイスにおける復帰は、ステップＳ１４０１において説明したデバイス復帰通知を認識すれば良い。
【０１６０】
ステップＳ１８０３でプリントデバイスが復旧していないと判定され、ステップＳ１８０４で、仮想ジョブ情報７´、８´のいずれかがスケジュールアップした場合には、ステップＳ１８０５に進み、仮想ジョブ情報のスケジュールアップ処理と実ジョブ情報９の削除処理を行う。この処理は、図１５におけるステップＳ１５０４からステップＳ１５１１の処理と基本的に同様である。図２１は、仮想ジョブ情報８´がスケジュールアップされ、実ジョブ情報９が削除される様子を示す図である。この時、同時に、対応する他の仮想ジョブ情報（図２１では仮想ジョブ情報７´、９´）を停止状態にする。また、ステップＳ１５０８と同様に実ジョブ情報８に対応する仮想ジョブ情報８´を停止状態にする。
【０１６１】
一方、仮想ジョブのスケジュールアップよりも早くステップＳ１８０３でプリントデバイスの復旧が検知された場合には、全ての仮想ジョブは停止状態に戻され、実ジョブ情報９の印刷処理は継続される。この時のプリンタキューの状態は図１７と同様である。
【０１６２】
そして、ステップＳ１４０１の処理によりプリンタデバイス内部での印刷出力の完了（ジョブ完了）が本情報処理装置によって検知されると、実ジョブ情報と共に、全ての対応する仮想ジョブが削除されて印刷処理が終了する。
【０１６３】
このように本実施形態では、アプリケーションが負荷分散プリンタに対する印刷指示を送ると、負荷分散設定の基本プリントキューに実ジョブ情報及び仮想ジョブ情報が、バックアッププリントキューに仮想ジョブ情報が作成され、これらのジョブ情報の中で一番早くスケジュールアップを受け付けたジョブ情報が印刷ジョブとしてプリントデバイスに転送される。これにより、複数のプリントデバイスの内で最も早く転送可能になったプリンタデバイスに印刷ジョブが転送されることになる。その結果、大量の印刷ジョブを複数のプリンタデバイスで効率的に処理することができ、印刷ジョブが存在している間は複数のプリンタデバイスがフルに稼動することができる。
【０１６４】
更に、プリンタデバイスへ印刷ジョブを送信した後で、印刷中断が発生した場合にも図１８のフローチャートが実行されるので、図２１の仮想ジョブ情報８´が実ジョブ情報８に変更することで代行印刷処理を行うことができ、図１２のＳ１２０３から処理をやり直す無駄な処理及び時間を削減することができる。結果として、ステップＳ１２０３から再度処理する場合に比べて、早期に代行処理を実現できる。
【０１６５】
更に、印刷中断が発生した場合にも図１８のフローチャートが実行されるので、当初のジョブ受付順に従って代行処理が行われる。言い換えれば代行時に図１２のＳ１２０３から処理をやり直す必要がないので、他のクライアントからの仮想ジョブ情報が仮想ジョブキューの後続して登録されていたとしても、その他の仮想ジョブ情報よりも優先してスケジュールアップを行なうことができる。一方、プリントデバイスの復旧が遅い場合には他のプリンタデバイスを用いてより早く印刷出力を得ることが可能となり、プリントデバイスが早く復旧した場合には印刷中断が発生したプリントデバイスに送信されていた印刷ジョブがそのまま印刷されるため、効率的な印刷を行うことが可能となる。
【０１６６】
［第２実施形態］
第１実施形態では、実ジョブ情報と仮想ジョブ情報とを明確に区別して説明してきた。しかし、特定の印刷装置に負荷が偏るという問題を解決するために、複数の印刷装置を負荷を分散して効率よく利用し、印刷ジョブを印刷装置に送信した後で、その印刷装置でエラーが発生した場合を考慮すると言う点では第１実施形態には限定されない。
【０１６７】
つまり、複数の印刷装置に夫々対応した複数のプリントキューを情報処理装置に備えさせ、複数のプリントキューに、直接的或いは間接的に印刷データとリンク可能な情報を含むジョブ情報を登録し、プリントキューの空きに応じて最初にスケジュールアップしたジョブ情報以外のジョブ情報をスケジュールアップの対象外にし、スケジュールアップしたジョブ情報に基づく印刷ジョブが出力された印刷装置において印刷中断が発生した場合にはスケジュールアップの対象外となっていたジョブ情報をスケジュールアップの対象とするようにしても良い。これは第１実施形態で説明してきた図１乃至６Ａ、６Ｂにおいて説明したプリントシステムのソフトウェア構成で実現できる。
【０１６８】
具体的に図１３のように３つのプリントッキュー７０１、７０１Ａ、７０１Ａを用いた場合について説明する。まず、負荷分散印刷としてユーザの指定した論理プリンタに対応したプリントキュー７０１に図１０と同様の印刷ジョブ情報を登録する。そして、登録が行われたプリントキュー７０１のプリントキュー情報（図９）中のバックアッププリンタ名で特定される７０１Ａ、７０１Ｂのプリントキューに対して図１０と同様の印刷ジョブ情報（図２２）を登録する。さらに、バックアッププリンタ名で特定されるプリントキューにも関連するプリントキューに登録されたジョブ情報のジョブＩＤが設定される。
【０１６９】
例えばプリントキュー７０１Ａに登録される印刷ジョブ情報を図２２に示す。ドキュメント名２２０２、ジョブＩＤ、プリントタイプ２２０４、実行タイプ２２０７、スプールファイル名については図１０と同様なので詳しい説明は省略する。２２０５、２２０６は、プリントキュー７０１Ａには図９に基づき、プリントキュー７０１及び７０１Ｂが関連付けら得ているので、ジョブＩＤ１（７０１）とジョブＩＤ２（７０１Ｂ）とが設定されている。
【０１７０】
なお、留意されたい点は、第２実施形態ではバックアッププリンタ名は関連プリンタ名として定義でき、登録される印刷ジョブ情報も実ジョブ情報と仮想ジョブ情報とに区別することなくジョブ情報とすることができる。そして、各々の印刷ジョブ情報には自らの印刷ジョブのジョブＩＤに加えて、関連するプリントキューに登録された印刷ジョブのジョブＩＤが設定される。このようなジョブ情報の登録を基づき、どのようにして図１２に相当するフローチャートを実行するかについて以下説明する。
【０１７１】
まず、ステップＳ１２０１〜１２０２においては図１２で説明した通りとする。但しステップＳ１２０１において受け付けられた印刷ジョブ情報には登録時刻などの登録順番の属性が付されており、所定のプリントキューへ登録された印刷ジョブ情報はこの登録順番にスケジュールアップされることとする。
【０１７２】
ステップＳ１２０４では実ジョブキュー（プリントキュー７０１）への登録を行い仮想ジョブキューへの登録を省略する。ステップＳ１２０５〜１２０８における仮想ジョブ情報の登録を関連するプリンタ名で特定されるプリントキュー（例えばプリントキュー７０１Ａ、７０１Ｂ）へ印刷ジョブ情報を登録する。そして、登録された各印刷ジョブ情報に対してステップＳ１２１０の処理を実行する。この際にも図１４のアクション発生の監視処理は平行して実行されているものとする。
【０１７３】
そして、図１４のステップＳ１４０２でプリントキューへの登録順に従ってスケジュールアップが行われた何れかの印刷ジョブ情報を監視し、図１５のフローチャートへ移行する。例えば、ステップＳ１２０１でプリントキュー７０１に登録された印刷ジョブ情報と負荷分散印刷で関連付けられたプリントキュー７０１Ａに登録されたジョブ情報がスケジュールアップしたことを想定して以下の説明を行う。
【０１７４】
図１５のステップＳ１５０１、１５０２では同様の処理を実行し、ステップＳ１５０５へ移行する。ステップＳ１５０３、１５０４の処理は省略する。
【０１７５】
ステップＳ１５０５は、関連する印刷ジョブのジョブＩＤを取得する処理に置きかえることができる。
【０１７６】
そして、ステップＳ１５０６では、ステップＳ１５０５で取得された関連する印刷ジョブのＩＤ２２０５、２２０６に対応する印刷ジョブ情報の停止させ、最初にスケジュールアップしたジョブ情報以外のジョブ情報をスケジュールアップの対象外にする。この結果プリントキュー７０１と７０１Ｂに登録された印刷ジョブ情報に基づく印刷ジョブは印刷装置へ出力されない。
【０１７７】
次に、第２の実施の形態における図１９のフローチャートの処理について説明する。
【０１７８】
まず、ステップＳ１８０１で印刷の中断が検知されると、図２２において特定される、関連するジョブＩＤ２２０５、２２０６の停止を解除させ、スケジュールアップの対象外となっていたジョブ情報をスケジュールアップの対象とする。
【０１７９】
そして、ステップＳ１８０３で、印刷が中断されたプリントデバイスが復旧したことが検知されれば、再び印刷ジョブのＩＤ２２０５、２２０６に対応する印刷ジョブ情報の停止させ、自印刷ジョブ情報に基づく印刷ジョブの印刷を所定の続きの頁から再開する。再開後印刷出力が終了した場合には複数の印刷ジョブ情報は削除される。
【０１８０】
一方、停止を解除した関連する印刷ジョブＩＤのジョブ情報の何れかがスケジュールアップしたことが確認されれば、スケジュールアップした印刷ジョブ情報中に設定される自らを除く関連した印刷ジョブＩＤの印刷ジョブ情報をスケジュールアップ対象外とする。そして、スケジュールアップが行われた印刷ジョブ情報に基づく印刷ジョブの印刷装置への出力が完了すると全ての印刷ジョブ情報の削除が行われる。
【０１８１】
尚、上の説明では、スケジュールアップしたジョブ情報以外のジョブ情報をスケジュールアップの対象外にしたり、印刷中断発生で再度スケジュールアップ対象にしたりする処理を図２２のジョブ情報に基づき行うように説明してきたがこれに限定されるものではない。例えば、第１実施形態における実ジョブ情報のスケジュールアップが仮想ジョブ情報のそれよりも優先されるという規則を除き、且つ、それを前提に第１実施形態の仕組みを実行することによっても実現される。
【０１８２】
以上述べてきたように、第１実施形態における図１乃至６と同じ仕組みで、且つ、図１２、１４、１５、１７のフローチャートノ各ステップの省略及び変更することによっても、複数の印刷装置を負荷を分散して効率よく利用し、印刷ジョブを印刷装置に送信した後で、その印刷装置でエラーが発生した場合でも負荷分散印刷を維持した仕組みを実現することができる。
【０１８３】
また関連する印刷ジョブ情報を削除することなく、登録順番を維持したまま停止させたり停止を解除するようにするので、関連する複数の印刷ジョブ情報の何れかに基づく印刷ジョブを印刷装置に送信した後に印刷が中断したとしても、印刷順序を確保し且つ負荷分散印刷を維持し且つ代行印刷処理を達成することができる。
【０１８４】
（他の実施形態）
以上、本発明の実施形態について詳述したが、本発明は、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
【０１８５】
なお、本発明は、前述した実施形態の機能を実現するソフトウェアのプログラムを、システムあるいは装置に直接あるいは遠隔から供給し、そのシステムあるいは装置のコンピュータが供給されたプログラムコードを読み出して実行することによっても達成される場合を含む。その場合、プログラムの機能を有していれば、形態は、プログラムである必要はない。
【０１８６】
従って、本発明の機能処理をコンピュータで実現するために、コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明のクレームでは、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。
【０１８７】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳに供給するスクリプトデータ等、プログラムの形態を問わない。
【０１８８】
プログラムを供給するための記録媒体としては、例えば、フロッピー（登録商標）ディスク、ハードディスク、光ディスク、光磁気ディスク、ＭＯ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−Ｒ）などがある。
【０１８９】
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続し、ホームページから本発明のコンピュータプログラムそのもの、もしくは圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードすることによっても供給できる。また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるＷＷＷサーバも、本発明のクレームに含まれるものである。
【０１９０】
また、本発明のプログラムを暗号化してＣＤ−ＲＯＭ等の記憶媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせ、その鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される他、そのプログラムの指示に基づき、コンピュータ上で稼動しているＯＳなどが、実際の処理の一部または全部を行い、その処理によっても前述した実施形態の機能が実現され得る。
【０１９１】
更に、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によっても前述した実施形態の機能が実現される。
【図面の簡単な説明】
【０１９２】
【図１】本発明の実施形態としてのプリントシステムの全体構成を示すブロック図である。
【図２】サーバまたはクライアントのハードウェア構成を説明するブロック図である。
【図３】図２に示したＲＡＭ２０２のメモリマップの一例を示す図である。
【図４】図２に示したＦＤ２０４のメモリマップの一例を示す図である。
【図５】図２に示したＦＤドライブ２０３に対して挿入されるＦＤ２０４との関係を示す図である。
【図６Ａ】プリントシステムのソフトウェア構成の１例を示す図である。
【図６Ｂ】プリントシステムのソフトウェア構成の、他の例を示す図である。
【図７】負荷分散印刷時の印刷ジョブの流れを示す図である。
【図８】プリントキューと実ジョブキュー及び仮想ジョブキューの関連を表す図である。
【図９】プリントキュー情報の内容を示す図である。
【図１０】実ジョブ情報の内容を示す図である。
【図１１】仮想ジョブ情報の内容を示す図である。
【図１２】印刷ジョブを受け付けてから、仮想ジョブを作成する処理の流れを示すフローチャートである。
【図１３】実ジョブ、仮想ジョブと実ジョブキュー、仮想ジョブキュー、プリントキュー、バックアッププリントキューの関連を示す図である。
【図１４】スケジュールアップの処理を示すフローチャートである。
【図１５】スケジュールアップから印刷するまでの処理を示すフローチャートである。
【図１６】実ジョブ、仮想ジョブと実ジョブキュー、仮想ジョブキュー、プリントキュー、バックアッププリントキューの関連を示す図である。
【図１７】実ジョブ、実ジョブキュー、仮想ジョブキュー、プリントキュー、バックアッププリントキューの関連を示す図である。
【図１８】プリンタに関する情報を設定するための画面の１例を示す図である。
【図１９】プリントデバイスに印刷データを送信した後にプリントデバイスで印刷中断が発生した場合の処理を示すフローチャートである。
【図２０】プリントデバイスで印刷中断が発生した場合の、印刷ジョブの処理方法を説明するための概念図である。
【図２１】プリントデバイスで印刷中断が発生した場合の、印刷ジョブの処理方法を説明するための概念図である。
【図２２】所定のプリントキューに登録された印刷ジョブ情報に関連したジョブ情報の内容を示す図である。
【図１】
2005174210.tif 000003
【図２】
2005174210.tif 000004
【図３】
2005174210.tif 000005
【図４】
2005174210.tif 000006
【図５】
2005174210.tif 000007
【図６Ａ】
2005174210.tif 000008
【図６Ｂ】
2005174210.tif 000009
【図７】
2005174210.tif 000010
【図８】
2005174210.tif 000011
【図９】
2005174210.tif 000012
【図１０】
2005174210.tif 000013
【図１１】
2005174210.tif 000014
【図１２】
2005174210.tif 000015
【図１３】
2005174210.tif 000016
【図１４】
2005174210.tif 000017
【図１５】
2005174210.tif 000018
【図１６】
2005174210.tif 000019
【図１７】
2005174210.tif 000020
【図１８】
2005174210.tif 000021
【図１９】
2005174210.tif 000022
【図２０】
2005174210.tif 000023
【図２１】
2005174210.tif 000024
【図２２】
2005174210.tif 000025