以下、本発明の好適な実施形態につき説明する。
<第1の実施形態>
図1は第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のソフトウェアアーキテクチャが「パイプ&フィルタ」と呼ばれる考え方に基づくことによる。
図2はパイプ&フィルタの概念を説明するための図である。図2において、「F」はフィルタを示し、「P」はパイプを示す。図中に示されるように、各フィルタはパイプによって接続される。フィルタは、入力されたデータに対して変換を施し、その結果を出力する。パイプは、フィルタから出力されたデータを次のフィルタに伝達する。
すなわち、本実施形態における複合機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等が含まれている。文書加工フィルタ311は、入力されたデータに所定の画像変換処理(集約、拡大、または縮小等)を施し、出力する。文書変換フィルタ312は、レンダリング処理を実行する。すなわち、入力されたPostScriptデータをビットマップデータに変換して出力する。
また、出力フィルタとしては、印刷フィルタ321、保管文書登録フィルタ322、メール送信フィルタ323、FAX送信フィルタ324、PC文書送信フィルタ325、およびプレビューフィルタ326等が含まれている。
印刷フィルタ321は、入力されたデータをプロッタに出力(印刷)させる。保管文書登録フィルタ322は、入力されたデータを複合機1内のハードディスク内に保存する。メール送信フィルタ323は、入力されたデータを電子メールに添付して送信する。FAX送信フィルタ324は、入力されたデータをFAX送信する。PC文書送信フィルタ325は、入力されたデータをクライアントPCに送信する。プレビューフィルタ326は、入力されたデータを、複合機1のオペレーションパネルにプレビュー表示させる。
一方、アプリケーションロジック層30は、コピーアクティビティ31a、プリンタアクティビティ31b、およびマルチ文書アクティビティ31c等のアクティビティ31を含む。ここで、「アクティビティ」とは、予め固定的に定義されたフィルタの組み合わせによって、一つの「機能」(複合機1がユーザに対して提供する一つのまとまった単位のサービスまたはアプリケーション)を実現するソフトウェアである。
すなわち、ユーザに各フィルタを個々に選択させることで「複合機1の機能」を組み立てることができるが、コピーのように頻繁に利用する機能については、毎回フィルタの選択によって実行指示を行うのはユーザにとって煩雑である。そこで、フィルタの組み合わせをアクティビティ31として予め定義しておくことで、ユーザが、アクティビティ31を単位として実行対象を選択すると、選択されたアクティビティ31は、当該アクティビティ31に定義された組み合わせに係る各フィルタを自動的に実行させる。これにより、操作の煩雑さを解消することができるとともに、アプリケーション単位で実行対象を選択していた従来のユーザインタフェースと同様の操作感を提供することができる。
図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は、上述したパイプの機能を実現する。すなわち、あるフィルタからの出力データを次のフィルタに伝達する。データ管理部42は、各種のデータベースを表現する。例えば、ユーザ情報が登録されたデータベースや、文書または画像データ等が蓄積されるデータベース等が相当する。
デバイス制御層50は、デバイス(ハードウェア)を制御するドライバと呼ばれるプログラムモジュール群が実装されている部分であり、例えば、スキャナ制御部51、プロッタ制御部52、メモリ制御部53、Tel回線制御部54、およびネットワーク制御部55等が含まれる。各制御部は、当該制御部の名前に付けられているデバイスを制御する。
図3は複合機1のハードウェア構成の一例を示す図である。複合機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(Integrated Circuit)である。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によって処理されることによりその機能を複合機1に実行させる。
以下、アクティビティおよびフィルタについて更に詳しく説明する。図4はアクティビティの構成要素を説明するための図である。図4に示されるように、アクティビティ31は、アクティビティUI、アクティビティロジック、および永続記憶領域情報等より構成される。
アクティビティUIは、アクティビティ31に関する画面(例えば、アクティビティ31の実行条件等を設定させるための設定画面)をオペレーションパネル等に表示させるための情報またはプログラムである。
アクティビティロジックは、アクティビティ31の処理内容が実装されたプログラムである。基本的に、アクティビティロジックには、フィルタの組み合わせに関するロジック(例えば、フィルタの実行順、複数のフィルタに跨る設定、フィルタの接続変更、エラー処理等)が実装されている。
永続記憶領域情報は、アクティビティ31に対する設定情報(例えば、実行条件のデフォルト値)等、不揮発メモリに保存する必要があるデータのスキーマ定義が相当する。当該スキーマ定義は、アクティビティ31のインストール時にデータ管理部42に登録される。
図5はフィルタの構成要素を説明するための図である。図5に示されるように、各フィルタは、フィルタ設定用UI、フィルタロジック、フィルタ固有下位サービス、および永続記憶領域情報等より構成される。このうち、フィルタ設定用UI、フィルタ固有下位サービス、および永続記憶領域情報については、フィルタによって必ずしも構成要素に含まれない。
フィルタ設定用UIは、フィルタの実行条件等を設定させるための画面をオペレーションパネル等に表示させるプログラムである。例えば、読取フィルタ301であれば、解像度、濃度、画像種別等を設定させる画面が相当する。なお、オペレーションパネルの表示がHTMLデータや、スクリプトに基づいて行われ得ることに鑑みれば、フィルタ設定用UIはHTMLデータやスクリプトであってもよい。
フィルタロジックは、フィルタの機能を実現するためロジックが実装されたプログラムである。すなわち、フィルタの構成要素としてのフィルタ固有下位サービスや、デバイスサービス層40またはデバイス制御層50等を利用して、フィルタ設定用UIを介して設定された実行条件に応じてフィルタの機能を実現する。例えば、読取フィルタ301であれば、スキャナによる原稿の読み取り制御のためのロジックが相当する。
フィルタ固有下位サービスは、フィルタロジックを実現するために必要な下位機能(ライブラリ)である。すなわち、デバイスサービス層40またはデバイス制御層50相当する機能であるが、他のフィルタから使用されないものについては、フィルタの一部として実装されてもよく、当該一部がフィルタ固有下位サービスに相当する。例えば、読取フィルタ301であれば、スキャナを制御するための機能が相当するが、本実施形態では、デバイス制御層50においてスキャナ制御部51として実装されている。したがって、読取フィルタ301において、フィルタ固有下位サービスの実装は必ずしも必要ではない。
永続記憶領域情報は、フィルタに対する設定情報(例えば、実行条件のデフォルト値)等、不揮発メモリに保存する必要があるデータのスキーマ定義が相当する。当該スキーマ定義は、フィルタのインストール時にデータ管理部42に登録される。
図6は複合機1における各機能を実現するためのフィルタの組み合わせの例を示す図である。例えば、コピー機能は、読取フィルタ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とを接続することにより実現される。
図6において、例えば、読取フィルタ301については4つの機能(コピー、スキャンto email、FAX送信、ドキュメントボックス蓄積)において利用されている。このように、各フィルタは複数の機能から利用可能であり、それによって各機能を実現するための開発工数を削減することができる。例えば、コピー機能とスキャン機能(ドキュメントボックス蓄積)について、その実行条件を設定させるためのユーザインタフェースは類似しているものであった。しかし、各機能をアプリケーションによって実装する場合には、アプリケーションごとに個別にユーザインタフェースの実装も行われていた。しかし、本実施形態では、コピー機能およびスキャン機能のいずれの場合も、読取フィルタ301のユーザインタフェースによって設定が行われ、ユーザインタフェースの共通化をも図ることができる。
更に、新たな機能を実現する場合について考える。まず、機能#1として、複合機1では対応していないPDL(Page Description Language)(以下、「他PDL」という。)によってクライアントPCから送信される印刷データを印刷する機能を実現する場合について考える。この場合、図6におけるプリンタ機能を雛形とすることができる。ただし、プリンタ機能では、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サイトから情報を収集し、収集された情報を印刷する機能を実現する場合について考える。この場合、Webサイトから情報を収集するフィルタが存在しない。したがって、少なくともWebサイトから情報を収集する入力フィルタ(以下「Web収集フィルタ」という。)を新たに実装する必要がある。また、機能#2では最終的に印刷を実行させたいので、出力フィルタとしては印刷フィルタ321を用いるのが適切である。ここで問題となるのが、Web収集フィルタと印刷フィルタ321との間をどのように接続するかである。すなわち、印刷フィルタ321の入力データはレンダリングされたビットマップである必要があるところ、Web収集フィルタ内にレンダリング機能を実装するのは非常に工数がかかるので適切ではない。そこで、既にレンダリング機能を実現する文書変換フィルタ312を利用することが考えられる。ただし、文書変換フィルタ312の入力データは、PostScript形式である必要がある。そこで、Web収集フィルタを、収集した情報をPostScript形式によって出力するように実装すれば、文書変換フィルタ312との接続が可能となる。このようにWeb収集フィルタを実装することにより、機能#2は、Web収集フィルタと文書変換フィルタ312と、文書変換フィルタ312と印刷フィルタ321との接続により実現される。
以下、本実施形態における複合機1の処理手順について説明する。図7および図8は、複合機1が一つの機能を実現する際の処理手順を説明するためのフローチャートである。
まず、ユーザによってアクティビティが選択されることにより、選択されたアクティビティにより特定される入力フィルタが選択され(ステップS101)、選択された入力フィルタの実行条件が設定される(ステップS102)。同様に、変換フィルタまたは出力フィルタについても選択が行われ(ステップS103)、フィルタ間の接続が指定され(ステップS104)、実行条件が設定される(ステップS105)。
上記の操作は、ローカルUI部12の制御のもと、例えば、図9に示されるようなオペレーションパネル(図3のオペレーションパネル202)を介して行われる。オペレーションパネル202は、タッチパネルとスタートボタンとを含む。タッチパネルは、タッチ操作で入力を行うためのハードウェア(タッチ操作部)であると共に、画面表示で出力を得るためのハードウェア(画面表示部)である。スタートボタンは、要求した機能の実行開始指示を行うためのハードウェアである。
図9は、アクティビティを利用させるための操作画面例を示す図である。図9において、アクティビティ選択画面600は、実行対象とするアクティビティを選択させるためにオペレーションパネル202のタッチパネルに表示される画面である。アクティビティ選択画面600には、複合機1にインストールされているアクティビティ31ごとにボタンが表示される。図中では、コピーアクティビティ31bに対応するコピーボタン610、プリンタアクティビティ31bに対応するプリンタボタン620、マルチ文書アクティビティ31cに対応するマルチ文書ボタン630が表示されている。
なお、インストールされているアクティビティ31の一覧情報は、記憶装置に記録されており、例えば、コントロール層20によって管理されている。したがって、ローカルUI部12は、コントロール層20に問い合わせることにより、アクティビティ31の一覧情報を取得し、当該一覧情報に基づいて、アクティビティ選択画面600の各ボタンを表示させる。
アクティビティ選択画面600において、コピーボタン610が選択(タッチ)されると、ローカルUI部12は、コピーアクティビティ31aのアクティビティUIを呼び出すことによりコピーアクティビティ31aの画面情報を取得し、当該画面情報に基づいてコピーアクティビティ画面611をタッチパネルに表示させる。コピーアクティビティ画面611は、コピーアクティビティ31aの実行条件を設定させるための画面であり、図中では、コピーアクティビティ31aを構成する各フィルタの設定画面(読取フィルタ設定画面611a、文書加工フィルタ設定画面611b、および印刷フィルタ設定画面611c)が表示された例が示されている。すなわち、各フィルタの実行条件を設定させることで、コピーアクティビティ31aの実行条件が設定されるからである。各フィルタの設定画面の画面情報は、コピーアクティビティ31aのアクティビティUIが、ローカルUI部12からの呼び出しに応じて各フィルタのフィルタ用設定UIを呼び出すことにより取得され、コピーアクティビティ31aの画面情報に含められる(マージされる)。なお、単に、各フィルタの設定画面を並べるだけでなく、各フィルタに対して一括して設定を行うためのUI(例えば、「両面→両面」ボタン、読み取りの設定(両面)ボタン、印刷の設定(両面)ボタン等)をコピーアクティビティ画面611に表示させるようにしてもよい。
プリンタボタン620が選択されると、ローカルUI部12は、プリンタアクティビティ31bのアクティビティUIを呼び出すことによりプリンタアクティビティ31bの画面情報を取得し、当該画面情報に基づいてプリンタアクティビティ画面621をタッチパネルに表示させる。プリンタアクティビティ画面621は、プリンタアクティビティ31bの状態(印刷中等)を表示させる画面である。すなわち、プリンタアクティビティ31bは、印刷データの受信に応じて起動されるものであり(すなわち、オペレーションパネル202上における操作によって起動されるものではない。)、基本的に設定画面は不要だからである。
マルチ文書ボタン630が選択されると、ローカルUI部12は、マルチ文書アクティビティ31cのアクティビティUIを呼び出すことによりマルチ文書アクティビティ31cの画面情報を取得し、当該画面情報に基づいてマルチ文書アクティビティ画面631をタッチパネルに表示させる。
マルチ文書アクティビティ画面631においては、ユーザの操作により任意のフィルタを組み合わせることができる。マルチ文書アクティビティ画面631は、入力フィルタ選択領域513、変換フィルタ選択領域514、出力フィルタ選択領域515、および要求表示領域516等より構成される。入力フィルタ選択領域513は、入力フィルタを選択させるための領域であり、入力フィルタごとにボタンが表示されている。入力フィルタ選択領域513でいずれかのボタンが選択されると、選択されたボタンに対応する入力フィルタのボタンが要求表示領域516に表示される。図中では、便宜上、読取フィルタ301および保管文書読出フィルタ513のボタンが表示されている。
変換フィルタ選択領域514は、変換フィルタを選択させるための領域であり、変換フィルタごとにボタンが表示されている。変換フィルタ選択領域514でいずれかのボタンが選択されると、選択されたボタンに対応する変換フィルタのボタンが要求表示領域516に表示される。
出力フィルタ選択領域515は、出力フィルタを選択させるための領域であり、出力フィルタごとにボタンが表示されている。出力フィルタ選択領域515でいずれかのボタンが選択されると、選択されたボタンに対応する出力フィルタのボタンが要求表示領域516に表示される。図中では、便宜上、印刷フィルタ321、保管文書登録フィルタ322、メール送信フィルタ323、およびFAX送信フィルタ324のボタンが表示されている。
なお、インストールされているフィルタ(入力フィルタ、変換フィルタ、出力フィルタ)の一覧情報は、記憶装置に記録されており、例えば、コントロール層20によって管理されている。したがって、ローカルUI部12は、コントロール層20に問い合わせることにより、入力フィルタ選択領域513、変換フィルタ選択領域514、出力フィルタ選択領域515を表示させるためのフィルタの一覧情報を取得する。
要求表示領域516には、入力フィルタ選択領域513、変換フィルタ選択領域514または出力フィルタ選択領域515において選択されたフィルタのボタンが表示され、入力フィルタ、変換フィルタ、または出力フィルタとの間は、データの流れまたはパイプを示す矢印で接続される。矢印を操作することにより、実行するフィルタの順番を変更することも可能である。要求表示領域516における表示内容によって、ユーザは、利用するフィルタとその流れを認識することができる。要求表示領域516には、更に、設定ボタン517および削除ボタン518が配置されている。設定ボタン517は、要求表示領域516においてフィルタのボタンが選択されている場合に、当該フィルタの設定画面を表示させるためのボタンである。すなわち、設定ボタン517が押下(タッチ)されると、選択されているフィルタのフィルタ設定UIに基づいて、その設定画面がタッチパネル511に表示される。削除ボタン518は、要求表示領域516においてフィルタのボタンが選択されている場合に、当該フィルタの利用を解除するためのボタンである。
なお、入力フィルタ、変換フィルタ、および出力フィルタは、一つの機能に対してそれぞれ複数個の選択が可能である。例えば、スキャンされた画像と、複合機1内に保存されている画像を合成して、印刷すると共にFAX送信するといったような場合、少なくとも二つの入力フィルタ(読取フィルタ301および保管文書読出フィルタ302)と二つの出力フィルタ(印刷フィルタ321およびFAX送信フィルタ324)とが選択される。
図7に戻り、フィルタの選択が完了し(ステップS106でYES)、スタートボタンが押下されると、ユーザインタフェース層10からコントロール層20に対して、要求内容が通知される。
図10はユーザインタフェース層10からコントロール層20へ通知される要求内容を概念的に示す図である。図10に示されるように、ユーザインタフェース層10からの要求は、ユーザインタフェース層10において選択されたフィルタごとに、フィルタの種別と当該フィルタに対する設定情報とを含むものであり、更にフィルタの実行順も含も含んでいる(図中において各ブロックを結ぶ矢印が、フィルタの実行順を示す)。
図7に戻り、上述したような要求内容を受けて、コントロール層20は、選択された各フィルタ間をパイプによって接続する(ステップS107)。パイプの実体はメモリ(HDD(Hard Disk Drive)も含む)であるが、パイプの両端のフィルタに応じて利用するメモリの種類が異なり、その対応関係は、例えば、複合機1のHDD内に予め定義されている。
図11はフィルタとパイプの対応テーブルの例を示す図である。図11の対応テーブル60によれば、例えば、読取フィルタ301と印刷フィルタ321や、文書変換フィルタ312と印刷フィルタ321は、DMA(Direct Memory Access)パイプによって接続され、高速にデータが転送される。また、PC文書受信フィルタ305と文書変換フィルタ312とは、スプールパイプによって接続される。スプールパイプとは、HDDを用いるパイプであり、左側のフィルタから出力されたデータは、右側のフィルタが読み出すまでHDDにスプール(保存)される。それ以外のフィルタ間は、汎用メモリパイプによって接続される。汎用メモリパイプとは、有限サイズのRAMバッファによってデータ転送を行うパイプである。図11に示される対応テーブル60は、フィルタやパイプの拡張(追加)や削除等に応じて編集可能である。なお、図1における画像パイプ41は、上記の各種のパイプへのインタフェースを提供するモジュールを抽象的に表現したものである。
したがって、コントロール層20は、図11の対応テーブル60に基づいて、各フィルタ間を特定のパイプで接続する。図12はコントロール層20によって生成される情報を概念的に示す図である。図12では、各フィルタ(「F」)間がパイプ(「P」)によって接続されている様子が示されている。
図7に戻り、コントロール層20は、各フィルタに対して並列的に実行要求を出力する(ステップS108)。すなわち、フィルタの呼び出しはフィルタの接続順ではなく、全てのフィルタに対してほぼ同時に行われる。フィルタ間の同期はパイプによってとられるからである。すなわち、コントロール層からの実行要求を受けて、各フィルタは自分の入力側のパイプにデータが入力されるまで待機する。ただし、入力フィルタには、入力側にパイプは存在しない。したがって、入力フィルタは実行要求に応じて処理を開始する。
次に、図8において、まず、入力フィルタは、入力デバイスよりデータを入力し(ステップS111)、当該データを、出力側に接続されているパイプに出力する(ステップS112)。なお、データが複数回に分けて入力される場合(複数枚の原稿がスキャンされる場合等)は、データの入力とパイプへの出力が繰り返される。全ての入力データについて処理が終了すると(ステップS113でYES)、入力フィルタの処理は終了する。
変換フィルタは、入力側に接続されているパイプに対するデータの入力を検知すると処理を開始する。まず、当該パイプからデータを読み込み(ステップS121)、データに対して画像処理を施す(ステップS122)。続いて、処理結果としてのデータを出力側に接続されているパイプに出力する(ステップS123)。入力側のパイプに入力された全てのデータについて処理が終了すると(ステップS124でYES)、変換フィルタの処理は終了する。
出力フィルタは、入力側に接続されているパイプに対するデータの入力を検知すると処理を開始する。まず、当該パイプからデータを読み込み(ステップS131)。続いて、読み込まれたデータを出力デバイスを利用して出力する(ステップS132)。入力側のパイプに入力された全てのデータについて処理が終了すると(ステップS133でYES)、出力フィルタの処理は終了する。
以下、パイプについて更に詳しく説明する。図13はパイプを介したフィルタ間のデータの伝達手順を説明するための図である。図中において、フィルタA300aおよびフィルタB300bは、それぞれフィルタを示す。DMAパイプ41aは、図11において説明した、画像パイプ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)。
このように、フィルタ間のデータの伝達を画像メモリ(共有メモリ)を介して行うことにより、フィルタごとに画像データを格納するためのメモリ領域を確保する必要がなくなり、メモリ効率や処理性能の向上を図ることができる。また、フィルタ間に呼び出し関係が生じないため、フィルタの独立性を保つことができる。
<第2の実施形態>
第2の実施形態は、多出力により文書の保管と同時に編集や印刷等の処理が行われる場合に、ユーザにより設定された編集や印刷等の条件(詳細な設定項目)を文書本体とともに保存し、保管文書の再利用時に編集や印刷等の条件を再現する要求に対し、コンポーネント間の強い依存が発生せず、ページ単位に付された条件についても正確に再現できるようにしたものである。なお、この第2の実施形態はパイプ&フィルタのメカニズムを前提としており、その基本的な構成および動作については第1の実施形態において説明したものと同様である。
一般に、文書の保管は保管文書登録フィルタにより行われ、ユーザにより設定された編集や印刷等の条件についてもこの保管文書登録フィルタにより文書本体とともに保存されるのが通常の手法である。図14は文書本体とともに編集条件や印刷条件を保存する場合の問題点の説明図であり、編集フィルタに設定された編集条件(集約設定、変倍等)と印刷フィルタに設定された印刷条件(出力トレイ、ステープル、ソート等)とが保管文書登録フィルタに引き渡され、保管文書登録フィルタの制御下で文書本体とともにデータベースに保存される。
この場合、保管文書登録フィルタは編集フィルタの編集条件と印刷フィルタの印刷条件とを直接に扱うこととなるため、そのデータ形式等についても保管文書登録フィルタ側で把握していることが前提となる。そのため、保管文書登録フィルタと編集フィルタの間および保管文書登録フィルタと印刷フィルタの間では強い依存関係が発生することとなり、コンポーネントの独立性が阻害され、一方のコンポーネントに修正等を加える場合、他のコンポーネントにも修正等が必要になって、カスタマイズ性能が低下してしまう。例えば、編集フィルタの編集条件や印刷フィルタの印刷条件に追加・変更等を行う場合、保管文書登録フィルタにも修正等が必要になってしまう。
一方、ユーザにより設定される条件は、文書単位の条件とページ単位の条件とが存在する。文書単位の条件とは、ユーザがジョブ(アクティビティ)実行開始時に設定した条件であり、一連の文書処理の中で通して使用される条件である。ページ単位の条件とは、ジョブ開始後の一時停止状態(例えば、原稿を1枚ずつセットして読み取る圧板読取時や、複数枚の原稿を読み取っては次の原稿セットを待機する半自動読取時に発生)にユーザによりページ単位に設定される条件であり、一連のジョブの中で複数種類の条件となることがある。
この場合、図14に示したような保管文書登録フィルタの制御下で編集や印刷等の条件を保存する手法では、
・ページ単位の条件はジョブ実行開始後に決まるため、保存するタイミングがつかめない。
・仮に保存できたとしても、ページ単位の条件を設定が行われた時点のページに対応付けて保存した場合、途中で集約等を行ってページの数が変わってしまった場合やページの入れ替えが行われた場合に整合がとれなくなる。
という問題がある。
また、ページ単位の条件は、ユーザが設定する側面から分析を行うと次のことが判る。
・ページ単位の条件とは、ユーザがジョブ実行開始時の条件(初期条件)から途中で条件変更を行った場合の条件である。
・初期条件と途中で変更を行った際の条件は、設定項目としては同じものになる。
・文書単位の条件については、ユーザがジョブ実行開始時の条件から条件変更を行わなかったものと同等になる。
従って、この「ユーザが途中で条件変更を行った」という処理を再現することができれば、ページ単位の条件を保存して読み出す要件を実現することができる。
そこで、本実施形態では、
・条件(文書単位の条件、ページ単位の条件を問わない)はその詳細を把握しているコンポーネント自身がデータベースに保存し、保管文書登録フィルタにはデータベースに登録した条件IDのみを渡す。
・保管文書登録フィルタは、文書単位の条件とページ単位の条件として、条件IDとコンポーネント名の対を列挙したリスト(文書単位条件リスト、ページ単位条件リスト)を保持し、適時に文書本体とともにデータベースに保存する。ページ単位の条件としては、条件の設定が行われた時点のページだけでなく、異なる条件の設定が行われるまでのページに同内容のページ単位条件リストを付す。これは、ページの入替や処理順序変更に対応するためである。
という方針で上記の問題点を解決している。
すなわち、保管文書登録フィルタと他のコンポーネント(編集フィルタ、印刷フィルタ等)との間では条件IDをやりとりするだけでよいため、保管文書登録フィルタは条件のデータ形式等について関知することがなくなり、両者間の依存関係が弱まり(コンポーネントの独立性が高まり)、カスタマイズ性能が向上する。
また、ページ単位の条件はユーザにより設定されたタイミングで保存すればよいため、保存するタイミングも明確になる。
また、ページ毎に条件が変更されているか否かを判断し、変更されている場合にはその時点から処理を変更すればよいため、途中で集約等を行ってページの数が変わってしまった場合やページの入れ替えが行われた場合にも整合をとることができる。ページ単位の条件は、ユーザ操作を起点に考えると、一連のジョブの途中で条件が変更されたことによるものであり、集約等を行ってページの数が変わったとしても、条件が変更されたページの起点は同じになることによる。
図15は本実施形態の基本となる、コンポーネント間の強い依存が発生しないための仕組の概念図である。
図15において、編集フィルタはジョブ開始時において条件が設定された際に、集約設定、変倍等の項目からなる編集条件をデータベースに保存し、保存データを特定する条件ID「1111」を取得すると、その条件ID「1111」を保管文書登録フィルタに渡す。また、印刷フィルタはジョブ開始時において条件が設定された際に、出力トレイ、ステープル、ソート等の項目からなる印刷条件をデータベースに保存し、保存データを特定する条件ID「2222」を取得すると、その条件ID「2222」を保管文書登録フィルタに渡す。そして、保管文書登録フィルタは、ジョブ開始時に渡された条件ID「1111」、コンポーネント名「編集フィルタ」と条件ID「2222」、コンポーネント名「印刷フィルタ」とを文書単位条件リストおよび先頭ページのページ単位条件リストに格納する。コンポーネント名を条件IDと対にしているのは、条件ごとに異なるデータ体系をとることから、条件IDはそれぞれ個別に割り当てられ、コンポーネント毎に重複する可能性があるからである。
また、編集フィルタおよび印刷フィルタは、ジョブ開始後のジョブ一時停止状態において条件が設定された際にも同様に条件をデータベースに保存し、その条件IDを保管文書登録フィルタに渡す。保管文書登録フィルタはその時点での対象となるページのページ単位条件リストとして、それらの条件IDおよびコンポーネント名を格納する。
そして、保管文書登録フィルタは、適時に文書本体とともに文書単位条件リストおよびページ単位条件リストをデータベースに保存する。例えば、ページ単位条件リストはページ単位の文書本体を保存するのと同時にデータベースに保存し、文書単位条件リストは全ページの処理が完了した時点でデータベースに保存する。
図16は第2の実施形態における複合機1のソフトウェア構成例を示す図である。
図16において、ユーザインタフェース層10にはユーザインタフェースの提供を行うコンポーネントであるUI C1が設けられている。アプリケーションロジック層30には、コピーおよび蓄積(蓄積コピー)を行う機能を提供するコンポーネントであるコピーアクティビティC2と、スキャナによる原稿の読取の機能を提供するコンポーネントである読取フィルタC3と、読取画像の編集の機能を提供するコンポーネントである編集フィルタC4と、読取画像の印刷の機能を提供するコンポーネントである印刷フィルタC5と、読取画像の蓄積の機能を提供するコンポーネントである保管文書登録フィルタC6と、保管文書の読出の機能を提供するコンポーネントである保管文書読出フィルタC7とが設けられている。デバイスサービス層40には、文書の保存および読出の機能を提供するコンポーネントである保管文書共有サービスC8と、データベースへのデータの保存および読出の機能を提供するコンポーネントであるデータ管理C9と、画像加工の機能を提供するコンポーネントである画像加工C10とが設けられている。
図17はコンポーネントで扱われるデータ構造の例を示す図である。(a)に示すように、文書IDで特定される文書情報には、文書名と文書アクセス権と文書単位条件リストとページ情報IDリストとが含まれている。文書単位条件リストには1または複数の文書単位条件が含まれ、文書単位条件には条件IDとコンポーネント名とが含まれている。
ページ情報IDリストに含まれるページ情報IDで特定される各ページのページ情報には、用紙サイズと画像サイズと解像度と画像識別子とページ単位条件リストとが含まれている。ページ単位条件リストには1または複数のページ単位条件が含まれ、ページ単位条件には条件IDとコンポーネント名とが含まれている。
(b)(c)はページ単位条件リストの具体例を示しており、ページ単位条件を連続して示している。(b)では、コンポーネント名「編集フィルタ」と対をなす条件ID「1111」で特定される編集条件として「集約設定:4 in 1、変倍:-」、コンポーネント名「印刷フィルタ」と対をなす条件ID「2222」で特定される印刷条件として「出力トレイ:トレイ1、ステープル:なし、ソート:しない」が設定されている。「集約設定:4 in 1」とは4ページを1ページに集約することを示している。(c)では、コンポーネント名「編集フィルタ」と対をなす条件ID「1112」で特定される編集条件として「集約設定:2 in 1、変倍:-」、コンポーネント名「印刷フィルタ」と対をなす条件ID「2223」で特定される印刷条件として「出力トレイ:トレイ2、ステープル:なし、ソート:しない」が設定されている。文書単位条件リストの具体例は省略しているが、ページ単位条件リストの具体例と同様である。
図18は実施形態の全体的な処理概要を示すフローチャートである。処理を大別すると、多出力により文書の保管と同時に編集および印刷の処理を行うコピー蓄積と、保管文書を読み出して編集および印刷を行う保管文書印刷とに分かれる。
コピー蓄積は、(a)に示すように、開始条件の設定(ユーザによる設定)および保存(ステップS201)の後、ページ単位の文書の読取、編集、印刷および蓄積(ステップS202)が、条件が変更されない限りページ数分だけ続く。このページ単位の文書の蓄積では、ページ単位条件リストを含むページ情報が同時に保存される。
次いで、ジョブ一時停止状態でのページ単位条件の設定および保存(ステップS203)が行われると、その後、ページ単位の文書の読取、編集、印刷および蓄積(ステップS204)が、条件が変更されない限りページ数分だけ続く。ジョブの一時停止状態でのページ単位条件の設定および保存(ステップS203)はその後に何度か行われる場合もあり、その後にページ単位の文書の読取、編集、印刷および蓄積(ステップS204)が続く。
図19はコピー蓄積において条件設定が行われるタイミングの例を示す図であり、(a)に示すように、ジョブ開始時に条件#1を設定し、第4ページが完了して第5ページが始まる前のジョブ一時停止状態で条件#2を設定したものである。この場合、第1ページから第4ページまでは条件#1が適用され、第5ページ以降は条件#2が適用される。(b)は条件の内容の例を示しており、条件#1は、編集時に「集約:4 in 1」、印刷時に「出力トレイ:トレイ1」を示し、条件#2は、編集時に「集約:2 in 1」、印刷時に「出力トレイ:トレイ2」を示している。(c)は各ページに対応付けられるページ単位条件を模式的に示したものであり、第1ページから第4ページには同じページ単位条件が付けられ、第5ページ以降には異なるページ単位条件が付けられる。
図18に戻り、全てのページの処理が完了した時点で、文書情報の保存(ステップS205)が行われる。保存される文書情報には文書単位条件リストが含まれる。
一方、保管文書印刷は、(b)に示すように、ユーザにより選択された文書からの条件復元が行われ(ステップS301)、その後、ページ単位条件の読出、編集および印刷(ステップS302)がページ数分だけ続く。読み出したページ単位条件はパイプ&フィルタのパイプを通して後続のフィルタに流す。これは、ユーザがオペレーションパネル上で条件を設定したときと同等の流れを、UIからトリガを発生させるか、パイプ&フィルタのパイプを通してトリガを発生するかの違いのみで実現が可能だからである。
また、各フィルタは次のルールで処理を行う。
・各フィルタは、パイプから流れてきたページデータに自分の条件が設定されている場合、ページに付いている条件が前のページの条件と同じ場合は、引き続きその条件で処理を続行する。
・ページに付いている条件が前のページの条件と異なる場合は、そこでユーザが条件を変更したと判断して、条件が変更された際の処理を行う。
・集約などを行ってページをまとめたり、ページを分割したりする場合は、ソースとなるページの条件を持たせる。
・集約する際に条件が異なるページを統合するパタンがある場合は、半端なページは白紙にする等の通常出力時(再利用時ではないとき)の仕様に従う。
図20は保管文書印刷における条件読出の例を示す図であり、条件の内容は図19に対応している。図20(a)において、処理の基本としては、ページ毎に条件が変更されているか否かを判断し、変更されている場合にはその時点から処理を変更することで対応することができる。すなわち、同じページ単位条件が付けられた第1ページから第4ページは、その条件#1に従い、編集時に編集条件「集約:4 in 1」により4ページを1ページに集約し、印刷時に印刷条件「出力トレイ:トレイ1」によりトレイ1に排出する。また、条件が変更された後の第5ページ以降はその条件#2に従い、編集時に編集条件「集約:2 in 1」により2ページを1ページに集約し、印刷時に印刷条件「出力トレイ:トレイ2」によりトレイ2に排出する。
また、(b)はページ入替もしくは処理順序変更が行われた場合を示している。すなわち、元文書が第1ページ→第2ページ→第3ページ→第4ページ→第5ページ→第6ページで、条件変更点が第4ページと第5ページの間にあるとして、第6ページが第1ページの前に移動した場合、条件変更点が第6ページと第1ページの間と第4ページと第5ページの間の2箇所になる。この場合も処理の基本は同じであり、ページ毎に条件が変更されているか否かを判断し、変更されている場合にはその時点から処理を変更することで対応することができる。
また、これを更に処理順序を逆順に変更して第5ページ→第4ページ→第3ページ→第2ページ→第1ページ→第6ページとした場合、条件変更点は第5ページと第4ページの間と第1ページと第6ページの間の2箇所になる。この場合も処理の基本は同じであり、ページ毎に条件が変更されているか否かを判断し、変更されている場合にはその時点から処理を変更することで対応することができる。
図21はコピー蓄積における開始条件の設定および保存(図18(a)のステップS201)の処理例を示すシーケンス図である。
図21において、ユーザのオペレーションパネルへの操作に応じ、UI C1から読取フィルタC3に対して読取条件の条件設定が行われ(ステップS221、S222)、UI C1から編集フィルタC4に対して編集条件の条件設定が行われ(ステップS223、S224)、UI C1から印刷フィルタC5に対して印刷条件の条件設定が行われ(ステップS225、S226)、UI C1から保管文書登録フィルタC6に対して蓄積条件の条件設定が行われる(ステップS227、S228)。
次いで、ユーザのオペレーションパネルへの操作に応じ、UI C1からコピーアクティビティC2に対してジョブスタートが要求されると(ステップS229)、コピーアクティビティC2は編集フィルタC4に対して条件保存を要求する(ステップS230)。編集フィルタC4は、データ管理C9に編集条件のデータ蓄積を要求し(ステップS231)、データ管理C9から蓄積したデータを識別する条件IDを取得し(ステップS232)、コピーアクティビティC2に条件IDを返す(ステップS233)。
同様に、コピーアクティビティC2は印刷フィルタC5に対して条件保存を要求し(ステップS234)、印刷フィルタC5は、データ管理C9に印刷条件のデータ蓄積を要求し(ステップS235)、データ管理C9から蓄積したデータを識別する条件IDを取得し(ステップS236)、コピーアクティビティC2に条件IDを返す(ステップS237)。
なお、読取フィルタC3における読取条件や保管文書登録フィルタC6における蓄積条件は、保管文書印刷時に再現する必要のない条件であるため、保存は行なわない。
次いで、コピーアクティビティC2は保管文書登録フィルタC6に対して文書単位条件リストの条件設定を行う(ステップS238、S239)。保管文書登録フィルタC6はこの時点では文書単位条件リストの保存は行なわず、文書情報の一部として全ページの処理が完了した時点の文書情報の保存(図18(a)のステップS205)において行なう。
図22はコピー蓄積における文書の読取、編集および蓄積(図18(a)のステップS202、S204の一部)ならびに文書情報の保存(図18のステップS205)の処理例を示すシーケンス図である。印刷処理については省略してある。
図22において、読取フィルタC3は読取処理を開始すると(ステップS241)、ページデータ(Page Data)を生成し(ステップS242)、読み取った画像情報をページデータに設定し(ステップS243、S244)、編集フィルタC4にページデータへのデータ書込を通知する(ステップS245)。これらの処理はパイプを介して行なわれる。
編集フィルタC4はページデータから画像データを取得し(ステップS246、S247)、編集処理を開始し(ステップS248)、ページデータを生成し(ステップS249)、編集した画像情報をページデータに設定し(ステップS250)、保管文書登録フィルタC6にページデータへのデータ書込を通知する(ステップS251)。これらの処理はパイプを介して行なわれる。
保管文書登録フィルタC6はページデータから画像データを取得し(ステップS252、S253)、蓄積処理を開始し(ステップS254)、画像加工C10に画像データと画像識別子を伴って画像永続化を要求する(ステップS255、S256)。また、保管文書登録フィルタC6は保管文書共有サービスC8にページ画像と画像識別子とページ単位条件リストを伴ってページ情報永続化を要求し(ステップS257)、保管文書共有サービスC8はデータ管理C9に永続データを渡してデータ永続化を要求し(ステップS258)、保存したデータを識別するデータIDをデータ管理C9から取得し(ステップS259)、保管文書登録フィルタC6にページ情報IDを返す(ステップS260)。ページ単位の処理はここまでであり、各ページにつき同様に処理が行なわれる。
また、最終ページの読取・編集の完了時には、続いて以下の処理が行われる。すなわち、保管文書登録フィルタC6は保管文書共有サービスC8に文書情報とページ情報IDと文書単位条件リストを伴って文書情報永続化を要求し(ステップS261)、保管文書共有サービスC8はデータ管理C9に永続データを渡してデータ永続化を要求し(ステップS262)、保存したデータを識別するデータIDをデータ管理C9から取得し(ステップS263)、保管文書登録フィルタC6に文書情報IDを返す(ステップS264)。
図23はコピー蓄積におけるページ単位条件の設定および保存(図18(a)のステップS203)の処理例を示すフローチャートである。
図23において、次原稿待ち状態のジョブ一時停止中にて(ステップS271)、ユーザが条件(編集条件/印刷条件)を設定し(ステップS272)、ユーザが原稿をセットしてジョブを再開すると(ステップS273)、各フィルタ(編集フィルタC4、印刷フィルタC5)は条件が変更されているか否か判断する(ステップS274)。
条件が変更されている場合(ステップS274のYES)、各フィルタは条件を保存して新たな条件IDを取得し(ステップS275)、保持している条件IDを古い条件IDから新しい条件IDに更新する(ステップS276)。条件が変更されていない場合(ステップS274のNO)はこれらの処理は行わない。
次いで、各フィルタは保持している条件IDと自分のコンポーネント名をコピーアクティビティC2に通知する(ステップS277)。そして、コピーアクティビティC2は保管文書登録フィルタC6に各フィルタのページ単位条件リストを設定する(ステップS278)。その後、ジョブを再開する(ステップS279)。
図24はコピー蓄積におけるページ単位条件の設定および保存(図18(a)のステップS203)の処理例を示すシーケンス図である。
図24において、次原稿待ち状態のジョブ一時停止中にて、ユーザがUI C1に対して編集条件を設定すると(ステップS281)、UI C1は編集フィルタC4に編集条件の条件設定を行う(ステップS282、S283)。
同様に、ユーザがUI C1に対して印刷条件を設定すると(ステップS284)、UI C1は印刷フィルタC5に印刷条件の条件設定を行う(ステップS285、S286)。
次いで、ユーザが原稿をセットしてUI C1に対してスタートボタンの押下を行なうと(ステップS287)、UI C1はコピーアクティビティC2にジョブの再開を要求する(ステップS288)。なお、SADFモードの場合は原稿をADF(Automatic Document Feeder)にセットした時点で、スタートボタンの押下を行わなくても、自動にジョブの再開が行われる。
コピーアクティビティC2は編集フィルタC4に対してページブロック番号を伴ってページブロックの変更を伝え(ステップS289)、編集フィルタC4は、条件が変更されていた場合、条件の保存を開始し(ステップS290)、データ管理C9に編集条件のデータ蓄積を要求し(ステップS291)、蓄積したデータを識別する条件IDをデータ管理C9から取得し(ステップS292)、コピーアクティビティC2にページ単位条件を伴って条件変更通知を行う(ステップS293)。
同様に、コピーアクティビティC2は印刷フィルタC5に対してページブロック番号を伴ってページブロックの変更を伝え(ステップS294)、印刷フィルタC5は、編集フィルタC4によるのと同様の処理(ステップS290〜S292)を行い(ステップS295)、コピーアクティビティC2にページ単位条件を伴って条件変更通知を行う(ステップS296)。
次いで、コピーアクティビティC2は保管文書登録フィルタC6に対してページ単位条件リストの条件設定を行う(ステップS297、S298)。保管文書登録フィルタC6はこの時点ではページ単位条件リストの保存は行なわず、前述したページ単位の蓄積時(図18(a)のステップS204)において行なう。
図25は保管文書印刷における選択された文書からの条件復元(図18(b)のステップS301)の処理例を示すフローチャートである。
図25において、保管文書印刷の開始にあたり(ステップS311)、ユーザが文書Aを選択すると(ステップS312)、UI C1は文書Aに条件IDが関連付いているか否か判断する(ステップS313)。前述したコピー蓄積による場合は文書に条件IDが関連付いているが、コピー等を伴わない蓄積だけの場合は文書に条件IDが関連付いておらず、条件の復元はできない。
文書Aに条件IDが関連付いている場合(ステップS313のYES)、UI C1は文書Aに条件IDが関連付いていることをユーザに通知し(ステップS314)、ユーザの選択操作により条件を復元するか否か判断する(ステップS315)。
条件を復元することが選択された場合(ステップS315のYES)、各フィルタ(編集フィルタC4、印刷フィルタC5)は条件IDを元に条件を読み出して復元を行う(ステップS316)。
文書Aに条件IDが関連付いていない場合(ステップS313のNO)もしくは条件を復元することが選択されなかった場合(ステップS315のNO)は、ユーザ操作に応じて条件を設定する(ステップS317)。
その後、ジョブをスタートし(ステップS318)、処理を終了する(ステップS319)。
図26は保管文書印刷における選択された文書からの条件復元(図18(b)のステップS301)の処理例を示すシーケンス図である。
図26において、保管文書印刷を行う場合、ユーザはUI C1から所望の文書Aを選択する(ステップS321)。図27(a)は文書一覧の画面例を示しており、文書Aを選択し、OKボタンを押下することで文書Aの選択が行われる。
図26に戻り、UI C1は保管文書読出フィルタC7に文書Aを読出条件として条件設定し(ステップS322)、保管文書読出フィルタC7は保管文書共有サービスC8に文書Aの文書情報読出を要求する(ステップS323)。保管文書共有サービスC8はデータ管理C9から永続データを読み出し(ステップS324、S325)、保管文書読出フィルタC7に文書情報を返す(ステップS326)。保管文書読出フィルタC7は文書に条件が関連付いている場合、UI C1に条件ありの通知を行い(ステップS327)、UI C1は文書に関連付いている条件を復元するか否かをユーザに求める。図27(b)は条件の復元の可否を求める画面例を示しており、復元する場合には「する」ボタンを、復元しない場合は「しない」ボタンを押下する。
図26に戻り、条件を復元する場合、ユーザはUI C1に条件復元を要求し(ステップS328)、UI C1は保管文書読出フィルタC7に条件の復元を要求し(ステップS329)、保管文書読出フィルタC7はコピーアクティビティC2に文書単位条件リストを伴って条件復元要求通知を行う(ステップS330)。
コピーアクティビティC2は編集フィルタC4に条件IDを伴って条件読出を要求し(ステップS331)、編集フィルタC4はデータ管理C9から条件IDにより編集条件を取得し(ステップS332、S333)、読み出した編集条件に基づいて条件を更新し(ステップS334)、UI C1に条件設定完了通知を行う(ステップS335)。これを受け、UI C1は表示画面の更新を行う(ステップS336)。
同様に、コピーアクティビティC2は印刷フィルタC5に条件IDを伴って条件読出を要求し(ステップS337)、印刷フィルタC5はデータ管理C9から条件IDにより印刷条件を取得し(ステップS338、S339)、読み出した印刷条件に基づいて条件を更新し(ステップS340)、UI C1に条件設定完了通知を行う(ステップS341)。これを受け、UI C1は表示画面の更新を行う(ステップS342)。図27(c)は復元された条件が表示された設定画面例を示しており、用紙として「A3」が既に選択され、編集内容として「集約」が既に選択された状態を示している。
図26に戻り、条件を復元しない場合、ユーザはUI C1に条件を復元しない旨を要求する(ステップS343)。そして、ユーザはUI C1に対して編集条件を設定し(ステップS344)、UI C1は編集フィルタC4に編集条件を設定する(ステップS345)。同様に、ユーザはUI C1に対して印刷条件を設定し(ステップS346)、UI C1は印刷フィルタC5に印刷条件を設定する(ステップS347)。
その後、ユーザがUI C1に対してスタートボタンを押下すると(ステップS348)、UI C1はコピーアクティビティC2にジョブスタートを要求し(ステップS349)、コピーアクティビティC2は保管文書読出フィルタC7と編集フィルタC4と印刷フィルタC5にジョブスタートを要求する(ステップS350〜S352)。
図28は保管文書印刷におけるページ単位条件の読出(図18(b)のステップS302の一部)の処理例を示すフローチャートである。
図28において、処理を開始すると(ステップS361)、保管文書読出フィルタC7はページ情報を読み出してページデータを生成する(ステップS362)。次いで、既にユーザによってなされた条件を復元するか否かの選択に応じ(ステップS363)、条件を復元する場合(ステップS363のYES)、保管文書読出フィルタC7はページデータに条件IDリストを設定する(ステップS364)。条件を復元しない場合(ステップS363のNO)はこの処理は行わない。
次いで、保管文書読出フィルタC7はページデータを書き込む(ステップS365)。
次いで、編集フィルタC4はページデータから条件IDを取得し(ステップS366)、自分の条件IDがあるか否か判断する(ステップS367)。自分の条件IDがある場合(ステップS367のYES)は、続いて、前のページの条件IDと異なるか否か判断する(ステップS368)。前のページの条件IDと異なる場合(ステップS368のYES)、編集フィルタC4は条件IDを元に条件を読み出す(ステップS369)。自分の条件IDがない場合(ステップS367のNO)もしくは前のページの条件IDと同じ場合(ステップS368のNO)はこの処理は行わない。
次いで、編集フィルタC4は編集処理を実行し、ページデータに条件IDリストを設定してデータを書き込み(ステップS370)、処理を終了する(ステップS371)。
印刷フィルタC5についても同様にして処理が行われるが、保管文書読出フィルタC7が生成したページデータからではなく、編集フィルタC4が生成したページデータを介して条件IDを取得して条件の読み出しを行う。
図29は保管文書印刷におけるページ単位条件の読出および編集(図18(b)のステップS302の一部)の処理例を示すシーケンス図である。
図29において、保管文書読出フィルタC7は保管文書共有サービスC8に対してページIDを伴ってページ情報読出を要求し(ステップS381)、保管文書共有サービスC8からページ情報を取得する(ステップS382)。次いで、保管文書読出フィルタC7はページデータを生成し(ステップS383)、条件を復元する場合には、ページデータにページ単位条件リストを設定し(ステップS384)、編集フィルタC4にページデータへのデータ書込を通知する(ステップS385)。これらの処理はパイプを介して行なわれる。
次いで、編集フィルタC4はページデータからページ単位条件リストを取得する(ステップS386、S387)。そして、編集フィルタC4は自分の条件IDがあり、かつ、前のページで読み出した条件IDと異なる場合、データ管理C9から条件IDに基づいて編集条件を読み出し(ステップS388、S389)、読み出した編集条件に条件を更新し(ステップS390)、UI C1に条件設定完了通知を行う(ステップS391)。これを受け、UI C1は表示画面の更新を行う(ステップS392)。
次いで、編集フィルタC4は更新された編集条件に基づいて編集処理を行い(ステップS393)、ページデータを生成し(ステップS394)、ページデータにページ単位条件リストを設定し(ステップS395)、印刷フィルタC5にページデータへのデータ書込を通知する(ステップS396)。
次いで、印刷フィルタC5は、自分の条件IDがあり、かつ、前のページで読み出した条件IDと異なる場合、編集フィルタC4と同様の処理(ステップS388〜S391)を行う(ステップS397)。
図30は編集時の集約処理の例を示すフローチャートであり、図29のステップS393で行われる処理例である。「4 in 1」等の集約設定がされている場合に、1ページ分の画像が全て埋まらない状態で集約設定が変更された時(例えば「2 in 1」に変更)、埋まらない領域は空白のまま出力し、集約設定が変更されたページからは新しく領域に画像の割当を行う。
図30において、処理を開始すると(ステップS401)、編集フィルタC4は集約条件が変更されているか否か判断し(ステップS402)、変更されている場合(ステップS402のYES)、1ページの画像を印刷フィルタC5に書き込む(ステップS403)。集約条件が変更されていない場合(ステップS402のNO)はこの処理は行わない。
次いで、編集フィルタC4はページデータから画像を取得して集約サイズに変倍し(ステップS404)、ページに変倍した画像を割り当てる(ステップS405)。そして、ページ内に未割当の領域があるか否か判断し(ステップS406)、ある場合(ステップS406のYES)は集約条件変更の判断(ステップS402)に移行する。未割当の領域がない(ステップS406のNO)、1ページの画像を印刷フィルタC5に書き込み(ステップS407)、処理を終了する(ステップS408)。
<第3の実施形態>
第3の実施形態は、上述した第2の実施形態の基本的な考え方を維持しつつ、更に、編集や印刷等の条件(詳細な設定項目)を文書本体とともに保存する先のデータベースへのフィルタの依存を最小限にしたものである。
すなわち、図15に示した第2の実施形態の仕組では、編集フィルタや印刷フィルタが編集条件や印刷条件を直接にデータベースに保存していたため、データベースのインタフェースに変更が生じた場合、最終的に文書本体と文書単位条件リストおよびページ単位条件リストをデータベースに保存する保管文書登録フィルタのみならず、編集フィルタや印刷フィルタにも修正が必要となってしまい、データベースとの強い依存が存在している。データベースが装置内に存在するローカルストレージの場合にはインタフェースが変更される可能性は極めて低いが、データベースとしてネットワーク上のストレージ(ネットワークストレージ)を用いる場合には、運用上の都合から形式の異なるデータベースに保存先が変更される可能性が高く、その都度に関係するフィルタの全てに修正を施し、あるいは変更を予想して対応可能なインタフェースを予め備えておくことは現実的ではない。
そこで、この第3の実施形態では、保管文書登録フィルタのみがデータベースにアクセスすることでデータベースへの依存を最小限にし、かつ、編集フィルタや印刷フィルタと保管文書登録フィルタとの依存を発生させないために、編集フィルタや印刷フィルタから保管文書登録フィルタに渡す条件のデータを、フィルタ内のデータ定義に依存しない、項目データを直列化したバイト(Byte)配列等の、汎用的なデータ系列によるブラックボックス化した条件データとしている。
図31は第3の実施形態の仕組の概念図である。
図31において、編集フィルタはジョブ開始時において条件が設定された際に、集約設定、変倍等の項目からなる編集条件の項目データを直列化してバイト配列の条件データを生成し、その条件データを保管文書登録フィルタに渡す。また、印刷フィルタはジョブ開始時において条件が設定された際に、出力トレイ、ステープル、ソート等の項目からなる印刷条件の項目データを直列化してバイト配列の条件データを生成し、その条件データを保管文書登録フィルタに渡す。そして、保管文書登録フィルタは、ジョブ開始時に渡された条件データおよびコンポーネント名「編集フィルタ」と条件データおよびコンポーネント名「印刷フィルタ」とを文書単位条件リストおよび先頭ページのページ単位条件リストに格納する。コンポーネント名を条件データと対にしているのは、条件データは単なるバイト配列であるため、その生成元のコンポーネントを特定するためである。
また、編集フィルタおよび印刷フィルタは、ジョブ開始後のジョブ一時停止状態において条件が設定された際にも同様に条件データを生成し、その条件データを保管文書登録フィルタに渡す。保管文書登録フィルタはその時点での対象となるページのページ単位条件リストとして、条件データおよびコンポーネント名と、新たに採番した条件IDとを格納する。
そして、保管文書登録フィルタは、適時に文書本体とともに文書単位条件リストおよびページ単位条件リストをデータベース(ネットワーク上もしくはローカル上のストレージ)に保存する。例えば、ページ単位条件リストはページ単位の文書本体を保存するのと同時にデータベースに保存し、文書単位条件リストは全ページの処理が完了した時点でデータベースに保存する。
図32は条件データの生成および復元の概念図である。すなわち、文書蓄積時において、各フィルタでのデータ定義に依存する条件の元データから、項目データの直列化(シリアライズ)によりバイト配列の条件データが生成される。また、文書再利用時において、バイト配列の条件データから、各フィルタでのデータ定義に依存する条件の元データが復元(デシリアライズ)される。
第3の実施形態における複合機1のソフトウェア構成例は、図16に示したものと同様となるが、後述するように、編集フィルタC4、印刷フィルタC5、保管文書登録フィルタC6、保管文書読出フィルタC7等における条件の扱いに関する処理機能が異なってくる。
図33はデータ構造の例を示す図であり、文書IDで特定される文書情報には、文書名と文書アクセス権と文書単位条件リストとページ情報IDリストとが含まれている。文書単位条件リストには1または複数の文書単位条件が含まれ、文書単位条件には条件データとコンポーネント名とが含まれている。
ページ情報IDリストに含まれるページ情報IDで特定される各ページのページ情報には、用紙サイズと画像サイズと解像度と画像識別子とページ単位条件リストとが含まれている。ページ単位条件リストには1または複数のページ単位条件が含まれ、ページ単位条件には条件データとコンポーネント名と条件IDとが含まれている。
以下、第3の実施形態の動作について説明する。
全体的な処理概要は図18に示したフローチャートと同様である。
図34はコピー蓄積における開始条件の設定および保存(図18(a)のステップS201)の処理例を示すシーケンス図である。
図34において、ユーザのオペレーションパネルへの操作に応じ、UI C1から読取フィルタC3に対して読取条件の条件設定が行われ(ステップS501、S502)、UI C1から編集フィルタC4に対して編集条件の条件設定が行われ(ステップS503、S504)、UI C1から印刷フィルタC5に対して印刷条件の条件設定が行われ(ステップS505、S506)、UI C1から保管文書登録フィルタC6に対して蓄積条件の条件設定が行われる(ステップS507、S508)。
次いで、ユーザのオペレーションパネルへの操作に応じ、UI C1からコピーアクティビティC2に対してジョブスタートが要求されると(ステップS509)、コピーアクティビティC2は編集フィルタC4に対して条件保存を要求する(ステップS510)。編集フィルタC4は、条件の項目データの直列化により条件データを生成し(ステップS511)、コピーアクティビティC2に直列化済みの条件データを返す(ステップS512)。
同様に、コピーアクティビティC2は印刷フィルタC5に対して条件保存を要求し(ステップS513)、印刷フィルタC5は、条件の項目データの直列化により条件データを生成し(ステップS514)、コピーアクティビティC2に直列化済みの条件データを返す(ステップS515)。
なお、読取フィルタC3における読取条件や保管文書登録フィルタC6における蓄積条件は、保管文書印刷時に再現する必要のない条件であるため、条件データの生成は行なわない。
次いで、コピーアクティビティC2は保管文書登録フィルタC6に対して条件データを含む文書単位条件リストの条件設定を行う(ステップS516、S517)。保管文書登録フィルタC6はこの時点では文書単位条件リストの保存は行なわず、文書情報の一部として全ページの処理が完了した時点の文書情報の保存(図18(a)のステップS205)において行なう。
次に、コピー蓄積における文書の読取、編集および蓄積(図18(a)のステップS202、S204の一部)ならびに文書情報の保存(図18のステップS205)の処理は図22に示したものと同様である。
図35はコピー蓄積におけるページ単位条件の設定および保存(図18(a)のステップS203)の処理例を示すフローチャートである。
図35において、次原稿待ち状態のジョブ一時停止中にて(ステップS521)、ユーザが条件(編集条件/印刷条件)を設定し(ステップS522)、ユーザが原稿をセットしてジョブを再開すると(ステップS523)、各フィルタ(編集フィルタC4、印刷フィルタC5)は条件が変更されているか否か判断する(ステップS524)。
条件が変更されている場合(ステップS524のYES)、各フィルタは条件を直列化し、バイト配列の条件データを作成する(ステップS525)。条件が変更されていない場合(ステップS524のNO)はこの処理は行わない。
次いで、各フィルタは保持している条件データと自分のコンポーネント名をコピーアクティビティC2に通知する(ステップS526)。
次いで、コピーアクティビティC2は保管文書登録フィルタC6に各フィルタのページ単位条件リストを設定する(ステップS527)。
そして、保管文書登録フィルタC6は渡されたページ単位条件リストのページ単位条件に条件IDを採番する(ステップS528)。その後、ジョブを再開する(ステップS529)。
図36はコピー蓄積におけるページ単位条件の設定および保存(図18(a)のステップS203)の処理例を示すシーケンス図である。
図36において、次原稿待ち状態のジョブ一時停止中にて、ユーザがUI C1に対して編集条件を設定すると(ステップS531)、UI C1は編集フィルタC4に編集条件の条件設定を行う(ステップS532、S533)。
同様に、ユーザがUI C1に対して印刷条件を設定すると(ステップS534)、UI C1は印刷フィルタC5に印刷条件の条件設定を行う(ステップS535、S536)。
次いで、ユーザが原稿をセットしてUI C1に対してスタートボタンの押下を行なうと(ステップS537)、UI C1はコピーアクティビティC2にジョブの再開を要求する(ステップS538)。なお、SADFモードの場合は原稿をADFにセットした時点で、スタートボタンの押下を行わなくても、自動にジョブの再開が行われる。
コピーアクティビティC2は編集フィルタC4に対してページブロック番号を伴ってページブロックの変更を伝え(ステップS539)、編集フィルタC4は、条件が変更されていた場合、条件データを生成し(ステップS540)、コピーアクティビティC2に直列化済みの条件データを含むページ単位条件を伴って条件変更通知を行う(ステップS541)。条件が変更されていない場合は条件データの生成は行わず、これまでの条件IDを返す。
同様に、コピーアクティビティC2は印刷フィルタC5に対してページブロック番号を伴ってページブロックの変更を伝え(ステップS542)、印刷フィルタC5は、編集フィルタC4によるのと同様の処理(ステップS540)を行い(ステップS543)、コピーアクティビティC2に直列化済みの条件データを含むページ単位条件を伴って条件変更通知を行う(ステップS544)。
次いで、コピーアクティビティC2は保管文書登録フィルタC6に対してページ単位条件リストの条件設定を行うと(ステップS545)、保管文書登録フィルタC6は条件IDを採番し(ステップS546)、コピーアクティビティC2に応答を返す(ステップS547)。新たな条件IDが採番されることで、このタイミングで条件が変わったことが明らかとなる。なお、保管文書登録フィルタC6はこの時点ではページ単位条件リストの保存は行なわず、前述したページ単位の蓄積時(図18(a)のステップS204)において行なう。
図37は保管文書印刷における選択された文書からの条件復元(図18(b)のステップS301)の処理例を示すフローチャートである。
図37において、保管文書印刷の開始にあたり(ステップS551)、ユーザが文書Aを選択すると(ステップS552)、UI C1は文書Aに条件IDが関連付いているか否か判断する(ステップS553)。前述したコピー蓄積による場合は文書に条件IDが関連付いているが、コピー等を伴わない蓄積だけの場合は文書に条件IDが関連付いておらず、条件の復元はできない。
文書Aに条件IDが関連付いている場合(ステップS553のYES)、UI C1は文書Aに条件IDが関連付いていることをユーザに通知し(ステップS554)、ユーザの選択操作により条件を復元するか否か判断する(ステップS555)。
条件を復元することが選択された場合(ステップS555のYES)、各フィルタ(編集フィルタC4、印刷フィルタC5)は条件データを元に条件を読み出して復元を行う(ステップS556)。
文書Aに条件IDが関連付いていない場合(ステップS553のNO)もしくは条件を復元することが選択されなかった場合(ステップS555のNO)は、ユーザ操作に応じて条件を設定する(ステップS557)。
その後、ジョブをスタートし(ステップS558)、処理を終了する(ステップS559)。
図38は保管文書印刷における選択された文書からの条件復元(図18(b)のステップS301)の処理例を示すシーケンス図である。
図38において、保管文書印刷を行う場合、ユーザはUI C1から所望の文書Aを選択する(ステップS561)。
次いで、UI C1は保管文書読出フィルタC7に文書Aを読出条件として条件設定し(ステップS562)、保管文書読出フィルタC7は保管文書共有サービスC8に文書Aの文書情報読出を要求し(ステップS563)、保管文書共有サービスC8は保管文書読出フィルタC7に文書情報を返す(ステップS564)。保管文書読出フィルタC7は文書に条件が関連付いている場合、UI C1に条件ありの通知を行い(ステップS565)、UI C1は文書に関連付いている条件を復元するか否かをユーザに求める。
条件を復元する場合、ユーザはUI C1に条件復元を要求し(ステップS566)、UI C1は保管文書読出フィルタC7に条件の復元を要求し(ステップS567)、保管文書読出フィルタC7はコピーアクティビティC2に文書単位条件リストを伴って条件復元要求通知を行う(ステップS568)。
コピーアクティビティC2は編集フィルタC4に直列化済みの条件データを伴って条件読出を要求し(ステップS569)、編集フィルタC4は条件データを復元して編集条件を取得し(ステップS570)、取得した編集条件に基づいて条件を更新し(ステップS571)、UI C1に条件設定完了通知を行う(ステップS572)。これを受け、UI C1は表示画面の更新を行う(ステップS573)。
同様に、コピーアクティビティC2は印刷フィルタC5に直列化済みの条件データを伴って条件読出を要求し(ステップS574)、印刷フィルタC5は条件データを復元して印刷条件を取得し(ステップS575)、取得した印刷条件に基づいて条件を更新し(ステップS576)、UI C1に条件設定完了通知を行う(ステップS577)。これを受け、UI C1は表示画面の更新を行う(ステップS578)。
一方、条件を復元しない場合、ユーザはUI C1に条件を復元しない旨を要求する(ステップS579)。そして、ユーザはUI C1に対して編集条件を設定し(ステップS580)、UI C1は編集フィルタC4に編集条件を設定する(ステップS581)。同様に、ユーザはUI C1に対して印刷条件を設定し(ステップS582)、UI C1は印刷フィルタC5に印刷条件を設定する(ステップS583)。
その後、ユーザがUI C1に対してスタートボタンを押下すると(ステップS584)、UI C1はコピーアクティビティC2にジョブスタートを要求し(ステップS585)、コピーアクティビティC2は保管文書読出フィルタC7と編集フィルタC4と印刷フィルタC5にジョブスタートを要求する(ステップS586〜S588)。
図39は保管文書印刷におけるページ単位条件の読出(図18(b)のステップS302の一部)の処理例を示すフローチャートである。
図39において、処理を開始すると(ステップS601)、保管文書読出フィルタC7はページ情報を読み出してページデータを生成する(ステップS602)。次いで、既にユーザによってなされた条件を復元するか否かの選択に応じ(ステップS603)、条件を復元する場合(ステップS603のYES)、保管文書読出フィルタC7は前のページの条件IDと異なるか否か判断する(ステップS604)。
前のページの条件IDと異なる場合(ステップS604のYES)、保管文書読出フィルタC7はコピーアクティビティC2にジョブ一時中断通知を出し、読み出した条件データをコピーアクティビティC2に通知する(ステップS605)。
次いで、コピーアクティビティC2は条件データとブロックIDを各フィルタ(編集フィルタC4、印刷フィルタC5)に設定する(ステップS606)。
図40は設定条件とブロックIDの関係を示す図である。すなわち、ページ単位の条件を更新する場合、コピーアクティビティC2は、条件データに対して、設定された条件とその条件が適用されるべきページとを紐付けるブロックIDを付与する。各フィルタは、ページデータに紐付いているブロックIDと一致するブロックIDをもつ設定条件を、処理するページの条件として適用する。
図39に戻り、各フィルタは条件データを復元して設定条件を更新する(ステップS607)。
次いで、コピーアクティビティC2は各フィルタのジョブを再開する(ステップS608)。
また、条件を復元しない場合(ステップS603のNO)もしくは前のページの条件IDと異ならない場合(ステップS604のNO)はこれらの処理は行わない。
次いで、保管文書読出フィルタC7はページデータを書き込む(ステップS609)。
次いで、編集フィルタC4は、条件データに紐付いているブロックIDとページデータのブロックIDとが一致していた場合に、設定条件を更新する(ステップS610)。
次いで、編集フィルタC4は編集処理を実行し、ページデータにデータを書き込み(ステップS611)、処理を終了する(ステップS612)。
印刷フィルタC5についても同様にして処理が行われるが、保管文書読出フィルタC7が生成したページデータからではなく、編集フィルタC4が生成したページデータを対象に処理を行う。
図41は保管文書印刷におけるページ単位条件の読出および編集(図18(b)のステップS302の一部)の処理例を示すシーケンス図である。
図41において、保管文書読出フィルタC7は保管文書共有サービスC8に対してページIDを伴ってページ情報読出を要求し(ステップS621)、保管文書共有サービスC8からページ情報を取得する(ステップS622)。
次いで、保管文書読出フィルタC7は条件IDを確認し(ステップS623)、条件IDがこれまでのものと異なる場合、以下の処理を行う。
すなわち、保管文書読出フィルタC7はコピーアクティビティC2に文書単位条件リストを伴って条件復元要求通知を行う(ステップS624)。
コピーアクティビティC2は編集フィルタC4に直列化済みの条件データとブロックIDを伴って条件変更を行い(ステップS625)、編集フィルタC4は条件復元を行い(ステップS626)、コピーアクティビティC2に応答を返す(ステップS627)。
同様に、コピーアクティビティC2は印刷フィルタC5に直列化済みの条件データとブロックIDを伴って条件変更を行い(ステップS628)、印刷フィルタC5は条件復元を行い(ステップS629)、コピーアクティビティC2に応答を返す(ステップS630)。
その後、保管文書読出フィルタC7はページデータを生成し(ステップS631)、編集フィルタC4にページデータへのデータ書込を通知する(ステップS632)。これらの処理はパイプを介して行なわれる。
編集フィルタC4は条件を更新し(ステップS633)、更新された編集条件に基づいて編集処理を行い(ステップS634)、ページデータを生成し(ステップS635)、印刷フィルタC5にページデータへのデータ書込を通知する(ステップS636)。
その後、印刷フィルタC5においても、編集フィルタC4の場合と同様の処理(ステップS633〜S636)を行う(ステップS637)。
<総括>
以上、本発明の好適な実施の形態により本発明を説明した。ここでは特定の具体例を示して本発明を説明したが、特許請求の範囲に定義された本発明の広範な趣旨および範囲から逸脱することなく、これら具体例に様々な修正および変更を加えることができることは明らかである。すなわち、具体例の詳細および添付の図面により本発明が限定されるものと解釈してはならない。