(57)【要約】      （修正有）【課題】バンドルをアンイストールすることなくユーザーにバンドルを利用させない仕組みを提供する。【解決手段】アプリを停止した後、特定の権限を持つ指示者からアプリのロック指示を受けると、停止状態を維持して状態遷移を許可しない。それにより、画像形成装置内にアプリの状態を維持したまま、アプリを利用開始することができなくなり、ユーザーがアプリの利用を再開することが不可能になる。更に、アプリの再利用を許可する場合に負荷をかけずに原状回復が可能となる。またユーザーデータも削除せずに再利用できる。【選択図】図６
2018097797.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションを実行できる情報処理装置であって、
ロック指示に応じて、指定されたアプリケーションの状態を、他の状態への遷移を許さないロック状態に変更するロック手段と、
権限を有する指示元からのロック解除指示に応じて、指定されたアプリケーションのロック状態を解除するロック解除手段と
を有することを特徴とする情報処理装置。
【請求項２】
前記ロック手段は、前記ロック指示が権限を有する指示元からの指示である場合に、前記指定されたアプリケーションの状態を前記ロック状態に変更することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記ロック解除手段は、前記ロック解除指示の指示元が、ロック状態を解除する対象のアプリケーションの状態をロック状態に変更した指示の指示元と同じ場合に、前記指定されたアプリケーションのロック状態を解除することを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
前記ロック手段は、前記指定されたアプリケーションが停止中または停止状態にある場合に、前記アプリケーションの状態を前記ロック状態に変更できることを特徴とする請求項１乃至３のいずれか一項に記載の情報処理装置。
【請求項５】
前記ロック手段は、前記指定されたアプリケーションが開始中または開始状態にある場合にも、前記アプリケーションの状態を前記ロック状態に変更できることを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記アプリケーションをアンインストールする手段をさらに有し、
前記ロック状態の前記アプリケーションは、アンインストールさせないことを特徴とする請求項１乃至５のいずれか一項に記載の情報処理装置。
【請求項７】
前記アプリケーションは、その使用に対して課金されたアプリケーションであることを特徴とする請求項１乃至６のいずれか一項に記載の情報処理装置。
【請求項８】
バンドルの識別情報と、ロック状態であるか否かを示す情報とを関連付けた状態管理データをさらに有し、
前記ロック手段は、前記指定されたアプリケーションを前記ロック状態に変更した場合には、前記ロック状態に変更したアプリケーションの識別情報と該アプリケーションがロック状態であることを示す情報とを前記状態管理データに格納し、
前記ロック解除手段は、前記ロック解除指示に応じて、前記状態管理データを参照してロック解除指示の対象であるアプリケーションがロック状態であるか判定し、ロック状態であれば前記状態管理データのロック状態であることを示す情報を、ロック状態ではないことを示す状態に変更することを特徴とする請求項１または２に記載の情報処理装置。
【請求項９】
前記状態管理データにはさらに、前記ロック指示の指示元の識別情報を含み、
前記ロック手段は、前記ロック指示の指示元を示す識別情報を、前記ロック状態に変更したアプリケーションの識別情報に関連付けて格納し、
前記ロック解除手段は、前記ロック解除指示に応じて、前記状態管理データを参照してロック解除指示の対象であるアプリケーションに関連付けられた前記ロック指示の指示元の識別情報が、前記ロック解除指示の指示元の識別情報と一致している場合、前記アプリケーションがロック状態であることを示す情報を、ロック状態ではないことを示す状態に変更することを特徴とする請求項８に記載の情報処理装置。
【請求項１０】
ユーザインタフェース手段をさらに有し、
前記ロック指示および前記ロック解除指示またはそれらの一方は、前記ユーザインタフェース手段からユーザーにより指示されることを特徴とする請求項１乃至９のいずれか一項に記載の情報処理装置。
【請求項１１】
前記ロック指示および前記ロック解除指示またはそれらの一方は、前記アプリケーションのひとつから指示されることを特徴とする請求項１乃至９のいずれか一項に記載の情報処理装置。
【請求項１２】
スキャナ手段とプリンタ手段とをさらに有し、
前記アプリケーションは、前記スキャナ手段または前記プリンタ手段またはその両方を直接的にまたは間接的に利用するアプリケーションであることを特徴とする請求項１乃至９のいずれか一項に記載の情報処理装置。
【請求項１３】
請求項１乃至１２のいずれか一項に記載の情報処理装置としてコンピュータを機能させるためのプログラム。
【請求項１４】
アプリケーションを実行できる情報処理装置におけるアプリケーションの管理方法であって、
ロック指示に応じて、指定されたアプリケーションの状態を、他の状態への遷移を許さないロック状態に変更し、
権限を有する指示元からのロック解除指示に応じて、指定されたアプリケーションのロック状態を解除する
ことを特徴とする管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は画像形成装置におけるアプリケーションプログラム（以下アプリと略称する）の管理に関する。
【背景技術】
【０００２】
近年、画像形成装置においては、ＪＡＶＡ（登録商標、以下省略）環境に代表されるようなアプリ動作環境が提供されている。ＪＡＶＡの持つプログラムの可搬性を利用して、拡張可能なアプリを提供する技術が提案されている。画像形成装置の機能やユーザビィリティの向上を図るために、上記ＪＡＶＡ環境などの環境下で動作するアプリを作成し、画像形成装置にインストールすることで、当該アプリにより所望の機能を実現できる。アプリプラットフォームとしては、組み込み機器向けのＪＡＶＡアプリプラットフォームである、ＯＳＧｉ（Ｏｐｅｎ  Ｓｅｒｖｉｃｅｓ  Ｇａｔｅｗａｙ  Ｉｎｉｔｉａｔｉｖｅ）Ｓｅｒｖｉｃｅ Ｐｌａｔｆｏｒｍ（以下、ＯＳＧｉ）がある。ＯＳＧｉでは、ソフトウェアモジュールの管理単位としてバンドルを定義しており、インストール／開始／停止／更新／アンインストールからなるライフサイクルを管理するための仕様を定義している。ここで、バンドルとは、ＪＡＶＡモジュールのことを指し、本明細書においては、アプリと同義である。そのため、以後アプリのことをバンドルと表記する。
【０００３】
画像形成装置にインストールして動作するバンドルに対しては、ユーザーがインストール／開始／停止／更新／アンインストールの指示を行うことが可能である。しかしながら、有償で提供されるバンドルの使用料の未払いが発生した場合や、画像形成装置のサポートが切れる場合などには、ユーザーがバンドルを利用できないようにユーザーの外部システムから強制的に利用を停止させるように制御したいケースがあった。利用させたくないバンドルが画像形成装置等のデバイスに存在する場合に、利用させたくないバンドルを起動時に検知し、強制的にアンインストールすることで利用を停止させる方法が提案されている（特許文献１）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−１８９６５９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述の方法では、使用料が未払いのバンドルに対して支払が完了し、再度ユーザーにバンドルの利用を許可する場合、バンドルを再インストールする必要があり、作業負荷がかかるという課題があった。更に、バンドルをアンインストールすることで、バンドルのユーザーデータが消えてしまうため、バンドルを再利用する際、従来通りに利用するためには、ユーザーデータの復帰が必要になるという課題があった。
【０００６】
本発明は、この問題を顧みて成されたもので、バンドルをアンイストールすることなくユーザーにバンドルを利用させない仕組みを提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するために本発明は以下の構成を有する。すなわち、
アプリケーションを実行できる情報処理装置であって、
ロック指示に応じて、指定されたアプリケーションの状態を、他の状態への遷移を許さないロック状態に変更するロック手段と、
権限を有する指示元からのロック解除指示に応じて、指定されたアプリケーションのロック状態を解除するロック解除手段と
を有する。
【発明の効果】
【０００８】
本発明により、バンドルをアンイストールすることなくユーザーにバンドルを利用させない仕組みを提供できる。
【図面の簡単な説明】
【０００９】
【図１】システムの全体構成図
【図２】画像形成装置のハードウェア構成図
【図３】画像形成装置のソフトウェアモジュール階層図
【図４】バンドルをインストールする流れを示したブロック図
【図５】バンドルのインストールとインストール先のバンドル展開領域について示したブロック図
【図６】バンドルのインストールからアンインストールの流れと停止ロック状態への流れを示した状態遷移図
【図７】停止状態バンドルのロック状態管理の一例を示す図
【図８】バンドルを停止状態でロックするフローチャート
【図９】バンドルのロックを解除するフローチャート
【図１０】バンドルの状態を変更するフローチャート
【図１１】停止中のバンドルをロックした指示元管理の一例を示す図
【図１２】バンドルのロック時に指示元を判断するフローチャート
【図１３】指示元に応じてバンドルのロック解除を行うフローチャート
【図１４】バンドルのインストールからアンインストールの流れと開始ロック状態への流れを示す状態遷移図
【図１５】開始中のバンドルをロックした指示元管理の一例を示す図
【図１６】バンドルをロックするフローチャート
【発明を実施するための形態】
【００１０】
以下、本発明を実施するための形態について図面を用いて説明する。
＜用語の説明＞
まず本発明における用語の定義を行う。「ロック」とは、バンドルの動作状態を変更できないように制御することを示す。例えば、停止状態のバンドルに対してロックすると、バンドルは停止ロック状態となる。通常は、ユーザーが停止状態のバンドルに対して、開始指示をすると、バンドルが開始状態となりバンドルの機能を利用できるようになる。しかしながら停止ロック状態のバンドルは、ユーザーが開始を指示しても、状態を変更できないように制御しているため、バンドルは停止ロック状態のまま状態変更しない。
【００１１】
「ロック解除」とは、状態が固定されているバンドルに対して、通常の状態に戻すことを示す。例えば、停止ロック状態のバンドルに対してロック解除すると、停止状態に戻る。ロック解除したバンドルに対して、ユーザーはバンドルの状態を変更することが可能であり、停止状態のバンドルに対して開始を指示すると、開始状態に遷移する。
【００１２】
以上が用語の説明となる。ここで説明した以外にも適宜用語の説明を行う。以降、本発明に係る実施の形態を図１から図１６に基づき説明する。
【００１３】
＜実施例１＞
＜システム構成例の説明＞
図１は本発明の実施の形態にかかる情報処理装置として動作する画像形成装置を含む画像形成システム１００の全体構成を説明するシステム全体図である。本発明は、ネットワークに画像形成装置が接続している場合や、ネットワークに非接続な環境のどちらの環境でも動作する。本システム全体は画像形成装置１０１、ＰＣ１０２、サーバ１０３等の複数のネットワーク機器とネットワーク機器群が接続されているＬＡＮ１０４から構成されている。
【００１４】
画像形成装置１０１はネットワーク１０４を介してＰＣ１０２およびサーバ１０３と接続されている。ＰＣ１０２やサーバ１０３からバンドル停止指示及びロック指示が来た時や画像形成装置１０１の後述する操作部２１２からのバンドル停止指示及びロック指示があった場合に、画像形成装置１０１はバンドルの停止やロックをする。更に、画像形成装置１０１は、操作部２１２や、ネットワークを介してＰＣ１０２やサーバ１０３からロック解除の指示が来た場合にバンドルのロックを解除する。なおＰＣ１０２、サーバ１０３は汎用的なものでよく、特に限定するものではないため、ハードウェア構成およびソフトウェア構成の図を省略する。ＰＣ１０２およびサーバ１０３は例えば汎用コンピュータであり、ＲＡＭ等のメモリに格納したプログラムをＣＰＵにより実行して、同じくＲＡＭ等に格納したデータを加工し、あるいは、入出力を実行する。
【００１５】
＜画像形成装置のハードウェア構成図の説明＞
次に図２を用いて、本システムにおける画像形成装置１０１の構成について説明する。ＣＰＵ２０１を含む制御部２００は、画像形成装置１０１を統括的に制御する。ＣＰＵ２０１は、ＲＯＭ２０２に記憶された制御プログラムを読み出して各種制御処理を実行する。ＲＯＭ２０２には装置のブートプログラム等が格納されている。ＲＡＭ２０３は、ＣＰＵ２０１が動作するためのシステムワークメモリであり、かつ画像データを一時記憶するためのメモリでもある。このＲＡＭ２０３は、記憶した内容を電源ＯＦＦ後も保持しておく不揮発性ＲＡＭ、電源ＯＦＦ後には記憶した内容が消去されてしまう揮発性ＲＡＭ等により構成されている。ＨＤＤ２０４は、ハードディスクドライブであり、画像データや各種プログラム、あるいは各種情報テーブルを記憶する。
【００１６】
操作部Ｉ／Ｆ２０５は、システムバス２１３と操作部２１２とを接続するためのインターフェース部である。この操作部Ｉ／Ｆ２０５は、操作部２１２に表示するための画像データをシステムバス２１３に出力するとともに、操作部２１２から入力された情報をシステムバス２１３へと出力する。操作部２１２には表示部（タッチパネル機能を有する液晶表示部など）やキーボードが備えられている。
【００１７】
ネットワークＩ／Ｆ２０６はＬＡＮ２１４及びシステムバス２１３に接続し、画像形成装置１０１とＬＡＮ２１４との間の情報の入出力を行う。画像処理チップ２０７は、スキャナ部２０９からスキャナＩ／Ｆ２０８を介して受け取った画像データに対して、補正、加工、および編集を行う。なお、スキャナＩ／Ｆ２０８は、受け取った画像データがカラー原稿か白黒原稿か、文字原稿か写真原稿かなどを判定する。そして、その判定結果を画像データに付随させる。こうした付随情報を属性データと称する。
【００１８】
プリンタＩ／Ｆ２１０は、画像処理チップ２０７から送られた画像データを受け取り、この画像データに付随させられている属性データを参照しながら画像データに画像処理を施す。この画像処理は画像処理チップ２０７により行ってもよい。画像処理後の画像データは、プリンタＩ／Ｆ２１０を介して制御部２００からプリンタ部２１１に転送され、プリンタ部２１１において記録媒体上に印刷される。
【００１９】
外部ストレージＩ／Ｆ２１５は、メモリメディア２１６と接続され、メモリメディア２１６へ機器内のデータや画像を保存する、あるいはメモリメディア２１６内のデータを機器内に書き込む際に利用される。
【００２０】
ここで、ＨＤＤ２０４にはアプリケーションすなわちバンドルがインストールされ、ＣＰＵ２０１は例えばバンドルの実行環境を介してインストールされたバンドルを実行し、あるいはその状態を変更することができる。
【００２１】
＜システムのソフトウェアモジュール階層図の説明＞
続いて図３を用いて、本実施形態に関係する画像形成装置１０１のソフトウェアモジュール階層を説明する。なお図３以降に示す各ソフトウェアはＲＯＭ２０２、もしくは、ＨＤＤ２０４に保存され、ＣＰＵ２０１にて実行される。また、実行時に使用する各種情報はＲＡＭ２０３もしくはＨＤＤ２０４に保持してソフトウェア機能間での各種情報のやりとりを行う。さらに外部機器との通信は、ネットワークＩ／Ｆ２０６を用いて通信を行う。
【００２２】
次に各ソフトウェアの説明をする。ソフトウェアは、まずオペレーティングシステム（ＯＳ）プラットフォーム３０１を有する。
【００２３】
ＵＩ３０２はユーザインタフェースモジュールであり、オペレータが画像形成装置１０１に対する各種操作・設定を行う際に、装置とユーザー操作との仲介を行うモジュールである。このユーザインタフェースモジュール３０２は、オペレータの操作に従い、後述の各種モジュールに入力情報を転送して処理の依頼、或いはデータの設定変更等を行う。このＵＩ３０２はたとえばＷｅｂサーバにより実現してもよい。Ｗｅｂサーバを用いることで、たとえばＰＣ１０２にインストールされたＷｅｂブラウザをクライアントとしてユーザインタフェース画面を表示させ、また、必要な入力を行わせることができる。
【００２４】
設定データベース３０４は、画像形成装置１０１の設定データを取り扱うデータベースである。図７で述べるロック状態管理リストもこの設定データベース３０４に保持される。このデータを管理しているのが、設定データ管理部３０３であり、各バンドルは、データの値について、この設定データ管理部３０３に対して問い合わせることで取得可能である。
【００２５】
ＪＡＶＡ側のソフトウェアプラットフォームは、ＪａｖａＶＭ３０５のランタイム環境として構成されており、インタプリタとしてのＪａｖａＶＭ３０５、ライブラリ３０６、フレームワーク群３０７で構成される。ライブラリ３０６は、標準のＡＰＩライブラリを含んで構成される。フレームワーク群３０７は、ＯＳＧｉ３０８を含んで構成され、このＯＳＧｉ３０８は、単一のＪａｖａＶＭ３０５に複数のバンドルを動作させる。更に、ＯＳＧｉ拡張部３０９は、このＯＳＧｉ３０８の仕様を満たす範囲で必要に応じて機能を拡張可能であることを示す。このＯＳＧｉ３０８、及びＯＳＧｉ拡張部３０９は、バンドルのライフサイクルの管理やバンドル間通信機能などを提供する。
【００２６】
このＯＳＧｉ３０８上には、複数のシステムバンドル群３１０がある。これらは、初回起動時に展開先フォルダがないとき、もしくは、アップデートが必要なことを示すアップデートフラグが所定の場所にあるときに、ＯＳＧｉ拡張部３０９によって、格納されている未展開のプログラムファイル群からインストールされる。未展開のプログラムファイル群は、例えば、ファームウェアである。このときのインストールについては、図５で示す。
【００２７】
バンドル群には、画像形成装置１０１の製造時にインストールされて出荷されるシステムバンドル群３１０と、追加的にインストール可能な、各種機能を実現するための後入れバンドル３１５を含む後入れバンドル群３１４とがある。システムバンドル群３１０としては、複数のバンドルを管理し、新たなバンドルの追加、更新、削除をするためのバンドル管理サービス３１１がある。バンドル管理サービス３１１は、インストール制御サービス３１２を利用して、バンドルの追加、更新、削除を行う。後入れバンドル３１５は、バンドル管理サービス３１１の管理下で動作する。バンドル管理サービス３１１は、管理下に追加されたバンドルのバージョンを含むバンドル情報、ライセンス情報などを保持している。
【００２８】
さらに、システムバンドル群３１０には、後入れバンドル３１５をインストールした後、バンドルの状態を固定するためのロック制御サービス３１３がある。バンドル管理サービス３１１は、バンドルの更新や削除が指示された時に、ロック制御サービス３１３を介して対象のバンドルがロック状態であるかを判断し、ロック状態である場合には処理を許可しない。更にロック制御サービス３１３は、ロック状態の後入れバンドル３１５のロック解除を行う。ロック対象となるバンドルは、たとえば有償の、すなわち使用に対して課金されたバンドルであるが、それに限らなくともよい。バンドルの識別情報に、そのバンドルが有償であるか否かを示す情報を含めておくことで、バンドルの識別情報に基づいて有償か否かを判定できる。
【００２９】
後入れバンドル３１５は、画像形成装置１０１において各種処理をユーザーに提供する。後入れバンドル３１５には例えば、画像の加工や圧縮バンドル、印刷制限などの部門管理を行うバンドルなどがある。ユーザーがバンドルを利用する環境に合わせて、バンドルが利用するユーザーの認証情報や、バンドル利用時に表示するＵＩの表示条件等をユーザーが設定することが可能である。ユーザーがカスタマイズした設定をユーザーデータとする。ユーザーデータは、設定管理部３０３を介して設定データベース３０４に保存される。設定データ管理部３０３を介して設定データベース３０４にユーザーデータが登録されている場合は、設定データベース３０４に登録されているユーザーデータに応じて、後入れバンドル３１５は処理を行うことができる。
【００３０】
後入れバンドル３１５には、ユーザーに各種処理を提供するバンドルの他、後入れバンドル３１５をロックするためにロック制御サービス３１３に対してロックの指示を制御するバンドルもある。ロック制御サービス３１３に対してロックの指示を出すのは、ロックの権限が必要である。後入れバンドル３１５がロックの指示を出すためには、ロック指示用のＰｅｒｍｉｓｓｉｏｎ（許諾）を保持している必要がある。販売会社等の外部システムであるサーバ１０３やＰＣ１０２、後入れバンドル３１５自身が表示するＵＩからバンドルをロックする指示を受けた後入れバンドル３１５は、ロック対象のバンドルを指定してロック制御サービス３１３にロックの指示を出す。ロック制御サービス３１３にバンドルのロック指示を出すのは、ここではロック指示用のＰｅｒｍｉｓｓｉｏｎを持つ後入れバンドル３１５としたが、他のシステムバンドル群３１０やライブラリ３０６であっても良い。
【００３１】
＜後入れバンドルのインストール処理の説明＞
図４は、ユーザーが、ＰＣ１０２から画像形成装置１０１へ、後入れバンドル３１５をインストールする流れを示したブロック図である。図４の例では、画像形成装置１０１にはＷｅｂサーバが、ＰＣ１０２にはＷｅｂブラウザがインストールされているが、図４ではＷｅｂブラウザ、Ｗｅｂサーバとも省略した。
【００３２】
ＰＣ１０２のＷＥＢブラウザにアプリケーションインストールＵＩ４０１を表示し、このアプリケーションインストールＵＩ４０１からインストールしたいバンドルを指定し、インストールを行う。アプリケーションインストールＵＩ４０１は、ＰＣ１０２のＷｅｂブラウザから画像形成装置１０１のＷｅｂサーバへと所定のＵＲＬを指定してＨＴＴＰ要求を送信し、Ｗｅｂサーバが指定された保存場所からＵＩであるＨＴＭＬデータを読み出してＰＣ１０２に応答することで表示される。本実施形態では、クライアントであるＰＣ１０２とサーバである画像形成装置１０１との間の通信はＨＴＴＰベースで行われるものとしているので、ＨＴＴＰに関する手順の説明は、以下の説明では省略する。
【００３３】
アプリケーションインストールＵＩ４０１で指定されたバンドルを受信したバンドル管理サービス３１１は、それをインストール制御サービス３１２に渡す。バンドルファイルを受信したインストール制御サービス３１２は、ＯＳＧｉ３０８にインストールを依頼し、ＯＳＧｉ３０８はインストールを行う。インストールされたバンドルは、バンドル管理サービス３１１によって管理される。
【００３４】
＜バンドルのデータ管理の説明＞
図５は、画像形成装置１０１における、ＯＳＧｉ拡張部３０９による未展開のプログラムファイル群５０１からバンドル展開領域５０２へのシステムバンドル群３１０のインストールの流れと展開後のバンドル展開領域について示したブロック図である。
【００３５】
バンドル展開領域５０２には、展開先フォルダ５０３が存在する。ただし、この展開先フォルダ５０３は、通常初回起動時、または、展開先フォルダ５０３が削除された直後の起動時にＯＳＧｉ拡張部３０９によって作成される。
【００３６】
ＯＳＧｉ拡張部３０９は、バンドル展開先フォルダ５０３が存在しないことを検知した場合、あるいは、システムバンドル群展開先５０４が存在しないことを検知した場合、未展開のプログラムファイル群５０１に格納されているシステムバンドル群３１０をバンドル展開領域５０２にある展開先フォルダ５０３にインストールを行う。
【００３７】
次に、展開先フォルダ５０３であるＡｐｐＦｏｌｄｅｒについて説明する。このフォルダには、未展開のプログラムファイル群５０１に含まれているシステムバンドル群３１０が展開されたシステムバンドル群展開先５０４と、後入れバンドル群３１４が展開された後入れバンドル群展開先５１０とが存在する。
【００３８】
ＯＳＧｉ拡張部３０９は、インストールされたバンドルごとにフォルダを作成する。以下、このフォルダのことをバンドルディレクトリと呼ぶ。このバンドルディレクトリは、インストール日時などから生成したユニークな名前を付けることが可能である。この図５の場合、システムバンドルＡが、ｘｘｘ５０５というバンドルディレクトリにインストールされていることを示す。バンドルディレクトリには、インストールされたｊａｒ（すなわちＪＡＶＡアーカイブ）がａｐｐ０．ｊａｒ５０６という名前で配置される。更に、各バンドルのデータを格納するためのｄａｔａフォルダ５０７が配置され、そこにはこの場合システムバンドルＡの設定データｓｅｔｔｉｎｇ．ｔｘｔファイルが格納されている。
【００３９】
また、システムバンドルＢが、ｙｙｙ５０８というバンドルディレクトリにインストールされていることを示す。システムバンドルＡと同様にインストールされたｊａｒがａｐｐ０．ｊａｒという名前で配置される。更に、システムバンドルＢが保持するバンドルのライセンスデータがｄａｔａフォルダ５０９以下のｌｉｃｅｎｓｅｓフォルダ以下に格納される。この場合、システムバンドルＢのライセンスであるｌｉｃｅｎｓｅＡファイルが保持されている。
【００４０】
一方で、図４で示した方法により、ユーザーが後からインストールする後入れバンドルも、後入れバンドル群展開先５１０で示すように、システムバンドル群展開先５０４と同様のディレクトリ構成でインストールされる。
【００４１】
図５は、後入れバンドルＣが、ａａａ５１１というバンドルディレクトリにインストールされていることを示す。システムバンドルと同様にインストールされたｊａｒがａｐｐ０．ｊａｒ５１３という名前で配置される。更に、各バンドルのデータを格納するためのｄａｔａフォルダ５１２が配置され、この場合後入れバンドルＣが動作する際に利用する設定データであるユーザーデータｓｅｔｔｉｎｇｓ．ｔｘｔファイルが格納されている。ａａａ５１１というバンドルディレクトリにインストールされたバンドルがアンインストールされると、ａａａ５１１ディレクトリごと削除し、ｄａｔａフォルダ５１２に格納されているユーザーデータも削除される。
【００４２】
展開先フォルダ５０３には、システムバンドル群展開先５０４と、後入れバンドル群展開先５１０以外に、これらのインストールした情報を管理するための管理データ５１４がある。この管理データ５１４としては、バンドルとバンドルディレクトリの対応付けを管理するテーブル５５０のデータを保持している。これにより、バンドルがわかれば、それに対応したバンドルディレクトリを知ることが可能となる。  更に、展開先フォルダ５０３には、後述する図７、図１１、図１５で説明するロック状態管理データを保持する。状態管理データにはバンドルの状態を示す状態管理データであり、少なくともロック状態を示す。
【００４３】
＜後入れバンドルの状態遷移の説明＞
図６は、後入れバンドルのインストールからアンインストールまでの状態遷移図を示す。後入れバンドル３１５はＰＣ１０２のアプリケーションインストールＵＩ４０１等からインストールすると、インストール済み６０１となる。インストールした後入れバンドル３１５が画像形成装置１０１内に存在しない場合、図５で示すように後入れバンドル群展開先５１０にインストールする後入れバンドル３１５のディレクトリが生成され、後入れバンドル３１５のインストールと共に、設定データが同一ディレクトリに展開される。インストール済みの後入れバンドル３１５に対し、ユーザーがその実行の開始を指示すると、開始中６０２を介して開始状態６０３になる。開始状態６０３は、バンドルが動作中の状態を示す。開始状態６０３の後入れバンドルに対してユーザーが停止を指示すると、停止中６０４を介して停止状態６０５に遷移する。後入れバンドル３１５をロック状態にするには、指示元がロックの権限を持っていることが前提となる。後入れバンドル３１５をロック状態にするには、後入れバンドル３１５に対して停止指示をした後、ロックの権限を持つモジュールからロックを指示する。停止中６０４や停止状態６０５である後入れバンドル３１５であれば、ロック指示に応じて停止ロック状態６０６に遷移できる。停止ロック６０６の状態の後入れバンドル３１５は、ロック解除の権限を持つモジュールからロック解除されるまで、停止ロック状態６０６を維持する。つまり、停止ロック状態６０６の後入れバンドル３１５に対して、ユーザーが開始を指示しても、開始中６０２を介して開始状態６０３に遷移せず、停止ロック状態６０６のままとなる。停止ロック状態６０６から状態遷移する場合には、ロックの権限及びロック解除の権限を持つモジュールからロック解除を指示する必要があり、ロック解除指示に応じて停止６０５状態に戻る。停止状態６０５の後入れバンドル３１５に対しては、ユーザーが開始指示やアンインストール指示をすることが可能である。後入れバンドル３１５にアンインストールを指示すると、アンイストール指示に応じてアンインストール状態６０７となり、画像形成装置１０１のバンドル展開領域５０３から後入れバンドル３１５自身と対応する設定データが、それらがインストールされたフォルダごと削除される。一方、停止ロック状態６０６の場合はアンインストールを指示してもアンイストールは行われず、アンインストール状態６０７には遷移しない。図６に示した状態は、例えばインストール制御サービス３１２などシステムバンドルにより保持され管理されてよい。このバンドルの状態は、バンドルからアクセス可能に保持され、管理される。それら状態の中でも特に停止状態及び停止ロック状態を含む状態については、図7に示す状態管理データとして管理される。
【００４４】
＜ロック状態管理の説明＞
図７は、停止状態のバンドルがロック状態であるか、非ロック状態であるかを管理する管理表（あるいは状態管理データ）である。停止しているバンドルに対して、ロック中であるか、非ロック中であるかをバンドルに対応して、すなわち関連付けて管理する。図７の例では、Ａｐｐ１は停止ロック状態である。Ａｐｐ２は停止状態であり、ロックされていないため、開始指示やアンインストール指示が可能である。Ａｐｐ３は停止ロック状態であり、開始指示やアンインストール指示を受けても状態遷移を許可しない。これらの情報すなわち状態管理データは設定データベース３０４に登録され、ロック制御サービス３１３が管理する。
【００４５】
＜バンドルにロックを指示した時のフローチャート＞
続いて図８を用いて、バンドルに対してロック指示を出した時の処理の流れを説明する。図８の手順の実行主体は、ソフトウェアではロック制御サービス３１３であり、ハードウェアではＣＰＵ２０１である。ロック制御サービス３１３は、特定のバンドルに対するロック指示を受信する（Ｓ８０１）。指示元はたとえばＵＩ３０２や、あるいは後入れバンドル３１５などであり、ロック指示は、指示元を特定する情報と、対象となるバンドルを特定する情報とを含む。続いてロック制御サービス３１３は、ロック指示を出した指示元の権限を取得する（Ｓ８０２）。ロック制御サービス３１３は、Ｓ８０２で取得した指示元の権限にロックを指示する権限が含まれているか否かを判断する（Ｓ８０３）。指示元がロックを指示する権限を持っていない場合はバンドルをロック状態へ遷移させずエラー終了する（Ｓ８１１）。この場合にはたとえば、指示元に権限がない旨のエラーを指示元へと返す。
【００４６】
Ｓ８０３において、指示元がロックを指示する権限を持っていると判断すると、ロック制御サービス３１３は、ロック対象のバンドルが後入れバンドルであるか否かを、インストール制御サービス３１２を介して判断する（Ｓ８０４）。ロック対象のバンドルが後入れバンドルでない場合、システムバンドル群３１０のいずれかであるため、ロック状態への遷移を許可せずエラー終了する（Ｓ８１０）。
【００４７】
Ｓ８０４において、ロック対象のバンドルが後入れバンドルであると判断した場合、ロック制御サービス３１１はロック対象のバンドルが既にロック状態であるか否かを示す管理表（図７）を、設定データ管理部３０３を介して設定データベース３０４から取得する（Ｓ８０５）。続いて、Ｓ８０５において、ロック対象のバンドルの状態が既にロック中であるか否かを、取得した管理表に基づいて判断する（Ｓ８０６）。Ｓ８０６において、既にロック中であると判断した場合は、何もせずに本フローチャートを終了する。このとき指示元に対して既にロックされている旨を示す応答を返してもよい。Ｓ８０６において、ロック対象のバンドルがロック状態でないと判断した場合、ロック制御サービス３１３は、ロック対象のバンドルの状態を、インストール制御サービス３１２を介して取得する（Ｓ８０７）。続いてＳ８０７において取得したロック対象のバンドルの状態が、停止中もしくは停止状態であるか、それともそれら以外であるかを判断する（Ｓ８０８）。Ｓ８０８において、ロック対象のバンドルが停止中または停止状態だと判断した場合、バンドルをロック状態にし、ロック対象のバンドルがロック状態であることを、設定データ管理部３０３を介して設定データベース３０４に記録する（Ｓ８０９）。なおバンドルをロック状態にすることは、状態管理データにおける対象バンドルの状態として、停止ロック状態を示す情報を記録することであってよい。なお停止中の状態でロックされたバンドルは、停止状態になるまで動作し、停止状態となってその動作を止める。このため、停止状態でロックされた場合と同様に停止ロック状態となる。Ｓ８０８において、ロック対象のバンドルが、停止中もしくは停止状態でないと判断した場合、ロック状態への遷移を許可せずエラー終了する（Ｓ８１０）。このとき指示元に対してロックできない旨を示す応答を返してもよい。
【００４８】
以上の手順により、対象のバンドルをロックする権限を有する指示元からロック指示に応じて、対象のバンドルが所定の状態、たとえば停止状態または停止中状態であれば、対象バンドルはロックされる。指示元が必要な権限を有していない場合や、対象バンドルが停止中または停止状態でないと、対象バンドルはロックされない。なお権限の判定は、たとえば指示元の識別情報を権限管理サーバに送信して権限情報を照会することで行うことができる。あるいは権限管理サーバがない場合にも、バンドルごと或いはユーザーごとの識別情報に対応付けてロック権限を記録したテーブル等を参照して判定することができる。
【００４９】
＜バンドルにロック解除を指示した時のフローチャート＞
続いて図９を用いて、ロック状態のバンドルに対して、ロックを解除する処理の流れについて説明する。図９の手順の実行主体も、ソフトウェアではロック制御サービス３１３であり、ハードウェアではＣＰＵ２０１である。ロック制御サービス３１３は、特定のバンドルに対するロック解除指示を受信する（Ｓ９０１）。ロック解除指示は、指示元を特定する情報と、対象となるバンドルを特定する情報とを含む。続いてロック制御サービス３１３は、ロック解除を指示した指示元の権限を取得する（Ｓ９０２）。ロック制御サービス３１３は、Ｓ９０２で取得した権限にロック解除の権限が含まれているかを判断する（Ｓ９０３）。この判断は、図８の手順における権限の判断と同じ要領で良い。Ｓ９０３において、指示元の有する権限にロック解除の権限が含まれていないと判断すると、ロック解除して停止状態への遷移を許可せずエラー終了する（Ｓ９０７）。
【００５０】
Ｓ９０３において指示元の有する権限にロック解除の権限が含まれていると判断した場合、ロック制御サービス３１３は、ロック解除対象のバンドルがロック状態であるか否かを示す状態管理データを、設定データ管理部３０３を介して設定データベース３０４から取得する（Ｓ９０４）。ロック制御サービス３１３はＳ９０４で取得した情報を元に、ロック解除対象のバンドルがロック状態であるか否かを判断する（Ｓ９０５）。Ｓ９０５において、ロック解除対象のバンドルがロック状態でないと判断した場合、何もせずに本フローチャートを終了する。Ｓ９０５においてロック状態であると判断した場合、ロック制御サービス３１３は、ロック解除対象のバンドルを停止ロック状態から停止状態に遷移し、設定データ管理部３０３を介してロック解除対象のバンドルが停止状態であることを設定データベース３０４に記録する（Ｓ９０６）。
【００５１】
以上の手順により、対象のバンドルのロックを解除する権限を有する指示元からのロック解除指示に応じて、対象のバンドルがロック状態であれば、対象バンドルのロック状態が解除される。指示元が必要な権限を有していない場合や、対象バンドルがロック状態でないと、対象バンドルのロック状態は解除されない。
【００５２】
＜アプリケーションインストールＵＩからバンドルの状態変更を指示した時のフローチャート＞
続いて図１０を用いて、アプリケーションインストールＵＩ等を利用してユーザーからバンドルの停止／開始／更新／アンインストール等の状態変更を指示した時の処理の流れを説明する。図１０の手順の実行主体は、ソフトウェアではバンドル管理サービス３１１であり、ハードウェアではＣＰＵ２０１である。
【００５３】
バンドル管理サービス３１１は、アプリケーションインストールＵＩ４０１のようなユーザーが利用可能なＵＩ３０２からバンドルの状態変更に関する指示を受信する（Ｓ１００１）。この指示には、たとえば指示元を特定する情報と、対象となるバンドルを特定する情報と、変更後の状態を示す情報とが含まれる。バンドル管理サービス３１１は状態変更対象のバンドルの現在の状態を、インストール制御サービス３１２を介して取得する（Ｓ１００２）。続いて、バンドル管理サービス３１１は、バンドルの状態変更の指示を出した指示元の権限を取得し、指示元が状態変更の権限を持つか判断する（Ｓ１００３）。Ｓ１００３において、指示元が状態変更の権限を持たないと判断した場合、バンドルの状態変更を許可せず、エラー終了する（Ｓ１００８）。Ｓ１００３において、指示元が状態変更の権限を持つと判断した場合、バンドル管理サービス３１１は、ロック制御サービス３１３を介して状態変更対象のバンドルがロック状態であるか非ロック状態であるかを示す情報、すなわち管理表を取得する（Ｓ１００４）。バンドル管理サービス３１１は、Ｓ１００４で取得した情報を基に、状態変更対象のバンドルがロック状態であるか、非ロック状態であるかを判断する（Ｓ１００５）。Ｓ１００５において、状態変更対象のバンドルがロック状態であると判断した場合、バンドルの状態変更を許可しないため、バンドル管理サービス３１１は、状態変更をエラー終了する（Ｓ１００６）。具体的には、ロック状態のバンドルに対して、開始／停止／更新／アンインストールの指示を受けた場合にエラー終了する。この場合にはエラー終了した旨を指示元に応答してもよい。
【００５４】
一方Ｓ１００５において、状態変更対象のバンドルが非ロック状態であると判断した場合、バンドル管理サービス３１１は、指定されたバンドルの状態変更を許可し、指示元から指示された状態変更をインストールサービス３１２に指示する（Ｓ１００７）。例えば、指示元からバンドルの開始を指示された場合、開始を指示されたバンドルが停止状態であれば、バンドル管理サービス３１１は、インストール制御サービス３１２を介してバンドルを開始する。
【００５５】
本実施の形態を実施することにより、販売会社等がユーザーに利用させたくないバンドルに対して、バンドルを停止した後にロック指示を出すことで、ユーザーの操作によってバンドルを利用させないことが可能になる。更に、販売会社等からユーザーに対して再度バンドルの利用を許可する場合には、バンドルのロックを解除することで、以前利用していた設定や環境をユーザーがそのまま利用して、バンドルの機能を利用することが可能となる。こうすることで、バンドルの利用を停止するためにバンドルをアンインストールする必要がなくなり、ユーザーデータを残した状態でバンドルの利用を再開させることができる。
【００５６】
＜実施例２＞
次に本発明を実施する別の実施形態について説明する。実施例１では、バンドルに対してロックやロック解除を指示する権限を持つ指示元からの要求であれば、要求に応じてバンドルをロック状態や非ロック状態に遷移させる例を示した。しかしながら、ロックやロック解除を指示する権限を持つ指示元が複数存在する場合、利用させたくないバンドルに対して、販売会社等のシステムからバンドルを停止し、ロックを指示した後、権限さえ有していれば販売会社以外のシステムからのロック解除要求に応じてロックを解除してバンドルを利用することができてしまうという課題がある。本実施の形態では、前述の課題を解決するために、バンドルのロックを指示したモジュールを記憶し、ロック解除時にロックを指示したモジュールとロック解除を指示したモジュールとの一致を判別する方法を示す。
【００５７】
＜停止状態のバンドルのロック状態とロックを指示した指示元を管理する一例の説明＞
図１１は、実施例１における停止状態のバンドルがロック状態であるか、非ロック状態であるかを管理する管理表（図７）に対して更に、ロック状態のバンドルに対してロックを指示した指示元を管理する管理表を示す。停止ロック状態のバンドルに対しては、ロックを指示した指示元を示す識別情報を各バンドルに対応して管理する。図１１の例では、Ａｐｐ１は停止ロック状態であり、ロックを指示したモジュールは「００００００００−００００−００００−００００−０００００００００００１」という識別子で管理されるモジュールである。Ａｐｐ２は停止状態であり、ロックされていないため、開始状態への遷移やアンインストールが可能である。Ａｐｐ３は停止ロック状態であり、開始指示やアンインストール指示を受けても状態遷移を許可しない。ロックを指示したモジュールは「００００００００−００００−００００−００００−０００００００００００２」という識別子で管理されるモジュールである。
【００５８】
Ａｐｐ１とＡｐｐ３は異なる指示元からロックを指示されている。例えば、Ａｐｐ３に対して「００００００００−００００−００００−００００−０００００００００００１」という識別子を持つモジュールからロック解除の指示を受けても、ロックを指示したモジュールと異なる指示元からの指示であるため、ロック解除を許可しない。
【００５９】
＜指示元を判断してバンドルをロックするフローチャート＞
続いて図１２を用いて、バンドルに対してロック指示を出した時にロック指示元を判断する流れを説明する。図１２の手順は、図８と同様にロック制御サービス３１３がソフトウェアの実行主体となり、ＣＰＵ２０１がハードウェアの実行主体となる。
【００６０】
ロック制御サービス３１３は、特定のバンドルに対するロック指示を受信する（Ｓ１２０１）。このロック指示には、指示元の識別情報およびロック対象のバンドルの識別情報が含まれている。続いてロック制御サービス３１３は、ロックの指示を出した指示元の権限を取得する（Ｓ１２０２）。指示元の権限は、たとえば図８で説明した要領で取得すればよい。ロック制御サービス３１３は、Ｓ１２０２で取得した権限にロックを指示する権限が含まれているかを判断する（Ｓ１２０３）。指示元がロックを指示する権限を持っていない場合はバンドルをロック状態へ遷移させずエラー終了する（Ｓ１２１２）。
【００６１】
Ｓ１２０３において、指示元がロックの権限を持っていると判断すると、ロック制御サービス３１３は、ロック対象のバンドルが後入れバンドル３１５であるかを、インストール制御サービス３１２を介して判断する（Ｓ１２０４）。ロック対象のバンドルが後入れバンドル３１５でない場合、システムバンドル群３１０のいずれかであるため、ロック状態への遷移を許可せずエラー終了する（Ｓ１２１１）。
【００６２】
Ｓ１２０４において、ロック対象のバンドルが後入れバンドルであると判断した場合、ロック制御サービス３１１はロック対象のバンドルが既にロック状態であるか否かを示す管理表（図１１）を、設定データ管理部３０３を介して設定データベース３０４から取得する（Ｓ１２０５）。続いて、Ｓ１２０５において取得した管理表を元に、ロック対象のバンドルが既にロック中であるかを判断する（Ｓ１２０６）。Ｓ１２０６において、既にロック中であると判断した場合は、何もせずに本フローチャートを終了する。Ｓ１２０６において、ロック対象のバンドルがロック状態でないと判断した場合、ロック制御サービス３１３は、ロックするバンドルの状態を、インストール制御サービス３１２を介して取得する（Ｓ１２０７）。続いてＳ１２０７において取得したロック対象のバンドルが、停止中もしくは停止状態であるかを判断する（Ｓ１２０８）。Ｓ１２０８において、ロック対象のバンドルが停止中または停止状態だと判断した場合、ロック制御サービス３１３は、指示元の識別子を取得し、設定データ管理部３０３を介して設定データベース３０４にバンドルのロック指示元として識別子を登録する（Ｓ１２０９）。続いてロック制御サービス３１３は、バンドルをロック状態に変更し、ロック対象のバンドルがロック状態であることを、設定データ管理部３０３を介して設定データベース３０４の管理表に記録する（Ｓ１２１０）。Ｓ１２０８において、ロック対象のバンドルが、停止中もしくは停止状態でないと判断した場合、ロック状態への遷移を許可せずエラー終了する（Ｓ１２１１）。
【００６３】
＜指示元を判断してバンドルのロックを解除するフローチャート＞
続いて図１３を用いて、ロックを指示した指示元とロック解除を指示した指示元を判断してバンドルのロックを解除する処理の流れについて説明する。図１３の手順は、図１２と同様にロック制御サービス３１３がソフトウェアの実行主体となり、ＣＰＵ２０１がハードウェアの実行主体となる。
【００６４】
ロック制御サービス３１３は、特定のバンドルに対してロック解除指示を受信する（Ｓ１３０１）。ロック解除指示には、たとえば対象のバンドルの識別情報と、指示元の識別情報とが含まれている。続いてロック制御サービス３１３は、ロック解除を指示した指示元の権限を取得する（Ｓ１３０２）。これは図１２のＳ１２０２と同様である。ロック制御サービス３１３は、Ｓ１３０２で取得した権限にロック解除の権限が含まれているかを判断する（Ｓ１３０３）。Ｓ１３０３において、ロック解除の権限が含まれていないと判断すると、ロックを解除して停止状態への遷移を許可せずエラー終了する（Ｓ１３１１）。
【００６５】
Ｓ１３０３においてロック解除の権限を含んでいると判断した場合、ロック制御サービス３１３は、ロック解除対象のバンドルがロック状態であるかを示す管理表（図１１）を、設定データ管理部３０３を介して設定データベース３０４から取得する（Ｓ１３０４）。ロック制御サービス３１３はＳ１３０４で取得した管理表を元に、ロック解除対象のバンドルがロック状態であるかを判断する（Ｓ１３０５）。すなわち、指示対象のバンドルの識別情報に対応する状態がロック状態（停止ロック状態）であるか判定する。Ｓ１３０５において、ロック解除対象のバンドルがロック状態でないと判断した場合、何もせずに本フローチャートを終了する。Ｓ１３０５においてロック状態であると判断した場合、ロック制御サービス３１３は、ロック対象のバンドルをロックした指示元の識別子を含む管理表を、設定データ管理部３０３を介して設定データベース３０４から取得する（Ｓ１３０６）。なおステップＳ１３０４で取得されている場合にはステップＳ１３０６はスキップしてもよい。続いてロック制御サービス３１３は、Ｓ１３０１においてロック解除を指示した指示元の識別子を取得する（Ｓ１３０７）。ロック制御サービス３１３は、Ｓ１３０６で取得した、バンドルをロックした指示元の識別子と、Ｓ１３０７で取得したロック解除を指示している指示元の識別子とが同一であるかを判断する（Ｓ１３０８）。Ｓ１３０８において同一であると判断した場合、対象のバンドルに対するロック指示者と、ロック解除の指示者が同一であるため、ロック制御サービス３１３は、バンドルのロックを解除し、非ロック状態であることを、設定データ管理部３０３を介して設定データベース３０４の管理表に登録する（Ｓ１３０９）。Ｓ１３０８において同一でないと判断した場合、バンドルをロックした指示元と異なる指示元からロック解除の指示を受けているため、ロック解除状態への遷移をエラー終了する（Ｓ１３１０）。
【００６６】
本実施の形態を実施することにより、バンドルをロックした指示者とバンドルのロックを解除する指示者が同一でない場合、バンドルの停止ロックを解除することが不可となる。そのため、バンドルを利用させたくない販売会社等からバンドルの利用を停止させた場合に、他のシステムからバンドルを再利用させることができないため、誤って他のシステムからバンドルを再開してしまう人為的なミスの防止や、作為的なバンドルの再利用を防ぐことが可能である。
【００６７】
＜実施例３＞
次に本発明を実施する別の実施形態について説明する。実施例１と実施例２では、後入れバンドル３１５をユーザーの操作で利用させないために停止ロック状態に遷移させるユースケースの例を示した。しかしながら、ロックの機能を活用することにより、後入れバンドル３１５をユーザーに利用させないだけではなく、必ずユーザーに利用させたい（ユーザーが利用を停止することはできない）ことが可能である。本実施の形態では、後入れバンドル３１５の利用をユーザーが停止できないようにバンドルの状態管理を行う仕組みの方法を示す。
【００６８】
＜後入れバンドルの状態遷移（開始をロックする状態遷移を含む）の説明＞
図１４は、後入れバンドル３１５のインストールからアンインストールまでの状態遷移を示す。後入れバンドル３１５はＰＣ１０２のアプリケーションインストールＵＩ４０１等からインストールすると、インストール済み１４０１となる。インストールした後入れバンドル３１５が画像形成装置１０１内に存在しない場合、図５で示すように後入れバンドル群３１４の展開先５１０にインストールする後入れバンドル３１５のディレクトリが生成され、後入れバンドル３１５のインストールと共に、設定データが同一ディレクトリに展開される。インストール済みの後入れバンドル３１５に対し、ユーザーが開始を指示すると、開始中１４０２を介して開始１４０３状態になる。開始中１４０２や開始１４０３状態である後入れバンドル３１５であれば、開始状態から他の状態へと遷移できない開始ロック状態１４０６に遷移できる。開始ロック状態１４０６の後入れバンドル３１５は、ロック解除の権限を持つモジュールからロック解除されるまで、開始ロック状態１４０６を維持する。つまり、開始ロック状態１４０６の後入れバンドル３１５に対して、ユーザーが停止を指示しても、停止中１４０４を介して停止１４０５に遷移せず、開始ロック１４０６状態のままとなる。開始ロック１４０６状態から状態遷移（停止・アンインストール・更新）する場合には、ロックの権限及びロック解除の権限を持つモジュールからロック解除を指示し、開始１４０３状態に戻る必要がある。ただし、画像形成装置１０１をシャットダウンする場合には停止中１４０４を介して停止１４０５状態に遷移してから画像形成装置１０１がシャットダウンする。画像形成装置１０１をシャットダウンする場合には、後入れバンドル３１５の開始ロック状態を覚えておくことで、画像形成装置１０１をシャットダウンし、再起動した後にも、シャットダウン開始時に開始ロック状態であったバンドルを、停止状態から開始ロック状態に遷移させる。そのためにはたとえば開始ロック状態のバンドルの識別情報を記憶しておき、停止状態に遷移させた後でシャットダウンする。画像形成装置１０１の再起動後には、開始ロック状態であったバンドルを停止状態からいったん開始状態にした後、ロックする。この場合には外部からの指示に応じてロック解除及びロックが行われる訳ではないので、特権的な操作をおこなってよい。
【００６９】
開始状態１４０３の後入れバンドルに対してユーザーが停止を指示すると、停止中１４０４を介して停止状態１４０５に遷移する。停止中１４０４や停止状態１４０５である後入れバンドル３１５であれば、停止ロック状態１４０７に遷移できる。停止ロック状態１４０７の後入れバンドル３１５は、ロック解除の権限を持つモジュールからロック解除されるまで、停止ロック状態１４０７を維持する。つまり、停止ロック状態１４０７の後入れバンドル３１５に対して、ユーザーが開始を指示しても、開始中１４０２を介して開始状態１４０３に遷移せず、停止ロック状態１４０７のままとなる。停止ロック状態１４０７から状態遷移する場合には、ロックの権限及びロック解除の権限を持つモジュールからロック解除を指示し、停止状態１４０５に戻る必要がある。停止状態１４０５の後入れバンドル３１５に対しては、ユーザーが開始指示やアンインストール指示をすることが可能である。後入れバンドル３１５にアンインストールを指示すると、アンインストール１４０８状態となり、画像形成装置１０１のバンドル展開領域５０２から後入れバンドル３１５自身と対応する設定データが削除される。
【００７０】
＜開始状態のバンドルのロック状態とロックを指示した指示元を管理する一例の説明＞
図１５は、開始状態のバンドルがロック状態であるか、非ロック状態であるかを管理し、更に、ロック状態のバンドルに対してロックを指示したモジュールを管理する管理表を示す。図１５の例では、Ａｐｐ５は開始状態であり、ロックされていないため、ユーザーからの停止指示が可能である。Ａｐｐ６は、開始ロック状態であり、ロックを指示したモジュールは「００００００００−００００−００００−００００−０００００００００００２」という識別子で特定されるモジュールである。Ａｐｐ６は開始ロック状態であるため、「００００００００−００００−００００−００００−０００００００００００２」という識別子で管理されるシステムからロック解除指示を受けない限り、開始ロック状態１４０６を維持する。そのため、ユーザーからの停止指示、及び「００００００００−００００−００００−００００−０００００００００００２」以外の識別子を持つモジュールからのロック解除指示は無効となる。
【００７１】
＜バンドルに対するロック指示を説明するフローチャート＞
続いて図１６を用いて、ロック指示元を判断して開始状態や停止状態のバンドルに対して、ロックする処理の流れについて説明する。図１６の手順は、図１２と同様にロック制御サービス３１３がソフトウェアの実行主体となり、ＣＰＵ２０１がハードウェアの実行主体となる。
【００７２】
ロック制御サービス３１３は、特定のバンドルに対するロック指示を受信する（Ｓ１６０１）。ロック指示には指示元の識別情報や対象のバンドルの識別情報が含まれる。続いてロック制御サービス３１３は、ロックの指示を出した指示元の権限を取得する（Ｓ１６０２）。ロック制御サービス３１３は、Ｓ１６０２で取得した権限にロックを指示する権限が含まれているかを判断する（Ｓ１６０３）。指示元がロックを指示する権限を持っていない場合はバンドルをロック状態へ遷移させずエラー終了する（Ｓ１６１２）。権限の有無の判定については、実施例１や実施例２と同様に行える。
【００７３】
Ｓ１６０３において、指示元がロックの権限を持っていると判断すると、ロック制御サービス３１３は、ロック対象のバンドルが後入れバンドル３１５であるかを、インストール制御サービス３１２を介して判断する（Ｓ１６０４）。ロック対象のバンドルが後入れバンドル３１５でない場合、システムバンドル群３１０のいずれかであるため、ロック状態への遷移を許可せずエラー終了する（Ｓ１６１１）。
【００７４】
Ｓ１６０４において、ロック対象のバンドルが後入れバンドルであると判断した場合、ロック制御サービス３１３はロック対象のバンドルが既にロック状態であるかを示す管理表を、設定データ管理部３０３を介して設定データベース３０４から取得する（Ｓ１６０５）。続いて、Ｓ１６０５において取得した管理表をロック制御サービス３１３が参照し、ロック対象のバンドルが既にロック中であるかを判断する（Ｓ１６０６）。Ｓ１６０６において、既にロック中であると判断した場合は、何もせずに本フローチャートを終了する。Ｓ１６０６において、ロック対象のバンドルがロック状態でないと判断した場合、ロック制御サービス３１３は、ロックするバンドルの状態（例えば図１４に示す）を、インストール制御サービス３１２を介して取得する（Ｓ１６０７）。続いてＳ１６０７において取得したロック対象のバンドルが、停止中、停止、開始中または開始状態であるかを判断する（Ｓ１６０８）。Ｓ１６０８において、ロック対象のバンドルが停止中、停止、開始中または開始状態のいずれかだと判断した場合、ロック制御サービス３１３は、指示元の識別子を取得し、設定データ管理部３０３を介して設定データベース３０４の管理表にバンドルのロック指示元として識別子を登録する（Ｓ１６０９）。続いてロック制御サービス３１３は、バンドルをロック状態に変更し、ロック対象のバンドルがロック状態であることを、設定データ管理部３０３を介して設定データベース３０４の管理表に記録する（Ｓ１６１０）。Ｓ１６０８において、ロック対象のバンドルが、停止中もしくは停止状態及び開始中または開始状態でないと判断した場合、ロック状態への遷移を許可せずエラー終了する（Ｓ１６１１）。
【００７５】
ロックを解除する流れは図１３と同じとなるため、説明を省略する。本実施の形態を実施することにより、後入れバンドルをユーザーが停止できないように開始状態でロックすることが可能になる。画像形成装置を利用する上で必ず動作させたい後入れバンドルをユーザーの意思で停止することができないようにすることが可能である。そのため、後入れバンドルの機能を必ず利用させる手段として有効である。
【００７６】
以上説明したように、実施例１乃至実施例３によれば、指定したバンドルを停止した状態でロックすることが可能となる。そしてこのロックは権限を有していない限り解除できないので、アプリケーションプログラムたとえばバンドルをアンインストールして削除することなく、その使用を制限あるいは停止することができる。これにより、使用の再開を許す際に、使用の停止前のユーザーデータを利用でき、継続した使用の再開が可能となる。さらに、実施例２，３によれば、ロックされたアプリケーションの再開は、そのアプリケーションをロックした利用者に限って許される。そのため無権限の利用者が勝手にロックされたアプリケーションの使用を再開することができない。さらに実施例３によれば、アプリケーションのロックは停止状態のものに限らず、開始状態、すなわち動作中のアプリケーションについても行える。このため、そのアプリケーションの使用者など、ロックする権限を有しない利用者が、無権限でアプリケーションを停止させることを防止できる。
【００７７】
［その他の実施例］
なお上記実施例では、ロックの前に、バンドルの状態を判定し、所定の状態、たとえば停止中、停止、開始中、開始などの状態にあればロックするようにしていた。しかし、たとえば停止ロックをかけるのであれば、アプリケーションの状態を強制的に停止状態に遷移させ、その状態でロックしてもよい。これは開始状態（すなわち動作状態）でロックする場合も同様であり。動作ロックをかけるのであれば、アプリケーションの状態を強制的に動作状態に遷移させ、その状態でロックしてもよい。また実施例では、後入れバンドルを対象にロックを許しているが、バンドルの識別情報によりロックを許すか否かを判定してもよい。
【００７８】
また、画像形成装置にインストールされるバンドルは、画像形成装置の機能拡張のために画像形成装置のスキャナ部またはプリンタ部またはその両方を利用するアプリケーションであってよい。その利用の仕方には、そのアプリケーション自身が、画像形成装置に用意されたスキャナ部およびプリンタ部を利用するためのライブラリを用いて直接的に利用する方法がある。また、そのアプリケーションが、サーバにより提供されるサービスを利用し、そのサービスが、画像形成装置に用意された外部へのスキャナ部およびプリンタ部を提供するためのインターフェースを利用して間接的に利用する方法がある。また、画像形成装置にインストールされるバンドルは、画像形成装置のスキャナ部およびプリンタ部を用いないアプリケーションであってもよい。
【００７９】
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００８０】
１０１  画像形成装置、３１２  インストール制御サービス、３１３  ロック制御サービス、３１５  後入れバンドル
【図１】
2018097797.tif 000003
【図２】
2018097797.tif 000004
【図３】
2018097797.tif 000005
【図４】
2018097797.tif 000006
【図５】
2018097797.tif 000007
【図６】
2018097797.tif 000008
【図７】
2018097797.tif 000009
【図８】
2018097797.tif 000010
【図９】
2018097797.tif 000011
【図１０】
2018097797.tif 000012
【図１１】
2018097797.tif 000013
【図１２】
2018097797.tif 000014
【図１３】
2018097797.tif 000015
【図１４】
2018097797.tif 000016
【図１５】
2018097797.tif 000017
【図１６】
2018097797.tif 000018