以下、図面に基づいて本発明の実施の形態を説明する。
[実施の形態]
(ソフトウェア構成例)
図1は、本発明の実施の形態における複合機のソフトウェア構成例を示す図である。ここで、複合機とは、プリンタ、コピー、スキャナ、又はFAX等の複数の機能を一台の筐体において実現する画像処理装置(画像形成装置)をいう。
図1に示されるように、複合機1におけるソフトウェアは、ユーザインタフェース層10、コントロール層20、アプリケーションロジック層30、デバイスサービス層40、及びデバイス制御層50等により構成される。なお、図中における各層の上下関係は、層間の呼び出し関係に基づいている。すなわち、基本的に図中において上にある層が下の層を呼び出す。
ユーザインタフェース層10は、機能(例えば、コピー、印刷、スキャン、FAX送信)の実行要求を受け付けるための機能が実装されている部分であり、例えば、通信サーバ部11及びローカルUI部12等が含まれる。通信サーバ部11は、例えば、非図示のクライアントPC(Personal Computer)等からネットワーク経由で要求を受け付ける。ローカルUI部12は、例えば、非図示のオペレーションパネルを介して入力される要求を受け付ける。ユーザインタフェース層10において受け付けられた要求は、コントロール層20に伝えられる。
コントロール層20は、要求された機能を実現するための処理を制御するための機能が実装されている部分である。具体的には、要求された機能に応じて、アプリケーションロジック層30における各フィルタ(入力フィルタ、変換フィルタ、出力フィルタ)を接続し、接続されたフィルタに基づいて機能の実行を制御する。なお、本実施の形態において「複合機1の機能」とは、複合機1がユーザに対して提供する一つのまとまった単位(要求が入力されて最終的な出力が得られるまで)のサービスと同義であり、ソフトウェア的には一つのまとまった単位のサービスを提供するアプリケーションと同義である。
アプリケーションロジック層30は、それぞれが複合機1において提供される機能の一部を実現する部品(ソフトウェア部品)群が実装されている部分である。すなわち、アプリケーションロジック層30における部品を組み合わせることにより一つの機能が実現される。本実施の形態では、各部品を「フィルタ」と呼ぶ。これは、複合機1のソフトウェアアーキテクチャが「パイプ&フィルタ」と呼ばれる考え方に基づくことによる。パイプ&フィルタの概念及びアプリケーションロジック層30を構成する各部品については図2を用いて後述する。
図1において、アプリケーションロジック層30は、さらに、コピーアクティビティ31a、プリンタアクティビティ31b、及びマルチ文書アクティビティ31c等のアクティビティ31を含む。本実施の形態において「アクティビティ」とは、予め固定的に定義されたフィルタの組み合わせによって、一つの「機能」(複合機1がユーザに対して提供する一つのまとまった単位のサービス又はアプリケーション)を実現するソフトウェアである。アクティビティについては図35等を用いて後述する。
図1において、コピーアクティビティ31aは、読取フィルタ301と、文書加工フィルタ311と、印刷フィルタ321との組み合わせにより、コピー機能(コピーアプリケーション)を実現するアクティビティ31である。
プリンタアクティビティ31bは、PC文書受信フィルタ305と、文書変換フィルタ312と、印刷フィルタ321との組み合わせにより、印刷機能(プリンタアプリケーション)を実現するアクティビティ31である。
マルチ文書アクティビティ31cは、入力フィルタ、変換フィルタ、及び出力フィルタのそれぞれについて、自由な組み合わせが可能なアクティビティ31である。
なお、各アクティビティ31は独立しており、アクティビティ31間における依存関係(呼び出し関係)は基本的に存在しない。したがって、アクティビティ31単位で追加(インストール)又は削除(アンインストール)が可能である。よって、図1に示されているアクティビティ31以外にも、必要に応じて各種のフィルタの組み合わせによるアクティビティ31を作成し、インストールすることができる。
デバイスサービス層40は、アプリケーションロジック層30における各フィルタから共通に利用される下位機能が実装されている部分であり、例えば、画像パイプ41及びデータ管理部42等が含まれる。画像パイプ41は、パイプ(パイプについては図2を用いて後述する)の機能を実現する。即ち、或るフィルタからの出力データを次のフィルタに伝達する。データ管理部42は、各種のデータベースを表現する。例えば、ユーザ情報が登録されたデータベースや、文書又は画像データ等が蓄積されるデータベース等が相当する。
デバイス制御層50は、デバイス(ハードウェア)を制御するドライバと呼ばれるプログラムモジュール群が実装されている部分であり、例えば、スキャナ制御部51、プロッタ制御部52、メモリ制御部53、Tel回線制御部54、及びネットワーク制御部55等が含まれる。各制御部は、当該制御部の名前に付けられているデバイスを制御する。
(パイプ&フィルタの概念)
図2は、パイプ&フィルタの概念を説明するための図である。図2において、「F」はフィルタを示し、「P」はパイプを示す。図中に示されるように、各フィルタはパイプによって接続される。フィルタは、入力されたデータに対して変換を施し、その結果を出力する。パイプは、フィルタから出力されたデータを次のフィルタに伝達する。
すなわち、本実施の形態における複合機1では、各機能をドキュメント(データ)に対する「変換」の連続として捉える。複合機1の各機能は、ドキュメントの入力、加工、及び出力によって構成されるものとして一般化することができる。そこで「入力」、「加工」、及び「出力」を「変換」として捉え、一つの「変換」を実現するソフトウェア部品がフィルタとして構成される。入力を実現するフィルタを特に「入力フィルタ」という。また、加工を実現するフィルタを特に「変換フィルタ」という。更に、出力を実現するフィルタを特に「出力フィルタ」という。なお、各フィルタは独立しており、フィルタ間における依存関係(呼び出し関係)は基本的に存在しない。したがって、フィルタ単位で追加(インストール)又は削除(アンインストール)が可能とされている。
前述した図1において、アプリケーションロジック層30には、入力フィルタとして、読取フィルタ301、保管文書読出フィルタ302、メール受信フィルタ303、FAX受信フィルタ304、PC文書受信フィルタ305、レポートフィルタ306等が含まれている。
読取フィルタ301は、スキャナによる画像データの読み取りを制御し、読み取られた画像データを出力する。保管文書読出フィルタ302は、複合機1の記憶装置に保管されている文書データ(画像データ)を読み出し、読み出されたデータを出力する。メール受信フィルタ303は、電子メールの受信し、当該電子メールに含まれているデータを出力する。FAX受信フィルタ304は、FAX受信を制御し、受信されたデータを出力する。PC文書受信フィルタ305は、非図示のクライアントPCから印刷データを受信し、受信された印刷データを出力する。レポートフィルタ306は、複合機1の設定情報や履歴情報等を、例えば表形式に整形されたデータとして出力する。
また、変換フィルタとしては、文書加工フィルタ311、文書変換フィルタ312、マーキング埋込フィルタ313などが含まれている。文書加工フィルタ311は、入力されたデータに所定の画像変換処理(集約、拡大、又は縮小等)を施し、出力する。文書変換フィルタ312は、レンダリング処理を実行する。すなわち、入力されたPostScriptデータをビットマップデータに変換して出力する。マーキング埋込フィルタ313は、入力されたデータにマーキングを埋め込む処理を行って出力する。マーキングとは、印刷する紙にバーコードなどの形で任意の情報を埋め込み、その紙を後から読み取った時にその任意の情報を検出して利用するという機能である。また、マーキング埋込とは、印刷する紙に任意の情報を埋め込むことである。
また、出力フィルタとしては、印刷フィルタ321、保管文書登録フィルタ322、メール送信フィルタ323、FAX送信フィルタ324、PC文書送信フィルタ325、及びプレビューフィルタ326等が含まれている。
印刷フィルタ321は、入力されたデータをプロッタに出力(印刷)させる。保管文書登録フィルタ322は、入力されたデータを複合機1内のハードディスク内に保存する。メール送信フィルタ323は、入力されたデータを電子メールに添付して送信する。FAX送信フィルタ324は、入力されたデータをFAX送信する。PC文書送信フィルタ325は、入力されたデータをクライアントPCに送信する。プレビューフィルタ326は、入力されたデータを、複合機1のオペレーションパネルにプレビュー表示させる。
以上説明してきたパイプ&フィルタの概念を適用することにより、以下のような利点がある。その利点とは、各フィルタは独立しており、フィルタ間における依存関係(呼び出し関係)は基本的に存在しないことにより、自由に入力、変換、出力を組み合わせることができる点である。また、後からフィルタを追加する際も、既存のフィルタには手を加えないでよい点である。さらには、機能のカスタマイズや拡張が簡単にできる点である。
ところで、各フィルタが自身の機能を実現するには、他のフィルタの情報が必要となる場合がある。しかしながら、フィルタ同士には依存がないので、他のどのフィルタがその情報を持っているかがわからない。本実施の形態における画像処理装置では図3以降に示す機能及び動作などによりこのような点を考慮している。
(機能の構成)
図3は、本実施の形態における画像処理装置の機能構成例を示す図である。図3において、本実施の形態における複合機1は、第一の処理手段110、第二の処理手段120、第三の処理手段130などの組み合わせにより所定の機能を実現する。例えば、第一の処理手段が読取フィルタ301、第二の処理手段が文書変換フィルタ312、第三の処理手段が印刷フィルタ321の組み合わせである場合には、読み取った画像データにレンダリング処理を施して印刷出力を行う機能を実現する。
なお、図3は3つの処理手段の組み合わせである場合を示すが、この場合に限らない。複合機1が実現する機能に応じてその組み合わせの個数及び種類は適宜変更されるものとする。また、各々の処理手段は、例えば上記の入力フィルタ、出力フィルタ又は変換フィルタなどのように画像データの入力、出力、又は画像データに対する画像処理を実行するソフトウェア部品である。さらには、例えば図3の第一の処理手段110と第二の処理手段120のように隣り合う(「接続された」と同義)処理手段は、複合機1が所定の機能を実現するにおいて処理順序が前後関係にあるものである。また、隣り合う処理手段は、厳密には、一方の処理手段が出力するデータを他方の処理手段に入力させる、及び/又は、他方の処理手段が出力するデータを一方の処理手段に入力させる伝達手段であるパイプを介して接続されている。
第一の処理手段110は、動作制御手段111、情報取得要求手段112、情報取得手段113、時間計測手段114などを有する。第二の処理手段120は、取得要求受信手段121、情報提供手段122、情報取得要求手段123、情報取得手段124などを有する。第三の処理手段130は、取得要求受信手段131、情報提供手段132、情報取得要求手段133、情報取得手段134などを有する。
動作制御手段111は、第一の処理手段110の動作を制御する。また、第一の処理手段110の動作条件(例えば第一の処理手段110が「自動変倍」に設定された文書加工フィルタ312である場合には「変倍率」)を後述の情報取得手段113により取得された情報に基づいて決定する。
情報取得要求手段112は、第一の処理手段110の動作条件を決定するための動作条件決定情報の取得要求を第二の処理手段120に対して行う。動作条件決定情報とは、例えば動作条件が上記の「変倍率」である場合には「変倍率」を決定するための入力画像データ及び出力画像データのサイズなどである。なお、ここで行う取得要求は要求先の処理手段に依存しないデータ形式及びデータ内容で行われる。これにより、各処理手段の独立性を保ちつつ他の処理手段の情報を取得することができる。
また、図3では情報取得要求手段112は第二の処理手段120に対して取得要求を行う構成としているが、この場合に限らない。第二の処理手段120以外の処理手段であっても、組み合わせに用いられている自己以外の処理手段である別処理手段に対して又は第一の処理手段110が接続された処理手段の全てに対して取得要求を行う構成とすることもできる。
情報取得手段113は、第二の処理手段120から動作条件決定情報を取得する。時間計測手段114は、時間を計測する。例えば、情報取得要求手段112が動作条件決定情報の取得要求を第二の処理手段120に対して行うと共に時間の計測を開始する。さらに、所定の時間(例えば35秒)経過したとき、情報取得手段113により動作条件決定情報が取得されていない場合には、動作制御手段111は第一の処理手段110の動作を停止するなどの動作制御を行う。
取得要求受信手段121は、第一の処理手段110から動作条件決定情報の取得要求を受信する。情報提供手段122は、情報要求受信手段121により受信した取得要求に応じて第二の処理手段120が保持する動作条件決定情報を第一の処理手段110に対して送信する。なお、第一の処理手段110の動作条件を決定するためのパラメータを含むとする。詳細には、後述の動作例などにおいて説明を行う。
情報取得要求手段123は、情報要求受信手段121により受信した取得要求を第三の処理手段130に受け渡す。情報取得手段124は、第三の処理手段130から動作条件決定情報を取得する。
情報要求受信手段131は、第二の処理手段120から取得要求を受信する。情報提供手段132は、情報要求受信手段131により受信した取得要求に応じて第三の処理手段130が保持する動作条件決定情報を第二の処理手段120に対して送信する。
情報取得要求手段133は、情報要求受信手段131により受信した取得要求を図示しない第四の処理手段に受け渡す。情報取得手段134は、図示しない第四の処理手段から動作条件決定情報を取得する。
以上の機能構成により、本実施の形態における複合機1は、第一の処理手段110、第二の処理手段120、第三の処理手段130などの組み合わせにより構成される機能を実現する。
なお厳密には、要求を行う側の各処理手段は前述した伝達手段であるパイプに対して取得要求を行い、要求を受ける側の各処理手段はパイプから取得要求を受信している。これにより、各処理手段は自身に接続された他の処理手段の種類などを意識しなくて済む。
(動作例1)
図4は、本実施の形態における画像処理装置の第1の動作例の説明図である。動作例1に係る複合機1は、読取フィルタ301、文書加工フィルタ311、印刷フィルタ321などの組み合わせにより構成されるアプリケーションを実行する。このアプリケーションは、スキャナなどで読み取った画像データに所定の画像変換処理を施して印刷するものである。
ここでは、画像変換処理に際して自動倍率選択(AMS:Auto Magnificent Select)が設定された(文書加工フィルタ311の変倍設定に「自動変倍」が設定された)ときの動作を例に説明を行う。なお、読取フィルタ301の入力(読取)サイズ、印刷フィルタ321の出力(印刷)サイズは、それぞれ「A3」「A4」が設定されたものとする。文書加工フィルタ311は自身の動作条件である「自動変倍」の設定値、即ち変倍率を図5のフローチャートで示される動作により決定する。図5は、動作例1に係る複合機1の動作を示すフローチャートである。
まず、文書加工フィルタ311は他のフィルタの情報が必要か否かを判定する(S1)。他のフィルタの情報が必要である場合(S1、YES)、ステップS2へ移る。他のフィルタの情報が必要ではない場合(S1、NO)、ステップS6へ移る。
ステップS2へ移った場合、文書加工フィルタ311は当該文書加工フィルタ311と処理順序が前後のフィルタに動作条件決定情報の取得要求を行う(S2)。ここでは、文書加工フィルタ311は処理順序において文書加工フィルタ311の前後関係にあるフィルタである読取フィルタ301と印刷フィルタ321に対して動作条件決定情報の取得要求を行う。このとき、読取フィルタ301に対して行う取得要求と同一のデータ形式の取得要求を印刷フィルタ321に対しても行う。具体的には、文書加工フィルタ311が必要な「情報」の名称(ここでは入力画像サイズと出力画像サイズ)と「値」(ここでは空欄)を関連付けたXMLなどの形式のデータ構造で要求する。「情報」の名称は、全フィルタで共通で定義してあるものとする。なお、ステップS3〜S6の説明を先に行い、ステップS7〜S11については後述する。
ステップS3へ移って、文書加工フィルタ311はステップS2において行った取得要求の回答を待つ(S3)。続いてステップS4へ移って、文書加工フィルタ311は自身とつながっているフィルタから回答(ここでは、読取フィルタ301及び印刷フィルタ321から、それぞれ入力サイズ「A3」、出力サイズ「A4」の情報)を受信(取得)する(S4)。
続いてステップS5へ移って、文書加工フィルタ311は未回答値があるか否かを判定する(S5)。未回答値がある場合(S5、YES)、ステップS3へ戻る。未回答値がない場合(S5、NO)、ステップS6へ移る。
ステップS6へ移った場合、文書加工フィルタ311は自身の動作条件を決定する(S6)。ここでは、読取フィルタ301から取得した入力サイズ「A3」及び印刷フィルタ321から取得した出力サイズ「A4」の動作条件決定情報に基づき、動作条件である変倍率はA4/A3=0.70であることを決定する。
以降、ステップS7〜S11に係る動作について説明を行う。
ステップS7へ移って、読取フィルタ301(又は印刷フィルタ321)は、ステップS2で文書加工フィルタ311から送信された動作条件決定情報の取得要求を受信する(S7)。続いてステップS8へ移って、ステップS7で受信した取得要求において求められている情報名称と自身が値を保持している情報名称とを比較する(S8)。
ステップS9へ移って、読取フィルタ301(又は印刷フィルタ321)は、ステップS8で比較した結果、該当する情報名称があるか否かを判定する(S9)。該当する情報名称があると判定すると(S9、YES)、ステップS10へ移って回答を埋めて(S10)、ステップS11へ移る。該当する情報名称がないと判定すると(S9、NO)、ステップS11へ移る。本動作例では、読取フィルタ301は自身が値を保持している入力サイズの値である「A3」を回答として埋める。また、印刷フィルタ321は自身が値を保持している出力サイズの値である「A4」を回答として埋める。
ステップS11へ移って、読取フィルタ301(又は印刷フィルタ321)は、ステップS9及びS10により生成された回答を文書加工フィルタ311に対して送信する(S11)。
以上で示される動作により、動作例1に係る複合機1では、文書加工フィルタ311は自身の動作条件である「自動変倍」の設定値、即ち変倍率を決定する。なお、変倍率の決定には入力サイズと出力サイズが必要となるが、文書加工フィルタ311は入力サイズ(この場合は読み取るサイズ)と出力サイズ(この場合は印刷する用紙のサイズ)を持っていない。そのため、文書加工フィルタ311は、自身がつながっている他のフィルタ(読取フィルタ301と印刷フィルタ321)に情報を要求する。
読取フィルタ301は要求を受け取ったら、要求で求められている情報の中に、自分が値を保持している情報があるか確認する。そこで、自分が値を保持している値を知っている項目である「入力サイズ」について値を埋めて回答する。印刷フィルタ321は要求を受け取ったら、同じように値を知っている項目である「出力サイズ」について値を埋めて回答する。文書加工フィルタ311は全ての回答を受け取ったら、入力サイズと出力サイズの値を取得できるので、そこから変倍率を決定し動作する。
つまり、所定のフィルタは、自己につながっている全てのフィルタに情報を要求し、要求を受けた他のフィルタは、自身が当該情報を保持していれば、その情報を返すように動作する。
そのため、以下に掲げる利点を奏する。その利点とは、所定のフィルタが自身の機能の実現のために他のフィルタの情報を必要とする状況で、自身の機能の実現のために必要な情報を他のどのフィルタが保持しているのかを知らなくても、フィルタ同士には依存を持たせないまま、その情報を取得できることである。また、簡単にフィルタのカスタマイズや拡張ができることである。
(動作例2)
図6は、本実施の形態における画像処理装置の第2の動作例の説明図である。動作例2に係る複合機1は、読取フィルタ301、文書加工フィルタ311、印刷フィルタ321などの組み合わせにより構成されるアプリケーションを実行する。前述の動作例1と同様に、このアプリケーションは、スキャナなどで読み取った画像データに所定の画像変換処理を施して印刷するものである。
ここでは、印刷処理に際して自動用紙選択(APS:Auto Paper Select)が設定された(印刷フィルタ321の出力(印刷)サイズ設定に「自動選択」が設定された)ときの動作を行う。なお、読取フィルタ301の入力(読取)サイズ、文書加工フィルタ311の変倍設定は、それぞれ「A4」「等倍」が設定されたものとする。印刷フィルタ321は自身の動作条件である「自動選択」の設定値、即ち用紙サイズを図7のフローチャートで示される動作により決定する。図7は、動作例2に係る複合機1の動作を示すフローチャートである。
まず、印刷フィルタ321は他のフィルタの情報が必要か否かを判定する(S101)。他のフィルタの情報が必要である場合(S101、YES)、ステップS102へ移る。他のフィルタの情報が必要ではない場合(S101、NO)、ステップS106へ移る。
ステップS102へ移った場合、印刷フィルタ321は当該印刷フィルタ321と処理順序が前後のフィルタに動作条件決定情報の取得要求を行う(S102)。ここでは印刷フィルタ321は処理順序において印刷フィルタ321の前後関係にあるフィルタである文書加工フィルタ311に対して動作条件決定情報の取得要求を行う。具体的には、印刷フィルタ321が必要な「情報」の名称(ここでは入力画像サイズ)と「値」(ここでは空欄)を関連付けたXMLなどの形式のデータ構造で要求する。なお、ステップS103〜S106の説明を先に行い、ステップS107〜S114については後述する。
ステップS103へ移って、印刷フィルタ321はステップS102において行った取得要求の回答を待つ(S103)。続いてステップS104へ移って、印刷フィルタ321は自身とつながっているフィルタから回答(ここでは、文書加工フィルタ311から、入力サイズ「A4」の情報)を取得する(S104)。
続いてステップS105へ移って、印刷フィルタ321は未回答値があるか否かを判定する(S105)。未回答値がある場合(S105、YES)、ステップS103へ戻る。未回答値がない場合(S105、NO)、ステップS106へ移る。
ステップS106へ移った場合、印刷フィルタ321は自身の動作条件を決定する(S106)。ここでは、文書加工フィルタ311から取得した入力サイズ「A4」の動作条件決定情報に基づき、動作条件である用紙サイズはA4であることを決定する。
以降、ステップS107〜S114に係る動作について説明を行う。
ステップS107へ移って、文書加工フィルタ311は、ステップS102で印刷フィルタ321から送信された動作条件決定情報の取得要求を受信する(S107)。続いてステップS108へ移って、ステップS107で受信した取得要求において求められている情報名称と自分が値を保持している情報名称とを比較する(S108)。
ステップS109へ移って、文書加工フィルタ311は、ステップS108で比較した結果、該当する情報名称があるか否かを判定する(S109)。該当する情報名称があると判定すると(S109、YES)、ステップS110へ移って回答を埋めて(S110)、ステップS111へ移る。該当する情報名称がないと判定すると(S109、NO)、ステップS111へ移る。本動作例では、文書加工フィルタ311は自身が値を保持している入力サイズの値はないので、回答を埋めずにステップS111へ移る。
ステップS111へ移って、文書加工フィルタ311は要求元(ここでは印刷フィルタ321)以外のフィルタにつながっているか否かを判定する(S111)。ここでは、文書加工フィルタ311は、処理順序において文書加工フィルタ311の前後関係にある要求元以外のフィルタが存在するか否かを判定する。
ステップS111において要求元以外のフィルタにつながっている場合(S111、YES)、ステップS112へ移って、文書加工フィルタ311は要求元以外のフィルタ(ここでは読取フィルタ301)に取得要求を送信する(S112)。
続いてステップS113へ移って、文書加工フィルタ311は読取フィルタ301から回答(ここでは、入力サイズ「A4」の情報)を取得する(S113)。
ステップS114へ移って、文書加工フィルタ311は、ステップS109〜S113により生成された回答を読取フィルタ321に対して送信する(S114)。
以上で示される動作により、動作例2に係る複合機1では、印刷フィルタ321は自身の動作条件である「自動選択」の設定値、即ち用紙サイズを決定する。なお、用紙サイズ(用紙トレイ)の決定には入力サイズが必要になるが、印刷フィルタ321は入力サイズを持っていない。そのため、印刷フィルタ321は、自身がつながっている他のフィルタ(ここでは文書加工フィルタ311)に入力サイズの情報を要求する。
文書加工フィルタ311はその要求を読取フィルタ321に受け渡す。読取フィルタ321は入力サイズの値を保持しているので、入力サイズの値を回答して文書加工フィルタ311に返す。文書加工フィルタ311は読取フィルタ301から受信した回答を印刷フィルタ321に返す。印刷フィルタ321は、その回答を元に印刷する用紙トレイを決定する。
そのため、以下に掲げる利点を奏する。フィルタは、3つ以上続けてつながっている場合もある。このとき、パイプで直接つながっているフィルタの先に、他のフィルタがつながっているかどうかはわからない。上記のような場合でも、フィルタ同士には依存を持たせないまま、全ての他のフィルタの情報を取得できることである。また、簡単にフィルタのカスタマイズや拡張ができることである。
図8は、動作例2の第1の変形例に係る画像処理装置の説明図である。動作例2の変形例1に係る複合機1は、読取フィルタ301、文書加工フィルタ311、印刷フィルタ321などの組み合わせにより構成されるアプリケーションを実行する。前述の動作例2と同様に、このアプリケーションは、スキャナなどで読み取った画像データに所定の画像変換処理を施して印刷するものである。
動作例2では、印刷処理に際して自動用紙選択(AMS)が設定されたときの動作を行うに当たって、印刷フィルタ321は自身の動作条件である「自動選択」の設定値、即ち用紙サイズを、読取フィルタ301の入力(読取)サイズ「A4」に基づいて決定した。
ここでは、印刷フィルタ321は「自動選択」の設定値、即ち用紙サイズを、読取フィルタ301の入力(読取)サイズに加えて文書加工フィルタ311の変倍設定「70%」に基づき決定する動作、即ち、複数のフィルタにおける設定値により動作条件が決定される場合の動作、を変形例として説明する。図9は、動作例2の変形例に係る複合機1の動作を示すフローチャートである。
図9のステップS201〜S213に係る処理は、それぞれ図7のステップS101〜S113に係る処理と同様であるとしてここでは説明を省略する。
ステップS213において読取フィルタ301から回答(ここでは、入力サイズ「A3」の情報)を取得した文書加工フィルタ311は、ステップS214へ移って、自フィルタでの処理により回答の値は変更されるか否かを判定する(S214)。
ステップS214において、回答の値が変更すると判定すると(S214、YES)、ステップS215へ移って、文書加工フィルタ311は自フィルタが有する設定値に基づき、ステップS213で取得した回答の値を変更する(S215)。ここでは、文書加工フィルタ311は自フィルタが有する変倍設定の設定値である変倍率「70%」とステップS213で取得した回答(入力サイズ「A3」の情報)に基づき、回答の値を「A4」に変更する。
ステップS216へ移って、文書加工フィルタ311は、ステップS209〜S215により生成された回答を読取フィルタ321に対して送信する(S216)。
以上で示される動作により、動作例2の変形例1に係る複合機1では、印刷フィルタ321は自身の動作条件である「自動選択」の設定値、即ち用紙サイズを、読取フィルタ301の入力(読取)サイズに加えて文書加工フィルタ311の変倍設定「70%」に基づき決定する。
ステップS214及びS215に係る処理により、所定のフィルタが他のフィルタの情報を必要としていて、且つ、複数のフィルタにおける設定値により動作条件が決定される場合にも、フィルタ同士には依存を持たせないまま、全ての他のフィルタの情報を取得できる。
なお、本動作例2で示される一連の動作においては、印刷フィルタ321の動作条件決定情報は入力サイズである。しかしながら、係る入力サイズの決定のために読取フィルタ301の入力サイズに加えて文書加工フィルタ311の変倍設定「70%」が用いられている。つまり、動作条件の決定のために動作条件決定情報(ここでは入力サイズ)に直接関連のない情報(変倍設定)が用いられている。そのため、本実施の形態における動作条件決定情報は、ここでの変倍設定のように動作条件を決定するための補助を行う補助パラメータを含むとすることもできる。
図10は、動作例2の第2の変形例に係る画像処理装置の説明図である。動作例2の変形例2に係る複合機1は、読取フィルタ301、文書加工フィルタ311、保管文書登録フィルタ322、マーキング埋込フィルタ313、印刷フィルタ321などの組み合わせにより構成されるアプリケーションを実行する。このアプリケーションは、スキャナなどで読み取った画像データに、所定の画像変換処理を施して保管文書として登録する又はマーキング埋込処理を施して印刷するものである。
ここでは、マーキング埋込処理に際してマーキング埋込が設定された(マーキング埋込フィルタ313の埋込設定に「保管文書ID」が設定された)ときの動作を行う。埋込設定には、マーキング埋込対象となるデータが設定される。なお、保管文書登録フィルタ322は、文書を保管する際に保管文書IDを採番しているものとする。マーキング埋込フィルタ313は自身の動作条件である「保管文書ID」の設定値、即ち埋込対象となるデータを図7(前述の動作例2と同様)のフローチャートで示される動作により決定する。
図7のフローチャートで示される動作については、ここでは詳細な説明を省略するがその概要について以下説明を行う。
マーキング埋込フィルタ313では、マーキングを埋め込む埋込対象となるデータである保管文書IDが必要になる。しかし、マーキング埋込フィルタ313は保管文書IDの値を持っていないので、自身とつながっている他のフィルタに要求を出す。このとき、要求を受けた文書加工フィルタ311は、自身とつながっている読取フィルタ301と保管文書登録フィルタ322にも要求を伝える。さらに、読取フィルタ301と保管文書登録フィルタ322からの回答と文書加工フィルタ311自身の回答をあわせて、マーキング埋込フィルタ313に回答を返す。マーキング埋込フィルタ313は回答の中の保管文書IDの値を使い、埋め込みを行う。
以上に示される動作により、動作例2の変形例2に係る複合機1では、マーキング埋込フィルタ313は自身の動作条件である「保管文書ID」の設定値、即ち埋込対象となるデータを決定する。
動作例2と異なる点は、異なる3つのフィルタと隣り合うフィルタ(ここでは文書加工フィルタ311)が存在する、即ち、複合機1が所定の機能を実現するにおいて特定のフィルタに対して処理順序が前後関係にあるフィルタが3つ存在する点である。
この場合には、図7のステップS111において、要求元(マーキング埋込フィルタ313)から動作条件決定情報の取得要求を受信した文書加工フィルタ311は、要求元以外で処理順序が前後関係のフィルタである読取フィルタ301及び保管文書登録フィルタ322の両方に対してステップS112〜S113の処理を行う。
なお、本動作例の変形例においては、複合機1が所定の機能を実現するにおいて特定のフィルタに対して処理順序が前後関係にあるフィルタが3つ存在する場合について説明を行ったが、この場合に限らないものとする。特定のフィルタに対して処理順序が前後関係にあるフィルタが3つ以上存在する場合も同様の動作を行ってよい。
(動作例3)
図11は、本実施の形態における画像処理装置の第3の動作例の説明図である。動作例3に係る複合機1は、読取フィルタ301、文書加工フィルタ311、ファクス送信フィルタ324などの組み合わせにより構成されるアプリケーションを実行する。このアプリケーションは、スキャナなどで読み取った画像データに所定の画像変換処理を施してファクス送信するものである。
ここでは、ファクス送信に際してファクス送信フィルタ324はファクス直接送信する動作を行う。ファクス直接送信とは、送信するデータをメモリに蓄積せずに相手機との通信がつながったら読取フィルタ301による読取動作を開始するものである。さらに、ファクス直接送信では、ファクス送信フィルタ324は通信開始後に相手機とのネゴシエーションを行う。ネゴシエーションとは、双方の機器(ここでは複合機1と相手機)の画像データサイズ、解像度などの機器能力に係る情報をやりとりすることにより送信に係る設定を行うものである。
ファクス送信324は、係る相手機とのネゴシエーションのために画像データの入力サイズと解像度が必要とするが、通信開始後に一定時間以上何も反応がないと相手機から通信を切断されてしまう(ネゴシエーション時は35秒で通信を切断される)。そのため、ファクス送信フィルタ324はある一定時間内に上記の画像データの入力サイズと解像度の情報が必要となる。なお、画像データの入力サイズは、自動検知の場合には読取開始後に決定される。
ここでは、ファクス送信フィルタ324が画像データの入力サイズと解像度の要求を行い、一定時間内に回答がこなければ、動作を中止する動作を行う。図12は、動作例3に係る複合機1の動作を示すフローチャートである。
図12のステップS310〜S314に係る処理は、それぞれ図5のステップS7〜S11に係る処理と同様であるとしてここでは説明を省略する。
まず、ファクス送信フィルタ324は他のフィルタの情報が必要か否かを判定する(S301)。他のフィルタの情報が必要である場合(S301、YES)、ステップS302へ移る。他のフィルタの情報が必要ではない場合(S301、NO)、ステップS307へ移る。
ステップS302へ移った場合、ファクス送信フィルタ324は当該ファクス送信フィルタ324と処理順序が前後のフィルタに動作条件決定情報の取得要求を行う(S302)。ここではファクス送信フィルタ324は処理順序においてファクス送信フィルタ324の前後関係にあるフィルタである文書加工フィルタ311に対して動作条件決定情報の取得要求を行う。具体的には、ファクス送信フィルタ324が必要な「情報」の名称(ここでは入力画像サイズと解像度)と「値」(ここでは空欄)を関連付けたXMLなどの形式のデータ構造で要求する。さらに、ファクス送信フィルタ324は時間の測定を開始する。
ステップS303へ移って、ファクス送信フィルタ324はステップS302において行った取得要求の回答を待つ(S303)。続いてステップS304へ移って、ファクス送信フィルタ324は自身とつながっているフィルタから回答がきたか否かを判定する(S304)。ステップS304において回答がきた場合(S304、YES)、ステップS305へ移って、ファクス送信フィルタ324は自身とつながっているフィルタから回答を取得する(S305)。
さらにステップS306へ移って、ファクス送信フィルタ324は未回答値があるか否かを判定する(S306)。未回答値がある場合(S306、YES)、ステップS303へ戻る。未回答値がない場合(S306、NO)、ステップS307へ移って、ファクス送信フィルタ324は自身の動作条件を決定する(S307)。
ステップS304において回答がきていない場合(S304、NO)、ステップS308へ移って、ファクス送信フィルタ324はステップS302で測定を開始した時間が所定時間(納期)を超えたか否かを判定する(S308)。
ステップS308において所定時間(納期)を超えたと判定すると(S308、YES)、ステップS309へ移って、ファクス送信フィルタ324は動作を中止する(S309)。続いて処理を終了する。
ステップS308において所定時間(納期)を超えていないと判定すると(S308、NO)、ステップS303へ戻って、ファクス送信フィルタ324は回答を待つ。
以上で示される動作により、動作例3に係る複合機1では、ファクス送信フィルタ324が画像データの入力サイズと解像度の要求を行い、一定時間内に回答がこなければ、動作を中止する動作を行う。
そのため、以下に掲げる利点を奏する。その利点とは、時間制約に関わる動作については時間制約内に動作条件を決定することにより、機器の時間制約がある場合も動作できるようにすることである。
(動作例4)
図13は、本実施の形態における画像処理装置の第4の動作例の説明図である。動作例4に係る複合機1は、読取フィルタ301、文書加工フィルタ311、印刷フィルタ321などの組み合わせにより構成されるアプリケーションを実行する。前述の動作例1と同様に、このアプリケーションは、スキャナなどで読み取った画像データに所定の画像変換処理を施して印刷するものである。
ここでは、画像変換処理に際して自動倍率選択(AMS)が設定された(文書加工フィルタ311の変倍設定に「自動変倍」が設定された)ときの動作を行う。なお、前述した動作例1と異なり、読取フィルタ301の入力(読取)サイズには「A3」が設定されているが、印刷フィルタ321の出力(印刷)サイズには、値が設定されていない(未設定)。文書加工フィルタ311は自身の動作条件である「自動変倍」の設定値、即ち変倍率を図5のフローチャートで示される動作により決定する。図14は、動作例4に係る複合機1の動作を示すフローチャートである。
図14に示される処理は、図5のステップS1〜S11に係る処理にステップS406及びS408に係る処理が加えられたものである。ここではステップS406及びS407について説明を行う。
ステップS405において未回答値がない場合(S405、NO)、ステップS406へ移って、文書加工フィルタ311は必要な情報には全て回答値があるか否かを判定する(S406)。ここでは、例えばステップS402で送信した前述したデータ構造の要求において「値」の欄に埋められた回答値が動作条件の決定のために適切な値である否かを判定する。
必要な情報には全て回答値がある場合(S406、YES)、ステップS407へ移って、文書加工フィルタ311は動作条件を決定する(S407)。必要な情報には全ての回答値はない場合(S406、NO)、即ち回答値が足りない場合、ステップS408へ移って、文書加工フィルタ311は動作を中止する(S408)。
以上で示される動作により、動作例4に係る複合機1では、文書加工フィルタ311は自身の動作条件である「自動変倍」の設定値、即ち変倍率の決定に際して、受け取った回答において、回答値が足りない場合、回答値が適切な値でない場合のように必要な情報が足りないとき、動作を中止する。
そのため、以下に掲げる利点を奏する。その利点とは、動作条件を決定する際、複数の情報がないと動作条件が決定できない場合がある。その場合は複数の情報がそろわないと動作しないとすることにより、想定外の動作をしないようにすることである。
図15は、動作例4の変形例に係る画像処理装置の説明図である。動作例4の変形例に係る複合機1は、読取フィルタ301、文書加工フィルタ311、印刷フィルタ321などの組み合わせにより構成されるアプリケーションを実行する。前述の動作例4と同様に、このアプリケーションは、スキャナなどで読み取った画像データに所定の画像変換処理を施して印刷するものである。
動作例4に係る複合機1では、文書加工フィルタ311は自身の動作条件である「自動変倍」の設定値、即ち変倍率の決定に際して、受け取った回答において必要な情報が足りない場合に動作を中止した。
ここでは、受け取った回答において、必要な情報が足りない場合に、動作を中止せずに、初期値(デフォルト条件)から動作条件を決定する動作を行う。図16は、動作例4の変形例に係る複合機1の動作を示すフローチャートである。
図16に示される処理は、図14のステップS401〜S413に係る処理にステップS508〜S510に係る処理が加えられたものである。ここではステップS508〜S510について説明を行う。
ステップS506において必要な情報には全ての回答値はない場合(S506、NO)、即ち回答値が足りない場合、ステップS508へ移って、文書加工フィルタ311は初期値があるか否かを判定する(S508)。
ステップS508において初期値がある場合(S508、YES)、ステップS509へ移って、文書加工フィルタ311は読取フィルタ301から受信した入力サイズ「A3」及び予め予め文書加工フィルタ311が保持する出力サイズの初期値(ここでは例えば「A4」)の動作条件決定情報に基づき、動作条件である変倍率はA4/A3=0.70であることを決定する。
ステップS508において初期値がない場合(S508、NO)、ステップS510へ移って、文書加工フィルタ311は動作を中止する(S510)。
以上で示される動作により、動作例4に係る複合機1では、文書加工フィルタ311は自身の動作条件である「自動変倍」の設定値、即ち変倍率を決定するが、このとき文書加工フィルタ311が受け取った回答において、必要な情報が足りない且つ文書加工フィルタ311が初期値を保持する場合に、動作を中止せずに、初期値から動作条件を決定する動作を行う。
そのため、以下に掲げる利点を奏する。その利点とは、動作条件を決定する際、複数の情報がないと動作条件が決定できない場合がある。その場合にでも動作をすることができるようにすることである。
(動作例5)
図17は、本実施の形態における画像処理装置の第5の動作例の説明図である。動作例5に係る複合機1は、読取フィルタ301、文書加工フィルタ311A、印刷フィルタ321、文書加工フィルタ311B、ファクス送信フィルタ324などの組み合わせにより構成されるアプリケーションを実行する。なお、ここでは2種類の文書加工フィルタ311を識別するために、文書加工フィルタ311A、311Bとしている。このアプリケーションは、スキャナなどで読み取った画像データに、所定の画像変換処理を施して印刷する又は別の画像変換処理を施してファクス送信するものである。
ここでは、図17のような多出力(1つの入力フィルタにおける入力に基づき、複数の出力フィルタによる出力が行われる)の構成において、文書加工フィルタ311Aによる画像変換処理に際して自動倍率選択(AMS)が設定された(文書加工フィルタ311Aの変倍設定に「自動変倍」が設定された)ときの動作を行う。図18は、動作例5に係る複合機1の動作を示すフローチャートである。
まず、文書加工フィルタ311Aは他のフィルタの情報が必要か否かを判定する(S601)。他のフィルタの情報が必要である場合(S601、YES)、ステップS602へ移る。他のフィルタの情報が必要ではない場合(S601、NO)、ステップS609へ移る。
ステップS602へ移った場合、文書加工フィルタ311Aは「階層」をインクリメントする(S602)。ステップS602における処理は後述のステップS603と共に説明する。続いてステップS603へ移って、文書加工フィルタ311Aは当該文書加工フィルタ311Aと処理順序が前後のフィルタに動作条件決定情報の取得要求を行う(S603)。
ステップS603では、文書加工フィルタ311Aは、処理順序において文書加工フィルタ311Aの前後関係にあるフィルタである読取フィルタ301と印刷フィルタ321に対して動作条件決定情報の取得要求を行う。このとき、読取フィルタ301に対して行う取得要求と同一のデータ形式の取得要求を印刷フィルタ321に対しても行う。具体的には、文書加工フィルタ311が必要な「情報」の名称(ここでは入力画像サイズと出力画像サイズ:入力画像サイズについては省略)と「値」(ここでは空欄)に加えて「階層」(ここではステップS602によりインクリメントされた値1)を関連付けたXMLなどの形式のデータ構造で要求する。「情報」の名称は、全フィルタで共通で定義してあるものとする。なお、ステップS604〜S609の説明を先に行い、ステップS610〜S618については後述する。
ステップS604へ移って、文書加工フィルタ311AはステップS603において行った取得要求の回答を待つ(S604)。続いてステップS605へ移って、文書加工フィルタ311Aは自身とつながっているフィルタから回答(ここでは、読取フィルタ301及び印刷フィルタ321から、それぞれ出力サイズ「A4」階層「3」の情報、出力サイズ「A3」階層「1」の情報)を取得する(S605)。
続いてステップS606へ移って、文書加工フィルタ311Aは未回答値があるか否かを判定する(S606)。未回答値がある場合(S606、YES)、ステップS603へ戻る。未回答値がない場合(S606、NO)、ステップS607へ移る。
ステップS607へ移った場合、文書加工フィルタ311Aは1つの情報に複数の回答値があるか否かを判定する(S607)。複数の回答値がある場合(S607、YES)、ステップS608へ移る。複数の回答値がない場合(S607、NO)、ステップS609へ移る。
ステップS608へ移った場合、文書加工フィルタ311Aは階層が少ない方の値を採用する(S608)。ここでは、階層が少ない方の値すなわち、印刷フィルタ321から取得した出力サイズ「A3」階層「1」の情報を採用する。
ステップS609へ移って、文書加工フィルタ311は自身の動作条件を決定する(S609)。ここでは、印刷フィルタ321から取得した出力サイズ「A3」の情報に基づき、動作条件である変倍率を決定する。
以降、ステップS610〜S618に係る動作について説明を行う。
ステップS610へ移って、読取フィルタ301(又は印刷フィルタ321)は、ステップS603で文書加工フィルタ311から送信された動作条件決定情報の取得要求を受信する(S610)。続いてステップS611へ移って、ステップS610で受信した取得要求で求められている情報名称と自分が値を保持している情報名称とを比較する(S611)。
ステップS612へ移って、読取フィルタ301(又は印刷フィルタ321)は、ステップS612で比較した結果、該当する情報名称があるか否かを判定する(S612)。該当する情報名称があると判定すると(S612、YES)、ステップS613へ移って回答の「値」、「階層」を埋めて(S613)、ステップS614へ移る。該当する情報名称がないと判定すると(S612、NO)、ステップS614へ移る。
ステップS614へ移って、読取フィルタ301(又は印刷フィルタ321)は要求元(ここでは文書加工フィルタ311A)以外で処理順序が前後関係のフィルタがあるか否かを判定する(S614)。
ステップS614において要求元以外で処理順序が前後関係のフィルタがあると判定すると(S614、YES)、ステップS615へ移って、読取フィルタ301は、階層をインクリメントする(S615)。ここでは、読取フィルタ301は、ステップS610で受信した動作条件決定情報の取得要求における「階層」の値(ステップS603参照)を1インクリメントする。
続いてステップS616へ移って、読取フィルタ301は要求元以外で処理順序が前後関係のフィルタ(ここでは文書加工フィルタ311B)に取得要求を送信する(S616)。続いてステップS617へ移って、読取フィルタ301は要求元以外で処理順序が前後関係のフィルタ(ここでは文書加工フィルタ311B)から回答を受信する(S617)。
なお、ステップS614〜S617に係る処理を繰り返すことにより、フィルタ間で送受信される動作条件決定情報の取得要求における「階層」の値は、要求元である文書加工フィルタ311Aから取得要求が受け渡される回数、即ちいくつのフィルタを介して前後関係にあるか、に応じた値をとる。
ステップS618へ移って、読取フィルタ301(又は印刷フィルタ321)は、ステップS614〜S617に係る処理を繰り返すことにより生成された回答を文書加工フィルタ311に対して送信する(S618)。
以上で示される動作により、動作例5に係る複合機1では、多出力(1つの入力フィルタにおける入力に基づき、複数の出力フィルタによる出力が行われる)の構成において、文書加工フィルタ311Aによる画像変換処理に際して自動倍率選択(AMS)が設定された(文書加工フィルタ311Aの変倍設定に「自動変倍」が設定された)ときの動作を行う。文書加工フィルタ311Aは、自動変倍のために入力サイズと出力サイズが必要になる。そのため、入力サイズと出力サイズの情報の要求を出す。この際、必要な「情報」の名称と「値」と「階層」というデータ構造で要求を出す。要求では、フィルタを1つ介す度に「階層」という値を1インクリメントして受け渡していく。要求を受け取り、値を入れられる項目があったフィルタでは、その「値」と、そのときの「階層」を埋めて回答する。文書加工フィルタ311Aでは、全て回答が集まった時に、この構成では出力フィルタが2つあるので、出力サイズの値が2つ集まることになる。このとき、階層が低いということは近いということなので、そちらが必要な情報であると判断して、「階層」が少ない方の「値」を採用する。
そのため、以下に掲げる利点を奏する。その利点とは、1つの項目に複数の回答がきてしまった場合に、その場合でもどの回答を採用するか決定することにより、その場合も問題無く動作できるようにすることである。
(動作例6)
図19は、本実施の形態における画像処理装置の第6の動作例の説明図である。動作例5に係る複合機1は、読取フィルタ301、文書加工フィルタ311、印刷フィルタ321などの組み合わせにより構成されるアプリケーションを実行する。前述の動作例1と同様に、このアプリケーションは、スキャナなどで読み取った画像データに所定の画像変換処理を施して印刷するものである。
ここでは、複合機1においてエラー発生時の動作の例を説明する。エラー発生時としては、例えば他のフィルタの情報を必要とするフィルタが必要な情報を得られない又は必要以上に得たときがある。ここでは、図19の構成において、印刷処理に際して自動用紙選択(APS)が設定された(印刷フィルタ321の出力(印刷)サイズ設定に「自動選択」が設定された)とき、他のフィルタには必要な情報が保持されていない場合を例にとって説明を行う。図20は、動作例6に係る複合機1の動作を示すフローチャートである。
図20に示される処理は、図5のステップS1〜S11に係る処理にステップS706〜S709に係る処理が加えられたものである。ここではステップS706〜S709について説明を行う。
ステップS705において未回答値がない場合(S705、NO)、ステップS706へ移って、文書加工フィルタ311はステップS704で受信した回答が当該文書加工フィルタ311の動作条件を決定するためのデータとして不足している(或いは過多である)か否かを判定する(S706)。
ステップS706において当該文書加工フィルタ311の動作条件を決定するためのデータとして不足している(或いは過多である)場合(S706、YES)、ステップS708へ移って、文書加工フィルタ311はエラーログを残す(S708)。続いてステップS709へ移って、文書加工フィルタ311はエラー通知を行う(S709)。エラー通知は、例えば操作画面に表示することによる通知、電子メールによる機器に登録されている管理者への通知、レポートを印刷することによる通知などである。
ステップS706において当該文書加工フィルタ311の動作条件を決定するためのデータとして不足している(或いは過多である)場合(S706、YES)、ステップS707へ移って、文書加工フィルタ311は動作条件を決定する(S707)。
以上で示される動作により、動作例6に係る複合機1では、エラー発生時の動作を行う。必要な設定が足りなくてエラーとなった時に、ユーザがそのことを知ることが出来ないと、そのエラーを解決できない可能性がある。そのため、そのエラーを通知することにより、ユーザがエラーを解決できるようにする。
なお、エラー通知においてエラー内容を操作部へ表示することにより、機器の前にいるユーザがエラー内容を知ることができる。また、エラー通知においてエラー内容を電子メールで管理者に通知することにより、離れた場所にいる機器管理者がエラー内容を知ることができる。さらには、エラー内容をレポートで出力することにより、時間があいてもユーザがエラー内容を確認できるようにすることができる。その他エラー通知の形態は、上記の場合に限らないものとする。
また、図21に示す画面表示などを用いて通知手法の選択方法について提示する提示手段を設けることにより、ユーザの利便性があがるようにすることができる。初期設定において、予めユーザがエラーの通知方法を選択しておくことができる。
以下、フィルタ、パイプなどの詳細及び画像処理装置1のハードウェア構成に係る説明を図22〜図40を用いて行う。
フィルタについて更に詳しく説明する。図22は、フィルタの構成要素を説明するための図である。図22に示されるように、各フィルタは、フィルタ設定用UI、フィルタロジック、フィルタ固有下位サービス、及び永続記憶領域情報等より構成される。このうち、フィルタ設定用UI、フィルタ固有下位サービス、及び永続記憶領域情報については、フィルタによって必ずしも構成要素に含まれない。
フィルタ設定用UIは、フィルタの実行条件等を設定させるための画面をオペレーションパネル等に表示させるプログラムである。例えば、読取フィルタ301であれば、解像度、濃度、画像種別等を設定させる画面が相当する。なお、オペレーションパネルの表示がHTMLデータや、スクリプトに基づいて行われ得ることに鑑みれば、フィルタ設定用UIはHTMLデータやスクリプトであってもよい。
フィルタロジックは、フィルタの機能を実現するためロジックが実装されたプログラムである。すなわち、フィルタの構成要素としてのフィルタ固有下位サービスや、デバイスサービス層40又はデバイス制御層50等を利用して、フィルタ設定用UIを介して設定された実行条件に応じてフィルタの機能を実現する。例えば、読取フィルタ301であれば、スキャナによる原稿の読み取り制御のためのロジックが相当する。
フィルタ固有下位サービスは、フィルタロジックを実現するために必要な下位機能(ライブラリ)である。すなわち、デバイスサービス層40又はデバイス制御層50に相当する機能であるが、他のフィルタから使用されないものについては、フィルタの一部として実装されてもよく、当該一部がフィルタ固有下位サービスに相当する。例えば、読取フィルタ301であれば、スキャナを制御するための機能が相当するが、本実施の形態では、デバイス制御層50においてスキャナ制御部51として実装されている。したがって、読取フィルタ301において、フィルタ固有下位サービスの実装は必ずしも必要ではない。
永続記憶領域情報は、フィルタに対する設定情報(例えば、実行条件のデフォルト値)等、不揮発メモリに保存する必要があるデータのスキーマ定義が相当する。当該スキーマ定義は、フィルタのインストール時にデータ管理部42に登録される。
図23は、本実施の形態の複合機における各機能を実現するためのフィルタの組み合わせの例を示す図である。
例えば、コピー機能は、読取フィルタ301と印刷フィルタ321とを接続することにより実現される。読取フィルタ301によって原稿より読み取られた画像データを印刷フィルタ321によって印刷すればよいからである。なお、集約、拡大、又は縮小等の加工が要求された場合は、これらの加工を実現する文書加工フィルタ311が二つのフィルタの間に挿入される。
プリンタ機能(クライアントPCからの印刷機能)は、PC文書受信フィルタ305と文書変換フィルタ312と印刷フィルタ321とを接続することにより実現される。スキャンto email機能(スキャンした画像データを電子メールで転送する機能)は、読取フィルタ301とメール送信フィルタ323とを接続することによって実現される。FAX送信機能は、読取フィルタ301とFAX送信フィルタ324とを接続することによって実現される。FAX受信機能は、FAX受信フィルタ304と印刷フィルタ321とを接続することによって実現される。ドキュメントボックス蓄積機能(スキャンした画像データを複合機1内に保存する機能)は、読取フィルタ301と保管文書登録フィルタ322とを接続することによって実現される。ドキュメントボックス印刷機能(複合機1内に保存されている文書データを印刷する機能)は、保管文書読出フィルタ302と印刷フィルタ321とを接続することにより実現される。
図23において、例えば、読取フィルタ301については5つの機能において利用されている。このように、各フィルタは複数の機能から利用可能であり、それによって各機能を実現するための開発工数を削減することができる。例えば、コピー機能とスキャン機能(ドキュメントボックス蓄積)について、その実行条件を設定させるためのユーザインタフェースは類似しているものであった。しかし、各機能をアプリケーションによって実装する場合には、アプリケーションごとに個別にユーザインタフェースの実装も行われていた。しかし、本実施の形態では、コピー機能及びスキャン機能のいずれの場合も、読取フィルタ301のユーザインタフェースによって設定が行われ、ユーザインタフェースの共通化をも図ることができる。
更に、新たな機能を実現する場合について考える。まず、機能1として、複合機1では対応していないPDL(Page Description Language)(以下、「他PDL」という。)によってクライアントPCから送信される印刷データを印刷する機能を実現する場合について考える。この場合、図23におけるプリンタ機能を雛形とすることができる。但し、プリンタ機能では、PC文書受信フィルタ305により出力されるデータがPostScript形式であることが前提とされている。文書変換フィルタ312が入力データとして扱えるのはPostScript形式のデータだからである。しかし、機能1の場合、PC文書受信フィルタ305によって受信され、当該フィルタより出力されるのは他PDL形式のデータである。したがって、このまま文書変換フィルタ312に転送しても文書変換フィルタ312は適切に処理を実行することができない。そこで、他PDL形式からPostScript形式へのデータ変換を実行する変換フィルタ(以下「他PDL−PS変換フィルタ」という。)を新たに実装し、当該フィルタをPC文書受信フィルタ305と文書変換フィルタ312との間に挿入すれば、機能1を実現することができる。すなわち、機能1は、PC文書受信フィルタ305と他PDL−PS変換フィルタと文書変換フィルタ312と印刷フィルタ321とを接続することにより実現される。
次に、機能2として、Webサイトから情報を収集し、収集された情報を印刷する機能(以下「機能2」という。)を実現する場合について考える。この場合、Webサイトから情報を収集するフィルタが存在しない。したがって、少なくともWebサイトから情報を収集する入力フィルタ(以下「Web収集フィルタ」という。)を新たに実装する必要がある。また、機能2では最終的に印刷を実行させたいので、出力フィルタとしては印刷フィルタ321を用いるのが適切である。ここで問題となるのが、Web収集フィルタと印刷フィルタ321との間をどのように接続するかである。すなわち、印刷フィルタ321の入力データはレンダリングされたビットマップである必要があるところ、Web収集フィルタ内にレンダリング機能を実装するのは非常に工数がかかるので適切ではない。そこで、既にレンダリング機能を実現する文書変換フィルタ312を利用することが考えられる。ただし、文書変換フィルタ312の入力データは、PostScript形式である必要がある。そこで、Web収集フィルタを、収集した情報をPostScript形式によって出力するように実装すれば、文書変換フィルタ312との接続が可能となる。このようにWeb収集フィルタを実装することにより、機能2は、Web収集フィルタと文書変換フィルタ312と、文書変換フィルタ312と印刷フィルタ321との接続により実現される。
以下、本実施の形態における複合機1の処理手順について説明する。図24及び図25は、複合機が一つの機能を実現する際の処理手順を説明するためのフローチャートである。
まず、ユーザによって入力フィルタが選択され(S1101)、選択された入力フィルタの実行条件が設定される(S1102)。同様に、変換フィルタ又は出力フィルタについても選択が行われ(S1103)、フィルタ間の接続が指定され(S1104)、実行条件が設定される(S1105)。
上記の操作は、ローカルUI部12の制御のもと、例えば、図26に示されるようなオペレーションパネルを介して行われる。
図26は、オペレーションパネルにおけるフィルタの選択例を示す図である。図26において、オペレーションパネル202は、タッチパネル511とスタートボタン512とを含む。タッチパネル511は、タッチ操作で入力を行うためのハードウェア(タッチ操作部)であると共に、画面表示で出力を得るためのハードウェア(画面表示部)である。スタートボタン512は、要求した機能の実行開始指示を行うためのハードウェアである。
図26のタッチパネル511には、要求入力画面が表示されている。要求入力画面は、入力フィルタ選択領域513、変換フィルタ選択領域514、出力フィルタ選択領域515、及び要求表示領域516等より構成される。入力フィルタ選択領域513は、入力フィルタを選択させるための領域であり、入力フィルタごとにボタンが表示されている。入力フィルタ選択領域513でいずれかのボタンが選択されると、選択されたボタンに対応する入力フィルタのボタンが要求表示領域516に表示される。図中では、便宜上、読取フィルタ301及び保管文書読出フィルタ513のボタンが表示されている。
変換フィルタ選択領域514は、変換フィルタを選択させるための領域であり、変換フィルタごとにボタンが表示されている。変換フィルタ選択領域514でいずれかのボタンが選択されると、選択されたボタンに対応する変換フィルタのボタンが要求表示領域516に表示される。
出力フィルタ選択領域515は、出力フィルタを選択させるための領域であり、出力フィルタごとにボタンが表示されている。出力フィルタ選択領域515でいずれかのボタンが選択されると、選択されたボタンに対応する出力フィルタのボタンが要求表示領域516に表示される。図中では、便宜上、印刷フィルタ321、保管文書登録フィルタ322、メール送信フィルタ323、及びFAX送信フィルタ324のボタンが表示されている。
要求表示領域516には、入力フィルタ選択領域513、変換フィルタ選択領域514又は出力フィルタ選択領域515において選択されたフィルタのボタンが表示され、入力フィルタ、変換フィルタ、又は出力フィルタとの間は、データの流れ又はパイプを示す矢印で接続される。矢印を操作することにより、実行するフィルタの順番を変更することも可能である。要求表示領域516における表示内容によって、ユーザは、利用するフィルタとその流れを認識することができる。要求表示領域516には、更に、設定ボタン517及び削除ボタン518が配置されている。設定ボタン517は、要求表示領域516においてフィルタのボタンが選択されている場合に、当該フィルタの設定画面を表示させるためのボタンである。すなわち、設定ボタン517が押下(タッチ)されると、選択されているフィルタのフィルタ設定UIに基づいて、その設定画面がタッチパネル511に表示される。削除ボタン518は、要求表示領域516においてフィルタのボタンが選択されている場合に、当該フィルタの利用を解除するためのボタンである。
なお、入力フィルタ、変換フィルタ、及び出力フィルタは、一つの機能に対してそれぞれ複数個の選択が可能である。例えば、スキャンされた画像と、複合機1内に保存されている画像を合成して、印刷すると共にFAX送信するといったような場合、少なくとも二つの入力フィルタ(読取フィルタ301及び保管文書読出フィルタ302)と二つの出力フィルタ(印刷フィルタ321及びFAX送信フィルタ324)とが選択される。
フィルタの選択が完了し(S1106でYES)、スタートボタン512が押下されると、ユーザインタフェース層10からコントロール層20に対して、要求内容が通知される。
図27は、ユーザインタフェース層からコントロール層へ通知される要求内容を概念的に示す図である。図27に示されるように、ユーザインタフェース層10からの要求は、ユーザインタフェース層10において選択されたフィルタごとに、フィルタの種別と当該フィルタに対する設定情報とを含むものであり、更にフィルタの実行順も含も含んでいる(図中において各ブロックを結ぶ矢印が、フィルタの実行順を示す)。
図27に示されるような要求内容を受けて、コントロール層20は、選択された各フィルタ間をパイプによって接続する(図24のS1107)。パイプの実体はメモリ(HDD(Hard Disk Drive)も含む)であるが、パイプの両端のフィルタに応じて利用するメモリの種類が異なり、その対応関係は、例えば、複合機1のHDD内に予め定義されている。
図28は、フィルタとパイプの対応テーブルの例を示す図である。図28の対応テーブル60によれば、例えば、読取フィルタ301と印刷フィルタ321や、文書変換フィルタ312と印刷フィルタ321は、DMA(Direct Memory Access)パイプによって接続され、高速にデータが転送される。また、PC文書受信フィルタ305と文書変換フィルタ312とは、スプールパイプによって接続される。スプールパイプとは、HDDを用いるパイプであり、左側のフィルタから出力されたデータは、右側のフィルタが読み出すまでHDDにスプール(保存)される。それ以外のフィルタ間は、汎用メモリパイプによって接続される。汎用メモリパイプとは、有限サイズのRAMバッファによってデータ転送を行うパイプである。図28に示される対応テーブル60は、フィルタやパイプの拡張(追加)や削除等に応じて編集可能である。なお、図1における画像パイプ41は、上記の各種のパイプへのインタフェースを提供するモジュールを抽象的に表現したものである。
したがって、コントロール層20は、図28の対応テーブル60に基づいて、各フィルタ間を特定のパイプで接続する。
図29は、コントロール層によって生成される情報を概念的に示す図である。図29では、各フィルタ(「F」)間がパイプ(「P」)によって接続されている様子が示されている。
続いて、コントロール層20は、各フィルタに対して並列的に実行要求を出力する(図24のS1108)。すなわち、フィルタの呼び出しはフィルタの接続順ではなく、全てのフィルタに対してほぼ同時に行われる。フィルタ間の同期はパイプによってとられるからである。すなわち、コントロール層からの実行要求を受けて、各フィルタは自分の入力側のパイプにデータが入力されるまで待機する。但し、入力フィルタには、入力側にパイプは存在しない。したがって、入力フィルタは実行要求に応じて処理を開始する。
まず、入力フィルタは、入力デバイスよりデータを入力し(図25のS1111)、当該データを、出力側に接続されているパイプに出力する(S1112)。なお、データが複数回に分けて入力される場合(複数枚の原稿がスキャンされる場合等)は、データの入力とパイプへの出力が繰り返される。全ての入力データについて処理が終了すると(S1113でYES)、入力フィルタの処理は終了する。
変換フィルタは、入力側に接続されているパイプに対するデータの入力を検知すると処理を開始する。まず、当該パイプからデータを読み込み(S1121)、データに対して画像処理を施す(S1122)。続いて、処理結果としてのデータを出力側に接続されているパイプに出力する(S1123)。入力側のパイプに入力された全てのデータについて処理が終了すると(S1124でYES)、変換フィルタの処理は終了する。
出力フィルタは、入力側に接続されているパイプに対するデータの入力を検知すると処理を開始する。まず、当該パイプからデータを読み込み(S1131)。続いて、読み込まれたデータを出力デバイスを利用して出力する(S1132)。入力側のパイプに入力された全てのデータについて処理が終了すると(S1133でYES)、出力フィルタの処理は終了する。
パイプについて更に詳しく説明する。図30は、パイプを介したフィルタ間のデータの伝達手順を説明するための図である。図中において、フィルタA300a及びフィルタB300bは、それぞれフィルタを示す。DMAパイプ41aは、図1において説明した、画像パイプ41の一例としてのDMAパイプである。画像メモリ250は、複合機1に備えられた物理的な(ハードウェアとしての)画像メモリである。
フィルタA300aからフィルタB300bにデータ(画像データ)が伝達される場合、フィルタA300aは、DMAパイプ41aに対して画像データを格納するためのメモリ領域の確保を要求する(S51)。DMAパイプ41aは、当該メモリ領域を確保し、そのアドレスをフィルタA300aに返却する(S52)。フィルタA300aは、返却されたアドレス(画像メモリ250)に画像データを書き込み(S53)、画像データを書き込んだアドレスをDMAパイプ41aに通知する(S54)。
フィルタB300bは、DMAパイプ41aに対して画像データが書き込まれたアドレスが通知されるまで、当該アドレスの問い合わせを繰り返し(定期的に)行っている(S55)。但し、フィルタB300bは、当該アドレスが通知されるまで待機していてもよい。当該アドレスがDMAパイプ41aに通知されると、フィルタB300bは、当該アドレスを取得し、画像メモリ250に対する画像データの書き込みを検知する。そこで、フィルタB300bは、画像メモリ250の当該アドレスより画像データを読み出し(S56)、当該画像データに対してフィルタ300bに関する処理を実行する。処理が完了すると、フィルタB300bは、当該アドレスに係るメモリ領域の開放をDMAパイプ41aに要求する(S57)。DMAパイプ41aは、当該メモリ領域を開放する(S58)。
このように、フィルタ間のデータの伝達を画像メモリ(共有メモリ)を介して行うことにより、フィルタごとに画像データを格納するためのメモリ領域を確保する必要がなくなり、メモリ効率や処理性能の向上を図ることができる。また、フィルタ間に呼び出し関係が生じないため、フィルタの独立性を保つことができる。
次に、具体的な機能を例として、複合機1内における処理シーケンスを説明する。図31は、コピー機能を実現する際の処理手順を説明するための図である。
ステップS11において、ローカルUI部12は、図26に示したオペレーションパネルを介してユーザからコピー要求の入力(フィルタの選択)を受け付ける。
ところで、図26に示されるようにユーザに各フィルタを選択させるといったユーザインタフェースは、ユーザの要求に柔軟に対応できるという反面、コピーのように頻繁に利用する機能については、毎回フィルタの選択によって実行指示を行うのはユーザにとって煩雑である。そこで、例えば、頻繁に利用する機能については、「コピー」ボタンを表示させ、「コピー」ボタンが選択されると、内部的に利用するフィルタが選択されるようにしてもよい。
ユーザによって要求が入力されると、ローカルUI部12は、入力された要求(選択されたフィルタ)の実行をコントロール層20に要求する(S12)。コントロール層20は、選択されたフィルタ間をパイプによって接続する(S13)。
図32は、コピー機能に係るフィルタ間がパイプによって接続された様子を概念的に示す図である。図32において、読取フィルタ301と印刷フィルタ321とが画像パイプ41によって接続されている。ステップS13では、このような内容を示す情報が生成される。図28より、ここでの画像パイプ41は、DMAパイプが相当する。
続いて、コントロール層20は、利用する各フィルタ(読取フィルタ301及び印刷フィルタ321)に対して実行要求を並列的に出力する(S14)。
まず、入力フィルタである読取フィルタ301は、スキャナ制御部51に対して画像の読み取りを指示する(S15)。当該指示に応じてスキャナ制御部51の制御のもと、スキャナ(撮像部)によって原稿から画像データが読み取られ、読取フィルタ301に出力される。読取フィルタ301は、当該画像データを画像パイプ41に出力する(S16)。画像パイプ41の実体はメモリであるため、画像パイプ41は、メモリ制御部53を介して画像データをメモリに書き込む(S17)。なお、ここでは、DMA転送が行われる。
一方、印刷フィルタ321は、入力側に接続されている画像パイプ41への画像データの書き込みが検知されると処理を開始する。まず、印刷フィルタ321は、画像パイプ41に対し画像データの読み込みを要求する(S18)。画像パイプ41は、メモリ制御部53を介して画像データを読み込む(S19)。印刷フィルタ321は、当該画像データの印刷をプロッタ制御部52に指示する(S20)。当該指示に応じてメモリ制御部53からプロッタ制御部52に画像データがDMA転送され、プロッタ制御部52の制御のもと、プロッタ(印刷部)によって画像データが印刷される。
次に、プリンタ機能(クライアントPCからの印刷機能)について説明する。図33は、プリンタ機能を実現する際の処理手順を説明するための図である。
ステップS21において、クライアントPCからの印刷要求が受け付けられる。当該印刷要求は、まず、ネットワーク制御部55によって受信され、通信サーバ部11に通知される。通信サーバ部11は、プリンタ機能を実現するために必要なフィルタを選択し、選択されたフィルタの実行をコントロール層20に要求する(S22)。コントロール層20は、選択されたフィルタ間をパイプによって接続する(S23)。
図34は、プリンタ機能に係るフィルタ間がパイプによって接続された様子を概念的に示す図である。図34において、PC文書受信フィルタ305と文書変換フィルタ312とが画像パイプ41によって接続されている。また、文書変換フィルタ312と印刷フィルタ321とも画像パイプ41によって接続されている。図28より、PC文書受信フィルタ305と文書変換フィルタ312との間の画像パイプ41は、スプールパイプが相当する。また、文書変換フィルタ312と印刷フィルタ321との間の画像パイプ41は、DMAパイプが相当する。
続いて、コントロール層20は、利用する各フィルタ(PC文書受信フィルタ305、文書変換フィルタ312、及び印刷フィルタ321)に対して実行要求を並列的に出力する(S24)。
まず、入力フィルタであるPC文書受信フィルタ305は、ネットワーク制御部55に対して印刷データ(PDL)の受信を指示する(S25)。印刷データが受信されると、PC文書受信フィルタ305は、受信された印刷データを画像パイプ41に出力する(S26)、画像パイプ41は、メモリ制御部53を介して印刷データをメモリ(ここではHDD)に書き込む(S27)。
文書変換フィルタ312は、入力側に接続されている画像パイプ41への印刷データの書き込みが検知されると処理を開始する。まず、文書変換フィルタ312は、画像パイプ41に対し印刷データの読み込みを要求する(S28)。画像パイプ41は、メモリ制御部53を介してHDDより印刷データを読み込み(S29)、文書変換フィルタ312に出力する。文書変換フィルタ312は、当該印刷データを画像データ(ビットマップ)に変換し(S30)、当該画像データを画像パイプ41に出力する(S31)。続いて、画像パイプ41は、メモリ制御部53を介して画像データをメモリに書き込む(S32)。
印刷フィルタ321は、入力側に接続されている画像パイプ41への画像データの書き込みが検知されると処理を開始する。まず、印刷フィルタ321は、画像パイプ41に対し画像データの読み込みを要求する(S33)。画像パイプ41は、メモリ制御部53を介して画像データを読み込む(S34)。印刷フィルタ321は、当該画像データの印刷をプロッタ制御部52に指示する(S35)。当該指示に応じてメモリ制御部53からプロッタ制御部52に画像データがDMA転送され、プロッタ制御部52の制御のもと、プロッタ(印刷部)によって画像データが印刷される。
なお、他の機能についても同様のシーケンスによって実現される。
上述したように本実施の形態における複合機1によれば、各フィルタを部品として各機能を構築するため、機能のカスタマイズ又は拡張を簡便に行うことができる。すなわち、各フィルタ間には、機能的な依存関係はなく独立性が保たれているため、フィルタの新たな追加やフィルタの組み合わせの変更によって、新たな機能(アプリケーション)を容易に開発することができる。したがって、新たなアプリケーションの実装が要求された場合、当該アプリケーションの一部の処理について実装されていない場合は、当該一部の処理を実現するフィルタのみを開発し、インストールすればよい。よって、コントロール層20及びアプリケーションロジック層30より下位の層について、新たなアプリケーションの実装に応じて発生する修正の頻度を低下させることができ、安定したプラットフォームを提供することができる。
また、フィルタ単位で実行条件の設定用のユーザインタフェースが実装されるため、或るフィルタを用いて実現されるアプリケーション間では、当該フィルタのユーザインタフェースを共通的に用いることができ、アプリケーションごとのユーザインタフェースの開発工数を削減することができる。
本実施の形態では、図26に示されるようなユーザインタフェースによって、ユーザに各フィルタを選択させる例を説明した。しかしながら、斯かるユーザインタフェースは、ユーザの要求に柔軟に対応できるという反面、コピーのように頻繁に利用する機能については、毎回フィルタの選択によって実行指示を行うのはユーザにとって煩雑である。
かかる課題を解決するのが図1に示すアクティビティ31である。すなわち、フィルタの組み合わせをアクティビティ31として予め定義しておけば、ユーザが、アクティビティ31を単位として実行対象を選択すると、選択されたアクティビティ31は、当該アクティビティ31に定義された組み合わせに係る各フィルタを自動的に実行するからである。したがって、操作の煩雑さを解消することができるとともに、アプリケーション単位で実行対象を選択していた従来のユーザインタフェースと同様の操作感を提供することができる。
図35は、アクティビティの構成要素を説明するための図である。図35に示されるように、アクティビティ31は、アクティビティUI、アクティビティロジック、及び永続記憶領域情報等より構成される。
アクティビティUIは、アクティビティ31に関する画面(例えば、アクティビティ31の実行条件等を設定させるための設定画面)をオペレーションパネル等に表示させるための情報又はプログラムである。
アクティビティロジックは、アクティビティ31の処理内容が実装されたプログラムである。基本的に、アクティビティロジックには、フィルタの組み合わせに関するロジック(例えば、フィルタの実行順、複数のフィルタに跨る設定、フィルタの接続変更、エラー処理等)が実装されている。
永続記憶領域情報は、アクティビティ31に対する設定情報(例えば、実行条件のデフォルト値)等、不揮発メモリに保存する必要があるデータのスキーマ定義が相当する。当該スキーマ定義は、アクティビティ31のインストール時にデータ管理部42に登録される。
図36は、アクティビティを利用させるための操作画面例を示す図である。図36において、アクティビティ選択画面600は、実行対象とするアクティビティを選択させるためにオペレーションパネル202のタッチパネル511に表示される画面である。アクティビティ選択画面600には、複合機1にインストールされているアクティビティ31ごとにボタンが表示される。図中では、コピーアクティビティ31bに対応するコピーボタン610、プリンタアクティビティ31bに対応するプリンタボタン620、マルチ文書アクティビティ31cに対応するマルチ文書ボタン630が表示されている。
なお、インストールされているアクティビティ31の一覧情報は、記憶装置に記録されており、例えば、コントロール層20によって管理されている。したがって、ローカルUI部12は、コントロール層20に問い合わせることにより、アクティビティ31の一覧情報を取得し、当該一覧情報に基づいて、アクティビティ選択画面600の各ボタンを表示させる。
アクティビティ選択画面600において、コピーボタン610が選択(タッチ)されると、ローカルUI部12は、コピーアクティビティ31aのアクティビティUIを呼び出すことによりコピーアクティビティ31aの画面情報を取得し、当該画面情報に基づいてコピーアクティビティ画面611をタッチパネル511に表示させる。コピーアクティビティ画面611は、コピーアクティビティ31aの実行条件を設定させるための画面であり、図中では、コピーアクティビティ31aを構成する各フィルタの設定画面(読取フィルタ設定画面611a、文書加工フィルタ設定画面611b、及び印刷フィルタ設定画面611c)が表示された例が示されている。すなわち、各フィルタの実行条件を設定させることで、コピーアクティビティ31aの実行条件が設定されるからである。各フィルタの設定画面の画面情報は、コピーアクティビティ31aのアクティビティUIが、ローカルUI部12からの呼び出しに応じて各フィルタのフィルタ用設定UIを呼び出すことにより取得され、コピーアクティビティ31aの画面情報に含められる(マージされる)。なお、単に、各フィルタの設定画面を並べるだけでなく、各フィルタに対して一括して設定を行うためのUI(例えば、「両面→両面」ボタン、読み取りの設定(両面)ボタン、印刷の設定(両面)ボタン等)をコピーアクティビティ画面611に表示させるようにしてもよい。
プリンタボタン620が選択されると、ローカルUI部12は、プリンタアクティビティ31bのアクティビティUIを呼び出すことによりプリンタアクティビティ31bの画面情報を取得し、当該画面情報に基づいてプリンタアクティビティ画面621をタッチパネル511に表示させる。プリンタアクティビティ画面621は、プリンタアクティビティ31bの状態(印刷中等)を表示させる画面である。すなわち、後述されるように、プリンタアクティビティ31bは、印刷データの受信に応じて起動されるものであり(すなわち、オペレーションパネル202上における操作によって起動されるものではない。)、基本的に設定画面は不要だからである。
マルチ文書ボタン630が選択されると、ローカルUI部12は、マルチ文書アクティビティ31cのアクティビティUIを呼び出すことによりマルチ文書アクティビティ31cの画面情報を取得し、当該画面情報に基づいてマルチ文書アクティビティ画面631をタッチパネル511に表示させる。図中では、マルチ文書アクティビティ画面631として、図26において説明した操作画面と同じ画面が表示される例が示されている。
以下、本実施の形態において例示されている各アクティビティ31の処理手順について説明する。図37は、マルチ文書アクティビティの処理手順を説明するためのフローチャートである。なお、図37のフローチャートは、図24におけるものと同様である。但し、アクティビティとして実行される場合、実行主体が異なるステップが有るため、改めて説明する。
図36のアクティビティ選択画面600においてマルチ文書ボタン630が選択され、マルチ文書アクティビティ画面631がタッチパネル511に表示されると、図37の処理が開始される。
マルチ文書アクティビティ画面631において、ユーザによって入力フィルタが選択され(S1201)、選択された入力フィルタの実行条件が設定される(S1202)。同様に、変換フィルタ又は出力フィルタについても選択が行われ(S1203)、フィルタ間の接続が指定され(S1204)、実行条件が設定される(S1205)。
以上の設定において、選択された入力フィルタ、変換フィルタ、出力フィルタの情報(すなわち、どのフィルタが選択されたのか、また、どのフィルタとどのフィルタとが接続しているのかを示す情報)は、マルチ文書アクティビティ31cのアクティビティロジックに保持される。また、各フィルタの実行条件は、各フィルタのフィルタロジックに保持される。すなわち、マルチ文書アクティビティ31cのアクティビティロジックに保持される情報と、各フィルタのフィルタロジックに保持される情報とによって、フィルタの実行順と各フィルタの設定情報とを含む情報(図27に示されるような情報)が階層的に保持される。
フィルタの選択及び実行条件の設定が完了し、スタートボタン512が押下されると(S1206でYES)、マルチ文書アクティビティ31cのアクティビティロジックは、フィルタの実行順と各フィルタの設定情報とを含む情報をコントロール層20に出力する。
コントロール層20は、フィルタの実行順と各フィルタの設定情報とを含む情報を受けて、選択された各フィルタ間をパイプによって接続する(S1207)。続いて、コントロール層20は、各フィルタに対して並列的に実行要求を出力する(S1208)。以降は、図25において説明した通りである。
次に、図38は、コピーアクティビティの処理手順を説明するためのフローチャートである。図36のアクティビティ選択画面600においてコピーボタン610が選択され、コピーアクティビティ画面611がタッチパネル511に表示されると、図38の処理が開始される。
まず、コピーアクティビティ31aのアクティビティロジックによって、読取フィルタ301、文書加工フィルタ311、及び印刷フィルタ321が実行対象のフィルタとして選択され、各フィルタに対する実行条件の設定の準備がなされる(S1301)。続いて、コピーアクティビティ画面611におけるユーザによる入力に応じて、各フィルタに対して実行条件が設定される(S1302)。当該実行条件は、各フィルタのフィルタロジックにおいて保持される。なお、コピーアクティビティ31aに対する実行条件の設定がなされる場合は、当該実行条件は、コピーアクティビティ31aのアクティビティロジックにおいて保持される。
フィルタの実行条件の設定が完了し、スタートボタン512が押下されると(S1303でYES)、コピーアクティビティ31aのアクティビティロジックは、読取フィルタ301、文書加工フィルタ311、及び印刷フィルタ321を構成要素とした、フィルタの実行順と各フィルタの設定情報とを含む情報(図27に示されるような情報)をコントロール層20に出力する。
コントロール層20は、フィルタの実行順と各フィルタの設定情報とを含む情報を受けて、各フィルタ間をパイプによって接続する(S1304)。続いて、コントロール層20は、各フィルタに対して並列的に実行要求を出力する(S1305)。以降は、図25において説明した通りである。
次に、図39は、プリンタアクティビティの処理手順を説明するためのフローチャートである。図39の処理は、クライアントPC等からの印刷データの受信に応じて通信サーバ部11がプリンタアクティビティ31cを起動することにより開始される。
まず、プリンタアクティビティ31bのアクティビティロジックによって、PC文書受信フィルタ305、文書変換フィルタ312、及び印刷フィルタ321が実行対象のフィルタとして選択され、各フィルタに対する実行条件の設定の準備がなされる(S1401)。続いて、プリンタアクティビティ31bのアクティビティロジックは、通信サーバ部11より受け取った通信ポート情報をPC文書受信フィルタ305に設定する。また、プリンタアクティビティ31bのアクティビティロジックは、通信サーバ部11が印刷データのヘッダ部を解析することにより抽出した印刷の設定情報(用紙サイズ、両面印刷等)を受け取り、当該設定情報を印刷フィルタ321に設定する。なお、印刷データのヘッダ部の解析は、プリンタアクティビティ31b又はPC文書受信フィルタ305が行うようにしてもよい。
続いて、プリンタアクティビティ31bのアクティビティロジックは、PC文書受信フィルタ305、文書変換フィルタ312、及び印刷フィルタ321を構成要素とした、フィルタの実行順と各フィルタの設定情報とを含む情報(図27に示されるような情報)をコントロール層20に出力する。コントロール層20は、フィルタの実行順と各フィルタの設定情報とを含む情報を受けて、各フィルタ間をパイプによって接続する(S1403)。続いて、コントロール層20は、各フィルタに対して並列的に実行要求を出力する(S1404)。以降は、図25において説明した通りである。例えば、PC文書受信フィルタ305は、設定された通信ポート情報に係る通信ポートより印刷データを受信する。
上述したように、本実施の形態における複合機1によれば、フィルタの組み合わせによって構成される機能をアクティビティとして予め定義しておくことにより、より簡便な操作で、フィルタの組み合わせによる機能を利用することができる。
ところで、本実施の形態において、画像パイプ41は、伝達手段の一例に相当する。また、ユーザインタフェース層10は、フィルタ選択手段の一例に相当する。また、コントロール層20は、フィルタ接続手段の一例に相当する。また、対応テーブル60は、対応関係管理手段の一例に相当する。また、アクティビティ31は、機能実行手段の一例に相当する。
(ハードウェア構成例)
なお、以下に複合機1のハードウェア構成の一例を示す。図40は、本発明の実施の形態における複合機のハードウェア構成の一例を示す図である。
複合機1のハードウェアとしては、コントローラ201と、オペレーションパネル202と、ファクシミリコントロールユニット(FCU)203と、撮像部121と、印刷部122が存在する。
コントローラ201は、CPU211、ASIC212、NB221、SB222、MEM−P231、MEM−C232、HDD(ハードディスクドライブ)233、メモリカードスロット234、NIC(ネットワークインタフェースコントローラ)241、USBデバイス242、IEEE1394デバイス243、セントロニクスデバイス244により構成される。
CPU211は、種々の情報処理用のICである。ASIC212は、種々の画像処理用のICである。NB221は、コントローラ201のノースブリッジである。SB222は、コントローラ201のサウスブリッジである。MEM−P231は、複合機1のシステムメモリである。MEM−C232は、複合機1のローカルメモリである。HDD233は、複合機1のストレージである。メモリカードスロット234は、メモリカード235をセットするためのスロットである。NIC241は、MACアドレスによるネットワーク通信用のコントローラである。USBデバイス242は、USB規格の接続端子を提供するためのデバイスである。IEEE1394デバイス243は、IEEE1394規格の接続端子を提供するためのデバイスである。セントロニクスデバイス244は、セントロニクス仕様の接続端子を提供するためのデバイスである。オペレーションパネル202は、オペレータが複合機1に入力を行うためのハードウェア(操作部)であると共に、オペレータが複合機1から出力を得るためのハードウェア(表示部)である。
なお、図1に示されるソフトウェアは、例えば、MEM−C232に格納され、CPU211によって処理されることによりその機能を複合機に実行させる。
以上、実施形態に基づき本発明の説明を行ってきたが、上記実施形態にあげたその他の要素との組み合わせなど、ここで示した要件に本発明が限定されるものではない。これらの点に関しては、本発明の主旨をそこなわない範囲で変更することが可能であり、その応用形態に応じて適切に定めることができる。