以下に添付図面を参照して、この発明にかかる文書処理装置、画像形成装置、文書処理方法及び文書処理プログラムの最良な実施の形態を詳細に説明する。なお、本実施の形態では、この発明を画像形成装置に適用した場合について説明するが、本発明はこれに限らず、複数の入出力部から文書を入出力する際に加工処理を行う各種装置に適用することができる。
(第1の実施の形態)
まず、本発明の第1の実施の形態に係る画像形成装置(以下「複合機」と言う)1の概要について図1、図2、図3、図16および図17を用いて説明する。図1は、本実施の形態に係る複合機1を取り巻くネットワーク環境を説明するためのネットワーク図であり、図2は、図1に示した複合機1のハードウェア構成を示すブロック図であり、図3は、図1に示した複合機1のソフトウェアとハードウェアの関係を説明するための概念図である。そして図16は、複合機に搭載されるソフトウェア構成の変遷を説明するための説明図であり、図17は、従来の複合機のソフトウェアとハードウェアの関係を説明するための説明図である。
図1に示すように、近年のネットワーク化の進展により、オフィスなどに設けられたPC(Personal Computer)などの機器は、LAN(Local Area Network)などのネットワークに接続され、相互に通信することが通常となった。たとえば、本図に示したように、かかるネットワークには、クライアントPC、SMTP(Simple Mail Transfer Protocol)サーバ、FTP(File Transfer Protocol)サーバ、サーバPCなどが接続され、電子メールの送受信やファイル転送をすることができ、モデム接続された配信サーバは、オフィス外のファックス装置と通信することができる。
このようなネットワーク化の進展に伴い、複合機1もかかるネットワークに接続され、PC等の機器と相互に通信することが可能となり、ハードディスク等の記憶装置を内蔵することで、いわゆるネットワーク複合機へと進化し、ユーザの様々なニーズに応えることができるようになった。
具体的には、複合機1は、通常のコピー機能に加えて、クライアントPCからの印刷要求により文書データ等を印刷するプリンタ機能、クライアントPCからのファックス要求により文書データ等をサーバPCに接続されたモデムを経由して他のオフィスのファックス機器に送信するファックス機能、受信したファックス文書やコピー文書を内蔵したハードディスクに蓄積する蓄積機能などを有している。このような多くの機能を実現するために、従来からの複合機に搭載されるソフトウェアは規模が大きくなり、かつ複雑なものとなる。それにともない、それらのソフトウェアの開発と維持管理のための工数も大幅に増大している。そこで本実施の形態にかかる複合機1に搭載されるソフトウェアでは、開発と維持管理のための工数を減少させる。なお、複合機1に搭載されるソフトウェアの構成については後述する。
図2は、かかる複合機1のハードウェア構成を示すブロック図である。本図に示すように、この複合機1は、コントローラ10とエンジン部(Engine)60とをPCI(Peripheral Component Interconnect)バスで接続した構成となる。コントローラ10は、複合機1全体の制御と描画、通信、図示しない操作部からの入力を制御するコントローラである。エンジン部60は、PCIバスに接続可能なプリンタエンジンなどであり、たとえば白黒プロッタ、1ドラムカラープロッタ、4ドラムカラープロッタ、スキャナまたはファックスユニットなどである。なお、このエンジン部60には、プロッタなどのいわゆるエンジン部分に加えて、誤差拡散やガンマ文書データなどの画像処理部分が含まれる。
コントローラ10は、CPU11と、ノースブリッジ(NB)13と、システムメモリ(MEM−P)12と、サウスブリッジ(SB)14と、ローカルメモリ(MEM−C)17と、ASIC(Application Specific Integrated Circuit)16と、ハードディスクドライブ(HDD)18とを有し、ノースブリッジ(NB)13とASIC16との間をAGP(Accelerated Graphics Port)バス15で接続した構成となる。また、MEM−P12は、ROM(Read Only Memory)12aと、RAM(Random Access Memory)12bとをさらに有する。
CPU11は、複合機1の全体制御をおこなうものであり、NB13、MEM−P12およびSB14からなるチップセットを有し、このチップセットを介して他の機器と接続される。
NB13は、CPU11とMEM−P12、SB14、AGP15とを接続するためのブリッジであり、MEM−P12に対する読み書きなどを制御するメモリコントローラと、PCIマスタおよびAGPターゲットとを有する。
MEM−P12は、プログラムやデータの格納用メモリ、プログラムやデータの展開用メモリ、プリンタの描画用メモリなどとして用いるシステムメモリであり、ROM12aとRAM12bとからなる。ROM12aは、プログラムやデータの格納用メモリとして用いる読み出し専用のメモリであり、RAM12bは、プログラムやデータの展開用メモリ、プリンタの描画用メモリなどとして用いる書き込みおよび読み出し可能なメモリである。
SB14は、NB13とPCIデバイス、周辺デバイスとを接続するためのブリッジである。このSB14は、PCIバスを介してNB13と接続されており、このPCIバスには、ネットワークインターフェース(I/F)部なども接続される。
ASIC16は、画像処理用のハードウェア要素を有する画像処理用途向けのIC(Integrated Circuit)であり、AGP15、PCIバス、HDD18およびMEM−C17をそれぞれ接続するブリッジの役割を有する。このASIC16は、PCIターゲットおよびAGPマスタと、ASIC16の中核をなすアービタ(ARB)と、MEM−C17を制御するメモリコントローラと、ハードウェアロジックなどにより画像データの回転などをおこなう複数のDMAC(Direct Memory Access Controller)と、エンジン部60との間でPCIバスを介したデータ転送をおこなうPCIユニットとからなる。このASIC16には、PCIバスを介してFCU(Fax Control Unit)30、USB(Universal Serial Bus)40、IEEE1394(the Institute of Electrical and Electronics Engineers 1394)インターフェース50が接続される。
MEM−C17は、コピー用画像バッファ、符号バッファとして用いるローカルメモリであり、HDD(Hard Disk Drive)18は、画像データの蓄積、プログラムの蓄積、フォントデータの蓄積、フォームの蓄積を行うためのストレージである。
AGP15は、グラフィック処理を高速化するために提案されたグラフィックスアクセラレーターカード用のバスインターフェースであり、MEM−P12に高スループットで直接アクセスすることにより、グラフィックスアクセラレーターカードを高速にするものである。
図3は、かかる複合機1のハードウェアおよびソフトウェアの構成を示した概念図であり、具体的には、後述する本実施の形態の特徴部分であるドキュメントハンドリング部212を含む統合アプリケーション110と、ソフトウェア100およびハードウェア150の階層関係を示している。本図に示すように、ハードウェア150は、ハードウェアリソース151を有し、このハードウェアリソース151は、スキャナ151a、プロッタ151b、HDD(Hard Disk Drive)151c、ネットワーク151dおよびその他のリソース151eを有する。なお、その他のリソース151eは、151a〜151d以外のハードウェアリソース151のことであり、たとえば、操作パネルなどの入出力デバイスを示す。
図4は、複合機1の操作パネル400の一例を示した図である。本図に示したように、かかる操作パネル400は、初期設定キー401、コピーキー402、コピーサーバーキー403、プリンタキー404、送信キー405、テンキー406、クリア/ストップキー407、スタートキー408、予熱キー409、リセットキー410および液晶タッチパネル420を有する。このような構成を有する操作パネル400でユーザが所定の操作を行った場合に、統合アプリケーション110に含まれている本実施の形態の特徴である各クラスを実体化したオブジェクトが動作する。
例えば、初期設定キー401をタッチすると、液晶タッチパネル420に初期設定用のメニューが表示され、かかるメニューにおいては、収納される用紙サイズなどを設定することができる。また、コピーをしたい場合にはコピーキー402を、コピー結果を複合機1に蓄積したい場合にはコピーサーバーキー403を、プリンタに係る操作をおこないたい場合には、プリンタキー404を、ファックスや蓄積画像などの送信をしたい場合には送信キー405を、それぞれタッチすると、液晶タッチパネル420に対応したメニューが表示される。
図3に戻り、かかるハードウェア150に搭載されるソフトウェア100は階層化されており、オペレーティングシステム103の上層にはサービス層102が構築され、このサービス層102の上層にはアプリケーション層101が構築されている。そして、サービス層102は、各ハードウェアリソース(151a〜151e)を制御するドライバーに相当する、スキャナ制御部102a、プロッタ制御部102b、蓄積制御部102c、配信/メール送受信制御部102d、FAX送受信制御部102e、ネットワーク通信制御部102fおよびその他の制御部102gを有する。
ここで、図3に示したソフトウェア100が、かかる階層構造をとるに至った経緯について、図16および図17を用いて説明する。図16は、複合機に搭載されるソフトウェア構成の変遷を示す説明図である。図16のサービス層分離前アプリケーション1601に示すように、多機能化した複合機に搭載されるソフトウェアは、コピーアプリケーション、FAXアプリケーション、スキャナアプリケーションなどの機能別に独立したアプリケーションとして作成され、図3に示したオペレーティングシステム103上で動作していた。
しかしながら、これらのアプリケーションは、ハードウェアリソースを制御するドライバー(サービス層102)を含んでいたため、各アプリケーションには重複した処理が存在していた。その結果、各アプリケーションの規模は大きなものとなっていた。
そこで、図16のサービス層分離後アプリケーション1602に示すように、サービス層分離前アプリケーション1601のサービス層相当部分を括りだしてサービス層102にするとともに、各アプリケーションは、このサービス層102の上層であるアプリケーション層101に構築する構成とした。かかる階層化構成をとることで、各アプリケーションはスリム化され開発労力も軽減された。
しかしながら、複合機のネットワーク化、多機能化がさらに進展するに従って、各アプリケーションに共通処理部分が存在することが問題となってきた。具体的には、アプリケーション層101の各アプリケーション、たとえば、コピーアプリケーションやスキャナアプリケーションなどは、それぞれ、スキャナ制御部102aや蓄積制御部102cといったドライバーと通信をおこなう処理や、各種機能が取り扱うデータの流れを制御するストリーム制御などの同様な処理を内部に有していた。このように、同様な処理を各アプリケーションが有していると、各アプリケーションの開発規模が大きくなるとともに、サービス層の仕様変更に対する各アプリケーションの改修規模が大きくなることが問題となってきた。
この問題を解決するため、図16の共通ルーチン分離アプリケーション1603に示すように、かかる同様な処理(共通処理部分)を共通ルーチンとして括りだすことも考えられた。しかしながら、かかる共通ルーチンは、各アプリケーションにおいて微妙に異なる処理を共通化しようとするものであるため、共通ルーチン内部の処理は複雑なものとなってしまう。また、たとえば、プリンタアプリケーションなどの新規アプリケーションを追加する場合においては、かかる新規アプリケーションに適応するために、共通ルーチンの改修が必要となる。
しかし、共通ルーチンの内部処理は複雑であるため、改修要員が処理を把握することが困難となり、改修規模の増大や、改修ミスによる他のアプリケーションへの影響が懸念された。
そこで、図16のオブジェクト指向アプリケーション1604に示すように、オブジェクト指向による設計手法(オブジェクトモデリング)により、かかる複数のアプリケーションを、統合アプリケーション110に統合することとした。具体的には、各アプリケーションの共通処理部分をオブジェクトモデルとして抽出し、このオブジェクトモデルの集合体から、統合アプリケーション110を構成する。そして、従来のコピー機能やスキャナ機能といった機能は、かかるオブジェクトモデルの協調関係によって実現する。
このような構成をとることにより、たとえばプリンタ機能のような新規機能の追加は、かかるオブジェクトモデルに属するクラスのサブクラス化などにより対処できる。このため、改修部分が明確となり、改修による他の機能への影響を小さくすることができる。また、オブジェクトモデリングによるプログラムは、従来の手続き型プログラムに比べて、処理の把握が容易であるため、改修要員が処理を把握することも容易となり、改修規模の削減や、改修ミスによる他のアプリケーションへの影響を小さくすることができる。
図17は、図16に示したサービス層分離後アプリケーション1602の段階における従来のアプリケーションの構成と、かかるアプリケーションとサービス層102の各ドライバーの関係を示した説明図である。本図に示すように、アプリケーション層101Aは、コピーアプリケーション121、スキャナアプリケーション122、ファックスアプリケーション123およびプリンタアプリケーション124を有する。
たとえば、コピーアプリケーション121は、コピー機能を実現するために、スキャナ制御部102a、プロッタ制御部102b、蓄積制御部102cおよびその他の制御部102gとデータの送受信をおこなう。また、ファックスアプリケーション123は、ファックス機能を実現するために、プロッタ制御部102b、蓄積制御部102c、FAX送受信制御部102e、ネットワーク通信制御部102fおよびその他の制御部102gとデータの送受信をおこなう。このように、アプリケーション層101Aの各アプリケーションとサービス層102の各ドライバー間の通信は、複雑なものとなっていた。
図3に戻り、上述したオブジェクトモデリングにより、アプリケーション層101に存在した複数のアプリケーションは、統合アプリケーション110に統合されている。そして、各アプリケーションが重複しておこなっていた各ドライバーとの通信処理は、統合アプリケーション110を構成する所定のオブジェクトモデルにおこなわせるように構成したことにより、アプリケーション層101のアプリケーションと、サービス層102の各ドライバー間の通信は、図17と比較して単純になっている。
次に、統合アプリケーション110の内部構成について説明する。図5は、統合アプリケーション110の内部構成、及び統合アプリケーション110内における後述する本実施の形態の特徴的部分であるドキュメントハンドリング部212の位置を示す説明図である。本図に示すように、統合アプリケーション110は、操作系サブシステム201と、管理系サブシステム202と、実行系サブシステム203とを有する。
操作系サブシステム201は、マンマシンインタフェースを担当するソフトウェア群である。具体的には、この操作系サブシステム201は、ユーザの要求を受け付ける処理と、この要求の実行を指示する処理と、この要求の実行状況と実行結果についての情報をユーザに提供する処理をおこなう。
管理系サブシステム202は、複合機1の資源を管理するソフトウェア群である。具体的には、この管理系サブシステム202は、ハードウェアリソース151およびこのハードウェアリソース151が保持するデータ状態を管理するサービスをおこなう。
実行系サブシステム203は、ユーザからの要求の実行を担当するソフトウェア群である。例えば実行系サブシステム203は、コピー要求がなされた場合、原稿の読み取りから成果物の出力までの処理をおこなう。
操作系サブシステム201、管理系サブシステム202および実行系サブシステム203は、必要に応じて相互に処理を依頼してその結果を送り合う。このようにそれぞれのサブシステムが協調し合って、統合アプリケーション110全体として複合機1に必要とされるサービスの提供をおこなう。
そして、実行系サブシステム203は、本実施の形態の特徴部分であるドキュメントハンドリング部212、そしてリクエスト管理部211及び実行制御部213を有する。このドキュメントハンドリング部212は、リクエスト管理部211からの文書データの処理の要求を受け付け、実行制御部213に対してスキャナ151aの読み取り制御やHDD151c等のローカルストレージからの読み込み制御あるいはプロッタ151bやローカルストレージ等に出力する制御を要求し、入力元や出力先によらず共通する文書データの処理を行う。
図6は、図5に示した各サブシステムを、UML(Unified Modeling Language)のクラス図(UMLクラス図)に置き換えた図である。ここで、UMLとは、OMG(Object Management Group)が仕様を策定しているシステムモデリング言語であり、モデリングの成果を記述する記法を定義したものである。このUMLは、オブジェクト指向によるソフトウェアの設計において広く用いられている。
図6に示すように、統合アプリケーション110は複数のパッケージを有し、また、この統合アプリケーション110自体もひとつのパッケージとなっている。ここで、パッケージとはUMLモデルの各構成要素(シンボル)をグループ化したものであり、このパッケージは、左上にタブのついたフォルダ型のシンボルで表現される。また、各パッケージを相互に結ぶ直線は、各パッケージ間に処理依頼などの関連があることを示している。
図6に示したように、統合アプリケーション110は、操作系サブシステム201、管理系サブシステム202および実行系サブシステム203の3つのパッケージを内部に有するパッケージである。さらに、実行系サブシステム203は、リクエスト管理部211、ドキュメントハンドリング部212及び実行制御部213のパッケージを内部に有するパッケージである。そして、操作系サブシステム201、管理系サブシステム202および実行系サブシステム203を相互に結ぶ直線は、各パッケージ間にメッセージ送受信などの関連があることを示している。なお、操作系サブシステム201、管理系サブシステム202および実行系サブシステム203のタブの右端に記された記号は、かかるパッケージがサブシステムであることを示すUMLのシンボルである。
そして、本実施の形態の特徴部分であるドキュメントハンドリング部212について詳細に説明する。このドキュメントハンドリング部212は、リクエスト管理部211から文書データを処理するリクエストを受け付けた場合に処理を行う。なお、このドキュメントハンドリング部212は、オブジェクト指向に基づいて設計するにあたって、既存の処理を単純にオブジェクト化せず、機能追加や改修をより一層容易におこなうことができるようにオブジェクトモデルを構成した。かかるオブジェクトモデルの構成を導出するまでの経緯について説明する。
従来、複合機においては図17で示したアプリケーション層101に備えられたコピーアプリケーション121等の各々アプリケーションが処理を行っていた。図14は、従来の複合機においてアプリケーション毎に有するジョブの種類を示した説明図である。本図に示すように複合機の機能を実現するために担当するアプリケーションが、必要に応じて入力の際には「読み取り」、「FAX受信」、「印刷」、「蓄積」あるいは「FAX送信」などのジョブを実行していた。このような構成の場合、アプリケーション毎に「読み取り」等のジョブを備えている必要がある。つまり、複合機の機能として入力元あるいは出力先が増加するとアプリケーション毎に機能を拡張する必要があった。そこで、処理を共通化させるが、どのようなクラスの構成を生成すれば入出力及び加工処理を共通化させることができるのか問題となる。
図15は、従来の複合機においてアプリケーション毎に備えられたジョブを入力と出力により分類した説明図である。本図に示すように、アプリケーション毎に実行される機能が異なる場合でも入力あるいは出力に用いられるジョブが共通していることが確認できる。このため、機能毎にアプリケーションを備えるという概念を排除し、加工処理を共通化させて、入力元及び出力先だけ選択させるオブジェクトモデルを構成することとした。
図7は、本実施の形態の特徴部分であるドキュメントハンドリング部212で行われる処理の概念を示した概念図である。本図に示すように、入力処理された文書データの入力元が紙文書、電子文書、FAX受信文書にかかわらず、入力処理された文書データ(以下入力ドキュメントという)から、ページとして構成することが可能な所定のサイズに分割した加工処理の対象となる画像を求め、これら加工処理の対象となる画像で構成される文書データ(以下、ユーザドキュメントという)を生成する。そして、生成されたユーザドキュメントを出力先に応じて整形した文書データ(以下、出力ドキュメントという)を生成して、印刷、保存あるいはFAX送信等の出力を行う。このような構成を備えることで入力元及び出力先について変更あるいは追加される場合、複数備えられたアプリケーション毎にプログラムを修正する必要が無くなり、プログラム開発が容易となる。
また、入力元あるいは出力先によらず共通して加工処理を行うためには、予めフォーマットを用意しておき、このフォーマットに入力ドキュメントあるいは出力ドキュメントを当てはめて管理することで、入力元あるいは出力先にかかわらず共通して管理することを可能とし、さらには容易に加工処理を行うことを可能とする。
図8は、本実施の形態において入力ドキュメント及び出力ドキュメントを管理するための構成の概念を示した概念図である。本図で示したように、入力ドキュメント及び出力ドキュメントはページ毎に分割して管理される。そして各ページは画像と、画像の配置を決めるレイアウトで構成されている。つまり、ページとして構成することが可能な所定のサイズに分割した画像を各ページに予め定められたレイアウトに従い順番に当てはめることで入力ドキュメント又は出力ドキュメントとなる。
このような構成とすることで、入力元あるいは出力先によらず共通したフォーマットで文書データを管理することを可能とすると共に、例えば「2 in 1」等の加工処理を容易に行うことが出来る。
つまり、入力元から入力された入力ドキュメントから、ページ毎(以下、入力ページという)にレイアウト(以下、入力レイアウト)に従って分割された画像(以下、入力画像)を生成する。そして加工する際に、入力画像から加工対象となる画像(以下、ユーザ画像)を生成し、これらユーザ画像を有するユーザドキュメントを生成する。そして、出力する際にはユーザドキュメントが有するユーザ画像から出力画像を作成し、生成された出力画像を出力先に応じた出力レイアウトにページ毎に当てはめて出力ドキュメントを生成する。図9は、本実施の形態に係る文書処理で用いられる入力ドキュメントからユーザドキュメント、そして出力ドキュメントまでの構成の変化を示した説明図である。本図に示すように、入力元によらず入力ドキュメントを、入力ページ、入力レイアウト及び入力画像の組み合わせとして管理し、加工処理を施す際には入力画像から生成されたユーザ画像のみ有するユーザドキュメントとして管理する。ユーザドキュメントが所定サイズに分割されたユーザ画像として有する。これにより、出力ドキュメントとして出力する際に出力レイアウトに従ってユーザ画像より生成された出力画像をユーザの要求に従って柔軟に配置することができる。なお、ユーザ画像から出力画像を生成する際に、出力レイアウトに当てはまるように拡大又は縮小等の処理を行う。
上述したオブジェクトモデリングにより、ドキュメントハンドリング部212は、「入力ドキュメントクラス」、「ユーザドキュメントクラス」及び「出力ドキュメントクラス」を有する構成とした。そして、図8で示した構成から「入力ドキュメントクラス」は「入力ページクラス」を、また「出力ドキュメントクラス」は「出力ページクラス」を保持する。さらに「入力ページクラス」は「入力レイアウトクラス」と「入力画像クラス」を保持し、「出力ページクラス」は「出力レイアウトクラス」と「出力画像クラス」を保持する。そして、「ユーザドキュメントクラス」は「ユーザ画像」を保持する。
そして、「入力ドキュメントクラス」は入力元毎にサブクラスが設けられ、「出力ドキュメントクラス」も同様に出力先毎にサブクラスが設けられる。本実施の形態では、入力元としては、スキャナで読み込まれる「紙」ドキュメント、ネットワークを介して入力される「ネット」ドキュメントそしてハードディスク等のローカルストレージに保存されている「LS」ドキュメントとする。そこで、「入力ドキュメントクラス」のサブクラスとして「入力ネットドキュメントクラス」、「入力紙ドキュメントクラス」及び「入力LSドキュメントクラス」が設けられる。そして、出力先も同様に「紙」、「ネット」及び「LS」とし、「出力ドキュメントクラス」のサブクラスとして「出力ネットドキュメントクラス」、「出力紙ドキュメントクラス」及び「出力LSドキュメントクラス」が設けられる。
そして、上述したオブジェクトモデリングにより設計されたドキュメントハンドリング部212は、リクエスト管理部211から文書データを処理する旨の要求を受け付けた場合に、入力文書(例えば紙文書、電子文書、FAX受信文書等)を入力処理してから加工処理を行い、出力文書(例えば、紙文書、電子文書あるいはFAX送信文書)を出力処理するまでの処理を行う。これらの処理が行われた後、実行系サブシステム203からサービス層102による制御により、ハードウェアリソース151から出力される。
図10は、上述したオブジェクトモデリングにより設計されたドキュメントハンドリング部212のクラス構成をUMLのクラスで示した図である。本図に示すように、ドキュメントハンドリング部212は、ドキュメント操作スケジューラクラス1001と、入力ドキュメントクラス1011と、入力ページクラス1012と、入力レイアウトクラス1013と、入力画像クラス1014と、入力ネットドキュメントクラス1015と、入力紙ドキュメントクラス1016と、入力LSドキュメントクラス1017と、ユーザドキュメントクラス1002と、ユーザドキュメントパラレルクラス1003と、ユーザドキュメントシーケンシャルクラス1004と、ユーザ画像クラス1005と、出力ドキュメントクラス1021と、出力ページクラス1022と、出力レイアウトクラス1023と、出力画像クラス1024と、出力ネットドキュメントクラス1025と、出力紙ドキュメントクラス1026と、出力LSドキュメントクラス1027と、を備えている。このような構成を備えたことで、入力元あるいは出力先にかかわらず共通した文書処理を行うことを可能とする。
各クラスを示す矩形は3段の区画を有し、上から、クラス名を示す名前区画、クラスが有するデータ(属性)を示す属性区画およびクラスが有する処理(操作)を示す操作区画と呼ばれる。たとえば、入力ドキュメントクラス1011を示す矩形の名前区画は、かかるクラスのクラス名が「入力ドキュメント」であることを示し、属性区画は、かかるクラスが有する属性が、「ページ数」であることを示し、操作区画は、かかるクラスが有する操作が、「開始()」であることを示している。
このように、各クラスは、データ(属性)を所持するための属性区画と、かかる属性の書き込みおよび読み出しをおこなう処理(操作)を所持するための操作区画とを有している。これらのクラスは、プログラム(統合アプリケーション110)の一部として含まれるので、あらかじめROM12aに格納されたこのプログラムが実行されると、各クラスはRAM12bの所定領域に実体化され、属性区画に含まれる各データ(属性)がRAM12b上に展開される。したがって、クラスを実体化したオブジェクトは、RAM12b上の各データ(属性)の書き込みおよび読み出しをすることが可能となる。
なお、属性や操作といったクラスの要素の左側に「−」記号を付した場合は、かかる要素は外部のクラスには非公開であることを示し、「+」記号を付した場合は、かかる要素は外部のクラスに公開されていることを示す。また、操作については「変更()」のように「()」記号を付することが通例であり、「(引数1,引数2)」のように、かかる操作に引き渡す引数を記述する場合もある。
次に、図10に示した本実施の形態の特徴部分であるドキュメントハンドリング部212が備える各クラスについて説明する。
ドキュメント操作スケジューラクラス1001は、リクエスト管理部211から受け付けたリクエストに対応した文書処理を行うためにドキュメントの管理及び操作するクラスであり、リクエストに応じたユーザドキュメントクラス1002のサブクラスのオブジェクトを生成する。具体的にはドキュメント操作スケジューラクラス1001は、操作として登録()1001aを有する。また、ドキュメント操作スケジューラクラス1001は、リクエスト管理部211からリクエストされた文書処理のスケジューリングを行う。
登録()1001aは、リクエスト管理部211から文書処理の要求を受け付け、受け付けた要求に応じたユーザドキュメントクラス1002のサブクラスのオブジェクトを生成する。また、登録()1001aの引数として受け渡された情報には、ユーザが文書処理に対して設定した情報が含まれる。そして、ドキュメント操作スケジューラオブジェクト1001Aは、この情報より文書データの入力処理と出力処理を並行して処理するか逐次処理するか判断し、ユーザドキュメントパラレルオブジェクト1003A及びユーザドキュメントシーケンシャルオブジェクト1004Aのどちらかを生成する。なお、ユーザドキュメントパラレルオブジェクト1003A及びユーザドキュメントシーケンシャルオブジェクト1004Aについては後述する。
ユーザドキュメントクラス1002は、入力文書を入力処理してから加工処理を行い、出力先に出力文書(例えば、紙文書、電子文書あるいはFAX送信文書)を出力するまでの工程を管理するクラスである。さらに、ユーザドキュメントクラス1002は、ユーザが複合機1を使用する際に設定した情報からユーザの要求を実現するための仕様を導出し、導出した仕様を満たすように入力ドキュメントクラス1011や出力ドキュメントクラス1021に指示するクラスとする。このユーザドキュメントクラス1002は、ユーザドキュメントパラレルクラス1003およびユーザドキュメントシーケンシャルクラス1004の上位クラス(スーパークラス)であり、ユーザドキュメントクラス1002自体が実体化されることはないが、ユーザドキュメントクラス1002の属性および操作は、下位クラス(サブクラス)であるユーザドキュメントパラレルクラス1003およびユーザドキュメントシーケンシャルクラス1004に継承される。具体的にはユーザドキュメントクラス1002は、操作として開始()1002aを有する。また、ユーザドキュメントクラス1002のサブクラスは、文書処理が終了した後に、入力ドキュメントクラス1011のサブクラス及び出力ドキュメントクラス1021のサブクラスのオブジェクトを削除する。
開始()1002aは、ユーザドキュメントクラス1002が文書処理を開始するためのトリガーを与える処理をおこなう。この開始()1002aは、サブクラスであるユーザドキュメントパラレルクラス1003およびユーザドキュメントシーケンシャルクラス1004に継承され、各サブクラスにおける具体的な処理によりオーバーライド(override)される。なお、かかる具体的な処理の説明については、後述するユーザドキュメントパラレルクラス1003およびユーザドキュメントシーケンシャルクラス1004の説明でおこなう。
ユーザドキュメントパラレルクラス1003は、ユーザドキュメントクラス1002のサブクラスであり、ドキュメント操作スケジューラクラス1001から文書処理の開始を受け付けた場合に入力処理から出力処理まで並行して実行する制御を行う。本実施の形態では、ユーザドキュメントパラレルクラス1003は、ドキュメント操作スケジューラクラス1001から文書処理の開始の要求があった場合に入力ドキュメントクラス1011のサブクラスのオブジェクト及び出力先に応じた出力ドキュメントクラス1021のサブクラスのオブジェクトの生成し、文書データとして入力処理及び出力処理を並行して実行するクラスである。また、文書データとして入力処理及び出力処理を並行して行うとは、例えば、入力処理が終わったページ等から順に加工処理して出力処理し、この出力処理がされている時には他のページの入力処理が行われていること等をいう。つまり、入力文書の入力処理、加工処理及び出力文書の出力処理が並列して行われていることをいう。ユーザドキュメントパラレルオブジェクト1003Aが処理を行う場合は、例えば紙原稿の画像データをメモリに保存せずに直接コピーする場合や、FAXから直接送信する場合が考えられる。
具体的には、このユーザドキュメントパラレルクラス1003は、操作として、並行処理()1003aを有するとともに、ユーザドキュメントクラス1002から、開始()1002aを継承する。また、ユーザドキュメントパラレルクラス1003は、属性として文書データとして入力処理及び出力処理を並行して行うためのタイミング等を保持するが、図10では省略する。
そして、ユーザドキュメントパラレルオブジェクト1003Aは、開始()1002aで引数として受け渡された情報より入力元を判断し、判断に基づいて入力ネットドキュメントオブジェクト1015A、入力紙ドキュメントオブジェクト1016Aあるいは入力LSドキュメントオブジェクト1017Aを生成し、さらに引数として受け渡された情報より出力先を判断し、判断に基づいて出力ネットドキュメントオブジェクト1025A、出力紙ドキュメントオブジェクト1026Aあるいは出力LSドキュメントオブジェクトを生成する。
ユーザドキュメントクラス1002から承継した開始()1002aは、ユーザドキュメントパラレルクラス1003に文書処理を開始する指示を行う。そして、並行処理()1003aは、開始する指示を受け付けたユーザドキュメントパラレルオブジェクト1003A自身から呼び出され、並行処理を行うための設定が行われる。
ユーザドキュメントシーケンシャルクラス1004は、ユーザドキュメントクラス1002のサブクラスであり、ドキュメント操作スケジューラクラス1001から文書処理の開始を受け付けた場合に入力処理から出力処理まで逐次実行する制御を行う。本実施の形態では、ユーザドキュメントシーケンシャルクラス1004は、ドキュメント操作スケジューラクラス1001から文書処理の開始の要求があった場合に入力ドキュメントクラス1011のサブクラスのオブジェクトを生成して入力処理を行った後、出力先に応じた出力ドキュメントクラス1021のサブクラスのオブジェクトを生成して出力処理を行うクラスである。また、逐次実行するとは、例えば原稿を全て入力処理してメモリに保存した後でメモリに保存した文書データを加工処理してから出力処理することをいう。ユーザドキュメントシーケンシャルクラス1004より生成されたユーザドキュメントシーケンシャルオブジェクト1004Aが処理を行う場合としては、例えばFAX受信時の集約印刷を行う場合や、FAXを用いたメモリ送信等が考えられる。
具体的には、このユーザドキュメントシーケンシャルクラス1004は、操作として、逐次処理()1004aを有するとともに、ユーザドキュメントクラス1002から、開始()1002aを継承する。また、ユーザドキュメントシーケンシャルクラス1004は、属性として入力文書の入力処理及び出力文書の出力処理のタイミング等を保持するが、図10では省略する。
また、ユーザドキュメントシーケンシャルオブジェクト1004Aは、上述したユーザドキュメントパラレルオブジェクト1003Aと同様に引数として受け渡された情報より生成するオブジェクトを決定する。
ユーザドキュメントクラス1002から承継した開始()1002aは、ユーザドキュメントシーケンシャルクラス1004に文書処理を開始する指示を行う。そして、開始する指示を行った場合、逐次処理()1004aは、ユーザドキュメントシーケンシャルオブジェクト1004A自身から呼び出され、入力処理から出力処理までを逐次行うための設定を行う。
入力ドキュメントクラス1011は、入力元より入力処理された入力ドキュメントを、入力元によらず共通する予め定めたフォーマット、換言すると入力画像と入力レイアウトで構成される入力ページに当てはめて管理するクラスである。入力元とは、例えばスキャナ、ネットワークを介して接続された機器、FAX受信あるいはローカルストレージ等の入力手段が考えられる。この入力ドキュメントクラス1011は、入力ネットドキュメントクラス1015、入力紙ドキュメントクラス1016及び入力LSドキュメントクラス1017の上位クラス(スーパークラス)であり、入力ドキュメントクラス1011自体が実体化されることはないが、入力ドキュメントクラス1011の属性および操作は、下位クラス(サブクラス)である入力ネットドキュメントクラス1015、入力紙ドキュメントクラス1016及び入力LSドキュメントクラス1017に継承される。具体的には入力ドキュメントクラス1011は、属性としてページ数1011aを、操作として開始()1011bを有する。
ページ数1011aは、入力処理された入力ドキュメントのページ数を保持する。また、入力ドキュメントクラス1011は、保持されたページ数だけ入力ページオブジェクト1012Aを生成する。
開始()1011bは、入力ドキュメントクラス1011が文書処理を開始するためのトリガーを与える処理をおこなう。この開始()1011bは、サブクラスである入力ネットドキュメントクラス1015、入力紙ドキュメントクラス1016及び入力LSドキュメントクラス1017に継承され、各サブクラスにおける具体的な処理によりオーバーライド(override)される。なお、かかる具体的な処理の説明については、後述する入力ネットドキュメントクラス1015、入力紙ドキュメントクラス1016及び入力LSドキュメントクラス1017の説明でおこなう。
入力ネットドキュメントクラス1015は、入力ドキュメントクラス1011のサブクラスであり、接続したネットワークの入力元から取得したドキュメントを入力処理した入力ドキュメントをページ毎に分割し、分割したページ毎に入力ページオブジェクト1012Aを生成し、入力ページオブジェクト1012Aに対して該当するページを管理する旨を指示することで入力ドキュメントを管理するクラスである。
具体的には、この入力ネットドキュメントクラス1015は、入力ドキュメントクラス1011から、属性としてページ数1011aを、操作として開始()1011bを承継する。さらに、入力ネットドキュメントクラス1015は、属性として、ネットワークを介して入力処理を行うために必要な仕様を保持するが、図10では省略する。なお、かかる入力ネットドキュメントクラス1015を実体化したオブジェクトが生成されると、属性として保持する入力処理を行うために必要な仕様及びページ数1011aはRAM12b上に展開されるので、これらのデータ(属性)の書き込みおよび読み出しをすることが可能となる。
入力ドキュメントクラス1011から承継した開始()1011bは、入力処理を開始するためのトリガーであり、ユーザドキュメントオブジェクト1002Aから呼び出された場合、入力ネットドキュメントクラス1015がネットワークを介してドキュメントを受信し、入力元により異なるフォーマットの入力文書を入力処理し、入力処理した後に入力ドキュメントに変換して管理する制御を行う。なお、入力ドキュメントのフォーマットは、入力元にかかわらず共通したフォーマットとする。
また、入力ネットドキュメントオブジェクト1015Aは、開始()1011bによりドキュメントの入力処理を行うためにネットワークを介してドキュメントを受信する際、引数として受け渡された情報よりネットワークを介して入力されるドキュメントを特定し、実行制御部213を介して利用できるFAX送受信制御部102eやネットワーク通信制御部102fを用いてネットワークへ接続してから受信する。
入力紙ドキュメントクラス1016は、入力ドキュメントクラス1011のサブクラスであり、スキャナ151aより読み込まれた原稿を入力処理した入力ドキュメントをページ毎に分割し、分割したページ毎に入力ページオブジェクト1012Aを生成し、入力ページオブジェクト1012Aに対して該当するページを管理する旨を指示することで入力ドキュメントを管理するクラスである。
具体的には、この入力紙ドキュメントクラス1016は、入力ドキュメントクラス1011から、属性としてページ数1011aを、操作として開始()1011bを承継する。さらに、入力紙ドキュメントクラス1016は、属性として、スキャナ151aから原稿を読み取るための設定及び仕様を保持するが、図10では省略する。なお、かかる入力紙ドキュメントクラス1016を実体化したオブジェクトが生成されると、属性として保持する原稿を読み取るための設定及び仕様及びページ数1011aはRAM12b上に展開されるので、これらのデータ(属性)の書き込みおよび読み出しをすることが可能となる。
入力ドキュメントクラス1011から承継した開始()1011bは、入力処理を開始するためのトリガーであり、ユーザドキュメントオブジェクト1002Aから呼び出された場合、入力紙ドキュメントクラス1016がスキャナ151aで原稿を読み取り、読み取った原稿から入力ドキュメントに変換して管理する制御を行う。
また、入力紙ドキュメントクラス1016は、開始()1011bによりスキャナ151aで原稿を読み出す際、実行制御部213を介して利用できるスキャナ制御部102aを用いて読み取りを行う。また、入力紙ドキュメントオブジェクト1016Aが紙の表裏に印刷されている原稿を読み取る場合でも、表裏を順番に読み込んだ原稿を入力ドキュメントに変換することになるが、入力ドキュメントに表裏という概念は存在しない。つまり、読み込んだ原稿は、表のみ又は表裏両面の読み込みにかかわらず、読み込まれた順番に入力ページとして割り当てられた入力ドキュメントとなる。これにより媒体の特性あるいはスキャナ151aによる原稿のハンドリングモードの違いにかかわらず共通した様式で入力ドキュメントを保持するため、入力元の違いに応じて異なる加工処理を行わなくてよくなり、加工処理が容易となる。
入力LSドキュメントクラス1017は、入力ドキュメントクラス1011のサブクラスであり、ハードディスク等のローカルストレージより読み込まれた電子文書を入力処理した入力ドキュメントをページ毎に分割し、分割したページ毎に入力ページオブジェクト1012Aを生成し、入力ページオブジェクト1012Aに対して該当するページを管理する旨を指示することで入力ドキュメントを管理するクラスである。
具体的には、この入力LSドキュメントクラス1017は、入力ドキュメントクラス1011から、属性としてページ数1011aを、操作として開始()1011bを承継する。さらに、入力LSドキュメントクラス1017は、属性として、ローカルストレージから電子文書を読み込むための設定及び仕様を保持するが、図10では省略する。なお、かかる入力LSドキュメントクラス1017を実体化したオブジェクトが生成されると、属性としてローカルストレージから電子文書を読み込むための設定及び仕様及びページ数1011aはRAM12b上に展開されるので、これらのデータ(属性)の書き込みおよび読み出しをすることが可能となる。
入力ドキュメントクラス1011から承継した開始()1011bは、入力処理を開始するためのトリガーであり、ユーザドキュメントオブジェクト1002Aから呼び出された場合に入力LSドキュメントクラス1017にローカルストレージから電子文書を読み込み、読み込んだ電子文書から入力ドキュメントに変換して管理する制御を行う。
また、入力LSドキュメントクラス1017は、開始()1011bにより電子文書を読み込む際、実行制御部213を介して利用できる蓄積制御部102cを用いて読み込みを行う。
また、入力ネットドキュメントクラス1015、入力紙ドキュメントクラス1016及び入力LSドキュメントクラス1017が管理する入力ドキュメントは、入力元に係わらず共通した入力ページクラス1012、入力レイアウトクラス1013及び入力画像クラス1014等を用いて保持するため、入力元にかかわらず共通した加工処理等を可能とする。次に入力ページクラス1012,入力レイアウトクラス1013及び入力画像クラス1014について説明する。
入力ページクラス1012は、入力ドキュメントクラス1011で管理する入力ドキュメントより分割された各ページを、入力ページとして管理するクラスである。入力ページクラス1012は、入力レイアウトオブジェクト1013A及び入力画像オブジェクト1014Aを生成し、入力レイアウトに入力画像を当てはめた構成として管理する。
また、ページ毎の入力レイアウトの設定する際に、例えばスキャナ151aで読み込む原稿を、ユーザが「2 in 1」の集約原稿であると設定した場合、入力レイアウトは入力画像が2枚当てはめられたレイアウトとなり、この条件を満たした入力レイアウトオブジェクト1013Aが生成されることになる。
具体的には、この入力ページクラス1012は、属性としてページ番号1012aを有し、操作として開始()1012bを有する。なお、かかる入力ページクラス1012を実体化したオブジェクトが生成されると、属性としてページ番号1012aがRAM12b上に展開されるので、これらのデータ(属性)の書き込みおよび読み出しをすることが可能となる。
ページ番号1012aは、この入力ページオブジェクト1012Aが管理するページを示す番号を保持する。つまり、入力ドキュメントオブジェクト1011Aが保持するページ数1011aだけ入力ページオブジェクト1012Aを生成するので、入力ページオブジェクト1012Aが割り振られたページの番号をページ番号1012aで保持する。
開始()1012bは、入力ページクラス1012がページ処理を開始するためのトリガーを与える処理を行う。この開始()1012bが、入力ネットドキュメントオブジェクト1015A等の入力ドキュメントクラス1011のサブクラスのオブジェクトから呼び出された場合に、引数として受け渡されたページ番号に該当する入力ドキュメント中のページの情報を取得し、取得したページの情報に基づいて入力レイアウトオブジェクト1013A及び入力画像オブジェクト1014Aの生成を開始する。
また、入力ページクラス1012は、開始()1012bが呼び出された場合、入力ドキュメントクラス1011が管理する入力ドキュメントから該当する入力ドキュメント中のページの情報を取得し、生成した入力レイアウトオブジェクト1013A及び入力画像オブジェクト1014Aを用いて入力ページを管理する。
入力レイアウトクラス1013は、入力ページクラス1012で管理する入力ページに後述する入力画像を当てはめるために用いられるレイアウト(以下、入力レイアウトという)を作成して管理するクラスである。具体的には、この入力レイアウトクラス1013は、属性として外枠や内枠あるいはオフセット位置などの情報を有するが図10では省略する。また、入力レイアウトクラス1013は、操作として作成()1013aを有する。なお、かかる入力レイアウトクラス1013を実体化したオブジェクトが生成されると、属性として外枠や内枠あるいはオフセット位置などの情報がRAM12b上に展開されるので、これらのデータ(属性)の書き込みおよび読み出しをすることが可能となる。
作成()1013aは、入力レイアウトオブジェクト1013Aが入力ページに入力画像を適した位置に配置する入力レイアウトを作成する。この作成()1013aが、入力ページオブジェクト1012Aから呼び出された場合、引数として受け渡された情報から、属性としてユーザの要求に応じた外枠や内枠あるいはオフセット位置を設定することで、入力レイアウトが作成される。これにより、入力ページ内の入力画像の数が決定される。つまり、入力ページを入力画像というドキュメントハンドリングの最小単位に分割することが可能となる。
入力画像クラス1014は、入力ページに対して入力レイアウトにより定められた配置に当てはまる画像(以下、入力画像という)を管理するクラスである。具体的には、入力画像クラス1014は、上述した入力ドキュメントクラス1011のサブクラスのオブジェクトで生成された入力ドキュメントから入力画像となる範囲の画像の実体を読み込み、保持する。また、入力画像クラス1014は、属性として読み込んだ画像の実体を特定する情報を有し、操作として開始()1014aを有する。なお、かかる入力画像クラス1014を実体化したオブジェクトが生成されると、読み込んだ画像の実体を特定する情報がRAM12b上に展開されるので、これらのデータ(属性)の書き込みおよび読み出しをすることが可能となる。
入力画像は、入力レイアウトに当てはめられる画像をいい、所定のサイズの画像、本実施の形態ではドキュメントハンドリングの最小単位に分割された画像となる。ドキュメントハンドリングの最小単位とは、1ページとして構成することが可能な領域をいい、例えば特殊な設定を行っていない場合であれば1ページ全体の領域が入力画像となり、「2 in 1」に設定されている場合であれば1ページを2つに分割した各領域が入力画像となる。また、入力画像は、単なる画像のみならず、上述した領域に示された文字情報や、図形なども含まれる。
開始()1014aは、入力画像クラス1014が画像処理を開始するためのトリガーを与える処理を行う。この開始()1014aが、入力ページオブジェクト1012Aから呼び出された場合に、引数として受け渡された入力レイアウト等の設定により定められる範囲の画像の実体を読み込み、読み込んだ画像の実体を特定する情報を属性として書き込み、さらに入力画像に対応したユーザ画像を管理するユーザ画像オブジェクト1005Aを生成する。
ユーザ画像クラス1005は、入力画像から生成された加工処理の対象となるユーザ画像を管理し、出力画像を生成するための加工処理を行うクラスである。具体的にはユーザ画像クラス1005は、属性として生成されたユーザ画像を特定する情報を有し、操作として作成1005a及び利用1005bを有する。なお、かかるユーザ画像クラス1005を実体化したオブジェクトが生成されると、作成された画像を特定する情報がRAM12b上に展開されるので、これらのデータ(属性)の書き込みおよび読み出しをすることが可能となる。
また、ユーザ画像は加工処理の対象となる画像をいい、所定のサイズの画像、本実施の形態ではドキュメントハンドリングの最小単位に分割された画像となる。ドキュメントハンドリングの最小単位は入力画像で説明したので省略する。ユーザ画像は、単なる画像のみならず、ユーザ画像として所定サイズの領域に示された文字情報や、図形なども含まれる。
作成()1005aは、入力画像クラス1014から呼び出され、ユーザ画像クラス1005が対応する入力画像に基づいてユーザ画像を生成する処理を行う。この作成()1005aが、入力画像オブジェクト1014Aから呼び出された場合に、入力画像の実体を読み込み、読み込んだ画像をユーザ画像としてこの画像の実体を特定にする情報を属性に書き込む。
利用()1005bは、後述する出力画像クラス1024から呼び出され、作成()1005aで読み込んだ画像の実体を出力形式に適するように加工処理を行った後、出力画像クラス1024に送信し、出力画像を生成する。加工処理の例としては、1枚毎に入力処理された原稿を「2 in 1」で出力したい場合、ユーザ画像を縮小する処理を行う等が考えられる。
出力ドキュメントクラス1021は、出力先によらず共通する予め定めたフォーマット、換言すると出力画像と出力レイアウトを組み合わせた出力ページで構成される出力ドキュメントを生成し、出力先に出力処理を行うクラスである。出力先とは、例えばプロッタ、プリンタ、ネットワークを介して接続された機器、FAX送信あるいはローカルストレージ等の出力手段が考えられる。この出力ドキュメントクラス1021は、出力ネットドキュメントクラス1025、出力紙ドキュメントクラス1026及び出力LSドキュメントクラス1027の上位クラス(スーパークラス)であり、出力ドキュメントクラス1021自体が実体化されることはないが、出力ドキュメントクラス1021の属性および操作は、下位クラス(サブクラス)である出力ネットドキュメントクラス1025、出力紙ドキュメントクラス1026及び出力LSドキュメントクラス1027に継承される。具体的には出力ドキュメントクラス1021は、属性としてページ数1021aを、操作として開始()1021bを有する。
ページ数1021aは、出力処理された出力ドキュメントのページ数を保持する。出力ドキュメントのページ数は、複合機1に対して行った出力する際の設定及びユーザドキュメントオブジェクト1002Aが保持するユーザ画像の数から求めることができる。具体的には後述する開始()1021bが呼び出された際に、引数として受け渡されたユーザ画像の数や、出力する際の設定より定められる出力レイアウト等からページ数が求められて、ページ数1021aに設定される。例えばシーケンシャルに処理を行う場合で、ユーザドキュメントオブジェクト1002Aが保持するユーザ画像の数が4枚であり、ユーザが「2in1」で出力するように設定していた場合、ページ数1021aは‘2’と設定される。また、出力ドキュメントクラス1021はページ数だけ出力ページオブジェクト1022Aを生成する。また、ページ数1021aは、パラレルに処理を行う場合、入力処理により入力ページの数が増加する毎に、必要なページ数が追加される。
開始()1021bは、出力ドキュメントクラス1021が文書処理を開始するためのトリガーを与える処理をおこなう。この開始()1021bは、サブクラスである出力ネットドキュメントクラス1025、出力紙ドキュメントクラス1026及び出力LSドキュメントクラス1027に継承され、各サブクラスにおける具体的な処理によりオーバーライド(override)される。なお、かかる具体的な処理の説明については、後述する出力ネットドキュメントクラス1025、出力紙ドキュメントクラス1026及び出力LSドキュメントクラス1027の説明でおこなう。
出力ネットドキュメントクラス1025は、出力ドキュメントクラス1021のサブクラスであり、出力ドキュメントの出力先にネットワークを介して接続し、出力ページオブジェクト1022Aに対して出力ドキュメントの出力ページ毎に出力処理する指示を行うクラスである。また、出力ネットドキュメントクラス1025は、出力先毎に異なるプロトコル、例えばFAX送信、メール送信あるいはファイルの転送等の違いに応じて、通信を制御するよう実行制御部213に指示し、さらに通信方式に応じた出力ドキュメントのフォーマットを用意し、出力ドキュメントを出力先に応じたフォーマットで整形して出力する処理を行う。このフォーマットはFAX送信等の通信で通常用いられている周知のフォーマットとする。
具体的には、この出力ネットドキュメントクラス1025は、出力ドキュメントクラス1021から、属性としてページ数1021aを、操作として開始()1021bを承継する。さらに、出力ネットドキュメントクラス1025は、属性として、ネットワークを介して出力処理を行うために必要な仕様及び設定を保持するが、図10では省略する。なお、かかる出力ネットドキュメントクラス1025を実体化したオブジェクトが生成されると、属性として保持する出力処理を行うために必要な仕様且つ設定及びページ数1021aはRAM12b上に展開されるので、これらのデータ(属性)の書き込みおよび読み出しをすることが可能となる。
出力ドキュメントクラス1021から承継した開始()1021bは、出力処理を開始するためのトリガーであり、ユーザドキュメントオブジェクト1002Aから呼び出された場合、出力ネットドキュメントクラス1025が出力先にネットワークを介して接続し、予め生成されたユーザ画像を利用して出力先に応じたフォーマットで整形した出力ドキュメントを生成して出力する制御を行う。
また、出力ネットドキュメントオブジェクト1025Aは、開始()1021bの引数として受け渡された情報よりネットワークを介した出力先を特定し、実行制御部213を介して利用できるFAX送受信制御部102eやネットワーク通信制御部102fを用いてネットワークへ接続し、出力先にこれから出力する出力文書の登録等の処理を行うことで、後述する出力ページクラス1022や出力画像クラス1024が出力する出力文書を構成するための情報、例えば出力レイアウトや出力画像等を出力先に出力することを可能とする。
出力紙ドキュメントクラス1026は、出力ドキュメントクラス1021のサブクラスであり、プロッタ151bを制御して、出力ページオブジェクト1022Aに出力ドキュメントの出力ページ毎に出力処理する指示を行うクラスである。また、出力紙ドキュメントクラス1026は、実行制御部213にプロッタ151bを制御して出力するよう指示すると共に、プロッタ151bで出力するために適したフォーマットを用意し、出力ドキュメントを用意したフォーマットを利用して出力する処理を行う。
具体的には、この出力紙ドキュメントクラス1026は、出力ドキュメントクラス1021から、属性としてページ数1021aを、操作として開始()1021bを承継する。さらに、出力紙ドキュメントクラス1026は、属性として、プロッタ151bから原稿を出力するための設定及び仕様を保持するが、図10では省略する。なお、かかる出力紙ドキュメントクラス1026を実体化したオブジェクトが生成されると、属性として原稿を出力するための設定及び仕様及びページ数1011aはRAM12b上に展開されるので、これらのデータ(属性)の書き込みおよび読み出しをすることが可能となる。
出力ドキュメントクラス1021から承継した開始()1021bは、出力処理を開始するためのトリガーであり、ユーザドキュメントオブジェクト1002Aから呼び出された場合に出力紙ドキュメントクラス1026がプロッタ151bで印刷するためのフォーマットを利用して出力ドキュメントを出力する制御を行う。
また、出力紙ドキュメントクラス1026は、開始()1021bが呼び出された場合、印刷する際に、実行制御部213を介して利用できるプロッタ制御部102bでプロッタ151bに対して出力する制御を行う。また、出力ページオブジェクト1022Aに対して、印刷に適したレイアウト及び出力画像の配置を定める旨を指示する。これにより媒体の特性あるいはプロッタ151bによる原稿のハンドリングモードの違いにかかわらず共通した加工処理を行うことができる。さらに、出力紙ドキュメントクラス1026は、ユーザにより入力された設定に基づいて、紙の表のみ、あるいは表裏に印刷するか決定し、決定に従うようにプロッタ151bを制御する指示を行う。
出力LSドキュメントクラス1027は、出力ドキュメントクラス1021のサブクラスであり、ハードディスク等のローカルストレージ内の保存場所を定め、出力ページオブジェクト1022Aに対して出力ドキュメントの出力ページ毎に出力処理する指示を行うクラスである。なお、ローカルストレージ内に出力ドキュメントを保存する際の電子文書のフォーマットに制限を設けるものではない。
具体的には、この出力LSドキュメントクラス1027は、出力ドキュメントクラス1021から、属性としてページ数1021aを、操作として開始()1021bを承継する。さらに、出力LSドキュメントクラス1027は、属性として、ローカルストレージに保存するための設定及び仕様を保持するが、図10では省略する。なお、かかる出力LSドキュメントクラス1027を実体化したオブジェクトが生成されると、属性としてローカルストレージに保存するための設定及び仕様及びページ数1021aはRAM12b上に展開されるので、これらのデータ(属性)の書き込みおよび読み出しをすることが可能となる。
出力ドキュメントクラス1021から承継した開始()1021bは、出力処理を開始するためのトリガーであり、ユーザドキュメントオブジェクト1002Aから呼び出された場合に出力LSドキュメントクラス1027がローカルストレージの保存場所を特定し、保存する電子文書のファイル名等を登録し、予め生成されたユーザ画像を利用して保存する際のフォーマットで整形した出力ドキュメントを生成して出力する制御を行う。
また、出力LSドキュメントクラス1027Aは、開始()1021bの引数として受け渡された情報より保存先及び電子文書のファイル名を特定し、実行制御部213を介して利用できる蓄積制御部102cを用いてローカルストレージの保存場所に出力文書の登録等の処理を行うことで、後述する出力ページクラス1022や出力画像クラス1024から出力文書に関する情報、例えば出力レイアウトや出力画像等の出力を可能にする。
出力ページクラス1022は、出力ドキュメントクラス1021で生成される出力ドキュメントを構成する各ページを出力ページとして生成し、レイアウト等のページ毎の設定を出力先に出力するクラスである。出力ページクラス1022は、後述する出力レイアウトオブジェクト1023A及び出力画像オブジェクト1024Aを生成し、出力レイアウトに出力画像を当てはめた構成として出力ページを生成する。
具体的には、この出力ページクラス1022は、属性としてページ番号1022aを有し、操作として開始()1022bを有する。なお、かかる出力ページクラス1022を実体化したオブジェクトが生成されると、属性としてページ番号1022aがRAM12b上に展開されるので、これらのデータ(属性)の書き込みおよび読み出しをすることが可能となる。
ページ番号1022aは、この出力ページオブジェクト1022Aが生成するページを示す番号を保持する。つまり出力ドキュメントオブジェクト1021Aが保持するページ数1011aだけ出力ページオブジェクト1022Aを生成するので、出力ページオブジェクト1022Aが割り振られたページを特定するためにページ番号1012aを保持することとなる。
開始()1022bは、出力ページクラス1022がページ処理を開始するためのトリガーを与える処理を行う。この開始()1022bが、出力ネットドキュメントオブジェクト1025A等の出力ドキュメントクラス1021のサブクラスのオブジェクトから呼び出された場合に、引数として受け渡されたページ番号及びユーザにより受け付けられた設定より定められるページの情報を取得し、取得したページの情報に基づいて出力レイアウトオブジェクト1023A及び出力画像オブジェクト1024Aを生成する。
また、出力ページクラス1022は、開始()1022bが呼び出された場合、出力ドキュメントクラス1021が管理する出力ドキュメントから該当するページの情報(以下、出力ページとする)を取得することで生成した出力レイアウトオブジェクト1023Aを用いて出力レイアウト等のページ毎の設定を出力先に出力し、その後出力レイアウトに当てはめる出力画像を保持する出力画像オブジェクト1024Aを生成する。
出力レイアウトクラス1023は、出力ページクラス1022で生成される入力ページに出力画像を当てはめるために用いられるレイアウト(以下、出力レイアウトという)を作成して管理するクラスである。具体的には、この出力レイアウトクラス1023は、属性として外枠や内枠あるいはオフセット位置などの情報を有するが図10では省略する。また、出力レイアウトクラス1023は、操作として作成()1023aを有する。なお、かかる出力レイアウトクラス1023を実体化したオブジェクトが生成されると、属性として外枠や内枠あるいはオフセット位置などの情報がRAM12b上に展開されるので、これらのデータ(属性)の書き込みおよび読み出しをすることが可能となる。
作成()1023aは、出力レイアウトオブジェクト1023Aが出力ページに出力画像を適した位置に配置するために設定する処理を行う。この作成()1023aが、出力ページオブジェクト1022Aから呼び出された場合に、引数として受け渡された情報から、属性として有する外枠や内枠あるいはオフセット位置を設定する。この設定により出力ページ内の出力画像の数が決定される。これにより、出力ページに出力画像というドキュメントハンドリングの最小単位を当てはめることが可能となる。
出力画像クラス1024は、出力ページに対して出力レイアウトにより定められた配置に当てはまる画像(以下、出力画像という)を生成して出力するクラスである。具体的には、出力画像クラス1024は、上述したユーザ画像オブジェクト1005Aで生成されたユーザ画像に基づいて生成された出力先に適したフォーマットの出力画像を取得する。また、出力画像クラス1024は、属性として出力画像を保持するための情報を有し、操作として開始()1024aを有する。なお、かかる出力画像クラス1024を実体化したオブジェクトが生成されると、出力画像を保持するための情報がRAM12b上に展開されるので、これらのデータ(属性)の書き込みおよび読み出しをすることが可能となる。
また、出力画像とは、出力レイアウトに当てはめる画像をいい、上述した入力画像及びユーザ画像と同様に、出力画像は所定のサイズの画像、本実施の形態ではドキュメントハンドリングの最小単位に分割された画像となる。また、出力画像は、単なる画像のみならず、出力レイアウトにより定められた枠内に表示される文字情報や、図形なども含まれる。
開始()1024bは、出力画像クラス1024が画像処理を開始するためのトリガーを与える処理を行う。この開始()1024bが、出力ページオブジェクト1022Aから呼び出された場合に、引数として受け渡される情報より、対応するユーザ画像を特定し、ユーザ画像オブジェクト1005Aの利用()1005bを呼び出すことで、ユーザ画像から出力レイアウトに当てはまるよう加工処理された出力画像を受信し、受信した出力画像を出力先に出力する。
図11は、本実施の形態のドキュメントハンドリング部212において「2 in 1」の入力ドキュメントから「4 in 1」の出力ドキュメントを生成するまでの工程を示した説明図である。本図に示すように、ドキュメントハンドリング部212は、ドキュメントをページ毎にレイアウトとレイアウトに当てはめる画像の組み合わせを用いることで画像単位での加工処理が容易になった。
次に、図10に戻り、各クラス間の関係について説明する。本図に示したように、各クラスを示す矩形を結ぶ直線は、その両端のクラス間に関係があることを表しており、この直線の両端付近の文字はクラスの役割を、数字はクラスの多重度をそれぞれ示している。ここで、役割とは、かかる直線の両端における、一方のクラスからみた、もう一方のクラスの役割や立場のことであり、多重度とは、かかる直線の両端のクラスから生成されるオブジェクト数の対応関係のことである。
たとえば、ドキュメント操作スケジューラクラス1001からみたユーザドキュメントクラス1002の役割は「要求」であり、ユーザドキュメントクラス1002からみたドキュメント操作スケジューラクラス1001の役割は「受付」であり、ドキュメント操作スケジューラクラス1001の多重度は「1」であり、ユーザドキュメントクラス1002の多重度は「1..*」である。ここで、「1..*」は、かかるユーザドキュメントクラス1002の多重度が、1から上限数なしの範囲であることを示している。また、たとえば、「1..3」の記載をした場合には、かかるクラスの多重度が、1〜3の範囲であることを示す。
そして、本図に示したように、ドキュメントハンドリング部212が実行される場面において、ドキュメント操作スケジューラクラス1001をRAM12b上に展開(実体化)したオブジェクトは1個だけ存在し、このドキュメント操作スケジューラクラス1001の文書処理の要求対象となるユーザドキュメントクラス1002を実体化したオブジェクトは0個以上、上限数なしの範囲で存在する。
次に、ユーザドキュメントクラス1002と入力ドキュメントクラス1011とのクラス関係について説明する。入力ドキュメントクラス1011は、ユーザドキュメントクラス1002からみるとユーザドキュメントを生成するために用いられる入力文書としての役割を有しており、一方、ユーザドキュメントクラス1002は、入力ドキュメントクラス1011からみると加工処理が行われるユーザ文書としての役割を有している。このようなクラス関係により入力された文書から加工対象となる対象となるユーザ文書を生成することが可能となる。
また、ユーザドキュメントクラス1002は、ユーザからの要求毎に生成されるものであるのに対して、入力ドキュメントクラス1011は、ユーザ文書を生成する際に必要な文書の数に応じて生成されて入力処理を行うクラスであるため、ユーザドキュメントクラス1002と入力ドキュメントクラス1011とは1対多の関係を有する。1つのユーザドキュメントを生成する際に複数の入力文書を入力処理する場合とは、例えば、ファックス受信文書と予め蓄積していた電子文書を1つにまとめて印刷するよう要求があった場合等が考えられる。また、このように「紙」文書と「ネット」文書のように入力元が異なる文書を1つにまとめて出力したい場合でも良いし、二つの「ネット」文書のように入力元が同じ複数の入力文書を1つにまとめて出力したい場合でも良い。
次に、入力ドキュメントクラス1011と、入力ネットドキュメントクラス1015、入力紙ドキュメントクラス1016及び入力LSドキュメントクラス1017の関係について説明する。入力ドキュメントクラス1011は、入力ネットドキュメントクラス1015、入力紙ドキュメントクラス1016及び入力LSドキュメントクラス1017の上位クラス(スーパークラス)であり、入力ネットドキュメントクラス1015、入力紙ドキュメントクラス1016及び入力LSドキュメントクラス1017は、入力ドキュメントクラス1011の属性および操作を継承する。
また、入力ドキュメントクラス1011と入力ページクラス1012の関係について説明する。入力ページクラス1012は、入力ドキュメントクラス1011が保持するドキュメントのページ毎に生成されるものである。このため、入力ページクラス1012は、入力ドキュメントクラス1011からみるとページとしての役割を有しており、一方、入力ドキュメントクラス1011は、入力ページクラス1012からみると文書としての役割を有している。
また、入力ドキュメントクラス1011は、入力処理される入力文書毎に生成されるものであるのに対して、入力ページクラス1012はページ毎に生成されるクラスであるため、入力ドキュメントクラス1011と入力ページクラス1012とは1対多の関係を有する。また、入力ページクラス1012は、入力ドキュメントクラス1011に集約される関係を有する。
次に、入力ページクラス1012と入力レイアウトクラス1013との関係について説明する。入力ページクラス1012は、ページ毎に生成されるものであり、入力レイアウトクラス1013は、ページ毎に定められるレイアウトである。つまり、入力レイアウトクラス1013は、入力ページクラス1012からみるとページ毎の枠としての役割を有しており、一方、入力ページクラス1012は、入力レイアウトクラス1013からみるとページとしての役割を有している。このような関係である以上、入力ページクラス1012と入力レイアウトクラス1013は1対1の関係となる。
また、入力ページクラス1012と入力画像クラス1014の関係について説明する。入力画像クラス1014は、入力ページクラス1012が保持するページのレイアウトに従って分割された領域毎に生成されるものである。このため、入力画像クラス1014は、入力ページクラス1012からみるとページが有する枠に当てはめられる枠内構成物としての役割を有しており、一方、入力ページクラス1012は、入力画像クラス1014からみるとページとしての役割を有している。
また、入力ページクラス1012は、入力ドキュメントのページ毎に生成されるものであるのに対して、入力画像クラス1014はページが有するレイアウトに従って分割された数だけ生成されるクラスであるため、入力ページクラス1012と入力画像クラス1014とは1対多の関係を有する。また、入力画像クラス1014は、入力ページクラス1012に集約される関係を有する。
次に、入力画像クラス1014とユーザ画像クラス1005との関係について説明する。入力画像クラス1014はページが有する枠に従って分割された数だけ生成されるものであり、ユーザ画像クラス1005は入力画像に基づいて加工対象として作成されるものである。つまり、ユーザ画像クラス1005は、入力画像クラス1014からみると作成物としての役割を有しており、一方、入力画像クラス1014は、ユーザ画像クラス1005からみると入力物としての役割を有している。
また、ユーザ画像クラス1005は、入力画像クラス1014に基づいて生成されるものであり、入力画像クラス1014及びユーザ画像クラス1005ともにドキュメントハンドリングの最小単位で分割したものであるため、入力画像クラス1014とユーザ画像クラス1005とは1対1の関係を有する。
次に、ユーザドキュメントクラス1002と、ユーザドキュメントパラレルクラス1003及びユーザドキュメントシーケンシャルクラス1004の関係について説明する。ユーザドキュメントクラス1002は、ユーザドキュメントパラレルクラス1003及びユーザドキュメントシーケンシャルクラス1004の上位クラス(スーパークラス)であり、ユーザドキュメントパラレルクラス1003及びユーザドキュメントシーケンシャルクラス1004は、ユーザドキュメントクラス1002の属性および操作を継承する。
また、ユーザドキュメントクラス1002とユーザ画像クラス1005の関係について説明する。ユーザ画像クラス1005は、ユーザドキュメントクラス1002が保持するユーザドキュメントを構成するハンドリングの最小単位となる画像毎に生成されるものである。このため、ユーザ画像クラス1005は、ユーザドキュメントクラス1002からみると構成物としての役割を有しており、一方、ユーザドキュメントクラス1002は、ユーザ画像クラス1005からみると文書としての役割を有している。
また、ユーザ画像クラス1005は、文書を構成する画像毎に生成されるものであるのに対して、ユーザドキュメントクラス1002は文書毎に生成されるクラスであるため、ユーザドキュメントクラス1002とユーザ画像クラス1005とは1対多の関係を有する。また、ユーザ画像クラス1005は、ユーザドキュメントクラス1002に集約される関係を有する。
次に、ユーザドキュメントクラス1002と出力ドキュメントクラス1021とのクラス関係について説明する。出力ドキュメントクラス1021は、ユーザドキュメントクラス1002からみるとユーザの要求に応じた出力形式で出力される出力文書としての役割を有しており、一方、ユーザドキュメントクラス1002は、出力ドキュメントクラス1021からみるとユーザ文書としての役割を有している。このようなクラス関係により加工対象となるユーザ文書から出力文書を生成することが可能となる。
また、ユーザドキュメントクラス1002は、ドキュメント操作スケジューラクラス1001から文書処理毎に生成されるものであり、出力ドキュメントクラス1021は、ユーザの要求に応じた文書毎に生成されるものであり、1つの文書処理要求に基づいて複数の文書を出力することは当然可能である。つまり、ユーザドキュメントクラス1002とユーザ画像クラス1005とは1対多の関係を有する。1つの文書処理要求に基づいて複数の文書を出力する場合とは、例えばユーザがスキャナで読み込んだ文書を「印刷+蓄積」する旨の設定を行った場合等が考えられる。
次に、出力画像クラス1024とユーザ画像クラス1005との関係について説明する。出力画像クラス1024は、出力ページが有する枠に当てはめられる数だけ、ユーザ画像を利用して生成されるものである。つまり、出力画像クラス1024は、ユーザ画像クラス1005からみると出力物としての役割を有しており、一方、ユーザ画像クラス1005は、出力画像クラス1024からみると利用物としての役割を有している。
また、出力画像クラス1024は、ユーザ画像クラス1005に基づいて生成されるものであり、出力画像クラス1024及びユーザ画像クラス1005ともにドキュメントハンドリングの最小単位で分割したものである。また、1つのユーザ画像を複数の出力文書毎に利用される場合や、1つの出力文書中に1つのユーザ画像を複数利用する場合も考えられる。このため、ユーザ画像クラス1005と出力画像クラス1024とは1対多の関係を有する。
また、出力ドキュメントクラス1021と、出力ネットドキュメントクラス1025、出力紙ドキュメントクラス1026及び出力LSドキュメントクラス1027の関係は、入力ドキュメントクラス1011と、入力ネットドキュメントクラス1015、入力紙ドキュメントクラス1016及び入力LSドキュメントクラス1017の関係と同様であるため説明を省略する。
また、出力ドキュメントクラス1021と出力ページクラス1022の関係は入力ドキュメントクラス1011と入力ページクラス1012の関係と、出力ページクラス1022と出力レイアウトクラス1023の関係は入力ページクラス1012と入力レイアウトクラス1013の関係と、出力ページクラス1022と出力画像クラス1024の関係は入力ページクラス1012と入力画像クラス1014の関係と同様であるため説明を省略する。
このように、ドキュメント操作スケジューラクラス1001、入力ドキュメントクラス1011、入力ページクラス1012、入力レイアウトクラス1013、入力画像クラス1014、入力ネットドキュメントクラス1015、入力紙ドキュメントクラス1016、入力LSドキュメントクラス1017、ユーザドキュメントクラス1002、ユーザドキュメントパラレルクラス1003、ユーザドキュメントシーケンシャルクラス1004、ユーザ画像クラス1005、出力ドキュメントクラス1021、出力ページクラス1022、出力レイアウトクラス1023、出力画像クラス1024、出力ネットドキュメントクラス1025、出力紙ドキュメントクラス1026、出力LSドキュメントクラス1027の各オブジェクトは、相互に関連し合い、協調することによりドキュメントハンドリング部212に必要な機能を実現することが可能となる。
次に、図10に示した各クラスの操作の実行手順について例をあげて説明する。図12は、ドキュメントハンドリング部212が紙文書を読み込んでネットワーク上のコンピュータに送信するまでの文書処理をシーケンシャルに実行する場合の手順を示すUMLシーケンス図である。
ここで、UMLシーケンス図について説明しておく。図12の上部に並んだ矩形は、それぞれがクラスのオブジェクトを示している。各オブジェクトから下方に伸びた線は、各オブジェクトが生存していることを示す線(ライフライン)であり、上方から下方に向かって時間が流れているものとみなされる。この線上に存在する細長い矩形は、当該のオブジェクトが実際に活動している期間(活性期間)を示す。
各ライフラインの間を結ぶ横向きの矢印は、オブジェクトに含まれる操作の実行を示す。具体的には、この矢印は、矢印の元のオブジェクトが、矢印の先のオブジェクトに含まれる操作を呼び出すことを示す。また、矢印が自分自身のオブジェクトを指している場合は、オブジェクトが自分に含まれる操作を自身で呼び出すことを意味する。
図12に示すように、ユーザが複合機1を操作して、紙文書をネットワーク上のコンピュータに送信する旨を入力すると、操作系サブシステム201は、ユーザが入力した上述した文書処理を行う旨のリクエストをドキュメント操作スケジューラオブジェクト1001Aに登録する(ステップS1201)。具体的には、操作系サブシステム201からの要求をリクエスト管理部211がリクエスト要求として受け付ける。そして、リクエスト管理部211が文書の処理先にリクエストを登録するためにドキュメントハンドリング部212のドキュメント操作スケジューラオブジェクト1001Aの登録()1001aを呼び出す。
ドキュメント操作スケジューラオブジェクト1001Aは、登録()1001aの引数として受け渡された情報から並行処理を行うか、逐次処理を行うか判断し、判断結果に基づいてユーザドキュメントシーケンシャルクラス1004及びユーザドキュメントパラレルクラス1003のどちらのオブジェクトを生成するか決定する(ステップS1202)。なお、本シーケンシャル図では、受け渡された情報から逐次処理と判断されたこととする。また、生成は、すべてのオブジェクトが有する操作であり、生成することで各オブジェクトはRAM12b上に実体化される。
そして、ドキュメント操作スケジューラオブジェクト1001Aは、開始()1002aを呼び出して、生成されたユーザドキュメントシーケンシャルオブジェクト1004Aに対して文書処理の開始を要求する(ステップS1203)。
文書処理の開始が要求されたユーザドキュメントシーケンシャルオブジェクト1004Aは、逐次処理()1004aを呼び出して、逐次処理を行うために必要な設定を行う(ステップS1204)。次に、ユーザドキュメントシーケンシャルオブジェクト1004Aは、開始()1002aで引数として受け渡された情報から入力元を特定し、入力先に応じた入力ドキュメントクラス1011のサブクラスを生成する(ステップS1205)。本シーケンス図で示す例では、入力元が紙文書の場合とし、生成されるオブジェクトは、入力ドキュメントクラス1011のサブクラスである入力紙ドキュメントクラス1016のオブジェクトとなる。
次に、ユーザドキュメントシーケンシャルオブジェクト1004Aは、生成された入力紙ドキュメントオブジェクト1016Aの開始()1011bを呼び出して、入力紙ドキュメントオブジェクト1016Aに対して紙文書の入力処理の開始を要求する(ステップS1206)。
入力紙ドキュメントオブジェクト1016Aは、要求に応じて実行制御部213を通じてスキャナ151aを制御し、紙文書を読み込んで入力処理を開始する。そして、入力紙ドキュメントオブジェクト1016Aは、読み込んだ紙文書のページ毎に入力ページオブジェクト1012Aを生成し、生成された入力ページオブジェクト1012Aの開始()1012bを呼び出して、読み込んだ紙文書のページ毎の入力処理の開始を要求する(ステップS1207)。
次に、入力ページオブジェクト1012Aは、ページの入力処理を開始し、まず入力レイアウトオブジェクト1013Aを生成し、生成された入力レイアウトオブジェクト1013Aの作成()1013aを呼び出して、ユーザにより入力された設定に基づいて、生成された入力レイアウトオブジェクト1013Aの属性を設定する(ステップS1208)。そして、入力レイアウトオブジェクト1013Aは、ページ毎に定められる入力画像の配置及び数等のレイアウトに関する情報を、入力ページオブジェクト1012Aにメッセージとして送信する。
そして、入力ページオブジェクト1012Aは、入力レイアウトオブジェクト1013Aにより定められる入力ページ毎の入力画像の数だけ、入力画像オブジェクト1014Aを生成し、生成された入力画像オブジェクト1014Aの開始()1014aを呼び出して、入力画像オブジェクト1014Aに入力画像の入力処理の開始を要求する(ステップS1209)。
次に、入力画像オブジェクト1014Aは、スキャナ151aを用いて入力処理された入力ドキュメントから、入力レイアウトにより定められた領域から入力画像の実体を入力処理する(ステップS1210)。そして、入力画像オブジェクト1014Aは、入力画像に対応するユーザ画像を保持するユーザ画像オブジェクト1005Aを生成し、生成されたユーザ画像オブジェクト1005Aの作成()1005aを呼び出す(ステップS1211)。そして、ユーザ画像オブジェクト1005Aは、入力画像オブジェクト1014Aで入力処理された入力画像の実体に基づいてユーザ画像を作成する。このステップS1209〜ステップS1211までの処理はページ内に当てはめられる入力画像の数だけ繰り返す。
そして、入力紙ドキュメントオブジェクト1016Aは、次原稿有無確認()10116bを呼び出して、スキャナ151aに対して紙文書の次の原稿があるか否か確認する(ステップS1212)。次の原稿がある場合は、再び入力ページオブジェクト1012Aを生成してステップS1207から開始する。次の原稿がない場合、入力紙ドキュメントオブジェクト1016Aは、ユーザドキュメントシーケンシャルオブジェクト1004Aの入力処理が終了した旨のメッセージを送信して終了する。
次に、ユーザドキュメントシーケンシャルオブジェクト1004Aは、ステップS1203の開始()1002aで引数として受け渡された情報から出力先を特定し、出力先に応じた出力ドキュメントクラス1021のサブクラスを生成する(ステップS1213)。本シーケンス図で示す例では、出力先がネットワーク上のコンピュータの場合とし、生成されるオブジェクトは、出力ドキュメントクラス1021のサブクラスである出力ネットドキュメントクラス1025のオブジェクトとなる。
次に、ユーザドキュメントシーケンシャルオブジェクト1004Aは、生成された出力ネットドキュメントオブジェクト1025Aの開始()1021bを呼び出して、出力ネットドキュメントオブジェクト1025Aに対してネットワーク上のコンピュータに電子文書の出力処理の開始を要求する(ステップS1214)。この開始()1021bで呼び出された際に、出力ネットドキュメントオブジェクト1025Aのページ数1021aが設定される。
そして、出力ネットドキュメントオブジェクト1025Aは、要求に応じて実行制御部213を通じて利用できるネットワーク通信制御部102fを用いてネットワークを介して出力先のコンピュータに接続する(ステップS1215)。さらに、出力ネットドキュメントオブジェクト1025Aは、接続されたコンピュータに出力する電子文書のファイル名等を送信して、接続されたコンピュータに電子文書を登録する(ステップS1216)。
そして、出力ネットドキュメントオブジェクト1025Aは、ページ数1021aの数だけ出力ページオブジェクト1022Aを生成し、生成された出力ページオブジェクト1022Aの開始()1022bを呼び出して、電子文書のページ毎の出力処理の開始を要求する(ステップS1217)。
次に、出力ページオブジェクト1022Aは、ページの出力処理を開始する。まずは、ユーザにより入力された形式で出力するために、出力レイアウトオブジェクト1023Aを生成し、生成された出力レイアウトオブジェクト1023Aの作成()1023aを呼び出し、ユーザにより入力された形式で出力するために最適な属性値を、生成された出力レイアウトオブジェクト1023Aの属性に設定する(ステップS1218)。そして、出力レイアウトオブジェクト1023Aは、当てはめられる出力画像の数やレイアウトについて出力先のコンピュータに送信する情報を、出力ページオブジェクト1022Aにメッセージとして送信する。そして、出力ページオブジェクト1022Aは、出力ページの必要な情報を接続先のコンピュータに送信して、ページ登録を行う(ステップS1219)。
そして、出力ページオブジェクト1022Aは、出力レイアウトオブジェクト1023Aにより定められる出力ページに当てはめられる出力画像の数だけ、出力画像オブジェクト1024Aを生成し、生成された出力画像オブジェクト1024Aの開始()1014aを呼び出して、出力画像オブジェクト1024Aに出力画像の出力処理の開始を要求する(ステップS1220)。
次に、出力画像オブジェクト1024Aは、開始()1014aの引数として受け渡された情報、例えばページ番号やページ内で何番目の出力画像か等の情報により対応関係が特定されるユーザ画像オブジェクト1005Aの利用()1005bを呼び出す(ステップS1221)。そして、ユーザ画像オブジェクト1005Aは、保持する画像の実体を、出力レイアウトに当てはまるよう拡大あるいは縮小などの加工処理を行った後に、呼び出しを行った出力画像オブジェクト1024Aに送信する(ステップS1222)。
そして、出力画像オブジェクト1024Aは、受信した出力画像の実体を、出力先のコンピュータに出力する(ステップS1223)。このステップS1220〜ステップS1223までの処理はページ内に当てはめられる出力画像の数だけ繰り返す。
そして、出力ネットドキュメントオブジェクト1025Aは、ページ数だけ生成した出力ページオブジェクト1022Aで全ての出力処理が終了した場合は、出力先のコンピュータに出力処理が全て終了したことを示す情報を送信した後、コンピュータとの通信を切断する(ステップS1224)。そして、ユーザドキュメントシーケンシャルオブジェクト1004Aが文書処理を終了した旨のメッセージをドキュメント操作スケジューラオブジェクト1001Aに送信して終了する。
次に、図10に示した各クラスの操作の実行手順についてもう一例をあげて説明する。図13は、ドキュメントハンドリング部212が、紙文書を読み込んで印刷するまでの文書処理をパラレルに実行する場合の手順を示すUMLシーケンス図である。
図13に示すように、ユーザが複合機1を操作して、紙文書をプロッタから印刷する旨を入力すると、操作系サブシステム201は、ユーザが入力した上述した文書処理を行う旨のリクエストをドキュメント操作スケジューラオブジェクト1001Aに登録する(ステップS1301)。具体的な処理は図12のステップS1201と同様とする。そして、ドキュメント操作スケジューラオブジェクト1001Aは、登録()1001aの引数として受け渡された情報から並行処理を行うか、逐次処理を行うか判断し、判断結果に基づいてユーザドキュメントシーケンシャルクラス1004及びユーザドキュメントパラレルクラス1003のどちらのオブジェクトを生成するか決定する(ステップS1302)。なお、本シーケンシャル図では、受け渡された情報から並行処理と判断されたこととする。
そして、ドキュメント操作スケジューラオブジェクト1001Aは、開始()1002aを呼び出して、生成されたユーザドキュメントパラレルオブジェクト1003Aに対して文書処理の開始を要求する(ステップS1303)。
文書処理の開始が要求されたユーザドキュメントパラレルオブジェクト1003Aは、並行処理()1003aを呼び出して、並行処理を行うために必要な設定を行う(ステップS1304)。次に、ユーザドキュメントパラレルオブジェクト1003Aは、開始()1002aで引数として受け渡された情報から入力元を特定し、入力先に応じた入力ドキュメントクラス1011のサブクラスを生成する(ステップS1305)。本シーケンス図で示す例では、入力元が紙文書の場合とし、生成されるオブジェクトは、入力ドキュメントクラス1011のサブクラスである入力紙ドキュメントクラス1016のオブジェクトとなる。
次に、ユーザドキュメントパラレルオブジェクト1003Aは、生成された入力紙ドキュメントオブジェクト1016Aの開始()1011bを呼び出して、入力紙ドキュメントオブジェクト1016Aに対して紙文書の入力処理の開始を要求する(ステップS1306)。
次に、ユーザドキュメントパラレルオブジェクト1003Aは、ステップS1303の開始()1002aで引数として受け渡された情報から出力先を特定し、出力先に応じた出力ドキュメントクラス1021のサブクラスを生成する(ステップS1307)。本シーケンス図で示す例では、出力先としてプロッタから印刷する場合とし、生成されるオブジェクトは、出力ドキュメントクラス1021のサブクラスである出力紙ドキュメントクラス1026のオブジェクトとなる。
次に、ユーザドキュメントパラレルオブジェクト1003Aは、生成された出力紙ドキュメントオブジェクト1026Aの開始()1021bを呼び出して、出力紙ドキュメントオブジェクト1026Aにプロッタから印刷する処理の開始を要求する(ステップS1308)。この開始()1021bで呼び出された際に、出力ネットドキュメントオブジェクト1025Aのページ数1021aは‘1’となり、入力紙ドキュメントオブジェクト1016Aで紙文書の原稿が読み込まれて入力ドキュメントのページ数が増加する毎に追加していく。
そして、出力ネットドキュメントオブジェクト1025Aは、実行系サブシステム203を介してプロッタ151bが動作するか否か確認を行う(ステップS1309)。動作することが確認できなかった場合は、処理を中断する。動作することが確認できた場合は引き続き以下の処理が行われる。
そして、図12のステップS1207〜ステップS1211の処理と同様に、紙文書の読み込み処理と、読み込んだ原稿に基づいた入力ページオブジェクト1012A、入力レイアウトオブジェクト1013A及び入力画像オブジェクト1014Aを生成して、ユーザ画像オブジェクト1005Aでユーザ画像を作成するまでの処理を行う(ステップS1310〜ステップS1314)。
次に、出力紙ドキュメントオブジェクト1026Aは、作成されたユーザ画像に基づいて印刷する処理を行うため、出力ページオブジェクト1022Aを生成し、生成された出力ページオブジェクト1022Aの開始()1022bを呼び出して、紙原稿のページ毎の出力処理の開始を要求する(ステップS1315)。
次に、出力ページオブジェクト1022Aは、ページの出力処理を開始する。まずは、ユーザにより入力された形式で出力するために、出力レイアウトオブジェクト1023Aを生成し、生成された出力レイアウトオブジェクト1023Aの作成()1023aを呼び出し、ユーザにより入力された形式で出力するために最適な属性値を、生成された出力レイアウトオブジェクト1023Aの属性に設定する(ステップS1316)。そして、出力レイアウトオブジェクト1023Aは、当てはめられる出力画像の数等の情報を、出力ページオブジェクト1022Aにメッセージとして送信する。そして、出力ページオブジェクト1022Aは、出力するページの情報をプロッタ151bに送信して、ページ登録を行う(ステップS1317)。
そして、出力ページオブジェクト1022Aは、出力レイアウトオブジェクト1023Aにより定められる出力ページに当てはめられる出力画像の数だけ、出力画像オブジェクト1024Aを生成し、生成された出力画像オブジェクト1024Aの開始()1014aを呼び出して、出力画像オブジェクト1024Aに出力画像の出力処理の開始を要求する(ステップS1318)。
次に、出力画像オブジェクト1024Aは、開始()1014aの引数として受け渡された情報、例えばページ番号やページ内で何番目の出力画像か等の情報により対応関係が特定されるユーザ画像オブジェクト1005Aの利用()1005bを呼び出す(ステップS1319)。そして、ユーザ画像オブジェクト1005Aは、保持する画像の実体を、出力レイアウトに当てはまるよう拡大あるいは縮小などの加工処理を行った後に、呼び出しを行った出力画像オブジェクト1024Aに送信する(ステップS1320)。
そして、出力画像オブジェクト1024Aは、受信した画像の実体を出力文書のレイアウトに当てはまるよう縮小あるいは拡大などの加工処理を行った後、プロッタ151bに出力する(ステップS1321)。
そして、入力紙ドキュメントオブジェクト1016Aは、次原稿有無確認()10116bを呼び出して、スキャナ151aより次の原稿があるか否か確認する(ステップS1322)。次の原稿がある場合は、再び入力ページオブジェクト1012Aを生成してステップS1310から開始する。次の原稿がない場合、入力紙ドキュメントオブジェクト1016Aは、ユーザドキュメントパラレルオブジェクト1003Aの入力処理が終了した旨のメッセージを送信して終了する。
そして、ユーザドキュメントパラレルオブジェクト1003Aは、入力処理が終了した旨のメッセージを受信した場合は、文書処理を終了するための処理を行い、文書処理が終了した旨のメッセージをドキュメント操作スケジューラオブジェクト1001Aに送信して終了する。
上述した図12及び図13のシーケンス図で示したように、本実施の形態では、文書処理を行うにあたり、ドキュメント操作スケジューラクラス1001と、ユーザドキュメントシーケンシャルクラス1004と、入力ドキュメントクラス1011及びこのサブクラスと、入力ページクラス1012と、入力レイアウトクラス1013と、入力画像クラス1014と、出力ドキュメントクラス1021とこのサブクラスと、出力ページクラス1022と、出力画像クラス1024と、出力レイアウトクラス1023と、ユーザ画像クラス1005とから構成され、各クラスから生成されたオブジェクトで文書の入力処理から出力処理までを行うことでユーザの要求に応じた加工処理が容易となる。また、オブジェクト指向設計により、かかるドキュメントハンドリング部122の仕組みを構築し、図7で示したような概念に基づいてオブジェクトモデリングをおこない、文書処理に必要なクラスとして上述したクラスを用いることで、かかるドキュメントハンドリング部122を実現したので、ソフトウェア開発者やソフトウェア保守要員が、ドキュメントハンドリング部212の構成と役割を容易に把握することができるとともに、汎用性及び信頼性の高い文書処理をおこなうことができる。
なお、本実施の形態の画像形成装置で実行される文書処理プログラムは、インストール可能な形式または実行可能な形式のファイルでCD−ROM(Compact Disc Read Only Memory)、フレキシブルディスク(FD)、CD−R(CD Recordable)、DVD(Digital Versatile Disk)などのコンピュータで読み取り可能な記録媒体に記録して提供するよう構成してもよい。この場合、CPU11が上記記憶媒体から、文書処理プログラムを読み出してMEM−P12上にロードすることで、画像形成装置に、上述した各ステップ、各手段または各部を実現させる。
また、文書処理プログラムを、インターネットなどのネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するよう構成してもよい。さらに、かかる文書処理プログラムをインターネットなどのネットワーク経由で提供または配布するようにしてもよい。
上述した構成は、本発明の文書処理装置、文書処理方法及び文書処理プログラムの一例を示したものであり、上述した構成に制限するものではない。
また、本実施の形態を、ドキュメントを「紙」ドキュメント、「ネット」ドキュメント及び「LS」ドキュメントに制限するものではなく、光あるいは磁気(CD−ROM/RAM、DVD―ROM/RAM、磁気テープ、フロッピーディスク、スマートカード)、赤外線(IrDA等)、音声などでも良い。
本実施の形態のドキュメントハンドリング部212は、ユーザからの文書処理の要求を入力元及び出力先を組み合わせ(例えば紙原稿を入力処理してローカルストレージ上に出力する)で保持するため、ユーザからの複雑な要求にも柔軟に対応することが可能となる。また、入力文書と出力文書をユーザの要求により任意の組み合わせで、一又は複数選択できるため、複合機1が入出力について受け付けられる設定が増加することになる。
そして、本実施の形態のドキュメントハンドリング部212は、オブジェクト毎に分割して設計し、上述した構成を備えることとした。これによりプログラムの変更が生じた場合そのクラス等のみ変更を加えればよい。このため従来は機能が拡張されると設計者の作業量もこれに比例していたが、上述した構成を備えたことで作業量が低減される。
また、従来の文書処理を行う部分は、アプリケーション毎に設計されていたが、上述した構成を備えたことでアプリケーション毎という概念が無くなったため、設計の効率が向上した。また、アプリケーション毎に文書処理を行う場合では、出力先毎に同じ設定を行ったにもかかわらず、アプリケーション毎の処理の違いにより、出力先毎にレイアウトが異なる(より詳細な例としてはヘッダまたはフッタの間隔が異なる)文書が出力されるという問題があった。しかし、本実施の形態にかかるドキュメントハンドリング部212は、上述した構成を備えることでアプリケーション毎に処理を行うという概念が無くなったため、異なるレイアウトの文書が出力されるという問題を解消し、信頼性が向上した。
上述した構成を備えることで、入力元あるいは出力先が増加した場合、従来はアプリケーション毎に入力先あるいは出力先に関する機能を追加する必要があったが、本発明により入力元あるいは出力先に相当する入力ドキュメントクラス1011あるいは出力ドキュメントクラス1021のサブクラスを追加するだけで機能の拡張が可能となる。これにより新機能追加した場合の作業量が低減することとなる。