(57)【要約】【課題】      基本コンフリクト処理ルールを補完するルールを生成して、漏れなくコンフリクト状態を解消すること。【解決手段】  設定条件を相互に整合させるための基本処理を実行し、設定条件を整合させるために、その基本処理を補完をするための補完処理ルールを生成し（Ｓ５０１、Ｓ５０２）、その基本処理及び補完処理ルールに従い、設定条件を整合させて、その条件に基づく制御パラメータを決定する（Ｓ５０７，Ｓ５０８）。【選択図】  図５
2006236382.tif 000002
【特許請求の範囲】
【請求項１】
プリンタドライバのユーザインタフェースプログラムと、前記プリンタドライバに入力された設定条件の不整合を回避するためのコンフリクトマネージャプログラムとを搭載し、前記プリンタドライバを用いて生成した印刷データを印刷装置に送信する情報処理装置であって、
前記設定条件の不整合がある場合に、当該不整合が生じている旨を前記コンフリクトマネージャプログラムから前記ユーザインタフェースプログラムが読み出すことができる特定の領域に書き込んで知らせる手段と、
前記ユーザインタフェースプログラムを実行して、前記特定の領域に書き込まれた内容に従って、前記プリンタドライバのユーザインタフェースの表示を更新する更新手段と、
を有することを特徴とする情報処理装置。
【請求項２】
製本印刷を設定する設定条件が前記プリンタドライバに入力された場合に、当該入力された設定条件とグループソート印刷を設定する設定条件との不整合を整合させる処理を実行する制御手段を更に備えることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
設定条件が入力されるのに応答して、入力された設定条件の不整合を整合させる処理を実行する実行手段を更に備えることを特徴とする請求項１に記載の情報処理装置。
【請求項４】
プリンタドライバを用いて生成した印刷データを印刷装置に送信する情報処理装置であって、
前記プリンタドライバに対して設定条件が入力されたことに応答して、当該設定条件において生じている不整合状態を解消する制御手段と、
前記制御手段が不整合状態を解消した場合に、前記プリンタドライバのユーザインタフェースプログラムを実行して、前記不整合を解消した旨を表示する表示手段と、
を有することを特徴とする情報処理装置。
【請求項５】
前記表示手段は、設定条件が入力されるたびごとに、前記不整合を解消した旨を表示することを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記制御手段は、プリンタドライバに入力される設定条件の不整合を解消する基本ルールと、当該基本ルールを補完するルールを適用して、入力される設定条件の不整合を解消することを特徴とする請求項４に記載の情報処理装置。
【請求項７】
プリンタドライバのコンフリクト処理ルールから、２状態値を値として有する補完ルールを生成する生成手段と、
プリンタの状態変数に、前記補完ルールを反映させる反映手段と、
を備えることを特徴とする情報処理装置。
【請求項８】
プリンタドライバのユーザインタフェースプログラムと、前記プリンタドライバに入力された設定条件の不整合を回避するためのコンフリクトマネージャプログラムとを搭載し、前記プリンタドライバを用いて生成した印刷データを印刷装置に送信する情報処理装置における情報処理方法であって、
前記設定条件の不整合がある場合に、当該不整合が生じている旨を前記コンフリクトマネージャプログラムから前記ユーザインタフェースプログラムが読み出すことができる特定の領域に書き込んで知らせる工程と、
前記ユーザインタフェースプログラムを実行して、前記特定の領域に書き込まれた内容に従って、前記プリンタドライバのユーザインタフェースの表示を更新する更新工程と、
を有することを特徴とする情報処理方法。
【請求項９】
製本印刷を設定する設定条件が前記プリンタドライバに入力された場合に、当該入力された設定条件とグループソート印刷を設定する設定条件との不整合を整合させる処理を実行する制御工程を更に備えることを特徴とする請求項８に記載の情報処理方法。
【請求項１０】
設定条件が入力されるのに応答して、入力された設定条件の不整合を整合させる処理を実行する実行工程を更に備えることを特徴とする請求項８に記載の情報処理方法。
【請求項１１】
プリンタドライバを用いて生成した印刷データを印刷装置に送信する情報処理装置における情報処理方法であって、
前記プリンタドライバに対して設定条件が入力されたことに応答して、当該設定条件において生じている不整合状態を解消する制御工程と、
前記制御工程が不整合状態を解消した場合に、前記プリンタドライバのユーザインタフェースプログラムを実行して、前記不整合を解消した旨を表示する表示工程と、
を有することを特徴とする情報処理方法。
【請求項１２】
前記表示工程は、設定条件が入力されるたびごとに、前記不整合を解消した旨を表示することを特徴とする請求項１１に記載の情報処理方法。
【請求項１３】
前記制御工程は、プリンタドライバに入力される設定条件の不整合を解消する基本ルールと、当該基本ルールを補完するルールを適用して、入力される設定条件の不整合を解消することを特徴とする請求項１１に記載の情報処理方法。
【請求項１４】
プリンタドライバのコンフリクト処理ルールから、２状態値を値として有する補完ルールを生成する生成工程と、
プリンタの状態変数に、前記補完ルールを反映させる反映工程と、
を備えることを特徴とする情報処理方法。
【請求項１５】
プリンタドライバのユーザインタフェースプログラムと、前記プリンタドライバに入力された設定条件の不整合を回避するためのコンフリクトマネージャプログラムとを搭載し、前記プリンタドライバを用いて生成した印刷データを印刷装置に送信する情報処理装置における情報処理方法をコンピュータで実行するためのプログラムモジュールを格納したコンピュータ可読の記憶媒であって、該プログラムモジュールが、
前記設定条件の不整合がある場合に、当該不整合が生じている旨を前記ユーザインタフェースプログラムに通知する通知モジュールと、
前記ユーザインタフェースプログラムを実行して、前記通知モジュールにより通知された通知内容に従って、前記プリンタドライバのユーザインタフェースの表示を更新する更新モジュールと、
を有することを特徴とする記憶媒体。
【請求項１６】
プリンタドライバを用いて生成した印刷データを印刷装置に送信する情報処理装置における情報処理方法をコンピュータで実行するためのプログラムモジュールを格納したコンピュータ可読の記憶媒であって、該プログラムモジュールが、
前記プリンタドライバに対して設定条件が入力されたことに応答して、当該設定条件において生じている不整合状態を解消する制御モジュールと、
前記制御工程が不整合状態を解消した場合に、前記プリンタドライバのユーザインタフェースプログラムを実行して、前記不整合を解消した旨を表示する表示モジュールと、
を有することを特徴とする記憶媒体。
【請求項１７】
情報処理方法をコンピュータで実行するためのプログラムモジュールを格納したコンピュータ可読の記憶媒であって、該プログラムモジュールが、
プリンタドライバのコンフリクト処理ルールから、２状態値を値として有する補完ルールを生成する生成モジュールと、
プリンタの状態変数に、前記補完ルールを反映させる反映モジュールと、
を備えることを特徴とする記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置の処理条件の設定において、複数の設定項目間で条件の不整合が生じた場合に、その不整合を解消する装置及び情報処理方法及びその方法をコンピュータで実行するためのプログラムモジュールを格納した記憶媒体、その情報処理装置を組込んだ画像形成装置に関する。
【背景技術】
【０００２】
従来、コンピュータ上で動作するプログラムはユーザインタフェースを介してユーザから複数の動作内容を定義するための設定値の入力を受け付けると、それらの設定値に基づいて処理を実行する。
【０００３】
ところが、複数の設定条件において排他的な関係や、設定条件相互間で依存する関係等が存在する場合はユーザからの設定値の入力を受け付ける度に、入力された設定条件、設定値との関係を評価し、それらの設定条件等に不整合がないかどうかの判別を行い、不整合があった場合にはその解消を実施する処理を行なっていた。その処理の実現にあたっては、不整合の検知および不整合の解消処理を設定値間の関係に依存した条件の下で専用の処理プラグラムを用いるのが一般的である。
【０００４】
あるいは、不整合の処理が必要となる複数の設定値の条件を一覧としてまとめてファイル等に保存しておき、このファイルを不整合を解消する汎用的な処理プログラムを利用して、このプログラムに読み込ませて、設定条件の不整合を解消させる場合もある。
【０００５】
上述の従来技術として、例えば、以下の特許文献１に示されるものがある。
【特許文献１】特開２００１−１９５１６６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、従来は、コンフリクト処理ルールが変更された場合、変更後の条件に適合した、ユーザインタフェースの表示の実現が困難であった。
【０００７】
また、上記の不整合（以下、「コンフリクト」）をプログラムにより解消するための条件の記述は、プログラム開発者などが全ての条件を網羅的に行うため、設定値間の依存関係が複雑な場合には、全ての条件を網羅することができずに、漏れ、すなわち、不整合の状態が完全に解消されない場合が生じることがあった。
【課題を解決するための手段】
【０００８】
本発明は、ユーザインタフェース制御部は、ユーザインタフェース更新処理とメッセージ表示をコンフリクト処理部分であるコンフリクトマネージャに設けることで、コンフリクト処理ルールが変更された場合でも容易に変更後の条件に適合した表示を実現することを目的とする。
【０００９】
上記目的を達成するために、本発明にかかる情報処理装置、方法は主として以下の構成を有することを特徴とする。
【００１０】
すなわち、本発明に係る情報処理装置は、プリンタドライバのユーザインタフェースプログラムと、前記プリンタドライバに入力された設定条件の不整合を回避するためのコンフリクトマネージャプログラムとを搭載し、前記プリンタドライバを用いて生成した印刷データを印刷装置に送信する情報処理装置であって、
前記設定条件の不整合がある場合に、当該不整合が生じている旨を前記コンフリクトマネージャプログラムから前記ユーザインタフェースプログラムが読み出すことができる特定の領域に書き込んで知らせる手段と、
前記ユーザインタフェースプログラムを実行して、前記特定の領域に書き込まれた内容に従って、前記プリンタドライバのユーザインタフェースの表示を更新する更新手段と、を有することを特徴とする。
【００１１】
あるいは、本発明に係る情報処理方法は、プリンタドライバのユーザインタフェースプログラムと、前記プリンタドライバに入力された設定条件の不整合を回避するためのコンフリクトマネージャプログラムとを搭載し、前記プリンタドライバを用いて生成した印刷データを印刷装置に送信する情報処理装置における情報処理方法であって、
前記設定条件の不整合がある場合に、当該不整合が生じている旨を前記コンフリクトマネージャプログラムから前記ユーザインタフェースプログラムが読み出すことができる特定の領域に書き込んで知らせる工程と、
前記ユーザインタフェースプログラムを実行して、前記特定の領域に書き込まれた内容に従って、前記プリンタドライバのユーザインタフェースの表示を更新する更新工程と、を有することを特徴とする。
【発明の効果】
【００１２】
本発明のひとつの側面によれば、ユーザインタフェース制御部は、ユーザインタフェース更新処理とメッセージ表示をコンフリクト処理部分であるコンフリクトマネージャに設けることで、コンフリクト処理ルールが変更された場合でも容易に変更後の条件に適合した表示を実現することができる。
【００１３】
本発明の別の側面によれば、基本となるコンフリクト処理ルールを補完する条件を自動生成するので、漏れがなくコンフリクト状態を解消することが可能になる。
【００１４】
本発明のさらに別の側面によれば、ユーザインタフェースの更新処理、メッセージ処理もコンフリクト処理ルールに加えることで、開発者にとって可読性の高い、メンテナンスの容易なコーディングが実現可能になる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明を適用するのに好適である実施形態について説明する。
【００１６】
図１は本発明が適用される実施形態において、設定された条件が整合していないとき、この不整合を解消するための情報処理（コンフリクト解消処理）が実行される印刷処理システムの構成を説明するブロック図である。
【００１７】
なお、特に断らない限り、本発明にかかる情報処理が実行されるのであれば、単体の機器であっても、複数の機器からなるシステムであっても、ＬＡＮ,ＷＡＮ等のネットワークを介して接続が為され処理が行われるシステムであっても本発明を適用できることは言うまでもない。
【００１８】
図１において、３０００はホストコンピュータで、ＲＯＭ３ｂのプログラム用ＲＯＭあるいは外部メモリ１１に記憶された文書処理プログラム等に基づいて図形、イメージ、文字、表（表計算等を含む）等が混在した文書処理を実行するＣＰＵ１を備え、システムバス４に接続される各デバイスをＣＰＵ１が総括的に制御する。
【００１９】
また、プログラム用ＲＯＭ３ｂあるいは外部メモリ１１には、ＣＰＵ１の制御プログラムであるオペレーティングシステムプログラム（以下ＯＳ）等を記憶し、フォント用ＲＯＭ３ａあるいは外部メモリ１１には上記の文書処理の際に使用するフォントデータ等が記憶され、データ用ＲＯＭ３ｃあるいは外部メモリ１１には文書処理等を行う際に使用する各種データが記憶されている。
【００２０】
２はＲＡＭで、ＣＰＵ１の主メモリ、ワークエリア等として機能する。５はキーボードコントローラ（ＫＢＣ）で、キーボード９や不図示のポインティングデバイスからのキー入力を制御する。６はＣＲＴコントローラ（ＣＲＴＣ）で、ＣＲＴディスプレイ（ＣＲＴ）１０の表示を制御する。
【００２１】
７はディスクコントローラ（ＤＫＣ）で、ブートプログラム、各種のアプリケーション、フォントデータ、ユーザファイル、編集ファイル、プリンタ制御コマンド生成プログラム（以下プリンタドライバ）等を記憶するハードディスク（ＨＤ）及びフロッピー（登録商標）ディスク（ＦＤ）等の外部メモリ１１とのアクセスを制御する。
【００２２】
８はプリンタコントローラ（ＰＲＴＣ）で、所定の双方向性インターフェース（インターフェース）２１を介してプリンタ１５００に接続されて、プリンタ１５００との通信制御処理を実行する。なお、ＣＰＵ１は、例えばＲＡＭ２上に設定された表示情報ＲＡＭへのアウトラインフォントの展開（ラスタライズ）処理を実行し、ＣＲＴ１０上でのＷＹＳＩＷＹＧを可能としている。
【００２３】
また、ＣＰＵ１は、ＣＲＴ１０上の不図示のマウスカーソル等で指示されたコマンドに基づいて登録された種々のウインドウを開き、種々のデータ処理を実行する。ユーザは印刷を実行する際、印刷の設定に関するウインドウを開き、プリンタの設定や、印刷モードの選択を含むプリンタドライバに対する印刷処理方法の設定を行える。
【００２４】
プリンタ１５００において、１２はプリンタＣＰＵで、プログラム用ＲＯＭ１３ｂに記憶された制御プログラム等あるいは外部メモリ１４に記憶された制御プログラム等に基づいてシステムバス１５に接続される印刷部（プリンタエンジン）１７に出力情報としての画像信号を出力する。また、プログラムＲＯＭ１３ｂには、ＣＰＵ１２の制御プログラム等を記憶する。フォント用ＲＯＭ１３ａには出力情報を生成する際に使用するフォントデータ等を記憶し、データ用ＲＯＭ１３ｃにはハードディスク等の外部メモリ１４がないプリンタの場合には、ホストコンピュータ上で利用される情報等を記憶している。
【００２５】
ＣＰＵ１２は入力部１８を介してホストコンピュータとの通信処理が可能となっており、プリンタ内の情報等をホストコンピュータ３０００に通知可能に構成されている。１９はＣＰＵ１２の主メモリ、ワークエリア等として機能するＲＡＭで、図示しない増設ポートに接続されるオプションＲＡＭによりメモリ容量を拡張することができるように構成されている。
【００２６】
なお、ＲＡＭ１９は、出力情報展開領域、環境データ格納領域、ＮＶＲＡＭ等に用いられる。前述したハードディスク（ＨＤ）、ＩＣカード等の外部メモリ１４は、メモリコントローラ（ＭＣ）２０によりアクセスを制御される。外部メモリ１４は、オプションとして接続され、フォントデータ、エミュレーションプログラム、フォームデータ等を記憶する。
【００２７】
また、１８は前述した操作パネルで操作のためのスイッチおよびＬＥＤ表示器等が配されている。また、前述した外部メモリは１個に限らず、少なくとも１個以上備え、内蔵フォントに加えてオプションフォントカード、言語系の異なるプリンタ制御言語を解釈するプログラムを格納した外部メモリを複数接続できるように構成されていてもよい。さらに、図示しないＮＶＲＡＭを有し、操作パネル１５０１からのプリンタモード設定情報を記憶するようにしてもよい。
【００２８】
図２に示すのが、本実施形態におけるユーザインタフェース制御プログラムがホストコンピュータ３０００上のＲＡＭ２にロードされ、実行可能となった状態のメモリマップを示している。なお、本実施形態におけるユーザインタフェース制御プログラムは印刷処理関連プログラム２０４の一部として存在している。
【００２９】
図４は、本実施形態のコンフリクト処理における各モジュールで扱うデータの関連を示す図である。
【００３０】
図５は本実施形態におけるコンフリクトを解消するための、基本となるコンフリクトルールを補完するための補完ルールを生成するための処理（以下、「補完ルールの生成処理」という。）を説明するフローチャートである。以下、図５に示すフローチャートを中心にして本実施形態を詳しく説明する。
【００３１】
本実施形態ではプリンタドライバがＣＲＴ１０に各種設定用に表示するユーザインタフェースから設定入力された設定条件に関するコンフリクト処理を例に説明する。ユーザが図１に示したキーボード９を介して、キーボードコントローラＫＢＣ５の制御によりＣＲＴ１０に表示されたユーザインタフェース画面の一例を図８に示す。プリンタドライバＵＩ（ユーザインタフェース）を開く指示をすることでコンフリクトルールの補完処理が開始する。
【００３２】
ユーザがプリンタドライバＵＩを開く指示により、プリンタドライバＵＩを開くための初期化処理が行われ、ＯＳの管理の下、ＲＡＭ２に印刷処理関連プログラム２０４がロードされる。
【００３３】
補完ルールの生成処理を図３及び図６を用いて説明する。
【００３４】
ここで、図３は本実施形態におけるユーザインタフェース制御部の内部処理の概要を示す図である。図３において、推論エンジン３０２は図６（補完ルールの生成処理前のコンフリクト処理ルール）に例示してあるように表記されたコンフリクト処理ルール３０１をコンフリクトマネージャ３０３を介してＲＡＭ２中に読み込む（ステップＳ５０１）。
【００３５】
続いて、ステップＳ５０１で読み込んだコンフリクト処理ルールを基に、２状態値（ONとOFF）を値として有するルールについて補完ルールを生成する（ステップＳ５０２）。
【００３６】
例えば、以下の（１）から（３）は２状態値の設定状態を記述した例であり、同じプリンタの機能について以下の例のように左辺に ON または OFF のどちらかだけが記述された場合を想定すると、
A(ON) ＜- B(ON), C(OFF).... (1)
A(ON) ＜- D(V1).        ... (2)
B(OFF) ＜- E(OFF).      ... (3)
（１）の場合は設定値ＢがＯＮ、設定値ＣがＯＦＦに設定された場合に、設定値Ａの設定がＯＮになることを示しており、（２）は多状態設定値である設定値Ｄの値がＶ１に設定された場合も設定値Ａの設定が（１）の場合同様、ＯＮになることを示している。また（３）は設定値ＥがＯＦＦに設定された場合に、設定値Ｂの値がＯＦＦになることを示している。
【００３７】
この場合には推論エンジン３０２が ON/OFFを 逆にするルールを以下のように自動生成する。すなわち、上記の(1),(2) に対しては（４）式のようなコンフリクト処理ルールを生成する。
【００３８】
つまり、ＡはＯＮの状態ではなく、ＯＦＦの状態値をとる。
【００３９】
A(OFF) ＜- not A(ON)      ... (4)
同様に(3)に対しては左辺Ｂの設定を変更するコンフリクト処理ルールを生成する。つまり、ＢはＯＦＦの状態ではなく、ＯＮの状態値をとる。
【００４０】
B(ON) ＜- not B(OFF)      ... (5)
このように、推論エンジン３０２によって自動生成された(4),(5)のルールは処理効率上最適化されて以下の(4)',(5)'のように変形されるが、意味は全く同じとなる。つまり、Ａの設定ＯＦＦ、Ｂの設定ＯＮは真であるという内容がルールとして生成されることになる。
【００４１】
A(OFF) ＜- true            ... (4)'
B(ON) ＜- true             ... (5)'
上記の例のように逆の状態値に変更するように自動生成されたルールは論理的に制御対象（例えばプリンタやファクシミリ等）の設定条件を定義する状態値として１００％、矛盾なく機能を遂行するための論理を整合させるものである。
【００４２】
続いて、図４に示すように状態変数に生成された補完ルールを反映する（ステップ５０３）。
【００４３】
補完ルールの生成処理において、制御対象（例えばプリンタやファクシミリ等）の全ての機能設定項目についてはコンフリクトマネージャ３０３の内部に、図４に示すような状態変数リスト４０２を持っている。この状態変数の値はプリンタドライバUIで使用される内部構造体４０１の対応するメンバ（状態変数）の値と連動している。全てのプリンタ機能設定項目の状態変数の初期値はその内部構造体４０１のメンバの値が初期値となる。
【００４４】
例えば以下の設定を記述した場合、
A(ON) ＜- B(ON), C(OFF)
図４の状態変数リスト４０２に示すようにコンフリクト処理ルール４０３で使用するプリンタにおける機能設定項目A, B, C のそれぞれについて同名の状態変数が存在する。そして、プリンタにおける機能設定項目A, B, C に対応する プリンタドライバUI内部構造体４０１のメンバをそれぞれ int cA, int cB, int cCとする。
【００４５】
int cA の初期値は0であり、それに対応する A の値は０に対応する状態変数OFF となっている。従って推論エンジン３０２内のプリンタ機能設定項目A の状態値の初期値も 状態変数「OFF」が設定される。推論エンジン３０２でコンフリクトチェックの推論が行われて以下のルール、
A(ON) ＜- B(ON), C(OFF)、
が成立した場合、推論エンジン３０２は左辺のプリンタ機能設定項目Aの状態変数値を「ON」に変更する。
【００４６】
コンフリクトチェックの推論が終了した後、コンフリクトマネージャは変更された状態変数の値をプリンタドライバUI内部構造体４０１の対応するメンバ int cA に反映（マッピング）する。つまり int cA は上記ルールが成立したことによって「0」から 状態変数ONに対応する「1 」に変更される。
【００４７】
推論エンジン３０２は推論エンジンに組込まれている組込み関数status(a, _X) によってプリンタ機能設定項目A の状態変数値を推論エンジン３０２で使用する変数 _X に変更する。推論エンジン３０２はコンフリクト処理ルールをロードした後、そのコンフリクト処理ルール中に出現する全ての状態変数について、コンフリクトを解消するための補完ルールを自動的に生成する。
【００４８】
A(_X) ＜- status(A,_X)  
B(_X) ＜- status(B,_X)  
C(_X) ＜- status(C,_X)  
これは他に適用するルールが存在しない場合には プリンタドライバUI内部構造体４０１の対応するメンバの値がそのプリンタ機能設定項目の状態値となることを意味する。
【００４９】
プリンタの機能設定項目A については、
A(ON) ＜- B(ON), C(OFF)
なる関係が成り立と判断されれば A の状態値はこれを受けて ON と設定される。B がもし上記の自動生成されたルール以外に依存するルールが存在しないならば、
B(_X) ＜- status(B,_X)
として状態変数が設定される。この自動生成ルールによりB の状態変数の値 ON が_X にユニファイされ、それがプリンタ機能B の状態値となる。
【００５０】
つまり、ユーザ定義ルールが存在しないか、または存在していてもプリンタ機能について影響が及ばない場合はプリンタドライバのUIの内部構造体４０１に対応するメンバに格納されている値がそのプリンタ機能の状態値ということになる。
【００５１】
続いて、その他の初期化処理として、プリンタドライバのUIをオープンするために必要な初期化処理を行い、図８に例示するようなプリンタドライバユーザインタフェース（UI）をオープンする（ステップＳ５０４）。プリンタドライバUIがオープンされた後は、OSより送られてくるイベントの取得とその処理を繰り返す（ステップＳ５０５）。
【００５２】
ステップＳ５０５にて取得したイベントが、ユーザがプリンタドライバUI上の設定項目を変更したイベントであるかどうかの判別を行い（ステップＳ５０６）、そうでなかった場合（Ｓ５０６−Ｎｏ）には、続いてプリンタドライバUIのクローズ要求かどうかの判別を行う（ステップＳ５１２）。クローズ要求であった場合（Ｓ５１２−Ｙｅｓ）には、終了処理を行い、プリンタドライバUIをクローズして、全ての処理を終了する（ステップＳ５１３）。一方、クローズ要求でもなかった場合（Ｓ５１２−Ｎｏ）には、再び、処理をステップＳ５０５に戻す。
【００５３】
ステップＳ５０６での判別により、ステップＳ５０５で取得したイベントがユーザの設定変更要求であった場合には、ステップＳ５０１からＳ５０３の処理により構築した補完されたコンフリクト処理ルールを適用する（ステップＳ５０７）。
【００５４】
ユーザの設定変更要求が図８に示すPrint Styleを「1-Sided Printing」から「Booklet Printing」に変更するものであった場合を例にとると、コンフリクト処理ルールの適用は、図６に示すコンフリクト処理ルール３０１の一部として読み込まれた基本となるコンフリクト処理ルールと、ステップＳ５０２にて生成された補完ルールの一部である図７(４)、(5)とステップＳ５０３にて行われた状態変数を反映する図７(6)〜(9)に対して行われる。
【００５５】
プリンタドライバUI内部構造体４０１のメンバとして存在するCollate、Group、Staple、Layoutの各メンバのコンフリクト処理ルール適用前の値は、以下の通りとなる。
【００５６】
Collate    ：OFF
Group      ：ON
Staple     ：OFF
Layout     ： 1-Sided
【００５７】
ユーザの変更要求がLayoutを１−SidedからBookletに変更するものであるので、Layoutのメンバの内容は「1-Sided」から「Booklet」に変更となる。
【００５８】
Collate    ：OFF
Group      ：ON
Staple     ：OFF
Layout     ：Booklet
【００５９】
すると、プリンタドライバUI３０６はコンフリクトマネージャ３０３を呼び出し、状態変数リストにあるLayoutの状態変数が上記のように更新され、続いて推論エンジン３０２がコールされて、コンフリクト処理ルールの適用が始まる。
【００６０】
まず、図７(6)〜(9)のルールが適用され、推論エンジン３０２内の各プリンタ機能設定項目が状態変数リストの各メンバの持つ値で初期化される。
【００６１】
続いて、図７(3)が適用され、Groupの値はONからOFFへと変更となる。
【００６２】
Collate    ：OFF
Group      ：OFF
Staple     ：OFF
Layout     ：Booklet
さらに、図７(4)のルールが適用され、CollateがOFFからONへと変更となる。
【００６３】
Collate    ：ON
Group      ：OFF
Staple     ：OFF
Layout     ：Booklet
他に、適用されるルールが存在しないので、以上で推論エンジン３０２でのコンフリクト処理ルールの適用が終了する。
【００６４】
次のステップでは、コンフリクトマネージャ３０３が上記の最終状態を基に状態変数リストの更新（ステップ５０８）とプリンタドライバUI内部構造体の更新（ステップ５０９）を行う。
【００６５】
続いて、プリンタドライバUI３０６がプリンタドライバUI内部構造体のメンバの値を参照して、UIの更新が必要かどうかの判別を行う（ステップ５１０）。
【００６６】
UIの更新の必要のない場合には、そのまま処理をステップS５０５に戻す。更新が必要な場合には、UIの更新を行い（ステップ５１１）、ステップS５０５に処理を戻す。
【００６７】
上記の例では、Layoutが「１−Sided Printing」から「Booklet Printing」に設定が変更されたことにより、Collateが「OFF」から「ON」へ、Groupが「ON」から「OFF」へと変化しているので、プリンタドライバUIの表示も図９に示すとおりに更新される。
【００６８】
以上の処理は、プリンタドライバUIがクローズされるまで、繰り返し実行される。プリンタドライバUIがクローズされると処理は全て終了し、本実施形態における印刷処理関連プログラムの処理も終了し、RAM２からはＯＳ４０５の機能により消去される。なお、本実施形態においては、本印刷処理関連プログラムを記録する媒体を外部メモリとしているが、外部メモリとしては、FD、HDドライブ、CD-ROMやICメモリカード等であってもよい。更に、本印刷プログラム単独、もしくはOSその他のホストコンピュータ上で動作するプログラムと共にROM３ｂに記録しておき、これをメモリマップの一部となすように構成し、直接CPU１で実行することも可能である。
【００６９】
以上説明したように、本実施形態によれば、プログラム開発者が用意する基本となるコンフリクト処理ルールを補完するコンフリクト条件を自動生成することで、漏れのない、コンフリクト解消処理が実現できるという効果がある。
【００７０】
（他の実施形態）
上記実施形態においては、プリンタドライバUIの更新処理をプリンタドライバUI本体３０６で実施しているが、図１０に示すように、コンフリクト処理ルールの中に、プリンタドライバUIを更新するための処理を関数として記述し、推論エンジン３０２がその記述を解釈した時点で、コンフリクトマネージャ３０３の状態変数リスト３０４を介して、プリンタドライバのUI更新処理を直接行うようにしても良い。
【００７１】
図１０は、図７のコンフリクト処理ルールのうち、(3)にUI更新の処理を追加したものである。{disable}の記述を追加することにより、図９（プリンタドライバの表示するユーザインタフェースの例で、図８の状態で、ユーザが[Booklet Printing]を選択した状態を例示する図）にあるGroupラジオボタンコントロールをdisableする処理がコンフリクト処理ルールの記述の一部として実現されるようになる。
【００７２】
さらに、図１１に示すようにコンフリクト処理ルールの中に、ユーザに対する情報の表示を可能にするメッセージボックスの表示処理を加えることも可能である。
【００７３】
例えば、図１１の(3)の{ Message(MSG001) }の記述は、図１２のメッセージボックスを表示するための処理を示している。MSG001は図１２に表示されているメッセージテキスト「Groupの設定はCollateに調整されました。」の文字列を指し示すIDで、ID: MSG001とそのIDが示す文字列はコンフリクトマネージャ３０３に文字列リソースとして存在している。
【００７４】
本実施形態によれば、ユーザインタフェースの更新処理やメッセージ処理もコンフリクト処理ルールに加えることで、開発者にとって可読性の高い、メンテナンスの容易なコーディングを実現できるという効果がある。
【００７５】
更に、ユーザインタフェース制御部は、ユーザインタフェース更新処理とメッセージ表示をコンフリクト処理部分に設けることで、コンフリクト処理ルールが変更された場合でも容易に変更後の条件に適合した表示を実現することが可能にする。
【図面の簡単な説明】
【００７６】
【図１】本発明が適用される実施形態において、コンフリクト解消処理が実行される印刷処理システムの構成を説明するブロック図である。
【図２】本実施形態におけるユーザインタフェース制御プログラムがホストコンピュータ３０００上のＲＡＭ２にロードされ、実行可能となった状態のメモリマップを示している。
【図３】本実施形態におけるユーザインタフェース制御部の内部処理の概要を示す図である。
【図４】本実施形態のコンフリクト処理における各モジュールで扱うデータの関連を示す図である。
【図５】本実施形態におけるコンフリクトを解消するための、補完ルールの生成処理を説明するフローチャートである。
【図６】補完ルールの生成処理前のコンフリクト処理ルールを例示する図である。
【図７】本実施形態における補完後のコンフリクト処理ルールを例示する図である。
【図８】本実施形態におけるプリンタドライバの表示するユーザインタフェースを例示する図である。
【図９】本実施形態におけるプリンタドライバの表示するユーザインタフェースの例で、ユーザが[Booklet Printing]を選択した状態を例示する図である。
【図１０】他の実施形態におけるコンフリクト処理ルールの記述を例示した図である。
【図１１】他の実施形態におけるコンフリクト処理ルールの記述を例示した図である。
【図１２】他の実施形態におけるユーザに表示されるメッセージボックスを例示する図である。
【符号の説明】
【００７７】
1 CPU
2 RAM
3 ROM
4 システムバス
12 CPU
13 ROM
19 RAM
3000 ホストコンピュータ
【図１】
2006236382.tif 000003
【図２】
2006236382.tif 000004
【図３】
2006236382.tif 000005
【図４】
2006236382.tif 000006
【図５】
2006236382.tif 000007
【図６】
2006236382.tif 000008
【図７】
2006236382.tif 000009
【図８】
2006236382.tif 000010
【図９】
2006236382.tif 000011
【図１０】
2006236382.tif 000012
【図１１】
2006236382.tif 000013
【図１２】
2006236382.tif 000014