(57)【要約】      （修正有）【課題】プリントサブシステムのデスプーリングバックプレーンおよびプリントサブシステムのデスプーリングバックプレーンを用いた印刷ジョブ管理方法を提供する。【解決手段】プリントサブシステムのデスプーリングバックプレーン入力インターフェースにて印刷ジョブを受け取るステップと、デスプーリングバックプレーンのプラグインを呼び出すステップと、印刷ジョブを、目的のプリンタデバイスと目的のプリンタデバイスに関連付けられた言語フォーマットとには通常依存しない内部表現（ＩＲドキュメント）へと変換するステップと、ＩＲドキュメントをプラグインに応じて処理するステップと、処理済みＩＲドキュメントを処理済み印刷ジョブへと変換するステップと、処理済み印刷ジョブをデスプーリングバックプレーン出力インターフェースにて供給するステップと、を含む、プリントサブシステムのデスプーリングバックプレーンを用いた印刷ジョブ管理方法。【選択図】図２
2005196751.tif 000002
【特許請求の範囲】
【請求項１】
プリントサブシステムのデスプーリングバックプレーン入力インターフェースにて印刷ジョブを受け取るステップと、
デスプーリングバックプレーンのプラグインを呼び出すステップと、
印刷ジョブを内部表現（ＩＲ）ドキュメントへと変換するステップと、
上記ＩＲドキュメントをプラグインに応じて処理するステップと、
処理済みＩＲドキュメントを処理済み印刷ジョブへと変換するステップと、
デスプーリングバックプレーン出力インターフェースにて処理済み印刷ジョブを供給するステップと、
を含む、プリントサブシステムのデスプーリングバックプレーンを用いた印刷ジョブ管理方法。
【請求項２】
デスプーリングバックプレーンのプラグインを呼び出す上記ステップは、
ユーザが選択したプラグインと、
プリンタドライバ、プリンタモデル、プリンタ構成、プリンタの条件、ユーザ、管理用グループ分け、ドキュメント内容、およびドキュメントタイプなどの基準に応じた、あらかじめ決定されているプラグインと、
他のプラグインから呼び出されたプラグインと、
を含むグループから選ばれたプラグインを呼び出すステップである、請求項１に記載の方法。
【請求項３】
印刷ジョブをＩＲドキュメントへと変換する上記ステップは、印刷ジョブを、目的のプリンタデバイスと目的のプリンタデバイスに関連付けられた言語フォーマットとには依存しないＩＲドキュメントへと変換するステップである、請求項１に記載の方法。
【請求項４】
ＩＲドキュメントをプラグインに応じて処理するステップは、
印刷ジョブのＩＲドキュメントへの翻訳と、
印刷ジョブデータの分析、変更と、
印刷ジョブの制御の変更と、
印刷ジョブに関するプリントサブシステム外部情報の収集と、
印刷ジョブに関するプリントサブシステム外部情報の生成と、
印刷ジョブに関するプリントサブシステム外部情報の設定と、
ＩＲドキュメントの再アセンブルと、
を含むグループより選択される処理を実行するステップである、請求項３に記載の方法。
【請求項５】
デスプーリングバックプレーンのプラグインを呼び出す上記ステップは、複数のプラグインを呼び出すステップであり、かつ、ＩＲドキュメントをプラグインに応じて処理する上記ステップは、
ＩＲドキュメントの並行処理と、
ＩＲドキュメントの逐次処理と、
並行処理と逐次処理との組み合わせを用いたＩＲドキュメントの処理と、
を含むグループより選択される処理を実行するために、複数のプラグインを用いるステップを含む、請求項４に記載の方法。
【請求項６】
ＩＲドキュメントを再アセンブルするステップは、複数の処理済みＩＲドキュメント間の衝突を取り除くステップを含み、かつ、処理済みＩＲドキュメントを処理済み印刷ジョブへと変換するステップは、複数のＩＲドキュメントを処理済み印刷ジョブへと変換するステップを含む、請求項５に記載の方法。
【請求項７】
プリントサブシステムのデスプーリングバックプレーン入力インターフェースにて印刷ジョブを受け取るステップは、第一のプリンタデバイスタイプに関連付けられた第一の言語フォーマットにて印刷ジョブを受け取るステップを含み、
印刷ジョブに関する上記プリントサブシステム外部情報を設定するステップは、第二のプリンタデバイスタイプを選択するステップを含み、かつ、
処理済みＩＲドキュメントを処理済み印刷ジョブへと変換するステップは、上記ＩＲドキュメントを、第二のプリンタデバイスタイプに関連付けられた第二の言語フォーマットにて処理済み印刷ジョブへと変換するステップを含む、請求項４に記載の方法。
【請求項８】
印刷ジョブに関する上記プリントサブシステム外部情報を収集するステップは、接続されている印刷デバイスの利用可能性、現在印刷中の印刷ジョブ、待機中の印刷ジョブ、完了した印刷ジョブ、失敗した印刷ジョブ、プリンタ性能、プリンタの設置場所、およびプリンタの機能、を含むグループより選択されるプリンタの条件を監視するステップを含む、請求項４に記載の方法。
【請求項９】
プリンタの条件を監視するステップは、
プリントサブシステムのスプーラ、プリントサブシステムのポートマネージャ、プリンタマネージャ、印刷サービス、およびプリンタ、を含むグループより選択されるノードに問い合わせするステップと、
プリンタの条件情報をキャッシュに保持するステップと、
を含む、請求項８に記載の方法。
【請求項１０】
印刷ジョブをＩＲドキュメントへと変換する上記ステップは、該ＩＲドキュメントを共有データとして格納するステップを含み、ＩＲドキュメントをプラグインに応じて処理する上記ステップは、共有データからアクセスされたＩＲドキュメントを処理するステップを含む、請求項１に記載の方法。
【請求項１１】
ＩＲドキュメントを翻訳するステップは、
スプール／ラスタ画像プロセッサ（ＲＩＰ）のフッターおよびヘッダーを解析するステップと、
印刷ジョブの制御ヘッダーを解析するステップと、
ラスタ、画像、およびページ記述言語（ＰＤＬ）データを含むグループより選択される言語データを解析するステップと、
を含む、請求項４に記載の方法。
【請求項１２】
印刷ジョブ制御ヘッダーを解析する上記ステップは、
印刷ジョブ言語（ＰＪＬ）、およびジョブ定義フォーマット（ＪＤＦ）、のプラグインを含むグループから選択される、複数の印刷ジョブ制御ヘッダープラグインを呼び出すステップと、
印刷ジョブ制御ヘッダーデータを認識する、印刷ジョブ制御ヘッダープラグインを用いるステップと、
を含む、請求項１１に記載の方法。
【請求項１３】
言語データを解析する上記ステップは、
ラスタ、画像、プリンタ制御言語（ＰＣＬ）、ポータブルドキュメントフォーマット（ＰＤＦ）、ポストスクリプト（ＰＳ）、ＰＣＬ  ＸＬ、ＨＰ  ＧＬ／２、ＩＰＤＳ、Escape  Ｐ、ＳＣＳ、およびＴＩＦＦ、のプラグインを含むグループより選択される、複数の言語プラグインを呼び出すステップと、
言語データを認識する言語プラグインを用いるステップと、
を含む、請求項１１に記載の方法。
【請求項１４】
ＩＲドキュメントを分析するステップは、ジョブ課金、プリンタプーリング、ジョブ分割、アクセス制御、セキュリティ、内容のフィルタリング、リソースのダウンロード、圧縮、再フォーマット、および言語翻訳、を含むグループより選択される動作を実行するステップを含む、請求項４に記載の方法。
【請求項１５】
印刷ジョブに関するプリントサブシステム外部情報を収集する上記ステップは、プリントサブシステムのホスト、プリンタ、プリンタデバイスマネージャ、およびプリントサービス、を含むグループより選択される情報を収集するステップを含む、請求項４に記載の方法。
【請求項１６】
デスプーリングバックプレーンのプラグインのライブラリと、
印刷ジョブを受け取るためのインターフェースを有し、印刷ジョブを内部表現（ＩＲ）ドキュメントへと変換し、該ＩＲドキュメントをインターフェースにて供給する制御部と、
上記ライブラリからのプラグインを呼び出すためのインターフェースと、ＩＲドキュメントを受け取るためのインターフェースとを有し、プラグインに応じてＩＲドキュメントを処理し、処理済みＩＲドキュメントを処理済み印刷ジョブへと変換し、該処理済み印刷ジョブをインターフェースにて供給する、構成要素プロセッサと、
を含む、プリントサブシステムのデスプーリングバックプレーン。
【請求項１７】
上記構成要素プロセッサは、
ユーザが選択したプラグインと、
プリンタドライバ、プリンタモデル、プリンタ構成、プリンタの条件、ユーザ、管理用グループ分け、ドキュメント内容、およびドキュメントタイプなどの基準に応じた、あらかじめ決定されているプラグインと、
他のプラグインから呼び出されたプラグインと、
を含むグループから選択されるプラグインを呼び出す、請求項１６に記載のバックプレーン。
【請求項１８】
上記制御部は、印刷ジョブを、目的のプリンタデバイスと目的のプリンタデバイスに関連付けられた言語フォーマットとには依存しないＩＲドキュメントへと変換する、請求項１６に記載のバックプレーン。
【請求項１９】
上記構成要素プロセッサは、
印刷ジョブのＩＲドキュメントへの翻訳と、
印刷ジョブデータの分析、変更と、
印刷ジョブの制御の変更と、
印刷ジョブに関するプリントサブシステム外部情報の収集と、
印刷ジョブに関するプリントサブシステム外部情報の生成と、
印刷ジョブに関するプリントサブシステム外部情報の設定と、
ＩＲドキュメントの再アセンブルと、
を含むグループより選択される処理を実行する、請求項１８に記載のバックプレーン。
【請求項２０】
上記構成要素プロセッサは、複数のプラグインを呼び出し、
ＩＲドキュメントの並行処理と、
ＩＲドキュメントの逐次処理と、
並行処理と逐次処理との組み合わせを用いたＩＲドキュメントの処理と、
を含むグループより選択される動作を実行するために複数のプラグインを用いる、請求項１９に記載のバックプレーン。
【請求項２１】
上記構成要素プロセッサは、複数の処理済みＩＲドキュメント間の衝突を取り除くために、ＩＲドキュメントを再アセンブルし、複数のＩＲドキュメントを処理済み印刷ジョブへと変換する、請求項２０に記載のバックプレーン。
【請求項２２】
上記制御部は、第一のプリンタデバイスタイプに関連付けられた第一の言語フォーマットにて印刷ジョブを受け取り、かつ、
上記構成要素プロセッサは、第二のプリンタデバイスタイプを選択し、第二のプリンタデバイスタイプに関連付けられた第二の言語フォーマットにて、ＩＲドキュメントを処理済み印刷ジョブへと変換するために、印刷ジョブに関する上記プリントサブシステム外部情報を用いる、請求項１９に記載のバックプレーン。
【請求項２３】
上記構成要素プロセッサは、印刷ジョブに関するプリントサブシステム外部情報を、接続されている印刷デバイスの利用可能性、現在印刷中の印刷ジョブ、待機中の印刷ジョブ、完了した印刷ジョブ、失敗した印刷ジョブ、プリンタの性能、消耗品、プリンタの設置場所、およびプリンタの機能、を含むグループより選択されるプリンタの条件を監視することにより集める、請求項１９に記載のバックプレーン。
【請求項２４】
上記構成要素プロセッサは、
プリントサブシステムのスプーラ、プリントサブシステムのポートマネージャ、プリンタマネージャ、印刷サービス、およびプリンタ、を含むグループより選択されるノードに問い合わせるステップと、
プリンタの条件情報をキャッシュに格納するステップと、
によって、プリンタの条件に含まれているものを監視する、請求項２３に記載のバックプレーン。
【請求項２５】
共有データメモリをさらに含み、
上記構成要素プロセッサは、ＩＲドキュメントを受け取り、該ＩＲドキュメントを共有データメモリに格納し、処理する際に共有データメモリから該ＩＲドキュメントにアクセスする、請求項１６に記載のバックプレーン。
【請求項２６】
上記構成要素プロセッサは、印刷ジョブを、
スプール／ラスタ画像プロセッサ（ＲＩＰ）のフッターおよびヘッダーを解析するステップと、
印刷ジョブの制御ヘッダーを解析するステップと、
ラスタ、画像およびページ記述言語（ＰＤＬ）データを含むグループより選択される言語データを解析するステップと、
により、ＩＲドキュメントへと翻訳する、請求項１９に記載のバックプレーン。
【請求項２７】
上記構成要素プロセッサは、
印刷ジョブ言語（ＰＪＬ）およびジョブ定義フォーマット（ＪＤＦ）を含むグループから選択される、複数の印刷ジョブ制御ヘッダープラグインを呼び出すステップと、
印刷ジョブ制御ヘッダーデータを認識する、印刷ジョブ制御ヘッダープラグインを用いるステップと、
により、印刷ジョブ制御ヘッダーを解析する、請求項２６に記載のバックプレーン。
【請求項２８】
上記構成要素プロセッサは、
ラスタ、画像、プリンタ制御言語（ＰＣＬ）、ポータブルドキュメントフォーマット（ＰＤＦ）、ポストスクリプト（ＰＳ）、ＰＣＬ  ＸＬ、ＨＰ  ＧＬ／２、ＩＰＤＳ、Escape  Ｐ、ＳＣＳ、およびＴＩＦＦ、のプラグインを含むグループより選択される、複数の言語プラグインを呼び出すステップと、
言語データを認識する言語プラグインを用いるステップと、
により、言語データを解析する、請求項２６に記載のバックプレーン。
【請求項２９】
上記構成要素プロセッサは、ジョブ課金、ジョブ制御、プリンタプーリング、ジョブ分割、アクセス制御、セキュリティ、内容のフィルタリング、リソースのダウンロード、圧縮、再フォーマット、および言語翻訳、含むグループより選択される動作を実行するステップにより、ＩＲドキュメントを分析する、請求項１９に記載のバックプレーン。
【請求項３０】
上記構成要素プロセッサは、プリントサブシステムのホスト、プリンタ、プリントサービス、およびプリンタデバイスマネージャを含むグループより選択される情報を収集するステップにより、印刷ジョブに関するプリントサブシステム外部情報を収集する、請求項１９に記載のバックプレーン。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して、デジタル印刷処理に関するものであり、さらに特定的には、印刷ジョブを管理するための、プリントサブシステムのデスプーリングバックプレーン（a printer subsystem despooling backplane）に関するものである。
【背景技術】
【０００２】
図１ａは、プリントサブシステムの印刷プロセッサ（従来技術）を示す図である。例えば、このような印刷プロセッサは、Microsoft Windows（登録商標、マイクロソフト  ウィンドウズ）ファミリーのオペレーティングシステムにおいて、デスプーリング（despooling）の処理をカスタマイズするのに用いられることがある。このような方法では、カスタム印刷プロセッサ（the custom print processor）は、ポートマネージャへの出力および制御のインターフェースと同様、印刷スプーラからの入力および制御のインターフェースと互換性がある。カスタム印刷プロセッサは、システム（デフォルト）印刷プロセッサに追加されて、あるいはそれに取って代わって、ある動作を実行するのに用いられることもある。プール印刷（pool printing）の動作の一例では、目的の印刷が実行されなければ、印刷ジョブを互換性のあるプリンタへと径路変更する。Sharp EZ Cluster（登録商標、シャープ  イージークラスター）は、カスタム印刷プロセッサを用いることにより、プリンタのプーリング（pooling）を支援する製品の一例である。
【０００３】
しかしこの方法は、カスタマイズされた動作はカスタム印刷プロセッサにおいて、ハードコード化（オブジェクトコードにコンパイル）されるという点で不利である。したがって、１つの（単一の）あらかじめプログラムされた処理しか実行できない。上記方法はまた、複数のカスタムデスプーリング処理（multiple custom despooling processes）を結合することもできず、単一のカスタム印刷プロセッサのみを指定することしかできない。つまり、プロセッサを連鎖させることができない。
【０００４】
図１ｂは、プリントサブシステムのカスタムポートマネージャ（custom port manager）（従来技術）を示す図である。ポートマネージャは、例えば、Microsoft Windows（登録商標、マイクロソフト  ウィンドウズ）ファミリーのオペレーティングシステムなどにおいて、デスプーリング処理をカスタマイズするのに用いられる。このような方法では、カスタムポートマネージャは、印刷プロセッサからの入力および制御のインターフェースと互換性がある。カスタムポートマネージャは、通常ポートマネージャに関連付けられている動作に追加されて、あるいはそれに取って代わって、ある動作を実行する。そのような動作の一例では、複数の同じジョブを、元の印刷デバイスに加えて、１つもしくはそれ以上の印刷デバイスに分割する。Ricoh Smart Net Monitor（登録商標、リコー  スマートネットモニター）は、ポートマネージャの構成要素であるカスタムポートマネージャを用いて複製分割（copy splitting）を支援する製品の一例である。
【０００５】
しかしこの方法は、カスタマイズされた動作はポートマネージャにおいて、ハードコード化（オブジェクトコードにコンパイル）され、そのために、あらかじめプログラムされた単一の処理しか実行できないという点で不利である。上記方法はまた、複数のカスタムデスプーリング処理を結合することもできない。1つのカスタムポートマネージャのみを指定することしかできない（連結させることができない）。
【０００６】
図１ｃは、プリントサブシステムの印刷補助プロセス（print assist process）（従来技術）を示す図である。印刷補助は、デスプーリング処理をカスタマイズするのに用いられることがある。また印刷補助は、プリンタドライバとポートマネージャとの間のプリントサブシステムに追加されるいずれのプロセスにもなり得る。さらに印刷補助は、上記２つの構成要素間にある印刷データストリームを遮断する（intercept）することができる。例えば、印刷補助は、印刷プロセッサおよびポートマネージャの入出力インターフェースを呼び出す命令（the calling）にリンク付けすることによって、データストリームを遮断することがある。次に、印刷補助は、印刷データストリームに対してある追加的な動作を実行する。そのような動作の一例としては、印刷ストリームの変更が挙げられる。この変更は、まだ指定されていなかった、あるいは、印刷ジョブがプリンタドライバによって生成された時点ではまだサポートされていなかった、追加の印刷オプションを指定するためのものである。
【０００７】
米国特許Ｎｏ．５，９９５，７２３（発明の名称；ネットワーク印刷システムにおける、ドキュメント／ジョブ属性を変更するためのクライアントサブシステム（CLIENT SUBSYSTEM FOR CHANGING DOCUMENT/JOB ATTRIBUTES IN A NETWORK PRINTING SYSTEM））に、このようなシステムが開示されている。しかしこの方法は、カスタマイズされた動作は印刷補助へとハードコード化され、そのために、あらかじめプログラムされた単一の処理しか実行できないという点で不利である。たとえ、印刷補助プログラムが連結可能だとしても、演算は順序に拘束されてしまうであろう。例えば、第一の印刷補助が印刷ジョブを、例えば暗号を用いて変更したとする。そうすると、第二の印刷補助は、それを解析することができなくなる。また、たとえ複数の印刷補助が連結されるとしても、それらは、印刷データを解析する、などといった、共通の処理を共有していることの利点を活かすことなく、その共通の処理を繰り返すだけであろう。
【０００８】
図１ｄは、連鎖印刷プロセッサ（chained print processors）（従来技術）を用いたプリントサブシステムを示す図である。このような方法においては、２つのカスタム印刷プロセッサは、クライアントサーバ型のプリントサブシステム（a client and server print subsystem）を用いて連結されることになる。この方法では、印刷ジョブは、クライアントで生成され、カスタム印刷プロセッサを経由する。次に、この印刷ジョブは、クライアントのポートマネージャから、例えばMicrosoft Windows（登録商標、マイクロソフト  ウィンドウズ）ファミリーのオペレーティングシステムにおけるネットワークプリンタなどの、印刷サーバへとデスプールされる（despooled）。印刷サーバでは、クライアントからスプールされた印刷ジョブは第二のカスタム印刷プロセッサを経由する。クライアントおよびサーバのカスタム印刷プロセッサは、したがって、システム（デフォルト）印刷プロセッサに追加されて、あるいはそれに取って代わって、動作を実行する。そのような動作の一例としては、クライアント側のカスタム印刷プロセッサが複数のネットワークプリンタへ複製分割を行うなどが挙げられる。このとき各ネットワークプリンタはカスタム印刷プロセッサをそれぞれ有している。もう１つ例を挙げると、サーバ側のカスタム印刷プロセッサは、ジョブ課金（job accounting）などのタスクを追加で実行してもよい。Sharp EZ Cluster（登録商標、シャープ  イージークラスター）およびEquitrac PAS（登録商標、エクイトラック  ピーエーエス）を一緒に用いると、クライアント側のカスタム印刷プロセッサ（EZ Cluster（登録商標、イージークラスター））とサーバ側のカスタム印刷プロセッサ（PAS（登録商標、ピーエーエス））とを結合したシステムの一例となり得る。
【０００９】
しかしこの方法は、カスタマイズされた動作は、クライアント側およびサーバ側のカスタム印刷プロセッサへハードコード化され、そのために、あらかじめプログラムされた単一の処理しか実行できないという点でなお不利である。カスタマイズされた動作を２つしか結合できない。しかも、演算は順序に拘束されてしまうであろう。２つのカスタム印刷プロセッサは、印刷データの解析など、共通の処理を繰り返すなどして、非効率的なように思われる。このシステムはネットワークプリンタに限定され、ローカルまたはリモートプリンタをサポートしていない。
【００１０】
図１ｅは、印刷補助（従来技術）を含むプリントサブシステムを示す図である。欧州特許Ｎｏ．ＥＰ１１００００２  Ａ２（発明の名称；プリンタドライバフィルターおよびその印刷方法（A PRINTER DRIVER FILTER AND METHOD OF PRINTING THE SAME））に、印刷補助および印刷フィルターの収集（collection）からなるシステムが開示されている。印刷ジョブがプリンタドライバにより生成されると、印刷補助は、この印刷ジョブを遮断する。各印刷フィルターは、プリンタドライバによってサポートされていないであろう印刷処理をサポートするために、その印刷ジョブを変更する手段を実施する、プログラミング可能なスクリプトである。印刷ジョブが印刷補助によって遮断されると、印刷補助は、１つもしくはそれ以上の印刷フィルターを選択するためのユーザインターフェース（ＵＩ）を表示する。ユーザが選択したのち、印刷補助は、選択された印刷フィルター一つ一つをその印刷ジョブに対して実行する。
【００１１】
この方法では、カスタマイズされた動作を制限なく実行することが可能であるが、それでも印刷ジョブそのものを変更する動作は制限されるという点でなお不利である。例えば、フィルターはジョブ課金、ジョブ分割、プリンタプーリング（printer pooling）などの他の処理をサポートすることができないし、言語の構文が既に知られている印刷ジョブに対してしか、変更をサポートすることができない。印刷ジョブの解析などの、共通の処理を全部繰り返すような、複数のフィルターのアプリケーションは非効率的である。またこの複数のフィルターのアプリケーションは、順序に拘束されてしまい、暗号処理を適用するあるフィルターは、次に続くフィルターの、変更された印刷ジョブを解析する機能に何らかの影響を与えることもある。
【００１２】
もし、印刷ジョブをカスタマイズするための手段を、ハードコード化されたプログラムに依存しないように発展させることができれば有利である。
【００１３】
もし、複数の依存しないカスタマイズ処理のアプリケーションが、順序に拘束されず、かつ印刷ジョブの言語フォーマットにも依存しないのであれば有利である。
【００１４】
もし、上述の複数の依存しないカスタマイズ処理が、単一の解析処理に応じて実行されれば有利である。
【００１５】
もし、上述のカスタマイズするための手段を、印刷ジョブマネージメントと直接あまり関係がない処理（例えば、数少ないが例を挙げると、課金、セキュリティ、およびジョブ分割などの処理）をサポートするのに用いることができれば有利である。
【発明の開示】
【００１６】
（発明の概要）
本発明は、ジョブ変更、ジョブ課金、ジョブ制御、およびエラー回復などの、カスタムデスプーリング処理を動的に構成すること（dynamically configuring custom despooling processes）によって、１回のカスタマイズに制限されること、あるいは複数のカスタマイズ処理によって衝突することなく、上述の各課題を解決する。また、本発明は、デスプーリングバックプレーンを用いて、複数のカスタムデスプーリング処理を、その実行前もしくは実行中に、プリントサブシステムへと動的に構成する。この方法により、デスプーリング処理のどの段階においても、インストールされている画像形成手段（プリンタ）を再構築あるいは再インストールすることなくカスタム変更を実行することが可能となる。
【００１７】
ここで、プリントサブシステムのデスプーリングバックプレーン用いて、印刷ジョブを管理する方法を開示する。この方法は、プリントサブシステムのデスプーリングバックプレーン入力インターフェースにて印刷ジョブを受け取るステップと、デスプーリングバックプレーンのプラグインを呼び出すステップと、上記印刷ジョブを、目的のプリンタデバイスと目的のプリンタデバイスに関連付けられた言語フォーマットとには通常依存しない内部表現（ＩＲ；an internal representation）ドキュメントへと変換するステップと、ＩＲドキュメントをプラグインに応じて処理するステップと、処理済みＩＲドキュメントを処理済み印刷ジョブへと変換するステップと、上記処理済み印刷ジョブをデスプーリングバックプレーン出力インターフェースにて供給するステップと、を含む。
【００１８】
呼び出されるプラグインは、ユーザが選択したプラグインでもよいし、プリンタドライバ、プリンタモデル、プリンタ構成、プリンタの条件、ユーザ、管理用グループ分け、ドキュメント内容、ドキュメントタイプなどの基準に応じた、あらかじめ決定されているプラグインでもよいし、または、他の（以前に呼び出された、あるいは現在実行中の）プラグインから呼び出されたプラグインでもよい。
【００１９】
ＩＲドキュメント処理の例の中には、印刷ジョブをＩＲドキュメントへと翻訳（解析）するステップと、上記印刷ジョブデータを分析、変更するステップと、上記印刷ジョブの制御を変更するステップと、上記印刷ジョブに関するプリントサブシステム外部情報を収集するステップと、上記印刷ジョブに関するプリントサブシステム外部情報を設定するステップと、ＩＲドキュメントを再アセンブルするステップと、を含むものもある。また、いくつかの例においては、ＩＲドキュメントを再アセンブルするステップは、複数の処理済みＩＲドキュメント間の衝突を取り除くステップを含む。
【００２０】
上述の方法およびプリントサブシステムのデスプーリングバックプレーンのさらに詳細な説明を以下に記述する。
【００２１】
（図の簡単な説明）
図１ａは、プリントサブシステムの印刷プロセッサ（従来技術）を示す図である。
【００２２】
図１ｂは、プリントサブシステムのカスタムポートマネージャ（従来技術）を示す図である。
【００２３】
図１ｃは、プリントサブシステムの印刷補助プロセス（従来技術）を示す図である。
【００２４】
図１ｄは、連鎖印刷プロセッサ（従来技術）を用いたプリントサブシステムを示す図である。
【００２５】
図１ｅは、印刷補助（従来技術）を含むプリントサブシステムを示す図である。
【００２６】
図２は、本発明に係るプリントサブシステムのデスプーリングバックプレーンを模式的に示すブロック図である。
【００２７】
図３は、デフォルトシステムのバイパスを示す図である。
【００２８】
図４（ａ）および（ｂ）は、図２のデスプーリングバックプレーンを示す別の図である。
【００２９】
図５（ａ）および（ｂ）は、本発明の典型的な印刷ジョブ解析機能を示す図である。
【００３０】
図６は、本発明に係るデバイスの利用可能な機能の例を示す図である。
【００３１】
図７は、本発明に係る、プリントサブシステムのデスプーリングバックプレーンを用いた、印刷ジョブ管理方法を示すフローチャートである。
【００３２】
（好適な実施の形態の詳細な説明）
図２は、本発明に係るプリントサブシステム２００のデスプーリングバックプレーン２０１を模式的に示すブロック図である。バックプレーン２０１は、デスプーリングバックプレーンのプラグインのライブラリ２０２および制御部２０４を含む。制御部２０４は、線２０６にて印刷ジョブを受け取るためのインターフェースを有する。周知の通り、プリントドライバが直接印刷をする（つまり、同期をとっている）プリントサブシステムなどのように、印刷ジョブはプリンタドライバによって、スプーリングされることなくポートマネージャへ供給される。あるいは、印刷ジョブはプリントサブシステム２００における他の要素、例えば、マイクロソフト  ウィンドウズ（Microsoft Windows）のＧＤＩプリントサブシステムにおけるプリントスプーラ、などによって供給されてもよい。プリントサブシステムは通常、各要素、つまり、プリンタドライバ、印刷プロセッサ、印刷補助、スプーラ、およびポートマネージャ、のすべてもしくはいくつかを含んでいる。制御部２０４は、印刷ジョブを内部表現（ＩＲ）ドキュメントへと変換し、このＩＲドキュメントを線２０８のインターフェースにて供給する。制御部２０４は、印刷ジョブをＩＲドキュメントへと変換するが、このＩＲドキュメントは通常、目的のプリンタデバイスおよび／または目的のプリンタデバイスに関連付けられた言語フォーマットには依存しない。
【００３３】
構成要素プロセッサ（A component processor）２１０は、線２１２にてライブラリ２０２からプラグインを呼び出すためのインターフェースを有し、線２０８にてＩＲドキュメントを受け取るためのインターフェースを有する。構成要素プロセッサ２１０は、このＩＲドキュメントをプラグインに応じて処理し、処理済みＩＲドキュメントを処理済み印刷ジョブへと変換し、次に、この処理済み印刷ジョブを線２１４のインターフェースにて供給する。この線２１４は、ポートマネージャに接続するように図示されているが、本発明による他の例において、線２１４は、従来の他のプリントサブシステムの要素に接続されていてもよい。
【００３４】
構成要素プロセッサ２１０は、ユーザに選択されたプラグインをライブラリ２０２から呼び出す。これらのプラグインは、例えば、プリントドライバユーザインターフェースから、または、構成要素プロセッサ２１０に備えられたユーザインターフェースから選択される。あるいは、構成要素プロセッサ２１０は、プリンタドライバ、プリンタモデル、プリンタ構成、プリンタの条件、ユーザ、管理用グループ分け、ドキュメント内容、ドキュメントタイプなどの基準に応じた、あらかじめ決定されているプラグインを呼び出してもよい。また、他のさまざまな種類の基準がプラグインの選択を支援するのに用いられてもよい。上記基準および関連付けられたプラグインは、例えば、プリントサブシステムの導入時に構成されるか、または、デフォルトの条件として設定されるか、または、特定のどのプリンタモデルを選択するかによってあらかじめ決定されていればよい。他の例においては、構成要素プロセッサ２１０は、他の（以前に呼び出された、あるいは同時に実行中の）プラグインから呼び出されたプラグインを呼び出してもよい。
【００３５】
構成要素プロセッサ２１０は、複数の処理を実行することができる。これらの処理は、ドキュメントに直接関係する処理でもよいし、そうでなくてもよい。ドキュメントに関係する処理には、例えば、印刷ジョブをＩＲドキュメントへと翻訳（解析）する処理、印刷ジョブデータを分析、変更する処理、ＩＲドキュメントを再アセンブルする処理、などが含まれる。ドキュメントに直接関係しない他の処理には、印刷ジョブに関するプリントサブシステム外部情報を収集する処理、印刷ジョブに関するプリントサブシステム外部情報を生成する処理、印刷ジョブの制御を変更する処理（スプーリング／デスプーリングのコマンドなど）、および／または印刷ジョブに関するプリントサブシステム外部情報を設定する処理、などが含まれる。
【００３６】
構成要素プロセッサは、印刷ジョブをＩＲドキュメントへと翻訳するが、それを以下の解析により行う。以下の解析とは、スプール／ラスタ画像プロセッサ（ＲＩＰ；raster image processor）のフッターおよびヘッダーの解析、印刷ジョブの制御ヘッダーの解析、および、ページ記述言語（ＰＤＬ；page description language）データ、画像、またはラスタデータ（raster data）などの言語データの解析、である。構成要素プロセッサ２１０は、複数の印刷ジョブ制御ヘッダープラグイン（印刷ジョブ言語（ＰＪＬ；printer job language）およびジョブ定義フォーマット（ＪＤＦ；job definition format）プラグインなど）を呼び出すことにより、印刷ジョブ制御ヘッダーを解析する。用いられる印刷ジョブ制御ヘッダープラグインは、印刷ジョブ制御ヘッダーデータを認識できるものである。最初に、構成要素プロセッサ２１０は、ＰＪＬプラグインなどの工業規格の印刷ジョブ制御ヘッダーを構文分析のために呼び出すこともある。次に、意味分析のために、製造元またはモデルが指定するバージョン（manufacturer or model specific version）のＰＪＬプラグインを呼び出す。
【００３７】
構成要素プロセッサ２１０は、複数の言語プラグイン（プリンタ制御言語（ＰＣＬ；printer control language）、ポータブルドキュメントフォーマット（ＰＤＦ；portable document format）、ポストスクリプト（ＰＳ；PostScript）、およびＰＣＬ  ＸＬ、ＨＰ  ＧＬ／２、ＩＰＤＳ、Escape  Ｐ、ＳＣＳ、およびＴＩＦＦなど）を呼び出すことにより、上記言語データを解析する。他の形態では、印刷データは、ラスタデータまたは画像などのようにＰＤＬとは異なる表現であってもよい。このような形態では、構成要素プロセッサ２１０は、適切な印刷データフォーマット指定プラグインを呼び出すことにより、印刷データを解析する。例えば、用いられるプラグインは、上記データを解析できるものである。
【００３８】
構成要素プロセッサ２１０は、ジョブ課金などの動作を実行することにより、上記ＩＲドキュメントを分析する。ジョブ課金には、例えば、ジョブを印刷するのに必要な用紙の物理的印刷部数、トナー、または用紙を綴じる際のホッチキス針など、他の消耗品の使用を決定する機能などが含まれる。他の分析動作には、プリンタへのプーリング（printer pooling）、およびジョブ分割などが含まれる。プリンタへのプーリングの動作には、プリンタの利用可能性、負荷のバランス、性能、機能、設置場所（locality）、消費電力、および／または他のリソース利用可能性に基づき、1つもしくはそれ以上のプリンタへ印刷ジョブをルーティングする機能が含まれる。ジョブ分割の動作には、複製、異なるプリンタ間のドキュメントの分割、色（黒と白（ＢＷ）またはカラーの分離）によるジョブの分離などの機能が含まれる。また、分析動作には、アクセス制御やセキュリティなどの機能も含まれる。このセキュリティの機能とは、暗号化、監査、電子透かし技術（steganography）（例えば、未定義のビットをファイルに用いてメッセージを隠すことなど）、デジタル署名、および種々の符号化関数などのことである。さらに、分析動作には、内容のフィルタリング、およびリソースのダウンロード（例えば、フォーム／フォント／オーバレイ（overlay）／透かし（watermark）など）などが含まれていてもよい。他の分析の例では、圧縮、再フォーマット（つまり、ページ配置、冊子仕上げ、逆順印刷、ｎ面印刷、などのシートのアセンブリ（sheet assembly）の模倣）、および、言語翻訳（ある印刷言語から別の言語への変換、または、元の印刷言語の変形）などが含まれる。
【００３９】
構成要素プロセッサ２１０は、プリンタの条件を監視することにより、印刷ジョブに関するプリントサブシステム外部情報を収集することもある。監視されるプリンタの条件の例としては、接続されている印刷デバイスの利用可能性、現在印刷中の印刷ジョブ、待機中の印刷ジョブ、完了した印刷ジョブ、失敗した印刷ジョブ、プリンタ性能（分単位の印刷ページ数（ｐｐｍ）の仕様など）、プリンタの設置場所（プリンタがユーザにどれだけ近いか）、プリンタの機能（ステープリングや両面印刷などの機能）、消耗品の使用状況（トナー残量や用紙の残枚数など）、などが挙げられる。ここでは例示しないが、他のプリンタの条件が監視されてもよい。また構成要素プロセッサ２１０は、ノードに問い合わせをすることによって、プリンタの条件を監視する。ノードには、プリントサブシステムのスプーラ２３０、プリントサブシステムのポートマネージャ２３２、（Microsoft Windows NT/2K/XP  印刷サーバにおけるネットワーク印刷スプーラなどの）プリンタデバイスマネージャ２３４、マイクロソフト  ウィンドウズ（Microsoft Windows）  2K/XPにおけるプリンタディレクトリサービス（the printer directory service）のような印刷サービス（図示せず）、またはプリンタ２３６、などがある。どのノードを選択するかについては、プリントサブシステム２００の設計、プリンタの設計、およびプリンタ２３６をプリントサブシステム２００へ接続するネットワークによって異なる。ある実施形態では、構成要素プロセッサ２１０は、キャッシュ２３８に上記プリンタの条件情報を格納している。
【００４０】
構成要素プロセッサ２１０は、ノードから情報を収集することにより、印刷ジョブに関するプリントサブシステム外部情報を収集することもある。上記ノードとは、例えば、プリントサブシステムのホスト２５０、プリンタ２３６、プリンタデバイスマネージャ２３４、またはプリントサービス（図示せず）などである。
【００４１】
依存しないＩＲドキュメント形式にて、どの特定の言語および／またはプリンタモデルにも依存せずに、ドキュメントが効率的に処理され得るという点で、本発明のバックプレーンは有利である。例を挙げると、制御部２０４は、第一のプリンタデバイスタイプに関連付けられた第一の言語フォーマットにて、印刷ジョブを受け取る。一方、構成要素プロセッサ２１０は、その印刷ジョブに関するプリントサブシステム外部情報を、第二のプリンタデバイスタイプを選択するために用いる。このプリンタの選択処理は、上述の間接的なドキュメント処理の一例である。構成要素プロセッサ２１０は、次に、ＩＲドキュメントを、第二のプリンタデバイスタイプに関連付けられた第二の言語フォーマットの処理済み印刷ジョブへと変換する。
【００４２】
また、構成要素プロセッサ２１０は、複数のプラグインを呼び出し、ＩＲドキュメントの並行処理などのような動作を実行するために、その複数のプラグインを用いることがある。あるいは、上記プラグインは、ＩＲドキュメントを、逐次処理するために、または並行処理と逐次処理とを組み合わせて処理するために、用いられてもよい。
【００４３】
複数のプラグインを用いるということは、それだけの処理済みＩＲドキュメントを生成することになる。結果として、処理済みＩＲドキュメント間で衝突が生じる可能性がある。簡単な例を挙げると、第一の処理済みＩＲドキュメントが、１２ポイントのフォントを定義し、一方、第二の処理済みＩＲドキュメントが１０ポイントのフォントを定義してしまうことがあるかもしれない。もしそうなれば、構成要素プロセッサ２１０は、複数の処理済みＩＲドキュメント間での衝突を取り除くために、ＩＲドキュメントを再アセンブルし、複数のＩＲドキュメントを（単一の）処理済み印刷ジョブへと変換する。
【００４４】
他の形態では、バックプレーン２０１は、共有データメモリ２４０を含む。構成要素プロセッサ２１０は、ＩＲドキュメントを線２０８にて受け取り、そのＩＲドキュメントを共有データメモリ２４０に格納する。それから、構成要素プロセッサ２１０は、処理のために共有データメモリ２４０のＩＲドキュメントにアクセスする。この構成要素プロセッサは、メモリ２４０にある元のＩＲドキュメントにアクセスする各プラグインがあるので、処理済みＩＲドキュメントの様々な変形の間で生じる衝突を解消することができる。印刷フィルターの連鎖（従来技術）では、第一フィルターの出力値は、第二フィルターの入力値となる。そのため、第二フィルターが第一フィルターの結果を実行しない可能性、または、前に変更されたデータを操作するために望んでいない結果を返す可能性がある。本発明では、各処理済みＩＲドキュメントは注釈を含んでいるので、変更されたデータから元のデータを見分けることができる。処理済みＩＲドキュメント間で衝突が生じた際、構成要素プロセッサ２１０は、衝突が生じたドキュメントの注釈と元のドキュメントの注釈とを比較することができる。最終手段としては、構成要素プロセッサ２１０は、衝突が生じたデータを元の状態に戻すことができる。さらに、構成要素プロセッサ２１０は、他のプラグインを呼び出すことにより、衝突を解消することができる。
【００４５】
＜機能についての詳細な説明＞
本発明は、カスタマイズされた動作を制限なく、しかも、他のどんな動作も意識する必要なく実行できるという点で、本書の「背景技術」の部で記述した従来技術による解決方法とは異なる。カスタマイズされた動作はプラグインとして実行される。このプラグインは、順序に拘束されないバックプレーン内のあらかじめ定義された構成要素に関連付けられたプラグインである。このバックプレーンは複数の構成要素で構成されており、この各構成要素は、ジョブ分析／変更、ジョブ課金、ジョブ制御、ジョブ監視／回復、ジョブデスプーリング、デバイス監視、およびセキュリティなどの、操作上のそれぞれ異なる概念を扱う。
【００４６】
デスプーリングバックプレーンは、動的に構成することが可能である。カスタマイズされた動作は、構成可能なプラグインとして追加および削除が可能である。これらのプラグインは、あらかじめ構成しておくこともできるし、あるいは、実行時に構成することも可能である。新規のジョブ制御言語およびページ記述言語（ＰＤＬｓ）のサポートは、他の印刷データ表現形式（例えばラスタ）と同様に、ＰＪＬ／ＰＤＬ解析プラグインとして動的に追加可能である。共通の処理を繰り返すことによる冗長性はない。例えば、印刷ジョブが解析されるのは一度だけである。ジョブは、言語に依存しない、またすべての印刷データ処理に共通の形式である、中間表現（intermediate representation）へと変換される。デバイス監視などの、他の共通の画像を形成するタスクは、バックプレーンの構成要素によって扱われ、共通データとして格納される。共通の外部インターフェースは、他のプリントサブシステムの構成要素（例えば、印刷監視部（monitor））との双方向通信に用いられる共通の共有データにアクセスするためにサポートされている。
【００４７】
≪デスプーリングバックプレーン−デフォルトシステムのバイパスの機能≫
図３は、デフォルトシステムのバイパスを示す図である。デスプーリングバックプレーンは、従来の方法を用いて、プリントサブシステムのデスプーリング側に統合されることもある。これらの方法は、拡張された印刷スプーラに限定されず、カスタマイズされた印刷プロセッサ、カスタマイズされたポートマネージャまたは印刷補助なども含む。
【００４８】
上述の従来の場合のそれぞれでは、デスプーリングバックプレーンの入出力および制御のインターフェースは、プリントサブシステムの対となる各インターフェースに準拠している。ある形態では、本発明のデスプーリングバックプレーンは、カスタマイズされた印刷プロセッサである。デスプーリングバックプレーン（印刷プロセッサ）は、システム（デフォルト）印刷プロセッサに追加されて、あるいはそれに取って代わって、各動作を実行するためにある。
【００４９】
本発明のある形態では、デスプーリングバックプレーンは、デスプーリングバックプレーンの機能を避けるために、入出力および制御インターフェースにて迂回（bypass）を実施する。このような方法で、上記システム（デフォルト）印刷プロセッサの機能が実行される。デスプーリングバックプレーンそれ自体が、カスタマイズされた構成要素（カスタマイズされた印刷プロセッサなど）を構成されている別のシステムへと迂回することがあってもよい。
【００５０】
上記の可能または不可能を決定するバイパスは、再インストールまたは再起動（reinvocation）することなく、動的に構成され得る。例えば、上記バイパスは、デスプーリングバックプレーンのアクセス制御を実行するのに用いることができる。カスタマイズされた印刷プロセッサのバイパスの一例が、係属中の米国特許出願  発明の名称「追加のカスタム印刷プロセッサを用いる、カスタマイズされたプリンタドライバ」（発明者；アンドリュー  ファーリッシュ、Ｎｏ．１０／２６９，３７８、２００２年１０月１０日出願）に開示されている。上記出願は、本願にて以下に参照される。
【００５１】
≪デスプーリングバックプレーンの一般的なレイアウト≫
図４（ａ）および図４（ｂ）は、図２のデスプーリングバックプレーンを示す別の図である。デスプーリングバックプレーンは、構成可能な、相互通信構成要素（intercommunicating components）において実施される。構成要素のそれぞれは、画像形成ジョブに関連した、異なるデスプーリングの動作を実行する。これらの動作には、以下のものが含まれるが、これには限定されない。
１．印刷ジョブの分析
２．印刷ジョブの変更
３．ジャーナルを記録されたデータ（Journaled Data）の復元
４．ジョブおよびデバイスのスケジューリング
５．ジョブおよびデバイスの監視
６．ジョブおよびデバイスの制御
７．ジョブのルーティング
８．出力制御
９．ジョブおよびデバイスのエラーの取扱いおよび回復
１０．課金およびアクセス制御
１１．セキュリティ
１２．割り当てられたサービス
デスプーリングバックプレーンには、数々の構成要素と関連付けられた動作があるにも関わらず、このデスプーリングバックプレーンは、２つの構成要素に分けて考えられる。１つは、入力および制御インターフェースを実施する構成要素、もう１つは、出力インターフェースを実施する構成要素である。カスタマイズされた印刷プロセッサの場合、入力および制御インターフェースは、印刷スプーラと印刷プロセッサとの間にあるインターフェースになり、出力インターフェースは、印刷プロセッサとポートマネージャとの間にあるインターフェースになる。
【００５２】
各構成要素インターフェースは、共有データを通じてデスプーリングバックプレーンとつながれている。この共有データは、それぞれの構成要素により解釈可能な共通フォーマット（中間表現）である。構成要素は別の構成要素に直接つながれることはない。そうでなければ、その別の構成要素の情報（knowledge）を有していなければならない。各構成要素の制御は、上記入力および制御構成要素に結び付けられた、集中化された構成要素制御処理（a centralized component control process）により実施される。
【００５３】
各構成要素の機能は、１つもしくはそれ以上のプラグインを構成することによりカスタマイズされてもよい。カスタマイズの例として、機能を追加すること、機能を変更すること、機能を削除すること、機能を入れ替えることなどが挙げられるが、これに限定されない。
【００５４】
各プラグインは、外部のカスタマイズを実施することがある。例えば、構成要素がデバイス利用可能機能（a device availability function）を実施してもよい。上記構成要素が、デバイスの状態を印刷スプーラに問い合わせるなどの、デフォルトの機能をいくつか実行する。この機能は、ＳＮＭＰデバイスクエリ（an SNMP device query）を実施するためのプラグインを用いることにより、デバイスに問い合わせを行い、かつデバイスの状態を決定するように拡張することが可能である。さらに、デバイスの中には、標準のＳＮＭＰ  ＭＩＢプロトコルでは入手不可能な、付加的な状態の情報を提供する、専用のＳＮＭＰフィールド（SNMP fields）を有するものもある。これらのデバイス指定クエリは、付加的なプラグインとして実施されることがある。
【００５５】
≪構成要素の例：印刷ジョブ解析部≫
図５（ａ）および図５（ｂ）は、本発明の典型的な印刷ジョブ解析機能を示す図である。この形態では、デスプーリングバックプレーンのある構成要素が印刷ジョブの解析機能を実施することがある。このことを以下でＩＲドキュメントの翻訳と称する。この印刷ジョブ解析構成要素は以下の機能を実施することがあるが、これには限定されない。
１．スプール／ＲＩＰヘッダーおよびフッターを解析する。
２．印刷ジョブ制御ヘッダーを解析する。
３．ＰＤＬデータを解析する。
４．解析されたデータを中間表現へと変換する。
５．中間表現を共有データへ格納する。
【００５６】
付加的な構成要素は、以下に記載の、解析（ＩＲ翻訳）後の機能を実施することがあるが、これには限定されない。
１．中間表現を分析する。例えば、ジョブを印刷するのに必要な用紙の物理的印刷部数を決定するなどである。
２．分析された情報を共通のフォーマット／規約（convention）で上記共有データへと格納する。
３．ホスト名やネットワークアドレスなどの外部情報を収集し、印刷生成処理（例えば、プリンタドライバ）を識別する。上記印刷生成処理は、解析、分析、変更、または印刷ジョブの中間表現に関連付けられた他のどの処理にも有用となる。
４．外部情報を共通のフォーマット／規約で上記共有データへと格納する。
５．上記印刷ジョブの中間表現を変更することにより、印刷ジョブを変更する。
６．上記変更された印刷ジョブの中間表現を上記共有データへと保存する。
７．変更された（あるいは変更されていない）印刷ジョブを中間表現から印刷ジョブへと再アセンブルする。再アセンブルされた印刷ジョブは、元の印刷ジョブフォーマット（例えば、ＰＪＬ／ＰＣＬ）であってもよいし、あるいは、別のフォーマット（例えば、ＰＪＬ／ＰＳ）へと変換されてもよい。
【００５７】
上述の方法では、構成要素制御部および構成要素は、以下の要素を含む処理を実行することがあるが、これには限定されない。
１．構成要素制御部は、印刷ジョブについてのスプールデータの位置を共有データへとロードする。
２．構成要素制御部は、構成要素を解析する印刷ジョブ（ＩＲドキュメントを翻訳する機能）を呼び出す。
３．印刷ジョブ解析構成要素は、スプールヘッダーを解析するためのプラグインをロードする。
４．印刷ジョブ解析構成要素は、あるプラグインがフォーマットを認識したことを応答するまでプラグインを解析する各スプールヘッダーを呼び出す。
上記スプールヘッダーは、
（１）プラグインを解析するか、
（ここで、該プラグインは、スプールファイルヘッダーを解析して、上記スプールファイルヘッダーの中間表現を共有データに書き込む（自動スプールヘッダーフォーマット認識（auto-spool header format recognition））。）
または、
（２）あらかじめ決定された一連の、プラグインを解析するスプールヘッダーを呼び出すか、
（ここで、該プラグインは、スプーラヘッダーフォーマットの明示情報（explicit knowledge）に基づいており、該スプーラヘッダーフォーマットは、例えばスプールデータを生成したプリンタドライバの情報を有する（明示スプールヘッダーフォーマット認識（explicit-spool header format recognition））。）
または、
（３）そうではなく、スプールヘッダーフォーマットが決定され得ない場合にプラグインを解析する、デフォルトの一連のスプールヘッダーを呼び出す（デフォルトスプールヘッダーフォーマット認識（default-spool header format recognition））。
５．印刷ジョブは、印刷ジョブ制御ヘッダー（例えば、ＰＪＬ）を解析するためのプラグインをロードする構成要素を解析する。
６．印刷ジョブは、以下の構成要素を解析する。
該構成要素は、
（１）プラグインがフォーマットの認識を応答するまでプラグインを解析する、各印刷ジョブ制御ヘッダーを呼び出す（自動印刷ジョブヘッダーフォーマット認識（auto-print job header format recognition））か、
または、
（２）あらかじめ決定された一連の、プラグインを解析する印刷ジョブヘッダーを呼び出すか、
（ここで、該プラグインは、印刷ジョブヘッダーフォーマットの明示情報に基づいている（明示印刷ジョブヘッダーフォーマット認識（explicit-print job header format recognition））。）
または、
（３）そうではなく、印刷ジョブヘッダーフォーマットが決定され得ない場合にプラグインを解析する、デフォルトの一連の印刷ジョブヘッダーを呼び出す（デフォルト印刷ジョブヘッダーフォーマット認識（default-print job header format recognition））。
７．プラグインを解析する、印刷ジョブ制御ヘッダー。（ここで、該プラグインは、印刷ジョブ制御ヘッダーを解析して、上記印刷ジョブ制御ヘッダーの中間表現を共有データに書き込む。）
８．印刷ジョブは、印刷データ（例えば、ＰＤＬ）を解析するためのプラグインをロードする構成要素を解析する。
９．印刷ジョブは、以下の構成要素を解析する。
該構成要素は、
（１）プラグインが、ＰＣＬなどのフォーマットの認識を応答するまでプラグインを解析する、各印刷データ解析プラグインを呼び出す（自動印刷データフォーマット認識（auto-print data format recognition））か、
または、
（２）あらかじめ決定された一連の、プラグインを解析する印刷データを呼び出すか、
（ここで、該プラグインは、印刷データフォーマットの明示情報に基づいている（明示印刷データフォーマット認識（explicit-print data format recognition））。）
または、
（３）そうではなく、印刷データフォーマットが決定され得ない場合にプラグインを解析する、デフォルトの一連の印刷データを呼び出す（デフォルト印刷データフォーマット認識（default-print data format recognition））。
１０．印刷データは、プラグインを解析する。（ここで、該プラグインは、印刷データを解析して、上記印刷データの中間表現を共有データに書き込む。）
１１．構成要素制御部は、印刷ジョブ分析構成要素を呼び出す。
１２．印刷ジョブ分析構成要素は、印刷ジョブ分析プラグインをロードする。
１３．各印刷ジョブ分析プラグインは、印刷ジョブの中間表現を読み出し、それぞれの分析を実行する。
１４．各印刷ジョブ分析プラグインは、コマンドフォーマット／規約を用いて分析された情報を共有データに書き込む。
１５．構成要素制御部は、印刷ジョブ変更構成要素を呼び出す。
１６．印刷ジョブ変更構成要素は、印刷ジョブ変更プラグインをロードする。
１７．各印刷ジョブ変更プラグインは、それぞれの機能にしたがって、共有データにある印刷ジョブの中間表現を更新する。
１８．構成要素制御部は、印刷ジョブアセンブリ構成要素（The print job assembly component）を呼び出す。
１９．印刷ジョブアセンブリ構成要素は、印刷ジョブの出力フォーマットを決定する。
２０．印刷ジョブアセンブリ構成要素は、上記出力フォーマットに関連付けられたプラグインをロードする。
２１．構成要素制御部は、印刷ジョブ制御構成要素を呼び出す。
２２．印刷ジョブ制御構成要素は、ジョブ制御プラグインをロードする。
２３．各印刷ジョブ制御構成要素は、それぞれの機能にしたがって、共有データにある印刷ジョブの中間表現と印刷ジョブの制御とを更新する。
２４．ロードされたプラグインは、中間表現から出力フォーマットへと印刷ジョブを再構築する。
２５．印刷ジョブアセンブリ構成要素は、共有データにある再アセンブルされた印刷ジョブの位置を格納する。
【００５８】
≪構成要素の例：デバイスの利用可能性≫
図６は、本発明に係るデバイスの利用可能な機能の例を示す図である。デスプーリングバックプレーンの構成要素の中には、デバイスの利用可能な機能を実施できるものもある。この構成要素は、以下を含む機能を実行できるが、これには限定されない。
１．印刷スプーラからデバイスの利用可能性を決定する。
２．必要があれば、プリントサーバなどのデバイスマネージャからデバイスの利用可能性を決定する。
３．デバイスからデバイスの利用可能性を決定する。
４．他の割り当てられたサービスからデバイスの利用可能性を決定する。
５．利用可能な資源からデバイスの利用可能性を決定する複合情報（a composite）を生成する。
６．デバイスの利用可能性情報／状態をキャッシュに保持する。
【００５９】
付加的な構成要素が、以下の記載を、デスプーリング機能のあとに実施することも可能であるが、これに限定されない。
１．印刷ジョブを印刷中にデバイスの状態を監視する。
２．デバイスからジョブ完了状態を監視する。
３．失敗した印刷ジョブを再度開始するのに、次に利用できる可能性の最も高いデバイスを決定する。
【００６０】
上述の方法では、構成要素制御部および上述の各構成要素は、以下を含む処理を実行することも可能であるが、これに限定されない。
１．構成要素制御部は、デバイス利用可能性確認構成要素（the device availability）を呼び出す。
２．デバイス利用可能性確認構成要素は、そのデバイスに関連付けられているインストールされたプリンタの、印刷スプーラの状態を確認するように、関連付けられているプラグインをロードする。
３．印刷スプーラのデバイスの状態を確認するプラグイン（the device status from print spooler plugin）は、以前に格納されているその印刷スプーラの、デバイスの状態の情報を、キャッシュに問い合わせる。
４．もし、状態の情報がキャッシュにないか、あるいは新しくなければ、プラグインは印刷スプーラのデバイスの状態を確認し、キャッシュを更新する。
５．プラグインは、印刷スプーラの確認されたデバイスの状態を、共通のフォーマット／規約で、共有データに格納する。
６．デバイス利用可能性確認構成要素は、プリントサーバなどのデバイスマネージャの状態を確認するように関連付けられているプラグインを呼び出す。
７．デバイスマネージャプラグイン（任意）は、デバイスマネージャの種々のタイプ（例えば、Microsoft Windows NT（登録商標、マイクロソフト  ウィンドウズエヌティー）プリントサーバ、または、Netware Novel（登録商標、ネットウェア  ノベル）プリントサーバなど）がそれぞれ指定する追加のプラグインをロードする。
８．デバイスマネージャプラグインは、以前に格納されているそのデバイスマネージャの、デバイスの状態の情報を、キャッシュに問い合わせる。
９．もし、状態の情報がキャッシュにないか、あるいは新しくなければ、プラグインはデバイスマネージャのデバイスの状態を確認し、キャッシュを更新する。
１０．プラグインは、デバイスマネージャの確認されたデバイスの状態を、共通のフォーマット／規約で、共有データに格納する。
１１．デバイス利用可能性確認構成要素は、ピアツーピア（a peer-peer）ネットワークプロトコルなどによるデバイスの状態を確認するように関連付けられているプラグインを呼び出す。
１２．デバイスプラグインは、シンプルネットワークマネージメントプロトコル（ＳＮＭＰ；Simple Network Management Protocol）やＰＪＬ  ＵＳＴＡＴＵＳなどの、ピアツーピアネットワークプロトコルと、例えばＳｈａｒｐ  ＮＪＲなどのデバイス専用プロトコルおよびプロトコル拡張と、が指定する追加のプラグインを任意にロードする。
１３．デバイスプラグインは、以前に格納されているそのデバイス（プリンタ）の、状態の情報を、キャッシュに問い合わせる。
１４．もし、状態の情報がキャッシュにないか、あるいは新しくなければ、プラグインはデバイスのデバイスの状態を確認し、キャッシュを更新する。
１５．プラグインは、確認されたデバイスの状態を、共通のフォーマット／規約で、共有データに格納する。
１６．デバイス利用可能性確認構成要素は、収集された情報に基づいてデバイスの利用可能性を決定するためのプラグインをロードする。
１７．利用可能性決定プラグインは、共有データから、デバイスの属性（例えば、ｐｐｍ）やデバイスの状態（例えば、待機中、印刷中、エラー）などの情報を読み出し、そのデバイスの利用可能性を決定する。
１８．利用可能性決定プラグインは、デバイスの利用可能性の情報を共通のフォーマット／規約で、共有データに格納する。
【００６１】
図７は、本発明に係る、プリントサブシステムのデスプーリングバックプレーンを用いた、印刷ジョブ管理方法を示すフローチャートである。分かりやすくするために各ステップには一連の番号を付して表しているが、明記しない限りは、付した番号から順番が決定されるべきではない。上記ステップのいくつかは、飛ばされることもあるし、平行して実行されることもあるし、または、連番の正確な順序を守らないで実行されることもあるということを理解されたい。上記方法は、ステップ７００より開始する。
【００６２】
ステップ７０２おいて、プリントサブシステムのデスプーリングバックプレーン入力インターフェースにて印刷ジョブが受け取られる。ステップ７０４において、デスプーリングバックプレーンのプラグインが呼び出される。ステップ７０６において、印刷ジョブが内部表現（ＩＲ）ドキュメントへと変換する。通常、ステップ７０６において、印刷ジョブが、目的のプリンタデバイスと目的のプリンタデバイスに関連付けられた言語フォーマットとには依存しないＩＲドキュメントへと変換される。ステップ７０８において、プラグインに応じて上記ＩＲドキュメントが処理される。ステップ７１０において、処理済みＩＲドキュメントが処理済み印刷ジョブへと変換される。ステップ７１２において、処理済み印刷ジョブが、デスプーリングバックプレーンの出力インターフェースにて供給される。
【００６３】
この方法のいくつかの形態では、デスプーリングバックプレーンのプラグインを呼び出すステップ７０４は、以下に記載のプラグインを呼び出すステップを含む。以下に記載のプラグインとは、ユーザが選択したプラグイン、プリンタドライバ、プリンタモデル、プリンタ構成、プリンタの条件、ユーザ、管理用グループ分け、ドキュメント内容、および／またはドキュメントタイプなどの基準に応じてあらかじめ決定されたプラグイン、および／または、その他の（以前に呼び出された、または現在実行中の）プラグインより呼び出されたプラグイン、などである。
【００６４】
他の形態では、ＩＲドキュメントを処理するステップ（ステップ７０８）は、以下に記載の処理を実行するステップを含む。以下に記載の処理とは、印刷ジョブのＩＲドキュメントへの翻訳、印刷ジョブデータの分析、変更、印刷ジョブの制御の変更、印刷ジョブに関するプリントサブシステム外部情報の収集、印刷ジョブに関するプリントサブシステム外部情報の生成、印刷ジョブに関するプリントサブシステム外部情報の設定、および／または、ＩＲドキュメントの再アセンブル、などである。
【００６５】
印刷ジョブに関するプリントサブシステム外部情報を収集するステップ（ステップ７０８）は、プリンタの条件を監視するステップを含んでいてもよい。プリンタの条件としては、接続されている印刷デバイスの利用可能性、現在印刷中の印刷ジョブ、待機中の印刷ジョブ、完了した印刷ジョブ、失敗した印刷ジョブ、プリンタ性能、プリンタの設置場所、消耗品、および／またはプリンタの機能などが挙げられる。さらに、プリンタの条件を監視するステップは、以下のサブステップ（図示せず）を含んでいてもよい。以下のサブステップとは、プリントサブシステムのスプーラ、プリントサブシステムのポートマネージャ、プリンタマネージャ、印刷サービス、および／または、プリンタなどのノードに問い合わせをするステップと、プリンタの条件の情報をキャッシュに保持するステップと、である。ステップ７０８は、プリントサブシステムのホスト、プリンタ、プリンタデバイスマネージャ、またはプリントサービスなどのノードから、プリントサブシステム外部情報を集めるステップを含んでいてもよい。
【００６６】
他の形態では、印刷ジョブをＩＲドキュメントへと翻訳するステップ（ステップ７０８）は、スプール／ラスタ画像プロセッサ（ＲＩＰ）のフッターおよびヘッダーを解析するステップと、印刷ジョブ制御ヘッダーを解析するステップと、ラスタ、画像、または、ページ記述言語（ＰＤＬ）データなどのような言語データを解析するステップとを含む。印刷ジョブ制御ヘッダーを解析するステップは、複数の印刷ジョブ制御ヘッダープラグイン（例えば、プリンタジョブ言語（ＰＪＬ）やジョブ定義フォーマット（ＪＤＦ）のプラグインなど）を呼び出すステップと、印刷ジョブ制御ヘッダーデータを認識する、印刷ジョブ制御ヘッダープラグインを用いるステップとを含む。
【００６７】
同様に、言語データを解析するステップは、ラスタ、画像、プリンタ制御言語（ＰＣＬ）、ポータブルドキュメントフォーマット（ＰＤＦ）、ポストスクリプト（ＰＳ）、ＰＣＬ  ＸＬ、ＨＰ  ＧＬ／２、ＩＰＤＳ、Escape  Ｐ、ＳＣＳ、およびＴＩＦＦプラグインなどの複数の言語プラグインを呼び出すステップと、その言語データを認識する言語プラグインを用いるステップとを含んでいてもよい。
【００６８】
ＩＲドキュメントを分析するステップ（ステップ７０８）は、以下に記載の動作を実行するステップを含んでいてもよい。以下の記載とは、ジョブ課金、ジョブ制御、プリンタプーリング、ジョブ分割、アクセス制御、セキュリティ、内容のフィルタリング、リソースのダウンロード、圧縮、再フォーマット、および／または、言語翻訳などである。
【００６９】
ある形態では、デスプーリングバックプレーンを呼び出すステップ（ステップ７０４）は、複数のプラグインを呼び出すステップを含む。次に、ステップ７０８における、ＩＲドキュメントを処理するステップは、ＩＲドキュメントの並行処理、ＩＲドキュメントの逐次処理、または、並行処理と逐次処理との組み合わせを用いたＩＲドキュメントの処理、などのような動作を実行するための複数のプラグインを用いるステップを含む。
【００７０】
他の形態では、ＩＲドキュメントを再アセンブルするステップ（ステップ７０８）は、複数の処理済みＩＲドキュメント間の衝突を取り除くステップを含む。次に、処理済みＩＲドキュメントを処理済み印刷ジョブへと変換するステップ（ステップ７１０）は、複数のＩＲドキュメントを処理済み印刷ジョブへと変換するステップを含む。
【００７１】
ある形態では、印刷ジョブをプリントサブシステムのデスプーリングバックプレーン入力インターフェースにて受け取るステップ（ステップ７０２）は、第一のプリンタデバイスタイプに関連付けられた第一の言語フォーマットで印刷ジョブを受け取るステップを含み、印刷ジョブに関するプリントサブシステム外部情報を設定するステップ（ステップ７０８）は、第二のプリンタデバイスタイプを選択するステップを含む。次に、処理済みＩＲドキュメントを処理済み印刷ジョブへと変換するステップ（ステップ７１０）は、ＩＲドキュメントを、第二のプリンタデバイスタイプに関連付けられている第二の言語フォーマットにて、処理済み印刷ジョブへと変換するステップを含む。
【００７２】
別の形態では、印刷ジョブをＩＲドキュメントへと変換するステップ（ステップ７０６）は、ＩＲドキュメントを共有データとして格納するステップを含む。次に、ステップ７０８にてＩＲドキュメントを処理するステップは、共有データからアクセスされたＩＲドキュメントを処理するステップを含む。
【００７３】
デスプーリングバックプレーンおよびデスプーリングバックプレーンを用いた印刷ジョブの管理方法をこれまで述べてきた。各処理（各プラグイン）の例は、発明を説明するために用いられてきたが、本発明は、ここに挙げられた処理のみに限定されるものではない。また、各処理はプリンタに関連した処理として説明されてきたが、本発明は、スキャナ、ファクシミリ機器、ドキュメントサーバ、および他の画像形成機器に対しても同様に適応可能である。さらに、印刷プロセッサとして実現可能なデスプーリングバックプレーンの例が挙げられたが、プリントサブシステムの他の要素（例えば、スプーラ、ポートマネージャ、印刷補助）においても実現可能である。
【００７４】
本発明は、おおむねMicrosoft Windows（登録商標、マイクロソフト  ウィンドウズ）のオペレーティングシステムの場合において説明されてきたが、その他の可能性のあるＯＳ名を限られた一覧で挙げるならば、アップル  マッキントッシュ（Apple MacIntosh）オペレーティングシステム、リナックス（Linux）オペレーティングシステム、システム  ファイブ  ユニックス（System V Unix（登録商標））オペレーティングシステム、ビーエスディー  ユニックス（BSD Unix（登録商標）オペレーティングシステム、オーエスエフ  ユニックス（OSF Unix（登録商標））オペレーティングシステム、サン  ソラリス（Sun Solaris）オペレーティングシステム、ヘイチピー／ユーエックス（HP/UX）オペレーティングシステム、または、アイビーエム  メインフレーム  エムブイエス（IBM Mainframe MVS）およびエーエス／４００（AS/400）オペレーティングシステム、などのサブシステムにおいても、実現可能である。本発明の他の変形例および実施の形態は、本技術分野における当業者により実施され得る。
【図面の簡単な説明】
【００７５】
【図１ａ】プリントサブシステムの印刷プロセッサ（従来技術）を示す図である。
【図１ｂ】プリントサブシステムのカスタムポートマネージャ（従来技術）を示す図である。
【図１ｃ】プリントサブシステムの印刷補助プロセス（従来技術）を示す図である。
【図１ｄ】連鎖印刷プロセッサ（従来技術）を用いたプリントサブシステムを示す図である。
【図１ｅ】印刷補助（従来技術）を含むプリントサブシステムを示す図である。
【図２】本発明に係るプリントサブシステムのデスプーリングバックプレーンを模式的に示すブロック図である。
【図３】デフォルトシステムのバイパスを示す図である。
【図４】図２のデスプーリングバックプレーンを示す別の図である。
【図５】本発明の典型的な印刷ジョブ解析機能を示す図である。
【図６】本発明に係るデバイスの利用可能な機能の例を示す図である。
【図７】本発明に係る、プリントサブシステムのデスプーリングバックプレーンを用いた、印刷ジョブ管理方法を示すフローチャートである。
【図１ａ】
2005196751.tif 000003
【図１ｂ】
2005196751.tif 000004
【図１ｃ】
2005196751.tif 000005
【図１ｄ】
2005196751.tif 000006
【図１ｅ】
2005196751.tif 000007
【図２】
2005196751.tif 000008
【図３】
2005196751.tif 000009
【図４】
2005196751.tif 000010
【図５】
2005196751.tif 000011
【図６】
2005196751.tif 000012
【図７】
2005196751.tif 000013
【外国語明細書】
2005196751.tif 000014
2005196751.tif 000015
2005196751.tif 000016
2005196751.tif 000017
2005196751.tif 000018
2005196751.tif 000019
2005196751.tif 000020
2005196751.tif 000021
2005196751.tif 000022
2005196751.tif 000023
2005196751.tif 000024
2005196751.tif 000025
2005196751.tif 000026
2005196751.tif 000027
2005196751.tif 000028
2005196751.tif 000029
2005196751.tif 000030
2005196751.tif 000031
2005196751.tif 000032
2005196751.tif 000033
2005196751.tif 000034
2005196751.tif 000035
2005196751.tif 000036
2005196751.tif 000037
2005196751.tif 000038
2005196751.tif 000039
2005196751.tif 000040
2005196751.tif 000041
2005196751.tif 000042
2005196751.tif 000043
2005196751.tif 000044
2005196751.tif 000045
2005196751.tif 000046
2005196751.tif 000047
2005196751.tif 000048
2005196751.tif 000049
2005196751.tif 000050
2005196751.tif 000051
2005196751.tif 000052
2005196751.tif 000053
2005196751.tif 000054
2005196751.tif 000055
2005196751.tif 000056
2005196751.tif 000057
2005196751.tif 000058
2005196751.tif 000059
2005196751.tif 000060
2005196751.tif 000061
2005196751.tif 000062