(57)【特許請求の範囲】
【請求項１】
複数のソフトウェア部品の組み合わせによってジョブを実行する画像形成装置であって、
各ソフトウェア部品によって処理情報が登録されるデータに基づいてカウンタの値を更新するカウンタ更新手段を有し、
前記複数のソフトウェア部品は、前記ジョブを実行するための処理の実行順に従って順番に前記データに処理情報を登録し、
前記実行順において末端のソフトウェア部品は、前記データを前記カウンタ更新手段に伝達することを特徴とする画像形成装置。
【請求項２】
課金に関するカウンタの値を更新させる第一の処理情報は、前記複数のソフトウェア部品のうちカスタマイズ方法が公開されていないソフトウェア部品によって前記データに登録されることを特徴とする請求項１記載の画像形成装置。
【請求項３】
前記実行順において末端のソフトウェア部品は、カスタマイズ方法が公開されていないソフトウェア部品であり、
カスタマイズ方法が公開されているソウトウェア部品によって前記第一の処理情報が前記データに登録されたときは、前記末端のソフトウェア部品は、前記第一の処理情報を上書きすることを特徴とする請求項２記載の画像形成装置。
【請求項４】
前記データは、当該画像形成装置において入力又は出力されるページごとに生成され、
前記複数のソフトウェア部品は、ページごとに前記データに処理情報を登録することを特徴とする請求項１乃至３いずれか一項記載の画像形成装置。
【請求項５】
入力されたページを集約して出力するジョブの実行において、
ページの入力を行うソフトウェア部品は、入力されるページごとの前記データに処理情報を登録し、
ページの集約を実行するソフトウェア部品は、ページの入力を行うソフトウェア部品によって処理情報が登録されたページごとの前記データを、集約される単位で統合し、
ページの出力を実行するソフトウェア部品は、統合された前記データに対して処理情報を登録することを特徴とする請求項４記載の画像形成装置。
【請求項６】
入力されたページを複数の出力先に出力するジョブの実行において、
ページの入力を行うソフトウェア部品は、入力されるページごとの前記データに処理情報を登録し、
所定のソフトウェア部品は、ページの入力を行うソフトウェア部品によって処理情報が登録されたページごとの前記データの複製を出力先の数だけ生成し、
一つの出力先に対応したページの出力を実行する一つのソフトウェア部品は、前記所定のソフトウェア部品によって複製された一つの前記データに対して処理情報を登録することを特徴とする請求項４又は５記載の画像形成装置。
【請求項７】
入力されたページを複数部出力するジョブの実行において、
ページの入力を行うソフトウェア部品は、入力されるページごとの前記データに処理情報を登録し、
ページの出力を行うソフトウェア部品は、ページの入力を行うソフトウェア部品によって処理情報が登録されたページごとの前記データの複製を出力部数だけ生成することを特徴とする請求項４乃至６いずれか一項記載の画像形成装置。
【請求項８】
前記処理情報に基づいてカウンタの更新条件がカウンタごとに定義された定義情報が記録された記憶手段を有し、
前記カウンタ更新手段は、前記データに登録されている前記処理情報と前記定義情報との比較に基づいて、カウンタの値を更新することを特徴とする請求項１乃至７いずれか一項記載の画像形成装置。
【請求項９】
複数のソフトウェア部品の組み合わせによってジョブを実行する画像形成装置が実行するカウンタ更新方法であって、
各ソフトウェア部品によって処理情報が登録されるデータに基づいてカウンタの値を更新するカウンタ更新手順を有し、
前記複数のソフトウェア部品は、前記ジョブを実行するための処理の実行順に従って順番に前記データに処理情報を登録し、
前記実行順において末端のソフトウェア部品は、前記データを前記カウンタ更新手順に伝達することを特徴とするカウンタ更新方法。
【請求項１０】
課金に関するカウンタの値を更新させる第一の処理情報は、前記複数のソフトウェア部品のうちカスタマイズ方法が公開されていないソフトウェア部品によって前記データに登録されることを特徴とする請求項９記載のカウンタ更新方法。
【請求項１１】
前記実行順において末端のソフトウェア部品は、カスタマイズ方法が公開されていないソフトウェア部品であり、
カスタマイズ方法が公開されているソウトウェア部品によって前記第一の処理情報が前記データに登録されたときは、前記末端のソフトウェア部品は、前記第一の処理情報を上書きすることを特徴とする請求項１０記載のカウンタ更新方法。
【請求項１２】
前記データは、当該画像形成装置において入力又は出力されるページごとに生成され、
前記複数のソフトウェア部品は、ページごとに前記データに処理情報を登録することを特徴とする請求項９乃至１１いずれか一項記載のカウンタ更新方法。
【請求項１３】
入力されたページを集約して出力するジョブの実行において、
ページの入力を行うソフトウェア部品は、入力されるページごとの前記データに処理情報を登録し、
ページの集約を実行するソフトウェア部品は、ページの入力を行うソフトウェア部品によって処理情報が登録されたページごとの前記データを、集約される単位で統合し、
ページの出力を実行するソフトウェア部品は、統合された前記データに対して処理情報を登録することを特徴とする請求項１２記載のカウンタ更新方法。
【請求項１４】
入力されたページを複数の出力先に出力するジョブの実行において、
ページの入力を行うソフトウェア部品は、入力されるページごとの前記データに処理情報を登録し、
所定のソフトウェア部品は、ページの入力を行うソフトウェア部品によって処理情報が登録されたページごとの前記データの複製を出力先の数だけ生成し、
一つの出力先に対応したページの出力を実行する一つのソフトウェア部品は、前記所定のソフトウェア部品によって複製された一つの前記データに対して処理情報を登録することを特徴とする請求項１２又は１３記載のカウンタ更新方法。
【請求項１５】
入力されたページを複数部出力するジョブの実行において、
ページの入力を行うソフトウェア部品は、入力されるページごとの前記データに処理情報を登録し、
ページの出力を行うソフトウェア部品は、ページの入力を行うソフトウェア部品によって処理情報が登録されたページごとの前記データの複製を出力部数だけ生成することを特徴とする請求項１２乃至１４いずれか一項記載のカウンタ更新方法。
【請求項１６】
前記処理情報に基づいてカウンタの更新条件がカウンタごとに定義された定義情報が記録された記憶手段を有し、
前記カウンタ更新手順は、前記データに登録されている前記処理情報と前記定義情報との比較に基づいて、カウンタの値を更新することを特徴とする請求項９乃至１５いずれか一項記載のカウンタ更新方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像形成装置及びカウンタ更新方法に関し、特に複数のソフトウェア部品の組み合わせによってジョブを実行する画像形成装置及びカウンタ更新方法に関する。
【背景技術】
【０００２】
一般に、コピー機能、ファクシミリ（ＦＡＸ）機能、印刷機能、スキャナ機能等の複数の機能を一つの筐体において実現する複合機と称される画像形成装置には、これらの機能の実現する際に発生する事象をカウントするための膨大な数のカウンタを備えている。コピー機能を例にとると、用紙の読取枚数の他、集約したときの出力用紙の枚数、コピー機能を利用した回数、ドラム部品の回転数等、多種多様なカウンタが存在する。これらのカウンタは、各機能の利用回数や請求金額をユーザごとに把握して課金管理を行ったり、各部品の消耗度（例えば、ドラムの回転数や転写回数等）を把握して複合機の各部品のメンテナンスを行ったりするために用いられる。
【０００３】
また、近年の複合機の各機能は、ユーザのニーズに応じてカスタマイズ可能とされている。カスタマイズを容易にするために、機能毎のそれぞれのアプリケーションやミドルウェア等は、その機能を実現するための処理においてできるだけ他のアプリケーション等との依存関係が希薄となるように設計することが求められる。このことは、カウンタの値の更新処理についても同様である。
【０００４】
図１は、従来の複合機におけるカウンタの更新処理を説明するための図である。図１に示されるように、例えば、ＦＡＸ送信をする場合、ＦＡＸ送信に関するソフトウェア部品（読取部、画像編集部、ユーザ情報取得部等）は、処理結果（動作回数等のカウント値、その他詳細な動作結果）をＦＡＸアプリに通知し、ＦＡＸアプリがそれらの処理結果に基づいて記憶部に記憶されているカウンタの値を更新していた。同様に、コピーを行う場合、コピーアプリがカウントの更新を行っていた。すなわち、カウンタの更新は、各アプリケーションの責務とされていた。これは、カウンタとアプリケーションとの間に密接な関係があることに起因する。
【特許文献１】特開２００６−２１２８６６号公報
【特許文献２】特開２００１−３４１３８８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、各アプリケーションによってカウンタの更新が行われるような構成では、カウンタの構成等が変更される場合、各アプリケーションのソースコードを修正する必要があり、その修正作業は、アプリケーションの数が多ければ多い程、負担が大きくなる。
【０００６】
本発明は、上記の点に鑑みてなされたものであって、カウンタの更新を適切に実行することのできる画像形成装置及びカウンタ更新方法の提供を目的とする。
【課題を解決するための手段】
【０００７】
そこで上記課題を解決するため、本発明は、複数のソフトウェア部品の組み合わせによってジョブを実行する画像形成装置であって、各ソフトウェア部品によって処理情報が登録されるデータに基づいてカウンタの値を更新するカウンタ更新手段を有し、前記複数のソフトウェア部品は、前記ジョブを実行するための処理の実行順に従って順番に前記データに処理情報を登録し、前記実行順において末端のソフトウェア部品は、前記データを前記カウンタ更新手段に伝達することを特徴とする。
【０００８】
このような画像形成装置では、カウンタの更新を適切に実行することができる。
【０００９】
本発明によれば、カウンタの更新を適切に実行することのできる画像形成装置及びカウンタ更新方法を提供することができる。
【発明を実施するための最良の形態】
【００１０】
以下、図面に基づいて本発明の実施の形態を説明する。図２は、本発明の実施の形態における画像形成装置のハードウェア構成の一例を示す図である。図２では、画像形成装置の具体例として、プリンタ、コピー、スキャナ、又は、ファクス等の複数の機能を一台の筐体において実現する複合機１のハードウェア構成が示されている。
【００１１】
複合機１のハードウェアとしては、コントローラ６０１と、オペレーションパネル６０２と、ファクシミリコントロールユニット（ＦＣＵ）６０３と、撮像部６０４と、印刷部６０５が存在する。
【００１２】
コントローラ６０１は、ＣＰＵ６１１、ＡＳＩＣ６１２、ＮＢ６２１、ＳＢ６２２、ＭＥＭ−Ｐ６３１、ＭＥＭ−Ｃ６３２、ＨＤＤ（ハードディスクドライブ）６３３、メモリカードスロット６３４、ＮＩＣ（ネットワークインタフェースコントローラ）６４１、ＵＳＢデバイス６４２、ＩＥＥＥ１３９４デバイス６４３、セントロニクスデバイス６４４により構成される。
【００１３】
ＣＰＵ６１１は、種々の情報処理用のＩＣである。ＡＳＩＣ６１２は、種々の画像処理用のＩＣである。ＮＢ６２１は、コントローラ６０１のノースブリッジである。ＳＢ６２２は、コントローラ６０１のサウスブリッジである。ＭＥＭ−Ｐ６３１は、複合機１のシステムメモリである。ＭＥＭ−Ｃ６３２は、複合機１のローカルメモリである。ＨＤＤ６３３は、複合機１のストレージである。メモリカードスロット６３４は、メモリカード６３５をセットするためのスロットである。ＮＩＣ６４１は、ＭＡＣアドレスによるネットワーク通信用のコントローラである。ＵＳＢデバイス６４２は、ＵＳＢ規格の接続端子を提供するためのデバイスである。ＩＥＥＥ１３９４デバイス６４３は、ＩＥＥＥ１３９４規格の接続端子を提供するためのデバイスである。セントロニクスデバイス６４４は、セントロニクス仕様の接続端子を提供するためのデバイスである。オペレーションパネル６０２は、オペレータが複合機１に入力を行うためのハードウェア（操作部）であると共に、オペレータが複合機１から出力を得るためのハードウェア（表示部）である。撮像部６０４は、原稿から画像（画像データ）を読み取るためのハードウェア（スキャナ）である。印刷部６０５は、画像（画像データ）を印刷用紙に印刷するためのハードウェア（プリンタ）である。
【００１４】
図３は、本発明の実施の形態の画像形成装置におけるソフトウェア構成例を示す図である。図３に示されるように、複合機１におけるソフトウェアは、デバイス制御層１０、フィルタ層２０、アクティビティ層３０、ＵＩ制御部４０、及び履歴記録部５０等より構成される。なお、図３における各部の上下関係は、各部間の呼び出し関係に基づいている。すなわち、基本的に図中において上にある層が下の層を呼び出す。
【００１５】
デバイス制御層１０は、デバイス（ハードウェア）を直接的に制御するソフトウェア部品（ドライバ）群が実装されている部分であり、例えば、読取制御部１１、印刷制御部１２、保管制御部１３、ＦＡＸ制御部１４、及び画像加工部１５等が含まれる。
【００１６】
読取制御部１１は、原稿からの画像データの読み取りを撮像部６０４に実行させるための制御を行う。印刷制御部１２は、印刷用紙への画像データの印刷を印刷部６０５に実行させるための制御を行う。保管制御部１３は、撮像部６０４によって読み取られた画像データ、又はネットワークを介して受信された画像データ等のＨＤＤ６３３への保存（記録）や読み出し等に関する処理の制御を行う。ＦＡＸ制御部１４は、ＦＡＸの送受信をＦＣＵ６０３に実行させるための制御を行う。画像加工部１５は、画像データの加工処理に関する処理制御を行う。
【００１７】
フィルタ層２０は、ユーザによって要求されるジョブを実現するための一部の機能をデバイス制御層１０におけるソフトウェア部品を用いて実行するソフトウェア部品群が実装されている部分である。本実施の形態ではフィルタ層２０におけるソフトウェア部品を「フィルタ」と呼ぶ。これは、複合機１のジョブを実行する手アプリケーションが、「パイプ＆フィルタ」と呼ばれるソフトウェアアーキテクチャを基づいていることによる。
【００１８】
図４は、パイプ＆フィルタアーキテクチャの概念的に説明するための図である。図４において、「Ｆ」はフィルタを示し、「Ｐ」はパイプを示す。図中に示されるように、各フィルタはパイプによって接続される。フィルタは、入力されたデータに対して変換を施し、その結果を出力する。パイプは、フィルタから出力されたデータを次のフィルタに伝達する。なお、パイプは、記憶領域によって実現される。
【００１９】
すなわち、本実施の形態における複合機１では、ジョブをドキュメント（画像データ）に対する「変換」の連続として捉える。複合機１のジョブは、ドキュメントの入力、加工、及び、出力によって構成されるものとして一般化することができる。そこで「入力」、「加工」、及び、「出力」を、それぞれ「変換」として捉え、一つの「変換」を実現するソフトウェア部品がフィルタとして構成される。入力を実現するフィルタを特に「入力フィルタ」という。また、加工を実現するフィルタを特に「加工フィルタ」という。更に、出力を実現するフィルタを特に「出力フィルタ」という。なお、各フィルタは独立しており、フィルタ間における依存関係（呼び出し関係）は基本的に存在しない。従って、フィルタ単位で追加（インストール）又は削除（アンインストール）が可能とされている。
【００２０】
図３において、読取フィルタ２１、蓄積文書入力フィルタ２２、受信フィルタ２３、及びＰＣ文書入力フィルタ２４は、入力フィルタである。
【００２１】
読取フィルタ２１は、読取制御部１１を介して撮像部６０４による画像データの読み取りを実行し、読み取られた画像データを出力する。蓄積文書入力フィルタ２２は、保管制御部１３を介して複合機１の記憶装置に蓄積されている文書データ（画像データ）を読み出し、読み出されたデータを出力する。受信フィルタ２３は、ＦＡＸ制御部１４を介してＦＡＸ受信を実行し、受信されたデータを出力する。ＰＣ文書入力フィルタ２４は、非図示のクライアントＰＣから印刷データを受信し、受信された印刷データを出力する。
【００２２】
また、編集フィルタ２５は加工フィルタである。編集フィルタ２５は、画像加工部１５を用いて入力されたデータに所定の画像変換処理（集約、拡大、又は縮小等）を施し、出力する。
【００２３】
また、印刷フィルタ２６、文書蓄積フィルタ２７、及び送信フィルタ２８は、出力フィルタである。
【００２４】
印刷フィルタ２６は、入力されたデータを印刷制御部１２を介して印刷部６０５に出力（印刷）させる。文書蓄積フィルタ２７は、入力されたデータを保管制御部１３を介して複合機１内のＨＤＤ６３３内に保存する。送信フィルタ２８は、入力されたデータをＦＡＸ制御部１４を介してＦＡＸ送信する。
【００２５】
アクティビティ層３０は、フィルタを組み合わせて（接続して）ユーザによるジョブを実現するためのアプリケーションとしてのソフトウェア部品群が実装されている部分である。本実施の形態ではアクティビティ層３０におけるソフトウェア部品（アプリケーション）を「アクティビティ」と呼ぶ。図３では、コピーアクティビティ３１、ＦＡＸアクティビティ３２、スキャナアクティビティ３３、及びプリンタアクティビティ３４が示されている。
【００２６】
コピーアクティビティ３１は、読取フィルタ２１と、編集フィルタ２５と、印刷フィルタ２６との組み合わせにより、コピー機能（コピーアプリケーション）を実現するアクティビティある。
【００２７】
ＦＡＸアクティビティ３２は、受信フィルタ２３と文書蓄積フィルタ２７との組み合わせにより、ＦＡＸ受信した画像データを保存する機能を実現するアクティビティである。
【００２８】
スキャナアクティビティ３３は、読取フィルタ２１と、編集フィルタ２５と、文書蓄積フィルタ２７との組み合わせにより、スキャンした画像データを保存する機能を実現するアクティビティである。
【００２９】
プリンタアクティビティ３４は、ＰＣ文書入力フィルタ２４と、編集フィルタ２５と、印刷フィルタ２６との組み合わせにより、印刷機能（プリンタアプリケーション）を実現するアクティビティである。
【００３０】
なお、各アクティビティ３１は独立しており、アクティビティ間における依存関係（呼び出し関係）は基本的に存在しない。したがって、アクティビティ単位で追加（インストール）又は削除（アンインストール）が可能である。よって、図３に示されているアクティビティ以外にも、必要に応じて各種のフィルタの組み合わせによるアクティビティを作成し、インストールすることができる。
【００３１】
フィルタ及びアクティビティについて更に詳しく説明する。図５は、フィルタの構成要素を説明するための図である。図５に示されるように、各フィルタは、フィルタ設定用ＵＩ、フィルタロジック、フィルタ固有下位サービス、及び永続記憶領域情報等より構成される。このうち、フィルタ設定用ＵＩ、フィルタ固有下位サービス、及び永続記憶領域情報については、フィルタによって必ずしも構成要素に含まれない。
【００３２】
フィルタ設定用ＵＩは、フィルタの動作条件等を設定させるための画面をオペレーションパネル６０２等に表示させるプログラムである。すなわち、フィルタごとに動作条件が設定される。例えば、読取フィルタ２１であれば、フィルタ設定用ＵＩは、解像度、濃度、画像種別等を設定させる画面が相当する。なお、オペレーションパネル６０２が、ＨＴＭＬデータや、スクリプトに基づいて表示制御を行うことが可能であれば、フィルタ設定用ＵＩは、ＨＴＭＬデータやスクリプトであってもよい。
【００３３】
フィルタロジックは、フィルタの機能を実現するためロジックが実装されたプログラムである。すなわち、フィルタの構成要素としてのフィルタ固有下位サービスや、デバイス制御層１０等を利用して、フィルタ設定用ＵＩを介して設定された動作条件に応じてフィルタの機能を実現する。例えば、読取フィルタ２１であれば、スキャナによる原稿の読み取り制御のためのロジックが相当する。
【００３４】
フィルタ固有下位サービスは、フィルタロジックを実現するために必要な下位機能（ライブラリ）である。
【００３５】
永続記憶領域情報は、フィルタに対する設定情報（例えば、動作条件のデフォルト値）等、不揮発メモリに保存する必要があるデータのスキーマ定義が相当する。当該スキーマ定義は、フィルタのインストール時に登録される。
【００３６】
図６は、アクティビティの構成要素を説明するための図である。図６に示されるように、アクティビティは、アクティビティＵＩ、アクティビティロジック、及び永続記憶領域情報等より構成される。
【００３７】
アクティビティＵＩは、アクティビティに関する画面（例えば、アクティビティの動作条件等を設定させるための設定画面）をオペレーションパネル６０２等に表示させるための情報又はプログラムである。
【００３８】
アクティビティロジックは、アクティビティの処理内容が実装されたプログラムである。基本的に、アクティビティロジックには、フィルタの組み合わせに関するロジック（例えば、フィルタの実行順、複数のフィルタに跨る設定、フィルタの接続変更、エラー処理等）が実装されている。
【００３９】
永続記憶領域情報は、アクティビティに対する設定情報（例えば、動作条件のデフォルト値）等、不揮発メモリに保存する必要があるデータのスキーマ定義が相当する。当該スキーマ定義は、アクティビティのインストール時に登録される。
【００４０】
図３に戻る。ＵＩ制御部４０は、オペレーションパネル６０２への操作画面の表示や、当該操作画面を介して入力される指示に応じた処理の起動等を行う。
【００４１】
履歴記録部５０は、複合機１における各種の事象の発生回数等を記録するためのカウンタの更新処理（カウントアップ等）を行う。カウンタをその用途によって分類した場合、例えば、課金に利用される課金カウンタ、複合機１の利用状況を把握するために利用される管理者カウンタ、ユーザ別の利用状況や課金振替に利用されるユーザ別カウンタ、利用制限（例えば、印刷枚数の制限等）に利用される利用量制限カウンタ、ジョブの実行状況の把握等に利用されるジョブログカウンタ等に分類され、各分類には複数のカウンタが属しうる。例えば、課金カウンタは、モノクロ印刷のカウンタやコピー印刷のカウンタ等、複数のカウンタによって構成される。また、複数の用途に利用される（すなわち、複数の分類に属する）カウンタも存在しうる。なお、本実施の形態において「課金」とは、複合機１の利用状況に応じて複合機１の販売者がユーザに対して使用料を請求することをいう。したがって、特に課金カウンタの操作については、フィルタ等のカスタマイズによって変更可能であるという状態は好ましくない。例えば、印刷ジョブが実行されたのにもかかわらず、課金カウンタがカウントアップされないような仕組みが実装されてしまうと、販売者側は、正確に課金を行うことができなくなってしまうからである。なお、カウンタは、ＨＤＤ６３３等の記憶装置に記録されている。
【００４２】
なお、図３のソフトウェア構成において、デバイス制御層１０は、カスタマイズするための手段は公開されていない。すなわち、ユーザやソフトウェアベンダ等、複合機１のベンダ以外によって、新たなソフトウェア部品をデバイス制御層１０に追加したり、デバイス制御層１０における既存のソフトウェア部品を改変したりすることは基本的にできない。一方、フィルタ層２０及びアクティビティ層３０は、ユーザやソフトウェアベンダ等によって、新たなフィルタ又はアクティビティの追加等によるカスタマイズが可能とされている。
【００４３】
本実施の形態では、コピーアクティビティ３１の動作時（すなわち、コピージョブの実行時）におけるカウンタの更新処理について説明する。したがって、デバイス層１０、フィルタ層２０、及びアクティビティ層３０に関しては、図７に示されるソフトウェア部品の動作に注目する。
【００４４】
図７は、デバイス層、フィルタ層、及びアクティビティ層において本実施の形態で注目対象となるソフトウェア部品を示す図である。コピーアクティビティ３１は、読取フィルタ２１、編集フィルタ２５、及び印刷フィルタ２６を利用する。したがって、フィルタ層２０では、図示される３つのフィルタが注目対象となる。また、読取フィルタ２１は、読取制御部１１を利用し、編集フィルタ２５は画像加工部１５を利用し、印刷フィルタ２６は印刷制御部１２を利用する。したがって、デバイス制御層１０では、図示される３つのソフトウェア部品が注目対象となる。
【００４５】
以下、複合機１の処理手順について説明する。図８は、第一の実施の形態におけるカウンタの更新処理を説明するための図である。
【００４６】
オペレーションパネル６０２における操作によって、コピーアクティビティ３１が実行対象として選択されると、ＵＩ制御部４０は、コピーアクティビティ３１のアクティビティＵＩに基づいてコピーアクティビティ３１の動作条件の設定画面（コピー画面）を表示させる。コピー画面内には、コピーアクティビティ３１が利用する各フィルタ（読取フィルタ２１、編集フィルタ２５、及び印刷フィルタ２６）の動作条件の設定領域が、各フィルタのフィルタ設定用ＵＩに基づいてＵＩ制御部４０によって表示される。したがって、ユーザは、コピー画面において各フィルタの動作条件を設定する。設定された動作条件は、ＵＩ制御部４０より各フィルタに通知され、各フィルタのフィルタロジック内において保持される。
【００４７】
動作条件の設定が完了し、コピーの実行が指示されると（例えば、スタートボタンが押下されると）、コピーアクティビティ３１は、読取フィルタ２１、編集フィルタ２５、及び印刷フィルタ２６に対してジョブの実行を指示する。当該指示に応じて、入力フィルタ（ここでは、読取フィルタ２１）以外のフィルタ（ここでは、編集フィルタ２５及び印刷フィルタ２６）は直ちに処理を開始せず、自らの入力側に接続されているパイプに対してデータが入力されるまで待機する。すなわち、複合機１が採用するパイプ＆フィルタのアーキテクチャにおいては、フィルタ間の処理のタイミングの同期はパイプによってとられる。
【００４８】
読取フィルタ２１は、コピーアクティビティ３１によるジョブの実行指示に応じ、原稿のページごとに読み取りを行うことを履歴記録部５０に通知する（Ｓ１１）。履歴記録部５０は、当該通知に応じ、ページの読み取りに応じて更新すべきカウンタをカウントアップする。但し、課金カウンタに属するカウンタについては、このタイミングではカウントアップは行われない。
【００４９】
続いて、読取フィルタ２１は、設定された動作条件を伴って、原稿の読み取りを読取制御部１１に要求する（Ｓ１２）。この際、読取フィルタ２１は、原稿より読み取られた画像データを格納すべきメモリのアドレス（読取フィルタ２１と編集フィルタ２５との間のパイプに係るメモリのアドレス）をも読取制御部１１に通知する。読取制御部１１は、撮像部６０４を制御し、動作条件に従った原稿の読み取りを実行し、読み取られた画像データを読取フィルタ２１によって指定されたアドレスに格納する。また、読取制御部１１は、原稿のページが読み取られるたびにページの読み取りが実行されたことを履歴記録部５０に通知する（Ｓ１３）。履歴記録部５０は、当該通知に応じ、ページの読み取りの完了に応じて更新すべきカウンタをカウントアップする。なお、履歴記録部５０は、このタイミングにおいて課金カウンタに属するカウンタをカウントアップする。すなわち、履歴記録部５０は、カスタマイズ手段（方法）が公開されているフィルタからの通知（図中において、各フィルタから履歴記録部５０への破線の矢印）に基づいて課金カウンタの値は更新せず、カスタマイズ手段が公開されていないデバイス制御層１０からの通知（図中において、実線の矢印）に基づいて課金カウンタの値を更新する。これにより、カスタマイズによる課金カウンタの不正な操作が防止される。
【００５０】
続いて、編集フィルタ２５は、読取フィルタ２１との間におけるパイプに係るメモリ領域に画像データが格納されたことを検知すると、画像データの加工（編集）を行うことを履歴記録部５０に通知する（Ｓ１４）。履歴記録部５０は、当該通知に応じ、画像データの変換に応じて更新すべきカウンタをカウントアップする。なお、上記したように、課金カウンタに属するカウンタについては、このタイミングではカウントアップは行われない。
【００５１】
続いて、編集フィルタ２５は、設定された動作条件を伴って、画像データの加工を画像加工部１５に要求する（Ｓ１５）。この際、編集フィルタ２５は、加工された画像データを格納すべきメモリのアドレス（編集フィルタ２５と印刷フィルタ２６との間のパイプに係るメモリのアドレス）を画像加工部１５に通知する。画像加工部１５は、動作条件に従った画像データの加工を実行し、加工された画像データを編集フィルタ２５によって指定されたアドレスに格納する。なお、図８の例では、画像加工部１５は、履歴記録部５０に対して画像の加工が完了した旨の通知は行わない。本実施の形態では、画像の加工に応じてカウントアップされる課金カウンタが無い場合を例としているためである。但し、画像の加工に応じてカウントアップされる課金カウンタが有る場合は、画像加工部１５は、加工の完了を履歴記録部５０に通知すればよい。
【００５２】
続いて、印刷フィルタ２６は、編集フィルタ２５との間におけるパイプに係るメモリ領域に画像データが格納されたことを検知すると、画像データのページごとに印刷を行うことを履歴記録部５０に通知する（Ｓ１６）。履歴記録部５０は、当該通知に応じ、ページの印刷に応じて更新すべきカウンタをカウントアップする。なお、上記したように、課金カウンタに属するカウンタについては、このタイミングではカウントアップは行われない。
【００５３】
続いて、印刷フィルタ２６は、設定された動作条件を伴って、画像データの印刷を印刷制御部１２に要求する（Ｓ１７）。印刷制御部１２は、印刷部６０５を制御し、動作条件に従った印刷を実行する。また、印刷制御部１２は、ページが印刷されるたびにページの読取が実行されたことを履歴記録部５０に通知する（Ｓ１８）。履歴記録部５０は、当該通知に応じ、ページの印刷の完了に応じて更新すべきカウンタをカウントアップする。なお、履歴記録部５０は、このタイミングにおいて課金カウンタに属するカウンタをカウントアップする。
【００５４】
上述したように、第一の実施の形態における複合機１によれば、事象の発生に応じたカウンタの操作は履歴記録部５０に一元化されている。したがって、各ソフトウェア部品（フィルタやデバイス制御層１０におけるソフトウェア部品）は、発生した事象示す情報（事象発生情報）を履歴記録部５０に通知すればよく、当該事象に応じてどのようなカウンタの値を更新すべきかを意識する必要はない。したがって、カウンタの構成等を変更する場合であっても、当該変更による影響は履歴記録部５０に限られ、他のソフトウェア部品の改造（ソースコードの修正）等が必要とされる可能性を著しく低減させることができる。
【００５５】
また、課金カウンタの更新については、カスタマイズ手段が公開されていないデバイス制御層１０からの通知にのみ基づいて行われるため、カスタマイズによる課金カウンタの不正な操作等を防止することができる。
【００５６】
ところで、第一の実施の形態の場合、各フィルタ等から個別に履歴記録部５０への通知がなされるため、履歴記録部５０において、各フィルタ等から通知される事象発生情報についてジョブ及びページ単位での関連付けを行う必要がある。そのため、各フィルタ等は、履歴記録部５０に対して、当該関連付けを可能とする識別子（ジョブＩＤやページ番号）等を事象発生情報と共に通知する必要がある。但し、集約、分割（１ページを複数ページに跨って印刷すること）、文書統合（複数の文書を一つの文書に統合して印刷すること）、又は表紙若しくは合紙挿入等が行われる場合、入力されるページ（例えば、読取フィルタ２１において読み取られるページ）と、出力されるページ（例えば、印刷フィルタ２６において印刷されるページ）とは、必ずしも一対一には対応しない。したがって、各フィルタ等より通知される事象発生情報の関連付けは複雑な処理が要求されるという問題がある。
【００５７】
また、各フィルタ等が並列して動作可能である場合、各フィルタ等からの事象の通知の順序はロジック的には必ずしも保障されない（入力→加工→出力の順序通りに通知されるとは限らない）という問題もある。
【００５８】
また、課金カウンタのセキュリティの確保のため、課金カウンタについてはデバイス制御層１０からの通知に基づいてカウントアップされ、他のカウンタについてはフィルタからの通知に基づいてカウントアップされるといったように、課金カウンタのみ事象の発生の通知元及び通知のタイミングが異なるため、電源断等の障害の発生等により課金カウンタと課金カウンタ以外との間で値のずれが生じる可能性があるという問題もある。
【００５９】
そこで、上記の問題点を解決した例として第二の実施の形態を説明する。なお、第二の実施の形態において特に言及しない点については、第一の実施の形態と同様でよい。まず、図９を用いて、図８（第一の実施の形態）と大きく異なる点について説明する。図９は、第二の実施の形態におけるカウンタの更新処理を説明するための図である。
【００６０】
第二の実施の形態では、入力フィルタ（読取フィルタ２１）は、ジョブの開始に先立って、ページの入力結果（本実施の形態では読み取り結果）を格納するための仮想的な箱（以下、「ページ入力結果データ」という。）と、ページの出力結果（本実施の形態ではページの印刷結果）を格納するための仮想的な箱（以下、「ページ出力結果データ」という。）とを用意する。
【００６１】
図１０は、ページ入力結果データの構成例を示す図である。図１０において、ページ入力結果データは、１ページ分の画像データの入力について、一つの入力種別と、一つ以上のｋｅｙ及びｖａｌｕｅの組によって構成される入力処理の属性情報とを含むデータ（例えば、構造体）である。
【００６２】
入力種別は、入力の種別を示す情報であり、例えば、撮像部６０４を用いた入力（読み取り）であれば「ＳＣＡＮ」といった値が登録される。また、ｋｅｙは属性名であり、ｖａｌｕｅは値である。ｋｅｙには入力パラメータ（読み取りパラメータ）の名前が登録され、ｖａｌｕｅにはｋｅｙによって特定されるパラメータについて動作条件に基づいて特定される値が登録される。
【００６３】
また、図１１は、ページ出力結果データの構成例を示す図である。図１１において、ページ出力結果データは、１ページ分の画像データの出力について、一つ以上の入力種別と、編集ページ結果と、一つの出力種別と、出力ページ結果とを含むデータ（例えば、構造体）である。
【００６４】
入力種別は、ページ入力結果データにおける入力種別と同義である。ページ出力結果データに入力種別を含めるのは、同じ出力（例えば、印刷）が行われる場合であっても入力種別によって（例えば、印刷対象のデータがスキャンされた場合とＰＣ等より受信された場合とによって）課金額等が異なる場合を考慮してのことである。また、一つのページ出力結果データが複数の入力種別を含み得るのは、集約等、複数ページの入力に基づいて一ページの出力が行われる場合があることを考慮してのことである。
【００６５】
編集ページ結果は、編集処理の属性情報であり、一つ以上のｋｅｙ（属性名）とｖａｌｕｅ（値）との組とより構成される。出力種別は、出力の種別を示す情報であり、例えば、印刷部６０５を用いた出力（印刷）であれば「ＰＲＩＮＴ」といった値が登録される。出力ページ結果は、出力処理の属性情報であり、一つ以上のｋｅｙ（属性名）とｖａｌｕｅ（値）との組とより構成される。
【００６６】
図９において、破線で示される矢印はページ入力結果データの流れを示し、点線で示される矢印はページ出力結果データの流れを示す。同図より明らかなように、それぞれの流れの中で末端のソフトウェア部品（読取制御部１１、印刷制御部１２）が、ページ入力結果データ又はページ出力結果データを履歴記録部５０に伝達する。
【００６７】
すなわち、読取フィルタ２１は、中身が空のページ入力結果データ及びページ出力結果データを用意すると、処理情報（処理の属性を示す情報）として動作条件に基づく属性情報（ｋｅｙ及ｖａｌｕｅの組）をページ入力結果データに登録し、読取制御部１１に対してページの読み取りを要求する際に、当該ページ入力結果データを読み取り制御部１１に引き渡す（Ｓ２１）。読取制御部１１は、ページの読取制御を行った後、処理情報として動作条件に基づく属性情報をページ入力結果データに追加し、当該ページ入力結果データを履歴記録部５０に出力することにより、ページの読み取りの実行を通知する（Ｓ２２）。履歴記録部５０は、入力されたページ入力結果データの内容に基づいてカウントアップすべきカウンタを判定し、当該カウンタをカウントアップする。
【００６８】
一方、読取フィルタ２１は、ページ出力結果データについては、処理情報として入力種別を登録し、パイプを介して編集フィルタ２５に引き渡す（Ｓ２３）。編集フィルタ２５は、動作条件に基づく画像データの加工処理を画像加工部１５を用いて実行し（Ｓ２４）、処理情報として当該動作条件に基づく編集ページ結果をページ出力結果データに登録し、当該ページ出力結果データをパイプを介して印刷フィルタ２６に引き渡す（Ｓ２５）。印刷フィルタ２６は、処理情報として動作条件に基づく印刷結果をページ出力結果データに登録し、印刷制御部１２に対してページの印刷を要求する際に、当該ページ出力結果データを印刷制御部１２に引き渡す（Ｓ２６）。印刷制御部１２は、ページの印刷を行った後、処理情報として動作条件に基づく出力ページ結果をページ出力結果データに追加し、当該ページ出力結果データを履歴記録部５０に出力することにより、ページの印刷を通知する（Ｓ２７）。履歴記録部５０は、入力されたページ入力結果データに基づいてカウントアップすべきカウンタを判定し、当該カウンタをカウントアップする。
【００６９】
以上の処理において、課金に影響を与える処理情報は、デバイス制御層１０に属するソフトウェア部品（読取制御部１１、印刷制御部１２）によって、ページ入力結果データ又はページ出力結果データに登録される。すなわち、履歴記録部５０は、デバイス制御層１０においてページ入力結果データ又はページ出力結果データに登録された情報に基づいて、課金カウンタの値を更新する。したがって、第二の実施の形態においても、課金カウンタに関するセキュリティは適切に確保される。
【００７０】
図９に示した処理内容について更に詳しく説明する。図１２は、第二の実施の形態におけるカウンタの更新処理を説明するためのシーケンス図である。
【００７１】
コピー画面を介した動作条件の設定が完了し、オペレーションパネル６０２を介してコピーの実行指示がユーザによって入力されると、ＵＩ制御部４０は、コピージョブの実行をコピーアクティビティ３１に要求する（Ｓ１０１）。コピージョブの実行要求に応じ、コピーアクティビティ３１は、読取フィルタ２１、編集フィルタ２５、及び印刷フィルタ２６に対してジョブの実行を指示する（Ｓ１０２、Ｓ１０３、Ｓ１０４）。ここで、編集フィルタ２５及び印刷フィルタ２６については、自らの入力側のパイプに対してデータが入力されるまで処理を待機するのは、第一の実施の形態において説明した通りである。
【００７２】
読取フィルタ２１は、コピーアクティビティ３１によるジョブの実行指示に応じ、空のページ入力結果データと空のページ出力結果データとの提供を履歴記録部５０に要求する（Ｓ１０５）。履歴記録部５０は、当該要求に応じ、空のページ入力結果データと空のページ出力結果データとを生成し、生成された二つのデータを読取フィルタ２１に返却する。
【００７３】
続いて、読取フィルタ２１は、ページ入力結果データ及びページ出力結果データに対して、動作条件に基づく属性情報又は入力種別を登録する（Ｓ１０６）。
【００７４】
図１３は、処理の進行に応じたページ入力結果データの内容の変遷例を示す図である。図１３に示される表において、「シーケンス番号」の列は、参考までに図１２におけるステップ番号を示したものであり、ページ入力結果データを構成する情報ではない。すなわち、シーケンス番号」がＳ１０６の行が、ステップＳ１０６が行われた後のページ入力結果データの状態を示す。なお、ページ入力結果データの構成例については、図１０において説明した通りである。
【００７５】
図１３の例では、ステップＳ１０６において、二つの属性情報（キー（ｋｅｙ）と値（ｖａｌｕｅ）との組）が読取フィルタ２１によって登録された例が示されている。１つ目の属性情報において、キーは「ｄｆＦｅｅｄ」であり、値は「ＦＥＥＤ＿ＦＲＯＮＴ」である。また、２つ目の属性情報においてキーは「ｒｅｓｏｌｕｓｉｏｎ」であり、値は「６００ＤＰＩ」である。これは、ＤＦ（Document Feeder）を利用して原稿の表面を読み取るモードにおいて、読取解像度は６００ｄｐｉであることを示している。
【００７６】
また、図１４は、処理の進行に応じたページ出力結果データの内容の変遷例を示す図である。図１４に示される表において、「シーケンス番号」の列は、参考までに図１２におけるステップ番号を示したものであり、ページ出力結果を構成する情報ではない。すなわち、シーケンス番号」がＳ１０６の行が、ステップＳ１０６が行われた後のページ出力結果データの状態を示す。なお、ページ出力結果データの構成例については、図１１において説明した通りである。
【００７７】
図１４の例では、ステップＳ１０６において、入力種別（「ＳＣＡＮ」）が登録された例が示されている。
【００７８】
続いて、読取フィルタ２１は、ページ入力結果データを伴って、原稿の読み取りの実行を読取制御部１１に要求する（Ｓ１０７）。この際、読取フィルタ２１は、読取フィルタ２１に設定された動作条件、及び原稿より読み取られた画像データを格納すべきメモリのアドレス（読取フィルタ２１と編集フィルタ２５との間のパイプに係るメモリのアドレス）をも読取制御部１１に通知する。
【００７９】
続いて、読取制御部１１は、撮像部６０４を制御し、動作条件に従った１ページ分の原稿の読み取りを実行し、読み取られた画像データを読取フィルタ２１によって指定されたアドレスに格納する。また、読取制御部１１は、入力種別と、動作条件に基づく属性情報とをページ入力結果データに追加登録する（Ｓ１０８）。その結果、ページ入力結果データは、図１３において「シーケンス番号」が「Ｓ１０８」の行に示される状態となる。ここで、Ｓ１０８に係る行とＳ１０６に係る行との差分が、ステップＳ１０８において登録された情報である。すなわち、ステップＳ１０８では、入力種別（「ＳＣＡＮ」）が登録され、３つ目の属性情報と４つ目の属性情報とが登録される。３つ目の属性情報において、キーは「ｃｏｌｏｒＭｏｄｅ」であり、値は「ＦＵＬＬ＿ＣＯＬＯＲ」である。また、４つ目の属性情報において、キーは「ｓｉｚｅ」であり、値は「Ａ４」である。これは、フルカラーモードによってＡ４サイズのページの読み取りが実行されたことを示す。
【００８０】
続いて、読取制御部１１は、ページ入力結果データを履歴記録部５０に出力することにより、ページの読み取りの実行を通知する（Ｓ１０９）。履歴記録部５０は、入力されたページ入力結果データの内容に基づいてカウントアップすべきカウンタを判定し、当該カウンタをカウントアップする（Ｓ１１０）。続いて、読取フィルタ２１は、ステップＳ１０５し、ステップＳ１０６において入力種別を登録したページ出力結果データをパイプを介して編集フィルタ２５に引き渡す（Ｓ１１１）。
【００８１】
編集フィルタ２５は、読取フィルタ２１との間におけるパイプに係るメモリ領域に画像データが格納されたことを検知すると、編集フィルタ２５に設定された動作条件に基づく当該画像データの加工処理を画像加工部１５に実行させる。その結果、加工後の画像データが、編集フィルタ２５と印刷フィルタ２６との間のパイプに係るメモリのアドレスに格納される。画像データの加工が終了すると、編集フィルタ２５は、動作条件に基づく編集ページ結果をページ出力結果データに登録する（Ｓ１１２）。
【００８２】
その結果、ページ出力結果データは、図１４において「シーケンス番号」が「Ｓ１１２」の行に示される状態となる。ここで、Ｓ１１２に係る行とＳ１０６に係る行との差分が、ステップＳ１１２において登録された情報である。すなわち、ステップＳ１１２では、１つ目の編集ページ結果と２つ目の編集ページ結果とが登録される。１つ目の編集ページ結果において、キーは「ｃｏｍｂｉｎｅ」であり、値は「１」である。また、２つ目の編集ページ結果において、キーは「ｍａｇｎｉｆｉｃａｔｉｏｎ」であり、値は「２００」である。これは、集約枚数は１であり（すなわち、集約は行わず）、２００％の変倍が行われたことを示す。続いて、編集フィルタ２５は、ページ出力結果データをパイプを介して印刷フィルタ２６に引き渡す（Ｓ１１３）。
【００８３】
印刷フィルタ２６は、編集フィルタ２５との間におけるパイプに係るメモリ領域に画像データが格納されたことを検知すると、印刷フィルタ２６に設定された動作条件に基づく出力ページ結果をページ出力結果データに登録する（Ｓ１１４）。その結果、ページ出力結果データは、図１４において「シーケンス番号」が「Ｓ１１４」の行に示される状態となる。ここで、Ｓ１１４に係る行とＳ１１２に係る行との差分が、ステップＳ１１４において登録された情報である。すなわち、ステップＳ１１４では、１つ目の出力ページ結果と２つ目の出力ページ結果とが登録される。１つ目の出力ページ結果において、キーは「ｐｒｉｎｔＳｉｄｅ」であり、値は「ＯＮＥ＿ＳＩＤＥ」である。また、２つ目の出力ページ結果において、キーは「ｔｒａｙＮｕｍｂｅｒ」であり、値は「１」である。これは、印刷面は片面であり、排紙トレイはトレイ１が用いられることを示す。続いて、印刷フィルタ２６は、ページ出力結果データと設定された動作条件とを伴って、画像データの印刷を印刷制御部１２に要求する（Ｓ１１５）。
【００８４】
印刷制御部１２は、印刷部６０５を制御し、動作条件に従ったページの印刷を実行する。また、印刷制御部１２は、ページの印刷を行った後、動作条件に基づく出力ページ結果をページ出力結果データに登録する（Ｓ１１６）。その結果、ページ出力結果データは、図１４において「シーケンス番号」が「Ｓ１１６」の行に示される状態となる。ここで、Ｓ１１６に係る行とＳ１１４に係る行との差分が、ステップＳ１１６において登録された情報である。すなわち、ステップＳ１１６では、３つ目の出力ページ結果と４つ目の出力ページ結果とが登録される。３つ目の出力ページ結果において、キーは「ｃｏｌｏｒ」であり、値は「ＦＵＬＬ＿ＣＯＬＯＲ」である。また、４つ目の出力ページ結果において、キーは「ｓｉｚｅ」であり、値は「Ａ３」である。これは、フルカラーによるＡ３サイズの印刷であることを示す。ここで、カラーモード（モノクロ印刷であるかカラー印刷であるか）や用紙サイズは、課金に影響を与える可能性のある属性情報であるため、デバイス制御層１０に含まれる印刷制御部１２によって登録される。
【００８５】
なお、課金に影響を与える可能性のある情報について、フィルタ（ここでは、印刷フィルタ２６）においてキーと値とが既に登録されている場合であっても、デバイス制御層１０のソフトウェア部品（ここでは、印刷制御部１２）は、当該のキーと値とを上書きする。
【００８６】
図１５は、デバイス制御層によるページ出力結果データの上書きの様子を示す図である。図１５では、印刷フィルタ２１によって、カラーモード（ｃｏｌｏｒ）の値が白黒として登録された後、印刷制御部１２によって、カラーモードの値がフルカラー（ＦＵＬＬ＿ＣＯＬＯＲ）に上書きされている例が示されている。このように、フィルタがカスタマイズされ、課金に影響を与える情報が誤って登録された場合であっても、カスタマイズ手段が公開されていないデバイス制御層１０において、正しい値に上書きされるため、課金カウンタの不正な操作を防止することができる。
【００８７】
続いて、印刷制御部１２は、ページ出力結果データを履歴記録部５０に出力することにより、ページの印刷の実行を通知する（Ｓ１１７）。履歴記録部５０は、入力されたページ出力結果データの内容に基づいてカウントアップすべきカウンタを判定し、当該カウンタをカウントアップする（Ｓ１１８）。
【００８８】
上述したように、第二の実施の形態における複合機１によれば、ページ出力結果データが入力→加工→出力の順で、それぞれを実行するソフトウェア部品に伝達され、当該ページ出力結果データに各ソフトウェア部品によって情報が登録される。また、ページ出力結果データの履歴管理部５０への伝達は、各ソフトウェア部品より個別に行われるのではなく、処理の実行順において末端のソフトウェア部品によって行われる。したがって、入力ページ及び出力ページ等の関連付けはページ出力結果データにおいて自動的に保持される。よって、履歴管記録部５０において入力ページと出力ページとの関連付け等を判断する必要はない。
【００８９】
なお、上記の説明では、ページ出力結果データにおける入力種別は、フィルタ（読取フィルタ２１）によって登録される。したがって、入力種別に応じて課金額が異なる場合、フィルタのカスタマイズにより、入力種別に不正な値が登録される可能性がある。そこで、入力種別に応じて課金額が異なる場合、履歴記録部５０は、ページ出力結果データに対応するページ入力結果データに登録されている入力種別に基づいて正しい入力種別を判定するようにすればよい。ページ入力結果データにおける入力種別は、カスタマイズできないデバイス制御層１０（読取制御部１１）によって登録されるため、信頼できる値だからである。この場合、ページ出力結果データにおいて、入力種別は必ずしも登録される必要はない。なお、履歴記録部５０において、ページ入力結果データとページ出力結果データとの対応関係を判定可能とするために、共通の識別情報（ＩＤ等）を入力フィルタ（読取フィルタ２１）において双方のデータに付与するようにすればよい。当該識別情報の付与は、付与元（入力フィルタ）が同一であるため、特段複雑な処理は必要とされない。
【００９０】
ところで、集約が行われるジョブの場合、ページ出力結果データは次のように処理される。図１６は、集約が行われる場合のページ出力結果データの処理を説明するための図である。
【００９１】
図１６では、２ページ分を１ページに集約する例が示されている。この場合、読取フィルタ２１からは、１ページ目のページ出力結果データ６１と、２ページ目のページ出力結果データ６２とが編集フィルタ２５に引き渡される。
【００９２】
編集フィルタ２５は、動作条件として集約が設定されている場合、集約数分のページのページ出力結果データがパイプに蓄積されるまで待機する。集約数分のページのページ出力結果データが蓄積されると、編集フィルタ２５は、集約数分のページ出力結果データを一つのページ出力結果データにマージ（統合）し、マージされたページ出力結果データ６３に編集ページ結果を登録した上で印刷フィルタ２６に引き渡す。ここで行われるマージは、ページ出力結果データを構成する情報のうち、入力フィルタ（読取フィルタ２１）において登録される情報のマージである。本実施の形態において、入力フィルタによってページ出力結果データに登録される情報は、入力種別である。したがって、入力種別がマージされる。例えば、各ページが異なる入力先より入力される場合（例えば、スキャンされたページと、複合機１に蓄積されている文書のページとを集約する場合）、ページ出力結果データ６１に登録されている入力種別と、ページ出力結果データ６２に登録されている入力種別とは異なる。したがって、マージによって複数の入力種別が登録された一つのページ出力結果データ６３が生成される。一方、各ページが同じ入力先より入力される場合は、ページ出力結果データ６１に登録されている入力種別と、ページ出力結果データ６２に登録されている入力種別とは同じである。したがって、マージによって一つの入力種別が登録された一つのページ出力結果データ６３が生成される。以降、マージされた一つのページ出力結果データ６３は、上述した処理によって履歴管理部５０に伝達される。
【００９３】
このように、集約が行われる場合であっても、入力、加工、及び出力に関する情報がページ出力結果データにおいて適切に関連付けられる。
【００９４】
また、入力されたページを異なる出力先に出力するジョブの場合、ページ出力結果データは次のように処理される。図１７は、出力先が複数の場合のページ出力結果データの処理を説明するための図である。
【００９５】
図１７では、印刷フィルタ２６及び文書蓄積フィルタ２７の二つの出力フィルタが編集フィルタ２５に接続されている。この場合、読取フィルタ２１によって読み取られた画像データが編集フィルタ２５において加工され、印刷フィルタ２６及び文書蓄積フィルタ２７に出力される。印刷フィルタ２６は、入力された画像データの印刷を実行し、文書蓄積フィルタ２７は、入力された画像データの蓄積を実行する。このように、一つの入力ページが、複数の出力先に出力される。
【００９６】
この場合、読取フィルタ２１が１ページ目のページ出力結果データ６１を編集フィルタ２５に引き渡すと、編集フィルタ２５は、ページ出力結果データ６１に編集ページ結果を登録し、自らに複数のパイプ（印刷フィルタ２６との間のパイプと文書蓄積フィルタとの間のパイプ）が接続されていることに基づいて、接続されているパイプの数だけ、ページ出力結果データ６１の複製を生成する。続いて、編集フィルタ２５は、複製されたページ出力結果データ６１を各出力フィルタに引き渡す。以降、複製されたそれぞれのページ出力結果データ６１は、上述した処理によって履歴管理部５０に伝達される。
【００９７】
このように、出力先が複数である場合であっても、入力、加工、及び出力に関する情報がそれぞれの出力先に対応して複製されたページ出力結果データにおいて適切に関連付けられる。
【００９８】
また、同一のページが複数部印刷されたり、複数の宛先に送信されたりするジョブの場合、ページ出力結果データは次のように処理される。図１８は、複数部出力の場合のページ出力結果データの処理を説明するための図である。なお、同図では、便宜上、読取フィルタ２１は省略されている。
【００９９】
この場合、編集フィルタ２５より１ページ目のページ出力結果データ６１が引き渡されると、印刷フィルタ２６は、出力結果データ６１に出力ページ結果を登録した後、自らの動作条件として複数部印刷が設定されていることに基づいて、部数分だけ出力結果データ６１の複製を生成する。続いて、印刷フィルタ２６は、ページごとに印刷制御部１２に印刷要求を行うたびに、複製されたそれぞれのページ出力結果データ６１を印刷制御部１２に引き渡す。以降、複製されたそれぞれのページ出力結果データ６１は、上述した処理によって履歴管理部５０に伝達される。
【０１００】
このように、複数部の出力が行われる場合であっても、入力、加工、及び出力に関する情報が各部に対応して複製されたページ出力結果データにおいて適切に関連付けられる。
【０１０１】
次に、履歴記録部５０による、ページ入力結果データ及びページ出力結果データに基づく、更新すべきカウンタを判定について説明する。当該判定は、固定的にプログラムロジックとして組み込まれていても良いが、拡張性を考慮すると、「どのような場合にいずれのカウンタをカウントアップするか」といった定義情報を別途定義し、当該定義情報に基づいて履歴管理部５０が判定するようにするとよい。本実施の形態では、斯かる定義情報を「カウンタ仕様」という。カウンタ仕様には、ページ入力結果データに対応した「入力カウンタ仕様」と、ページ出力結果データに対応した「出力カウンタ仕様」とに大別され、カウンタごとに定義される。なお、カウンタ仕様は、ＨＤＤ６３３等の記憶装置に保存される。
【０１０２】
図１９は、入力カウンタ仕様の構成例を示す図である。図１９では、カラースキャンの数をカウントするカラースキャンカウンタに関する入力カウンタ仕様（カラースキャンカウンタ仕様）が示されている。図示されるように、入力カウンタ仕様は、カウンタＩＤ７１、入力種別７２、及びカウント条件式７３等より構成される。カウンタＩＤ７１は、更新（カウントアップ）対象となるカウンタのＩＤである。図中では、カウンタＩＤ７１として「ｓｃａｎ＿ｃｏｌｏｒ」が例示されている。入力種別７２及びカウント条件式７３は、「どのような場合にカウントアップするか」を規定する情報である。入力種別７２によって、カウンタＩＤに係るカウンタがカウントアップされる入力種別が規定される。また、カウント条件式７３によって、カウンタＩＤに係るカウンタがカウントアップされる属性情報の値が規定される。図中では、入力種別７２として「ＳＣＡＮ」が指定され、カウント条件式７３として「カラーモード（ｃｏｌｏｒＭｏｄｅ）キーの値がフルカラー（ＦＵＬＬ＿ＣＯＬＯＲ）と一致すること」が指定された例が示されている。なお、カウント条件式７３は、複数定義可能である。
【０１０３】
すなわち、履歴記録部５０は、ページ入力結果データを受け付けると、ページ入力結果データと、各入力カウンタ仕様とを比較照合し、カウントアップすべきカウンタを判定する。したがって、例えば、図１３においてシーケンス番号がＳ１０８の行に係るページ入力結果データを受け付けた場合、履歴記録部５０は、図１９に示されるカラースキャンカウンタ仕様に基づいて、カウンタＩＤが「ｓｃａｎ＿ｃｏｌｏｒ」のカウンタをカウントアップする。
【０１０４】
また、図２０は、出力カウンタ仕様の構成例を示す図である。図２０では、カラーコピーの数をカウントするコピー印刷フルカラーカウンタに関する出力カウンタ仕様（コピー印刷フルカラーカウンタ仕様）が示されている。図示されるように、出力カウンタ仕様は、カウンタＩＤ８１、出力種別８２、入力種別８３、及びカウント条件式８４等より構成される。カウンタＩＤ８１は、更新（カウントアップ）対象となるカウンタのＩＤである。図中では、カウンタＩＤ８１として「ｐｒｉｎｔ＿ｃｏｐｙ＿ｃｏｌｏｒ」が例示されている。出力種別８２、入力種別８３、及びカウント条件式８４は、「どのような場合にカウントアップするか」を規定する情報である。出力種別８２によって、カウンタＩＤに係るカウンタがカウントアップされる出力種別が規定される。また、入力種別８３によって、カウンタＩＤに係るカウンタがカウントアップされる入力種別が規定される。また、カウント条件式８４によって、カウンタＩＤに係るカウンタがカウントアップされる編集ページ結果又は出力ページ結果の値が規定される。図中では、出力種別８２として「ＰＲＩＮＴ」が指定され、入力種別８３として「ＳＣＡＮ」が指定され、カウント条件式８４として「カラーモード（ｃｏｌｏｒ）キーの値がフルカラー（ＦＵＬＬ＿ＣＯＬＯＲ）と一致すること」が指定された例が示されている。なお、カウント条件式８４は、複数定義可能である。
【０１０５】
すなわち、履歴記録部５０は、ページ出力結果データを受け付けると、ページ出力結果データと、予め定義されている各出力カウンタ仕様とを比較し、カウントアップすべきカウンタを判定する。したがって、例えば、図１４においてシーケンス番号がＳ１１６の行に係るページ出力結果データを受け付けた場合、履歴記録部５０は、図２０に示されるコピー印刷フルカラーカウンタ仕様に基づいて、カウンタＩＤが「ｐｒｉｎｔ＿ｃｏｐｙ＿ｃｏｌｏｒ」のカウンタをカウントアップする。
【０１０６】
ところで、カウンタは、基本的に事象の発生回数をカウントするものであるため、１回の事象の発生に応じてその値は１増加するのが通常である。しかし、例えば、用紙サイズが大きいページが印刷されたときに課金額を通常のページの倍にしたい場合等、ダブルカウント（２を増加）したい場合もある。斯かる場合、カウンタ仕様は次のように定義すればよい。
【０１０７】
図２１は、ダブルカウントを行う場合のカウンタ仕様の定義例を示す図である。図２１中、図２０と同一部分には同一符号を付し、その説明は省略する。
【０１０８】
図２１に示されるように、ダブルカウントが必要な場合は、更に、ダブルカウント条件式８５が定義される。この場合、履歴記録部５０は、入力種別８２、出力種別８３、カウント条件式８４、及びダブルカウント条件式８５の全てが満たされる場合に、カウンタをダブルカウントする。一方、ダブルカウント条件式８５のみが満たされない場合、履歴記録部５０は、カウンタを１だけ増加させる。
【０１０９】
また、印字したドット数をカウントする場合等、１回の事象（１ページの処理）ごとに増加量（カウント数）が変化するカウンタ（以下、「カバレッジカウンタ」という。）を実装したい場合がある。この場合、カウンタ仕様は次のように定義すればよい。
【０１１０】
図２２は、カバレッジカウンタに対するカウンタ仕様の定義例を示す図である。図２２中、図２０と同一部分には同一符号を付し、その説明は省略する。
【０１１１】
図２２に示されるように、カバレッジカウンタについては、更に、カウント数８６が定義される。カウント数８６には、ページ出力結果データにおいて、カウント数が登録されたｋｅｙの値が指定される。例えば、図２２の例では、カウント数８６において指定されているｋｅｙの値は、「ｃｏｕｎｔ」である。したがって、この場合、履歴記録部５０は、ページ出力結果データにおける「ｃｏｕｎｔ」キーに対応する値を取得し、取得された値だけカウンタを増加させる。すなわち、この場合、ページ出力結果データに情報を登録する側において、処理結果等に応じて、「ｃｏｕｎｔ」キーとその値とをページ出力結果データに登録しておく。
【０１１２】
なお、図２１及び図２２では、出力カウンタ仕様を例として説明しているが、入力カウンタ仕様についても、同様にダブルカウント条件式やカウント数を付加してもよい。
【０１１３】
また、本実施の形態では、読取フィルタ２１、編集フィルタ２５、及び印刷フィルタ２６によってジョブが実行される場合のカウンタの更新処理について説明したが、他のフィルタによってジョブが実行される場合もページ入力結果データ及びページ出力結果データの扱いについては、本実施の形態にいて説明した処理手順に従えばよい。すなわち、入力フィルタは、読取フィルタ２１と同様の処理を行い、加工フィルタは、編集フィルタ２５と同様の処理を行い、出力フィルタは印刷フィルタ２６と同様の処理を行えばよい。また、入力フィルタより利用されるデバイス制御層１０は、読取制御部１１と同様の処理を行い、出力フィルタより利用されるデバイス制御層１０は、印刷制御部１２と同様の処理を行えばよい。
【０１１４】
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【図面の簡単な説明】
【０１１５】
【図１】従来の複合機におけるカウンタの更新処理を説明するための図である。
【図２】本発明の実施の形態における画像形成装置のハードウェア構成の一例を示す図である。
【図３】本発明の実施の形態の画像形成装置におけるソフトウェア構成例を示す図である。
【図４】パイプ＆フィルタアーキテクチャの概念的に説明するための図である。
【図５】フィルタの構成要素を説明するための図である。
【図６】アクティビティの構成要素を説明するための図である。
【図７】デバイス層、フィルタ層、及びアクティビティ層において本実施の形態で注目対象となるソフトウェア部品を示す図である。
【図８】第一の実施の形態におけるカウンタの更新処理を説明するための図である。
【図９】第二の実施の形態におけるカウンタの更新処理を説明するための図である。
【図１０】ページ入力結果データの構成例を示す図である。
【図１１】ページ出力結果データの構成例を示す図である。
【図１２】第二の実施の形態におけるカウンタの更新処理を説明するためのシーケンス図である。
【図１３】処理の進行に応じたページ入力結果データの内容の変遷例を示す図である。
【図１４】処理の進行に応じたページ出力結果データの内容の変遷例を示す図である。
【図１５】デバイス制御層によるページ出力結果データの上書きの様子を示す図である。
【図１６】集約が行われる場合のページ出力結果データの処理を説明するための図である。
【図１７】出力先が複数の場合のページ出力結果データの処理を説明するための図である。
【図１８】複数部出力の場合のページ出力結果データの処理を説明するための図である。
【図１９】入力カウンタ仕様の構成例を示す図である。
【図２０】出力カウンタ仕様の構成例を示す図である。
【図２１】ダブルカウントを行う場合のカウンタ仕様の定義例を示す図である。
【図２２】カバレッジカウンタに対するカウンタ仕様の定義例を示す図である。
【符号の説明】
【０１１６】
１          複合機
１０        デバイス制御層
１１        読取制御部
１２        印刷制御部
１３        保管制御部
１４        ＦＡＸ制御部
１５        画像加工部
２０        フィルタ層
２１        読取フィルタ
２２        蓄積文書入力フィルタ
２３        受信フィルタ
２４        ＰＣ文書入力フィルタ
２５        編集フィルタ
２６        印刷フィルタ
２７        文書蓄積フィルタ
２８        送信フィルタ
３０        アクティビティ層
３１        コピーアクティビティ
３２        ＦＡＸアクティビティ
３３        スキャナアクティビティ
３４        プリンタアクティビティ
４０        ＵＩ制御部
５０        履歴記録部
６０１      コントローラ
６０２      オペレーションパネル６０２
６０３      ファクシミリコントロールユニット
６０４      撮像部
６０５      印刷部
６１１      ＣＰＵ
６１２      ＡＳＩＣ
６２１      ＮＢ
６２２      ＳＢ
６３１      ＭＥＭ−Ｐ
６３２      ＭＥＭ−Ｃ
６３３      ＨＤＤ
６３４      メモリカードスロット
６３５      メモリカード
６４１      ＮＩＣ
６４２      ＵＳＢデバイス
６４３      ＩＥＥＥ１３９４デバイス
６４４      セントロニクスデバイス
【図１】
0004895969.tif 000002
【図２】
0004895969.tif 000003
【図３】
0004895969.tif 000004
【図４】
0004895969.tif 000005
【図５】
0004895969.tif 000006
【図６】
0004895969.tif 000007
【図７】
0004895969.tif 000008
【図８】
0004895969.tif 000009
【図９】
0004895969.tif 000010
【図１０】
0004895969.tif 000011
【図１１】
0004895969.tif 000012
【図１２】
0004895969.tif 000013
【図１３】
0004895969.tif 000014
【図１４】
0004895969.tif 000015
【図１５】
0004895969.tif 000016
【図１６】
0004895969.tif 000017
【図１７】
0004895969.tif 000018
【図１８】
0004895969.tif 000019
【図１９】
0004895969.tif 000020
【図２０】
0004895969.tif 000021
【図２１】
0004895969.tif 000022
【図２２】
0004895969.tif 000023