(57)【要約】      （修正有）【課題】拡張プログラム等をバージョンアップすることなく不具合に対策を施すことができる情報処理装置、情報処理方法及びプログラムを提供する。【解決手段】情報処理装置は、拡張プログラム135と、イベント実行部135cと、イベント記録部136bと、パターン判定部136cと、復旧制御部135dとを備える。イベント実行部135cは、受信したイベントに係る処理を実行する。イベント記録部136bは、受信したイベントの種別を識別するイベントＩＤを、実行した順序で記録する。パターン判定部136cは、イベント記録部136bが記憶したイベントＩＤの順序と、予め設定されたイベントＩＤの順序とが適合するか否かを判定する。復旧制御部135dは、パターン判定部136cの判定結果に応じて、拡張プログラム135を復旧させる。【選択図】図４
2016177450.tif 000002
【特許請求の範囲】
【請求項１】
処理を実行する実行手段と、
前記実行手段が実行した処理の種別を識別する識別情報を、実行した順序で記録する記録手段と、
前記記録手段が記憶した前記識別情報の順序と、予め設定された前記識別情報の順序とが適合するか否かを判定する判定手段と、
前記判定手段の判定結果に応じて、前記実行手段を復旧させる復旧手段と、
を備える情報処理装置。
【請求項２】
前記復旧手段は、前記実行手段を再起動することで復旧させる、
請求項１に記載の情報処理装置。
【請求項３】
前記復旧手段は、前記実行手段を復旧する前に、前記実行手段に不具合が発生しているかを試験する処理に対する応答が所定の時間内にあった場合には、前記実行手段を復旧しない、
請求項１または２に記載の情報処理装置。
【請求項４】
前記実行手段を復旧する前に、前記実行手段を復旧するために、機能の全部又は一部を制限することを通知する通知手段を更に備える、
請求項１乃至３の何れか１項に記載の情報処理装置。
【請求項５】
前記通知手段から前記実行手段を復旧することを通知された場合に、前記実行手段が復旧中であることを表示させる表示部を更に備える、
請求項４に記載の情報処理装置。
【請求項６】
情報処理装置を操作する操作部を更に備え、
前記操作部は、前記通知手段から前記実行手段を復旧することを通知された場合に、操作を受け付けない、
請求項４または５に記載の情報処理装置。
【請求項７】
前記判定手段は、前記記録手段が記憶した前記識別情報の順序と、予め設定された不具合が発生する前記識別情報の順序とが適合するか否かを判定し、
前記復旧手段は、前記判定手段が適合すると判定した場合に、前記実行手段を復旧させる、
請求項１乃至６の何れか１項に記載の情報処理装置。
【請求項８】
前記判定手段は、前記記録手段が記憶した前記識別情報の順序と、予め設定された不具合が発生しない前記識別情報の順序とが適合するか否かを判定し、
前記復旧手段は、前記判定手段が不適合であると判定した場合に、前記実行手段を復旧させる、
請求項１乃至７の何れか１項に記載の情報処理装置。
【請求項９】
処理を実行する実行ステップと、
前記実行ステップが実行した処理の種別を識別する識別情報を、実行した順序で記録する記録ステップと、
前記記録ステップが記憶した前記識別情報の順序と、予め設定された前記識別情報の順序とが適合するか否かを判定する判定ステップと、
前記判定ステップの判定結果に応じて、前記実行ステップを復旧させる復旧ステップと、
を備える情報処理方法。
【請求項１０】
情報処理装置のコンピュータを、
処理を実行する実行手段と、
前記実行手段が実行した処理の種別を識別する識別情報を、実行した順序で記録する記録手段と、
前記記録手段が記憶した前記識別情報の順序と、予め設定された前記識別情報の順序とが適合するか否かを判定する判定手段と、
前記判定手段の判定結果に応じて、前記実行手段を復旧させる復旧手段と、
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法及びプログラムに関する。
【背景技術】
【０００２】
従来、画像形成装置は、拡張プログラムのインストールによって機能拡張が施される。また、画像形成装置の製造会社は、例えば、大口の顧客に対しては、拡張プログラムをインストールしたり、画像形成装置のファームウェアをカスタマイズしたりすることで、顧客の要望に合わせる特注対応を行う場合がある。画像形成装置は、このような機能拡張等が行われた場合であっても、安定した稼働が求められている。
【０００３】
特許文献１には、入力されたデータが予め登録されたクリティカルな変更又は追加に係る処理指令であるか否かを検出し、検出結果に応じて実行を回避する技術が開示されている。
【０００４】
ところで、製造会社は、画像形成装置のプログラムに不具合を発見した場合には、バージョンアップにより不具合に対策を施したプログラムを配布することがある。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、バージョンアップしたプログラムの配布は、コストアップの一因となる。また、プログラムをバージョンアップすると、正常に動作している機能にも影響を及ぼす虞があるため、安定稼働の要請にも反するものである。拡張プログラムがインストールされていたり、ファームウェアをカスタマイズされていたりする画像形成装置は、プログラムをバージョンアップし、動作タイミングや処理シーケンスが変わってしまうことで不具合が発生する蓋然性が特に高い。そのため、製造会社は、拡張プログラム等がインストールされた画像形成装置に対しては、プログラムのバージョンアップを極力行わないように運用していた。すなわち、製造会社は、新たに不具合を発見した場合であっても、容易に対策を施すことができなかった。
【０００６】
本発明は、上記に鑑みてなされたものであって、拡張プログラム等をバージョンアップすることなく不具合に対策を施すことが可能な情報処理装置、情報処理方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
上述した課題を解決し、目的を達成するために、本発明は、情報処理装置は、実行手段と、記録手段と、判定手段と、復旧手段とを備える。前記実行手段は、処理を実行する。前記記録手段は、前記実行手段が実行した処理の種別を識別する識別情報を、実行した順序で記録する。前記判定手段は、前記記録手段が記憶した前記識別情報の順序と、予め設定された前記識別情報の順序とが適合するか否かを判定する。前記復旧手段は、前記判定手段の判定結果に応じて、前記実行手段を復旧させる。
【発明の効果】
【０００８】
本発明によれば、拡張プログラム等をバージョンアップすることなく不具合に対策を施すことができるという効果を奏する。
【図面の簡単な説明】
【０００９】
【図１】図１は、本実施形態に係る複合機のハードウェア構成を説明するためのブロック図である。
【図２】図２は、複合機のソフトウェア構成を説明するためのブロック図である。
【図３】図３は、拡張プログラムの詳細な構成を説明するブロック図である。
【図４】図４は、複合機が有する特徴的な構成を説明する機能ブロック図である。
【図５】図５は、イベント定義テーブルの一例を示す説明図である。
【図６】図６は、照合パターンのインストールの一例を示す説明図である。
【図７】図７は、再起動画面の一例を示す説明図である。
【図８】図８は、イベント照合処理の一例を示すフローチャート図である。
【図９】図９は、復旧処理の一例を示すシーケンス図である。
【図１０】図１０は、復旧処理の一例を示すシーケンス図である。
【図１１】図１１は、復旧処理の一例を示すシーケンス図である。
【図１２】図１２は、復旧処理の一例を示すシーケンス図である。
【発明を実施するための形態】
【００１０】
以下、添付図面を参照しながら、情報処理装置、情報処理方法及びプログラムの実施の形態を詳細に説明する。以下では、情報処理装置、情報処理方法及びプログラムを、複合機などの画像形成装置に適用した場合を例に挙げて説明するが、これに限定されるものではない。なお、複合機とは、コピー機能、スキャナ機能、ファクス機能、プリンタ機能のうち少なくとも２つの機能を有する情報処理装置である。
【００１１】
図１は、本実施形態に係る複合機１のハードウェア構成を説明するためのブロック図である。
【００１２】
図１に示すように、複合機１は、コントローラ１０と、操作表示部２０と、エンジン部（Engine）６０とを有する。そして、コントローラ１０とエンジン部６０とは、ＰＣＩ（Peripheral  Component  Interface）バスで接続される。また、コントローラ１０と操作表示部２０とは、所定の信号線を介して接続されている。
【００１３】
コントローラ１０は、複合機１全体の制御、即ち、描画処理や、通信処理や、操作表示部２０に対する操作入力および表示処理などの各種処理を制御するものである。本実施形態に係るコントローラ１０は、ＣＰＵ（Central  Processing  Unit）１１、システムメモリ（ＭＥＭ−Ｐ）１２、ノースブリッジ（ＮＢ）１３、サウスブリッジ（ＳＢ）１４、ＡＳＩＣ（Application  Specific  Integrated  Circuit）１６、ローカルメモリ（ＭＥＭ−Ｃ）１７及びＨＤＤ（Hard  Disk  Drive）１０３などを有している。
【００１４】
なお、ノースブリッジ（ＮＢ）１３とＡＳＩＣ１６とは、ＡＧＰ（Accelerated  Graphics  Port）バス１５で接続される。そして、ＭＥＭ−Ｐ１２は、ＲＯＭ（Read  Only  Memory）１２ａと、ＲＡＭ（Random  Access  Memory)１２ｂとを有している。
【００１５】
ＣＰＵ１１は、複合機１全体を統括的に制御するものである。そして、ＣＰＵ１１は、ＭＥＭ−Ｐ１２、ＮＢ１３及びＳＢ１４を有するチップセットを介して他の機器と接続される。
【００１６】
ＭＥＭ−Ｐ１２は、プログラムやデータの格納用および展開用のメモリ、プリンタの描画用のメモリなどに用いられるシステムメモリである。なお、ＲＯＭ１２ａは、プログラムやデータの格納用のメモリとして用いられる読み出し専用のメモリである。また、ＲＡＭ１２ｂは、プログラムやデータの展開用のメモリやプリンタの描画用のメモリなどとして用いられる書き込み／読み出し用のメモリである。
【００１７】
ＮＢ１３は、ＣＰＵ１１と、ＭＥＭ−Ｐ１２と、ＳＢ１４と、ＡＳＩＣ１６とを接続するためのブリッジである。また、ＮＢ１３は、ＭＥＭ−Ｐ１２に対する読み書きなどを制御するメモリコントローラと、ＰＣＩマスタと、ＡＰターゲットとを有する。
【００１８】
ＳＢ１４は、ＮＢ１３と、ＰＣＩデバイスと、周辺デバイスなどとを接続するためのブリッジである。なお、このＳＢ１４は、ＰＣＩバスを介して、ＮＢ１３と接続される。そして、このＰＣＩバスには、ネットワークインタフェース（Ｉ／Ｆ）部なども接続される。
【００１９】
ＡＧＰバス１５は、グラフィック処理を高速化するために提案されたグラフィックスアクセラレータカード用バスインタフェースでる。そして、ＡＧＰバス１５は、ＭＥＭ−Ｐ１２に高スループットで直接アクセスすることにより、グラフィックスアクセラレータカードを高速にするものである。
【００２０】
ＡＳＩＣ１６は、画像処理用のハードウェア要素を有する画像処理用途向けのＩＣ（Integrated  Circuit）である。そして、ＡＳＩＣ１６は、ＡＧＰバス１５と、ＰＣＩバスと、ＨＤＤ１０３と、ＭＥＭ−Ｃ１７とをそれぞれ接続するブリッジの役割を有する。
【００２１】
また、このＡＳＩＣ１６は、ＰＣＩターゲットと、ＡＧＰマスタと、このＡＳＩＣ１６の中核をなすアービタ（ＡＲＢ）と、ＭＥＭ−Ｃ１７を制御するメモリコントローラと、画像データの回転などを行う複数のＤＭＡＣ（Direct  Memory  Access  Controller）と、エンジン部６０との間でＰＣＩバスを介したデータ転送を行うＰＣＩユニットとを有する。
【００２２】
さらに、ＡＳＩＣ１６には、ＰＣＩバスを介して、ＦＣＵ（Facsimile  Control  Unit）３０、ＵＳＢ（Universal  Serial  Bus）４０、ＩＥＥＥ１３９４（the  Institute  of  Electrical  and  Electronics  Engineers  1394）５０が接続される。さらに、ＡＳＩＣ１６には、信号線を介して、操作表示部２０が接続される。
【００２３】
ＭＥＭ−Ｃ１７は、コピー用画像バッファ、符号バッファなどとして用いられるローカルメモリである。
【００２４】
ＨＤＤ１０３は、画像データ、プログラム、フォントデータ、フォームなどの蓄積を行うためのストレージである。
【００２５】
操作表示部２０は、複合機１の各種機能を利用するための操作方法を表示するとともに、ユーザからの操作入力を受け付けるためのユーザインタフェースである。
【００２６】
エンジン部６０は、例えば、白黒プロッタ、１ドラムカラープロッタ、４ドラムカラープロッタ、スキャナまたはファックスユニットなどのＰＣＩバスに接続可能なプリンタエンジンである。なお、エンジン部６０には、プロッタなどのいわゆるエンジン部分に加えて、誤差拡散やガンマ変換などの画像処理部分が含まれる。
【００２７】
次に、複合機１のソフトウェア構成について説明する。図２は、複合機１のソフトウェア構成を説明するためのブロック図である。
【００２８】
図２に示すように、複合機１は、大別すると、汎用ＯＳ（Operating  System）１１０と、コントロールサービス群１２０と、アプリケーション群１３０とを有する。そして、汎用ＯＳ１１０と、コントロールサービス群１２０と、アプリケーション群１３０との各プロセスは、イベントドリブンで動作する。そして、各プロセスは、イベント通信機構１４０を介して、イベントを送受信することで他のプロセスと連携して動作することができる。すなわち、各プロセスは、各々の状態に従い他のプロセスに処理要求であるイベントを送信する。そして、各プロセスは、他のプロセスからのイベントに従って処理を進める。
【００２９】
汎用ＯＳ１１０は、ＵＮＩＸ（登録商標）などの汎用オペレーティングシステムである。また、汎用ＯＳ１１０は、汎用ＯＳ１１０上でコントロールサービス群１２０及びアプリケーション群１３０のソフトウェアに係るプロセスを並列に実行する。
【００３０】
また、コントロールサービス群１２０は、ＥＣＳ（エンジンコントロールサービス）１２１と、ＭＣＳ（メモリコントロールサービス）１２２と、ＯＣＳ（オペレーションパネルコントロールサービス）１２３と、ＦＣＳ（ファックスコントロールサービス）１２４と、ＮＣＳ（ネットワークコントロールサービス）１２５と、ＳＣＳ（システムコントロールサービス）１２６と、アプリインストールサービス１２７とを有している。
【００３１】
ＥＣＳ１２１のプロセスは、エンジン部６０を制御する。
【００３２】
ＭＣＳ１２２のプロセスは、画像メモリの取得および解放、ＨＤＤ１０３の利用、画像データの圧縮および伸張などを行うものである。
【００３３】
ＯＣＳ１２３のプロセスは、オペレータ（ユーザ）と本体制御間の情報伝達手段となる操作表示部２０の制御を行うものである。より具体的には、ＯＣＳ１２３は、大別すると、ＯＣＳプロセスと、ＯＣＳライブラリとを有する。ＯＣＳプロセスは、操作表示部２０からキー押下またはタッチ操作をキーイベントとして取得し、該取得したキーに対応したキーイベント関数をＳＣＳ１２６に送信する。ＯＣＳライブラリは、アプリケーション群１３０または各種コントロールサービスからの要求により操作表示部２０に各種画面を描画出力する描画関数や、その他、操作表示部２０に対する制御を行う関数などが予め登録されている。なお、ＯＣＳライブラリは、アプリケーション群１３０およびコントロールサービス群１２０の各モジュールにリンクされている。また、ＯＣＳ１２３は、ＯＣＳ１２３の全てをプロセスとして動作する構成であっても良いし、ＯＣＳ１２３の全てをＯＣＳライブラリとする構成であっても良い。
【００３４】
ＦＣＳ１２４のプロセスは、ＰＳＴＮ（Public  Switched  Telephone  Network）／ＩＳＤＮ網を利用したファクシミリ送受信、ＢＫＭ（バックアップＳＲＡＭ）で管理されている各種ファクシミリデータの登録／引用、ファクシミリ読み取り、ファクシミリ受信印刷、融合送受信などを行うためのＡＰＩを提供するものである。
【００３５】
ＮＣＳ１２５のプロセスは、ネットワークＩ／Ｏを必要とするアプリケーションに対して共通に利用できるサービスを提供するものである。より具体的には、ＮＣＳ１２５のプロセスは、ネットワーク側から各プロトコルによって受信したデータを各アプリケーションに振り分けたり、アプリケーションからデータをネットワーク側に送信したりする際の仲介を行うものである。
【００３６】
ＳＣＳ１２６のプロセスは、システムの制御およびリソースの管理を行うものである。ＳＣＳ１２６は、例えば、スキャナ部やプリンタ部などのエンジン、メモリ、ＨＤＤファイル、ホストＩ／Ｏ（セントロＩ／Ｆ、ネットワークＩ／Ｆ、ＩＥＥＥ１３９４  Ｉ／Ｆ、ＲＳ２３２Ｃ  Ｉ／Ｆなど）のハードウェア資源を利用する上位層からの要求を調停する。
【００３７】
より具体的には、ＳＣＳ１２６は、要求されたハードウェア資源が利用可能であるか、即ち、他の要求により利用されているか否かを判断する。そして、ＳＣＳ１２６は、ハードウェア資源が利用可能であれば要求した要求元に、ハードウェア資源の使用権限を付与する処理を実行する。また、ＳＣＳ１２６は、上位層からの要求に対してハードウェア資源の利用スケジューリングを行う。そして、ＳＣＳ１２６は、プリンタエンジンにより紙搬送と作像動作、メモリ確保、ファイル生成などの要求内容を直接実施する。
【００３８】
アプリインストールサービス１２７は、複合機１の機能を拡張するアプリケーションをインストールする。
【００３９】
アプリケーション群１３０は、プリンタアプリ１３１と、コピーアプリ１３２と、ファックスアプリ１３３と、スキャナアプリ１３４と、拡張プログラム１３５と、イベントモニタ１３６とを有する。
【００４０】
プリンタアプリ１３１は、プリンタ用のアプリケーションである。コピーアプリ１３２は、コピー用のアプリケーションである。ファックスアプリ１３３は、ファクシミリ用のアプリケーションである。スキャナアプリ１３４は、スキャナ用のアプリケーションである。
【００４１】
拡張プログラム１３５は、複合機１が有している機能を拡張する１以上のアプリケーションを有するプログラムである。そして、拡張プログラム１３５は、他のプロセスと同様にイベントを送受信することで他のプロセスと連携して動作する構成となっている。すなわち、拡張プログラム１３５は、他のプロセスから送信されたイベントを実行する。
【００４２】
また、拡張プログラム１３５は、他のプロセスから送信された、拡張プログラム１３５が実行するイベントのイベントＩＤをイベントモニタ１３６に転送する。ここで、イベントＩＤとは、イベントの種別を識別する識別情報である。すなわち、イベントＩＤとは、コントロールサービス群１２０及びアプリケーション群１３０の各プロセスが実行する処理の種別を識別する識別情報である。
【００４３】
このようなイベントドリブンで動作しているシステムは、イベントの順序やタイミングで動作が変わるため想定外の順序やタイミングでイベントが発生するとデッドロック等の誤動作が発生する場合がある。そして、拡張プログラム１３５は、イベントドリブンで動作している。よって、拡張プログラム１３５は、想定外の順序やタイミングでイベントが発生することが誤動作のトリガとなりデッドロックする場合がある。
【００４４】
イベントモニタ１３６は、拡張プログラム１３５の状態をモニタし、拡張プログラム１３５がデッドロックした場合に復旧させるアプリケーションである。具体的には、イベントモニタ１３６は、拡張プログラム１３５から転送されたイベントＩＤを監視する。これにより、イベントモニタ１３６は、拡張プログラム１３５が実行するイベントを把握することができるため、拡張プログラム１３５の状態をモニタすることができる。
【００４５】
そして、イベントモニタ１３６は、拡張プログラム１３５がデッドロックしたと判定した場合に、汎用ＯＳ１１０を介して、ハングアップシグナルを送信することができる。ここで、ハングアップシグナルとは、不具合の原因となる順序で拡張プログラム１３５に処理が要求されたことの通知である。そして、拡張プログラム１３５は、ハングアップシグナルを受信した場合に、再起動等を実行する。これにより、拡張プログラム１３５は、デッドロック状態から復旧することができる。
【００４６】
次に、拡張プログラム１３５の詳細な構成を説明する。ここで、図３は、拡張プログラム１３５の詳細な構成を説明するブロック図である。拡張プログラム１３５は、機能拡張アプリ１３５１−１と、機能拡張アプリ１３５１−２と、機能拡張アプリ１３５１−３と、・・・機能拡張アプリ１３５１−Ｎ（Ｎは１以上の整数）とを有する。以下、機能拡張アプリ１３５１−１と、機能拡張アプリ１３５１−２と、機能拡張アプリ１３５１−３と、・・・機能拡張アプリ１３５１−Ｎを区別しない場合は単に、機能拡張アプリ１３５１と称する。さらに、拡張プログラム１３５は、Ｊａｖａ（登録商標）インタプリタ１３５２と、ＪＮＩ（Java  Native  Interface）１３５３とを有する。
【００４７】
機能拡張アプリ１３５１は、複合機１が有している機能を拡張するアプリケーションである。そして、機能拡張アプリ１３５１は、例えば、Ｊａｖａで記述されている。Ｊａｖａインタプリタ１３５２は、機能拡張アプリ１３５１をインタプリタ方式で実行するプログラムである。ＪＮＩ１３５３は、イベントモニタ１３６及びイベント通信機構１４０に対して、Ｊａｖａインタプリタ１３５２が実行した機能拡張アプリ１３５１のイベントを送受信するプログラムである。拡張プログラム１３５は、ＪＮＩ１３５３を介してイベントの送受信をすることで、他のプログラムがＪａｖａ以外のプログラム言語で記述されている場合であっても、他のプログラムに機能拡張アプリ１３５１を協調させることができる。また、拡張プログラム１３５は、送受信したイベントのイベントＩＤをイベントモニタ１３６に転送する。拡張プログラム１３５は、Ｊａｖａ以外のプログラム言語で記述されていてもよい。
【００４８】
次に、複合機１が有する特徴的な機能について説明する。
【００４９】
ここで、図４は、複合機１が有する特徴的な構成を説明する機能ブロック図である。ＣＰＵ（プロセッサ）１１は、ＲＯＭ１２ａまたはＨＤＤ１０３などに記憶されている各プログラムをＲＡＭ１２ｂ上に展開し、各プログラムに従って動作することで各種機能部を実現する。
【００５０】
図４に示すようにアプリインストールサービス１２７は、機能拡張アプリインストール部１２７ａと、照合パターンインストール部１２７ｂとを有する。拡張プログラム１３５は、イベント受信部１３５ａと、イベントＩＤ転送部１３５ｂと、イベント実行部１３５ｃと、復旧制御部１３５ｄとを有する。イベントモニタ１３６は、イベントＩＤ受信部１３６ａと、イベント記録部１３６ｂと、パターン判定部１３６ｃと、通知部１３６ｄとを有する。
【００５１】
まず、アプリインストールサービス１２７に係る機能部について説明する。
【００５２】
機能拡張アプリインストール部１２７ａは、機能拡張アプリ１３５１のインストールを制御する。また、アプリインストールサービス１２７は、インストールした機能拡張アプリ１３５１に係るイベント定義をイベント定義テーブルに記憶する。なお、機能拡張アプリインストール部１２７ａは、任意のタイミングで機能拡張アプリ１３５１をインストールすることができる。すなわち、機能拡張アプリインストール部１２７ａは、複合機１が設置された後に機能拡張アプリ１３５１をインストールされてもよい。
【００５３】
ここで、図５は、イベント定義テーブルの一例を示す説明図である。イベント定義テーブルは、イベント毎に、イベント機能と、イベント名と、イベントＩＤとを記憶する。イベント機能は、イベントにより実行される機能を示す情報である。イベント名は、イベントの名称を示す情報である。イベントＩＤとは、イベントの種別を識別する識別情報である。
【００５４】
照合パターンインストール部１２７ｂは、拡張プログラム１３５に係る照合パターンをインストールする。ここで、照合パターンは、拡張プログラム１３５がデッドロックするイベントＩＤのパターンが一又は複数設定された情報である。そして、イベントＩＤのパターンとは、イベントＩＤの順序である。なお、照合パターンの拡張プログラム１３５がデッドロックするイベントＩＤの順序は、複数のイベントＩＤの組み合わせに限らず、単一のイベントＩＤであってもよい。
【００５５】
また、照合パターンは、ホワイトリスト形式であってもよいし、ブラックリスト形式であってもよい。ホワイトリスト形式の場合には、照合パターンは、機能拡張アプリ１３５１がデッドロックしないイベントＩＤの順序を記憶する。これにより、イベントモニタ１３６は、設定以外のイベントＩＤの順序で、イベントＩＤが転送された場合に、機能拡張アプリ１３５１がデッドロックすると判定することができる。
【００５６】
一方、ブラックリスト形式の場合には、照合パターンは、機能拡張アプリ１３５１がデッドロック等の不具合を発生させるイベントＩＤの順序を記憶する。これにより、イベントモニタ１３６は、設定されたイベントＩＤの順序で、イベントＩＤが転送された場合に、機能拡張アプリ１３５１がデッドロックすると判定することができる。なお、本実施形態は、ブラックリスト形式の場合を例に説明する。
【００５７】
ここで、図６は、照合パターンのインストールの一例を示す説明図である。図６に示すように機能拡張アプリ１３５１は、それぞれ別々のディレクトリに格納される。そして、各ディレクトリ名は、機能拡張アプリ１３５１を識別する識別情報となっている。この時、照合パターンは、同一のディレクトリに格納される。そして、照合パターンを格納するディレクトリ名は、機能拡張アプリ１３５１の識別情報として付与されない識別情報となっている。具体的には、図６に示すように機能拡張アプリ１は、ディレクトリ名が１２３４５のディレクトリに格納される。機能拡張アプリ２は、ディレクトリ名が４３２１５のディレクトリに格納される。機能拡張アプリ３は、ディレクトリ名が３９１８４のディレクトリに格納される。そして、機能拡張アプリ１、機能拡張アプリ２及び機能拡張アプリ３に係る照合パターンは、ディレクトリ名が９９９９９に格納される。
【００５８】
このような構成にすることで、照合パターンインストール部１２７ｂは、機能拡張アプリ１３５１と同様に任意のタイミングで照合パターンのインストールや更新が可能になる。また、照合パターンインストール部１２７ｂは、ＨＤＤ１０３に照合パターンを記憶させるので、別プロセスのイベントモニタ１３６からも参照可能である。なお、設定手段である照合パターンインストール部１２７ｂは、機能拡張アプリインストール部１２７ａと同様に、任意のタイミングで照合パターンをインストール又は更新することができる。すなわち、照合パターンインストール部１２７ｂは、機能拡張アプリインストール部１２７ａが機能拡張アプリ１３５１をインストールするタイミングで照合パターンをインストールすることができる。さらに、照合パターンインストール部１２７ｂは、不具合が発見された後に、不具合が発生したイベントＩＤのパターンを照合パターンに追加することもできる。一般的にイベントの種類は数十から数百種類に及ぶため、事前に不具合の起きそうなイベントの組み合わせを見つけるのは困難である。しかし、任意のタイミングに照合パターンをインストール可能とすることで、照合パターンインストール部１２７ｂは、不具合を発見後に、発見した不具合を照合パターンに追加することができる。よって、照合パターンインストール部１２７ｂは、機能拡張アプリ１３５１をバージョンアップさせることなく、後発的に発見された不具合に対して対策を施すことができる。
【００５９】
次に、拡張プログラム１３５に係る機能部について説明する。
【００６０】
イベント受信部１３５ａは、イベントを受信する。なお、イベント受信部１３５ａは、汎用ＯＳ１１０と、コントロールサービス群１２０の各プロセスと、アプリケーション群１３０の各プロセスとの何れからイベントを受信してもよい。
【００６１】
イベントＩＤ転送部１３５ｂは、イベントモニタ１３６にイベント受信部１３５ａが受信したイベントのイベントＩＤをイベントモニタ１３６に転送する。
【００６２】
実行手段であるイベント実行部１３５ｃは、イベント受信部１３５ａが受信したイベントに係る処理を実行する。すなわち、イベント実行部１３５ｃは、機能拡張アプリ１３５１が有する各種機能を発揮させる。
【００６３】
復旧手段である復旧制御部１３５ｄは、拡張プログラム１３５がハングアップシグナルを受信した場合に、拡張プログラム１３５を復旧する。具他的には、復旧制御部１３５ｄは、ハングアップシグナルを受信した場合に、拡張プログラム１３５を再起動させることで復旧させる。そして、復旧制御部１３５ｄは、再起動が完了した場合に、再起動完了通知を送信する。ここで、再起動完了通知は、再起動による復旧が完了したことを示す通知である。なお、復旧方法は、再起動に関わらず拡張プログラム１３５の初期化等であってもよい。また、復旧制御部１３５ｄは、拡張プログラム１３５の全体を再起動させる形態であってもよいし、拡張プログラム１３５の一部を再起動させる形態であってもよい。
【００６４】
次に、イベントモニタ１３６に係る機能部について説明する。
【００６５】
イベントＩＤ受信部１３６ａは、イベントＩＤ転送部１３５ｂから転送されたイベントＩＤを受信する。
【００６６】
記録手段であるイベント記録部１３６ｂは、イベントＩＤ受信部１３６ａが受信したイベントＩＤを記録する。すなわち、イベント記録部１３６ｂは、拡張プログラム１３５が実行した順序でイベントＩＤを記録する。
【００６７】
パターン判定部１３６ｃは、拡張プログラム１３５がデッドロック等の不具合が発生しているか否かを判定する。具体的には、判定手段であるパターン判定部１３６ｃは、記録したイベントＩＤの順序と、照合パターンに予め設定されたイベントＩＤの順序とが適合した場合に、拡張プログラム１３５がデッドロックしていると判定する。
【００６８】
通知部１３６ｄは、パターン判定部１３６ｃの判定結果に応じて、ハングアップシグナルを送信する。すなわち、通知部１３６ｄは、パターン判定部１３６ｃがデッドロックしていると判定した場合に、ハングアップシグナルを送信する。
【００６９】
また、通知部１３６ｄは、ハングアップシグナルを送信する前に拡張プログラム１３５にテストイベントを送信してもよい。テストイベントとは、拡張プログラム１３５に不具合が発生し、デッドロックしているか否かを試験する処理の実行を求めるイベントである。拡張プログラム１３５は、デッドロックしていない場合には、テストイベントに応答することができる。しかし、拡張プログラム１３５は、デッドロックしている場合には、テストイベントに応答することができない。よって、パターン判定部１３６ｃは、所定の時間内にテストイベントの応答がない場合に、拡張プログラム１３５はデッドロックしていると判定する。そして、通知部１３６ｄは、ハングアップシグナルを送信する。一方、パターン判定部１３６ｃは、所定の時間内にテストイベントの応答があった場合に、拡張プログラム１３５はデッドロックしていないと判定する。そして、通知部１３６ｄは、ハングアップシグナルを送信しない。すなわち、拡張プログラム１３５の復旧制御部１３５ｄは、ハングアップシグナルを送信する前に送信されたテストイベントに対する応答が所定の時間内にあった場合には、拡張プログラム１３５を復旧しない。
【００７０】
また、通知部１３６ｄは、復旧制御部１３５ｄが拡張プログラム１３５を復旧する前に、機能制限通知を送信してもよい。具体的には、通知部１３６ｄは、ハングアップシグナルを送信する前に、ＯＣＳ１２３に機能制限通知を送信してもよい。ここで、機能制限通知とは、拡張プログラム１３５を再起動により復旧するために、機能の全部又は一部を制限する通知である。これにより、ＯＣＳ１２３は、操作表示部２０を介した操作の全部又は一部を制限する。これにより、拡張プログラム１３５を再起動中に意図しない操作がされてしまうことを防止する。そして、通知部１３６ｄは、拡張プログラム１３５が復旧した場合に、ＯＣＳ１２３に制限解除通知を送信する。ここで、制限解除通知とは、拡張プログラム１３５を再起動が完了したために、機能の制限を解除する通知である。これにより、ＯＣＳ１２３は、操作表示部２０を介した、操作の全部又は一部の制限を解除する。
【００７１】
ここで、具体的な例を挙げて、機能制限通知による操作の制限について説明する。拡張プログラム１３５の機能拡張アプリ１３５１が認証アプリケーションである場合を例に、拡張プログラム１３５を再起動させることによる不具合の発生を防止することについて説明する。なお、複合機１は、ユーザが認証されていない場合には、コピーなどのアプリケーションを利用することはできない仕様になっているものとする。拡張プログラム１３５は、ユーザの認証がされていない場合に、例えば「ログインしてください」等の画面を操作表示部２０に表示させる。しかし、拡張プログラム１３５は、再起動中は動作を停止しているため「ログインしください」等の画面を表示させることができない。そのため、本来利用することができないコピーなどのアプリケーションが利用可能となってしまう場合がある。そこで、拡張プログラム１３５は、通知部１３６ｄが拡張プログラム１３５にハングアップシグナルを送信する前に、ＯＣＳ１２３に操作表示部２０を介した操作を制限する機能制限通知を送信する。そして、機能制限通知を受信したＯＣＳ１２３は、操作表示部２０に再起動画面を表示させる。さらに、機能制限通知を受信したＯＣＳ１２３は、操作部である操作表示部２０を介した、ユーザの操作を受け付けない。
【００７２】
ここで、図７は、再起動画面Ｇ１の一例を示す説明図である。図７に示すようにＯＣＳ１２３は、「拡張プログラム再起動中」とのメッセージを表示部である操作表示部２０に表示して拡張プログラム１３５が復旧中であることをユーザに知らせる。また、ＯＣＳ１２３は、再起動画面Ｇ１を表示することで、再起動中にログインなしでコピーなどのアプリケーションを使用する操作を受け付けない。そして、通知部１３６ｄは、拡張プログラム１３５の再起動が完了した場合に、制限解除通知を送信する。これにより、ＯＣＳ１２３は、再起動画面Ｇ１の表示を取り止める。従って、操作表示部２０は、「ログインしてください」等の画面を表示させる。すなわち、拡張プログラム１３５は、ユーザの認証を再開する。
【００７３】
次に、実施の形態の複合機１がプログラムに従って実行するイベント照合処理について説明する。ここで、イベント照合処理とは、拡張プログラム１３５に通知されたイベントが、照合パターンに設定されたイベントＩＤの順序に適合するか否かを判定する処理である。
【００７４】
ここで、省エネモードへの移行を通知するイベントの後で、画面表示要求を通知するイベントが発生した場合を例に、イベント照合処理について説明する。省エネモードは、画面表示をしないモードである。よって、これは矛盾した動作なので拡張プログラム１３５は、画面描画要求は無視するべきである。しかし、拡張プログラム１３５が、このシーケンスを考慮していない場合は不具合の原因となってしまう。具体的には、拡張プログラム１３５は、省エネモードに移行しているため画面表示処理でデッドロックする不具合の原因となり得る。そこで、イベントモニタ１３６は、イベント照合処理において、不具合の原因となり得るイベントＩＤの順序を予め設定した照合パターンと、受信したイベントＩＤの順序とが適合した場合に、拡張プログラム１３５を再起動させる。これにより、拡張プログラム１３５は、デッドロックした場合であっても復旧することができるため、結果的に不具合の対策がなされたこととなる。
【００７５】
ここで、図８は、実施の形態の複合機１がプログラムに実行するイベント照合処理の一例を示すフローチャート図である。なお、図８は、省エネ移行通知の後に、画像表示通知を受けた場合のフローチャート図である。すなわち、図８に示すフローチャート図に係る照合パターンには、省エネ移行後に画面表示通知がされた場合にデッドロックしたと判定することが設定されている。
【００７６】
まず、イベントＩＤ受信部１３６ａは、拡張プログラム１３５から転送されたイベントＩＤを受信したか否かを判定する（ステップＳ１）。イベントＩＤを受信していない場合に（ステップＳ１；Ｎｏ）、イベントＩＤ受信部１３６ａは、イベントＩＤの受信を待機する。
【００７７】
一方、イベントＩＤを受信した場合に（ステップＳ１；Ｙｅｓ）、イベント記録部１３６ｂは、イベントＩＤを記録する（ステップＳ２）。
【００７８】
次いで、パターン判定部１３６ｃは、イベント記録部１３６ｂが記録したイベントＩＤが省エネ移行ＩＤであるか否かを判定する（ステップＳ３）。イベント記録部１３６ｂが記録したイベントＩＤが省エネ移行ＩＤでない場合に（ステップＳ３；Ｎｏ）、パターン判定部１３６ｃは、照合パターンに不適合であるとしてステップＳ１に移行する。
【００７９】
一方、イベント記録部１３６ｂが記録したイベントＩＤが省エネ移行ＩＤである場合に（ステップＳ３；Ｙｅｓ）、パターン判定部１３６ｃは、拡張プログラム１３５から転送されたイベントＩＤを受信したか否かを判定する（ステップＳ４）。
【００８０】
イベントＩＤを受信していない場合に（ステップＳ４；Ｎｏ）、イベントＩＤ受信部１３６ａは、イベントＩＤの受信を待機する。
【００８１】
一方、イベントＩＤを受信した場合に（ステップＳ４；Ｙｅｓ）、イベント記録部１３６ｂは、イベントＩＤを記録する（ステップＳ５）。
【００８２】
次いで、パターン判定部１３６ｃは、イベント記録部１３６ｂが記録したイベントＩＤが画面表示ＩＤであるか否かを判定する（ステップＳ６）。イベント記録部１３６ｂが記録したイベントＩＤが画面表示ＩＤでない場合に（ステップＳ６；Ｎｏ）、パターン判定部１３６ｃは、照合パターンに不適合であるとしてステップＳ１に移行する。
【００８３】
一方、イベント記録部１３６ｂが記録したイベントＩＤが画面表示ＩＤである場合に（ステップＳ３；Ｙｅｓ）、通知部１３６ｄは、照合パターンに設定されたデッドロック条件と適合すると判定し、ハングアップシグナルを送信する（ステップＳ７）。
【００８４】
以上により、複合機１は、イベント照合処理を実行する。
【００８５】
次に、実施の形態の複合機１がプログラムに従って実行する復旧処理について説明する。ここで、復旧処理とは、不正なイベントが通知されたがためにデッドロックした拡張プログラム１３５を復旧させる処理である。
【００８６】
図９は、実施の形態の複合機１が実行する復旧処理の一例を示すシーケンス図である。なお、図９は、省エネ移行後に画面表示通知がされたために拡張プログラム１３５がデッドロックする場合を示すシーケンス図である。すなわち、図９に示すシーケンス図に係る照合パターンは、省エネ移行後に画面表示通知がされた場合にデッドロックしたと判定することが設定されている。
【００８７】
まず、ＳＣＳ１２６は、拡張プログラム１３５に省エネ移行通知を送信する（ステップＳ１１）。
【００８８】
次いで、拡張プログラム１３５のイベントＩＤ転送部１３５ｂは、受信した省エネ移行通知のイベントＩＤをイベントモニタ１３６に転送する（ステップＳ１２）。また、拡張プログラム１３５のイベント実行部１３５ｃは、省エネ移行処理を実行する（ステップＳ１３）。
【００８９】
次いで、イベントモニタ１３６のイベント記録部１３６ｂは、受信した省エネ移行通知のイベントＩＤを記録する（ステップＳ１４）。次いで、イベントモニタ１３６のパターン判定部１３６ｃは、記録したイベントＩＤの順序が、照合パターンと適合するか否かを判定する（ステップＳ１５）。図９に示すシーケンス図の場合には、照合パターンに設定されたデッドロック条件と適合していないのでイベントモニタ１３６の通知部１３６ｄは、特別な処理は行わない。
【００９０】
次いで、ＯＣＳ１２３は、拡張プログラム１３５に画面表示通知を送信する（ステップＳ１６）。
【００９１】
次いで、拡張プログラム１３５のイベントＩＤ転送部１３５ｂは、受信した画面表示通知のイベントＩＤをイベントモニタ１３６に転送する（ステップＳ１７）。ここで、図９に示すシーケンス図の場合には、拡張プログラム１３５は、省エネ移行時に画面表示通知を受信することは想定外であるためデッドロックする。
【００９２】
次いで、イベントモニタ１３６のイベント記録部１３６ｂは、受信した画面表示通知のイベントＩＤを記録する（ステップＳ１８）。次いで、イベントモニタ１３６のパターン判定部１３６ｃは、記録したイベントＩＤが、照合パターンと適合するか否かを判定する（ステップＳ１９）。図９に示すシーケンス図の場合には、照合パターンに設定されたデッドロック条件と適合するのでイベントモニタ１３６の通知部１３６ｄは、拡張プログラム１３５にハングアップシグナルを送信する（ステップＳ２０）。
【００９３】
次いで、拡張プログラム１３５の復旧制御部１３５ｄは、再起動処理を実行する（ステップＳ２１）。
【００９４】
以上により、複合機１は、復旧処理を実行する。
【００９５】
次に、実施の形態の複合機１がプログラムに従って実行するテストイベントに対する応答がある場合の復旧処理について説明する。
【００９６】
図１０は、実施の形態の複合機１が実行する復旧処理の一例を示すシーケンス図である。なお、図１０は、省エネ移行後に画面表示通知がされたために拡張プログラム１３５がデッドロックしたと判定した場合を示すシーケンス図である。さらに、図１０に示すシーケンス図は、イベントモニタ１３６が送信したテストイベントに対して応答があった場合を示している。
【００９７】
ステップＳ３１からステップＳ３５は、図９に示すシーケンス図のステップＳ１１からステップＳ１５と同様の処理なので省略する。
【００９８】
次いで、ＯＣＳ１２３は、拡張プログラム１３５に画面表示通知を送信する（ステップＳ３６）。
【００９９】
次いで、拡張プログラム１３５のイベントＩＤ転送部１３５ｂは、受信した画面表示通知のイベントＩＤをイベントモニタ１３６に転送する（ステップＳ３７）。
【０１００】
次いで、イベントモニタ１３６のイベント記録部１３６ｂは、受信した画面表示通知のイベントＩＤを記録する（ステップＳ３８）。次いで、イベントモニタ１３６のパターン判定部１３６ｃは、記録したイベントＩＤの順序が、照合パターンと適合するか否かを判定する（ステップＳ３９）。図１０に示すシーケンス図の場合には、照合パターンに設定されたデッドロック条件と適合するのでイベントモニタ１３６の通知部１３６ｄは、拡張プログラム１３５にテストイベントを送信する（ステップＳ４０）。
【０１０１】
次いで、拡張プログラム１３５の復旧制御部１３５ｄは、デッドロックしていないため、テストイベントに応答する（ステップＳ４１）。
【０１０２】
以上により、複合機１は、テストイベントに対する応答がある場合の復旧処理を実行する。
【０１０３】
次に、実施の形態の複合機１がプログラムに従って実行するテストイベントに対する応答がない場合の復旧処理について説明する。
【０１０４】
図１１は、実施の形態の複合機１が実行する復旧処理の一例を示すシーケンス図である。なお、図１１は、省エネ移行後に画面表示通知がされたために拡張プログラム１３５がデッドロックする場合を示すシーケンス図である。さらに、図１１に示すシーケンス図は、イベントモニタ１３６が送信したテストイベントに対して応答がなかった場合を示している。
【０１０５】
ステップＳ５１からステップＳ５５は、図９に示すシーケンス図のステップＳ１１からステップＳ１５と同様の処理なので省略する。
【０１０６】
次いで、ＯＣＳ１２３は、拡張プログラム１３５に画面表示通知を送信する（ステップＳ５６）。
【０１０７】
次いで、拡張プログラム１３５のイベントＩＤ転送部１３５ｂは、受信した画面表示通知のイベントＩＤをイベントモニタ１３６に転送する（ステップＳ５７）。ここで、拡張プログラム１３５は、省エネ移行時に画面表示通知を受信することは想定外であるためデッドロックする。
【０１０８】
次いで、イベントモニタ１３６のイベント記録部１３６ｂは、受信した画面表示通知のイベントＩＤを記録する（ステップＳ５８）。次いで、イベントモニタ１３６のパターン判定部１３６ｃは、記録したイベントＩＤが、照合パターンと適合するか否かを判定する（ステップＳ５９）。図１１に示すシーケンス図の場合には、照合パターンに設定されたデッドロック条件と適合するのでイベントモニタ１３６の通知部１３６ｄは、拡張プログラム１３５にテストイベントを送信する（ステップＳ６０）。ここで、拡張プログラム１３５は、デッドロックしているためテストイベントに応答しない。
【０１０９】
次いで、拡張プログラム１３５の復旧制御部１３５ｄは、テストイベントに対する応答が一定時間内にないため、拡張プログラム１３５にハングアップシグナルを送信する（ステップＳ６１）。
【０１１０】
次いで、拡張プログラム１３５の復旧制御部１３５ｄは、再起動処理を実行する（ステップＳ６２）。
【０１１１】
以上により、複合機１は、テストイベントに対する応答がなかった場合の復旧処理を実行する。
【０１１２】
次に、実施の形態の複合機１がプログラムに従って実行する機能制限通知を送信する場合の復旧処理について説明する。
【０１１３】
図１２は、実施の形態の複合機１が実行する復旧処理の一例を示すシーケンス図である。なお、図１２は、省エネ移行後に画面表示通知がされたために拡張プログラム１３５がデッドロックする場合を示すシーケンス図である。さらに、図１２に示すシーケンス図は、ＯＣＳ１２３に機能制限通知を送信した場合を示している。
【０１１４】
ステップＳ７１からステップＳ７５は、図９に示すシーケンス図のステップＳ１１からステップＳ１５と同様の処理なので省略する。
【０１１５】
次いで、ＯＣＳ１２３は、拡張プログラム１３５に画面表示通知を送信する（ステップＳ７６）。
【０１１６】
次いで、拡張プログラム１３５のイベントＩＤ転送部１３５ｂは、受信した画面表示通知のイベントＩＤをイベントモニタ１３６に転送する（ステップＳ７７）。ここで、拡張プログラム１３５は、省エネ移行時に画面表示通知を受信することは想定外であるためデッドロックする。
【０１１７】
次いで、イベントモニタ１３６のイベント記録部１３６ｂは、受信した画面表示通知のイベントＩＤを記録する（ステップＳ７８）。次いで、イベントモニタ１３６のパターン判定部１３６ｃは、記録したイベントＩＤの順序が、照合パターンと適合するか否かを判定する（ステップＳ７９）。図１２に示すシーケンス図は、照合パターンに設定されたデッドロック条件と適合するのでイベントモニタ１３６の通知部１３６ｄは、ＯＣＳ１２３に機能制限通知を送信する（ステップＳ８０）。
【０１１８】
次いで、イベントモニタ１３６の通知部１３６ｄは、拡張プログラム１３５にハングアップシグナルを送信する（ステップＳ８１）。次いで、拡張プログラム１３５の復旧制御部１３５ｄは、再起動処理を実行する（ステップＳ８２）。次いで、拡張プログラム１３５の復旧制御部１３５ｄは、再起動完了通知を送信する（ステップＳ８３）。
【０１１９】
次いで、イベントモニタ１３６の通知部１３６ｄは、再起動完了通知を受信した場合に、ＯＣＳ１２３に制限解除通知を送信する（ステップＳ８４）。そして、ＯＣＳ１２３は、制限解除通知を受信した場合に機能制限を解除する。
【０１２０】
以上により、複合機１は、機能制限通知を送信する場合の復旧処理を実行する。
【０１２１】
以上により、実施の形態に係る複合機１によれば、イベントモニタ１３６は、拡張プログラム１３５から転送されたイベントＩＤの順序と、照合パターンに設定されたイベントＩＤの順序とが適合した場合に、拡張プログラム１３５にデッドロックが発生したとしてハングアップシグナルを送信する。そして、拡張プログラム１３５は、イベントモニタ１３６からハングアップシグナルが送信された場合に再起動する。この様に、イベントモニタ１３６は、拡張プログラム１３５に不具合が発生し、デッドロックする場合には、拡張プログラム１３５を再起動させることで復旧させる。従って、実施の形態に係る複合機１は、デッドロックを回避することが可能となり結果的に、拡張プログラム等をバージョンアップすることなく不具合に対策を施すことが可能となる。
【０１２２】
なお、上記には、本発明のいくつかの実施の形態を説明したが、これらの実施の形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これらの新規な実施の形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これらの実施の形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【０１２３】
上記実施形態や変形例の各装置で実行されるプログラムは、各装置が備える記憶媒体（ＲＯＭ又は記憶部）に予め組み込んで提供するものとするが、これに限らないものとする。例えば、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ（Digital  Versatile  Disk）等のコンピュータで読み取り可能な記録媒体に記録して提供するように構成してもよい。さらに、記憶媒体は、コンピュータ或いは組み込みシステムと独立した媒体に限らず、ＬＡＮやインターネット等により伝達されたプログラムをダウンロードして記憶又は一時記憶した記憶媒体も含まれる。
【０１２４】
また、上記実施形態や変形例の各装置で実行されるプログラムをインターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよいし、インターネット等のネットワーク経由で提供又は配布するように構成してもよい。
【０１２５】
なお、上記実施の形態では、本発明の画像形成装置を、コピー機能、プリンタ機能、スキャナ機能およびファクシミリ機能のうち少なくとも２つの機能を有する複合機に適用した例を挙げて説明するが、複写機、プリンタ、スキャナ装置、ファクシミリ装置等の画像形成装置であればいずれにも適用することができる。
【符号の説明】
【０１２６】
１  複合機
１３５  拡張プログラム
１３５ａ  イベント受信部
１３５ｂ  イベントＩＤ転送部
１３５ｃ  イベント実行部
１３５ｄ  復旧制御部
１３６  イベントモニタ
１３６ａ  イベントＩＤ受信部
１３６ｂ  イベント記録部
１３６ｃ  パターン判定部
１３６ｄ  通知部
１２７  アプリインストールサービス
１２７ａ  機能拡張アプリインストール部
１２７ｂ  照合パターンインストール部
【先行技術文献】
【特許文献】
【０１２７】
【特許文献１】特開２００６−２１５７２０号公報
【図１】
2016177450.tif 000003
【図２】
2016177450.tif 000004
【図３】
2016177450.tif 000005
【図４】
2016177450.tif 000006
【図５】
2016177450.tif 000007
【図６】
2016177450.tif 000008
【図７】
2016177450.tif 000009
【図８】
2016177450.tif 000010
【図９】
2016177450.tif 000011
【図１０】
2016177450.tif 000012
【図１１】
2016177450.tif 000013
【図１２】
2016177450.tif 000014