(57)【要約】【課題】ワークフローを拡張プログラムとして独立したアプリケーションのように提供し、ワークフローに対応するアプリボタンのメインメニューへの表示や、ライセンス管理を可能にすること。【解決手段】フローアプリ５４０は、ＭＦＰ１０１で発生したイベントを受信し（Ｓ８０２）、該イベントに関するデータの種類が定義ファイルを含む拡張プログラムの場合、イベントの種類がインストールの場合に、該拡張プログラムのインストールに従い、該拡張プログラムに含まれる定義ファイルに紐づくオブジェクトを登録する（Ｓ８０４〜Ｓ８０８）。そして、メインメニューを介して受け付けた指示に対応する前記登録されたオブジェクトに紐づく定義ファイルを含む拡張プログラムのライセンスが有効な場合、該定義ファイルに従う処理が実行されるように制御し、ライセンスが有効でない場合、該定義ファイルに従う処理が実行されないことを特徴とする（図９）。【選択図】図８
2016099813.tif 000002
【特許請求の範囲】
【請求項１】
複数の処理工程からなる一連の処理を実行するために、複数の処理工程を定義する定義ファイルに従う処理を実行する情報処理装置であって、
前記情報処理装置で発生したイベントを受信する受信手段と、
前記受信したイベントに関するデータの種類が定義ファイルを含む拡張プログラムであった場合に、当該イベントの種類を判定する判定手段と、
前記判定手段により前記イベントの種類がインストールと判定された場合に、前記拡張プログラムのインストールに従い、該拡張プログラムに含まれる定義ファイルに紐づけられたオブジェクトを登録する登録手段と、
前記情報処理装置のメニューを介して受け付けた指示に対応する前記登録されたオブジェクトに紐づく定義ファイルを含む拡張プログラムのライセンスが有効である場合、該定義ファイルに従う処理が実行されるように制御する制御手段と、を有し、
前記メニューを介して受け付けた指示に対応する前記登録されたオブジェクトに紐づく定義ファイルを含む拡張プログラムのライセンスが有効でない場合には、該定義ファイルに従う処理が実行されないことを特徴とする情報処理装置。
【請求項２】
前記登録手段は、複数の定義ファイルを含む拡張プログラムのインストールに際して、該拡張プログラムに含まれる複数の定義ファイルのそれぞれに紐づけられた複数のオブジェクトを、前記メニューから指示を受け付けられるように登録することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記判定手段により前記イベントの種類が前記拡張プログラムの削除と判定された場合に、該拡張プログラムの削除に従い、該拡張プログラムに含まれる定義ファイルに紐づくオブジェクトの登録を解除する解除手段と、
を有することを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
前記拡張プログラムのライセンスが特定の条件を満たす場合には、該拡張プログラムから前記定義ファイルを取得して管理する管理手段と、
前記管理手段により定義ファイルが管理された拡張プログラムを削除する削除手段と、を有し、
前記登録手段は、前記管理手段により定義ファイルが管理されていることを示す情報と紐づけられたオブジェクトを登録することを特徴とする請求項１乃至３のいずれか１項に記載の情報処理装置。
【請求項５】
前記特定の条件は、前記拡張プログラムのライセンスの有効期限が無期限であること、前記拡張プログラムが前記情報処理装置のみで使用可能であることの少なくともいずれかを含むことを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記情報処理装置は、画像形成装置であることを特徴とする請求項１乃至５のいずれか１項に記載の情報処理装置。
【請求項７】
前記拡張プログラムは、前記定義ファイルに加えて、前記メニュー上で前記オブジェクトを示すアイコン画像が含まれることを特徴とする請求項１乃至６のいずれか１項に記載の情報処理装置。
【請求項８】
複数の処理工程からなる一連の処理を実行するために、複数の処理工程を定義する定義ファイルに従う処理を実行する情報処理装置の制御方法であって、
前記情報処理装置で発生したイベントを受信する受信ステップと、
前記受信したイベントに関するデータの種類が定義ファイルを含む拡張プログラムであった場合に、当該イベントの種類を判定する判定ステップと、
前記判定ステップにより前記イベントの種類がインストールと判定された場合に、前記拡張プログラムのインストールに従い、該拡張プログラムに含まれる定義ファイルに紐づけられたオブジェクトを登録する登録ステップと、
前記情報処理装置のメニューを介して受け付けた指示に対応する前記登録されたオブジェクトに紐づく定義ファイルを含む拡張プログラムのライセンスが有効である場合、該定義ファイルに従う処理が実行されるように制御する制御ステップと、を有し、
前記メニューを介して受け付けた指示に対応する前記登録されたオブジェクトに紐づく定義ファイルを含む拡張プログラムのライセンスが有効でない場合には、該定義ファイルに従う処理が実行されないことを特徴とする情報処理装置の制御方法。
【請求項９】
コンピュータを、請求項１乃至７のいずれか１項に記載の手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理装置の制御方法、及びプログラムに関する。
【背景技術】
【０００２】
近年、アプリケーションソフトウェアを機能拡張プログラムとして追加できる機能を備えた画像形成装置等の情報処理装置が普及している。機能拡張プログラム（以下、拡張プログラム）は工場出荷時だけでなく、設置後の運用段階でも追加することが可能である。追加された拡張プログラムは、画像形成装置に最初から備わっているプログラム（以下、基本プログラム）と同じように画像形成装置の機能としてメニュー（以下、メインメニュー）に表示される。
【０００３】
拡張プログラムには、有償のものと無償のものが存在する。また、有償の拡張プログラムであっても一定期間は無償で使用できる試用版といったものも存在する。拡張プログラムの使用にあたっては、不正利用を防ぐためにライセンス管理が行われる。ライセンス管理の一例として、販売者がライセンス情報を記載したライセンスファイルを発行し、拡張プログラムのインストール時にライセンスファイルを適用するといった方法がある。
【０００４】
一方で、近年のＭＦＰ（Ｍｕｌｔｉ Ｆｕｎｃｔｉｏｎ Ｐｅｒｉｐｈｅｒａｌ）と呼ばれる画像形成装置は、基本的なコピー機能に加えて、スキャン機能、プリント機能、ＦＡＸ送受信機能、電子メール送受信機能等を１台で有するようになっている。各機能を組み合わせて使おうとした場合、ユーザはそれぞれの機能に対して設定を行う必要があり、ユーザの負担が増大していた。
【０００５】
特許文献１には、コピー、送信、プリントといったＭＦＰの個々の機能を１つのタスクとして、複数のタスクの実行順とそれぞれのタスクの処理設定内容を予め設定したものをワークフローとして定義できるアプリケーション（以下、フローアプリ）が提案されている。
また、ワークフロー（以下、フロー）をフローアプリで作成するのではなく、パーソナルコンピュータ（ＰＣ）上で動作するフロー作成用のアプリケーションで作成し、複数の画像形成装置に配信するシステムも提案されている。
【０００６】
フローアプリは、定義された個々のフローを押下可能なボタンとしてアプリの画面に表示する。このボタンをユーザが押下することで、フローに定義されたタスクが実行される。フローは複数のタスクを一連の動作として定義したものであるため、フロー単位で切りだすと機能的に独立したアプリケーションのようである。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００７−３１０４６８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
上述したようなフローを拡張プログラムのような独立したアプリケーションのように提供し、ライセンス管理を行いたいという要望がある。しかし、フローは、独立したアプリケーションのように実行形式のファイルではなく、個々のタスクの設定値を定義したデータ（例えば、ＸＭＬファイル）であるため、そのままでは拡張プログラムとして提供することはできない。このため、従来では、フローを拡張プログラムのようにライセンス管理することができなかった。
【０００９】
また、追加したフローを拡張プログラムのようにメインメニューに表示して使用したいといった要望がある。しかし、フローはフローアプリのためのデータであるため、従来では、フローを追加しても拡張プログラムのようにメインメニューに表示して使用することができなかった。
【００１０】
本発明は、上記の問題点を解決するためになされたものである。本発明の目的は、複数の処理工程（タスク）からなる一連の処理（ワークフロー）を、拡張プログラムとして独立したアプリケーションのように提供し、該一連の処理に対応するオブジェクト（ボタン）のメインメニューへの登録や、ライセンス管理を行うことができる仕組みを提供することである。
【課題を解決するための手段】
【００１１】
本発明は、複数の処理工程からなる一連の処理を実行するために、複数の処理工程を定義する定義ファイルに従う処理を実行する情報処理装置であって、前記情報処理装置で発生したイベントを受信する受信手段と、前記受信したイベントに関するデータの種類が定義ファイルを含む拡張プログラムであった場合に、当該イベントの種類を判定する判定手段と、前記判定手段により前記イベントの種類がインストールと判定された場合に、前記拡張プログラムのインストールに従い、該拡張プログラムに含まれる定義ファイルに紐づけられたオブジェクトを登録する登録手段と、前記情報処理装置のメニューを介して受け付けた指示に対応する前記登録されたオブジェクトに紐づく定義ファイルを含む拡張プログラムのライセンスが有効である場合、該定義ファイルに従う処理が実行されるように制御する制御手段と、を有し、前記メニューを介して受け付けた指示に対応する前記登録されたオブジェクトに紐づく定義ファイルを含む拡張プログラムのライセンスが有効でない場合には、該定義ファイルに従う処理が実行されないことを特徴とする。
【発明の効果】
【００１２】
本発明によれば、複数の処理工程からなる一連の処理を、拡張プログラムとして独立したアプリケーションのように提供し、該一連の処理に対応するオブジェクトのメニューへの登録や、ライセンス管理を行うことが可能になる。
【図面の簡単な説明】
【００１３】
【図１】本発明の一実施例を示す画像処理システムの構成図
【図２】ＭＦＰのハードウェア構成図
【図３】管理者ＰＣのハードウェア構成図
【図４】拡張プログラムのインストールおよびアンインストールの概念図
【図５】実施例１のＭＦＰのソフトウェア構成図
【図６】拡張プログラムをインストールする処理のフローチャート
【図７】拡張プログラムをアンインストールする処理のフローチャート
【図８】実施例１におけるライフサイクルイベント処理のフローチャート
【図９】実施例１におけるアプリボタン押下時の処理のフローチャート
【図１０】フローバンドルのマニフェストファイルを例示する図
【図１１】フローデータを例示する図
【図１２】実施例１における紐づけ情報を例示する図
【図１３】実施例２におけるＭＦＰのソフトウェア構成図
【図１４】実施例２におけるライフサイクルイベント処理のフローチャート
【図１５】実施例２における紐づけ情報を例示する図
【図１６】実施例３におけるライフサイクルイベント処理のフローチャート
【図１７】実施例３におけるアプリボタン押下時の処理のフローチャート
【図１８】実施例３における紐づけ情報を例示する図
【図１９】メインメニューの表示例を示す図
【発明を実施するための形態】
【００１４】
以下、本発明を実施するための形態について図面を用いて説明する。
本実施例では、画像形成装置に拡張プログラムを追加する仕組みの一例としてＯＳＧｉフレームワークを用いるものとする。なお、ＯＳＧｉは、Ｏｐｅｎ Ｓｅｒｖｉｃｅｓ Ｇａｔｅｗａｙ ｉｎｉｔｉａｔｉｖｅの略称である。ＯＳＧｉフレームワーク上のＪａｖａ（登録商標）プログラムのことをＯＳＧｉバンドル（以下、バンドル）と呼び、本実施例では個々の拡張プログラムは独立したバンドルとして実現される。なお、本発明は、ＯＳＧｉフレームワークを用いるものに限定されるものではない。
また、本実施例では、フローを拡張プログラムとして独立したアプリケーションのように提供するために、フローを定義した定義ファイル（以下、フローデータ）をバンドルとして構成する。具体的には、フローデータ、マニフェストファイル、メインメニュー（画像形成装置に基本機能（例えば画像形成装置に最初から備わっている機能）のメニュー）に表示するアイコン画像をバンドル形式にアーカイブする（以下、ここで定義したバンドルをフローバンドルと呼称する）。通常、拡張プログラムはアプリケーションとして動作させるため、バンドルに実行ファイル（Ｊａｖａ（登録商標）クラスファイル）を含めるが、フローバンドルには実行ファイルを含める必要はない。なお、これらは、本発明を実施するための一例であり、本発明はこれらに限定されるものではない。
【実施例１】
【００１５】
図１は、本発明の一実施例を示す情報処理装置を適用可能な画像処理システムの構成を例示する図である。
図１に示すように、本システムは、ＬＡＮ１１０を介して接続されるＭＦＰ１０１と管理者ＰＣ１０２を含む。
【００１６】
ＭＦＰ１０１は、本発明の情報処理装置としての画像形成装置（画像処理装置）であり、スキャナ、プリンタを有する。また、ＭＦＰ１０１は、装置上で動作する基本プログラムおよびライセンス管理された拡張プログラムを実行させるためのアプリケーションプラットホームを有する。ＭＦＰ１０１では、フローアプリがアプリケーションプラットホーム上で動作している。フローアプリは、スキャン、プリントなどの複数の処理工程（タスク）からなる一連の処理を実行するために、複数の処理工程を定義する定義ファイル（フローデータ）に従う処理（ワークフロー）を実行することが可能である。
【００１７】
管理者ＰＣ１０２は、ＭＦＰを管理する管理者用の情報処理端末であり、ＬＡＮ１１０を介してＭＦＰ１０１へアクセスし、ＭＦＰ１０１へ拡張プログラムを追加したり、ＭＦＰ１０１から拡張プログラムを削除したりすることが可能である。管理者ＰＣ１０２では、フロー作成用のアプリケーションが動作している。
【００１８】
図２は、ＭＦＰ１０１のハードウェア構成を例示するブロック図である。
図２において、２１０は、ＣＰＵ２１１を含む制御部である。制御部２１０は、ＭＦＰ１０１全体の動作を制御する。ＣＰＵ２１１は、ＲＯＭ２１２やＨＤＤ２１４に記憶された制御プログラムを読み出して読取制御や送信制御などの各種制御処理を実行する。ＲＡＭ２１３は、ＣＰＵ２１１の主メモリ、ワークエリア等の一時記憶領域として用いられる。ＨＤＤ２１４は、画像データや基本プログラム、拡張プログラムを含む各種プログラムを記憶する。なお、ＭＦＰ１０１は、ＳＳＤ（Ｓｏｌｉｄ Ｓｔａｔｅ Ｄｒｉｖｅ）等の他の記憶装置を備えていてもよい。
【００１９】
操作部Ｉ／Ｆ２１５は、操作部２１９と制御部２１０とを接続する。操作部２１９には、タッチパネル機能を有する液晶表示部やキーボードなどが備えられている。
プリンタＩ／Ｆ２１６は、プリンタ２２０と制御部２１０とを接続する。プリンタ２２０で印刷すべき画像データはプリンタＩ／Ｆ２１６を介して制御部２１０からプリンタ２２０に転送され、プリンタ２２０において記録媒体上に印刷される。
スキャナＩ／Ｆ２１７は、スキャナ２２１と制御部２１０とを接続する。スキャナ２２１は、原稿上の画像を読み取って画像データを生成し、スキャナＩ／Ｆ２１７を介して制御部２１０に入力する。
ネットワークＩ／Ｆ２１８は、制御部２１０（ＭＦＰ１０１）をＬＡＮ１１０に接続する。ネットワークＩ／Ｆ２１８は、ＬＡＮ１１０上の他の装置との間で各種情報を送受信する。
【００２０】
図３は、管理者ＰＣ１０２のハードウェア構成を例示するブロック図である。
図３において、３１０は、ＣＰＵ３１１を含む制御部である。制御部３１０は、管理者ＰＣ１０２全体の動作を制御する。ＣＰＵ３１１は、ＲＯＭ３１２やＨＤＤ３１４に記憶された制御プログラムを読み出して各種制御処理を実行する。ＲＡＭ３１３は、ＣＰＵ３１１の主メモリ、ワークエリア等の一時記憶領域として用いられる。ＨＤＤ３１４は、各種プログラムを記憶する。なお、管理者ＰＣ１０２は、ＳＳＤ等の他の記憶装置を備えていてもよい。
【００２１】
表示部Ｉ／Ｆ３１５は、表示部３１８と制御部３１０とを接続する。キーボードＩ／Ｆ３１６は、キーボード３１９と制御部３１０とを接続する。ＣＰＵ３１１は、キーボード３１９を介したユーザからの指示を認識し、認識した指示に応じて表示部３１８に表示する画面を遷移させる。
ネットワークＩ／Ｆ３１７は、制御部３１０（管理者ＰＣ１０２）をＷＡＮ１２０に接続する。ネットワークＩ／Ｆ３１７は、ＬＡＮ１１０上の他の装置との間で各種情報を送受信する。
【００２２】
次に、図４を用いて、拡張プログラムの追加（インストール）および削除（アンインストール）について説明する。なお、図４では拡張プログラムとしてフローバンドルを使用する例を説明する。
図４は、拡張プログラムをＭＦＰ１０１へ追加（インストール）および拡張プログラムをＭＦＰ１０１から削除（アンインストール）する動作を概念的に説明する図である。
【００２３】
図４（ａ）は、管理者ＰＣ１０２を用いてフローバンドルをＭＦＰ１０１へインストールする動作を示す。
管理者ＰＣ１０２は、ＬＡＮ１１０を通してＭＦＰ１０１へアクセスする。管理者ＰＣ１０２は、フローバンドルのインストール指示とともに、後述する図５に示すフローバンドル５５０とライセンスファイル５６０をＭＦＰ１０１へ送信する（Ｓ４０１）。ライセンスファイル５６０は、フローバンドル５５０のライセンス情報を記載したライセンスファイルであり、例えばライセンスの有効期限やインストール可能なＭＦＰを特定する情報が記載されている。ＭＦＰ１０１は、管理者ＰＣ１０２から受け取ったフローバンドル５５０とライセンスファイル５６０をチェックし、問題がなければインストールを実施する。
【００２４】
図４（ｂ）は、管理者ＰＣ１０２を用いてフローバンドルをＭＦＰ１０１からアンインストールする動作を示す。
管理者ＰＣ１０２は、ＭＦＰ１０１へフローバンドル５５０のアンインストール指示を送信する（Ｓ４１１）。ＭＦＰ１０１は、アンインストール行為として、指示されたフローバンドル５５０とそのラインセンスファイル５６０を削除する。
【００２５】
図１０は、本実施例におけるフローバンドルのマニフェストファイルの具体的な記述例を示す図である。
図１０において、Ａｐｐｌｉｃａｔｉｏｎ−Ｉｄ（１０１１）は、バンドルを一意に識別するためのＩＤを定義する項目である。Ｂｕｎｄｌｅ−Ｎａｍｅ（１０１２）は、バンドルの名前を定義する項目である。Ｂｕｎｄｌｅ−Ｔｙｐｅは、バンドルの種類を定義する項目であり、１０１３はこのバンドルがフローバンドルであることを示している。
【００２６】
図１１は、本実施例におけるフローの定義（以下、フローデータ）の具体的な記述例を示す図である。
図１１において、タグ１１１０（Ｆｌｏｗタグ）は、本ファイルがフローを定義したファイルであることを定義している。
属性１１１１（Ｆｌｏｗタグのｉｄ属性）は、フローを一意に示す識別子（以下、フローＩＤ）を定義している。属性１１１２（Ｆｌｏｗタグのｎａｍｅ属性）は、フローの名称を定義している。属性１１１３（Ｆｌｏｗタグのｉｃｏｎ属性）は、メインメニューに表示するアイコン画像のファイル名を定義している。
タグ１１２０（Ｔａｓｋタグ）は、Ｆｌｏｗタグの子要素で、タスクに関する各項目を定義している。
【００２７】
図１９は、ＭＦＰ１０１の操作部２１９に表示されるメインメニューの表示の一例を示す図である。
図１９（ａ）は、工場出荷時のメインメニューの一例である。
図１９（ａ）に表示されているボタンは、基本プログラムを呼び出すためのオブジェクトである。ボタン１９０１を押下すると、コピー機能が呼び出される（コピー画面に表示が切り替わる）。
【００２８】
図１９（ｂ）は、拡張プログラムとしてフローバンドルをインストールした場合のメインメニューの一例である。図１９（ｂ）と図１９（ａ）との違いは、メインメニューにボタン１９０２が追加されていることである。ボタン１９０２は、フローバンドルをＭＦＰ１０１にインストールしたことによって追加されたボタンであり、ボタン１９０２を押下するとフローバンドルで定義したフローが呼び出される。
【００２９】
図１９（ｂ）で示したように、メインメニューにおいて、基本プログラムと拡張プログラム（フローバンドル）のボタンは区別なしに表示される。以降、メインメニューから各機能を呼び出すためのボタンをアプリボタンと呼称する。
各アプリボタンには、ボタン名称とアイコン画像を表示する。ボタン１９０２に表示されているのは、属性１１１２で定義されたフローの名称と属性１１１３で定義されたアイコン画像である。なお、本実施例では、メインメニューから基本プログラムと拡張プログラム等の各機能を呼び出すためのオブジェクトとしてボタンと用いる例について説明するが、ボタン以外の他のオブジェクトであってもよい。
【００３０】
図５は、実施例１のＭＦＰ１０１におけるソフトウェア構成を例示する図である。図５に示す各部は、ＭＦＰ１０１のＨＤＤ２１４に記憶されているプログラム（ソフトウェア）を、ＣＰＵ２１１がＲＡＭ２１３に読み出し、解析、実行することで実現される機能部である。
【００３１】
図５において、拡張プログラム管理部５１０は、ＭＦＰ１０１上で拡張プログラムを動作させるためのアプリケーションプラットホームである。ライセンス管理部５２０は、拡張プログラムのライセンスを管理する。
ライセンス管理部５２０は、拡張プログラムをインストールする際にラインセンスの確認を行ったり、インストールされた拡張プログラムの期限を確認したりする。
メインメニュー管理部５３０は、メインメニューの管理を行う。メインメニューにアプリアイコンを表示したり、押下されたアプリアイコンに対応するプログラムを呼び出したりする。
【００３２】
フローアプリ５４０は、フローの処理を行うアプリケーションである。フローアプリ５４０は、データ管理部５４１、ライフサイクル処理部５４２、フロー実行部５４３、ライセンス確認部５４４を有する。本実施例では、フローアプリ５４０は基本プログラムとして工場出荷時に予めＭＦＰ１０１に搭載されているものとするが、フローアプリ５４０を拡張プログラムとして後から追加するように構成してもよい。
【００３３】
データ管理部５４１は、フローアプリで扱うデータの管理を行う。例えば、データ管理部５４１は、メインメニューに登録したフローデータとアプリアイコンの紐づけ情報を管理する。ライフサイクル処理部５４２は、拡張プログラムのライフサイクルの変化（例えば、インストール、アンインストールなど）を監視して、ライフサイクルの変化に応じた処理を行う。フロー実行部５４３は、フローデータに定義されたタスクを実行する。ライセンス確認部５４４は、フローバンドルのライセンス状態を確認する。
【００３４】
フローバンドル５５０は、拡張プログラムとしてインストールされたフローバンドルである。フローバンドル５５０は、マニフェストファイル５５１、フローデータ５５２、アイコン画像５５３を有する。図５に示す例は、フローバンドルを１つインストールした場合の構成に対応する。なお、ＭＦＰ１０１は、複数のフローバンドルをインストールすることが可能である。ＭＦＰ１０１に複数のフローバンドルをインストールした場合、ＭＦＰ１０１にはインストールした数だけフローバンドルとライセンスファイルが配置される。
【００３５】
マニフェストファイル５５１は、フローバンドル５５０のバンドル定義を記載したマニフェストファイルである。フローデータ５５２は、フローバンドル５５０で提供するフローを定義したフローデータである。アイコン画像５５３は、アプリボタンに表示するアイコン画像である。即ち、アイコン画像５５３は、メニュー上でオブジェクトを示すアイコン画像である。
ライセンスファイル５６０は、フローバンドル５５０のライセンス情報を記載したライセンスファイルである。
【００３６】
図６は、ＭＦＰ１０１に拡張プログラムをインストールする処理を説明するフローチャートである。なお、図６は図４（ａ）のＳ４０１を処理するためのＭＦＰ１０１における処理に対応する。ＭＦＰ１０１のＨＤＤ２１４に記憶されているプログラム（ソフトウェア）を、ＣＰＵ２１１がＲＡＭ２１３に読み出し、解析、実行することで、本フローチャートに示す処理が実現される。また、図中の'Ｓ'を付した符号はステップを示す。
【００３７】
まず、拡張プログラム管理部５１０は、ユーザから拡張プログラムのインストール指示を受け取る（受信する）と（Ｓ６０１）、Ｓ６０２に処理を進める。
Ｓ６０２において、拡張プログラム管理部５１０は、インストール指示で受け取ったバンドルとライセンスファイルを、ＨＤＤ２１４に保存する。
次に、Ｓ６０３において、拡張プログラム管理部５１０は、上記Ｓ６０１で受け取ったバンドルの中に格納されているマニフェストファイルが正常（正しいマニフェストファイル）であるか否かを判定する。例えば、拡張プログラム管理部５１０は、マニフェストファイルに、Ａｐｐｌｉｃａｔｉｏｎ−Ｉｄ、Ｂｕｎｄｌｅ−Ｎａｍｅ、Ｂｕｎｄｌｅ−Ｔｙｐｅなどの項目が記載されている場合に、マニフェストファイルが正常であると判定する。
【００３８】
そして、マニフェストファイルが正常でないと判定した場合（Ｓ６０３でＮｏの場合）、拡張プログラム管理部５１０は、Ｓ６１０において、エラー画面を表示して、本フローチャートの処理を終了する。
一方、マニフェストファイルが正常であると判定した場合（Ｓ６０３でＹｅｓの場合）、拡張プログラム管理部５１０は、Ｓ６０４に処理を進める。
【００３９】
Ｓ６０４において、ライセンス管理部５２０が、上記Ｓ６０１で受け取ったライセンスファイルが有効であるか否かを確認する。例えば、ライセンス管理部５２０は、ライセンスファイルに記載されているライセンスの有効期限が有効期限内であり、且つ、インストール可能なＭＦＰを特定する情報が当該ＭＦＰ１０１に対応する場合に、ライセンスファイルが有効であると判定する。
【００４０】
そして、ライセンス管理部５２０が、ライセンスファイルは有効でないと判定した場合（Ｓ６０４でＮｏの場合）、拡張プログラム管理部５１０が、Ｓ６１０において、エラー画面を表示して、本フローチャートの処理を終了する。
【００４１】
一方、ライセンス管理部５２０が、ライセンスファイルは有効であると判定した場合（Ｓ６０４でＹｅｓの場合）、拡張プログラム管理部５１０は、Ｓ６０５に処理を進める。
Ｓ６０５において、拡張プログラム管理部５１０は、上記Ｓ６０１で受け取ったバンドルのインストールを実行し、バンドルをアプリケーションプラットホーム上で有効になるように配置する。最後に、Ｓ６０６において、拡張プログラム管理部５１０は、バンドルのライフサイクルが変更したことを知らせるイベント（以下、ライフサイクルイベント）を発生させて、本フローチャートの処理を終了する。なお、ライフサイクルイベントには、イベントの種類（Ｓ６０６の場合はバンドルのインストール）とイベント発生元のバンドルを特定する情報が含まれている。
【００４２】
図７は、ＭＦＰ１０１から拡張プログラムをアンインストールする処理を説明するフローチャートである。なお、図７は図４（ｂ）のＳ４１１を処理するためのＭＦＰ１０１における処理に対応する。ＭＦＰ１０１のＨＤＤ２１４に記憶されているプログラム（ソフトウェア）を、ＣＰＵ２１１がＲＡＭ２１３に読み出し、解析、実行することで、本フローチャートに示す処理が実現される。また、図中の'Ｓ'を付した符号はステップを示す。
【００４３】
まず、拡張プログラム管理部５１０が、ユーザから拡張プログラムのアンインストール指示を受け取る（受信）すると（Ｓ７０１）、Ｓ７０２に処理を進める。
Ｓ７０２において、拡張プログラム管理部５１０は、アンインストール対象のバンドルがＭＦＰ１０１上に存在しているか（インストール済みであるか）否かを判定する。
そして、アンインストール対象のバンドルがＭＦＰ１０１上に存在していない（インストール済みでない）と判定した場合（Ｓ７０２でＮｏの場合）、拡張プログラム管理部５１０は、Ｓ７１０において、エラー画面を表示して、本フローチャートの処理を終了する。
【００４４】
一方、アンインストール対象のバンドルがＭＦＰ１０１上に存在している（インストール済みである）と判定した場合（Ｓ７０２でＹｅｓの場合）、拡張プログラム管理部５１０は、Ｓ７０３に処理を進める。
【００４５】
Ｓ７０３において、拡張プログラム管理部５１０は、ライフサイクルイベント（バンドルのアンインストール）を発生させる。
次に、Ｓ７０４において、拡張プログラム管理部５１０は、バンドルのアンインストールを実行し、バンドルをアプリケーションプラットホーム上で無効にする。最後に、Ｓ７０５において、拡張プログラム管理部５１０は、上記Ｓ７０４でアンインストールしたバンドルとそのライセンスファイルをＨＤＤ２１４から削除して、本フローチャートの処理を終了する。
【００４６】
図８は、実施例１のフローアプリ５４０がライフサイクルイベントを処理するための処理を説明するフローチャートである。ＭＦＰ１０１のＨＤＤ２１４に記憶されているプログラム（ソフトウェア）を、ＣＰＵ２１１がＲＡＭ２１３に読み出し、解析、実行することで、本フローチャートに示す処理が実現される。また、図中の'Ｓ'を付した符号はステップを示す。
【００４７】
まず、Ｓ８０１において、ライフサイクル処理部５４２は、ライフサイクルイベントの通知を受信するよう、拡張プログラム管理部５１０に登録する。
次に、Ｓ８０２において、ライフサイクル処理部５４２は、ライフサイクルイベントの発生を待ちうける。
そして、ライフサイクル処理部５４２が、ライフサイクルイベントが発生したと判定した場合（Ｓ８０２で「イベント発生」の場合）、Ｓ８０３に処理を進める。
【００４８】
Ｓ８０３では、データ管理部５４１が、ライフサイクルイベント発生元のバンドルを特定し、該バンドルに対応するマニフェストファイルを取得する。
次に、Ｓ８０４において、データ管理部５４１は、上記Ｓ８０３で取得したマニフェストファイルに記載されたバンドルの種類（１０１３）に基づいて、イベント発生元のバンドルがフローバンドルか否かを判定する。
【００４９】
そして、データ管理部５４１が、イベント発生元のバンドルがフローバンドルでないと判定した場合（Ｓ８０４でＮｏの場合）、そのまま本フローチャートの処理を終了する。
一方、データ管理部５４１が、イベント発生元のバンドルがフローバンドルであると判定した場合（Ｓ８０４でＹｅｓの場合）、Ｓ８０５へ処理を進める。
【００５０】
Ｓ８０５では、ライフサイクル処理部５４２が、ライフサイクルイベントの種類を確認する。
そして、ライフサイクル処理部５４２が、ライフサイクルイベントの種類がバンドルのインストールであると判定した場合（Ｓ８０５で「インストール」の場合）、Ｓ８０６へ処理を進める。
【００５１】
Ｓ８０６では、データ管理部５４１が、イベント発生元のフローバンドルからフローデータとアイコン画像を取得する。
次に、Ｓ８０７において、データ管理部５４１は、メインメニューにフローに対応するアプリボタンを登録する。データ管理部５４１は、アプリボタンを登録する際、「アプリボタン名称」、「アイコン画像」、「アプリアイコンを押下した際に呼び出されるプログラム」、「アプリボタンを一意に識別するアプリボタンＩＤ」の４項目をメインメニュー管理部５３０に通知する。なお、アプリボタン名称としてフローデータに定義されているフロー名称１１１２を指定し、アイコン画像としてアイコン画像５５３（アイコン画像のファイル名は１１１３）を指定する。さらに、アプリアイコンが押下された際に呼び出されるプログラムにはフローアプリ５４０を指定し、アプリボタンＩＤにはフローデータに定義されているフローＩＤ１１１１を指定する。
【００５２】
次に、Ｓ８０８において、データ管理部５４１は、図１２に示すように、イベント発生元のフローバンドルのＩＤとメインメニューに登録したフローのＩＤ（アプリボタンＩＤ）の紐づけ情報を保存し、本フローチャートの処理を終了する。
【００５３】
図１２は、実施例１においてメインメニューに登録したフローのバンドルＩＤとフローＩＤの紐づけ情報の一例を示す図である。
図１２において、１２００はメインメニューに登録したフローのバンドルＩＤとフローＩＤの紐づけ情報である。紐づけ情報１２００は、ＭＦＰ１０１のＨＤＤ２１４に保持される。図１２に例示する紐づけ情報１２００では、バンドルＩＤ「ｂ００１０」とフローＩＤ「ｆ００１１」が紐づいていることが記録されている。
【００５４】
以下、図８の説明に戻る。
また、上記Ｓ８０５において、ライフサイクル処理部５４２が、ライフサイクルイベントの種類がバンドルのアンインストールであると判定した場合（Ｓ８０５で「アンインストール」の場合）、Ｓ８１１へ処理を進める。
【００５５】
Ｓ８１１では、データ管理部５４１が、アンインストール対象のフローバンドルに対応するアプリボタン（アプリボタンＩＤ＝フローＩＤ）を、紐づけ情報１２００を用いて特定する。
次に、Ｓ８１２において、データ管理部５４１は、フローバンドルに対応するアプリボタンがあるか否かを判定する。そして、データ管理部５４１が、フローバンドルに対応するアプリボタンがあると判定した場合（Ｓ８１２でＹｅｓの場合）、Ｓ８１３に処理を進める。
【００５６】
Ｓ８１３では、データ管理部５４１は、メインメニュー管理部５３０にメインメニューから登録を解除するアプリボタンのＩＤを通知して、フローバンドルに対応するアプリボタンの登録を解除する。
さらに、Ｓ８１４において、データ管理部５４１は、メインメニューから登録を解除したアプリボタンとフローバンドルの紐づけ情報を削除し、本フローチャートの処理を終了する。
【００５７】
一方、上記Ｓ８１２において、データ管理部５４１が、フローバンドルに対応するアプリボタンがないと判定した場合（Ｓ８１２でＮｏの場合）、本フローチャートの処理を終了する。
【００５８】
また、上記Ｓ８０５において、ライフサイクル処理部５４２が、ライフサイクルイベントの種類がバンドルのインストールでもアンインストールでもないと判定した場合（Ｓ８０５で「その他」の場合）、そのまま本フローチャートの処理を終了する。
【００５９】
以上、図８に示したように、ライフサイクル処理部５４２は、ＭＦＰ１０１で発生したイベントを受信し、該受信したイベントに関するデータの種類が定義ファイルを含む拡張プログラム（フローバンドル）であった場合に、当該イベントの種類を判定し、イベントの種類がインストールと判定された場合に、前記拡張プログラムのインストールに従い、該拡張プログラムに含まれる定義ファイルに紐づけられたオブジェクトとしてアプリアイコンを登録する。この構成により、フローを、拡張プログラムとして独立したアプリケーションのように提供し、フローに対応するアプリボタンのメインメニューへの表示が可能になる。
【００６０】
図９は、実施例１においてユーザがメインメニューからフローのアプリアイコンを押下した場合のフローアプリ５４０の処理を説明するフローチャートである。ＭＦＰ１０１のＨＤＤ２１４に記憶されているプログラム（ソフトウェア）を、ＣＰＵ２１１がＲＡＭ２１３に読み出し、解析、実行することで、本フローチャートに示す処理が実現される。また、図中の'Ｓ'を付した符号はステップを示す。
【００６１】
まず、Ｓ９０１において、データ管理部５４１が、メインメニュー管理部５３０からアプリボタンが押下された旨の通知を受け取ると（受信すると）、Ｓ９０２に処理を進める。該通知には、押下されたアプリボタンのアプリボタンＩＤが含まれている。
【００６２】
Ｓ９０２において、データ管理部５４１は、押下されたアプリボタンに対応するフローバンドルを特定する。本実施例では図８のＳ８０７においてアプリボタンＩＤにフローＩＤが指定されているため、アプリボタンＩＤをそのままフローＩＤとして使用するものとする。データ管理部５４１は、紐づけ情報１２００を用いて、フローＩＤからバンドルＩＤを取得することで、フローバンドルを特定する。
【００６３】
次に、Ｓ９０３において、ライセンス確認部５４４は、上記Ｓ９０２で特定したフローバンドルのライセンスが有効か否かをライセンス管理部５２０に問い合わせ、該問い合わせ結果を判定する。
そして、ライセンス確認部５４４が、ライセンスが有効であると判定した場合（Ｓ９０３でＹｅｓの場合）、Ｓ９０４に処理を進める。
Ｓ９０４では、フロー実行部５４３が、フローバンドルからフローデータを取得する。
次に、Ｓ９０５において、フロー実行部５４３は、取得したフローデータに定義されたフローの各タスクを実行し、本フローチャートの処理を終了する。
【００６４】
一方、上記Ｓ９０３において、ライセンス確認部５４４が、上記Ｓ９０２で特定したフローバンドルのライセンスが有効でないと判定した場合（Ｓ９０３でＮｏの場合）、Ｓ９１１において、エラーを表示し、本フローチャートの処理を終了する。
【００６５】
以上、図９に示したように、ＭＦＰ１０１は、メインメニューを介して受け付けた指示に対応する、登録されたオブジェクト（アプリアイコン）に紐づく定義ファイルを含む拡張プログラム（フローバンドル）のライセンスが有効である場合、該定義ファイルに従う処理が実行されるように制御し、メインメニューを介して受け付けた指示に対応するアプリアイコンに紐づく定義ファイルを含む拡張プログラムのライセンスが有効でない場合には、該定義ファイルに従う処理が実行されない構成を有する。このような構成により、フローのライセンス管理が可能となる。
【００６６】
以上示したように、実施例１によれば、フローを、拡張プログラムとして独立したアプリケーションのように提供し、フローに対応するアプリボタンのメインメニューへの表示や、ライセンス管理を行うことが可能になる。
【実施例２】
【００６７】
上述した実施例１では、１つのフローバンドルに１つのフローが定義されている例を説明した。実施例２では、１つのフローバンドルに複数のフローが定義されている例を説明する。即ち、実施例２のフローバンドルは、フローデータとアイコン画像をそれぞれ複数含むことができる。なお、実施例２では、実施例１との差分のみ説明する。
【００６８】
図１３は、実施例２のＭＦＰ１０１におけるソフトウェア構成を例示する図であり、図５と同一のものには同一の符号を付してある。図１３に示す各部は、ＭＦＰ１０１のＨＤＤ２１４に記憶されているプログラム（ソフトウェア）を、ＣＰＵ２１１がＲＡＭ２１３に読み出し、解析、実行することで実現される機能部である。
【００６９】
図１３に示すソフトウェア構成は、図５の構成に、フローバンドル１３１０とライセンスファイル１３２０が追加されたものである。なお、フローアプリ５４０とフローバンドル５５０の内部の記載は省略している。
【００７０】
図１３において、フローバンドル１３１０は、フローを３つ定義したフローバンドルである。フローバンドル１３１０は、１つのマニフェストファイル（１３１１）と３つのフローデータ（１３１２、１３１４、１３１６）、３つのアイコン画像（１３１３、１３１５、１３１７）を有する。ライセンスファイル１３２０は、フローバンドル１３１０のためのライセンスファイルである。
【００７１】
図１４は、実施例２のフローアプリ５４０がライフサイクルイベントを処理するための処理を説明するフローチャートである。ＭＦＰ１０１のＨＤＤ２１４に記憶されているプログラム（ソフトウェア）を、ＣＰＵ２１１がＲＡＭ２１３に読み出し、解析、実行することで、本フローチャートに示す処理が実現される。また、図中の'Ｓ'を付した符号はステップを示すものであり、図８と同一のステップには同一のステップ番号を付してあり、説明は省略する。
【００７２】
Ｓ８０５において、ライフサイクル処理部５４２が、ライフサイクルイベントの種類がバンドルのインストールであると判定した場合（Ｓ８０５で「インストール」の場合）、Ｓ１４０１へ処理を進める。
Ｓ１４０１では、データ管理部５４１が、イベント発生元のフローバンドルからフロー（フローデータとアイコン画像のセット）を取得する。なお、フローが複数存在する場合（フローバンドルにフローデータが複数含まれている場合）は、すべて取得する。
【００７３】
次に、Ｓ１４０２において、データ管理部５４１は、上記Ｓ１４０１で取得したフローの数だけ、メインメニューにフローに対応するアプリボタンを登録する（ステップＳ１４０２）。即ち、フローバンドルに含まれるフローごとに該フローに紐づくアプリボタンをメインメニューに登録する。
次に、Ｓ１４０３において、データ管理部５４１は、図１５に示すように、イベント発生元のフローバンドルのＩＤとメインメニューに登録したフローのＩＤ（アプリボタンＩＤ）の紐づけ情報を保存し、本フローチャートの処理を終了する。
【００７４】
図１５において、１５００はメインメニューに登録したフローのバンドルＩＤとフローＩＤの紐づけ情報である。紐づけ情報１５００は、ＭＦＰ１０１のＨＤＤ２１４に保持される。図１５に例示する紐づけ情報１５００では、図１２の１２００に示した紐づけ情報（バンドルＩＤ「ｂ００１０」とフローＩＤ「ｆ００１１」が紐づいている）に加え、バンドルＩＤ「ｂ００２０」と３つのフローＩＤ「ｆ００２１」，「ｆ００２２」，「ｆ００２３」が紐づいていることが記録されている。
【００７５】
以下、図１４の説明に戻る。
また、Ｓ８０５において、ライフサイクル処理部５４２が、ライフサイクルイベントの種類がバンドルのアンインストールであると判定した場合（Ｓ８０５で「アンインストール」の場合）、Ｓ１４１１へ処理を進める。
Ｓ１４１１では、データ管理部５４１が、アンインストール対象のフローバンドルに対応するアプリボタン（アプリボタンＩＤ＝フローＩＤ）を、紐づけ情報１５００を用いて特定する。１つのフローバンドルに複数のフローが定義されている場合、複数のアプリボタンが特定される。
【００７６】
次に、Ｓ１４１２において、データ管理部５４１は、フローバンドルに対応するアプリボタンがあるか否かを判定する。そして、データ管理部５４１が、フローバンドルに対応するアプリボタンがあると判定した場合（Ｓ１４１２でＹｅｓの場合）、Ｓ１４１３に処理を進める。
【００７７】
Ｓ１４１３では、データ管理部５４１が、メインメニュー管理部５３０にメインメニューから登録を解除するアプリボタンのＩＤを通知して、フローバンドルに対応するアプリボタンの登録を解除する。上記Ｓ１４１１で複数のアプリボタンを特定した場合は、該特定した全てのアプリボタンのＩＤを通知して、全てのアプリボタンの登録を解除する。
さらに、Ｓ１４１４において、データ管理部５４１は、メインメニューから登録を解除したアプリボタンとフローバンドルの紐づけ情報を削除し、本フローチャートの処理を終了する。
【００７８】
また、上記Ｓ１４１２において、データ管理部５４１が、フローバンドルに対応するアプリボタンがないと判定した場合（Ｓ１４１２でＮｏの場合）、本フローチャートの処理を終了する。
【００７９】
以上説明したように、実施例２によれば、データ管理部５４１が、複数の定義ファイルを含む拡張プログラム（複数のフローを含むフローバンドル）のインストールに際して、該拡張プログラムに含まれる複数の定義ファイルのそれぞれに紐づけられた複数のオブジェクトを、前記メニューから指示を受け付けられるように登録する。このような構成により、複数のフローを１つのフローバンドルで提供することが可能になる。
【実施例３】
【００８０】
上述した実施例１および実施例２では、インストールしたフローバンドルは明示的にアンインストールしない限り、ＭＦＰ１０１に存在しつづけていた。画像形成装置によっては、インストール可能な拡張プログラムの数が制限されている場合がある。そのため、実施例３では、特定の条件に基づいてフローバンドルを自動的にアンインストールし、ＭＦＰ１０１に存在するフローバンドルの数を減らすことのできる手順を説明する。なお、実施例２では、実施例１との差分のみ説明する。
【００８１】
図１６は、実施例３のフローアプリ５４０がライフサイクルイベントを処理するための処理を説明するフローチャートである。ＭＦＰ１０１のＨＤＤ２１４に記憶されているプログラム（ソフトウェア）を、ＣＰＵ２１１がＲＡＭ２１３に読み出し、解析、実行することで、本フローチャートに示す処理が実現される。また、図中の'Ｓ'を付した符号はステップを示すものであり、図８と同一のステップには同一のステップ番号を付してあり、説明は省略する。
【００８２】
Ｓ８０７におけるアプリボタンの登録処理が完了すると、Ｓ１６１１において、ライセンス確認部５４４が、イベント発生元のフローバンドルのライセンスが無期限かつ本フローチャートの処理を実行中のＭＦＰ１０１でのみ使用可能なライセンスであるか否かを判定する。
【００８３】
そして、ライセンス確認部５４４が、該イベント発生元のフローバンドルのライセンスが無期限かつフローチャートを実行中のＭＦＰ１０１でのみ使用可能なライセンスではないと判定した場合（Ｓ１６１１でＮｏの場合）、Ｓ１６１４に処理を進める。
【００８４】
一方、ライセンス確認部５４４が、該イベント発生元のフローバンドルのライセンスが無期限かつフローチャートを実行中のＭＦＰ１０１でのみ使用可能なライセンスであると判定した場合（Ｓ１６１１でＹｅｓの場合）、Ｓ１６１２に処理を進める。
Ｓ１６１２では、データ管理部５４１が、該フローバンドルからフローデータとアイコン画像を取り出して、フローアプリ５４０が管理するＨＤＤ２１４の領域へ保存する。
次に、Ｓ１６１３において、データ管理部５４１が、該フローバンドルをアンインストールし、Ｓ１６１４に処理を進める。
【００８５】
Ｓ１６１４では、データ管理部５４１は、図１８に示すように、イベント発生元のフローバンドルのバンドルＩＤとメインメニューに登録したフローのＩＤ（アプリボタンＩＤ）の紐づけ情報を保存し、本フローチャートの処理を終了する。このとき、フローバンドルをＳ１６１３でアンインストールしている場合は、バンドルＩＤの代わりに「インポート済み」である旨を表すＩＤを使用する。即ち、「インポート済み」である旨を表すＩＤ（例えば「ｉｍｐｏｒｔｅｄ」）とメインメニューに登録したフローのＩＤ（アプリボタンＩＤ）の紐づけ情報を保存する。
【００８６】
図１８は、実施例３においてメインメニューに登録したフローのバンドルＩＤとフローＩＤの紐づけ情報の一例を示す図である。
図１８において、１８００はメインメニューに登録したフローのバンドルＩＤとフローＩＤの紐づけ情報である。紐づけ情報１８００は、ＭＦＰ１０１のＨＤＤ２１４に保持される。図１８に例示する紐づけ情報１８００において、バンドルＩＤ「ｉｍｐｏｒｔｅｄ」は、対応するバンドルがアンインストール済みであり、フローデータはフローアプリにインポート済みである旨を表している。
【００８７】
図１７は、実施例３においてユーザがメインメニューからフローのアプリアイコンを押下した場合のフローアプリ５４０の処理を説明するフローチャートである。ＭＦＰ１０１のＨＤＤ２１４に記憶されているプログラム（ソフトウェア）を、ＣＰＵ２１１がＲＡＭ２１３に読み出し、解析、実行することで、本フローチャートに示す処理が実現される。また、図中の'Ｓ'を付した符号はステップを示ものであり、図９と同一のステップには同一のステップ番号を付してあり、説明は省略する。
【００８８】
Ｓ９０２におけるアプリボタンに対応するフローバンドルの特定処理が完了すると、Ｓ１７１１において、データ管理部５４１が、メインメニューで押下されたアプリボタンに対応するフローバンドルが「インポート済み」であるかどうかを確認する。
そして、データ管理部５４１が、メインメニューで押下されたアプリボタンに対応するフローバンドルが「インポート済み」でないと判定した場合（Ｓ１７１１でＮｏの場合）、データ管理部５４１は、Ｓ９０３に処理を進める。Ｓ９０３以降は図９と同一のため説明は省略する。
【００８９】
一方、上記Ｓ１７１１において、データ管理部５４１が、メインメニューで押下されたアプリボタンに対応するフローバンドルが「インポート済み」であると判定した場合（Ｓ１７１１でＹｅｓの場合）、データ管理部５４１は、Ｓ１７１２に処理を進める。
Ｓ１７１２では、データ管理部５４１が、メインメニューで押下されたアプリボタンに対応するインポート済みのフローデータを取り出し、Ｓ９０５へ処理を進める。Ｓ９０５は図９と同一のため説明は省略する。
【００９０】
以上、説明したように、実施例３によれば、特定の条件に基づいてフローバンドルを自動的にアンインストールし、ＭＦＰ１０１に存在するフローバンドルの数を減らすことが可能になる。
【００９１】
なお、本実施例では、特定の条件として、イベント発生元のフローバンドルのライセンスが無期限かつ図１６の処理を実行中のＭＦＰ１０１でのみ使用可能なライセンスであることを例として用いた。しかし、上記特定の条件は、この条件に限定されるものではなく、他の条件であってもよい。例えば、特定の条件は、イベント発生元のフローバンドルのライセンスの有効期限が無期限であるという条件、図１６の処理を実行中のＭＦＰ１０１でのみ使用可能なライセンスであるという条件の少なくともいずれかを含む条件であってもよい。また、ライセンスの有効期限が特定の期間以上（例えば１０年以上）であるという条件であってもよい。さらに、これら以外の条件であってもよい。
【００９２】
なお、上記各実施例では、本発明の情報処理装置としてＭＦＰを用いて説明したが、本発明を適用可能な装置はＭＦＰのような装置に限定されるものではなく、他の情報処理装置であってもよい。ライセンス管理された拡張プログラムを追加可能であり、実行可能なタスクを複数組み合わせたワークフローを実行可能な装置であれば、本発明を適用可能である。例えば、テレビジョン等の家電や、カーナビゲーション装置などであっても、本発明を適用可能である。
【００９３】
以上示したように、本発明の実施例では、ＭＦＰ１０１に対して、フローデータとアイコン画像を定義したフローバンドルをインストールすると、ＭＦＰ１０１のフローアプリ５４０が、メインメニューに該フローバンドルに対応するアプリアイコンを登録する。アプリアイコンが指示されると、フローアプリ５４０がライセンスを確認の上、該アプリアイコンに紐づけされたフローバンドルからフローデータを取得して、フローデータに定義されたワークフローの各タスクを実行する。このような構成により、ワークフローを、拡張プログラムとして独立したアプリケーションのように提供し、ワークフローに対応するアプリボタンのメインメニューへの表示や、ライセンス管理を行うことが可能になる。よって、ワークフローの１つ１つをライセンス管理するためのフレームワークの構築と、実行時などのライセンス管理を実現することができる。
【００９４】
なお、上述した各種データの構成及びその内容はこれに限定されるものではなく、用途や目的に応じて、様々な構成や内容で構成されることは言うまでもない。
以上、一実施形態について示したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記憶媒体等としての実施態様をとることが可能である。具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
また、上記各実施例を組み合わせた構成も全て本発明に含まれるものである。
【００９５】
（その他の実施例）
本発明は、上述の実施例の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
また、本発明は、複数の機器から構成されるシステムに適用しても、１つの機器からなる装置に適用してもよい。
本発明は上記実施例に限定されるものではなく、本発明の趣旨に基づき種々の変形（各実施例の有機的な組合せを含む）が可能であり、それらを本発明の範囲から除外するものではない。即ち、上述した各実施例及びその変形例を組み合わせた構成も全て本発明に含まれるものである。
【図１】
2016099813.tif 000003
【図２】
2016099813.tif 000004
【図３】
2016099813.tif 000005
【図４】
2016099813.tif 000006
【図５】
2016099813.tif 000007
【図６】
2016099813.tif 000008
【図７】
2016099813.tif 000009
【図８】
2016099813.tif 000010
【図９】
2016099813.tif 000011
【図１０】
2016099813.tif 000012
【図１１】
2016099813.tif 000013
【図１２】
2016099813.tif 000014
【図１３】
2016099813.tif 000015
【図１４】
2016099813.tif 000016
【図１５】
2016099813.tif 000017
【図１６】
2016099813.tif 000018
【図１７】
2016099813.tif 000019
【図１８】
2016099813.tif 000020
【図１９】
2016099813.tif 000021