(57)【要約】【課題】  ワークフローアプリから機能プロバイダが呼び出されるような構成であっても、使用されない機能プロバイダを適切に選択して停止させて資源を確保し、新たな機能プロバイダをインストールする。【解決手段】    デバイスメモリに拡張ソフトとして登録された複数の機能プロバイダが所定のワークフロー定義ファイルに従い連携して特定の処理を実行する情報処理装置において、機能プロバイダをインストールする指示を受け付けた場合で、かつ、前記デバイスメモリの資源容量で特定される空き容量がインストールする拡張ソフトまたは機能プロバイダの資源容量が超える場合、前記デバイスメモリに登録された所定のワークフローで特定される機能プロバイダの使用状態から起動させる機能プロバイダと、使用させない機能プロバイダとを抽出する。そして、抽出した前記使用させない機能プロバイダをデバイスメモリから削除して、機能プロバイダをインストールする空き容量をデバイスメモリに確保する構成を特徴とする。【選択図】  図１４Ａ
2018152687.tif 000002
【特許請求の範囲】
【請求項１】
デバイスメモリに拡張ソフトとして登録された複数の機能プロバイダが所定のワークフロー定義ファイルに従い連携して特定の処理を実行する情報処理装置であって、
前記デバイスメモリの資源容量と、前記デバイスメモリにインストールする所定の拡張ソフトの資源容量と、前記デバイスメモリにインストールする機能プロバイダの資源容量とを管理する管理手段と、
機能プロバイダをインストールする指示を受け付けた場合で、かつ、前記デバイスメモリの資源容量で特定される空き容量がインストールする拡張ソフトまたは機能プロバイダの資源容量が超える場合、前記デバイスメモリに登録された所定のワークフローで特定される機能プロバイダの使用状態から起動させる機能プロバイダと、使用させない機能プロバイダとを抽出する抽出手段と、
前記抽出手段が抽出した前記使用させない機能プロバイダを前記デバイスメモリから削除する削除手段と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記削除手段は、前記所定のワークフロー定義ファイルに機能タイプが指定されて、かつ、いずれか１つの機能プロバイダが使用されている場合、同じ機能タイプの機能プロバイダは削除しないことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記削除手段は、前記所定のワークフロー定義ファイルに機能タイプが指定されて、かつ、いずれか１つの機能プロバイダが使用されている場合、同じ機能タイプの機能プロバイダのうち、ＩＤ指定された機能プロバイダを削除することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記削除手段は、前記所定のワークフロー定義ファイルに機能タイプが指定されて、かつ、いずれか１つの機能プロバイダが使用されている場合、同じ機能タイプの機能プロバイダのうち、ＩＤ指定されていない機能プロバイダを削除することを特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記削除手段は、前記所定のワークフロー定義ファイルに機能タイプが指定されて、かつ、いずれか１つの機能プロバイダが使用されている場合で、かつ、同じ機能タイプの機能プロバイダのうち、ＩＤ指定された機能プロバイダが存在しない場合、優先度が低い機能プロバイダを削除することを特徴とする請求項１に記載の情報処理装置。
【請求項５】
前記削除手段は、前記優先度が高い機能プロバイダが複数存在する場合、各機能プロバイダが占有している前記デバイスメモリの資源容量が少ない機能プロバイダを削除することを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記削除手段は、前記優先度が高い機能プロバイダが複数存在する場合で、かつ、各機能プロバイダが占有している前記デバイスメモリの資源容量が少ない機能プロバイダが複数存在する場合、前記デバイスメモリの資源容量が少ない複数の機能プロバイダのうち、いずれか１つを削除することを特徴とする請求項５に記載の情報処理装置。
【請求項７】
前記削除手段は、各ユーザにより機能プロバイダの優先度が設定されている場合、優先度が高い機能プロバイダを削除しないことを特徴とする請求項５〜６のいずれか1項に記載の情報処理装置。
【請求項８】
機能プロバイダが記憶されたＵＳＢメモリが接続されることに応じて、または、データ処理装置からのインストール指示を受信することに応じて、機能プロバイダをインストールする指示を受け付けることを特徴とする請求項１に記載の情報処理装置。
【請求項９】
デバイスメモリに拡張ソフトとして登録された複数の機能プロバイダが所定のワークフロー定義ファイルに従い連携して特定の処理を実行する情報処理装置の制御方法であって、
前記デバイスメモリの資源容量と、前記デバイスメモリにインストールする所定の拡張ソフトの資源容量と、前記デバイスメモリにインストールする機能プロバイダの資源容量とを管理する管理工程と、
機能プロバイダをインストールする指示を受け付けた場合で、かつ、前記デバイスメモリの資源容量で特定される空き容量がインストールする拡張ソフトまたは機能プロバイダの資源容量が超える場合、前記デバイスメモリに登録された所定のワークフローで特定される機能プロバイダの使用状態から起動させる機能プロバイダと、使用させない機能プロバイダとを抽出する抽出工程と、
前記抽出工程で抽出した前記使用させない機能プロバイダを前記デバイスメモリから削除する削除工程と、
を備えることを特徴とする情報処理装置の制御方法。
【請求項１０】
請求項９に記載の情報処理装置の制御方法をコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理装置の制御方法、及びプログラムに関するものである。
【背景技術】
【０００２】
近年、オフィスに設置される画像形成装置には、画像形成装置の機能を拡張できるシステムが普及している。拡張する機能（以降、拡張機能）は、ソフトウェアプログラム（以降、拡張ソフト）によって実現され、工場出荷時だけでなく、設置後の運用段階でも追加することが可能である。この種のシステムとしてはキヤノン株式会社のＭＥＡＰ（登録商標）などがあげられる。
【０００３】
特に、ある特定の目的のために作られた拡張ソフトは、アプリケーションソフトウェア（以降、アプリ）と呼ばれる。画像形成装置は、ユーザの目的に応じて複数のアプリをインストールできるように構成されている。ユーザが実行指示可能な拡張ソフトは、起動状態になると画像形成装置のメニュー画面に表示され、ユーザからの実行を受け付けることができるようになる。
【０００４】
また、アプリの中には、ワークフローアプリという実現手段がある。これは、機能の種類ごとに定められたインターフェースを持つ拡張ソフトである機能プロバイダという部品を、特定の処理としてフローとして組み合わせる。このフローを実行することで、様々な機能を組み合わせたアプリの実現を可能にする技術である。
また、ユーザが選択した拡張ソフトを外部サーバからダウンロードし、インストールすることで、画像形成装置の機能の拡張を可能とする技術が知られている（例えば、特許文献1参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開2007−20030号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
従来技術では、アプリをインストールする際に、画像形成装置の使用資源量とアプリの使用資源量を確認し、画像形成装置の使用資源量が最大資源量以下であれば、アプリをインストールできるように制御される。通常はアプリをインストールされた後は、いつでも処理を受け付けることができるようにするために起動状態で運用されるため、アプリは資源を使用し続ける。そこで、ユーザが新しいアプリをインストールする際に、画像形成装置の資源量が不足した場合は、画像形成装置のメニュー画面上に表示されるようなアプリであれば、ユーザが不要なアプリを容易に判断してアンインストールすることができる。
【０００７】
しかし、機能プロバイダの中には、アプリから呼び出されるだけで、ユーザから直接呼び出されることは無いものもある。そのような機能プロバイダはメニュー画面などに表示されるようなことがないため、ユーザからは不要な機能プロバイダを判別するのは困難であった。
また、機能プロバイダは複数のワークフローアプリから呼び出される可能性があるため、ユーザがその機能プロバイダが必要か不要か判別するのは困難であった。
【０００８】
そのため、ワークフローアプリとそのワークフローで使用する機能プロバイダをインストールしていた場合に、ワークフローアプリのみを削除したものの、使用されることのない機能プロバイダが残ってしまう問題が発生する。
【０００９】
その結果、使用されない機能プロバイダのために画像形成装置の資源が消費されてしまい、新しい機能プロバイダをインストールしようとして、資源不足でインストールできない事態が発生することになる。
【００１０】
一方、特許文献１の画像形成装置では、アプリケーションの使用履歴を保存しておき、機能が使用されなかった期間が一定期間にわたる場合や画像形成装置のメモリが不足したことを条件として、インストールしたアプリケーションをアンインストールする方法が開示されている。
【００１１】
しかし、特許文献１の方法では、アプリケーションの使用頻度が低いが使用される可能性のあるアプリケーションをアンインストールしてしまう。したがって、アプリケーションを再度使用する場合には、アプリケーションの再インストールを行う手間が必要となる課題がある。
【００１２】
本発明は、上記の課題を解決するためになされたもので、本発明の目的は、ワークフローアプリから機能プロバイダが呼び出されるような構成であっても、使用されない機能プロバイダを適切に選択して停止させて資源を確保し、新たな機能プロバイダをインストールできる仕組みを提供することである。
【課題を解決するための手段】
【００１３】
上記目的を達成する本発明の情報処理装置は以下に示す構成を備える。
デバイスメモリに拡張ソフトとして登録された複数の機能プロバイダが所定のワークフロー定義ファイルに従い連携して特定の処理を実行する情報処理装置であって、前記デバイスメモリの資源容量と、前記デバイスメモリにインストールする所定の拡張ソフトの資源容量と、前記デバイスメモリにインストールする機能プロバイダの資源容量とを管理する管理手段と、機能プロバイダをインストールする指示を受け付けた場合で、かつ、前記デバイスメモリの資源容量で特定される空き容量がインストールする拡張ソフトまたは機能プロバイダの資源容量が超える場合、前記デバイスメモリに登録された所定のワークフローで特定される機能プロバイダの使用状態から起動させる機能プロバイダと、使用させない機能プロバイダとを抽出する抽出手段と、前記抽出手段が抽出した前記使用させない機能プロバイダを前記デバイスメモリから削除する削除手段と、を備えることを特徴とする。
【発明の効果】
【００１４】
本発明によれば、ワークフローアプリから機能プロバイダが呼び出されるような構成であっても、使用されない機能プロバイダを適切に選択して停止させて資源を確保し、新たな機能プロバイダをインストールできる。
【図面の簡単な説明】
【００１５】
【図１】画像処理システムのシステム構成の一例を示す図である。
【図２】ＭＦＰの構成を示すブロック図である。
【図３】サーバおよびＰＣの構成を示すブロック図である。
【図４】ＭＦＰにおけるソフトウェア構成図である。
【図５】デバイス情報ファイルの一例を示す図である。
【図６】機能プロバイダ情報テーブルの一例を示す図である。
【図７】機能プロバイダインターフェース定義の例を示す図である。
【図８Ａ】ワークフロー定義ファイルの具体的な記述例を示す図である。
【図８Ｂ】ワークフロー定義ファイルの具体的な記述例を示す図である。
【図８Ｃ】ワークフロー定義ファイルの具体的な記述例を示す図である。
【図８Ｄ】ワークフロー定義ファイルの具体的な記述例を示す図である。
【図９】機能プロバイダインストールの流れを示したシーケンス図である。
【図１０】情報処理装置の制御方法を説明するフローチャートである。
【図１１】情報処理装置の制御方法を説明するフローチャートである。
【図１２】情報処理装置の制御方法を説明するフローチャートである。
【図１３】情報処理装置の制御方法を説明するフローチャートである。
【図１４Ａ】情報処理装置の制御方法を説明するフローチャートである。
【図１４Ｂ】情報処理装置の制御方法を説明するフローチャートである。
【図１４Ｃ】情報処理装置の制御方法を説明するフローチャートである。
【図１４Ｄ】情報処理装置の制御方法を説明するフローチャートである。
【図１４Ｅ】情報処理装置の制御方法を説明するフローチャートである。
【図１４Ｆ】情報処理装置の制御方法を説明するフローチャートである。
【図１５】機能プロバイダインストールの流れを示したシーケンス図である。
【図１６】情報処理装置の制御方法を説明するフローチャートである。
【図１７】情報処理装置の制御方法を説明するフローチャートである。
【発明を実施するための形態】
【００１６】
次に本発明を実施するための最良の形態について図面を参照して説明する。なお、本実施形態では、情報処理装置の一例として後述するＭＦＰ(Multi Function Printer)を用いて説明する。
＜システム構成の説明＞
〔第1実施形態〕
【００１７】
図１は、本実施形態の画像処理システムの構成の一例を示す図である。本システムは、ＬＡＮ110を介して接続されるＭＦＰ101、ＰＣ103と、ＷＡＮ120を介して接続されるサーバ102から構成される。ＬＡＮ110上の装置とＷＡＮ120上の装置はお互いのネットワークを通して、相互に通信可能である。
図１は典型的なネットワーク構成の例であり、各装置がＬＡＮ110またはＷＡＮ120のどちらにあっても構わない。ＭＦＰ101は、スキャナ、プリンタを有する画像形成装置である。加えて、装置上で動作する拡張ソフトを追加、実行させるためのソフトウェアプラットホームを持つ。ＭＦＰ101は、さらに公衆回線網150とつながりファクス送受信が可能である。サーバ102は、ＭＦＰ101と連携して各種処理を行うサーバである。
例えば、ＭＦＰ101から、様々なプロトコル、例えばＳＭＢプロトコルで画像データを受信するファイルサーバであったりする。またＭＦＰ101から処理依頼を受けてＯＣＲ（光学文字認識）処理を実行するアプリケーションサーバであったりする。またＭＦＰ101から、各種プロトコルで画像データを受信するクラウドストレージであったりする。サーバは１台とは限らず、目的に応じて複数のサーバが存在してもよい。
また、ＭＦＰ101には、拡張ソフトインストール、アンインストール画面のＷｅｂページを表示し、ＰＣ103からの要求に応じて、ＭＦＰ101に拡張ソフトをインストールしたり、ＭＦＰ101上の拡張ソフトをアンインストールしたりできる。
ＰＣ103は、操作部319、表示部318を有し、ＭＦＰ101に対して拡張ソフトのインストールやアンインストール、各種設定を行うための端末装置として機能している。ＰＣ103は、ＭＦＰ101が提供する各種画面のＷｅｂページを表示部318に表示し、ユーザが操作部319に入力した設定内容をＭＦＰ101に送信してＭＦＰ101の設定を行うことができる。
【００１８】
図２は、ＭＦＰ101の構成を示すブロック図である。
図２において、ＣＰＵ211を含む制御部210は、ＭＦＰ101全体の動作を制御する。ＣＰＵ211は、ＲＯＭ212やデバイスメモリであるＨＤＤ214に記憶された制御プログラムを読み出して読取制御や送信制御などの各種制御処理を実行する。ＲＡＭ213は、ＣＰＵ211の主メモリ、ワークエリア等の一時記憶領域として用いられる。ＨＤＤ214は、画像データやインストールされた拡張ソフトを含む各種プログラムを記憶する。操作部Ｉ/Ｆ215は、操作部220と制御部210とを接続する。操作部220には、タッチパネル機能を有する液晶表示部やキーボードなどが備えられている。プリンタＩ/Ｆ216は、プリンタ221と制御部210とを接続する。プリンタ221で印刷すべき画像データはプリンタＩ/Ｆ216を介して制御部210からプリンタ221に転送され、プリンタ221において記録媒体上に印刷される。スキャナＩ/Ｆ217は、スキャナ223と制御部210とを接続する。スキャナ223は、原稿上の画像を読み取って画像データを生成し、スキャナＩ/Ｆ217を介して制御部210に入力する。
【００１９】
またスキャナＩ/Ｆ217には、不図示の画像解析ボードが接続され、画像解析ボードにより入力された画像データに対してＯＣＲ処理を行ったりする。ネットワークＩ/Ｆ218は、制御部210（ＭＦＰ101）をＬＡＮ110に接続する。ネットワークＩ/Ｆ218は、ＬＡＮ110上またはＷＡＮ120上の他の装置との間で各種情報を送受信する。モデム219は、制御部210（ＭＦＰ101）を公衆回線網130に接続する。モデム219は、公衆回線網130上の他の装置との間でファクスを送受信する。
【００２０】
図３は、サーバ102およびＰＣ103の構成を示すブロック図である。ＣＰＵ311を含む制御部310は、サーバ102およびＰＣ103全体の動作を制御する。ＣＰＵ311は、ＲＯＭ312やＨＤＤ314に記憶された制御プログラムを読み出して各種制御処理を実行する。
【００２１】
ＲＡＭ313は、ＣＰＵ311の主メモリ、ワークエリア等の一時記憶領域として用いられる。ＨＤＤ314は、各種のプログラムやデータを記憶する。表示部Ｉ/Ｆ315は、表示部318と制御部310とを接続する。操作部Ｉ/Ｆ316は、操作部319と制御部310とを接続する。ＣＰＵ311は、例えばキーボードやマウス等である操作部319を介したユーザからの指示を認識し、認識した指示に応じて表示部318に表示する画面を遷移させる。
ネットワークＩ/Ｆ317は、制御部310（サーバ102およびＰＣ103）をＷＡＮ120に接続する。ネットワークＩ/Ｆ317は、ＬＡＮ110上またはＷＡＮ120上の他の装置との間で各種情報を送受信する。
【００２２】
図４は、図１に示したＭＦＰ101におけるソフトウェア構成図である。ＣＰＵ211がＭＦＰ101のＨＤＤ214に記憶されているプログラム（後述するソフトウェア）をＲＡＭ213に読み出し、解析、実行することで、図９、図１０、図１１、図１２、図１３、図１４Ａ〜図１４Ｆ、図１５、図１６および図１７のフローチャートの処理が実行される。
【００２３】
図４において、拡張ソフト管理部410は、ＭＦＰ101上で拡張ソフトを動作させるためのソフトウェアプラットホームである。デバイス情報ファイル411は、ＭＦＰ101にインストール可能な拡張ソフトの合計の資源量である最大資源量を示す設定ファイルである。ここで資源量とは、例えばメモリ、スレッド、ファイルサイズ、ファイルディスクリプタ、ソケットを示す。デバイス情報ファイル411の詳細は図５(A)で説明する。
【００２４】
拡張ソフト管理テーブル412は、ＭＦＰ101にインストールされている拡張ソフトの情報を管理するためのテーブルである。拡張ソフト管理部410を通じて拡張ソフトがインストールされた場合は拡張ソフト管理テーブル412のレコードが追加され、アンインストールされた場合はレコードが削除される。
【００２５】
また、拡張ソフト管理テーブル412には各拡張ソフトが使用する使用資源量なども管理されている。拡張ソフト管理テーブル412の詳細は図５(B)で説明する。マニフェストファイル413は各拡張ソフト内に存在し、拡張ソフトを特定するための識別子であるアプリケーションＩＤや、拡張ソフトが使用する最大の資源量である使用資源量が定義されている設定ファイルである。マニフェストファイル413の詳細は図５(C)で説明する。
図４では、マニフェストファイル413は標準スキャンプロバイダ414上に存在しているように示しているが、各拡張ソフトにも存在する。拡張ソフト管理部410がＰＣ103から拡張ソフトをインストールする指示を受信した場合、拡張ソフト管理部410は拡張ソフトの使用資源量を拡張ソフト管理テーブル412から取得する。
【００２６】
拡張ソフト管理部410は、インストールする拡張ソフトの資源量をマニフェストファイル413から取得する。そして、すでにインストールされている使用資源量の合計と、インストールする拡張ソフトの使用資源量を加算し、デバイス情報ファイル411から取得したＭＦＰ101の最大資源量を超えないかを判断する。
【００２７】
拡張ソフト管理部410は、使用資源量の合計が最大資源量を超えないと判断した場合は、インストール可能とし、拡張ソフト管理テーブル412に拡張ソフトのレコードを追加し、ＨＤＤ214に拡張ソフトを配置する。一方、拡張ソフト管理部410は、使用資源量の合計が最大資源量を超えなると判断した場合は、後述の機能プロバイダ起動停止処理を機能プロバイダ管理部430に依頼した後、再度使用資源量と最大資源量を再計算する。そして、拡張ソフト管理部410は、使用資源量の合計が最大資源量を超えないと判断した場合は、インストール処理を行う。
【００２８】
また、拡張ソフト管理部410は、ＰＣ103からの指示を受けインストールされた拡張ソフトを起動、停止させる機能も有する。拡張ソフトは、インストール後に起動された後は、通常は起動したままで運用される。
図４の例では、拡張ソフトとして９つの機能プロバイダ414〜422がＭＦＰ101にインストールされている。機能プロバイダは、拡張ソフトの一種であるが、アプリではない。機能プロバイダは入力なら入力、出力なら出力といった特定の機能に特化したものであり、入力から出力までの一連の完結した処理を行うためには、複数の機能プロバイダを組み合わせる必要がある。
【００２９】
例えば、「スキャンしてプレビュー、ＯＣＲ処理の後、送信する」という機能をユーザに提供する場合、「スキャン機能」、「プレビュー機能」、「ＯＣＲ機能」、「送信機能」を有する４つの機能プロバイダが必要になる。さらにそれら４つの機能プロバイダを一連の処理として実行するためワークフロー処理部440が必要になる。また、アプリは、ＭＦＰ101が元々備えている機能を呼び出すためのメニュー画面にアプリ自身を登録し、メニュー画面からユーザの指示によって呼び出される。
【００３０】
一方、機能プロバイダはメニュー画面ではなく、後述する機能プロバイダ管理部430に機能プロバイダ自身を登録する。機能プロバイダは、ワークフロー処理部440の指示によって呼び出される。さらに、機能プロバイダは、後述する機能プロバイダ管理部430が規定するルール（以降、機能プロバイダインターフェース）を満たすようにプログラミングされている。機能プロバイダインターフェースは、機能プロバイダが提供する機能の種類（以降、機能タイプ）ごとに定められている。機能プロバイダは、機能プロバイダインターフェースに基づいてワークフロー処理部440から呼び出される。
【００３１】
また、複数種類の機能プロバイダをＭＦＰ101にインストールすることができる。標準スキャンプロバイダ414、簡単スキャンプロバイダ415、製本スキャンプロバイダ416は、ともに機能タイプがスキャンの機能プロバイダである。機能タイプが「スキャン」の機能プロバイダをスキャンプロバイダと呼ぶ。
【００３２】
標準スキャンプロバイダ414は、一般的なユーザ向けのスキャン設定画面、簡単スキャンプロバイダ415は、初心者向けのスキャン設定画面、製本スキャンプロバイダ416は、上級者向けのスキャン設定画面を持つ。プレビュープロバイダ417は、機能タイプがプレビューの機能プロバイダである。機能タイプが「プレビュー」の機能プロバイダをプレビュープロバイダと呼ぶ。プレビュープロバイダ417は、ユーザが画像データを操作部220上で閲覧できるようにするプレビュー表示画面を持つ。
【００３３】
組込ＯＣＲプロバイダ418とＷｅｂ  ＯＣＲプロバイダ419は、機能タイプがＯＣＲの機能プロバイダである。機能タイプが「ＯＣＲ」の機能プロバイダを総称してＯＣＲプロバイダと呼ぶ。
【００３４】
組込ＯＣＲプロバイダ418は、ＭＦＰ101上で文字認識処理を行うことでＯＣＲ機能を提供し、Web OCRプロバイダ419は、外部のＷｅｂサーバ（例えばサーバ102）が提供する文字認識処理を呼び出すことでＯＣＲ機能を提供する。ＳＭＢ送信プロバイダ420、ＦＡＸ送信プロバイダ421およびクラウドストレージ送信プロバイダ422は、機能タイプがファイル送信の機能プロバイダである。ＳＭＢ送信プロバイダ420は、ＭＦＰ101からファイルサーバであるサーバ102に対して、ＳＭＢプロトコルでファイルを送信する機能を提供する。
【００３５】
ＦＡＸ送信プロバイダ421は、ＭＦＰ101から公衆回線網130を通じて画像データをファクス送信する機能を提供する。クラウドストレージ送信プロバイダ422は、ＭＦＰ101からクラウドストレージであるサーバ102に対してファイル送信する機能を提供する。以上で説明した414〜422の9つの機能プロバイダは一例であり、ＭＦＰ101には、拡張ソフトとして様々な機能プロバイダを追加・削除することが可能である。
【００３６】
機能プロバイダ管理部430は、ＭＦＰ101にインストールされている機能プロバイダを管理するソフトウェアである。機能プロバイダ管理部430は、機能プロバイダ登録部431、機能プロバイダ検索部432、機能プロバイダ情報テーブル433、機能プロバイダインターフェース定義434を持つ。機能プロバイダ登録部431は、各機能プロバイダからの依頼を受けて、機能プロバイダ情報テーブル433に、各機能プロバイダの機能タイプなどの情報を登録する。
【００３７】
また機能プロバイダ登録部431は、拡張ソフト管理部410から指示により機能プロバイダを起動、停止させ、新たにインストールする拡張ソフトのための資源を確保する機能も提供する。機能プロバイダ検索部432は、後述するワークフロー処理部440から使用する機能プロバイダの検索条件を受け取り、機能プロバイダ情報テーブル433の情報をもとに条件に一致する機能プロバイダを特定する。機能プロバイダインターフェース定義435は、機能プロバイダインターフェースを定義している。
【００３８】
ワークフロー処理部440は、後述するワークフロー定義ファイル451〜454に従って複数の機能プロバイダを組み合わせて一連の処理として実行する。本発明では、ワークフローとは、複数の機能プロバイダを組み合わせた一連の処理を差すものとする。ワークフロー管理部450は、ワークフロー定義ファイルを管理する。ワークフロー定義ファイルのインストール、アンインストール指示をＰＣ103から受信し、ワークフロー定義ファイルの追加、削除を実行する。ワークフロー定義ファイル451〜454は、ワークフロー処理部440が呼び出す機能プロバイダの検索条件や、呼び出し順序など、機能プロバイダの呼び出しに関する情報を定義する。なお、図４ではワークフロー定義ファイルが4つ存在する、4つに限定するものではない。
【００３９】
図５(A)は、デバイス情報ファイル411の一例を示す図である。
デバイス情報ファイル411は、最大メモリ量501、最大スレッド量502、最大ファイル量503を保持する。またデバイス情報ファイル411は、最大ファイルディスクリプタ量504、最大ソケット数505などを保持する。デバイス情報ファイル411はＭＦＰ101にインストールできる拡張ソフトが使用できる資源量の最大値である最大資源量に関する情報を保持する。
【００４０】
図５(B)は、拡張ソフト管理テーブル412の一例を示す図である。拡張ソフト管理テーブル412は、拡張ソフトを識別するためのアプリケーションＩＤ、拡張ソフトの名称であるアプリケーション名、拡張ソフトの起動または停止状態、拡張ソフトのインストール時刻といった拡張ソフトに関する情報を保持する。また、拡張ソフト管理テーブル412は、拡張ソフトが使用する使用メモリ量、使用スレッド量、使用ファイル量、使用ファイルディスクリプタ量、最大ソケット量などを保持する。
【００４１】
図５(C)は、マニフェストファイル413の一例を示す図である。マニフェストファイル413は、拡張ソフトを特定するための識別子であるアプリケーションＩＤ551、拡張ソフト名を示すアプリケーション名552を保持する。マニフェストファイル413は、拡張ソフトが最大で使用する使用資源量として、使用メモリ量553、使用スレッド量554を保持する。またマニフェストファイル413は、使用ファイル量555、使用ファイルディスクリプタ量556、使用ソケット量557などを保持する。
【００４２】
図６(A)は、機能プロバイダ情報テーブル433の一例を示す図である。機能プロバイダ情報テーブル433は、所定の機能プロバイダを一意に特定する機能プロバイダＩＤ、機能プロバイダの名称、機能タイプ、機能プロバイダインターフェースを保持する。また、機能プロバイダ情報テーブル433は機能タイプ内での機能プロバイダの優先度、機能プロバイダのアプリケーションＩＤ、機能プロバイダの使用状態、機能プロバイダのインストール時刻を保持する。また機能プロバイダ情報テーブル433は、機能プロバイダの使用メモリ量（資源容量）、使用スレッド量、使用ファイル量、使用ファイルディスクリプタ量、使用ソケット量など、機能プロバイダに関する情報を保持する。
【００４３】
図７は、本実施形態における機能プロバイダインターフェース定義435の例を示す図である。本実施形態では機能プロバイダインターフェースはプログラムのソースコード形式で表現されているが、これに限定されるものではなく、他の形式であってもよい。
図７において、701はスキャンプロバイダインターフェースの定義で、「showSettingUI」「doScan」「doScanWithSettingUI」という3つのインターフェースを定義している。スキャンプロバイダは、701で定義している3つのインターフェースを必ず備えている。
【００４４】
「showSettingUI」はスキャン設定画面を表示するためのインターフェース、「doScan」はスキャン実行のためのインターフェース、「doScanWithSettingUI」は、スキャン設定画面を表示後、ユーザが設定画面で確定した値でスキャンを実行するインタフェースである。
同様に、702はプレビュープロバイダインターフェースの定義、703はＯＣＲプロバイダインターフェースの定義、704はファイル送信プロバイダインターフェースの定義である。このように、機能プロバイダインターフェース定義435では、各機能プロバイダが備えるインターフェース（名称、入力、出力）を定義している。
【００４５】
図８Ａは、本実施形態におけるワークフロー定義ファイル451の具体的な記述例を示す図である。本実施形態ではワークフロー定義ファイルはＸＭＬ形式のファイルとして表現されているが、ＸＭＬ形式に限定されるものではなく、他の形式のファイルであってもよい。
【００４６】
図８Ａにおいて、Workflowタグ801は、以下の記述がワークフロー定義であることを示す。ＦＰタグ802は、Workflowタグ801の子要素で、ワークフローで実行する機能プロバイダに関する情報を定義している。ＦＰタグ802のｎｏ属性は、ワークフローにおける機能プロバイダの実行順を定義しており、「no="1"」は最初に実行する機能プロバイダであることを示している。ＦＰタグ802のｉｄ属性は、実行する機能プロバイダの機能プロバイダＩＤを定義しており、「ID="NORMAL_SCAN"」は標準スキャンプロバイダであることを示している。Actionタグ803は、ＦＰタグ802の子要素であり、機能プロバイダの呼び出しについての情報を定義している。
Actionタグのｎｏ属性とｍｅｔｈｏｄ属性は、ＦＰタグで定義された機能プロバイダの中での実行順と呼び出すインターフェースを定義している。Actionタグ803は、スキャンプロバイダの実行において「doScanWithSettingUI」を１番目に呼び出す旨を定義している。Parameterタグ804はActionタグ803の子要素であり、Actionタグ804で定義されているインターフェース（doScanWithSettingUI）を呼び出す際に渡す設定値を定めている。
Outputタグ805は、「doScanWithSettingUI」の出力に関する定義であり、ｔｙｐｅ属性で出力形式が「Document」である旨と、ｉｄ属性で出力データを一意に特定するＩＤが「foo」である旨を定義している。ＦＰタグ806は、ｎｏ属性とｉｄ属性で、２番目に実行する機能プロバイダがプレビュープロバイダであることを定義している。
Actionタグ807は、ＦＰタグ806の子要素であり、プレビュープロバイダの実行において「doPreview」を１番目に呼び出す旨を定義している。Inputタグは、「doPreview」の入力に関する定義で、「Document」形式のデータをＩＤが「ｆｏｏ」のデータから受け取ることを示している。つまり、プレビュープロバイダは、スキャンプロバイダのスキャンデータをDocument形式で受け取るということを定義している。
【００４７】
Parameterタグ809はActionタグ807の子要素であり、Actionタグ807で定義されているインターフェース(doPreview)を呼び出す際に渡す設定値を定めている。ＦＰタグ810は、ｎｏ属性とｉｄ属性で、３番目に実行する機能プロバイダがＦＡＸ送信プロバイダであることを定義している。Actionタグ811は、ＦＡＸ送信プロバイダの実行において「doSendWithSettingUI」を１番目に呼び出す旨を定義している。Inputタグ812は、ＦＡＸ送信プロバイダの「doSendWithSettingUI」呼び出しの入力に関する定義で、「Document」のＩＤが「foo」のデータを「doScan」の出力から受け取ることを示している。Parameterタグ813はActionタグ811の子要素であり、Actionタグ811で定義されているインターフェース(doSend)を呼び出す際に渡す設定値を定めている。
図８Ｂは、本実施形態におけるワークフロー定義ファイル452の具体的な記述例である。図８Ｂの各タグは図８Ａと同様であるため、説明は省略する。
図８Ｃは、本実施例におけるワークフロー定義ファイル453の具体的な記述例である。
図８Ｃにおいて、Workflow idタグ851は、スキャン・プレビュー・ＷｅｂＯＣＲ・ＳＭＢ送信を特定している。ＦＰタグ852は、Workflowタグ851の子要素で、ワークフローで実行する機能プロバイダに関する情報を定義している。ＦＰタグ852のｎｏ属性は、ワークフローにおける機能プロバイダの実行順を定義しており、「no="1"」は最初に実行する機能プロバイダであることを示している。ＦＰタグ852のｔｙｐｅ属性は、実行する機能プロバイダの機能タイプを定義しており、「type="SCAN"」はスキャンプロバイダであることを示している。Conditionタグ853は、ＦＰタグ852の子要素で、スキャンプロバイダの検索条件を定義するためのものである。その他のタグは図８Ａと同様であるため、説明は省略する。
図８Ｄは、本実施形態におけるワークフロー定義ファイル454の具体的な記述例である。図８Ｄの各タグは図８Ａと同様であるため、説明は省略する。
【００４８】
図９は、本実施形態におけるＭＦＰ101上の機能プロバイダインストールの流れを示したシーケンス図である。
S901において、ＰＣ103上の機能プロバイダインストール／アンインストール画面において、データ処理装置であるＰＣ103がユーザからの機能プロバイダのインストールまたはアンインストール指示を受け取る。なお、インストールの指示は、インストールする機能プロバイダが記憶されたＵＳＢメモリが図示しないメモリＩ／Ｆに接続されることであってもよい。
S902において、ＰＣ103がＭＦＰ101の拡張ソフト管理部410に対して、ユーザから受け取った指示を送信する。
S903において、ＭＦＰ101の拡張ソフト管理部410が、S902で受信した指示がインストールであると判断した場合は、処理はS904に進め、指示がアンインストールであると判断した場合は、処理はS912に進める。
【００４９】
S904において、拡張ソフト管理部410が、インストールする機能プロバイダのマニフェストファイル413を解析する。拡張ソフト管理部410は、マニフェストファイル413から、アプリケーションＩＤ、アプリケーション名などを取得する。
【００５０】
S905において、拡張ソフト管理部410が、S904でのマニフェスト解析結果により、インストールする機能プロバイダの使用資源量を取得する。S906では、拡張ソフト管理部410が、現在ＭＦＰ101にインストールされている拡張ソフトの使用資源量と、機能プロバイダの資源量と、ＭＦＰ101の最大資源量から、機能プロバイダがインストール可能か否かを判断する。具体的には、拡張ソフト管理部410は、資源項目毎に、拡張ソフト管理テーブル412から現在使用している拡張ソフトの使用資源量の合計を算出する。そして、拡張ソフト管理部410は各資源項目の使用資源量の合計値を、S905で確認した機能プロバイダの各資源項目の使用資源量と加算する。
【００５１】
そして、拡張ソフト管理部410は、加算した各資源項目の使用資源量が、デバイス情報ファイル411から取得したＭＦＰ101の各資源項目の最大資源量と比較し、使用資源量が最大資源量を超えているか否かを判断する。ここで、拡張ソフト管理部410は、使用資源量が最大資源量を超えていると判断した場合は、処理はS907に進め、そうでないと判断した場合は、処理はS910に進める。
【００５２】
S907では、拡張ソフト管理部410が、機能プロバイダ管理部430に対して、機能プロバイダの起動停止指示を行う。S908では、機能プロバイダ管理部430が、ワークフロー定義ファイル451〜454を参照し、使用していない機能プロバイダと使用している機能プロバイダを選出する。そして、機能プロバイダ管理部430は、拡張ソフト管理部410に対して、使用していない機能プロバイダの停止と、使用している機能プロバイダの起動を指示する。S908の詳細は、後述の図１０〜図１２で説明する。
【００５３】
S909では、機能プロバイダ管理部430が、ワークフロー定義ファイル451〜454を参照し、フロー定義ファイルにタイプ指定がなされている場合、使用していない機能プロバイダと使用している機能プロバイダを選出する。そして機能プロバイダ管理部430は、拡張ソフト管理部410に対して、使用していない機能プロバイダの停止と、使用している機能プロバイダの起動を指示する。S909の詳細は、後述の図１３〜図１４で説明する。
S910では、拡張ソフト管理部410が、S902で指示を受けた機能プロバイダをインストールする。そして、拡張ソフト管理部410はインストールした機能プロバイダの情報を拡張ソフト管理テーブル412に追加する。
【００５４】
S911では、機能プロバイダ管理部430が、S910で機能プロバイダがインストールされた場合、インストールされた機能プロバイダの情報を機能プロバイダ情報テーブル433に追加する。S912では、拡張ソフト管理部410はS902で指示を受けた機能プロバイダをアンインストールする。そして、拡張ソフト管理部410は機能プロバイダを拡張ソフト管理テーブル412から削除する。
S913では、拡張ソフト管理部410が、機能プロバイダ管理部430に対して、機能プロバイダの起動停止指示を行う。S914では、機能プロバイダ管理部430が、S912でアンインストールされた機能プロバイダを機能プロバイダ情報テーブル433から削除する。
【００５５】
S915では、機能プロバイダ管理部430が、S908で機能プロバイダ起動停止処理、S909で機能プロバイダタイプ別起動停止処理を実行した結果を、拡張ソフト管理部410に対して通知する。S910での機能プロバイダのインストール結果、または、S912で機能プロバイダをアンインストールした結果表示画面を、ＰＣ103に対して返信する。そして処理は終了する。
【００５６】
図１０は、本実施形態を示す情報処理装置の制御方法を説明するフローチャートである。本例は、ＭＦＰ101の拡張ソフト管理部410による機能プロバイダインストール処理例である。なお、ＣＰＵ211がＭＦＰ101のＨＤＤ214に記憶されているプログラムを、ＲＡＭ213に読み出し、解析、実行することで、図１０のフローチャートの各ステップが実行される。
【００５７】
S1001では、拡張ソフト管理部410は、ＰＣ103からの要望に応じて、ユーザからの機能プロバイダインストール／アンインストール指示を受け付けるための画面をＰＣ103に送信する。S1002では、拡張ソフト管理部410は、ＰＣ103に送信してＰＣ103に表示した画面を介して、ユーザから機能プロバイダに関するインストール／アンインストール指示を受信したかどうかを判断する。ここで、ＰＣ103のユーザから機能プロバイダに関するインストール／アンインストール指示を受信していないと判断した場合は、処理をS1002に戻す。一方、ユーザから機能プロバイダに関するインストール／アンインストール指示を受信していると判断した場合は、処理をS1003に進める。
S1003では、拡張ソフト管理部410が、S1002で受信した指示がインストールであると判断した場合は、処理をS1004に進め、そうではないと判断した場合は、処理をS1021に進める。S1004では、拡張ソフト管理部410が、S1002で受信した機能プロバイダのマニフェストファイル413を解析して、処理をS1005へ進める。
【００５８】
S1005では、拡張ソフト管理部410が、資源項目を示す変数ｉの値を１に設定して、処理をS1006へ進める。S1006では、拡張ソフト管理部410が、変数ｉの値が、デバイス情報ファイル411に記載されている資源項目数以下である場合、S1007の処理を繰り返す。S1007では、拡張ソフト管理部410が、デバイス情報ファイル411に記載されているｉ番目の最大資源量を取得する。また、拡張ソフト管理部410が、拡張ソフト管理テーブル412のｉ番目の使用資源量の合計から算出されるインストール済拡張ソフトの使用資源量と、インストールする機能プロバイダのｉ番目の使用資源量の合計使用資源量を算出する。
【００５９】
そして、拡張ソフト管理部410が、最大資源量の値が、インストール済拡張ソフトの使用資源量の合計とインストールする機能プロバイダの使用資源量を加算した値以上であると判断した場合、処理をS1009に進め、そうではないと判断した場合は、処理をS1008に進める。
【００６０】
S1008では、拡張ソフト管理部410が、ｉ番目の資源項目を、不足資源リストに保存して処理をS1009へ進める。S1009では、拡張ソフト管理部410が、変数ｉの値に１を加算して、処理をS1006に戻す。そして、S1006で、変数ｉの値が、デバイス情報ファイル411に記載されている資源項目数以下でないと判断した場合、処理をS1010へ進める。
【００６１】
S1010では、拡張ソフト管理部410が、不足資源リストの件数が０より大きいか否かを判断し、０より大きいと判断した場合は処理をS1011に進め、そうではないと判断した場合は、処理をS1020に進める。
【００６２】
S1011では、拡張ソフト管理部410が、機能プロバイダ管理部430に対して、機能プロバイダ起動停止処理を依頼して、処理をS1012へ進める。S1012では、拡張ソフト管理部410が、機能プロバイダ管理部430から処理結果を受信していないと判断した場合は、S1012の処理を繰り返す。一方、拡張ソフト管理部410が、機能プロバイダ管理部430から処理結果を受信していると判断した場合は、処理をS1013に進める。
【００６３】
S1013では、拡張ソフト管理部410が、機能プロバイダ管理部430に対して、タイプ別機能プロバイダ起動停止処理を依頼して、処理をS1014へ進める。S1014では、拡張ソフト管理部410が、機能プロバイダ管理部430から処理結果を受信していないと判断した場合は、S1014の処理を繰り返す。一方、拡張ソフト管理部410が、機能プロバイダ管理部430から処理結果を受信していると判断した場合は、処理をS1013に進める。
【００６４】
S1015では、拡張ソフト管理部410が、変数ｊの値を１に設定して、処理をS1016へ進める。S1016では、拡張ソフト管理部410が、変数ｊの値が、デバイス情報ファイル411に記載されている資源項目数以下であると判断した場合は、処理をS1017に進める。一方、拡張ソフト管理部410が、変数ｊの値が、デバイス情報ファイル411に記載されている資源項目数以下でないと判断した場合は、処理をS1020に進める。
S1017では、拡張ソフト管理部410が、デバイス情報ファイル411に記載されているｊ番目の最大資源量を取得する。また、拡張ソフト管理部410が、拡張ソフト管理テーブル412のｊ番目の使用資源量の合計から算出されるインストール済拡張ソフトの使用資源量と、インストールする機能プロバイダのｊ番目の使用資源量の合計使用資源量を算出する。そして、拡張ソフト管理部410が、最大資源量の値が、インストール済拡張ソフトの使用資源量の合計とインストールする機能プロバイダの使用資源量を加算値以上であるか否かを判断する。
【００６５】
ここで、拡張ソフト管理部410は、最大資源量の値が使用資源量以上であると判断した場合は、処理をS1019に進める。一方、拡張ソフト管理部410は、最大資源量の値が使用資源量以上でないと判断した場合は、処理をS1018に進める。S1018では、拡張ソフト管理部410が、資源不足でインストールができない旨のエラー画面をＰＣ103に送信して、処理を終了する。
【００６６】
S1019では、拡張ソフト管理部410が、変数ｊの値に１を加算して、処理をS1020へ進める。S1020では、拡張ソフト管理部410が、S1002で受信した機能プロバイダをインストールする。その際、拡張ソフト管理部410は、機能プロバイダをＨＤＤ214に配置し、拡張ソフト管理テーブル412にレコードを追加し、前記S1004でマニフェストファイル413から取得した各値を追加して、本処理を終了する。
【００６７】
一方、S1021では、拡張ソフト管理部410が、S1002で受信した指示がアンインストールであると判断した場合は、処理をS1022に進める。一方、拡張ソフト管理部410が、S1002で受信した指示がアンインストールでないと判断した場合は、処理を終了する。
S1022では、拡張ソフト管理部410が、S1002で受信した機能プロバイダをアンインストールする。その際、拡張ソフト管理部410はＨＤＤ214と拡張ソフト管理テーブル412から機能プロバイダを削除して、処理をS1023へ進める。
【００６８】
S1023では、拡張ソフト管理部410が、機能プロバイダ管理部430に対して、機能プロバイダ起動停止処理を依頼して、処理をS1024へ進める。S1024では、拡張ソフト管理部410が、機能プロバイダ管理部430から処理結果を受信したか否かを判断し、受信していないと判断した場合は、S1024の処理を繰り返す。一方、拡張ソフト管理部410が、機能プロバイダ管理部430から処理結果を受信していると判断した場合、処理をS1025に進める。
S1025では、拡張ソフト管理部410が、機能プロバイダ管理部430に対して、タイプ別機能プロバイダ起動停止処理を依頼する。S1026では、拡張ソフト管理部410が、機能プロバイダ管理部430から処理結果を受信したか否かを判断し、受信していない場合は、処理はS1026を繰り返す。一方、拡張ソフト管理部410が、機能プロバイダ管理部430から処理結果を受信していると判断した場合、本処理を終了する。
【００６９】
図１１は、本実施形態を示す情報処理装置の制御方法を示すフローチャートである。本例は、図９に示したＭＦＰ101における機能プロバイダ管理部430の機能プロバイダ起動停止処理例である。なお、ＣＰＵ211がＭＦＰ101のＨＤＤ214に記憶されているプログラムを、ＲＡＭ213に読み出し、解析、実行することで、各ステップが実行される。
【００７０】
S1101では、機能プロバイダ管理部430が、拡張アプリ管理部410からの機能プロバイダ起動停止依頼を受信したか否かを判断する。機能プロバイダ管理部430が依頼を受信したと判断した場合は、処理をS1102に進める。一方、機能プロバイダ管理部430が依頼を受信していないと判断した場合は、S1101の処理を繰り返す。
S1102では、機能プロバイダ管理部430が、変数ｋに１を設定して、処理をS1103へ進める。S1103では、機能プロバイダ管理部430が、変数ｋの値が、機能プロバイダ管理テーブル433に登録されている全機能プロバイダ数以下であると判断した場合は、S1104〜S1114を繰り返す。
S1104では、機能プロバイダ管理部430が、変数ｍに１を設定して、処理をS1105へ進める。S1105では、機能プロバイダ管理部430が、変数ｍの値が、ワークフロー管理部450に保存されている全ワークフロー定義ファイル数以下であると判断した場合は、S1106〜S1107を繰り返す。
S1106では、機能プロバイダ管理部430が、ｍ番目のワークフロー定義ファイルに、ｋ番目の機能プロバイダが存在すると判断した場合は、処理をS1111に進める。一方、機能プロバイダ管理部430が、ｍ番目のワークフロー定義ファイルに、ｋ番目の機能プロバイダが存在しないと判断した場合は、処理をS1107に進める。
【００７１】
S1107では、機能プロバイダ管理部430が、変数ｍに１を加算して、処理をS1108へ進める。S1108では、機能プロバイダ管理部430が、ｋ番目の機能プロバイダは停止状態にあると判断した場合は、処理をS1109に進める。一方、機能プロバイダ管理部430が、ｋ番目の機能プロバイダは停止状態にないと判断した場合は、処理をS1114に進める。
【００７２】
S1109では、機能プロバイダ管理部430が、拡張ソフト管理部410に対して、ｋ番目の機能プロバイダの停止を依頼して、処理をS1110へ進める。S1110では、機能プロバイダ管理部430が、拡張ソフト管理部410からの機能プロバイダ停止依頼結果を受信したと判断した場合は、処理をS1114に進める。一方、機能プロバイダ管理部430が、拡張ソフト管理部410からの機能プロバイダ停止依頼結果を受信していないと判断した場合は、処理をS1110に進める。
【００７３】
S1111では、機能プロバイダ管理部430が、ｋ番目の機能プロバイダが停止していると判断した場合は、処理はS1112に進める。一方、機能プロバイダ管理部430が、ｋ番目の機能プロバイダが停止していないと判断した場合は、処理をS1114に進める。S1112では、機能プロバイダ管理部430が、拡張ソフト管理部410に対してｋ番目の機能プロバイダの起動を依頼して、処理をS1113へ進める。
S1113では、機能プロバイダ管理部430が、拡張ソフト管理部410からの機能プロバイダ開始依頼結果を受信したと判断した場合は、処理をS1114に進める。一方、機能プロバイダ管理部430が、拡張ソフト管理部410からの機能プロバイダ開始依頼結果を受信していないと判断した場合は、S1113の処理を繰り返す。S1114では、機能プロバイダ管理部430が、変数ｋに１を加算して、処理をS1103に戻す。
【００７４】
図１２は、本実施形態を示す情報処理装置の制御方法を示すフローチャートである。本例は、ＭＦＰ101における拡張ソフト管理部410の機能プロバイダ起動停止処理例である。ＣＰＵ211がＭＦＰ101のＨＤＤ214に記憶されているプログラムを、ＲＡＭ213に読み出し、解析、実行することで、各ステップが実行される。
【００７５】
S1201では、拡張ソフト管理部410が、機能プロバイダ管理部430からの、機能プロバイダ起動停止依頼を受信したと判断した場合は、処理をS1202に進める。一方、拡張ソフト管理部410が、機能プロバイダ管理部430からの、機能プロバイダ起動停止依頼を受信していないと判断した場合は、S1201の処理を繰り返す。S1202では、拡張ソフト管理部410が、S1201で受信した依頼が、機能プロバイダの起動であると判断した場合は、処理をS1203に進める。一方、拡張ソフト管理部410が、S1201で受信した依頼が、機能プロバイダの起動でないと判断した場合は、処理をS1204に進める。
【００７６】
S1203では、拡張ソフト管理部410が、S1201で機能プロバイダ管理部430から受信した機能プロバイダを起動させ、拡張ソフト管理テーブル412の状態を"起動"に変更して、処理をS1206へ進める。S1204では、拡張ソフト管理部410が、S1201で受信した依頼が、機能プロバイダの停止であると判断した場合は、処理をS1205に進める。一方、拡張ソフト管理部410が、S1201で受信した依頼が、機能プロバイダの停止でないと判断した場合は、処理をS1206に進める。
【００７７】
S1205では、拡張ソフト管理部410が、S1201で機能プロバイダ管理部430から受信した機能プロバイダを停止させ、拡張ソフト管理テーブル412の状態を"停止"に変更して、処理をS1206へ進める。S1206では、拡張ソフト管理部410が、機能プロバイダ管理部430に対して、S1203またはS1205で実行した機能プロバイダの起動停止処理の結果を返信して、処理は終了する。
【００７８】
図１３は、本実施形態を示す情報処理装置の制御方法を示すフローチャートである。本例は、ＭＦＰ101における機能プロバイダ管理部430のタイプ別機能プロバイダ起動停止処理例である。ＣＰＵ211がＭＦＰ101のＨＤＤ214に記憶されているプログラムを、ＲＡＭ213に読み出し、解析、実行することで、図１３に示す各ステップが実行される。
【００７９】
S1301では、機能プロバイダ管理部430が、変数ｎの値に１を設定して、処理をS1302へ進める。S1302では、機能プロバイダ管理部430が、変数ｎの値が、ワークフロー管理部450で管理されている全ワークフロー定義ファイル数以下であるか否かを判断し、S1303〜S1304の処理を繰り返す。
S1303では、機能プロバイダ管理部430が、ｎ番目のワークフロー定義ファイルに、機能プロバイダの機能タイプ指定が存在すると判断した場合は、処理をS1305に進める。一方、機能プロバイダ管理部430が、ｎ番目のワークフロー定義ファイルに、機能プロバイダの機能タイプ指定が存在しないと判断した場合は、処理をS1304に進める。S1304では、機能プロバイダ管理部430が、変数ｎに１を加算して、処理をS1302に戻す。
S1305では、機能プロバイダ管理部430が、タイプ別の機能プロバイダ選出処理を実行する。当該処理の詳細は図１４を用いて説明する。
【００８０】
S1306では、機能プロバイダ管理部430が、変数ｐの値に１を設定して、処理をS1307へ進める。S1307では、機能プロバイダ管理部430が、変数ｐの値が、前記S1305で取得した起動機能プロバイダリスト数以下であると判断した場合はS1308〜S1310を繰り返す。
S1308では、機能プロバイダ管理部430が、起動機能プロバイダリストのｐ番目の機能プロバイダが停止していると判断した場合は、処理をS1309に進める。一方、機能プロバイダ管理部430が、起動機能プロバイダリストのｐ番目の機能プロバイダが停止していないと判断した場合は、処理をS1310に進める。
S1309では、機能プロバイダ管理部430が、起動機能プロバイダリストのｐ番目の機能プロバイダの起動を拡張ソフト管理部410に対して依頼すして、処理をS1310へ進める。
【００８１】
S1310では、機能プロバイダ管理部430が、変数ｐの値に１を加算して、処理をS1307に戻す。S1311では、機能プロバイダ管理部430が、変数ｑの値に１を設定して、処理をS1312へ進める。S1312では、機能プロバイダ管理部430が、変数ｑの値がS1305で取得した停止機能プロバイダリスト数以下であると判断した場合はS1313〜S1315を繰り返す。
S1313では、機能プロバイダ管理部430が、停止機能プロバイダリストのｑ番目の機能プロバイダが停止していると判断した場合は、処理をS1314に進める。一方、機能プロバイダ管理部430が、停止機能プロバイダリストのｑ番目の機能プロバイダが停止していないと判断した場合は、処理をS1315に進める。
S1314では、機能プロバイダ管理部430が、停止機能プロバイダリストのｑ番目の機能プロバイダの停止を拡張ソフト管理部410に対して依頼して、処理をS1315へ進める。S1315では、機能プロバイダ管理部430が、変数ｑの値に１を加算して、処理をS1312に戻す。
【００８２】
図１４Ａは、本実施形態を示す情報処理装置の制御方法を示すフローチャートである。本例は、ＭＦＰ101における機能プロバイダ管理部430のタイプ別機能プロバイダ選出処理例である。ＣＰＵ211がＭＦＰ101のＨＤＤ214に記憶されているプログラムを、ＲＡＭ213に読み出し、解析、実行することで、図１４に示す各ステップが実行される。
【００８３】
S1401では、機能プロバイダ管理部430が、変数ｒに１を設定して、処理をS1402へ進める。S1402では、機能プロバイダ管理部430が、変数ｒが、機能プロバイダ管理テーブル433で管理されている機能プロバイダのタイプ数以下であると判断した場合に、S1403〜S1407を繰り返す。
例えば、図６(A)の機能プロバイダ管理テーブルの場合、機能タイプには"SCAN"、"PREVIEW"、"OCR"、"SEND_FILE"が存在するため、タイプ数は４となる。
S1403では、機能プロバイダ管理部430が、変数ｓに１を設定して、処理をS1404へ進める。S1404では、機能プロバイダ管理部430が、変数ｓが、機能プロバイダ管理テーブル433で管理されているｒ番目の機能タイプの、全機能プロバイダ数以下であると判断した場合に、S1405〜S1406を繰り返す。
【００８４】
例えば、図６(A)の機能プロバイダ情報テーブル433の場合、機能タイプには"SCAN"、"PREVIEW"、"OCR"、"SEND_FILE"が存在するため、ｒが１の場合は、機能タイプは"SCAN"となる。機能タイプ"SCAN"の機能プロバイダは"標準スキャン"、"簡単スキャン"、"製本スキャン"となる。したがって、１番目の機能タイプの全機能プロバイダ数は３となる。
S1405では、機能プロバイダ管理部430が、ｒ番目の機能タイプのｓ番目の機能プロバイダを、起動機能プロバイダリストに追加して、処理をS1406へ進める。
【００８５】
S1406では、機能プロバイダ管理部430が、変数ｓに１を加算して、処理をS1404に進める。S1407では、機能プロバイダ管理部430が、変数ｒに１を加算して、処理をS1402へ戻す。
【００８６】
図１５は、図１に示したＭＦＰ101上のワークフロー実行の流れを示したシーケンス図である。
【００８７】
ワークフロー処理部440は、ユーザからワークフローの実行指示を受け取る（S1501）と、ワークフロー管理部450に実行指示に対応するワークフロー定義ファイルの検索を指示する（S1502）。ここでは、ユーザから図８Ｃに示すワークフロー定義ファイル453のフローの実行指示がなされたものとする。ワークフロー管理部450は検索指示されたワークフロー定義ファイル453を読み出し（S1503）、ワークフロー処理部440に読み出した結果を通知する（S1504）。ワークフロー処理部440は、通知されたワークフロー定義ファイル453を読み込む。
【００８８】
ワークフロー処理部440は、機能プロバイダ管理部430に対して「機能タイプがスキャンの機能プロバイダ」すなわちスキャンプロバイダを検索するよう指示する（S1506）。指示にはワークフロー定義ファイル453に定義された検索条件が含まれる。検索指示を受け取った機能プロバイダ管理部430は、機能プロバイダ情報テーブル433の情報をもとに検索条件に一致するスキャンプロバイダを抽出する（S1507）。
【００８９】
ここで、機能プロバイダ管理部430は検索条件に一致するスキャンプロバイダが複数存在した場合は、優先順位の高いスキャンプロバイダを検索結果とする。機能プロバイダ管理部430は、スキャンプロバイダの検索結果を、ワークフロー処理部440に通知する（S1508）。検索結果を受け取ったワークフロー処理部440は、検索結果のスキャンプロバイダに対して、スキャン指示を行う（S1509）。
【００９０】
ここでワークフロー処理部440は、検索結果が標準スキャンプロバイダ414、簡単スキャンプロバイダ415、製本スキャンプロバイダ416であるかを識別しない。どちらであってもスキャンプロバイダであることに変わりはなく、ワークフロー処理部440は個別の機能プロバイダを識別することなくスキャンプロバイダインターフェースに従ってスキャン指示を出すことができる。ワークフロー処理部440からスキャン指示を受け取ったスキャンプロバイダは、指示に従ってスキャンを実行する（S1510）。
【００９１】
次にワークフロー処理部440は、機能プロバイダ管理部430に対してプレビュープロバイダ417を検索するよう指示する（S1511）。機能プロバイダ管理部430は、プレビュープロバイダ417を検索し（S1512）、プレビュープロバイダ417を検索結果として、ワークフロー処理部440に通知する（S1513）。検索結果を受け取ったワークフロー処理部440は、検索結果のプレビュープロバイダ417に対して、プレビュー指示を行う（S1514）。
【００９２】
ワークフロー処理部440からプレビュー指示を受け取ったプレビュープロバイダ417は、指示に従ってプレビュー処理を実行する（S1515）。次にワークフロー処理部440は、機能プロバイダ管理部430に対してWebOCRプロバイダ419を検索するよう指示する（S1516）。
【００９３】
機能プロバイダ管理部430は、WebOCRプロバイダ419を検索し（S1517）、WebOCRプロバイダ419を検索結果として、ワークフロー処理部440に通知する（S1518）。検索結果を受け取ったワークフロー処理部440は、検索結果のWebOCRプロバイダ419に対して、ＯＣＲ指示を行う（S1519）。ワークフロー処理部440からＯＣＲ指示を受け取ったWebOCRプロバイダ419は、指示に従ってＯＣＲ処理を実行する（S1520）。
【００９４】
次にワークフロー処理部440は、機能プロバイダ管理部430に対してＳＭＢ送信プロバイダ420を検索するよう指示する（S1521）。機能プロバイダ管理部430は、ＳＭＢ送信プロバイダ420を検索し（S1522）、ＳＭＢ送信プロバイダ420を検索結果として、ワークフロー処理部440に通知する（S1523）。検索結果を受け取ったワークフロー処理部440は、検索結果のＳＭＢ送信プロバイダ420に対して、送信指示を行う（S1524）。ワークフロー処理部440から送信指示を受け取ったＳＭＢ送信プロバイダ420は、指示に従って送信処理を実行する（S1525）。
【００９５】
図１６は、本実施形態を示す情報処理装置の制御方法を説明するフローチャートである。本例は、図１５のシーケンス図におけるS1501からＳ1524の処理例に対応する。ＣＰＵ211がＭＦＰ101のＨＤＤ214に記憶されているプログラムを、ＲＡＭ213に読み出し、解析、実行することで、図１６のフローチャートの各ステップが実行される。
【００９６】
まずワークフロー処理部440は、ユーザからワークフローの実行指示を受け取ると（S1601）、処理をＳ1602へ進める。S1602で、ワークフロー処理部440は、実行指示に対応するワークフロー定義ファイルを読み込み、処理をS1603へ進める。Ｓ1602では、ユーザから図８Ｃに示すワークフロー定義ファイル453のフローの実行指示がなされたものとする。
次に、S1603で、ワークフロー処理部440はワークフロー定義ファイル453からＦＰタグで定義された機能プロバイダの定義を実行順に１つ取り出して、処理をS1604へ進める。
【００９７】
S1604で、ワークフロー処理部440は、次に実行すべき機能プロバイダがあると判断した場合、処理をS1605へ進める。一方、ワークフロー処理部440は、次に実行すべき機能プロバイダがないと判断した場合、ワークフローの実行を終了する。
S1605で、ワークフロー処理部440は、機能プロバイダの検索条件を取得し機能プロバイダ検索部432に機能プロバイダの検索を指示して、処理をS1606へ進める。S1605の機能プロバイダの検索処理は図１７に示すフローチャート用いて詳細に説明する。
【００９８】
S1606で、ワークフロー処理部440は、機能プロバイダ検索部432から検索結果を受け取り、検索条件に一致する機能プロバイダがあるかどうかをチェックする。ここで、ワークフロー処理部440は、検索結果に一致する機能プロバイダがあると判断した場合、処理をS1607へ進める。一方、ワークフロー処理部440は、検索に一致する機能プロバイダがないと判断した場合、処理をS1631へ進める。S1631で、ワークフロー処理部440は、エラーを通知してワークフローの実行処理を終了する。
S1607で、ワークフロー処理部440はワークフロー定義ファイル453から処理対象となっているＦＰタグの子要素であるActionタグを実行順に１つ取り出す。
【００９９】
S1608で、ワークフロー処理部440は、次に処理すべきActionタグがあると判断した場合、処理をS1609へ進める。一方、ワークフロー処理部440は、次に処理すべきActionタグがないと判断した場合は、処理をS1603へ戻す。
S1609で、ワークフロー処理部440は、Actionタグの定義に従って、S1605の検索結果として取得した機能プロバイダを呼び出す。その際、ワークフロー処理部440は、Actionタグの子要素としてＰａｒａｍｅｔｅｒタグまたはＩｎｐｕｔタグが定義されていれば、その定義に従って、機能プロバイダに入力を与え、処理をS1621へ進める。
S1621で、ワークフロー処理部440から呼び出された機能プロバイダは、指示に従って処理を実行して、処理をS1610へ進める。S1610で、ワークフロー処理部440は呼び出した機能プロバイダの実行完了を待ち受け、処理をS1611へ進める。
【０１００】
S1611で、ワークフロー処理部440は機能プロバイダの実行が完了したら、機能プロバイダの出力を、別の機能プロバイダの入力として使用できるようＨＤＤ214またはＲＡＭ213に保存して、処理をS1608へ戻す。そして、ワークフロー処理部440は、機能プロバイダの出力を保存したら、次の機能プロバイダの定義を取得するために、処理をS1603へ戻す。
【０１０１】
図１７は、本実施形態を示す情報処理装置の制御方法を説明するフローチャートである。本例は、機能プロバイダ検索部432が行う機能プロバイダの検索処理例である。具体的には、図１５のシーケンス図におけるS1507、S1512、S1517、S1522で行われる処理である。また、本処理は、図１６に示したS1605から呼び出される処理でもある。なお、ＣＰＵ211がＭＦＰ101のＨＤＤ214に記憶されているプログラムを、ＲＡＭ213に読み出し、解析、実行することで、図１７のフローチャートの各ステップが実行される。
【０１０２】
まず、S1701で、機能プロバイダ検索部432は、ワークフロー処理部440から機能プロバイダの検索指示を受け取り、処理をS1702へ進める。検索指示には、ＦＰタグおよびＦＰタグの子要素であるConditionタグに定義された機能プロバイダの検索条件が含まれる。
次に、S1702で、機能プロバイダ検索部432は、ＦＰタグの属性として定義された機能プロバイダの指定方法をチェックする。機能プロバイダ検索部432は、機能プロバイダが機能タイプで指定されていると判断した場合、処理をS1703へ進め、ＩＤで指定されていると判断した場合、処理をS1711へ進める。
【０１０３】
S1711で、機能プロバイダ検索部432は機能プロバイダ情報テーブル433から指定されたＩＤをもつ機能プロバイダを抽出して、処理をS1712へ進める。S1712で、機能プロバイダ検索部432は抽出の結果をチェックする。機能プロバイダ検索部432は、検索結果が存在すると判断した場合、処理をS1714へ進める。一方、機能プロバイダ検索部432は、検索結果が存在しないと判断した場合、処理をS1713へ進める。そして、S1713で、機能プロバイダ検索部432は、検索条件に一致する機能プロバイダはない、という検索結果をワークフロー処理部440に返して、本処理を終了する。
【０１０４】
S1703で、機能プロバイダ検索部432は、機能プロバイダ情報テーブル433から指定された機能タイプをもつ機能プロバイダを抽出して、処理をS1704へ進める。S1704で、機能プロバイダ検索部432は抽出の結果をチェックする。例えば、機能タイプを「SCAN」と指定した場合、検索結果候補は、機能プロバイダ情報テーブル433に機能タイプが「SCAN」と定義されている標準スキャンプロバイダ415、簡単スキャンプロバイダ416、製本スキャンプロバイダ416の3件となる。
【０１０５】
S1704で、機能プロバイダ検索部432は、検索結果候補が存在すると判断した場合、処理をS1705へ進め、検索結果候補が存在しないと判断した場合、処理をS1713へ進める。そして、S1713で、機能プロバイダ検索部432は、検索条件に一致する機能プロバイダはない、という検索結果をワークフロー処理部440に返して、処理を終了する。
S1705では、機能プロバイダ検索部432は、検索結果候補の機能プロバイダに優先度が指定されているかをチェックし、優先度の指定があると判断した場合は、処理をS1706進める。一方、機能プロバイダ検索部432は、検索結果候補の機能プロバイダに優先度が指定されていないと判断した場合、処理をS1707へ進める。
S1706で、機能プロバイダ検索部432は、優先度の高い機能プロバイダを絞り込む。具体的には、優先度が高いかどうかは、機能プロバイダ情報テーブル433の「優先度」列に指定された値が小さいかどうかで判別して、処理をS1707へ進める。
【０１０６】
S1707で、機能プロバイダ検索部432は、絞り込んだ結果、優先度の高い機能プロバイダが複数存在するかをチェックする。ここで、機能プロバイダ検索部432は、優先度の高い機能プロバイダが複数存在すると判断した場合、処理をS1708へ進め、優先度の高い機能プロバイダが複数存在しないと判断した場合、S1714へ処理を進める。
【０１０７】
S1708で、機能プロバイダ検索部432は、検索結果候補からインストール時刻の早い機能プロバイダを絞り込み、処理をS1709へ進める。なお、機能プロバイダ検索部432は、インストール時刻が早いかどうかについて、機能プロバイダ情報テーブル433の「インストール時刻」列に指定された値が古いかどうかで判別する。
【０１０８】
S1709で、機能プロバイダ検索部432は、インストール時刻の早い機能プロバイダが複数存在すると判断した場合、処理をS1710へ進め、インストール時刻の早い機能プロバイダが複数存在しないと判断した場合、処理をS1714へ進める。
S1710で、機能プロバイダ検索部432は検索候補が複数存在した場合に、検索結果をいずれか1つに絞り込み、処理をS1714へ進める。
最後に、S1714で、機能プロバイダ検索部432は、絞り込まれた機能プロバイダを検索結果としてワークフロー処理部440に返して、処理を終了する。
【０１０９】
画像形成装置のメニュー画面上に表示されるようなアプリであれば、ユーザが不要なアプリを容易に判断してアンインストールすることができる。しかし機能プロバイダの場合は画像形成装置のメニュー画面上に表示されないため、ユーザが機能プロバイダのインストール状態や起動状態を判別するのは困難である。さらに機能プロバイダの場合は、複数のワークフロー定義ファイルから参照されている可能性がある。
【０１１０】
したがって、ワークフロー定義ファイルで使用されない不必要な機能プロバイダがインストールされ、起動されているかをユーザが確認するのは困難であった。このため使用しない機能プロバイダのために画像形成装置の余計な資源が消費され、新しい機能プロバイダをインストールできないといった課題が発生する。
以上において説明した手順により、新しい機能プロバイダをインストールする際に、資源不足でインストールできなかった場合は、拡張ソフト管理部410が、機能プロバイダ管理部430に対して、不要な機能プロバイダを停止させるための機能プロバイダの起動停止処理を依頼する。機能プロバイダ管理部430は、ワークフロー管理部450で管理されているワークフロー定義ファイル451〜454の内容を解析し、使用される可能性のある機能プロバイダを選出して起動状態にし、使用される可能性のない機能プロバイダは停止させる。
【０１１１】
これにより、使用される可能性のない機能プロバイダは停止させることができる。拡張ソフト管理部410は、機能プロバイダ管理部430により使用資源量を削減したうえで、使用資源量、インストールする機能プロバイダの資源量、ＭＦＰ101の資源量から再度インストール可能か否かを判断する。そしてインストール可能と判断した場合は、新しい機能プロバイダをインストールできる。
【０１１２】
〔第２実施形態〕
第１実施形態では、機能プロバイダをインストールする際の機能プロバイダ起動停止処理によって、ワークフロー定義ファイルにタイプ指定があった場合、その機能タイプの全機能プロバイダを起動状態としていた。
本実施形態では、ワークフロー定義ファイルにタイプ指定があった場合、その機能タイプの中でＩＤ指定されている機能プロバイダのみ起動させる処理の例を説明する。
【０１１３】
なお特に断らない限り、本実施形態について、第１実施形態と同一の番号のブロック図、シーケンス図、フローチャートや処理は、それぞれ第１実施形態の同一番号のブロック図、シーケンス図、フローチャートや処理と同一のものである。
【０１１４】
図１４Ｂは、本実施形態を示す情報処理装置の制御方法を説明するフローチャートである。本例は、図１３に示したＭＦＰ101における機能プロバイダ管理部430のタイプ別機能プロバイダ選出処理例である。ＣＰＵ211がＭＦＰ101のＨＤＤ214に記憶されているプログラムを、ＲＡＭ213に読み出し、解析、実行することで、図１４Ｂの各ステップが実行される。
【０１１５】
S1404において、機能プロバイダ管理部430は、変数ｒによるタイプ毎に、変数ｓによる機能プロバイダ毎に、S1411の処理を行う。S1411では、機能プロバイダ管理部430が、ｒ番目の機能タイプのｓ番目の機能プロバイダについて、全ワークフロー定義ファイルのいずれかで、ＩＤ指定されているか否かを判断する。例えば、ワークフロー定義ファイル451〜454の場合、ワークフロー定義ファイル453では機能タイプが"SCAN"の機能プロバイダが指定されている。
一方、ワークフロー定義ファイル451、452、454では、"SCAN"の機能タイプの機能プロバイダのうち、標準スキャンプロバイダ414がＩＤ指定されている。この場合、機能プロバイダ管理部430は、S1411では、"SCAN"タイプの機能プロバイダの中では、標準スキャンプロバイダ414がＩＤ指定されていると判断する。
【０１１６】
機能プロバイダ管理部430が、ｒ番目の機能タイプのｓ番目の機能プロバイダについて、全ワークフロー定義ファイルのいずれかでＩＤ指定されていると判断した場合は、処理をS1405に進める。一方、機能プロバイダ管理部430が、ｒ番目の機能タイプのｓ番目の機能プロバイダについて、全ワークフロー定義ファイルのいずれかでＩＤ指定されていないと判断した場合は、処理はS1412に進む。
S1412では、機能プロバイダ管理部430が、ｒ番目の機能タイプのｓ番目の機能プロバイダを停止機能プロバイダリストに追加し、処理をS1406に進める。
【０１１７】
第１実施形態は、機能プロバイダ管理部430は、同じ機能タイプの機能プロバイダが複数存在した場合、同じ機能タイプの機能プロバイダは全て使用される可能性があると判断し、全ての機能プロバイダを起動状態にしていた。このため、さらなる使用資源量を確保することは困難であった。
【０１１８】
第２実施形態によれば、機能タイプで指定されている機能プロバイダのうち、ワークフロー定義ファイル451〜454でＩＤ指定されている機能プロバイダは使用される。このため、ＩＤ指定されている機能プロバイダに絞って起動させることができる。
これにより、第1実施形態よりも多くの機能プロバイダを停止させ、使用資源量を削減できる。
【０１１９】
〔第３実施形態〕
第２実施形態では、機能プロバイダをインストールする際の機能プロバイダ起動停止処理によって、ワークフロー定義ファイルにタイプ指定があった場合ＩＤ指定されている機能プロバイダを起動していた。
【０１２０】
本実施形態では、タイプ指定があった場合その機能タイプの機能プロバイダの中でＩＤ指定されている機能プロバイダが存在しない場合、優先度により機能プロバイダを選出する処理の例を説明する。
なお特に断らない限り、本実施例について、第１、第２実施形態と同一の番号のブロック図、シーケンス図、フローチャートや処理は、それぞれ第１、第２実施形態の同一番号のブロック図、シーケンス図、フローチャートや処理と同一のものである。
【０１２１】
図１４Ｃは、本実施形態を示す情報処理装置の制御方法を説明するフローチャートである。本例は、図１３に示したＭＦＰ101における機能プロバイダ管理部430のタイプ別機能プロバイダ選出処理例である。なお、ＣＰＵ211がＭＦＰ101のＨＤＤ214に記憶されているプログラムを、ＲＡＭ213に読み出し、解析、実行することで、図１４Ｃに示す各ステップが実行される。
【０１２２】
S1421では、機能プロバイダ管理部430が、起動機能プロバイダリストに機能プロバイダが存在すると判断した場合、処理をS1407に進める。一方、起動機能プロバイダリストに機能プロバイダが存在しないと判断した場合、処理をS1422に進める。
S1422では、機能プロバイダ管理部430が、変数ｓに１を設定して、処理をS1423へ進める。S1423では、機能プロバイダ管理部430が、変数ｓが、機能プロバイダ管理テーブル433で管理されているｒ番目の機能タイプの、全機能プロバイダ数以下である場合に、S1424〜S1426を繰り返す。
例えば、図６(A)の機能プロバイダ情報テーブル433の場合、機能タイプには"SCAN"、"PREVIEW"、"OCR"、"SEND_FILE"が存在するため、ｒが１の場合は、機能タイプは"SCAN"となる。機能タイプ"SCAN"の機能プロバイダは"標準スキャン"、"簡単スキャン"、"製本スキャン"となり、１番目の機能タイプの全機能プロバイダ数は３となる。
【０１２３】
S1424では、機能プロバイダ管理部430が、ｒ番目の機能タイプのｓ番目の機能プロバイダは優先度が高いと判断した場合は、処理をS1425に進める。一方、機能プロバイダ管理部430が、ｒ番目の機能タイプのｓ番目の機能プロバイダは優先度が低いと判断した場合は、処理をS1426に進める。
S1425では、機能プロバイダ管理部430が、ｒ番目の機能タイプのｓ番目の機能プロバイダを、停止機能プロバイダリストから起動機能プロバイダリストに移動して、処理をS1426へ進める。S1426では、機能プロバイダ管理部430が、変数ｓに１を加算して、処理をS1423へ戻す。
【０１２４】
第２実施形態では、機能プロバイダ管理部430は、同じ機能タイプの機能プロバイダが複数存在した場合、ＩＤ指定された機能プロバイダで、その機能タイプを代表させて起動させていた。このため、タイプ指定されている機能プロバイダの中で、ＩＤ指定されていない機能プロバイダを停止させ、使用資源量を削減することが困難であった。
【０１２５】
本実施形態によれば、機能タイプで指定されており、かつＩＤ指定されていない機能プロバイダのうち、優先度の高い機能プロバイダを選出し起動できる。これにより、第２実施形態よりも多くの機能プロバイダを停止させ、使用資源量を削減することができる。
【０１２６】
〔第４実施形態〕
第３実施形態では、機能プロバイダをインストールする際の機能プロバイダ起動停止処理によって、ワークフロー定義ファイルにタイプ指定がありＩＤ指定が無い場合、優先度により機能プロバイダを起動していた。
本実施形態では、優先度が存在しないか存在しても高い優先度の機能プロバイダが複数存在した場合に占有する資源量によって起動状態を選出する処理の例を説明する。
【０１２７】
なお特に断らない限り、本実施例について、第１〜第３実施形態と同一の番号のブロック図、シーケンス図、フローチャートや処理は、それぞれ第１〜第３実施形態の同一番号のブロック図、シーケンス図、フローチャートや処理と同一のものである。
【０１２８】
図１４Ｄは、本実施形態を示す情報処理装置の制御方法を説明するフローチャートである。本例は、図１３に示したＭＦＰ101における機能プロバイダ管理部430のタイプ別機能プロバイダ選出処理例である。なお、ＣＰＵ211がＭＦＰ101のＨＤＤ214に記憶されているプログラムを、ＲＡＭ213に読み出し、解析、実行することで、図１４Ｄに示す各ステップが実行される。
【０１２９】
S1421で、機能プロバイダ管理部430が、起動機能プロバイダリストに機能プロバイダが存在していないと判断した場合、処理をS1431に進める。S1431では、機能プロバイダ管理部430が、ｒ番目の機能タイプの機能プロバイダには優先度が存在しないか、優先度が設定されていたとしても高い優先度の機能プロバイダが複数存在すると判断した場合は、処理をS1422に進める。一方、機能プロバイダ管理部430が、ｒ番目の機能タイプの機能プロバイダには優先度が存在しないか、優先度が設定されていたとしても高い優先度の機能プロバイダが複数存在しないと判断した場合は、処理をS1407に進める。
【０１３０】
S1432では、機能プロバイダ管理部430が、ｒ番目の機能タイプのｓ番目の機能プロバイダの資源量が、タイプ内で少ない資源量かを判断する。例えば、機能プロバイダ管理テーブル433が図６(A)であり、機能タイプが"SCAN"である場合は、使用メモリ量は、標準スキャンプロバイダ414は２０、簡単スキャンプロバイダ415は１０、製本スキャンプロバイダ416は３０となっている。
【０１３１】
この場合は、使用メモリの少ない機能プロバイダは、簡単スキャンプロバイダ415となる。なお、使用資源量を判断する際に使用メモリ量の他、使用スレッド量、使用ファイル量、使用ファイルディスクリプタ量、使用ソケット量のいずれかで判断してもよいし、これらの資源量の一部または全部の組み合わせで判断してもよい。
【０１３２】
S1432では、機能プロバイダ管理部430が、ｒ番目の機能タイプのｓ番目の機能プロバイダの資源量が、タイプ内で少ない資源量であると判断した場合は、処理をS1425に進める。一方、機能プロバイダ管理部430が、ｒ番目の機能タイプのｓ番目の機能プロバイダの資源量が、タイプ内で少ない資源量でないと判断した場合は、処理をS1426に進める。
【０１３３】
第３実施形態では、機能プロバイダ管理部430は、同じ機能タイプの機能プロバイダが複数存在した場合、ＩＤ指定されていない機能プロバイダを優先度の高い機能プロバイダに絞って起動させていた。これにより、優先度が高い機能プロバイダが複数存在する場合、優先度が高い全ての機能プロバイダを起動させる必要があり、使用資源量の削減が困難だった。
【０１３４】
本実施形態によれば、機能タイプで指定されており、かつＩＤ指定されていない機能プロバイダで、優先度の高い機能プロバイダ複数存在する場合、資源量で比較して機能プロバイダを絞ることができる。これにより、第３実施形態よりも多くの機能プロバイダを停止させ、使用資源量を削減できる。
【０１３５】
〔第５実施形態〕
第４実施形態では、機能プロバイダをインストールする際の機能プロバイダ起動停止処理により、優先度に加えて、資源量によって起動状態の機能プロバイダを選出していた。
【０１３６】
本実施形態では、優先度でも資源量でも起動する機能プロバイダを選出できなかった場合、いずれか１つの機能プロバイダを選出する処理の例を説明する。なお特に断らない限り、本実施例について、第１〜第４実施形態と同一の番号のブロック図、シーケンス図、フローチャートや処理は、それぞれ第１〜第４実施形態の同一番号のブロック図、シーケンス図、フローチャートや処理と同一のものである。
【０１３７】
図１４Ｅは、本実施形態を示す情報処理装置の制御方法を説明するフローチャートである。本例は、図１３に示したＭＦＰ101における機能プロバイダ管理部430のタイプ別機能プロバイダ選出処理例である。ＣＰＵ211がＭＦＰ101のＨＤＤ214に記憶されているプログラムを、ＲＡＭ213に読み出し、解析、実行することで、図１４Ｅに示す各ステップが実行される。
【０１３８】
S1421で、機能プロバイダ管理部430が、ｒ番目の機能タイプの機能プロバイダには優先度が存在しないか、優先度が存在しても高い優先度の機能プロバイダが複数存在したと判断した場合、処理をS1441へ進める。S1441で、機能プロバイダ管理部430が、優先度が存在しても高い優先度の機能プロバイダの資源量も同じと判断した場合は、処理をS1442に進める。一方、機能プロバイダ管理部430が、ｒ番目の機能タイプの機能プロバイダには優先度が存在しないか、優先度が存在しても高い優先度の機能プロバイダが複数存在し、かつ資源量も同じでないと判断した場合は、処理をS1407に進める。
S1442では、機能プロバイダ管理部430が、ｒ番目の機能タイプのｓ番目の機能プロバイダのいずれかを、停止機能プロバイダリストから起動機能プロバイダリストに移動して、処理をS1407へ進める。
【０１３９】
第４実施形態では、機能プロバイダ管理部430は、同じ機能タイプの機能プロバイダが複数存在した場合、ＩＤ指定されていないかつ優先度や、資源量によって機能する機能プロバイダを絞っていた。
しかし、資源量が少ない機能プロバイダが複数存在する場合、資源量が少ない全ての機能プロバイダを起動させる必要があり、使用資源量の削減が困難であった。
【０１４０】
本実施形態によれば、機能タイプで指定されており、かつＩＤ指定されておらず、優先度の高い、資源量の少ない機能プロバイダ複数存在する場合、いずれか１つの機能プロバイダを絞ることができる。
これにより、第４実施形態よりも多くの機能プロバイダを停止させ、使用資源量を削減できる。
【０１４１】
〔第６実施形態〕
第１〜第５実施形態では、機能プロバイダをインストールする際の機能プロバイダ起動停止処理によって、ワークフロー定義ファイルにタイプ指定があった場合に、ＩＤ指定、優先度、資源量、いずれか1つに絞る方法で起動する機能プロバイダを選出していた。
本実施形態では、ユーザ毎に機能プロバイダの優先度が設定されていた場合、少ない機能プロバイダで全てのユーザを対象にできる機能プロバイダを選出する処理の例を説明する。
【０１４２】
図１４Ｆは、本実施形態を示す情報処理装置の制御方法を説明するフローチャートである。本例は、図１３に示したＭＦＰ101における機能プロバイダ管理部430のタイプ別機能プロバイダ選出処理例である。ＣＰＵ211がＭＦＰ101のＨＤＤ214に記憶されているプログラムを、ＲＡＭ213に読み出し、解析、実行することで、図１４（Ｆ）のフローチャートの各ステップが実行される。
【０１４３】
S1404において、機能プロバイダ管理部430は、変数ｒによるタイプ毎に、変数ｓによる機能プロバイダ毎に、S1451の処理を行う。S1451では、機能プロバイダ管理部430が、ｒ番目の機能タイプのｓ番目の機能プロバイダは、ユーザの優先度設定を広くカバーするか否かを判断する。例えば、機能プロバイダユーザ設定テーブル434が図６(B)の場合、"BOOK_SCAN"である製本スキャンが、"UserA"、"UserB"、"UserC"の全ての優先度に含まれているため、ユーザの優先度を広くカバー可能と判断される。
【０１４４】
機能プロバイダ管理部430が、ｒ番目の機能タイプのｓ番目の機能プロバイダは、ユーザの優先度設定を広くカバーすると判断した場合は、処理をS1405に進める。一方、機能プロバイダ管理部430が、ｒ番目の機能タイプのｓ番目の機能プロバイダは、ユーザの優先度設定を広くカバーしないと判断した場合、処理をS1412に進める。
S1452では、機能プロバイダ管理部430が、起動機能プロバイダリストに存在する機能プロバイダのみで、全ユーザの優先度設定をカバー可能であると判断した場合は、処理をＳ1407に進める。一方、機能プロバイダ管理部430が、起動機能プロバイダリストに存在する機能プロバイダのみで、全ユーザの優先度設定をカバー可能でないと判断した場合は、処理をS1403に戻す。
【０１４５】
第１〜５実施形態では、機能プロバイダ管理部430は、同じ機能タイプの機能プロバイダが複数存在した場合、機能プロバイダのＩＤ指定、優先度、資源量、いずれか1つに絞る、のいずれかの方法で起動する機能プロバイダを選出していた。
しかし、ユーザ毎機能プロバイダの優先度が設定されている場合、全ての機能プロバイダが使用される可能性があるため、起動させておく必要があった。
【０１４６】
本実施形態によれば、機能プロバイダ管理部430は、ユーザ設定テーブル434で設定されているユーザ毎の優先度を参照し、広いユーザーをカバーできる機能プロバイダから順に、起動する機能プロバイダを絞る。
これにより、より少ない機能プロバイダで多くのユーザをカバーする機能プロバイダを選出でき、ユーザ毎の機能プロバイダの優先度が設定された場合に、第１〜第５実施形態よりも使用資源量を削減することができる。
【０１４７】
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステムまたは装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサがプログラムを読み出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えばＡＳＩＣ）によっても実現可能である。
【符号の説明】
【０１４８】
101  ＭＦＰ
102  サーバ
103  ＰＣ
【図１】
2018152687.tif 000003
【図２】
2018152687.tif 000004
【図３】
2018152687.tif 000005
【図４】
2018152687.tif 000006
【図５】
2018152687.tif 000007
【図６】
2018152687.tif 000008
【図７】
2018152687.tif 000009
【図８Ａ】
2018152687.tif 000010
【図８Ｂ】
2018152687.tif 000011
【図８Ｃ】
2018152687.tif 000012
【図８Ｄ】
2018152687.tif 000013
【図９】
2018152687.tif 000014
【図１０】
2018152687.tif 000015
【図１１】
2018152687.tif 000016
【図１２】
2018152687.tif 000017
【図１３】
2018152687.tif 000018
【図１４Ａ】
2018152687.tif 000019
【図１４Ｂ】
2018152687.tif 000020
【図１４Ｃ】
2018152687.tif 000021
【図１４Ｄ】
2018152687.tif 000022
【図１４Ｅ】
2018152687.tif 000023
【図１４Ｆ】
2018152687.tif 000024
【図１５】
2018152687.tif 000025
【図１６】
2018152687.tif 000026
【図１７】
2018152687.tif 000027
【手続補正書】
【提出日】平成29年4月7日(2017.4.7)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
デバイスメモリに拡張ソフトとして登録された複数の機能プロバイダが所定のワークフロー定義ファイルに従い連携して特定の処理を実行する情報処理装置であって、
前記デバイスメモリの資源容量と、前記デバイスメモリにインストールする所定の拡張ソフトの資源容量と、前記デバイスメモリにインストールする機能プロバイダの資源容量とを管理する管理手段と、
機能プロバイダをインストールする指示を受け付けた場合で、かつ、前記デバイスメモリの資源容量で特定される空き容量がインストールする拡張ソフトまたは機能プロバイダの資源容量が超える場合、前記デバイスメモリに登録された所定のワークフローで特定される機能プロバイダの使用状態から起動させる機能プロバイダと、使用させない機能プロバイダとを抽出する抽出手段と、
前記抽出手段が抽出した前記使用させない機能プロバイダを前記デバイスメモリから削除する削除手段と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記削除手段は、前記所定のワークフロー定義ファイルに機能タイプが指定されて、かつ、いずれか１つの機能プロバイダが使用されている場合、同じ機能タイプの機能プロバイダは削除しないことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記削除手段は、前記所定のワークフロー定義ファイルに機能タイプが指定されて、かつ、いずれか１つの機能プロバイダが使用されている場合、同じ機能タイプの機能プロバイダのうち、ＩＤ指定された機能プロバイダを削除することを特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記削除手段は、前記所定のワークフロー定義ファイルに機能タイプが指定されて、かつ、いずれか１つの機能プロバイダが使用されている場合、同じ機能タイプの機能プロバイダのうち、ＩＤ指定されていない機能プロバイダを削除することを特徴とする請求項１に記載の情報処理装置。
【請求項５】
前記削除手段は、前記所定のワークフロー定義ファイルに機能タイプが指定されて、かつ、いずれか１つの機能プロバイダが使用されている場合で、かつ、同じ機能タイプの機能プロバイダのうち、ＩＤ指定された機能プロバイダが存在しない場合、優先度が低い機能プロバイダを削除することを特徴とする請求項１に記載の情報処理装置。
【請求項６】
前記削除手段は、前記優先度が高い機能プロバイダが複数存在する場合、各機能プロバイダが占有している前記デバイスメモリの資源容量が少ない機能プロバイダを削除することを特徴とする請求項５に記載の情報処理装置。
【請求項７】
前記削除手段は、前記優先度が高い機能プロバイダが複数存在する場合で、かつ、各機能プロバイダが占有している前記デバイスメモリの資源容量が少ない機能プロバイダが複数存在する場合、前記デバイスメモリの資源容量が少ない複数の機能プロバイダのうち、いずれか１つを削除することを特徴とする請求項６に記載の情報処理装置。
【請求項８】
前記削除手段は、各ユーザにより機能プロバイダの優先度が設定されている場合、優先度が高い機能プロバイダを削除しないことを特徴とする請求項６〜７のいずれか1項に記載の情報処理装置。
【請求項９】
機能プロバイダが記憶されたＵＳＢメモリが接続されることに応じて、または、データ処理装置からのインストール指示を受信することに応じて、機能プロバイダをインストールする指示を受け付けることを特徴とする請求項１に記載の情報処理装置。
【請求項１０】
デバイスメモリに拡張ソフトとして登録された複数の機能プロバイダが所定のワークフロー定義ファイルに従い連携して特定の処理を実行する情報処理装置の制御方法であって、
前記デバイスメモリの資源容量と、前記デバイスメモリにインストールする所定の拡張ソフトの資源容量と、前記デバイスメモリにインストールする機能プロバイダの資源容量とを管理する管理工程と、
機能プロバイダをインストールする指示を受け付けた場合で、かつ、前記デバイスメモリの資源容量で特定される空き容量がインストールする拡張ソフトまたは機能プロバイダの資源容量が超える場合、前記デバイスメモリに登録された所定のワークフローで特定される機能プロバイダの使用状態から起動させる機能プロバイダと、使用させない機能プロバイダとを抽出する抽出工程と、
前記抽出工程で抽出した前記使用させない機能プロバイダを前記デバイスメモリから削除する削除工程と、
を備えることを特徴とする情報処理装置の制御方法。
【請求項１１】
請求項１０に記載の情報処理装置の制御方法をコンピュータに実行させることを特徴とするプログラム。