(57)【要約】      （修正有）【課題】有効期限切れで自動的に無効化されたプラグインをライセンス更新した場合に、有効化可能なプラグインの上限数の制限により有効化できない事態の発生を防止し、有効化可能にする。【解決手段】画像形成装置のアプリケーション管理部は、プラグインを無効化する場合、期限切れでの無効化指示のようにライセンス管理部からの指示で行う場合には、該プラグインを無効化するとともに、該プラグインの有効化を予約しておく。アプリケーション管理部は、プラグインを有効化する場合、該プラグインの有効化が予約されている場合には有効化を行い、有効化が予約されていない場合には有効化プラグイン数と有効化予約プラグイン数の合計と有効化可能なプラグインの上限数に基づき有効化を制限する。【選択図】図８
2019191985.tif 000002
【特許請求の範囲】
【請求項１】
第１種別のアプリケーションと、前記第１種別のアプリケーションの機能を拡張するために前記第１種別のアプリケーションに付加される１又は複数の第２種別のアプリケーションをインストール可能な情報処理装置であって、
前記第１種別のアプリケーションに対して有効化可能な第２種別のアプリケーションの上限数を管理する管理手段と、
前記上限数に基づき前記第２種別のアプリケーションの有効化及び無効化を制御する第１制御手段と、
前記有効化されている第２種別のアプリケーションに、所定の条件を満たす第２種別のアプリケーションが存在する場合、該所定の条件を満たす第２種別のアプリケーションの無効化を指示する第２制御手段と、を有し、
前記第１制御手段は、
第２種別のアプリケーションを無効化する場合、該無効化を前記第２制御手段からの指示に応じて行う場合には、該第２種別のアプリケーションを無効化するとともに、該第２種別のアプリケーションの有効化を予約し、
第２種別のアプリケーションを有効化する場合、該第２種別のアプリケーションの有効化が予約されている場合には、有効化を行い、有効化が予約されていない場合には、既に有効化されている第２種別のアプリケーションの数を示す有効化数と有効化を予約されている第２種別のアプリケーションの数を示す有効化予約数の合計と前記上限数に基づき有効化を制限する、
ことを特徴とする情報処理装置。
【請求項２】
前記所定の条件を満たす第２種別のアプリケーションは、ライセンスの切れた第２種別のアプリケーションであり、
前記第２制御手段は、前記ライセンスの切れていた第２種別のアプリケーションのライセンスが更新された場合に、該第２種別のアプリケーションの有効化を指示することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記第２種別のアプリケーションのライセンスは、該第２種別のアプリケーションの契約に基づき付与されるものであり、
前記制御手段は、前記有効化を予約されている第２種別のアプリケーションの契約が終了した場合には、該有効化の予約を解除することを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記第２制御手段は、前記ライセンスに関連する情報を、ネットワークを介して取得することを特徴とする請求項２又は３に記載の情報処理装置。
【請求項５】
前記第１制御手段は、有効化が予約されていない第２種別のアプリケーションを有効化する場合に、前記合計が前記上限数に達している場合であっても、前記有効化数が前記上限に達していない場合には、前記有効化が予約されていない第２種別のアプリケーションを有効化し、該第２種別のアプリケーションの無効化を予約することを特徴とする請求項１〜４のいずれか１項に記載の情報処理装置。
【請求項６】
前記第１制御手段は、有効化が予約されている第２種別のアプリケーションを有効化する場合であっても、前記有効化数が前記上限数に達している場合、前記無効化の予約が存在する場合には、前記無効化を予約された第２種別のアプリケーションを無効化し、前記有効化が予約されている第２種別のアプリケーションを有効化することを特徴とする請求項１〜４のいずれか１項に記載の情報処理装置。
【請求項７】
前記第１制御手段は、前記無効化の予約に基づき第２種別のアプリケーションを無効化する場合に前記無効化の予約が複数存在する場合には、前記第２種別のアプリケーションの優先順位に基づいて無効化を行うことを特徴とする請求項６に記載の情報処理装置。
【請求項８】
前記第１制御手段は、前記優先順位を、前記無効化の予約を行う場合のユーザ指示に基づいて決定することを特徴とする請求項７に記載の情報処理装置。
【請求項９】
前記第１制御手段は、有効化が予約されていない第２種別のアプリケーションを有効化する場合に、前記合計が前記上限数に達している場合であっても、前記有効化数が上限に達していない場合には、前記有効化の予約を解除し、前記有効化が予約されていない第２種別のアプリケーションを有効化することを特徴とする請求項１〜４のいずれか１項に記載の情報処理装置。
【請求項１０】
前記第１制御手段は、前記有効化の予約を解除する場合に前記有効化を予約された第２種別のアプリケーションが複数存在する場合には、ユーザ指示に応じて有効化の予約を解除する第２種別のアプリケーションを決定することを特徴とする請求項９に記載の情報処理装置。
【請求項１１】
前記所定の条件を満たした第２種別のアプリケーションを無効化する場合に有効化の予約を行うか否かの設定を、第２種別のアプリケーションごとに行うための設定手段を有し、
前記制御手段は、前記設定手段による設定に基づいて前記有効化の予約を行うか否かを制御することを特徴とする請求項１〜１０のいずれか１項に記載の情報処理装置。
【請求項１２】
前記設定手段は、前記第２種別のアプリケーションのインストールのタイミングで前記設定を行うことを特徴とする請求項１１に記載の情報処理装置。
【請求項１３】
前記設定手段は、前記設定を変更可能なことを特徴とする請求項１１又は１２に記載の情報処理装置。
【請求項１４】
画像形成装置であることを特徴とする請求項１〜１３のいずれか１項に記載の情報処理装置。
【請求項１５】
第１種別のアプリケーションと、前記第１種別のアプリケーションの機能を拡張するために前記第１種別のアプリケーションに付加される１又は複数の第２種別のアプリケーションをインストール可能であり、前記第１種別のアプリケーションに対して有効化可能な第２種別のアプリケーションの上限数を管理する管理手段と、前記上限数に基づき前記第２種別のアプリケーションの有効化及び無効化を制御する第１制御手段と、前記有効化されている第２種別のアプリケーションに、所定の条件を満たす第２種別のアプリケーションが存在する場合、該所定の条件を満たす第２種別のアプリケーションの無効化を指示する第２制御手段と、を有する情報処理装置の制御方法であって、
第２種別のアプリケーションを無効化する場合、該無効化を前記第２制御手段からの指示に応じて行う場合には、該第２種別のアプリケーションを無効化するとともに、該第２種別のアプリケーションの有効化を予約するステップと、
第２種別のアプリケーションを有効化する場合、該第２種別のアプリケーションの有効化が予約されている場合には、有効化を行い、有効化が予約されていない場合には、既に有効化されている第２種別のアプリケーションの数を示す有効化数と有効化を予約されている第２種別のアプリケーションの数を示す有効化予約数の合計と前記上限数に基づき有効化を制限するステップと、
を有することを特徴とする情報処理装置の制御方法。
【請求項１６】
コンピュータを、請求項１〜１４のいずれか１項に記載の手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像形成装置等の情報処理装置にインストールするアプリケーションの管理に関するものである。
【背景技術】
【０００２】
アプリケーションの開始、停止などアプリケーションのライフサイクルを管理するフレームワークとしてOSGi（Open Services Gateway initiative）AllianceからOSGiフレームワークが提唱されている。OSGiフレームワークでは、アプリケーションの形式をJava（登録商標）の圧縮フォーマットであるjarファイルとして規定している。jarファイルは、複数のクラスファイルをアーカイブとして1つにまとめたものである。jarファイルは、内部にMANIFEST.MFというマニフェストファイルを1つ持っており、jarファイルの説明が記載される。このマニフェストファイルにOSGi仕様の属性を記載することで、記載された属性に従ってOSGiフレームワークはアプリケーションのライフサイクルを管理する。
【０００３】
画像形成装置において、アプリケーションを外部からインストールして搭載することが試みられており、上記OSGiフレームワークに準拠した仕組みを搭載した画像形成装置が普及している。
【０００４】
このようなアプリケーションでは、アプリケーション本体をOSGiの仕様で定義されているホストバンドルとする。また、アプリケーションの修正または拡張部分（拡張アプリケーションプログラム（単に「拡張アプリ」ともいう））を、OSGiの仕様で定義されているフラグメントバンドルとする。フラグメントバンドルとは、単独では動作せず、ホストバンドルのクラスローダ空間にフラグメントバンドル自身を追加（アタッチ）するバンドルである。
【０００５】
アプリケーションの修正または拡張時に、フラグメントバンドル（以下「プラグイン」という）を用いて修正または拡張するようにすれば、開発の効率化やテスト・評価工数の削減の実現が可能となる。
【０００６】
なお、インストール済みのプラグインを全てホストバンドルにアタッチすると、メモリなどのリソースを消費してしまう。このため、プラグインのインストール時にはホストバンドルにアタッチせず、プラグインの利用時にアタッチし（以後「有効化」という）、利用しない場合にアタッチを解除（以後「無効化」という）する方法が提案されている。
【０００７】
また、アプリケーション都合でホストバンドルに対して、同時に有効化可能なプラグインの上限数をホストバンドルのマニフェストファイルに宣言値として記載し、制限することもできる。プラグインを有効化する際に、この宣言値を確認し、上限に達していた場合は有効化できないようにする。
【０００８】
プラグインの期限管理を扱った技術として特許文献１が開示されている。特許文献１では、ライセンスが有効な場合はプラグインをアクティベートし、有効期限の過ぎているプラグインをディアクティベートする技術が提案されている。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２０１１−１８０８８８号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
特許文献１の技術では、上限数分のプラグインが有効化されている状況で有効期限の過ぎているプラグインを無効化すると、プラグインを1つ有効化できる状態になる。その時点で、別のプラグインを有効化すると再び上限数に達する。
【００１１】
なお、プラグインの無効化には、有効期限切れで自動的に無効化される場合と、ユーザが手動で無効化される場合とがある。そして、有効期限切れで自動的に無効化される場合では、その後、ライセンスを更新することで再び有効化して、そのプラグインが使われることが多い。
【００１２】
しかし、上記従来技術では、別のプラグインを有効化したことにより有効化可能なプラグインの上限数に達している場合があり、このような場合には、ライセンスを更新してもそのプラグインを有効化することができないといった課題があった。なお、この課題は画像形成装置に限定されるものではなく、アプリケーションプログラムをプラグインにより拡張可能な情報処理装置に共通の課題である。
【００１３】
本発明は、上記の問題点を解決するためになされたものである。本発明は、有効期限切れでプラットフォームが自動的に無効化したプラグインをライセンス更新した場合に、有効化可能なプラグインの上限数の制限により有効化できない事態の発生を防止し、有効化可能にする仕組みを提供することを目的とする。
【課題を解決するための手段】
【００１４】
本発明は、第１種別のアプリケーションと、前記第１種別のアプリケーションの機能を拡張するために前記第１種別のアプリケーションに付加される１又は複数の第２種別のアプリケーションをインストール可能な情報処理装置であって、前記第１種別のアプリケーションに対して有効化可能な第２種別のアプリケーションの上限数を管理する管理手段と、
前記上限数に基づき前記第２種別のアプリケーションの有効化及び無効化を制御する第１制御手段と、前記有効化されている第２種別のアプリケーションに、所定の条件を満たす第２種別のアプリケーションが存在する場合、該所定の条件を満たす第２種別のアプリケーションの無効化を指示する第２制御手段と、を有し、前記第１制御手段は、第２種別のアプリケーションを無効化する場合、該無効化を前記第２制御手段からの指示に応じて行う場合には、該第２種別のアプリケーションを無効化するとともに、該第２種別のアプリケーションの有効化を予約し、第２種別のアプリケーションを有効化する場合、該第２種別のアプリケーションの有効化が予約されている場合には、有効化を行い、有効化が予約されていない場合には、既に有効化されている第２種別のアプリケーションの数を示す有効化数と有効化を予約されている第２種別のアプリケーションの数を示す有効化予約数の合計と前記上限数に基づき有効化を制限する、ことを特徴とする。
【発明の効果】
【００１５】
本発明によれば、有効期限切れでプラットフォームが自動的に無効化したプラグインをライセンス更新した場合に、有効化可能なプラグインの上限数の制限により有効化できない事態の発生を防止し、有効化可能となる。
【図面の簡単な説明】
【００１６】
【図１】本実施形態の画像形成装置を含むネットワーク構成を例示する図。
【図２】本実施形態の画像形成装置のハードウェア構成図。
【図３】本実施例の画像形成装置、サーバ及び情報端末のソフトウェア構成図。
【図４】ホストバンドル及びプラグインの概念図。
【図５】第１実施形態のインストール済みプラグインの状態管理テーブル例。
【図６】第１実施形態のプラグインの有効化上限数管理テーブル例。
【図７】本実施形態のプラグイン無効化時の処理を例示するフローチャート。
【図８】第１実施形態のプラグイン有効化時の処理を例示するフローチャート。
【図９】第２実施形態のインストール済みプラグインの状態管理テーブル例。
【図１０】第２実施形態のプラグインの有効化上限数管理テーブル例。
【図１１】第３実施形態のアプリケーション管理画面を例示する図。
【図１２】第３実施形態のプラグインの有効化上限数管理テーブル例。
【図１３】第３実施形態のプラグイン有効化時の処理を例示するフローチャート。
【図１４】第４実施形態のプラグインの有効化上限数管理テーブル例。
【図１５】第４実施形態のアプリケーション管理画面例を例示する図。
【発明を実施するための形態】
【００１７】
以下に、図面を参照して、本発明を実施するための形態を例示的に詳しく説明する。ただし、この実施の形態に記載されている構成要素はあくまで例示であり、この発明の範囲をそれらのみに限定する趣旨のものではない。
【００１８】
〔第１実施形態〕
図１は、本発明の情報処理装置の一実施形態を示す画像形成装置を含むネットワーク構成の一例を示す図である。
図１において、画像形成装置101は、複合機やプリンタ等に代表される装置であり、画像を形成する機能を有する。サーバ102は、画像形成装置101にインストールするアプリケーションのライセンスを発行するサーバである。
【００１９】
アプリケーションとは、画像形成装置101上で拡張機能および／または標準機能を利用できるようにするためのソフトウェアプログラムのことである。アプリケーションを利用する権利があることを証明するデータがライセンスであり、そのデータを画像形成装置101に登録し、ライセンスに対応するアプリケーションを有効化することを、ライセンスのインストールと呼ぶ。ユーザは、有効化されたアプリケーションを利用することができる。
【００２０】
なお、アプリケーションを動作させるための実行ファイルは、画像形成装置101のファームウェアにあらかじめ組み込まれていてもよいし、後から画像形成装置101にダウンロードする形式であってもよい。また、サーバ102は、特定のサーバでなくてもよく、例えばクラウド基盤のような不定のサーバ上に存在するサービスであってもよい。
【００２１】
情報端末103は、パーソナルコンピュータ（PC）に代表される情報処理装置である。キーボードやマウス等のポインティングデバイスとディスプレイ、もしくはタッチパネルを介してウェブブラウザを操作することができる。
【００２２】
LAN110は、画像形成装置101と外部のインターネット111をつなぐネットワーク回線である。インターネット111は、画像形成装置101、サーバ102及び情報端末103を通信可能とするネットワーク回線である。LAN110およびインターネット111を介して、画像形成装置101や情報端末103はサーバ102と通信を行うことができる。
【００２３】
本実施形態では、本発明の情報処理装置の一例として画像形成装置101を用いて説明するが、本発明は画像形成装置に限定されるものではなく、アプリケーションプログラムをプラグインにより拡張可能な他の情報処理装置でもよい。本発明を適用可能な情報処理装置として、例えば、ネットワークカメラ、パーソナルコンピュータ、スマートフォン、スマートスピーカー（AIスピーカー）、ネットワークに接続された各種の家電、電子制御機器を複数搭載する車両などが挙げられる。また、各種の家電には、テレビジョン、冷蔵庫、エアーコンディショナー、レコーダー等が含まれる。
【００２４】
図２は、画像形成装置101のハードウェア構成の一例を示すブロック図である。
図２において、CPU201は、プログラムの実行や、様々な処理の制御を行う。不揮発性メモリ202は、ROMから構成され、機器の起動処理において初期段階に必要なプログラムやデータが格納されている。揮発性メモリ203は、RAMから構成され、プログラム、データの一時的な格納場所として利用される。CPU201は、不揮発性メモリ202もしくは後述する補助記憶装置204等に記憶されるプログラムを必要に応じて揮発性メモリ203に読み出して実行することにより各種制御を実現する。
【００２５】
補助記憶装置204は、ハードディスクドライブ（HDD）やソリッドステートドライブ（SSD）等の大容量記憶装置から構成され、大容量データの保管、プログラムの実行コードの保持、画像形成装置101の設定値の保持当を行う。補助記憶装置204では、揮発性メモリ203と比較して、長時間保持する必要があるデータを記憶する。補助記憶装置204は、不揮発性の記憶装置であるため、画像形成装置101の電源が切られてもデータを記憶し続けることができる。
【００２６】
ディスプレイ205は、利用者に情報を伝えるための表示装置（出力装置）であり、例えば操作パネル（不図示）上に設けられる。入力装置206は、利用者の選択指示を受け付け、内部バス212を介してプログラムに伝達するための装置であり、例えば操作パネル上に設けられハードキーやタッチパネル等である。ネットワーク通信装置207は、画像形成装置101がネットワークを介して別の情報機器と通信することを可能とするための装置である。
【００２７】
RTC208は，内蔵電池209によりバッテリバックアップされているため、装置の電源がオフの間も常に日時をカウントすることができ、ユーザによって日時を調整することが可能な所謂リアルタイムクロックと呼ばれる時計である。
プリンタ部210は、印刷データに基づく画像をシートに印刷するためのものである。スキャナ部211は、原稿から画像データを読み取るためのものである。
【００２８】
内部バス212は、各ハードウェア装置（201〜211）を画像形成装置101内で通信可能な状態に接続する通信バスである。
なお、サーバ102および情報端末103のハードウェア構成は、図２の構成からプリンタ部210、スキャナ部211を除いた構成と同様であるので省略する。
【００２９】
図３は、画像形成装置101、サーバ102及び情報端末103のソフトウェア構成の一例を示す図である。
画像形成装置101に実装される各ソフトウェア部は、画像形成装置101において不揮発性メモリ202もしくは補助記憶装置204等に保存され、CPU201にて実行されることで機能を発揮する。また、実行時に使用する各種情報は、画像形成装置101において、揮発性メモリ203もしくは補助記憶装置204等に保持されてソフトウェア間でやり取りされる。
【００３０】
サーバ102や情報端末103に実装される各ソフトウェアも、同様にサーバ102や情報端末103の不図示の不揮発性メモリや補助記憶装置等に保存され、サーバ102や情報端末103のCPUによって実行されることで機能を発揮する。また、実行時に使用する各種情報は、サーバ102や情報端末103の不図示の不揮発性メモリもしくは補助記憶装置等に保持されてソフトウェア間でやり取りされる。
【００３１】
まず、画像形成装置101のソフトウェア構成について説明する。
ライセンス管理部301は、画像形成装置101上で動作するアプリケーションのライセンスをインストールする機能を有する。ライセンスが画像形成装置101にインストールされると、ライセンス管理部301により、不揮発性メモリ202に記憶されたライセンス情報データ（表１）が更新される。表１に、ライセンス情報データの一例を示す。
【００３２】
【表１】
2019191985.tif 000003
【００３３】
また、ライセンス管理部301は、ライセンスの有効期限切れのアプリケーションが存在した場合に、アプリケーション管理部302が提供する機能により、該当するアプリケーションを無効状態にする（以後「無効化」）。ライセンスの更新により有効期限が更新された場合は、アプリケーション管理部302が提供する機能により、該当するアプリケーションを有効状態にする（以後「有効化」）。なお、ライセンス管理部301は、ライセンスに関連する情報を、ネットワークを介してサーバ102から取得する。
【００３４】
アプリケーション管理部302は、画像形成装置101上で動作するアプリケーションのライフサイクルを管理する機能を有する。アプリケーション管理部302は、画像形成装置101上で動作するアプリケーションについて、アプリケーションの名称やバージョン、開始中や停止中、無効状態、有効状態を管理している。例えば、アプリケーション管理部302は、ライセンス管理部301やサーブレット提供部303からの指示に応じて、アプリケーションを有効化／無効化する。
【００３５】
サーブレット提供部303は、例えば、サーブレットコンテナ、サーブレットプログラム等から構成される。例えば情報端末１０３で実行されるウェブブラウザ321からの要求に応じて、サーブレット提供部303は、システム管理者が利用するためのアプリケーションの管理画面(後述の図１１や図１５等)を情報端末１０３のウェブブラウザ321に対して提供する。なお、サーブレット提供部303は、入力装置２０６からのアクセスに応じてディスプレイ２０５にアプリケーションの管理画像を提供することも可能である。システム管理者は、サーブレット提供部303から提供されるアプリケーションの管理画面を介して、アプリケーションのインストールやアンインストール、開始や停止、有効化や無効化、並びにライセンスのインストール等を行うことができる。
【００３６】
アプリケーション実行部304は、画像形成装置101上で有効化されているアプリケーションを実行する機能を有する。アプリケーション実行部304は、例えば、Java仮想マシン（JavaVM）やJITコンパイラ等を含むJavaプラットフォームであり、jarファイルとして提供されるアプリケーションを実行する。
【００３７】
次に、サーバ102のソフトウェア構成について説明する。
ライセンス発行部311は、画像形成装置101にインストールするアプリケーションのライセンスを発行する。ライセンス応答部312は、画像形成装置101や情報端末103からの要求によってライセンス発行部311で発行したライセンスの情報を応答する。なお、ライセンスは、アプリケーション本体（ホストバンドル）のみならず、拡張アプリとしてのプラグイン（フラグメントバンドル）に対してもそれぞれ必要である。なお、プラグインは、アプリケーション本体の機能を拡張するためにアプリケーション本体に付加される種別のアプリケーションである。画像形成装置101は、アプリケーション本体と、１又は複数のプラグインをインストール可能な情報処理装置である。
【００３８】
次に、情報端末103のソフトウェア構成について説明する。
ウェブブラウザ321は、画像形成装置101から提供されるアプリケーションの管理画面を介して、アプリケーションのインストールやアンインストール、開始や停止、有効化や無効化、並びにライセンスのインストール等を行うことができる。
また、ウェブブラウザ321は、サーバ102から提供されるサーバ画面（不図示）を介して、画像形成装置101にインストールするライセンスの発行を要求したり、発行されたライセンスの情報等を取得できる。
【００３９】
図４は、ホストバンドル及びフラグメントバンドル（プラグイン）の概念を説明する図である。
図４では、ホストバンドル401に対して、ローカライズリソースをもつプラグイン402及び403がインストールされる例を示している。
ホストバンドルにプラグインをインストールするためには、以下のマニフェスト、及びバンドルパーミッションの指定が必要となる。
【００４０】
■ホストバンドルのマニフェスト404
Bundle-ManifestVersionには、マニフェストのバージョンを指定する。この例では「2」が指定されている。
Bundle-SymbolicNameには、フレームワーク内で一意な名前を付ける。
【００４１】
■プラグインのマニフェスト406
Bundle-ManifestVersionには、マニフェストのバージョンを指定する。この例では「2」が指定されている。
Fragment-Hostには、ホストバンドルのマニフェスト404に記載の＜ホストのバンドルシンボリック名＞を指定する。
【００４２】
■ホストバンドルのパーミッション405
BundlePermission［バンドルシンボリック名，host］
■プラグインのパーミッション407
BundlePermission［バンドルシンボリック名，fragment］
【００４３】
上記条件を満足する状態で、プラグインを画像形成装置101にインストールすると、アプリケーション管理部302がプラグインのマニフェスト情報からホストバンドルを特定し、ホストバンドルのクラスパスにプラグイン自身のクラスパスの追加を行う。ここで「クラスパス」とは、Javaアプリケーション実行するときに、JavaVMがどの場所からクラスファイルを読み込めばよいかを、指定するためのものである。さらに、ホストバンドルのクラスローダによって、プラグイン内の全てのクラスとリソースがロードされる。ここで、「クラスローダ」とは、クラスのロードやリソースの検索を担当するオブジェクトであり、全てのクラスはクラスローダによってJavaVMにロードされアプリから利用可能となる。このホストバンドルのクラスローダのロードの実行は、ホストバンドル起動時に行われるため、必ずホストバンドルを一度停止し、クラスパスを追加したうえでロードする必要がある。よって、ホストバンドルが停止していないときは、インストールに失敗する。プラグインがインストールされた後は、ホストバンドルの一部として利用可能となる。
【００４４】
図４の例では、プラグインとして日本語リソース402、中国語リソース403が本体であるホストバンドル401にインストールされる。その後、ホストバンドル401が、これらの日本語リソース、中国語リソースを利用して、リソースの言語切り替え可能となる。なお、プラグインでは、このような言語リソースの追加だけでなく、各種の機能の拡張が可能である。
【００４５】
また、プラグインのアンインストールも同様にホストバンドルのクラスパスにプラグイン自身のクラスパスの削除を行い、更に、ホストバンドルのクラスローダによって、再度ホストバンドルに必要なクラスをロードする必要がある。そのため、同様にプラグインのアンインストールは、必ずホストバンドルが停止した状態で行う必要がある。
【００４６】
なお、ホストバンドルのマニフェスト404において、Fragment-MaxCount：＜プラグインの個数＞を指定することで、有効化できるプラグインの個数を制限することができる。
【００４７】
図５は、第１実施形態におけるインストール済みプラグインの状態管理テーブル500の一例を示す図である。なお、インストール済みプラグインの状態管理テーブル500は、アプリケーション管理部302の管理により補助記憶装置204に保持される。
アプリケーション管理部302は、状態管理テーブル500に、インストール済みのプラグインに対する、プラグイン名501、状態502、状態が無効の場合は無効化理由503を登録する。
【００４８】
なお、ライセンスの期限切れにより、ライセンス管理部301がアプリケーション管理部302にプラグインの無効化指示を行った場合には、アプリケーション管理部302は、無効化理由503に「期限切れ」を登録する。
一方、情報端末103からサーブレット提供部303により提供される管理画面を介してプラグインの無効化指示をアプリケーション管理部302に対して行った場合には、アプリケーション管理部302は、無効化理由503に「手動無効化」を登録する。
【００４９】
図６は、第１実施形態におけるプラグインの有効化上限数管理テーブル600の一例を示す図である。なお、プラグインの有効化上限数管理テーブル600は、アプリケーション管理部302の管理により補助記憶装置204に保持される。
図６に示すように、プラグインの有効化上限数管理テーブル600は、有効化可能なプラグインの上限数601、有効化プラグイン602、有効化予約プラグイン603の情報を保持する。
【００５０】
有効化可能なプラグインの上限数601には、ホストバンドル401のインストール時に、アプリケーション管理部302がホストバンドルのマニフェスト404に記載されたFragment-MaxCountの属性値が登録される。
有効化プラグイン602には、プラグインを有効化したタイミングでプラグイン名（ただし、プラグインを識別できる情報であればプラグイン名でなくてもよい）がアプリケーション管理部302により登録される。
【００５１】
有効化予約プラグイン603には、期限切れで無効化したプラグインに対してライセンス更新後にすぐに有効化できるように有効化プラグインの数にカウントしておくために予約しておくプラグインのプラグイン名が登録される。例えば有効化予約プラグイン603には、インストール済みプラグインの状態管理テーブル500で無効化理由に期限切れとなっているプラグインのプラグイン名が、アプリケーション管理部302により登録される。
【００５２】
図６（ａ）に示すプラグインの有効化上限数管理テーブル600の例では、有効化可能なプラグインの上限数が「2」つ、有効化プラグインが「プラグインA」と「プラグインB」の2つであることが示されている。
期限切れによりライセンス管理部301が「プラグインB」を無効化指示すると、図６（ｂ）のように、アプリケーション管理部302は「プラグインB」を無効化して有効化プラグイン602から削除し、有効化予約プラグイン603に登録する。
【００５３】
一方、図６（ａ）に示す状態から、ユーザが情報端末103からサーブレット提供部303が提供するアプリケーションの管理画面を表示し、その画面上から「プラグインB」の無効化指示を行った場合は、図６（ｃ）に示す状態に移行する。すなわち、図６（ｃ）のように、アプリケーション管理部302は「プラグインB」を無効化して有効化プラグイン602から削除するのみであり、有効化予約プラグイン603として登録はしない。
【００５４】
図７は、プラグインが無効化指示された場合にアプリケーション管理部302が行う処理を示したフローチャート図である。すなわち、このフローチャートに示す処理は、画像形成装置101のCPU201が不揮発性メモリ202もしくは補助記憶装置204等に記憶されるプログラムを読み出して実行することにより実現される。
【００５５】
アプリケーション管理部302は、プラグインの無効化指示があった場合に、本フローチャートの処理を開始する（S701）。
S702において、アプリケーション管理部302は、該無効化指示が期限切れによる無効化指示かどうかを判定する。なお、アプリケーション管理部302は、ライセンス管理部301からの無効化指示の場合は「期限切れによる無効化指示」と判断し、サーブレット提供部303からの無効化指示の場合は「手動無効化指示」と判断する。
【００５６】
上記S702において、期限切れによる無効化指示であると判定した場合（S702でYESの場合）、アプリケーション管理部302は、S703に処理を進める。
S703において、アプリケーション管理部302は、該無効化指示されたプラグインを、有効化予約プラグインとして、プラグインの有効化上限数管理テーブル600の有効化予約プラグイン603に記憶し、S704に処理を進める。
【００５７】
一方、上記S702において、期限切れによる無効化指示でない（手動無効化指示）と判定した場合（S702でNOの場合）、アプリケーション管理部302は、そのままS704に処理を進める。
【００５８】
S704において、アプリケーション管理部302は、該無効化指示されたプラグインを無効化し、本フローチャートの処理を終了する（S705）。なお、プラグインの無効化の際、アプリケーション管理部302は、該プラグインを、プラグインの有効化上限数管理テーブル600の有効化プラグイン602から削除する。
【００５９】
なお、上記S702では、期限切れによる無効化指示の場合にはS703に処理を進め、一方、期限切れによる無効化指示でない場合にはS704に処理を進める構成について説明した。しかし、単に、ライセンス管理部301からの無効化指示である場合にはS703に処理を進め、一方、ライセンス管理部301からの無効化指示でない場合にはS704に処理を進めるように構成してもよい。また、ライセンス管理部301は、ライセンス切れ以外の場合にも、アプリケーションがその他の所定の条件を満たす場合にも無効化指示を行ってもよい。
【００６０】
図８は、第１実施形態においてプラグインが有効化指示された場合にアプリケーション管理部302が行う処理の一例を示すフローチャートである。すなわち、このフローチャートに示す処理は、画像形成装置101のCPU201が不揮発性メモリ202もしくは補助記憶装置204等に記憶されるプログラムを読み出して実行することにより実現される。
【００６１】
アプリケーション管理部302は、プラグインの有効化指示があった場合に、本フローチャートの処理を開始する（S801）。
S802において、アプリケーション管理部302は、該有効化指示されたプラグインが有効化予約プラグインかどうかをプラグインの有効化上限数管理テーブル600に基づいて判定する。
【００６２】
そして、該有効化指示されたプラグインが有効化予約プラグインであると判定した場合（S802でYESの場合）、アプリケーション管理部302は、S807に処理を進める。
S807において、アプリケーション管理部302は、上記有効化指示されたプラグインを有効化する。有効化予約プラグインを有効化する場合、アプリケーション管理部302は、プラグインの有効化上限数管理テーブル600の有効化予約プラグイン603から該プラグインを削除し、該プラグインを有効化プラグイン602に登録する。S807の処理の後、アプリケーション管理部302は、本フローチャートの処理を終了する（S809）。
【００６３】
一方、上記S802において、該有効化指示されたプラグインが有効化予約プラグインでないと判定した場合（S802でNOの場合）、アプリケーション管理部302は、S803に処理を進める。
【００６４】
S803において、アプリケーション管理部302は、プラグインの有効化上限数管理テーブル600から有効化プラグイン602を読み込み、(1)有効化プラグイン数（有効化数）を取得する。
次にS804において、アプリケーション管理部302は、プラグインの有効化上限数管理テーブル600から有効化予約プラグイン603を読み込み、(2)有効化予約プラグイン数（有効化予約数）を取得する。
次にS805において、アプリケーション管理部302は、上記S803とS804で取得した(1)有効化プラグイン数と(2)有効化予約プラグイン数を加算し合計を計算する。
【００６５】
次にS806において、アプリケーション管理部302は、上記S805で算出した有効化プラグイン数と有効化予約プラグイン数との合計((1)+(2))が、有効化可能なプラグインの上限数より小さいか否かを判定する。なお、有効化可能なプラグインの上限数は、アプリケーション管理部302が、プラグインの有効化上限数管理テーブル600から有効化可能なプラグインの上限数601を読み込むことで取得する。
【００６６】
上記S806において、有効化プラグイン数と有効化予約プラグイン数との合計が有効化可能なプラグインの上限数より小さいと判定した場合（S806でYESの場合）、アプリケーション管理部302は、S807に処理を進める。S807において、アプリケーション管理部302は、上記有効化指示されたプラグインを有効化する。有効化予約プラグインでないプラグインを有効化する場合、アプリケーション管理部302は、該プラグインを有効化プラグイン602に登録する。S807の処理の後、アプリケーション管理部302は、本フローチャートの処理を終了する（S809）。
【００６７】
一方、上記S806において、有効化プラグイン数と有効化予約プラグイン数との合計が有効化可能なプラグインの上限数より小さくないと判定した場合（S806でNOの場合）、アプリケーション管理部302は、S808に処理を進める。
S808において、アプリケーション管理部302は、上記有効化指示されたプラグインの有効化に失敗したと判断し、本フローチャートの処理を終了する（S809）。この際、アプリケーション管理部302は、サーブレット提供部303に指示し、有効化指示されたプラグインの有効化に失敗した旨をユーザに提示する。なお、有効化指示がライセンス管理部301からの場合、有効化に失敗した旨をディスプレイ205に表示、又は、予め設定されている管理者の連絡先（例えば電子メールアドレス）に通知するようにしてもよい。
【００６８】
以上のように第１実施形態によれば、期限切れによって無効化されたプラグインのライセンスを更新した場合に、有効化可能なプラグインの上限数の制限により有効化できない事態の発生を防止し、ユーザの手間なく自動ですぐに有効化することが可能となる。
【００６９】
〔第２実施形態〕
上記第１実施形態では、期限切れによりライセンス管理部301によってアプリケーション管理部302に無効化指示されたプラグインは、アプリケーション管理部302が無効化予約プラグインとして登録する。その場合、以後、ユーザがそのプラグインを使用しない場合においても、有効化予約プラグインとしてカウントされ続けてしまう。そのため、有効化可能なプラグインが有効化予約プラグインの数だけ減ってしまい、他のプラグインを有効化したい場合であっても有効化できない状況が発生する可能性がある。第２実施形態は、この点を考慮したものである。以下、詳細に説明する。
【００７０】
上述したアプリケーションのライセンスは、契約に沿って発行されるものである。契約は、アプリケーション本体（ホストバンドル）のみならず、拡張アプリとしてのプラグイン（フラグメントバンドル）に対してもそれぞれ行われる。これら契約は、サーバ102で管理される。契約が有効な間（契約期間内）であれば、サーバ102のライセンス発行部311は、その契約に沿ったライセンスの発行が可能である。一方、契約終了（契約切れ）の状態では、サーバ102のライセンス発行部311はライセンスを発行することができない。
【００７１】
なお、契約期間内であっても、ライセンスの更新がなければライセンス切れの状態が発生し、ライセンス発行ができない状態となるが、ライセンスが更新されると再びライセンス発行が可能な状態となる。
また、サーバ102のライセンス応答部312は、契約期間内であれば契約に沿ったライセンス情報を応答で返し、契約終了であれば契約終了を示すライセンス情報を返す。
【００７２】
画像形成装置101のライセンス管理部301は、定期的にサーバ102のライセンス応答部312に対してライセンス情報の取得を要求する。ライセンス応答部312から契約終了のライセンス情報を受け取った場合、ライセンス管理部301は、図９に示すインストール済みプラグインの状態管理テーブル500にその情報を記憶する。第２実施形態では、図５に示したインストール済みプラグインの状態管理テーブル500の代わりに、図９に示すインストール済みプラグインの状態管理テーブル500を用いる。
【００７３】
図９は、第２実施形態におけるインストール済みプラグインの状態管理テーブル500の一例を示す図であり、図５と同一の項目には同一の符号を付してある。第２実施形態のインストール済みプラグインの状態管理テーブル500は、プラグイン名501、状態502、無効化理由503に加えて、契約終了901の情報を保持する。契約期間内の場合には契約終了901に「false」、契約終了の場合には契約終了901に「true」が格納される。
図１０は、第２実施形態におけるプラグインの有効化上限数管理テーブル600の一例を示す図であり、図６と同一の項目で構成されている。
【００７４】
以下、具体例を用いて説明する。
例えば、インストール済みプラグインの状態管理テーブル500の状態が図９（ａ）に示す状態の場合に、プラグインの有効化上限数管理テーブル600が、図１０（ａ）のような状態であったとする。
【００７５】
ライセンス管理部301は、ライセンス応答部312から「プラグインB」に対する「契約終了」のライセンス情報を受け取ると、インストール済みプラグインの状態管理テーブル500において「プラグインB」の契約終了901を「true」に変更する。これにより、インストール済みプラグインの状態管理テーブル500は、図９（ｂ）の状態になる。
【００７６】
アプリケーション管理部302は、「プラグインB」の契約終了901が「true」になったことにより、プラグインの有効化上限数管理テーブル600における有効化予約プラグイン603から「プラグインB」を削除し、図１０（ｂ）のような状態にする。これにより、有効化可能なプラグインの上限数に空きができた状態になる。
図１０（ｂ）の状態で、別のプラグインを有効化しようとした場合、図８で示した処理が実行されるが、有効化可能なプラグインの上限数に空きができたことにより、別のプラグインの有効化が可能となる。
【００７７】
以上説明したように、第２実施形態によれば、期限切れになったプラグインのうち契約終了のプラグインに関しては有効化予約プラグインから削除する（予約を解除する）ように構成する。このため、契約終了したプラグインの代わりに、別のプラグインを有効化できるようになる。これにより、今後有効化する可能性の低い契約終了となったプラグインを有効化可能なプラグインの数の制限から除外でき、有効化可能なプラグインの数の制限により新たにプラグインを有効化できないといった事態の発生を抑えることができる。
【００７８】
〔第３実施形態〕
有効化予約プラグインが存在し、且つ有効化プラグインと有効化予約プラグインの合計が有効化可能なプラグインの上限数に達しているケースがある。このケースにおいて、ユーザは、一時的に別のプラグインを有効化したい場合、もしくは、有効化予約プラグインより優先して別のプラグインを利用したい場合がある。このような場合にプラグインを有効化する手段について、上述した第１実施形態や第２実施形態では示されていない。第３実施形態は、この点を考慮した構成について説明するものである。以下、詳細に説明する。
【００７９】
図１１は、第３実施形態においてサーブレット提供部303が提供するアプリケーション管理画面の一例を示す図である。なお、図１１に示すアプリケーション管理画面は、ウェブブラウザ321やディスプレイ205に表示される。
図１２は、第３実施形態におけるプラグインの有効化上限数管理テーブル600の一例を示す図であり、図６及び図１０と同一の項目で構成されている。
【００８０】
以下、具体例を用いて説明する。
例えば、ユーザがウェブブラウザ321等から、「プラグインC」を有効化する指示を行った場合、有効化プラグイン数が有効化可能なプラグインの上限数に達している場合、サーブレット提供部303は、図１１の画面1101を表示する。なお、その時点のプラグインの有効化上限数管理テーブル600の一例を図１２（ａ）に示す。
【００８１】
例えば、画面1101でユーザが「プラグインCを一時的に有効化する」1110を選択してOKボタン1113を押下したとする。この場合、アプリケーション管理部302が「プラグインC」を一時的に有効化し、サーブレット提供部303が図１１の画面1102を表示する。その時点のプラグインの有効化上限数管理テーブル600の一例を図１２（ｂ）に示す。
【００８２】
この場合、アプリケーション管理部302は、「プラグインC」を、有効化プラグイン602として登録しつつ、無効化予約プラグイン1201としても登録する。無効化予約プラグイン1201とは、一時的に有効化するプラグインであり、有効化予約プラグイン603を有効化する際に無効化されるものである。なお、無効化予約プラグイン（この例では「プラグインC」）は一時的に有効化されたものであり、有効化予約プラグイン（この例では「プラグインB」）のライセンス更新後に無効化される旨が画面1102によりユーザに通知される。
【００８３】
一方、画面1101で「有効化予約を解除するプラグインを選択する」1111を選択し、さらに「プラグインB」1112を選択（ユーザ指示）してOKボタン1113を押下したとする。この場合、アプリケーション管理部302は「プラグインB」の有効化予約を解除して「プラグインC」を有効化し、図１１の画面1103を表示する。その時点のプラグインの有効化上限数管理テーブル600の一例を図１２（ｃ）に示す。
この場合、アプリケーション管理部302は、「プラグインB」を有効化予約プラグイン603から削除し、「プラグインC」を有効化プラグイン602として登録する。
【００８４】
なお、有効化予約プラグイン（この例では「プラグインB」）の予約が解除され、有効化指示されたプラグイン（この例では「プラグインC」）が有効かされた旨が画面1103によりユーザに通知される。さらに、有効化予約プラグインはライセンス更新しても自動的に有効化されないこと、及び、有効化したプラグイン（この例では「プラグインC」）は自動的に無効化されない旨も、画面1103によりユーザに通知される。
【００８５】
なお、画面1101の表示時に、有効化予約プラグインが複数存在する場合には、画面1101の「有効化予約を解除するプラグインを選択する」1111の選択肢（1112）には、有効化予約プラグインが全て表示される。ユーザは、選択肢（1112）から、有効化予約を解除するプラグインを選択（ユーザ指示）することができる。
【００８６】
以下、図１３のフローチャートを用いて、プラグインが有効化指示された場合にアプリケーション管理部302が行う処理について詳細に説明する。
図１３は、第３実施形態においてプラグインが有効化指示された場合にアプリケーション管理部302が行う処理の一例を示すフローチャートである。すなわち、このフローチャートに示す処理は、画像形成装置101のCPU201が不揮発性メモリ202もしくは補助記憶装置204等に記憶されるプログラムを読み出して実行することにより実現される。
【００８７】
アプリケーション管理部302は、プラグインの有効化指示があった場合に、本フローチャートの処理を開始する（S1301）。
S1302〜S1307の処理は、図８のS802〜S807の処理と同一であるので説明を省略する。
なおS1306において、有効化プラグイン数と有効化予約プラグイン数の合計((1)+(2))が有効化可能なプラグインの上限数より小さくないと判定した場合（S1306でNOの場合）、アプリケーション管理部302は、S1308に処理を進める。
【００８８】
S1308において、アプリケーション管理部302は、有効化プラグイン数(1)が有効化可能なプラグインの上限数より小さいか否かを判定する。有効化プラグイン数(1)が有効化可能なプラグインの上限数より小さくないと判定した場合（S806でNOの場合）、アプリケーション管理部302は、S1309に処理を進める。なお、S1309の処理は、図８のS808の処理と同一であるので説明を省略する。
【００８９】
一方、上記S1308において、有効化プラグイン数(1)が有効化可能なプラグインの上限数より小さいと判定した場合（S806でYESの場合）、アプリケーション管理部302は、S1310に処理を進める。
S1310において、アプリケーション管理部302は、サーブレット提供部303に指示して図１１の画面1101を表示するように制御する。S1310の処理の後、アプリケーション管理部302は、本フローチャートの処理を終了する（S1315）。
【００９０】
またS1302において、上記有効化指示されたプラグインが有効化予約プラグインであると判定した場合（S1302でYESの場合）、アプリケーション管理部302は、S1311に処理を進める。
S1311において、アプリケーション管理部302は、プラグインの有効化上限数管理テーブル600から有効化プラグイン602を読み込み、(1)有効化プラグイン数（有効化数）を取得する。
【００９１】
次にS1312において、アプリケーション管理部302は、有効化プラグイン数(1)が有効化可能なプラグインの上限数より小さいか否かを判定する。有効化プラグイン数(1)が有効化可能なプラグインの上限数より小さいと判定した場合（S1312でYESの場合）、アプリケーション管理部302は、S1307に処理を進める。
【００９２】
一方、上記S1312において、有効化プラグイン数(1)が有効化可能なプラグインの上限数より小さくないと判定した場合（S1312でNOの場合）、アプリケーション管理部302は、S1313に処理を進める。
【００９３】
S1313において、アプリケーション管理部302は、無効化予約プラグインが存在するかどうかを図１２に示したプラグインの有効化上限数管理テーブル600の無効化予約プラグイン1201を参照して判定する。無効化予約プラグインが存在しないと判定した場合（S1313でNOの場合）、アプリケーション管理部302は、該有効化指示されたプラグインを有効化することなく、本フローチャートの処理を終了する（S1315）。この際、アプリケーション管理部302は、ライセンス更新されたプラグインの有効化に失敗した旨を、予め設定されている管理者の通知先（例えば電子メールアドレス）に通知するようにしてもよい。
【００９４】
一方、上記S1313において、無効化予約プラグインが存在すると判定した場合（S1313でYESの場合）、アプリケーション管理部302は、S1314に処理を進める。
S1314において、アプリケーション管理部302は、無効化予約プラグイン1201に登録されているプラグインを無効化する。この際、アプリケーション管理部302は、ライセンス更新されたプラグインを有効化するため、一時的に有効化されていたプラグインを無効化した旨を予め設定されている管理者の通知先（例えば電子メールアドレス）に通知するようにしてもよい。上記S1314の処理の後、アプリケーション管理部302は、S1307に処理を進める。
【００９５】
以上のように、第３実施形態によれば、有効化予約プラグインが登録されていて、且つ有効化可能なプラグインの上限数に達している状況でも、有効化予約プラグインの代わりにユーザが一時的に別のプラグインを有効化できる。もしくはユーザが有効化予約プラグインを解除して別のプラグインを利用することができる。
【００９６】
〔第４実施形態〕
図１４は、第４実施形態におけるプラグインの有効化上限数管理テーブル600の一例を示す図である。
図１４に示す状態のプラグインの有効化上限数管理テーブル600には、有効化予約プラグインが複数登録され、無効化予約プラグイン（ユーザが一時的に有効化したプラグイン）が複数登録されている。この場合、上述した第３実施形態の構成では、アプリケーション管理部302は、ライセンスを更新してアプリケーション管理部302が有効化予約プラグインを有効化するタイミングで、どの無効化予約プラグインを優先して無効化すればよいのか判断できない。第４実施形態は、この点を考慮したものである。以下、詳細に説明する。
【００９７】
サーブレット提供部303からの指示でプラグインを有効化する場合であって、有効化予約プラグインが複数存在し且つ無効化予約プラグインがすでに存在する場合について説明する。この場合、図１３のS1310において、アプリケーション管理部302は、サーブレット提供部303に指示し、無効化予約プラグインの一覧を提示して一時的に有効化するプラグインの優先順位を指定する画面（図１５の1501）を表示するように制御する。
【００９８】
図１５は、第４実施形態においてサーブレット提供部303が提供するアプリケーション管理画面の一例を示す図であり、図１１の画面1101と同一のものには同一の符号を付してある。なお、図１５に示すアプリケーション管理画面は、ウェブブラウザ321やディスプレイ205に表示される。
【００９９】
画面1501は、「プラグインA」、「プラグインB」が有効化予約されていて且つ「プラグインD」が無効化予約されている状況で、ユーザが「プラグインC」を新たに有効化しようとした場合に、サーブレット提供部303が表示する画面の例である。この状況において、画面1501が、図１１の画面1101の代わりに表示される。
【０１００】
「プラグインC」を一時的に有効化する場合、優先順位決定欄1510により、一時的に有効化する「プラグインC」と「プラグインD」（有効化済）の優先順位の決定指示（ユーザ指示）を、ユーザに促す。優先順位決定欄1510において、ユーザは、プラグインを選択し、「上へ」ボタン／「下へ」ボタンを用いて、選択されたプラグインの優先順位を上／下に変更する。これにより、一時的に有効化するプラグインの優先順位を決定する。
【０１０１】
ここで、一時的に有効化するプラグインの優先順位を「プラグインC」、「プラグインD」の順にした場合について以下に説明する。この場合、有効化予約プラグインである「プラグインA」もしくは「プラグインB」を有効化する際、アプリケーション管理部302は、複数の無効化予約プラグインのうち「プラグインD」の方を先に無効化するように制御する。
【０１０２】
以上のように、第４実施形態によれば、無効化予約プラグインが複数存在する場合でも、有効化予約プラグインを有効化する時点でどの無効化予約プラグインを無効化するのかを、アプリケーション管理部302が判断できるようになる。これにより、一時的に有効化したプラグインの無効化を、アプリケーション管理部302が自動で、ユーザの希望通りに行うことができるようになる。
【０１０３】
なお、例えばプラグインをインストールするタイミングで、該プラグインを自動で無効化する際に有効化の予約を行うか否かを設定するようにしてもよい。この設定は、サーブレット提供部303が提供する画面を介して、情報端末103又は入力装置206から行うものとする。
また、この設定は、インストールのタイミングだけでなく、インストール後の任意のタイミングで行えるようにしてもよい。
さらに、この設定は、該設定後の任意のタイミングで変更可能なものとする。
【０１０４】
なお、上記実施形態では、アプリケーションの例としてJavaアプリケーションを用いて説明したが、本発明で管理するアプリケーションは、Javaアプリケーションに限定されるものではない。
【０１０５】
以上、各実施形態によれば、プラグインを無効化指示があった場合に期限切れ等によるプラットフォームが自動的に行う無効化指示の場合は、有効化を予約するフラグ情報を付与する。そして、有効化指示があった場合に、フラグ情報を持つプラグインである場合には有効化を行う。このような構成により、有効期限切れ等でプラットフォームが自動的に無効化したプラグインをライセンス更新した場合に、有効化可能なプラグインの上限数の制限により有効化できない事態の発生を防止し、有効化可能となる。よって、プラグインに関するユーザの利便性を向上させることができる。
【０１０６】
なお、上述した各種データの構成及びその内容はこれに限定されるものではなく、用途や目的に応じて、様々な構成や内容で構成されていてもよい。
以上、一実施形態について示したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記憶媒体等としての実施態様をとることが可能である。具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
また、上記各実施形態を組み合わせた構成も全て本発明に含まれるものである。
【０１０７】
（その他の実施形態）
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路（例えば、ASIC）によっても実現可能である。
また、本発明は、複数の機器から構成されるシステムに適用しても、1つの機器からなる装置に適用してもよい。
本発明は上記実施形態に限定されるものではなく、本発明の趣旨に基づき種々の変形（各実施形態の有機的な組合せを含む）が可能であり、それらを本発明の範囲から除外するものではない。即ち、上述した各実施形態及びその変形例を組み合わせた構成も全て本発明に含まれるものである。
【符号の説明】
【０１０８】
101    画像形成装置
102    サーバ
103    情報端末
110    LAN
111    インターネット
【図１】
2019191985.tif 000004
【図２】
2019191985.tif 000005
【図３】
2019191985.tif 000006
【図４】
2019191985.tif 000007
【図５】
2019191985.tif 000008
【図６】
2019191985.tif 000009
【図７】
2019191985.tif 000010
【図８】
2019191985.tif 000011
【図９】
2019191985.tif 000012
【図１０】
2019191985.tif 000013
【図１１】
2019191985.tif 000014
【図１２】
2019191985.tif 000015
【図１３】
2019191985.tif 000016
【図１４】
2019191985.tif 000017
【図１５】
2019191985.tif 000018