以下、図面に基づいて本発明の実施の形態を説明する。本実施の形態では、情報処理装置の具体例として画像形成装置を用いて説明する。図1は、本発明の実施の形態における画像形成装置のハードウェア構成の一例を示す図である。図1では、画像形成装置の具体例として、プリンタ、コピー、スキャナ、又は、ファクス等の複数の機能を一台の筐体において実現する複合機1のハードウェア構成が示されている。
複合機1のハードウェアとしては、コントローラ601と、オペレーションパネル602と、ファクシミリコントロールユニット(FCU)603と、撮像部604と、印刷部605が存在する。
コントローラ601は、CPU611、ASIC612、NB621、SB622、MEM−P631、MEM−C632、HDD(ハードディスクドライブ)633、メモリカードスロット634、NIC(ネットワークインタフェースコントローラ)641、USBデバイス642、IEEE1394デバイス643、セントロニクスデバイス644により構成される。
CPU611は、種々の情報処理用のICである。ASIC612は、種々の画像処理用のICである。NB621は、コントローラ601のノースブリッジである。SB622は、コントローラ601のサウスブリッジである。MEM−P631は、複合機1のシステムメモリである。MEM−C632は、複合機1のローカルメモリである。HDD633は、複合機1のストレージである。メモリカードスロット634は、メモリカード635をセットするためのスロットである。NIC641は、MACアドレスによるネットワーク通信用のコントローラである。USBデバイス642は、USB規格の接続端子を提供するためのデバイスである。IEEE1394デバイス643は、IEEE1394規格の接続端子を提供するためのデバイスである。セントロニクスデバイス644は、セントロニクス仕様の接続端子を提供するためのデバイスである。オペレーションパネル602は、オペレータが複合機1に入力を行うためのハードウェア(操作部)であると共に、オペレータが複合機1から出力を得るためのハードウェア(表示部)である。
図2は、本発明の実施の形態の画像形成装置におけるソフトウェア構成例を示す図である。図2に示されるように、複合機1におけるソフトウェアは、アプリケーションメカニズム10、サービスメカニズム20、デバイスメカニズム30、及び運用部40等のレイヤによって構成される。図2におけるレイヤの上下関係は、レイヤ間の呼び出し関係に基づいている。すなわち、基本的に図中において上にあるレイヤが下のレイヤを呼び出す。図2に示されるソフトウェアは、例えば、HDD633に記憶されており、実行時にMEM−P631にロードされてCPU611にその機能を実行させる。
アプリケーションメカニズム10は、複合機1が提供する機能又は情報(データ)等の資源をユーザに利用させるためのソフトウェア部品(プログラム)群が実装されているレイヤである。本実施の形態では、アプリケーションメカニズム10に実装される一部のソフトウェア部品を「フィルタ」と呼ぶ。これは、複合機1のジョブを実行する手アプリケーションが、「パイプ&フィルタ」と呼ばれるソフトウェアアーキテクチャに基づいて構築されることによる。
図3は、パイプ&フィルタアーキテクチャの概念を説明するための図である。図3において、「F」はフィルタを示し、「P」はパイプを示す。図中に示されるように、各フィルタはパイプによって接続される。フィルタは、入力されたデータに対して変換を施し、その結果を出力する。パイプは、例えば、両端のフィルタより参照可能な記録領域によって構成され、フィルタから出力されたデータを次のフィルタに伝達する。
すなわち、本実施の形態における複合機1では、ジョブをドキュメント(データ)に対する「変換」の連続として捉える。複合機1のジョブは、ドキュメントの入力、加工、及び、出力によって構成されるものとして一般化することができる。そこで「入力」、「加工」、及び、「出力」を、それぞれ「変換」として捉え、一つの「変換」を実現するソフトウェア部品がフィルタとして構成される。入力を実現するフィルタを特に「入力フィルタ」という。また、加工を実現するフィルタを特に「加工フィルタ」という。更に、出力を実現するフィルタを特に「出力フィルタ」という。基本的に、各フィルタは、単独では一つのジョブを実行することはできず、複数のフィルタが、図3に示されるように接続されることにより、一つのジョブを実行するアプリケーションが構築される。
なお、各フィルタは独立しており、フィルタ間における依存関係(呼び出し関係)は基本的に存在しない。従って、フィルタ単位で追加(インストール)又は削除(アンインストール)が可能とされている。
図2において、アプリケーションメカニズム10には、入力フィルタとして、読取フィルタ111、保管文書読出フィルタ112、メール受信フィルタ113、及びファクス受信フィルタ114等が示されている。
読取フィルタ111は、スキャナによる画像データの読み取りを制御し、読み取られた画像データを出力する。保管文書読出フィルタ112は、複合機1の記憶装置に保管されている文書データ(画像データ)を読み出し、読み出されたデータを出力する。メール受信フィルタ113は、電子メールを受信し、当該電子メールに含まれているデータを出力する。ファクス受信フィルタ114は、ファクス受信を制御し、受信された印刷データを出力する。
また、加工フィルタとしては、文書編集フィルタ121及び文書変換フィルタ122等が示されている。文書編集フィルタ121は、入力されたデータに所定の画像変換処理(濃度調整、変倍、回転、及び集約等集)を施し、出力する。文書変換フィルタ122は、画像データのデータ形式を変換する。文書変換フィルタ122は、例えば、レンダリング処理、すなわち、入力されたPostScriptデータをビットマップデータに変換して出力する。
また、出力フィルタとしては、印刷フィルタ131、保管文書登録フィルタ132、メール送信フィルタ133、及びファクス送信フィルタ134等が示されている。
印刷フィルタ131は、入力されたデータをプロッタに出力(印刷)させる。保管文書登録フィルタ132は、入力されたデータを複合機1内の記憶装置、例えば、HDD633に保存する。メール送信フィルタ133は、入力されたデータを電子メールに添付して送信する。ファクス送信フィルタ134は、入力されたデータをファクス送信する。
例えば、複合機1における各種機能は、次のようなフィルタの組み合わせにより実現される。図4は、本実施の形態の複合機における各機能を実現するためのフィルタの組み合わせの例を示す図である。
例えば、コピー機能は、読取フィルタ111と印刷フィルタ131とを接続することにより実現される。読取フィルタ111によって原稿より読み取られた画像データを印刷フィルタ131によって印刷すればよいからである。なお、集約、拡大、又は縮小等の加工が要求された場合は、これらの加工を実現する文書編集フィルタ121が二つのフィルタの間に挿入される。
スキャンto email機能(スキャンした画像データを電子メールで転送する機能)は、読取フィルタ111とメール送信フィルタ133とを接続することによって実現される。ファクス送信機能は、読取フィルタ111とファクス送信フィルタ134とを接続することによって実現される。ファクス受信機能は、ファクス受信フィルタ114と印刷フィルタ131とを接続することによって実現される。ドキュメントボックス蓄積機能(スキャンした画像データを複合機1内に保存する機能)は、読取フィルタ111と保管文書登録フィルタ132とを接続することによって実現される。ドキュメントボックス印刷機能(複合機1内に保存されている文書データを印刷する機能)は、保管文書読出フィルタ102と印刷フィルタ131とを接続することにより実現される。
図4において、例えば、読取フィルタ111については5つの機能において利用されている。このように、各フィルタは複数の機能から利用可能であり、それによって各機能を実現するための開発工数を削減することができる。また、複合機1では各フィルタを部品としてアプリケーションを構築するため、機能のカスタマイズ又は拡張を簡便に行うことができる。すなわち、各フィルタ間には、機能的な依存関係はなく独立性が保たれているため、フィルタの新たな追加やフィルタの組み合わせの変更によって、新たなアプリケーションを容易に開発することができる。したがって、新たなアプリケーションの実装が要求された場合、当該アプリケーションの一部の処理について実装されていない場合は、当該一部の処理を実現するフィルタのみを開発し、インストールすればよい。よって、アプリケーションメカニズム10より下位のレイヤについて、新たなアプリケーションの実装に応じて発生する修正の頻度を低下させることができ、安定したプラットフォームを提供することができる。
アプリケーションメカニズム10には、また、「アクティビティ」と呼ばれるソフトウェア部品が存在する。アクティビティは、複数のフィルタをどの順番で接続するかを管理し、その順番でフィルタを実行させることによりジョブを実行するソフトウェア部品であり、一つのアクティビティによって一つのアプリケーションが実現される。
すなわち、フィルタはそれぞれ独立性が高いため、フィルタの組み合わせ(アプリケーション)を動的に構築することが可能である。具体的には、ジョブの実行要求を受け付けるたびに、利用するフィルタと、フィルタの実行順序、及びそれぞれのフィルタの動作条件等をオペレーションパネル602を介してユーザに設定させることにより、ユーザ所望の機能を実現するようにしてもよい。
しかし、コピー機能のように頻繁に利用する機能については、毎回フィルタを選択することにより実行指示を行うのはユーザにとって煩雑である。かかる課題を解決するのがアクティビティである。すなわち、フィルタの組み合わせ(接続関係)をアクティビティとして予め定義しておけば、ユーザは、アクティビティを単位として実行対象を選択することができる。選択されたアクティビティは、当該アクティビティに定義された組み合わせに係る各フィルタを自動的に実行する。したがって、アクティビティによって、操作の煩雑さを解消することができるとともに、アプリケーション単位で実行対象を選択していた従来のユーザインタフェースと同様の操作感を提供することができる。
図中には、アクティビティの一例として、コピーアクティビティ101、送信アクティビティ102、及びファクスアクティビティ103等が含まれる。例えば、コピーアクティビティ101は、読取フィルタ111と、文書編集フィルタ121と、印刷フィルタ131との組み合わせにより、コピー機能(コピーアプリケーション)を実現する。
なお、基本的に各アクティビティは独立しており、アクティビティ間における依存関係(呼び出し関係)は基本的に存在しない。したがって、アクティビティ単位で追加(インストール)又は削除(アンインストール)が可能である。よって、図2に示されているアクティビティ以外にも、必要に応じて各種のフィルタの組み合わせによるアクティビティを作成し、インストールすることができる。
フィルタ及びアクティビティについて更に詳しく説明する。図5は、フィルタの構成要素を説明するための図である。図5に示されるように、各フィルタは、フィルタ設定用UI、フィルタロジック、フィルタ固有下位サービス、及び永続記憶領域情報等より構成される。このうち、フィルタ設定用UI、フィルタ固有下位サービス、及び永続記憶領域情報については、フィルタによって必ずしも構成要素に含まれない。
フィルタ設定用UIは、フィルタの動作条件等を設定させるための画面をオペレーションパネル602等に表示させるプログラムである。すなわち、フィルタごとに動作条件が設定される。例えば、読取フィルタ111であれば、フィルタ設定用UIは、原稿種類、読取サイズ、解像度等を設定させる画面が相当する。なお、オペレーションパネル602が、HTMLデータや、スクリプトに基づいて表示制御を行うことが可能であれば、フィルタ設定用UIは、HTMLデータやスクリプトであってもよい。
フィルタロジックは、フィルタの機能を実現するためロジックが実装されたプログラムである。すなわち、フィルタの構成要素としてのフィルタ固有下位サービスや、サービスメカニズム20等を利用して、フィルタ設定用UIを介して設定された動作条件に応じてフィルタの機能を実現する。例えば、読取フィルタ111であれば、スキャナによる原稿の読み取り制御のためのロジックが相当する。
フィルタ固有下位サービスは、フィルタロジックを実現するために必要な下位機能(ライブラリ)である。
永続記憶領域情報は、フィルタに対する設定情報(例えば、動作条件のデフォルト値)等、不揮発メモリに保存する必要があるデータのスキーマ定義が相当する。当該スキーマ定義は、フィルタのインストール時にデータ管理部23に登録される。
図6は、アクティビティの構成要素を説明するための図である。図6に示されるように、アクティビティは、アクティビティUI、アクティビティロジック、及び永続記憶領域情報等より構成される。
アクティビティUIは、アクティビティに関する画面(例えば、アクティビティの動作条件等を設定させるための設定画面)をオペレーションパネル602等に表示させるための情報又はプログラムである。
アクティビティロジックは、アクティビティの処理内容が実装されたプログラムである。基本的に、アクティビティロジックには、フィルタの組み合わせに関するロジック(例えば、フィルタの実行順、複数のフィルタに跨る設定、フィルタの接続変更、エラー処理等)が実装されている。
永続記憶領域情報は、アクティビティに対する設定情報(例えば、動作条件のデフォルト値)等、不揮発メモリに保存する必要があるデータのスキーマ定義が相当する。当該スキーマ定義は、アクティビティのインストール時にデータ管理部23に登録される。
図2に戻る。サービスメカニズム20は、アクティビティ又はフィルタ等が利用するプリミティブなサービスを提供するソフトウェア部品や、アプリケーションが機種等のハード的な仕様に対して、非依存となるための仕組みを提供すソフトウェア部品等が実装されるレイヤである。図中において、サービスメカニズム20には、画像パイプ21、UI部22、データ管理部23、紙トレースサービス24、マーキング処理サービス25、マーキングハンドリングサービス26、及び拡張プラグイン27等のソフトウェア部品が含まれる。
画像パイプ21は、上述したパイプの機能を実現する。すなわち、メモリ領域等を用いて或るフィルタからの出力データを次のフィルタに伝達する。なお、図中において、画像パイプ21は、一つのブロックによって示されているが、その実体はフィルタ間を接続するパイプの数だけ生成される。
UI部22は、オペレーションパネル602に表示される操作画面を介して入力されるユーザ要求を解釈し、ユーザ要求に応じた処理制御をアプリケーションメカニズム10又はサービスメカニズム20等におけるソフトウェア部品に委譲する。データ管理部23は、ユーザ情報等、機器内外に保存される各種情報について、保存方法、及び保存場所等を規定する。
紙トレースサービス24は、複合機1によって画像データが印刷された紙文書を一意に識別するためのID(以下、「紙ID」という。)の発行及び管理を行う。マーキング処理サービス25は、画像データに対してバーコードや地紋パターン等によって各種の情報(例えば、紙ID)を埋め込む(合成する)ための処理(マーキング処理)の制御を行う。マーキング処理サービス25は、ページを認識し、ページ単位でマーキング処理の制御を行う。マーキングハンドリングサービス26は、マーキング処理サービス25より指定された画像データの指定された位置に、指定された形式(パーコード又は地紋パターン等)によって指定された情報を合成する処理を実行する。
拡張プラグイン27は、アクティビティの動作を拡張又は変更するための処理を実行するソフトウェア部品である。すなわち、上記したようにアクティビティは予めフィルタの接続関係が固定的に定義されたソフトウェア部品であるが、拡張プラグイン27の追加によって、その振る舞いを動的に変更することができる。振る舞いの変更の態様は、拡張プラグイン27の実装内容に応じて変化する。なお、アクティビティと拡張プラグイン27との間のインタフェースは予め規定されている。したがって、拡張プラグイン27は、当該インタフェースに従って実装される必要があり、アクティビティは当該インタフェースを介して拡張プラグイン27を呼び出せるように実装される必要がある。また、図中において、拡張プラグイン27は破線によって示されているが、これは、拡張プラグイン27は、アクティビティの動作を拡張等しない場合は、必要ないことを示す。
デバイスメカニズム30は、複合機1が有するデバイス毎に設けられたデバイスを制御する手段を有する。
運用部40は、システムの運用管理に関するソフトウェア部品が実装される部分であり、アプリケーションメカニズム10、サービスメカニズム20、及びデバイスメカニズム30より共通に利用される。図中において、運用部40には、プラグイン管理部41が含まれている。プラグイン管理部41は、アクティビティ、フィルタ、及び拡張プラグイン27等、自由に抜き差し(インストール・アンインストール)可能なソフトウェア部品の情報を管理する。
以上のようなソフトウェア構成を有する複合機1において、本実施の形態ではコピーアクティビティ101の振る舞いを拡張プラグイン27によって変更する例について説明する。まず、拡張プラグイン27がインストールされる前の状態(プラグイン前の状態)について説明する。
図7は、プラグイン前のコピーアクティビティとフィルタとの関係を示す図である。図7に示されるように、拡張プラグイン27がインストールされていない状態において、コピーアクティビティ101は、入力フィルタとして読取フィルタ111を利用し、加工フィルタとして文書編集フィルタ121を利用し、出力フィルタとして印刷フィルタ131を利用する。このような利用関係は、コピーアクティビティ101のアクティビティロジック内にロジックとして組み込まれている。
斯かる構成に基づいて、コピーアクティビティ101は、次のような処理手順によってジョブを実行する。図8は、プラグイン前のコピーアクティビティによる処理手順を説明するためのシーケンス図である。
オペレーションパネル602に表示されている操作画面を介して、ユーザによってコピーアクティビティ101が実行対象として選択されると、UI部22は、コピーアクティビティ101に対して起動を指示する(S101)。コピーアクティビティ101は、起動指示に応じ、コピーアクティビティ101自身の動作条件を格納するためのオブジェクト(以下、「プリファレンスオブジェクト」という。)を生成する(S102)。プリファレンスオブジェクトとは、動作条件を規定するパラメータが属性として定義されたクラスのインスタンスをいい、当該クラスの構成は、アクティビティ及びフィルタごとに異なり得る。
続いて、コピーアクティビティ101は、自らが利用する各フィルタ(読取フィルタ111、文書編集フィルタ121、及び印刷フィルタ131)のそれぞれに対して、プリファレンスオブジェクトの生成を要求する(S103、S104、S105)。各フィルタは、当該フィルタに固有の属性を有するプリファレンスオブジェクトを生成し、生成されたプリファレンスオブジェクトをコピーアクティビティ101に返却する。なお、以上において生成されたコピーアクティビティ101及び各フィルタのプリファレンスオブジェクトの属性には既定値が設定されている。続いて、コピーアクティビティ101は、自らに定義されているコピーアクティビティ101と各フィルタとの接続関係(コピーアクティビティ101と各フィルタとの利用関係及び各フィルタの実行順の前後関係)に基づいて、各プリファレンスオブジェクトの間に関連を生成することにより当該接続関係を示す情報(プリファレンスツリー)を構築する(S106)。
図9は、コピーアクティビティに関するプリファレンスツリーの例を示す図である。同図には、コピーアクティビティ101、読取フィルタ111、文書編集フィルタ121、印刷フィルタ131のそれぞれに対するプリファレンスオブジェクトとして、コピープリファレンス101p、読取プリファレンス111p、文書編集プリファレンス121p、及び印刷プリファレンス131pが示されている。
コピープリファレンス101pは、カラーモード、自動濃度調整、変倍率、及びプラグインON/OFFフラグ等のパラメータ(属性)を含む。プラグインON/OFFフラグは、拡張プラグイン27が有効であるか否かを示すパラメータであり、既定値はOFF(無効)が設定される。読取プリファレンス111pは、原稿種類、読取サイズ、カラーモード、解像度、及び原稿面等のパラメータを含む。文書編集プリファレンス121pは、自動濃度、手動濃度、変倍種類、画像回転、及び集約等のパラメータを含む。印刷プリファレンス131pは、カラーモード、用紙選択、印刷面、印刷部数、ソート、ステープル、パンチ、及び排紙先等のパラメータを含む。
コピープリファレンス101pから他のプリファレンスオブジェクトへの関連l1、l2、及びl3は、コピーアクティビティ101と各フィルタとの利用関係に基づいて生成される。各フィルタ間の関連l4及びl5は、フィルタの実行順の前後関係に基づいて生成される。なお、各関連は、例えば、一方のプリファレンスオブジェクトが他方のプリファレンスオブジェクトの識別情報(参照、ポインタ、又はID等)をメンバ変数によって保持することにより実装すればよい。
起動指示に対応する処理が完了すると(S107)、UI部22は、オペレーションパネル602に、コピーアクティビティ101の操作画面(コピー操作画面)を表示させる。
図10は、コピー操作画面の表示例を示す図である。図10において、コピー操作画面500は、コピーアクティビティ設定領域101g、読取条件設定領域111g、編集条件設定領域121g、及び印刷条件設定領域131g等より構成される。各領域は、コピーアクティビティのアクティビティUI(図6参照)又は各フィルタのフィルタ設定用UI(図5参照)に基づいてUI部22が表示させる。ユーザは、各領域を操作することにより、コピーアクティビティ101又は各フィルタの動作条件を設定する。各領域において設定可能な動作条件のパラメータは、基本的にコピーアクティビティ101又は各フィルタに対応するプリファレンスオブジェクトの属性に一致する。
例えば、コピーアクティビティ領域101gにおいて動作条件が設定されると、UI部22は、コピーアクティビティ101に対して設定内容を通知する(S108)。当該通知に応じ、コピーアクティビティ101は、設定内容をコピープリファレンス101pに反映(設定)する。
同様に、読取条件設定領域111g、編集条件設定領域121g、又は印刷条件設定領域131gにおいて動作条件が設定されると、UI部22は、対応するフィルタに対して設定内容を通知する(S109、S110、S111)。当該通知に応じ、対応するフィルタは、自らのプリファレンスオブジェクト(読取プリファレンス111p、編集プリファレンス121p、又は印刷プリファレンス131p)に設定内容を反映する。
続いて、オペレーションパネル602においてスタートボタンが押下されることにより、ユーザによってジョブの開始指示が入力されると、UI部22は、コピーアクティビティ101に対してジョブの実行を指示する(S112)。ジョブの実行指示に応じ、コピーアクティビティ101は、拡張プラグイン27に対応するための処理(プラグイン対応処理)を呼び出す(S113)。コピーアクティビティ101に当該プラグイン対応処理が実装されていることにより、拡張プラグイン27による振る舞いの変更が可能となる。すなわち、アクティビティにおけるプラグイン対応処理は、概念的にはアクティビティに対してプラグインを差し込むための口として捉えることができる。
プラグイン対応処理において、コピーアクティビティ101は、まず、拡張プラグイン27の存否を確認する(S114)。具体的には、コピーアクティビティ101は、プラグイン管理41に問い合わせることにより、拡張プラグイン27がインストールされているか否かを問い合わせる。なお、拡張プラグイン27が予め決められた名前によって実装されるように決められている場合は、当該名前によるソフトウェア部品の存否をプラグイン管理41に問い合わせればよい。図8は、プラグイン前の状態に係るシーケンス図であるため、ここでは、拡張プラグイン27は検索されず、プラグイン対応処理は終了する。
プラグイン対応処理に続いて、コピーアクティビティ101は、プリファレンスツリーに基づいて、各フィルタ間を接続する画像パイプ21を生成する(S115、S116)。ここでは、図9のプリファレンスツリーにおける関連l4に基づいて、読取フィルタ111と文書編集フィルタ121とを接続する画像パイプ21aが生成され、関連l5に基づいて、文書編集フィルタ121と印刷フィルタ131とを接続する画像パイプ21bが生成される。
続いて、コピーアクティビティ101は、プリファレンスツリーに基づいて、コピーアクティビティ101と各フィルタと画像パイプ21との接続を行う(S117)。当該接続が形成されることにより、アクティビティ、フィルタ、及び画像パイプ21によって実行されるジョブにおける処理の流れを表現するツリー構造(以下「ジョブツリー」という。)が構築される。
図11は、コピーアクティビティに関するジョブツリーの例を示す図である。同図には、コピーアクティビティ101、読取フィルタ111、文書編集フィルタ121、及び印刷フィルタ131と、画像パイプ21a及び21bとが示されている。
コピーアクティビティ101と各フィルタとの接続(関連l11、l12、及びl13)は、プリファレンスツリーにおける関連l1、l2、及びl3に基づいて生成される。また、読取フィルタ111と画像パイプ21aとの接続(関連l14)、及び文書編集フィルタ121と画像パイプ21aとの接続(関連l15)は、プリファレンスツリーにおける関連l4に基づいて生成される。同様に、文書編集フィルタ121と画像パイプ21bとの接続(関連l16)及び印刷フィルタ131と画像パイプ21bとの接続(関連l17)は、プリファレンスツリーにおける関連l5に基づいて生成される。
このように、プリファレンスツリーに基づくジョブツリーの構築は、固定的なものでなく汎用的な、また、動的な変換処理として実装されている。
ジョブツリーが構築されると、コピーアクティビティ101は、ジョブツリーに基づいてジョブの実行を開始する。まず、コピーアクティビティ101は、ジョブツリーにおける末端のフィルタ(当該フィルタの出力先に画像パイプ21が接続されていないフィルタ)に対して処理の実行要求を行う。通常、末端のフィルタは、出力フィルタであり、ここでは、印刷フィルタ131がそれに該当する。したがって、まず、印刷フィルタ131に対して実行要求がなされる(S118)。
実行要求を受けた印刷フィルタ131は、ジョブツリーにおいて自らの入力先に接続されている画像パイプ21bに画像データの入力を要求する(S119)。画像パイプ21bは、自らが管理するメモリ領域に画像データが入力されていないため、ジョブツリーにおいて自らの入力先に接続されている文書編集フィルタ121に対して処理の実行を要求する(S120)。文書編集フィルタ121は、ジョブツリーにおいて自らの入力先に接続されている画像パイプ21aに画像データの入力を要求する(S121)。画像パイプ21aは、自らが管理するメモリ領域に画像データが入力されていないため、ジョブツリーにおいて自らの入力先に接続されている読取フィルタ111に対して処理の実行を要求する(S122)。
読取フィルタ111は、実行要求に応じ、読取プリファレンス111pに設定された動作条件に従って撮像部604を制御して原稿からの画像データの読み取りを行い(S123)、読み取られた画像データをジョブツリーにおいて自らの出力先に接続されている画像パイプ21aに出力する(S124)。画像パイプ21aは、画像データの入力に応じ、画像データの入力を要求していた文書編集フィルタ121に対して画像パイプ21aの状態変化(ここでは、画像データが入力されたこと)を通知する(S125)。当該通知に応じ、文書編集フィルタ121は、画像パイプ21aより画像データを取得し、取得された画像データに対して文書編集プリファレンス121pに設定された動作条件に従って、画像データに対する画像処理を行う(S126)。続いて、文書編集フィルタ121は、画像処理が施された画像データを自らの出力先に接続されている画像パイプ21bに出力する(S127)。画像パイプ21bは、画像データの入力に応じ、画像データの入力を要求していた印刷フィルタ131に対して画像パイプ21bの状態変化(ここでは、画像データが入力されたこと)を通知する(S128)。当該通知に応じ、印刷フィルタ131は、画像パイプ21bより画像データを取得し、印刷プリファレンス131pに設定された動作条件に従って印刷部605を制御して取得された画像データの印刷を行う(S129)。続いて、印刷フィルタ131は、処理の完了をコピーアクティビティ101に通知する(S130)。以上によって、ユーザに要求されたジョブの実行が完了する。なお、上記では、1ページ分のコピーについて説明しているが、複数ページのコピーの場合は、ステップS119〜S129までがページ数分繰り返される。
続いて、拡張プラグイン27がインストールされた後の状態(プラグイン後の状態)について、拡張プラグイン27の実装内容の相違に応じて実施の形態を分けて説明する。
第一の実施の形態では、拡張プラグイン27によって、コピー元の原稿より読み取られた画像データを複合機1に蓄積すると共に、コピー先の紙に印刷される画像データに紙IDを示すバーコードの埋め込みを行うようにコピーアクティビティ101の振る舞いを変更する例について説明する。
図12は、第一の実施の形態におけるコピーアクティビティとフィルタ等との関係を示す図である。図12中、図2又は図7と同一部分には同一符号を付し、その説明は省略する。
図12において、サービスメカニズム20におけるマーキング埋め込みプラグイン27aが、第一の実施の形態においてコピーアクティビティ101より利用される拡張プラグイン27に相当する。同図では、コピーアクティビティ101が保管文書登録フィルタ132を利用することが示されている。また、印刷フィルタ131がマーキング処理サービス25を利用することが示されている。斯かる利用関係は、マーキング埋め込みプラグイン27aが、コピーアクティビティ101のプリファレンスツリーの構成を動的に変更することにより形成されるものである。以下、第一の実施の形態における処理手順について説明する。
図13及び図14は、第一の実施の形態におけるプラグイン後のコピーアクティビティによる処理手順を説明するためのシーケンス図である。図13又は図14中、図8と同一ステップには同一ステップ番号を付し、その説明は省略する。
拡張プラグイン27が追加されている場合、ステップS114において、コピーアクティビティ101がプラグイン管理41に拡張プラグイン27の存否を問い合わせると、プラグイン管理41は、マーキング埋め込みプラグイン27aがインストールされていることを応答する。そこで、コピーアクティビティ101は、コピープリファレンス101pのプラグインON/OFFフラグの値をONにし、マーキング埋め込みプラグイン27aに対して処理の実行を要求する(S201)。この要求を行うためのインタフェースは、予め定められたインタフェースの一部に相当する。
なお、コピーアクティビティ101は、マーキング埋め込みプラグイン27aがどのような機能を実現する拡張プラグイン27であるのかについては意識せずに、自らに対する拡張プラグイン27としてインストールされている拡張プラグイン27に対して実行要求を行う。当該実行要求では、コピーアクティビティ101のプリファレンスツリーがパラメータとして渡される。この段階において当該プリファレンスツリーは、図9に示される構成を有する。
処理の実行要求を受けたマーキング埋め込みプラグイン27aは、実装されたロジックに従って処理を実行する。まず、マーキング埋め込みプラグイン27aは、保管文書登録フィルタ132に対してプリファレンスオブジェクトの生成を要求する(S202)。保管文書登録フィルタ132は、当該フィルタに固有の属性を有するプリファレンスオブジェクトを生成し、生成されたプリファレンスオブジェクトをマーキング埋め込みプラグイン27aに返却する。
続いて、マーキング埋め込みプラグイン27aは、保管文書登録フィルタ132に対して、これから蓄積される画像データに対する文書IDの発行を要求する(S203)。保管文書登録フィルタ132は、文書IDを生成し、生成された文書IDをマーキング埋め込みプラグイン27aに返却する(S204)。なお、文書IDとは、複合機1における文書データベース内においてにおいて各文書データ(画像データ)に対して一意なIDである。
続いて、マーキング埋め込みプラグイン27aは、文書IDを引数として、紙トレースサービス24に対して紙IDの発行を要求する(S205)。紙トレースサービス24は、紙IDを生成し、生成された紙IDをマーキング埋め込みプラグイン27aに返却する(S206)。紙は複合機1の存在と関係なく流通する。したがって、紙一枚一枚の識別を目的とする紙IDは、複合機1内において(ローカルな範囲において)一意ではなく、複合機1外において(グローバルな範囲において)一意となるように生成される。なお、紙トレースサービス24は、文書IDと、当該文書IDに対応して発行した紙IDとを関連付けて管理しておく。
続いて、マーキング埋め込みプラグイン27aは、印刷フィルタ131に対して、動作条件の変更を要求する(S207)。具体的には、バーコードの埋め込み処理に関する動作条件(マーキング条件)を動作条件に追加することを要求する。ここで、マーキング条件を構成する各パラメータの値は、マーキング埋め込みプラグイン27aにおいて予め定められた値が設定される。当該要求に応じ、印刷フィルタ131は、印刷プリファレンス131pに対してマーキング条件を追加する。なお、印刷プリファレンス131pへのマーキング条件の追加は、印刷フィルタ131において予め組み込まれている(予定されている)処理である。すなわち、印刷フィルタ131は、印刷プリファレンス131pに対してマーキング条件が追加可能なように実装されており、マーキング埋め込みプラグイン27aは、その実装を利用したということである。
続いて、マーキング埋め込みプラグイン27aは、保管文書登録フィルタ132をコピーアクティビティ101の利用対象とするため、コピープリファレンス101pと保管文書登録フィルタ132のプリファレンスオブジェクトとの間に関連を生成する(S208)。続いて、マーキング埋め込みプラグイン27aは、保管文書登録フィルタ111と、コピーアクティビティ101によって利用される他のフィルタとの実行順の前後関係に応じてプリファレンスツリーにおける一部の関連を変更する(S209)。以上で、マーキング埋め込みプラグイン27aによる処理は完了する(S210)。
マーキング埋め込みプラグイン27aによる処理により、コピーアクティビティ101に関するプリファレンスツリーの構成は次のように変更される。図15は、第一の実施の形態におけるコピーアクティビティに関するプリファレンスツリーの例を示す図である。図15中、図9と同一部分には同一符号を付し、その説明は省略する。
同図において、マーキング条件131p1が印刷プリファレンス131pに追加されている。マーキング条件131p1は、埋め込みON/OFFフラグ、紙ID、コード種類、及び埋め込み位置等のパラメータより構成されるが、これらの値は、ステップS207の前にマーキング埋め込みプラグイン27aによって設定される。埋め込みON/OFFフラグは、埋め込みを行うか否かを示し、ここではON(埋め込みを行う)が設定される。紙IDは、ステップS206において入手された紙IDが設定される。コード種類は、バーコードを示す値が設定される。
また、保管文書登録プリファレンス132pは、ステップS202において生成された保管文書登録フィルタ132のプリファレンスオブジェクトである。コピーリプファレンス101pから保管文書登録プリファレンス132pへの関連l6は、ステップS208において生成されたものである。読取プリファレンス111pと保管文書登録プリファレンス132pとの間の関連l7は、ステップS209において追加されたものである。
マーキング埋め込みプラグイン27aによる処理(コピーアクティビティ101から見るとプラグイン対応処理)が完了すると、以降はプリファレンスツリーに従った処理が実行される。すなわち、コピーアクティビティ101は、プリファレンスツリーに基づいて、図8のS115及びS116と同様に各フィルタ間を接続する画像パイプ21a及び21bを生成する(S211、S212)。
続いて、コピーアクティビティ101は、プリファレンスツリーに基づいて、コピーアクティビティ101と各フィルタと画像パイプ21との接続を行うことによりジョブツリーを構築する(S213)。
図16は、第一の実施の形態におけるコピーアクティビティに関するジョブツリーの例を示す図である。図16中、図11と同一部分には同一符号を付し、その説明は省略する。
図16では、新たに関連l21及びl22に係る接続が形成されている。関連l21は、プリファレンスツリー(図15)における関連l6に基づいて生成される。関連l22は、プリファレンスツリーにおける関連l7に基づいて生成される。
ジョブツリーが構築されると、コピーアクティビティ101は、ジョブツリーに基づいてジョブの実行を開始する。まず、コピーアクティビティ101は、ジョブツリーにおいて末端のフィルタである、印刷フィルタ131及び保管文書登録フィルタ132に対して処理の実行要求を行う(S214、S215)。
ステップS214に応じて実行されるステップS216〜S218では、図8におけるステップS119〜S121と同様の処理により、画像パイプ21aに対して画像データの入力要求がなされる(S218)。
一方、ステップS215における実行要求に応じ、保管文書登録フィルタ132は、ジョブツリーにおいて自らの入力先に接続されている画像パイプ21aに画像データの入力を要求する(S219)。画像パイプ21aは、自らが管理するメモリ領域に画像データが入力されていないため、ジョブツリーにおいて自らの入力先に接続されている読取フィルタ111に対して処理の実行を要求する(S220)。なお、画像パイプ21aは、このタイミングで既に読取フィルタ111に対して実行要求を行っているため、ステップS218において画像データの入力要求を受けた際に画像データが入力されていなくても、読取フィルタ111に対する実行要求は行わない。
続いて、読取フィルタ111は、実行要求に応じ、読取プリファレンス111pに設定された動作条件に従って撮像部604を制御して原稿からの画像データの読み取りを行い(S221)、読み取られた画像データをジョブツリーにおいて自らの出力先に接続されている画像パイプ21aに出力する(S222)。画像パイプ21aは、画像データの入力に応じ、画像データの入力を要求していた文書編集フィルタ121と保管文書登録フィルタ132とに対して画像パイプ21aの状態変化(ここでは、画像データが入力されたこと)を通知する(S223、S224)。
ステップS223による通知に応じ、ステップS225〜S227において、図8のステップS126〜S128と同様の処理が実行される。ステップS227に続いて、印刷フィルタ131は、画像パイプ21bより画像データを取得し、取得された画像データに対して印刷プリファレンス131pに設定された動作条件に従って処理を行う(S228)。この際、印刷が行われる前に、印刷フィルタ131は印刷プリファレンス131pに追加されているマーキング条件131p1に基づいて、マーキング処理を行う必要があることを判断し、画像データに対するマーキング処理の実行をマーキング処理サービス25に要求する(S229)。ここではマーキング条件がパラメータとして渡される。マーキング処理サービス25は、マーキング条件に従ったマーキング処理(ここでは、バーコードの埋め込み)をマーキングハンドリングサービス26を用いて実行する(S230、S231)。マーキング処理サービス25によるマーキング処理が完了すると(S232)、印刷フィルタ131は、印刷プリファレンス131pに設定された動作条件に従って印刷部605を制御し、バーコードが埋め込まれた(合成された)画像データの印刷を行う。続いて、印刷フィルタ131は、処理の完了をコピーアクティビティ101に通知する(S233)。
一方、ステップS224による通知に応じ、保管文書登録フィルタ132は、画像パイプ21aより画像データを取得し、当該画像データをステップS206において発行した文書IDと関連付けてHDD633に保存する(S234)。続いて、保管文書登録フィルタ132は、処理の完了をコピーアクティビティ101に通知する(S235)。
なお、上記の説明では、拡張プラグイン27がインストールされていると自動的に拡張プラグイン27が利用される例を説明したが、例えば、拡張プラグイン27の利用の要否をユーザに選択させてもよい。
図17は、拡張プラグインの利用の要否の選択を可能としたコピー操作画面の表示例を示す図である。図17中、図10と同一部分には同一符号を付し、その説明は省略する。
図17では、参照番号1011によって示されるように、コピーアクティビティ設定領域101gにはプラグインのON/OFFフラグを設定させるための項目が表示されている。当該項目において、プラグインのONが指定された場合、コピーアクティビティ101は、ステップS113以降の処理(プラグイン対応処理)を実行し、プラグインのOFFが指定された場合、コピーアクティビティ101は、プラグイン対応処理を実行しないようにしてもよい。
次に、第二の実施の形態について説明する。第二の実施の形態では、拡張プラグイン27によって、コピー元の原稿より読み取られた画像データを印刷するのではなく、メール送信するようにコピーアクティビティ101の振る舞いを変更する例について説明する。
図18は、第二の実施の形態におけるコピーアクティビティとフィルタ等との関係を示す図である。図18中、図2又は図7と同一部分には同一符号を付し、その説明は省略する。
図18において、サービスメカニズム20における送信プラグイン27bが第二の実施の形態においてコピーアクティビティ101より利用される拡張プラグイン27に相当する。同図では、コピーアクティビティ101がメール送信フィルタ133を利用することが示されている。斯かる利用関係は、送信プラグイン27bが、コピーアクティビティ101のプリファレンスツリーの構成を動的に変更することにより形成されるものである。以下、第二の実施の形態における処理手順について説明する。
図19は、第二の実施の形態におけるプラグイン後のコピーアクティビティによる処理手順を説明するためのシーケンス図である。図19中、図8、図13、又は図14と同一ステップには同一ステップ番号を付し、その説明は省略する。
第二の実施の形態ではステップS114において、インストールされている拡張プラグイン27として送信プラグイン27bが検索される。そこで、コピーアクティビティ101は、コピープリファレンス101pのプラグインON/OFFフラグの値をONにし、送信プラグイン27bに対して処理の実行を要求する(S301)。当該実行要求では、コピーアクティビティ101のプリファレンスツリーがパラメータとして渡される。この段階において当該プリファレンスツリーは、図9に示される構成を有する。
処理の実行要求を受けた送信プラグイン27bは、実装されたロジックに従って処理を実行する。まず、送信プラグイン27bは、プリファレンスツリーにおける、コピープリファレンス101pから印刷プリファレンス131pへの関連l3と、文書編集プリファレンス121pと印刷プリファレンス131pとの間の関連l5とを削除する(S302)。続いて、送信プラグイン27bは、印刷フィルタ131に対して印刷プリファレンス131pの削除を要求する(S303)。当該要求に応じ、印刷フィルタ131は印刷プリファレンス131pをメモリ上より削除する。
続いて、送信プラグイン27bは、メール送信フィルタ133に対してプリファレンスオブジェクトの生成を要求する(S304)。メール送信フィルタ133は、当該フィルタに固有の属性を有するプリファレンスオブジェクトを生成し、生成されたプリファレンスオブジェクトを送信プラグイン27bに返却する。続いて、送信プラグイン27bは、メール送信フィルタ133のプリファレンスオブジェクトに対して、送信プラグイン27b用の動作条件(メールアドレス等)を設定する(S305)。続いて、送信プラグイン27bは、メール送信フィルタ133のプリファレンスオブジェクトをプリファレンスツリーに追加する(S306)。以上で、送信プラグイン27bによる処理は完了する(S307)。
送信プラグイン27bによる処理により、コピーアクティビティ101に関するプリファレンスツリーの構成は次のように変更される。図20は、第二の実施の形態におけるコピーアクティビティに関するプリファレンスツリーの例を示す図である。図20中、図9と同一部分には同一符号を付し、その説明は省略する。
同図において、メール送信プリファレンス133pは、ステップS304において生成されたメール送信フィルタ133のプリファレンスオブジェクトである。コピーリプファレンス101pからメール送信プリファレンス133pへの関連l8、及び文書編集プリファレンス121pとメール送信プリファレンス133pとの間の関連l9は、ステップS306において生成されたものである。ステップS306において生成されたものである。すなわち、第二の実施の形態では、印刷プリファレンス131pがメール送信プリファレンス133pによって置き換えられている。
送信プラグイン27bによる処理(コピーアクティビティ101から見るとプラグイン対応処理)が完了すると、以降はプリファレンスツリーに従った処理が実行される。すなわち、コピーアクティビティ101は、プリファレンスツリーに基づいて、図8のS115及びS116と同様に各フィルタ間を接続する画像パイプ21a及び21bを生成する(S308、S309)。
続いて、コピーアクティビティ101は、プリファレンスツリーに基づいて、コピーアクティビティ101と各フィルタと画像パイプ21との接続を行うことによりジョブツリーを構築する(S310)。
図21は、第二の実施の形態におけるコピーアクティビティに関するジョブツリーの例を示す図である。図21中、図11と同一部分には同一符号を付し、その説明は省略する。
図21では、コピーアクティビティ101とメール送信フィルタ133との間に接続(関連l31)が形成され、メール送信フィルタ133と画像パイプ21bとの間に接続(関連l32)が形成されている。関連l31は、プリファレンスツリー(図20)における関連l8に基づいて生成される。関連l32は、プリファレンスツリーにおける関連l9に基づいて生成される。
ジョブツリーが構築されると、コピーアクティビティ101は、ジョブツリーに基づいてジョブの実行を開始する。まず、コピーアクティビティ101は、ジョブツリーにおける末端のフィルタである、メール送信フィルタ133に対して処理の実行要求を行う(S311)。実行要求を受けたメール送信フィルタ133は、ジョブツリーにおいて自らの入力先に接続されている画像パイプ21bに画像データの入力を要求する(S312)。以降、ステップS313〜S321においては、図8におけるステップS120〜S128と同様の処理が実行される。
画像パイプ21bの状態変化の通知に応じ、メール送信フィルタ133は、画像パイプ21bより画像データを取得し、メール送信プリファレンス133ppに設定された動作条件に従って取得された画像データをメールに添付して送信する(S322)。続いて、メール送信フィルタ133は、処理の完了をコピーアクティビティ101に通知する(S323)。
上述したように本実施の形態における複合機1によれば、各フィルタを部品として各機能を構築するため、機能のカスタマイズ又は拡張を簡便に行うことができる。すなわち、各フィルタ間には、機能的な依存関係はなく独立性が保たれているため、フィルタの新たな追加やフィルタの組み合わせの変更によって、新たな機能(アプリケーション)を容易に開発することができる。したがって、新たなアプリケーションの実装が要求された場合、当該アプリケーションの一部の処理について実装されていない場合は、当該一部の処理を実現するフィルタのみを開発し、インストールすればよい。
また、フィルタの組み合わせによって構成される機能をアクティビティとして予め定義しておくことにより、より簡便な操作で、フィルタの組み合わせによる機能を利用することができる。
更に、拡張プラグイン27の追加によって、本来であれば固定的に予めフィルタの接続関係が定義されたアクティビティの振る舞いについて、拡張プラグイン27によってプリファレンスツリーを変更することにより、動的に変化させることができる。斯かる仕組みは、既存のアクティビティの機能の一部を変更したい場合のカスタマイズ手段として有効である。
なお、本実施の形態において、アクティビティは機能実行手段の具体例であり、フィルタは第一のソフトウェア部品の具体例であり、拡張プラグイン27は第二のソフトウェア部品の具体例である。
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。