(57)【要約】【課題】  印刷処理関連プログラム及び拡張プログラムの設定値の間でコンフリクトが発生しているかどうか判別することである。【解決手段】    第１のプラグインモジュール３０９および／又は第２のプラグインモジュール３１２からこのコンフリクトルールをコンフリクトマネージャ３０３が取得する（３０７−１５）。この取得したルールに基づき、コンフリクトマネージャ３０３は、地紋印刷が設定されている場合に、ストア印刷を禁止するように制御（307-27）する構成を特徴とする。【選択図】  図７
2006164253.tif 000002
【特許請求の範囲】
【請求項１】
印刷処理関連プログラムを機能拡張できる複数の拡張機能プログラムを搭載したなデータ処理装置であって、
印刷処理に用いられる複数の設定値の間で成立する依存関係を定義した第１のコンフリクト処理ルールとして格納する第１のルール格納手段と、
前記印刷処理関連プログラムの機能と、前記複数の拡張機能プログラムに入力される設定値の間で成立する依存関係を定義した第２のコンフリクト処理ルールとして格納する第２のルール格納手段と、
前記第１のルール格納手段及び前記第２のルール格納手段から、前記第１のコンフリクト処理ルール及び前記第２のコンフリクト処理ルールを読み込み、読み込んだ前記第１のコンフリクト処理ルール及び前記第２のコンフリクト処理ルールを基にして、前記複数の設定間に不整合が生じないよう設定値の調整処理を行う設定調整手段と、
を具備することを特徴とするデータ処理装置。
【請求項２】
前記第２のコンフリクト処理ルールが第２のルール格納手段に格納されているか否かを確認する確認手段を更に具備することを特徴とする請求項１記載のデータ処理装置。
【請求項３】
前記設定調整手段は、前記第１のコンフリクト処理ルール及び前記第２のコンフリクト処理ルールを優先度の高い順に適用して、前記複数の設定間に不整合が生じないよう設定の調整処理を行うことを特徴とする請求項１記載のデータ処理装置。
【請求項４】
利用者が視覚的に前記複数の機能及び前記複数の拡張機能プログラムの設定状態を確認可能な設定状態画面を表示する画面表示手段と、
を更に具備し、
前記画面表示手段が表示する前記設定状態画面は、前記設定調整手段により設定の調整処理後の設定状態を示すものであることを特徴とする請求項１に記載のデータ処理装置。
【請求項５】
前記画面表示手段が表示する前記設定状態画面において、前記複数の機能及び前記複数の追加機能の各設定は、利用者の操作により変更可能であり、利用者が一つまたは複数の機能または前記複数の追加機能の設定を変更した場合に、前記設定調整手段は、読み込んだ前記第１のコンフリクト処理ルール及び前記第２のコンフリクト処理ルールを基にして、変更後の複数の機能と複数の拡張機能プログラムとのいずれか２つの設定間に不整合が生じないよう設定の調整処理を行うことを特徴とする請求項４記載のデータ処理装置。
【請求項６】
前記複数の機能拡張プログラムは、ドキュメント管理プログラムと地紋印刷プログラムであって、前記地紋印刷プログラム及びドキュメント管理プログラムから第１のコンフリクトルール及び第２のコンフリクトルールを取得し、地紋印刷プログラムにおいて地紋印刷が設定されている場合には、ドキュメント管理プログラムにおけるドキュメント格納処理を禁止する制御を行う制御手段をさらに備えることを特徴とする請求項６に記載のデータ処理装置。
【請求項７】
印刷処理関連プログラムを機能拡張できる複数の拡張機能プログラムを搭載したデータ処理装置における設定処理方法であって、
印刷処理に用いられる複数の設定値の間で成立する依存関係を定義した第１のコンフリクト処理ルールとして格納する第１のルール格納工程と、
前記印刷処理関連プログラムの機能と、前記複数の拡張機能プログラムに入力される設定値の間で成立する依存関係を定義した第２のコンフリクト処理ルールとして格納する第２のルール格納工程と、
前記第１のルール格納工程及び前記第２のルール格納工程において格納された前記第１のコンフリクト処理ルール及び前記第２のコンフリクト処理ルールを読み込み、読み込んだ前記第１のコンフリクト処理ルール及び前記第２のコンフリクト処理ルールを基にして、前記複数の設定間に不整合が生じないよう設定値の調整処理を行う設定調整工程と、
を具備することを特徴とする設定処理方法。
【請求項８】
前記第２のコンフリクト処理ルールが第２のルール格納工程が格納したかを確認する確認工程を更に具備することを特徴とする請求項６記載の設定処理方法。
【請求項９】
前記設定調整工程は、前記第１のコンフリクト処理ルール及び前記第２のコンフリクト処理ルールを優先度の高い順に適用して、前記複数の設定間に不整合が生じないよう設定の調整処理を行うことを特徴とする請求項６記載の設定処理方法。
【請求項１０】
利用者が視覚的に前記複数の機能及び前記複数の拡張機能プログラムの設定状態を確認可能な設定状態画面を表示する画面表示工程と、
を更に具備し、
前記画面表示工程が表示する前記設定状態画面は、前記設定調整工程により設定の調整処理後の設定状態を示すものであることを特徴とする請求項６に記載の設定処理方法。
【請求項１１】
前記画面表示工程が表示する前記設定状態画面において、前記複数の機能及び前記複数の追加機能の各設定は、利用者の操作により変更可能であり、利用者が一つまたは複数の機能または前記複数の追加機能の設定を変更した場合に、前記設定調整工程は、読み込んだ前記第１のコンフリクト処理ルール及び前記第２のコンフリクト処理ルールを基にして、変更後の複数の機能と複数の拡張機能プログラムとのいずれか２つの設定間に不整合が生じないよう設定の調整処理を行うことを特徴とする請求項９記載の設定処理方法。
【請求項１２】
前記複数の機能拡張プログラムは、ドキュメント管理プログラムと地紋印刷プログラムであって、前記地紋印刷プログラム及びドキュメント管理プログラムから第１のコンフリクトルール及び第２のコンフリクトルールを取得し、地紋印刷プログラムにおいて地紋印刷が設定されている場合には、ドキュメント管理プログラムにおけるドキュメント格納処理を禁止する制御を行う制御工程をさらに備えることを特徴とする請求項７に記載の方法。
【請求項１３】
印刷処理関連プログラムの機能を拡張する第一の拡張プログラム及び  印刷処理関連プログラムの機能を拡張する第二の拡張プログラムにおいて用いられる複数の印刷処理に用いられる設定値の不整合を回避するためのルールを示すコンフリクトルールをそれぞれ取得する取得手段と、
前記取得手段が取得したコンフリクトルールを用いて、前記第一の拡張プログラム及び第二の拡張プログラムで用いられる印刷設定の設定値の間の不整合があるかを判定する判定手段と、
を備えることを特徴とする情報処理装置。
【請求項１４】
印刷処理関連プログラムの機能を拡張する第一の拡張プログラム及び印刷処理関連プログラムの機能を拡張する第二の拡張プログラムにおいて用いられる複数の印刷処理に用いられる設定値の不整合を回避するためのルールを示すコンフリクトルールをそれぞれ取得する取得工程と、
前記取得工程が取得したコンフリクトルールを用いて、前記第一の拡張プログラム及び第二の拡張プログラムで用いられる印刷設定の設定値の間の不整合があるかを判定する判定工程と、
を備えることを特徴とする設定処理方法。
【請求項１５】
印刷処理関連プログラムの機能を拡張する第一の拡張機能プログラム及び  印刷処理関連プログラムの機能を拡張する第二の拡張機能プログラムにおいて用いられる複数の印刷処理に用いられる設定値の不整合を回避するためのルールを示すコンフリクトルールをそれぞれ取得する取得工程と、
前記取得工程が取得したコンフリクトルールを用いて、前記第一の拡張プログラム及び第二の拡張プログラムで用いられる印刷設定の設定値の間の不整合があるかを判定する判定工程と、
を備えることを特徴とする設定処理方法をコンピュータに実行させる制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、印刷処理関連プログラムにより実現可能な複数の機能に更に拡張機能を付与可能なデータ処理装置および設定処理方法およびコンピュータが読み取り可能なプログラムを格納した記憶媒体および制御プログラムに関するものである。
【背景技術】
【０００２】
従来、プリンタ等のデバイスを製造するハードウェアベンダからのプリンタドライバのインストールセットのリリース形態としては、以下の例がある。
【０００３】
例えばデバイスの出荷時に同梱される場合や、各ベンダのサイトを公開して、ユーザが自由にダウンロードして使用する場合などがある。
【０００４】
このような経路でリリースされたプリンタドライバは、様々な環境において使用されているが、使用環境が多様化する中で、ある特定機能をプリンタドライバで実現したいという要望が多くなってきている。とくに大企業などのエンタープライズ環境においては、その傾向が強くなっている。
【０００５】
このような背景において、昨今プラグイン形式でこの特定機能の追加を実現するプリンタドライバが出現している。
【０００６】
このプラグイン形式のプリンタドライバの機能拡張とは、プリンタベンダから配布されているプリンタドライバのインストールセットとは別に、差分モジュール、つまりプラグインを提供して機能追加を実現する方法である。
【０００７】
例えば、ユーザが設定した印刷機能に応じて、出力機器を制御するプリンタドライバに組み込むモジュール群（プラグイン）を決定する。これにより、冗長性を減少させ、メモリ不足を軽減して、印刷処理の簡潔化や印刷速度の向上を実現するデータ処理装置に関する技術が開示されている（例えば、特許文献１参照）。
【０００８】
このプラグイン形式での機能拡張システムにおいては、上記の例の他、セキュリティ関連の機能をはじめ、様々な機能のプラグインが開発されているが、これらの異なる複数の機能を同一のドライバに追加するというケースがある。このような環境において、ユーザが追加された複数の機能を使用するために、追加先のプリンタドライバのユーザインタフェース（ＵＩ）上に、追加機能独自のＵＩシートを追加することでユーザに追加機能の設定を可能にさせる場合がある。
【０００９】
このとき、ユーザがこの追加機能の設定を変更する場合や、元のプリンタドライバで設定可能な設定を変更する場合に、互いの設定間で不整合が生じる場合が考えられる。
【００１０】
また、追加機能の設定変更をＵＩで実現しない場合においても、追加機能を実現することによって、他の設定値との不整合を生じることが考えられる。
【００１１】
このような場合に、追加機能が追加される前であれば、プリンタドライバは、印刷設定シートにより設定変更環境（ＵＩ）をユーザに提供する際に、設定間に不整合が生じないよう制御していた。具体的には、ユーザの設定変更に応じて設定可能な項目のみを設定可能として、設定不可能な項目（不整合が生じる項目）に対しては設定できないようにしていた。
【００１２】
また、上記のようにプリンタドライバにおける印刷設定において、設定間の不整合を生じないようにする処理をコンフリクト処理という（下記特許文献１、２参照）。
【特許文献１】特開２００２−１０８５８０号公報
【特許文献２】特開２００１−７５７５８号公報
【発明の開示】
【発明が解決しようとする課題】
【００１３】
しかしながら、プリンタドライバにプラグイン形式で新たな機能を複数追加したデータ処理環境下においては、各機能独自設定に伴う不整合状態を十分に判別することができず、各機能独自の設定が不整合状態になってしまう等の課題があった。
【００１４】
本発明は、上記の課題を解決するためになされたもので、本発明の目的は、印刷処理関連プログラム及び拡張プログラムの設定値の間でコンフリクトが発生しているかどうか判別して、適切なコンフリクト処理を実行できる仕組みを提供することである。
【課題を解決するための手段】
【００１５】
上記目的を達成する本発明のデータ処理装置は以下に示す構成を備える。
【００１６】
印刷処理関連プログラムにより実現可能な機能に更に複数の拡張機能を付与可能なデータ処理装置であって、
２つ以上の設定値の間で成立する依存関係に応じて定めた第１のコンフリクト処理ルールとして格納する第１のルール格納手段と、
前記印刷処理関連プログラムの機能と、前記複数の拡張機能に入力される設定値の間で成立する依存関係に応じて定めた第２のコンフリクト処理ルールとして格納する第２のルール格納手段と、
前記第１のルール格納手段及び前記第２のルール格納手段から、前記第１のコンフリクト処理ルール及び前記第２のコンフリクト処理ルールを読み込み、読み込んだ前記第１のコンフリクト処理ルール及び前記第２のコンフリクト処理ルールを基にして、前記複数の機能と前記複数の拡張機能とのいずれか２つの設定間に不整合が生じないよう設定値の調整処理を行う設定調整手段とを具備することを特徴とする。
【００１７】
上記目的を達成する本発明の設定処理方法は以下に示す構成を備える。
【００１８】
２つ以上の設定値の間で成立する依存関係に応じて定めた第１のコンフリクト処理ルールとして格納する第１のルール格納手段と、印刷処理関連プログラムの機能と、前記複数の拡張機能に入力される設定値の間で成立する依存関係に応じて定めた第２のコンフリクト処理ルールとして格納する第２のルール格納手段とを備え、前記印刷処理関連プログラムにより実現可能な機能に更に複数の拡張機能を付与可能なデータ処理装置における印刷設定調整方法であって、
前記第１のルール格納手段及び前記第２のルール格納手段から、前記第１のコンフリクト処理ルール及び前記第２のコンフリクト処理ルールを読み込み、読み込んだ前記第１のコンフリクト処理ルール及び前記第２のコンフリクト処理ルールを基にして、前記複数の機能と前記複数の拡張機能とのいずれか２つの設定間に不整合が生じないよう設定値の調整処理を行う設定調整ステップを具備することを特徴とする。
【発明の効果】
【００１９】
本発明によれば、印刷処理関連プログラム（プリンタドライバ）にプラグイン形式で新たな機能を複数追加したデータ処理環境下においても、追加される各機能独自設定に伴う不整合状態を判別することができる。
【００２０】
また、自動的、かつ的確なコンフリクト処理を実現して、各機能独自の設定が不整合状態であっても、正常な印刷を実行可能な印刷設定環境に自動調整して、追加される複数の機能に対する印刷設定を正常に行える。
【００２１】
従って、追加される各機能独自設定に伴う不整合を解消して、意図する印刷結果を正常に得られる印刷設定環境を自在に構築できる。
【発明を実施するための最良の形態】
【００２２】
次に本発明を実施するための最良の形態について図面を参照して説明する。
【００２３】
＜システム構成の説明＞
以下添付図面を参照して本発明の好適な実施形態について詳細に説明する。
【００２４】
図１は、本発明の第１実施形態を示すデータ処理装置を適用可能な印刷処理システムの構成を説明するブロック図である。
【００２５】
なお、特に断らない限り、本発明の機能が実行されるのであれば、単体の機器であっても、複数の機器からなるシステムであっても本発明を適用できることは言うまでもない。また、ＬＡＮ，ＷＡＮ等のネットワークを介して接続が為され処理が行われるシステムであっても本発明を適用できることは言うまでもない。
【００２６】
図１において、３０００はホストコンピュータで、システムバス４に接続される各デバイスをＣＰＵ１が総括的に制御する。ＣＰＵ１は、ＲＯＭ３のプログラム用ＲＯＭあるいは外部メモリ１１に記憶された文書処理プログラム等に基づいて図形、イメージ、文字、表（表計算等を含む）等が混在した文書処理を実行する。
【００２７】
また、このＲＯＭ３のプログラム用ＲＯＭあるいは外部メモリ１１には、ＣＰＵ１の制御プログラムであるオペレーティングシステムプログラム（以下ＯＳ）等を記憶する。また、ＲＯＭ３のフォント用ＲＯＭあるいは外部メモリ１１には上記文書処理の際に使用するフォントデータ等を記憶する。さらに、ＲＯＭ３のデータ用ＲＯＭあるいは外部メモリ１１には上記文書処理等を行う際に使用する各種データを記憶する。
【００２８】
２はＲＡＭで、ＣＰＵ１の主メモリ、ワークエリア等として機能する。５はキーボードコントローラ（ＫＢＣ）で、キーボード（ＫＢ）９や不図示のポインティングデバイスからのキー入力を制御する。６はＣＲＴコントローラ（ＣＲＴＣ）で、ＣＲＴディスプレイ（ＣＲＴ）１０の表示を制御する。
【００２９】
７はディスクコントローラ（ＤＫＣ）で、外部メモリ１１とのアクセスを制御する。外部メモリ１１には、ブートプログラム、各種のアプリケーション、フォントデータ、ユーザファイル、編集ファイル、プリンタ制御コマンド生成プログラム（以下プリンタドライバ）等を記憶する。外部メモリ１１は、ハードディスク（ＨＤ）、フレキシブルディスク（ＦＤ）等で構成される。
【００３０】
８はプリンタコントローラ（ＰＲＴＣ）で、所定の双方向性インタフェース２１を介してプリンタ１５００に接続されて、プリンタ１５００との通信制御処理を実行する。なお、ＣＰＵ１は、例えばＲＡＭ２上に設定された表示情報ＲＡＭへのアウトラインフォントの展開（ラスタライズ）処理を実行し、ＣＲＴ１０上でのＷＹＳＩＷＹＧを可能としている。
【００３１】
また、ＣＰＵ１は、ＣＲＴ１０上の不図示のマウスカーソル等で指示されたコマンドに基づいて登録された種々のウインドウを開き、種々のデータ処理を実行する。ユーザは印刷を実行する際、印刷の設定に関するウインドウを開き、プリンタの設定や、印刷モードの選択を含むプリンタドライバに対する印刷処理方法の設定を行える。
【００３２】
プリンタ１５００において、１２はプリンタＣＰＵで、ＲＯＭ１３のプログラム用ＲＯＭに記憶された制御プログラムに基づいてシステムバス１５に接続される印刷部（プリンタエンジン）１７に出力情報としての画像信号を出力する。
【００３３】
また、プリンタＣＰＵ１２は、外部メモリ１４に記憶された制御プログラム等に基づいてシステムバス１５に接続される印刷部（プリンタエンジン）１７に出力情報としての画像信号を出力する。
【００３４】
また、このＲＯＭ１３のプログラムＲＯＭには、ＣＰＵ１２の制御プログラム等を記憶する。ＲＯＭ１３のフォント用ＲＯＭには上記出力情報を生成する際に使用するフォントデータ等を記憶する。また、ＲＯＭ１３のデータ用ＲＯＭにはハードディスク等の外部メモリ１４がないプリンタの場合には、ホストコンピュータ上で利用される情報等を記憶している。
【００３５】
ＣＰＵ１２は入力部１８を介してホストコンピュータとの通信処理が可能となっており、プリンタ内の情報等をホストコンピュータ３０００に通知可能に構成されている。
【００３６】
１９は前記ＣＰＵ１２の主メモリ、ワークエリア等として機能するＲＡＭで、図示しない増設ポートに接続されるオプションＲＡＭによりメモリ容量を拡張することができるように構成されている。
【００３７】
なお、ＲＡＭ１９は、出力情報展開領域、環境データ格納領域、ＮＶＲＡＭ等に用いられる。前述したハードディスク（ＨＤ）、ＩＣカード等の外部メモリ１４は、ディスクコントローラ（ＤＫＣ）２０によりアクセスを制御される。外部メモリ１４は、オプションとして接続され、フォントデータ、エミュレーションプログラム、フォームデータ等を記憶する。また、１５０１は前述した操作パネルで、操作のためのスイッチおよびＬＥＤ表示器等が配されている。
【００３８】
また、前述した外部メモリは１個に限らず、少なくとも１個以上備え、内蔵フォントに加えてオプションフォントカード、言語系の異なるプリンタ制御言語を解釈するプログラムを格納した外部メモリを複数接続できるように構成されていてもよい。さらに、図示しないＮＶＲＡＭを有し、操作パネル１５０１からのプリンタモード設定情報を記憶するようにしてもよい。
【００３９】
さらに、本実施形態では、ＯＳとして、マクロソフト社のＷＩＮＤＯＷＳ（登録商標）に適用する例について説明するが、当該ＯＳ以外のＯＳであっても、本発明を適用できる。
【００４０】
図２は、図１に示したＲＡＭ２のメモリマップの一例を示す図である。本例は、所定のアプリケーションおよび印刷処理関連プログラムを起動して、ホストコンピュータ３０００上のＲＡＭ２にロードされた状態のＲＡＭ２のメモリマップを示している。
【００４１】
図２において、ＲＡＭ２には、図示の如く、ＢＩＯＳ２０６、ＯＳ２０５をはじめ、アプリケーショ２０１、印刷処理関連プログラム２０４、および関連データ２０３がロードされており、さらに空きメモリ領域（空きメモリ）２０２も確保されている。
【００４２】
これにより、アプリケーション２０１および印刷処理関連プログラム２０４は実行可能状態にある。
【００４３】
図３は、図１に示したホストコンピュータ３０００のプリンタドライバの拡張システムの一例を示すブロック図である。本例は、プリンタドライバ３０７にプラグインモジュールを追加した場合のＵＩに関する構成を示している。以下、本実施形態におけるプリンタドライバ３０７の拡張システムについて説明する。
【００４４】
図３において、プラグインモジュールは、ＵＩドライバ１１０３の拡張機能を有するＵＩプラグイン１１０４と、グラフィックスドライバ１１０５の拡張機能を有するグラフィックスプラグイン１１０６から構成されている。以下、それぞれのプラグインモジュールについて説明する。
【００４５】
ＵＩプラグイン１１０４は、プリンタドライバ３０７が利用者に提供する印刷設定シート（ＵＩ）に新たなシートを加える場合に用いる。また、ＵＩドライバ１１０３で処理しているインストール時の処理などのＵＩドライバ１１０３に実装されている様々なイベント処理をカスタマイズする場合に用いる。
【００４６】
ＵＩドライバ１１０３は、システムに対してエクスポートしているＤＤＩ（Ｄｅｖｉｃｅ  Ｄｒｉｖｅｒ  Ｉｎｔｅｒｆａｃｅ）がコールされた際に、ＵＩプラグイン１１０４が公開しているインタフェースを取得する。ＵＩドライバ１１０３が取得したＵＩプラグイン１１０４のインタフェースを用いて、ＵＩプラグイン１１０４と通信することで、ＵＩドライバ１１０３に実装されたカスタマイズ処理が実行される。
【００４７】
一方、グラフィックスプラグイン１１０６は、ＧＤＩ（Ｇｒａｐｈｉｃｓ  Ｄｅｖｉｃｅ  Ｉｎｔｅｒｆａｃｅ）１１０２とグラフィックスドライバ１１０５とのインタフェースであるＤＤＩの処理を横取りする場合に用いる。または特定のタイミングで処理を追加する場合や、印刷データのスプール処理を横取りする場合に用いる。
【００４８】
グラフィックスドライバ１１０５がエクスポートしているＤＤＩは、ジョブを生成するためにＧＤＩ１１０２から適宜コールされる。そして、その初期化のタイミングで、グラフィックスドライバ１１０５は、グラフィックスプラグイン１１０６が公開しているインタフェースを取得し、ＲＡＭ２に保持する。
【００４９】
ここで取得したインタフェースを用いて、ＤＤＩがコールされるタイミングにそのＤＤＩに対応したグラフィックスプラグイン１１０６の処理を呼び出す。
【００５０】
呼び出されたグラフィックスプラグイン１１０６は、プラグイン内に実装された処理を実行し、処理を再びグラフィックスドライバ１１０５に返す。
【００５１】
ここで、グラフィックスプラグイン１１０６が処理を横取りしている場合、ＤＤＩはそこで処理を終了し、追加処理を実装している場合には、そのまま後続する処理を続ける。
【００５２】
グラフィックスプラグイン１１０６がグラフィックスドライバ１１０５の印刷データのスプール処理を横取りする場合は、グラフィックスドライバ１１０５内の印刷データをスプールする直前にグラフィックスプラグイン１１０６のインタフェースをコールする。そして、コールされたグラフィックスプラグイン１１０６は、スプールされるデータを取得し、特定の処理を実行する。その後、再度グラフィックスドライバ１１０５のスプール処理関数をコールすることで、グラフィックスドライバ１１０５に特定の処理を施したデータを渡す。
【００５３】
そして、データを受け取ったグラフィックスドライバ１１０５は、実際にシステムスプーラ１１０７にスプールする処理を実行する。このようにプラグインモジュールに拡張機能を実装することで、プリンタドライバ３０７の拡張システムを実現している。
【００５４】
次に、印刷処理関連プログラム（プリンタドライバ）がホストコンピュータ３０００上のＲＡＭ２にロードされ実行可能となった状態のメモリマップについて説明する。
【００５５】
図２は、印刷処理関連プログラム（プリンタドライバ）がホストコンピュータ３０００上のＲＡＭ２にロードされ実行可能となった状態のメモリマップ例を示す図である。
【００５６】
図２に示すように、ＲＡＭ２には、アプリケーション２０１、空きメモリ２０２、関連データ２０３、印刷処理関連プログラム（以下、プリンタドライバとする）２０４、ＯＳ２０５及びＢＩＯＳ２０６から構成されるメモリマップが形成される。
【００５７】
図４は、図１に示したホストコンピュータ３０００の各種のモジュールのプリント処理例を示す概念ブロック図である。本例は、プリンタドライバ３０７に複数の追加機能である第１のプラグインモジュールセット３１０および第２のプラグインモジュールセット３１３がインストールされている状態の各モジュール間の構成を示す例である。
【００５８】
図４に示すように第１のプラグインモジュールセット３１０には第１のプラグインモジュール３０９と、第１のプラグインモジュール３０９独自のコンフリクト処理ルール３０８が同梱されている。
【００５９】
同様に、第２のプラグインモジュールセット３１３においても第２のプラグインモジュール３１２と、第２のプラグインモジュール３１２独自のコンフリクト処理ルール３１１が同梱されている。
【００６０】
また、プラグイン前のプリンタドライバ３０７は、コンフリクト処理ルール３０１、推論エンジン３０２、コンフリクトマネージャ３０３、状態変数リスト３０４、内部構造体３０５及びドライバ管理部３０６から構成されていた。
【００６１】
また、本実施形態のプリンタドライバ３０７は、第１のプラグインモジュール３０９および第２のプラグインモジュール３１２を組み込むことにより、それぞれ新たにスタンプ機能と製本印刷機能とを有する場合を示した。しかし、プラグインモジュールにより追加される機能はこれに限定されるものではない。
【００６２】
第一のプラグインとして、ドキュメント管理プラグインが考えられる。地紋プラグインによって地紋印刷が新たにプリンタドライバに入力可能となり、ドキュメント管理プラグインにより、サーバ装置（図示省略）へのドキュメントが登録される（ストアモード）。
【００６３】
一般に複写機には、原稿の微小なドットを読み取る入力解像度や微小なドットを再現する出力解像度に依存した再現能力の限界が存在する。
【００６４】
地紋画像の背景部のドットが、複写機で再現できるドットの限界より小さく形成され、潜像部のドット塊が限界より大きく形成されている場合、複写により地紋画像の大きなドット塊による画像は再現される。そして、小さなドットによる画像は再現されず、潜像が顕在化される。
【００６５】
また、複写によって分散した小さなドットが完全に消えなくとも、集中したドット塊と比較して複写後の濃度がより低い場合でも、潜像は相対的により顕著に認識できる。このように画像が浮かび上がる画像は顕像と呼ばれる。禁複写のような顕像を埋め込むことにより、複写牽制のための印刷として機能する。
【００６６】
地紋印刷が設定されている場合に、文書管理モジュールにおいて外部コンピュータに対する印刷データの登録を行うストア印刷の設定を許すと、セキュリティが低下する恐れがある。
【００６７】
よって、第１のプラグインモジュール３０９および第２のプラグインモジュール３１２において、地紋印刷が設定されている場合に、ストア印刷を禁止するようなルールを記憶させることが考えられる。
【００６８】
第１のプラグインモジュール３０９および／又は第２のプラグインモジュール３１２からこのコンフリクトルールをコンフリクトマネージャ３０３が取得する（３０７−１５）。この取得したルールに基づき、コンフリクトマネージャ３０３は、地紋印刷が設定されている場合に、ストア印刷を禁止するように制御する（３０７−２７）。
【００６９】
３０１はコンフリクト処理ルールであり、プラグインする前のプリンタドライバ３０７における各設定間の不整合を防ぐためのルールが定義されている。尚、コンフリクト処理ルールの具体例については後述する。
【００７０】
３０３はコンフリクトマネージャであり、状態変数リスト３０４及び内部構造体３０５内のデータが一致するよう管理する。
【００７１】
ここで、状態変数リスト３０４とは、プリンタドライバ３０７で設定可能な設定項目（例えば、グループ、ステイプル、ソート）に対応する状態変数（例えば、Ｇｒｏｕｐ、Ｓｔａｐｌｅ、Ｃｏｌｌａｔｅ）とその値（設定項目のオン／オフ）のリストである。
【００７２】
また、内部構造体３０５内のデータとはプリンタドライバ３０７で設定可能な設定項目（例えばグループ、ステイプル、ソート）に対応する変数であるメンバ（例えばｃＧｒｏｕｐ、ｃＳｔａｐｌｅ、ｃＣｏｌｌａｔｅ）とその値（オン＝１、オフ＝０）である。
【００７３】
３０２は推論エンジンであり、コンフリクト処理ルール３０１及び第１のプラグインのコンフリクト処理ルール３０８、第２のプラグインのコンフリクト処理ルール３１１をコンフリクトマネージャ３０３を介して読み込む。そして、コンフリクトチェック（ルールに応じた設定であるかの検査）を行い、その結果をコンフリクトマネージャ３０３へ返信する。
【００７４】
３０６はドライバ管理部であり、アプリケーション２０１からの印刷設定要求などに応じて、初期化処理や印刷設定を行うためのＵＩの表示制御や、プリンタドライバ３０７内の動作制御を行う。
【００７５】
また、ドライバ管理部３０６は、コンフリクトマネージャ３０３に各設定間の不整合が生じないようコンフリクト処理を依頼する。
【００７６】
また、ドライバ管理部３０６は第１のプラグインモジュール３０９および第２のプラグインモジュール３１２とのデータの授受も行う。
【００７７】
ここで、図４に示したコンフリクトマネージャ３０３及び推論エンジン３０２が、状態変数リスト３０４、内部構造体３０５及びコンフリクト処理ルール３０１を利用してどのようなコンフリクト処理を行うかを簡単な具体例を示して説明する。
【００７８】
図５は、図４に示したコンフリクトマネージャ３０３及び推論エンジン３０２におけるコンフリクト処理体例を示す図である。
【００７９】
なお、図５においては、コンフリクトマネージャ３０３が、変数リスト３０４及び内部構造体３０５を利用して、推論エンジン３０２がコンフリクト処理ルール３０１を利用していることを示す例である。このため、コンフリクトマネージャ３０３の枠内に状態変数リスト３０４及び内部構造体３０５を記載して、推論エンジン３０２の枠内にコンフリクト処理ルール３０１を記載している。
【００８０】
図５に示す具体例では、プリンタ機能名Ａ，Ｂ，Ｃ…の設定に応じたコンフリクト処理の例を示している。
【００８１】
図５に示すように、内部構造体３０５には、プリンタ機能名Ａ、Ｂ、Ｃ…に対応するメンバｉｎｔ  ｃＡ、ｃＢ、ｃＣ…とその値「０」、「１」、「０」…が格納されている。
【００８２】
コンフリクトマネージャ３０３は、この内部構造体３０５のメンバとその値を参照することで、状態変数Ａ＝ＯＦＦ、状態変数Ｂ＝ＯＮ、状態変数Ｃ＝ＯＦＦ、…という状態変数リスト３０４を生成する。
【００８３】
推論エンジン３０２は、この状態変数リスト３０４を参照するので、推論エンジン３０２内における、プリンタ機能名Ａ、Ｂ、Ｃ…の状態値の初期値は、「ＯＦＦ」、「ＯＮ」、「ＯＦＦ」となる。
【００８４】
また、コンフリクト処理ルール３０１には、
Ａ（ＯＮ）＜−Ｂ（ＯＮ）、Ｃ（ＯＦＦ）というルールが定義されていたとする。
【００８５】
これは、機能Ｂがオンかつ機能Ｃがオフの場合は機能Ａをオンにするというルールを定義するものである。
【００８６】
推論エンジン３０２は、コンフリクト処理ルール３０１を、コンフリクトマネージャ３０３を介して読み込む。
【００８７】
ここで、推論エンジン３０２でコンフリクトチェックの推論が行われたとする。初期値がプリンタ機能名Ｂ＝ＯＮ、プリンタ機能名Ｃ＝ＯＦＦであるので、コンフリクト処理ルール３０１で定義されたルールＡ（ＯＮ）＜−Ｂ（ＯＮ）、Ｃ（ＯＦＦ）が成立する。
【００８８】
これにより、推論エンジン３０２は、左辺のプリンタ機能名Ａの状態変数値をＯＮに変更する。すなわち、推論エンジン３０２は、状態変数リスト３０４の状態変数Ａ＝ＯＮに更新する。
【００８９】
推論エンジン３０２において、コンフリクトチェックの推論が終了した後、コンフリクトマネージャ３０３は変更された状態変数Ａの値をプリンタドライバ３０７の内部構造体３０５の対応するメンバｉｎｔ  ｃＡに反映させる。
【００９０】
つまりｉｎｔ  ｃＡの値は上記ルールが成立した事によって「０」から「１」に変更される。
【００９１】
以上に示すような処理により、コンフリクトマネージャ３０３及び推論エンジン３０２は、設定間に不整合が生じないように、状態変数リスト３０４を更新する。そして、それを、ドライバ管理部３０６がＵＩに利用する内部構造体３０５内の設定情報（メンバｃＡ、ｃＢ、…）に反映している。
【００９２】
なお、上述したコンフリクト処理ルール３０１で定義したルールは、簡単な具体例を示すためのものであり、本実施形態のコンフリクト処理ルール３０１は、例えば以下に示すようなルール例（１）〜（３）を定義している。
【００９３】
Ｃｏｌｌａｔｅ（ＯＦＦ）＜−Ｇｒｏｕｐ（ＯＮ）    …（１）
Ｃｏｌｌａｔｅ（ＯＦＦ）＜−Ｓｔａｐｌｅ（ＯＮ）  …（２）
Ｃｏｌｌａｔｅ（ＯＮ）＜−Ｇｒｏｕｐ（ＯＦＦ）    …（３）
また、第１のプラグインのコンフリクト処理ルール３０８は、例えば以下に示すようなルール例（４）を定義している。
【００９４】
Ｐｏｓｔｅｒ（ＯＦＦ）＜−Ｓｔａｍｐ（ＯＮ）      …（４）
さらに、第２のプラグインのコンフリクト処理ルール３１１は、例えば以下に示すようなルール例（５）を定義している。
【００９５】
Ｇｒｏｕｐ（ＯＦＦ）＜−Ｂｏｏｋｌｅｔ（ＯＮ）    …（５）
ここで、Ｃｏｌｌａｔｅは、ソート機能を示し、Ｇｒｏｕｐは、グループ機能を示し、Ｓｔａｐｌｅは、ステイプル機能を示し、Ｓｔａｍｐは、スタンプ印刷機能を示し、Ｂｏｏｋｌｅｔは、製本印刷機能を示す。
【００９６】
次に、本実施形態のホストコンピュータ３０００におけるプリンタドライバ３０７のＵＩに関する処理について説明する。
【００９７】
ＯＳ２０５管理の下で動作するアプリケーション２０１よりプリンタドライバ３０７の備える初期化処理が呼び出されると、ＯＳ２０５の管理の下、ＲＡＭ２にプリンタドライバ３０７がロードされる。
【００９８】
プリンタドライバ３０７がＲＡＭ２にロードされると、ドライバ管理部３０６に備えられたプリンタドライバ３０７の初期化処理部が呼び出され、初期化処理が行われる。
【００９９】
図６〜図８は、本発明に係るデータ処理装置における第１のデータ処理手順の一例を示すフローチャートであり、図４に示したアプリケーション２０１からプリンタドライバ３０７のＵＩを開く際の初期化処理する手順に対応する。なお、（２０１−１）〜（２０１−５）はアプリケーション２０１が実行するステップに対応する。また、（３０７−１）〜（３０７−２８）は図４に示すドライバ管理部３０６が実行するステップに対応する。さらに、（３１０−１）〜（３１０−１０）は第１プラグインモジュールセット３１０が実行するステップに対応する。また、（３１３−１）〜（３１３−１０）は第２のプラグインモジュールセット３１３が実行するステップに対応する。
【０１００】
尚、図６に示す第１のプラグインモジュール３０９は、図４に示したように、プリンタドライバ３０７にプラグインにより組み込まれたものである。
【０１０１】
まず、アプリケーション２０１はプリンタドライバ３０７の内部構造体を格納するためのメモリ領域のサイズをプリンタドライバ３０７に問い合わせる（２０１−１）。
【０１０２】
プリンタドライバ３０７は、ステップ（２０１−１）による問い合わせを受けると（３０７−１）、第１のプラグインモジュール３０９に対して、第１のプラグインモジュール３０９が必要な内部構造体のデータ領域のサイズを問い合わせる（３０７−２）。
【０１０３】
第１のプラグインモジュール３０９がデータ領域のサイズの問い合わせを受けると（３１０−１）、必要な内部構造体の領域サイズを計算し（３１０−２）、計算された領域のサイズをプリンタドライバ３０７に返す（３１０−３）。
【０１０４】
その後、プリンタドライバ３０７が第１のプラグインモジュール３０９より計算された領域のサイズを受けると（３０７−３）、第１のプラグインモジュール３０９に必要な内部構造体のサイズを取得する（３０７−４）。
【０１０５】
本実施形態においては、２つのプラグインモジュール（第１のプラグインモジュール３０９、第２のプラグインモジュール３１２）がインストールされている状態を想定している。このため、次にプリンタドライバ３０７は、第２のプラグインモジュール３１２に対して、第２のプラグインモジュール３１２が必要な内部構造体３０５のデータ領域のサイズを問い合わせる（３０７−５）。
【０１０６】
第２のプラグインモジュール３１２は、データ領域のサイズを問い合わせを受けると（３１３−１）、必要な内部構造体３０５の領域サイズを計算し（３１３−２）、計算された領域のサイズをプリンタドライバ３０７に返す（３１３−３）。
【０１０７】
プリンタドライバ３０７は、第２のプラグインモジュール３１２に必要な内部構造体のサイズを受けると（３０７−６）、第２のプラグインモジュール３１２に必要な内部構造体のサイズを取得する（３０７−７）。その後、プリンタドライバ３０７に必要な内部構造体のサイズに、ステップ（３０７−４）、（３０７−６）で取得した２つのプラグインモジュールのサイズの合計を加えたデータサイズをアプリケーション２０１に返す（ステップ３０７−８）。
【０１０８】
アプリケーション２０１は、プリンタドライバ３０７から返された値を受け取り（２０１−２）、プリンタドライバ３０７から返された値を取得し（２０１−３）、該取得したサイズ分のメモリ領域を空きメモリ２０２上に確保する（２０１−４）。
【０１０９】
次に、ステップ（２０１−４）で確保したメモリ領域をプリンタドライバ３０７に渡して、プリンタドライバ３０７のＵＩを開くようにプリンタドライバ３０７に指示を出し（２０１−５）、処理を終了する。
【０１１０】
この時の内部構造体３０５は例えば、図９に示すようなメモリマップ構成になっている。
【０１１１】
図９は、図４に示したプリンタドライバ３０７が必要とする内部構造体３０５のメモリマップ構成例を示す図である。
【０１１２】
図９に示すように、内部構造体３０５は、パブリック領域６０１を備える。また、プリンタドライバ３０７に必要なデータ領域サイズに応じたドライバプライベート領域６０２を備える。さらに、第１のプラグインモジュール３０９と第２のプラグインモジュール３１２の独自データ領域サイズに応じたプラグインプライベート領域６０３とから構成されている。
【０１１３】
次に、プリンタドライバ３０７のＵＩを開く指示を受けると（３０７−９）、受け取った指示に基づき、プリンタドライバ３０７のインタフェース（Ｄｏｃｕｍｅｎｎｔ  Ｐｒｏｐｅｒｔｙ）が呼び出される（３０７−１０）。
【０１１４】
そして、プリンタドライバ３０７は、第１のプラグインモジュールセット３１０に対して第１のプラグインモジュール３０９に同梱されている第１のコンフリクト処理ルール３０８の格納場所の問い合わせを行う（３０７−１１）。
【０１１５】
そして、第１のプラグインモジュール３０９が同梱されている第１のコンフリクト処理ルール３０８の格納場所の問い合わせを受ける（３１０−４）。そして、第１のプラグインモジュール３０９の設定値に関連する第１のコンフリクト処理ルール３０８が記述されているファイルの格納場所をプリンタドライバ３０７に返す（３１０−５）。
【０１１６】
次に、該第１のプラグインモジュール３０９から格納場所を受ける（３０７−１２）。次に、プリンタドライバ３０７は、第２のプラグインモジュール３１２に同梱されている第２のコンフリクト処理ルール３１１の格納場所の問い合わせを行う（３０７−１３）。
【０１１７】
そして、第２のプラグインモジュール３１２が同梱されている第２のコンフリクト処理ルール３１１の格納場所の問い合わせを受ける（３１３−４）。そして、第２のプラグインモジュール３１２は、第２のプラグインモジュール３１２の設定値に関連する第２のコンフリクト処理ルール３１１が記述されているファイルの格納場所をプリンタドライバ３０７に返す（３１３−５）。
【０１１８】
そして、プリンタドライバ３０７が第２のコンフリクト処理ルール３１１が記述されているファイルの格納場所を受ける（３０７−１４）。そして、推論エンジン３０２は、第１のＰＭ３０９と同梱されているコンフリクト処理ルール３０８と、第２のＰＭ３１２と同梱されているコンフリクト処理ルール３１１とを、コンフリクトマネージャ３０３を介して、ＲＡＭ２中に読み込む。そして、その後、コンフリクト処理ルール３０１を読み込む（３０７−１５）。
【０１１９】
なお、図４で説明したように、コンフリクト処理ルール３０１、３０８、３１１に定義されている全てのプリンタ機能名については、状態変数リスト３０４として、図５に示すように各プリンタ機能名に対応した状態変数とその値を持っている。
【０１２０】
図４でも示したように、状態変数リスト３０４の状態変数の値はプリンタドライバ３０７で使用される内部構造体３０５の対応するメンバの値と連動している。状態変数リスト３０４における全ての状態変数の初期値はその内部構造体３０５のメンバの値が初期値となる。
【０１２１】
そして、プリンタドライバ３０７は、コンフリクトマネージャ３０３を介して第１のプラグインの状態変数の初期化処理を行う（３０７−１６）。
【０１２２】
まず、プリンタドライバ３０７は、第１のプラグインモジュール３０９の状態変数の初期化を指示すると、該指示を受ける（３１０−６）。そして、第１のプラグインモジュール３０９は、第１のプラグインモジュール独自の状態変数を初期化する（３１０−７）。その後、第１のプラグインモジュール３０９が初期化された状態変数をプリンタドライバ３０７に返す。
【０１２３】
そして、第１のプラグインモジュール３０９より初期化された状態変数を受け取ると（３０７−１７）、プリンタドライバ３０７はコンフリクトマネージャ３０３を介して状態変数リスト３０４に追加する。
【０１２４】
同様に、プリンタドライバ３０７は、第２のプラグインモジュール３１２の状態変数の初期化を指示すると（３０７−１８）、該指示を受ける（３１３−６）。その後、第２のプラグインモジュール３１２は、第２のプラグインモジュール独自の状態変数を初期化した後、初期化された状態変数をプリンタドライバ３０７に返す（３１３−７）。
【０１２５】
そして、プリンタドライバ３０７が第２のプラグインモジュール３１２より初期化された状態変数を受け取ると（３０７−１９）、プリンタドライバ３０７はコンフリクトマネージャ３０３を介して状態変数リスト３０４に追加する。
【０１２６】
その後、プリンタドライバ３０７は、自身の状態変数を初期化する（３０７−２０）。次に、プリンタドライバ３０７は、図１０の（ａ），（ｂ）に示すような第１のプラグインモジュール３０９独自のＵＩである設定シートを表示するために、第１のプラグイン独自設定シートの情報を問い合わせる（３０７−２１）。
【０１２７】
第１のプラグインモジュール３０９が第１のプラグイン独自設定シートの情報を問い合わせを受ける（３１０−８）。その後、第１のプラグインモジュール３０９は、独自設定シートを生成して（３１０−９）、生成した独自設定シートの情報をプリンタドライバ３０７に返し（３１０−１０）、処理を終了する。
【０１２８】
そして、第１のプラグインモジュール３０９より生成された独自設定シートの情報を受け取ると（３０７−２２）、プリンタドライバ３０７は、第１のプラグインモジュール３０９独自の設定シート情報を取得する（３０７−２３）。
【０１２９】
同様に、図１１の（ａ），（ｂ）に示すような第２のプラグインモジュール３１２独自のＵＩである設定シートを表示するために、第２のプラグイン独自設定シートの情報を問い合わせる（３０７−２４）。
【０１３０】
第２のプラグインモジュール３１２が第２のプラグイン独自設定シートの情報を問い合わせを受ける（３１３−８）。その後、第２のプラグインモジュール３１２は、独自設定シートを生成して（３１３−９）、生成した独自設定シートの情報をプリンタドライバ３０７に返し（３１３−１０）、処理を終了する。
【０１３１】
そして、第２のプラグインモジュール３１２より生成された独自設定シートの情報を受け取ると（３０７−２５）、プリンタドライバ３０７は、第２のプラグインモジュール３１２独自の設定シート情報を取得する（３０７−２６）。
【０１３２】
次に、プリンタドライバ３０７において、推論エンジン３０２によるコンフリクトチェック及び状態変数リスト３０４の更新を行う。また、コンフリクトマネージャ３０３による内部構造体３０５の更新などのコンフリクト処理が行われ、設定間に不整合があれば訂正される（３０７−２７）。
【０１３３】
次に、図１０の（ａ）に示すような印刷設定ＵＩを表示して（３０７−２８）、処理を終了する。具体的には、プリンタドライバ３０７の設定シートとともに、ステップ（３０７−２３），（３０７−２６）で取得した第１のプラグインモジュール３０９と第２のプラグインモジュール３１２の設定シートを加えて印刷設定UIを表示する。
【０１３４】
これにより、プリンタドライバ３０７に複数のプラグインモジュールを追加してシステム状態を変更した場合、プラグイン独自の印刷設定をプリンタドライバ本体の設定との間で不整合が起こることなく自動的に設定する。したがって、プラグインとして追加機能を付加するシステムを構築する場合に、システム変更前とシステム変更後による設定値の調整負担が大幅に軽減され、ユーザの利便性が向上する。
【０１３５】
なお、本実施形態では、ＯＳ２０５が、例えばＷＩＮＤＯＷＳ（登録商標）の場合には、後述する内部構造体として、ＤＥＶＭＯＤＥ構造体が生成されるものとする。そして、上記図６〜図８または後述する図１２，図１３に示すフローチャートは、アプリケーション２０１がＤＥＶＭＯＤＥ構造体を生成するタイミングで実行されるものとする。
【０１３６】
さらに、ＵＩ画面に対する設定変更の履歴をＮＶＲＡＭ等に記憶しておくことにより、プラグインのインストール等でＵＩ制御が変更された旨を、オペレータやサービスマンが確認できるように構成してもよい。
【０１３７】
図１０，図１１は、本発明に係るデータ処理装置における印刷設定シート例を示す図であり、図６等の処理によりプラグイン後のプリンタドライバ３０７が利用者に提供するＵＩである印刷設定シート例を示す。
【０１３８】
図１０の（ａ）に示すように、本来のプリンタドライバ３０７の設定シート（ページ設定、仕上げ）に「プラグイン１の設定」という第１のプラグインモジュール３０９の設定シート８０が加わっている。また、図１１の（Ｂ）に示すように「プラグイン２の設定」という第２のプラグインモジュール３１２の設定シート９０が加わっている。
【０１３９】
また、設定シート８０，９０は、利用者がスタンプ機能のオン／オフ、オン製本印刷機能のオン／オフを設定するためのチェックボックス（ＣＢ）８１，９１を有する。
【０１４０】
なお、図１０の（ａ）の設定シート８０においては、チェックボックス８１がチェックされていないので、スタンプ印刷機能はオフされている状態（状態変数が初期値の状態）である。また、図１１の（ａ）の設定シート９０においては、チェックボックス９１がチェックされていないので、製本印刷機能はオフされている状態（状態変数が初期値の状態）である。
【０１４１】
ここで、図１０の（ａ）の設定シート８０において、利用者がチェックボックス８１を図１０の（ｂ）に示すようにチェックすることで、スタンプ印刷機能をオンしたこととなる。また、図１１の（ａ）の設定シート９０において、利用者がチェックボックス９１を図１１の（ｂ）に示すようにチェックすることで、製本印刷機能をオンしたこととなる。
【０１４２】
次に、図１０の（ｂ）に示すように、第１のプラグインの機能であるスタンプ印刷機能をオンした後、図１１の（ｂ）に示すように、第２のプラグインの機能である製本印刷機能をオンした場合のコンフリクト処理について説明する。
【０１４３】
図１２は、本発明に係るデータ処理装置における第２のデータ処理手順の一例を示すフローチャートである。本例は、図１０（ｂ），図１１（ｂ）に示すような第１、２のプラグインの機能であるスタンプ印刷機能、製本印刷機能をオンに変更した場合のコンフリクト処理手順に対応する。
【０１４４】
なお、（３０７０−１）〜（３０７０−１２）は図４に示すドライバ管理部３０６が実行するステップに対応する。
【０１４５】
また、（３１００−１）〜（３１００−３）は第１プラグインモジュール（ＰＭ）３１０が実行するステップに対応する。
【０１４６】
さらに、（３１３０−１）〜（３１３０−３）は第２のプラグインモジュール（ＰＭ）３１３が実行するステップに対応する。
【０１４７】
まず、ユーザが、図１に示したＣＲＴ１０上に表示される、例えば図１０の（ａ）から図１０の（ｂ）のＵＩ画面状態に示すように、ＣＢ８１をチェックする操作に応じた、内部構造体３０５や状態変数リスト３０４の更新を行う（３０７０−１）。
【０１４８】
次に、当該ＵＩ操作を受けて、図７に示したステップ（３０７−１５）で読み込んだ第１のＰＭ３０９のコンフリクト処理ルール３０８を適用する。また、図７に示したステップ（３０７−１５）で読み込んだ第２のＰＭ３１２のコンフリクト処理ルール３１１を適用する（３０７０−２）。
【０１４９】
続いて、プリンタドライバ３０７本体が保持するコンフリクト処理ルール３０１を適用する処理を行う（３０７０−３）。これらのコンフリクト処理に応じて、状態変数リスト３０４の状態変数が更新される（３０７０−４）。ここで、ユーザが、図１１の（ａ）に示すＵＩ画面状態から図１１の（ｂ）に示すように、ＵＩ画面のチェックボックス９１をチェックする操作に応じた処理についても同様に処理される。
【０１５０】
尚、本実施形態においては、ステップ（３０７０−２），（３０７０−３）の処理ルールの適用は、図７に示したステップ（３０７−１５）において読み込まれた順番に応じて適用している。
【０１５１】
また、複数の処理ルールの適用順番に応じて、処理ルールの優先順位も定まり、本実施形態では、コンフリクト処理ルール３０８の方がコンフリクト処理ルール３０１よりも優先されている。また、コンフリクト処理ルール３１１の方がコンフリクト処理ルール３０８よりも優先されている。
【０１５２】
コンフリクト処理ルール３０１を優先したい場合には、コンフリクト処理ルール３０８または、コンフリクト処理ルール３１１を先に適用する処理を行う。
【０１５３】
この読み込み順序については、ここでは特に説明していないが、情報ファイル等にコンフリクト処理ルールの優先順位を記述しておいて、その情報に従ってコンフリクト処理ルールを読み込んでも良い。
【０１５４】
ここで、具体例を示しながらコンフリクト処理について説明する。
【０１５５】
例えば、図４に示す内部構造体３０５において、プリンタ機能に対応するメンバとしてｃＣｏｌｌａｔｅ、ｃＧｒｏｕｐ、ｃＰｏｓｔｅｒ、ｃＳｔａｐｌｅ、ｃＳｔａｍｐ、ｃＢｏｏｋｌｅｔが有るとする。
【０１５６】
そして、この各メンバのコンフリクト処理ルール適用前の値は、ステップ（３０７０−１）の直前において以下の通りとする。
【０１５７】
ｃＣｏｌｌａｔｅ＝０
ｃＧｒｏｕｐ    ＝１
ｃＰｏｓｔｅｒ  ＝１
ｃＳｔａｐｌｅ  ＝０
ｃＳｔａｍｐ    ＝０
ｃＢｏｏｋｌｅｔ＝０
これにより、状態変数リスト３０４においては、上記各メンバに対応する状態変数Ｃｏｌｌａｔｅ、Ｇｒｏｕｐ、Ｐｏｓｔｅｒ  Ｓｔａｐｌｅ、Ｂｏｏｋｌｅｔと状態値は以下のとおりとなる。
【０１５８】
Ｃｏｌｌａｔｅ＝ＯＦＦ
Ｇｒｏｕｐ    ＝ＯＮ
Ｐｏｓｔｅｒ  ＝ＯＮ
Ｓｔａｐｌｅ  ＝ＯＦＦ
Ｓｔａｍｐ    ＝ＯＦＦ
Ｂｏｏｋｌｅｔ＝ＯＦＦ
この時、プリンタドライバ３０７が提供するＵＩである仕上げの設定シート１００の状態は、図１４の（ａ）に示すように、ポスタ機能のチェックボタン１０４は選択されている。また、ソート機能のラジオボタン１０１は非選択、グループ機能のラジオボタン１０２は選択されている状態である。
【０１５９】
尚、Ｓｔａｍｐは、図１０の（ｂ）となるような利用者の操作がまだ行われていない（ステップ（３０７０−１）の前である）ので、ＯＦＦのままである。
【０１６０】
このような状態の時に、ステップ（３０７０−１）に応じて、プリンタドライバ３０７は、アプリケーション２０１からのスタンプ印刷機能の設定をオンへ変更する変更要求を受信する。
【０１６１】
これにより、内部構造体３０５のメンバｃＳｔａｍｐは下記に示すように、「０」から「１」に更新される。
【０１６２】
ｃＣｏｌｌａｔｅ＝０
ｃＧｒｏｕｐ    ＝１
ｃＰｏｓｔｅｒ  ＝１
ｃＳｔａｐｌｅ  ＝０
ｃＳｔａｍｐ    ＝０
ｃＢｏｏｋｌｅｔ＝０
次に、ドライバ管理部３０６はコンフリクトマネージャ３０３を呼び出し、状態変数リストにあるＳｔａｍｐの状態変数をオフからオンに更新する。これにより、状態変数リスト３０４は、以下の通りとなる。
【０１６３】
Ｃｏｌｌａｔｅ＝ＯＦＦ
Ｇｒｏｕｐ    ＝ＯＮ
Ｐｏｓｔｅｒ  ＝ＯＮ
Ｓｔａｐｌｅ  ＝ＯＦＦ
Ｓｔａｍｐ    ＝ＯＮ
Ｂｏｏｋｌｅｔ＝ＯＦＦ
続いて、ステップ（３０７０−２）において、推論エンジン３０２がコールされて、コンフリクト処理ルールの適用が始まる。
【０１６４】
まず、推論エンジン３０２内の各プリンタ機能名が状態変数リスト３０４の各状態変数の持つ値で初期化される。
【０１６５】
続いて、ステップ（３０７−１５）先に読み込まれたコンフリクト処理ルール３０８のルール例（１）が適用されて、状態変数Ｐｏｓｔｅｒの状態値がＯＮからＯＦＦへと変化する。
【０１６６】
尚、ルール例（１）とは、上述したとおり、Ｐｏｓｔｅｒ（ＯＦＦ）＜−Ｓｔａｍｐ（ＯＮ）で定義されるルールである。
【０１６７】
これにより、状態変数リスト３０４の状態値も、
Ｃｏｌｌａｔｅ＝ＯＦＦ
Ｇｒｏｕｐ    ＝ＯＮ
Ｐｏｓｔｅｒ  ＝ＯＦＦ
Ｓｔａｐｌｅ  ＝ＯＦＦ
Ｓｔａｍｐ    ＝ＯＮ
Ｂｏｏｋｌｅｔ＝ＯＦＦ
に更新される。
【０１６８】
コンフリクト処理ルール３０１，３０８，３１１内において、他に、適用されるルールが存在しないので、以上で推論エンジン３０２でのコンフリクト処理ルールの適用が終了する。
【０１６９】
以上に示すように、ステップ（３０７０−１）〜（３０７０−３）の処理により、ＵＩ上で行われた設定の変更に応じて、コンフリクト処理が行われる。
【０１７０】
ここで、図１２のフローチャートに戻ると、ステップ（３０７０−４）でコンフリクト処理ルール３０１，３０８，３１１に応じて状態変数リスト３０４を更新する。その後に、コンフリクトマネージャ３０３は、更新した状態変数リスト３０４に応じて内部構造体３０５を更新する（３０７０−５）。
【０１７１】
具体的には、メンバの値が以下のようになる。
【０１７２】
ｃＣｏｌｌａｔｅ＝０
ｃＧｒｏｕｐ    ＝１
ｃＰｏｓｔｅｒ  ＝０
ｃＳｔａｐｌｅ  ＝０
ｃＳｔａｍｐ    ＝１
ｃＢｏｏｋｌｅｔ＝０
次に、プリンタドライバ３０７は、ステップ（３０７０−４）の処理において第１のプラグインモジュール３０９の状態変数が更新されているかどうかを判定する（３０７０−６）。
【０１７３】
ここで、状態変数が更新されているとプリンタドライバ３０７が判定した場合（ステップ３０７０−６のＹＥＳ）には、プリンタドライバ３０７は、第１のプラグインモジュール３０９を呼び出す（ステップ３０７０−７）。
【０１７４】
一方、第１のプラグインモジュール３０９がプリンタドライバ３０７よりコールされると（３１３０−１）、プラグインモジュール３０９の独自設定シート内のコントロールを制御する（３１３０−２）。そして、プラグインモジュール３０９の独自設定シート内のコントロールを更新して（３１３０−３）、処理をプリンタドライバ３０７に戻す。
【０１７５】
一方、ステップ（３０７０−６）で第１のプラグインモジュール３０９の状態変数が更新されていないと判断した場合（ステップ３０７０−６のＮＯ）、プリンタドライバ３０７は、第２のプラグインの状態変数が更新されたかを判定する（３０７０−９）。
【０１７６】
同様に、プリンタドライバ３０７は、第１のプラグインモジュール３０９より返信される更新終了を確認したら（ステップ３０７０−８）、プリンタドライバ３０７は、第２のプラグインの状態変数が更新されたかを判定する（３０７０−９）。
【０１７７】
しかし、この場合、第２のプラグインの状態変数は更新されていないので、次のステップ（３０７０−１１）に進む。そして、ステップ（３０７０−４）で更新された状態変数に応じてプリンタドライバ３０７本体の設定シート内のコントロールを制御して（３０７０−１２）、本処理を終了する。
【０１７８】
一方、ステップ（３０７０−９）で、第２のプラグインの状態変数が更新されていると判定した場合については、第２のプラグインモジュール３１２を呼び出す（３０７０−１０）。なお、第２のプラグインモジュール３１２を呼び出された後のステップについては、後述する。
【０１７９】
このようにステップ（３０７０−１）〜（３０７０−１１），（３１３０−１）〜（３１３０−３）に示した設定変更に応じたコンフリクト処理を行う。これにより、コンフリクト処理ルールの適用前の仕上げ設定シート１００は、図１４の（ａ）に示すＵＩ画面状態であったが、コンフリクト処理ルールの適用後、図１４の（ｂ）に示すＵＩ画面状態に変化する。
【０１８０】
すなわち、もともと"仕上げ"設定シート１００でポスタ（内部構造体のメンバ名は"Ｐｏｓｔｅｒ"）機能のチェックボタン１０４が選択されていたのが、コンフリクト処理ルールの適用により、チェックボタン１０４が選択されていない状態に変化している。
【０１８１】
次に、第２のプラグイン機能である製本機能のシートをＵＩ画面上でＯＮにした際の処理を説明する。
【０１８２】
この時点でプリンタドライバ３０７が提供するＵＩである仕上げの設定シート１００の状態は、図１１の（ｂ）に示すように、ソート機能のラジオボタン１０１は非選択であり、グループ機能のラジオボタン１０２は選択されている状態である。
【０１８３】
尚、Ｂｏｏｋｌｅｔは、図８の（ｂ）となるような利用者の操作がまだ行われていない（ステップ３０７０−１の前である）ので、ＯＦＦのままである。
【０１８４】
このような状態の時に、ステップ（３０７０−１）に応じて、プリンタドライバ３０７は、アプリケーション２０１からの製本印刷機能の設定をオンへ変更する変更要求を受信する。これにより、内部構造体３０５のメンバｃＢｏｏｋｌｅｔは下記に示すように、「０」から「１」に更新される。
【０１８５】
ｃＣｏｌｌａｔｅ＝０
ｃＧｒｏｕｐ    ＝１
ｃＰｏｓｔｅｒ  ＝０
ｃＳｔａｐｌｅ  ＝０
ｃＳｔａｍｐ    ＝１
ｃＢｏｏｋｌｅｔ＝１
次に、ドライバ管理部３０６はコンフリクトマネージャ３０３を呼び出し、状態変数リストにあるＢｏｏｋｌｅｔの状態変数をオフからオンに更新する。これにより、状態変数リスト３０４は、以下のとおりとなる。
【０１８６】
Ｃｏｌｌａｔｅ＝ＯＦＦ
Ｇｒｏｕｐ    ＝ＯＮ
Ｐｏｓｔｅｒ  ＝ＯＦＦ
Ｓｔａｐｌｅ  ＝ＯＦＦ
Ｓｔａｍｐ    ＝ＯＮ
Ｂｏｏｋｌｅｔ＝ＯＮ
続いて、ステップ（３０７０−２）において、推論エンジン３０２がコールされて、コンフリクト処理ルールの適用が始まる。
【０１８７】
図７に示したステップ（３０７−１５）で先に読み込まれたコンフリクト処理ルール３１１のルール例（２）が適用されて、状態変数Ｇｒｏｕｐの状態値がＯＮからＯＦＦへと変化する。
【０１８８】
尚、ルール例（２）とは、上述したとおり、Ｇｒｏｕｐ（ＯＦＦ）＜−Ｂｏｏｋｌｅｔ（ＯＮ）で定義されるルールである。
【０１８９】
これにより、状態変数リスト３０４の状態値も、
Ｃｏｌｌａｔｅ＝ＯＦＦ
Ｇｒｏｕｐ    ＝ＯＦＦ
Ｐｏｓｔｅｒ  ＝ＯＦＦ
Ｓｔａｐｌｅ  ＝ＯＦＦ
Ｓｔａｍｐ    ＝ＯＮ
Ｂｏｏｋｌｅｔ＝ＯＮ
に更新される。
【０１９０】
次に、ステップ（３０７０−１）において、コンフリクト処理ルール３０１のルール例（５）が適用され、状態変数Ｃｏｌｌａｔｅの状態値がＯＦＦからＯＮへと変化する。
【０１９１】
尚、ルール例（５）とは、上述したとおり、Ｃｏｌｌａｔｅ（ＯＮ）＜−Ｇｒｏｕｐ（ＯＦＦ）で定義されるルールである。コンフリクト処理ルール３０１、３０８、３１１内において、他に、適用されるルールが存在しないので、以上で推論エンジン３０２でのコンフリクト処理ルールの適用が終了する。
【０１９２】
これにより、状態変数リスト３０４の状態値も、
Ｃｏｌｌａｔｅ＝ＯＮ
Ｇｒｏｕｐ    ＝ＯＦＦ
Ｐｏｓｔｅｒ  ＝ＯＦＦ
Ｓｔａｐｌｅ  ＝ＯＦＦ
Ｓｔａｍｐ    ＝ＯＮ
Ｂｏｏｋｌｅｔ＝ＯＮ
に更新される（３０７０−４）。
【０１９３】
以上に示すように、ステップ（３０７０−１）〜（３０７０−４）の処理により、ＵＩ画面上で行われた設定の変更に応じて、コンフリクト処理が行われる。
【０１９４】
図１２に示すフローチャートに戻ると、ステップ（３０７０−４）でコンフリクト処理ルール３０１，３０８，３１１に応じて状態変数リスト３０４を更新する。その後に、コンフリクトマネージャ３０３は、更新した状態変数リスト３０４に応じて内部構造体３０５を更新する（３０７０−５）。具体的には、メンバの値が以下のようになる。
【０１９５】
ｃＣｏｌｌａｔｅ＝１
ｃＧｒｏｕｐ    ＝０
ｃＰｏｓｔｅｒ  ＝０
ｃＳｔａｐｌｅ  ＝０
ｃＳｔａｍｐ    ＝１
ｃＢｏｏｋｌｅｔ＝１
次に、プリンタドライバ３０７は、第１のプラグインモジュール３０９の状態変数が更新されているかどうかを判定する（３０７０−６）。この場合、第１のプラグインモジュール３０９の状態変数は更新されていないので、次のステップ（３０７０−９）に進む。
【０１９６】
プリンタドライバ３０７は、ステップ（３０７０−９）において第２のプラグインモジュール３１２の状態変数が更新されているかどうかを判定する。
【０１９７】
ここで、状態変数が更新されているとプリンタドライバ３０７が判定した場合（（３０７０−９）でＹＥＳ）には、プリンタドライバ３０７は、第２のプラグインモジュール３１２を呼び出す（３０７０−１０）。
【０１９８】
一方、第２のプラグインモジュール３１２は、プリンタドライバ３０７によりコールする（３１３０−３）。そして、状態変数の変化に応じて第２のプラグインモジュール３１２の独自設定シート内のコントロールを制御する（３１３０−２）。そして、第２のプラグインモジュール３１２の独自設定シート内のコントロールを更新して（３１３０−１）、処理をプリンタドライバ３０７に戻して、処理を終了する。
【０１９９】
これにより、プリンタドライバ３０７は、以下ステップ（３０７０−１１）に示す処理を行う。
【０２００】
なお、ステップ（３０７０−９）で第２のプラグインモジュール３１２の状態変数が更新されていない場合（ステップ３０７０−９）のＮＯの場合）の処理は前の第１のプラグインモジュール３０９の説明と同様である。
【０２０１】
プリンタドライバ３０７は、ステップ（３０７０−１１）にて、ステップ（３０１１−３）で更新された第２のプラグインに対応する状態変数を受けと取る。そして、該受け取った第２のプラグインに対応する状態変数に応じてプリンタドライバ３０７本体の設定シート内のコントロールを制御して（３０７０−１２）、本処理を終了する。
【０２０２】
なお、プリンタドライバ３０７は、ステップ（３０７０−１２）において、プリンタドライバ３０７は、プリンタドライバ３０７本体の設定シート内で制御しているコントロールを更新して、コンフリクト処理及びＵＩの処理を終了する。
【０２０３】
以上、ステップ（３０７０−１）〜（３０７０−１２）に示した設定変更に応じたコンフリクト処理を行う。これにより、コンフリクト処理ルールの適用前の仕上げ設定シート１００は、図１４の（ｂ）に示すＵＩ画面状態であったが、コンフリクト処理ルールの適用後、図１４の（ｃ）に示すＵＩ画面状態に変化する。
【０２０４】
すなわち、もともと"仕上げ"設定シート１００でグループ（内部構造体のメンバ名は"Ｇｒｏｕｐ"）機能のラジオボタン１０２が選択されていた。しかし、コンフリクト処理ルールの適用により、ソート（内部構造体３０５のメンバ名は"Ｃｏｌｌａｔｅ"）機能のラジオボタン１０１が選択されてオンの状態に変化している。
【０２０５】
以上のような処理は、アプリケーション２０１によってドライバ管理部３０６に備えられた終了処理が呼び出されるまで、繰り返し実行される。
【０２０６】
アプリケーション２０１よりプリンタドライバ３０７の終了処理が呼び出されると、空きメモリ２０２に生成したコンフリクト処理ルール３０１，３０８，３１１の情報等を消去すると共に、その他の終了処理を行う。
【０２０７】
これにより処理は全て終了し、本実施形態におけるプリンタドライバ３０７の処理も終了し、ＲＡＭ２からはＯＳ２０５の機能により消去される。
【０２０８】
以上に説明したように、本実施形態におけるホストコンピュータ３０００は、プリンタドライバ３０７に複数のＰＭ３０９，３１２が組み込まれていても、プラグイン後のプリンタドライバ３０７における設定間の不整合が生じることを防ぐことができる。つまり、第１のＰＭ３０９のコンフリクト処理ルール３０８と、第２のＰＭのコンフリクト処理ルール３１１を参照することで、プラグイン後のプリンタドライバ３０７における設定間の不整合が生じることを防ぐことができる。
【０２０９】
すなわち、本実施形態におけるホストコンピュータ３０００は、プリンタドライバにプラグイン形式で新たな機能を複数追加した環境下においても的確なコンフリクト処理を行うことが可能である。
【０２１０】
また、このプラグインモジュールをアンインストールする際においては、プラグインモジュールとともに、該プラグインモジュールに対応したコンフリクト処理ルールファイルも削除される。
【０２１１】
また、プラグインモジュールをインストールする際に、ホストコンピュータ３０００で動作するＯＳ上のレジストリ等に登録された該プラグインモジュールに関連した情報はすべて削除される。
【０２１２】
また、本実施形態においては、２つのプラグインモジュールをインストールしたケースを説明したが、２つ以上のプラグインモジュールをインストールした場合においても適用されることは、言うまでもない。
【０２１３】
尚、本実施形態においては、プリンタドライバ３０７を記録する媒体を外部メモリ１１としているが、外部メモリ１１としては、ＦＤ（フレキシブルディスク）、ＨＤドライブ、ＣＤ−ＲＯＭやＩＣメモリカード等を利用可能である。
【０２１４】
更に、本プリンタドライバ３０７単独、もしくはＯＳ２０５その他のホストコンピュータ３０００上で動作するプログラムと共にＲＯＭ３に記録しておき、これをメモリマップの一部となすように構成し、直接ＣＰＵ１で実行することも可能である。
【０２１５】
さらに、上述した実施形態では、ホストコンピュータ３０００における種々の機能を実現する為のプログラムをメモリ（ＲＡＭ）に読み込んでＣＰＵが実行することによりその機能を実現させるものであった。
【０２１６】
しかし、この限りではなく、各処理の全部または一部の機能を専用のハードウェアにより実現してもよい。
【０２１７】
また、上述したメモリは、光磁気ディスク装置、フラッシュメモリ等の不揮発性のメモリや、ＣＤ−ＲＯＭ等の読み出しのみが可能な記録媒体より構成されてもよい。また、ＲＡＭ以外の揮発性のメモリ、あるいはこれらの組み合わせによるコンピュータ読み取り、書き込み可能な記録媒体より構成されてもよい。
【０２１８】
以下、図１５に示すメモリマップを参照して本発明に係るデータ処理装置で読み取り可能なデータ処理プログラムの構成について説明する。
【０２１９】
図１５は、本発明に係るデータ処理装置で読み取り可能な各種データ処理プログラムを格納する記憶媒体のメモリマップを説明する図である。
【０２２０】
なお、特に図示しないが、記憶媒体に記憶されるプログラム群を管理する情報、例えばバージョン情報，作成者等も記憶され、かつ、プログラム読み出し側のＯＳ等に依存する情報、例えばプログラムを識別表示するアイコン等も記憶される場合もある。
【０２２１】
さらに、各種プログラムに従属するデータも上記ディレクトリに管理されている。また、各種プログラムをコンピュータにインストールするためのプログラムや、インストールするプログラムが圧縮されている場合に、解凍するプログラム等も記憶される場合もある。
【０２２２】
本実施形態における図６〜図８，図１２，図１３に示す機能が外部からインストールされるプログラムによって、ホストコンピュータにより遂行されていてもよい。
【０２２３】
そして、その場合、ＣＤ−ＲＯＭやフラッシュメモリやＦＤ等の記憶媒体により、あるいはネットワークを介して外部の記憶媒体から、プログラムを含む情報群を出力装置に供給される場合でも本発明は適用されるものである。
【０２２４】
以上のように、前述した実施形態の機能を実現するソフトウエアのプログラムコードを記録した記憶媒体を、システムあるいは装置に供給する。そして、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読出し実行することによっても、本発明の目的が達成されることは言うまでもない。
【０２２５】
この場合、記憶媒体から読み出されたプログラムコード自体が本発明の新規な機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【０２２６】
従って、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳに供給するスクリプトデータ等、プログラムの形態を問わない。
【０２２７】
プログラムを供給するための記憶媒体としては、例えばフレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＭＯ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤなどを用いることができる。
【０２２８】
この場合、記憶媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【０２２９】
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続する。そして、該ホームページから本発明のコンピュータプログラムそのもの、もしくは、圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードすることによっても供給できる。
【０２３０】
また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。
【０２３１】
つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるＷＷＷサーバやｆｔｐサーバ等も本発明の請求項に含まれるものである。
【０２３２】
また、本発明のプログラムを暗号化してＣＤ−ＲＯＭ等の記憶媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせる。そして、その鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
【０２３３】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでない。例えば、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）等が実際の処理の一部または全部を行わせる。そして、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０２３４】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込ませる。その後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部または全部を行う。そして、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０２３５】
本発明は上記実施形態に限定されるものではなく、本発明の趣旨に基づき種々の変形（各実施形態の有機的な組合せを含む）が可能であり、それらを本発明の範囲から排除するものではない。
【０２３６】
また、ホストコンピュータ３０００において各種処理を行う機能を実現する為のプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませる。そして、そのプログラムを実行することにより各処理を行っても良い。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。
【０２３７】
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。
【０２３８】
さらに「コンピュータ読み取り可能な記録媒体」とは、揮発メモリ（ＲＡＭ）のように、一定時間プログラムを保持しているものも含むものとする。
【０２３９】
具体的には、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発メモリ（ＲＡＭ）である。
【０２４０】
また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。
【０２４１】
ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。
【０２４２】
また、上記プログラムは、前述した機能の一部を実現する為のものであっても良い。
【０２４３】
さらに、前述した機能をコンピュータシステムに既に記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であっても良い。
【０２４４】
また、上記のプログラムを記録したコンピュータ読み取り可能な記録媒体等のプログラムプロダクトも本発明の実施形態として適用することができる。上記のプログラム、記録媒体、伝送媒体およびプログラムプロダクトは、本発明の範疇に含まれる。
【０２４５】
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計変更等も含まれる。
【０２４６】
本発明の様々な例と実施形態を示して説明したが、当業者であれば、本発明の趣旨と範囲は、本明細書内の特定の説明に限定されるのではなく、以下の実施態様も含まれることはいうまでもない。
【０２４７】
例えば印刷処理関連プログラムにより実現可能な機能に更に複数の拡張機能を付与可能なデータ処理装置であって、
２つ以上の設定値の間で成立する依存関係に応じて定めた第１のコンフリクト処理ルール（図４に示すコンフリクト処理ルール３０８）として格納する第１のルール格納手段（例えば図１に示す外部メモリ１１）と、
前記印刷処理関連プログラムの機能と、前記複数の拡張機能に入力される設定値の間で成立する依存関係に応じて定めた第２のコンフリクト処理ルール（図４に示すコンフリクト処理ルール３１１）として格納する第２のルール格納手段（例えば図１に示す外部メモリ１１）と、
前記第１のルール格納手段及び前記第２のルール格納手段から、前記第１のコンフリクト処理ルール及び前記第２のコンフリクト処理ルールを読み込み、読み込んだ前記第１のコンフリクト処理ルール及び前記第２のコンフリクト処理ルールを基にして、前記複数の機能と前記複数の拡張機能とのいずれか２つの設定間に不整合が生じないよう設定値の調整処理を行う設定調整手段（図３に示すプリンタドライバ３０７のコンフリクトマネージャ３０３）とを具備することを特徴とするデータ処理装置。
【０２４８】
これにより、印刷処理関連プログラム（プリンタドライバ）にプラグイン形式で新たな機能を複数追加したデータ処理環境下においても、各機能独自設定に伴う不整合状態を判別できる。そして、自動的、かつ的確なコンフリクト処理を実現して、各機能独自の設定が不整合状態であっても、正常な印刷を実行可能な印刷設定環境に自動調整できる。そして、追加される複数の機能に対する印刷設定を正常に行い、意図する印刷結果を正常に得られる印刷設定環境を自在に構築できる。
【０２４９】
また、前記複数の拡張機能が付与されている場合に、前記第２のコンフリクト処理ルールが第２のルール格納手段に格納されているか否かを確認する確認手段（図３に示すプリンタドライバ３０７のコンフリクトマネージャ３０３）を設けても良い。
【０２５０】
これにより、追加される拡張機能に対するプラグインモジュールに対応した第２のコンフリクト処理ルールを確実に読み込むことができる。
【０２５１】
さらに、前記設定調整手段は、前記第１のコンフリクト処理ルール及び前記第２のコンフリクト処理ルールを優先度の高い順に適用して、前記複数の機能と前記複数の拡張機能とのいずれか２つの設定間に不整合が生じないよう設定の調整処理をしてもよい。
【０２５２】
これにより、プリンタドライバの設定機能と追加される各拡張機能間での不整合な設定を自動的に調整できる。
【０２５３】
また、種々の情報を表示する表示手段（図１に示すＣＲＴ１０）と、
利用者が視覚的に前記複数の機能及び前記複数の拡張機能の設定状態を確認可能な設定状態画面を前記表示手段に表示する画面表示手段（図３に示すプリンタドライバ３０７）とを更に具備し、
前記画面表示手段が前記表示手段に表示する前記設定状態画面は、前記設定調整手段により設定の調整処理後の設定状態を示すものであってもよい。
【０２５４】
これにより、複数の拡張機能とプリンタドライバとの設定とが調整された設定状態をユーザに変更された設定状態を確認させることができる。
【０２５５】
さらに、前記画面表示手段が前記表示手段に表示する前記設定状態画面において、
前記複数の機能及び前記複数の追加機能の各設定は、利用者の操作により変更可能であり、利用者が一つまたは複数の機能または前記複数の追加機能の設定を変更した場合に、前記設定調整手段は、読み込んだ前記第１のコンフリクト処理ルール及び前記第２のコンフリクト処理ルールを基にして、変更後の複数の機能と複数の拡張機能とのいずれか２つの設定間に不整合が生じないよう設定の調整処理を行うこととしてもよい。
【０２５６】
これにより、ユーザの設定に対して、プリンタドライバの設定と各機能設定との整合性を勘案して設定状態を調整して、ユーザから不整合となるような設定がなされても、不整合を回避する設定状態を表示することができる。
【図面の簡単な説明】
【０２５７】
【図１】本発明の第１実施形態を示すデータ処理装置を適用可能な印刷処理システムの構成を説明するブロック図である。
【図２】図１に示したＲＡＭのメモリマップの一例を示す図である。
【図３】図１に示したホストコンピュータのプリンタドライバの拡張システムの一例を示すブロック図である。
【図４】図１に示したホストコンピュータの各種のモジュールのプリント処理例を示す概念ブロック図である。
【図５】図４に示したコンフリクトマネージャ及び推論エンジンにおけるコンフリクト処理体例を示す図である。
【図６】本発明に係るデータ処理装置における第１のデータ処理手順の一例を示すフローチャートである。
【図７】本発明に係るデータ処理装置における第１のデータ処理手順の一例を示すフローチャートである。
【図８】本発明に係るデータ処理装置における第１のデータ処理手順の一例を示すフローチャートである。
【図９】図４に示したプリンタドライバが必要とする内部構造体のメモリマップ構成例を示す図である。
【図１０】本発明に係るデータ処理装置における印刷設定シート例を示す図である。
【図１１】本発明に係るデータ処理装置における印刷設定シート例を示す図である。
【図１２】本発明に係るデータ処理装置における第２のデータ処理手順の一例を示すフローチャートである。
【図１３】本発明に係るデータ処理装置における第２のデータ処理手順の一例を示すフローチャートである。
【図１４】本発明に係るデータ処理装置における印刷設定シート例を示す図である。
【図１５】本発明に係るデータ処理装置で読み取り可能な各種データ処理プログラムを格納する記憶媒体のメモリマップを説明する図である。
【符号の説明】
【０２５８】
８０１  アプリケーション
９０１  コンフリクト処理ルール記述ファイル
９０２  推論エンジン
９０３  コフリクトマネージャ
９０６  ドライバ管理部
９０８  コンフリクト処理ルールファイル
９０９  プラグインモジュール
【図１】
2006164253.tif 000003
【図２】
2006164253.tif 000004
【図３】
2006164253.tif 000005
【図４】
2006164253.tif 000006
【図５】
2006164253.tif 000007
【図６】
2006164253.tif 000008
【図７】
2006164253.tif 000009
【図８】
2006164253.tif 000010
【図９】
2006164253.tif 000011
【図１０】
2006164253.tif 000012
【図１１】
2006164253.tif 000013
【図１２】
2006164253.tif 000014
【図１３】
2006164253.tif 000015
【図１４】
2006164253.tif 000016
【図１５】
2006164253.tif 000017