(57)【特許請求の範囲】
【請求項１】
１または複数のコンポーネントによって画像形成処理を行う画像形成装置であって、
前記コンポーネントの動作をカウントしてカウント値を更新するカウンタと、
前記カウンタごとに、前記画像形成処理に関する定義情報と、前記コンポーネントの動作の結果を示す動作結果情報とを記憶する記憶手段と、
前記コンポーネントに設けられ、前記記憶手段に前記動作結果情報を書き込む通知手段と、
前記記憶手段に記憶された前記動作結果情報と前記定義情報とに基づいて前記コンポーネントの動作をカウントするか否かを判定するカウント判定手段と、
前記カウント判定手段が前記コンポーネントの動作をカウントすると判定した場合に、カウント値を更新するように前記カウンタを制御するカウンタ制御手段と、
を備え、
前記定義情報は、前記カウンタに固有のカウンタ識別情報と、前記コンポーネントの動作のカウントを開始するタイミングを示すトリガ情報と、前記コンポーネントの動作のカウント条件とを対応付け、
前記カウント判定手段は、前記トリガ情報および前記カウント条件のいずれもが、前記動作結果情報に含まれる場合に、前記コンポーネントの動作をカウントすると判定する、  ことを特徴とする画像形成装置。
【請求項２】
前記定義情報の中から前記トリガ情報と前記カウント条件とをリスト形式で生成するリスト生成手段と、をさらに備え、
前記カウント判定手段は、前記リスト生成手段が生成したリスト形式の前記トリガ情報と前記カウント条件とに基づいて前記コンポーネントの動作をカウントするか否かを判定すること、
を特徴とする請求項１に記載の画像形成装置。
【請求項３】
前記リスト生成手段は、さらに、前記トリガ情報または前記カウント条件のいずれかが変更されているか否かを判定し、
前記カウンタ制御手段は、前記リスト生成手段によって前記トリガ情報または前記カウント条件のいずれかが変更されていると判定された場合に、変更された前記トリガ情報または前記カウント条件に対応する前記カウンタ識別情報の前記カウンタのカウント値を初期化するように前記カウンタを制御すること、
を特徴とする請求項２に記載の画像形成装置。
【請求項４】
前記動作結果情報は、前記コンポーネントが動作する際の処理単位を識別する第１の識別符号を含み、
前記カウント判定手段は、前記第１の識別符号ごとに、前記動作結果情報と前記定義情報とに基づいて前記コンポーネントの動作をカウントするか否かを判定すること、
を特徴とする請求項１〜３のいずれか１項に記載の画像形成装置。
【請求項５】
前記動作結果情報は、前記処理単位ごとに前記コンポーネントが動作したときの区切り位置を示す第２の識別符号をさらに含み、
前記カウント判定手段は、さらに、前記第２の識別符号ごとに、前記動作結果情報と前記定義情報とに基づいて前記コンポーネントの動作をカウントするか否かを判定すること、
を特徴とする請求項４に記載の画像形成装置。
【請求項６】
前記記憶手段は、前記動作結果情報を累積して記憶し、
前記カウント判定手段は、累積して記憶された動作結果情報と前記定義情報とに基づいて前記コンポーネントの動作をカウントするか否かを判定すること、
を特徴とする請求項１〜５のいずれか１項に記載の画像形成装置。
【請求項７】
前記動作結果情報のうち前記カウント条件に一致するもののみを一時的に記憶する一時記憶手段と、をさらに備え、
前記カウント判定手段は、前記一時記憶手段に記憶された前記カウント条件と前記定義情報とに基づいて、前記コンポーネントの動作をカウントするか否かを判定すること、
を特徴とする請求項１〜６のいずれか１項に記載の画像形成装置。
【請求項８】
前記通知手段は、さらに、前記動作結果情報として、前記コンポーネントの動作をカウントしない旨を前記記憶手段に書き込み、
前記カウント判定手段は、さらに、前記動作結果情報が前記コンポーネントの動作をカウントしない旨が含まれているか否かを判定し、
前記カウンタ制御手段は、さらに、前記動作結果情報に、前記コンポーネントの動作をカウントしない旨が含まれていると判定された場合には、前記カウント値を更新しないように前記カウンタを制御すること、
を特徴とする請求項１〜７のいずれか１項に記載の画像形成装置。
【請求項９】
前記定義情報は、ＸＭＬ（eXtensible  Markup  Language）形式またはＣＳＶ（Comma  Separated  Value）形式のファイルであること、
を特徴とする請求項１〜８のいずれか１項に記載の画像形成装置。
【請求項１０】
１または複数のコンポーネントによって画像形成処理を行う画像形成装置において、
カウンタが前記コンポーネントの動作をカウントしてカウント値を更新するカウントステップと、
記憶手段が前記カウンタごとに、前記画像形成処理に関する定義情報と、前記コンポーネントの動作の結果を示す動作結果情報とを記憶する記憶ステップと、
前記コンポーネントに設けられた通知手段が、前記記憶手段に前記動作結果情報を書き込む通知ステップと、
カウント判定手段が前記記憶手段に記憶された前記動作結果情報と前記定義情報とに基づいて前記コンポーネントの動作をカウントするか否かを判定するカウント判定ステップと、
前記カウント判定手段が前記コンポーネントの動作をカウントすると判定した場合に、カウンタ制御手段がカウント値を更新するように前記カウンタを制御するカウンタ制御ステップと、
を含み、
前記定義情報は、前記カウンタに固有のカウンタ識別情報と、前記コンポーネントの動作のカウントを開始するタイミングを示すトリガ情報と、前記コンポーネントの動作のカウント条件とを対応付け、
前記カウント判定ステップは、前記トリガ情報および前記カウント条件のいずれもが、前記動作結果情報に含まれる場合に、前記コンポーネントの動作をカウントすると判定する、
ことを特徴とするカウンタ制御方法。
【請求項１１】
請求項１０に記載されたカウンタ制御方法をコンピュータに実行させることを特徴とするカウンタ制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、カウンタを備える画像形成装置、カウンタ制御方法、カウンタ制御プログラムに関するものである。
【背景技術】
【０００２】
一般に、コピー機能、ファクシミリ（ＦＡＸ）機能、印刷機能、スキャナ機能等のコンポーネントを一つの筐体に納めたいわゆるＭＦＰ（Multi Function Peripheral）と称される複合機には、これらの機能を実現するためのアプリケーションの種類、これらの動作（イベント）の種類によって、膨大な数のカウンタを備えている。コピー機能を例にとると、用紙の読み取り枚数のほか、２ｉｎ１集約したときの出力用紙の枚数、コピー機能を利用した回数、ドラム部品の回転数等、多種多様のカウンタを備える。これらのカウンタは、各機能の利用回数や請求金額をユーザごとに把握して課金管理を行ったり、各部品の消耗度（例えば、ドラムの回転数や転写回数等）を把握してＭＦＰの各部品のメンテナンスを行う場合に必要なものである。
【０００３】
また、ＭＦＰの各機能は、ユーザのニーズに応じてカスタマイズされるのが一般的である。そのカスタマイズを容易にするために、例えば、コピー機能とＦＡＸ機能のアプリケーションやそのミドルウェア等は、ある処理を行う場合にはできる限り互いに依存しないように設計することが求められている。このことは各コンポーネントに備えられたカウンタのカウント値を更新する処理を行う場合においても同様である。
【０００４】
図２０に示すように、例えば、ＦＡＸ送信をする場合、ＦＡＸ送信に関するアプリケーションやミドルウェア等（以下、これらのアプリケーションやミドルウェア等の１つ１つのことをコンポーネントと呼ぶ。）は、処理結果（動作回数等のカウント値、その他詳細な動作結果）を他のコンポーネント等に通知し、ＦＡＸアプリがそれらの処理結果を集約して記憶部に記憶し、その後、ユーザはその情報を用いて課金管理やメンテナンスを行っていた。
【０００５】
具体的には、図２１に示すように、カウンタのカウント値を更新するカウント条件と、そのタイミングを示すカウントアップトリガを記憶しておき、各コンポーネントの動作がこれらの条件を満たした場合に初めてカウンタのカウント値を更新し、詳細な動作結果と共に他のコンポーネント等に通知していた。
【０００６】
例えば、特許文献１では、複合機を構成する各パーツの動作がユーザの利用状況に応じた所定の条件を満たしているか否かを判定し、その条件を満たすと判定した場合に、カウント値をカウントアップすることにより、ユーザの要望に即した柔軟性のある課金管理を実現する。
【０００７】
また、特許文献２では、画像形成処理において、ネットワーク等の外部から入力された出力指示、プリント指示等の指示情報から、その指示情報に対応する課金制御情報を生成し、生成した課金制御情報を用いることによって、ユーザに対して適切な課金管理を実現する。
【０００８】
【特許文献１】特開２００６−２１２８６６号公報
【特許文献２】特開２００１−３４１３８８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、特許文献１及び特許文献２のいずれの技術においても、上述したように各コンポーネント等の動作結果やカウント値を他のコンポーネント等に通知した上でそれらの情報を集約しているため、各コンポーネント等にカスタマイズが必要となった場合には、それらの依存関係を見直す必要があり、ユーザにとって多大な負担を強いられるという問題があった。
【００１０】
また、各コンポーネントの動作のカウント値を更新するための条件（例えば、図２１に示すような条件）は、プログラムに直接定義されており、これらの条件の仕様が変更された場合、ユーザにとってメンテナンスの負担が大きいという問題があった。
【００１１】
本発明は、上記に鑑みてなされたものであって、コンポーネントのカスタマイズが容易であり、課金管理において各コンポーネント間の依存性の低い画像形成装置、カウンタ制御方法方法、カウンタ制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
上述した課題を解決し、目的を達成するために、請求項１にかかる発明は、１または複数のコンポーネントによって画像形成処理を行う画像形成装置であって、前記コンポーネントの動作をカウントしてカウント値を更新するカウンタと、前記カウンタごとに、前記画像形成処理に関する定義情報と、前記コンポーネントの動作の結果を示す動作結果情報とを記憶する記憶手段と、前記コンポーネントに設けられ、前記記憶手段に前記動作結果情報を書き込む通知手段と、前記記憶手段に記憶された前記動作結果情報と前記定義情報とに基づいて前記コンポーネントの動作をカウントするか否かを判定するカウント判定手段と、前記カウント判定手段が前記コンポーネントの動作をカウントすると判定した場合に、カウント値を更新するように前記カウンタを制御するカウンタ制御手段と、を備え、前記定義情報は、前記カウンタに固有のカウンタ識別情報と、前記コンポーネントの動作のカウントを開始するタイミングを示すトリガ情報と、前記コンポーネントの動作のカウント条件とを対応付け、前記カウント判定手段は、前記トリガ情報および前記カウント条件のいずれもが、前記動作結果情報に含まれる場合に、前記コンポーネントの動作をカウントすると判定する、ことを特徴とする。
【００１４】
また、請求項２にかかる発明は、請求項１にかかる発明において、前記定義情報の中から前記トリガ情報と前記カウント条件とをリスト形式で生成するリスト生成手段と、をさらに備え、前記カウント判定手段は、前記リスト生成手段が生成したリスト形式の前記トリガ情報と前記カウント条件とに基づいて前記コンポーネントの動作をカウントするか否かを判定すること、を特徴とする。
【００１５】
また、請求項３にかかる発明は、請求項２にかかる発明において、前記リスト生成手段は、さらに、前記トリガ情報または前記カウント条件のいずれかが変更されているか否かを判定し、前記カウンタ制御手段は、前記リスト生成手段によって前記トリガ情報または前記カウント条件のいずれかが変更されていると判定された場合に、変更された前記トリガ情報または前記カウント条件に対応する前記カウンタ識別情報の前記カウンタのカウント値を初期化するように前記カウンタを制御すること、を特徴とする。
【００１６】
また、請求項４にかかる発明は、請求項１〜３のいずれか１項にかかる発明において、前記動作結果情報は、前記コンポーネントが動作する際の処理単位を識別する第１の識別符号を含み、前記カウント判定手段は、前記第１の識別符号ごとに、前記動作結果情報と前記定義情報とに基づいて前記コンポーネントの動作をカウントするか否かを判定すること、を特徴とする。
【００１７】
また、請求項５にかかる発明は、請求項４にかかる発明において、前記動作結果情報は、前記処理単位ごとに前記コンポーネントが動作したときの区切り位置を示す第２の識別符号をさらに含み、前記カウント判定手段は、さらに、前記第２の識別符号ごとに、前記動作結果情報と前記定義情報とに基づいて前記コンポーネントの動作をカウントするか否かを判定すること、を特徴とする。
【００１８】
また、請求項６にかかる発明は、請求項１〜５のいずれか１項にかかる発明において、前記記憶手段は、前記動作結果情報を累積して記憶し、前記カウント判定手段は、累積して記憶された動作結果情報と前記定義情報とに基づいて前記コンポーネントの動作をカウントするか否かを判定すること、を特徴とする。
【００１９】
また、請求項７にかかる発明は、請求項１〜６のいずれか１項にかかる発明において、前記動作結果情報のうち前記カウント条件に一致するもののみを一時的に記憶する一時記憶手段と、をさらに備え、前記カウント判定手段は、前記一時記憶手段に記憶された前記カウント条件と前記定義情報とに基づいて、前記コンポーネントの動作をカウントするか否かを判定すること、を特徴とする。
【００２０】
また、請求項８にかかる発明は、請求項１〜７のいずれか１項にかかる発明において、前記通知手段は、さらに、前記動作結果情報として、前記コンポーネントの動作をカウントしない旨を前記記憶手段に書き込み、前記カウント判定手段は、さらに、前記動作結果情報が前記コンポーネントの動作をカウントしない旨が含まれているか否かを判定し、前記カウンタ制御手段は、さらに、前記動作結果情報に、前記コンポーネントの動作をカウントしない旨が含まれていると判定された場合には、前記カウント値を更新しないように前記カウンタを制御すること、を特徴とする。
【００２１】
また、請求項９にかかる発明は、請求項１〜８のいずれか１項にかかる発明において、前記定義情報は、ＸＭＬ（eXtensible  Markup  Language）形式またはＣＳＶ（Comma  Separated  Value）形式のファイルであること、を特徴とする。
【００２２】
また、請求項１０にかかる発明は、１または複数のコンポーネントによって画像形成処理を行う画像形成装置において、カウンタが前記コンポーネントの動作をカウントしてカウント値を更新するカウントステップと、記憶手段が前記カウンタごとに、前記画像形成処理に関する定義情報と、前記コンポーネントの動作の結果を示す動作結果情報とを記憶する記憶ステップと、前記コンポーネントに設けられた通知手段が、前記記憶手段に前記動作結果情報を書き込む通知ステップと、カウント判定手段が前記記憶手段に記憶された前記動作結果情報と前記定義情報とに基づいて前記コンポーネントの動作をカウントするか否かを判定するカウント判定ステップと、前記カウント判定手段が前記コンポーネントの動作をカウントすると判定した場合に、カウンタ制御手段がカウント値を更新するように前記カウンタを制御するカウンタ制御ステップと、を含み、前記定義情報は、前記カウンタに固有のカウンタ識別情報と、前記コンポーネントの動作のカウントを開始するタイミングを示すトリガ情報と、前記コンポーネントの動作のカウント条件とを対応付け、前記カウント判定ステップは、前記トリガ情報および前記カウント条件のいずれもが、前記動作結果情報に含まれる場合に、前記コンポーネントの動作をカウントすると判定する、ことを特徴とする。
【００２３】
また、請求項１１にかかる発明は、請求項１０にかかる発明をコンピュータで実行させることを特徴とする。
【発明の効果】
【００２４】
請求項１にかかる発明によれば、１または複数のコンポーネントによって画像形成処理を行う画像形成装置において、カウンタが前記コンポーネントの動作をカウントしてカウント値を更新し、記憶手段が前記カウンタごとに、前記画像形成処理に関する定義情報と、前記コンポーネントの動作の結果を示す動作結果情報とを記憶し、通知手段が前記コンポーネントに設けられ、前記記憶手段に前記動作結果情報を書き込み、カウント判定手段が前記記憶手段に記憶された前記動作結果情報と前記定義情報とに基づいて前記コンポーネントの動作をカウントするか否かを判定し、カウンタ制御手段が前記カウント判定手段が前記コンポーネントの動作をカウントすると判定した場合に、カウント値を更新するように前記カウンタを制御するので、各コンポーネント間の依存度が低く抑えられ、コンポーネントのカスタマイズを容易に行うことができるという効果を奏する。また、請求項１にかかる発明によれば、前記定義情報は、前記カウンタに固有のカウンタ識別情報と、前記コンポーネントの動作のカウントを開始するタイミングを示すトリガ情報と、前記コンポーネントの動作のカウント条件とを対応付け、前記カウント判定手段は、前記トリガ情報および前記カウント条件のいずれもが、前記動作結果情報に含まれる場合に、前記コンポーネントの動作をカウントすると判定するので、カウントに必要な最小限の要件を用いてカウンタのカウント値を更新するか否かの判定ができるという効果を奏する。
【００２６】
また、請求項２にかかる発明によれば、リスト生成手段が請求項１にかかる発明において、前記定義情報の中から前記トリガ情報と前記カウント条件とをリスト形式で生成し、前記カウント判定手段は、前記リスト生成手段が生成したリスト形式の前記トリガ情報と前記カウント条件とに基づいて前記コンポーネントの動作をカウントするか否かを判定するので、カウンタのカウント値を更新するか否かを判定する場合のパフォーマンスを向上することができるという効果を奏する。
【００２７】
また、請求項３にかかる発明によれば、請求項２にかかる発明において、前記リスト生成手段は、さらに、前記トリガ情報または前記カウント条件のいずれかが変更されているか否かを判定し、前記カウンタ制御手段は、前記リスト生成手段によって前記トリガ情報または前記カウント条件のいずれかが変更されていると判定された場合に、変更された前記トリガ情報または前記カウント条件に対応する前記カウンタ識別情報の前記カウンタのカウント値を初期化するように前記カウンタを制御するので、仕様が変更されたカウンタ
のカウント値のみを容易にリセットすることができるという効果を奏する。
【００２８】
また、請求項４にかかる発明によれば、請求項１〜３のいずれか１項にかかる発明において、前記動作結果情報は、前記コンポーネントが動作する際の処理単位を識別する第１の識別符号を含み、前記カウント判定手段は、前記第１の識別符号ごとに、前記動作結果情報と前記定義情報とに基づいて前記コンポーネントの動作をカウントするか否かを判定するので、各コンポーネントの動作結果がそれぞれ別々に記憶手段に書き込まれた場合であっても、コンポーネントごとの動作結果を紐付けでき、カウンタのカウント値を更新するか否かを容易に判定することができるという効果を奏する。
【００２９】
また、請求項５にかかる発明によれば、請求項４にかかる発明において、前記動作結果情報は、前記処理単位ごとに前記コンポーネントが動作したときの区切り位置を示す第２の識別符号をさらに含み、前記カウント判定手段は、さらに、前記第２の識別符号ごとに、前記動作結果情報と前記定義情報とに基づいて前記コンポーネントの動作をカウントするか否かを判定するので、各コンポーネントの動作結果情報がそれぞれ別々に記憶手段に書き込まれた場合であっても、コンポーネントごとの動作結果情報を紐付けでき、カウンタのカウント値を更新するか否かをより容易にかつ細やかに判定することができるという効果を奏する。
【００３０】
また、請求項６にかかる発明によれば、請求項１〜５のいずれか１項にかかる発明において、前記記憶手段は、前記動作結果情報を累積して記憶し、前記カウント判定手段は、累積して記憶された動作結果情報と前記定義情報とに基づいて前記コンポーネントの動作をカウントするか否かを判定するので、通知手段が書き込んだ動作結果情報の蓄積およびその動作結果情報を用いた各コンポーネントのカウンタのカウント値の２つの情報を保持することができるという効果を奏する。
【００３１】
また、請求項７にかかる発明によれば、請求項１〜６のいずれか１項にかかる発明において、一時記憶手段が前記動作結果情報のうち前記カウント条件に一致するもののみを一時的に記憶し、前記カウント判定手段は、前記一時記憶手段に記憶された前記カウント条件と前記定義情報とに基づいて、前記コンポーネントの動作をカウントするか否かを判定するので、一時記憶手段にカウンタのカウント値を更新するか否かの判定に不必要なカウント条件を記憶させることなく、カウンタのカウント値を更新するか否かを効率的に判定することができるという効果を奏する。
【００３２】
また、請求項８にかかる発明によれば、請求項１〜７のいずれか１項にかかる発明において、前記通知手段は、さらに、前記動作結果情報として、前記コンポーネントの動作をカウントしない旨を前記記憶手段に書き込み、前記カウント判定手段は、さらに、前記動作結果情報が前記コンポーネントの動作をカウントしない旨が含まれているか否かを判定し、前記カウンタ制御手段は、さらに、前記動作結果情報に、前記コンポーネントの動作をカウントしない旨が含まれていると判定された場合には、前記カウント値を更新しないように前記カウンタを制御するので、カウンタのカウント値を更新するか否かをより容易にかつより効率的に判定することができるという効果を奏する。
【００３３】
また、請求項９にかかる発明によれば、請求項１〜８のいずれか１項にかかる発明において、前記定義情報は、ＸＭＬ（eXtensible  Markup  Language）形式またはＣＳＶ（Comma  Separated  Value）形式のファイルであるので、カウンタ仕様のカスタマイズを容易に行うことができるという効果を奏する。
【００３４】
また、請求項１０にかかる発明によれば、各コンポーネント間の依存度が低く抑えられ、コンポーネントのカスタマイズを容易に行うことができるという効果を奏する。
【００３５】
また、請求項１１にかかる発明によれば、請求項１０にかかる発明をコンピュータで実行させるプログラムを提供できるという効果を奏する。
【発明を実施するための最良の形態】
【００３６】
以下に添付図面を参照して、この発明にかかる画像形成装置、カウンタ制御方法、カウンタ制御プログラムの最良な実施の形態を詳細に説明する。
【００３７】
本発明の一実施の形態として、画像処理装置をコピー機能、ファクシミリ（ＦＡＸ）機能、印刷機能、スキャナ機能等を一つの筐体に納めたいわゆるＭＦＰ（Multi Function Peripheral）と称される複合機等、印刷機能を備えた装置に適用した例を示す。尚、以下の説明では、画像処理装置を上述の複合機に適用した場合について説明しているが、上述した機能以外の機能を備える複合機以外の装置であっても適用可能である。
【００３８】
（第１の実施の形態）
図１は、第１の実施の形態にかかる複合機１０００の概念図である。本図に示すように、複合機１０００は、エンジン制御層、サービス層、アプリケーション層の３つの階層から構成され、アプリケーション層には、コピーアプリ２１０（コピー機能）、プリンタアプリ２２０（プリンタ機能）、ＦＡＸアプリ２３０（ＦＡＸ機能）、スキャナアプリ２４０（スキャナ機能）の各アプリケーションが配備されている。また、サービス層には、読取部３１０、加工部３２０、印刷部３３０、画像編集部、ユーザ情報等のアプリケーション層とエンジン制御層を仲介するためのミドルウェアが配備され、エンジン制御層には、スキャナ制御部４１０、露光制御部４２０、プロッタ制御部４３０、メモリ制御部、ネットワーク制御部等の複合機１０００の構成部品を制御するためのドライバが配備されている。以下の説明では、アプリケーション層、サービス層、エンジン制御層を構成するこれらの各機能をつかさどる部品のことをコンポーネントと呼ぶ。
【００３９】
また、図１では、ユーザがＦＡＸ機能を利用した場合の各コンポーネントの動きを実線、または２点鎖線で示している。図１中の実線は、ユーザがＦＡＸ機能を利用した場合、ＦＡＸの送信動作をつかさどる読取部、画像編集部、ユーザ情報部、スキャナ制御部の各コンポーネントに備えられた通知部（後述）は、各コンポーネントの詳細な動作結果（例えば、コピー枚数、ＦＡＸ送信枚数、スキャン読取枚数等のログ情報）をそれぞれ別々に記憶部に書き込むことを示している。また、図１中の２点鎖線は、各コンポーネントの通知部は、ＦＡＸ送信についての動作結果（例えば、処理が正常終了したか異常終了したかを示す処理完了信号や処理の実行単位を示すジョブ番号等の要約情報）のみを上位層のコンポーネントに送信することを示している。
【００４０】
図２は、図１に示した複合機１０００のブロック図である。図１では、複合機１０００に含まれる各コンポーネントの主要部を概念図として示したが、図２では、それらの主要部のうち、以下の説明で必要なコンポーネントについてのブロック構成のみを示している。したがって、図２に示していないコンポーネント（例えば、サービス層の画像編集部やネットワーク制御部等）についても、以下に説明する内容と同じ動作の手順・処理を行う。
【００４１】
図２に示すように、複合機１０００は、操作パネル１００と、アプリケーション部２００と、サービス部３００と、エンジン制御部４００と、エンジン部５００と、記憶部６００と、制御部７００と、ＲＡＭ（Random  Access  Memory）８００と、ＲＯＭ（Read  Only  Memory）８５０と、通信部９００と、外部記憶装置１１００と、を主に備えている。
【００４２】
操作パネル１００は、ＬＣＤ（Liquid  Crystal  Display）等のディスプレイから構成され、後述するアプリケーション部２００のコピーアプリ２１０、プリンタアプリ２２０、ＦＡＸアプリ２３０、スキャナアプリ２４０をユーザが選択したり、選択したアプリケーションについての設定情報（例えば、コピーアプリ２１０を選択した場合には、用紙サイズ、両面、２ｉｎ１集約等の複写設定情報）をセットするためのインタフェースである。
【００４３】
アプリケーション部２００は、コピーアプリ２１０と、プリンタアプリ２２０と、ＦＡＸアプリ２３０と、スキャナアプリ２４０と、から構成され、これらの各アプリは、コピー機能、プリンタ機能、ＦＡＸ機能、スキャナ機能を実現するプログラム等のソフトウェアである。これらのコピーアプリ２１０、プリンタアプリ２２０、ＦＡＸアプリ２３０、スキャナアプリ２４０は、処理対象となる画像等のイメージデータ、文章等のテキストデータ、およびユーザが操作パネル１００を操作して指定した設定情報をサービス部３００に送信する。
【００４４】
また、これらの各コンポーネントは、通知部９０００を備える。通知部９０００は、各コンポーネントがその機能にしたがって複写、印刷、ＦＡＸ送受信、スキャン等の各動作をしたときの詳細な動作結果を記憶部６００のログファイル６４０（後述）に書き込む。
【００４５】
また、通知部９０００は、各コンポーネントがその機能にしたがって処理をした場合の処理完了信号を、他のコンポーネントに通知するとともに、カウント判定部７１０に、各コンポーネントが動作するときの処理単位であるジョブＩＤ（IDentification）を通知する。さらに通知部９０００は、詳細な動作結果を後述するログファイル６４０に書き込む。
【００４６】
なお、サービス部３００、エンジン制御部４００の各コンポーネントにも、アプリケーション部２００を構成する各コンポーネントと同様に通知部９０００を備えているが、これらの通知部９０００も、アプリケーション部２００を構成する各コンポーネントに備えられた通知部９０００と同様の動作をするので、以下ではその説明を省略する。
【００４７】
サービス部３００は、読取部３１０と、加工部３２０と、印刷部３３０と、から構成され、これらの各部は、それぞれ通知部９０００を備え、上位層であるコピーアプリ２１０、プリンタアプリ２２０等のアプリケーション部２００から、イメージデータやテキストデータ、設定情報を受信し、イメージデータの読み取り、加工、印刷用データの生成等各コンポーネントの機能に従った動作を行うとともに、受信したイメージデータや設定情報をエンジン制御部４００に送信する。
【００４８】
エンジン制御部４００は、スキャナ制御部４１０と、露光制御部４２０と、プロッタ制御部４３０と、から構成され、これらの各部はそれぞれ通知部９０００を備え、読取部３１０、加工部３２０等のサービス部３００から、イメージデータやテキストデータ、設定情報を受信し、後述するスキャナや転写ドラム、露光装置等をスタンバイするための制御等を行うとともに、受信したイメージデータやテキストデータ、設定情報等をエンジン部５００に送信する。
【００４９】
エンジン部５００は、スキャナ、転写ドラム、露光装置、プロッタ等の複合機１０００を構成する部品から構成され、上位層であるスキャナ制御部４１０、露光制御部４２０等のエンジン制御部４００からイメージデータやテキストデータ、設定情報等を受信して、設定情報に従ってイメージデータやテキストデータをスキャン、複写、印刷等の処理を行う。
【００５０】
記憶部６００は、カウンタ仕様定義ファイル６１０と、カウントアップトリガリスト６２０と、カウント条件リスト６３０と、ログファイル６４０と、リセット設定ファイル６５０と、ジョブＩＤファイル６６０と、カウンタ６７０とを記憶するＨＤＤ（ハードディスクドライブ装置）やメモリなどの記憶媒体である。
【００５１】
カウンタ仕様定義ファイル６１０は、図３に示すように、カウンタを識別するためのカウンタＩＤおよびカウンタ名称と、カウンタのカウント値を更新するタイミングを示すカウントアップトリガと、カウント値を更新するための条件を示すカウント条件と、を表形式やＸＭＬ（eXtensible  Markup  Language）形式またはＣＳＶ（Comma  Separated  Value）形式等を、プログラム形式ではないファイル形式で記憶する。
【００５２】
このカウンタ仕様定義ファイル６１０は、ユーザが、例えば、各コンポーネントがカスタマイズされるタイミング、システムが初期化されるタイミングで記憶部６００に記憶される。
【００５３】
カウンタ仕様定義ファイル６１０のカウントアップトリガには、アプリケーション部２００、サービス部３００、エンジン制御部４００の各コンポーネントの名称、およびそのコンポーネントがどのような動作をしたときにカウンタのカウント値を更新するかを示すイベントタイプが記憶されている。
【００５４】
カウンタ仕様定義ファイル６１０のカウント条件には、各コンポーネントの名称、カウンタのカウント値を更新するためのキー情報（例えば、色彩、用紙サイズ、ページ数等）、およびそのキー情報の値（フルカラー、Ａ３以外の用紙、２ページ等）が記憶される。カウント条件は、１つのカウンタに対して複数個記憶でき、カウンタＩＤによって、カウンタ６７０と関連付けて記憶されている。
【００５５】
具体的には、カウンタＩＤが１であってカウンタ名称が「COPY/FULLCOLOR/NORMAL_SIZE」のカウンタ６７０には、カウントアップトリガとして、プリンタアプリ２２０（out_print）のコンポーネントがイベントとして１ページの印刷が終了したタイミング（OUTPUT_PAGE_END）で、コピーアプリ２１０（copy_activity）のコンポーネントに対してキー（ACTIVITY_TYPE）として値（COPY）が設定情報に設定されているか（条件１）、スキャナアプリ２４０（in_scan）のコンポーネントに対してキー（COLOR）として値（FULL_COLOR）が設定情報に設定されているか（条件２）、プリンタアプリ２２０（out_print）のコンポーネントに対してキー（SIZE）として値（!(A3&DLT)）が設定情報に設定されているか（条件３）、いずれかのカウント条件を満たす場合に、そのカウント値を更新するように定義されていることを示している。
【００５６】
図２に戻って、カウントアップトリガリスト６２０は、図４に示すように、カウンタ仕様定義ファイル６１０に記憶される情報のうち、カウントアップトリガに関するコンポーネントの名称、およびイベントタイプのみが記憶されている。これらの内容については、カウンタ仕様定義ファイル６１０で述べた内容と同一であるので、その説明を省略する。
【００５７】
また、図２に戻って、カウント条件リスト６３０は、図５に示すように、カウンタ仕様定義ファイル６１０に記憶される情報のうち、カウント条件に関する設定情報のうち、コンポーネントの名称、キーのみが記憶されている。これらの内容については、カウンタ仕様定義ファイル６１０で述べた内容と同一であるので、その説明を省略する。なお、カウント条件リスト６３０および前述したカウントアップトリガリスト６２０は、後述するようにリスト生成部７１１０にてカウンタ仕様定義ファイル６１０から生成される。
【００５８】
図２に戻り、ログファイル６４０には、図６に示すように、各コンポーネントが動作した順番（記録順）に、その動作の要約情報であるイベントの説明、イベントの種類を示す共通属性、そのイベントがどのような動作をしたかを示す拡張属性の各情報が書き込まれる。また、共通属性には、コンポーネントの名称、イベントタイプの各情報が含まれ、拡張属性には、指定された設定情報の数と同じ数のキー及びその値が含まれている。
【００５９】
例えば、図６に示すログファイル６４０の記録順１、２の内容についてみると、まず、記録順１では、ユーザからの操作パネル１００を通じた操作によって、コピーアプリ２１０が選択されたことを示している。すなわち、共通属性に示すようにコンポーネントとしてコピーアプリ２１０（copy_activity）の操作パネル１００が押下され（DECIDE_MODE）、拡張属性に示すように、コピーアプリ２１０が、詳細な動作結果としてアプリの種類を示すキー（ACTIVITI_TYPE）、その値（COPY）をログファイル６４０に書き込んでいることがわかる。
【００６０】
続いて、記録順２では、印刷部３３０が、ユーザから指定された設定情報を受信して、その設定情報を認識したことを示している。すなわち、共通属性に示すように印刷部３３０（out_print）が設定情報を認識し（DECIDE_MODE）、拡張属性に示すように、印刷部３３０が、その設定情報を示すキー（PRINT_SIDE、COLOR、SIZE）とこれらの値（BOTH_SIDE、FULL_COLOR、AUTO）をログファイル６４０に書き込んでいることがわかる。このようにして、記録順３以降に示すログファイル６４０の内容も、各コンポーネントが動作したタイミングで順次ログファイル６４０に書き込まれる。
【００６１】
図２に戻って、リセット設定ファイル６５０は、後述するリスト生成部７１１０がカウントアップトリガリスト６２０、カウント条件リスト６３０を生成する際に、これらの元となるカウンタ仕様定義ファイル６１０の項目（例えば、コンポーネント、イベントタイプ、キー情報、その値等）の内容に変更があった場合に、カウンタ６７０のカウント値の更新方法である更新設定モードを定めているファイルである。
【００６２】
すなわち、カウンタ仕様定義ファイル６１０に変更が生じた場合には、すべてのカウンタ６７０のカウント値をリセットするか（モード１）、変更のあったカウンタ仕様定義ファイル６１０の項目に対応するカウンタ６７０のカウント値のみをリセットするか（モード２）、カウンタ仕様定義ファイル６１０に変更があった場合でもカウンタ６７０をリセットせずに、既にカウントされている値にそのまま加算してカウント値を更新するか（モード３）が記憶されている。なお、これらの各モードは予めユーザによって設定されている。
【００６３】
ジョブＩＤファイル６６０は、ユーザが操作パネル１００によって所定の処理（例えば、コピー、ＦＡＸ送信等）を開始してから、その処理が完了するまでの各コンポーネントの動作を一連のものとして紐付けするための識別番号であり、「００００１」等の数値のみが記憶され、ユーザからの所定の処理が開始される都度そのＩＤが繰り上がって上書き更新される。
【００６４】
制御部７００は、カウント判定部７１０と、カウンタ制御部７２０と、から構成され、これらの各部、ＲＡＭ８００、ＲＯＭ８５０からのデータ等の呼び出し等の動作を制御するとともに、アプリケーション部２００を構成する各コンポーネントからの指示を受けて、ジョブＩＤファイル６６０からジョブＩＤを取得する。
【００６５】
カウント判定部７１０は、さらにカウンタ仕様定義ファイル６１０からカウントアップトリガリスト６２０、カウント条件リスト６３０を生成するためのリスト生成部７１１０を備えている。
【００６６】
カウント判定部７１０は、アプリケーション部２００を構成する各コンポーネントからジョブＩＤを受信してジョブの開始を受け付け、その旨をそのジョブＩＤを送信したコンポーネントに送信する。また、カウント判定部７１０は、各コンポーネントがログファイル６４０に書き込んだ詳細な動作結果の中で、コンポーネントの名称およびキーを読み取り、読み取ったコンポーネントの名称およびキーと同じコンポーネントの名称およびキーが、カウント条件リスト６３０に記憶されているか否かを判定する。そして、カウント判定部７１０は、同じコンポーネントの名称、キーが記憶されていると判定した場合には、ログファイル６４０から読み取ったコンポーネントの名称、キーおよびそのキーに対応する値を、ＲＡＭ８００に記憶する。また、カウント判定部７１０は、ユーザが指定したコピー、ＦＡＸ送信等の所定の処理すべてが終了すると、ＲＡＭ８００に記憶されているデータをクリアする。
【００６７】
具体的には、図６に示すログファイル６４０の記録順１３の動作結果が印刷部３３０の通知部９０００によって書き込まれた場合、カウント判定部７１０は、記録順１３のコンポーネントの名称（out_print）、および拡張属性の３番目のキー情報（SIZE）を読みとって、図５に示すカウント条件リスト６３０のコンポーネントの名称（out_print）、およびキー情報（SIZE）と比較して一致することを判定する。そして、カウント判定部７１０は、図７に示すように、ジョブＩＤ（００００１）、そのジョブＩＤで処理されるイメージデータやテキストデータのページ番号（１）、コンポーネントの名称（out_print）、キー情報（SIZE）、およびその値（A4）を、ＲＡＭ８００に書き込む。このように、カウント判定部７１０は、カウンタ６７０のカウント値を更新するか否かを判定する場合に、ジョブＩＤやページ番号で各コンポーネントの動作結果を紐付けしてＲＡＭ８００に記憶する。
【００６８】
また、カウント判定部７１０は、各コンポーネントがログファイル６４０に書き込んだ詳細な動作結果の中で、コンポーネントの名称とイベントタイプを読み取り、読み取ったコンポーネントの名称およびイベントタイプと同じコンポーネントの名称およびイベントタイプが、カウントアップトリガリスト６２０に記憶されているか否かを判定する。そして、カウント判定部７１０は、同じコンポーネントの名称、イベントタイプが記憶されていると判定した場合には、その旨をカウンタ制御部７２０に通知する。
【００６９】
具体的には、図６に示すログファイル６４０の記録順１３の場合、カウント判定部７１０は、コンポーネントの名称（out_print）、およびイベントタイプ（OUTPUT_PAGE_END）を読みとって、図４に示すカウントアップトリガリスト６２０のコンポーネントの名称（out_print）、およびイベントタイプ（OUTPUT_PAGE_END）と比較して一致することを判定する。そして、ログファイル６４０に書き込まれた内容と、カウントアップトリガリスト６２０に記憶されている内容が一致している旨をカウンタ制御部７２０に通知する。
【００７０】
リスト生成部７１１０は、図８に示すように、外部記憶装置１１００から記憶部６００にカウンタ仕様定義ファイル６１０が記憶されると、コンポーネントの名称とイベントタイプの各情報を抽出してカウントアップトリガリスト６２０を生成するとともに、コンポーネントの名称とキー情報の各情報を抽出してカウント条件リスト６３０を生成する。リスト生成部７１１０は、システムの初期化等のタイミングで外部記憶装置１１００が通信部９００にセットされるごとに、記憶部６００にカウンタ仕様定義ファイル６１０を記憶し、カウントアップトリガリスト６２０とカウント条件リスト６３０を生成する。
【００７１】
また、リスト生成部７１１０は、カウンタ仕様定義ファイル６１０を記憶部６００に記憶する際に、ファイル名を比較して既にカウンタ仕様定義ファイル６１０があるか否かを判定する。記憶部６００に同じファイル名のカウンタ仕様定義ファイル６１０がない場合には、そのカウンタ仕様定義ファイル６１０を記憶部６００に書き込み、その旨をカウンタ制御部７２０に通知する。
【００７２】
さらに、記憶部６００にカウンタ仕様定義ファイル６１０がある場合には、そのカウンタ仕様定義ファイル６１０の中のどのカウンタＩＤのカウントアップトリガ、カウント条件が変更されているかをカウンタＩＤごとに判定する。
【００７３】
具体的には、リスト生成部７１１０は、上述したようにカウンタ仕様定義ファイル６１０のファイル名を判定した後、既に記憶されたカウンタ仕様定義ファイル６１０のカウントアップトリガ、カウント条件の各項目を参照し、その項目に記載された内容と、記憶部６００に記憶するカウンタ仕様定義ファイル６１０のカウントアップトリガ、カウント条件の各項目とが一致するか否かを判定する。そして、リスト生成部７１１０は、カウントアップトリガ、カウント条件のうちいずれかの内容が変更されていると判定した場合には、リセット設定ファイル６５０を参照して、カウンタ更新モードの値をカウンタ制御部７２０に通知する。
【００７４】
カウンタ制御部７２０は、カウントアップトリガリスト６２０の内容と同じコンポーネントの名称、キー情報が記憶されている旨をカウント判定部７１０から通知されると、そのコンポーネントの名称、イベントタイプが含まれるカウントアップトリガに対応するカウンタＩＤのカウンタ６７０のカウント値を更新する。
【００７５】
さらに、カウンタ制御部７２０は、リスト生成部７１１０からカウンタ仕様定義ファイル６１０を記憶部に書き込んだ旨の通知、または通知されたカウンタ更新モードの種類に応じて、カウンタ６７０のカウント値をリセットする。
【００７６】
ＲＡＭ８００は、プログラムやデータの展開用メモリであり、前述したようにカウント判定部７１０が、各コンポーネントがログファイル６４０に書き込んだ詳細な動作結果と同じコンポーネントの名称およびキーが、カウント条件リスト６３０に記憶されていると判定した場合、図７に示す各情報を一時的に記憶する。
【００７７】
ＲＯＭ８５０は、制御部７００やカウント判定部７１０、リスト生成部７１１０等の各部を制御するプログラム等の格納用メモリである。
【００７８】
通信部９００は、複合機１０００と外部記憶装置１１００との通信を媒介する通信インタフェースであり、外部記憶装置１１００に記憶されたカウンタ仕様定義ファイル６１０を記憶部６００に記憶させる媒介手段である。
【００７９】
外部記憶装置１１００は、ＵＳＢ（Universal  Serial  Bus）メモリ、ＦＤ（Flexible Disk）等の外部記憶媒体であり、カウンタ仕様定義ファイル６１０を記憶する。
【００８０】
次に、上述した複合機１０００で行われる実行処理について説明する。まず、カウンタ仕様定義ファイル６１０を生成・更新する処理について説明する。
【００８１】
図９は、カウンタ仕様定義ファイル６１０が生成・更新され、カウントアップトリガリスト６２０、カウント条件リスト６３０が生成される手順を示すフローチャートである。尚、外部記憶装置１１００は、ユーザによって通信部９００に既にセットされた状態となっている。
【００８２】
本図に示すように、外部記憶装置１１００が通信部９００にセットされると、リスト生成部７１１０は、カウンタ仕様定義ファイル６１０を読み取り（ステップＳ９０１）、そのファイル名を比較して記憶部６００に既にカウンタ仕様定義ファイル６１０があるか比較し（ステップＳ９０２）、同じファイルがあるか否かを判定する（ステップＳ９０３）。
【００８３】
そして、リスト生成部７１１０は、記憶部６００に既にカウンタ仕様定義ファイル６１０がないと判定した場合（ステップＳ９０３；Ｎｏ）、リスト生成部７１１０は、記憶部６００にカウンタ仕様定義ファイル６１０を書き込み、その旨をカウンタ制御部７２０に通知する（ステップＳ９０４）。
【００８４】
そして、カウンタ制御部７２０は、リスト生成部７１１０から、カウンタ仕様定義ファイル６１０を書き込んだ旨の通知を受けると、そのカウンタ仕様定義ファイル６１０に含まれるカウンタＩＤに対応するすべてのカウンタ６７０のカウント値をリセットする（ステップＳ９０５）。
【００８５】
一方、リスト生成部７１１０は、記憶部６００に既にカウンタ仕様定義ファイル６１０があると判定した場合（ステップＳ９０３；Ｙｅｓ）、そのカウンタ仕様定義ファイル６１０のカウントＩＤの総数をカウントし（ステップＳ９０６）、カウンタ仕様定義ファイル６１０の１行目のカウントＩＤを読み取り（ステップＳ９０７）、そのカウンタＩＤが最後のカウンタＩＤであるか否かを判定する（ステップＳ９０８）。そして、そのカウンタＩＤが最後の行のカウンタＩＤであると判定した場合（ステップＳ９０８；Ｙｅｓ）、ステップＳ９１５に進む。
【００８６】
一方、そのカウンタＩＤが最後のカウンタＩＤでないと判定した場合（ステップＳ９０８；Ｎｏ）、カウンタ仕様定義ファイル６１０の中で、同じカウンタＩＤがあるか否かを判定する（ステップＳ９０９）。
【００８７】
そして、カウンタ仕様定義ファイル６１０に、同じカウンタＩＤがないと判定した場合（ステップＳ９０９；Ｎｏ）、そのカウンタＩＤに対応するカウントアップトリガ、カウント条件のカウンタ仕様定義の各情報を記憶する（ステップＳ９１０）。
【００８８】
一方、カウンタ仕様定義ファイル６１０に、同じカウンタＩＤがあると判定した場合（ステップＳ９０９；Ｙｅｓ）、そのカウンタＩＤをキーにして、ステップＳ９０１で読み取ったカウンタ仕様定義ファイル６１０と既に記憶されているカウントアップトリガ、カウント条件のカウンタ仕様定義の各情報を比較し（ステップＳ９１１）、これらの内容が一致するか否かを判定する（ステップＳ９１２）。
【００８９】
そして、リスト生成部７１１０は、これらの内容が一致すると判定した場合には（ステップＳ９１２；Ｙｅｓ）、次のステップに進み、これらの内容が一致しないと判定した場合には（ステップＳ９１２；Ｎｏ）、一致しない部分を外部記憶装置１１００に記憶されたカウンタ仕様定義ファイル６１０の内容に上書き更新して、ステップＳ９０７で読み取ったカウンタＩＤをＲＡＭ８００に記憶する（ステップＳ９１３）。
【００９０】
そして、ステップＳ９１０、ステップＳ９１２、ステップＳ９１３のいずれかの処理が終了すると、ステップＳ９０７で読み取ったカウンタＩＤに１を加え（ステップＳ９１４）、以降、カウンタＩＤが最後となるまでステップＳ９０７〜Ｓ９１４の処理を繰り返す。
【００９１】
そして、すべてのカウンタＩＤについてステップＳ９０７〜Ｓ９１４までの処理が終了すると、カウンタ制御部７２０は、リセット設定ファイル６５０を参照して、更新設定モードが１となっている、すなわちすべてのカウンタ６７０のカウント値をリセットするか否かを判定する（ステップＳ９１５）。
【００９２】
更新設定モードが１となっていると判定した場合（ステップＳ９１５；Ｙｅｓ）、カウンタＩＤに対応するすべてのカウンタ６７０のカウント値をリセットする（ステップＳ９１６）。
【００９３】
一方、更新設定モードが１となっていないと判定した場合（ステップＳ９１５；Ｎｏ）、さらに、更新設定モードが２となっているか、すなわち変更されたカウンタ仕様定義に対応するカウンタＩＤのカウンタ６７０のカウント値のみをリセットするか否かを判定する（ステップＳ９１７）。
【００９４】
そして、更新設定モードが２となっていると判定した場合（ステップＳ９１７；Ｙｅｓ）、ステップＳ９１３でＲＡＭ８００に記憶したカウントＩＤのカウント値のみリセットする（ステップＳ９１８）。
【００９５】
一方、更新設定モードが２となっていないと判定した場合（ステップＳ９１７；Ｎｏ）、カウンタ６７０のカウント値をリセットせずに次のステップに進む。
【００９６】
そして、リスト生成部７１１０は、ステップＳ９０５、ステップＳ９１６〜Ｓ９１８のいずれかの処理が終了すると、ステップＳ９０４で生成またはステップＳ９１３で更新されたカウンタ仕様定義ファイル６１０から、カウントアップトリガリスト６２０を生成し（ステップＳ９１９）、さらにカウント条件リスト６３０を生成し（ステップＳ９２０）、カウントアップトリガリスト６２０、カウント条件リスト６３０の生成・更新するすべての処理が終了する。
【００９７】
このように生成・更新されたカウンタ仕様定義ファイル６１０、カウントアップトリガリスト６２０、カウント条件リスト６３０を用いて、実際にユーザが複合機１０００のアプリケーションを利用する場合の処理手順について、まず一般的な処理手順を説明した後、具体的な処理手順を説明する。
【００９８】
図１０は、複合機１０００のアプリケーションをユーザが利用する場合の一般的な処理手順を示すシーケンス図である。尚、このシーケンス図では、ユーザは操作パネル１００を押下してアプリケーション部２００のコピーアプリ２１０を選択した場合について説明しているが、プリンタアプリ２２０、ＦＡＸアプリ２３０等他のアプリの場合も同様の手順で処理を行う。
【００９９】
まず、ユーザからの操作によって操作パネル１００はコピーアプリ２１０にコピー機能が選択された旨を通知する（ステップＳ１００１）。すると、コピーアプリ２１０は、制御部７００に対してジョブＩＤファイル６６０からジョブＩＤを取得するよう指示し、制御部７００からそのジョブＩＤを取得する（ステップＳ１００２）。
【０１００】
その後、コピーアプリ２１０の通知部９０００は、カウント判定部７１０にステップＳ１００２で取得したジョブＩＤを通知し、コピーアプリ２１０のジョブが開始される（ステップＳ１００３）。
【０１０１】
そして、コピーアプリ２１０は、操作パネル１００で指定された設定情報に従って、その機能に従った処理を行い、その処理結果をログファイル６４０に書き込むとともに、ジョブＩＤをカウント判定部７１０に通知する（ステップＳ１００４）。
【０１０２】
その後、カウント判定部７１０は、ジョブＩＤの通知を受けると、図１１に示すカウント判定処理を行う。このカウント判定処理では、まず、カウント判定部７１０は、各コンポーネントの通知部９０００がログファイル６４０に書き込んだ動作結果からカウント条件として、コンポーネントの名称、キー情報を読み取り、読み取ったコンポーネントの名称、キー情報が、カウント条件リスト６３０に存在するか否かを判定する（ステップＳ１１０１）。
【０１０３】
そして、読み取ったコンポーネントの名称、キー情報が、カウント条件リスト６３０に存在すると判定した場合（ステップＳ１１０１；Ｙｅｓ）、そのコンポーネントの名称とキー情報、およびそのキー情報に対応する値をログファイル６４０から読み取って、ＲＡＭ８００に書き込む（ステップＳ１１０２）。
【０１０４】
さらに、カウント判定部７１０は、ログファイル６４０に書き込まれた動作結果からカウントアップのタイミング（カウントアップトリガ）として、コンポーネントの名称、イベントタイプを読み取り、読み取ったコンポーネントの名称、イベントタイプが、カウントアップトリガリスト６２０に存在するか否かを判定する（ステップＳ１１０３）。
【０１０５】
そして、カウント判定部７１０は、カウンタ制御部７２０に対して、コンポーネントの名称、イベントタイプが、カウントアップトリガリスト６２０に含まれている旨を通知し、その後、カウンタ制御部７２０は、カウンタ６７０のカウント値を更新する（ステップＳ１１０４）。
【０１０６】
一方、ログファイル６４０から読み取ったコンポーネントの名称、キー情報が、カウント条件リスト６３０に存在しない（ステップＳ１１０１；Ｎｏ）、または読み取ったコンポーネントの名称、イベントタイプが、カウントアップトリガリスト６２０に存在しない（ステップＳ１１０３；Ｎｏ）と判定した場合は、カウンタ６７０のカウント値を更新せずに図１０の次のステップの処理に進む。
【０１０７】
このように、カウント条件の判定（ステップＳ１１０１）およびカウントアップトリガの判定（ステップＳ１１０３）のいずれの処理においても、判定結果が「Ｙｅｓ」の場合でなければ、カウンタ６７０のカウント値が更新されることはない。
【０１０８】
図１０に戻り、コピーアプリ２１０は、ステップＳ１００２で取得したジョブＩＤを印刷部３３０に送信する（ステップＳ１００５）。ジョブＩＤの通知を受けた印刷部３３０は、設定情報に従って印刷に関する処理を行うとともに、ジョブＩＤを加工部３２０に送信する(ステップＳ１００６)。
【０１０９】
さらに、ジョブＩＤを受信した加工部３２０は、設定情報に従って加工に関する処理を行うとともに、ジョブＩＤを読取部３１０に送信する（ステップＳ１００７）。そして、読取部３１０は、設定情報に従って読み取りに関する処理を行い、ジョブＩＤをカウント判定部に通知するとともに、動作結果をログファイル６４０に書き込み（ステップＳ１００８）、読み取りに関する処理が完了すると、加工部３２０に処理完了通知を行う（ステップＳ１００９）。カウント判定処理については、前述した処理と同じ処理を行うため、その説明を省略する。
【０１１０】
同様に、加工部３２０は、設定情報に従って加工に関する処理を行い、ジョブＩＤをカウント判定部に通知するとともに、動作結果をログファイル６４０に書き込み（ステップＳ１０１０）、読み取りに関する処理が完了すると、印刷部３３０に処理完了通知を行う（ステップＳ１０１１）。さらに、印刷部３３０は、ジョブＩＤをカウント判定部７１０に通知するとともに、設定情報に従って印刷に関する処理の動作結果をログファイル６４０に書き込み（ステップＳ１０１２）、印刷に関する処理が完了すると、コピーアプリ２１０に処理完了通知を行う（ステップＳ１０１３）。
【０１１１】
その後、コピーアプリ２１０は、カウント判定部７１０にジョブの終了通知を行い、カウント判定部７１０は、ジョブの終了通知を受けると、ステップＳ１１０２でＲＡＭ８００に書き込まれたコンポーネントの名称とキー情報、およびそのキー情報に対応する値をクリアし（ステップＳ１０１４）、コピーアプリ２１０は、その後、操作パネル１００に、ユーザが指定した一連のコピー処理が完了した旨を通知する（ステップＳ１０１５）。
【０１１２】
上述したステップＳ１００１〜Ｓ１０１５、Ｓ１１０１〜１１０４の処理のすべての処理が終了すると、ユーザが最初に操作パネル１００で指定した一連のコピー処理が完了する。
【０１１３】
尚、上述した処理手順の中では、読取部３１０の処理が終了した後（ステップＳ１００９）、加工部３２０は、ログファイル６４０に動作結果を書き込んでいるが、各コンポーネントは他のコンポーネントとは独立して動作しているので、読取部３１０の処理が終了する前に、加工部３２０がその動作結果をログファイル６４０に動作結果を書き込む場合もある。このことは、他のステップにおける処理の順序についても同様である。すなわち、ジョブＩＤさえ他のコンポーネントから通知されていれば、各コンポーネントは処理を開始する。
【０１１４】
続いて、上述した各種の処理について、図１２、図１３を用いてより具体的に説明する。以下の説明では、ユーザは、複合機１０００のコピーアプリ２１０を利用して、用紙サイズは指定せず（自動）、片面２ページの印刷物に対して、フルカラーの両面コピーを１部行う場合について説明している。また、ジョブＩＤファイルのジョブＩＤは初期値「０００００」がセットされているものとする。
【０１１５】
まず、操作パネル１００は上述したようなユーザからの指示を受けると、コピーアプリ２１０にコピー機能が選択された旨を通知する（ステップＳ１２０１）。すると、コピーアプリ２１０は、制御部７００に対してジョブＩＤファイル６６０からジョブＩＤを取得するよう指示し、制御部７００からジョブＩＤ「００００１」を取得する（ステップＳ１２０２）。
【０１１６】
続いて、コピーアプリ２１０の通知部９０００は、カウント判定部７１０にステップＳ１２０２で取得したジョブＩＤ「００００１」を通知し、コピーアプリ２１０のジョブが開始される（ステップＳ１２０３）。
【０１１７】
そして、コピーアプリ２１０はユーザの操作パネル１００の操作によって、コピーアプリ２１０の処理を開始し、その動作結果として図６の記録順１に示すように、共通属性としてコンポーネントの名称（copy_activity）、イベントタイプ（DICIDE_MODE）を、拡張属性としてキー情報（ACTIVITY_TYPE）、値（COPY）をログファイル６４０に書き込むとともに、カウント判定部７１０に、ジョブＩＤ「００００１」を通知する（ステップＳ１２０４）。
【０１１８】
その後、カウント判定部７１０は、ジョブＩＤ「００００１」の通知を受けると、図１３に示すカウント判定処理を行う。このカウント判定処理では、まず、カウント判定部７１０は、各コンポーネントの通知部９０００がログファイル６４０に書き込んだ動作結果であるコンポーネントの名称（copy_activity）、イベントタイプ（DICIDE_MODE）、キー情報（ACTIVITY_TYPE）、値（COPY）から、カウント条件としてコンポーネントの名称（copy_activity）、キー情報（ACTIVITY_TYPE）を読み取り、そのコンポーネントの名称（copy_activity）、キー情報（ACTIVITY_TYPE）が、カウント条件リスト６３０に存在するか否かを判定する（ステップＳ１３０１）。この場合は、図５に示すカウント条件リスト６３０にはこれらの条件が記憶されており、前述したコンポーネントの名称、キー情報が存在すると判定する。
【０１１９】
続いて、カウント判定部７１０は、そのコンポーネントの名称（copy_activity）、キー情報（ACTIVITY_TYPE）が、カウント条件リスト６３０に存在すると判定するので（ステップＳ１３０１；Ｙｅｓ）、これらのコンポーネントの名称とキー情報、およびそのキー情報に対応する値（COPY）をログファイル６４０から読み取って、ＲＡＭ８００に書き込む（ステップＳ１３０２）。
【０１２０】
さらに、カウント判定部７１０は、ログファイル６４０に書き込まれた動作結果からカウントアップのタイミング（カウントアップトリガ）として、コンポーネントの名称（copy_activity）、イベントタイプ（DICIDE_MODE）を読み取り、そのコンポーネントの名称（copy_activity）、イベントタイプ（DICIDE_MODE）が、カウントアップトリガリスト６２０に存在するか否かを判定する（ステップＳ１３０３）。
【０１２１】
そして、カウント判定部７１０は、コンポーネントの名称（copy_activity）、イベントタイプ（DICIDE_MODE）が、カウントアップトリガリスト６２０に存在すると判定した場合には（ステップＳ１３０３；Ｙｅｓ）、その旨をカウンタ制御部７２０に通知し、その後、カウンタ制御部７２０は、カウンタ６７０のカウント値を更新する（ステップＳ１３０４）。この例では、コンポーネントの名称（copy_activity）、イベントタイプ（DICIDE_MODE）は、カウントアップトリガリスト６２０に存在しないと判定する。
【０１２２】
図１２に戻り、コピーアプリ２１０は、ステップＳ１２０２で取得したジョブＩＤ「００００１」を印刷部３３０に送信する（ステップＳ１２０５）。ジョブＩＤの通知を受けた印刷部３３０は、ジョブＩＤ「００００１」をカウント判定部７１０に送信するとともに設定情報に従って印刷に関する処理を行い図６の記録順２に示すような動作結果をログファイル６４０に書き込み（ステップＳ１２０６）、その後ジョブＩＤ「００００１」をカウント判定部７１０に送信し加工部３２０に送信する(ステップＳ１２０７)。
【０１２３】
このように、カウント判定部７１０は、前述したステップＳ１３０１〜Ｓ１３０４の処理を行い、カウント条件の判定（ステップＳ１３０１）、およびカウントアップトリガの判定（ステップＳ１３０３）のいずれの場合も「Ｙｅｓ」となる場合にのみ、カウンタ６７０のカウント値を更新する。図１２のステップＳ１２０８〜Ｓ１２１９までの各処理においてログファイル６４０に書き込んだ記録順３〜１２までの動作結果が、カウント条件の判定（ステップＳ１３０１）、およびカウントアップトリガの判定（ステップＳ１３０３）において共に「Ｙｅｓ」となることはないので、カウンタ６７０のカウント値を更新することなく、次のステップＳ１２２０に進む。ステップＳ１２１９の処理が終了した段階では、図１２に示すように、読取部３１０は２ページの読み取りを完了し、加工部３２０は１ページ目の加工処理を完了し、印刷部３３０は、１ページ目の印刷処理が完了した直後の状態となっている。
【０１２４】
印刷部３３０は、印刷処理をした動作結果を、ログファイル６４０に書き込む（記録順１３）と共に、ジョブＩＤ「００００１」をカウント判定部７１０に送信する（ステップＳ１２２０）。
【０１２５】
その後、カウント判定部７１０は、ジョブＩＤ「００００１」の通知を受けると、図１３に示すカウント判定処理において、ログファイル６４０に書き込まれた動作結果（記録順１３）から、カウント条件としてコンポーネントの名称（out_print）、キー情報（SIZE）を読み取り、これらの内容が、カウント条件リスト６３０に存在するか否かを判定する（ステップＳ１３０１）。この場合は、図５に示すカウント条件リスト６３０にはこれらの条件が記憶されており、存在すると判定される。
【０１２６】
続いて、カウント判定部７１０は、そのコンポーネントの名称（out_print）、キー情報（SIZE）が、カウント条件リスト６３０に存在すると判定するので（ステップＳ１３０１；Ｙｅｓ）、これらのコンポーネントの名称とキー情報、およびそのキー情報に対応する値（COPY）をログファイル６４０から読み取って、図７に示すようにＲＡＭ８００に書き込む（ステップＳ１３０２）。
【０１２７】
続いて、カウント判定部７１０は、ログファイル６４０に書き込まれた動作結果から、コンポーネントの名称（out_print）、イベントタイプ（OUTPUT_PAGE_END）を読み取り、これらの内容が、カウントアップトリガリスト６２０に存在するか否かを判定する（ステップＳ１３０３）。この例では、コンポーネントの名称（out_print）、イベントタイプ（OUTPUT_PAGE_END）は、カウントアップトリガリスト６２０に存在すると判定し、その旨をカウンタ制御部７２０に通知し、その後、カウンタ制御部７２０は、カウンタ６７０のカウント値を更新する（ステップＳ１３０４）。
【０１２８】
図１２に戻り、その後ステップＳ１２２１〜Ｓ１２２３、Ｓ１２２５〜Ｓ１２２８までの各処理では、前述と同様の理由でカウンタ６７０のカウント値を更新することはない。しかし、ステップＳ１２２４では、ステップＳ１２２０と同様に、カウント条件の判定（ステップＳ１３０１）、およびカウントアップトリガの判定（ステップＳ１３０３）のいずれの場合も「Ｙｅｓ」となるような動作結果がログファイル６４０に書き込まれているので、図１３に示すカウント判定処理において、カウンタ６７０のカウント値を更新する（ステップＳ１３０４）。
【０１２９】
そして、ステップＳ１２２８までの処理（図６に示す記録順１９までの処理）が完了すると、コピーアプリ２１０は、ジョブの終了をカウント判定部７１０に通知し（ステップＳ１２２９）、カウント判定部７１０は、ＲＡＭ８００に記憶された図７に示すようなデータをクリアし、その旨をコピーアプリ２１０に通知する（ステップＳ１２３０）。その後、コピーアプリ２１０は、操作パネル１００に、ユーザが指定した処理が完了した旨を表示させ（ステップＳ１２３１）、本実施の形態にかかるすべての処理が終了し、ユーザが操作パネル１００で指定した片面２ページの印刷物に対する１部のフルカラーの両面コピーが終了する。
【０１３０】
このように、本実施の形態においては、１または複数のコンポーネントによって画像形成処理を行う画像形成装置において、カウンタ６７０がコンポーネントの動作をカウントしてカウント値を更新し、記憶部６００がカウンタ６７０ごとに、画像形成処理に関するカウンタ仕様定義ファイル６１０と、コンポーネントの動作の結果を示す動作結果とを記憶し、通知部９０００がコンポーネントに設けられ、記憶部６００に動作結果を書き込み、カウント判定部７１０が記憶部６００に記憶された動作結果とカウンタ仕様定義ファイル６１０とに基づいてコンポーネントの動作をカウントするか否かを判定し、カウンタ制御部７２０がカウント判定部７１０がコンポーネントの動作をカウントすると判定した場合に、カウント値を更新するようにカウンタ６７０を制御するので、各コンポーネント間の依存度が低く抑えられ、コンポーネントのカスタマイズを容易に行うことができる。
【０１３１】
また、本実施の形態においては、カウンタ仕様定義ファイル６１０は、カウンタ６７０に固有のカウンタＩＤと、コンポーネントの動作のカウントを開始するタイミングを示すカウントアップトリガと、コンポーネントの動作のカウント条件とを対応付け、カウント判定部７１０は、カウントアップトリガおよびカウント条件のいずれもが、動作結果に含まれる場合に、コンポーネントの動作をカウントすると判定するので、カウントに必要な最小限の要件を用いてカウンタ６７０のカウント値を更新するか否かの判定ができる。
【０１３２】
さらに、本実施の形態においては、リスト生成部７１１０が、カウンタ仕様定義ファイル６１０の中からカウントアップトリガリスト６２０とカウント条件リスト６３０とをリスト形式で生成し、カウント判定部７１０は、リスト生成部７１１０が生成したリスト形式のカウントアップトリガリスト６２０とカウント条件リスト６３０とに基づいてコンポーネントの動作をカウントするか否かを判定するので、カウンタ６７０のカウント値を更新するか否かを判定する場合のパフォーマンスを向上することができる。
【０１３３】
また、本実施の形態においては、リスト生成部７１１０は、さらに、カウントアップトリガリスト６２０とカウント条件リスト６３０のいずれかが変更されているか否かを判定し、カウンタ制御部７２０は、リスト生成部７１１０によってカウントアップトリガリスト６２０とカウント条件リスト６３０のいずれかが変更されていると判定された場合に、変更されたカウントアップトリガリスト６２０とカウント条件リスト６３０に対応するカウンタＩＤのカウンタ６７０のカウント値を初期化するようにカウンタ６７０を制御するので、仕様が変更されたカウンタ６７０のカウント値のみを容易にリセットすることができる。
【０１３４】
また、本実施の形態においては、動作結果には、ジョブＩＤを含み、カウント判定部７１０は、ジョブＩＤごとに、動作結果とカウンタ仕様定義ファイル６１０とに基づいてコンポーネントの動作をカウントするか否かを判定するので、各コンポーネントの動作結果がそれぞれ別々に記憶部６００に書き込まれた場合であっても、コンポーネントごとの動作結果を紐付けでき、カウンタ６７０のカウント値を更新するか否かを容易に判定することができる。
【０１３５】
さらに、本実施の形態においては、動作結果情報には、ページ番号を含み、カウント判定部７１０は、さらに、ページ番号ごとに、動作結果とカウンタ仕様定義ファイル６１０とに基づいてコンポーネントの動作をカウントするか否かを判定するので、各コンポーネントの動作結果がそれぞれ別々に記憶部６００に書き込まれた場合であっても、コンポーネントごとの動作結果情報を紐付けでき、カウンタ６７０のカウント値を更新するか否かをより容易にかつ細やかに判定することができる。
【０１３６】
また、本実施の形態においては、記憶部６００は、動作結果を累積して記憶し、カウント判定部７１０は、累積して記憶された動作結果とカウンタ仕様定義ファイル６１０とに基づいてコンポーネントの動作をカウントするか否かを判定するので、通知部９０００が書き込んだ動作結果の蓄積およびその動作結果を用いた各コンポーネントのカウンタのカウント値の２つの情報を保持することができる。
【０１３７】
また、本実施の形態においては、ＲＡＭ８００が動作結果のうちカウント条件リスト６３０に一致するもののみを一時的に記憶し、カウント判定部７１０は、ＲＡＭ８００に記憶されたカウント条件とカウンタ仕様定義ファイル６１０とに基づいて、コンポーネントの動作をカウントするか否かを判定するので、ＲＡＭ８００にカウンタ６７０のカウント値を更新するか否かの判定に不必要なカウント条件を記憶させることなく、カウンタ６７０のカウント値を更新するか否かを効率的に判定することができる。
【０１３８】
さらに、本実施の形態においては、カウンタ仕様定義ファイル６１０は、ＸＭＬ（eXtensible  Markup  Language）形式またはＣＳＶ（Comma  Separated  Value）形式のファイルであるので、カウンタ仕様のカスタマイズを容易に行うことができる。
【０１３９】
（第２の実施の形態）
上述した第１の実施の形態においては、カウント判定部７１０が、各コンポーネントの通知部９０００からの動作結果を受けて、カウントアップトリガリスト６２０とカウント条件リスト６３０を参照していずれの条件にも「Ｙｅｓ」となる場合には、すべてカウンタ６７０のカウント値を更新することとしていた。しかし、各コンポーネントのメンテナンスを行う場合や、用紙詰まり（ジャム）が発生した場合のように、各コンポーネントの動作結果を受けた場合であっても、カウンタ６７０のカウント値を更新すべきでない場合も存在する。そこで、そのような場合には、あらかじめ動作結果とともにカウントしない旨の情報をログファイル６４０に書き込み、カウント判定部７１０は、そのカウントしない旨の情報がある場合には、動作結果が書き込まれていてもカウント判定処理を行わない場合について説明する。
【０１４０】
図１４は、第２の実施の形態にかかる複合機２０００の構成を示すブロック図である。第２の実施の形態にかかる複合機２０００は、通知部９１００、ログファイル６４００、カウント判定部７１００、ＲＡＭ８０００を備え、これらはカウンタ６７０のカウント値を更新しない旨の情報の書き込みや記憶を行う点で第１の実施の形態にかかる複合機１０００と異なっている。以下の説明では、上述した第１の実施の形態と同一の構成要素には同一の符号を付してその説明を省略している。
【０１４１】
通知部９１００は、各コンポーネントの動作結果のほかメンテナンス状態や用紙詰まり状態等にある場合には、ログファイル６４００に、カウンタ６７０のカウント値を更新しない旨の情報を書き込む。具体的には図１５の網掛け部分（記録順１）に示すように、キー情報として（COUNT_TARGET）、及びそのキー情報の値として（FALSE）を書き込む。
【０１４２】
カウント判定部７１００は、図１６に示すように、カウント判定処理の中で、図１６の網掛け部分に示すように、ＲＡＭ８０００にキー情報（COUNT_TARGET）、及びそのキー情報の値（FALSE）を書き込む。
【０１４３】
続いて、第２の実施の形態における複合機２０００で行われる実行処理について説明する。第２の実施の形態にかかる複合機２０００は、第１の実施の形態にかかる複合機１０００における処理と比べて、カウントしない旨の情報を含んだ動作結果がログファイル６４００に書き込まれ、その動作結果を用いてカウンタ６７０のカウント値を更新するか否かを判定する部分の処理のみが異なる。そこで、図１７、図１８を用いてこれらの処理について説明する。なお、これらの処理以外の処理については、第１の実施の形態にかかる処理と同じ処理内容であるため、第１の実施の形態にかかる処理と同一の処理（ステップＳ１００１〜Ｓ１００３、Ｓ１００５〜Ｓ１００７、Ｓ１００９、Ｓ１０１１、Ｓ１０１３〜Ｓ１０１５）については、同一の符号を付してその説明を省略している。また、以下では、ユーザが操作パネル１００からコピーアプリ２１０を選択したが、その途中で用紙詰まり（ジャム）が生じた場合について説明している。
【０１４４】
図１７のステップＳ１７０１において、コピーアプリ２１０は、操作パネル１００で指定された設定情報に従って、その機能に従った処理を行ったが、用紙が正しく搬送されておらず処理を実行できないため、カウントしない旨の結果をログファイル６４０に書き込むとともに、ジョブＩＤをカウント判定部７１００に通知する（ステップＳ１７０１）。
【０１４５】
その後、カウント判定部７１００は、ジョブＩＤの通知を受けると、図１８に示すカウント判定処理を開始する。カウント判定部７１００は、図１５に示すように、ログファイル６４００からカウントしない旨のキー情報（COUNT_TARGET）、及びそのキー情報の値として（FALSE）を読み取るので、他のカウント条件が書き込まれている場合であっても、それらの情報が、カウント条件リスト６３０に存在するか否かを判定することはない。
【０１４６】
他のステップＳ１７０２、Ｓ１７０３において動作結果情報が通知される場合も同様の処理を行い、カウント判定部７１００は、カウント条件を判定する処理（ステップＳ１８０１）において、キー情報（COUNT_TARGET）、及びそのキー情報の値として（FALSE）を読み取った場合には、図１６に示すように、ＲＡＭ８０００にはそれらの情報を書き込むものの、それ以降のステップＳ１８０３〜Ｓ１８０４の処理を行わず、ユーザが操作パネル１００で指定したコピー処理を終了する。
【０１４７】
このように、本実施の形態においては、通知部９１００は、さらに、動作結果として、コンポーネントの動作をカウントしない旨を記憶部６００に書き込み、カウント判定部７１００は、さらに、動作結果がコンポーネントの動作をカウントしない旨が含まれているか否かを判定し、カウンタ制御部７２０は、さらに、動作結果に、コンポーネントの動作をカウントしない旨が含まれていると判定された場合には、カウント値を更新しないようにカウンタ６７０を制御するので、カウンタのカウント値を更新するか否かをより容易にかつより効率的に判定することができる。
【０１４８】
図１９は、第１〜２の実施の形態にかかる複合機のハードウェア構成を示すブロック図である。本図に示すように、この複合機１０００、２０００は、コントローラ１０とエンジン部（Engine）６０とをＰＣＩ（Peripheral Component Interconnect）バスで接続した構成となる。コントローラ１０は、複合機１０００、２０００全体の制御と描画、通信、図示しない操作部からの入力を制御するコントローラである。エンジン部６０は、ＰＣＩバスに接続可能なプリンタエンジンなどであり、たとえば白黒プロッタ、１ドラムカラープロッタ、４ドラムカラープロッタ、スキャナまたはファックスユニットなどである。なお、このエンジン部６０には、プロッタなどのいわゆるエンジン部分に加えて、誤差拡散やガンマ変換などの画像処理部分が含まれる。
【０１４９】
コントローラ１０は、ＣＰＵ１１と、ノースブリッジ（ＮＢ）１３と、システムメモリ（ＭＥＭ−Ｐ）１２と、サウスブリッジ（ＳＢ）１４と、ローカルメモリ（ＭＥＭ−Ｃ）１７と、ＡＳＩＣ（Application Specific Integrated Circuit）１６と、ハードディスクドライブ（ＨＤＤ）１８とを有し、ノースブリッジ（ＮＢ）１３とＡＳＩＣ１６との間をＡＧＰ（Accelerated Graphics Port）バス１５で接続した構成となる。また、ＭＥＭ−Ｐ１２は、ＲＯＭ（Read Only Memory）１２ａと、ＲＡＭ(Random Access Memory)１２ｂとをさらに有する。
【０１５０】
ＣＰＵ１１は、複合機１０００、２０００の全体制御をおこなうものであり、ＮＢ１３、ＭＥＭ−Ｐ１２およびＳＢ１４からなるチップセットを有し、このチップセットを介して他の機器と接続される。
【０１５１】
ＮＢ１３は、ＣＰＵ１１とＭＥＭ−Ｐ１２、ＳＢ１４、ＡＧＰ１５とを接続するためのブリッジであり、ＭＥＭ−Ｐ１２に対する読み書きなどを制御するメモリコントローラと、ＰＣＩマスタおよびＡＧＰターゲットとを有する。
【０１５２】
ＭＥＭ−Ｐ１２は、プログラムやデータの格納用メモリ、プログラムやデータの展開用メモリ、プリンタの描画用メモリなどとして用いるシステムメモリであり、ＲＯＭ１２ａとＲＡＭ１２ｂとからなる。ＲＯＭ１２ａは、プログラムやデータの格納用メモリとして用いる読み出し専用のメモリであり、ＲＡＭ１２ｂは、プログラムやデータの展開用メモリ、プリンタの描画用メモリなどとして用いる書き込みおよび読み出し可能なメモリである。
【０１５３】
ＳＢ１４は、ＮＢ１３とＰＣＩデバイス、周辺デバイスとを接続するためのブリッジである。このＳＢ１４は、ＰＣＩバスを介してＮＢ１３と接続されており、このＰＣＩバスには、ネットワークインターフェース（Ｉ／Ｆ）部なども接続される。
【０１５４】
ＡＳＩＣ１６は、画像処理用のハードウェア要素を有する画像処理用途向けのＩＣ（Integrated Circuit）であり、ＡＧＰ１５、ＰＣＩバス、ＨＤＤ１８およびＭＥＭ−Ｃ１７をそれぞれ接続するブリッジの役割を有する。このＡＳＩＣ１６は、ＰＣＩターゲットおよびＡＧＰマスタと、ＡＳＩＣ１６の中核をなすアービタ（ＡＲＢ）と、ＭＥＭ−Ｃ１７を制御するメモリコントローラと、ハードウェアロジックなどにより画像データの回転などをおこなう複数のＤＭＡＣ（Direct Memory Access Controller）と、エンジン部６０との間でＰＣＩバスを介したデータ転送をおこなうＰＣＩユニットとからなる。このＡＳＩＣ１６には、ＰＣＩバスを介してＦＣＵ（Fax Control Unit）３０、ＵＳＢ（Universal Serial Bus）４０、ＩＥＥＥ１３９４（the Institute of Electrical and Electronics Engineers 1394）インターフェース５０が接続される。操作表示部２０はＡＳＩＣ１６に直接接続されている。
【０１５５】
ＭＥＭ−Ｃ１７は、コピー用画像バッファ、符号バッファとして用いるローカルメモリであり、ＨＤＤ（Hard Disk Drive）１８は、画像データの蓄積、プログラムの蓄積、フォントデータの蓄積、フォームの蓄積を行うためのストレージである。
【０１５６】
ＡＧＰ１５は、グラフィック処理を高速化するために提案されたグラフィックスアクセラレーターカード用のバスインターフェースであり、ＭＥＭ−Ｐ１２に高スループットで直接アクセスすることにより、グラフィックスアクセラレーターカードを高速にするものである。
【０１５７】
なお、本実施の形態の複合機１０００、複合機２０００で実行されるプログラムは、ＲＯＭ等に予め組み込まれて提供される。本実施の形態の複合機１０００、複合機２０００で実行されるプログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ（Digital  Versatile  Disk）等のコンピュータで読み取り可能な記録媒体に記録して提供するように構成してもよい。
【０１５８】
さらに、本実施の形態の複合機１０００、複合機２０００で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、本実施形態の複合機１０００、複合機２０００で実行されるプログラムをインターネット等のネットワーク経由で提供または配布するように構成してもよい。
【０１５９】
本実施の形態の複合機１０００、複合機２０００で実行されるプログラムは、上述した各部（カウント判定部、カウンタ制御部、リスト生成部等）を含むモジュール構成となっており、実際のハードウェアとしてはＣＰＵ（プロセッサ）が上記ＲＯＭからプログラムを読み出して実行することにより上記各部が主記憶装置上にロードされ、カウント判定部、カウンタ制御部、リスト生成部等が主記憶装置上に生成されるようになっている。
【０１６０】
なお、上述した実施の形態では、複合機を一例として説明したが、本発明は複合機に限る必要はなく、コピー機、ファクシミリ、プリンタを含む様々な装置に適用することができる。
【産業上の利用可能性】
【０１６１】
以上のように、本発明にかかる画像形成装置、カウンタ制御方法、カウンタ制御プログラムは、１又は複数のカウンタを備える画像形成装置において画像形成に関する処理を行う際に有用であり、特に、コンポーネントがカスタマイズされる場合に、画像形成に関する処理においてカウンタのカウント値を更新する技術に適している。
【図面の簡単な説明】
【０１６２】
【図１】第１の実施の形態にかかる複合機の構成を示す概念図である。
【図２】第１の実施の形態にかかる複合機の構成を示すブロック図である。
【図３】カウンタ仕様定義ファイルおよびカウンタ仕様定義ファイルとカウンタの関係の例を示す図である。
【図４】第１の実施の形態にかかる複合機のカウントアップトリガリストの例を示す図である。
【図５】第１の実施の形態にかかる複合機のカウント条件リストの例を示す図である。
【図６】第１の実施の形態にかかる複合機のログファイルに書き込まれる動作結果の例を示す図である。
【図７】第１の実施の形態にかかる複合機のＲＡＭに記憶されるカウント条件の例を示す図である。
【図８】第１の実施の形態にかかる複合機のリスト生成部がカウントアップトリガリスト、カウント条件リストを生成する場合の処理の概念図である。
【図９】第１の実施の形態にかかる複合機においてカウントアップトリガリスト、カウント条件リストを生成するまでの実行手順を示すフローチャートである。
【図１０】第１の実施の形態にかかる複合機において各コンポーネントの動作結果を用いてカウント判定するまでの一般的な実行手順を示すシーケンス図である。
【図１１】図１０に示すカウント判定処理における一般的な処理手順を示すシーケンス図である。
【図１２】第１の実施の形態にかかる複合機において各コンポーネントの動作結果を用いてカウント判定するまでの具体的な実行手順を示すシーケンス図である。
【図１３】図１２に示すカウント判定処理における具体的な処理手順を示すシーケンス図である。
【図１４】第２の実施の形態にかかる複合機の構成を示すブロック図である。
【図１５】第２の実施の形態にかかる複合機のログファイルに書き込まれる動作結果の例を示す図である。
【図１６】第２の実施の形態にかかる複合機のＲＡＭに記憶されるカウント条件の例を示す図である。
【図１７】第２の実施の形態にかかる複合機において各コンポーネントの動作結果を用いてカウント判定するまでの一般的な実行手順を示すシーケンス図である。
【図１８】図１７に示すカウント判定処理における一般的な処理手順を示すシーケンス図である。
【図１９】第１、第２の実施の形態にかかる複合機のハードウェア構成を示す説明図である。
【図２０】従来の複合機の構成を示す概念図である。
【図２１】従来の複合機のカウンタ仕様が定義される様子を示す概念図である。
【符号の説明】
【０１６３】
１００    操作パネル
２００    アプリケーション部
２１０    コピーアプリ
２２０    プリンタアプリ
２３０    ＦＡＸアプリ
２４０    スキャナアプリ
３００    サービス部
３１０    読取部
３２０    加工部
３３０    印刷部
４００    エンジン制御部
４１０    スキャナ制御部
４２０    露光制御部
４３０    プロッタ制御部
５００    エンジン部
６００    記憶部
６１０    カウンタ仕様定義ファイル
６２０    カウントアップトリガリスト
６３０    カウント条件リスト
６４０  ６４００    ログファイル
６５０    リセット設定ファイル
６６０    ジョブＩＤファイル
６７０    カウンタ
７００    制御部
７１０  ７１００    カウント判定部
７１１０    リスト生成部
７２０    カウンタ制御部
９００    通信部
１０００  ２０００    複合機
１１００    外部記憶装置
９０００  ９１００    通知部
【図１】
0004949981.tif 000002
【図２】
0004949981.tif 000003
【図３】
0004949981.tif 000004
【図４】
0004949981.tif 000005
【図５】
0004949981.tif 000006
【図６】
0004949981.tif 000007
【図７】
0004949981.tif 000008
【図８】
0004949981.tif 000009
【図９】
0004949981.tif 000010
【図１０】
0004949981.tif 000011
【図１１】
0004949981.tif 000012
【図１２】
0004949981.tif 000013
【図１３】
0004949981.tif 000014
【図１４】
0004949981.tif 000015
【図１５】
0004949981.tif 000016
【図１６】
0004949981.tif 000017
【図１７】
0004949981.tif 000018
【図１８】
0004949981.tif 000019
【図１９】
0004949981.tif 000020
【図２０】
0004949981.tif 000021
【図２１】
0004949981.tif 000022