(57)【要約】【課題】機能のカスタマイズ又は拡張等を簡便化させることのできる情報処理装置の提供を目的とする。【解決手段】複数の第一のソフトウェア部品の接続関係が予め定義され、該接続関係に含まれる第一のソフトウェア部品を利用して機能を実行する機能実行手段を有する情報処理装置であって、機能実行手段は、予め定義された接続関係に基づいて該接続関係を示す情報を含む動作条件情報を生成する手段と、予め定められたインタフェースを有する第二のソフトウェア部品が存在するときにインタフェースを介して第二のソフトウェア部品を呼び出し、第二のソフトウェア部品に動作条件情報に含まれる接続関係を変更させる手段と、動作条件情報に含まれる接続関係に基づいて第一のソフトウェア部品の間に関連を生成する手段と、第一のソフトウェア部品に、関連に基づく実行順によって処理を実行させる手段とを有することにより上記課題を解決する。【選択図】図１３
2009110437.tif 000002
【特許請求の範囲】
【請求項１】
複数の第一のソフトウェア部品の接続関係が予め定義され、該接続関係に含まれる前記第一のソフトウェア部品を利用して機能を実行する機能実行手段を有する情報処理装置であって、
前記機能実行手段は、
予め定義された前記接続関係に基づいて該接続関係を示す情報を含む動作条件情報を生成する第一の手段と、
予め定められたインタフェースを有する第二のソフトウェア部品が存在するときに前記インタフェースを介して前記第二のソフトウェア部品を呼び出し、前記第二のソフトウェア部品に前記動作条件情報に含まれる接続関係を変更させる第二の手段と、
前記動作条件情報に含まれる接続関係に基づいて前記第一のソフトウェア部品の間に関連を生成する第三の手段と、
前記第一のソフトウェア部品に、前記第三の手段によって生成された関連に基づく実行順によって処理を実行させる第四の手段とを有することを特徴とする情報処理装置。
【請求項２】
前記第二のソフトウェア部品は、前記動作条件情報に含まれる接続関係に含まれていない前記第一のソフトウェア部品を、該接続関係に含めることを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記第二のソフトウェア部品は、前記動作条件情報に含まれる接続関係に含まれている前記第一のソフトウェア部品のいずれかを、該接続関係より削除することを特徴とする請求項１記載の情報処理装置。
【請求項４】
前記第二のソフトウェア部品は、前記動作条件情報に含まれる前記接続関係に含まれている前記第一のソフトウェア部品のいずれかを、該接続関係において他の第一のソフトウェア部品に置き換えることを特徴とする請求項１記載の情報処理装置。
【請求項５】
前記動作条件情報は、前記接続関係に含まれている前記第一のソフトウェア部品のそれぞれの動作条件を示す情報を含み、
前記第二のソフトウェア部品は、前記第一のソフトウェア部品の動作条件を示す情報を変更することを特徴とする請求項１乃至４いずれか一項記載の情報処理装置。
【請求項６】
複数の第一のソフトウェア部品の接続関係が予め定義され、該接続関係に含まれる前記第一のソフトウェア部品を利用して機能を実行する機能実行手段を有するコンピュータが実行する情報処理方法であって、
前記機能実行手段は、
予め定義された前記接続関係に基づいて該接続関係を示す情報を含む動作条件情報を生成する第一の手順と、
予め定められたインタフェースを有する第二のソフトウェア部品が存在するときに前記インタフェースを介して前記第二のソフトウェア部品を呼び出し、前記第二のソフトウェア部品に前記動作条件情報に含まれる接続関係を変更させる第二の手順と、
前記動作条件情報に含まれる接続関係に基づいて前記第一のソフトウェア部品の間に関連を生成する第三の手順と、
前記第一のソフトウェア部品に、前記第三の手順によって生成された関連に基づく実行順によって処理を実行させる第四の手順とを実行することを特徴とする情報処理方法。
【請求項７】
前記第二のソフトウェア部品は、前記動作条件情報に含まれる接続関係に含まれていない前記第一のソフトウェア部品を、該接続関係に含めることを特徴とする請求項６記載の情報処理方法。
【請求項８】
前記第二のソフトウェア部品は、前記動作条件情報に含まれる接続関係に含まれている前記第一のソフトウェア部品のいずれかを、該接続関係より削除することを特徴とする請求項６記載の情報処理方法。
【請求項９】
前記第二のソフトウェア部品は、前記動作条件情報に含まれる前記接続関係に含まれている前記第一のソフトウェア部品のいずれかを、該接続関係において他の第一のソフトウェア部品に置き換えることを特徴とする請求項６記載の情報処理方法。
【請求項１０】
前記動作条件情報は、前記接続関係に含まれている前記第一のソフトウェア部品のそれぞれの動作条件を示す情報を含み、
前記第二のソフトウェア部品は、前記第一のソフトウェア部品の動作条件を示す情報を変更することを特徴とする請求項６乃至９いずれか一項記載の情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置及び情報処理方法に関し、特に複数のソフトウェア部品を接続して機能を実行する情報処理装置及び情報処理方法に関する。
【背景技術】
【０００２】
近年におけるプリンタ、コピー機、スキャナ、ファクシミリ、又はこれらの機能を一台の筐体で実現する複合機等の画像形成装置では、メモリ等の制限は厳しいものの、汎用的なコンピュータと同様にＣＰＵを備え、各機能はアプリケーションの制御によって実現されるようになっている。
【０００３】
例えば、特許文献１に記載された画像形成装置では、各アプリケーションから共通的に利用される機能をプラットフォームとして備えており、当該プラットフォームのＡＰＩを利用してアプリケーションを実装することができる。かかる画像形成装置によれば、共通的に利用される機能がプラットフォームとして備えられていることにより、アプリケーションごとに重複した機能の実装が回避され、アプリケーション全体の開発効率を向上させることができる。
【特許文献１】特許第３６７９３４９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、一般的に、共通的に利用されるＡＰＩを備えたプラットフォームについては、当該プラットフォームによって提供される機能又はインタフェースの粒度が適切に設計されていないと、アプリケーションの開発効率の向上が期待以上に図れない場合がある。
【０００５】
例えば、当該粒度が小さ過ぎると、単純なサービスを提供するアプリケーションであるにもかかわらず、多くのＡＰＩの呼び出しが必要とされ、そのソースコードは複雑なものとなってしまう。
【０００６】
一方、当該粒度が大き過ぎると、或るインタフェースによって提供されている機能の一部について変更を加えたサービスを提供するアプリケーションを実装したい場合、当該プラットフォーム内を修正しなければならず、開発工数の増加を招いてしまいかねない。特に、プラットフォーム内における各モジュールの依存関係が強い場合は、プラットフォームに新規機能を追加するだけでなく、既存部分の修正も必要とされる場合があり、事態はより複雑となる。
【０００７】
また、既存のアプリケーションによって提供されているサービスの一部（例えば、画像の入力処理）を変更したアプリケーションを実装したい場合、当該一部以外の部分については既存のアプリケーションを呼び出すといったようなことは出来ない。したがって、改めてソースコードを記述して新たなアプリケーションを実装しなければならない。
【０００８】
本発明は、上記の点に鑑みてなされたものであって、機能のカスタマイズ又は拡張等を簡便化させることのできる情報処理装置及び情報処理方法の提供を目的とする。
【課題を解決するための手段】
【０００９】
そこで上記課題を解決するため、本発明は、複数の第一のソフトウェア部品の接続関係が予め定義され、該接続関係に含まれる前記第一のソフトウェア部品を利用して機能を実行する機能実行手段を有する情報処理装置であって、前記機能実行手段は、予め定義された前記接続関係に基づいて該接続関係を示す情報を含む動作条件情報を生成する第一の手段と、予め定められたインタフェースを有する第二のソフトウェア部品が存在するときに前記インタフェースを介して前記第二のソフトウェア部品を呼び出し、前記第二のソフトウェア部品に前記動作条件情報に含まれる接続関係を変更させる第二の手段と、前記動作条件情報に含まれる接続関係に基づいて前記第一のソフトウェア部品の間に関連を生成する第三の手段と、前記第一のソフトウェア部品に、前記第三の手段によって生成された関連に基づく実行順によって処理を実行させる第四の手段とを有することを特徴とする。
【００１０】
このような情報処理装置では、機能のカスタマイズ又は拡張等を簡便化させることができる。
【発明の効果】
【００１１】
本発明によれば、機能のカスタマイズ又は拡張等を簡便化させることのできる情報処理装置及び情報処理方法を提供することができる。
【発明を実施するための最良の形態】
【００１２】
以下、図面に基づいて本発明の実施の形態を説明する。本実施の形態では、情報処理装置の具体例として画像形成装置を用いて説明する。図１は、本発明の実施の形態における画像形成装置のハードウェア構成の一例を示す図である。図１では、画像形成装置の具体例として、プリンタ、コピー、スキャナ、又は、ファクス等の複数の機能を一台の筐体において実現する複合機１のハードウェア構成が示されている。
【００１３】
複合機１のハードウェアとしては、コントローラ６０１と、オペレーションパネル６０２と、ファクシミリコントロールユニット（ＦＣＵ）６０３と、撮像部６０４と、印刷部６０５が存在する。
【００１４】
コントローラ６０１は、ＣＰＵ６１１、ＡＳＩＣ６１２、ＮＢ６２１、ＳＢ６２２、ＭＥＭ−Ｐ６３１、ＭＥＭ−Ｃ６３２、ＨＤＤ（ハードディスクドライブ）６３３、メモリカードスロット６３４、ＮＩＣ（ネットワークインタフェースコントローラ）６４１、ＵＳＢデバイス６４２、ＩＥＥＥ１３９４デバイス６４３、セントロニクスデバイス６４４により構成される。
【００１５】
ＣＰＵ６１１は、種々の情報処理用のＩＣである。ＡＳＩＣ６１２は、種々の画像処理用のＩＣである。ＮＢ６２１は、コントローラ６０１のノースブリッジである。ＳＢ６２２は、コントローラ６０１のサウスブリッジである。ＭＥＭ−Ｐ６３１は、複合機１のシステムメモリである。ＭＥＭ−Ｃ６３２は、複合機１のローカルメモリである。ＨＤＤ６３３は、複合機１のストレージである。メモリカードスロット６３４は、メモリカード６３５をセットするためのスロットである。ＮＩＣ６４１は、ＭＡＣアドレスによるネットワーク通信用のコントローラである。ＵＳＢデバイス６４２は、ＵＳＢ規格の接続端子を提供するためのデバイスである。ＩＥＥＥ１３９４デバイス６４３は、ＩＥＥＥ１３９４規格の接続端子を提供するためのデバイスである。セントロニクスデバイス６４４は、セントロニクス仕様の接続端子を提供するためのデバイスである。オペレーションパネル６０２は、オペレータが複合機１に入力を行うためのハードウェア（操作部）であると共に、オペレータが複合機１から出力を得るためのハードウェア（表示部）である。
【００１６】
図２は、本発明の実施の形態の画像形成装置におけるソフトウェア構成例を示す図である。図２に示されるように、複合機１におけるソフトウェアは、アプリケーションメカニズム１０、サービスメカニズム２０、デバイスメカニズム３０、及び運用部４０等のレイヤによって構成される。図２におけるレイヤの上下関係は、レイヤ間の呼び出し関係に基づいている。すなわち、基本的に図中において上にあるレイヤが下のレイヤを呼び出す。図２に示されるソフトウェアは、例えば、ＨＤＤ６３３に記憶されており、実行時にＭＥＭ−Ｐ６３１にロードされてＣＰＵ６１１にその機能を実行させる。
【００１７】
アプリケーションメカニズム１０は、複合機１が提供する機能又は情報（データ）等の資源をユーザに利用させるためのソフトウェア部品（プログラム）群が実装されているレイヤである。本実施の形態では、アプリケーションメカニズム１０に実装される一部のソフトウェア部品を「フィルタ」と呼ぶ。これは、複合機１のジョブを実行する手アプリケーションが、「パイプ＆フィルタ」と呼ばれるソフトウェアアーキテクチャに基づいて構築されることによる。
【００１８】
図３は、パイプ＆フィルタアーキテクチャの概念を説明するための図である。図３において、「Ｆ」はフィルタを示し、「Ｐ」はパイプを示す。図中に示されるように、各フィルタはパイプによって接続される。フィルタは、入力されたデータに対して変換を施し、その結果を出力する。パイプは、例えば、両端のフィルタより参照可能な記録領域によって構成され、フィルタから出力されたデータを次のフィルタに伝達する。
【００１９】
すなわち、本実施の形態における複合機１では、ジョブをドキュメント（データ）に対する「変換」の連続として捉える。複合機１のジョブは、ドキュメントの入力、加工、及び、出力によって構成されるものとして一般化することができる。そこで「入力」、「加工」、及び、「出力」を、それぞれ「変換」として捉え、一つの「変換」を実現するソフトウェア部品がフィルタとして構成される。入力を実現するフィルタを特に「入力フィルタ」という。また、加工を実現するフィルタを特に「加工フィルタ」という。更に、出力を実現するフィルタを特に「出力フィルタ」という。基本的に、各フィルタは、単独では一つのジョブを実行することはできず、複数のフィルタが、図３に示されるように接続されることにより、一つのジョブを実行するアプリケーションが構築される。
【００２０】
なお、各フィルタは独立しており、フィルタ間における依存関係（呼び出し関係）は基本的に存在しない。従って、フィルタ単位で追加（インストール）又は削除（アンインストール）が可能とされている。
【００２１】
図２において、アプリケーションメカニズム１０には、入力フィルタとして、読取フィルタ１１１、保管文書読出フィルタ１１２、メール受信フィルタ１１３、及びファクス受信フィルタ１１４等が示されている。
【００２２】
読取フィルタ１１１は、スキャナによる画像データの読み取りを制御し、読み取られた画像データを出力する。保管文書読出フィルタ１１２は、複合機１の記憶装置に保管されている文書データ（画像データ）を読み出し、読み出されたデータを出力する。メール受信フィルタ１１３は、電子メールを受信し、当該電子メールに含まれているデータを出力する。ファクス受信フィルタ１１４は、ファクス受信を制御し、受信された印刷データを出力する。
【００２３】
また、加工フィルタとしては、文書編集フィルタ１２１及び文書変換フィルタ１２２等が示されている。文書編集フィルタ１２１は、入力されたデータに所定の画像変換処理（濃度調整、変倍、回転、及び集約等集）を施し、出力する。文書変換フィルタ１２２は、画像データのデータ形式を変換する。文書変換フィルタ１２２は、例えば、レンダリング処理、すなわち、入力されたＰｏｓｔＳｃｒｉｐｔデータをビットマップデータに変換して出力する。
【００２４】
また、出力フィルタとしては、印刷フィルタ１３１、保管文書登録フィルタ１３２、メール送信フィルタ１３３、及びファクス送信フィルタ１３４等が示されている。
【００２５】
印刷フィルタ１３１は、入力されたデータをプロッタに出力（印刷）させる。保管文書登録フィルタ１３２は、入力されたデータを複合機１内の記憶装置、例えば、ＨＤＤ６３３に保存する。メール送信フィルタ１３３は、入力されたデータを電子メールに添付して送信する。ファクス送信フィルタ１３４は、入力されたデータをファクス送信する。
【００２６】
例えば、複合機１における各種機能は、次のようなフィルタの組み合わせにより実現される。図４は、本実施の形態の複合機における各機能を実現するためのフィルタの組み合わせの例を示す図である。
【００２７】
例えば、コピー機能は、読取フィルタ１１１と印刷フィルタ１３１とを接続することにより実現される。読取フィルタ１１１によって原稿より読み取られた画像データを印刷フィルタ１３１によって印刷すればよいからである。なお、集約、拡大、又は縮小等の加工が要求された場合は、これらの加工を実現する文書編集フィルタ１２１が二つのフィルタの間に挿入される。
【００２８】
スキャンｔｏ  ｅｍａｉｌ機能（スキャンした画像データを電子メールで転送する機能）は、読取フィルタ１１１とメール送信フィルタ１３３とを接続することによって実現される。ファクス送信機能は、読取フィルタ１１１とファクス送信フィルタ１３４とを接続することによって実現される。ファクス受信機能は、ファクス受信フィルタ１１４と印刷フィルタ１３１とを接続することによって実現される。ドキュメントボックス蓄積機能（スキャンした画像データを複合機１内に保存する機能）は、読取フィルタ１１１と保管文書登録フィルタ１３２とを接続することによって実現される。ドキュメントボックス印刷機能（複合機１内に保存されている文書データを印刷する機能）は、保管文書読出フィルタ１０２と印刷フィルタ１３１とを接続することにより実現される。
【００２９】
図４において、例えば、読取フィルタ１１１については５つの機能において利用されている。このように、各フィルタは複数の機能から利用可能であり、それによって各機能を実現するための開発工数を削減することができる。また、複合機１では各フィルタを部品としてアプリケーションを構築するため、機能のカスタマイズ又は拡張を簡便に行うことができる。すなわち、各フィルタ間には、機能的な依存関係はなく独立性が保たれているため、フィルタの新たな追加やフィルタの組み合わせの変更によって、新たなアプリケーションを容易に開発することができる。したがって、新たなアプリケーションの実装が要求された場合、当該アプリケーションの一部の処理について実装されていない場合は、当該一部の処理を実現するフィルタのみを開発し、インストールすればよい。よって、アプリケーションメカニズム１０より下位のレイヤについて、新たなアプリケーションの実装に応じて発生する修正の頻度を低下させることができ、安定したプラットフォームを提供することができる。
【００３０】
アプリケーションメカニズム１０には、また、「アクティビティ」と呼ばれるソフトウェア部品が存在する。アクティビティは、複数のフィルタをどの順番で接続するかを管理し、その順番でフィルタを実行させることによりジョブを実行するソフトウェア部品であり、一つのアクティビティによって一つのアプリケーションが実現される。
【００３１】
すなわち、フィルタはそれぞれ独立性が高いため、フィルタの組み合わせ（アプリケーション）を動的に構築することが可能である。具体的には、ジョブの実行要求を受け付けるたびに、利用するフィルタと、フィルタの実行順序、及びそれぞれのフィルタの動作条件等をオペレーションパネル６０２を介してユーザに設定させることにより、ユーザ所望の機能を実現するようにしてもよい。
【００３２】
しかし、コピー機能のように頻繁に利用する機能については、毎回フィルタを選択することにより実行指示を行うのはユーザにとって煩雑である。かかる課題を解決するのがアクティビティである。すなわち、フィルタの組み合わせ（接続関係）をアクティビティとして予め定義しておけば、ユーザは、アクティビティを単位として実行対象を選択することができる。選択されたアクティビティは、当該アクティビティに定義された組み合わせに係る各フィルタを自動的に実行する。したがって、アクティビティによって、操作の煩雑さを解消することができるとともに、アプリケーション単位で実行対象を選択していた従来のユーザインタフェースと同様の操作感を提供することができる。
【００３３】
図中には、アクティビティの一例として、コピーアクティビティ１０１、送信アクティビティ１０２、及びファクスアクティビティ１０３等が含まれる。例えば、コピーアクティビティ１０１は、読取フィルタ１１１と、文書編集フィルタ１２１と、印刷フィルタ１３１との組み合わせにより、コピー機能（コピーアプリケーション）を実現する。
【００３４】
なお、基本的に各アクティビティは独立しており、アクティビティ間における依存関係（呼び出し関係）は基本的に存在しない。したがって、アクティビティ単位で追加（インストール）又は削除（アンインストール）が可能である。よって、図２に示されているアクティビティ以外にも、必要に応じて各種のフィルタの組み合わせによるアクティビティを作成し、インストールすることができる。
【００３５】
フィルタ及びアクティビティについて更に詳しく説明する。図５は、フィルタの構成要素を説明するための図である。図５に示されるように、各フィルタは、フィルタ設定用ＵＩ、フィルタロジック、フィルタ固有下位サービス、及び永続記憶領域情報等より構成される。このうち、フィルタ設定用ＵＩ、フィルタ固有下位サービス、及び永続記憶領域情報については、フィルタによって必ずしも構成要素に含まれない。
【００３６】
フィルタ設定用ＵＩは、フィルタの動作条件等を設定させるための画面をオペレーションパネル６０２等に表示させるプログラムである。すなわち、フィルタごとに動作条件が設定される。例えば、読取フィルタ１１１であれば、フィルタ設定用ＵＩは、原稿種類、読取サイズ、解像度等を設定させる画面が相当する。なお、オペレーションパネル６０２が、ＨＴＭＬデータや、スクリプトに基づいて表示制御を行うことが可能であれば、フィルタ設定用ＵＩは、ＨＴＭＬデータやスクリプトであってもよい。
【００３７】
フィルタロジックは、フィルタの機能を実現するためロジックが実装されたプログラムである。すなわち、フィルタの構成要素としてのフィルタ固有下位サービスや、サービスメカニズム２０等を利用して、フィルタ設定用ＵＩを介して設定された動作条件に応じてフィルタの機能を実現する。例えば、読取フィルタ１１１であれば、スキャナによる原稿の読み取り制御のためのロジックが相当する。
【００３８】
フィルタ固有下位サービスは、フィルタロジックを実現するために必要な下位機能（ライブラリ）である。
【００３９】
永続記憶領域情報は、フィルタに対する設定情報（例えば、動作条件のデフォルト値）等、不揮発メモリに保存する必要があるデータのスキーマ定義が相当する。当該スキーマ定義は、フィルタのインストール時にデータ管理部２３に登録される。
【００４０】
図６は、アクティビティの構成要素を説明するための図である。図６に示されるように、アクティビティは、アクティビティＵＩ、アクティビティロジック、及び永続記憶領域情報等より構成される。
【００４１】
アクティビティＵＩは、アクティビティに関する画面（例えば、アクティビティの動作条件等を設定させるための設定画面）をオペレーションパネル６０２等に表示させるための情報又はプログラムである。
【００４２】
アクティビティロジックは、アクティビティの処理内容が実装されたプログラムである。基本的に、アクティビティロジックには、フィルタの組み合わせに関するロジック（例えば、フィルタの実行順、複数のフィルタに跨る設定、フィルタの接続変更、エラー処理等）が実装されている。
【００４３】
永続記憶領域情報は、アクティビティに対する設定情報（例えば、動作条件のデフォルト値）等、不揮発メモリに保存する必要があるデータのスキーマ定義が相当する。当該スキーマ定義は、アクティビティのインストール時にデータ管理部２３に登録される。
【００４４】
図２に戻る。サービスメカニズム２０は、アクティビティ又はフィルタ等が利用するプリミティブなサービスを提供するソフトウェア部品や、アプリケーションが機種等のハード的な仕様に対して、非依存となるための仕組みを提供すソフトウェア部品等が実装されるレイヤである。図中において、サービスメカニズム２０には、画像パイプ２１、ＵＩ部２２、データ管理部２３、紙トレースサービス２４、マーキング処理サービス２５、マーキングハンドリングサービス２６、及び拡張プラグイン２７等のソフトウェア部品が含まれる。
【００４５】
画像パイプ２１は、上述したパイプの機能を実現する。すなわち、メモリ領域等を用いて或るフィルタからの出力データを次のフィルタに伝達する。なお、図中において、画像パイプ２１は、一つのブロックによって示されているが、その実体はフィルタ間を接続するパイプの数だけ生成される。
【００４６】
ＵＩ部２２は、オペレーションパネル６０２に表示される操作画面を介して入力されるユーザ要求を解釈し、ユーザ要求に応じた処理制御をアプリケーションメカニズム１０又はサービスメカニズム２０等におけるソフトウェア部品に委譲する。データ管理部２３は、ユーザ情報等、機器内外に保存される各種情報について、保存方法、及び保存場所等を規定する。
【００４７】
紙トレースサービス２４は、複合機１によって画像データが印刷された紙文書を一意に識別するためのＩＤ（以下、「紙ＩＤ」という。）の発行及び管理を行う。マーキング処理サービス２５は、画像データに対してバーコードや地紋パターン等によって各種の情報（例えば、紙ＩＤ）を埋め込む（合成する）ための処理（マーキング処理）の制御を行う。マーキング処理サービス２５は、ページを認識し、ページ単位でマーキング処理の制御を行う。マーキングハンドリングサービス２６は、マーキング処理サービス２５より指定された画像データの指定された位置に、指定された形式（パーコード又は地紋パターン等）によって指定された情報を合成する処理を実行する。
【００４８】
拡張プラグイン２７は、アクティビティの動作を拡張又は変更するための処理を実行するソフトウェア部品である。すなわち、上記したようにアクティビティは予めフィルタの接続関係が固定的に定義されたソフトウェア部品であるが、拡張プラグイン２７の追加によって、その振る舞いを動的に変更することができる。振る舞いの変更の態様は、拡張プラグイン２７の実装内容に応じて変化する。なお、アクティビティと拡張プラグイン２７との間のインタフェースは予め規定されている。したがって、拡張プラグイン２７は、当該インタフェースに従って実装される必要があり、アクティビティは当該インタフェースを介して拡張プラグイン２７を呼び出せるように実装される必要がある。また、図中において、拡張プラグイン２７は破線によって示されているが、これは、拡張プラグイン２７は、アクティビティの動作を拡張等しない場合は、必要ないことを示す。
【００４９】
デバイスメカニズム３０は、複合機１が有するデバイス毎に設けられたデバイスを制御する手段を有する。
【００５０】
運用部４０は、システムの運用管理に関するソフトウェア部品が実装される部分であり、アプリケーションメカニズム１０、サービスメカニズム２０、及びデバイスメカニズム３０より共通に利用される。図中において、運用部４０には、プラグイン管理部４１が含まれている。プラグイン管理部４１は、アクティビティ、フィルタ、及び拡張プラグイン２７等、自由に抜き差し（インストール・アンインストール）可能なソフトウェア部品の情報を管理する。
【００５１】
以上のようなソフトウェア構成を有する複合機１において、本実施の形態ではコピーアクティビティ１０１の振る舞いを拡張プラグイン２７によって変更する例について説明する。まず、拡張プラグイン２７がインストールされる前の状態（プラグイン前の状態）について説明する。
【００５２】
図７は、プラグイン前のコピーアクティビティとフィルタとの関係を示す図である。図７に示されるように、拡張プラグイン２７がインストールされていない状態において、コピーアクティビティ１０１は、入力フィルタとして読取フィルタ１１１を利用し、加工フィルタとして文書編集フィルタ１２１を利用し、出力フィルタとして印刷フィルタ１３１を利用する。このような利用関係は、コピーアクティビティ１０１のアクティビティロジック内にロジックとして組み込まれている。
【００５３】
斯かる構成に基づいて、コピーアクティビティ１０１は、次のような処理手順によってジョブを実行する。図８は、プラグイン前のコピーアクティビティによる処理手順を説明するためのシーケンス図である。
【００５４】
オペレーションパネル６０２に表示されている操作画面を介して、ユーザによってコピーアクティビティ１０１が実行対象として選択されると、ＵＩ部２２は、コピーアクティビティ１０１に対して起動を指示する（Ｓ１０１）。コピーアクティビティ１０１は、起動指示に応じ、コピーアクティビティ１０１自身の動作条件を格納するためのオブジェクト（以下、「プリファレンスオブジェクト」という。）を生成する（Ｓ１０２）。プリファレンスオブジェクトとは、動作条件を規定するパラメータが属性として定義されたクラスのインスタンスをいい、当該クラスの構成は、アクティビティ及びフィルタごとに異なり得る。
【００５５】
続いて、コピーアクティビティ１０１は、自らが利用する各フィルタ（読取フィルタ１１１、文書編集フィルタ１２１、及び印刷フィルタ１３１）のそれぞれに対して、プリファレンスオブジェクトの生成を要求する（Ｓ１０３、Ｓ１０４、Ｓ１０５）。各フィルタは、当該フィルタに固有の属性を有するプリファレンスオブジェクトを生成し、生成されたプリファレンスオブジェクトをコピーアクティビティ１０１に返却する。なお、以上において生成されたコピーアクティビティ１０１及び各フィルタのプリファレンスオブジェクトの属性には既定値が設定されている。続いて、コピーアクティビティ１０１は、自らに定義されているコピーアクティビティ１０１と各フィルタとの接続関係（コピーアクティビティ１０１と各フィルタとの利用関係及び各フィルタの実行順の前後関係）に基づいて、各プリファレンスオブジェクトの間に関連を生成することにより当該接続関係を示す情報（プリファレンスツリー）を構築する（Ｓ１０６）。
【００５６】
図９は、コピーアクティビティに関するプリファレンスツリーの例を示す図である。同図には、コピーアクティビティ１０１、読取フィルタ１１１、文書編集フィルタ１２１、印刷フィルタ１３１のそれぞれに対するプリファレンスオブジェクトとして、コピープリファレンス１０１ｐ、読取プリファレンス１１１ｐ、文書編集プリファレンス１２１ｐ、及び印刷プリファレンス１３１ｐが示されている。
【００５７】
コピープリファレンス１０１ｐは、カラーモード、自動濃度調整、変倍率、及びプラグインＯＮ／ＯＦＦフラグ等のパラメータ（属性）を含む。プラグインＯＮ／ＯＦＦフラグは、拡張プラグイン２７が有効であるか否かを示すパラメータであり、既定値はＯＦＦ（無効）が設定される。読取プリファレンス１１１ｐは、原稿種類、読取サイズ、カラーモード、解像度、及び原稿面等のパラメータを含む。文書編集プリファレンス１２１ｐは、自動濃度、手動濃度、変倍種類、画像回転、及び集約等のパラメータを含む。印刷プリファレンス１３１ｐは、カラーモード、用紙選択、印刷面、印刷部数、ソート、ステープル、パンチ、及び排紙先等のパラメータを含む。
【００５８】
コピープリファレンス１０１ｐから他のプリファレンスオブジェクトへの関連ｌ１、ｌ２、及びｌ３は、コピーアクティビティ１０１と各フィルタとの利用関係に基づいて生成される。各フィルタ間の関連ｌ４及びｌ５は、フィルタの実行順の前後関係に基づいて生成される。なお、各関連は、例えば、一方のプリファレンスオブジェクトが他方のプリファレンスオブジェクトの識別情報（参照、ポインタ、又はＩＤ等）をメンバ変数によって保持することにより実装すればよい。
【００５９】
起動指示に対応する処理が完了すると（Ｓ１０７）、ＵＩ部２２は、オペレーションパネル６０２に、コピーアクティビティ１０１の操作画面（コピー操作画面）を表示させる。
【００６０】
図１０は、コピー操作画面の表示例を示す図である。図１０において、コピー操作画面５００は、コピーアクティビティ設定領域１０１ｇ、読取条件設定領域１１１ｇ、編集条件設定領域１２１ｇ、及び印刷条件設定領域１３１ｇ等より構成される。各領域は、コピーアクティビティのアクティビティＵＩ（図６参照）又は各フィルタのフィルタ設定用ＵＩ（図５参照）に基づいてＵＩ部２２が表示させる。ユーザは、各領域を操作することにより、コピーアクティビティ１０１又は各フィルタの動作条件を設定する。各領域において設定可能な動作条件のパラメータは、基本的にコピーアクティビティ１０１又は各フィルタに対応するプリファレンスオブジェクトの属性に一致する。
【００６１】
例えば、コピーアクティビティ領域１０１ｇにおいて動作条件が設定されると、ＵＩ部２２は、コピーアクティビティ１０１に対して設定内容を通知する（Ｓ１０８）。当該通知に応じ、コピーアクティビティ１０１は、設定内容をコピープリファレンス１０１ｐに反映（設定）する。
【００６２】
同様に、読取条件設定領域１１１ｇ、編集条件設定領域１２１ｇ、又は印刷条件設定領域１３１ｇにおいて動作条件が設定されると、ＵＩ部２２は、対応するフィルタに対して設定内容を通知する（Ｓ１０９、Ｓ１１０、Ｓ１１１）。当該通知に応じ、対応するフィルタは、自らのプリファレンスオブジェクト（読取プリファレンス１１１ｐ、編集プリファレンス１２１ｐ、又は印刷プリファレンス１３１ｐ）に設定内容を反映する。
【００６３】
続いて、オペレーションパネル６０２においてスタートボタンが押下されることにより、ユーザによってジョブの開始指示が入力されると、ＵＩ部２２は、コピーアクティビティ１０１に対してジョブの実行を指示する（Ｓ１１２）。ジョブの実行指示に応じ、コピーアクティビティ１０１は、拡張プラグイン２７に対応するための処理（プラグイン対応処理）を呼び出す（Ｓ１１３）。コピーアクティビティ１０１に当該プラグイン対応処理が実装されていることにより、拡張プラグイン２７による振る舞いの変更が可能となる。すなわち、アクティビティにおけるプラグイン対応処理は、概念的にはアクティビティに対してプラグインを差し込むための口として捉えることができる。
【００６４】
プラグイン対応処理において、コピーアクティビティ１０１は、まず、拡張プラグイン２７の存否を確認する（Ｓ１１４）。具体的には、コピーアクティビティ１０１は、プラグイン管理４１に問い合わせることにより、拡張プラグイン２７がインストールされているか否かを問い合わせる。なお、拡張プラグイン２７が予め決められた名前によって実装されるように決められている場合は、当該名前によるソフトウェア部品の存否をプラグイン管理４１に問い合わせればよい。図８は、プラグイン前の状態に係るシーケンス図であるため、ここでは、拡張プラグイン２７は検索されず、プラグイン対応処理は終了する。
【００６５】
プラグイン対応処理に続いて、コピーアクティビティ１０１は、プリファレンスツリーに基づいて、各フィルタ間を接続する画像パイプ２１を生成する（Ｓ１１５、Ｓ１１６）。ここでは、図９のプリファレンスツリーにおける関連ｌ４に基づいて、読取フィルタ１１１と文書編集フィルタ１２１とを接続する画像パイプ２１ａが生成され、関連ｌ５に基づいて、文書編集フィルタ１２１と印刷フィルタ１３１とを接続する画像パイプ２１ｂが生成される。
【００６６】
続いて、コピーアクティビティ１０１は、プリファレンスツリーに基づいて、コピーアクティビティ１０１と各フィルタと画像パイプ２１との接続を行う（Ｓ１１７）。当該接続が形成されることにより、アクティビティ、フィルタ、及び画像パイプ２１によって実行されるジョブにおける処理の流れを表現するツリー構造（以下「ジョブツリー」という。）が構築される。
【００６７】
図１１は、コピーアクティビティに関するジョブツリーの例を示す図である。同図には、コピーアクティビティ１０１、読取フィルタ１１１、文書編集フィルタ１２１、及び印刷フィルタ１３１と、画像パイプ２１ａ及び２１ｂとが示されている。
【００６８】
コピーアクティビティ１０１と各フィルタとの接続（関連ｌ１１、ｌ１２、及びｌ１３）は、プリファレンスツリーにおける関連ｌ１、ｌ２、及びｌ３に基づいて生成される。また、読取フィルタ１１１と画像パイプ２１ａとの接続（関連ｌ１４）、及び文書編集フィルタ１２１と画像パイプ２１ａとの接続（関連ｌ１５）は、プリファレンスツリーにおける関連ｌ４に基づいて生成される。同様に、文書編集フィルタ１２１と画像パイプ２１ｂとの接続（関連ｌ１６）及び印刷フィルタ１３１と画像パイプ２１ｂとの接続（関連ｌ１７）は、プリファレンスツリーにおける関連ｌ５に基づいて生成される。
【００６９】
このように、プリファレンスツリーに基づくジョブツリーの構築は、固定的なものでなく汎用的な、また、動的な変換処理として実装されている。
【００７０】
ジョブツリーが構築されると、コピーアクティビティ１０１は、ジョブツリーに基づいてジョブの実行を開始する。まず、コピーアクティビティ１０１は、ジョブツリーにおける末端のフィルタ（当該フィルタの出力先に画像パイプ２１が接続されていないフィルタ）に対して処理の実行要求を行う。通常、末端のフィルタは、出力フィルタであり、ここでは、印刷フィルタ１３１がそれに該当する。したがって、まず、印刷フィルタ１３１に対して実行要求がなされる（Ｓ１１８）。
【００７１】
実行要求を受けた印刷フィルタ１３１は、ジョブツリーにおいて自らの入力先に接続されている画像パイプ２１ｂに画像データの入力を要求する（Ｓ１１９）。画像パイプ２１ｂは、自らが管理するメモリ領域に画像データが入力されていないため、ジョブツリーにおいて自らの入力先に接続されている文書編集フィルタ１２１に対して処理の実行を要求する（Ｓ１２０）。文書編集フィルタ１２１は、ジョブツリーにおいて自らの入力先に接続されている画像パイプ２１ａに画像データの入力を要求する（Ｓ１２１）。画像パイプ２１ａは、自らが管理するメモリ領域に画像データが入力されていないため、ジョブツリーにおいて自らの入力先に接続されている読取フィルタ１１１に対して処理の実行を要求する（Ｓ１２２）。
【００７２】
読取フィルタ１１１は、実行要求に応じ、読取プリファレンス１１１ｐに設定された動作条件に従って撮像部６０４を制御して原稿からの画像データの読み取りを行い（Ｓ１２３）、読み取られた画像データをジョブツリーにおいて自らの出力先に接続されている画像パイプ２１ａに出力する（Ｓ１２４）。画像パイプ２１ａは、画像データの入力に応じ、画像データの入力を要求していた文書編集フィルタ１２１に対して画像パイプ２１ａの状態変化（ここでは、画像データが入力されたこと）を通知する（Ｓ１２５）。当該通知に応じ、文書編集フィルタ１２１は、画像パイプ２１ａより画像データを取得し、取得された画像データに対して文書編集プリファレンス１２１ｐに設定された動作条件に従って、画像データに対する画像処理を行う（Ｓ１２６）。続いて、文書編集フィルタ１２１は、画像処理が施された画像データを自らの出力先に接続されている画像パイプ２１ｂに出力する（Ｓ１２７）。画像パイプ２１ｂは、画像データの入力に応じ、画像データの入力を要求していた印刷フィルタ１３１に対して画像パイプ２１ｂの状態変化（ここでは、画像データが入力されたこと）を通知する（Ｓ１２８）。当該通知に応じ、印刷フィルタ１３１は、画像パイプ２１ｂより画像データを取得し、印刷プリファレンス１３１ｐに設定された動作条件に従って印刷部６０５を制御して取得された画像データの印刷を行う（Ｓ１２９）。続いて、印刷フィルタ１３１は、処理の完了をコピーアクティビティ１０１に通知する（Ｓ１３０）。以上によって、ユーザに要求されたジョブの実行が完了する。なお、上記では、１ページ分のコピーについて説明しているが、複数ページのコピーの場合は、ステップＳ１１９〜Ｓ１２９までがページ数分繰り返される。
【００７３】
続いて、拡張プラグイン２７がインストールされた後の状態（プラグイン後の状態）について、拡張プラグイン２７の実装内容の相違に応じて実施の形態を分けて説明する。
【００７４】
第一の実施の形態では、拡張プラグイン２７によって、コピー元の原稿より読み取られた画像データを複合機１に蓄積すると共に、コピー先の紙に印刷される画像データに紙ＩＤを示すバーコードの埋め込みを行うようにコピーアクティビティ１０１の振る舞いを変更する例について説明する。
【００７５】
図１２は、第一の実施の形態におけるコピーアクティビティとフィルタ等との関係を示す図である。図１２中、図２又は図７と同一部分には同一符号を付し、その説明は省略する。
【００７６】
図１２において、サービスメカニズム２０におけるマーキング埋め込みプラグイン２７ａが、第一の実施の形態においてコピーアクティビティ１０１より利用される拡張プラグイン２７に相当する。同図では、コピーアクティビティ１０１が保管文書登録フィルタ１３２を利用することが示されている。また、印刷フィルタ１３１がマーキング処理サービス２５を利用することが示されている。斯かる利用関係は、マーキング埋め込みプラグイン２７ａが、コピーアクティビティ１０１のプリファレンスツリーの構成を動的に変更することにより形成されるものである。以下、第一の実施の形態における処理手順について説明する。
【００７７】
図１３及び図１４は、第一の実施の形態におけるプラグイン後のコピーアクティビティによる処理手順を説明するためのシーケンス図である。図１３又は図１４中、図８と同一ステップには同一ステップ番号を付し、その説明は省略する。
【００７８】
拡張プラグイン２７が追加されている場合、ステップＳ１１４において、コピーアクティビティ１０１がプラグイン管理４１に拡張プラグイン２７の存否を問い合わせると、プラグイン管理４１は、マーキング埋め込みプラグイン２７ａがインストールされていることを応答する。そこで、コピーアクティビティ１０１は、コピープリファレンス１０１ｐのプラグインＯＮ／ＯＦＦフラグの値をＯＮにし、マーキング埋め込みプラグイン２７ａに対して処理の実行を要求する（Ｓ２０１）。この要求を行うためのインタフェースは、予め定められたインタフェースの一部に相当する。
【００７９】
なお、コピーアクティビティ１０１は、マーキング埋め込みプラグイン２７ａがどのような機能を実現する拡張プラグイン２７であるのかについては意識せずに、自らに対する拡張プラグイン２７としてインストールされている拡張プラグイン２７に対して実行要求を行う。当該実行要求では、コピーアクティビティ１０１のプリファレンスツリーがパラメータとして渡される。この段階において当該プリファレンスツリーは、図９に示される構成を有する。
【００８０】
処理の実行要求を受けたマーキング埋め込みプラグイン２７ａは、実装されたロジックに従って処理を実行する。まず、マーキング埋め込みプラグイン２７ａは、保管文書登録フィルタ１３２に対してプリファレンスオブジェクトの生成を要求する（Ｓ２０２）。保管文書登録フィルタ１３２は、当該フィルタに固有の属性を有するプリファレンスオブジェクトを生成し、生成されたプリファレンスオブジェクトをマーキング埋め込みプラグイン２７ａに返却する。
【００８１】
続いて、マーキング埋め込みプラグイン２７ａは、保管文書登録フィルタ１３２に対して、これから蓄積される画像データに対する文書ＩＤの発行を要求する（Ｓ２０３）。保管文書登録フィルタ１３２は、文書ＩＤを生成し、生成された文書ＩＤをマーキング埋め込みプラグイン２７ａに返却する（Ｓ２０４）。なお、文書ＩＤとは、複合機１における文書データベース内においてにおいて各文書データ（画像データ）に対して一意なＩＤである。
【００８２】
続いて、マーキング埋め込みプラグイン２７ａは、文書ＩＤを引数として、紙トレースサービス２４に対して紙ＩＤの発行を要求する（Ｓ２０５）。紙トレースサービス２４は、紙ＩＤを生成し、生成された紙ＩＤをマーキング埋め込みプラグイン２７ａに返却する（Ｓ２０６）。紙は複合機１の存在と関係なく流通する。したがって、紙一枚一枚の識別を目的とする紙ＩＤは、複合機１内において（ローカルな範囲において）一意ではなく、複合機１外において（グローバルな範囲において）一意となるように生成される。なお、紙トレースサービス２４は、文書ＩＤと、当該文書ＩＤに対応して発行した紙ＩＤとを関連付けて管理しておく。
【００８３】
続いて、マーキング埋め込みプラグイン２７ａは、印刷フィルタ１３１に対して、動作条件の変更を要求する（Ｓ２０７）。具体的には、バーコードの埋め込み処理に関する動作条件（マーキング条件）を動作条件に追加することを要求する。ここで、マーキング条件を構成する各パラメータの値は、マーキング埋め込みプラグイン２７ａにおいて予め定められた値が設定される。当該要求に応じ、印刷フィルタ１３１は、印刷プリファレンス１３１ｐに対してマーキング条件を追加する。なお、印刷プリファレンス１３１ｐへのマーキング条件の追加は、印刷フィルタ１３１において予め組み込まれている（予定されている）処理である。すなわち、印刷フィルタ１３１は、印刷プリファレンス１３１ｐに対してマーキング条件が追加可能なように実装されており、マーキング埋め込みプラグイン２７ａは、その実装を利用したということである。
【００８４】
続いて、マーキング埋め込みプラグイン２７ａは、保管文書登録フィルタ１３２をコピーアクティビティ１０１の利用対象とするため、コピープリファレンス１０１ｐと保管文書登録フィルタ１３２のプリファレンスオブジェクトとの間に関連を生成する（Ｓ２０８）。続いて、マーキング埋め込みプラグイン２７ａは、保管文書登録フィルタ１１１と、コピーアクティビティ１０１によって利用される他のフィルタとの実行順の前後関係に応じてプリファレンスツリーにおける一部の関連を変更する（Ｓ２０９）。以上で、マーキング埋め込みプラグイン２７ａによる処理は完了する（Ｓ２１０）。
【００８５】
マーキング埋め込みプラグイン２７ａによる処理により、コピーアクティビティ１０１に関するプリファレンスツリーの構成は次のように変更される。図１５は、第一の実施の形態におけるコピーアクティビティに関するプリファレンスツリーの例を示す図である。図１５中、図９と同一部分には同一符号を付し、その説明は省略する。
【００８６】
同図において、マーキング条件１３１ｐ１が印刷プリファレンス１３１ｐに追加されている。マーキング条件１３１ｐ１は、埋め込みＯＮ／ＯＦＦフラグ、紙ＩＤ、コード種類、及び埋め込み位置等のパラメータより構成されるが、これらの値は、ステップＳ２０７の前にマーキング埋め込みプラグイン２７ａによって設定される。埋め込みＯＮ／ＯＦＦフラグは、埋め込みを行うか否かを示し、ここではＯＮ（埋め込みを行う）が設定される。紙ＩＤは、ステップＳ２０６において入手された紙ＩＤが設定される。コード種類は、バーコードを示す値が設定される。
【００８７】
また、保管文書登録プリファレンス１３２ｐは、ステップＳ２０２において生成された保管文書登録フィルタ１３２のプリファレンスオブジェクトである。コピーリプファレンス１０１ｐから保管文書登録プリファレンス１３２ｐへの関連ｌ６は、ステップＳ２０８において生成されたものである。読取プリファレンス１１１ｐと保管文書登録プリファレンス１３２ｐとの間の関連ｌ７は、ステップＳ２０９において追加されたものである。
【００８８】
マーキング埋め込みプラグイン２７ａによる処理（コピーアクティビティ１０１から見るとプラグイン対応処理）が完了すると、以降はプリファレンスツリーに従った処理が実行される。すなわち、コピーアクティビティ１０１は、プリファレンスツリーに基づいて、図８のＳ１１５及びＳ１１６と同様に各フィルタ間を接続する画像パイプ２１ａ及び２１ｂを生成する（Ｓ２１１、Ｓ２１２）。
【００８９】
続いて、コピーアクティビティ１０１は、プリファレンスツリーに基づいて、コピーアクティビティ１０１と各フィルタと画像パイプ２１との接続を行うことによりジョブツリーを構築する（Ｓ２１３）。
【００９０】
図１６は、第一の実施の形態におけるコピーアクティビティに関するジョブツリーの例を示す図である。図１６中、図１１と同一部分には同一符号を付し、その説明は省略する。
【００９１】
図１６では、新たに関連ｌ２１及びｌ２２に係る接続が形成されている。関連ｌ２１は、プリファレンスツリー（図１５）における関連ｌ６に基づいて生成される。関連ｌ２２は、プリファレンスツリーにおける関連ｌ７に基づいて生成される。
【００９２】
ジョブツリーが構築されると、コピーアクティビティ１０１は、ジョブツリーに基づいてジョブの実行を開始する。まず、コピーアクティビティ１０１は、ジョブツリーにおいて末端のフィルタである、印刷フィルタ１３１及び保管文書登録フィルタ１３２に対して処理の実行要求を行う（Ｓ２１４、Ｓ２１５）。
【００９３】
ステップＳ２１４に応じて実行されるステップＳ２１６〜Ｓ２１８では、図８におけるステップＳ１１９〜Ｓ１２１と同様の処理により、画像パイプ２１ａに対して画像データの入力要求がなされる（Ｓ２１８）。
【００９４】
一方、ステップＳ２１５における実行要求に応じ、保管文書登録フィルタ１３２は、ジョブツリーにおいて自らの入力先に接続されている画像パイプ２１ａに画像データの入力を要求する（Ｓ２１９）。画像パイプ２１ａは、自らが管理するメモリ領域に画像データが入力されていないため、ジョブツリーにおいて自らの入力先に接続されている読取フィルタ１１１に対して処理の実行を要求する（Ｓ２２０）。なお、画像パイプ２１ａは、このタイミングで既に読取フィルタ１１１に対して実行要求を行っているため、ステップＳ２１８において画像データの入力要求を受けた際に画像データが入力されていなくても、読取フィルタ１１１に対する実行要求は行わない。
【００９５】
続いて、読取フィルタ１１１は、実行要求に応じ、読取プリファレンス１１１ｐに設定された動作条件に従って撮像部６０４を制御して原稿からの画像データの読み取りを行い（Ｓ２２１）、読み取られた画像データをジョブツリーにおいて自らの出力先に接続されている画像パイプ２１ａに出力する（Ｓ２２２）。画像パイプ２１ａは、画像データの入力に応じ、画像データの入力を要求していた文書編集フィルタ１２１と保管文書登録フィルタ１３２とに対して画像パイプ２１ａの状態変化（ここでは、画像データが入力されたこと）を通知する（Ｓ２２３、Ｓ２２４）。
【００９６】
ステップＳ２２３による通知に応じ、ステップＳ２２５〜Ｓ２２７において、図８のステップＳ１２６〜Ｓ１２８と同様の処理が実行される。ステップＳ２２７に続いて、印刷フィルタ１３１は、画像パイプ２１ｂより画像データを取得し、取得された画像データに対して印刷プリファレンス１３１ｐに設定された動作条件に従って処理を行う（Ｓ２２８）。この際、印刷が行われる前に、印刷フィルタ１３１は印刷プリファレンス１３１ｐに追加されているマーキング条件１３１ｐ１に基づいて、マーキング処理を行う必要があることを判断し、画像データに対するマーキング処理の実行をマーキング処理サービス２５に要求する（Ｓ２２９）。ここではマーキング条件がパラメータとして渡される。マーキング処理サービス２５は、マーキング条件に従ったマーキング処理（ここでは、バーコードの埋め込み）をマーキングハンドリングサービス２６を用いて実行する（Ｓ２３０、Ｓ２３１）。マーキング処理サービス２５によるマーキング処理が完了すると（Ｓ２３２）、印刷フィルタ１３１は、印刷プリファレンス１３１ｐに設定された動作条件に従って印刷部６０５を制御し、バーコードが埋め込まれた（合成された）画像データの印刷を行う。続いて、印刷フィルタ１３１は、処理の完了をコピーアクティビティ１０１に通知する（Ｓ２３３）。
【００９７】
一方、ステップＳ２２４による通知に応じ、保管文書登録フィルタ１３２は、画像パイプ２１ａより画像データを取得し、当該画像データをステップＳ２０６において発行した文書ＩＤと関連付けてＨＤＤ６３３に保存する（Ｓ２３４）。続いて、保管文書登録フィルタ１３２は、処理の完了をコピーアクティビティ１０１に通知する（Ｓ２３５）。
【００９８】
なお、上記の説明では、拡張プラグイン２７がインストールされていると自動的に拡張プラグイン２７が利用される例を説明したが、例えば、拡張プラグイン２７の利用の要否をユーザに選択させてもよい。
【００９９】
図１７は、拡張プラグインの利用の要否の選択を可能としたコピー操作画面の表示例を示す図である。図１７中、図１０と同一部分には同一符号を付し、その説明は省略する。
【０１００】
図１７では、参照番号１０１１によって示されるように、コピーアクティビティ設定領域１０１ｇにはプラグインのＯＮ／ＯＦＦフラグを設定させるための項目が表示されている。当該項目において、プラグインのＯＮが指定された場合、コピーアクティビティ１０１は、ステップＳ１１３以降の処理（プラグイン対応処理）を実行し、プラグインのＯＦＦが指定された場合、コピーアクティビティ１０１は、プラグイン対応処理を実行しないようにしてもよい。
【０１０１】
次に、第二の実施の形態について説明する。第二の実施の形態では、拡張プラグイン２７によって、コピー元の原稿より読み取られた画像データを印刷するのではなく、メール送信するようにコピーアクティビティ１０１の振る舞いを変更する例について説明する。
【０１０２】
図１８は、第二の実施の形態におけるコピーアクティビティとフィルタ等との関係を示す図である。図１８中、図２又は図７と同一部分には同一符号を付し、その説明は省略する。
【０１０３】
図１８において、サービスメカニズム２０における送信プラグイン２７ｂが第二の実施の形態においてコピーアクティビティ１０１より利用される拡張プラグイン２７に相当する。同図では、コピーアクティビティ１０１がメール送信フィルタ１３３を利用することが示されている。斯かる利用関係は、送信プラグイン２７ｂが、コピーアクティビティ１０１のプリファレンスツリーの構成を動的に変更することにより形成されるものである。以下、第二の実施の形態における処理手順について説明する。
【０１０４】
図１９は、第二の実施の形態におけるプラグイン後のコピーアクティビティによる処理手順を説明するためのシーケンス図である。図１９中、図８、図１３、又は図１４と同一ステップには同一ステップ番号を付し、その説明は省略する。
【０１０５】
第二の実施の形態ではステップＳ１１４において、インストールされている拡張プラグイン２７として送信プラグイン２７ｂが検索される。そこで、コピーアクティビティ１０１は、コピープリファレンス１０１ｐのプラグインＯＮ／ＯＦＦフラグの値をＯＮにし、送信プラグイン２７ｂに対して処理の実行を要求する（Ｓ３０１）。当該実行要求では、コピーアクティビティ１０１のプリファレンスツリーがパラメータとして渡される。この段階において当該プリファレンスツリーは、図９に示される構成を有する。
【０１０６】
処理の実行要求を受けた送信プラグイン２７ｂは、実装されたロジックに従って処理を実行する。まず、送信プラグイン２７ｂは、プリファレンスツリーにおける、コピープリファレンス１０１ｐから印刷プリファレンス１３１ｐへの関連ｌ３と、文書編集プリファレンス１２１ｐと印刷プリファレンス１３１ｐとの間の関連ｌ５とを削除する（Ｓ３０２）。続いて、送信プラグイン２７ｂは、印刷フィルタ１３１に対して印刷プリファレンス１３１ｐの削除を要求する（Ｓ３０３）。当該要求に応じ、印刷フィルタ１３１は印刷プリファレンス１３１ｐをメモリ上より削除する。
【０１０７】
続いて、送信プラグイン２７ｂは、メール送信フィルタ１３３に対してプリファレンスオブジェクトの生成を要求する（Ｓ３０４）。メール送信フィルタ１３３は、当該フィルタに固有の属性を有するプリファレンスオブジェクトを生成し、生成されたプリファレンスオブジェクトを送信プラグイン２７ｂに返却する。続いて、送信プラグイン２７ｂは、メール送信フィルタ１３３のプリファレンスオブジェクトに対して、送信プラグイン２７ｂ用の動作条件（メールアドレス等）を設定する（Ｓ３０５）。続いて、送信プラグイン２７ｂは、メール送信フィルタ１３３のプリファレンスオブジェクトをプリファレンスツリーに追加する（Ｓ３０６）。以上で、送信プラグイン２７ｂによる処理は完了する（Ｓ３０７）。
【０１０８】
送信プラグイン２７ｂによる処理により、コピーアクティビティ１０１に関するプリファレンスツリーの構成は次のように変更される。図２０は、第二の実施の形態におけるコピーアクティビティに関するプリファレンスツリーの例を示す図である。図２０中、図９と同一部分には同一符号を付し、その説明は省略する。
【０１０９】
同図において、メール送信プリファレンス１３３ｐは、ステップＳ３０４において生成されたメール送信フィルタ１３３のプリファレンスオブジェクトである。コピーリプファレンス１０１ｐからメール送信プリファレンス１３３ｐへの関連ｌ８、及び文書編集プリファレンス１２１ｐとメール送信プリファレンス１３３ｐとの間の関連ｌ９は、ステップＳ３０６において生成されたものである。ステップＳ３０６において生成されたものである。すなわち、第二の実施の形態では、印刷プリファレンス１３１ｐがメール送信プリファレンス１３３ｐによって置き換えられている。
【０１１０】
送信プラグイン２７ｂによる処理（コピーアクティビティ１０１から見るとプラグイン対応処理）が完了すると、以降はプリファレンスツリーに従った処理が実行される。すなわち、コピーアクティビティ１０１は、プリファレンスツリーに基づいて、図８のＳ１１５及びＳ１１６と同様に各フィルタ間を接続する画像パイプ２１ａ及び２１ｂを生成する（Ｓ３０８、Ｓ３０９）。
【０１１１】
続いて、コピーアクティビティ１０１は、プリファレンスツリーに基づいて、コピーアクティビティ１０１と各フィルタと画像パイプ２１との接続を行うことによりジョブツリーを構築する（Ｓ３１０）。
【０１１２】
図２１は、第二の実施の形態におけるコピーアクティビティに関するジョブツリーの例を示す図である。図２１中、図１１と同一部分には同一符号を付し、その説明は省略する。
【０１１３】
図２１では、コピーアクティビティ１０１とメール送信フィルタ１３３との間に接続（関連ｌ３１）が形成され、メール送信フィルタ１３３と画像パイプ２１ｂとの間に接続（関連ｌ３２）が形成されている。関連ｌ３１は、プリファレンスツリー（図２０）における関連ｌ８に基づいて生成される。関連ｌ３２は、プリファレンスツリーにおける関連ｌ９に基づいて生成される。
【０１１４】
ジョブツリーが構築されると、コピーアクティビティ１０１は、ジョブツリーに基づいてジョブの実行を開始する。まず、コピーアクティビティ１０１は、ジョブツリーにおける末端のフィルタである、メール送信フィルタ１３３に対して処理の実行要求を行う（Ｓ３１１）。実行要求を受けたメール送信フィルタ１３３は、ジョブツリーにおいて自らの入力先に接続されている画像パイプ２１ｂに画像データの入力を要求する（Ｓ３１２）。以降、ステップＳ３１３〜Ｓ３２１においては、図８におけるステップＳ１２０〜Ｓ１２８と同様の処理が実行される。
【０１１５】
画像パイプ２１ｂの状態変化の通知に応じ、メール送信フィルタ１３３は、画像パイプ２１ｂより画像データを取得し、メール送信プリファレンス１３３ｐｐに設定された動作条件に従って取得された画像データをメールに添付して送信する（Ｓ３２２）。続いて、メール送信フィルタ１３３は、処理の完了をコピーアクティビティ１０１に通知する（Ｓ３２３）。
【０１１６】
上述したように本実施の形態における複合機１によれば、各フィルタを部品として各機能を構築するため、機能のカスタマイズ又は拡張を簡便に行うことができる。すなわち、各フィルタ間には、機能的な依存関係はなく独立性が保たれているため、フィルタの新たな追加やフィルタの組み合わせの変更によって、新たな機能（アプリケーション）を容易に開発することができる。したがって、新たなアプリケーションの実装が要求された場合、当該アプリケーションの一部の処理について実装されていない場合は、当該一部の処理を実現するフィルタのみを開発し、インストールすればよい。
【０１１７】
また、フィルタの組み合わせによって構成される機能をアクティビティとして予め定義しておくことにより、より簡便な操作で、フィルタの組み合わせによる機能を利用することができる。
【０１１８】
更に、拡張プラグイン２７の追加によって、本来であれば固定的に予めフィルタの接続関係が定義されたアクティビティの振る舞いについて、拡張プラグイン２７によってプリファレンスツリーを変更することにより、動的に変化させることができる。斯かる仕組みは、既存のアクティビティの機能の一部を変更したい場合のカスタマイズ手段として有効である。
【０１１９】
なお、本実施の形態において、アクティビティは機能実行手段の具体例であり、フィルタは第一のソフトウェア部品の具体例であり、拡張プラグイン２７は第二のソフトウェア部品の具体例である。
【０１２０】
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【図面の簡単な説明】
【０１２１】
【図１】本発明の実施の形態における画像形成装置のハードウェア構成の一例を示す図である。
【図２】本発明の実施の形態の画像形成装置におけるソフトウェア構成例を示す図である。
【図３】パイプ＆フィルタアーキテクチャの概念を説明するための図である。
【図４】本実施の形態の複合機における各機能を実現するためのフィルタの組み合わせの例を示す図である。
【図５】フィルタの構成要素を説明するための図である。
【図６】アクティビティの構成要素を説明するための図である。
【図７】プラグイン前のコピーアクティビティとフィルタとの関係を示す図である。
【図８】プラグイン前のコピーアクティビティによる処理手順を説明するためのシーケンス図である。
【図９】コピーアクティビティに関するプリファレンスツリーの例を示す図である。
【図１０】コピー操作画面の表示例を示す図である。
【図１１】コピーアクティビティに関するジョブツリーの例を示す図である。
【図１２】第一の実施の形態におけるコピーアクティビティとフィルタ等との関係を示す図である。
【図１３】第一の実施の形態におけるプラグイン後のコピーアクティビティによる処理手順を説明するためのシーケンス図である。
【図１４】第一の実施の形態におけるプラグイン後のコピーアクティビティによる処理手順を説明するためのシーケンス図である。
【図１５】第一の実施の形態におけるコピーアクティビティに関するプリファレンスツリーの例を示す図である。
【図１６】第一の実施の形態におけるコピーアクティビティに関するジョブツリーの例を示す図である。
【図１７】拡張プラグインの利用の要否の選択を可能としたコピー操作画面の表示例を示す図である。
【図１８】第二の実施の形態におけるコピーアクティビティとフィルタ等との関係を示す図である。
【図１９】第二の実施の形態におけるプラグイン後のコピーアクティビティによる処理手順を説明するためのシーケンス図である。
【図２０】第二の実施の形態におけるコピーアクティビティに関するプリファレンスツリーの例を示す図である。
【図２１】第二の実施の形態におけるコピーアクティビティに関するジョブツリーの例を示す図である。
【符号の説明】
【０１２２】
１          複合機
１０        アプリケーションメカニズム
２０        サービスメカニズム
２１        画像パイプ
２２        ＵＩ部
２３        データ管理部
２４        紙トレースサービス
２５        マーキング処理サービス
２６        マーキングハンドリングサービス
２７        拡張プラグイン
２７ａ      マーキング埋め込みプラグイン
２７ｂ      送信プラグイン
３０        デバイスメカニズム
４０        運用部
４１        プラグイン管理部
１０１      コピーアクティビティ
１０２      送信アクティビティ
１０３      ファクスアクティビティ
１１１      読取フィルタ
１１２      保管文書読出フィルタ
１１３      メール受信フィルタ
１１４      ファクス受信フィルタ
１２１      文書編集フィルタ
１２２      文書変換フィルタ
１３１      印刷フィルタ
１３２      保管文書登録フィルタ
１３３      メール送信フィルタ
１３４      ファクス送信フィルタ
６０４      撮像部
６０５      印刷部
６０１      コントローラ
６０２      オペレーションパネル
６０３      ファクシミリコントロールユニット
６１１      ＣＰＵ
６１２      ＡＳＩＣ
６２１      ＮＢ
６２２      ＳＢ
６３１      ＭＥＭ−Ｐ
６３２      ＭＥＭ−Ｃ
６３３      ＨＤＤ
６３４      メモリカードスロット
６３５      メモリカード
６４１      ＮＩＣ
６４２      ＵＳＢデバイス
６４３      ＩＥＥＥ１３９４デバイス
６４４      セントロニクスデバイス
【図１】
2009110437.tif 000003
【図２】
2009110437.tif 000004
【図３】
2009110437.tif 000005
【図４】
2009110437.tif 000006
【図５】
2009110437.tif 000007
【図６】
2009110437.tif 000008
【図７】
2009110437.tif 000009
【図８】
2009110437.tif 000010
【図９】
2009110437.tif 000011
【図１０】
2009110437.tif 000012
【図１１】
2009110437.tif 000013
【図１２】
2009110437.tif 000014
【図１３】
2009110437.tif 000015
【図１４】
2009110437.tif 000016
【図１５】
2009110437.tif 000017
【図１６】
2009110437.tif 000018
【図１７】
2009110437.tif 000019
【図１８】
2009110437.tif 000020
【図１９】
2009110437.tif 000021
【図２０】
2009110437.tif 000022
【図２１】
2009110437.tif 000023