(58)【調査した分野】(Int.Cl.,DB名)
前記プログラム取得手段により取得された前記他の画像処理装置が保持するプログラムを用いて、自装置が保持するプログラムを前記更新手段により更新される前の状態に復旧させる復旧手段をさらに備えたことを特徴とする請求項1に記載の画像処理装置。
【発明を実施するための形態】
【0009】
以下、添付図面を参照して、本発明の実施の形態について詳細に説明する。
<システム構成>
図1は、本実施の形態に係る画像処理システム1の概略構成の一例を示す図である。本実施の形態に係る画像処理システム1は、通信回線の一例としてのネットワーク30を介して接続された複数の画像処理装置10(本実施の形態では3台の画像処理装置)を備えている。即ち、本実施の形態に係る画像処理システム1は、ネットワーク30に接続された、第1の画像処理装置10A、第2の画像処理装置10B、第3の画像処理装置10Cを備える。第1の画像処理装置10A、第2の画像処理装置10B、第3の画像処理装置10Cは、同一の機能および構成を有している。
【0010】
画像処理装置10は、例えば、画像の読み取りを行う画像読取機能や、画像データを処理して例えば電子写真方式やインクジェット方式により記録媒体に画像を形成する画像形成機能等の各種機能を有する装置である。そして、画像処理装置10は、各種機能を実現するためのプログラムを保持しており、各種機能の拡張、変更または改良のために、随時プログラムの更新が行われる(以下、更新の対象である各種機能を実現するためのプログラムを、対象プログラムと称する)。
【0011】
対象プログラムの更新は、例えば、更新後に適用される対象プログラムが格納された外部装置からインターネット等のネットワークを介してダウンロードすることにより行われる場合もあれば、更新後に適用される対象プログラムが格納されたUSB(Universal Serial Bus)メモリ等の媒体を画像処理装置10に装着して媒体から取得することにより行われる場合もある。そして、詳しくは後述するが、画像処理装置10は、対象プログラムの更新を行った後、その更新の成否に応じた処理を行う。
ネットワーク30は、第1の画像処理装置10A、第2の画像処理装置10B、第3の画像処理装置10Cの間の情報通信に用いられる通信手段であり、例えば、LAN(Local Area Network)である。
【0012】
<画像処理装置のハードウェア構成>
次に、画像処理装置10のハードウェア構成について説明する。
図2は、本実施の形態に係る画像処理装置10のハードウェア構成例を示す図である。
画像処理装置10は、演算手段であるCPU(Central Processing Unit)11と、記憶手段であるROM(Read Only Memory)12、揮発性RAM(Random Access Memory)13、不揮発性RAM(Random Access Memory)14、磁気ディスク装置(HDD:Hard Disk Drive)15とを備える。
【0013】
CPU11は対象プログラムを実行し、画像処理装置10の各種機能を実現する。対象プログラムはROM12に格納されており、CPU11はROM12から対象プログラムを読み出して、作業用メモリ等として用いられる揮発性RAM13にロードして実行することにより、画像形成機能等の各種機能が実現される。揮発性RAM13は、電源が供給されなければ記憶している情報を保持できない揮発性メモリにより構成される。
【0014】
また、不揮発性RAM14には、例えば、画像処理装置10における画像形成機能等の各種機能を実現する各機能部やその機能部を構成する部品等の設定に関する情報(以下、設定情報と称することがある)が格納される。不揮発性RAM14は、電源が供給されなくても記憶している情報を保持することが可能な不揮発性メモリにより構成される。また、磁気ディスク装置15には、例えば、外部から受信するプリント画像データやファクシミリ画像データ等の各種データが格納される。
【0015】
さらに、画像処理装置10は、画像読取部16と画像形成部17と通信I/F18とを備える。
画像読取部16は、紙等の記録媒体に記録された画像を読み取る。ここで、画像読取部16は、例えばスキャナであり、光源から原稿に照射した光に対する反射光をレンズで縮小してCCD(Charge Coupled Devices)で受光するCCD方式や、LED光源から原稿に順に照射した光に対する反射光をCIS(Contact Image Sensor)で受光するCIS方式のものを用いるとよい。
【0016】
画像形成部17は、記録媒体に画像を形成する。ここで、画像形成部17は、例えばプリンタであり、感光体に付着させたトナーを記録媒体に転写して画像を形成する電子写真方式や、インクを記録媒体上に吐出して画像を形成するインクジェット方式のものを用いるとよい。
通信I/F18は、外部との通信を行うためのインタフェースである。
【0017】
<画像処理装置の機能構成>
次に、画像処理装置10の機能構成について説明する。
図3は、本実施の形態に係る画像処理装置10の機能構成例を示したブロック図である。
【0018】
画像処理装置10は、対象プログラムの更新を行う更新実行部21と、対象プログラムの更新の成否を判定する成否判定部22と、他装置(本実施の形態に係る画像処理システム1においては、自装置が第1の画像処理装置10Aであれば、他装置は第2の画像処理装置10B、または第3の画像処理装置10Cとなる)の機種および他装置が保持する対象プログラムのバージョンの情報を受信する情報送受信部23とを備える。本実施の形態では、プログラムの版の一例として、対象プログラムのバージョンを定めている。
【0019】
また、画像処理装置10は、他装置との間で機種や対象プログラムのバージョンを比較する比較部24と、他装置が保持する対象プログラムを受信し、自装置が保持する対象プログラムを他装置へ送信するプログラム送受信部25と、対象プログラムの更新に関する情報を記憶する記憶部26とを備える。
【0020】
そして、更新実行部21、成否判定部22、情報送受信部23、比較部24、プログラム送受信部25は、例えば、
図2に示したハードウェア構成におけるCPU11により実現される。より具体的には、本実施の形態に係る画像処理装置10の機能を実現するプログラムが、例えば、ROM12に格納され、このプログラムをCPU11が揮発性RAM13にロードして実行することにより、上記の更新実行部21、成否判定部22、情報送受信部23、比較部24、プログラム送受信部25の各機能が実現される。
【0021】
また、記憶部26は、例えば、
図2に示したROM12、揮発性RAM13、不揮発性RAM14、HDD15により実現される。また、情報送受信部23は、例えば、
図2に示した通信I/F18を介して他装置から情報を受信し、プログラム送受信部25は、例えば、通信I/F18を介して他装置から対象プログラムを受信するとともに自装置の対象プログラムを他装置へ送信する。
【0022】
更新手段の一例としての更新実行部21は、外部から対象プログラムの更新処理命令を受け付けると、自装置が保持する対象プログラムの更新を行う。ここで、更新後に適用される対象プログラム(以下、更新後プログラムと称することがある)は、例えば、外部装置等に記憶されている。そして、更新実行部21は、外部装置等から更新後プログラムを取得して、更新前の対象プログラム(以下、更新前プログラムと称することがある)を更新後プログラムに置き換えることで、対象プログラムの更新を行う。
【0023】
また、更新実行部21は、対象プログラムの更新に伴い、設定情報も更新する。更新後に適用される設定情報(以下、更新後情報と称することがある)は、更新後プログラムと同様に、例えば外部装置等に記憶されている。そして、更新実行部21は、外部装置等から更新後情報を取得して、更新前の設定情報を更新後情報に置き換えることで、設定情報の更新を行う。なお、更新後プログラムおよび更新後情報に置き換えられた後、自装置の再起動が行われる。
【0024】
また、更新実行部21は、対象プログラムの更新において、更新の成否が確定していない状態であることを示すフラグ(以下、更新フラグと称することがある)を設定する。そして、更新実行部21は、成否判定部22から更新が成功したことの通知を受けると、更新フラグを削除する。
【0025】
また、更新実行部21は、成否判定部22から、エラーが発生した更新処理の回数(以下、エラー更新回数と称することがある)が予め定められた閾値に到達していない旨の通知を受けると、対象プログラムの更新を行う。
さらに、復旧手段の一例としての更新実行部21は、プログラム送受信部25から、他装置が保持する対象プログラムおよび設定情報を受信すると、受信した他装置の対象プログラムおよび設定情報を用いて、自装置が保持する対象プログラムおよび設定情報を更新される前の状態に復旧させる。
【0026】
成否判定手段、履歴取得手段の一例としての成否判定部22は、更新実行部21による対象プログラムの更新の成否を判定する。ここで、成否判定部22は、自装置が再起動された際、更新フラグが設定されていれば、対象プログラムの更新が行われたがその成否が確定していない状態であると判断し、更新の成否を判定する。
【0027】
成否の判定において、成否判定部22は、記憶部26に記憶された更新前の装置ログと更新後の装置ログとを比較して、更新後の装置ログに記載されたエラーが更新前の装置ログに記載されているかに基づいて判定を行う。具体的には、成否判定部22は、更新後の装置ログに更新前の装置ログには存在しない特定のエラーが記載されているか否かを判断する。ここで、装置ログとは、装置が実行する処理内容が記載された履歴情報である。本実施の形態では、処理内容の履歴の一例として、装置ログを定めている。装置ログの詳細については、
図4(a)、(b)で説明する。
【0028】
また、特定のエラーとは、対象プログラムの更新が正常に行われなかった際に発生するエラーであり、例えば、CPU11とROM12との間の通信障害等、
図2に示す各機能ブロック間における通信障害のエラーや、画像形成部17が正常に起動しないことによるエラー等をいう。また、例えば、用紙切れエラーや用紙詰まりエラーのように、画像処理装置10が正常な状態で使用されているときに生じるエラーは、特定のエラーには該当しない。特定のエラーは、画像処理装置10の初期設定として予め記憶部26に記憶されていても良いし、ユーザによる操作により記憶部26に記憶されることとしても良い。
【0029】
更新後の装置ログに更新前の装置ログには存在しない特定のエラーが記載されていなければ、成否判定部22は、プログラムの更新が成功したと判定する。そして、成否判定部22は、更新が成功したことを更新実行部21、情報送受信部23および比較部24に通知する。
【0030】
一方、更新後の装置ログに更新前の装置ログには存在しない特定のエラーが記載されていれば、成否判定部22は、エラー更新回数を1加算し、加算後のエラー更新回数が予め定められた閾値に到達したか否かを判定する。エラー更新回数が予め定められた閾値に到達していれば、成否判定部22は、プログラムの更新が失敗したと判定する。そして、成否判定部22は、更新が失敗したことを情報送受信部23および比較部24に通知する。エラー更新回数が予め定められた閾値に到達していなければ、成否判定部22は、閾値に到達していない旨を更新実行部21に通知する。
【0031】
第2情報取得手段の一例としての情報送受信部23は、成否判定部22から対象プログラムの更新の成否に関する通知を受けると、ネットワーク30を介して自装置に接続された他装置から、機種、および第2情報の一例としての他装置が保持する対象プログラムのバージョン情報を受信する。ここで、情報送受信部23は、ネットワーク30を介して接続された全ての他装置に対して、機種および対象プログラムのバージョン情報を要求する。そして、情報送受信部23は、他装置から送信された機種および対象プログラムのバージョン情報を受信し、受信した機種およびバージョン情報を比較部24に送信する。
【0032】
第1情報取得手段、版判定手段の一例としての比較部24は、成否判定部22から更新が失敗したことの通知を受けると、記憶部26から自装置の機種、および第1情報の一例としての更新前プログラムのバージョン情報を取得する。また、比較部24は、情報送受信部23による送信処理に基づき、他装置の機種および他装置が保持する対象プログラムのバージョン情報を取得する。そして、比較部24は、ネットワーク30を介して接続された他装置を対象として、自装置の機種と他装置の機種とが同一であり、さらに、自装置の更新前プログラムのバージョンと他装置が保持する対象プログラムのバージョンとが同一であるか否かを判定する。自装置の機種と他装置の機種とが同一であり、更新前プログラムのバージョンと他装置が保持するプログラムのバージョンとが同一である場合(以下、このような他装置を第1対象装置と称することがある)、比較部24は第1対象装置の情報をプログラム送受信部25に送信する。
【0033】
また、比較部24は、成否判定部22から更新が成功したことの通知を受けると、記憶部26から自装置の機種、および第1情報の一例としての更新後プログラムのバージョン情報を取得する。また、比較部24は、情報送受信部23による送信処理に基づき、他装置の機種および他装置が保持する対象プログラムのバージョン情報を取得する。そして、比較部24は、ネットワーク30を介して接続された他装置を対象として、自装置の機種と他装置の機種とが同一であり、さらに、自装置の更新後プログラムのバージョンの方が、他装置が保持する対象プログラムのバージョンより新しいか否かを判定する。自装置の機種と他装置の機種とが同一であり、更新後プログラムのバージョンの方が、他装置が保持する対象プログラムのバージョンより新しい場合(以下、このような他装置を第2対象装置と称することがある)、比較部24は第2対象装置の情報をプログラム送受信部25に送信する。
【0034】
プログラム取得手段の一例としてのプログラム送受信部25は、成否判定部22から更新が失敗したことの通知を受け、さらに比較部24から第1対象装置の情報を受信すると、第1対象装置に対して更新前プログラムと同一バージョンの対象プログラム、および第1対象装置の設定情報を要求する。そして、プログラム送受信部25は、第1対象装置から第1対象装置が保持する対象プログラムおよび設定情報を受信すると、受信した対象プログラムおよび設定情報を更新実行部21に送信する。
【0035】
また、送信手段の一例としてのプログラム送受信部25は、成否判定部22から更新が成功したことの通知を受け、さらに比較部24から第2対象装置の情報を受信すると、第2対象装置に更新後プログラムを送信することを通知する。そして、プログラム送受信部25は、第2対象装置から応答を受けると、記憶部26から更新後プログラムおよび自装置の設定情報を取得して第2対象装置に送信する。
【0036】
記憶部26は、対象プログラム、自装置の機種および対象プログラムのバージョン情報等の対象プログラムの更新に関する情報を記憶する。対象プログラムとしては、対象プログラムの更新前には更新前プログラムが記憶されており、更新後には更新後プログラムが記憶される。また、バージョン情報としては、更新前プログラムおよび更新後プログラムのバージョン情報が記憶される。さらに、記憶部26は、成否判定部22による成否の判定に用いられる特定のエラーの一覧、更新前および更新後の装置ログを記憶する。
【0037】
以上のように、画像処理装置10は、対象プログラムの更新の成否を判定し、その成否に応じた処理を行う。そして、例えば、自装置が第1の画像処理装置10A、他装置が第2の画像処理装置10B、第3の画像処理装置10Cで、3台の画像処理装置の機種、対象プログラムのバージョンが同一である場合を例とすると、自装置である第1の画像処理装置10Aの対象プログラムの更新が失敗したと判定された場合、第1の画像処理装置10Aは第2の画像処理装置10Bから復旧用の対象プログラムを取得して、更新前の対象プログラムに復旧させる。かかる場合、第2の画像処理装置10Bは他の画像処理装置の一例として機能する。また、第2の画像処理装置10Bの情報送受信部23が第1送信手段の一例として機能し、第2の画像処理装置10Bのプログラム送受信部25が第2送信手段の一例として機能する。
また、自装置である第1の画像処理装置10Aの対象プログラムの更新が成功したと判定された場合、第1の画像処理装置10Aは第3の画像処理装置10Cに更新後プログラムを送信する。かかる場合、第3の画像処理装置10Cは別の画像処理装置の一例として機能する。
【0038】
<更新前および更新後の装置ログ>
次に、成否判定部22による成否の判定に用いられる装置ログについて説明する。
図4(a)は、更新前の装置ログを説明するための図である。
図4(b)は、更新後の装置ログを説明するための図である。
【0039】
図4(a)に示す装置ログには、対象プログラムの更新前の時点で画像処理装置10が過去に実行した処理として、「00123 PowerUP」「00234 Print」「00535 ModeChange」等の処理が記載されている。例えば、「00123 PowerUP」において、「00123」は処理内容ごとに付与される番号を表しており、「PowerUP」は電源が供給されて装置の起動が開始された処理を表している。
【0040】
図4(b)に示す装置ログには、対象プログラムの更新後の時点で画像処理装置10が過去に実行した処理として、
図4(a)に示す装置ログに記載されたものに加えて、エラーを表す「00225 SystemLogicError」が記載されている。即ち、このエラーは対象プログラムの更新において発生したものといえる。また、成否判定部22は、記憶部26に記憶された特定のエラー一覧に基づき、発生したエラーが特定のエラーに該当するか否かを判断するが、「00225 SystemLogicError」は特定のエラーに該当する。そのため、この場合、成否判定部22は、エラー更新回数を1加算し、加算後のエラー更新回数が予め定められた閾値に到達したか否かを判定することとなる。
【0041】
<更新および更新の成否に応じた処理手順>
次に、画像処理装置10が対象プログラムの更新を行い、更新の成否に応じた処理を行う手順について説明する。
図5は、本実施の形態に係る画像処理装置10が対象プログラムの更新および更新の成否に応じた処理を行う手順の一例を示したフローチャートである。
【0042】
まず、更新実行部21は、外部から対象プログラムの更新処理命令を受け付けたか否かを判断する(ステップ101)。更新実行部21が更新処理命令を受け付けたと判断しない場合(ステップ101でNo)、本処理フローは終了する。一方、更新実行部21が更新処理命令を受け付けたと判断した場合(ステップ101でYes)、更新実行部21は更新前の装置ログを記憶部26に記憶させる(ステップ102)。次に、更新実行部21は、更新フラグを設定(ON)する(ステップ103)。そして、更新実行部21は、対象プログラムの更新を行う(ステップ104)。ここで、更新実行部21は、更新前プログラムを更新後プログラムに置き換えるとともに、更新前の設定情報を更新後情報に置き換える処理を行う。その後、画像処理装置10の再起動処理が行われる(ステップ105)。
【0043】
ここで、画像処理装置10の再起動処理について説明する。
図6は、本実施の形態に係る画像処理装置10における再起動処理の手順の一例を示したフローチャートである。この再起動処理では、まず、画像処理装置10が動作するために必要となる起動処理が行われる(ステップ201)。次に、成否判定部22は、フラグが設定(ON)されているか否かを判定する(ステップ202)。
【0044】
成否判定部22が、フラグが設定(ON)されていると判定した場合(ステップ202でYes)、対象プログラムの更新が行われたがその成否が確定していない状態であるため、後述する
図5のステップ106に移行する。一方、成否判定部22が、フラグが設定(ON)されていないと判定した場合(ステップ202でNo)、対象プログラムの更新の成否が確定していない状態ではないため、更新の成否判定は行われずに通常通りの再起動となり、処理は終了する。
以上のようにして、画像処理装置10が再起動された場合、フラグの設定有無に応じて更新の成否判定を行なうか否かが決められる。
【0045】
次に、
図5のステップ105で再起動処理が行われた後、更新実行部21は、更新後の装置ログを記憶部26に記憶させる(ステップ106)。そして、成否判定部22は、更新後の装置ログに特定のエラーが記載されているか否かを判定する(ステップ107)。ここで、成否判定部22は、記憶部26に記憶された更新前の装置ログと更新後の装置ログとを比較して、更新後の装置ログに更新前の装置ログには存在しない特定のエラーが記載されているか否かを判断する。成否判定部22は、更新後の装置ログに更新前の装置ログには存在しない特定のエラーが記載されていると判断した場合(ステップ107でYes)、エラー更新回数を1加算する(ステップ108)。そして、成否判定部22は、加算後のエラー更新回数が予め定められた閾値に到達したか否かを判定する(ステップ109)。
【0046】
成否判定部22は、エラー更新回数が予め定められた閾値に到達したと判定すると(ステップ109でYes)、プログラムの更新が失敗したと判定する。そして、成否判定部22は、更新が失敗したことを情報送受信部23および比較部24に通知し、続けて更新失敗処理が行われ(ステップ110)、本処理フローは終了する。更新失敗処理については、
図7で説明する。
一方、ステップ109で否定の判断(No)がされた場合、即ち、成否判定部22は、エラー更新回数が予め定められた閾値に到達していないと判定すると、閾値に到達していない旨を更新実行部21に通知する。そして、ステップ104に移行し、再度、更新処理が行われる。
【0047】
また、ステップ107で否定の判断(No)がされた場合、即ち、成否判定部22は、更新後の装置ログに更新前の装置ログには存在しない特定のエラーが記載されていないと判断した場合、プログラムの更新が成功したと判定する。そして、成否判定部22は、更新が成功したことを更新実行部21、情報送受信部23および比較部24に通知する。更新実行部21は、成否判定部22から更新が成功したことの通知を受けると、更新フラグを削除(OFF)し(ステップ111)、続けて更新成功処理が行われ(ステップ112)、本処理フローは終了する。更新成功処理については、
図8で説明する。
【0048】
<更新失敗処理の処理手順>
次に、更新失敗処理について説明する。
図7は、本実施の形態に係る画像処理装置10における更新失敗処理の手順の一例を示したフローチャートである。
この更新失敗処理において、まず、情報送受信部23は、成否判定部22から更新が失敗したことの通知を受けると、他装置の機種、および他装置が保持する対象プログラムのバージョン情報を取得する(ステップ301)。次に、情報送受信部23は、取得した他装置の機種およびバージョン情報を比較部24に送信する。
【0049】
比較部24は、成否判定部22から更新が失敗したことの通知を受けて、記憶部26から自装置の機種および更新前プログラムのバージョン情報を取得する。また、比較部24は、ステップ301の情報送受信部23による送信処理に基づき、他装置の機種および他装置が保持する対象プログラムのバージョン情報を取得する。そして、比較部24は、自装置の機種と他装置の機種とが同一であり、さらに、自装置の更新前プログラムのバージョンと他装置が保持する対象プログラムのバージョンとが同一であるか否かを判定する(ステップ302)。比較部24は、自装置と同一の機種であり、更新前プログラムのバージョンと同一バージョンのプログラムを保持する第1対象装置が存在すると判定した場合(ステップ302でYes)、第1対象装置の情報をプログラム送受信部25に送信する。
【0050】
次に、プログラム送受信部25は、成否判定部22から更新が失敗したことの通知を受け、さらに比較部24から第1対象装置の情報を受信すると、第1対象装置から更新前プログラムと同一バージョンの対象プログラム、および第1対象装置の設定情報を取得する(ステップ303)。そして、プログラム送受信部25は、第1対象装置から取得した対象プログラムおよび設定情報を更新実行部21に送信する。更新実行部21は、第1対象装置の対象プログラムおよび設定情報を用いて、更新前の対象プログラムおよび設定情報に復旧させる(ステップ304)。復旧が完了すると、更新実行部21は更新フラグを削除(OFF)し(ステップ305)、本処理フローは終了する。また、ステップ302で否定の判断(No)がされた場合、即ち、比較部24が第1対象装置に該当する装置が存在しないと判定した場合、本処理フローは終了する。
【0051】
以上のようにして、対象プログラムの更新が失敗した場合、画像処理装置10は、ネットワーク30を介して接続された他装置のうち自装置と機種が同一の装置から、更新前プログラムと同一バージョンの対象プログラムを取得する。そして、画像処理装置10は取得した対象プログラムを用いて更新前の状態に復旧させる。このように、画像処理装置10は、更新の事前に更新前プログラムを記憶部26の別の領域等に退避させないため、例えば、更新前プログラムを退避させる構成と比較して、対象プログラムの更新において要する記憶領域が削減される。また、画像処理装置10は、例えば、更新前プログラムを退避させる構成と比較して、更新前プログラムを退避させるための時間がかからずに済み、更新において要する処理時間が短縮される。
【0052】
また、画像処理装置10は、更新前および更新後の装置ログに基づいて更新時における特定のエラーの発生有無を判断する。そのため、画像処理装置10は、対象プログラムの更新前から発生しているエラーを更新時のエラーと誤判定して更新前の対象プログラムに復旧してしまうことを抑制する。また、更新時に発生した特定のエラーの内容から、更新が正常に実行されなかった原因が容易に特定される。
【0053】
<更新成功処理の処理手順>
次に、更新成功処理について説明する。
図8は、本実施の形態に係る画像処理装置10における更新成功処理の手順の一例を示したフローチャートである。
この更新成功処理において、まず、情報送受信部23は、成否判定部22から更新が成功したことの通知を受けると、他装置の機種、および他装置が保持する対象プログラムのバージョン情報を取得する(ステップ401)。次に、情報送受信部23は、取得した他装置の機種およびバージョン情報を比較部24に送信する。
【0054】
比較部24は、成否判定部22から更新が成功したことの通知を受けて、記憶部26から自装置の機種および更新前プログラムのバージョン情報を取得する。また、比較部24は、ステップ401の情報送受信部23による送信処理に基づき、他装置の機種および他装置が保持する対象プログラムのバージョン情報を取得する。そして、比較部24は、自装置の機種と他装置の機種とが同一であり、さらに、自装置の更新後プログラムのバージョンの方が、他装置が保持する対象プログラムのバージョンより新しいか否かを判定する(ステップ402)。比較部24は、自装置と同一の機種であり、更新後プログラムより古いバージョンの対象プログラムを保持する第2対象装置が存在すると判定した場合(ステップ402でYes)、第2対象装置の情報をプログラム送受信部25に送信する。
【0055】
次に、プログラム送受信部25は、成否判定部22から更新が成功したことの通知を受け、さらに比較部24から第2対象装置の情報を受信すると、記憶部26から更新後プログラムおよび自装置の設定情報を取得する。そして、プログラム送受信部25は、更新後プログラムおよび設定情報を第2対象装置に送信し(ステップ403)、本処理フローは終了する。第2対象装置では、送信された対象プログラムおよび設定情報を用いて、対象プログラムおよび設定情報の更新が行われる。また、ステップ402で否定の判断(No)がされた場合、即ち、比較部24が第2対象装置に該当する装置が存在しないと判定した場合、本処理フローは終了する。
【0056】
以上のようにして、対象プログラムの更新が成功した場合、画像処理装置10は、ネットワーク30を介して接続された他装置のうち機種が同一の装置で、更新後プログラムより古い対象プログラムを保持する装置に対して、更新後プログラムを送信する。そして、他装置は、更新に成功した実績のある対象プログラムを用いて更新を行うため、更新時のエラーが低減される。
【0057】
<更新の成否を判定する手順の他の例>
本実施の形態では、対象プログラムの更新の成否を判定する手順の例として、成否判定部22が更新前および更新後の装置ログに基づいて判定する手順について説明した。次に、本実施の形態において更新の成否を判定する手順の他の例について説明する。
【0058】
成否判定部22は、更新時に発生したエラーが、更新が正常に実行されなかった際に発生するエラーとして予め定められたエラーと一致するか否かにより、更新の成否を判定する。更新時にエラーが発生しなかった場合、または更新時に発生したエラーが予め定められたエラーと一致しない場合、成否判定部22は、対象プログラムの更新が成功したと判定する。一方、更新時に発生したエラーが予め定められたエラーと一致する場合、
図5のステップ108乃至110と同様に、成否判定部22は、エラー更新回数を1加算し、加算後のエラー更新回数が予め定められた閾値に到達していれば対象プログラムの更新が失敗したと判定する。
【0059】
ここで、予め定められたエラーとしては、例えば上記の特定のエラーと同様に、CPU11とROM12との間の通信障害等、
図2に示す各機能ブロック間における通信障害のエラーや、画像形成部17が正常に起動しないことによるエラー等が挙げられる。また、予め定められたエラーではないが更新時に発生する可能性のあるエラーとしては、例えば、用紙切れエラーや用紙詰まりエラーのように画像処理装置10が正常な状態で使用されているときに生じるエラー等が挙げられる。
【0060】
図9は、本実施の形態に係る更新の成否判定のために予め定められたエラーの一例について説明するための図である。
図9には、予め定められたエラーとして、1番から4番までの4つのエラーが表されている。そして、各エラーには、「サブシステム」および「モジュール」の番号で表されるエラーコードが定められている。ここで、「サブシステム」は、画像処理装置10を構成する画像読取部16や画像形成部17等の各機能部に割り当てられた番号であり、「モジュール」は、各機能部の部品ごとに割り当てられた番号である。これらの番号により、画像処理装置10のどの部分における障害が要因で更新が正常に実行されずにエラーが発生したかが判断される。
【0061】
例えば、1行目のエラーは、サブシステムが32、モジュールが326のエラーであり、サブシステムが32を示す機能部のうち、モジュールが326を示す部品の障害により発生するエラーを表している。また、2行目のエラーは、サブシステムが40、モジュールが310のエラーであり、サブシステムが40を示す機能部のうち、モジュールが310を示す部品の障害により発生するエラーを表している。そして、更新時に発生したエラーのエラーコードが、例えば
図9に示す予め定められたエラーのエラーコードと一致すれば、成否判定部22は、更新したことで、エラーコードが示す部品において何らかの障害が発生して、更新が正常に実行されなかったと判断し、エラー更新回数を1加算する処理を行う。
【0062】
図10は、画像処理装置10が本例による更新の成否判定により、対象プログラムの更新および更新の成否に応じた処理を行う手順の一例を示したフローチャートである。
まず、更新が正常に実行されなかった際に発生するエラーのエラーコードである成否判定用エラーコードが記憶部26に記憶される(ステップ501)。このエラーコードは、画像処理装置10の初期設定として予め記憶部26に記憶されていても良いし、ユーザによる操作により記憶部26に記憶されることとしても良い。
【0063】
次に、更新実行部21は、外部から対象プログラムの更新処理命令を受け付けたか否かを判断する(ステップ502)。更新実行部21が更新処理命令を受け付けたと判断しない場合(ステップ502でNo)、本処理フローは終了する。一方、更新実行部21が更新処理命令を受け付けたと判断した場合(ステップ502でYes)、ステップ503乃至505の処理が行われる。このステップ503乃至505の処理は、
図5に示すステップ103乃至105の処理と同様であるため、説明を省略する。
【0064】
次に、ステップ505で再起動処理が行われた後、成否判定部22は、更新時に発生したエラーのエラーコードが、記憶部26に記憶された予め定められたエラーのエラーコードと一致するか否かを判定する(ステップ506)。成否判定部22は、更新時に発生したエラーのエラーコードが予め定められたエラーのエラーコードと一致すると判定した場合(ステップ506でYes)、
図5に示すステップ108と同様にエラー更新回数を1加算する(ステップ507)。ステップ508及び509の処理は、
図5に示すステップ109及び110の処理と同様であるため、説明を省略する。
【0065】
一方、ステップ506で否定の判断(No)がされた場合、即ち、成否判定部22は、更新時にエラーが発生しなかった、または更新時に発生したエラーのエラーコードが予め定められたエラーのエラーコードと一致しないと判定した場合、対象プログラムの更新が成功したと判定する。ステップ510及び511の処理は、
図5に示すステップ111及び112の処理と同様であるため、説明を省略する。
【0066】
以上のようにして、画像処理装置10は、更新時における予め定められたエラーの発生有無を判断する。そのため、画像処理装置10は、対象プログラムの更新前から発生しているエラーを更新時のエラーと誤判定して更新前の対象プログラムに復旧してしまうことを抑制する。また、更新時に発生した予め定められたエラーの内容から、更新が正常に実行されなかった原因が容易に特定される。
【0067】
<更新失敗処理の他の例>
本実施の形態では、更新失敗処理の例として、更新実行部21が他装置の対象プログラムおよび設定情報の両方を用いて一度に更新前の対象プログラムおよび設定情報に復旧させる例について説明した。次に、本実施の形態における更新失敗処理の他の例について説明する。本例による手順では、更新実行部21は、まず設定情報の復旧処理を行う。そして、設定情報の復旧によりエラーが発生した場合、次に、更新実行部21は、設定情報に加えて対象プログラムの復旧処理を行う。
【0068】
図11は、本実施の形態に係る画像処理装置10における更新失敗処理の手順の他の例を示したフローチャートである。
まず、この更新失敗処理において、ステップ601乃至603の処理は、
図7に示すステップ301乃至303の処理と同様であるため、説明を省略する。そして、ステップ603で、プログラム送受信部25が更新前プログラムと同一バージョンの対象プログラムおよび第1対象装置の設定情報を取得すると、更新実行部21は、まず第1対象装置の設定情報を用いて更新前の設定情報に復旧させる(ステップ604)。その後、画像処理装置10の再起動処理が行われる(ステップ605)。
【0069】
次に、
図6に示すステップ201の起動処理が行われ、ステップ202で成否判定部22はフラグが設定(ON)されているか否かを判定する。ここでは、更新(復旧)が行われたがその成否が確定していない状態であるため、成否判定部22はフラグが設定されていると判定し(ステップ202でYes)、
図11のステップ606に移行する。次に、成否判定部22は、更新前の設定情報への復旧処理の成否を判定する(ステップ606)。ここでの判定については、例えば、更新の成否を判定する手順の例として上述した、装置ログに基づいて判定する手順や予め定められたエラーと一致するか否かにより判定する手順等と同様の手順により行われることとする。
【0070】
そして、成否判定部22は、エラー等の発生により復旧が失敗したと判定した場合(ステップ606でNo)、次に、更新実行部21は、第1対象装置の設定情報および対象プログラムを用いて、更新前の対象プログラムおよび設定情報に復旧させる(ステップ607)。このステップ607の処理は、
図7のステップ304の処理と同様である。そして、復旧が完了すると、更新実行部21は更新フラグを削除(OFF)し(ステップ608)、本処理フローは終了する。
【0071】
一方、ステップ606で肯定の判断(Yes)がされた場合、即ち、成否判定部22は復旧が成功したと判定した場合、更新実行部21は更新フラグを削除(OFF)し、本処理フローは終了する。ここでは、設定情報を更新前の状態に復旧させることでエラーが発生せずに復旧が成功している。そのため、更新処理において、設定情報の更新に障害があったために更新が失敗したといえる。即ち、対象プログラムは更新前プログラムのままであり、設定情報を更新前の状態に戻せば、画像処理装置10は更新前の状態に復旧することとなる。
【0072】
以上のようにして、対象プログラムの更新が失敗した場合、画像処理装置10は、まず設定情報を復旧し、さらに復旧が失敗した場合に設定情報および対象プログラムの復旧を行う。画像処理装置10がこのように段階的な復旧を行うことにより、更新処理において、設定情報の更新に障害があったのか、対象プログラム自体の更新に障害があったのかが明確になる。そして、画像処理装置10は、障害が発生した箇所についてのみ更新前の状態に戻せば、正常に復旧することとなる。
【0073】
また、
図11のステップ604において、更新実行部21は一度に更新前の設定情報に復旧させることとしたが、これに限られるものではない。設定情報は、画像処理装置10を構成する各機能部やその部品ごとに設定値を定めるものである。そのため、例えば、更新実行部21は、設定情報から復旧に用いる設定値を選択し、選択した設定値による復旧が失敗するとさらに設定値を選択して復旧を行う、というように段階的な復旧を行うこととしても良い。このように機能部やその部品ごとに段階的に復旧させることで、どの部分の更新において障害が発生したために対象プログラムの更新が正常に実行されなかったのかが明確になる。そして、画像処理装置10は、障害が発生した箇所についてのみ更新前の状態に戻せば、正常に復旧することとなる。
【0074】
さらに、
図11のステップ607において、更新実行部21は、設定情報および対象プログラムの復旧処理を行ったが、この時点で設定情報は復旧されているため、ここで対象プログラムのみについて復旧処理を行うこととしても良い。
【0075】
また、本実施の形態において、画像処理装置10は、エラー更新回数と予め定められた閾値とを比較して更新の成否を判定したが、これに限られるものではない。例えば、画像処理装置10は、閾値を定めずに、更新後の装置ログに更新前の装置ログには存在しない特定のエラーが記載されていれば更新の失敗と判定することとしても良い。
【0076】
また、本実施の形態において、画像処理装置10は、ネットワーク30を介して接続された全ての他装置から機種および対象プログラムのバージョン情報を取得したが、これに限られるものではない。例えば、画像処理装置10は、予め定められた複数の他装置から、機種および対象プログラムのバージョン情報を取得することとしても良い。また、例えば、画像処理装置10は、予め定められた他装置の順番に従って機種等の情報を取得し、取得する都度、自装置と同一の機種で同一のバージョンの対象プログラムを保持する装置であるか否かを判定することとしても良い。
【0077】
また、本実施の形態において、自装置を第1の画像処理装置10A、他装置を第2の画像処理装置10B、第3の画像処理装置10Cとし、更新が失敗したと判定された場合、自装置は第2の画像処理装置10Bから対象プログラムを取得し、更新が成功したと判定された場合、自装置は第3の画像処理装置10Cへ対象プログラムを送信する例を説明したが、これに限られるものではない。例えば、更新が失敗したと判定された場合に自装置が対象プログラムを取得する他装置と、更新が成功したと判定された場合に自装置が対象プログラムを送信する他装置とは、同じ装置(例えば、第2の画像処理装置10B)であっても良い。また、更新が成功したと判定された場合、自装置は複数の他装置へ(第2の画像処理装置10Bと第3の画像処理装置10Cの両方)へ対象プログラムを送信することとしても良い。さらに、本実施の形態に係る画像処理システム1は3台の画像処理装置を備える構成として説明したが、2台以上の画像処理装置を備える構成であれば何台の画像処理装置を備えても良い。