以下では、本発明の実施の形態について、添付図面を参照しつつ詳細に説明する。
<MFPの電気的構成>
印刷装置の一例であるMFP(Multi-Function Peripheral)1は、プリンタ機能及びスキャナ機能を有する複合機である。MFP1は、図1に示されるように、画像形成部11(印刷部の一例)、画像読取部12、操作部13、表示部14、通信部15及び制御部16を備えている。
画像形成部11は、画像データに係る画像(カラー画像又はモノクロ画像)をシートに形成する。画像形成の方式は、電子写真方式であってもよいし、インクジェット方式であってもよい。なお、以下では、画像形成部11が電子写真方式を採用したものである場合を例にとる。
画像読取部12は、イメージセンサ及びAFE(Analog Front End)などを備えている。画像読取部12では、イメージセンサにより原稿の画像が読み取られて、イメージセンサからアナログ画像信号が出力され、AFEによりそのアナログ画像信号がデジタル画像データに変換される。
操作部13は、操作ボタン(たとえば、スタートキー、テンキー、カーソルキー)を備えている。操作ボタンの操作により、各種の指示などを操作部13に入力することが可能である。
表示部14は、たとえば、液晶表示器からなる。表示部14には、各種の情報が表示される。
通信部15は、LAN2を経由したネットワーク通信のための回路などを備えている。LAN2は、有線LAN又は無線LANで構成されていてもよいし、有線LAN及び無線LANの両方で構成されていてもよい。LAN2には、PC(Personal Computer)3などの外部装置が接続されている。MFP1とPC3との間では、LAN2を経由した双方向通信が可能である。通信部15は、電話回線網を介したファクシミリ通信のために、NCU(Network Control Unit)を内蔵したモデムなどを備えていてもよい。
制御部16は、ASIC(Application Specific Integrated Circuit)21、ROM22及びRAM23(記憶部の一例)などを備えている。
ASIC21は、CPU24(制御部の一例)を内蔵している。ASIC21には、画像読取部12により取得された画像データ、操作部13の操作内容を表す操作信号などが入力される。CPU24は、ASIC21に入力される信号などに基づいて、ROM22に記憶されているプログラムを実行することにより、画像形成部11、画像読取部12及び表示部14を制御し、通信部15を通信のために制御する。CPU24による制御(プログラム)の実行時、RAM23がワークエリアとして使用される。RAM23には、NVRAM(Non Volatile RAM)などの不揮発性メモリが含まれていてもよい。
<メインフローチャート>
MFP1では、ASIC21のCPU24により、図2に示されるメインフローチャートが実行される。
メインフローチャートの実行により、CPU24は、RAM23に設けられたジョブキュー231(図1参照)に印刷ジョブ(以下、単に「ジョブ」という。)が登録されているか否か、言い換えれば、ジョブキュー231における登録ジョブの有無を確認する(S1)。
ジョブは、外部装置からLAN2を経由して通信部15(受付部の一例)に受け付けられる。ジョブには、画像データ以外に、ジョブを送信したユーザ名、ジョブのサイズ(データ量)、ジョブの実行に使用されるシート(用紙)のサイズ及びページ数などのジョブ情報が含まれる。なお、以下では、識別情報の一例としてユーザ名を用いて説明するが、ユーザ名の替わりに、たとえば、MFP1を使用するユーザに割り当てられたユーザIDであってもよいし、外部装置のIPアドレスなどの識別情報であってもよい。通信部15に受け付けられたジョブは、通信部15からCPU24に入力され、ジョブキュー231に登録される。
この登録に際し、ジョブには、各ジョブの識別のためのジョブIDが付与される。ジョブIDは、たとえば、図5に示されるように、ジョブ毎に異なる通し番号(001,002,・・・)であり、通常、通信部15に受け付けられた順に昇順で付与される。これにより、ジョブIDは、ジョブの順番を表す。ジョブキュー231へのジョブの登録により、ジョブキュー231には、そのジョブに付与されたジョブIDと対応づけて、ジョブの受付日時、ジョブ情報及びジョブの画像データが記憶される。画像データには、ファイル名が付されている。
なお、ジョブがジョブキュー231に登録される際に実行されるジョブ登録処理については、後述する。
ジョブキュー231にジョブが登録されていない場合(S1:NO)、CPU24は、処理を以降に進めない。
ジョブキュー231にジョブが登録されている場合(S1:YES)、CPU24は、ジョブキュー231に登録(記憶)されているジョブのうち、順番が最も小さいジョブを実行する(S2)。ジョブの実行に伴い、CPU24は、ジョブの画像データの画像の形成を画像形成部11に指示して、画像形成部11による印刷(画像形成)を開始させる。
その後、ジョブが終了すると、つまりジョブの実行による画像形成が終了すると(S3:YES)、CPU24は、その実行が終了したジョブをジョブキュー231から削除して(S4)、図2に示される処理を終了する。
ジョブの実行から終了までの間に、その実行中のジョブのキャンセル指示が入力された場合には(S5:YES)、CPU24は、実行中ジョブキャンセル処理を実行し(S6)、その後、図2に示される処理を終了する。キャンセル指示は、操作部13の操作により、操作部13からCPU24に入力されてもよいし、外部装置から通信部15に受け付けられて、通信部15からCPU24に入力されてもよい。キャンセル指示が操作部13からCPU24に入力される場合、操作部13が入力部の一例であり、キャンセル指示が通信部15からCPU24に入力される場合、通信部15が入力部の一例である。実行中ジョブキャンセル処理については、後述する。
<ジョブキャンセル処理>
MFP1では、実行中のジョブ以外にも、キャンセル指示により、ジョブキュー231に登録されているジョブをキャンセルすることができる。
ジョブキュー231に登録されているジョブのうち、実行中のジョブ以外のジョブのキャンセル指示が入力されると、ASIC21のCPU24により、図3に示されるジョブキャンセル処理が実行される。
ジョブキャンセル処理では、CPU24は、まず、キャンセル指示の対象のジョブ(以下、「キャンセル対象ジョブ」という。)のジョブ情報をジョブキュー231からRAM23におけるジョブキュー231以外の領域に移動(記憶)させる(S31)。
また、CPU24は、キャンセル対象ジョブのジョブ情報(以下、「キャンセルジョブ情報」という。)と対応づけて、キャンセル対象ジョブのジョブIDをRAM23に記憶させる(S32)。
次に、CPU24は、ジョブキュー231からキャンセル対象ジョブを削除する(S33)。
その後、CPU24は、第1の順番変更ジョブ決定処理を実行する(S34)。第1の順番変更ジョブ決定処理では、所定の条件を満たすジョブがジョブキュー231に登録されている場合、そのジョブが順番変更ジョブに決定される。一方、所定の条件を満たすジョブがジョブキュー231に登録されていない場合、ジョブキュー231に登録されているジョブのいずれも順番変更ジョブに決定されず、順番変更ジョブなしとされる。第1の順番変更ジョブ決定処理の詳細については、後述する。
第1の順番変更ジョブ決定処理の終了後、CPU24は、順番変更ジョブの有無を確認する(S35)。
順番変更ジョブがない場合(S35:NO)、CPU24は、ジョブキャンセル処理を終了する。
順番変更ジョブがある場合(S35:YES)、CPU24は、RAM23に記憶されているキャンセル対象ジョブのジョブIDを順番変更ジョブに付与して、そのジョブIDと対応づけて、順番変更ジョブ(ジョブ情報など)をジョブキュー231に再登録する(S36)。
順番変更ジョブの再登録後、CPU24は、不要になったキャンセルジョブ情報をRAM23から削除して(S37)、ジョブキャンセル処理を終了する。
<第1の順番変更ジョブ決定処理>
図3のステップS34で実行される第1の順番変更ジョブ決定処理の流れは、図4に示されている。
第1の順番変更ジョブ決定処理では、CPU24は、キャンセルジョブ情報から、ユーザ名、ジョブサイズ及びページ数を取得し、ジョブサイズ及びページ数などから、キャンセル対象ジョブを実行した場合に必要な印刷所要時間(第1)、印刷枚数(第1)及びトナー使用量(第1)を決定する(S3401)。
次に、CPU24は、キャンセル対象ジョブのジョブID(順番を表す番号)に1を加算し、その加算値を参照番号Mとする(S3402)。たとえば、図5に示されるように、ジョブID「003」のジョブがキャンセル対象ジョブである場合、ジョブID「003」に1を加算した加算値「004」が参照番号Mとされる。
その後、CPU24は、参照番号Mがジョブキュー231に登録されているジョブのジョブIDの最大値を超えているか否かを判断する(S3403)。
参照番号Mが最大値を超えている場合(S3403:YES)、CPU24は、以降の処理を実行せず、第1の順番変更ジョブ処理を終了する。
参照番号Mが最大値以下である場合(S3403:NO)、CPU24は、ジョブIDが参照番号Mであるジョブ(以下、「参照ジョブ」という。)がジョブキュー231に登録されているか否かを確認する(S3404)。
参照ジョブがジョブキュー231に登録されていない場合(S3404:NO)、CPU24は、現在の参照番号Mに1を加算し、その加算値「M+1」を新たな参照番号Mとする(S3405)。
そして、CPU24は、新たな参照番号Mがジョブキュー231に登録されているジョブのジョブIDの最大値を超えたか否かを判断する(S3403)。参照番号Mが最大値を超えていなければ(S3403:NO)、参照ジョブ(新たな参照番号MをジョブIDとするジョブ)がジョブキュー231に登録されているか否かを確認する(S3404)。
参照ジョブがジョブキュー231に登録されている場合(S3404:YES)、CPU24は、参照ジョブのジョブ情報から、ユーザ名を取得する(S3406)。
次いで、CPU24は、キャンセル対象ジョブのユーザ名と参照ジョブのユーザ名とが一致するか否かを判断する(S3407)。
キャンセル対象ジョブのユーザ名と参照ジョブのユーザ名とが一致しない場合(S3407:NO)、CPU24は、現在の参照番号Mに1を加算し、その加算値「M+1」を新たな参照番号Mとする(S3405)。
その後、CPU24は、新たな参照番号Mがジョブキュー231に登録されているジョブのジョブIDの最大値を超えたか否かを再び判断し(S3403)、参照番号Mが最大値を超えていなければ(S3403:NO)、参照ジョブ(新たな参照番号MをジョブIDとするジョブ)がジョブキュー231に登録されているか否かを再び確認する(S3404)。そして、参照ジョブがジョブキュー231に登録されている場合(S3404:YES)、CPU24は、キャンセル対象ジョブのユーザ名と参照ジョブのユーザ名とが一致するか否かを判断する(S3407)。
こうして、ジョブキュー231に登録されているジョブのうち、キャンセル対象ジョブのジョブIDよりも大きいジョブIDのジョブの中に、キャンセル対象ジョブのユーザ名と一致するユーザ名の参照ジョブが含まれているか否かがジョブIDの小さい順に確認される。
キャンセル対象ジョブのユーザ名と参照ジョブのユーザ名とが一致した場合(S3407:YES)、CPU24は、その参照ジョブのジョブ情報から、印刷所要時間(第2)、印刷枚数(第2)及びトナー使用量(第2)を決定する(S3408)。
その後、CPU24は、キャンセル対象ジョブの印刷所要時間(第1)と参照ジョブの印刷所要時間(第2)との大小を比較する(S3409)。また、キャンセル対象ジョブの印刷枚数(第1)と参照ジョブの印刷枚数(第2)との大小を比較する(S3409)。さらに、キャンセル対象ジョブのトナー使用量(第1)と参照ジョブのトナー使用量(第2)との大小を比較する(S3409)。
印刷所要時間、印刷枚数及びトナー使用量の各値の比較結果から、CPU24は、参照ジョブの印刷所要時間、印刷枚数及びトナー使用量のうちの少なくとも1つの値がキャンセル対象ジョブの対応する値以下であるか否かを判断する(S3410)。
参照ジョブの印刷所要時間、印刷枚数及びトナー使用量がそれぞれキャンセル対象ジョブの印刷所要時間、印刷枚数及びトナー使用量よりも大きい場合(S3410:NO)、CPU24は、キャンセル対象ジョブのファイル名と参照ジョブのファイル名とが一致しているか否かを判断する(S3411)。
なお、ステップS3410では、参照ジョブの印刷所要時間、印刷枚数及びトナー使用量のうちの少なくとも1つの値がキャンセル対象ジョブの対応する値よりも小さいか否かが判断されてもよい。そして、参照ジョブの印刷所要時間、印刷枚数及びトナー使用量がそれぞれキャンセル対象ジョブの印刷所要時間、印刷枚数及びトナー使用量以上である場合に、キャンセル対象ジョブのファイル名と参照ジョブのファイル名とが一致しているか否かが判断されてもよい。
キャンセル対象ジョブのファイル名と参照ジョブのファイル名とが一致していない場合(S3411:NO)、CPU24は、現在の参照番号Mに1を加算し、その加算値「M+1」を新たな参照番号Mとする(S3412)。
その後、CPU24は、新たな参照番号Mがジョブキュー231に登録されているジョブのジョブIDの最大値を超えたか否かを再び判断し(S3403)、参照番号Mが最大値を超えていなければ(S3403:NO)、参照ジョブ(新たな参照番号MをジョブIDとするジョブ)がジョブキュー231に登録されているか否かを確認する(S3404)。参照ジョブがジョブキュー231に登録されている場合(S3404:YES)、CPU24は、ジョブキュー231に登録されているジョブのうち、キャンセル対象ジョブのジョブIDよりも大きいジョブIDのジョブの中に、キャンセル対象ジョブのユーザ名と一致するユーザ名のジョブが含まれているか否かをジョブIDの小さい順に確認する。
そして、CPU24は、キャンセル対象ジョブのジョブIDよりも大きいジョブIDのジョブの中に、ユーザ名がキャンセル対象ジョブのユーザ名と一致し(S3407:YES)、かつ、印刷所要時間、印刷枚数及びトナー使用量のうちの少なくとも1つの値がキャンセル対象ジョブの対応する値以下である参照ジョブが見つかると(S3410:YES)、その参照ジョブを順番変更ジョブに決定して(S3413)、第1の順番変更ジョブ決定処理を終了する。
また、CPU24は、キャンセル対象ジョブのファイル名と参照ジョブのファイル名とが一致しているか否かを判断し、それらが一致している場合(S3411:YES)、参照ジョブの印刷所要時間、印刷枚数及びトナー使用量がそれぞれキャンセル対象ジョブの印刷所要時間、印刷枚数及びトナー使用量より大きくても、その参照ジョブを順番変更ジョブに決定して(S3413)、第1の順番変更ジョブ決定処理を終了する。
図5には、ジョブキュー231におけるジョブの登録の状態の一例が示されている。第1の順番変更ジョブ決定処理では、ジョブID「003」のジョブがキャンセル対象ジョブである場合、ジョブIDが「004」以上である参照ジョブについて、ジョブIDの小さい順に、ジョブID「003」のキャンセル対象ジョブと同一のユーザ名「ユーザC」の参照ジョブが探索される。この探索の結果、図5に示される一例では、ジョブID「005」の参照ジョブが見つけられる。そして、キャンセル対象ジョブの印刷所要時間、印刷枚数及びトナー使用量とそれぞれジョブID「005」の参照ジョブの印刷所要時間、印刷枚数及びトナー使用量とが比較される。この比較の結果から、ジョブID「005」の参照ジョブの印刷枚数「10」がキャンセル対象ジョブの印刷枚数「60」以下であるので、ジョブID「005」の参照ジョブが順番変更ジョブに決定される。
ジョブID「005」の参照ジョブが順番変更ジョブに決定されると、図3に示されるジョブキャンセル処理では、順番変更ジョブ有りと判断されて(ステップS35:YES)、ジョブID「005」の参照ジョブがジョブID「003」のジョブとしてジョブキュー231に再登録される。
<実行中ジョブキャンセル処理>
ジョブの実行中に、その実行中のジョブのキャンセル指示が入力された場合には、図2のステップS6で実行中ジョブキャンセル処理が実行される。実行中ジョブキャンセル処理の流れは、図6に示されている。
実行中ジョブキャンセル処理では、CPU24は、キャンセル対象ジョブ(実行中のジョブ)のキャンセルジョブ情報をジョブキュー231からRAM23におけるジョブキュー231以外の領域に移動(記憶)させる(S61)。
また、CPU24は、キャンセルジョブ情報と対応づけて、キャンセル対象ジョブのジョブIDをRAM23に記憶させる(S62)。
次に、CPU24は、ジョブキュー231からキャンセル対象ジョブを削除する(S63)。
その後、CPU24は、第2の順番変更ジョブ決定処理を実行する(S64)。第2の順番変更ジョブ決定処理では、所定の条件を満たすジョブがジョブキュー231に登録されている場合、そのジョブが順番変更ジョブに決定される。一方、所定の条件を満たすジョブがジョブキュー231に登録されていない場合、ジョブキュー231に登録されているジョブのいずれも順番変更ジョブに決定されず、順番変更ジョブなしとされる。所定の条件は、第1の順番変更ジョブ決定処理における「所定の条件」と同じであってもよいし、異なっていてもよい。第2の順番変更ジョブ決定処理の詳細については、後述する。
第2の順番変更ジョブ決定処理の終了後、CPU24は、順番変更ジョブの有無を確認する(S65)。
順番変更ジョブがない場合(S65:NO)、CPU24は、実行中ジョブキャンセル処理を終了する。
順番変更ジョブがある場合(S65:YES)、CPU24は、RAM23に記憶されているキャンセル対象ジョブのジョブIDを順番変更ジョブに付与して、そのジョブIDと対応づけて、順番変更ジョブ(ジョブ情報など)をジョブキュー231に再登録する(S66)。
順番変更ジョブの再登録後、CPU24は、不要になったキャンセルジョブ情報をRAM23から削除して(S67)、実行中ジョブキャンセル処理を終了する。
<第2の順番変更ジョブ決定処理>
図6のステップS64で実行される第2の順番変更ジョブ決定処理の流れは、図7に示されている。
第2の順番変更ジョブ決定処理では、CPU24は、キャンセルジョブ情報及びキャンセル対象ジョブの進行状況から、そのジョブの未実行部分を実行した場合に必要な印刷所要時間(第3)、印刷枚数(第3)及びトナー使用量(第3)を決定する(S6401)。
次に、CPU24は、キャンセル対象ジョブのジョブIDに1を加算し、その加算値を参照番号Mとする(S6402)。
その後、CPU24は、参照番号Mがジョブキュー231に登録されているジョブのジョブIDの最大値を超えているか否かを判断する(S6403)。
参照番号Mが最大値を超えている場合(S6403:YES)、CPU24は、以降の処理を実行せず、第1の順番変更ジョブ処理を終了する。
参照番号Mが最大値以下である場合(S6403:NO)、CPU24は、参照ジョブ(ジョブIDが参照番号Mであるジョブ)がジョブキュー231に登録されているか否かを確認する(S6404)。
参照ジョブがジョブキュー231に登録されていない場合(S6404:NO)、CPU24は、現在の参照番号Mに1を加算し、その加算値「M+1」を新たな参照番号Mとする(S6405)。
そして、CPU24は、新たな参照番号Mがジョブキュー231に登録されているジョブのジョブIDの最大値を超えたか否かを判断する(S6403)。参照番号Mが最大値を超えていなければ(S6403:NO)、参照ジョブ(新たな参照番号MをジョブIDとするジョブ)がジョブキュー231に登録されているか否かを確認する(S6404)。
参照ジョブがジョブキュー231に登録されている場合(S6404:YES)、CPU24は、参照ジョブのジョブ情報から、ユーザ名を取得する(S6406)。
次いで、CPU24は、キャンセル対象ジョブのユーザ名と参照ジョブのユーザ名とが一致するか否かを判断する(S6407)。
キャンセル対象ジョブのユーザ名と参照ジョブのユーザ名とが一致しない場合(S6407:NO)、CPU24は、現在の参照番号Mに1を加算し、その加算値「M+1」を新たな参照番号Mとする(S6405)。
その後、CPU24は、新たな参照番号Mがジョブキュー231に登録されているジョブのジョブIDの最大値を超えたか否かを再び判断し(S6403)、参照番号Mが最大値を超えていなければ(S6403:NO)、参照ジョブ(新たな参照番号MをジョブIDとするジョブ)がジョブキュー231に登録されているか否かを再び確認する(S6404)。そして、参照ジョブがジョブキュー231に登録されている場合(S6404:YES)、CPU24は、キャンセル対象ジョブのユーザ名と参照ジョブのユーザ名とが一致するか否かを判断する(S6407)。
こうして、ジョブキュー231に登録されているジョブのうち、キャンセル対象ジョブのジョブIDよりも大きいジョブIDのジョブの中に、キャンセル対象ジョブのユーザ名と一致するユーザ名の参照ジョブが含まれているか否かがジョブIDの小さい順に確認される。
キャンセル対象ジョブのユーザ名と参照ジョブのユーザ名とが一致した場合(S6407:YES)、CPU24は、その参照ジョブのジョブ情報から、印刷所要時間(第2)、印刷枚数(第2)及びトナー使用量(第2)を決定する(S6408)。
その後、CPU24は、キャンセル対象ジョブの印刷所要時間(第3)と参照ジョブの印刷所要時間(第2)との大小を比較する(S6409)。また、キャンセル対象ジョブの印刷枚数(第3)と参照ジョブの印刷枚数(第2)との大小を比較する(S6409)。さらに、キャンセル対象ジョブのトナー使用量(第3)と参照ジョブのトナー使用量(第2)との大小を比較する(S6409)。
印刷所要時間、印刷枚数及びトナー使用量の各値の比較結果から、CPU24は、参照ジョブの印刷所要時間、印刷枚数及びトナー使用量のすべての値がキャンセル対象ジョブの対応する値以下であるか否かを判断する(S6410)。
参照ジョブの印刷所要時間、印刷枚数及びトナー使用量のうちの少なくとも1つの値がキャンセル対象ジョブの対応する値よりも大きい場合(S6410:NO)、CPU24は、キャンセル対象ジョブのファイル名と参照ジョブのファイル名とが一致しているか否かを判断する(S6411)。
なお、ステップS6410では、参照ジョブの印刷所要時間、印刷枚数及びトナー使用量のすべての値がキャンセル対象ジョブの対応する値よりも小さいか否かが判断されてもよい。そして、参照ジョブの印刷所要時間、印刷枚数及びトナー使用量のうちの少なくとも1つの値がキャンセル対象ジョブの対応する値以上である場合に、キャンセル対象ジョブのファイル名と参照ジョブのファイル名とが一致しているか否かが判断されてもよい。
キャンセル対象ジョブのファイル名と参照ジョブのファイル名とが一致していない場合(S6411:NO)、CPU24は、現在の参照番号Mに1を加算し、その加算値「M+1」を新たな参照番号Mとする(S6412)。
その後、CPU24は、新たな参照番号Mがジョブキュー231に登録されているジョブのジョブIDの最大値を超えたか否かを再び判断し(S6403)、参照番号Mが最大値を超えていなければ(S6403:NO)、参照ジョブ(新たな参照番号MをジョブIDとするジョブ)がジョブキュー231に登録されているか否かを確認する(S6404)。参照ジョブがジョブキュー231に登録されている場合(S6404:YES)、CPU24は、ジョブキュー231に登録されているジョブのうち、キャンセル対象ジョブのジョブIDよりも大きいジョブIDのジョブの中に、キャンセル対象ジョブのユーザ名と一致するユーザ名のジョブが含まれているか否かをジョブIDの小さい順に確認する。
そして、CPU24は、キャンセル対象ジョブのジョブIDよりも大きいジョブIDのジョブの中に、ユーザ名がキャンセル対象ジョブのユーザ名と一致し(S6407:YES)、かつ、印刷所要時間、印刷枚数及びトナー使用量のすべての値がそれぞれキャンセル対象ジョブの印刷所要時間、印刷枚数及びトナー使用量以下である参照ジョブが見つかると(S6410:YES)、その参照ジョブを順番変更ジョブに決定して(S6413)、第2の順番変更ジョブ決定処理を終了する。
また、CPU24は、キャンセル対象ジョブのファイル名と参照ジョブのファイル名とが一致しているか否かを判断し、それらが一致している場合(S6411:YES)、参照ジョブの印刷所要時間、印刷枚数及びトナー使用量のうちの少なくとも1つの値がキャンセル対象ジョブの対応する値より大きくても、その参照ジョブを順番変更ジョブに決定して(S6413)、第2の順番変更ジョブ決定処理を終了する。
<ジョブ登録処理>
MFP1では、外部装置からLAN2を経由して通信部15に新規のジョブが受け付けられると、ASIC21のCPU24により、ジョブ登録処理が実行される。ジョブ登録処理の流れは、図8に示されている。
ジョブ登録処理では、CPU24は、通信部15から新規のジョブが入力されたか否かを判断する(S81)。
CPU24は、通信部15から新規のジョブが入力されるまで、以降の処理を実行しない。
通信部15からCPU24に新規のジョブが入力されると(S81:YES)、CPU24は、RAM23にキャンセルジョブ情報が記憶されているか否かを判断する(S82)。前述したように、キャンセルジョブ情報は、図3に示されるジョブキャンセル処理のステップS11又は図6に示される実行中ジョブキャンセル処理のステップS61でRAM23に記憶される。
RAM23にキャンセルジョブ情報が記憶されていない場合(S82:NO)、CPU24は、新規のジョブをジョブキュー231の最後のジョブIDに登録して(S83)、ジョブ登録処理を終了する。すなわち、ジョブキュー231に登録されているジョブのいずれに対してもキャンセル指示が入力されていない場合、CPU24は、使用済みのジョブIDの最大値に1を加算した値をジョブIDとし、そのジョブIDを新規のジョブに付与して、ジョブIDと対応づけて、新規のジョブの受付日時、ジョブ情報及びジョブの画像データをジョブキュー231に登録する。
一方、RAM23にキャンセルジョブ情報が記憶されている場合(S82:YES)、CPU24は、第3の順番変更ジョブ決定処理を実行する(S84)。第3の順番変更ジョブ決定処理では、所定の条件を満たすジョブがジョブキュー231に登録されている場合、そのジョブが順番変更ジョブに決定される。一方、所定の条件を満たすジョブがジョブキュー231に登録されていない場合、ジョブキュー231に登録されているジョブのいずれも順番変更ジョブに決定されず、順番変更ジョブなしとされる。所定の条件は、第1の順番変更ジョブ決定処理又は第2の順番変更ジョブ決定処理における「所定の条件」とは同じであってもよいし、異なっていてもよい。第3の順番変更ジョブ決定処理の詳細については、後述する。
第3の順番変更ジョブ決定処理の終了後、CPU24は、順番変更ジョブの有無を確認する(S85)。
順番変更ジョブがない場合(S85:NO)、CPU24は、新規のジョブをジョブキュー231の最後のジョブIDに登録して(S83)、ジョブ登録処理を終了する。
順番変更ジョブがある場合(S85:YES)、CPU24は、RAM23に記憶されているキャンセル対象ジョブのジョブIDを順番変更ジョブに付与して、そのジョブIDと対応づけて、順番変更ジョブをジョブキュー231に登録する(S86)。
順番変更ジョブの登録後、CPU24は、不要になったキャンセルジョブ情報をRAM23から削除して(S87)、ジョブ登録処理を終了する。
<第3の順番変更ジョブ決定処理>
図8のステップS84で実行される第3の順番変更ジョブ決定処理の流れは、図4に示されている。
第3の順番変更ジョブ決定処理では、CPU24は、キャンセルジョブ情報から、ユーザ名、ジョブサイズ及びページ数を取得し、ジョブサイズ及びページ数などから、キャンセル対象ジョブを実行した場合に必要な印刷所要時間(第1)、印刷枚数(第1)及びトナー使用量(第1)を決定する(S841)。
次に、CPU24は、新規のジョブのジョブ情報から、ユーザ名を取得する(S842)。
そして、CPU24は、キャンセル対象ジョブのユーザ名と新規のジョブのユーザ名とが一致するか否かを判断する(S843)。
キャンセル対象ジョブのユーザ名と新規のジョブのユーザ名とが一致しない場合(S843:NO)、CPU24は、第3の順番変更ジョブ決定処理を終了する。
キャンセル対象ジョブのユーザ名と新規のジョブのユーザ名とが一致した場合(S843:YES)、CPU24は、新規のジョブのジョブ情報から、印刷所要時間(第2)、印刷枚数(第2)及びトナー使用量(第2)を決定する(S844)。
その後、CPU24は、キャンセル対象ジョブの印刷所要時間(第1)と新規のジョブの印刷所要時間(第2)との大小を比較する(S845)。また、キャンセル対象ジョブの印刷枚数(第1)と新規のジョブの印刷枚数(第2)との大小を比較する(S845)。さらに、キャンセル対象ジョブのトナー使用量(第1)と新規のジョブのトナー使用量(第2)との大小を比較する(S845)。
印刷所要時間、印刷枚数及びトナー使用量の各値の比較結果から、CPU24は、新規のジョブの印刷所要時間、印刷枚数及びトナー使用量のうちの少なくとも1つの値がキャンセル対象ジョブの対応する値以下であるか否かを判断する(S846)。
新規のジョブの印刷所要時間、印刷枚数及びトナー使用量がそれぞれキャンセル対象ジョブの印刷所要時間、印刷枚数及びトナー使用量よりも大きい場合(S846:NO)、CPU24は、キャンセル対象ジョブのファイル名と新規のジョブのファイル名とが一致しているか否かを判断する(S847)。
なお、ステップS846では、新規のジョブの印刷所要時間、印刷枚数及びトナー使用量のうちの少なくとも1つの値がキャンセル対象ジョブの対応する値よりも小さいか否かが判断されてもよい。そして、新規のジョブの印刷所要時間、印刷枚数及びトナー使用量がそれぞれキャンセル対象ジョブの印刷所要時間、印刷枚数及びトナー使用量以上である場合に、キャンセル対象ジョブのファイル名と参照ジョブのファイル名とが一致しているか否かが判断されてもよい。
キャンセル対象ジョブのファイル名と新規のジョブのファイル名とが一致していない場合(S847:NO)、CPU24は、第3の順番変更ジョブ決定処理を終了する。
一方、キャンセル対象ジョブのファイル名と新規のジョブのファイル名とが一致している場合(S847:YES)、新規のジョブの印刷所要時間、印刷枚数及びトナー使用量がそれぞれキャンセル対象ジョブの印刷所要時間、印刷枚数及びトナー使用量以上であっても、その参照ジョブを順番変更ジョブに決定して(S848)、第3の順番変更ジョブ決定処理を終了する。
また、CPU24は、キャンセル対象ジョブのジョブIDよりも大きいジョブIDのジョブの中に、ユーザ名がキャンセル対象ジョブのユーザ名と一致し(S843:YES)、かつ、印刷所要時間、印刷枚数及びトナー使用量のうちの少なくとも1つの値がキャンセル対象ジョブの対応する値以下である新規のジョブが見つかると(S846:YES)、その新規のジョブを順番変更ジョブに決定して(S848)、第3の順番変更ジョブ決定処理を終了する。
<第1の順番変更ジョブ決定処理の他の例>
図3のステップS1において、図4に示される第1の順番変更ジョブ決定処理に代えて、図10に示される第1の順番変更ジョブ決定処理が実行されてもよい。
図10に示される第1の順番変更ジョブ決定処理では、CPU24は、キャンセルジョブ情報から、ユーザ名、ジョブサイズ及びページ数を取得し、ジョブサイズ及びページ数などから、キャンセル対象ジョブを実行した場合に必要な印刷所要時間(第1)、印刷枚数(第1)及びトナー使用量(第1)を決定する(S101)。
次に、CPU24は、キャンセル対象ジョブのジョブID(順番を表す番号)に1を加算し、その加算値を参照番号Mとする(S102)。たとえば、図11に示されるように、ジョブID「003」のジョブがキャンセル対象ジョブである場合、ジョブID「003」に1を加算した加算値「004」が参照番号Mとされる。
その後、CPU24は、参照番号Mがジョブキュー231に登録されているジョブのジョブIDの最大値を超えているか否かを判断する(S103)。
参照番号Mが最大値以下である場合(S103:NO)、CPU24は、参照ジョブ(ジョブIDが参照番号Mであるジョブ)がジョブキュー231に登録されているか否かを確認する(S104)。
参照ジョブがジョブキュー231に登録されていない場合(S104:NO)、CPU24は、現在の参照番号Mに1を加算し、その加算値「M+1」を新たな参照番号Mとする(S105)。
そして、CPU24は、新たな参照番号Mがジョブキュー231に登録されているジョブのジョブIDの最大値を超えたか否かを判断する(S103)。参照番号Mが最大値を超えていなければ(S103:NO)、参照ジョブ(新たな参照番号MをジョブIDとするジョブ)がジョブキュー231に登録されているか否かを確認する(S104)。
参照ジョブがジョブキュー231に登録されている場合(S104:YES)、CPU24は、参照ジョブのジョブ情報から、ユーザ名を取得する(S106)。
次いで、CPU24は、キャンセル対象ジョブのユーザ名と参照ジョブのユーザ名とが一致するか否かを判断する(S107)。
キャンセル対象ジョブのユーザ名と参照ジョブのユーザ名とが一致しない場合(S107:NO)、CPU24は、現在の参照番号Mに1を加算し、その加算値「M+1」を新たな参照番号Mとする(S105)。
その後、CPU24は、新たな参照番号Mがジョブキュー231に登録されているジョブのジョブIDの最大値を超えたか否かを再び判断し(S103)、参照番号Mが最大値を超えていなければ(S103:NO)、参照ジョブ(新たな参照番号MをジョブIDとするジョブ)がジョブキュー231に登録されているか否かを再び確認する(S104)。そして、参照ジョブがジョブキュー231に登録されている場合(S104:YES)、CPU24は、キャンセル対象ジョブのユーザ名と参照ジョブのユーザ名とが一致するか否かを判断する(S107)。
こうして、ジョブキュー231に登録されているジョブのうち、キャンセル対象ジョブのジョブIDよりも大きいジョブIDのジョブの中に、キャンセル対象ジョブのユーザ名と一致するユーザ名の参照ジョブが含まれているか否かがジョブIDの小さい順に確認される。
キャンセル対象ジョブのユーザ名と参照ジョブのユーザ名とが一致した場合(S107:YES)、CPU24は、その参照ジョブのジョブ情報から、印刷所要時間(第2)、印刷枚数(第2)及びトナー使用量(第2)を決定する(S108)。
その後、CPU24は、キャンセル対象ジョブの印刷所要時間(第1)と参照ジョブの印刷所要時間(第2)との大小を比較する(S108)。また、キャンセル対象ジョブの印刷枚数(第1)と参照ジョブの印刷枚数(第2)との大小を比較する(S108)。さらに、キャンセル対象ジョブのトナー使用量(第1)と参照ジョブのトナー使用量(第2)との大小を比較する(S109)。
印刷所要時間、印刷枚数及びトナー使用量の各値の比較結果から、CPU24は、参照ジョブの印刷所要時間、印刷枚数及びトナー使用量のうちの少なくとも1つの値がキャンセル対象ジョブの対応する値以下であるか否かを判断する(S110)。
参照ジョブの印刷所要時間、印刷枚数及びトナー使用量がそれぞれキャンセル対象ジョブの印刷所要時間、印刷枚数及びトナー使用量よりも大きい場合(S110:NO)、CPU24は、キャンセル対象ジョブのファイル名と参照ジョブのファイル名とが一致しているか否かを判断する(S111)。
なお、ステップS110では、参照ジョブの印刷所要時間、印刷枚数及びトナー使用量のうちの少なくとも1つの値がキャンセル対象ジョブの対応する値よりも小さいか否かが判断されてもよい。そして、参照ジョブの印刷所要時間、印刷枚数及びトナー使用量がそれぞれキャンセル対象ジョブの印刷所要時間、印刷枚数及びトナー使用量以上である場合に、キャンセル対象ジョブのファイル名と参照ジョブのファイル名とが一致しているか否かが判断されてもよい。
キャンセル対象ジョブのファイル名と参照ジョブのファイル名とが一致していない場合(S111:NO)、CPU24は、現在の参照番号Mに1を加算し、その加算値「M+1」を新たな参照番号Mとする(S105)。
その後、CPU24は、新たな参照番号Mがジョブキュー231に登録されているジョブのジョブIDの最大値を超えたか否かを再び判断し(S103)、参照番号Mが最大値を超えていなければ(S103:NO)、参照ジョブ(新たな参照番号MをジョブIDとするジョブ)がジョブキュー231に登録されているか否かを再び確認する(S104)。参照ジョブがジョブキュー231に登録されている場合(S104:YES)、CPU24は、ジョブキュー231に登録されているジョブのうち、キャンセル対象ジョブのジョブIDよりも大きいジョブIDのジョブの中に、キャンセル対象ジョブのユーザ名と一致するユーザ名のジョブが含まれているか否かをジョブIDの小さい順に確認する。
そして、CPU24は、キャンセル対象ジョブのジョブIDよりも大きいジョブIDのジョブの中に、ユーザ名がキャンセル対象ジョブのユーザ名と一致し(S107:YES)、かつ、印刷所要時間、印刷枚数及びトナー使用量のうちの少なくとも1つの値がキャンセル対象ジョブの対応する値以下の参照ジョブが見つかると(S110:YES)、その参照ジョブを保留ジョブに決定する(S112)。
また、CPU24は、キャンセル対象ジョブのファイル名と参照ジョブのファイル名とが一致しているか否かを判断し、それらが一致している場合(S111:YES)、参照ジョブの印刷所要時間、印刷枚数及びトナー使用量がそれぞれキャンセル対象ジョブの印刷所要時間、印刷枚数及びトナー使用量より大きくても、その参照ジョブを保留ジョブに決定する(S112)。
そして、参照番号Mが最大値を超えると(S103:YES)、CPU24は、保留ジョブの有無を確認する(S113)。
保留ジョブがある場合(S113:YES)、キャンセルジョブ情報と最も類似するジョブ情報の保留ジョブを順番変更ジョブに決定して(S114)、第1の順番変更ジョブ決定処理を終了する。
一方、保留ジョブがない場合(S113:NO)、CPU24は、順番変更ジョブの決定なしで、第1の順番変更ジョブを終了する。
図11には、ジョブキュー231におけるジョブの登録の状態の一例が示されている。第1の順番変更ジョブ決定処理では、ジョブID「003」のジョブがキャンセル対象ジョブである場合、ジョブIDが「004」以上である参照ジョブについて、ジョブIDの小さい順に、ジョブID「003」のキャンセル対象ジョブと同一のユーザ名「ユーザC」の参照ジョブが探索される。この探索の結果、図11に示される一例では、ジョブID「005」の参照ジョブ及びジョブID「007」の参照ジョブが見つけられる。そして、キャンセル対象ジョブの印刷所要時間、印刷枚数及びトナー使用量とそれぞれジョブID「005」の参照ジョブの印刷所要時間、印刷枚数及びトナー使用量とが比較される。また、キャンセル対象ジョブの印刷所要時間、印刷枚数及びトナー使用量とそれぞれジョブID「007」の参照ジョブの印刷所要時間、印刷枚数及びトナー使用量とが比較される。これらの比較の結果から、ジョブID「007」の参照ジョブの印刷枚数「40」がジョブID「007」の参照ジョブの印刷枚数「10」よりもキャンセル対象ジョブの印刷枚数「60」に近いので、ジョブID「007」の参照ジョブが順番変更ジョブに決定される。
ジョブID「007」の参照ジョブが順番変更ジョブに決定されると、図3に示されるジョブキャンセル処理では、順番変更ジョブ有りと判断されて(ステップS35:YES)、ジョブID「007」の参照ジョブがジョブID「003」のジョブとしてジョブキュー231に再登録される。
<作用効果>
以上のように、ジョブが通信部15に受け付けられると、そのジョブが受け付けられた順番でRAM23に設けられたジョブキュー231に登録される。ジョブキュー231に登録されたジョブは、自身の順番で実行される。ジョブキュー231に登録されているジョブの実行を取り消すキャンセル指示が入力されると、そのキャンセル指示の対象のキャンセル対象ジョブの印刷による実行量が決定される。また、キャンセル対象ジョブよりも後の順番のジョブについて、ジョブの印刷による実行量、すなわち、印刷所要時間、印刷枚数及びトナー使用量が決定される。そして、キャンセル対象ジョブと同じユーザ名を有し、かつ、印刷所要時間、印刷枚数及びトナー使用量の少なくとも1つがキャンセル対象ジョブ以下であるジョブが決定される。そして、その決定されたジョブがキャンセル対象ジョブの順番でジョブキュー231に再登録される。そのため、ジョブのキャンセル指示を入力したユーザ及び他のユーザに公平となるように、キャンセル指示を入力したユーザの別のジョブをキャンセル対象ジョブの順番でジョブキュー231に再登録することができる。
図4又は図10に示される第1の順番変更ジョブ決定処理では、キャンセル指示が入力された時点でジョブキュー231に既に登録されていたジョブ(参照ジョブ)の中からキャンセル対象ジョブの順番でジョブキュー231に再登録されるジョブが決定される。これにより、キャンセル指示の入力前にジョブキュー231に登録されていたジョブをキャンセル対象ジョブの順番に繰り上げることができる。
図4に示される第1の順番変更ジョブ決定処理では、ジョブキュー231に登録されている参照ジョブについて、ジョブIDの小さい順に、キャンセル対象ジョブと同じユーザ名を有し、かつ、印刷所要時間、印刷枚数及びトナー使用量の少なくとも1つがキャンセル対象ジョブ以下であるという条件に該当するか否かが判断される。そのため、その条件に該当する参照ジョブが見つかった時点で、第1の順番変更ジョブ決定処理を終了することができる。その結果、第1の順番変更ジョブ決定処理に要する時間が短くすむ。
一方、図10に示される第1の順番変更ジョブ決定処理では、ジョブキュー231に登録されている全ての参照ジョブについて、キャンセル対象ジョブと同じユーザ名を有し、かつ、印刷所要時間、印刷枚数及びトナー使用量の少なくとも1つがキャンセル対象ジョブ以下であるという条件に該当するか否かが判断される。そして、その条件に該当する参照ジョブの中から、キャンセル対象ジョブのキャンセルジョブ情報と最も類似するジョブ情報の参照ジョブがキャンセル対象ジョブの順番に繰り上げる順番変更ジョブに決定される。そのため、ジョブのキャンセル指示を入力したユーザ及び他のユーザに対する公平さを一層増すことができる。
また、図9に示される第3の順番変更ジョブ決定処理では、キャンセル指示が入力された後に新規に受け付けられたジョブについて、キャンセル対象ジョブの順番でジョブキュー231に再登録するか否かが決定される。これにより、新規のジョブをキャンセル対象ジョブの順番に繰り上げて登録することができる。
さらに、キャンセル対象ジョブと同じファイル名を有するジョブについては、キャンセル対象ジョブと同じユーザ名を有し、かつ、印刷所要時間、印刷枚数及びトナー使用量の少なくとも1つがキャンセル対象ジョブ以下であるという条件に該当していなくても、キャンセル対象ジョブの順番に繰り上げる順番変更ジョブに決定される。これにより、キャンセル対象ジョブと同一の画像データのジョブが印刷設定を変えて受け付けられた場合に、そのジョブを順番変更ジョブとしてキャンセル対象ジョブの順番に繰り上げることができる。
<変形例>
以上、本発明のいくつかの実施形態について説明したが、本発明は、更に他の形態で実施することも可能である。
たとえば、前述の実施形態では、CPU24が各処理を実行する場合について説明した。しかしながら、ASIC21が複数のCPUを備え、複数のCPUが協働して各処理を実行してもよい。
その他、前述の構成には、特許請求の範囲に記載された事項の範囲で種々の設計変更を施すことが可能である。