(57)【要約】      （修正有）【課題】スムーズにアプリの機能切替を可能とする画像形成装置を提供する。【解決手段】アプリケーション管理手段は、アプリケーションが機能切替のための動作として再起動を指定しているか否かを判定し、前記アプリケーションが機能切替のための動作として再起動を指定していると判定した場合、前記アプリケーションに再起動を指示し、アプリケーションが機能切替のための動作として通知を指定している場合、前記アプリケーション管理手段は、前記アプリケーションに機能切替を通知する。【選択図】図１３
2020154704.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションが機能切替のための動作として再起動を指定している場合、前記アプリケーションに再起動を指示するアプリケーション管理手段を有する画像形成装置。
【請求項２】
前記アプリケーションが機能切替のための動作として通知を指定している場合、前記アプリケーション管理手段は、前記アプリケーションに機能切替を通知する請求項１に記載の画像形成装置。
【請求項３】
前記アプリケーション管理手段は、アプリケーションが機能切替のための動作として再起動を指定しているか否かを判定し、前記アプリケーションが機能切替のための動作として再起動を指定していると判定した場合、前記アプリケーションに再起動を指示する請求項１又は２に記載の画像形成装置。
【請求項４】
前記アプリケーション管理手段は、アプリケーションのマニフェストファイルの記載に基づき、前記アプリケーションが機能切替のための動作として再起動を指定しているか否かを判定する請求項３に記載の画像形成装置。
【請求項５】
前記アプリケーションは、前記マニフェストファイルに前記機能切替の動作として再起動を指定するか否かを記載する請求項４に記載の画像形成装置。
【請求項６】
前記アプリケーション管理手段は、前記機能切替の対象とする項目が更新された場合に、前記アプリケーションの機能の切り替えに関する処理を行う請求項１乃至５の何れか１項に記載の画像形成装置。
【請求項７】
前記アプリケーション管理手段は、前記機能切替の対象とする項目が更新された場合に、前記項目ごとに指定された指示に従い、前記アプリケーションの機能の切り替えに関する処理を行う請求項６に記載の画像形成装置。
【請求項８】
画像形成装置が実行する情報処理方法であって、
アプリケーションが機能切替のための動作として再起動を指定している場合、前記アプリケーションに再起動を指示する情報処理方法。
【請求項９】
コンピュータを、請求項１乃至７の何れか１項に記載の画像形成装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像形成装置、情報処理方法及びプログラムに関する。
【背景技術】
【０００２】
近年、画像形成装置においては、ＪＡＶＡ（登録商標）環境に代表されるようなアプリケーションプログラム（以下「アプリ」と略称する）動作環境が提供されている。ＪＡＶＡの持つプログラムの可搬性を利用して、拡張可能なアプリを提供する技術が提案されている。
画像形成装置の機能及びユーザビィリティの向上を図るために、ＪＡＶＡ環境等の環境下で動作するアプリを作成し、画像形成装置にインストールすることで、アプリにより所望の機能を実現できる。
アプリプラットフォームとしては、組み込み機器向けのＪＡＶＡアプリプラットフォームである、ＯＳＧｉ（Ｏｐｅｎ  Ｓｅｒｖｉｃｅｓ  Ｇａｔｅｗａｙ  Ｉｎｉｔｉａｔｉｖｅ）Ｓｅｒｖｉｃｅ Ｐｌａｔｆｏｒｍ（以下、ＯＳＧｉ）がある。ＯＳＧｉでは、ソフトウェアモジュールの管理単位としてバンドルを定義しており、インストール／開始／停止／更新／アンインストールからなるライフサイクルを管理するための仕様を定義している。ここで、バンドルとは、ＪＡＶＡモジュールのことを指し、本明細書では、アプリと同義である。そのため、以後アプリのことをバンドルと表記する。
一般的に、後からインストールするタイプのバンドルは、セキュリティ及びビジネス上の観点から、暗号化されている。そのため、このバンドルを復号するための鍵情報を含むライセンスと共にインストールを行う。このライセンスには、復号鍵情報以外にも、ライセンス利用期間及びバンドル機能制御情報等のライセンス情報を記載することができる。
【０００３】
次に、このバンドル機能制御情報について述べる。
バンドル機能制御情報とは、バンドルがこの情報を参照することでバンドルが持つ機能を切り替えるための情報である。これにより、同じバンドルをインストールしたままでも、ライセンスを更新するだけで、機能を切り替えることが可能となる。
機能を切り替える方法としては、バンドルの開始時に切り替える方法と、プラットフォームからのライセンス更新通知を受けて切り替える方法の２つの方法が考えられる。前者は、バンドルを開始するためにバンドルの再起動が必要となる。また、後者は、プラットフォームがバンドルにライセンス更新されたことを通知することで、バンドルの再起動なしに直ちにバンドル自身による機能切替を実現できる。特に、ライセンス利用期間変更によるライセンス更新によりバンドルの再起動なしに直ちに利用期間の延長処理を実行できる仕組みが考えられている（特許文献１）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−４０２６２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来技術では、ライセンス更新時にバンドルを再起動させる仕組みがなかった。
【課題を解決するための手段】
【０００６】
本発明の画像形成装置は、アプリケーションが機能切替のための動作として再起動を指定している場合、前記アプリケーションに再起動を指示するアプリケーション管理手段を有する。
【発明の効果】
【０００７】
本発明によれば、スムーズにアプリケーションの機能切替を可能とすることができる。
【図面の簡単な説明】
【０００８】
【図１】画像形成装置のハードウェア構成の一例を示す図である。
【図２】画像形成装置のソフトウェア階層の一例を示す図である。
【図３】バンドル管理サービスのモジュール構成を示す図である。
【図４】ＰＣから画像形成装置へバンドルをインストールする処理を示す図である。
【図５】バンドルのマニフェストファイルとライセンスファイルを示す図である。
【図６】バンドル機能制御情報を参照して機能を切り替えるアプリの例を示す図である。
【図７】方法１において、バンドル開始時にバンドル機能制御情報を参照して機能を切り替える処理を示す図である。
【図８】方法２において、ライセンス更新からバンドルへライセンス更新通知をする処理を示す図である。
【図９】情報処理の一例を示すフローチャートである。
【図１０】マニフェストを示す図である。
【図１１】ライセンス更新からバンドルを再起動する処理を示した図である。
【図１２】バンドルへライセンス更新通知をする処理を示す図である。
【図１３】ライセンス更新時における機能切り替え処理を示すフローチャートである。
【図１４】ライセンスファイルのうち複数の機能の切替を示す図である。
【図１５】バンドル機能制御情報を参照して機能を切り替えるアプリの例を示す図である。
【図１６】バンドル機能制御情報を指定するマニフェストを示す図である。
【図１７】ライセンス更新時における機能切り替え処理を示すフローチャートである。
【図１８】マニフェストを示す図である。
【図１９】バンドルの再起動、又はライセンス更新通知の処理を示すフローチャートである。
【発明を実施するための形態】
【０００９】
以下、本発明の実施形態について図面に基づいて説明する。
【００１０】
＜実施形態１＞
実施形態１では、バンドルの機能を切り替える場合の基本的な処理について述べる。バンドルはアプリケーションの一例である。
図１は、画像形成装置１３０のハードウェア構成の一例を示す図である。
画像形成装置１３０は、スキャナ部１１３及びプリンタ部１１４と電気的に接続され、一方でＬＡＮ１１６を介して外部デバイスと接続される。
ＣＰＵ１０１は、ＲＯＭ１０２に記憶された制御プログラム等に基づいて接続中の各種ハードウェアとのアクセスを統括的に制御し、またコントローラ内部で行われる各種処理についても統括的に制御する。
ＲＯＭ１０２は、読み出し専用の不揮発記憶領域であり、画像形成装置１３０のブートプログラム、ファームウェア等が格納されている。
ＲＡＭ１０３は、ＣＰＵ１０１が動作するためのシステムワークメモリであり、各種データを一時記憶するためのメモリである。このＲＡＭ１０３は、記憶した内容を電源ｏｆｆ後も保持可能なＦＲＡＭ（登録商標）及びＳＲＡＭ、電源ｏｆｆ後に記憶内容が消去されるＤＲＡＭ等により構成される。
【００１１】
ＨＤＤ１０４は、不揮発記憶領域であり、システムバンドル等を格納する。画像形成装置のファームウェアは、ＨＤＤ１０４に格納される。
操作部Ｉ／Ｆ１０５は、システムバス１１９と操作部１１８を接続するインターフェース部である。より具体的には、操作部Ｉ／Ｆ１０５は、操作部１１８に表示するデータをシステムバス１１９から受取り表示すると共に、操作部１１８からの入力情報をシステムバス１１９へ出力する。画像形成装置１３０に対するユーザーの指示や情報提示は、操作部１１８を介して行われる。
ネットワークＩ／Ｆ１０６は、ＬＡＮ１１６、ＷＡＮ１１７及びシステムバス１１９に接続し、外部との情報の入出力を行う。
スキャナＩ／Ｆ１０８は、スキャナ部１１３から受取った画像データに対して、補正、加工、及び編集を行う。
画像形成部１０９は、画像データの方向変換、画像圧縮、伸張部等を行う。
プリンタＩ／Ｆ１１０は、画像形成部１０９から送られた画像データを受取り、画像形成後にプリンタ部１１４にて印刷する。
【００１２】
図２は、画像形成装置１３０のソフトウェア階層２００の一例を示す図である。
図２以降に示す各ソフトウェアはＲＯＭ１０２、又は、ＨＤＤ１０４に保存され、ＣＰＵ１０１にて実行される。また、実行時に使用される各種情報はＲＡＭ１０３又はＨＤＤ１０４に保持され、ソフトウェア機能間で各種情報のやりとりが行われる。更に外部機器との通信は、ネットワークＩ／Ｆ１０６を用いて通信が行われる。
次に各ソフトウェアの説明をする。ソフトウェアは、まずオペレーティングシステム（ＯＳ）プラットフォーム２０１を有する。
ＵＩ２０２は、ユーザインタフェースモジュールであり、オペレータが画像形成装置１３０に対する各種操作、設定を行う際に、装置とユーザー操作との仲介を行うモジュールである。ＵＩ２０２は、オペレータの操作に従い、各種モジュールに入力情報を転送して処理の依頼、或いはデータの設定変更等を行う。
【００１３】
次に、ＪＡＶＡ側の構成について述べる。
ＪＡＶＡ側のソフトウェアプラットフォームは、ＪａｖａＶＭ２０７のランタイム環境として構成されており、インタプリタとしてのＪａｖａＶＭ２０７、ライブラリ２０８、フレームワーク群２０９で構成される。ライブラリ２０８は、標準のＡＰＩライブラリを含んで構成される。フレームワーク群２０９は、ＯＳＧｉ２１０を含んで構成され、このＯＳＧｉ２１０は、単一のＪａｖａＶＭ２０７に複数のバンドルを動作させる。更に、ＯＳＧｉ拡張部２１１は、インターフェース仕様であるＯＳＧｉ２１０に対する実装部分を担うモジュールである。ＯＳＧｉ拡張部２１１は、ＯＳＧｉ２１０の仕様を満たす範囲で必要に応じて機能を拡張可能であることを示す。このＯＳＧｉ２１０、及びＯＳＧｉ拡張部２１１は、バンドルのライフサイクルの管理及びバンドル間通信機能等を提供する。
このＯＳＧｉ２１０上には、複数のシステムバンドル群２１２がある。システムバンドル群２１２としては、コピー、スキャン、プリント等（不図示）の画像形成装置１３０の基本的な組み込み機能、及び、複数のバンドルを管理し、新たなバンドルの追加、更新、削除をするためのバンドル管理サービス２１４がある。インストールＩＦサービス２１３は、ＰＣからのインストール指示を受信する受け口でもある。より具体的には、サーブレットの提供、又は、ＷｅｂサービスのＡＰＩが提供される。このインストールＩＦサービス２１３を通じてインストール指示を受診したバンドル管理サービス２１４は、バンドルの追加、更新を行う。バンドル管理サービス２１４は、アプリケーション管理サービスの一例である。
【００１４】
一方、後からインストールするタイプの後入れバンドル群２１７がある。後入れバンドル群２１７の代表として、バンドル２１９は、画像形成装置１３０において各種機能をユーザーに提供する。例えば、画像の加工機能、認証管理機能、印刷制限等の部門管理機能等さまざまな機能がある。
各種機能を実現する後入れバンドル２１９は、バンドル管理サービス２１４の管理下で動作する。バンドル管理サービス２１４は、管理下に追加されたバンドルのバージョンを含むバンドル情報、ライセンス情報等を保持している。
【００１５】
図３は、バンドル管理サービス２１４のモジュール構成を示す図である。
インストール制御部３００は、バンドルのインストールを制御するモジュールである。より具体的には、インストール制御部３００は、暗号化されたバンドルをライセンスファイルにより復号化し、それをＯＳＧｉ拡張部２１１に渡し、バンドルを画像形成装置１３０に追加する処理を行うモジュールである。
ライセンス管理部３０１は、バンドルのライセンスを管理するモジュールである。ライセンス管理部３０１は、インストール時に使用したライセンスを後述するライセンス情報格納部４０４に格納して一元管理する。ライセンス管理部３０１は、管理されたライセンス情報を、バンドルからの問い合わせにより、開示できる。ライセンス管理部３０１は、ライセンス更新時にライセンス更新トリガーを機能切替管理部３０４に通知する役目もある。
ライセンス更新部３０２は、ライセンスの利用期間が切れそうになると自動的にライセンスサーバーにライセンスを取得にいくモジュールである。
バンドル管理部３０３は、バンドルを管理するモジュールである。バンドル管理部３０３は、バンドルへ開始、停止指示を行う。バンドル管理部３０３は、インストール済みのバンドルのマニフェスト値を取得可能である。
機能切替管理部３０４は、ライセンスが更新される前後でライセンス情報が更新されたかどうか、どの内容が更新されたか等を検知するモジュールである。
ライセンス更新通知部３０５は、バンドルへライセンス更新イベントを通知するモジュールである。
【００１６】
図４は、ユーザーが、ＰＣ４００から画像形成装置１３０へ、バンドルをインストールする処理を示す図である。
ユーザーは、ＰＣ４００のインストールＵＩ４０１からインストールしたいバンドル２１９とそれに対応したライセンスファイル４０３を指定し、インストールＩＦサービス２１３へインストール指示を行う。このときバンドル２１９は、自身についてのメタ情報等を記載したマニフェストファイル４０２を保持している。バンドルインストール指示を受信したインストールＩＦサービス２１３は、それをバンドル管理サービス２１４のインストール制御部３００に渡す。バンドルファイルとライセンスを受信したインストール制御部３００は、暗号化されたバンドル２１９をライセンスファイル４０３の復号化鍵を使用して復号化を行う。そして、インストール制御部３００は、復号化したバンドルのインストールをＯＳＧｉ拡張部２１１に依頼する。ＯＳＧｉ拡張部２１１は、バンドルをＨＤＤ１０４の決められた領域であるバンドル格納部４０５に格納してインストールを行う。インストールされたアプリは、バンドル管理部３０３によって管理される。
一方、インストール制御部３００は、ライセンスについては、ライセンス管理部３０１にライセンス情報の管理を依頼する。ライセンス管理部３０１は、ライセンスをＨＤＤ１０４の決められた領域であるライセンス情報格納部４０４に格納して管理する。こうして管理されたライセンスは、バンドルがライセンス管理部３０１を通じて問い合わせることで、自身のライセンス情報の中身を取得することができる。
【００１７】
図５は、バンドルのマニフェストファイル４０２とライセンスファイル４０３を示す図である。
ライセンスファイル４０３には、このライセンスファイルが対応するアプリのアプリＩＤ５０１が記載されている。一方、マニフェストファイル４０２には、そのアプリのアプリＩＤ５００が記載されている。これらのアプリＩＤの紐付けによりアプリが自分自身のライセンス情報の中身を取得できる。
更に、ライセンスファイル４０３には、このライセンスファイルでインストール可能な画像形成装置１３０のシリアル番号５０２が記載されている。
復号化用鍵情報５０３は、バンドルインストール時にバンドルを復号化するために利用される。
Validated-Periodは、ライセンス利用期間５０４を示す。３０と書かれていれば、インストールしてから３０日間利用可能なことを示す。
LicenseInfoは、バンドル機能制御情報５０５である。LicenseInfoの値が0の場合、アプリの切り替えたい機能は無効となる。一方、LicenseInfoの値が1の場合、アプリのその機能は有効となる。この切り替えたい機能の例について図６で述べる。
【００１８】
図６は、バンドル機能制御情報５０５を参照して機能を切り替えるアプリの例を示す図である。
このアプリは基本機能を指定できるタブ６００と、更に詳細設定を指定できるタブ６０１の２つのタブで構成されている。このうち、詳細設定を指定できるタブ６０１は、バンドル機能制御情報５０５のLicenseInfoの値が1のときにのみ表示されるもの（６０２）とする。
ここで、バンドル機能を切り替える方法としては、次の２つの方法がある。
方法１：ライセンス更新後のバンドル開始時に機能を切り替える。これについては、図７で詳細を示す。
方法２：プラットフォームからライセンス更新通知を受け、そのライセンス更新通知を受けたバンドル自身が機能を切り替える。これについては、図８、９で詳細を示す。
【００１９】
図７は、方法１において、バンドル開始時にバンドル機能制御情報５０５を参照して機能を切り替える処理を示す図である。
ユーザーは、ＰＣ４００のインストールＵＩ４０１から開始したいバンドルを指定し、インストールＩＦサービス２１３へ開始指示（Ｓ７００）を行う。開始指示（Ｓ７００）を受信したインストールＩＦサービス２１３は、更にバンドル管理サービス２１４のバンドル管理部３０３に開始指示（Ｓ７０１）する。バンドル開始指示を受信したバンドル管理部３０３は、自身が管理している中から指定されたバンドルを取得し、ＯＳＧｉ拡張部２１１を通じて、バンドルに対して開始指示（Ｓ７０２、Ｓ７０３）を行う。バンドル格納部４０５で管理される開始指示を受信したバンドルは、バンドル管理サービス２１４のライセンス管理部３０１に自身のライセンスに関するバンドル機能制御情報５０５を問い合わせる（Ｓ７０４）。バンドルからの問い合わせを受信したライセンス管理部３０１は、自身が管理するライセンス情報格納部４０４から指定されたバンドルに紐付くライセンスに記載されたバンドル機能制御情報５０５の値を取得して、バンドルに回答する。回答を受信したバンドルは、自身の開始処理の中で、バンドル機能制御情報５０５の０／１の値に従って、有効にする機能を選択し、起動する。
【００２０】
図８は、方法２において、ライセンス更新からバンドルへライセンス更新通知をする処理を示す図である。
ライセンス更新通知を受けたいバンドル２１９は、自身の開始時にライセンス更新通知部３０５にリスナー登録を行っておく（Ｓ８１０）。ライセンス更新通知部３０５は、リスナー登録しているバンドルのライセンスが更新されたときに、そのバンドルへライセンス更新通知を行う。
【００２１】
ライセンスの更新は手動更新と自動更新の二通りの方法がある。
最初に、手動でのライセンス更新の処理は以下のようになる。ユーザーは、ＰＣ４００のライセンス更新ＵＩ８０１から予め手元に用意した更新したいライセンスを指定し、インストールＩＦサービス２１３へライセンス手動更新指示（Ｓ８１１）を行う。ライセンス更新指示（Ｓ８１１）を受信したインストールＩＦサービス２１３は、バンドル管理サービス２１４のインストール制御部３００にライセンス更新指示（Ｓ８１２）を行う。
一方で、自動でのライセンス更新の処理は以下のようになる。ライセンス更新部３０２は、ライセンスの利用期間が切れそうになると自動的に外部のライセンスサーバー８０２に更新したいライセンス８０３を取得しにいく（Ｓ８１３）。ライセンス更新部３０２は、取得したライセンスをバンドル管理サービス２１４のインストール制御部３００に渡し、ライセンス更新指示（Ｓ８１４）を行う。
ライセンス更新指示（Ｓ８１２／Ｓ８１４）を受信したインストール制御部３００は、ライセンス管理部３０１にライセンス更新指示（Ｓ８１５）を行う。ライセンス更新指示（Ｓ８１５）を受信したライセンス管理部３０１は、ライセンス情報格納部４０４にあるライセンスを更新する。更に、ライセンス管理部３０１は、ライセンス更新通知部３０５に、ライセンス更新のトリガーをかける（Ｓ８１６）。ライセンス更新のトリガーを受信したライセンス更新通知部３０５は、バンドル２１９にライセンス更新を通知する（Ｓ８１９）。
【００２２】
図９（ａ）は、ライセンス更新トリガーを受信したライセンス更新通知部３０５の処理を示すフローチャートである。
ライセンス更新通知部３０５は、ライセンス更新トリガーを受信すると、更新通知処理をスタートさせる。Ｓ９０１において、ライセンス更新通知部３０５は、更新されたライセンスに紐付くバンドル２１９からのリスナー登録があるかどうかを確認する。ライセンス更新通知部３０５は、リスナー登録がある場合、Ｓ９０２に進む。Ｓ９０２において、ライセンス更新通知部３０５は、更新されたライセンスに紐付くバンドル２１９にライセンス更新通知イベントを投げる。そして、ライセンス更新通知部３０５は、更新通知処理を終了する。一方、Ｓ９０１において、リスナー登録されていない場合、ライセンス更新通知部３０５は、更新通知処理を終了する。
【００２３】
図９（ｂ）は、ライセンス更新通知を受信したバンドル２１９が機能を切り替える処理を示すフローチャートである。
バンドル２１９は、ライセンス更新通知を受信すると、機能切替の処理をスタートさせる。Ｓ９１１において、バンドル２１９は、ライセンス更新通知と共に、ライセンス更新通知部３０５から送られてきた、変更されたLicenseInfoの一覧情報の配列でループ処理を行う。Ｓ９１２において、バンドル２１９は、ライセンス管理部３０１にLicenseInfoの値を問い合わせその値が1かどうかを判定する。Ｓ９１３において、値が1だった場合、バンドル２１９は、Ｓ９１４に進む。Ｓ９１４において、バンドル２１９は、LicenseInfo(N)に対応した機能Nを有効にし、Ｓ９１５に進む。一方、Ｓ９１３において、値が0だった場合は、バンドル２１９は、Ｓ９１５に進む。Ｓ９１５において、バンドル２１９は、LicenseInfoの一覧情報のループが全て終了していない場合は、Ｓ９１１に戻る。ループが終了した場合は、バンドル２１９は、機能を切り替える処理を終了する。
以上が、バンドル２１９の機能を切り替えるための２つの方法である。
【００２４】
機能切り替えのために、これら２つの方法のどちらを利用するかは、バンドル２１９の仕様に依存する。
例えば、方法１を利用するケースとしては、シンプルＵＩモードから詳細指定ＵＩモードへの切り替えのように、異なる機能に切り替える場合である。一方、方法２を利用するケースは、比較的小さな機能切り替えのケースやバンドル２１９を再起動させずに機能を切り替えたいケースである。
どちらにしてもバンドル２１９の仕様依存であるためバンドル２１９自身がどちらの方法を所望しているかを宣言できるとバンドル２１９の開発的にも効率的となる。
次にこの効率化のための宣言について述べる。
【００２５】
図１０は、実施形態１におけるライセンス更新時にバンドル２１９が所望するアクションを指定するマニフェストを示す図である。
マニフェストファイル４０２には、ライセンス更新時の機能切替の方法を指定する、ActionForFunctionChange１０００は、RebootかNotificationを指定可能である。
Rebootが指定された場合、機能切り替えのためにバンドル２１９を再起動することを所望していることを示す。バンドル再起動によりバンドル開始処理が走り、方法１による機能切替に相当する。
Notificationが指定された場合、機能切り替えのためにプラットフォームからの更新通知を所望していることを示す。これは、方法２による機能切替に相当する。
【００２６】
図１１は、実施形態１におけるライセンス更新からバンドル２１９を再起動する処理を示した図である。
ライセンス更新（Ｓ８１１／Ｓ８１３）からライセンス管理部３０１がライセンス更新指示（Ｓ８１５）を受信し、ライセンス管理部３０１は、ライセンス情報格納部４０４にあるライセンスを更新するまでは、図８で示したのと同じであるため、省略する。
ライセンス管理部３０１は、機能切替管理部３０４に、ライセンス更新のトリガーをかける（Ｓ１１００）。ライセンス更新のトリガーを受信した機能切替管理部３０４は、バンドル管理部３０３に更新されたライセンスに紐付くバンドル２１９が指定しているActionForFunctionChange１０００を取得する（Ｓ１１０１）。そのActionForFunctionChange１０００の値がRebootだった場合、機能切替管理部３０４は、バンドル管理部３０３に更新されたライセンスに紐付くバンドル２１９の再起動を依頼する（Ｓ１１０２）。バンドル２１９の再起動を依頼されたバンドル管理部３０３は、バンドル２１９に再起動をかける（Ｓ１１０３）。これにより、バンドル２１９は、開始処理が走るため、方法１で示した方法で機能を切り替えることができる。
【００２７】
図１２は、実施形態１におけるライセンス更新からバンドル２１９へライセンス更新通知をする処理を示す図である。
ライセンス更新（Ｓ８１１／Ｓ８１３）からライセンス管理部３０１がライセンス更新指示（Ｓ８１５）を受信し、機能切替管理部３０４がActionForFunctionChange１０００を取得する（Ｓ１１０１）までは、図１１で示したのと同じであるため、省略する。
そのActionForFunctionChange１０００の値がNotificationだった場合、機能切替管理部３０４は、ライセンス更新通知部３０５に、ライセンス更新のトリガーをかける（Ｓ１２００）。ライセンス更新のトリガーを受信したライセンス更新通知部３０５は、図８と同様に、バンドル２１９にライセンス更新を通知する（Ｓ８１９）。
【００２８】
図１３は、実施形態１におけるバンドル管理サービスにおけるライセンス更新時における機能切り替え処理を示すフローチャートである。
機能切替管理部３０４は、ライセンス更新トリガーを受信すると、処理をスタートさせる。Ｓ１３０１において、機能切替管理部３０４は、機能切り替えのためのアクション情報１０００の値を確認する。この値がReboot指定だった場合、機能切替管理部３０４は、Ｓ１３０２に進む。一方、Notificationだった場合、機能切替管理部３０４は、Ｓ１３０３に進む。Ｓ１３０２において、機能切替管理部３０４は、更新されたライセンスに紐付くバンドル２１９を再起動する。Ｓ１３０３において、ライセンス更新通知部３０５は、更新されたライセンスに紐付くバンドル２１９からのリスナー登録があるかどうかを確認する。リスナー登録がある場合、ライセンス更新通知部３０５は、Ｓ１３０４に進む。Ｓ１３０４において、ライセンス更新通知部３０５は、更新されたライセンスに紐付くバンドル２１９にライセンス更新通知イベントを投げ、機能切り替え処理を終了する。一方、Ｓ１３０３において、リスナー登録されていない場合、ライセンス更新通知部３０５は、機能切り替え処理を終了する。Ｓ１３０１の処理は、判定の処理の一例である。図１３のフローチャートは、情報処理の一例である。
【００２９】
以上、実施形態１で示した方法により、具体的には以下に示すような効果を得ることができる。
アプリのマニフェストにライセンス更新時の機能切替処理のためにライセンス更新通知か再起動のどちらを所望しているかを指定できるようにすることで、スムーズにアプリの機能切替が可能となる。
本実施形態では、機能を切り替えるトリガーとしてライセンスの更新を例に挙げたが、機能切替のトリガーとしてはライセンス更新に限定されるものではなく、何らか他の機能切替指示でも同じ動作をする。
【００３０】
（変形例）
実施形態１では、バンドル２１９が機能を切り替える方法として、マニフェストに再起動か更新通知のどちらかをバンドル単位で指定可能な例を示した。一方、変形例では、機能切替の対象が複数ある場合について述べる。また、複数ある機能ごとに、機能切り替えのためのアクションを指定したいケースについても述べる。
【００３１】
図１４は、図５で説明したライセンスファイル４０３のうち複数の機能の切替を示す図である。
５０１〜５０４までは、図５で示したのと同じであるため、省略する。
LicenseInfo1〜LicenseInfo3は、バンドル機能制御情報１４００である。LicenseInfo(N)は機能Nに対応する。LicenseInfo(N)の値が0の場合、その機能Nは無効となる。一方、LicenseInfo(N)の値が1の場合、その機能Nは有効となる。
【００３２】
図１５は、バンドル機能制御情報１４００を参照して機能を切り替えるアプリの例を示す図である。
このアプリは３つのタブから構成されている。この中のタブN(１：１５００、２：１５０１、３：１５０２)は、１５０３〜１５０５で示すように、バンドル機能制御情報１４００のLicenseInfo(N)の値が1のときに表示されるものとする。
図１６は、機能切替に利用しているバンドル機能制御情報１４００を指定するマニフェストを示す図である。ReferenceLicenseInfo１６００は、自身が機能切り替えのために利用しているLicenseInfo(N)を指定する。このケースの場合、このバンドル２１９は、LicenseInfo2とLicenseInfo3を利用していることを宣言している。
【００３３】
図１７は、変形例におけるバンドル管理サービスにおけるライセンス更新時における機能切り替え処理を示すフローチャートである。
機能切替管理部３０４は、ライセンス更新トリガーを受信すると、処理をスタートさせる。Ｓ１７０１において、機能切替管理部３０４は、バンドル２１９が利用しているバンドル機能制御情報１６００（ReferenceLicenseInfo）が１つ以上変更されたかどうかを確認する。１つ以上変更されていた場合、機能切替管理部３０４は、Ｓ１３０１に進む。一方、Ｓ１７０１において、１つも変更されていなかった場合、機能切替管理部３０４は、Ｓ１７０２に進む。
この後の、Ｓ１３０１〜Ｓ１３０４までは、図１３で示したのと同じであるため、省略する。
ここまでで示した方法により、アプリが機能切替のために利用しているアプリ機能切替情報をマニフェストで指定可能とすることで、アプリ側の無駄な処理を実行しなくて済む。更に、ここからは、複数ある機能ごとに、機能切り替えのためのアクションを指定したいケースについても述べる。
【００３４】
図１８は、変形例におけるライセンス更新時にバンドル２１９が所望するバンドル機能制御情報１４００ごとにアクションを指定できるマニフェストを示す図である。
１８００において、ReferenceLicenseInfo１８００は、自身が機能切り替えのために利用しているLicenseInfo(N)を指定する。更に、それぞれのLicenseInfo(N)に関連する機能を切り替えるときに必要なアクション（RebootかNotification）を指定する。この指定の意味は、図１０で示したものと同じである。ReferenceLicenseInfo１８００は、機能切替の対象とする項目の一例である。
【００３５】
図１９は、変形例におけるライセンス更新時にバンドル機能制御情報１８００ごとに指定されたアクションによりバンドル２１９の再起動、又はライセンス更新通知の処理を示すフローチャートである。
機能切替管理部３０４は、ライセンス更新トリガーを受信すると、処理をスタートさせる。Ｓ１９０１において、機能切替管理部３０４は、バンドル２１９が利用しているバンドル機能制御情報１６００（ReferenceLicenseInfo）が１つ以上変更されたかどうかを確認する。１つ以上変更されていた場合、機能切替管理部３０４は、Ｓ１９０２に進む。一方、Ｓ１９０１において、１つも変更されていなかった場合、機能切替管理部３０４は、Ｓ１９０７に進む。Ｓ１９０２において、機能切替管理部３０４は、バンドル機能制御情報１８００を参照する。機能切替管理部３０４は、この１８００において、変更されたバンドル機能切替情報のアクションに１つ以上Rebootが指定されているかどうかを確認する。１つ以上指定されている場合、機能切替管理部３０４は、Ｓ１９０３に進む。Ｓ１９０３において、機能切替管理部３０４は、更新されたライセンスに紐付くバンドル２１９を再起動し、Ｓ１９０７に進む。一方、Ｓ１９０２において、変更されたバンドル機能切替情報のアクションにRebootが１つも指定されていない場合、機能切替管理部３０４は、Ｓ１９０４に進む。Ｓ１９０４においても、機能切替管理部３０４は、バンドル機能制御情報１８００を参照する。機能切替管理部３０４は、この１８００において、変更されたバンドル機能切替情報のアクションに１つ以上Notificationが指定されているかどうかを確認する。１つ以上指定されている場合、Ｓ１９０５に進む。一方、Ｓ１９０４において、１つも指定されていない場合、機能切替管理部３０４は、Ｓ１９０７に進む。Ｓ１９０５において、ライセンス更新通知部３０５は、更新されたライセンスに紐付くバンドル２１９からのリスナー登録があるかどうかを確認する。リスナー登録がある場合、ライセンス更新通知部３０５は、Ｓ１９０６に進む。Ｓ１９０６において、ライセンス更新通知部３０５は、更新されたライセンスに紐付くバンドル２１９にライセンス更新通知イベントを投げ、機能切り替え処理を終了する。一方、Ｓ１９０５において、リスナー登録されていない場合、ライセンス更新通知部３０５は、機能切り替え処理を終了する。
【００３６】
以上、変形例で示した方法により、バンドル機能制御情報１８００毎にアクションを指定できることで、機能切替のためのより細かい制御が可能となる。
【００３７】
＜その他の実施形態＞
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給する。そして、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読み出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【００３８】
以上、本発明の実施形態の一例について詳述したが、本発明は係る特定の実施形態に限定されるものではない。
【００３９】
以上、上述した各実施形態によれば、アプリのマニフェストにライセンス更新時の機能切替処理のためにライセンス更新通知か再起動のどちらを所望しているかを指定できるようにすることで、機能切替のために再起動が必要な場合でも、スムーズにアプリの機能切替が可能となる。また、アプリが機能切替のために利用しているアプリ機能切替情報をマニフェストで指定可能とすることで、アプリ側の無駄な処理を実行しなくて済む。
【符号の説明】
【００４０】
１０１  ＣＰＵ
１３０  画像形成装置
【図１】
2020154704.tif 000003
【図２】
2020154704.tif 000004
【図３】
2020154704.tif 000005
【図４】
2020154704.tif 000006
【図５】
2020154704.tif 000007
【図６】
2020154704.tif 000008
【図７】
2020154704.tif 000009
【図８】
2020154704.tif 000010
【図９】
2020154704.tif 000011
【図１０】
2020154704.tif 000012
【図１１】
2020154704.tif 000013
【図１２】
2020154704.tif 000014
【図１３】
2020154704.tif 000015
【図１４】
2020154704.tif 000016
【図１５】
2020154704.tif 000017
【図１６】
2020154704.tif 000018
【図１７】
2020154704.tif 000019
【図１８】
2020154704.tif 000020
【図１９】
2020154704.tif 000021