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