(57)【特許請求の範囲】
【請求項１】
画像処理の対象とするデータを入力する一つ以上の入力部と、該画像処理の結果を出力する一つ以上の出力部と、前記入力部に応じて当該入力部からのデータの入力処理を制御する第一のフィルタと、前記出力部に応じて当該出力部への出力を制御する第二のフィルタとを備え、前記第一のフィルタと前記第二のフィルタとがユーザの指定に基づいて動的に接続されることによりアプリケーションが構築される画像処理装置であって、
画像データの種類を変換する第三のフィルタを新規に生成し、当該第三のフィルタを前記第二のフィルタの直前に挿入する手段を備え、
ジョブの実行時、前記第三のフィルタは前記第一のフィルタおよび前記第二のフィルタに対応する画像データの種類を前記第一のフィルタおよび前記第二のフィルタからそれぞれ取得し、取得した画像データの種類が異なる場合は、前記第一のフィルタが対応する画像データの種類から前記第二のフィルタが対応する画像データの種類へ変換することを特徴とする画像処理装置。
【請求項２】
請求項１に記載の画像処理装置において、
前記第三のフィルタによる変換は、ユーザの指定によらずに内部的に行われることを特徴とする画像処理装置。
【請求項３】
請求項１または２のいずれか一項に記載の画像処理装置において、
前記第三のフィルタは、画像データの種類の変換処理に加え、ユーザから指定された編集設定に基づき画像処理を行うことを特徴とする画像処理装置。
【請求項４】
請求項１乃至３のいずれか一項に記載の画像処理装置において、
前記第三のフィルタは、画像データの種類の変換処理として、色空間の変換を行うことを特徴とする画像処理装置。
【請求項５】
請求項１乃至３のいずれか一項に記載の画像処理装置において、
前記第三のフィルタは、画像データの種類の変換処理として、ファイル形式の変換を行うことを特徴とする画像処理装置。
【請求項６】
請求項１乃至５のいずれか一項に記載の画像処理装置において、
前記第一のフィルタは、スキャナが原稿から生成した画像データを入力する読取フィルタ、保管されている文書を入力する保管読出フィルタ、ネットワーク外から受信したデータを入力する受信フィルタのうちのいずれか一であることを特徴とする画像処理装置。
【請求項７】
請求項１乃至６のいずれか一項に記載の画像処理装置において、
前記第二のフィルタは、入力した画像データを用紙に印刷して出力する印刷フィルタ、入力した画像データを画像ファイルとしてネットワーク外へ送信する送信フィルタ、不揮発領域に文書を保存する保管登録フィルタのうちのいずれか一であることを特徴とする画像処理装置。
【請求項８】
画像処理の対象とするデータを入力する一つ以上の入力部と、該画像処理の結果を出力する一つ以上の出力部と、前記入力部に応じて当該入力部からのデータの入力処理を制御する第一のフィルタと、前記出力部に応じて当該出力部への出力を制御する第二のフィルタとを備え、前記第一のフィルタと前記第二のフィルタとがユーザの指定に基づいて動的に接続されることによりアプリケーションが構築される画像処理装置のアプリケーション実行方法であって、
画像データの種類を変換する第三のフィルタを新規に生成し、当該第三のフィルタを前記第二のフィルタの直前に挿入する工程と、
ジョブの実行時、前記第三のフィルタにより、前記第一のフィルタおよび前記第二のフィルタに対応する画像データの種類を前記第一のフィルタおよび前記第二のフィルタからそれぞれ取得し、取得した画像データの種類が異なる場合は、前記第一のフィルタが対応する画像データの種類から前記第二のフィルタが対応する画像データの種類へ変換する工程とを備えたことを特徴とするアプリケーション実行方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置およびアプリケーション実行方法に関し、特に画像処理の対象とするデータを入力する複数種類の入力部と、該画像処理の結果を出力する複数種類の出力部とを備えた画像処理装置およびアプリケーション実行方法に関する。
【背景技術】
【０００２】
近年におけるプリンタ、コピー機、スキャナ、ファクシミリ、またはこれらの機能を一台の筐体で実現する複合機等の画像処理装置では、メモリ等の制限は厳しいものの、汎用的なコンピュータと同様にＣＰＵを備え、各機能はアプリケーションの制御によって実現されるようになっている。
【０００３】
例えば、特許文献１に記載された画像処理装置では、各アプリケーションから共通的に利用される機能をプラットフォームとして備えており、当該プラットフォームのＡＰＩ（Application Program Interface）を利用してアプリケーションを実装することができる。かかる画像処理装置によれば、共通的に利用される機能がプラットフォームとして備えられていることにより、アプリケーションごとに重複した機能の実装が回避され、アプリケーション全体の開発効率を向上させることができる。
【特許文献１】特許第３６７９３４９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、一般的に、共通的に利用されるＡＰＩを備えたプラットフォームについては、当該プラットフォームによって提供される機能またはインタフェースの粒度が適切に設計されていないと、アプリケーションの開発効率の向上が期待以上に図れない場合がある。
【０００５】
例えば、当該粒度が小さ過ぎると、単純なサービスを提供するアプリケーションであるにもかかわらず、多くのＡＰＩの呼び出しが必要とされ、そのソースコードは複雑なものとなってしまう。
【０００６】
一方、当該粒度が大き過ぎると、あるインタフェースによって提供されている機能の一部について変更を加えたサービスを提供するアプリケーションを実装したい場合、当該プラットフォーム内を修正しなければならず、開発工数の増加を招いてしまいかねない。特に、プラットフォーム内における各モジュールの依存関係が強い場合は、プラットフォームに新規機能を追加するだけでなく、既存部分の修正も必要とされる場合があり、事態はより複雑となる。
【０００７】
また、既存のアプリケーションによって提供されているサービスの一部（例えば、画像の入力処理）を変更したアプリケーションを実装したい場合、当該一部以外の部分については既存のアプリケーションを呼び出すといったようなことはできない。したがって、改めてソースコードを記述して新たなアプリケーションを実装しなければならない。
【０００８】
本発明は上記の従来の問題点に鑑み提案されたものであり、その目的とするところは、機能のカスタマイズまたは拡張等を簡便化させることのできる画像処理装置およびアプリケーション実行方法を提供することにある。
【０００９】
また、画像データを入力するコンポーネントと画像データを出力するコンポーネントとで処理できる画像データの種類が異なる場合に、ユーザに画像データの違いを意識させることなく適正な処理を行うことのできる画像処理装置およびアプリケーション実行方法を提供することも目的とする。
【課題を解決するための手段】
【００１０】
上記の課題を解決するため、本発明にあっては、請求項１に記載されるように、画像処理の対象とするデータを入力する一つ以上の入力部と、該画像処理の結果を出力する一つ以上の出力部と、前記入力部に応じて当該入力部からのデータの入力処理を制御する第一のフィルタと、前記出力部に応じて当該出力部への出力を制御する第二のフィルタとを備え、前記第一のフィルタと前記第二のフィルタとがユーザの指定に基づいて動的に接続されることによりアプリケーションが構築される画像処理装置であって、画像データの種類を変換する第三のフィルタを新規に生成し、当該第三のフィルタを前記第二のフィルタの直前に挿入する手段を備え、ジョブの実行時、前記第三のフィルタは前記第一のフィルタおよび前記第二のフィルタに対応する画像データの種類を前記第一のフィルタおよび前記第二のフィルタからそれぞれ取得し、取得した画像データの種類が異なる場合は、前記第一のフィルタが対応する画像データの種類から前記第二のフィルタが対応する画像データの種類へ変換する画像処理装置を要旨としている。
【００１１】
また、請求項２に記載されるように、請求項１に記載の画像処理装置において、前記第三のフィルタによる変換は、ユーザの指定によらずに内部的に行われるようにすることができる。
【００１２】
また、請求項３に記載されるように、請求項１または２のいずれか一項に記載の画像処理装置において、前記第三のフィルタは、画像データの種類の変換処理に加え、ユーザから指定された編集設定に基づき画像処理を行うようにすることができる。
【００１３】
また、請求項４に記載されるように、請求項１乃至３のいずれか一項に記載の画像処理装置において、前記第三のフィルタは、画像データの種類の変換処理として、色空間の変換を行うようにすることができる。
【００１４】
また、請求項５に記載されるように、請求項１乃至３のいずれか一項に記載の画像処理装置において、前記第三のフィルタは、画像データの種類の変換処理として、ファイル形式の変換を行うようにすることができる。
【００１５】
また、請求項６に記載されるように、請求項１乃至５のいずれか一項に記載の画像処理装置において、前記第一のフィルタは、スキャナが原稿から生成した画像データを入力する読取フィルタ、保管されている文書を入力する保管読出フィルタ、ネットワーク外から受信したデータを入力する受信フィルタのうちのいずれか一であるものとすることができる。
【００１６】
また、請求項７に記載されるように、請求項１乃至６のいずれか一項に記載の画像処理装置において、前記第二のフィルタは、入力した画像データを用紙に印刷して出力する印刷フィルタ、入力した画像データを画像ファイルとしてネットワーク外へ送信する送信フィルタ、不揮発領域に文書を保存する保管登録フィルタのうちのいずれか一であるものとすることができる。
【００１７】
また、請求項８に記載されるように、画像処理の対象とするデータを入力する一つ以上の入力部と、該画像処理の結果を出力する一つ以上の出力部と、前記入力部に応じて当該入力部からのデータの入力処理を制御する第一のフィルタと、前記出力部に応じて当該出力部への出力を制御する第二のフィルタとを備え、前記第一のフィルタと前記第二のフィルタとがユーザの指定に基づいて動的に接続されることによりアプリケーションが構築される画像処理装置のアプリケーション実行方法であって、画像データの種類を変換する第三のフィルタを新規に生成し、当該第三のフィルタを前記第二のフィルタの直前に挿入する工程と、ジョブの実行時、前記第三のフィルタにより、前記第一のフィルタおよび前記第二のフィルタに対応する画像データの種類を前記第一のフィルタおよび前記第二のフィルタからそれぞれ取得し、取得した画像データの種類が異なる場合は、前記第一のフィルタが対応する画像データの種類から前記第二のフィルタが対応する画像データの種類へ変換する工程とを備えるアプリケーション実行方法として構成することができる。
【発明の効果】
【００１８】
本発明の画像処理装置およびアプリケーション実行方法にあっては、機能のカスタマイズまたは拡張等を簡便化させることのできる画像処理装置およびアプリケーション実行方法を提供することができる。また、画像データを入力するコンポーネントと画像データを出力するコンポーネントとで処理できる画像データの種類が異なる場合でも、ユーザに画像データの違いを意識させることなく適正な処理を行うことができる。
【発明を実施するための最良の形態】
【００１９】
以下、本発明の好適な実施形態につき説明する。
【００２０】
＜第１の実施形態＞
図１は第１の実施形態における複合機のソフトウェア構成例を示す図である。ここで、複合機とは、プリンタ、コピー、スキャナ、またはＦＡＸ等の複数の機能を一台の筐体において実現する画像処理装置をいう。
【００２１】
図１に示されるように、複合機１におけるソフトウェアは、ユーザインタフェース層１０、コントロール層２０、アプリケーションロジック層３０、デバイスサービス層４０、およびデバイス制御層５０等より構成される。なお、図中における各層の上下関係は、層間の呼び出し関係に基づいている。すなわち、基本的に図中において上にある層が下の層を呼び出す。
【００２２】
ユーザインタフェース層１０は、機能（例えば、コピー、印刷、スキャン、ＦＡＸ送信）の実行要求を受け付けるための機能が実装されている部分であり、例えば、通信サーバ部１１およびローカルＵＩ部１２等が含まれる。通信サーバ部１１は、例えば、図示しないクライアントＰＣ（Personal Computer）等からネットワーク経由で要求を受け付ける。ローカルＵＩ部１２は、例えば、図示しないオペレーションパネルを介して入力される要求を受け付ける。ユーザインタフェース層１０において受け付けられた要求は、コントロール層２０に伝えられる。
【００２３】
コントロール層２０は、要求された機能を実現するための処理を制御するための機能が実装されている部分である。具体的には、要求された機能に応じて、アプリケーションロジック層３０における各フィルタを接続し、接続されたフィルタに基づいて機能の実行を制御する。なお、本実施形態において「複合機１の機能」とは、複合機１がユーザに対して提供する一つのまとまった単位（要求が入力されて最終的な出力が得られるまで）のサービスと同義であり、ソフトウェア的には一つのまとまった単位のサービスを提供するアプリケーションと同義である。
アプリケーションロジック層３０は、それぞれが複合機１において提供される機能の一部を実現する部品群が実装されている部分である。すなわち、アプリケーションロジック層３０における部品を組み合わせることにより一つの機能が実現される。ここでは、各部品を「フィルタ」と呼ぶ。これは、複合機１のソフトウェアアーキテクチャが「パイプ＆フィルタ」と呼ばれる考え方に基づくことによる。
【００２４】
図２はパイプ＆フィルタの概念を説明するための図である。図２において、「Ｆ」はフィルタを示し、「Ｐ」はパイプを示す。図中に示されるように、各フィルタはパイプによって接続される。フィルタは、入力されたデータに対して変換を施し、その結果を出力する。パイプは、フィルタから出力されたデータを次のフィルタに伝達する。
【００２５】
すなわち、本実施形態における複合機１では、各機能をドキュメント(データ)に対する「変換」の連続として捉える。複合機の各機能は、ドキュメントの入力、加工、および出力によって構成されるものとして一般化することができる。そこで「入力」、「加工」、および「出力」を「変換」として捉え、一つの「変換」を実現するソフトウェア部品がフィルタとして構成される。入力を実現するフィルタを特に「入力フィルタ」という。また、加工を実現するフィルタを特に「変換フィルタ」という。更に、出力を実現するフィルタを特に「出力フィルタ」という。なお、各フィルタは独立しており、フィルタ間における依存関係（呼び出し関係）は基本的に存在しない。したがって、フィルタ単位で追加（インストール）または削除（アンインストール）が可能とされている。
【００２６】
図１に戻り、アプリケーションロジック層３０には、入力フィルタとして、読取フィルタ３０１、保管文書読出フィルタ３０２、メール受信フィルタ３０３、ＦＡＸ受信フィルタ３０４、ＰＣ文書受信フィルタ３０５、レポートフィルタ３０６等が含まれている。
【００２７】
読取フィルタ３０１は、スキャナによる画像データの読み取りを制御し、読み取られた画像データを出力する。保管文書読出フィルタ３０２は、複合機１の記憶装置に保管されている文書データ（画像データ）を読み出し、読み出されたデータを出力する。メール受信フィルタ３０３は、電子メールの受信し、当該電子メールに含まれているデータを出力する。ＦＡＸ受信フィルタ３０４は、ＦＡＸ受信を制御し、受信されたデータを出力する。ＰＣ文書受信フィルタ３０５は、図示しないクライアントＰＣから印刷データを受信し、受信された印刷データを出力する。レポートフィルタ３０６は、複合機１の設定情報や履歴情報等を、例えば表形式に整形されたデータとして出力する。
【００２８】
また、変換フィルタとしては、文書加工フィルタ３１１および文書変換フィルタ３１２等が含まれている。文書加工フィルタ３１１は、入力されたデータに所定の画像変換処理（集約、拡大、または縮小等）を施し、出力する。文書変換フィルタ３１２は、レンダリング処理を実行する。すなわち、入力されたＰｏｓｔＳｃｒｉｐｔデータをビットマップデータに変換して出力する。
【００２９】
また、出力フィルタとしては、印刷フィルタ３２１、保管文書登録フィルタ３２２、メール送信フィルタ３２３、ＦＡＸ送信フィルタ３２４、ＰＣ文書送信フィルタ３２５、およびプレビューフィルタ３２６等が含まれている。
【００３０】
印刷フィルタ３２１は、入力されたデータをプロッタに出力（印刷）させる。保管文書登録フィルタ３２２は、入力されたデータを複合機１内のハードディスク内に保存する。メール送信フィルタ３２３は、入力されたデータを電子メールに添付して送信する。ＦＡＸ送信フィルタ３２４は、入力されたデータをＦＡＸ送信する。ＰＣ文書送信フィルタ３２５は、入力されたデータをクライアントＰＣに送信する。プレビューフィルタ３２６は、入力されたデータを、複合機１のオペレーションパネルにプレビュー表示させる。
【００３１】
一方、アプリケーションロジック層３０は、コピーアクティビティ３１ａ、プリンタアクティビティ３１ｂ、およびマルチ文書アクティビティ３１ｃ等のアクティビティ３１を含む。ここで、「アクティビティ」とは、予め固定的に定義されたフィルタの組み合わせによって、一つの「機能」（複合機１がユーザに対して提供する一つのまとまった単位のサービスまたはアプリケーション）を実現するソフトウェアである。
【００３２】
すなわち、ユーザに各フィルタを個々に選択させることで「複合機１の機能」を組み立てることができるが、コピーのように頻繁に利用する機能については、毎回フィルタの選択によって実行指示を行うのはユーザにとって煩雑である。そこで、フィルタの組み合わせをアクティビティ３１として予め定義しておくことで、ユーザが、アクティビティ３１を単位として実行対象を選択すると、選択されたアクティビティ３１は、当該アクティビティ３１に定義された組み合わせに係る各フィルタを自動的に実行させる。これにより、操作の煩雑さを解消することができるとともに、アプリケーション単位で実行対象を選択していた従来のユーザインタフェースと同様の操作感を提供することができる。
【００３３】
図１において、コピーアクティビティ３１ａは、読取フィルタ３０１と、文書加工フィルタ３１１と、印刷フィルタ３２１との組み合わせにより、コピー機能（コピーアプリケーション）を実現するアクティビティ３１である。
【００３４】
プリンタアクティビティ３１ｂは、ＰＣ文書受信フィルタ３０５と、文書変換フィルタ３１２と、印刷フィルタ３２１との組み合わせにより、印刷機能（プリンタアプリケーション）を実現するアクティビティ３１である。
【００３５】
マルチ文書アクティビティ３１ｃは、入力フィルタ、変換フィルタ、および出力フィルタのそれぞれについて、自由な組み合わせが可能なアクティビティ３１である。
【００３６】
なお、各アクティビティ３１は独立しており、アクティビティ３１間における依存関係（呼び出し関係）は基本的に存在しない。したがって、アクティビティ３１単位で追加（インストール）または削除（アンインストール）が可能である。よって、図１に示されているアクティビティ３１以外にも、必要に応じて各種のフィルタの組み合わせによるアクティビティ３１を作成し、インストールすることができる。
【００３７】
一方、デバイスサービス層４０は、アプリケーションロジック層３０における各フィルタから共通に利用される下位機能が実装されている部分であり、例えば、画像パイプ４１およびデータ管理部４２等が含まれる。画像パイプ４１は、上述したパイプの機能を実現する。すなわち、あるフィルタからの出力データを次のフィルタに伝達する。データ管理部４２は、各種のデータベースを表現する。例えば、ユーザ情報が登録されたデータベースや、文書または画像データ等が蓄積されるデータベース等が相当する。
【００３８】
デバイス制御層５０は、デバイス（ハードウェア）を制御するドライバと呼ばれるプログラムモジュール群が実装されている部分であり、例えば、スキャナ制御部５１、プロッタ制御部５２、メモリ制御部５３、Ｔｅｌ回線制御部５４、およびネットワーク制御部５５等が含まれる。各制御部は、当該制御部の名前に付けられているデバイスを制御する。
【００３９】
図３は複合機１のハードウェア構成の一例を示す図である。複合機１のハードウェアとしては、コントローラ２０１と、オペレーションパネル２０２と、ファクシミリコントロールユニット（ＦＣＵ）２０３と、撮像部１２１と、印刷部１２２が存在する。
【００４０】
コントローラ２０１は、ＣＰＵ２１１、ＡＳＩＣ２１２、ＮＢ２２１、ＳＢ２２２、ＭＥＭ−Ｐ２３１、ＭＥＭ−Ｃ２３２、ＨＤＤ（ハードディスクドライブ）２３３、メモリカードスロット２３４、ＮＩＣ（ネットワークインタフェースコントローラ）２４１、ＵＳＢデバイス２４２、ＩＥＥＥ１３９４デバイス２４３、セントロニクスデバイス２４４により構成される。
【００４１】
ＣＰＵ２１１は、種々の情報処理用のＩＣ（Integrated Circuit）である。ＡＳＩＣ２１２は、種々の画像処理用のＩＣである。ＮＢ２２１は、コントローラ２０１のノースブリッジである。ＳＢ２２２は、コントローラ２０１のサウスブリッジである。ＭＥＭ−Ｐ２３１は、複合機１のシステムメモリである。ＭＥＭ−Ｃ２３２は、複合機１のローカルメモリである。ＨＤＤ２３３は、複合機１のストレージである。メモリカードスロット２３４は、メモリカード２３５をセットするためのスロットである。ＮＩＣ２４１は、ＭＡＣアドレスによるネットワーク通信用のコントローラである。ＵＳＢデバイス２４２は、ＵＳＢ規格の接続端子を提供するためのデバイスである。ＩＥＥＥ１３９４デバイス２４３は、ＩＥＥＥ１３９４規格の接続端子を提供するためのデバイスである。セントロニクスデバイス２４４は、セントロニクス仕様の接続端子を提供するためのデバイスである。オペレーションパネル２０２は、オペレータが複合機１に入力を行うためのハードウェア（操作部）であると共に、オペレータが複合機１から出力を得るためのハードウェア（表示部）である。
【００４２】
なお、図１に示されるソフトウェアは、例えば、ＭＥＭ−Ｃ２３２に格納され、ＣＰＵ２１１によって処理されることによりその機能を複合機１に実行させる。
【００４３】
以下、アクティビティおよびフィルタについて更に詳しく説明する。図４はアクティビティの構成要素を説明するための図である。図４に示されるように、アクティビティ３１は、アクティビティＵＩ、アクティビティロジック、および永続記憶領域情報等より構成される。
【００４４】
アクティビティＵＩは、アクティビティ３１に関する画面（例えば、アクティビティ３１の実行条件等を設定させるための設定画面）をオペレーションパネル等に表示させるための情報またはプログラムである。
【００４５】
アクティビティロジックは、アクティビティ３１の処理内容が実装されたプログラムである。基本的に、アクティビティロジックには、フィルタの組み合わせに関するロジック（例えば、フィルタの実行順、複数のフィルタに跨る設定、フィルタの接続変更、エラー処理等）が実装されている。
【００４６】
永続記憶領域情報は、アクティビティ３１に対する設定情報（例えば、実行条件のデフォルト値）等、不揮発メモリに保存する必要があるデータのスキーマ定義が相当する。当該スキーマ定義は、アクティビティ３１のインストール時にデータ管理部４２に登録される。
【００４７】
図５はフィルタの構成要素を説明するための図である。図５に示されるように、各フィルタは、フィルタ設定用ＵＩ、フィルタロジック、フィルタ固有下位サービス、および永続記憶領域情報等より構成される。このうち、フィルタ設定用ＵＩ、フィルタ固有下位サービス、および永続記憶領域情報については、フィルタによって必ずしも構成要素に含まれない。
【００４８】
フィルタ設定用ＵＩは、フィルタの実行条件等を設定させるための画面をオペレーションパネル等に表示させるプログラムである。例えば、読取フィルタ３０１であれば、解像度、濃度、画像種別等を設定させる画面が相当する。なお、オペレーションパネルの表示がＨＴＭＬデータや、スクリプトに基づいて行われ得ることに鑑みれば、フィルタ設定用ＵＩはＨＴＭＬデータやスクリプトであってもよい。
【００４９】
フィルタロジックは、フィルタの機能を実現するためロジックが実装されたプログラムである。すなわち、フィルタの構成要素としてのフィルタ固有下位サービスや、デバイスサービス層４０またはデバイス制御層５０等を利用して、フィルタ設定用ＵＩを介して設定された実行条件に応じてフィルタの機能を実現する。例えば、読取フィルタ３０１であれば、スキャナによる原稿の読み取り制御のためのロジックが相当する。
【００５０】
フィルタ固有下位サービスは、フィルタロジックを実現するために必要な下位機能（ライブラリ）である。すなわち、デバイスサービス層４０またはデバイス制御層５０相当する機能であるが、他のフィルタから使用されないものについては、フィルタの一部として実装されてもよく、当該一部がフィルタ固有下位サービスに相当する。例えば、読取フィルタ３０１であれば、スキャナを制御するための機能が相当するが、本実施形態では、デバイス制御層５０においてスキャナ制御部５１として実装されている。したがって、読取フィルタ３０１において、フィルタ固有下位サービスの実装は必ずしも必要ではない。
【００５１】
永続記憶領域情報は、フィルタに対する設定情報（例えば、実行条件のデフォルト値）等、不揮発メモリに保存する必要があるデータのスキーマ定義が相当する。当該スキーマ定義は、フィルタのインストール時にデータ管理部４２に登録される。
【００５２】
図６は複合機１における各機能を実現するためのフィルタの組み合わせの例を示す図である。例えば、コピー機能は、読取フィルタ３０１と印刷フィルタ３２１とを接続することにより実現される。読取フィルタ３０１によって原稿より読み取られた画像データを印刷フィルタ３２１によって印刷すればよいからである。なお、集約、拡大、または縮小等の加工が要求された場合は、これらの加工を実現する文書加工フィルタ３１１が二つのフィルタの間に挿入される。
【００５３】
プリンタ機能（クライアントＰＣからの印刷機能）は、ＰＣ文書受信フィルタ３０５と文書変換フィルタ３１２と印刷フィルタ３２１とを接続することにより実現される。スキャンｔｏ  ｅｍａｉｌ機能（スキャンした画像データを電子メールで転送する機能）は、読取フィルタ３０１とメール送信フィルタ３２３とを接続することによって実現される。ＦＡＸ送信機能は、読取フィルタ３０１とＦＡＸ送信フィルタ３２４とを接続することによって実現される。ＦＡＸ受信機能は、ＦＡＸ受信フィルタ３０４と印刷フィルタ３２１とを接続することによって実現される。ドキュメントボックス蓄積機能（スキャンした画像データを複合機１内に保存する機能）は、読取フィルタ３０１と保管文書登録フィルタ３２２とを接続することによって実現される。ドキュメントボックス印刷機能（複合機１内に保存されている文書データを印刷する機能）は、保管文書読出フィルタ３０２と印刷フィルタ３２１とを接続することにより実現される。
【００５４】
図６において、例えば、読取フィルタ３０１については４つの機能（コピー、スキャンｔｏ  ｅｍａｉｌ、ＦＡＸ送信、ドキュメントボックス蓄積）において利用されている。このように、各フィルタは複数の機能から利用可能であり、それによって各機能を実現するための開発工数を削減することができる。例えば、コピー機能とスキャン機能（ドキュメントボックス蓄積）について、その実行条件を設定させるためのユーザインタフェースは類似しているものであった。しかし、各機能をアプリケーションによって実装する場合には、アプリケーションごとに個別にユーザインタフェースの実装も行われていた。しかし、本実施形態では、コピー機能およびスキャン機能のいずれの場合も、読取フィルタ３０１のユーザインタフェースによって設定が行われ、ユーザインタフェースの共通化をも図ることができる。
【００５５】
更に、新たな機能を実現する場合について考える。まず、機能＃１として、複合機１では対応していないＰＤＬ（Page Description Language）（以下、「他ＰＤＬ」という。）によってクライアントＰＣから送信される印刷データを印刷する機能を実現する場合について考える。この場合、図６におけるプリンタ機能を雛形とすることができる。ただし、プリンタ機能では、ＰＣ文書受信フィルタ３０５により出力されるデータがＰｏｓｔＳｃｒｉｐｔ形式であることが前提とされている。文書変換フィルタ３１２が入力データとして扱えるのはＰｏｓｔＳｃｒｉｐｔ形式のデータだからである。しかし、機能＃１の場合、ＰＣ文書受信フィルタ３０５によって受信され、当該フィルタより出力されるのは他ＰＤＬ形式のデータである。したがって、このまま文書変換フィルタ３１２に転送しても文書変換フィルタ３１２は適切に処理を実行することができない。そこで、他ＰＤＬ形式からＰｏｓｔＳｃｒｉｐｔ形式へのデータ変換を実行する変換フィルタ（以下「他ＰＤＬ−ＰＳ変換フィルタ」という。）を新たに実装し、当該フィルタをＰＣ文書受信フィルタ３０５と文書変換フィルタ３１２との間に挿入すれば、機能＃１を実現することができる。すなわち、機能＃１は、ＰＣ文書受信フィルタ３０５と他ＰＤＬ−ＰＳ変換フィルタと文書変換フィルタ３１２と印刷フィルタ３２１とを接続することにより実現される。
【００５６】
次に、機能＃２として、Ｗｅｂサイトから情報を収集し、収集された情報を印刷する機能を実現する場合について考える。この場合、Ｗｅｂサイトから情報を収集するフィルタが存在しない。したがって、少なくともＷｅｂサイトから情報を収集する入力フィルタ（以下「Ｗｅｂ収集フィルタ」という。）を新たに実装する必要がある。また、機能＃２では最終的に印刷を実行させたいので、出力フィルタとしては印刷フィルタ３２１を用いるのが適切である。ここで問題となるのが、Ｗｅｂ収集フィルタと印刷フィルタ３２１との間をどのように接続するかである。すなわち、印刷フィルタ３２１の入力データはレンダリングされたビットマップである必要があるところ、Ｗｅｂ収集フィルタ内にレンダリング機能を実装するのは非常に工数がかかるので適切ではない。そこで、既にレンダリング機能を実現する文書変換フィルタ３１２を利用することが考えられる。ただし、文書変換フィルタ３１２の入力データは、ＰｏｓｔＳｃｒｉｐｔ形式である必要がある。そこで、Ｗｅｂ収集フィルタを、収集した情報をＰｏｓｔＳｃｒｉｐｔ形式によって出力するように実装すれば、文書変換フィルタ３１２との接続が可能となる。このようにＷｅｂ収集フィルタを実装することにより、機能＃２は、Ｗｅｂ収集フィルタと文書変換フィルタ３１２と、文書変換フィルタ３１２と印刷フィルタ３２１との接続により実現される。
【００５７】
以下、本実施形態における複合機１の処理手順について説明する。図７および図８は、複合機１が一つの機能を実現する際の処理手順を説明するためのフローチャートである。
【００５８】
まず、ユーザによってアクティビティが選択されることにより、選択されたアクティビティにより特定される入力フィルタが選択され（ステップＳ１０１）、選択された入力フィルタの実行条件が設定される（ステップＳ１０２）。同様に、変換フィルタまたは出力フィルタについても選択が行われ（ステップＳ１０３）、フィルタ間の接続が指定され（ステップＳ１０４）、実行条件が設定される（ステップＳ１０５）。
【００５９】
上記の操作は、ローカルＵＩ部１２の制御のもと、例えば、図９に示されるようなオペレーションパネル（図３のオペレーションパネル２０２）を介して行われる。オペレーションパネル２０２は、タッチパネルとスタートボタンとを含む。タッチパネルは、タッチ操作で入力を行うためのハードウェア（タッチ操作部）であると共に、画面表示で出力を得るためのハードウェア（画面表示部）である。スタートボタンは、要求した機能の実行開始指示を行うためのハードウェアである。
【００６０】
図９は、アクティビティを利用させるための操作画面例を示す図である。図９において、アクティビティ選択画面６００は、実行対象とするアクティビティを選択させるためにオペレーションパネル２０２のタッチパネルに表示される画面である。アクティビティ選択画面６００には、複合機１にインストールされているアクティビティ３１ごとにボタンが表示される。図中では、コピーアクティビティ３１ｂに対応するコピーボタン６１０、プリンタアクティビティ３１ｂに対応するプリンタボタン６２０、マルチ文書アクティビティ３１ｃに対応するマルチ文書ボタン６３０が表示されている。
【００６１】
なお、インストールされているアクティビティ３１の一覧情報は、記憶装置に記録されており、例えば、コントロール層２０によって管理されている。したがって、ローカルＵＩ部１２は、コントロール層２０に問い合わせることにより、アクティビティ３１の一覧情報を取得し、当該一覧情報に基づいて、アクティビティ選択画面６００の各ボタンを表示させる。
【００６２】
アクティビティ選択画面６００において、コピーボタン６１０が選択（タッチ）されると、ローカルＵＩ部１２は、コピーアクティビティ３１ａのアクティビティＵＩを呼び出すことによりコピーアクティビティ３１ａの画面情報を取得し、当該画面情報に基づいてコピーアクティビティ画面６１１をタッチパネルに表示させる。コピーアクティビティ画面６１１は、コピーアクティビティ３１ａの実行条件を設定させるための画面であり、図中では、コピーアクティビティ３１ａを構成する各フィルタの設定画面（読取フィルタ設定画面６１１ａ、文書加工フィルタ設定画面６１１ｂ、および印刷フィルタ設定画面６１１ｃ）が表示された例が示されている。すなわち、各フィルタの実行条件を設定させることで、コピーアクティビティ３１ａの実行条件が設定されるからである。各フィルタの設定画面の画面情報は、コピーアクティビティ３１ａのアクティビティＵＩが、ローカルＵＩ部１２からの呼び出しに応じて各フィルタのフィルタ用設定ＵＩを呼び出すことにより取得され、コピーアクティビティ３１ａの画面情報に含められる（マージされる）。なお、単に、各フィルタの設定画面を並べるだけでなく、各フィルタに対して一括して設定を行うためのＵＩ（例えば、「両面→両面」ボタン、読み取りの設定（両面）ボタン、印刷の設定（両面）ボタン等）をコピーアクティビティ画面６１１に表示させるようにしてもよい。
【００６３】
プリンタボタン６２０が選択されると、ローカルＵＩ部１２は、プリンタアクティビティ３１ｂのアクティビティＵＩを呼び出すことによりプリンタアクティビティ３１ｂの画面情報を取得し、当該画面情報に基づいてプリンタアクティビティ画面６２１をタッチパネルに表示させる。プリンタアクティビティ画面６２１は、プリンタアクティビティ３１ｂの状態（印刷中等）を表示させる画面である。すなわち、プリンタアクティビティ３１ｂは、印刷データの受信に応じて起動されるものであり（すなわち、オペレーションパネル２０２上における操作によって起動されるものではない。）、基本的に設定画面は不要だからである。
【００６４】
マルチ文書ボタン６３０が選択されると、ローカルＵＩ部１２は、マルチ文書アクティビティ３１ｃのアクティビティＵＩを呼び出すことによりマルチ文書アクティビティ３１ｃの画面情報を取得し、当該画面情報に基づいてマルチ文書アクティビティ画面６３１をタッチパネルに表示させる。
【００６５】
マルチ文書アクティビティ画面６３１においては、ユーザの操作により任意のフィルタを組み合わせることができる。マルチ文書アクティビティ画面６３１は、入力フィルタ選択領域５１３、変換フィルタ選択領域５１４、出力フィルタ選択領域５１５、および要求表示領域５１６等より構成される。入力フィルタ選択領域５１３は、入力フィルタを選択させるための領域であり、入力フィルタごとにボタンが表示されている。入力フィルタ選択領域５１３でいずれかのボタンが選択されると、選択されたボタンに対応する入力フィルタのボタンが要求表示領域５１６に表示される。図中では、便宜上、読取フィルタ３０１および保管文書読出フィルタ５１３のボタンが表示されている。
【００６６】
変換フィルタ選択領域５１４は、変換フィルタを選択させるための領域であり、変換フィルタごとにボタンが表示されている。変換フィルタ選択領域５１４でいずれかのボタンが選択されると、選択されたボタンに対応する変換フィルタのボタンが要求表示領域５１６に表示される。
【００６７】
出力フィルタ選択領域５１５は、出力フィルタを選択させるための領域であり、出力フィルタごとにボタンが表示されている。出力フィルタ選択領域５１５でいずれかのボタンが選択されると、選択されたボタンに対応する出力フィルタのボタンが要求表示領域５１６に表示される。図中では、便宜上、印刷フィルタ３２１、保管文書登録フィルタ３２２、メール送信フィルタ３２３、およびＦＡＸ送信フィルタ３２４のボタンが表示されている。
【００６８】
なお、インストールされているフィルタ（入力フィルタ、変換フィルタ、出力フィルタ）の一覧情報は、記憶装置に記録されており、例えば、コントロール層２０によって管理されている。したがって、ローカルＵＩ部１２は、コントロール層２０に問い合わせることにより、入力フィルタ選択領域５１３、変換フィルタ選択領域５１４、出力フィルタ選択領域５１５を表示させるためのフィルタの一覧情報を取得する。
【００６９】
要求表示領域５１６には、入力フィルタ選択領域５１３、変換フィルタ選択領域５１４または出力フィルタ選択領域５１５において選択されたフィルタのボタンが表示され、入力フィルタ、変換フィルタ、または出力フィルタとの間は、データの流れまたはパイプを示す矢印で接続される。矢印を操作することにより、実行するフィルタの順番を変更することも可能である。要求表示領域５１６における表示内容によって、ユーザは、利用するフィルタとその流れを認識することができる。要求表示領域５１６には、更に、設定ボタン５１７および削除ボタン５１８が配置されている。設定ボタン５１７は、要求表示領域５１６においてフィルタのボタンが選択されている場合に、当該フィルタの設定画面を表示させるためのボタンである。すなわち、設定ボタン５１７が押下（タッチ）されると、選択されているフィルタのフィルタ設定ＵＩに基づいて、その設定画面がタッチパネル５１１に表示される。削除ボタン５１８は、要求表示領域５１６においてフィルタのボタンが選択されている場合に、当該フィルタの利用を解除するためのボタンである。
【００７０】
なお、入力フィルタ、変換フィルタ、および出力フィルタは、一つの機能に対してそれぞれ複数個の選択が可能である。例えば、スキャンされた画像と、複合機１内に保存されている画像を合成して、印刷すると共にＦＡＸ送信するといったような場合、少なくとも二つの入力フィルタ（読取フィルタ３０１および保管文書読出フィルタ３０２）と二つの出力フィルタ（印刷フィルタ３２１およびＦＡＸ送信フィルタ３２４）とが選択される。
【００７１】
図７に戻り、フィルタの選択が完了し（ステップＳ１０６でＹＥＳ）、スタートボタンが押下されると、ユーザインタフェース層１０からコントロール層２０に対して、要求内容が通知される。
【００７２】
図１０はユーザインタフェース層１０からコントロール層２０へ通知される要求内容を概念的に示す図である。図１０に示されるように、ユーザインタフェース層１０からの要求は、ユーザインタフェース層１０において選択されたフィルタごとに、フィルタの種別と当該フィルタに対する設定情報とを含むものであり、更にフィルタの実行順も含も含んでいる（図中において各ブロックを結ぶ矢印が、フィルタの実行順を示す）。
【００７３】
図７に戻り、上述したような要求内容を受けて、コントロール層２０は、選択された各フィルタ間をパイプによって接続する（ステップＳ１０７）。パイプの実体はメモリ（ＨＤＤ（Hard Disk Drive）も含む）であるが、パイプの両端のフィルタに応じて利用するメモリの種類が異なり、その対応関係は、例えば、複合機１のＨＤＤ内に予め定義されている。
【００７４】
図１１はフィルタとパイプの対応テーブルの例を示す図である。図１１の対応テーブル６０によれば、例えば、読取フィルタ３０１と印刷フィルタ３２１や、文書変換フィルタ３１２と印刷フィルタ３２１は、ＤＭＡ（Direct Memory Access）パイプによって接続され、高速にデータが転送される。また、ＰＣ文書受信フィルタ３０５と文書変換フィルタ３１２とは、スプールパイプによって接続される。スプールパイプとは、ＨＤＤを用いるパイプであり、左側のフィルタから出力されたデータは、右側のフィルタが読み出すまでＨＤＤにスプール（保存）される。それ以外のフィルタ間は、汎用メモリパイプによって接続される。汎用メモリパイプとは、有限サイズのＲＡＭバッファによってデータ転送を行うパイプである。図１１に示される対応テーブル６０は、フィルタやパイプの拡張（追加）や削除等に応じて編集可能である。なお、図１における画像パイプ４１は、上記の各種のパイプへのインタフェースを提供するモジュールを抽象的に表現したものである。
【００７５】
したがって、コントロール層２０は、図１１の対応テーブル６０に基づいて、各フィルタ間を特定のパイプで接続する。図１２はコントロール層２０によって生成される情報を概念的に示す図である。図１２では、各フィルタ（「Ｆ」）間がパイプ（「Ｐ」）によって接続されている様子が示されている。
【００７６】
図７に戻り、コントロール層２０は、各フィルタに対して並列的に実行要求を出力する（ステップＳ１０８）。すなわち、フィルタの呼び出しはフィルタの接続順ではなく、全てのフィルタに対してほぼ同時に行われる。フィルタ間の同期はパイプによってとられるからである。すなわち、コントロール層からの実行要求を受けて、各フィルタは自分の入力側のパイプにデータが入力されるまで待機する。ただし、入力フィルタには、入力側にパイプは存在しない。したがって、入力フィルタは実行要求に応じて処理を開始する。
【００７７】
次に、図８において、まず、入力フィルタは、入力デバイスよりデータを入力し（ステップＳ１１１）、当該データを、出力側に接続されているパイプに出力する（ステップＳ１１２）。なお、データが複数回に分けて入力される場合（複数枚の原稿がスキャンされる場合等）は、データの入力とパイプへの出力が繰り返される。全ての入力データについて処理が終了すると（ステップＳ１１３でＹＥＳ）、入力フィルタの処理は終了する。
【００７８】
変換フィルタは、入力側に接続されているパイプに対するデータの入力を検知すると処理を開始する。まず、当該パイプからデータを読み込み（ステップＳ１２１）、データに対して画像処理を施す（ステップＳ１２２）。続いて、処理結果としてのデータを出力側に接続されているパイプに出力する（ステップＳ１２３）。入力側のパイプに入力された全てのデータについて処理が終了すると（ステップＳ１２４でＹＥＳ）、変換フィルタの処理は終了する。
【００７９】
出力フィルタは、入力側に接続されているパイプに対するデータの入力を検知すると処理を開始する。まず、当該パイプからデータを読み込み（ステップＳ１３１）。続いて、読み込まれたデータを出力デバイスを利用して出力する（ステップＳ１３２）。入力側のパイプに入力された全てのデータについて処理が終了すると（ステップＳ１３３でＹＥＳ）、出力フィルタの処理は終了する。
【００８０】
以下、パイプについて更に詳しく説明する。図１３はパイプを介したフィルタ間のデータの伝達手順を説明するための図である。図中において、フィルタＡ３００ａおよびフィルタＢ３００ｂは、それぞれフィルタを示す。ＤＭＡパイプ４１ａは、図１１において説明した、画像パイプ４１の一例としてのＤＭＡパイプである。画像メモリ２５０は、複合機１に備えられた物理的な（ハードウェアとしての）画像メモリである。
【００８１】
フィルタＡ３００ａからフィルタＢ３００ｂにデータ（画像データ）が伝達される場合、フィルタＡ３００ａは、ＤＭＡパイプ４１ａに対して画像データを格納するためのメモリ領域の確保を要求する（ステップＳ５１）。ＤＭＡパイプ４１ａは、当該メモリ領域を確保し、そのアドレスをフィルタＡ３００ａに返却する（ステップＳ５２）。フィルタＡ３００ａは、返却されたアドレス（画像メモリ２５０）に画像データを書き込み（ステップＳ５３）、画像データを書き込んだアドレスをＤＭＡパイプ４１ａに通知する（ステップＳ５４）。
【００８２】
フィルタＢ３００ｂは、ＤＭＡパイプ４１ａに対して画像データが書き込まれたアドレスが通知されるまで、当該アドレスの問い合わせを繰り返し（定期的に）行っている（ステップＳ５５）。ただし、フィルタＢ３００ｂは、当該アドレスが通知されるまで待機していてもよい。当該アドレスがＤＭＡパイプ４１ａに通知されると、フィルタＢ３００ｂは、当該アドレスを取得し、画像メモリ２５０に対する画像データの書き込みを検知する。そこで、フィルタＢ３００ｂは、画像メモリ２５０の当該アドレスより画像データを読み出し（ステップＳ５６）、当該画像データに対してフィルタ３００ｂに関する処理を実行する。処理が完了すると、フィルタＢ３００ｂは、当該アドレスに係るメモリ領域の開放をＤＭＡパイプ４１ａに要求する（ステップＳ５７）。ＤＭＡパイプ４１ａは、当該メモリ領域を開放する（ステップＳ５８）。
【００８３】
このように、フィルタ間のデータの伝達を画像メモリ（共有メモリ）を介して行うことにより、フィルタごとに画像データを格納するためのメモリ領域を確保する必要がなくなり、メモリ効率や処理性能の向上を図ることができる。また、フィルタ間に呼び出し関係が生じないため、フィルタの独立性を保つことができる。
【００８４】
＜第２の実施形態＞
第２の実施形態は、画像データを入力するコンポーネント（入力フィルタ）と画像データを出力するコンポーネント（出力フィルタ）とで処理できる画像データの種類が異なる場合に、ユーザに画像データの違いを意識させることなく適正な処理を行うことができるようにしたものである。画像データの種類には、色空間が異なるＲＧＢ形式、ＣＭＹＫ形式や、ファイル形式が異なるＴＩＦＦ形式、ＭＭＲ形式、ＰＤＦ形式、ＪＰＥＧ形式が含まれる。なお、この第２の実施形態はパイプ＆フィルタのメカニズムを前提としており、その基本的な構成および動作については第１の実施形態において説明したものと同様である。
【００８５】
図１４は第２の実施形態における複合機１のソフトウェア構成例を示す図である。
【００８６】
図１４において、ユーザインタフェース層１０にはユーザインタフェースの提供を行うコンポーネントであるＵＩ Ｃ１が設けられている。アプリケーションロジック層３０には、コピー、ＦＡＸ送信、メール送信等の所定の機能を提供するコンポーネントであるアクティビティＣ２と、画像データを入力する機能を提供するコンポーネントである入力フィルタＣ３と、画像データの編集の機能を提供するコンポーネントである編集フィルタＣ４と、画像データを出力する機能を提供するコンポーネントである出力フィルタＣ５と、画像データの種類を変換する機能を提供するコンポーネントである変換フィルタＣ６とが設けられている。なお、編集フィルタＣ４には変換フィルタＣ６と同等の変換機能が含まれている。これは、本実施形態では、後述するように、入力フィルタＣ３と出力フィルタＣ５とが直結されている箇所にデータ種類の違いを整合させるために編集フィルタＣ４を挿入するようにしているが、入力フィルタＣ３と出力フィルタＣ５の間に予め編集フィルタＣ４が挿入されている場合については、更に編集フィルタＣ４の後に変換フィルタＣ６を挿入することはせず、編集フィルタＣ４に変換機能を併せて行わせるようにしていることによる。編集処理と変換処理を併せて一度に実行した方が速度パフォーマンスを向上させることができるからである。
【００８７】
デバイスサービス層４０には、アプリケーションロジック層３０の各コンポーネントからのリクエストを処理する機能を提供するコンポーネントであるリクエスト管理Ｃ７と、各フィルタ間の画像データの仲介の機能を提供するコンポーネントであるパイプＣ８とが設けられている。
【００８８】
図１５は各コンポーネントに含まれるプリファレンス等の例を示す図である。ここで、プリファレンスとは、各コンポーネントの動作項目設定内容および他のコンポーネントとの接続関係等を含む情報である。
【００８９】
図１５において、ＵＩ Ｃ１には、「ＵＩ表示（）」のメンバ関数（メソッド）が含まれている。アクティビティＣ２には、「アクティビティプリファレンス」「アクティビティジョブ」と、「プリファレンス生成（）」「デフォルト値設定（）」「設定変更（）」「実行要求（）」「フィルタの再構築（）」「ジョブ生成（）」「実行開始（job：ジョブ）」のメンバ関数が含まれている。入力フィルタＣ３には、「入力フィルタプリファレンス」「入力フィルタジョブ」と、「プリファレンス生成（）」「デフォルト値設定（）」「ユーザに見せるフィルタの接続（filter：フィルタ）」「設定変更（）」「内部で動くフィルタの接続（filter：フィルタ）」「ジョブ生成（）」「実行開始（job：ジョブ）」「入力処理（）」のメンバ関数が含まれている。編集フィルタＣ４には、「編集フィルタプリファレンス」「編集フィルタジョブ」と、「プリファレンス生成（）」「デフォルト値設定（）」「設定変更（）」「内部で動くフィルタの接続（filter：フィルタ）」「ユーザに見せるフィルタの接続（filter：フィルタ）」「ジョブ生成（）」「実行開始（job：ジョブ）」「データ要求（kind：Enumeration）」「データ種類の比較（）」「データ変換（）」「設定値コピー（pref：プリファレンス）」のメンバ関数が含まれている。出力フィルタＣ５には、「出力フィルタプリファレンス」「出力フィルタジョブ」と、「プリファレンス生成（）」「デフォルト値設定（）」「設定変更（）」「ジョブ生成（）」「実行開始（job：ジョブ）」「出力処理（）」のメンバ関数が含まれている。変換フィルタＣ６には、「変換フィルタプリファレンス」「変換フィルタジョブ」と、「プリファレンス生成（）」「デフォルト値設定（）」「設定変更（）」「内部で動くフィルタの接続（filter：フィルタ）」「ジョブ生成（）」「実行開始（job：ジョブ）」「データ要求（kind:Enumeration）」「データ種類の比較（）」「データ変換（）」のメンバ関数が含まれている。リクエスト管理Ｃ７には、「ジョブの構築（pref：プリファレンス）」のメンバ関数が含まれている。パイプＣ８には、「データ［］」と、「パイプ生成（）」「前段フィルタの接続（job：ジョブ）」「後段フィルタの接続（job：ジョブ）」「データ書込（kind：Enumeration，data：画像）」「データ書込（）」のメンバ関数が含まれている。
【００９０】
図１６は第２の実施形態の処理概要を示すフローチャートである。
【００９１】
図１６において、先ず、ユーザによりアクティビティＣ２の選択が行なわれ、当該アクティビティＣ２を構成するフィルタ（入力フィルタＣ３、編集フィルタＣ４、出力フィルタＣ５等）が選択される（ステップＳ２０１）。ユーザにより選択されるアクティビティＣ２は様々であり、
（１）入力フィルタＣ３に出力フィルタＣ５が直結するパターン
（２）入力フィルタＣ３に複数の出力フィルタＣ５が直結するパターン
（３）入力フィルタＣ３の後に編集フィルタＣ４を挟んで出力フィルタＣ５が接続されるパターン
（４）入力フィルタＣ３に編集フィルタＣ４が接続され、その編集フィルタＣ４に複数の出力フィルタＣ５が接続されるパターン
（５）入力フィルタＣ３から複数に分岐し、一部の枝には編集フィルタＣ４と出力フィルタＣ５が順次接続され、他の枝には出力フィルタＣ５が直結するパターン
等がある。それぞれのパターンについては後により詳しく説明する。
【００９２】
次いで、ユーザはＵＩ Ｃ１によりアクティビティＣ２を構成する各フィルタの動作項目設定を行い、アクティビティＣ２は自己および配下の各フィルタにプリファレンス設定を行う（ステップＳ２０２）。
【００９３】
次いで、ユーザからの実行要求時に、アクティビティＣ２はプリファレンスの組換えを行い、ユーザが選択したアクティビティＣ２のフィルタ構成では対応できない、入力フィルタＣ３と出力フィルタＣ５とで処理できる画像データの種類の違いを吸収できるよう、ユーザに見えるフィルタ構成とは異なる内部的なフィルタ構成を構築する（ステップＳ２０３）。
【００９４】
これらの処理の後、アクティビティＣ２の実行を行ない（ステップＳ２０４）、ユーザに所定の機能を提供する。
【００９５】
図１７はアクティビティＣ２によるプリファレンスの組換え（図１６のステップＳ２０３）の処理例を示すフローチャートであり、（ａ）もしくは（ｂ）のいずれかの処理を採用することができる。
【００９６】
（ａ）において、ユーザによるスタートボタンの押下が行なわれると（ステップＳ２１１）、アクティビティＣ２は実行要求を受け付け（ステップＳ２１２）、入力フィルタＣ３と出力フィルタＣ５が直接につながっている箇所があるか否か判断する（ステップＳ２１３）。
【００９７】
入力フィルタＣ３と出力フィルタＣ５が直接につながっている箇所がある場合（ステップＳ２１３のＹ）、アクティビティＣ２は変換フィルタＣ６を新規に生成し、出力フィルタＣ５の直前に挿入する（ステップＳ２１４）。入力フィルタＣ３と出力フィルタＣ５が直接につながっている箇所がない場合（ステップＳ２１３のＮ）、この処理は行わない。入力フィルタＣ３と出力フィルタＣ５が直接につながっている箇所に変換フィルタＣ６を新規に生成して挿入するのは、入力フィルタＣ３と出力フィルタＣ５では処理できる画像データの種類が異なる場合があることから、データの種類の違いを吸収するためである。
【００９８】
次いで、アクティビティＣ２は編集フィルタＣ４の後段に複数のフィルタが直接につながっている箇所があるか否か判断する（ステップＳ２１５）。編集フィルタＣ４の後段に複数のフィルタが直接につながっている箇所がある場合（ステップＳ２１５のＹ）、アクティビティＣ２は後段につながっているフィルタの数分だけ編集フィルタＣ４の複製を生成する（ステップＳ２１６）。編集フィルタＣ４の後段に複数のフィルタが直接につながっている箇所がない場合（ステップＳ２１５のＮ）、この処理は行わない。編集フィルタＣ４の後段に複数のフィルタが直接につながっている場合に編集フィルタＣ４の複製を生成するのは、一つの編集フィルタＣ４では一のデータ形式への変換しか行えないため、後段に接続された複数のフィルタ毎にデータ形式の変換を行うために、後段に接続されたフィルタの数だけ編集フィルタＣ４が必要になるからである。
【００９９】
次いで、アクティビティＣ２は各フィルタをパイプＣ８で連結し、ユーザには見えない内部的な動作時の構成を組み立て（ステップＳ２１７）、処理を終了する（ステップＳ２１８）。
【０１００】
（ｂ）において、ユーザによるスタートボタンの押下が行なわれると（ステップＳ２２１）、アクティビティＣ２は実行要求を受け付け（ステップＳ２２２）、変換フィルタＣ６を新規に生成し、出力フィルタＣ５の直前に挿入する（ステップＳ２２３）。この例では、先に無条件に変換フィルタＣ６を挿入し、後に不要な変換フィルタＣ６（編集フィルタＣ４に連続する変換フィルタＣ６）を削除することにしている。
【０１０１】
次いで、アクティビティＣ２は編集フィルタＣ４の後段に複数のフィルタが直接につながっている箇所があるか否か判断する（ステップＳ２２４）。編集フィルタＣ４の後段に複数のフィルタが直接につながっている箇所がある場合（ステップＳ２２４のＹ）、アクティビティＣ２は後段につながっているフィルタの数分だけ編集フィルタＣ４の複製を生成する（ステップＳ２２５）。編集フィルタＣ４の後段に複数のフィルタが直接につながっている箇所がない場合（ステップＳ２２４のＮ）、この処理は行わない。
【０１０２】
次いで、アクティビティＣ２は編集フィルタＣ４と変換フィルタＣ６が直接につながっている箇所があるか否か判断する（ステップＳ２２６）。編集フィルタＣ４と変換フィルタＣ６が直接につながっている箇所がある場合（ステップＳ２２６のＹ）、直接につながっている箇所の変換フィルタＣ６を削除する（ステップＳ２２７）。編集フィルタＣ４と変換フィルタＣ６が直接につながっている箇所がない場合（ステップＳ２２６のＮ）、この処理は行わない。
【０１０３】
次いで、アクティビティＣ２は各フィルタをパイプＣ８で連結し、ユーザには見えない内部的な動作時の構成を組み立て（ステップＳ２２８）、処理を終了する（ステップＳ２２９）。
【０１０４】
以下、より具体的な例に基づいて説明を行なう。
【０１０５】
図１８は第１のパターンの説明図であり、（ａ）は一般形、（ｂ）（ｃ）は具体例を示している。
【０１０６】
（ａ）において、ユーザに見えるプリファレンスとしては、アクティビティＡ１として、入力フィルタＦ１と出力フィルタＦ２が直結されたものであるが、プリファレンスの組換えにより、内部で動く際のプリファレンスとしては、アクティビティＡ１として、入力フィルタＦ１と出力フィルタＦ２の間に変換フィルタＦＣが挿入されたものとなる。
【０１０７】
（ｂ）においては、アクティビティＡ１がＦＡＸ送信アクティビティ、入力フィルタＦ１が保管文書読出フィルタ、出力フィルタＦ２がＦＡＸ送信フィルタとなっている。ユーザは、ユーザに見えるプリファレンスとして、保管文書読出フィルタＦ１とＦＡＸ送信フィルタＦ２が直結したＦＡＸ送信アクティビティＡ１を選択し、設定画面Ｉにより、保管文書読出フィルタＦ１の動作項目設定（文書一覧からの文書選択等）とＦＡＸ送信フィルタＦ２の動作項目設定（ＦＡＸ送信先一覧からの送信先選択等）を行なう。
【０１０８】
この場合、ユーザに見えるプリファレンスのままだと、保管文書読出フィルタＦ１の出力データがＴＩＦＦ形式であり、ＦＡＸ送信フィルタＦ２の入力データがＭＭＲ形式であるため、そのままでは動作しないが、内部で動く際のプリファレンスとして、保管文書読出フィルタＦ１とＦＡＸ送信フィルタＦ２の間に変換フィルタＦＣが挿入されることで、ＴＩＦＦ形式からＭＭＲ形式にデータが変換され、問題なく動作することになる。
【０１０９】
（ｃ）においては、アクティビティＡ１がＦＡＸ受信アクティビティ、入力フィルタＦ１がＦＡＸ受信フィルタ、出力フィルタＦ２が印刷フィルタとなっている。ユーザは、ユーザに見えるプリファレンスとして、ＦＡＸ受信フィルタＦ１と印刷フィルタＦ２が直結したＦＡＸ受信アクティビティＡ１を選択し、設定画面Ｉにより、印刷フィルタＦ２の動作項目設定（仕上げ方法の選択、部数の入力等）を行なう。
【０１１０】
この場合、ユーザに見えるプリファレンスのままだと、ＦＡＸ受信フィルタＦ１の出力データがＭＭＲ形式であり、印刷フィルタＦ２の入力データがＣＭＹＫ形式であるため、そのままでは動作しないが、内部で動く際のプリファレンスとして、ＦＡＸ受信フィルタＦ１と印刷フィルタＦ２の間に変換フィルタＦＣが挿入されることで、ＭＭＲ形式からＣＭＹＫ形式にデータが変換され、問題なく動作することになる。
【０１１１】
また、アクティビティＡ１がメール送信アクティビティ、入力フィルタＦ１が保管文書読出フィルタ（出力データはＪＰＥＧ形式）、出力フィルタＦ２がメール送信フィルタ（入力データはＪＰＥＧ形式）の場合も変換フィルタＦＣが挿入されるが、データは同形式であるため、実質的な変換は行なわず、データはスルーされる。
【０１１２】
アクティビティＡ１がＦＡＸ受信アクティビティ、入力フィルタＦ１がＦＡＸ受信フィルタ（出力データはＭＭＲ形式）、出力フィルタＦ２がＦＡＸ送信フィルタ（入力データはＭＭＲ形式）の場合も同様である。
【０１１３】
図１９は第１のパターンにおけるプリファレンス設定（図１６のステップＳ２０２）の処理例を示すシーケンス図である。
【０１１４】
図１９において、ユーザによるアクティビティの選択により、ＵＩ Ｃ１はアクティビティＡ１（Ｃ２）にプリファレンス生成を要求する（ステップＳ２２１）。これにより、アクティビティＡ１（Ｃ２）は自己のプリファレンスのデフォルト値を生成し（ステップＳ２２２）、入力フィルタＦ１（Ｃ３）にプリファレンス生成を要求し（ステップＳ２２３）、デフォルト値設定を要求する（ステップＳ２２４）。同様に、アクティビティＡ１（Ｃ２）は出力フィルタＦ２（Ｃ５）にプリファレンス生成を要求し（ステップＳ２２５）、デフォルト値設定を要求する（ステップＳ２２６）。
【０１１５】
次いで、アクティビティＡ１（Ｃ２）は入力フィルタＦ１（Ｃ３）に出力フィルタＦ２（Ｃ５）を特定してユーザに見せるフィルタの接続を要求し（ステップＳ２２７）、ＵＩ Ｃ１に処理完了の応答を返す（ステップＳ２２８）。ユーザに見せるフィルタの接続は、後述するように、入力フィルタプリファレンスの「ユーザに見せる後段のフィルタ」に出力フィルタのプリファレンスを設定することにより行われる。
【０１１６】
その後、ＵＩ Ｃ１は動作項目設定のためのＵＩ表示を行い（ステップＳ２２９）、ユーザの操作に応じ、アクティビティＡ１（Ｃ２）に設定変更を要求し（ステップＳ２３０）、入力フィルタＦ１（Ｃ３）に設定変更を要求し（ステップＳ２３１）、出力フィルタＦ２（Ｃ５）に設定変更を要求する（ステップＳ２３２）。
【０１１７】
この状態における各コンポーネントに含まれるプリファレンスの状態を図２０に示している。すなわち、アクティビティＡ１（Ｃ２）のアクティビティプリファレンスには、「アクティビティ名称」に「送信アクティビティ」が設定され、「保管文書読出機能ON/OFF」に「TRUE」が設定され、「メール送信機能ON/OFF」に「TRUE」が設定されている。入力フィルタＦ１（Ｃ３）の入力フィルタプリファレンスには、「フィルタ名称」に「保管文書読出フィルタ」が設定され、「選択済み保管文書一覧」に「NULL」が設定され、「ユーザに見せる後段のフィルタ」に「メール送信フィルタプリファレンス」が設定され、「内部で動く後段のフィルタ」に「NULL」が設定されている。出力フィルタＦ２（Ｃ５）の出力フィルタプリファレンスには、「フィルタ名称」に「メール送信フィルタ」が設定され、「メールアドレス」に「""」が設定され、「送信ファイル種別」に「PDF」が設定されている。
【０１１８】
図２１は第１のパターンにおけるプリファレンス組換え（図１６のステップＳ２０３）の処理例を示すシーケンス図である。
【０１１９】
図２１において、ユーザによりスタートボタンの押下が行われることで、ＵＩ Ｃ１はアクティビティＡ１（Ｃ２）に実行要求を行う（ステップＳ２４１）。アクティビティＡ１（Ｃ２）はフィルタの再構築を開始し（ステップＳ２４２）、新たに生成する変換フィルタＦＣ（Ｃ６）にプリファレンス生成を要求し（ステップＳ２４３）、デフォルト値設定を要求する（ステップＳ２４４）。
【０１２０】
次いで、アクティビティＡ１（Ｃ２）は、入力フィルタＦ１（Ｃ３）に変換フィルタＦＣ（Ｃ６）を特定して内部で動くフィルタの接続を要求し（ステップＳ２４５）、変換フィルタＦＣ（Ｃ６）に出力フィルタＦ２（Ｃ５）を特定して内部で動くフィルタの接続を要求する（ステップＳ２４６）。
【０１２１】
次いで、アクティビティＡ１（Ｃ２）はリクエスト管理Ｃ７にジョブの構築を要求し（ステップＳ２４７）、リクエスト管理Ｃ７はアクティビティＡ１（Ｃ２）、入力フィルタＦ１（Ｃ３）、変換フィルタＦＣ（Ｃ６）、出力フィルタＦ２（Ｃ５）に順次にジョブ生成を行う（ステップＳ２４８〜Ｓ２５１）。
【０１２２】
次いで、リクエスト管理Ｃ７はパイプＰ１（Ｃ８）、パイプＰ２（Ｃ８）の生成を行い（ステップＳ２５２、Ｓ２５３）、パイプＰ１（Ｃ８）に入力フィルタジョブを特定して前段フィルタの接続を要求するとともに（ステップＳ２５４）、変換フィルタジョブを特定して後段フィルタの接続を要求し（ステップＳ２５５）、パイプＰ２（Ｃ８）に変換フィルタジョブを特定して前段フィルタの接続を要求するとともに（ステップＳ２５６）、出力フィルタジョブを特定して後段フィルタの接続を要求する（ステップＳ２５７）。
【０１２３】
この状態における各コンポーネントに含まれるプリファレンスの状態を図２２に示している。すなわち、アクティビティＡ１（Ｃ２）のアクティビティプリファレンスと出力フィルタＦ２（Ｃ５）の出力フィルタプリファレンスは図２０に比べて変化はないが、入力フィルタＦ１（Ｃ３）の入力フィルタプリファレンスにおける「内部で動く後段のフィルタ」が「NULL」から「変換フィルタプリファレンス」に変更されている。また、新たに変換フィルタＦＣ（Ｃ６）の変換フィルタプリファレンスが図示されている。変換フィルタＦＣ（Ｃ６）の変換フィルタプリファレンスには、「フィルタ名称」に「変換フィルタ」が設定され、「内部で動く後段のフィルタ」に「メール送信フィルタプリファレンス」が設定されている。
【０１２４】
また、ジョブ生成が行われたことにより有効になった各コンポーネントのジョブを図２３に示している。すなわち、アクティビティＡ１（Ｃ２）のアクティビティジョブには、「アクティビティ名称」に「送信アクティビティ」が設定され、「参照プリファレンス」に「送信アクティビティプリファレンス」が設定され、「ジョブ状態」に「WAIT」が設定されている。入力フィルタＦ１（Ｃ３）の入力フィルタジョブには、「フィルタ名称」に「保管文書読出フィルタ」が設定され、「参照プリファレンス」に「保管文書読出フィルタプリファレンス」が設定され、「ジョブ状態」に「WAIT」が設定され、「後段パイプ」に「パイプ１」が設定されている。出力フィルタＦ２（Ｃ５）の出力フィルタジョブには、「フィルタ名称」に「メール送信フィルタ」が設定され、「参照プリファレンス」に「メール送信フィルタプリファレンス」が設定され、「ジョブ状態」に「WAIT」が設定され、「前段パイプ」に「パイプ２」が設定されている。変換フィルタＦＣ（Ｃ６）の変換フィルタジョブには、「フィルタ名称」に「変換フィルタ」が設定され、「参照プリファレンス」に「変換フィルタプリファレンス」が設定され、「ジョブ状態」に「WAIT」が設定され、「前段パイプ」に「パイプ１」が設定され、「後段パイプ」に「パイプ２」が設定されている。また、パイプＰ１（Ｃ８）、パイプＰ２（Ｃ８）のデータは「NULL」に設定されている。
【０１２５】
図２４は第１のパターンにおける実行（図１６のステップＳ２０４）の処理例を示すシーケンス図である。
【０１２６】
図２４において、リクエスト管理Ｃ７はアクティビティＡ１（Ｃ２）に実行開始を要求し（ステップＳ２６１）、アクティビティＡ１（Ｃ２）は入力フィルタＦ１（Ｃ３）、変換フィルタＦＣ（Ｃ６）、出力フィルタＦ２（Ｃ５）に順次に実行開始を要求する（ステップＳ２６２〜Ｓ２６４）。
【０１２７】
これを受け、入力フィルタＦ１（Ｃ３）は入力処理を開始し（ステップＳ２６６）、パイプＰ１（Ｃ８）にデータを書き込む（ステップＳ２６７）。
【０１２８】
また、出力フィルタＦ２（Ｃ５）は変換フィルタＦＣ（Ｃ６）にデータ種類を指定してデータ要求を行い（ステップＳ２６５）、パイプＰ１（Ｃ８）への入力フィルタＦ１（Ｃ３）によるデータ書込が完了すると、変換フィルタＦＣ（Ｃ６）はパイプＰ１（Ｃ８）からデータを読み込む（ステップＳ２６８）。
【０１２９】
そして、変換フィルタＦＣ（Ｃ６）は読み込んだデータ種類と出力フィルタＦ２（Ｃ５）から指定されたデータ種類の比較を行い（ステップＳ２６９）、データ種類が異なっていて変換の必要がある場合にはデータ変換を行う（ステップＳ２７０）。データ種類が同じで変換の必要がない場合にはデータ変換は行わない。そして、変換フィルタＦＣ（Ｃ６）はパイプＰ２（Ｃ８）に変換後のデータを書き込む（ステップＳ２７１）。
【０１３０】
出力フィルタＦ２（Ｃ５）はパイプＰ２（Ｃ８）からデータを読み込み（ステップＳ２７２）、出力処理を行う（ステップＳ２７３）。
【０１３１】
各コンポーネントの実行状態におけるジョブ等の状態を図２５に示している。すなわち、アクティビティジョブ、入力フィルタジョブ、出力フィルタジョブ、変換フィルタジョブの「ジョブ状態」は「WAIT」から「RUN」に変更され、パイプＰ１（Ｃ８）には「パイプデータ1_1」「パイプデータ1_2」・・・が書き込まれ、パイプＰ２（Ｃ８）には「パイプデータ2_1」・・・が書き込まれている。「パイプデータ1_1」「パイプデータ1_2」「パイプデータ2_1」・・・には、「データ種類=DATA_JPEG」と「画像データ」が書き込まれている。
【０１３２】
図２６は第２のパターンの説明図であり、（ａ）は一般形、（ｂ）は具体例を示している。
【０１３３】
（ａ）において、ユーザに見えるプリファレンスとしては、アクティビティＡ１として、入力フィルタＦ１に複数の出力フィルタＦ２１、Ｆ２２が直結されたものであるが、プリファレンスの組換えにより、内部で動く際のプリファレンスとしては、アクティビティＡ１として、入力フィルタＦ１と出力フィルタＦ２１、Ｆ２２の間に変換フィルタＦＣ１、ＦＣ２がそれぞれ挿入されたものとなる。
【０１３４】
（ｂ）においては、アクティビティＡ１がマルチ文書アクティビティ、入力フィルタＦ１が読取フィルタ、出力フィルタＦ２１が印刷フィルタ、出力フィルタＦ２２がメール送信フィルタとなっている。ユーザは、ユーザに見えるプリファレンスとして、読取フィルタＦ１に印刷フィルタＦ２１とメール送信フィルタＦ２２が直結したマルチ文書アクティビティＡ１を選択し、設定画面Ｉにより、読取フィルタＦ１の動作項目設定（原稿種類の選択等）と印刷フィルタＦ２１の動作項目設定（仕上げ方法の選択、部数の入力等）とメール送信フィルタＦ２２の動作項目設定（ファイル種別の選択、アドレスの入力等）を行なう。
【０１３５】
この場合、ユーザに見えるプリファレンスのままだと、読取フィルタＦ１の出力データがＲＧＢ形式であり、印刷フィルタＦ２１の入力データがＣＭＹＫ形式であり、メール送信フィルタＦ２２の入力データがＰＤＦ形式であるため、そのままでは動作しないが、内部で動く際のプリファレンスとして、読取フィルタＦ１と印刷フィルタＦ２１の間に変換フィルタＦＣ１が挿入されることでＲＧＢ形式からＣＭＹＫ形式にデータが変換され、読取フィルタＦ１とメール送信フィルタＦ２２の間に変換フィルタＦＣ２が挿入されることでＲＧＢ形式からＰＤＦ形式にデータが変換され、問題なく動作することになる。
【０１３６】
このパターンにおけるプリファレンス設定（図１６のステップＳ２０２）の処理については、図１９に示した出力フィルタＦ２が出力フィルタＦ２１、Ｆ２２の二つになり、それらに対する処理が追加されるとともに、ユーザに見せるフィルタの接続関係が変更される点が異なる。
【０１３７】
また、このパターンにおけるプリファレンス組換え（図１６のステップＳ２０３）の処理については、基本フローは図１７に示した通りであり、詳細シーケンスについては図２１に示した出力フィルタＦ２が出力フィルタＦ２１、Ｆ２２の二つになり、変換フィルタＦＣが変換フィルタＦＣ１、ＦＣ２の二つになり、更にフィルタ間をつなぐパイプが二つ増え、それらに対する処理が追加され、フィルタ間の接続関係が変更される点が異なる。
【０１３８】
また、このパターンにおける実行（図１６のステップＳ２０４）の処理については、図２４に示した出力フィルタＦ２が出力フィルタＦ２１、Ｆ２２の二つになり、変換フィルタＦＣが変換フィルタＦＣ１、ＦＣ２の二つになり、更にフィルタ間をつなぐパイプが二つ増え、それらに対する処理が追加され、フィルタ間の接続関係が変更される点が異なる。
【０１３９】
図２７は第３のパターンの説明図であり、（ａ）は一般形、（ｂ）（ｃ）は具体例を示している。
【０１４０】
（ａ）において、ユーザに見えるプリファレンスとしては、アクティビティＡ１として、入力フィルタＦ１の後に編集フィルタＦ３を挟んで出力フィルタＦ２が接続されたものであるが、プリファレンスの組換えによって結果的に構成は変更されない。これは、編集フィルタＦ３が変換フィルタの機能を兼ねるからである。
【０１４１】
（ｂ）においては、アクティビティＡ１がコピーアクティビティ、入力フィルタＦ１が読取フィルタ、出力フィルタＦ２が印刷フィルタとなっている。ユーザは、ユーザに見えるプリファレンスとして、読取フィルタＦ１の後に編集フィルタＦ３と印刷フィルタＦ２が接続したコピーアクティビティＡ１を選択し、設定画面Ｉにより、読取フィルタＦ１の動作項目設定（原稿種類の選択等）と編集フィルタＦ３の動作項目設定（編集方法の選択等）と印刷フィルタＦ２の動作項目設定（仕上げ方法の選択、部数の入力等）を行なう。
【０１４２】
読取フィルタＦ１の出力データはＲＧＢ形式であり、印刷フィルタＦ２の入力データはＣＭＹＫ形式であるが、編集フィルタＦ３によりＲＧＢ形式からＣＭＹＫ形式にデータが変換され、問題なく動作することになる。
【０１４３】
（ｃ）においては、アクティビティＡ１がメール送信アクティビティ、入力フィルタＦ１が読取フィルタ、出力フィルタＦ２がメール送信フィルタとなっている。ユーザは、ユーザに見えるプリファレンスとして、読取フィルタＦ１の後に編集フィルタＦ３とメール送信フィルタＦ２が接続したメール送信アクティビティＡ１を選択し、設定画面Ｉにより、読取フィルタＦ１の動作項目設定（原稿種類の選択等）と編集フィルタＦ３の動作項目設定（編集方法の選択等）とメール送信フィルタＦ２の動作項目設定（ファイル種別の選択、アドレスの入力等）を行う。
【０１４４】
読取フィルタＦ１の出力データはＲＧＢ形式であり、メール送信フィルタＦ２の入力データはＰＤＦ形式であるが、編集フィルタＦ３によりＲＧＢ形式からＰＤＦ形式にデータが変換され、問題なく動作することになる。
【０１４５】
このパターンにおけるプリファレンス設定（図１６のステップＳ２０２）の処理については、図１９に編集フィルタＦ３が追加され、それに対する処理が追加されるとともに、ユーザに見せるフィルタの接続関係が変更される点が異なる。
【０１４６】
また、このパターンにおけるプリファレンス組換え（図１６のステップＳ２０３）の処理については、基本フローは図１７に示した通りであり、詳細シーケンスについては図２１に示した変換フィルタＦＣを編集フィルタＦ３に置き換えればよい。ただし、編集フィルタＦ３は既に存在するため新たに生成する必要はない。
【０１４７】
また、このパターンにおける実行（図１６のステップＳ２０４）の処理については、図２４に示した変換フィルタＦＣを編集フィルタＦ３に置き換えればよい。ただし、編集フィルタＦ３は変換処理の他に本来の編集処理も行う。
【０１４８】
図２８は第４のパターンの説明図であり、（ａ）は一般形、（ｂ）は具体例を示している。
【０１４９】
（ａ）において、ユーザに見えるプリファレンスとしては、アクティビティＡ１として、入力フィルタＦ１に編集フィルタＦ３が接続され、その編集フィルタＦ３に複数の出力フィルタＦ２１、Ｆ２２が直結されたものであるが、プリファレンスの組換えにより、内部で動く際のプリファレンスとしては、アクティビティＡ１として、入力フィルタＦ１に複数の編集フィルタＦ３、Ｆ３'が接続され、編集フィルタＦ３、Ｆ３'にそれぞれ出力フィルタＦ２１、Ｆ２２が接続されたものとなる。編集フィルタＦ３'は編集フィルタＦ３を複製することにより追加される。
【０１５０】
（ｂ）においては、アクティビティＡ１がマルチ文書アクティビティ、入力フィルタＦ１が読取フィルタ、出力フィルタＦ２１が印刷フィルタ、出力フィルタＦ２２がメール送信フィルタとなっている。ユーザは、ユーザに見えるプリファレンスとして、読取フィルタＦ１に編集フィルタＦ３が接続され、その編集フィルタＦ３に印刷フィルタＦ２１とメール送信フィルタＦ２２が直結したマルチ文書アクティビティＡ１を選択し、設定画面Ｉにより、読取フィルタＦ１の動作項目設定（原稿種類の選択等）と編集フィルタＦ３の動作項目設定（編集方法の選択等）と印刷フィルタＦ２１の動作項目設定（仕上げ方法の選択、部数の入力等）とメール送信フィルタＦ２２の動作項目設定（ファイル種別の選択、アドレスの入力等）を行なう。
【０１５１】
この場合、ユーザに見えるプリファレンスのままだと、読取フィルタＦ１の出力データがＲＧＢ形式であり、印刷フィルタＦ２１の入力データがＣＭＹＫ形式であり、メール送信フィルタＦ２２の入力データがＰＤＦ形式であるため、一つの編集フィルタＦ３では二つの異なる形式のデータを同時に出力できず、そのままでは動作しないが、内部で動く際のプリファレンスとして、読取フィルタＦ１の後に編集フィルタＦ３、Ｆ３'が直結されることで、編集フィルタＦ３がＲＧＢ形式からＣＭＹＫ形式にデータを変換し、編集フィルタＦ３'がＲＧＢ形式からＰＤＦ形式にデータを変換することで、問題なく動作することになる。
【０１５２】
このパターンにおけるプリファレンス設定（図１６のステップＳ２０２）の処理については、図１９に編集フィルタＦ３が追加され、出力フィルタＦ２が出力フィルタＦ２１、Ｆ２２の二つになり、それらに対する処理が追加されるとともに、ユーザに見せるフィルタの接続関係が変更される点が異なる。
【０１５３】
また、このパターンにおけるプリファレンス組換え（図１６のステップＳ２０３）の処理については、基本フローは図１７に示した通りであり、詳細シーケンスについては図２１に示した出力フィルタＦ２が出力フィルタＦ２１、Ｆ２２の二つになり、変換フィルタＦＣが編集フィルタＦ３、Ｆ３'の二つになり、更にフィルタ間をつなぐパイプが二つ増え、それらに対する処理が追加され、フィルタ間の接続関係が変更される点が異なる。ただし、編集フィルタＦ３、Ｆ３'は既に存在するため新たに生成する必要はない。
【０１５４】
また、このパターンにおける実行（図１６のステップＳ２０４）の処理については、図２４に示した出力フィルタＦ２が出力フィルタＦ２１、Ｆ２２の二つになり、変換フィルタＦＣが編集フィルタＦ３、Ｆ３'の二つになり、更にフィルタ間をつなぐパイプが二つ増え、それらに対する処理が追加され、フィルタ間の接続関係が変更される点が異なる。
【０１５５】
図２９は第５のパターンの説明図であり、（ａ）は一般形、（ｂ）は具体例を示している。
【０１５６】
（ａ）において、ユーザに見えるプリファレンスとしては、アクティビティＡ１として、入力フィルタＦ１から複数に分岐し、一部の枝には編集フィルタＦ３と出力フィルタＦ２１が順次接続され、他の枝には出力フィルタＦ２２が直結されたものであるが、プリファレンスの組換えにより、内部で動く際のプリファレンスとしては、アクティビティＡ１として、入力フィルタＦ１に編集フィルタＦ３と変換フィルタＦＣが接続され、編集フィルタＦ３に出力フィルタＦ２１が接続され、変換フィルタＦＣに出力フィルタＦ２２が接続されたものとなる。
【０１５７】
（ｂ）においては、アクティビティＡ１がコピーアクティビティ、入力フィルタＦ１が読取フィルタ、出力フィルタＦ２１が印刷フィルタ、出力フィルタＦ２２が保管登録フィルタとなっている。ユーザは、ユーザに見えるプリファレンスとして、読取フィルタＦ１に編集フィルタＦ３と保管登録フィルタＦ２２が直結され、編集フィルタＦ３に印刷フィルタＦ２１が接続したコピーアクティビティＡ１を選択し、設定画面Ｉにより、読取フィルタＦ１の動作項目設定（原稿種類の選択等）と編集フィルタＦ３の動作項目設定（編集方法の選択等）と印刷フィルタＦ２１の動作項目設定（仕上げ方法の選択、部数の入力等）と保管登録フィルタＦ２２の動作項目設定（文書名、パスワードの入力等）を行なう。
【０１５８】
この場合、ユーザに見えるプリファレンスのままだと、読取フィルタＦ１の出力データがＲＧＢ形式であり、印刷フィルタＦ２１の入力データがＣＭＹＫ形式であり、保管登録フィルタＦ２２の入力データがＪＰＥＧ形式であるため、編集フィルタＦ３により印刷フィルタＦ２１のＣＭＹＫ形式へは変換が行われるものの、読取フィルタＦ１と保管登録フィルタＦ２２の間でデータの形式が異なるためそのままでは動作しない。しかし、内部で動く際のプリファレンスとして、保管登録フィルタＦ２２の前に変換フィルタＦＣが挿入されることで、ＲＧＢ形式からＪＰＥＧ形式にデータが変換され、問題なく動作することになる。
【０１５９】
このパターンにおけるプリファレンス設定（図１６のステップＳ２０２）の処理については、図１９に編集フィルタＦ３が追加され、出力フィルタＦ２が出力フィルタＦ２１、Ｆ２２の二つになり、それらに対する処理が追加されるとともに、ユーザに見せるフィルタの接続関係が変更される点が異なる。
【０１６０】
また、このパターンにおけるプリファレンス組換え（図１６のステップＳ２０３）の処理については、基本フローは図１７に示した通りであり、詳細シーケンスについては図２１に示した出力フィルタＦ２が出力フィルタＦ２１、Ｆ２２の二つになり、編集フィルタＦ３が追加され、更にフィルタ間をつなぐパイプが二つ増え、それらに対する処理が追加され、フィルタ間の接続関係が変更される点が異なる。ただし、編集フィルタＦ３は既に存在するため新たに生成する必要はない。
【０１６１】
また、このパターンにおける実行（図１６のステップＳ２０４）の処理については、図２４に示した出力フィルタＦ２が出力フィルタＦ２１、Ｆ２２の二つになり、編集フィルタＦ３が追加され、更にフィルタ間をつなぐパイプが二つ増え、それらに対する処理が追加され、フィルタ間の接続関係が変更される点が異なる。
【０１６２】
＜総括＞
以上、本発明の好適な実施の形態により本発明を説明した。ここでは特定の具体例を示して本発明を説明したが、特許請求の範囲に定義された本発明の広範な趣旨および範囲から逸脱することなく、これら具体例に様々な修正および変更を加えることができることは明らかである。すなわち、具体例の詳細および添付の図面により本発明が限定されるものと解釈してはならない。
【図面の簡単な説明】
【０１６３】
【図１】第１の実施形態における複合機のソフトウェア構成例を示す図である。
【図２】パイプ＆フィルタの概念を説明するための図である。
【図３】複合機のハードウェア構成の一例を示す図である。
【図４】アクティビティの構成要素を説明するための図である。
【図５】フィルタの構成要素を説明するための図である。
【図６】複合機における各機能を実現するためのフィルタの組み合わせの例を示す図である。
【図７】複合機が一つの機能を実現する際の処理手順を説明するためのフローチャート（その１）である。
【図８】複合機が一つの機能を実現する際の処理手順を説明するためのフローチャート（その２）である。
【図９】アクティビティを利用させるための操作画面例を示す図である。
【図１０】ユーザインタフェース層からコントロール層へ通知される要求内容を概念的に示す図である。
【図１１】フィルタとパイプの対応テーブルの例を示す図である。
【図１２】コントロール層によって生成される情報を概念的に示す図である。
【図１３】パイプを介したフィルタ間のデータの伝達手順を説明するための図である。
【図１４】第２の実施形態における複合機のソフトウェア構成例を示す図である。
【図１５】各コンポーネントに含まれるプリファレンス等の例を示す図である。
【図１６】第２の実施形態の処理概要を示すフローチャートである。
【図１７】アクティビティによるプリファレンスの組換えの処理例を示すフローチャートである。
【図１８】第１のパターンの説明図である。
【図１９】プリファレンス設定の処理例を示すシーケンス図である。
【図２０】コンポーネントに含まれるデータの例を示す図である。
【図２１】プリファレンス組換えの処理例を示すシーケンス図である。
【図２２】コンポーネントに含まれるデータの例を示す図である。
【図２３】コンポーネントに含まれるデータの例を示す図である。
【図２４】実行の処理例を示すシーケンス図である。
【図２５】コンポーネントに含まれるデータの例を示す図である。
【図２６】第２のパターンの説明図である。
【図２７】第３のパターンの説明図である。
【図２８】第４のパターンの説明図である。
【図２９】第５のパターンの説明図である。
【符号の説明】
【０１６４】
１        複合機
１０      ユーザインタフェース層
１１      通信サーバ部
１２      ローカルＵＩ部
２０      コントロール層
３０      アプリケーションロジック層
３１      アクティビティ
３１ａ    コピーアクティビティ
３１ｂ    プリンタアクティビティ
３１ｃ    マルチ文書アクティビティ
３０１    読取フィルタ
３０２    保管文書読出フィルタ
３０３    メール受信フィルタ
３０４    ＦＡＸ受信フィルタ
３０５    ＰＣ文書受信フィルタ
３０６    レポートフィルタ
３１１    文書加工フィルタ
３１２    文書変換フィルタ
３２１    印刷フィルタ
３２２    保管文書登録フィルタ
３２３    メール送信フィルタ
３２４    ＦＡＸ送信フィルタ
３２５    ＰＣ文書送信フィルタ
３２６    プレビューフィルタ
４０      デバイスサービス層
４１      画像パイプ
４２      データ管理部
５０      デバイス制御層
５１      スキャナ制御部
５２      プロッタ制御部
５３      メモリ制御部
５４      Ｔｅｌ回線制御部
５５      ネットワーク制御部
Ｃ１      ＵＩ 
Ｃ２      アクティビティ
Ｃ３      入力フィルタ
Ｃ４      編集フィルタ
Ｃ５      出力フィルタ
Ｃ６      変換フィルタ
Ｃ７      リクエスト管理
Ｃ８      パイプ
【図１】
0005145871.tif 000002
【図２】
0005145871.tif 000003
【図３】
0005145871.tif 000004
【図４】
0005145871.tif 000005
【図５】
0005145871.tif 000006
【図６】
0005145871.tif 000007
【図７】
0005145871.tif 000008
【図８】
0005145871.tif 000009
【図９】
0005145871.tif 000010
【図１０】
0005145871.tif 000011
【図１１】
0005145871.tif 000012
【図１２】
0005145871.tif 000013
【図１３】
0005145871.tif 000014
【図１４】
0005145871.tif 000015
【図１５】
0005145871.tif 000016
【図１６】
0005145871.tif 000017
【図１７】
0005145871.tif 000018
【図１８】
0005145871.tif 000019
【図１９】
0005145871.tif 000020
【図２０】
0005145871.tif 000021
【図２１】
0005145871.tif 000022
【図２２】
0005145871.tif 000023
【図２３】
0005145871.tif 000024
【図２４】
0005145871.tif 000025
【図２５】
0005145871.tif 000026
【図２６】
0005145871.tif 000027
【図２７】
0005145871.tif 000028
【図２８】
0005145871.tif 000029
【図２９】
0005145871.tif 000030