説明

画像形成装置、ジョブ実行方法、及びプログラム

【課題】アプリケーションの実行環境を適切に提供することのできる画像形成装置の提供を目的とする。
【解決手段】アプリケーションから要求されたジョブに対する設定情報をアプリケーションより受け付ける手段と、アプリケーションよりジョブの実行要求を受け付ける手段と、ジョブの実行要求に応じ、ジョブの設定情報に従ってジョブの実行を制御するジョブ実行制御手段と、設定情報に設定された原稿の読み取り方式及び読み取り面に従って前記原稿からの画像データの読み取りを実行させる入力物管理手段と、設定情報に基づいて判定される、画像データに基づくジョブの出力物の出力面ごとに当該出力面の出力を実行させる出力要素管理手段と、出力面ごとの出力要素管理手段を出力面の出力順に応じて束ね、ジョブ実行制御手段からの要求に応じ、束ねている出力要素管理手段に対して出力順に応じて出力面の出力の実行を要求する手段とを有する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像形成装置、ジョブ実行方法、及びプログラムに関し、特にアプリケーションから要求されたジョブを実行する画像形成装置、ジョブ実行方法、及びプログラムに関する。
【背景技術】
【0002】
特許文献1には、パイプ&フィルタアーキテクチャを採用し、フィルタと呼ばれるソフトウェアコンポーネントの組み合わせによって構成されるアクティビティと呼ばれるソフトウェアコンポーネントによって、ジョブを実行するアプリケーションが実現される画像形成装置が開示されている。このような画像形成装置によれば、新たな機能の実装に関する柔軟性を著しく向上させることができる。
【発明の概要】
【発明が解決しようとする課題】
【0003】
しかしながら、特許文献1に記載された画像形成装置において新たなアプリケーション(特許文献1における「アクティビティ」)を実装する場合、フィルタを組み合わせるための知識が開発者に必要とされる。また、アプリケーションの実装に伴って、新たなフィルタを実装する必要がある場合、当該フィルタを実装するための知識が必要とされる。
【0004】
このような知識は、画像形成装置においてジョブを実行するためのアーキテクチャ又はロジックに関する比較的深い層に属する部分である。斯かる部分について、サードベンダー等による開発を可能とするためには、画像形成装置のベンダーは、当該部分についてかなり詳しい技術内容を開示しなければならないことになる。その結果、企業秘密として保持してきたい重要な技術をも開示する必要性が高まり、技術流出の可能性が高まる虞がある。
【0005】
また、特許文献1に記載された画像形成装置では、以上のような知識を会得するまでの初回の開発コストが大きくなる可能性が高い。したがって、初回の開発コストをより小さく抑えられるアーキテクチャの提供が望まれる。
【0006】
本発明は、上記の点に鑑みてなされたものであって、アプリケーションの実行環境を適切に提供することのできる画像形成装置、ジョブ実行方法、及びプログラムの提供を目的とする。
【課題を解決するための手段】
【0007】
そこで上記課題を解決するため、本発明は、アプリケーションから要求されたジョブを実行する画像形成装置であって、前記ジョブに対する設定情報を前記アプリケーションより受け付ける設定情報受付手段と、前記アプリケーションよりジョブの実行要求を受け付けるジョブ実行要求受付手段と、前記ジョブ実行要求受付手段からの要求に応じ、前記ジョブの設定情報に従ってジョブの実行を制御するジョブ実行制御手段と、前記設定情報に設定された原稿の読み取り方式及び読み取り面に従って前記原稿からの画像データの読み取りを実行させる入力物管理手段と、前記設定情報に基づいて判定される、前記画像データに基づく前記ジョブの出力物の出力面ごとに当該出力面の出力を実行させる出力要素管理手段と、前記出力面ごとの出力要素管理手段を前記出力面の出力順に応じて束ね、前記ジョブ実行制御手段からの要求に応じ、束ねている前記出力要素管理手段に対して前記出力順に応じて前記出力面の出力の実行を要求する出力束管理手段とを有することを特徴とする。
【0008】
このような画像形成装置では、アプリケーションの実行環境を適切に提供することができる。
【発明の効果】
【0009】
アプリケーションの実行環境を適切に提供することができる。
【図面の簡単な説明】
【0010】
【図1】本発明の実施の形態における画像形成装置のハードウェア構成の一例を示す図である。
【図2】本発明の実施の形態における複合機のソフトウェア構成例を示す図である。
【図3】MFPプロファイルの構成例を示す図である。
【図4】第一の実施の形態におけるMFPプロファイルの各層のクラス構成例を示す図である。
【図5】JPSの概念モデルを示す図である。
【図6】プレゼンテーション層がJPSを包含する例を示す図である。
【図7】プレゼンテーション層がJPSを包含する場合のアプリケーションとJSPとの関係を示す図である。
【図8】JPSがMFPサービス抽象モデルを継承する例を示す図である。
【図9】アプリケーションが複合機にジョブを実行させるための処理手順を説明するためのシーケンス図である。
【図10】アプリケーションが複合機にジョブを実行させるために実装が必要とされる手順を示すフローチャートである。
【図11】第一の実施の形態のドメインロジック層における処理手順を説明するためのシーケンス図である。
【図12】第一の実施の形態のドメインロジック層における処理手順を説明するためのシーケンス図である。
【図13】第一の実施の形態のドメインロジック層における処理手順を説明するためのシーケンス図である。
【図14】第一の実施の形態においてコピージョブを実行する際のドメインロジック層における処理手順を説明するための汎用的なフローチャートである。
【図15】ソート指定の場合にインスタンス化されるドメインロジック層のオブジェクトの構成例を示す図である。
【図16】スタック用の読み取り処理を説明するためのフローチャートである。
【図17】スタック指定の場合にインスタンス化されるドメインロジック層のオブジェクトの構成例を示す図である。
【図18】その他の読み取り処理を説明するためのフローチャートである。
【図19】ソート及びスタックが指定されていない場合にインスタンス化されるドメインロジック層のオブジェクトの構成例を示す図である。
【図20】DF読み取り方式と圧板読み取り方式とを説明するための図である。
【図21】第二の実施の形態におけるドメインロジック層のクラス構成例を示す図である。
【発明を実施するための形態】
【0011】
以下、図面に基づいて本発明の実施の形態を説明する。図1は、本発明の実施の形態における画像形成装置のハードウェア構成の一例を示す図である。図1では、画像形成装置の具体例として、プリンタ、コピー、スキャナ、又は、ファクス等の複数の機能を一台の筐体において実現する複合機1のハードウェア構成が示されている。
【0012】
複合機1のハードウェアとしては、コントローラ101と、オペレーションパネル102と、ファクシミリコントロールユニット(FCU)103と、撮像部104と、印刷部105が存在する。
【0013】
コントローラ101は、CPU111、ASIC112、NB121、SB122、MEM−P131、MEM−C132、HDD(ハードディスクドライブ)133、メモリカードスロット134、NIC(ネットワークインタフェースコントローラ)141、USBデバイス142、IEEE1394デバイス143、セントロニクスデバイス144により構成される。
【0014】
CPU111は、種々の情報処理用のICである。ASIC112は、種々の画像処理用のICである。NB121は、コントローラ101のノースブリッジである。SB122は、コントローラ101のサウスブリッジである。MEM−P131は、複合機1のシステムメモリである。MEM−C132は、複合機1のローカルメモリである。HDD133は、複合機1のストレージである。メモリカードスロット134は、メモリカード135をセットするためのスロットである。NIC141は、MACアドレスによるネットワーク通信用のコントローラである。USBデバイス142は、USB規格の接続端子を提供するためのデバイスである。IEEE1394デバイス143は、IEEE1394規格の接続端子を提供するためのデバイスである。セントロニクスデバイス144は、セントロニクス仕様の接続端子を提供するためのデバイスである。オペレーションパネル102は、オペレータが複合機1に入力を行うためのハードウェア(操作部)であると共に、オペレータが複合機1から出力を得るためのハードウェア(表示部)である。
【0015】
図2は、本発明の実施の形態における複合機のソフトウェア構成例を示す図である。同図において、複合機1は、OS20、ドライバプログラム21、JVM30、CDC31、Foundation Profile32、MFPプロファイル40、ネイティブモジュール50、及びアプリケーション60等を有する。
【0016】
OS20は、いわゆるOS(Operating System)である。ドライバプログラム21は、ハードウェアを制御する各種のプロラムモジュールである。JVM30は、Java(登録商標) Virtual Machine(仮想マシン)であり、Java(登録商標)の実行環境を実現する。CDC(Connected Device Configuration)31及びFoundation Profile32は、Java(登録商標) Micro Editionの基本構成である。
【0017】
MFPプロファイル40は、複合機1用のアプリケーション60の開発環境及び実行環境を提供するプラットフォーム(プログラムモジュール群)である。より詳しくは、MFPプロファイル40は、複合機1にジョブを実行させるためのJava(登録商標)インタフェース(API(Application Program Interface))をアプリケーション60に提供し、当該インタフェースの呼び出しに応じて複合機1を制御する。なお、MFP(Multifunction Peripheral)とは、複合機の略称である。
【0018】
ネイティブモジュール50は、ネイティブコードによって記述されたプログラムモジュール群である。ネイティブモジュール50は、例えば、C言語やC++言語によるインタフェース(API)をアプリケーション60に提供し、当該インタフェースの呼び出しに応じて複合機1を制御する。
【0019】
アプリケーション60は、複合機1にジョブを実行させるプログラムであり、プリントアプリ61、コピーアプリ62、スキャンアプリ63、FAXアプリ64等、ジョブ種別(印刷、コピー、スキャン、FAX送信等)に応じて複数のアプリケーション60が存在する。各アプリケーション60は、MFPプロファイル40又はネイティブモジュール50によって提供されるインタフェースに基づいて開発される。厳密には、Java(登録商標)コードによるアプリケーション60からはMFPプロファイル40が利用され、ネイティブコードによるアプリケーション60からはネイティブモジュール50が利用される。
【0020】
本実施の形態において、MFPプロファイル40及びネイティブモジュール50のインタフェースは複合機1のメーカー外にも公開されている。したがって、アプリケーション60は、複合機1のメーカーだけでなく、サードベンダー等によっても開発可能である。ユーザから見た場合、複合機1を導入(設置)した後に、市場で販売されている新たなアプリケーション60を複合機1にインストールし、複合機1の機能強化を図ることができる。
【0021】
本実施の形態では、特に、MFPプロファイル40について説明する。図3は、MFPプロファイルの構成例を示す図である。
【0022】
同図において、MFPプロファイル40は、プレゼンテーション層41、ドメインロジック層42、及びサービス層43等より構成される。なお、図中における各層の上下関係は、層間の呼び出し関係(利用関係)に基づいている。基本的に上の層が下の層を呼び出す(利用する)。
【0023】
プレゼンテーション層41は、アプリケーション60に公開されるインタフェース部分である。すなわち、プレゼンテーション層41は、アプリケーション60からの要求を受け付け、当該要求に対する応答をアプリケーション60に返却する。なお、アプリケーション60の開発者からはプレゼンテーション層41のみが興味の対象となる。
【0024】
ドメインロジック層42は、プレゼンテーション層41によって受け付けられたアプリケーション60からの要求に応じ、複合機1にジョブを実行させるためのロジックが実装されている部分である。ドメインロジック層42は、その役割(責務)に応じて要求管理部421、I/Oファンクション部422、I/Oリソース管理部423、及びシステム管理部424等に細部化される。
【0025】
要求管理部421は、プレゼンテーション層41によって受け付けられるアプリケーション60からの要求を管理する。I/Oファンクション部422は、ジョブ対するデータの入力やジョブの実行によるデータの出力等の機能を実現する。I/Oリソース管理部423は、撮像部104や印刷部105等のデータの入出力に関するハードウェアリソースを管理する。システム管理部424は、要求管理部421、I/Oファンクション部422、及びI/Oリソース管理部423等の横断的関心事(例えば、各部より共通に利用される情報)を管理する。
【0026】
サービス層43は、デバイス、ミドルウェア、又はOS等へのアクセスを隠蔽する部分である。すなわち、サービス層43によって、複合機1の機種の違い、又は複合機1において利用されるミドルウェア又はOS等の違いが吸収される。
【0027】
MFPプロファイル40の各層について更に詳しく説明する。図4は、第一の実施の形態におけるMFPプロファイルの各層のクラス構成例を示す図である。なお、同図のクラス群は、インタフェースを示す。したがって、実装は当該インタフェースに対する実装クラスにおいて行われる。以下において、「XXXクラスのインスタンス」というとき、XXXクラスの実装クラスのインスタンスを意味する。
【0028】
同図において、プレゼンテーション層41は、サービス検索クラス411、入出力形式クラス412、要求属性値群クラス413、サービスクラス414、サービス属性値群クラス4141、ドキュメントクラス415、ドキュメント属性値群クラス4151、ジョブクラス416、及びジョブ属性値群クラス4161等を含む。
【0029】
サービス検索クラス411のインスタンス(サービス検索オブジェクト)は、アプリケーション60からの要求に応じサービスを検索する。サービスとは、ジョブを実行に関係するソフトウェア及びハードウェアの集合(すなわち、ジョブの実行主体)をいう。サービスの検索条件は、入出力形式クラス412のインスタンスと要求属性値群クラス413のインスタンスとによって指定される。
【0030】
入出力形式クラス412のインスタンス(入出力形式オブジェクト)は、ジョブの入力データ又は出力データのデータ形式を保持する。要求属性値群クラス413のインスタンス(要求属性値群オブジェクト)は、アプリケーション60から要求において指定されるジョブに対する設定値の集合を保持する。
【0031】
サービスクラス414のインスタンス(サービスオブジェクト)は、サービスの代表を表現する。サービスクラス414の実装クラスはサービスごとに定義される。サービス属性値群クラス4141のインスタンス(サービス属性値群オブジェクト)は、サービスの状態を保持する。
【0032】
ドキュメントクラス415のインスタンス(ドキュメントオブジェクト)は、ジョブに対して入力されるドキュメント(データ)を表現する。例えば、印刷ジョブであれば印刷データが相当する。ドキュメント属性値群クラス4151のインスタンス(ドキュメント属性値群オブジェクト)は、ドキュメントの属性を保持する。
【0033】
ジョブクラス416のインスタンス(ジョブオブジェクト)は、ジョブを表現する。ジョブクラス416の実装クラスはジョブの種別ごとに定義される。ジョブ属性値群クラス4161のインスタンス(ジョブ属性値群オブジェクト)は、ジョブの状態を保持する。
【0034】
また、ドメインロジック層42の要求管理部421は、成果物クラス4211を含む。成果物クラス4211のインスタンス(成果物オブジェクト)は、ジョブによる成果物を実現するための処理(すなわち、ジョブの実行制御)を行う。成果物オブジェクトは、成果物の構成要素や、成果物の進捗状況等を知っている。なお、成果物とは、例えば、1枚の原稿を3部コピーするというコピージョブであれば、3枚のコピー結果そのものをいう。
【0035】
ドメインロジック層42のI/Oファンクション部422は、入力物クラス4221、原画像クラス4222、出力物クラス4223、出力要素クラス4224、及び出力束クラス4225等を含む。入力物クラス4221のインスタンス(入力物オブジェクト)は、ジョブに入力データに係る原稿の1枚又は1ページ(入力物)を表現する。したがって、入力物オブジェクトは、コピージョブやスキャンジョブ等、原稿から入力データが得られるジョブに利用される。入力物クラス4221は自らに対する再帰的な関連を有している。したがって、入力物オブジェクトは、チェーン構造で関連付けられることにより、複数枚の原稿を表現する。なお、本実施の形態において、便宜上、原稿の1枚と1ページとは等価であるとする。
【0036】
原画像クラス4222のインスタンス(原画像オブジェクト)は、ジョブに対する入力画像を表現する。例えば、コピージョブであれば、スキャンされたスキャン画像を表現する。原画像オブジェクトは、画像の入力方法を知っており、また、入力処理の進捗状況(撮像部104による読み取りの進捗状況)を知っている。
【0037】
出力物クラス4223のインスタンス(出力物オブジェクト)は、ジョブによる成果物の一部(出力物)を表現する。出力物オブジェクトは、成果物がどのような材料(入力物)で構成されているのかや、出力物の出力の実行可能条件等を知っている。出力物オブジェクトはまた、出力物の出力に必要な入力物を知っており、当該入力物に係る入力物オブジェクトに紐づいている。
【0038】
出力束クラス4225のインスタンス(出力束オブジェクト)は、成果物がどのような順番(ソート順又はスタック順等)で構成されているかを知っている。出力要素クラス4224のインスタンス(出力要素オブジェクト)は、出力要素(出力面)の出力の方法を知っている。出力要素は、例えばコピージョブのときには印刷面を示す。
【0039】
ドメインロジック層42のI/Oリソース管理部423は、入力リソースクラス4231及び出力リソースクラス4232等を含む。入力リソースクラス4231のインスタンス(入力リソースオブジェクト)は、データを入力するためのハードウェア資源(撮像部104等)を管理する。出力リソースクラス4232のインスタンス(出力リソースオブジェクト)は、データを出力するためのハードウェア資源(印刷部105等)を管理する。
【0040】
ドメインロジック層42のシステム管理部424は、機内監視クラス4241を含む。機内監視クラス4241のインスタンス(機内監視オブジェクト)は、複合機1の状態を監視する。
【0041】
以上の各層のクラス群の中で、プレゼンテーション層41に属するクラス群が、アプリケーション60に利用可能なインタフェースを提供する。斯かるプレゼンテーション層41のクラス群(インタフェース)は、JPS(Java(登録商標) Print Service)に準拠した構成を有している。換言すれば、プレゼンテーション層41において、JPSを提供することができる。ここで、JPSとは、Java(登録商標)プラットフォームにおいて印刷に関する制御を実行するための標準のAPI(Application Program Interface)である。このことは、印刷ジョブを実行するアプリケーション60の開発者は、JPSに関する知識を有していれば、MFPプロファイル40上に簡便に当該アプリケーション60を実装することができることを意味する。
【0042】
図5は、JPSの概念モデルを示す図である。同図に示されるように、JPSは、ドキュメントインタフェース群、印刷ジョブインタフェース群、プリンタサービスインタフェース群より構成される。
【0043】
ドキュメントインタフェース群におけるSimpleDocクラス及びDocインタフェース実装クラスは、印刷データを表現するクラスであり、本実施の形態のドキュメントクラス415に対応する。DocFlavorクラスは、印刷データのデータ形式を表現するクラスであり、本実施の形態の入出力形式クラス412に対応する。
【0044】
印刷ジョブインタフェース群におけるDocPrintJobクラスは、印刷ジョブを表現するクラスであり、本実施の形態のジョブクラス416に対応する。PrintAttributeSet実装クラスは、印刷要求の属性値群を表現し、本実施の形態の要求属性値群クラス413に対応する。
【0045】
プリントサービスインタフェース群におけるPrintService実装クラス及びDefaultPrintService実装クラス等は、印刷サービス(プリンタ)を表現するクラスであり、本実施の形態のサービスクラス414に対応する。PrintServiceLookUp実装クラスは、印刷サービス(プリンタ)を検索するクラスであり、本実施の形態のサービス検索クラス411に対応する。
【0046】
なお、図4に示されるプレゼンテーション層41のクラス群(インタフェース)は、印刷ジョブだけでなく、複数種類のジョブ(例えば、コピージョブ、スキャンジョブ、FAX送信ジョブ等)に対して共通に定義されている。すなわち、プレゼンテーション層41は、JPSをより抽象化(一般化)したものになっている。したがって、プレゼンテーション層41に基づいてJPSを実現する場合、プレゼンテーション層41にJPSを包含させるか、又はJPSがプレゼンテーション層41のクラス群(以下「MFPサービス抽象モデル」という。)を継承するようにすればよい。
【0047】
図6は、プレゼンテーション層がJPSを包含する例を示す図である。この場合、プレゼンテーション層41は一つのソフトウェアコンポーネントとして構成され、当該ソフトウェアコンポーネント内にJPSの実装が含まれる。また、他のサービス(例えば、コピージョブを実現するコピーサービス)に関するクラス群についても、MFPサービス抽象モデルに基づいて(MFPサービス抽象モデルと同様の構成によって)実装され、それぞれサービスの実装が当該ソフトウェアコンポーネント内に含まれる。したがって、この場合、アプリケーション60とJSPとの関係は、図7に示されるようになる。
【0048】
図7において、プレゼンテーション層41は一つのソフトウェアコンポーネントとして、JPSや各サービス(同図ではコピーサービス)のインタフェースを公開すると共にその実装を包含する。したがって、アプリケーション60は、公開されたJPSや他のサービスのインタフェースを呼び出すことにより、それぞれの実装を利用することができる。このような構成では、各サービス(JPSも含む)のインタフェースは論理的には関係しているが、実質的には関係を有さない。したがって、仮に、JPSのバージョンアップ等で変更があったとしても、基本的には他のサービスはその影響を受けないという利点がある。
【0049】
また、図8は、JPSがMFPサービス抽象モデルを継承する例を示す図である。この場合、JPSの各クラスは、MFPサービス抽象モデルにおいて対応するクラスを継承する。他のサービス(例えば、コピーサービス)に関する実装クラス群もMFPサービス抽象モデルのクラスを継承する。この場合、アプリケーション60は、各サービス(JPSも含む)のクラス群をMFPサービス抽象モデルのサブクラスとして利用することができる。
【0050】
このような構成では、MFPサービス抽象モデルにおいて各サービスの共通部分を実装することにより、各サービスはその差分のみを実装すればよいという利点がある。また、継承により各サービスの構造がシンプルとなり、保守性を向上させることができる。
【0051】
以下、複合機1の処理手順について説明する。図9は、アプリケーションが複合機にジョブを実行させるための処理手順を説明するためのシーケンス図である。同図における各オブジェクトの参照番号は、各オブジェクトのクラスの参照番号(図4参照)の末尾に「A」を付加したものである。
【0052】
ジョブの開始指示の入力に応じ、当該ジョブに対応するアプリケーション60(プリントアプリ61、コピーアプリ62、スキャンアプリ63、又はFAXアプリ64等)は、入出力形式オブジェクト412Aをメモリ(MEM−P131)内に生成する(S101)。ここで、アプリケーション60は、ジョブ(印刷ジョブ、コピージョブ、スキャンジョブ、又はFAX送信ジョブ等)に応じた入力データ及び出力データの少なくともいずれか一方のデータ形式を入出力形式オブジェクト412Aに設定する。例えば、印刷ジョブであれば、印刷データのデータ形式が設定される。なお、ジョブの開始指示の入力とは、印刷ジョブであれば印刷データの受信が相当する。また、コピージョブ、スキャンジョブ、FAX送信ジョブ等であれば、ユーザによるスタートボタンの押下等が相当する。
【0053】
続いて、アプリケーション60は、要求属性値群オブジェクト413Aをメモリ内に生成する(S103)。ここで、アプリケーション60は、ジョブに対して要求された設定値(要求属性値群)を要求属性値群オブジェクト413Aに設定する。当該設定値は、印刷ジョブであれば印刷データ内に含まれている。また、コピージョブ、スキャンジョブ、及びFAXジョブ等であれば、オペレーションパネル102を介して設定され、メモリ内に記録されている。
【0054】
続いて、アプリケーション60は、入出力形式オブジェクト412A及び要求属性値群オブジェクト413Aを検索条件として指定して、サービスの検索をサービス検索オブジェクト411Aに要求する(S105)。当該要求に応じ、サービス検索オブジェクト411Aは、指定された検索条件に合致するサービスを検索し、当該サービスに対応するサービスオブジェクト414Aをメモリ内に生成する(S107)。続いて、サービス検索オブジェクト411Aは、生成されたサービスオブジェクト414Aをアプリケーション60に返却する(S109)。
【0055】
なお、サービス検索オブジェクト411Aによるサービスの検索は、例えば、HDD133に記録されているサービス管理情報に基づいて行われる。サービス管理情報には、入力データの形式及び出力データの形式の少なくともいずれか一方と、要求属性値群との組み合わせに応じて、サービスクラス414の実装クラスのクラス名(例えば、「プリントサービス」、「コピーサービス」、「スキャンサービス」、「FAXサービス」等)が登録されている。したがって、サービス検索オブジェクト411Aは、アプリケーション60より指定された入出力形式オブジェクト412A及び要求属性値群オブジェクト413Aに対応するクラス名をサービス管理情報より検索し、検索されたクラス名に対応するサービスオブジェクト414Aを生成する。
【0056】
続いて、アプリケーション60は、返却されたサービスオブジェクト414Aに対してジョブの生成を要求する(S111)。サービスオブジェクト414Aは、対応するジョブ(印刷ジョブ、コピージョブ、スキャンジョブ、又はFAX送信ジョブ等)の実装クラスのジョブオブジェクト416Aを生成し(S113)、当該ジョブオブジェクト416Aをアプリケーション60に返却する(S115)。
【0057】
続いて、アプリケーション60は、ジョブにおいて処理対象とするドキュメントをカプセル化したドキュメントオブジェクト415Aをメモリ内に生成する(S117)。印刷ジョブであれば、印刷データがカプセル化される。当該ドキュメントのデータ形式は、ジョブの種別に応じ、PostScriptファイル、JPEGイメージ、URL、又はプレーンテキスト等、様々な形式をとり得る。なお、コピージョブ及びスキャンジョブ等については、アプリケーション60は処理対象とするデータを有していない。したがって、このようなジョブについては、アプリケーション60はドキュメントオブジェクト415Aを生成する必要はない。一方、印刷ジョブの場合、印刷データの受信はアプリケーション60(プリントアプリ61)によって行われる。したがって、この場合は、ドキュメントオブジェクト415Aが生成される。
【0058】
続いて、アプリケーション60は、ステップS115において返却されたジョブオブジェクト415Aに対して、ドキュメントオブジェクト415A及び要求属性値群オブジェクト413Aを指定して、ジョブの実行を要求する(S119)。なお、ドキュメントオブジェクト415Aが生成されていない場合は、ドキュメントオブジェクト415Aは指定されない。
【0059】
図9において、アプリケーション60の軸から出ている矢印がアプリケーション60において実装が必要とされる手順である。当該手順のフローチャートを図10に示す。図10において、各ステップには図9において対応するステップ番号が付されている。各ステップの内容は図9で説明した通りである。但し、図10では、サービスが検索された場合に(すなわち、図9のステップS115においてサービスオブジェクト414Aが返却された場合に)、ステップS111以降が実行されることが明示されている(S110)。
【0060】
このように、アプリケーション60の開発は、基本的に図10に示される処理手順に対応したインタフェース(プレゼンテーション層41のインタフェース)を呼び出すことにより行われる。また、当該インタフェースは、Java(登録商標)の標準インタフェースであるJPSに準拠するものである。したがって、本実施の形態の複合機1によれば、アプリケーション60の開発作業の負担を軽減することができる。
【0061】
また、特許文献1のフィルタ等によってアプリケーションを構築する場合に比べて、ソフトウェア構成全体の規模を小さくできる可能性が高い。したがって、アプリケーションの実行に必要なメモリ容量等を低減することができ、ハードウェアのコストの削減も期待できる。
【0062】
ところで、ジョブオブジェクト416Aに対するジョブの実行要求後は、ドメインロジック層42においてジョブの実行が行われる。ドメインロジック層42における処理手順についてはアプリケーション60の関与しないところであるが、以下にその一例を説明する。
【0063】
図11、図12、及び図13は、第一の実施の形態のドメインロジック層における処理手順を説明するためのシーケンス図である。同図における各オブジェクトの参照番号は、各オブジェクトのクラスの参照番号(図4参照)の末尾に「A」を付加したものである。
【0064】
図11等では、1枚の原稿について、出力部数は3、ソートはONとして設定されコピージョブの実行が要求された場合の処理手順を説明する。
【0065】
図9のステップS119におけるジョブの実行に応じ、ジョブオブジェクト416Aは、成果物オブジェクト4211Aをメモリ内に生成する(S301)。ここで、ジョブオブジェクト416Aは、出力部数が3及びソートがONであることを示す要求属性値群オブジェクト413Aの内容(以下、「ジョブ設定値」という。)を成果物オブジェクト4211Aに設定する。従って、ここでの成果物オブジェクト4211Aは、ソートされた3部のコピー結果としての成果物を表現する。
【0066】
続いて、ジョブオブジェクト416Aは、成果物オブジェクト4211Aに対してジョブの実行(すなわち、成果物の実現)を要求する(S303)。当該要求に応じ、成果物オブジェクト4211Aは、1枚目の原稿に対応する入力物オブジェクト4221Aをメモリ内に生成する(S305)。続いて、成果物オブジェクト4211Aは、1枚目の入力物オブジェクト4221Aに対応する出力物(1枚目の3部のコピー結果)に係るオブジェクト4223Aをメモリ内に生成し、出力物オブジェクト4223Aと入力物オブジェクト4221Aとの関連を生成する(S307)。続いて、成果物オブジェクト4211Aは、出力部数分の出力束オブジェクトをメモリ内に生成する。ここでは、1部目、2部目、及び3部目のそれぞれのソート単位に対応する出力束オブジェクト4225A−1、4223A−2、及び4223A−3が生成される(S309〜S313)。なお、生成された出力束オブジェクトは、1部目、2部目、3部目という順番で(すなわち、出力束オブジェクト4225A−1、4223A−2、4223A−3という順番で)チェーン構造で関連付けられる。
【0067】
続いて、成果物オブジェクト4211Aは、出力物オブジェクト4223Aをソート1部目の出力束オブジェクト4225A−1に通知し、出力要素(コピー面)の追加(束ねること)を要求する(S315)。続いて、出力束オブジェクト4225A−1は、通知された出力物オブジェクト4223Aに対し、1部目の出力要素(コピー面)に対応する出力要素オブジェクト4224Aの取得を要求する(S317)。出力物オブジェクト4223Aは、出力要素オブジェクト4224A−1をメモリ内に生成し(S319)、出力束オブジェクト4225A−1に返却する(S321)。
【0068】
続いて、成果物オブジェクト4211Aは、出力物オブジェクト4223Aをソート2部目の出力束オブジェクト4225A−2に通知する(S323)。続いて、出力束オブジェクト4225A−2は、通知された出力物オブジェクト4223Aに対し、2部目の出力要素(コピー面)に対応する出力要素オブジェクト4224Aの取得を要求する(S325)。出力物オブジェクト4223Aは、出力要素オブジェクト4224A−2をメモリ内に生成し(S327)、出力束オブジェクト4225A−2に返却する(S329)。
【0069】
続いて、成果物オブジェクト4211Aは、出力物オブジェクト4223Aをソート3部目の出力束オブジェクト4225A−3に通知する(S331)。続いて、出力束オブジェクト4225A−3は、通知された出力物オブジェクト4223Aに対し、3部目の出力要素(コピー面)に対応する出力要素オブジェクト4224Aの取得を要求する(S333)。出力物オブジェクト4223Aは、出力要素オブジェクト4224A−3をメモリ内に生成し(S335)、出力束オブジェクト4225A−3に返却する(S337)。
【0070】
なお、各出力要素オブジェクト4224Aは、出力物オブジェクト4223A−1の生成時に予め生成されていてもよい。
【0071】
出力部数分の出力束オブジェクト4225Aの生成及び各出力束オブジェクト4225Aへの出力物オブジェクト4223Aの通知が完了すると、成果物オブジェクト4211Aは、1枚目の原稿に対応する入力物オブジェクト4221Aに対してデータ入力の実行(すなわち、1枚目の原稿の読み取り)を要求する(図12:S351)。続いて、入力物オブジェクト4221Aは、1枚目の原稿に対応する読み取り画像(スキャン画像)に対応する原画像オブジェクト4222Aをメモリ内に生成する(S353)。続いて、入力物オブジェクト4221Aは、原画像オブジェクト4222Aに対して読み取りの実行を要求する(S355)。当該要求に応じ、原画像オブジェクト4222Aは、入力リソースオブジェクト4231A及びサービス層43等を介して撮像部104に原稿の読み取りを実行させる(S357)。なお、読み取られた画像データ(スキャン画像)は、メモリ内に記録され、そのアドレス情報がサービス層43及び入力リソースオブジェクト4231を経て原画像オブジェクト4222Aに対して通知される。したがって、原画像オブジェクト4222Aは、当該アドレス情報を保持することにより、スキャン画像に関連付けられる。また、次原稿の有無(2枚目以降の原稿の有無)もこのタイミングでサービス層43及び入力リソースオブジェクト4231を経て原画像オブジェクト4222Aに通知される。なお、印刷ジョブの場合、ステップS303においてジョブオブジェクト416Aより成果物オブジェクト4211Aに印刷データをカプセル化したドキュメントオブジェクトが引き渡される。当該ドキュメントオブジェクトは、ステップS351において成果物オブジェクト4211Aから入力物オブジェクト4221Aに引き渡される。したがって、原画像オブジェクト4222Aによる画像データの読み取りは行われない。
【0072】
1枚目の原稿の読み取りが終了すると、原画像オブジェクト4222Aは、入力物オブジェクト4221Aに1枚目の読み取りの終了及び次原稿の有無を通知する(S359)。当該通知に応じ、入力物オブジェクト4221Aは、成果物に1枚目の入力物の入力(ここでは画像の読み取り)の終了を通知する(S361)。続いて、成果物オブジェクト4211Aは、1枚目の原稿に対応する出力物オブジェクト4223Aに入力物の入力の終了を通知する(S363)。当該通知に応じ、出力物オブジェクト4223Aは、出力が可能となったことを判断する。
【0073】
続いて、入力物オブジェクト4221Aは、成果物オブジェクト4211Aに次原稿の有無を通知する(S356)。ここでは、原稿は1枚であるという前提なので次原稿はないことが通知される。なお、次原稿が有ることが通知された場合、成果物オブジェクト4211Aは、ステップS305、S307、S315、S323、S331、及びS351を再度実行する。その結果、2枚目に対応する入力物オブジェクト4221A及び出力物オブジェクト4222Aが生成され、2枚目の3部分のそれぞれのコピー面に対応する出力要素オブジェクト4225Aが生成される。各出力要素オブジェクト4225Aは、出力束オブジェクト4225A−1〜3のそれぞれに登録される。
【0074】
次原稿はないことが通知された場合、成果物オブジェクト4211Aは、ソート単位分の入力物の入力は終了したと判断し、チェーン構造で関連付けられている最初の(1部目の)出力束オブジェクト4225A−1に実行(コピー面の印刷)を要求する(S367)。続いて、出力束オブジェクト4225A−1は、自らに登録されている(自らが束ねている)1部目のソート1枚目の出力要素オブジェクト4224A−1に実行を要求する(S369)。出力要素オブジェクト4224A−1は、出力リソースオブジェクト4232Aにリソース(印刷部105等)の使用の予約を要求する(S371)。
【0075】
自らに登録されている全ての出力要素オブジェクト4224A−1に対する実行要求が終了すると、出力束オブジェクト4225A−1は、自らにチェーン構造で接続されている次の(2部目の)出力束オブジェクト4225A−2に実行を要求する(S373)。出力束オブジェクト4225A−2は、自らに登録されている2部目のソート1枚目の出力要素オブジェクト4224A−2に実行を要求する(S375)。出力要素オブジェクト4224A−2は、出力リソースオブジェクト4232Aにリソースの使用の予約を要求する(S377)。
【0076】
自らに登録されている全ての出力要素オブジェクト4224A−2に対する実行要求が終了すると、出力束オブジェクト4225A−2は、自らにチェーン構造で接続されている次の(3部目の)出力束オブジェクト4225A−3に実行を要求する(S379)。出力束オブジェクト4225A−3は、自らに登録されている2部目のソート1枚目の出力要素オブジェクト4224A−3に実行を要求する(S381)。出力要素オブジェクト4224A−3は、出力リソースオブジェクト4232Aにリソースの使用の予約を要求する(S383)。
【0077】
なお、ソート2枚目が有る場合(原稿が2枚以上である場合)、各出力束オブジェクト422Aは、ソート2枚目の出力要素オブジェクト4224Aに対しても実行を要求する。実行要求を行う順番は、出力要素オブジェクト4224A間のチェーン構造の接続関係に基づいて判定される。
【0078】
続いて、リソースの使用予約を受けた出力リソースオブジェクト4232Aは、印刷部105等が出力可能な状態になると、予約を受け付けた順番に使用許可を通知する。ここでは、まず、1部目のソート1枚目を示す出力要素オブジェクト4224A−1にリソースの使用許可が通知される(S391)。続いて、出力要素オブジェクト4224A−1は、出力物オブジェクト4223Aに出力の実行可否判断を要求する(S393)。出力物オブジェクト4223Aは、ステップS363において入力物の入力の終了を通知されているので実行可能と判断し、その判断結果を出力要素オブジェクト4224A−1に返却する。実行可能であることを示す判断結果が返却された場合、出力要素オブジェクト4224A−1は、使用許可された出力リソース(印刷部105)を使用して印刷を実行する(S395)。ここで、印刷対象とされる画像データは、出力要素オブジェクト4224A−1が属する出力物オブジェクト4223Aに関連付けられている入力物オブジェクト4221Aに基づいて特定可能である。印刷が終了すると、出力要素オブジェクト4224A−1は、出力物オブジェクト4223Aに印刷の終了を通知する(S397)。続いて出力要素オブジェクト4224A−1は、出力束オブジェクト4225A−1に当該出力要素(当該コピー面)の出力の終了を通知する(S399)。当該通知に応じ、出力束オブジェクト4225A−1は、成果物オブジェクト4211Aに当該出力束(当該ソート単位分のコピー面)の出力の終了を通知する(S401)。
【0079】
続いて、出力リソースオブジェクト4232Aは、2部目のソート1枚目を示す出力要素オブジェクト4224A−2にリソースの使用許可を通知する(S403)。続いて、出力要素オブジェクト4224A−2は、出力物オブジェクト4223Aに出力の実行可否判断を要求する(S405)。出力物オブジェクト4223Aは、ステップS363において入力物の入力の終了を通知されているので実行可能と判断し、その判断結果を出力要素オブジェクト4224A−2に返却する。実行可能であることを示す判断結果が返却された場合、出力要素オブジェクト4224A−2は、使用許可された出力リソース(印刷部105)を使用して印刷を実行する(S407)。印刷が終了すると、出力要素オブジェクト4224A−2は、出力物オブジェクト4223Aに印刷の終了を通知する(S409)。続いて出力要素オブジェクト4224A−2は、出力束オブジェクト4225A−2に当該出力要素(当該コピー面)の出力の終了を通知する(S411)。当該通知に応じ、出力束オブジェクト4225A−2は、成果物オブジェクト4211Aに当該出力束(当該ソート単位分のコピー面)の出力の終了を通知する(S413)。
【0080】
続いて、出力リソースオブジェクト4232Aは、3部目のソート1枚目を示す出力要素オブジェクト4224A−3にリソースの使用許可を通知する(S415)。続いて、出力要素オブジェクト4224A−3は、出力物オブジェクト4223Aに出力の実行可否判断を要求する(S417)。出力物オブジェクト4223Aは、ステップS363において入力物の入力の終了を通知されているので実行可能と判断し、その判断結果を出力要素オブジェクト4224A−3に返却する。実行可能であることを示す判断結果が返却された場合、出力要素オブジェクト4224A−3は、使用許可された出力リソース(印刷部105)を使用して印刷を実行する(S419)。印刷が終了すると、出力要素オブジェクト4224A−3は、出力物オブジェクト4223Aに印刷の終了を通知する(S421)。続いて出力要素オブジェクト4224A−3は、出力束オブジェクト4225A−3に当該出力要素(当該コピー面)の出力の終了を通知する(S423)。当該通知に応じ、出力束オブジェクト4225A−3は、成果物オブジェクト4211Aに当該出力束(当該ソート単位分のコピー面)の出力の終了を通知する(S425)。
【0081】
以上によって、1枚の原稿の3部分のソートコピーが完了する。続いて、ドメインロジック層42による処理手順を更に一般化して説明する。図14は、第一の実施の形態においてコピージョブを実行する際のドメインロジック層における処理手順を説明するための汎用的なフローチャートである。すなわち、同図のフローチャートでは、原稿枚数、出力部数、印刷順(ソート又はスタック)等は特定されていない。同図のフローチャートの手順の特定の形態が図11、図12、及び図13となる。図14の括弧内のステップ番号は、図11、図12、又は図13において対応するステップ番号を示す。
【0082】
ジョブオブジェクト416Aによって成果物オブジェクト4211Aが生成され、ジョブの実行が要求されると(S501)、成果物オブジェクト4211Aは、入力原稿の枚数のカウンタNに1をセットし(S502)、N枚目(1枚目)の原稿に対する入力物オブジェクト4221Aをメモリ内に生成する(S503)。ここで、成果物オブジェクト4211Aには、ジョブ設定値がジョブオブジェクト416Aによって設定される。ジョブ設定値には、例えば、出力部数や出力モード(ソート又はスタック等)が含まれている。
【0083】
続いて、成果物オブジェクト4211Aは、1枚目の入力物オブジェクト4221Aに対応する出力物オブジェクト4223Aをメモリ内に生成し、出力物オブジェクト4223Aと入力物オブジェクト4221Aとの関連を生成する(S504)。なお、成果物オブジェクト4211Aは、自らに設定されているジョブ設定値のうち少なくとも出力に関係する設定値群(例えば、出力部数及び出力モード等)を生成された出力物オブジェクト4223Aに設定する。以降において生成される出力物オブジェクト4223Aについても同様である。
【0084】
続いて、成果物オブジェクト4211Aは、ジョブオブジェクト416Aより設定されているジョブ設定値においてソートは指定されているか否かを判定する(S505)。ソートが指定されている場合(S505でYes)、成果物オブジェクト4211Aは、ジョブ設定値に指定されている出力部数分の出力束オブジェクト4225Aを生成し、各出力束オブジェクト4225Aをチェーン構造で出力順に従って関連付ける(S506)。なお、成果物オブジェクト4211Aは、自らに設定されているジョブ設定値のうち少なくとも出力に関係する設定値群(例えば、出力部数及び出力モード等)を生成された出力束オブジェクト4225Aに設定する。以降において生成される出力束オブジェクト4225Aについても同様である。
【0085】
続いて、成果物オブジェクト4211Aは、生成された各出力束オブジェクト4225Aに、N枚目に対応する出力物オブジェクト4223Aを通知する(S507)。続いて、各出力束オブジェクト4225Aは、自らに設定されている出力モードの値に基づいてソートが指定されていることを判定し、通知された出力物オブジェクト4223Aよりソート単位内でN枚目に対応する出力要素オブジェクト4224Aを一つ取得する(S508)。各出力束オブジェクト4225Aは取得された順に出力要素オブジェクト4224Aをチェーン構造で関連付ける。
【0086】
続いて、成果物オブジェクト4211Aは、N枚目に対応する入力物オブジェクト4221AにN枚目の原稿の入力を要求する(S509)。当該要求に応じ、入力物オブジェクト4221Aは、N枚目の原稿に対応する読み取り画像(スキャン画像)に対応する原画像オブジェクト4222Aをメモリ内に生成する(S510)。続いて、入力物オブジェクト4221Aは、原画像オブジェクト4222AにN枚目の原稿の読み取りを実行させる(S510)。次の原稿が有る場合(S511でYes)、成果物オブジェクト4211Aは、カウンタNをインクリメントし(S512)、N枚目の原稿に対する入力物オブジェクト4221Aをメモリ内に生成する(S513)。続いて、成果物オブジェクト4211Aは、N枚目の入力物オブジェクト4221Aに対応する出力物オブジェクト4223Aをメモリ内に生成し、出力物オブジェクト4223Aと入力物オブジェクト4221Aとの関連を生成する(S514)。続いて、ステップS507〜S510を繰り返す。
【0087】
したがって、例えば、原稿が2枚で出力部数が3のコピーにおいてソートが指定されている場合、全ての原稿の読み取りを完了した時点での各オブジェクト間の関係は次のようになる。
【0088】
図15は、ソート指定の場合にインスタンス化されるドメインロジック層のオブジェクトの構成例を示す図である。
【0089】
同図において、入力物オブジェクト4221A−1及び出力物オブジェクト4223A−1は1枚目の原稿に対応する。また、入力物オブジェクト4221A−2及び出力物オブジェクト4223A−2は2枚目の原稿に対応する。出力部数が3においてソートが指定されているため、三つの出力束オブジェクト4225A−1、4225A−2、及び4225A−3がインスタンス化される。各出力束オブジェクト4225Aは、ソート単位で出力要素オブジェクト4224Aを束ねる。具体的には、各出力束オブジェクト4225Aには、出力物オブジェクト4223A−1及び4223A−2のそれぞれより取得された二つの出力要素4224Aが関連付けられる。なお、各出力束オブジェクト4225Aは、ソート単位の順番に応じてチェーン構造で関連付けられる(図中の矢印が当該関連を示す。)。また、同一の出力束オブジェクト4225Aに関連付けられている出力要素オブジェクト4224A同士は、出力順(原稿の順番)に応じてチェーン構造で関連付けられる。なお、出力要素オブジェクト4224Aの参照番号の枝番は、10の桁はソート単位の順番を、1の桁が原稿の順番(1枚目、2枚目、・・・)を示す。
【0090】
一方、ソートが指定されていない場合(S505でNo)、成果物オブジェクト4211Aは、スタックが指定されているか否かを判定する(S515)。スタックが指定されている場合(S515でYes)、スタック用の読み取り処理が実行される(S516)。また、スタックが指定されていない場合(S515でNo)、その他の(ソート及びスタックが指定されていない場合の)読み取り処理が実行される(S517)。
【0091】
図16は、スタック用の読み取り処理を説明するためのフローチャートである。ここで、スタックとは、例えば、2枚の原稿を3部コピーする場合、1、1、1、2、2、2という順番で出力が行われ(数字は、原稿のページ番号を示す。)、ページ別で束ねられるモードをいう。具体的には、「1、1、1」という束と「2、2、2」という束とが異なる排紙トレイに出力されたり、同一の出力トレイにずれて出力されたりする。
【0092】
したがって、スタックが指定されている場合、成果物オブジェクト4211Aは、N枚目の原稿に対応する出力束オブジェクト4225Aをメモリ内に生成する(S521)。すなわち、スタックの場合は、原稿のページ数分(枚数分)の束が作成されるため、ページごとに出力束オブジェクト4225Aが生成される。なお、成果物オブジェクト4211Aは、各出力束オブジェクト4225Aをその生成順にチェーン構造で関連付ける。
【0093】
続いて、成果物オブジェクト4211Aは、N枚目に対応する出力束オブジェクト4225Aに、N枚目に対応する出力物オブジェクト4223Aを通知する(S522)。続いて、当該出力束オブジェクト4225Aは、自らに設定されている出力モードの値に基づいてスタックが指定されていることを判定し、通知された出力物オブジェクト4223Aより出力部数分の出力要素オブジェクト4224Aを取得する(S523)。したがって、3部であれば3つの出力要素オブジェクト4224Aが取得される。出力束オブジェクト4225Aは、取得された順に各出力要素オブジェクト4224Aをチェーン構造で関連付ける。
【0094】
続いて、成果物オブジェクト4211Aは、N枚目に対応する入力物オブジェクト4221Aに1枚目の原稿の入力を要求する(S524)。当該要求に応じ、入力物オブジェクト4221Aは、N枚目の原稿に対応する読み取り画像(スキャン画像)に対応する原画像オブジェクト4222Aをメモリ内に生成する(S525)。続いて、入力物オブジェクト4221Aは、原画像オブジェクト4222AにN枚目の原稿の読み取りを実行させる(S526)。次の原稿が有る場合(S527でYes)、成果物オブジェクト4211Aは、カウンタNをインクリメントし(S528)、N枚目の原稿に対する入力物オブジェクト4221Aをメモリ内に生成する(S529)。続いて、成果物オブジェクト4211Aは、N枚目の入力物オブジェクト4221Aに対応する出力物オブジェクト4223Aをメモリ内に生成し、出力物オブジェクト4223Aと入力物オブジェクト4221Aとの関連を生成する(S530)。続いて、ステップS521〜S530を繰り返す。
【0095】
したがって、例えば、原稿が2枚で出力部数が3のコピーにおいてスタックが指定されている場合、全ての原稿の読み取りを完了した時点での各オブジェクト間の関係は次のようになる。
【0096】
図17は、スタック指定の場合にインスタンス化されるドメインロジック層のオブジェクトの構成例を示す図である。
【0097】
同図に示されるように、スタックが指定されている場合は、原稿の枚数分の出力束オブジェクト4225Aが生成される。各出力束オブジェクト4225Aは、スタック単位で出力要素オブジェクト4224Aを束ねる。具体的には、一つ目の出力束オブジェクト4225A−1には、1枚目の原稿に対応する出力要素オブジェクト4224Aが三つ(3出力部数分)関連付けられる。二つ目の出力束オブジェクト4225A−2には、2枚目の原稿に対応する出力要素オブジェクト4224Aが三つ(3出力部数分)関連付けられる。なお、出力要素オブジェクト4224Aの参照番号の枝番は、10の桁がスタック単位の順番を、1の桁が原稿のページ(何枚目か)を示す。
【0098】
また、図18は、その他の読み取り処理を説明するためのフローチャートである。ソート及びスタックのいずれもが指定されていない場合は、出力順はスタックの場合と同じであるが、ページ別の束は作成されない。例えば、2枚の原稿を3部コピーする場合、1、1、1、2、2、2という一つの束がコピー結果として出力される。
【0099】
したがって、ソート及びスタックが指定されていない場合、成果物オブジェク4211Aは、一つの出力束オブジェクト4225Aを生成する(S531)。続いて、成果物オブジェクト4211Aは、当該出力束オブジェクト4225Aに、N枚目に対応する出力物オブジェクト4223Aを通知する(S532)。続いて、当該出力束オブジェクト4225Aは、自らに設定されている出力モードの値に基づいてソート及びスタックのいずれもが指定されていないことを判定し、通知された出力物オブジェクト4223Aより出力部数分の出力要素オブジェクト4224Aを取得する(S533)。したがって、3部であれば3つの出力要素オブジェクト4224Aが取得される。出力束オブジェクト4225Aは、取得された順に各出力要素オブジェクト4224Aをチェーン構造で関連付ける。
【0100】
続いて、成果物オブジェクト4211Aは、N枚目に対応する入力物オブジェクト4221Aに1枚目の原稿の入力を要求する(S534)。当該要求に応じ、入力物オブジェクト4221Aは、N枚目の原稿に対応する読み取り画像(スキャン画像)に対応する原画像オブジェクト4222Aをメモリ内に生成する(S535)。続いて、入力物オブジェクト4221Aは、原画像オブジェクト4222AにN枚目の原稿の読み取りを実行させる(S536)。次の原稿が有る場合(S537でYes)、成果物オブジェクト4211Aは、カウンタNをインクリメントし(S538)、N枚目の原稿に対する入力物オブジェクト4221Aをメモリ内に生成する(S539)。続いて、成果物オブジェクト4211Aは、N枚目の入力物オブジェクト4221Aに対応する出力物オブジェクト4223Aをメモリ内に生成し、出力物オブジェクト4223Aと入力物オブジェクト4221Aとの関連を生成する(S540)。続いて、ステップS531〜S540を繰り返す。
【0101】
したがって、例えば、原稿が2枚で出力部数が3部のコピーにおいてソート及びスタックが指定されていない場合、全ての原稿の読み取りを完了した時点での各オブジェクト間の関係は次のようになる。
【0102】
図19は、ソート及びスタックが指定されていない場合にインスタンス化されるドメインロジック層のオブジェクトの構成例を示す図である。
【0103】
同図に示されるように、ソート及びスタックが指定されていない場合は、一つの出力束オブジェクト4225Aに全ての出力要素オブジェクト4224Aが関連付けられている。なお、出力要素オブジェクト4224Aの参照番号の枝番は、原稿のページ(何枚目か)を示す。
【0104】
図14に戻る。全ての原稿の読み取りが完了すると、ステップS541に進み、成果物オブジェクト4211Aは、インスタンス化されている各出力束オブジェクト4225Aに対してチェーン構造の順番で出力の実行を要求する(S541)。当該要求に応じ、各出力束オブジェクト4225Aは、自らに関連付けられている各出力要素オブジェクト4224Aにチェーン構造の順番で出力の実行を要求する(S542)。その結果、各出力要素オブジェクト4224Aに対応する分のコピー面が印刷される(S543)。
【0105】
ソートが指定されている場合、図15のオブジェクト構成に基づいてステップS541以降が実行される。したがって、例えば、2枚の原稿を3部コピーする場合、「1、2」といった束(ソート単位)が三つ出力される。
【0106】
また、スタックが指定されている場合、図17のオブジェクト構成に基づいてステップS541以降が実行される。したがって、例えば、2枚の原稿を3部コピーする場合、「1、1、1」、「2、2、2」といった二つの束(スタック単位)が出力される。
【0107】
また、ソート及びスタックのいずれもが指定されていない場合、図19のオブジェクト構成に基づいてステップS541以降が実行される。したがって、例えば、2枚の原稿を3部コピーする場合、「1、1、1、2、2、2」といった一つの束が出力される。
【0108】
上述したように、第一の実施の形態において、ドメインロジック層42による処理内容は、アプリケーション60からは隠蔽される。すなわち、ドメインロジック層42の各クラスは、アプリケーション60から直接呼び出されることはない。したがって、複合機1の内部的なソフトウェア構成をサードベンダー等に公開する必要はない。よって、複合機1の開発ベンダーの技術流出を適切に防止することができる。
【0109】
また、ドメインロジック層42は、出力束オブジェクト4225Aによる出力要素オブジェクト4224Aの束ね方を変化させることによって、ソート指定、スタック指定に応じた出力順の制御を行っている。したがって、柔軟性が高くシンプルな構成が実現されている。斯かる構成によれば、保守性や機能拡張性を向上させることができる。
【0110】
ところで、第一の実施の形態では、撮像部104においてDF(Document Feeder)を制御して読み取り動作を行う際に表面の読み取りと裏面の読み取りとで異なる制御を行うことについて言及されていない。DFでの表面及び裏面の読み取り機能は、主にDFを用いての両面読み取りを実現するために必要な機能であり、ユーザビリティを向上させることができる機能である。
【0111】
図20は、DF読み取り方式と圧板読み取りとを説明するための図である。同図において、(A)はDF読み取り方式を示し、(B)は圧板読み取り方式を示す。DF読み取り方式では、固定位置に置かれた読み取り部によってDFによって副走査方向に移送中の原稿から画像データが読み取られる。圧板読み取り方式では、圧板上に載置(固定)された原稿に対して読み取り部を副走査方向に走査(移動)させることで画像データが読み取られる。
【0112】
DF読み取り方式による表面読み取りでは、一つの径路に原稿を搬送させることにより表面の原稿を読取ることができる。裏面読み取りでは、原稿を反転させるために,反転径路に原稿を通す必要がある。なお、DF方式については、特開2001−272829号公報に詳しい。
【0113】
以下、ドメインロジック層42を両面読み取り機能に対応させた例として、第二の実施の形態を説明する。
【0114】
図21は、第二の実施の形態におけるドメインロジック層のクラス構成例を示す図である。図21中、図4と同一クラスには同一符号を付している。なお、同図では、便宜上、要求管理部421、I/Oファンクション部422、及びI/Oリソース管理部423のみが示されている。ここでは、図4との差分についてのみ説明する。
【0115】
同図において、原画像クラス4222は、表面/裏面属性及び読み取り方式属性を有する。表面/裏面属性は、原画像オブジェクト4222Aが対応する原稿の読み取り面を示す。例えば、「0」は表面を示し、「1」は裏面を示す。読み取り方式属性は、原画像オブジェクト4222Aが対応する画像データの読み取り方式を示す。例えば、「0」はDF読み取り方式を示し、「1」は圧板読み取り方式を示す。
【0116】
以下、第二の実施の形態のドメインロジック層42における処理手順について説明する。第二の実施の形態のドメインロジック層42による処理手順は、基本的に図11〜図13において説明したものとほぼ同様である。ここでは、第一の実施の形態において説明した点と異なる点について説明する。
【0117】
第二の実施の形態では、ジョブの開始時にオペレーションパネル102を介してユーザによって両面読み取りが設定され、原稿は、DFにセットされたこととする。この場合、ジョブ設定値(要求属性値群オブジェクト413Aの内容)には、両面印刷と、DF読み取りとを示す情報とがアプリケーション60によって設定されている。
【0118】
ステップS353において、入力物オブジェクト4221Aは、ジョブ設定値に両面印刷が設定されていることに基づいて、1枚目の原稿に対応する読み取り画像(スキャン画像)に対応する原画像オブジェクト4222Aとして、当該原稿の表面に対する原画像オブジェクト4222Aと裏面に対する原画像オブジェクト4222Aとの二つの原画像オブジェクト4222Aをメモリ内に生成する。この際、表面に対する原画像オブジェクト4222Aの表面/裏面属性には表面を示す値が設定され、裏面に対する原画像オブジェクト4222Aの表面/裏面属性には裏面を示す値が設定される。また、入力物オブジェクト4221Aは、ジョブ設定値にDF読み取りが設定されていることに基づいて、生成された二つの原画像オブジェクト4222のそれぞれの読み取り方式属性に、DF読み取りを示す値を設定する。なお、ジョブ設定値に圧板読み取りが設定されていた場合、入力物オブジェクト4222Aは、原画像オブジェクト4222Aの読み取り方式属性に、圧板読み取りを示す値を設定する。圧板読み取りの場合は、両面読み取りを実行することはできない。したがって、この場合、入力物オブジェクト4221Aは、第一の実施の形態のように、一つの原稿面(片面)に対する原画像オブジェクト4221Aのみを生成する。
【0119】
続いて、ステップS355において、入力物オブジェクト4221Aは、生成された二つの原画像オブジェクト4222Aに対して順番に読み取りの実行を要求する。すなわち、まず、表面に対応する原画像オブジェクト4222Aに対して読み取りの実行が要求される。当該原画像オブジェクト4222Aは、当該要求に応じ、入力リソースオブジェクト4231A及びサービス層43等を介して撮像部104にDFを利用した原稿の表面の読み取りを実行させる(S357)。読み取られた画像データ(スキャン画像)は、メモリ内に記録され、そのアドレス情報がサービス層43及び入力リソースオブジェクト4231を経て当該原画像オブジェクト4222Aに対して通知される。したがって、当該原画像オブジェクト4222Aは、当該アドレス情報を保持することにより、表面のスキャン画像に関連付けられる。
【0120】
続いて、裏面に対応する原画像オブジェクト4222Aに対して読み取りの実行が要求される。当該原画像オブジェクト4222Aは、当該要求に応じ、入力リソースオブジェクト4231A及びサービス層43等を介して撮像部104にDFを利用した原稿の裏面の読み取りを実行させる(S357)。読み取られた画像データ(スキャン画像)は、メモリ内に記録され、そのアドレス情報がサービス層43及び入力リソースオブジェクト4231を経て当該原画像オブジェクト4222Aに対して通知される。したがって、当該原画像オブジェクト4222Aは、当該アドレス情報を保持することにより、裏面のスキャン画像に関連付けられる。
【0121】
なお、裏面の読み取りの際は、原稿を反転させるための動作が撮像部104において行われる。また、原画像オブジェクト4222Aによって圧板読み取りが指定された場合、撮像部104は、圧板より原稿を読み取る。
【0122】
上述したように、第二の実施の形態によれば、DFを利用した原稿の両面読み取り機能を実現することができる。また、ジョブ設定値に応じて、片面読み取り又は両面読み取りを切り替えることができる。また、ジョブ設定値に応じて、DF読み取り又は圧板読み取りを切り替えることができる。
【0123】
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【0124】
1 複合機
20 OS
21 ドライバプログラム
30 JVM
31 CDC
32 Foundation Profile
40 MFPプロファイル
41 プレゼンテーション層
42 ドメインロジック層
43 サービス層
50 ネイティブモジュール
60 アプリケーション
61 プリントアプリ
62 コピーアプリ
63 スキャンアプリ
64 FAXアプリ
101 コントローラ
102 オペレーションパネル
103 ファクシミリコントロールユニット
104 撮像部
105 印刷部
111 CPU
112 ASIC
121 NB
122 SB
131 MEM−P
132 MEM−C
133 HDD
134 メモリカードスロット
135 メモリカード
141 NIC
142 USBデバイス
143 IEEE1394デバイス
144 セントロニクスデバイス
411 サービス検索クラス
412 入出力形式クラス
413 要求属性値群クラス
414 サービスクラス
415 ドキュメントクラス
416 ジョブクラス
421 要求管理部
422 I/Oファンクション部
423 I/Oリソース管理部
424 システム管理部
4141 サービス属性値群クラス
4151 ドキュメント属性値群クラス
4161 ジョブ属性値群クラス
4211 成果物クラス
4221 入力物クラス
4222 原画像クラス
4223 出力物クラス
4224 出力要素クラス
4225 出力束クラス
4231 入力リソースクラス
4232 出力リソースクラス
4241 機内監視クラス
【先行技術文献】
【特許文献】
【0125】
【特許文献1】特開2007−325251号公報

