[1]ハードウェア概略構成
図15は、本発明の実施例1に係る画像形成装置10のハードウェア構成を示す概略ブロック図である。
この画像形成装置10では、MPU11にインタフェース12を介してEEPROM13E1、EEPROM13E2、DRAM13D、HDD14、操作パネル15、スキャナ16S、プリンタ16P、NIC17、ファクシミリモデム18及び圧縮・伸張ASIC19が結合されている。図15では、簡単化のため、複数のインタフェースを1つのブロックで示している。
EEPROM13E1及び13E2は、例えばフラッシュメモリである。EEPROM13E1には、BIOS(Basic Input Output System)が格納されている。EEPROM13E2には、後述のソフトウェアが格納されている。DRAM13Dはワークエリア用であり、画像入出力手段としてのHDD14はデータ格納用である。
操作パネル15は、設定値又は指示を入力し、設定画面や状態などを表示させるためのものである。本実施例1では、操作パネル15がタッチパネルとハードウェアキーの組み合わせで構成されている。
画像入力手段としてのスキャナ16Sは、スキャン、コピー及びファックス送信での画像入力に用いられる。画像出力手段としてのプリンタ16Pは、プリントエンジン、定着器並びに用紙の給紙部、搬送部及び排紙部を備え、供給されるビットマップデータに基づいてプリントエンジンの感光ドラムに静電潜像を形成し、これをトナーで現像し、用紙に転写し定着させた後に排紙する。
画像入出力手段としてのNIC17は、ケーブル又は無線の通信媒体を介してホストコンピュータ20に結合され、プリントジョブ、電子メール送受信、インターネットファクシミリ送信及びブラウザからの操作パネル15の遠隔操作に用いられる。ファクシミリモデム18は、ファクシミリ送受信用である。
圧縮・伸張ASIC19は、MPU11のコプロセッサとして用いられ、例えば画像の圧縮及び伸張にそれぞれ2ポートを有し、最大4並列実行可能である。
[2]ソフトウェア設計思想
まず、ソフトウェア設計思想について説明する。
従来の画像形成装置の1つである複合機では、プリント、コピー及びファックスなどのユーザサービスに対応するアプリケーションをそれぞれ別個に設ける構成となっていた。すなわち1つのアプリケーションは、上記ユーザサービスの1つと対応し、複合機はこのユーザサービスを提供するためにジョブを実行していた。
しかし、アプリケーション同士には、部分的に共通する管理や制御が存在する。
そこで、本発明では、従来複数あったアプリケーションを1つに統合し、1つのアプリケーションで全てのサービスを提供可能且つ全てのジョブを実行可能とし、共通部分を纏めることとした。以下の記載は、この統合化したアプリケーションに係わるものである。
ジョブとは、ユーザがコンピュータに実行させる仕事の単位である。
しかし、複合機の多機能化に伴いジョブ種が増えると、ジョブの実行に用いられるソフトウェア部品数が増加し、プログラムが複雑化する。
そこで、ジョブを基本ジョブに分解し、基本ジョブを組み合わせることにより、ジョブを体系化し、ジョブ層でこの組み合わせを取り扱うようにする。すなわち、基本ジョブの組み合わせとこれの実行順をジョブシナリオとし、このジョブシナリオに従って1つ又は複数の基本ジョブを順次実行することによりジョブを実行する。これにより、ジョブに対応したプログラムの複雑化を避け、又多機能化に伴いジョブ種を増やしたり機能を追加、変更する必要がある場合に、設計変更を容易にする。
また、本発明では、この統合化したアプリケーションを機能別に多層化することにより設計変更を更に容易にする。本実施例では、アプリケーションをサービス層とジョブ層とエレメント層とに分け多層化する。
さらに、サービス層内及びジョブ層内をより具体的に機能別にして多層化することにより設計変更を容易にする。
さらにまた、ミドルウェア層は主に、ハードウェアをその状態に応じて、機種に依存せずアプリケーションが比較的簡単に制御(「操作」と称す。)できるようにするための基本的なプログラムを備えて、アプリケーションを簡単化するとともに設計変更を容易にする。
しかし、このように設計変更容易化のために、多層化されると、各層間の関係が増えるので、簡単化する工夫が必要になる。
そこで、以下に説明するように、サービスの種類によってはジョブ層を通さずにサービスを実行(指示伝達を簡単化)したり、ジョブ情報の伝達を簡単化したり、指示と通知の伝達方向を統一したりして、設計変更を容易化している。
以下、本発明に係わる統合化され多層化されたアプリケーションの説明をする。
[3]ソフトウェア階層構造
図1は、多層化されたアプリケーションの階層構造を示す概略ブロック図である。
OS層30の上層には、ミドルウェア層40を介してアプリケーション層50が存在する。
本実施例の特徴部分であるアプリケーション層50は、コモン部51及びシステム管理部52と、下層のエレメント層60と、中間層のジョブ層70と、上層のサービス層80とを備えている。
サービス層80は、ユーザのサービス要求を受け付けてジョブ層70及びエレメント層60を介してユーザにサービスを提供するものである。上述のように、サービス層80で受け付けたサービスは、ジョブ層70を介さずにエレメント層60又はシステム管理部52で実行されるものがあり、これらをジョブと区別するために「ワーク」と称す。各サービスは、ジョブ又はワークに対応し、ジョブはジョブ層70により実行される。該ジョブは、1つ又は複数の基本ジョブで構成され、さらに基本ジョブは1つ又は複数のジョブステップで構成され、該ジョブステップはジョブ層70によりエレメント層60を随時利用して実行される。
図2は、各層に含まれる機能部を示す。各機能部は、1つ以上のプログラムモジュールから構成される。図2中の矢印付線は、主な処理の流れを一般的に示す。
[4]OS層
OS層30は、ハードウェアに依存したデバイスドライバ31と、OS32とを備え、デバイスドライバ31はOS32の下層に位置し、OS32に登録される。OS32は汎用であり、そのカーネルは例えばLinux(登録商標)である。
[5]ミドルウェア層
ミドルウェア層40は、機能部41〜43を備えている。
デバイス制御部41は、デバイスドライバ31を介し、操作パネル15、スキャナ16S、プリンタ16P、NIC17及びファクシミリモデム18を制御し、又これらデバイスの状態通知を受け取るためのものである。
画像処理部42は、圧縮・伸張ASIC19の制御、画像の拡大、縮小又は回転処理及びRIPなどの処理を行う。
リソース管理部43は、リソースごとのリソース要求キューに従って、リソースを割り当て、割り当てたリソースが使用済みになったら解放する。
以下、アプリケーション層50について説明する。
[6]コモン部及びシステム管理部
コモン部51は、システム管理部52、エレメント層60、ジョブ層70及びサービス層80で共通に用いられるプログラムと、機種に依存する設定値が条件を満たしているか否かを判定するプログラムとを含んでいる。このコモン部51により、システム管理部52、エレメント層60、ジョブ層70及びサービス層80のプログラムが簡単化され且つ機種に依存しないものとなり、設計変更が容易となる。
システム管理部52は、システムの状態及びユーザを管理しており、システム内でエラーが発生した場合は、その通知を必要な箇所に分配し、またログイン処理及びログイン後のサービス要求許否の処理を担当する。
[7]エレメント層
エレメント層60は、デバイス操作部61、画像処理操作部62及びエンティティ部63の各機能部を備えている。これら機能部61又は62はそれぞれ、ミドルウェア層40の機能部41又は42に対応している。デバイス操作部61及びエンティティ部63はいずれも、画像入力手段及び画像出力手段を制御又は操作するためのものである。
デバイス操作部61は、デバイス制御部41から通知される機器の状態に応じて、デバイス制御部41を操作する。
画像処理操作部62は、中間データの生成などの処理を行い、又上記画像処理部42を介して画像の圧縮、伸張、拡大、縮小、回転及びRIPなどの処理を行う。
エンティティ部63は、データの保持と管理を行う。
[8]ジョブ層
ジョブ層70は、ジョブの実行を管理し、且つエレメント層60の1つの機能部内にあるプログラムを起動し又は複数の機能部内のプログラムをシーケンシャルに起動して、ジョブを実行するものであり、ジョブ管理部71、ジョブ制御部72、基本ジョブ実行部73、インプットステップ実行部74、エディットステップ実行部75及びアウトプットステップ実行部76の各ステップ実行部と、これらからアクセス可能なジョブ情報77とを備えている。なお、便宜のため、ジョブ管理部71及びジョブ制御部72を含むものを「応用ジョブ層」と称し、基本ジョブ実行部73、インプットステップ実行部74、エディットステップ実行部75及びアウトプットステップ実行部76を含むものを「基本ジョブ層」と称す。
ジョブ管理部71は、サービス層80からのジョブ開始要求に応じて、その時点の設定情報(ジョブ種に対応する部分のみで可)をコピーした、ジョブ情報77を生成し、上記リソース管理部43を介して該ジョブを構成する基本ジョブの実行に必要なハードウェア資源を獲得し、その後ジョブ制御部72にジョブの実行、実行順の変更、中断、再開又はキャンセルなどのジョブ制御指示を行う。ここで、ジョブ情報77とは、ジョブの設定値とジョブの状態とからなり、ジョブ種によらない、各ジョブに共通の構造体である。図5は、ジョブ情報に含まれる設定値の説明図である。
ジョブ制御部72は、上記ジョブ制御指示に応答し、その指示がジョブの実行の場合、ジョブシナリオに従って基本ジョブ実行部73にジョブを構成する基本ジョブを順次実行指示することによりジョブを実行する。ここにジョブシナリオは、1つ以上の基本ジョブとその実行順の情報を含む。このジョブシナリオは、条件に応じて基本ジョブを選択する条件分岐命令を含んでもよい。例えば出力リソース待ちの場合、出力を急ぐためユーザの設定に応じ出力リソースを変更するようにしてもよい。
基本ジョブ実行部73は、上記基本ジョブ実行指示に応答し、基本ジョブが画像処理を含む場合にはイメージジョブ実行部73aを起動し、含まない場合にはアクセスジョブ実行部73bを起動する。
イメージジョブ実行部73aは、基本ジョブシナリオに従って、画像処理対象の頁ごとにインプットステップ実行部74、エディットステップ実行部75又はアウトプットステップ実行部76を起動してジョブステップを順次実行させることにより、基本ジョブを実行する。ここに基本ジョブシナリオは、複数のジョブステップとその実行順の情報を含む。このシナリオも、上記同様に、条件分岐命令を含むことができる。
アクセスジョブ実行部73bは、エレメント層60にあるデバイス操作部61又はエンティティ部63を介して、画像処理を伴わない基本ジョブを実行する。例えば、デバイス操作部61、デバイス制御部41、デバイスドライバ31及びNIC17を介して特定の状態変化を電子メールで通知する。
インプットステップ実行部74は、デバイス操作部61又はエンティティ部63を介して画像入力に係わるジョブステップを実行する。例えば、デバイス操作部61、デバイス制御部41及びデバイスドライバ31を介してスキャナ16Sに原稿画像データを読み込ませる処理を行う。また、エンティティ部63が保持している印刷ファイルをファクシミリモデム18により送信する場合に、エンティティ部63から印刷ファイルを取得するのもインプットステップとして実行する。
エディットステップ実行部75は、画像処理操作部62を介して画像編集に係わるジョブステップを実行する。例えば、画像処理操作部62及び画像処理部42を介して未編集の印刷データに対し拡大、縮小、回転などの処理を行う。
アウトプットステップ実行部76は、デバイス操作部61又はエンティティ部63を介して画像出力に係わるジョブステップを実行する。例えば、デバイス操作部61、デバイス制御部41及びデバイスドライバ31を介してプリンタ16Pに印刷データを印刷させる処理を行う。
[9]サービス層
サービス層80は、上層のユーザサービス受付部81と、下層のユーザサービス実行部82及びシステムサービス実行部83とを備えている。
ユーザサービス受付部81は、ユーザからの要求をイベント通知により受け付けて、ユーザの要求が何であるかを判断し、この要求に応えるためユーザサービス実行部82に対しサービスの実行を指示する。
具体的には、操作パネル15、NIC17又はファクシミリモデム18等からデバイスドライバ31、デバイス制御部41及びデバイス操作部61を介した要求を受け付け、ユーザのサービス要求に応じたジョブシナリオの識別子(ポインタ又は参照)をユーザサービス実行部82に引き渡すことによりサービスの実行を指示する。このサービス要求には、コピー、ファックス送受信、電子メール送受信、メンテナンス、ソフトウェアのアップデート等がある。但し、エンティティ部63が保持する設定情報等のデータの表示や変更などの簡易なサービス要求を受け付けた場合は、アプリケーションの複雑化を避けるため、ユーザサービス実行部82に実行を指示せず、エンティティ部63に直接サービスの実行を指示する。
ユーザサービス実行部82は、上記サービス実行指示に応答して、ジョブシナリオの識別子をジョブ管理部に引き渡してジョブの開始指示をすることにより、サービスを実行する。
システムサービス実行部83は、画像形成装置10のシステム要求を、システム管理部52を介して受け付け、ジョブ管理部71を呼び出すことによりサービスを実行する。本実施例では、システムからの要求は後述する通知サービスのみ受け付けるが、他のサービス要求、例えば所定の時刻に自動的にFAX送信又はメンテナンスをするサービス等を受け付けるように設計してもよい。
システムサービス実行部83は、システム管理部52からの機器又はユーザジョブの状態変化の通知を受け取ると、エンティティ部63に格納されている設定情報に基づきジョブ管理部71に対し通知ジョブの実行を指示する。通知ジョブは、ユーザ設定のイベント、例えば実行中のジョブでエラーが発生したりファックス送信が完了したりした時に、設定した通知手段でユーザに該イベントの発生を通知するものである。この設定情報は、ユーザへの通知要否、通知すべきイベント、プリントや電子メールなどの通知手段、電子メールの場合には通知先などを含み、操作パネル15から変更が可能である。
以下、上述したソフトウェア、特にアプリケーション層50が種々のサービス要求に対応するフローを説明する。
[10]プリントサービス実行フロー
図3は、各機能部間を矢印付線で結んでプリントサービス実行時のフローを示す図である。以下、括弧内は図中の実行指示識別符号を示す。
(A01、A02)イベントドリブンにより、一方ではホストコンピュータ20からのデータが、NIC17及びデバイスドライバ31を介してリソース管理部43が確保する、DRAM13Dのバッファ領域内に格納され、他方ではデバイス制御部41及びデバイス操作部61を介して印刷要求とデータ識別情報とがユーザサービス受付部81に通知される。
(A03)ユーザサービス受付部81は、印刷要求の通知であった場合、プリントのジョブシナリオの識別子と、サービスに対応した設定情報の識別子と、をユーザサービス実行部82に渡すとともに、プリントサービスの実行を指示する(ユーザサービス実行部82を起動する)。この設定情報には、上記データ識別情報と、プリントに関しEEPROM13E2に設定されている現在の設定値が含まれる。
ユーザサービス実行部82はこれに応答して、図4のシーケンス図に示すような動作を行うことにより、サービスを実行する。以下、この動作を具体的に説明する。
(A04)ユーザサービス実行部82は、ジョブ管理部71を起動し、これにプリントジョブを生成指示することによりプリントサービスの実行を開始する。
(A05)ジョブ管理部71はこれに応答して、初期化されたジョブ情報77のインスタンスを生成する。このインスタンスは、ジョブ情報77のディフォルト値を持っている。次に、ジョブ管理部71はこのジョブにジョブIDを割当て、ジョブ情報77にこれとジョブ種を書き込む。
(A06)ジョブ管理部71は、ジョブ情報77の生成及び書き込みが完了すると、ユーザサービス実行部82に上記ジョブIDを通知する。
(A07、A08)ユーザサービス実行部82は、ユーザサービス受付部81から受け取った上記設定情報をジョブ情報77に書き込み、次いでジョブ管理部71に対し、プリントのジョブシナリオの識別子を引き渡してプリントジョブの開始を指示する。
(A09〜A11)ジョブ管理部71はこれに応答して、システム管理部52にジョブ開始をジョブIDとともに通知し、上記ジョブシナリオの識別子に基づきジョブシナリオを参照し、リソース管理部43に対し、基本ジョブを実行するのに必要なメモリや圧縮・伸張ASIC19などのハードウェア資源の獲得要求をし、この獲得後、ジョブシナリオの識別子とジョブ情報77の識別子とをジョブ制御部72に引き渡すとともに、プリントジョブの制御を指示する。
(A12)ジョブ制御部72はこれに応答して、受け取ったジョブシナリオの識別子に基づきジョブシナリオを参照し、これに従って、基本ジョブ実行部73にジョブ情報77の識別子を引き渡すとともに、基本ジョブを実行指示する。ここで本実施例では、プリントジョブは1つの基本ジョブから構成されるので、ジョブ制御部72はこの基本ジョブだけを実行指示するが、プリントジョブが複数の基本ジョブから構成される場合は、ジョブ制御部72は、ジョブシナリオに従って、1つの基本ジョブを実行指示し、その実行完了後、次の基本ジョブを実行指示するというように、複数の基本ジョブを順次実行指示するものである。
従来ではジョブが実行された後、プログラムの階層をミドルウェア層40まで順に降りてからメモリなどのジョブに必要なハードウェア資源を獲得していたので、資源を獲得できずに待ち状態となっている時にジョブがキャンセルされると、それまでの処理が無駄になったが、本実施例ではハードウェア資源獲得後に基本ジョブを実行するので、このような無駄を省略することができるという効果を奏する。
基本ジョブ実行部73は、上記基本ジョブ実行指示に応答して、基本ジョブ種に応じて、イメージジョブ実行部73aにジョブ情報77の識別子と指示された基本ジョブを伝達するとともに、これを起動する。イメージジョブ実行部73aはこれに応答して、指示された基本ジョブに対応する基本ジョブシナリオを参照し、これに従って以下のようにステップ実行部74〜76に対し画像入力、画像処理(省略される場合有)及び画像出力のジョブステップをシーケンス制御する。すなわち、指示された基本ジョブを構成する複数のジョブステップを、基本ジョブシナリオに従ってステップ実行部74〜76に順次実行指示する。なお、ジョブ制御部72が基本ジョブ実行部73に実行指示し、これがイメージジョブ実行部73aを起動する場合を説明したが、ジョブ制御部72が直にイメージジョブ実行部73aを起動するようにしてもよい。
(A13)上記シーケンス制御において、イメージジョブ実行部73aはまず、指示された基本ジョブに対応する基本ジョブシナリオに従って、ジョブ情報77の識別子をインプットステップ実行部74に引き渡すとともにこれを起動する。
(A14)インプットステップ実行部74は、これに応答して、ジョブ情報77に含まれるジョブ種(プリントジョブ)に応じジョブ情報77から所定の設定情報を読み取り、これに基づき、画像処理操作部62に該ジョブ情報77に含まれる上記データ識別情報を渡すとともにこれを起動する。
(A15〜A18)画像処理操作部62は、これに応答して、該データ識別情報をデバイス操作部61に引き渡して、リソース管理部43が確保しているバッファ領域内の印刷データをデバイス操作部61に取得させ、この印刷データを逐次解析して、これに含まれる所定の情報をジョブ情報77に書き込み、その後画像処理部42を介して未編集の印刷出力頁データを順次作成していく。そして、1ページ分の印刷出力頁データを作成するごとにインプットステップ実行部74に作成完了を通知するとともに該頁データの識別子を引き渡す。
(A19)インプットステップ実行部74は、これに応答して、基本ジョブ実行部73内のイメージジョブ実行部73aに該完了を通知するとともに該頁データの識別子を引き渡す。
(A20)イメージジョブ実行部73aは、これに応答して、上記基本ジョブシナリオに従って、該頁データの識別子とジョブ情報77の識別子とをエディットステップ実行部75に引き渡すとともにこれを起動する。なお、基本ジョブシナリオによっては、エディットステップ実行部75を起動しない場合があり、その場合はステップA24の処理を行う。
(A21〜A23)エディットステップ実行部75はこれに応答して、ジョブ情報77に含まれるジョブ種に応じジョブ情報77から所定の設定情報を読み取り、これに基づいて、画像処理操作部62を介し画像処理部42の対応するメソッドを呼び出して、該頁データに対し拡大、縮小、回転などの画像編集を行う。編集が完了すると、基本ジョブ実行部73内のイメージジョブ実行部73aに該完了を通知する。
(A24)イメージジョブ実行部73aは、上記基本ジョブシナリオに従って、編集された頁データの識別子とジョブ情報77の識別子とをアウトプットステップ実行部76に引き渡すとともにこれを起動する。
(A25)アウトプットステップ実行部76はこれに応答して、ジョブ情報77に含まれるジョブ種に応じジョブ情報77から所定の設定情報を読み取り、これに基づいてデバイス操作部61を起動する。
(A26〜A28)デバイス操作部61はこれに応答して、コモン部51を呼び出して設定情報が機種に依存する条件を満たしているか否かを判定し、肯定判定した場合には、該設定情報に基づいてデバイス制御部41を介し用紙への印刷処理を行う。また、否定判定した場合には、該印刷処理を行わないまま自己の処理を終えるか又は該コモン部51から取得した、該設定情報の代替情報に基づいて該印刷処理を行う。
(A29)アウトプットステップ実行部76は、全ての頁に対して該印刷処理が完了すると、基本ジョブ実行部73内のイメージジョブ実行部73aに該完了を通知する。
(A30)イメージジョブ実行部73aは、基本ジョブシナリオを参照して、ジョブステップを全て実行完了したと判断し、すなわちこれらから構成される1つの基本ジョブの実行が完了したと判断し、ジョブ制御部72に基本ジョブの完了を通知する。
(A31)ジョブ制御部72はこれに応答して、ジョブ管理部71にこの基本ジョブ完了をジョブIDとともに通知する。
(A32〜34)ジョブ管理部71はこれに応答して、リソース管理部43を介し、ジョブ開始時に獲得した上記ハードウェア資源を解放し、ジョブシナリオを参照し、基本ジョブを全て実行完了したと判断し、すなわちこれから構成されるプリントジョブの実行が完了したと判断して、ジョブ情報77を破棄し、且つ、ジョブ完了をジョブIDとともにシステム管理部52及びユーザサービス実行部82に通知する。
このように、全ジョブ種に共通のデータ構造のジョブ情報77を備えておき、これを利用するインプットステップ実行部74、エディットステップ実行部75及びアウトプットステップ実行部76内のプログラムにおいて、ジョブ情報77が保持しているジョブ種に応じ所定の設定情報をジョブ情報77から取得するので、構成が簡単になって設計変更が容易となるという効果を奏する。
また、イメージジョブ実行部73aがジョブに対応する基本ジョブシナリオに基づき各ステップ実行部74〜76に実行指示するので、各ステップ実行部74〜76内のプログラムの詳細を変更せずとも該基本ジョブシナリオを変更するだけで新たなジョブ種を容易に作成でき、設計変更が容易となるという効果を奏する。
[11]ファックス送信サービス実行フロー
図6は、各機能部の間を矢印付線で結んでファックス送信サービス実行時のフローを示す図である。
(B01、B02)ユーザは、操作パネル15を操作してファックス送信先等の設定を行い、操作パネル15上のスタート釦を押下する。デバイスドライバ31はキー押下を検出してそのコードをデバイス制御部41に供給し、デバイス制御部41は状態と入力キーコードとに基づいて状態遷移を行うことにより入力をトークン化し、デバイス操作部61に供給する。
(B03)デバイス操作部61は、要求や設定値を解釈してこれをユーザサービス受付部81に供給する。
(B04)ユーザサービス受付部81はこれに応答して、ユーザサービス実行部82に対し、ファックス送信のジョブシナリオの識別子とファックス送信に関する設定値の識別子とを渡してファックス送信サービスの実行を指示する。
(B05)ユーザサービス実行部82はこれに応答して、ジョブ管理部71を起動し、これにファックス送信ジョブを生成指示することによりファックス送信サービスを実行する。
(B06、B07)ジョブ管理部71はこれに応答して、このジョブにジョブIDを割り当て、初期化されたジョブ情報77のインスタンスを生成して、これに該ジョブIDとジョブ種を書き込み、次にユーザサービス実行部82にこのジョブIDを通知する。
(B08、B09)ユーザサービス実行部82は、ユーザサービス受付部81から受け取った識別子で指定される設定値をジョブ情報77に書き込み、次いでジョブ管理部71に対し、上記ジョブシナリオの識別子を渡してファックス送信ジョブの開始を指示する。
(B10〜B12)ジョブ管理部71はこれに応答して、システム管理部52にジョブ開始をジョブIDとともに通知し、受け取ったジョブシナリオの識別子に基づきジョブシナリオを参照し、リソース管理部43に最初の基本ジョブ(後述するScanToBox基本ジョブ)を実行するのに必要なDRAM13D内の領域やスキャナ16Sなどのハードウェア資源の獲得要求をし、この獲得後、該ジョブシナリオの識別子とジョブ情報77の識別子とをジョブ制御部72に引き渡すとともに、ファックス送信ジョブの制御開始指示をする。
(B13)ジョブ制御部72はこれに応答して、受け取ったジョブシナリオの識別子に基づきジョブシナリオを参照し、これに従って、基本ジョブ実行部73にジョブ情報77の識別子を引き渡すとともに、ファックス送信ジョブを構成する1つのScanToBox基本ジョブを実行指示する。
ここで、ファックス送信のジョブシナリオは、ScanToBox基本ジョブを行った後にBoxToFax基本ジョブを行うことを示している。すなわち、ファックス送信ジョブは、スキャナ16Sから原稿画像を読み取ってそのファイルをボックス(ディレクトリ)に入れるまでのScanToBox基本ジョブと、送信先を呼び出し次いで該ボックスからファイルを取り出してファックス送信するBoxToFax基本ジョブとの組み合わせである。
基本ジョブ実行部73はこれに応答して、実行指示された基本ジョブが、画像処理を伴うと判定し、イメージジョブ実行部73aにジョブ情報77の識別子と指示された基本ジョブを伝達するとともに、これを起動する。イメージジョブ実行部73aはこれに応答して、指示された基本ジョブに対応する基本ジョブシナリオを参照し、これに従って以下のようにステップ実行部74〜76に対し画像入力、画像処理(省略される場合有)及び画像出力のジョブステップをシーケンス制御する。すなわち、指示された基本ジョブを構成する複数のジョブステップを、基本ジョブシナリオに従ってステップ実行部74〜76に順次実行指示する。
(B14)イメージジョブ実行部73aはまず、指示された基本ジョブに対応する基本ジョブシナリオに従って、ジョブ情報77の識別子をインプットステップ実行部74に引き渡すとともにこれを起動する。
(B15〜17)インプットステップ実行部74はこれに応答して、ジョブ情報77に含まれるジョブ種に応じジョブ情報77から所定の設定情報を読取り、これに基づいてデバイス操作部61及びデバイス制御部41等を介しスキャナ16Sから1頁分の原稿画像データを読み込む。デバイス操作部61はこの際、デバイス制御部41からの状態通知に応じてデバイス制御部41を操作する。
(B18)インプットステップ実行部74は上述した処理を完了すると、ジョブ情報77に該原稿画像データの格納アドレス及び範囲などの頁情報を書き込んだ後、基本ジョブ実行部73内のイメージジョブ実行部73aに該完了を通知する。
(B19)イメージジョブ実行部73aはこれに応答して、上記基本ジョブシナリオに従って、ジョブ情報77の識別子をアウトプットステップ実行部76に引き渡すとともにこれを起動する。
(B20、B21)アウトプットステップ実行部76はこれに応答して、ジョブ情報77に含まれるジョブ種に応じジョブ情報77から所定の設定情報(該頁情報を含む)を読み取り、これに基づいて該原稿画像データを直に又はファイルとしてエンティティ部63に格納し、基本ジョブ実行部73内のイメージジョブ実行部73aに該完了を通知する。
(B22)イメージジョブ実行部73aはこれに応答して、基本ジョブシナリオを参照して、ジョブステップを全て実行完了し、ScanToBox基本ジョブの実行が完了したと判定し、ジョブ制御部72にこの完了を通知する。
(B23)ジョブ制御部72はこれに応答して、ジョブ管理部71にこの基本ジョブ完了をジョブIDとともに通知する。
(B24)ジョブ管理部71はこれに応答して、リソース管理部43を介し、ジョブ開始時に獲得した上記ハードウェア資源を解放し、その後ジョブシナリオを参照し、次の基本ジョブ(BoxToFax基本ジョブ)があると判断して、リソース管理部43にこの次の基本ジョブの実行に必要なファクシミリモデム18などのハードウェア資源の獲得要求をする。
(B25〜B27)ジョブ管理部71は上記資源獲得後、ジョブ情報77から送信先FAX番号を読み取り、直接、デバイス操作部61を介しデバイス制御部41に宛先呼出制御を実行させる。デバイス操作部61はこの際、デバイス制御部41からの状態通知に応じてデバイス制御部41を操作する。
この呼出制御が失敗すると次の処理へ進めないという意味で、この制御はリソース確保に類似しており、共にジョブ管理部71の責務とすることで、プログラム構造が整理されて設計変更容易性に寄与する。
なお、BoxToFaxジョブ及びファックス受信ジョブ実行に必要なDRAM13D内の領域は、画像形成装置10の立ち上げ時の初期化処理で予め確保されており、この時点でハードウェア資源を獲得する必要はない。
(B28〜B30)デバイス制御部41は、送信先ファックスのオンフックを検知すると、デバイス操作部61を介してこれをジョブ管理部71に通知する。
(B31)ジョブ管理部71はこれに応答して、ジョブ制御部72にジョブの次制御を指示する。
(B32)ジョブ制御部72はこれに応答して、ジョブシナリオを参照し、これに従って、基本ジョブ実行部73にジョブ情報77の識別子を引き渡すとともに、ファックス送信ジョブを構成する、上記ScanToBox基本ジョブの次の基本ジョブであるBoxToFax基本ジョブを実行指示する。
基本ジョブ実行部73はこれに応答して、基本ジョブ種に応じて、イメージジョブ実行部73aにジョブ情報77の識別子と指示された基本ジョブとを伝達するとともに、これを起動する。イメージジョブ実行部73aはこれに応答して、指示された基本ジョブに対応する基本ジョブシナリオを参照し、これに従って以下のようにステップ実行部74〜76に対し画像入力、画像処理(省略される場合有)及び画像出力のジョブステップをシーケンス制御する。すなわち、指示された基本ジョブを構成する複数のジョブステップを、基本ジョブシナリオに従ってステップ実行部74〜76に順次実行指示する。
(B33)イメージジョブ実行部73aはまず、指示された基本ジョブに対応する基本ジョブシナリオに従って、ジョブ情報77の識別子をインプットステップ実行部74に引き渡すとともにこれを起動する。
(B34、B35)インプットステップ実行部74はこれに応答して、ジョブ情報77に含まれるジョブ種に応じジョブ情報77から所定の設定情報を読取り、これに基づいてファイルをエンティティ部63から読み出し、イメージジョブ実行部73aにジョブステップの完了を通知する。
(B36)イメージジョブ実行部73aはこれに応答して、上記基本ジョブシナリオに従って、次のジョブステップを実行させるために、ジョブ情報77の識別子をアウトプットステップ実行部76に引き渡すとともにこれを起動する。なお、本実施例では、画像処理を省略しているのでエディットステップ実行部75を呼び出さないが、呼び出す場合には、エディットステップ実行部75は、呼出し側のFAX装置の性能に合わせた画像処理を行う。
(B37〜B41)アウトプットステップ実行部76はこれに応答して、ジョブ情報77に含まれるジョブ種に応じジョブ情報77から所定の設定情報を読取り、これに基づいてエンティティ63に格納されている画像データ又はファイルを取得し、デバイス操作部61を介しデバイス制御部41に、取得した画像データ又はファイル内のデータをファックス送信させ、イメージジョブ実行部73aにジョブステップの完了を通知する。
(B42)イメージジョブ実行部73aはこれに応答して、基本ジョブシナリオを参照して、ジョブステップを全て実行完了したと判断し、すなわちこれらから構成されるBoxToFax基本ジョブの実行が完了したと判断し、ジョブ制御部72に基本ジョブの完了を通知する。
(B43)ジョブ制御部72はこれに応答して、ジョブ管理部71にこの基本ジョブ完了をジョブIDとともに通知する。
(B44〜B46)ジョブ管理部71はこれに応答して、リソース管理部43を介し、BoxToFax基本ジョブ実行のために獲得したハードウェア資源を解放し、次にジョブシナリオを参照して、基本ジョブを全て実行完了し、これから構成されるファックス送信ジョブの実行が完了したと判断して、ジョブ情報77を破棄し、ジョブ完了をジョブIDとともにシステム管理部52及びユーザサービス実行部82に通知する。
本実施例によれば、応用ジョブ層でジョブシナリオに基づいて1つ以上の基本ジョブを実行するので、基本ジョブ層以下を変更することなく基本ジョブを組み合わせてジョブを追加し又は変更することができ、これにより設計変更が容易となるという効果を奏する。
また、画像入力からそのファイルの保存までを1つの基本ジョブと定義するので、これをその他の基本ジョブを組み合わせて複数のジョブを実現できる。例えば図7に示すように、(1)ScanToBox、(2)BoxToPrint、(3)BoxToFax及び(4)BoxToE−mailの4つの基本ジョブを定義することにより、それぞれのジョブだけでなく、これらを組み合わせた3つのジョブ、
(5)ScanToBox+BoxToPrint=ScanToPrint
(6)ScanToBox+BoxToFax=ScanToFax
(7)ScanToBox+BoxToE−mail=ScanToE−mail
をさらに定義することができる。また、基本ジョブ1つを変更すればこれを含む複数のジョブを変更したことになり、これにより設計変更容易化の効果が高められるとともに、アプリケーションの構成がより簡単化されるという効果を奏する。
さらに、ファックス送信ジョブがScanToBox基本ジョブとBoxToFax基本ジョブの組み合わせであるので、例えばScanToBox基本ジョブにおいてジャムが生じた場合、BoxToFax基本ジョブの実行が開始されず、これが開始されたことにより無駄な処理が生ずるのを防止することができるという効果を奏する。
[12]スキャンサービス実行フロー
図8は、各機能部間を矢印付線で結んでスキャンサービス実行時のフローを示す図である。このサービスは、上記ScanToBoxジョブにより実現される。但し、同図では、スキャン入力とファイル出力との間に画像編集処理を含んでいる。
[13]ボックス内ファイル印刷サービス実行フロー
図9は、各機能部間を矢印付線で結んでボックス内ファイル印刷サービス実行時のフローを示す図である。このサービスは、上記BoxToFaxジョブをBoxToPrintに変更し、ファイル読み出しと印刷出力との間に画像編集処理を含むものである。
[14]スキャンサービス実行時にジャムが発生したときのフロー
図10は、各機能部間を矢印付線で結んで、スキャンサービス実行時にジャムが発生した時のフローを示す図である。
このスキャンサービスは、スキャンジョブを生成させる。このスキャンジョブは1つのScanToBox基本ジョブから構成される。以下では、基本ジョブ実行部73内のイメージジョブ実行部73aによる処理から説明する。
(E01)イメージジョブ実行部73aは、ジョブ情報77の識別子をインプットステップ実行部74に引き渡してインプットステップ実行部74を起動する。
(E02〜E04)インプットステップ実行部74はこれに応答して、ジョブ情報77に含まれるジョブ種に応じジョブ情報77から所定の設定情報を読取り、これに基づいてデバイス操作部61及びデバイス制御部41等を介しスキャナ16Sから1頁分の原稿画像データを読み込もうとする。
(E05、E06)この際、スキャナ16Sのオートシートフィーダでジャムが発生すると、デバイス制御部41からデバイス操作部61へジャム発生が通知される。
ここで、デバイス操作部61は、デバイス制御部41からの通知がエラー発生又はエラー解除の場合、システム管理部52にこれをその機器識別子及びジョブIDとともに通知し、その他の場合には該通知をジョブIDとともにインプットステップ実行部74に通知する責務を有する。
(E07)したがって、デバイス操作部61はジャム発生をその機器識別子及びジョブIDとともに起動元に、この場合はシステム管理部52に通知する。
(E08、E09)システム管理部52は、エラー又はエラー解除の通知を受けると、これを、機器識別子とともにデバイス操作部61の操作パネルプログラムに通知し、ジョブIDとともにジョブ管理部71に通知する責務を有する。そこで、システム管理部52はこれらの通知を行う。
(E10、E11)デバイス操作部61はこれに応答して、デバイス制御部41及びデバイスドライバ31を介し操作パネル15上に、該機器識別子に対応した機器でジャムが生じたことを表示させる。
(E12)一方、ジョブ管理部71は、該通知に応答して、該ジャムエラーをジョブ制御部72に通知する。ジョブ制御部72は、該エラーが、予め定められた中断事由に該当するか否かを判定する。
(E13)ジャムエラーは中断事由であり、ジョブ制御部72は基本ジョブ実行部73内のイメージジョブ実行部73aに対しジョブの中断を指示する。
(E14〜E17)イメージジョブ実行部73aはこれに応答して、現在実行中のインプットステップ実行部74及びデバイス操作部61を介しデバイス制御部41に動作を中断させる。
(E18、E19)スキャナ16Sの動作が中断すると、デバイス制御部41からデバイス操作部61へスキャナ16Sの動作停止が通知される。
(E20)デバイス操作部61は、インプットステップ実行部74に該停止を通知する。
(E21〜E23)インプットステップ実行部74は、イメージジョブ実行部73a及びジョブ制御部72を介して、ジョブ管理部71にこの停止を通知する。
(E24)ジョブ管理部71は、この通知がジョブの状態変化であるので、これをシステム管理部52に通知する。
(E25〜E27)システム管理部52は、この通知がジョブ状態変化であるので、デバイス操作部61及びデバイス制御部41を介してこの停止を通知することにより、操作パネル15上に動作停止を表示させる。ユーザは、ジャムエラー発生によるスキャン中止の表示を見てジャムを解除させる。
(E28、E29)この解除がスキャナ16Sにより検出されると、これがデバイス制御部41を介してデバイス操作部61に通知される。
(E30)デバイス操作部61は、ジャムエラー解除をシステム管理部52に通知する。
(E31、E32)システム管理部52は、この解除を、一方では機器識別子とともにデバイス操作部61の操作パネルプログラムに通知し、他方ではジョブIDとともにジョブ管理部71に通知して、ジョブ再開を受付可能にする。
(E33、E34)デバイス操作部61はこの解除通知に応答して、デバイス制御部41及びデバイスドライバ31を介し操作パネル15上のジャムエラー表示を消す。
(E35〜E37)ユーザは、ジョブを再開させるため、操作パネル15上のスタートキーを押下する。この情報は、ジョブIDとともにデバイスドライバ31、デバイス制御部41及びデバイス操作部61を介してユーザサービス受付部81に供給される。
(E38〜E47)ユーザサービス受付部81はこれに応答して、ユーザサービス実行部82及びジョブ管理部71を介しジョブ制御部72にScanToBox基本ジョブを再開させる。ジョブ制御部72は、基本ジョブ実行部73内のイメージジョブ実行部73aに基本ジョブ再開を指示する。イメージジョブ実行部73aはこれに応答して、現在中断中のジョブステップ実行部、この場合にはインプットステップ実行部74に対し、処理を再開させる。インプットステップ実行部74はこれに応答して、デバイス操作部61を介しデバイス制御部41を動作させる。これにより、スキャナ16Sによる原稿画像読取り動作が再開される。
本実施例によれば、エラー発生又はエラー解除の場合に、デバイス操作部61からシステム管理部52を介してジョブ管理部71にこれが通知され、ジョブ管理部71から下層側へ順次動作の中断又は再開の指示が行われるので、モジュール間で指示の方向がエラーの有無に係らず上層側から下層側となり、これにより、ジョブ層70のプログラムの構成が簡単になって、設計変更が容易となる。
[15]通知サービス実行フロー
図11は、各機能部間を矢印付線で結んで、故障が発生した場合、例えばプリント実行中にプリンタ16Pの給紙カセット1から給紙できなくなった場合に、システムが能動的に通知サービスを要求して故障発生通知サービスを実行するフローを示す図である。
以下では、デバイス制御部41によるプリント実行中の動作から説明する。
(F01〜F03)この故障が検出されると、デバイス制御部41はこれをデバイス操作部61に通知する。デバイス操作部61は、エラー識別子をエンティティ部63に記入するとともに、エラーイベントの発生をシステム管理部52に通知する。
(F04〜F06)システム管理部52はこれに応答して、エラーイベントを解析して、給紙カセット1が無効にされた、すなわち給紙カセット1の切り離しが行われたと判定して、これをデバイス操作部61及びデバイス制御部41を介し操作パネル15に表示させる。
(F07)ここで、エンティティ部63には、ユーザへの通知要否、通知すべきイベント(機器やジョブ状態の変化)、プリントや電子メールなどの通知手段、電子メールの場合には通知先などが通知情報として複数組記述されている。システム管理部52は、エンティティ部63を参照して、エラーをユーザに通知する必要があると判定した場合、該当する通知情報の識別子を伴って、システムサービス実行部83に通知を要求する。
(F08)システムサービス実行部83はこの要求を受け付けると、この識別子をジョブ管理部71に引き渡すとともに通知ジョブを生成させることにより、通知サービスを実行する。
(F09、F10)ジョブ管理部71はこれに応答して、リソース管理部43を介して通知ジョブ実行に必要なメモリやNIC17などのハードウェア資源を獲得し、この獲得後、ジョブ制御部72に該識別子を引き渡すとともにジョブ制御指示をする。
(F11)ジョブ制御部72はこれに応答して、該識別子を基本ジョブ実行部73に引き渡すことにより、通知ジョブを構成する基本ジョブ実行指示をする。
基本ジョブ実行部73はこれに応答して、基本ジョブ種に応じて、アクセスジョブ実行部73bに該識別子と指示された基本ジョブを伝達するとともに、これを起動する。
(F12〜F14)アクセスジョブ実行部73bはこれに応答して、デバイス操作部61、デバイス制御部43、デバイスドライバ31及びNIC17を介し、カセット1の切り離しを通知する電子メールを送信する。
従来では、このような通知がプリントジョブと一体になっていたが、本実施例ではこの通知が通知ジョブとして通常のジョブと独立して定義され、通常のジョブと同様に通知サービスに応答して通知ジョブが実行されるので、通常のジョブを実行するプログラムの構成が簡単化され、且つ、通知ジョブを構成する基本ジョブを他の基本ジョブと組み合わせて新たな又は既存のジョブを容易に定義することができるので、アプリケーションの設計変更が容易となる。
[16]アドレス帳編集フロー
設計変更を容易にするためにアプリケーション層50を多層化すると、層間及び各機能部間の関係が増えて構成が複雑になる。これを避けるため、構成を簡単化する工夫が必要になる。
図12は、各機能部間を矢印付線で結んで、操作パネル15上からアドレス帳を編集する時のフローを示す図である。
(G01〜G03)操作パネル15を操作すると、上述のようにその情報がデバイスドライバ31、デバイス制御部41及びデバイス操作部61を介してユーザサービス受付部81に伝達される。
(G04)この情報が、アドレス帳の編集サービス要求である場合、ユーザサービス受付部81は、ユーザサービス実行部82及びジョブ層70を介さずに直接エンティティ部63内のアドレス帳編集プログラムを、ワークとして起動させる。
(G05〜G08)これにより、アドレス帳編集の操作画面データの識別子がエンティティ部63からユーザサービス受付部81を介してデバイス操作部61に供給され、該識別子に基づいて該操作画面データがデバイス制御部41及びデバイスドライバ31を介して操作パネル15に供給され、その画面が表示される。
その後、このような経路を辿ってインターラクティブにアドレス帳の編集が行われる。
本実施例では、エンティティ部63に対するアクセスについてはユーザサービス受付部81でサービス要求を受け付けて統一化を図るとともに、ユーザサービス受付部81からジョブ層70を介さずに直接エンティティ部63をアクセスするように構成しているので、アプリケーション層50の複雑化が避けられ、特にジョブ層70及びユーザサービス実行部82の構成が簡単になるという効果を奏する。この簡単化により、アプリケーション層50の設計変更が容易となるという効果を奏する。
[17]ログイン実行フロー
認証・認可処理を有効にするか否かはユーザが設定可能であり、そのデータはエンティティ部63に格納されている。以下の説明では、この処理が有効になっている場合を説明する。
図13は、各機能部間を矢印付線で結んでログイン実行時のフローを示す図である。
(H01〜H03)上述のように、操作パネル15からデバイスドライバ31、デバイス制御部41及びデバイス操作部61を介してユーザサービス受付部81に情報が伝達されると、ユーザサービス受付部81はそのサービス要求を解釈する。
(H04)ユーザサービス受付部81は、この情報がログイン要求であると解釈すると、ジョブ層70を介さずに、システム管理部52内のログインプログラムを、ワークとして直接起動させる。
(H05〜H10)システム管理部52はこれに応答して、操作パネル15から入力されたパスワードがエンティティ部63に登録されているものと一致するか否かを判定し、その結果をユーザサービス受付部81、デバイス操作部61、デバイス制御部41及びデバイスドライバ31を介し操作パネル15上に表示させる。
[18]認可実行フロー
図14は、各機能部間を矢印付線で結んで、認証・認可が有効に設定され且つログイン中である場合の、通常のサービス実行時のフローを示す図である。
(I01〜I03)上述のように、操作パネル15からデバイスドライバ31、デバイス制御部41及びデバイス操作部61を介してユーザサービス受付部81に情報が伝達される。
(I04)ユーザサービス受付部81は、サービス要求があった場合、ユーザサービス実行部82に対しサービス実行を指示する前に、システム管理部52に認可処理をワークとして指示する。
(I05〜I07)システム管理部52はこれに応答して、エンティティ部63のデータを参照して、ログインしているユーザがこのサービスを受けられるか否かを判定し、その結果をユーザサービス受付部81に通知する。
(I08〜I11)ユーザサービス受付部81は、これが肯定判定の通知である場合、ユーザサービス実行部82に該サービスのジョブシナリオの識別子と該サービスに関する設定値とを渡して、ユーザサービス実行部82にサービスの実行を指示する。否定判定の通知である場合には、サービス要求を受け付けず、その旨をデバイス操作部61、デバイス制御部41及びデバイスドライバ31を介して操作パネル15上に表示させる。
従来では、認証・認可処理がサービスの1つとして定義されておらず、サービス層80の上層で認証・認可処理が行われていたが、本実施例では認証・認可についてもサービスの1つとして取扱うことにより、処理の統一化を図るとともに、ユーザサービス実行部82及びジョブ層70を介さずに直接システム管理部52をユーザサービス受付部81から起動させるので、特にユーザサービス実行部82及びジョブ層70の構成の複雑化が避けられて、これらの設計変更が容易となるという効果を奏する。
図16は、実施例1においてデータ領域を必要とする複数種の基本ジョブが並列処理で実行されている場合のDRAM13D内のメモリマップを示した図である。
上記実施例1のような複合機では、複数種のジョブがデータ領域として1つのメモリ資源を共通に用いることとなるので、図16に示す如く、新たなジョブ実行に必要な領域がメモリ内に無くなる場合が生じ、仮にこのようの場合にデータ領域を必要とする新たなジョブを実行するためには、メモリ内に十分な空き領域が確保されるまで待機する必要がある。
よって、本実施例2では、データ領域を即座に使用することが可能な方法を説明する。
図17は、電源投入時の処理のフローチャートである。以下、括弧内は同図中のステップ識別符号である。
(S1)EEPROM13E1に格納されているBIOSが起動される。
(S2)BIOSは、画像形成装置10のハードウェアの初期化処理及びソフトウェアの初期化処理等を行う。
(S3)BIOSは次に、EEPROM13E2に格納されているOS32を起動させる。
図18はデータ領域確保後のDRAM13Dのメモリマップを示した図である。
(S4)OS32は、図18に示す如く、DRAM13Dの空き領域をブロック単位に区切り、データ領域として確保させる。この1つのブロックは、例えば1頁分の画像データを格納可能な領域である。なお図18では、OS32が使用するDRAM13D内の領域を省略している。
(S5)OS32はこの確保後、実施例1で説明したアプリケーションを起動する。なお、本実施例では、OS32及びアプリケーションはEEPROM13E2上で起動するが、SDRAM等にこれらをロードしてそこから起動するようにしてもよい。
この後、ユーザサービス実行部82によりジョブが実行開始指示されると、例えば図3に示すステップA10においてリソース管理部43は、以下のような処理を行う。
図19は、本発明に係わるリソース管理部43の処理のフローチャートを示す図であり、図20は、このフローチャートの一部の説明図である。括弧内は図19中のステップ識別符号である。
(S10)図18に示すDRAM13D内のデータ領域として確保した空きブロックのうちの1つを基本ジョブ実行用に獲得する(図20参照)。
(S11)DRAM13D内にまだ空きブロックがあるか否かを判定する。肯定判定した場合には処理を終了し、否定判定した場合には次のステップS12へ進む。なお、図20に示すプリント基本ジョブ及びScanToBox基本ジョブは、1頁分のデータ用に1ブロックを使用している。
(S12)規則に基づき退避ブロックを決定する。ここで規則としては、例えば最も多くのブロックを使用している基本ジョブを見つけ出し、これら複数のブロックのうちで最も処理が後に行われるブロックを退避ブロックとする。また、互いに等しいブロック数を使用している基本ジョブが複数ある場合には、予め設定された優先順位に従って、1つの基本ジョブを特定し、この中で退避ブロックを決定する。他にも、複数の基本ジョブの中で待機中のものを、退避ブロックを含む基本ジョブとして特定する。
(S13)図20に示す如く、補助記憶装置、例えば外付フラッシュメモリ(図15には不図示)に、決定したブロック内のデータを一時的に退避する。
退避したブロック内のデータは、例えばDRAM13D内に空きブロックが2つ以上確保された時に、その空きブロックに戻される。
このようにすることで、次にリソース管理部43がデータ領域を確保する場合、DRAM13D内には、常に空きブロックが存在することになるので、ジョブ実行開始時にメモリ資源が不足した状態となるのを防ぐことができ、もって即座にその空きブロックをデータ領域として使用することができるという効果を奏する。
また、電源起動時においてDRAM13D内に予めデータ領域を確保しておくことで、OS32やアプリケーションによってDRAM13D内の一部の領域を他の用途に利用されても、データ領域を常に使用することができるという効果を奏する。
なお、本発明には外にも種々の変形例が含まれる。
例えば図2において、ジョブ情報77はジョブ毎の情報であるので、ジョブ層70に含めたが、情報であるのでジョブ層70の外部に配置することもでき、例えばエンティティ部63やコモン部51等に含めてもよい。
また、図2のデバイス操作部61とデバイス制御部41との分割の境界をどこにするかには任意性があり、デバイス操作部61はデバイス制御部41を用いて機種に依存せずデバイスを制御するものであればよい。
さらに、図2に示す複数の機能部を一つにまとめて構成してもよい。例えば、ユーザサービス受付部81及びユーザサービス実行部82を一つのユーザサービス提供部として、またジョブ制御部72、イメージジョブ実行部73a及びアクセスジョブ実行部73bを一つのジョブ実行部として、さらにインプットステップ実行部74、エディットステップ実行部75及びアウトプットステップ実行部76を一つのステップ実行部として構成するようにしてもよい。
さらにまた、図2に示す各機能部をどの層60〜80に配置するか否かには任意性があり、例えばジョブをジョブシナリオに基づき1つ以上の基本ジョブに分解し、これらを順次実行指示させるジョブ制御部72をジョブ層70より上層のサービス層80にあるユーザサービス実行部82内又はこの下層に配置してもよい。この場合、ジョブ管理部71はジョブ制御部72により基本ジョブの実行指示を受け付け、この基本ジョブに必要なハードウェア資源をリソース管理部43に対して確保させ、その後基本ジョブ実行部73に上記実行指示を伝達する。この構成によれば、ジョブ層70以下を変更することなくジョブを組み合わせてジョブを追加し又は変更することができ、これにより設計変更が容易となるという効果を奏する。
また、図2に示すシステム管理部52は、システムの状態及びユーザの両方を一括して管理しているが、両者のうちいずれか一方のみを管理し、システム管理部52とは別の機能部が他方の管理をする構成であってもよい。さらに、システム管理部52の責務であるユーザ管理のうち、図13に示す認証処理又は図14に示す認可処理を別の機能部の責務とする構成にしてもよい。
さらにまた、図2に示すミドルウェア層40の各機能部41〜43の一部又は全部をアプリケーションの一部として含む構成であってもよい。
基本ジョブシナリオは、複数のジョブステップとその実行順の情報を含むものであればよく、例えば関数fnc(inputKind, editKind, outputKind)の引数の組(inputKind, editKind, outputKind)であってもよい。ここにinputKind, editKind及びoutputKindはそれぞれ画像入力手段、画像処理及び画像出力手段の種類に対応しており、関数fncにおいてこの順に処理が行われ、引数の並び順がジョブステップ実行順を示している。
同様に、ジョブシナリオは、1つ以上のジョブ種とその実行順の情報を含むものであればよく、例えば関数fnc(jobKind1, jobKind2)の引数の組(jobKind1, jobKind2)であってもよい。ここにjobKind1及び jobKind2はそれぞれ第1及び第2のジョブ種を示し、引数の並び順がジョブ実行順を示している。
また、基本ジョブシナリオは、基本ジョブ実行部73がジョブ制御部72により指示された基本ジョブに基づいて決定する構成を説明したが、ジョブ制御部72が、自身が指示する基本ジョブに対応する基本ジョブシナリオを決定し、この識別子を基本ジョブ実行部73に引き渡す構成であってもよい。
さらに、ジョブシナリオの識別子は、ユーザサービス受付部81が決定し、これから下層に引き渡す構成を説明したが、ジョブシナリオを必要とするジョブ管理部71が識別子を決定し、ここから下層に引き渡す構成であってもよい。
さらにまた、システムサービス実行部83により実行される通知ジョブを基本ジョブとし、ユーザサービス実行部82により実行されるジョブを構成する1つの基本ジョブとしてもよい。
また、OS32及びアプリケーションはEEPROM13E2に格納される場合を説明したが、これら全部又は一部がこれとは別個の記憶手段に格納される構成であってもよく、例えばHDD14に格納される構成であってもよい。
さらに、BIOSはブートローダを含む構成であってもよく、この場合、図17に示すステップS3では、BIOSがブートローダを起動し、これがOS32を起動する。
さらにまた、図17に示すステップS4においてデータ領域を確保する構成を説明したが、ステップS5の次のステップでデータ領域を確保する構成であってもよい。
また、図19に示す如く、空きブロックが無い場合には常に、退避ブロックを決定し、このブロックを退避する構成を説明したが、仮に複数のブロックを使用している基本ジョブが無い場合には、退避ブロックが無いと判断して、S12及びS13の処理を行わずに終了する構成であってもよい。
さらに、実施例2では1つの退避ブロックを決定し、これを退避させる構成を説明したが、複数の退避ブロックを決定し、これらを退避させる構成であってもよい。
さらにまた、実施例2ではデータ領域をブロック単位で確保する構成を説明したが、ブロック単位でなく、不連続な空き領域を連結したデータ領域を確保する構成であってもよい。その場合、図19に示す「空きブロック」とは「空きデータ領域」であり、「退避ブロック」とは「退避領域」である。