(57)【要約】【課題】アプリケーションの実行環境を適切に提供することができる、画像形成装置、ジョブ実行方法、及びプログラムを提供すること。【解決手段】設定情報受付手段と、ジョブ実行要求受付手段と、ジョブ実行要求受付手段からの要求に応じ、ジョブの実行を制御するジョブ実行制御手段と、設定情報に基づいて判定される、ジョブの出力物の出力面ごとに出力を実行させる出力要素管理手段と、出力面ごとの出力要素管理手段を出力面の出力順に応じて束ね、出力順に応じて出力面の出力を要求する出力束管理手段と、設定情報に基づいて出力物及び束ねた出力束に対して後処理の実行要求を受け付ける後処理実行要求受付手段と、後処理実行要求受付手段からの要求に応じ、出力束に対する後処理の実行を制御する後処理実行制御手段と、後処理の実行を管理する後処理管理手段と、有することを特徴とする。【選択図】図４
2011042096.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションから要求されたジョブを実行し、出力物に後処理を施す画像形成装置であって、
前記ジョブに対する設定情報を前記アプリケーションより受け付ける設定情報受付手段と、
前記アプリケーションよりジョブの実行要求を受け付けるジョブ実行要求受付手段と、
前記ジョブ実行要求受付手段からの要求に応じ、前記設定情報に従ってジョブの実行を制御するジョブ実行制御手段と、
前記設定情報に基づいて判定される、前記ジョブの出力物の出力面ごとに当該出力面の出力を実行させる出力要素管理手段と、
前記出力面ごとの前記出力要素管理手段を前記出力面の出力順に応じて束ね、前記ジョブ実行制御手段からの要求に応じ、束ねている前記出力要素管理手段に対して前記出力順に応じて前記出力面の出力の実行を要求する出力束管理手段と、
前記設定情報に基づいて、前記出力要素管理手段に対して後処理の実行要求を受け付ける後処理実行要求受付手段と、
前記後処理実行要求受付手段からの要求に応じ、前記出力要素管理手段に対する後処理の実行を制御する後処理実行制御手段と、
後処理の実行を管理する後処理管理手段と、
を有することを特徴とする画像形成装置。
【請求項２】
束ねた前記出力要素管理手段に対する仕上げの実行要求を受け付ける仕上げ処理実行要求受付手段と、
仕上げ処理実行要求受付手段からの要求に応じ、束ねられた前記出力要素管理手段に対して仕上げ処理を制御する仕上げ実行制御手段と、
仕上げ処理の実行を管理する仕上げ処理管理手段と、
を有することを特徴とする請求項１記載の画像形成装置。
【請求項３】
前記仕上げ処理実行要求受付手段は、前記設定情報に基づいて、前記仕上げ処理実行制御手段の状態を確認して、前記仕上げ処理実行要求受付手段にて受け付けた仕上げ処理実行要求が実行できるかどうかを判定する、
ことを特徴とする請求項２記載の画像形成装置。
【請求項４】
前記仕上げ処理管理手段は、
前記設定情報に、束ねられた前記出力要素管理手段のリング綴じが仕上げ処理として指定されている場合、当該画像形成装置を仕上げ処理実行制御手段として機能させるためのオブジェクトを生成し、
前記仕上げ処理実行制御手段として機能させるためのオブジェクトが、前記設定情報にもとづいて、束ねられた前記出力要素管理手段に対しリング綴じ処理を施す、
ことを特徴とする請求項２記載の画像形成装置。
【請求項５】
前記仕上げ処理管理手段は、
前記設定情報に、束ねられた前記出力要素管理手段の挿入が仕上げ処理として指定されている場合、当該画像形成装置を仕上げ処理実行制御手段として機能させるためのオブジェクトを生成し、
前記仕上げ処理実行制御手段として機能させるためのオブジェクトが、前記設定情報にもとづいて、束ねられた前記出力要素管理手段に対し挿入処理を施す、
ことを特徴とする請求項２記載の画像形成装置。
【請求項６】
前記仕上げ処理管理手段は、
前記設定情報に、束ねられた前記出力要素管理手段の製本が仕上げ処理として指定されている場合、当該画像形成装置を仕上げ処理実行制御手段として機能させるためのオブジェクトを生成し、
前記仕上げ処理実行制御手段として機能させるためのオブジェクトが、前記設定情報にもとづいて、束ねられた前記出力要素管理手段に対し製本処理を施す、
ことを特徴とする請求項２記載の画像形成装置。
【請求項７】
前記仕上げ処理管理手段は、
前記設定情報に、複数の仕上げ処理が設定されている場合は、当該画像形成装置を仕上げ処理実行制御手段として機能させるための複数のオブジェクトを生成し、
前記処理実行制御手段として機能させるためのオブジェクトが、束ねられた前記出力要素管理手段に対し、前記設定情報により指定された複数の仕上げ処理を施す、
ことを特徴とする請求項２記載の画像形成装置。
【請求項８】
前記仕上げ処理管理手段は、
前記設定情報に、仕上げ処理が設定されている場合、当該画像形成装置を仕上げ処理実行制御手段として機能させるためのオブジェクトを生成し、
前記仕上げ処理実行制御手段として機能させるためのオブジェクトが、束ねられた前記出力要素管理手段に対し、前記設定情報により指定された仕上げ処理を施す際に、
当該画像形成装置内の異常によって仕上げ処理が継続できないと判断した場合、仕上げ処理の実行を途中で中止する、
ことを特徴とする請求項２記載の画像形成装置。
【請求項９】
前記仕上げ処理管理手段は、仕上げ処理の実行を途中で中止した場合、仕上げ処理中のジョブに対し、異常発生時用の処理を施す、
ことを特徴とする請求項８記載の画像形成装置。
【請求項１０】
アプリケーションから要求されたジョブを実行し、出力物に後処理を施す画像形成装置のジョブ実行方法であって、
設定情報受付手段が、前記ジョブに対する設定情報を前記アプリケーションより受け付けるステップと、
ジョブ実行要求受付手段が、前記アプリケーションよりジョブの実行要求を受け付けるステップと、
ジョブ実行制御手段が、前記ジョブ実行要求受付手段からの要求に応じ、前記ジョブの設定情報に従ってジョブの実行を制御するステップと、
出力要素管理手段が、前記設定情報に基づいて判定される、前記ジョブの出力物の出力面ごとに当該出力面の出力を実行させるステップと、
出力束管理手段が、前記出力面ごとの前記出力要素管理手段を前記出力面の出力順に応じて束ね、前記ジョブ実行制御手段からの要求に応じ、束ねている前記出力要素管理手段に対して前記出力順に応じて前記出力面の出力の実行を要求するステップと、
後処理実行要求受付手段が、前記設定情報に基づいて、前記出力要素管理手段に対して後処理の実行要求を受け付けるステップと、
後処理実行制御手段が、前記後処理実行要求受付手段からの要求に応じ、前記出力要素管理手段に対する後処理の実行を制御するステップと、
後処理管理手段が、後処理の実行を管理するステップと、
を有することを特徴とするジョブ実行方法。
【請求項１１】
アプリケーションから要求されたジョブを実行し、出力物に後処理を施す画像形成装置を、
前記ジョブに対する設定情報を前記アプリケーションより受け付ける設定情報受付手段と、
前記アプリケーションよりジョブの実行要求を受け付けるジョブ実行要求受付手段と、
前記ジョブ実行要求受付手段からの要求に応じ、前記設定情報に従ってジョブの実行を制御するジョブ実行制御手段と、
前記設定情報に基づいて判定される、前記ジョブの出力物の出力面ごとに当該出力面の出力を実行させる出力要素管理手段と、
前記出力面ごとの前記出力要素管理手段を前記出力面の出力順に応じて束ね、前記ジョブ実行制御手段からの要求に応じ、束ねている前記出力要素管理手段に対して前記出力順に応じて前記出力面の出力の実行を要求する出力束管理手段と、
前記設定情報に基づいて、前記出力要素管理手段に対して後処理の実行要求を受け付ける後処理実行要求受付手段と、
前記後処理実行要求受付手段からの要求に応じ、前記出力要素管理手段に対する後処理の実行を制御する後処理実行制御手段と、
後処理の実行を管理する後処理管理手段と、
として機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像形成装置、ジョブ実行方法、及びプログラムに関し、特にアプリケーションから要求されたジョブを実行する画像形成装置、ジョブ実行方法、及びプログラムに関する。
【背景技術】
【０００２】
特許文献１には、パイプ＆フィルタアーキテクチャを採用し、フィルタと呼ばれるソフトウェアコンポーネントの組み合わせによって構成されるアクティビティと呼ばれるソフトウェアコンポーネントによって、ジョブを実行するアプリケーションが実現される画像形成装置が開示されている。このような画像形成装置によれば、新たな機能の実装に関する柔軟性を著しく向上させることができる。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
しかしながら、特許文献１に記載された画像形成装置において新たなアプリケーション（特許文献１における「アクティビティ」）を実装する場合、フィルタを組み合わせるための知識が開発者に必要とされる。また、アプリケーションの実装に伴って、新たなフィルタを実装する必要がある場合、当該フィルタを実装するための知識が必要とされる。
【０００４】
このような知識は、画像形成装置においてジョブを実行するためのアーキテクチャ又はロジックに関する比較的深い層に属する部分である。斯かる部分について、サードベンダー等による開発を可能とするためには、画像形成装置のベンダーは、当該部分についてかなり詳しい技術内容を開示しなければならないことになる。その結果、企業秘密として保持してきたい重要な技術をも開示する必要性が高まり、技術流出の可能性が高まる虞がある。
【０００５】
また、特許文献１に記載された画像形成装置では、以上のような知識を会得するまでの初回の開発コストが大きくなる可能性が高い。したがって、初回の開発コストをより小さく抑えられるアーキテクチャの提供が望まれる。
【０００６】
本出願人は、上記の点を鑑みて、アプリケーションの実行環境を適切に提供することのできる画像形成装置、ジョブ実行方法、及びプログラムを提供する提案を行った。
【０００７】
しかしながら、提案した技術においては、印刷物出力後にステープルなどの仕上げ処理をすることなどは考えられていなかった。印刷物出力後の仕上げ処理機能はユーザへの利便性向上の観点からは非常に重要な機能である。
【０００８】
本発明は、上記の点に鑑みてなされたものであって、仕上げ処理においてもアプリケーションの実行環境を適切に提供することのでき、仕上げ処理機能が実現できる画像形成装置、ジョブ実行方法、及びプログラムの提供を目的とする。
【課題を解決するための手段】
【０００９】
そこで上記課題を解決するため、本発明は、アプリケーションから要求されたジョブを実行し、出力物に後処理を施す画像形成装置であって、前記ジョブに対する設定情報を前記アプリケーションより受け付ける設定情報受付手段と、前記アプリケーションよりジョブの実行要求を受け付けるジョブ実行要求受付手段と、前記ジョブ実行要求受付手段からの要求に応じ、前記設定情報に従ってジョブの実行を制御するジョブ実行制御手段と、前記設定情報に基づいて判定される、前記ジョブの出力物の出力面ごとに当該出力面の出力を実行させる出力要素管理手段と、前記出力面ごとの前記出力要素管理手段を前記出力面の出力順に応じて束ね、前記ジョブ実行制御手段からの要求に応じ、束ねている前記出力要素管理手段に対して前記出力順に応じて前記出力面の出力の実行を要求する出力束管理手段と、前記設定情報に基づいて、前記出力要素管理手段に対して後処理の実行要求を受け付ける後処理実行要求受付手段と、前記後処理実行要求受付手段からの要求に応じ、前記出力要素管理手段に対する後処理の実行を制御する後処理実行制御手段と、後処理の実行を管理する後処理管理手段と、有することを特徴とする。
【００１０】
このような画像形成装置では、アプリケーションの実行環境を適切に提供することがで
きる。
【発明の効果】
【００１１】
アプリケーションの実行環境を適切に提供することができる、画像形成装置、ジョブ実行方法、及びプログラムを提供できる。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施の形態における画像形成装置のハードウェア構成の一例を示す図である。
【図２】本発明の実施の形態における複合機のソフトウェア構成例を示す図である。
【図３】ＭＦＰプロファイルの構成例を示す図である。
【図４】ＭＦＰプロファイルの各層のクラス構成例を示す図である。
【図５】ＪＰＳの概念モデルを示す図である。
【図６】プレゼンテーション層がＪＰＳを包含する例を示す図である。
【図７】プレゼンテーション層がＪＰＳを包含する場合のアプリケーションとＪＳＰとの関係を示す図である。
【図８】ＪＰＳがＭＦＰサービス抽象モデルを継承する例を示す図である。
【図９】アプリケーションが複合機にジョブを実行させるための処理手順を説明するためのシーケンス図である。
【図１０】アプリケーションが複合機にジョブを実行させるために実装が必要とされる手順を示すフローチャートである。
【図１１】ドメインロジック層における処理手順を説明するためのシーケンス図である。
【図１２】ドメインロジック層における処理手順を説明するためのシーケンス図である。
【図１３】ドメインロジック層における処理手順を説明するためのシーケンス図である。
【図１４】ドメインロジック層における処理手順を説明するためのシーケンス図である（後処理）。
【図１５】ドメインロジック層における処理手順を説明するためのシーケンス図である（後処理）。
【図１６】ドメインロジック層における処理手順を説明するためのシーケンス図である（後処理）。
【図１７】ドメインロジック層における処理手順を説明するためのシーケンス図である（後処理）。
【図１８】ドメインロジック層における処理手順を説明するためのシーケンス図である（後処理＆仕上げ処理）。
【図１９】ドメインロジック層における処理手順を説明するためのシーケンス図である（後処理＆仕上げ処理）。
【図２０】ドメインロジック層における処理手順を説明するためのシーケンス図である（後処理＆仕上げ処理）。
【図２１】ドメインロジック層における処理手順を説明するためのシーケンス図である（後処理＆仕上げ処理）。
【図２２】コピージョブを実行する際のドメインロジック層における処理手順を説明するための汎用的なフローチャートである。
【図２３】ソート指定の場合にインスタンス化されるドメインロジック層のオブジェクトの構成例を示す図である。
【図２４】スタック用の読み取り処理を説明するためのフローチャートである。
【図２５】スタック指定の場合にインスタンス化されるドメインロジック層のオブジェクトの構成例を示す図である。
【図２６】その他の読み取り処理を説明するためのフローチャートである。
【図２７】ソート及びスタックが指定されていない場合にインスタンス化されるドメインロジック層のオブジェクトの構成例を示す図である。
【図２８】コピージョブを実行した後、後処理を実行する際のドメインロジック層における処理手順を説明するための汎用的なフローチャート図の一例である。
【図２９】後処理オブジェクトのインスタンスリストの一例を示す図である。
【図３０】後処理の実行の様子を示すフローチャート図の一例である。
【図３１】コピージョブを実行した後、後処理と仕上げ処理を実行する際のドメインロジック層における処理手順を説明するための汎用的なフローチャート図の一例である。
【図３２】仕上げ処理オブジェクトのインスタンスリストの一例を示す図である。
【図３３】仕上げ処理としての後処理の実行の手順を示すフローチャート図である。
【発明を実施するための形態】
【００１３】
最初に、画像形成装置の仕上げ処理について説明する。仕上げ処理とは、画像形成装置によって複数種のステープル、パンチ、Z折りなどの後処理を施した印刷物に対して行われる、製本、リング綴じなどの処理である。仕上げ処理の機能は画像形成装置本体または画像形成装置に付属するオプション機能として実現される。それぞれの機能はユーザの使用目的によって設定できるようになっており、ユーザが望むとおりの仕上げ処理を行い、印刷成果物として、仕上げ処理済みの印刷物を出力する機能をも提供するようになっている。
【００１４】
以下、図面に基づいて本発明の実施の形態を説明する。
図１は、本発明の実施の形態における画像形成装置のハードウェア構成の一例を示す図である。図１では、画像形成装置の具体例として、プリンタ、コピー、スキャナ、又は、ファクス等の複数の機能を一台の筐体において実現する複合機１のハードウェア構成が示されている。
【００１５】
複合機１のハードウェアとしては、コントローラ１０１と、オペレーションパネル１０２と、ファクシミリコントロールユニット（ＦＣＵ）１０３と、撮像部１０４と、印刷部１０５が存在する。
【００１６】
コントローラ１０１は、ＣＰＵ１１１、ＡＳＩＣ１１２、ＮＢ１２１、ＳＢ１２２、ＭＥＭ−Ｐ１３１、ＭＥＭ−Ｃ１３２、ＨＤＤ（ハードディスクドライブ）１３３、メモリカードスロット１３４、ＮＩＣ（ネットワークインタフェースコントローラ）１４１、ＵＳＢデバイス１４２、ＩＥＥＥ１３９４デバイス１４３、セントロニクスデバイス１４４により構成される。
【００１７】
ＣＰＵ１１１は、種々の情報処理用のＩＣである。ＡＳＩＣ１１２は、種々の画像処理用のＩＣである。ＮＢ１２１は、コントローラ１０１のノースブリッジである。ＳＢ１２２は、コントローラ１０１のサウスブリッジである。ＭＥＭ−Ｐ１３１は、複合機１のシステムメモリである。ＭＥＭ−Ｃ１３２は、複合機１のローカルメモリである。ＨＤＤ１３３は、複合機１のストレージである。メモリカードスロット１３４は、メモリカード１３５をセットするためのスロットである。ＮＩＣ１４１は、ＭＡＣアドレスによるネットワーク通信用のコントローラである。ＵＳＢデバイス１４２は、ＵＳＢ規格の接続端子を提供するためのデバイスである。ＩＥＥＥ１３９４デバイス１４３は、ＩＥＥＥ１３９４規格の接続端子を提供するためのデバイスである。セントロニクスデバイス１４４は、セントロニクス仕様の接続端子を提供するためのデバイスである。オペレーションパネル１０２は、オペレータが複合機１に入力を行うためのハードウェア（操作部）であると共に、オペレータが複合機１から出力を得るためのハードウェア（表示部）である。
【００１８】
図２は、本発明の実施の形態における複合機のソフトウェア構成例を示す図である。同図において、複合機１は、ＯＳ２０、ドライバプログラム２１、ＪＶＭ３０、ＣＤＣ３１、Ｆｏｕｎｄａｔｉｏｎ  Ｐｒｏｆｉｌｅ３２、ＭＦＰプロファイル４０、ネイティブモジュール５０、及びアプリケーション６０等を有する。
【００１９】
ＯＳ２０は、いわゆるＯＳ（Operating System）である。ドライバプログラム２１は、ハードウェアを制御する各種のプロラムモジュールである。ＪＶＭ３０は、Java（登録商標） Virtual Machine（仮想マシン）であり、Ｊａｖａ（登録商標）の実行環境を実現する。ＣＤＣ（Connected Device Configuration）３１及びＦｏｕｎｄａｔｉｏｎ  Ｐｒｏｆｉｌｅ３２は、Ｊａｖａ（登録商標）  Ｍｉｃｒｏ  Ｅｄｉｔｉｏｎの基本構成である。
【００２０】
ＭＦＰプロファイル４０は、複合機１用のアプリケーション６０の開発環境及び実行環境を提供するプラットフォーム（プログラムモジュール群）である。より詳しくは、ＭＦＰプロファイル４０は、複合機１にジョブを実行させるためのＪａｖａ（登録商標）インタフェース（ＡＰＩ（Application Program Interface））をアプリケーション６０に提供し、当該インタフェースの呼び出しに応じて複合機１を制御する。なお、ＭＦＰ（Mult function Peripheral）とは、複合機の略称である。
【００２１】
ネイティブモジュール５０は、ネイティブコードによって記述されたプログラムモジュール群である。ネイティブモジュール５０は、例えば、Ｃ言語やＣ＋＋言語によるインタフェース（ＡＰＩ）をアプリケーション６０に提供し、当該インタフェースの呼び出しに応じて複合機１を制御する。
【００２２】
アプリケーション６０は、複合機１にジョブを実行させるプログラムであり、プリントアプリ６１、コピーアプリ６２、スキャンアプリ６３、ＦＡＸアプリ６４等、ジョブ種別（印刷、コピー、スキャン、ＦＡＸ送信等）に応じて複数のアプリケーション６０が存在する。各アプリケーション６０は、ＭＦＰプロファイル４０又はネイティブモジュール５０によって提供されるインタフェースに基づいて開発される。厳密には、Ｊａｖａ（登録商標）コードによるアプリケーション６０からはＭＦＰプロファイル４０が利用され、ネイティブコードによるアプリケーション６０からはネイティブモジュール５０が利用される。
【００２３】
本実施の形態において、ＭＦＰプロファイル４０及びネイティブモジュール５０のインタフェースは複合機１のメーカー外にも公開されている。したがって、アプリケーション６０は、複合機１のメーカーだけでなく、サードベンダー等によっても開発可能である。ユーザから見た場合、複合機１を導入（設置）した後に、市場で販売されている新たなアプリケーション６０を複合機１にインストールし、複合機１の機能強化を図ることができる。
【００２４】
本実施の形態では、特に、ＭＦＰプロファイル４０について説明する。
図３は、ＭＦＰプロファイルの構成例を示す図である。
【００２５】
同図において、ＭＦＰプロファイル４０は、プレゼンテーション層４１、ドメインロジック層４２、及び、サービス層４３等より構成される。なお、図中における各層の上下関係は、層間の呼び出し関係（利用関係）に基づいている。基本的に上の層が下の層を呼び出す（利用する）。
【００２６】
プレゼンテーション層４１は、アプリケーション６０に公開されるインタフェース部分である。すなわち、プレゼンテーション層４１は、アプリケーション６０からの要求を受け付け、当該要求に対する応答をアプリケーション６０に返却する。なお、アプリケーション６０の開発者からはプレゼンテーション層４１のみが興味の対象となる。
【００２７】
ドメインロジック層４２は、プレゼンテーション層４１によって受け付けられたアプリケーション６０からの要求に応じ、複合機１にジョブを実行させるためのロジックが実装されている部分である。ドメインロジック層４２は、その役割（責務）に応じて要求管理部４２１、Ｉ／Ｏファンクション部４２２、Ｉ／Ｏリソース管理部４２３、及び、システム管理部４２４等に細部化される。
【００２８】
要求管理部４２１は、プレゼンテーション層４１によって受け付けられるアプリケーション６０からの要求を管理する。Ｉ／Ｏファンクション部４２２は、ジョブ対するデータの入力やジョブの実行によるデータの出力等の機能を実現する。Ｉ／Ｏリソース管理部４２３は、撮像部１０４や印刷部１０５等のデータの入出力に関するハードウェアリソースを管理する。システム管理部４２４は、要求管理部４２１、Ｉ／Ｏファンクション部４２２、及び、Ｉ／Ｏリソース管理部４２３等の横断的関心事（例えば、各部より共通に利用される情報）を管理する。
【００２９】
サービス層４３は、デバイス、ミドルウェア、又は、ＯＳ等へのアクセスを隠蔽する部分である。すなわち、サービス層４３によって、複合機１の機種の違い、又は複合機１において利用されるミドルウェア又はＯＳ等の違いが吸収される。
【００３０】
ＭＦＰプロファイル４０の各層について更に詳しく説明する。
図４は、ＭＦＰプロファイルの各層のクラス構成例を示す図である。なお、同図のクラス群は、インタフェースを示す。したがって、実装は当該インタフェースに対する実装クラスにおいて行われる。以下において、「ＸＸＸクラスのインスタンス」というとき、ＸＸＸクラスの実装クラスのインスタンスを意味する。
【００３１】
同図において、プレゼンテーション層４１は、サービス検索クラス４１１、入出力形式クラス４１２、要求属性値群クラス４１３、サービスクラス４１４、サービス属性値群クラス４１４１、ドキュメントクラス４１５、ドキュメント属性値群クラス４１５１、ジョブクラス４１６、及びジョブ属性値群クラス４１６１等を含む。
【００３２】
サービス検索クラス４１１のインスタンス（サービス検索オブジェクト）は、アプリケーション６０からの要求に応じサービスを検索する。サービスとは、ジョブの実行に関係するソフトウェア及びハードウェアの集合（すなわち、ジョブの実行主体）をいう。サービスの検索条件は、入出力形式クラス４１２のインスタンスと要求属性値群クラス４１３のインスタンスとによって指定される。
【００３３】
入出力形式クラス４１２のインスタンス（入出力形式オブジェクト）は、ジョブの入力データ又は出力データのデータ形式を保持する。要求属性値群クラス４１３のインスタンス（要求属性値群オブジェクト）は、アプリケーション６０から要求において指定されるジョブに対する設定値の集合を保持する。
【００３４】
サービスクラス４１４のインスタンス（サービスオブジェクト）は、サービスの代表を表現する。サービスクラス４１４の実装クラスはサービスごとに定義される。サービス属性値群クラス４１４１のインスタンス（サービス属性値群オブジェクト）は、サービスの状態を保持する。
【００３５】
ドキュメントクラス４１５のインスタンス（ドキュメントオブジェクト）は、ジョブに対して入力されるドキュメント（データ）を表現する。例えば、印刷ジョブであれば印刷データが相当する。ドキュメント属性値群クラス４１５１のインスタンス（ドキュメント属性値群オブジェクト）は、ドキュメントの属性を保持する。
【００３６】
ジョブクラス４１６のインスタンス（ジョブオブジェクト）は、ジョブを表現する。ジョブクラス４１６の実装クラスはジョブの種別ごとに定義される。ジョブ属性値群クラス４１６１のインスタンス（ジョブ属性値群オブジェクト）は、ジョブの状態を保持する。
【００３７】
また、ドメインロジック層４２の要求管理部４２１は、成果物クラス４２１１を含む。成果物クラス４２１１のインスタンス（成果物オブジェクト）は、ジョブによる成果物を実現するための処理（すなわち、ジョブの実行制御）を行う。成果物オブジェクトは、成果物の構成要素や、成果物の進捗状況等を知っている。なお、成果物とは、例えば、１枚の原稿を３部コピーするというコピージョブであれば、３枚のコピー結果そのものをいう。
【００３８】
ドメインロジック層４２のＩ／Ｏファンクション部４２２は、入力物クラス４２２１、原画像クラス４２２２、出力物クラス４２２３、出力要素クラス４２２４、及び、出力束クラス４２２５、後処理クラス４２２６、仕上げ処理クラス４２２７等を含む。入力物クラス４２２１のインスタンス（入力物オブジェクト）は、ジョブに入力データに係る原稿の１枚又は１ページ（入力物）を表現する。したがって、入力物オブジェクトは、コピージョブやスキャンジョブ等、原稿から入力データが得られるジョブに利用される。入力物クラス４２２１は自らに対する再帰的な関連を有している。したがって、入力物オブジェクトは、チェーン構造で関連付けられることにより、複数枚の原稿を表現する。なお、本実施の形態において、便宜上、原稿の１枚と１ページとは等価であるとする。
【００３９】
原画像クラス４２２２のインスタンス（原画像オブジェクト）は、ジョブに対する入力画像を表現する。例えば、コピージョブであれば、スキャンされたスキャン画像を表現する。原画像オブジェクトは、画像の入力方法を知っており、また、入力処理の進捗状況（撮像部１０４による読み取りの進捗状況）を知っている。
【００４０】
出力物クラス４２２３のインスタンス（出力物オブジェクト）は、ジョブによる成果物の一部（出力物）を表現する。出力物オブジェクトは、成果物がどのような材料（入力物）で構成されているのかや、出力物の出力の実行可能条件等を知っている。出力物オブジェクトはまた、出力物の出力に必要な入力物を知っており、当該入力物に係る入力物オブジェクトに紐づいている。
【００４１】
出力束クラス４２２５のインスタンス（出力束オブジェクト）は、成果物がどのような順番（ソート順又はスタック順等）で構成されているかを知っている。出力要素クラス４２２４のインスタンス（出力要素オブジェクト）は、出力要素（出力面）の出力の方法を知っている。出力要素は、例えばコピージョブのときには印刷面を示す。
【００４２】
後処理クラス４２２６のインスタンス（後処理オブジェクト）は、後処理機能を表現する。後処理クラス４２２６は、出力束クラス４２２５と通信し、出力束オブジェクトによって束ねられた出力要素に対して後処理を施す。また、仕上げ処理クラス４２２７のインスタンス（仕上げ処理オブジェクト）は、後処理クラス４２２６及び成果物クラス４２１１と通信する。複数の出力束オブジェクトの完了の通知を受けた成果物オブジェクトは、仕上げ処理オブジェクトに仕上げ処理の指示を行う。仕上げ処理オブジェクトは複数の出力束の後処理を後処理オブジェクトに行わせる。
【００４３】
ドメインロジック層４２のＩ／Ｏリソース管理部４２３は、入力リソースクラス４２３１、出力リソースクラス４２３２、及び、後処理リソースクラス４２３３等を含む。入力リソースクラス４２３１のインスタンス（入力リソースオブジェクト）は、データを入力するためのハードウェア資源（撮像部１０４等）を管理する。出力リソースクラス４２３２のインスタンス（出力リソースオブジェクト）は、データを出力するためのハードウェア資源（印刷部１０５等）を管理する。後処理リソースクラス４２３３のインスタンス（後処理リソースオブジェクト）は、後処理を実行するためのハードウェア資源を管理する。  
ドメインロジック層４２のシステム管理部４２４は、機内監視クラス４２４１を含む。機内監視クラス４２４１のインスタンス（機内監視オブジェクト）は、複合機１の状態を監視する。
【００４４】
以上の各層のクラス群の中で、プレゼンテーション層４１に属するクラス群が、アプリケーション６０に利用可能なインタフェースを提供する。斯かるプレゼンテーション層４１のクラス群（インタフェース）は、ＪＰＳ（Java（登録商標） Print Service）に準拠した構成を有している。換言すれば、プレゼンテーション層４１において、ＪＰＳを提供することができる。ここで、ＪＰＳとは、Ｊａｖａ（登録商標）プラットフォームにおいて印刷に関する制御を実行するための標準のＡＰＩ（Application Program Interface）である。このことは、印刷ジョブを実行するアプリケーション６０の開発者は、ＪＰＳに関する知識を有していれば、ＭＦＰプロファイル４０上に簡便に当該アプリケーション６０を実装することができることを意味する。
【００４５】
図５は、ＪＰＳの概念モデルを示す図である。同図に示されるように、ＪＰＳは、ドキュメントインタフェース群、印刷ジョブインタフェース群、プリンタサービスインタフェース群より構成される。
【００４６】
ドキュメントインタフェース群におけるＳｉｍｐｌｅＤｏｃクラス及びＤｏｃインタフェース実装クラスは、印刷データを表現するクラスであり、本実施の形態のドキュメントクラス４１５に対応する。ＤｏｃＦｌａｖｏｒクラスは、印刷データのデータ形式を表現するクラスであり、本実施の形態の入出力形式クラス４１２に対応する。
【００４７】
印刷ジョブインタフェース群におけるＤｏｃＰｒｉｎｔＪｏｂクラスは、印刷ジョブを表現するクラスであり、本実施の形態のジョブクラス４１６に対応する。ＰｒｉｎｔＡｔｔｒｉｂｕｔｅＳｅｔ実装クラスは、印刷要求の属性値群を表現し、本実施の形態の要求属性値群クラス４１３に対応する。
【００４８】
プリントサービスインタフェース群におけるＰｒｉｎｔＳｅｒｖｉｃｅ実装クラス及びＤｅｆａｕｌｔＰｒｉｎｔＳｅｒｖｉｃｅ実装クラス等は、印刷サービス（プリンタ）を表現するクラスであり、本実施の形態のサービスクラス４１４に対応する。ＰｒｉｎｔＳｅｒｖｉｃｅＬｏｏｋＵｐ実装クラスは、印刷サービス（プリンタ）を検索するクラスであり、本実施の形態のサービス検索クラス４１１に対応する。
【００４９】
なお、図４に示されるプレゼンテーション層４１のクラス群（インタフェース）は、印刷ジョブだけでなく、複数種類のジョブ（例えば、コピージョブ、スキャンジョブ、ＦＡＸ送信ジョブ等）に対して共通に定義されている。すなわち、プレゼンテーション層４１は、ＪＰＳをより抽象化（一般化）したものになっている。したがって、プレゼンテーション層４１に基づいてＪＰＳを実現する場合、プレゼンテーション層４１にＪＰＳを包含させるか、又はＪＰＳがプレゼンテーション層４１のクラス群（以下「ＭＦＰサービス抽象モデル」という。）を継承するようにすればよい。
【００５０】
図６は、プレゼンテーション層がＪＰＳを包含する例を示す図である。この場合、プレゼンテーション層４１は一つのソフトウェアコンポーネントとして構成され、当該ソフトウェアコンポーネント内にＪＰＳの実装が含まれる。また、他のサービス（例えば、コピージョブを実現するコピーサービス）に関するクラス群についても、ＭＦＰサービス抽象モデルに基づいて（ＭＦＰサービス抽象モデルと同様の構成によって）実装され、それぞれサービスの実装が当該ソフトウェアコンポーネント内に含まれる。したがって、この場合、アプリケーション６０とＪＳＰとの関係は、図７に示されるようになる。
【００５１】
図７において、プレゼンテーション層４１は一つのソフトウェアコンポーネントとして、ＪＰＳや各サービス（同図ではコピーサービス）のインタフェースを公開すると共にその実装を包含する。したがって、アプリケーション６０は、公開されたＪＰＳや他のサービスのインタフェースを呼び出すことにより、それぞれの実装を利用することができる。このような構成では、各サービス（ＪＰＳも含む）のインタフェースは論理的には関係しているが、実質的には関係を有さない。したがって、仮に、ＪＰＳのバージョンアップ等で変更があったとしても、基本的には他のサービスはその影響を受けないという利点がある。
【００５２】
また、図８は、ＪＰＳがＭＦＰサービス抽象モデルを継承する例を示す図である。この場合、ＪＰＳの各クラスは、ＭＦＰサービス抽象モデルにおいて対応するクラスを継承する。他のサービス（例えば、コピーサービス）に関する実装クラス群もＭＦＰサービス抽象モデルのクラスを継承する。この場合、アプリケーション６０は、各サービス（ＪＰＳも含む）のクラス群をＭＦＰサービス抽象モデルのサブクラスとして利用することができる。
【００５３】
このような構成では、ＭＦＰサービス抽象モデルにおいて各サービスの共通部分を実装することにより、各サービスはその差分のみを実装すればよいという利点がある。また、継承により各サービスの構造がシンプルとなり、保守性を向上させることができる。
【００５４】
以下、複合機１の処理手順について説明する。
図９は、アプリケーションが複合機にジョブを実行させるための処理手順を説明するためのシーケンス図である。同図における各オブジェクトの参照番号は、各オブジェクトのクラスの参照番号（図４参照）の末尾に「Ａ」を付加したものである。
【００５５】
ジョブの開始指示の入力に応じ、当該ジョブに対応するアプリケーション６０（プリントアプリ６１、コピーアプリ６２、スキャンアプリ６３、又はＦＡＸアプリ６４等）は、入出力形式オブジェクト４１２Ａをメモリ（ＭＥＭ−Ｐ１３１）内に生成する（Ｓ１０１）。ここで、アプリケーション６０は、ジョブ（印刷ジョブ、コピージョブ、スキャンジョブ、又はＦＡＸ送信ジョブ等）に応じた入力データ及び出力データの少なくともいずれか一方のデータ形式を入出力形式オブジェクト４１２Ａに設定する。例えば、印刷ジョブであれば、印刷データのデータ形式が設定される。なお、ジョブの開始指示の入力とは、印刷ジョブであれば印刷データの受信が相当する。また、コピージョブ、スキャンジョブ、ＦＡＸ送信ジョブ等であれば、ユーザによるスタートボタンの押下等が相当する。
【００５６】
続いて、アプリケーション６０は、要求属性値群オブジェクト４１３Ａをメモリ内に生成する（Ｓ１０３）。ここで、アプリケーション６０は、ジョブに対して要求された設定値（要求属性値群）を要求属性値群オブジェクト４１３に設定する。当該設定値は、印刷ジョブであれば印刷データ内に含まれている。また、コピージョブ、スキャンジョブ、及びＦＡＸジョブ等であれば、オペレーションパネル１０２を介して設定され、メモリ内に記録されている。
【００５７】
続いて、アプリケーション６０は、入出力形式オブジェクト４１２Ａ及び要求属性値群オブジェクト４１３Ａを検索条件として指定して、サービスの検索をサービス検索オブジェクト４１１Ａに要求する（Ｓ１０５）。当該要求に応じ、サービス検索オブジェクト４１１Ａは、指定された検索条件に合致するサービスを検索し、当該サービスに対応するサービスオブジェクト４１４Ａをメモリ内に生成する（Ｓ１０７）。続いて、サービス検索オブジェクト４１１Ａは、生成されたサービスオブジェクト４１４Ａをアプリケーション６０に返却する（Ｓ１０９）。
【００５８】
なお、サービス検索オブジェクト４１１Ａによるサービスの検索は、例えば、ＨＤＤ１３３に記録されているサービス管理情報に基づいて行われる。サービス管理情報には、入力データの形式及び出力データの形式の少なくともいずれか一方と、要求属性値群との組み合わせに応じて、サービスクラス４１４の実装クラスのクラス名（例えば、「プリントサービス」、「コピーサービス」、「スキャンサービス」、「ＦＡＸサービス」等）が登録されている。したがって、サービス検索オブジェクト４１１Ａは、アプリケーション６０より指定された入出力形式オブジェクト４１２Ａ及び要求属性値群オブジェクト４１３Ａに対応するクラス名をサービス管理情報より検索し、検索されたクラス名に対応するサービスオブジェクト４１４Ａを生成する。
【００５９】
続いて、アプリケーション６０は、返却されたサービスオブジェクト４１４Ａに対してジョブの生成を要求する（Ｓ１１１）。サービスオブジェクト４１４Ａは、対応するジョブ（印刷ジョブ、コピージョブ、スキャンジョブ、又はＦＡＸ送信ジョブ等）の実装クラスのジョブオブジェクト４１６Ａを生成し（Ｓ１１３）、当該ジョブオブジェクト４１６Ａをアプリケーション６０に返却する（Ｓ１１５）。
【００６０】
続いて、アプリケーション６０は、ジョブにおいて処理対象とするドキュメントをカプセル化したドキュメントオブジェクト４１５Ａをメモリ内に生成する（Ｓ１１７）。印刷ジョブであれば、印刷データがカプセル化される。当該ドキュメントのデータ形式は、ジョブの種別に応じ、ＰｏｓｔＳｃｒｉｐｔファイル、ＪＰＥＧイメージ、ＵＲＬ、又はプレーンテキスト等、様々な形式をとり得る。なお、コピージョブ及びスキャンジョブ等については、アプリケーション６０は処理対象とするデータを有していない。したがって、このようなジョブについては、アプリケーション６０はドキュメントオブジェクト４１５Ａを生成する必要はない。一方、印刷ジョブの場合、印刷データの受信はアプリケーション６０（プリントアプリ６１）によって行われる。したがって、この場合は、ドキュメントオブジェクト４１５Ａが生成される。
【００６１】
続いて、アプリケーション６０は、ステップＳ１１５において返却されたジョブオブジェクト４１５Ａに対して、ドキュメントオブジェクト４１５Ａ及び要求属性値群オブジェクト４１３Ａを指定して、ジョブの実行を要求する（Ｓ１１９）。なお、ドキュメントオブジェクト４１５Ａが生成されていない場合は、ドキュメントオブジェクト４１５Ａは指定されない。
【００６２】
図９において、アプリケーション６０の軸から出ている矢印がアプリケーション６０において実装が必要とされる手順である。当該手順のフローチャートを図１０に示す。図１０において、各ステップには図９において対応するステップ番号が付されている。各ステップの内容は図９で説明した通りである。但し、図１０では、サービスが検索された場合に（すなわち、図９のステップＳ１１５においてサービスオブジェクト４１４Ａが返却された場合に）、ステップＳ１１１以降が実行されることが明示されている（Ｓ１１０）。
【００６３】
このように、アプリケーション６０の開発は、基本的に図１０に示される処理手順に対応したインタフェース（プレゼンテーション層４１のインタフェース）を呼び出すことにより行われる。また、当該インタフェースは、Ｊａｖａ（登録商標）の標準インタフェースであるＪＰＳに準拠するものである。したがって、本実施の形態の複合機１によれば、アプリケーション６０の開発作業の負担を軽減することができる。
【００６４】
また、特許文献１のフィルタ等によってアプリケーションを構築する場合に比べて、ソフトウェア構成全体の規模を小さくできる可能性が高い。したがって、アプリケーションの実行に必要なメモリ容量等を低減することができ、ハードウェアのコストの削減も期待できる。
【００６５】
ところで、ジョブオブジェクト４１６Ａに対するジョブの実行要求後は、ドメインロジック層４２においてジョブの実行が行われる。ドメインロジック層４２における処理手順についてはアプリケーション６０の関与しないところであるが、以下にその一例を説明する。
【００６６】
図１１、図１２及び図１３は、ドメインロジック層における処理手順を説明するためのシーケンス図である。図１１〜１３における各オブジェクトの参照番号は、各オブジェクトのクラスの参照番号（図４参照）の末尾に「Ａ」を付加したものである。
【００６７】
図１１等では、１枚の原稿について、出力部数は３、ソートは「ＯＮ」、が設定されコピージョブの実行が要求された場合の処理手順を説明する。
【００６８】
図９のステップＳ１１９におけるジョブの実行に応じ、ジョブオブジェクト４１６Ａは、成果物オブジェクト４２１１Ａをメモリ内に生成する（Ｓ３０１）。ここで、ジョブオブジェクト４１６Ａは、出力部数が３及びソートがＯＮであること、を示す要求属性値群オブジェクト４１３Ａの内容（以下、「ジョブ設定値」という。）を成果物オブジェクト４２１１Ａに設定する。従って、ここでの成果物オブジェクト４２１１Ａは、ソートされた３部のコピー結果としての成果物を表現する。
【００６９】
続いて、ジョブオブジェクト４１６Ａは、成果物オブジェクト４２１１Ａに対してジョブの実行（すなわち、成果物の実現）を要求する（Ｓ３０３）。当該要求に応じ、成果物オブジェクト４２１１Ａは、１枚目の原稿に対応する入力物オブジェクト４２２１Ａをメモリ内に生成する（Ｓ３０５）。続いて、成果物オブジェクト４２１１Ａは、１枚目の入力物オブジェクト４２２１Ａに対応する出力物（１枚目の３部のコピー結果）に係るオブジェクト４２２３Ａをメモリ内に生成し、出力物オブジェクト４２２３Ａと入力物オブジェクト４２２１Ａとの関連を生成する（Ｓ３０７）。
【００７０】
続いて、成果物オブジェクト４２１１Ａは、出力部数分の出力束オブジェクト４２２５Ａをメモリ内に生成する。ここでは、１部目、２部目、及び３部目のそれぞれのソート単位に対応する出力束オブジェクト４２２５Ａ−１、４２２５Ａ−２、及び４２２５Ａ−３が生成される（Ｓ３０９〜Ｓ３１３）。なお、生成された出力束オブジェクト４２２５Ａ−１、４２２５Ａ−２、及び４２２５Ａ−３は、１部目、２部目、３部目という順番で（すなわち、出力束オブジェクト４２２５Ａ−１、４２２５Ａ−２、４２２５Ａ−３という順番で）チェーン構造で関連付けられる。
【００７１】
なお、この例では出力束オブジェクト４２２５Ａ−１、４２２５Ａ−２、４２２５Ａ−３が後処理オブジェクト４２２６Ａ−１、４２２６Ａ−２、４２２６Ａ−３を生成する構成にしているが、成果物オブジェクト４２１１Ａが出力束オブジェクトを生成するのと同時に、後処理オブジェクト４２２６Ａ−１、４２２６Ａ−２、４２２６Ａ−３を生成する構成にしてもよい。
【００７２】
ただし、この場合、図４のドメインロジック層４２の構成において、成果物クラス４２１１と後処理クラス４２２６との間に新たに関連を設ける（通信を可能にする）ことが必要となることを記しておく。
【００７３】
続いて、成果物オブジェクト４２１１Ａは、出力物オブジェクト４２２３Ａをソート１部目の出力束オブジェクト４２２５Ａ−１に通知し、出力要素（コピー面）の追加（束ねること）を要求する（Ｓ３１５）。続いて、出力束オブジェクト４２２５Ａ−１は、通知された出力物オブジェクト４２２３Ａに対し、１部目の出力要素（コピー面）に対応する出力要素オブジェクト４２２４Ａの取得を要求する（Ｓ３１７）。出力物オブジェクト４２２３Ａは、出力要素オブジェクト４２２４Ａ−１をメモリ内に生成し（Ｓ３１９）、出力束オブジェクト４２２５Ａ−１に返却する（Ｓ３２１）。
【００７４】
続いて、成果物オブジェクト４２１１Ａは、出力物オブジェクト４２２３Ａをソート２部目の出力束オブジェクト４２２５Ａ−２に通知する（Ｓ３２３）。続いて、出力束オブジェクト４２２５Ａ−２は、通知された出力物オブジェクト４２２３Ａに対し、２部目の出力要素（コピー面）に対応する出力要素オブジェクト４２２４Ａの取得を要求する（Ｓ３２５）。出力物オブジェクト４２２３Ａは、出力要素オブジェクト４２２４Ａ−２をメモリ内に生成し（Ｓ３２７）、出力束オブジェクト４２２５Ａ−２に返却する（Ｓ３２９）。
【００７５】
続いて、成果物オブジェクト４２１１Ａは、出力物オブジェクト４２２３Ａをソート３部目の出力束オブジェクト４２２５Ａ−３に通知する（Ｓ３３１）。続いて、出力束オブジェクト４２２５Ａ−３は、通知された出力物オブジェクト４２２３Ａに対し、３部目の出力要素（コピー面）に対応する出力要素オブジェクト４２２４Ａの取得を要求する（Ｓ３３３）。出力物オブジェクト４２２３Ａは、出力要素オブジェクト４２２４Ａ−３をメモリ内に生成し（Ｓ３３５）、出力束オブジェクト４２２５Ａ−３に返却する（Ｓ３３７）。
【００７６】
なお、各出力要素オブジェクト４２２４Ａは、出力物オブジェクト４２２３Ａ−１の生成時に予め生成されていてもよい。
【００７７】
図１２に移行する。出力部数分の出力束オブジェクト４２２５Ａの生成及び各出力束オブジェクト４２２５Ａへの出力物オブジェクト４２２３Ａの通知が完了すると、成果物オブジェクト４２１１Ａは、１枚目の原稿に対応する入力物オブジェクト４２２１Ａに対してデータ入力の実行（すなわち、１枚目の原稿の読み取り）を要求する（図１２：Ｓ３５１）。続いて、入力物オブジェクト４２２１Ａは、１枚目の原稿に対応する読み取り画像（スキャン画像）に対応する原画像オブジェクト４２２２Ａをメモリ内に生成する（Ｓ３５３）。続いて、入力物オブジェクト４２２１Ａは、原画像オブジェクト４２２２Ａに対して読み取りの実行を要求する（Ｓ３５５）。当該要求に応じ、原画像オブジェクト４２２２Ａは、入力リソースオブジェクト４２３１Ａ及びサービス層４３等を介して撮像部１０４に原稿の読み取りを実行させる（Ｓ３５７）。なお、読み取られた画像データ（スキャン画像）は、メモリ内に記録され、そのアドレス情報がサービス層４３及び入力リソースオブジェクト４２３１Ａを経て原画像オブジェクト４２２２Ａに対して通知される。したがって、原画像オブジェクト４２２２Ａは、当該アドレス情報を保持することにより、スキャン画像に関連付けられる。また、次原稿の有無（２枚目以降の原稿の有無）もこのタイミングでサービス層４３及び入力リソースオブジェクト４２３１を経て原画像オブジェクト４２２２Ａに通知される。なお、印刷ジョブの場合、ステップＳ３０３においてジョブオブジェクト４１６Ａより成果物オブジェクト４２１１Ａに印刷データをカプセル化したドキュメントオブジェクトが引き渡される。当該ドキュメントオブジェクトは、ステップＳ３５１において成果物オブジェクト４２１１Ａから入力物オブジェクト４２２１Ａに引き渡される。したがって、原画像オブジェクト４２２２Ａによる画像データの読み取りは行われない。
【００７８】
１枚目の原稿の読み取りが終了すると、原画像オブジェクト４２２２Ａは、入力物オブジェクト４２２１Ａに１枚目の読み取りの終了及び次原稿の有無を通知する（Ｓ３５９）。当該通知に応じ、入力物オブジェクト４２２１Ａは、成果物オブジェクト４２１１Ａに１枚目の入力物の入力（ここでは画像の読み取り）の終了を通知する（Ｓ３６１）。続いて、成果物オブジェクト４２１１Ａは、１枚目の原稿に対応する出力物オブジェクト４２２３Ａに入力物の入力の終了を通知する（Ｓ３６３）。当該通知に応じ、出力物オブジェクト４２２３Ａは、出力が可能となったことを判断する。
【００７９】
続いて、入力物オブジェクト４２２１Ａは、成果物オブジェクト４２１１Ａに次原稿の有無を通知する（Ｓ３６５）。ここでは、原稿は１枚であるという前提なので次原稿はないことが通知される。なお、次原稿が有ることが通知された場合、成果物オブジェクト４２１１Ａは、ステップＳ３０５、Ｓ３０７、Ｓ３１５、Ｓ３２３、Ｓ３３１、及びＳ３５１を再度実行する。その結果、２枚目に対応する入力物オブジェクト４２２１Ａ及び出力物オブジェクト４２２２Ａが生成され、２枚目の３部分のそれぞれのコピー面に対応する出力要素オブジェクト４２２４Ａが生成される。各出力要素オブジェクト４２２４Ａ−1、４２２４Ａ−２、４２２４Ａ−３は、出力束オブジェクト４２２５Ａ−１、４２２５Ａ−２、４２２５Ａ−３のそれぞれに登録される。
【００８０】
次原稿はないことが通知された場合、成果物オブジェクト４２１１Ａは、ソート単位分の入力物の入力は終了したと判断し、チェーン構造で関連付けられている最初の（１部目の）出力束オブジェクト４２２５Ａ−１に実行（コピー面の印刷）を要求する（Ｓ３６７）。続いて、出力束オブジェクト４２２５Ａ−１は、自らに登録されている（自らが束ねている）１部目のソート１枚目の出力要素オブジェクト４２２４Ａ−１に実行を要求する（Ｓ３６９）。出力要素オブジェクト４２２４Ａ−１は、出力リソースオブジェクト４２３２Ａにリソース（印刷部１０５等）の使用の予約を要求する（Ｓ３７１）。
【００８１】
自らに登録されている全ての出力要素オブジェクト４２２４Ａ−１に対する実行要求が終了すると、出力束オブジェクト４２２５Ａ−１は、自らにチェーン構造で接続されている次の（２部目の）出力束オブジェクト４２２５Ａ−２に実行を要求する（Ｓ３７３）。出力束オブジェクト４２２５Ａ−２は、自らに登録されている２部目のソート１枚目の出力要素オブジェクト４２２４Ａ−２に実行を要求する（Ｓ３７５）。出力要素オブジェクト４２２４Ａ−２は、出力リソースオブジェクト４２３２Ａにリソースの使用の予約を要求する（Ｓ３７７）。
【００８２】
自らに登録されている全ての出力要素オブジェクト４２２４Ａ−２に対する実行要求が終了すると、出力束オブジェクト４２２５Ａ−２は、自らにチェーン構造で接続されている次の（３部目の）出力束オブジェクト４２２５Ａ−３に実行を要求する（Ｓ３７９）。出力束オブジェクト４２２５Ａ−３は、自らに登録されている２部目のソート１枚目の出力要素オブジェクト４２２４Ａ−３に実行を要求する（Ｓ３８１）。出力要素オブジェクト４２２４Ａ−３は、出力リソースオブジェクト４２３２Ａにリソースの使用の予約を要求する（Ｓ３８３）。
【００８３】
なお、ソート２枚目が有る場合（原稿が２枚以上である場合）、各出力束オブジェクト４２２５Ａは、ソート２枚目の出力要素オブジェクト４２２４Ａに対しても実行を要求する。実行要求を行う順番は、出力要素オブジェクト４２２４Ａ間のチェーン構造の接続関係に基づいて判定される。
【００８４】
図１３に移行する。続いて、リソースの使用予約を受けた出力リソースオブジェクト４２３２Ａは、印刷部１０５等が出力可能な状態になると、予約を受け付けた順番に使用許可を通知する。ここでは、まず、１部目のソート１枚目を示す出力要素オブジェクト４２２４Ａ−１にリソースの使用許可が通知される（Ｓ３９１）。続いて、出力要素オブジェクト４２２４Ａ−１は、出力物オブジェクト４２２３Ａに出力の実行可否判断を要求する（Ｓ３９３）。出力物オブジェクト４２２３Ａは、ステップＳ３６３において入力物の入力の終了を通知されているので実行可能と判断し、その判断結果を出力要素オブジェクト４２２４Ａ−１に返却する。実行可能であることを示す判断結果が返却された場合、出力要素オブジェクト４２２４Ａ−１は、使用許可された出力リソース（印刷部１０５）を使用して印刷を実行する（Ｓ３９５）。ここで、印刷対象とされる画像データは、出力要素オブジェクト４２２４Ａ−１が属する出力物オブジェクト４２２３Ａに関連付けられている入力物オブジェクト４２２１Ａに基づいて特定可能である。印刷が終了すると、出力要素オブジェクト４２２４Ａ−１は、出力物オブジェクト４２２３Ａに印刷の終了を通知する（Ｓ３９７）。続いて出力要素オブジェクト４２２４Ａ−１は、出力束オブジェクト４２２５Ａ−１に当該出力要素（当該コピー面）の出力の終了を通知する（Ｓ３９９）。
【００８５】
当該通知に応じ、出力束オブジェクト４２２５Ａ−１は、成果物オブジェクト４２１１Ａに当該出力束（当該ソート単位分のコピー面）の出力の終了を通知する（Ｓ４０１）。
【００８６】
続いて、出力リソースオブジェクト４２３２Ａは、２部目のソート１枚目を示す出力要素オブジェクト４２２４Ａ−２にリソースの使用許可を通知する（Ｓ４０３）。続いて、出力要素オブジェクト４２２４Ａ−２は、出力物オブジェクト４２２３Ａに出力の実行可否判断を要求する（Ｓ４０５）。出力物オブジェクト４２２３Ａは、ステップＳ３６３において入力物の入力の終了を通知されているので実行可能と判断し、その判断結果を出力要素オブジェクト４２２４Ａ−２に返却する。実行可能であることを示す判断結果が返却された場合、出力要素オブジェクト４２２４Ａ−２は、使用許可された出力リソース（印刷部１０５）を使用して印刷を実行する（Ｓ４０７）。印刷が終了すると、出力要素オブジェクト４２２４Ａ−２は、出力物オブジェクト４２２３Ａに印刷の終了を通知する（Ｓ４０９）。続いて出力要素オブジェクト４２２４Ａ−２は、出力束オブジェクト４２２５Ａ−２に当該出力要素（当該コピー面）の出力の終了を通知する（Ｓ４１１）。
【００８７】
当該通知に応じ、出力束オブジェクト４２２５Ａ−２は、成果物オブジェクト４２１１Ａに当該出力束（当該ソート単位分のコピー面）の出力の終了を通知する（Ｓ４１３）。
【００８８】
続いて、出力リソースオブジェクト４２３２Ａは、３部目のソート１枚目を示す出力要素オブジェクト４２２４Ａ−３にリソースの使用許可を通知する（Ｓ４１５）。続いて、出力要素オブジェクト４２２４Ａ−３は、出力物オブジェクト４２２３Ａに出力の実行可否判断を要求する（Ｓ４１７）。出力物オブジェクト４２２３Ａは、ステップＳ３６３において入力物の入力の終了を通知されているので実行可能と判断し、その判断結果を出力要素オブジェクト４２２４Ａ−３に返却する。実行可能であることを示す判断結果が返却された場合、出力要素オブジェクト４２２４Ａ−３は、使用許可された出力リソース（印刷部１０５）を使用して印刷を実行する（Ｓ４１９）。印刷が終了すると、出力要素オブジェクト４２２４Ａ−３は、出力物オブジェクト４２２３Ａに印刷の終了を通知する（Ｓ４２１）。
【００８９】
続いて出力要素オブジェクト４２２４Ａ−３は、出力束オブジェクト４２２５Ａ−３に当該出力要素（当該コピー面）の出力の終了を通知する（Ｓ４２３）。当該通知に応じ、出力束オブジェクト４２２５Ａ−３は、成果物オブジェクト４２１１Ａに当該出力束（当該ソート単位分のコピー面）の出力の終了を通知する（Ｓ４２５）。
【００９０】
以上によって、１枚の原稿の３部分のソートコピーが完了する。
【００９１】
図１４、図１５、図１６及び図１７は、後処理が実行される際、ドメインロジック層における処理手順を説明するためのシーケンス図である。図１４〜１７では、１枚の原稿について、出力部数は３、ソートは「ＯＮ」、ステープルは「ＯＮ」が設定されコピージョブの実行が要求された場合の処理手順を説明する。なお、ここでは図１１〜１３と異なる処理について説明する。
【００９２】
ステップＳ３０９〜Ｓ３１３において、成果物オブジェクト４２１１Ａは、１部目、２部目、及び３部目のそれぞれのソート単位に対応する出力束オブジェクト４２２５Ａ−１、４２２５Ａ−２、及び４２２５Ａ−３を生成する。
【００９３】
続いて出力束オブジェクト４２２５Ａ−１、４２２５Ａ−２、４２２５Ａ−３は、それぞれ、後処理機能を施すため、後処理オブジェクト４２２６Ａ−１、４２２６Ａ−２、４２２６Ａ−３をメモリ内に生成する。出力束オブジェクト４２２５Ａ−１は後処理オブジェクト４２２６Ａ−１を生成し（Ｓ３０９１）、出力束オブジェクト４２２５Ａ−２は後処理オブジェクト４２２６Ａ−２を生成し（Ｓ３１１１）、出力束オブジェクト４２２５Ａ−３は後処理オブジェクト４２２６Ａ−３を生成する（Ｓ３１３１）。この例では、出力束オブジェクト４２２５Ａ−１、４２２５Ａ−２、４２２５Ａ−３それぞれが後処理を行うと判断し、後処理オブジェクト４２２６Ａ−１、４２２６Ａ−２、４２２６Ａ−３としてステープルのインスタンスを生成している。
【００９４】
続いて、図１６のステップＳ４００から後処理のシーケンスが実行される。出力束オブジェクト４２２５Ａ−１は、当該出力要素（当該コピー面）の出力の終了を通知されると、当該通知に応じ、後処理オブジェクト４２２６Ａ−１に、後処理を実行する通知を出す（Ｓ４００）。後処理オブジェクト４２２６Ａ−１は、その通知を受けて、後処理リソースオブジェクト４２３３Ａの利用予約を行う（Ｓ４００１）。
【００９５】
次に図１７に進み、リソースの割り当てを受けた後処理リソースオブジェクト４２３３Ａは、後処理機能が実行可能になると、予約を受け付けた順番に後処理オブジェクト４２２６Ａ−１にリソースの使用許可を通知する（Ｓ４２７）。後処理オブジェクト４２２６Ａ−１は当該通知を受けて、図３０のフローチャートにしたがって後処理を実行（この例の場合はステープル）し（Ｓ４２９）、後処理の実行の終了後に出力束オブジェクト４２２５Ａ−１に後処理の実行が終了したことを通知する（Ｓ４３１）。出力束オブジェクト４２２５Ａ−１は、成果物オブジェクト４２１１Ａに出力束の実行の終了を通知する（Ｓ４３１１）。
【００９６】
なお、出力束オブジェクト４２２５Ａ−３が後処理を実行することを待つことなく、後処理リソースオブジェクト４２３３Ａが、予約を受け付けた直後に後処理オブジェクト４２２６Ａ−１にリソースの使用許可を通知してもよい。
【００９７】
同様に、図１６において、後処理のシーケンスとして、出力束オブジェクト４２２５Ａ−２は、当該出力要素（当該コピー面）の出力の終了を通知されると、当該通知に応じ、後処理オブジェクト４２２６Ａに、後処理を実行する通知を出す（Ｓ４１２）。後処理オブジェクト４２２６Ａはその通知を受けて、後処理リソースオブジェクト４２３３Ａの利用予約を行う（Ｓ４１２１）。
【００９８】
次に、図１７において、リソースの割り当て受けた後処理リソースオブジェクト４２３３Ａは、後処理機能が実行可能になると、予約を受け付けた順番に後処理オブジェクト４２２６Ａにリソースの使用許可を通知する（Ｓ４３３）。後処理オブジェクト４２２６Ａは当該通知を受けて、図３０のフローチャートにしたがって後処理を実行（この例の場合はステープル）し（Ｓ４３５）、後処理の実行の終了後に出力束オブジェクト４２２５Ａ−２に後処理の実行が終了したことを通知する（Ｓ４３７）。出力束オブジェクト４２２５Ａ−２は、成果物オブジェクト４２１１Ａに出力束の実行の終了を通知する（Ｓ４３７１）。
【００９９】
なお、出力束オブジェクト４２２５Ａ−３が後処理を実行することを待つことなく、後処理リソースオブジェクト４２３３Ａが、予約を受け付けた直後に後処理オブジェクト４２２６Ａ−２にリソースの使用許可を通知してもよい。
【０１００】
同様に、図１６において、後処理のシーケンスとして、出力束オブジェクト４２２５Ａ−３は、当該出力要素（当該コピー面）の出力の終了を通知されると、当該通知に応じ、後処理オブジェクト４２２６Ａに、後処理を実行する通知を出す（Ｓ４２４）。後処理オブジェクト４２２６Ａは、その通知を受けて、後処理リソースオブジェクト４２３３Ａの利用予約を行う（Ｓ４２４１）。
【０１０１】
次に図１７において、リソースの割り当てを受けた後処理リソースオブジェクト４２３３Ａは、後処理機能が実行可能になると、予約を受け付けた順番に後処理オブジェクト４２２６Ａにリソースの使用許可を通知する（Ｓ４３９）。後処理オブジェクト４２２６Ａは当該通知を受けて、図３０のフローチャートにしたがって後処理を実行（この例の場合はステープル）し（Ｓ４４１）、後処理の実行の終了後に出力束オブジェクト４２２５Ａ−３に後処理の実行が終了したことを通知する（Ｓ４４３）。出力束オブジェクト４２２５Ａ−３は、成果物オブジェクト４２１１Ａに出力束の実行の終了を通知する（Ｓ４４３１）。
【０１０２】
以上によって、１枚の原稿の３部分のソートコピーと出力物のステープル止めが完了する。
【０１０３】
図１８、図１９、図２０及び図２１は、後処理と仕上げ処理が実行される際、ドメインロジック層における処理手順を説明するためのシーケンス図である。図１８〜２１では、１枚の原稿について、出力部数は３、ソートは「ＯＮ」、ステープルは「ＯＮ」、１つ以上の仕上げ処理が設定され、コピージョブの実行が要求された場合の処理手順を説明する。なお、ここでは図１１〜１３と異なる処理について説明する。
【０１０４】
ステップＳ３０７において、成果物オブジェクト４２１１Ａが、１枚目の入力物オブジェクト４２２１Ａに対応する出力物（１枚目の３部のコピー結果）に係る出力物オブジェクト４２２３Ａをメモリ内に生成し、出力物オブジェクト４２２３Ａと入力物オブジェクト４２２１Ａとの関連を生成する。続いて、成果物オブジェクト４２１１Ａは、仕上げ処理機能を施すため、仕上げオブジェクト４２２７Ａをメモリ内に生成し（Ｓ３０８）、仕上げオブジェクト４２２７Ａはメモり内に仕上げ処理としての後処理オブジェクト４２２６Ａ−０を生成する（Ｓ３０８１）。複数の仕上げ処理が要求属性値群オブジェクト４１３Ａに設定されている場合、仕上げオブジェクト４２２７Ａはメモり内に１つでそれぞれの仕上げ処理に対応した仕上げ処理オブジェクト、又は、それぞれの仕上げ処理に対応した複数の仕上げ処理オブジェクトを生成する。
【０１０５】
また、図１９のステップＳ３８３において、出力要素オブジェクト４２２４Ａ−３が、出力リソースオブジェクト４２３２Ａにリソースの使用の予約を要求すると（Ｓ３８３）、成果物オブジェクト４２１１Ａは仕上げオブジェクト４２２７Ａに実行を要求する（Ｓ３８４）。この要求を受けると仕上げオブジェクト４２２７Ａは、仕上げとしての後処理オブジェクト４２２６Ａ−０に、仕上げ処理の実行を通知する（Ｓ３８４１）。仕上げとしての後処理オブジェクト４２２６Ａ−０はその通知を受けて、後処理リソースオブジェクト４２３３Ａにリソースの予約を要求する（Ｓ３８４２）。
【０１０６】
また、図２１のステップＳ４４３において、後処理オブジェクト４２２６Ａ−３が出力束オブジェクト４２２５Ａ−３に後処理の実行が終了したことを通知した後、仕上げ処理のシーケンスでは、後処理リソースオブジェクト４２３３Ａは、仕上げ処理機能が実行可能になると、仕上げ処理としての後処理オブジェクト４２２６Ａ−０にリソースの使用許可を通知する（Ｓ４４５）。後処理オブジェクト４２２６Ａ−０は当該通知を受けて、図３３のフローチャートにしたがって仕上げ処理の実行を行い（Ｓ４４６）、仕上げ処理の実行終了後に仕上げオブジェクト４２２７Aに、仕上げ処理の実行が終了したことを通知する（Ｓ４４７）。後処理オブジェクト４２２６Ａ−０は、例えば、出力要素オブジェクト４２２４Ａ−１、４２２４Ａ−２、４２２４Ａ−３それぞれにリング綴じ処理を施す。挿入処理、製本処理についても同様である。仕上げオブジェクト４２２７Aは、仕上げ処理の実行が終了したことを成果物オブジェクト４２１１Ａに通知する（Ｓ４４８）。
【０１０７】
以上によって、１枚の原稿の３部のソートコピーと、出力物のステープル止め及び仕上げ処理が完了する。
【０１０８】
続いて、ドメインロジック層４２による処理手順を更に一般化して説明する。図２２は、コピージョブを実行する際のドメインロジック層における処理手順を説明するための汎用的なフローチャートの一例である。
【０１０９】
すなわち、同図のフローチャートでは、原稿枚数、出力部数、印刷順（ソート又はスタック）等は特定されていない。同図のフローチャートの手順の特定の形態が図１１、図１２、及び図１３となる。図２２の括弧内のステップ番号は、図１１、図１２、又は図１３において対応するステップ番号を示す。
【０１１０】
ジョブオブジェクト４１６Ａによって成果物オブジェクト４２１１Ａが生成され、ジョブの実行が要求されると（Ｓ５０１）、成果物オブジェクト４２１１Ａは、入力原稿の枚数のカウンタＮに１をセットし（Ｓ５０２）、Ｎ枚目（１枚目）の原稿に対する入力物オブジェクト４２２１Ａをメモリ内に生成する（Ｓ５０３）。ここで、成果物オブジェクト４２１１Ａには、ジョブ設定値がジョブオブジェクト４１６Ａによって設定される。ジョブ設定値には、例えば、出力部数や出力モード（ソート又はスタック等）が含まれている。
【０１１１】
続いて、成果物オブジェクト４２１１Ａは、１枚目の入力物オブジェクト４２２１Ａに対応する出力物オブジェクト４２２３Ａをメモリ内に生成し、出力物オブジェクト４２２３Ａと入力物オブジェクト４２２１Ａとの関連を生成する（Ｓ５０４）。なお、成果物オブジェクト４２１１Ａは、自らに設定されているジョブ設定値のうち少なくとも出力に関係する設定値群（例えば、出力部数及び出力モード等）を生成された出力物オブジェクト４２２３Ａに設定する。以降において生成される出力物オブジェクト４２２３Ａについても同様である。
【０１１２】
続いて、成果物オブジェクト４２１１Ａは、ジョブオブジェクト４１６Ａより設定されているジョブ設定値においてソートは指定されているか否かを判定する（Ｓ５０５）。ソートが指定されている場合（Ｓ５０５でＹｅｓ）、成果物オブジェクト４２１１Ａは、ジョブ設定値に指定されている出力部数分の出力束オブジェクト４２２５Ａを生成し、各出力束オブジェクト４２２５Ａをチェーン構造で出力順に従って関連付ける（Ｓ５０６）。なお、成果物オブジェクト４２１１Ａは、自らに設定されているジョブ設定値のうち少なくとも出力に関係する設定値群（例えば、出力部数及び出力モード等）を生成された出力束オブジェクト４２２５Ａに設定する。以降において生成される出力束オブジェクト４２２５Ａについても同様である。
【０１１３】
続いて、成果物オブジェクト４２１１Ａは、生成された各出力束オブジェクト４２２５Ａに、Ｎ枚目に対応する出力物オブジェクト４２２３Ａを通知する（Ｓ５０７）。続いて、各出力束オブジェクト４２２５Ａは、自らに設定されている出力モードの値に基づいてソートが指定されていることを判定し、通知された出力物オブジェクト４２２３Ａよりソート単位内でＮ枚目に対応する出力要素オブジェクト４２２４Ａを一つ取得する（Ｓ５０８）。各出力束オブジェクト４２２５Ａは取得された順に出力要素オブジェクト４２２４Ａをチェーン構造で関連付ける。
【０１１４】
続いて、成果物オブジェクト４２１１Ａは、Ｎ枚目に対応する入力物オブジェクト４２２１ＡにＮ枚目の原稿の入力を要求する（Ｓ５０９）。当該要求に応じ、入力物オブジェクト４２２１Ａは、Ｎ枚目の原稿に対応する読み取り画像（スキャン画像）に対応する原画像オブジェクト４２２２Ａをメモリ内に生成する（Ｓ５１０）。続いて、入力物オブジェクト４２２１Ａは、原画像オブジェクト４２２２ＡにＮ枚目の原稿の読み取りを実行させる（Ｓ５１０）。次の原稿が有る場合（Ｓ５１１でＹｅｓ）、成果物オブジェクト４２１１Ａは、カウンタＮをインクリメントし（Ｓ５１２）、Ｎ枚目の原稿に対する入力物オブジェクト４２２１Ａをメモリ内に生成する（Ｓ５１３）。続いて、成果物オブジェクト４２１１Ａは、Ｎ枚目の入力物オブジェクト４２２１Ａに対応する出力物オブジェクト４２２３Ａをメモリ内に生成し、出力物オブジェクト４２２３Ａと入力物オブジェクト４２２１Ａとの関連を生成する（Ｓ５１４）。続いて、ステップＳ５０７〜Ｓ５１０を繰り返す。
【０１１５】
したがって、例えば、原稿が２枚で出力部数が３のコピーにおいてソートが指定されている場合、全ての原稿の読み取りを完了した時点での各オブジェクト間の関係は次のようになる。
【０１１６】
図２３は、ソート指定の場合にインスタンス化されるドメインロジック層のオブジェクトの構成例を示す図である。
【０１１７】
同図において、入力物オブジェクト４２２１Ａ−１及び出力物オブジェクト４２２３Ａ−１は１枚目の原稿に対応する。また、入力物オブジェクト４２２１Ａ−２及び出力物オブジェクト４２２３Ａ−２は２枚目の原稿に対応する。出力部数が３においてソートが指定されているため、三つの出力束オブジェクト４２２５Ａ−１、４２２５Ａ−２、及び４２２５Ａ−３がインスタンス化される。各出力束オブジェクト４２２５Ａは、ソート単位で出力要素オブジェクト４２２４Ａを束ねる。具体的には、各出力束オブジェクト４２２５Ａには、出力物オブジェクト４２２３Ａ−１及び４２２３Ａ−２のそれぞれより取得された二つの出力要素４２２４Ａが関連付けられる。なお、各出力束オブジェクト４２２５Ａは、ソート単位の順番に応じてチェーン構造で関連付けられる（図中の矢印が当該関連を示す。）。また、同一の出力束オブジェクト４２２５Ａに関連付けられている出力要素オブジェクト４２２４Ａ同士は、出力順（原稿の順番）に応じてチェーン構造で関連付けられる。なお、出力要素オブジェクト４２２４Ａの参照番号の枝番は、１０の桁はソート単位の順番を、１の桁が原稿の順番（１枚目、２枚目、・・・）を示す。
【０１１８】
一方、図２２において、ソートが指定されていない場合（Ｓ５０５でＮｏ）、成果物オブジェクト４２１１Ａは、スタックが指定されているか否かを判定する（Ｓ５１５）。スタックが指定されている場合（Ｓ５１５でＹｅｓ）、スタック用の読み取り処理が実行される（Ｓ５１６）。また、スタックが指定されていない場合（Ｓ５１５でＮｏ）、その他の（ソート及びスタックが指定されていない場合の）読み取り処理が実行される（Ｓ５１７）。
【０１１９】
図２４は、スタック用の読み取り処理を説明するためのフローチャートである。ここで、スタックとは、例えば、２枚の原稿を３部コピーする場合、１、１、１、２、２、２という順番で出力が行われ（数字は、原稿のページ番号を示す。）、ページ別で束ねられるモードをいう。具体的には、「１、１、１」という束と「２、２、２」という束とが異なる排紙トレイに出力されたり、同一の出力トレイにずれて出力されたりする。
【０１２０】
したがって、スタックが指定されている場合、成果物オブジェクト４２１１Ａは、Ｎ枚目の原稿に対応する出力束オブジェクト４２２５Ａをメモリ内に生成する（Ｓ５２１）。すなわち、スタックの場合は、原稿のページ数分（枚数分）の束が作成されるため、ページごとに出力束オブジェクト４２２５Ａが生成される。なお、成果物オブジェクト４２１１Ａは、各出力束オブジェクト４２２５Ａをその生成順にチェーン構造で関連付ける。
【０１２１】
続いて、成果物オブジェクト４２１１Ａは、Ｎ枚目に対応する出力束オブジェクト４２２５Ａに、Ｎ枚目に対応する出力物オブジェクト４２２３Ａを通知する（Ｓ５２２）。続いて、当該出力束オブジェクト４２２５Ａは、自らに設定されている出力モードの値に基づいてスタックが指定されていることを判定し、通知された出力物オブジェクト４２２３Ａより出力部数分の出力要素オブジェクト４２２４Ａを取得する（Ｓ５２３）。したがって、３部であれば３つの出力要素オブジェクト４２２４Ａが取得される。出力束オブジェクト４２２５Ａは、取得された順に各出力要素オブジェクト４２２４Ａをチェーン構造で関連付ける。
【０１２２】
続いて、成果物オブジェクト４２１１Ａは、Ｎ枚目に対応する入力物オブジェクト４２２１Ａに１枚目の原稿の入力を要求する（Ｓ５２４）。当該要求に応じ、入力物オブジェクト４２２１Ａは、Ｎ枚目の原稿に対応する読み取り画像（スキャン画像）に対応する原画像オブジェクト４２２２Ａをメモリ内に生成する（Ｓ５２５）。続いて、入力物オブジェクト４２２１Ａは、原画像オブジェクト４２２２ＡにＮ枚目の原稿の読み取りを実行させる（Ｓ５２６）。次の原稿が有る場合（Ｓ５２７でＹｅｓ）、成果物オブジェクト４２１１Ａは、カウンタＮをインクリメントし（Ｓ５２８）、Ｎ枚目の原稿に対する入力物オブジェクト４２２１Ａをメモリ内に生成する（Ｓ５２９）。続いて、成果物オブジェクト４２１１Ａは、Ｎ枚目の入力物オブジェクト４２２１Ａに対応する出力物オブジェクト４２２３Ａをメモリ内に生成し、出力物オブジェクト４２２３Ａと入力物オブジェクト４２２１Ａとの関連を生成する（Ｓ５３０）。続いて、ステップＳ５２１〜Ｓ５３０を繰り返す。
【０１２３】
したがって、例えば、原稿が２枚で出力部数が３のコピーにおいてスタックが指定されている場合、全ての原稿の読み取りを完了した時点での各オブジェクト間の関係は次のようになる。
【０１２４】
図２５は、スタック指定の場合にインスタンス化されるドメインロジック層のオブジェクトの構成例を示す図である。
【０１２５】
同図に示されるように、スタックが指定されている場合は、原稿の枚数分の出力束オブジェクト４２２５Ａが生成される。各出力束オブジェクト４２２５Ａは、スタック単位で出力要素オブジェクト４２２４Ａを束ねる。具体的には、一つ目の出力束オブジェクト４２２５Ａ−１には、１枚目の原稿に対応する出力要素オブジェクト４２２４Ａが三つ（３出力部数分）関連付けられる。二つ目の出力束オブジェクト４２２５Ａ−２には、２枚目の原稿に対応する出力要素オブジェクト４２２４Ａが三つ（３出力部数分）関連付けられる。なお、出力要素オブジェクト４２２４Ａの参照番号の枝番は、１０の桁がスタック単位の順番を、１の桁が原稿のページ（何枚目か）を示す。
【０１２６】
また、図２６は、その他の読み取り処理を説明するためのフローチャートである。ソート及びスタックのいずれもが指定されていない場合は、出力順はスタックの場合と同じであるが、ページ別の束は作成されない。例えば、２枚の原稿を３部コピーする場合、１、１、１、２、２、２という一つの束がコピー結果として出力される。
【０１２７】
したがって、ソート及びスタックが指定されていない場合、成果物オブジェク４２１１Ａは、一つの出力束オブジェクト４２２５Ａを生成する（Ｓ５３１）。続いて、成果物オブジェクト４２１１Ａは、当該出力束オブジェクト４２２５Ａに、Ｎ枚目に対応する出力物オブジェクト４２２３Ａを通知する（Ｓ５３２）。続いて、当該出力束オブジェクト４２２５Ａは、自らに設定されている出力モードの値に基づいてソート及びスタックのいずれもが指定されていないことを判定し、通知された出力物オブジェクト４２２３Ａより出力部数分の出力要素オブジェクト４２２４Ａを取得する（Ｓ５３３）。したがって、３部であれば３つの出力要素オブジェクト４２２４Ａが取得される。出力束オブジェクト４２２５Ａは、取得された順に各出力要素オブジェクト４２２４Ａをチェーン構造で関連付ける。
【０１２８】
続いて、成果物オブジェクト４２１１Ａは、Ｎ枚目に対応する入力物オブジェクト４２２１Ａに１枚目の原稿の入力を要求する（Ｓ５３４）。当該要求に応じ、入力物オブジェクト４２２１Ａは、Ｎ枚目の原稿に対応する読み取り画像（スキャン画像）に対応する原画像オブジェクト４２２２Ａをメモリ内に生成する（Ｓ５３５）。続いて、入力物オブジェクト４２２１Ａは、原画像オブジェクト４２２２ＡにＮ枚目の原稿の読み取りを実行させる（Ｓ５３６）。次の原稿が有る場合（Ｓ５３７でＹｅｓ）、成果物オブジェクト４２１１Ａは、カウンタＮをインクリメントし（Ｓ５３８）、Ｎ枚目の原稿に対する入力物オブジェクト４２２１Ａをメモリ内に生成する（Ｓ５３９）。続いて、成果物オブジェクト４２１１Ａは、Ｎ枚目の入力物オブジェクト４２２１Ａに対応する出力物オブジェクト４２２３Ａをメモリ内に生成し、出力物オブジェクト４２２３Ａと入力物オブジェクト４２２１Ａとの関連を生成する（Ｓ５４０）。続いて、ステップＳ５３１〜Ｓ５４０を繰り返す。
【０１２９】
したがって、例えば、原稿が２枚で出力部数が３部のコピーにおいてソート及びスタックが指定されていない場合、全ての原稿の読み取りを完了した時点での各オブジェクト間の関係は次のようになる。
【０１３０】
図２７は、ソート及びスタックが指定されていない場合にインスタンス化されるドメインロジック層のオブジェクトの構成例を示す図である。
【０１３１】
同図に示されるように、ソート及びスタックが指定されていない場合は、一つの出力束オブジェクト４２２５Ａに全ての出力要素オブジェクト４２２４Ａが関連付けられている。なお、出力要素オブジェクト４２２４Ａの参照番号の枝番は、原稿のページ（何枚目か）を示す。
【０１３２】
図２２に戻る。全ての原稿の読み取りが完了すると、ステップＳ５４１に進み、成果物オブジェクト４２１１Ａは、インスタンス化されている各出力束オブジェクト４２２５Ａに対してチェーン構造の順番で出力の実行を要求する（Ｓ５４１）。当該要求に応じ、各出力束オブジェクト４２２５Ａは、自らに関連付けられている各出力要素オブジェクト４２２４Ａにチェーン構造の順番で出力の実行を要求する（Ｓ５４２）。その結果、各出力要素オブジェクト４２２４Ａに対応する分のコピー面が印刷される（Ｓ５４３）。
【０１３３】
ソートが指定されている場合、図２３のオブジェクト構成に基づいてステップＳ５４１以降が実行される。したがって、例えば、２枚の原稿を３部コピーする場合、「１、２」といった束（ソート単位）が三つ出力される。
【０１３４】
また、スタックが指定されている場合、図２５のオブジェクト構成に基づいてステップＳ５４１以降が実行される。したがって、例えば、２枚の原稿を３部コピーする場合、「１、１、１」、「２、２、２」といった二つの束（スタック単位）が出力される。
【０１３５】
また、ソート及びスタックのいずれもが指定されていない場合、図２７のオブジェクト構成に基づいてステップＳ５４１以降が実行される。したがって、例えば、２枚の原稿を３部コピーする場合、「１、１、１、２、２、２」といった一つの束が出力される。
【０１３６】
図２８は、コピージョブを実行した後、後処理を実行する際のドメインロジック層における処理手順を説明するための汎用的なフローチャート図の一例である。
【０１３７】
すなわち、同図のフローチャートでは、原稿枚数、出力部数、印刷順（ソート又はスタック）等は特定されていない。また、後処理と仕上げ処理のフローチャートは示されているが、後処理の種類は特定されない。また、複数の後処理が実行されてもよくその数は限定されない。
【０１３８】
図２９に示す、後処理オブジェクト４２２６Ａ−１、４２２６Ａ−２、４２２６Ａ−３のインスタンスリストのように、後処理としてはステープル、パンチ、Z折りの3種の後処理を想定している。
【０１３９】
ジョブオブジェクト４１６Ａによって成果物オブジェクト４２１１Ａが生成され、ジョブの実行が要求されると（Ｓ５０１）、成果物オブジェクト４２１１Ａは、入力原稿の枚数のカウンタＮに１をセットし（Ｓ５０２）、Ｎ枚目（１枚目）の原稿に対する入力物オブジェクト４２２１Ａをメモリ内に生成する（Ｓ５０３）。ここで、成果物オブジェクト４２１１Ａには、ジョブ設定値がジョブオブジェクト４１６Ａによって設定される。ジョブ設定値には、例えば、出力部数や出力モード（ソート又はスタック等）、後処理（ステープル等）が含まれている。
【０１４０】
続いて、成果物オブジェクト４２１１Ａは、１枚目の入力物オブジェクト４２２１Ａに対応する出力物オブジェクト４２２３Ａをメモリ内に生成し、出力物オブジェクト４２２３Ａと入力物オブジェクト４２２１Ａとの関連を生成する（Ｓ５０４）。なお、成果物オブジェクト４２１１Ａは、自らに設定されているジョブ設定値のうち少なくとも出力に関係する設定値群（例えば、出力部数、出力モード、後処理等）を生成された出力物オブジェクト４２２３Ａに設定する。以降において生成される出力物オブジェクト４２２３Ａについても同様である。
【０１４１】
出力物オブジェクト４２２３Ａが生成された後に、ジョブ設定値に指定されている出力部数分の出力束オブジェクト４２２５Ａを生成し、各出力束オブジェクト４２２５Ａをチェーン構造で出力順に従って関連付ける（Ｓ５０６）。成果物オブジェクト４２１１Ａは、ジョブオブジェクト４１６Ａより設定されているジョブ設定値において後処理が指定されているか否かを判定する（Ｓ５０６１）。
【０１４２】
後処理が指定されている場合（Ｓ５０６１でＹｅｓ）、生成された出力束オブジェクト４２２５Ａ−１、４２２５Ａ−２及び４２２５Ａ−３は、それぞれ後処理オブジェクト４２２６Ａ−１、４２２６Ａ−２、４２２６Ａ−３を生成する（Ｓ５０６２）。
【０１４３】
なお、成果物オブジェクト４２１１Ａは、自らに設定されているジョブ設定値のうち少なくとも出力に関係する設定値群（例えば、出力部数及び出力モード等）を生成された出力束オブジェクト４２２５Ａに設定する。以降において生成される出力束オブジェクト４２２５Ａについても同様である。
【０１４４】
後処理が指定されていない場合（Ｓ５０６１でＮｏ）、後処理オブジェクト４２２６Ａ−１、４２２６Ａ−２，４２２６Ａ−３は生成されない。
【０１４５】
続いて、成果物オブジェクト４２１１Ａは、生成された各出力束オブジェクト４２２５Ａに、Ｎ枚目に対応する出力物オブジェクト４２２３Ａを通知する（Ｓ５０７）。続いて、各出力束オブジェクト４２２５Ａは、自らに設定されている出力モードの値に基づいてソートが指定されていることを判定し、通知された出力物オブジェクト４２２３Ａよりソート単位内でＮ枚目に対応する出力要素オブジェクト４２２４Ａを一つ取得する（Ｓ５０８）。各出力束オブジェクト４２２５Ａは取得された順に出力要素オブジェクト４２２４Ａをチェーン構造で関連付ける。
【０１４６】
続いて、成果物オブジェクト４２１１Ａは実行開始に必要なオブジェクトが生成済みか否かを判定し（Ｓ５０８１）、生成されるまで待機する。
【０１４７】
続いて、成果物オブジェクト４２１１Ａは、Ｎ枚目に対応する入力物オブジェクト４２２１ＡにＮ枚目の原稿の入力を要求する（Ｓ５０９）。当該要求に応じ、入力物オブジェクト４２２１Ａは、Ｎ枚目の原稿に対応する読み取り画像（スキャン画像）に対応する原画像オブジェクト４２２２Ａをメモリ内に生成する（Ｓ５１０）。続いて、入力物オブジェクト４２２１Ａは、原画像オブジェクト４２２２ＡにＮ枚目の原稿の読み取りを実行させる（Ｓ５１０）。次の原稿が有る場合（Ｓ５１１でＹｅｓ）、成果物オブジェクト４２１１Ａは、カウンタＮをインクリメントし（Ｓ５１２）、Ｎ枚目の原稿に対する入力物オブジェクト４２２１Ａをメモリ内に生成する（Ｓ５１３）。続いて、成果物オブジェクト４２１１Ａは、Ｎ枚目の入力物オブジェクト４２２１Ａに対応する出力物オブジェクト４２２３Ａをメモリ内に生成し、出力物オブジェクト４２２３Ａと入力物オブジェクト４２２１Ａとの関連を生成する（Ｓ５１４）。続いて、ステップＳ５０７〜Ｓ５１０を繰り返す。
【０１４８】
出力束オブジェクト４２２５Ａは、後処理オブジェクト４２２６Ａ−１、４２２６Ａ−２、４２２６Ａ−３が生成済みか否かを判定し（Ｓ５４５）、生成済みであれば後処理を実行する（Ｓ５４６）。
【０１４９】
図３０は後処理の実行の様子を示すフローチャート図の一例である。
後処理オブジェクト４２２６Ａ−１、４２２６Ａ−２及び４２２６Ａ−３は、後処理の実行開始時にまず、後処理をする機器が実行可能かどうかを判断する（Ｓ６０１）。実行可能であれば（Ｓ６０１のＹｅｓ）、後処理オブジェクト４２２６Ａ−１、４２２６Ａ−２及び４２２６Ａ−３は、前記した出力束オブジェクト４２２５Ａ−１、４２２５Ａ−２及び４２２５Ａ−３対して、指定の後処理を実行する（Ｓ６０２）。
【０１５０】
この間、後処理オブジェクト４２２６Ａ−１、４２２６Ａ−２及び４２２６Ａ−３は「後処理は正常終了したか」否か（Ｓ６０３）より、後処理の進捗を監視している。
【０１５１】
後処理が正常に終了した場合は（Ｓ６０３のＹｅｓ）、後処理オブジェクト４２２６Ａ−１、４２２６Ａ−２及び４２２６Ａ−３は、後処理のフローを終了し、出力束オブジェクト４２２５Ａ−１、４２２５Ａ−２及び４２２５Ａ−３に対して後処理の正常終了を通知する（Ｓ６０４）。
【０１５２】
一方、ステップＳ６０３において、後処理を実行中に何らかの異常で後処理を中断しなければならない状況が発生した場合は（Ｓ６０３のＮｏ）、後処理オブジェクト４２２６Ａ−１、４２２６Ａ−２、４２２６Ａ−３は、「後処理は中止できる状態か」否かを判定する（Ｓ６０６）。中止できる状態になった場合（Ｓ６０６のＹｅｓ）、後処理オブジェクト４２２６Ａ−１、４２２６Ａ−２及び４２２６Ａ−３は後処理を中止する（Ｓ６０５）。
【０１５３】
中止できる状態でない場合（Ｓ６０６のＮｏ）、後処理オブジェクト４２２６Ａ−１、４２２６Ａ−２及び４２２６Ａ−３は後処理が中止できる状態になるまで待機する（Ｓ６０７）。
【０１５４】
ステップＳ６０１において実行開始時に後処理をする機器が実行可能でない場合（Ｓ６０１のＮｏ）、後処理オブジェクト４２２６Ａ−１、４２２６Ａ−２及び４２２６Ａ−３は後処理を中止し（Ｓ６０５）、ついで、後処理の異常終了を出力束オブジェクト４２２５Ａ−１、４２２５Ａ−２及び４２２５Ａ−３に通知する（Ｓ６０８）。
【０１５５】
図３１は、コピージョブを実行した後、後処理と仕上げ処理を実行する際のドメインロジック層における処理手順を説明するための汎用的なフローチャート図の一例である。仕上げ処理オブジェクトのインスタンスリストは図３２に示したとおり、リング綴じ、挿入（複数枚の出力要素の途中に色などの異なる紙を仕切り用に挿入させる処理）、製本の3種を仕上げ処理として想定している。ここでは、図２８と異なるステップについて説明する。
【０１５６】
ステップＳ５０４にて出力物オブジェクト４２２３Ａを生成した後、成果物オブジェクト４２１１Ａは仕上げ処理を実行するか否かを判定する（Ｓ５０４１）。仕上げ処理を実行する場合（Ｓ５０４１のＹｅｓ）、成果物オブジェクト４２１１Ａは、仕上げオブジェクト４２２７Ａを生成する（Ｓ５０４２）。
【０１５７】
また、ステップＳ５４７において、仕上げ処理としての後処理オブジェクト４２２６Ａ−０が生成されている場合（Ｓ５４７のＹｅｓ）、仕上げ処理としての後処理オブジェクト４２２６Ａ−０は仕上げ処理を実行する（Ｓ５４８）。以降の処理は図２８と同様である。
【０１５８】
図３３は、仕上げ処理としての後処理の実行の手順を示すフローチャート図である。
【０１５９】
仕上げ処理としての後処理オブジェクト４２２６Ａ−０は、仕上げ処理の実行開始時に、仕上げ処理をする機器が実行可能かどうかを判断する（Ｓ６１１）。実行可能な場合（Ｓ６１１のＹｅｓ）、前記した複数の出力束オブジェクト４２２５Ａ−１、４２２５Ａ−２、４２２５Ａ−３に対して、指定の仕上げ処理を実行する（Ｓ６１２）。この間、仕上げ処理としての後処理オブジェクト４２２６Ａ−０は「仕上げ処理は正常終了したか」否かを判定して（Ｓ６１３）、仕上げ処理の進捗を監視している。
【０１６０】
仕上げ処理が正常に終了した場合（Ｓ６１３のＹｅｓ）、仕上げ処理としての後処理オブジェクト４２２６Ａ−０は、仕上げ処理を終了し、仕上げオブジェクト４２２７Ａに通知し、仕上げオブジェクト４２２７Ａは成果物オブジェクト４２１１Ａに対して仕上げ処理の正常終了を通知する（Ｓ６１４）。
【０１６１】
一方、仕上げ処理の実行中に何らかの異常で仕上げ処理を中断しなければならない状況が発生した場合（Ｓ６１３のＮｏ）、仕上げ処理としての後処理オブジェクト４２２６Ａ−０は、「仕上げ処理は中止できる状態か」を判定する（Ｓ６１５）。中止できる状態になった場合（Ｓ６１５のＹｅｓ）、仕上げ処理としての後処理オブジェクト４２２６Ａ−０は仕上げ処理の実行を中止し（Ｓ６１７）、仕上げオブジェクト４２２７Ａに通知し、仕上げオブジェクト４２２７Ａは仕上げ処理の異常終了を成果物オブジェクト４２１１Ａに通知する（Ｓ６１８）。
【０１６２】
中止できる状態でない場合（Ｓ６１５のＮｏ）、仕上げ処理としての後処理オブジェクト４２２６Ａ−０は仕上げ処理が中止できる状態になるまで待機する（Ｓ６１６）。
【０１６３】
ステップＳ６１１において実行開始時に仕上げ処理をする機器が実行可能でない場合（Ｓ６１１のＮｏ）、仕上げ処理としての後処理オブジェクト４２２６Ａ−０は仕上げ処理を中止し（Ｓ６１７）、仕上げオブジェクト４２２７Ａに通知し、仕上げオブジェクト４２２７Ａは仕上げ処理の異常終了を成果物オブジェクト４２１１Ａに通知する（Ｓ６１８）。
【０１６４】
以上説明したように、ドメインロジック層４２による処理内容は、アプリケーション６０から隠蔽される。すなわち、ドメインロジック層４２の各クラスは、アプリケーション６０から直接呼び出されることはない。したがって、複合機１の内部的なソフトウェア構成をサードベンダー等に公開する必要はない。よって、複合機１の開発ベンダーの技術流出を適切に防止することができる。
【０１６５】
また、ドメインロジック層４２は、出力束オブジェクト４２２５Ａによる出力要素オブジェクト４２２４Ａの束ね方を変化させることによって、ソート指定、スタック指定に応じた出力順の制御を行っている。したがって、柔軟性が高くシンプルな構成が実現されている。斯かる構成によれば、保守性や機能拡張性を向上させることができる。
【０１６６】
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【０１６７】
１          複合機
２０        ＯＳ
２１        ドライバプログラム
３０        ＪＶＭ
３１        ＣＤＣ
３２        Ｆｏｕｎｄａｔｉｏｎ  Ｐｒｏｆｉｌｅ
４０        ＭＦＰプロファイル
４１        プレゼンテーション層
４２        ドメインロジック層
４３        サービス層
５０        ネイティブモジュール
６０        アプリケーション
６１        プリントアプリ
６２        コピーアプリ
６３        スキャンアプリ
６４        ＦＡＸアプリ
１０１      コントローラ
１０２      オペレーションパネル
１０３      ファクシミリコントロールユニット
１０４      撮像部
１０５      印刷部
１１１      ＣＰＵ
１１２      ＡＳＩＣ
１２１      ＮＢ
１２２      ＳＢ
１３１      ＭＥＭ−Ｐ
１３２      ＭＥＭ−Ｃ
１３３      ＨＤＤ
１３４      メモリカードスロット
１３５      メモリカード
１４１      ＮＩＣ
１４２      ＵＳＢデバイス
１４３      ＩＥＥＥ１３９４デバイス
１４４      セントロニクスデバイス
４１１      サービス検索クラス
４１２      入出力形式クラス
４１３      要求属性値群クラス
４１４      サービスクラス
４１５      ドキュメントクラス
４１６      ジョブクラス
４２１      要求管理部
４２２      Ｉ／Ｏファンクション部
４２３      Ｉ／Ｏリソース管理部
４２４      システム管理部
４１４１    サービス属性値群クラス
４１５１    ドキュメント属性値群クラス
４１６１    ジョブ属性値群クラス
４２１１    成果物クラス
４２２１    入力物クラス
４２２２    原画像クラス
４２２３    出力物クラス
４２２４    出力要素クラス
４２２５    出力束クラス
４２３１    入力リソースクラス
４２３２    出力リソースクラス
４２４１    機内監視クラス
【先行技術文献】
【特許文献】
【０１６８】
【特許文献１】特開２００７−３２５２５１号公報
【図１】
2011042096.tif 000003
【図２】
2011042096.tif 000004
【図３】
2011042096.tif 000005
【図４】
2011042096.tif 000006
【図５】
2011042096.tif 000007
【図６】
2011042096.tif 000008
【図７】
2011042096.tif 000009
【図８】
2011042096.tif 000010
【図９】
2011042096.tif 000011
【図１０】
2011042096.tif 000012
【図１１】
2011042096.tif 000013
【図１２】
2011042096.tif 000014
【図１３】
2011042096.tif 000015
【図１４】
2011042096.tif 000016
【図１５】
2011042096.tif 000017
【図１６】
2011042096.tif 000018
【図１７】
2011042096.tif 000019
【図１８】
2011042096.tif 000020
【図１９】
2011042096.tif 000021
【図２０】
2011042096.tif 000022
【図２１】
2011042096.tif 000023
【図２２】
2011042096.tif 000024
【図２３】
2011042096.tif 000025
【図２４】
2011042096.tif 000026
【図２５】
2011042096.tif 000027
【図２６】
2011042096.tif 000028
【図２７】
2011042096.tif 000029
【図２８】
2011042096.tif 000030
【図２９】
2011042096.tif 000031
【図３０】
2011042096.tif 000032
【図３１】
2011042096.tif 000033
【図３２】
2011042096.tif 000034
【図３３】
2011042096.tif 000035