【特許請求の範囲】
【請求項1】
アプリケーションから要求されたジョブを実行する画像形成装置であって、
前記ジョブに対する設定情報を前記アプリケーションより受け付ける設定情報受付手段と、
前記アプリケーションよりジョブの実行要求を受け付けるジョブ実行要求受付手段と、
前記ジョブ実行要求受付手段からの要求に応じ、前記ジョブの設定情報に従ってジョブの実行を制御するジョブ実行制御手段と、
前記設定情報に設定された原稿の読み取り方式及び読み取り面に従って前記原稿からの画像データの読み取りを実行させる入力物管理手段と、
前記設定情報に基づいて判定される、前記画像データに基づく前記ジョブの出力物の出力面ごとに当該出力面の出力を実行させる出力要素管理手段と、
前記出力面ごとの出力要素管理手段を前記出力面の出力順に応じて束ね、前記ジョブ実行制御手段からの要求に応じ、束ねている前記出力要素管理手段に対して前記出力順に応じて前記出力面の出力の実行を要求する出力束管理手段とを有することを特徴とする画像形成装置。
【請求項2】
前記入力物管理手段は、前記設定情報に応じて、前記原稿の片面又は両面を読み取ることを特徴とする請求項1記載の画像形成装置。
【請求項3】
前記入力物管理手段は、前記設定情報に応じて、DF読み取り又は圧板読み取りによって前記原稿を読み取ることを特徴とする請求項1又は2記載の画像形成装置。
【請求項4】
アプリケーションから要求されたジョブを実行する画像形成装置が実行するジョブ実行方法であって、
設定情報受付手段が、前記ジョブに対する設定情報を前記アプリケーションより受け付ける第一の手順と、
ジョブ実行要求受付手段が、前記アプリケーションよりジョブの実行要求を受け付ける第二の手順と、
ジョブ実行制御手段が、前記ジョブ実行要求受付手段からの要求に応じ、前記ジョブの設定情報に従ってジョブの実行を制御する第三の手順と、
入力物管理手段が、前記設定情報に設定された原稿の読み取り方式及び読み取り面に従って前記原稿からの画像データの読み取りを実行させる第四の手順と、
出力要素管理手段が、前記設定情報に基づいて判定される、前記画像データに基づく前記ジョブの出力物の出力面ごとに当該出力面の出力を実行させる第五の手順と、
前記出力束管理手段が、前記出力面ごとの出力要素管理手段を前記出力面の出力順に応じて束ね、前記ジョブ実行制御手段からの要求に応じ、束ねている前記出力要素管理手段に対して前記出力順に応じて前記出力面の出力の実行を要求する第六の手順とを有するジョブ実行方法。
【請求項5】
前記第六の手順において、前記入力物管理手段は、前記設定情報に応じて、前記原稿の片面又は両面を読み取ることを特徴とする請求項4記載のジョブ実行方法。
【請求項6】
前記第六の手順において、前記入力物管理手段は、前記設定情報に応じて、DF読み取り又は圧板読み取りによって前記原稿を読み取ることを特徴とする請求項4又は5記載のジョブ実行方法。
【請求項7】
画像形成装置を、
アプリケーションから要求されたジョブに対する設定情報を前記アプリケーションより受け付ける設定情報受付手段と、
前記アプリケーションよりジョブの実行要求を受け付けるジョブ実行要求受付手段と、
前記ジョブ実行要求受付手段からの要求に応じ、前記ジョブの設定情報に従ってジョブの実行を制御するジョブ実行制御手段と、
前記設定情報に設定された原稿の読み取り方式及び読み取り面に従って前記原稿からの画像データの読み取りを実行させる入力物管理手段と、
前記設定情報に基づいて判定される、前記画像データに基づく前記ジョブの出力物の出力面ごとに当該出力面の出力を実行させる出力要素管理手段と、
前記出力面ごとの出力要素管理手段を前記出力面の出力順に応じて束ね、前記ジョブ実行制御手段からの要求に応じ、束ねている前記出力要素管理手段に対して前記出力順に応じて前記出力面の出力の実行を要求する出力束管理手段として機能させるためのプログラム。
【請求項8】
前記入力物管理手段は、前記設定情報に応じて、前記原稿の片面又は両面を読み取ることを特徴とする請求項7記載のプログラム。
【請求項9】
前記入力物管理手段は、前記設定情報に応じて、DF読み取り又は圧板読み取りによって前記原稿を読み取ることを特徴とする請求項7又は8記載のプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate


【公開番号】特開2010−206408(P2010−206408A)
【公開日】平成22年9月16日(2010.9.16)
【国際特許分類】
【出願番号】特願2009−48428(P2009−48428)
【出願日】平成21年3月2日(2009.3.2)
【出願人】(000006747)株式会社リコー (37,907)
【Fターム(参考)】