以下、本発明を実施するための形態について図面を用いて説明する。
<第一の実施形態>
[システム構成]
本発明の第一の実施形態について説明する。図1は、本実施形態に係るジョブ履歴処理システム100およびそれと連携するシステム131の構成例を示す図である。本実施形態におけるジョブ履歴処理システム100において、画像形成装置である複数台のMFP101と、ジョブ履歴処理サーバー111とが接続されている。各機器の台数はこれに限らず、1台であっても良いし、さらに多くの台数があっても良い。
ジョブ履歴処理サーバー111は、MFP101で実行されたジョブ(コピー処理やプリント処理など)の実行記録であるジョブ履歴(ジョブ履歴情報)を受信し、必要に応じて、データの整形やログ画像の解像度変換などの処理を行う。そして、ジョブ履歴処理サーバー111は、行われた処理の結果を、連携するシステム131に提供して取り込ませる。ジョブ履歴処理システム100と連携するシステム131は、ジョブ履歴を監査するためのデータ保管や検索の機能を備えるものであることが一般的であるが、それに限定するものではない。つまり、システム131は、ジョブ履歴処理システム100と連携してジョブ履歴に関する処理を行うものであれば、どのようなものであっても構わない。
[ハードウェア構成]
(MFP)
図2は、MFP101のハードウェア構成例を示すブロック図である。コントローラーユニット200は、スキャナー222やプリンター223およびネットワークや公衆回線と接続して、画像データやデバイス情報の入出力を行う。
CPU201は、MFP101全体の制御を行う。RAM202は、CPU201が動作するためのワークメモリーであると共に、入力された画像データを一時記憶するための画像メモリーでもある。ROM203は、ブートROMであり、システムのブートプログラムが保存されている。HDD204は、システムソフトウェア、ジョブ履歴、ユーザーボックス内の画像データなどを保存するハードディスクドライブである。操作部I/F205は、操作部221とのインターフェース部であり、操作部221に表示する画面データを操作部221に対して出力する。
ネットワークI/F206は、LAN等のネットワークに接続し、情報の入出力を行う。モデム207は、公衆回線に接続し、画像データの入出力を行う。以上のデバイスが、コントローラーユニット200内において、システムバス208上に配置される。
イメージバスI/F209は、システムバス208と、画像データを高速で転送する画像バス210とを接続し、データ構造を変換するバスブリッジである。画像バス210上には、以下のデバイスが配置される。
RIP(Raster Image Processor)210は、PDL(Page Description Language)コードをビットマップイメージに展開する。デバイスI/F212は、画像入出力デバイスであるスキャナー222及びプリンター223と、コントローラーユニット200とを接続し、画像データの変換を行う。スキャナー画像処理部213は、入力画像データに対し補正、加工、編集等を行う。プリンター画像処理部214は、出力画像データに対して、プリンターの補正、解像度変換等を行う。画像回転部215は、画像データの回転を行う。画像圧縮部216は、画像データの圧縮伸長処理を行う。
(ジョブ履歴処理サーバー)
図3は、ジョブ履歴処理サーバー111のハードウェア構成例を示すブロック図である。CPU311を含む制御部310は、サーバー全体の動作を制御する。CPU311は、ROM312やHDD314に記憶された制御プログラムを読み出して、入力や出力といった各種制御処理や、演算処理を実行する。RAM313は、CPU311の主メモリー、ワークエリアなどの一時記憶領域として用いられる。HDD314は、ジョブ履歴や各種プログラムなどを記憶する。
操作入力I/F315は、接続されたキーボードやマウスなどの操作デバイス(不図示)からの信号入力を受け付ける。表示出力I/F316は、画面表示用のディスプレイ(不図示)等への信号出力を行う。ネットワークI/F317は、制御部310をネットワークに接続し、ネットワーク上の別の装置との情報の送受信を行う。なお、バス320は、制御部310内の各ブロックを通信可能に接続する。
[ソフトウェア構成]
(MFP)
図4は、本実施形態におけるMFP101のソフトウェア構成例を示すブロック図である。
ジョブ管理部401は、操作制御部402が受け付けたジョブやネットワークを介して受け付けたジョブの実行、ジョブ履歴のHDD204への記録、およびジョブのステータス管理などを行う。また、ジョブ管理部401は、ジョブの処理内容に応じて、ジョブ制御部403に対して指示を行う。操作制御部402は、操作部221が備える表示パネル(不図示)に操作用の画面を表示させたり、操作部221で行われる操作の入力情報を受け付け、必要に応じて他の機能部に情報を伝達したりする。なお、操作制御部402は、ネットワークを介した遠隔操作の制御も行う。
ジョブ制御部403は、ジョブ管理部401からの指示に従い、スキャナー222やプリンター223を動作させる。また、ジョブ制御部403は、スキャナー222やプリンター223のステータスをジョブ管理部401に通知する。ジョブ履歴送信部404は、予め設定された時間間隔でHDD204に記録されたジョブ履歴があるか否かを確認する。そして、ジョブ履歴がある場合には、ジョブ履歴送信部404は、ジョブ履歴を一つずつジョブ履歴処理サーバー111に送信する。
送信されるジョブ履歴のデータ構成例を図5に示す。ジョブ履歴500は一つのジョブ履歴を示し、ジョブ履歴属性情報501とページ属性510とページ画像520とから構成される。図5に示すジョブ履歴500は、5ページから構成されたジョブに対応している。各構成要素は別々のファイルで存在し、ページ属性510とページ画像520は更に、ページ毎に別々のファイルで存在する。ジョブ履歴属性情報501は、ジョブを実行したユーザー情報、実行日時、実行したMFPに関する情報(IPアドレス、MFPの識別番号など)、ジョブの種類(プリント、コピーなど)、ジョブで扱われた文書のページ数などを含む。ページ属性510は、各ページに対応した数だけあり、対応するページ画像の画像形式、サイズ、解像度、向きなどの情報が含まれる。ページ画像520は、各ページの印刷やスキャン画像を、監査用に記録したログ画像である。
ジョブ履歴送信部404は、一つのジョブ履歴を構成するデータの全てをジョブ履歴処理サーバー111に送信し終えた後、ジョブ履歴処理サーバー111から正常に受信が完了した旨の結果を受け取ると、HDD204から送信が完了したジョブ履歴を削除する。ジョブ履歴の削除後、まだ、HDD204にジョブ履歴がある場合には、ジョブ履歴送信部404は、引き続きジョブ履歴の送信を行う。ジョブ履歴がない場合には、ジョブ履歴送信部404は、予め設定された時間間隔で行われる次回のジョブ履歴の有無確認の機会まで待機する。また、ジョブ履歴の送信が途中でエラーとなった場合、ジョブ履歴送信部404は、送信途中のジョブ履歴を削除せず、後述するコネクションIDと関連付けて保持する。そして、ジョブ履歴送信部404は、予め設定された時間間隔で行われる次回のジョブ履歴の有無確認の機会まで待機する。
(ジョブ履歴処理サーバー)
図6は、ジョブ履歴処理サーバー111のソフトウェア構成例を示すブロック図である。
ジョブ履歴受信部601は、MFP101のジョブ履歴送信部404から送信されてくるジョブ履歴を構成するデータを順次受信し、HDD314のジョブ履歴処理用領域に保存する。ジョブ履歴を構成するデータの受信が全て完了すると、ジョブ履歴受信部601は、ジョブ履歴処理用領域に保存されたジョブ履歴を処理するように、ジョブ履歴処理部602に通知する。
ジョブ履歴処理部602は、ジョブ履歴に含まれるページ画像520に対し、OCR処理によるテキスト抽出や、画像形式変換および解像度変換などを行い、さらに、別々のファイルであったページ画像を、一つのログ画像ファイルに結合するなどの処理を行う。また、ジョブ履歴処理部602は、連携するシステム131に応じて、ページ画像のサムネイルを作成したり、属性情報を整形したりするなどしても良い。そして、ジョブ履歴処理部602は、処理したジョブ履歴をエクスポート領域にエクスポートする。エクスポート領域は、ジョブ履歴処理サーバー111内の記憶部であっても良いし、外部の記憶領域であっても良い。例えば、ジョブ履歴処理部602は、設定に応じて、処理したジョブ履歴を外部のシステムに送信するようにしても良い。ここでの外部のシステムとは例えばシステム131が該当する。
ジョブ履歴管理部603は、ジョブ履歴処理用領域にあるジョブ履歴において、ジョブ履歴を構成するデータの受信が全て完了していないもののうち、所定の保存期限を過ぎたものがあるか否か確認する。保存期限を過ぎたジョブ履歴がある場合、ジョブ履歴管理部603は、そのジョブ履歴を不完全なジョブ履歴として処理するように、ジョブ履歴処理部602に通知する。なお、不完全なジョブ履歴とは、言い換えると、データ送信の中断の結果、送信側において未送信のジョブ履歴が存在するジョブ履歴を指す。つまり、1のジョブ履歴が分割された状態となる。また、所定の保存期限は、予め設定され、管理されているものとする。
設定制御部604は、ジョブ履歴処理サーバー111に関する設定や各部の動作設定を管理する。また、設定制御部604は、表示用のディスプレイ(不図示)等を介して、システム管理者からの設定変更指示を受け付けたり、設定内容を表示したりする。
[処理フロー]
次に、MFP101からジョブ履歴処理サーバー111にジョブ履歴が送信される際の、MFP101とジョブ履歴処理サーバー111の動作について図7と図8を用いて説明する。
図7は、MFP101のジョブ履歴送信部404が、HDD204に記録されているジョブ履歴を一つ送信する際の処理手順を表すフローチャートである。図7のフローチャートに示す各ステップは、MFP101のCPU201が、ROM203またはHDD204に記憶されているジョブ履歴送信部404を実現するプログラムを読み出して実行することで実現される。また、CPU201は、必要に応じて記憶領域としてRAM202やHDD204を利用する。
また、図8は、ジョブ履歴処理サーバー111のジョブ履歴受信部601が、MFP101からの処理要求を受信した際の処理手順を表すフローチャートである。図8のフローチャートに示す各ステップは、ジョブ履歴処理サーバー111のCPU311がROM312またはHDD314に記憶されているジョブ履歴受信部601を実現するプログラムを読み出して実行することで実現される。また、CPU311は、必要に応じて記憶領域としてRAM313やHDD314を利用する。
以下、図7と図8の処理では主体が異なるため、各処理のタイミングを対応させながら説明する。
S701において、ジョブ履歴送信部404は、ジョブ履歴処理サーバー111のジョブ履歴受信部601に対し、ジョブ履歴送信予約の要求を行う。
S801において、ジョブ履歴送信予約の要求を受信すると(S801にてYES)、ジョブ履歴受信部601はS802に処理を進める。S802において、ジョブ履歴受信部601は、ジョブ履歴送信の同時接続数を確認する。この確認は、後述するジョブ履歴送信が許可されたコネクションIDがHDD314にある同時接続数管理領域にいくつ保存されているかを数えることによって行われる。また、同時接続数の最大値は予め設定されて設定制御部604にて管理されているものとする。現時点での同時接続数が予め設定された最大同時接続数未満である場合には(S802にてYES)、ジョブ履歴受信部601は処理をS803に進める。最大同時接続数以上である場合には(S802にてNO)、ジョブ履歴受信部601は処理をS805に進める。
S803において、ジョブ履歴受信部601は、ジョブ履歴送信用の接続を一意に識別するためのコネクションID(接続情報)を発行し、ジョブ履歴送信が許可されたコネクションIDとして、同時接続数管理領域に保存する。S804において、ジョブ履歴受信部601は、ジョブ履歴の送信許可に相当するジョブ履歴送信予約成功を、発行したコネクションIDと共にMFP101のジョブ履歴送信部404に応答する。一方、S805において、ジョブ履歴受信部601は、ジョブ履歴処理サーバー111が最大接続数に達しているためビジー状態である旨を、ジョブ履歴送信部404に応答する。
続いて、S702において、MFP101のジョブ履歴送信部404は、ジョブ履歴送信予約に対する応答の内容を判定する。応答の内容が「ジョブ履歴送信予約成功」であった場合には(S702にてYES)、ジョブ履歴送信部404は処理をS703に進める。応答の内容がビジー(すなわち、予約失敗)であった場合には(S702にてNO)、ジョブ履歴送信部404は、ジョブ履歴送信処理を終了し、次回のジョブ履歴有無確認の機会まで待機する。なお、ジョブ履歴送信部404は、次回のジョブ履歴有無確認の機会に重ならない程度に短い時間だけ待って、再度送信予約をするようにしても良く、それを数回繰り返すようにしても良い。この場合には、再処理間隔を予め設定しておいてもよい。また、所定時間内に応答が受信できなかったり、通信エラーが発生したりした場合にも、ジョブ履歴送信部404は、応答の内容がビジーであった場合(すなわち、予約失敗)と同様の処理にしても良い。
S703において、ジョブ履歴送信部404は、ジョブ履歴送信予約の応答に含まれるコネクションIDを、ジョブ履歴送信用のコネクションIDとして保持する。S704において、ジョブ履歴送信部404は、ジョブ履歴送信用のコネクションIDとは別に、送信未完のコネクションIDを記憶しているか否かを判定する。送信未完のコネクションIDについては後述する。送信未完のコネクションIDを記憶している場合には(S704にてYES)、ジョブ履歴送信部404は、処理をS721に進める。記憶していない場合には(S704にてNO)、ジョブ履歴送信部404は、処理をS705に進める。
S705において、ジョブ履歴送信部404は、送信対象であるジョブ履歴500のジョブ履歴属性情報501を、ジョブ履歴受信部601に送信する。S706において、ジョブ履歴送信部404は、ジョブ履歴500に、ページ画像520が含まれるか否かを判定する。ページ画像520がある場合には(S706にてYES)、ジョブ履歴送信部404は、処理をS707に進める。ページ画像520がない場合には(S706にてNO)、ジョブ履歴送信部404は、処理をS710に進める。
S707において、ジョブ履歴送信部404は、ジョブ履歴500に含まれる各ページに対する繰り返し処理(S708〜S709)を制御する。具体的には、ジョブ履歴送信部404は、繰り返し処理の対象とするページ番号を、1から順にページのデータがなくなるまで1ずつ増やしながら、S708〜S709の処理を繰り返し行う。S708において、ジョブ履歴送信部404は、処理対象のページ番号のページ属性をジョブ履歴受信部601に送信する。S709において、ジョブ履歴送信部404は、処理対象のページ番号のページ画像を、ジョブ履歴受信部601に送信する。全ページに対し、S708〜S709の処理が終わると、ジョブ履歴送信部404は、処理をS710に進める。
なお、S705のジョブ履歴属性情報送信、S708のページ属性送信、およびS709のページ画像送信により、ジョブ履歴データの送信が行われる。ジョブ履歴データの送信では、ジョブ履歴処理サーバー111に許可された正当な送信であることを示すために、ジョブ履歴送信用のコネクションIDが各データと共にジョブ履歴受信部601へ送信される。また、ジョブ履歴送信用のコネクションIDは、送信されたジョブ履歴データが同一のジョブ履歴であることを、ジョブ履歴処理サーバー111が識別するためにも用いられる。
なお、これらの送信処理において、コネクションID不正の応答を受信するか、もしくは何らかのエラーが発生して通信の続行ができなくなった場合、ジョブ履歴送信部404は、処理をS713に進めるものとする。この結果、ジョブ履歴処理サーバー111に受信されたジョブ履歴においてジョブ履歴を構成するデータのうちの一部のジョブ履歴データしか含まない状態になる場合がある。このとき、ジョブ履歴処理サーバー111が保持する一部のジョブ履歴データしか含まないジョブ履歴のことを「不完全ジョブ履歴」と呼ぶ。
続いて、ジョブ履歴処理サーバー111のジョブ履歴受信部601は、MFP101からジョブ履歴データを受信すると(S801にてNO、かつS811にてYES)、処理をS812に進める。S812において、ジョブ履歴受信部601は、ジョブ履歴データと共に送信されてきたジョブ履歴送信用のコネクションIDが、ジョブ履歴送信が許可されているコネクションIDか否かを判定する。ここでの許可されているコネクションIDか否かは、同時接続数管理領域に保存されているか否かで判定できる。許可されているコネクションIDである場合(S812にてYES)、ジョブ履歴受信部601は、処理をS813に進める。許可されていないコネクションIDである場合(S812にてNO)、ジョブ履歴受信部601は、処理をS814に進める。
S813において、ジョブ履歴受信部601は、ジョブ履歴データを受信して、ジョブ履歴データと共に受信したジョブ履歴送信用のコネクションIDに関連付けてジョブ履歴処理用領域に保存する。ここで、受信したジョブ履歴送信用のコネクションIDに関連付くステータス情報ファイルがない場合、ジョブ履歴受信部601は、受信したジョブ履歴送信用のコネクションIDに関連付けて、「ジョブ履歴受信中」を示すステータス情報ファイルを新たに作成する。S814において、ジョブ履歴受信部601は、受信したジョブ履歴送信用のコネクションIDが不正である旨を、ジョブ履歴送信部404に応答する。
続いて、S710において、MFP101のジョブ履歴送信部404は、ジョブ履歴送信終了通知を、ジョブ履歴受信部601に送信する。本工程においても、ジョブ履歴送信用のコネクションIDが共にジョブ履歴受信部601へ送信される。
続いて、ジョブ履歴処理サーバー111のジョブ履歴受信部601は、MFP101からジョブ履歴送信終了通知を受信すると(S801およびS811にてNO、かつS821にてYES)、処理をS822に進める。S822において、ジョブ履歴受信部601は、ジョブ履歴送信終了通知と共に送信されてきたジョブ履歴送信用のコネクションIDが、ジョブ履歴送信が許可されているコネクションIDか否かを判定する。許可されているコネクションIDである場合(S822にてYES)、ジョブ履歴受信部601は、処理をS823に進める。許可されていないコネクションIDである場合(S822にてNO)、ジョブ履歴受信部601は、処理をS814に進める。
S823において、ジョブ履歴受信部601は、同時接続数管理領域から、ジョブ履歴送信終了通知と共に受信したジョブ履歴送信用のコネクションIDを削除する。S824において、ジョブ履歴受信部601は、受信したジョブ履歴送信用のコネクションIDに関連付いたジョブ履歴データに欠落があるか否かを判定する。具体的には、ジョブ履歴処理用領域に保存されている対象のジョブ履歴に関し、ジョブ履歴属性情報501があるか否かを判定する。そして、ジョブ履歴属性情報501がある場合には、そこに記載されているページ数分のページ属性とページ画像の対を受信しているか否かを判定する。欠落しているデータがない場合には(S824にてNO)、ジョブ履歴受信部601は、処理をS825に進める。欠落しているデータがある場合には(S824にてYES)、ジョブ履歴受信部601は、処理をS827に進める。
S825において、ジョブ履歴受信部601は、受信したジョブ履歴送信用のコネクションIDに関連付いたジョブ履歴の受信が完了し、ジョブ履歴処理が可能となったことを、そのコネクションIDと共にジョブ履歴処理部602に通知する。この通知を、「通常ジョブ履歴処理依頼」と称する。また、ジョブ履歴受信部601は、このジョブ履歴のコネクションIDに関連付いたステータス情報ファイルを、ジョブ履歴受信完了を示すように更新する。S826において、ジョブ履歴受信部601は、ジョブ履歴受信完了を送信元に応答する。S827において、ジョブ履歴受信部601は、ジョブ履歴受信エラーをジョブ履歴送信部404に応答する。
続いて、S711において、MFP101のジョブ履歴送信部404は、ジョブ履歴送信終了通知に対する応答を判定する。応答の内容がジョブ履歴受信完了である場合には(S711にてYES)、ジョブ履歴送信部404は、処理をS712に進める。ジョブ履歴受信エラーである場合には(S711にてNO)、ジョブ履歴送信部404は、処理をS713に進める。
S712において、ジョブ履歴送信部404は、送信が完了したジョブ履歴を削除する。このとき、削除するジョブ履歴に関連付いた送信未完のコネクションIDを記憶している場合、ジョブ履歴送信部404は、そのコネクションIDも削除する。S713において、ジョブ履歴送信部404は、送信していたジョブ履歴がジョブ履歴処理サーバー111側で受信完了しなかったと判断し、ジョブ履歴送信用のコネクションIDを送信未完のコネクションIDとして、送信していたジョブ履歴に関連付けて保存する。S714において、ジョブ履歴送信部404は、保持しているジョブ履歴送信用のコネクションIDを破棄し、ジョブ履歴送信の処理を終了する。
S713にて送信未完のコネクションIDを記憶している場合、次回のジョブ履歴送信時には、S704にてYESとなり、ジョブ履歴送信部404は、処理をS721に進める。S721において、ジョブ履歴送信部404は、送信未完のコネクションIDで送信していたジョブ履歴のジョブ履歴処理サーバー111における受信状況を問合せるための処理要求を、ジョブ履歴受信部601に送信する。問合せにおいて、送信未完のコネクションIDとジョブ履歴送信用のコネクションIDとが一緒に送信される。
続いて、ジョブ履歴処理サーバー111のジョブ履歴受信部601は、ジョブ履歴の受信状況問合せを受信すると(S801、S811、およびS821にてNO、かつS831にてYES)、処理をS832に進める。なお、通常は発生しないが、例えば、何らかの障害が発生した場合などにより、S831の判定もNOとなる場合、ジョブ履歴受信部601は、S841において、処理要求元に対しリクエストエラーを応答する。
S832において、ジョブ履歴受信部601は、受信状況の問合せと共に送信されてきたジョブ履歴送信用のコネクションIDが、ジョブ履歴の送信を許可されているコネクションIDか否かを判定する。許可されているコネクションIDである場合(S832にてYES)、ジョブ履歴受信部601は、処理をS833に進める。許可されていないコネクションIDである場合(S832にてNO)、ジョブ履歴受信部601は、処理をS814に進める。
S833において、ジョブ履歴受信部601は、受信した問い合わせに基づき、同時接続数管理領域に保存されている、受信したジョブ履歴送信用のコネクションIDを、受信した送信未完のコネクションIDに変更する。これにより、送信未完のコネクションIDは、同時接続数管理領域に登録され、ジョブ履歴の送信が許可されたコネクションIDとなる。
S834において、ジョブ履歴受信部601は、受信した送信未完のコネクションIDに関連付いているジョブ履歴について、どのジョブ履歴データがジョブ履歴処理用領域に保存されているかを確認し、その確認結果を応答する。確認結果の内容は、例えば、「ジョブ履歴属性情報501、1ページ目のページ属性とページ画像、2ページ目のページ属性」となる。なお、送信未完のコネクションIDに関連付いているジョブ履歴のデータがジョブ履歴処理用領域に保存されていない場合には、確認結果の内容は、「受信済みデータなし」となる。
続いて、S722において、MFP101のジョブ履歴送信部404は、記憶していた送信未完のコネクションIDを、新たなジョブ履歴送信用のコネクションIDとして保持する。これにより、ジョブ履歴送信部404がこれ以降に行うジョブ履歴データの送信やジョブ履歴送信終了通知が、ジョブ履歴処理サーバー111が保持する不完全ジョブ履歴に関するものであると識別可能となる。
S723において、ジョブ履歴送信部404は、受信状況問合せに対する応答の内容を判定する。応答の内容と、送信未完のコネクションIDに関連付いたジョブ履歴から、ジョブ履歴処理サーバー111が未受信のジョブ履歴データがあると判定される場合には(S723にてYES)、ジョブ履歴送信部404は、処理をS724に進める。未受信のジョブ履歴データが無いと判定される場合には(S723にてNO)、ジョブ履歴送信終了通知が受信されていない状況であるため、ジョブ履歴送信部404は、処理をS710に進める。
S724において、ジョブ履歴送信部404は、受信状況問合せに対する応答の内容から、ジョブ履歴処理サーバー111が未受信のジョブ履歴データを、送信未完のコネクションIDに関連付いたジョブ履歴の中から送信する。このときの送信の詳細は、S705〜S709と同様な手順で、ジョブ履歴処理サーバー111が未受信のジョブ履歴データだけをジョブ履歴送信用のコネクションIDと共に送信する。この、ジョブ履歴処理サーバー111にある不完全ジョブ履歴を補完するために送信されるジョブ履歴データを、「補完ジョブ履歴データ」と呼ぶ。つまり、「補完ジョブ履歴データ」は、ジョブ履歴のうちのジョブ履歴処理サーバー111が受信していなかった残りの分のジョブ履歴データとなる。
(不完全ジョブ履歴判定処理)
次に、ジョブ履歴処理サーバー111のジョブ履歴管理部603が、不完全ジョブ履歴の保存期限を判定する際の動作について、図9のフローチャートを用いて説明する。図9のフローチャートに示す各ステップは、ジョブ履歴処理サーバー111のCPU311がROM312またはHDD314に記憶されているジョブ履歴管理部603を実現するプログラムを読み出して実行することで実現される。また、CPU311は、必要に応じて記憶領域としてRAM313やHDD314を利用する。なお、不完全ジョブ履歴の判定処理は、予め設定された時間間隔で行われるものとする。ここでの時間間隔は例えば、設定制御部604にて管理されているものとする。
S901において、ジョブ履歴管理部603は、ジョブ履歴処理用領域にあるジョブ履歴に関連付けられているコネクションIDの一覧を取得する。S902において、ジョブ履歴管理部603は、一覧にコネクションIDがあるか否かを判定する。コネクションIDがある場合には(S902にてYES)、ジョブ履歴管理部603は、処理をS903に進める。コネクションIDがない場合には(S902にてNO)、ジョブ履歴管理部603は、不完全ジョブ履歴の判定処理を終了する。
S903において、ジョブ履歴管理部603は、一覧からコネクションIDを一つ選択する。S904において、ジョブ履歴管理部603は、選択したコネクションIDのステータス情報ファイルを確認し、ステータスが「ジョブ履歴受信中」か否かを判定する。ジョブ履歴受信中である場合には(S904にてYES)、ジョブ履歴管理部603は、処理をS905に進める。ジョブ履歴受信中でない場合には(S904にてNO)、ジョブ履歴管理部603は、処理をS908に進める。
S905において、ジョブ履歴管理部603は、選択したコネクションIDに関連付くジョブ履歴データの内、最後に受信されたデータの保存日時を取得する。S906において、ジョブ履歴管理部603は、S905で取得した日時に基づき、選択したコネクションIDに関連付いたジョブ履歴の保存期限が、予め設定された保存期限を経過したか否かを判定する。ここでの保存期間は例えば、設定制御部604にて管理されているものとする。保存期限を過ぎている場合(S906にてYES)、ジョブ履歴管理部603は、処理をS907に進める。保存期限を過ぎていない場合(S906にてNO)、ジョブ履歴管理部603は、処理をS908に進める。
S907において、ジョブ履歴管理部603は、選択したコネクションIDに関連付いたジョブ履歴を、不完全ジョブ履歴として処理するように、コネクションIDと共にジョブ履歴処理部602に通知する。この通知を「不完全ジョブ履歴処理依頼」とする。S908において、ジョブ履歴管理部603は、選択したコネクションIDを、S901で取得した一覧から削除し、処理をS902に進める。
(ジョブ履歴処理)
次に、ジョブ履歴処理サーバー111のジョブ履歴処理部602が、他の処理部からジョブ履歴に対する処理依頼を受け取ったときの動作について、図10のフローチャートを用いて説明する。図10のフローチャートに示す各ステップは、ジョブ履歴処理サーバー111のCPU311がROM312またはHDD314に記憶されているジョブ履歴処理部602を実現するプログラムを読み出して実行することで実現される。また、CPU311は、必要に応じて記憶領域としてRAM313やHDD314を利用する。
S1001において、ジョブ履歴処理部602は、他の処理部から受け取った依頼が、不完全ジョブ履歴処理依頼か否かを判定する。不完全ジョブ履歴処理依頼でない場合には(S1001にてNO)、ジョブ履歴処理部602は、処理をS1002に進める。不完全ジョブ履歴処理依頼である場合には(S1001にてYES)、ジョブ履歴処理部602は、処理をS1004に進める。
S1002において、ジョブ履歴処理部602は、S1001で受け取った処理依頼に含まれるコネクションIDに関連付いたステータス情報ファイルを、「ジョブ履歴処理中」である旨を示すように更新する。S1003において、ジョブ履歴処理部602は、通常のジョブ履歴処理を、処理依頼に含まれるコネクションIDに関連付いたジョブ履歴に対し実行する。この処理の詳細の説明は省略するが、必要に応じて、ジョブ履歴処理サーバー111は、ジョブ履歴属性情報の整形、ページ画像の集約、変換などを行う。
S1004において、ジョブ履歴処理部602は、S1001で受け取った処理依頼に含まれるコネクションIDに関連付いたステータス情報ファイルを、「不完全ジョブ履歴処理中」である旨を示すように更新する。S1005において、ジョブ履歴処理部602は、不完全なジョブ履歴に対する処理を、処理依頼に含まれるコネクションIDに関連付いたジョブ履歴に対し実行する。ここでの処理は、基本的にはS1003と同様である。しかし、対象となるジョブ履歴がジョブ履歴属性情報もしくはページ画像に欠落が生じたジョブ履歴であるため、ジョブ履歴処理部602は、ジョブ履歴属性情報の中に不完全なジョブ履歴であることを示す情報を追加する。
S1006において、ジョブ履歴処理部602は、ジョブ履歴処理が完了したジョブ履歴を、外部システムに取り込ませるために、予め設定されたエクスポート領域にエクスポートする。S1007において、ジョブ履歴処理部602は、エクスポートが完了したジョブ履歴を、ジョブ履歴処理用領域から削除する。
以上、第一の実施形態では、ジョブ履歴処理サーバー111におけるジョブ履歴受信が途絶え、再度受信が可能となった際に、不足しているジョブ履歴データのみを受信して、処理することができる。また、不足しているジョブ履歴データが送られて来ない場合には、途中まで受信していたジョブ履歴を、不完全なジョブ履歴として処理することが可能である。これにより、ジョブ履歴の保全性向上と、補完送信の効率改善が可能となる。
なお、ジョブ履歴管理部603の不完全ジョブ履歴の保存期限の判断であるが、ジョブ履歴受信状況の問合せを受けた際に、その保存期限を延ばすようにしても良い。例えば、ステータス情報ファイルに、最後に受信したジョブ履歴データの保存日時を持たせておき、ジョブ履歴受信状況の問合せを受けたときに、ステータス情報ファイルが有する日時情報を更新することで実現できる。
<第二の実施形態>
次に本発明の第二の実施形態について説明する。本実施形態は、主に、MFPの台数が多く、複数のジョブ履歴処理サーバーを必要とする環境に対応するものである。なお、第一の実施形態と重複する部分の説明は省略し、差分のみを説明することとする。
[システム構成]
図11は、本実施形態におけるジョブ履歴処理システム100およびそれと連携するシステム131の構成例を示す図である。本実施形態におけるジョブ履歴処理システム100は、複数台のMFP101と、複数台のジョブ履歴処理サーバー111とが、負荷分散装置151を介して接続されている。
負荷分散装置151は、MFP101からジョブ履歴処理サーバー111に対する接続を振り分け、複数のジョブ履歴処理サーバー111間で負荷が分散されるようにする。つまり、接続を振り分けることで、ジョブ履歴の格納先を振り分けることができる。本実施形態においては、負荷分散装置151は、OSI参照モデルのアプリケーション層の情報を参照して接続先を判断するパーシステンス機能を備える。そして、システム構築の際、MFP101からの通信に、ジョブ履歴処理サーバー111を識別するためのサーバーIDが含まれる場合には、サーバーIDによって特定されるジョブ履歴処理サーバー111に、通信を振り分ける設定がされているものとする。
次に、本実施形態におけるジョブ履歴処理サーバー111について説明する。本実施形態におけるジョブ履歴処理サーバー111は、自身の設定値として、複数のサーバーそれぞれを一意に識別するためのサーバーID(識別情報)を有する。サーバーIDは、システム管理者からの入力を受け付け、設定制御部604により予め設定される。設定制御部604が、ジョブ履歴処理サーバー111が動作するハードウェア固有の情報や、IPアドレス、MACアドレスなどからサーバーIDを自動的に生成するようにしても良い。
次に、ジョブ履歴処理サーバー111のジョブ履歴受信部601の動作について説明する。図8のS803において、ジョブ履歴受信部601は、サーバーIDを含むコネクションIDを発行し、ジョブ履歴送信が許可されたコネクションIDとして、同時接続数管理領域に保存する。これにより、S804において、MFP101にサーバーIDを含むコネクションIDが、ジョブ履歴送信予約成功の応答と共に送信される。
[処理フロー]
次に、本実施形態におけるMFP101のジョブ履歴送信部404について、図12のフローチャートを用いて説明する。図12のフローチャートに示す各ステップは、MFP101のCPU201が、ROM203またはHDD204に記憶されているジョブ履歴送信部404を実現するプログラムを読み出して実行することで実現される。また、CPU201は、必要に応じて記憶領域としてRAM202やHDD204を利用する。なお、図12において、図7と同様の処理内容のステップについては説明を省略する。
S1201では、ジョブ履歴送信部404は、S704と同様の判定を行う。送信未完のコネクションIDを記憶している場合には(S1201にてYES)、ジョブ履歴送信部404は、処理をS1221に進める。記憶していない場合には(S1201にてNO)、ジョブ履歴送信部404は、処理をS1202に進める。S1202〜S1204の処理はそれぞれ、S701〜S703の処理と同様である。ただし、S1202のジョブ履歴送信予約は、負荷分散装置151の働きによって、異なるジョブ履歴処理サーバー111に対して行われることがあるため、成功しない場合には所定の回数を上限として複数回リトライするようにしても良い。
S1205〜S1209の処理はそれぞれ、S705〜S709の処理と、基本的には同様である。ただし、S1205、S1208、S1209において、ジョブ履歴送信部404は、ジョブ履歴送信用のコネクションIDから送付先のサーバーIDを取り出し、負荷分散装置151が識別できるように送信情報に含める。サーバーIDの含め方は、負荷分散装置151が識別できる形式であれば良く、URLパラメーターに含めても良いし、Cookieとして持たせても良い。これらのステップは、ジョブ履歴データの送信であるが、負荷分散装置151が識別できるようにサーバーIDを含めて送信することにより、ジョブ履歴を構成する各ジョブ履歴データが異なるジョブ履歴処理サーバー111に分散されないようにする。
S1210の処理は、S710の処理とほぼ同様であるが、ここでも、S1205などと同様に、ジョブ履歴送信部404は、サーバーIDを含めて送信する。これにより、ジョブ履歴データを送信したジョブ履歴処理サーバー111に対して、ジョブ履歴送信終了通知が送信されるようにする。S1211〜S1214の処理はそれぞれ、S711〜S714の処理と同様である。
S1221では、ジョブ履歴送信部404は、記憶している送信未完のコネクションIDから送付先のサーバーIDを取り出し、S1205などと同様に、送信情報に含めてジョブ履歴送信予約の要求を行う。これにより、記憶している送信未完のコネクションIDに関連付いた不完全ジョブ履歴を保持するジョブ履歴処理サーバー111に対して、ジョブ履歴送信予約を行うことができる。S1222とS1223の処理はそれぞれ、S1203とS1204と同様である。
S1224の処理は、S721の処理とほぼ同様であるが、S1205などと同様に、ジョブ履歴送信部404は、ジョブ履歴送信用のコネクションIDから取り出したサーバーIDを含めて送信する。これにより、記憶している送信未完のコネクションIDに関連付いた不完全ジョブ履歴を保持し、且つ、ジョブ履歴送信を予約したジョブ履歴処理サーバー111に対し、不完全ジョブ履歴の受信状況を問合せることができる。
S1225〜S1227の処理は、S722〜S724の処理と基本的には同様である。ただし、S1227においては、S1205などと同様に、ジョブ履歴送信部404は、ジョブ履歴送信用のコネクションIDから取り出したサーバーIDを含めて送信する。これにより、補完ジョブ履歴データを、それに対応する不完全ジョブ履歴を保持するジョブ履歴処理サーバー111に送信することができる。
以上、第二の実施形態では、ジョブ履歴処理サーバー111が複数台あって、高機能な負荷分散装置151によって負荷分散される構成においても、ジョブ履歴処理サーバー111が未受信のジョブ履歴データのみを効率的に受信して補完することができる。
<第三の実施形態>
次に本発明の第三の実施形態について説明する。本実施形態では、第二の実施形態の図12のS1222にてジョブ履歴送信予約が失敗した場合に、ジョブ履歴処理サーバー111を特定せずに、ジョブ履歴処理サーバー111に受信されていないジョブ履歴データを送信する。なお、第二の実施形態と重複する部分の説明は省略し、差分のみを説明する。
[ソフトウェア構成]
本実施形態に係るジョブ履歴処理サーバー111のソフトウェア構成例を示すブロック図を図13に示す。図13は、ジョブ履歴補完部605が加わっている点が図6と異なる。ジョブ履歴補完部605は、異なるジョブ履歴処理サーバー111が保持する不完全ジョブ履歴を取得するか、異なるジョブ履歴処理サーバー111に自身が保持する補完ジョブ履歴データを送信する。これにより、ジョブ履歴補完部605は、分散して保持されている不完全ジョブ履歴をいずれかのジョブ履歴処理サーバー111に、ジョブ履歴データを集約する。
また、本実施形態のジョブ履歴処理サーバー111は、自身のサーバーIDの他に、別のジョブ履歴処理サーバー111のサーバーIDと、それらにアクセスするためのアドレス情報とを対応付けて保持する。別のジョブ履歴処理サーバー111の情報については、システム管理者からの入力を受け付け、設定制御部604が予め設定するものとする。または、アドレス情報のみをシステム管理者に入力させ、サーバーIDは、ジョブ履歴処理サーバー111それぞれから取得するようにしても良い。
[処理フロー]
本実施形態におけるMFP101のジョブ履歴送信部404について、図14のフローチャートを用いて説明する。図14のフローチャートに示す各ステップは、MFP101のCPU201が、ROM203またはHDD204に記憶されているジョブ履歴送信部404を実現するプログラムを読み出して実行することで実現される。また、CPU201は、必要に応じて記憶領域としてRAM202やHDD204を利用する。なお、図14は、図12のフローチャートに対し、S1222の判定がNOの場合に、S1431〜S1434の処理が加わっている点が異なる。それ以外のステップについては、図12と処理内容が同じため、図12と同一の符号を付し、その説明は省略する。
S1431において、ジョブ履歴送信部404は、S1202と同様に、ジョブ履歴送信予約を行う。ただし、S1431のジョブ履歴送信予約は、負荷分散装置151の働きによって、異なるジョブ履歴処理サーバー111に対して行われることがあるため、成功しない場合には、複数回リトライするようにしても良い。
S1432において、ジョブ履歴送信部404は、S702と同様に、ジョブ履歴送信予約に対する応答の内容を判定する。応答の内容が「ジョブ履歴送信予約成功」である場合には(S1432にてYES)、ジョブ履歴送信部404は、処理をS1433に進める。応答の内容がビジー(すなわち、予約失敗)である場合には(S1432にてNO)、ジョブ履歴送信部404は、ジョブ履歴送信処理を終了し、次回のジョブ履歴有無確認の機会まで待機する。
S1433において、ジョブ履歴送信部404は、S703と同様に、ジョブ履歴送信予約の応答に含まれるコネクションIDを、ジョブ履歴送信用のコネクションIDとして保持する。
S1434において、ジョブ履歴送信部404は、送信未完のコネクションIDに関連付いた不完全ジョブ履歴の受信状況を問合せる処理要求を送信する。問合せにおいて、送信未完のコネクションIDとジョブ履歴送信用のコネクションIDとが一緒に送信される。さらに、S1434においては、ジョブ履歴送信部404は、S1205などと同様に、ジョブ履歴送信用のコネクションIDから取り出したサーバーIDをジョブ履歴属性情報に含めて、送信する。これにより、ジョブ履歴送信を予約したジョブ履歴処理サーバー111に対し、不完全ジョブ履歴の受信状況を問合せる処理要求を送信することができる。
(受信状況問い合わせの受信時の処理)
次に、ジョブ履歴処理サーバー111のジョブ履歴受信部601の処理について、図15のフローチャートを用いて説明する。図15のフローチャートに示す各ステップは、ジョブ履歴処理サーバー111のCPU311がROM312またはHDD314に記憶されているジョブ履歴受信部601を実現するプログラムを読み出して実行することで実現される。また、CPU311は、必要に応じて記憶領域としてRAM313やHDD314を利用する。
図15は、ジョブ履歴受信部601が、MFP101のジョブ履歴送信部404から受信状況問合せを受信したときの処理のみを表しており、具体的には、図8のS832〜S834に置き換わる処理である。図15において、図8と同様の処理内容のステップについては説明を省略する。
S1501において、ジョブ履歴受信部601は、S832と同様の判定を行う。受信したジョブ履歴送信用のコネクションIDが、ジョブ履歴送信が許可されているコネクションIDである場合(S1501にてYES)、ジョブ履歴受信部601は、処理をS1502に進める。許可されていないコネクションIDである場合(S1501にてNO)、ジョブ履歴受信部601は、処理をS1521に進める。
S1502において、ジョブ履歴受信部601は、受信状況問合せにて取得した送信未完のコネクションIDに含まれるサーバーIDが、自身のサーバーIDか否かを判定する。自身のサーバーIDである場合には(S1502にてYES)、ジョブ履歴受信部601は、処理をS1503に進める。自身のサーバーIDでない場合には(S1502にてNO)、ジョブ履歴受信部601は、処理をS1511に進める。
S1503およびS1504はそれぞれ、S833およびS834と同様の処理であるため、説明は省略する。
S1511において、ジョブ履歴受信部601は、送信未完のコネクションIDに含まれるサーバーIDに対応するジョブ履歴処理サーバー111に、受信状況問合せを行う。このとき、ジョブ履歴受信部601は、問合せに、送信未完のコネクションIDと、自身のサーバーIDとを含める。なお、別のジョブ履歴処理サーバー111への受信状況の問合せは、問合せ先のジョブ履歴処理サーバー111の同時接続数に影響されずに処理されるものとする。問合せを受けたジョブ履歴処理サーバー111は、基本的に、S834と同様の処理を行う。ただし、ジョブ履歴属性情報501がある場合、問合せを受けたジョブ履歴処理サーバー111は、ジョブ履歴が全体で何ページあるかの情報も併せて、問合せ元のジョブ履歴処理サーバー111に応答する。
S1512において、ジョブ履歴受信部601は、取得した不完全ジョブ履歴の受信状況と送信未完のコネクションIDとを、ジョブ履歴送信用のコネクションIDに関連付けてジョブ履歴処理用領域に保存する。S1513において、ジョブ履歴受信部601は、取得した不完全ジョブ履歴の受信状況をジョブ履歴送信部404に応答する。
S1521は、S814と同様の処理であり、ジョブ履歴受信部601は、ジョブ履歴送信用のコネクションIDが不正である旨をジョブ履歴送信部404に応答する。
以上、S1434における受信状況問合せを受信したジョブ履歴処理サーバー111は、問い合わされた不完全ジョブ履歴を保持するジョブ履歴処理サーバー111に対して問合せを行い、その受信状況を取得する。そして、S1434の受信状況問合せを受信したジョブ履歴処理サーバー111は、S1434の受信状況問合せに応答することができる。これにより、S1434の受信状況問合せを受信したジョブ履歴処理サーバー111が、補完ジョブ履歴データとそれに対応するジョブ履歴送信終了通知とを受信することになる。
(ジョブ履歴送信終了通知の受信時の処理)
図16に、MFP101のジョブ履歴送信部404からジョブ履歴送信終了通知を受信した際の、ジョブ履歴受信部601の処理フローを示す。図16のフローチャートに示す各ステップは、ジョブ履歴処理サーバー111のCPU311がROM312またはHDD314に記憶されているジョブ履歴受信部601を実現するプログラムを読み出して実行することで実現される。また、CPU311は、必要に応じて記憶領域としてRAM313やHDD314を利用する。
図16は、ジョブ履歴受信部601が、MFP101のジョブ履歴送信部404から、ジョブ履歴送信終了通知を受信したときの処理のみを表しており、具体的には、図8のS822〜S827に置き換わる処理である。図16において、図8と同様の処理内容のステップについては説明を省略する。
S1601において、ジョブ履歴受信部601は、S822と同様の判定を行う。受信したジョブ履歴送信用のコネクションIDが、ジョブ履歴送信が許可されているコネクションIDである場合(S1601にてYES)、ジョブ履歴受信部601は、処理をS1602に進める。許可されていないコネクションIDである場合(S1601にてNO)、ジョブ履歴受信部601は、処理をS1621に進める。S1602は、S823と同様の処理であるため、説明は省略する。
S1603において、ジョブ履歴受信部601は、受信したジョブ履歴送信用のコネクションIDに関連付く送信未完のコネクションIDがジョブ履歴処理用領域に保存されているか否かを判定する。送信未完のコネクションIDが保存されていない場合(S1603にてNO)、ジョブ履歴受信部601は、処理をS1604に進める。保存されている場合(S1603にてYES)、ジョブ履歴受信部601は、処理をS1611に進める。なお、送信未完のコネクションIDが保存されている場合、受信したジョブ履歴送信終了通知が、別のジョブ履歴処理サーバー111が保持する不完全ジョブ履歴の補完ジョブ履歴データに対応するものであることとなる。
S1604は、S824と同様の判定を行うため、説明は省略する。S1605〜S1607はそれぞれ、S825〜S827と同様の処理であるため、説明は省略する。
S1611において、ジョブ履歴受信部601は、受信したジョブ履歴送信用のコネクションIDに関連付く補完ジョブ履歴データに欠落があるか否かを判定する。詳細には、ジョブ履歴処理用領域に保存されている対象のジョブ履歴に関し、ジョブ履歴処理用領域に保存されている受信状況の内容に基づいて、受信すべきデータが全て受信されているか否かを判定する。欠落しているデータがない場合には(S1611にてNO)、ジョブ履歴受信部601は、処理をS1612に進める。欠落しているデータがある場合には(S1611にてYES)、ジョブ履歴受信部601は、処理をS1607に進める。
S1612において、ジョブ履歴受信部601は、補完ジョブ履歴データ受信完了を、関連付けられているジョブ履歴送信用のコネクションIDと共にジョブ履歴補完部605に通知する。また、このとき、ジョブ履歴受信部601は、ジョブ履歴送信用のコネクションIDに関連付いたステータス情報ファイルを「補完ジョブ履歴データ受信完了」を示すように更新し、処理をS1606に進める。S1621は、S814と同様の処理であるため、説明は省略する。
(補完ジョブ履歴データ受信完了通知の受信時の処理)
次に、補完ジョブ履歴データ受信完了通知を受信した際の、ジョブ履歴補完部605の処理を、図17のフローチャートを用いて説明する。図17のフローチャートに示す各ステップは、ジョブ履歴処理サーバー111のCPU311がROM312またはHDD314に記憶されているジョブ履歴補完部605を実現するプログラムを読み出して実行することで実現される。また、CPU311は、必要に応じて記憶領域としてRAM313やHDD314を利用する。
S1701において、ジョブ履歴補完部605は、補完対象の不完全ジョブ履歴を保持するジョブ履歴処理サーバー111が受信しているページ画像数よりも、自身が受信しているページ画像数の方が多いか否かを判定する。ここでの判定は、S1612の通知と共に送られてきたコネクションIDに関連付いた、ジョブ履歴処理用領域に保存されている受信状況と補完ジョブ履歴データとに基づいて行われる。自身が受信しているページ画像数の方がより多い場合には(S1701にてYES)、ジョブ履歴補完部605は、処理をS1702に進める。自身以外の方がより多くのページ画像を受信している場合には(S1701にてNO)、ジョブ履歴補完部605は、処理をS1711に進める。
S1702において、ジョブ履歴補完部605は、送られてきたコネクションIDに関連付けて保存されている送信未完のコネクションIDに含まれるサーバーIDを取得する。そして、ジョブ履歴補完部605は、取得したサーバーIDに対応するジョブ履歴処理サーバー111のジョブ履歴受信部601に対し、送信未完のコネクションIDに関連付くジョブ履歴データの取得要求を行う。
これは、つまり、1のジョブ履歴が複数のジョブ履歴処理サーバー111に分割して保持されている場合に、補完ジョブ履歴データに対応する不完全ジョブ履歴を保持する別のジョブ履歴処理サーバー111から、その不完全ジョブ履歴を取得して集約している。そして、取得要求先のジョブ履歴受信部601は、送信未完のコネクションIDに関連付く不完全ジョブ履歴を、要求元のジョブ履歴補完部605への応答として返し、応答後、不完全ジョブ履歴をジョブ履歴処理用領域から削除する。S1703は、ジョブ履歴受信部601がS825において行う処理と同様の処理であるため、説明は省略する。
S1711において、ジョブ履歴補完部605は、送られてきたコネクションIDに関連付けられて保存されている送信未完のコネクションIDに含まれるサーバーIDを取得する。そして、ジョブ履歴補完部605は、取得したサーバーIDに対応するジョブ履歴処理サーバー111のジョブ履歴受信部601に対し、補完ジョブ履歴データを送信する。これは、つまり、1のジョブ履歴が複数のジョブ履歴処理サーバー111に分割して保持されている場合に、補完ジョブ履歴データに対応する不完全ジョブ履歴を保持する別のジョブ履歴処理サーバー111に、その補完ジョブ履歴データを送信して集約している。そして、ジョブ履歴補完部605は、補完ジョブ履歴データの送信の後、さらにジョブ履歴送信終了通知を送信する。
これら、補完ジョブ履歴データの送信およびジョブ履歴送信終了通知の送信においては、送信未完のコネクションIDも一緒に送信される。送信先のジョブ履歴処理サーバー111のジョブ履歴受信部601は、このジョブ履歴送信終了通知を受信すると、図8のS825、S826と同様の処理を行う。S1712において、ジョブ履歴補完部605は、送信が終わった補完ジョブ履歴データと関連するデータを、ジョブ履歴処理用領域から削除する。
以上、補完ジョブ履歴データの一部が、最初にジョブ履歴データを受信していたのと別のジョブ履歴処理サーバーに送信された場合でも、効率的にいずれかのサーバーに集約して一つのジョブ履歴として扱うことができる。
<第四の実施形態>
本発明の第四の実施形態について説明する。本実施形態では、第三の実施形態で不完全ジョブ履歴を保持するジョブ履歴処理サーバー111とは異なるジョブ履歴処理サーバー111へ補完ジョブ履歴データを送っている際に、その補完ジョブ履歴データの送信も途中でエラーとなった場合に対応する。なお、第三の実施形態と重複する部分の説明は省略し、差分のみを説明する。
[処理フロー]
(ジョブ履歴データ受信中断の検知時の処理)
ジョブ履歴受信部601は、ジョブ履歴データを受信中に、何らかのエラーが起きてデータが受信できなかった場合や、送信されてくるはずのジョブ履歴データが送られて来ないためにタイムアウトが発生した場合などに、例外処理を行う。
この例外処理について、図18のフローチャートを用いて説明する。図18のフローチャートに示す各ステップは、ジョブ履歴処理サーバー111のCPU311がROM312またはHDD314に記憶されているジョブ履歴受信部601を実現するプログラムを読み出して実行することで実現される。また、CPU311は、必要に応じて記憶領域としてRAM313やHDD314を利用する。
S1801において、ジョブ履歴受信部601は、受信していたジョブ履歴データのジョブ履歴送信用のコネクションIDに関連付く送信未完のコネクションIDが、ジョブ履歴処理用領域に保存されているか否かを判定する。保存されている場合には(S1801にてYES)、ジョブ履歴受信部601は、処理をS1802に進める。この場合、補完ジョブ履歴データの受信が途絶えたことになるが、受信済みの補完ジョブ履歴データのことを「部分補完ジョブ履歴データ」と呼ぶ。保存されていない場合には(S1801にてNO)、ジョブ履歴受信部601は、処理をS1804に進める。
S1802において、ジョブ履歴受信部601は、受信していた補完ジョブ履歴データのステータス情報ファイルを、「補完ジョブ履歴データ受信中断」を示すように更新する。S1803において、ジョブ履歴受信部601は、受信していたジョブ履歴データのジョブ履歴送信用のコネクションIDと共に補完ジョブ履歴データ受信中断通知を、ジョブ履歴補完部605に行う。S1804において、ジョブ履歴受信部601は、受信していたジョブ履歴送信用のコネクションIDを同時接続数管理領域から削除する。
(補完ジョブ履歴データ受信中断通知の受信時の処理)
次に、補完ジョブ履歴データ受信中断通知を受信した際の、ジョブ履歴補完部605の処理を、図19のフローチャートを用いて説明する。図19のフローチャートに示す各ステップは、ジョブ履歴処理サーバー111のCPU311がROM312またはHDD314に記憶されているジョブ履歴補完部605を実現するプログラムを読み出して実行することで実現される。また、CPU311は、必要に応じて記憶領域としてRAM313やHDD314を利用する。
S1901において、ジョブ履歴補完部605は、S1701と同様に、補完対象の不完全ジョブ履歴を保持する別のジョブ履歴処理サーバー111が受信しているページ画像数よりも、自身が受信しているページ画像数の方が多いか否かを判定する。自身が受信しているページ画像数の方がより多い場合には(S1901にてYES)、ジョブ履歴補完部605は、処理をS1902に進める。自身以外の方がより多くのページ画像を受信している場合には(S1901にてNO)、ジョブ履歴補完部605は、処理をS1911に進める。
S1902において、ジョブ履歴補完部605は、補完ジョブ履歴データ受信中断通知と共に受信したコネクションIDに関連付いたステータス情報ファイルを「不完全ジョブ履歴受信中」を示すように更新する。S1903において、ジョブ履歴補完部605は、受信したコネクションIDに関連付けて保存されている送信未完のコネクションIDに含まれるサーバーIDを取得する。そして、ジョブ履歴補完部605は、取得したサーバーIDに対応するジョブ履歴処理サーバー111のジョブ履歴受信部601に対し、送信未完のコネクションIDに関連付くジョブ履歴データの取得要求を行う。これは、部分補完ジョブ履歴データに対応する不完全ジョブ履歴を保持する別のジョブ履歴処理サーバー111からその不完全ジョブ履歴を取得し、自身側に部分補完ジョブ履歴データと集約することになる。
このとき、取得要求を受信した別のジョブ履歴処理サーバー111のジョブ履歴受信部601は、送信未完のコネクションIDに関連付く不完全ジョブ履歴のステータス情報ファイルを「不完全ジョブ履歴送信中」を示すように更新する。更新後、取得要求を受信した別のジョブ履歴処理サーバー111のジョブ履歴受信部601は、要求された不完全ジョブ履歴を要求元であるジョブ履歴処理サーバー111のジョブ履歴補完部605への応答として返す。応答後、取得要求を受信した別のジョブ履歴処理サーバー111のジョブ履歴受信部601は、不完全ジョブ履歴をジョブ履歴処理用領域から削除する。S1904において、ジョブ履歴補完部605は、受信したコネクションIDに関連付いたステータス情報ファイルを「ジョブ履歴受信中」を示すように更新する。これは、ジョブ履歴管理部603に、図9に示す不完全ジョブ履歴判定をさせるためである。
S1911において、ジョブ履歴補完部605は、受信したコネクションIDに関連付いたステータス情報ファイルを「部分補完ジョブ履歴データ送信中」を示すように更新する。S1912において、ジョブ履歴補完部605は、受信したコネクションIDに関連付けられて保存されている送信未完のコネクションIDに含まれるサーバーIDを取得する。そして、ジョブ履歴補完部605は、取得したサーバーIDに対応するジョブ履歴処理サーバー111のジョブ履歴受信部601に対し、初めに、部分補完ジョブ履歴データの受信状況を送信する。次いで、ジョブ履歴補完部605は、その部分補完ジョブ履歴データを送信する。これは、部分補完ジョブ履歴データに対応する不完全ジョブ履歴を保持する別のジョブ履歴処理サーバー111に、その部分補完ジョブ履歴データを送信し、別のジョブ履歴処理サーバー111に不完全ジョブ履歴に集約させることになる。
部分補完ジョブ履歴データの受信状況を受信した別のジョブ履歴処理サーバー111は、対応する不完全ジョブ履歴に関連付いたステータス情報ファイルを「部分補完ジョブ履歴データ受信中」を示すように更新する。そして、ジョブ履歴補完部605は、部分補完ジョブ履歴データの送信が終わると、さらに、部分補完ジョブ履歴データ送信終了通知を送信する。これら、部分補完ジョブ履歴データの送信および部分補完ジョブ履歴データ送信終了通知の送信においては、送信未完のコネクションIDも一緒に送信される。
送信先である別のジョブ履歴処理サーバー111のジョブ履歴受信部601は、この部分補完ジョブ履歴データ送信終了通知を受信すると、受信した送信未完のコネクションIDに関連付くステータス情報ファイルを「ジョブ履歴受信中」を示すように更新する。そして、送信先である別のジョブ履歴処理サーバー111のジョブ履歴受信部601は、部分補完ジョブ履歴データ受信完了通知を送信元のジョブ履歴処理サーバー111のジョブ履歴補完部605に応答する。S1913において、ジョブ履歴補完部605は、送信が終わった部分補完ジョブ履歴データと関連するデータを、ジョブ履歴処理用領域から削除する。
(ジョブ履歴送信処理)
次に、本実施形態におけるMFP101のジョブ履歴送信部404の動作について説明する。ジョブ履歴送信部404は、補完ジョブ履歴データの送信中に何らかのエラーが発生して通信の続行ができなくなった場合、図14に示されるS1213に処理を進める。そして、S1213において、ジョブ履歴送信部404は、送信していた補完ジョブ履歴データのジョブ履歴送信用のコネクションIDも送信未完のコネクションIDとして、送信していたジョブ履歴と関連付けて保存する。このとき、S1201において、送信未完のコネクションIDを複数記憶していることになるが、その場合のS1201より後の処理について、図20のフローチャートを用いて説明する。図20は、図14のフローチャートに対し、S1221〜S1225およびS1431〜S1434の処理に置き換わるものであり、その部分についてのみ示している。
S2021において、ジョブ履歴送信部404は、複数の送信未完のコネクションIDの中から未選択のコネクションIDを一つ選択する。そして、ジョブ履歴送信部404は、そのコネクションIDに含まれるサーバーIDに対応するジョブ履歴処理サーバー111にジョブ履歴送信予約を行う。
S2022において、ジョブ履歴送信部404は、ジョブ履歴送信予約に対する応答の内容を判定する。応答の内容が「ジョブ履歴送信予約成功」である場合には(S2022にてYES)、ジョブ履歴送信部404は、処理をS2024に進める。応答の内容がビジー(すなわち、予約失敗)である場合には(S2022にてNO)、ジョブ履歴送信部404は、処理をS2023に進める。
S2023において、ジョブ履歴送信部404は、S2021の処理で、未選択のコネクションIDがあるか否かを判定する。未選択のコネクションIDがある場合には(S2023にてYES)、ジョブ履歴送信部404は、処理をS2021に進め、別のコネクションIDに含まれるサーバーIDに対応するジョブ履歴処理サーバー111に対してジョブ履歴送信予約を行う。未選択のコネクションIDがない場合には(S2023にてNO)、ジョブ履歴送信部404は、処理をS2031に進める。
S2024において、ジョブ履歴送信部404は、ジョブ履歴送信予約の応答に含まれるコネクションIDをジョブ履歴送信用のコネクションIDとして保持する。
S2025において、ジョブ履歴送信部404は、S1224と同様に、記憶している送信未完のコネクションIDに関連付くジョブ履歴の受信状況を問合せるが、このとき、記憶している送信未完のコネクションIDを全て問合せに含める。そして、不完全ジョブ履歴の受信状況およびその不完全ジョブ履歴に関連付いたコネクションIDが、応答として返される。応答を受け取ると、ジョブ履歴送信部404は、記憶している送信未完のコネクションIDのうち、受け取ったコネクションID以外のコネクションIDを削除する。
S2026において、ジョブ履歴送信部404は、S2025の問合せで受信した不完全ジョブ履歴に関連付いたコネクションIDに含まれるサーバーIDが、問合せ先のジョブ履歴処理サーバー111に対応するサーバーIDと一致するか否かを判定する。サーバーIDが一致する場合には(S2026にてYES)、ジョブ履歴送信部404は、処理をS2027へ進める。一致しない場合には(S2026にてNO)、ジョブ履歴送信部404は、S2027の処理をスキップし、S1226へ処理を進める。
S2027において、ジョブ履歴送信部404は、受信した不完全ジョブ履歴に関連付いたコネクションIDを、新たなジョブ履歴送信用のコネクションIDとして保持する。これにより、ジョブ履歴送信部404が、これ以降に行うジョブ履歴データ送信やジョブ履歴送信終了通知が、問合せ先のジョブ履歴処理サーバー111が保持する不完全ジョブ履歴に関するものであることが識別可能となる。
S2031において、ジョブ履歴送信部404は、S1431と同様に、ジョブ履歴送信予約を行う。S2032において、ジョブ履歴送信部404は、S1432と同様に、ジョブ履歴送信予約に対する応答の内容を判定する。応答の内容が「ジョブ履歴送信予約成功」である場合には(S2032にてYES)、ジョブ履歴送信部404は、処理をS2033に進める。応答の内容がビジー(すなわち、予約失敗)である場合には(S2032にてNO)、ジョブ履歴送信部404は、ジョブ履歴送信処理を終了し、次回のジョブ履歴有無確認の機会まで待機する。
S2033において、ジョブ履歴送信部404は、S1433と同様に、S2031のジョブ履歴送信予約の応答に含まれるコネクションIDを、ジョブ履歴送信用のコネクションIDとして保持する。S2034において、ジョブ履歴送信部404は、S2025と同様に、記憶している送信未完のコネクションIDに関連付くジョブ履歴の受信状況を問合せる。そして、不完全ジョブ履歴の受信状況およびその不完全ジョブ履歴に関連付いたコネクションIDが応答として返される。応答を受け取ると、ジョブ履歴送信部404は、記憶している送信未完のコネクションIDのうち、受け取ったコネクションID以外のコネクションIDを削除する。
(受信状況問い合わせ要求の受信時の処理)
次に、ジョブ履歴処理サーバー111のジョブ履歴受信部601が、MFP101のジョブ履歴送信部404から、複数の送信未完のコネクションIDを含むジョブ履歴の受信状況問合せ要求を受信した際の処理を、図21のフローチャートを用いて説明する。図21は、図15のフローチャートのS1501の判定がYESである場合の、S1502とS1502との間に入る処理であり、その部分についてのみ示している。
S2101において、ジョブ履歴受信部601は、受信状況問合せに送信未完のコネクションIDが複数含まれているか否かを判定する。複数含まれている場合には(S2101にてYES)、ジョブ履歴受信部601は、処理をS2102に進める。一つしか含まれていない場合には(S2101にてNO)、ジョブ履歴受信部601は、処理をS1502に進める。
S2102において、ジョブ履歴受信部601は、受信した複数の送信未完のコネクションIDの中から一つを選択する。そして、ジョブ履歴受信部601は、選択したコネクションIDに含まれるサーバーIDに対応するジョブ履歴処理サーバー111に、そのコネクションIDのジョブ履歴についての受信状況を問合せる。問合せの結果は、問合せを受けたジョブ履歴処理サーバー111が保持しているデータおよびステータスに応じて、いくつかのケースがある。各ケースについて、図22に示す。
ケース1は、問合せを受けたジョブ履歴処理サーバー111が、不完全ジョブ履歴を保持し、かつ、ステータスが「ジョブ履歴受信中」の場合である。ケース1の場合、応答の内容として、不完全ジョブ履歴の受信状況と、不完全ジョブ履歴集約先サーバーIDとしてそのジョブ履歴処理サーバー111に対応するサーバーIDとが返される。
ケース2は、問合せを受けたジョブ履歴処理サーバー111が、不完全ジョブ履歴を保持し、かつ、ステータスが「不完全ジョブ履歴送信中」の場合である。ケース2の場合、応答の内容として、不完全ジョブ履歴の受信状況と、不完全ジョブ履歴送信先のサーバーIDとが返される。
ケース3は、問合せを受けたジョブ履歴処理サーバー111が、不完全ジョブ履歴を保持し、かつ、ステータスが「部分補完ジョブ履歴データ受信中」の場合である。ケース3の場合、応答の内容として、不完全ジョブ履歴の受信状況及び記憶している受信中の部分補完ジョブ履歴データの受信状況と、不完全ジョブ履歴集約先サーバーIDとしてそのジョブ履歴処理サーバー111に対応するサーバーIDとが返される。
ケース4は、問合せを受けたジョブ履歴処理サーバー111が、部分補完ジョブ履歴データを保持し、かつ、ステータスが「不完全ジョブ履歴受信中」の場合である。ケース4の場合、応答の内容として、部分補完ジョブ履歴データの受信状況および記憶している受信中の不完全ジョブ履歴の受信状況と、不完全ジョブ履歴集約先サーバーIDとしてそのジョブ履歴処理サーバー111に対応するサーバーIDとが返される。
ケース5は、問合せを受けたジョブ履歴処理サーバー111が、部分補完ジョブ履歴データを保持し、かつ、ステータスが「部分補完ジョブ履歴データ送信中」の場合である。ケース5の場合、応答の内容として、部分補完ジョブ履歴データの受信状況および記憶している受信中の不完全ジョブ履歴の受信状況と、不完全ジョブ履歴集約先サーバーIDとして部分補完ジョブ履歴データ送信先のサーバーIDとが返される。
ケース6は、問合せを受けたジョブ履歴処理サーバー111が、不完全ジョブ履歴および部分補完ジョブ履歴データのどちらも保持していない場合である。ケース6の場合、応答の内容として、「対象ジョブ履歴データなし」が返される。
なお、この問合せは、必ずしも受信したコネクションIDの全てについて行う必要はなく、ケース1、ケース3〜ケース5の応答を受け取った場合には、ジョブ履歴受信部601は、処理をS2103に進める。ケース2の応答を受け取った場合には、ジョブ履歴受信部601は、受け取ったサーバーIDを含むコネクションIDを選択し直して、そのサーバーIDに対応するジョブ履歴処理サーバー111に受信状況の問合せを行う。ケース6の応答を受け取った場合には、ジョブ履歴受信部601は、別のコネクションIDを選択し直して、そのサーバーIDに対応するジョブ履歴処理サーバー111に受信状況の問合せを行う。
S2103において、ジョブ履歴受信部601は、S2102で取得した不完全ジョブ履歴の受信状況と、部分補完ジョブ履歴データの受信状況とを、一つの不完全ジョブ履歴の受信状況として集約する。そして、ジョブ履歴受信部601は、集約した不完全ジョブ履歴の受信状況と、不完全ジョブ履歴集約先サーバーIDを含む送信未完のコネクションIDとをジョブ履歴送信用のコネクションIDに関連付け、ジョブ履歴処理用領域に保存する。
S2104において、ジョブ履歴受信部601は、S2103で保存した不完全ジョブ履歴の受信状況と送信未完のコネクションIDとをジョブ履歴送信部404に応答する。
以上、補完ジョブ履歴データが、不完全ジョブ履歴を保持するジョブ履歴処理サーバー111とは異なるジョブ履歴処理サーバー111に送信され、その送信がエラーとなった場合にも、どちらかのジョブ履歴処理サーバーに不完全ジョブ履歴を効率的に集約できる。これにより、その後の補完送信とジョブ履歴集約を効率的に行うことができる。また、補完送信が不可能となった場合の不完全ジョブ履歴としての扱いも容易に可能となる。
<その他の実施形態>
第二、第三の実施形態の負荷分散装置151において、アプリケーション層の情報ではなく、接続元のIPアドレスなどネットワーク層の情報に基づいて接続元を識別し、接続先を固定化するパーシステンス機能が用いられていても良い。このとき、MFP101の接続先のジョブ履歴処理サーバー111は、自動的に一つに固定化されるため、ジョブ履歴送信部404のS1221をスキップすることで、第二、第三の実施形態と同じジョブ履歴データの送信が実現可能である。
また、第三、第四の実施形態において、不完全ジョブ履歴を保持するジョブ履歴処理サーバー111が一時的にダウンしているような場合について、さらに考慮しても良い。このような状況では、補完ジョブ履歴データを受信したジョブ履歴処理サーバー111のジョブ履歴補完部605が不完全ジョブ履歴を保持するジョブ履歴処理サーバー111に一時的にアクセスできないことがあり得る。このとき、ジョブ履歴管理部603がジョブ履歴処理部602に不完全ジョブ履歴の処理を開始させるまでの時間よりも短い間隔で、ジョブ履歴補完部605が繰り返し不完全ジョブ履歴を保持するジョブ履歴処理サーバー111にアクセスするようにしても良い。これにより、不完全ジョブ履歴を保持するジョブ履歴処理サーバー111が一時的にダウンしているような場合にも、ジョブ履歴データを集約できる確率を高めることができる。
また、第三、第四の実施形態のジョブ履歴補完部605は、ジョブ履歴データの集約先のジョブ履歴処理サーバー111をどちらにするかの判断を、受信しているページ画像数に基づいて行っていたが、別の判断基準を用いても良い。例えば、ジョブ履歴処理サーバー111がジョブ履歴処理用領域に保持する(すなわちエクスポートが完了していない)ジョブ履歴の数を比較するようにしても良い。
また、第四の実施形態の負荷分散装置151において、パーシステンス機能がないか、使用されなくても良い。このとき、ジョブ履歴データは、複数のジョブ履歴処理サーバー111に分散されて送信されることになる。このため、ジョブ履歴処理サーバー111において、同時接続数管理をなくし、ジョブ履歴送信予約時には、単にコネクションIDを発行するものとする。
ジョブ履歴処理サーバー111は、ジョブ履歴データと共に受け取るジョブ履歴送信用のコネクションIDに含まれるサーバーIDが、自身のサーバーIDと異なる場合には、ジョブ履歴補完データの受信が途絶えたときと同様な動作を行う。すなわち、ジョブ履歴データを受信したジョブ履歴処理サーバー111は、ジョブ履歴送信用のコネクションIDを送信未完のコネクションIDとして扱い、受信の度に、ジョブ履歴補完部605のS1911〜S1913の処理を実行させる。これにより、コネクションIDを発行したジョブ履歴処理サーバー111に、ジョブ履歴データを集約させて処理することができる。
また、ジョブ履歴受信が途絶えた場合には、集約先のジョブ履歴処理サーバー111は、送信未完のコネクションIDに含まれるサーバーIDで識別可能である。このため、送信未完のコネクションIDを複数記憶することがない点が異なるが、第四の実施形態の受信状況問合せを利用することで、ジョブ履歴受信が途絶えた場合にも、不完全ジョブ履歴の受信状況を把握し、補完ジョブ履歴データを送信することができる。
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピューター(またはCPUやMPU等)がプログラムを読み出して実行する処理である。