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