図1は、本発明の実施例1に係る画像処理装置のハードウェア構成例を示すブロック図である。
図1に示すように、画像処理装置10は、入力部11、表示部12、補助記憶部13、ネットワークI/F14、外部記憶装置I/F15、外部入力装置I/F16、主記憶部17、制御部18を備えている。
入力部11は、操作部と呼ばれ、テンキー、各種ファンクションキー、スタート/ストップキー等を備え、画像処理機能の各種条件設定の入力(例えば、テンキーによる「解像度設定」、「変倍の倍率設定」等。)や機能実行を指示する入力(例えば、スタートキーによる「変倍の実行」。)を各キーにより受け付ける。本実施例において入力部11は、後に説明する利用者認証を行う際に、利用者の識別コードやパスワード等を入力により受け付ける。
表示部12は、液晶表示機器を備え、ジョブに関する情報(例えば、「画像処理中のジョブ名」。)、並びに画像処理装置10の駆動条件(例えば、「設定された解像度値」、「設定された倍率」。)、装置状態(例えば、「ジョブ待ちの状態」、「ジョブ処理中の状態」。)等の各種情報を表示する。また、表示部12がタッチパネル機能を有している場合には、タッチパネル上からタッチペン等を用いてタッチ入力を行うことができ、パネル上に表示された機能ボタンを選択することで、入力部11が行う機能と同様の操作が行える。本実施例において表示部12は、後に説明するインストールされた拡張機能に関する情報を利用者が閲覧する際に表示画面へ表示する。
補助記憶部13は、画像処理装置10が取り扱うデータ(例えば、「画像データ」)の格納先であるHD(Hard Disk)等の記憶装置である。本実施例において補助記憶部13は、拡張機能のプログラム及び関連するデータを格納する。
ネットワークI/F14は、LAN(Local Area Network)、公衆回線及び無線回線等のネットワーク上の通信機器と画像処理装置10との間で、データを双方向通信するためのハードウェアインタフェースである。本実施例においてネットワークI/F14は、インストールする拡張機能のプログラム及び関連データ等を、管理サーバ等からダウンロードする際のネットワークインタフェースとして使用される。
外部記憶装置I/F15は、メモリカード等の外部記憶装置と画像処理装置10との間で、データを伝送するためのハードウェアインタフェースである。また、外部記憶装置には、メモリカードの他、FD(floppy disk)、MO(Magneto-Optical disk)、CD(Compact Disc)、DVD(Digital Versatile Disk)等の記録メディアドライブも含まれる。本実施例において外部記憶装置I/F15は、メモリカードや記録メディア内に格納された拡張機能のプログラム及び関連するデータ等を伝送する際のデータインタフェースとして使用される。
外部入力装置I/F16は、スキャナやデジタルカメラ等の画像読み取り装置と画像処理装置10との間で、データを伝送するためのハードウェアインタフェースである。本実施例において外部入力装置I/F16は、画像処理を行う画像データを入力する(画像を読み取る)。
主記憶部17は、ROM(Read Only Memory)、RAM(Random Access Memory)から構成される記憶回路である。本実施例において主記憶部17は、画像処理装置10を制御する基本ソフト(以下、「OS:Operating System」と言う。)及び画像処理装置10が起動した際に機能提供される基本機能(例えば、「画像入力機能」、「画像加工機能」、「画像出力機能」。)のプログラム及び関連データがROMに格納されており、CPU(Central Processing Unit)により、ROMに格納されたプログラムやデータがRAMへ展開(ロード)される。
制御部18は、コントローラ部と呼ばれ、CPUを備えた制御回路である。本実施例において、制御部18は、画像処理装置10に電源が投入された後、ROMに格納されたプログラム及びデータを必要に応じてRAMへ展開(ロード)し、展開(ロード)したプログラムを実行することで、電源投入後OSが起動し、起動したOS上で基本機能をアプリケーションとして動作させている。また、制御部18は、拡張機能がインストールされている場合、補助記憶部13に格納された拡張機能のプログラム及び関連データを、基本機能のプログラム同様に、起動したOS上で拡張機能をプラグインソフトウェアとして動作させている。
上述した各ハードウェアは、信号の伝送路であるバス及び接続ケーブルによって接続されている。よって、制御部18は、周辺の入力部11、表示部12、補助記憶部13、ネットワークI/F14、外部記憶装置I/F15、外部入力装置I/F16、主記憶部17へ、制御命令信号を伝送し、それに対して、入力部11、表示部12、補助記憶部13、ネットワークI/F14、外部記憶装置I/F15、外部入力装置I/F16、主記憶部17からは、制御命令に従って各装置で処理されたデータ信号が制御部18へ伝送される。
よって、制御部18は、画像処理装置10全体の動作を制御することができる。
このように、画像処理装置10は、インストールする拡張機能のプログラム及び関連データがネットワーク上の管理サーバに格納されている場合、ネットワークI/F114を介して取得し、又、メモリカード、記録メディアに格納されている場合、外部記憶装置I/F15を介して取得し、取得したプログラム及びデータをインストールする(補助記憶部13へ格納する)ことができる。
また、制御部18が、インストールされた拡張機能のプログラムや関連データを、補助記憶部13から主記憶部17のRAMへ展開(ロード)し、展開したプログラムを実行することで基本機能の機能拡張を実現している。
次に、画像処理装置10に対して拡張する機能がどのように開発提供されているのかについて、図2を用いて説明する。
図2は、本発明の実施例1に係るフレームワークを用いた拡張機能の開発作業の例を示す図である。
まず、画像処理装置10が有する機能構成40は、大きく分けて基本機能41と拡張機能42から構成されている。
図2に示すように、基本機能41は、画像データを入力する「画像入力機能」、入力した画像データを加工する「画像加工機能」、加工した画像データを出力する「画像出力機能」であり、入力データに対して画像処理を行い、処理した画像データを出力する上で必要な機能で構成されている。
拡張機能42は、先に説明した基本機能41を拡張する機能で構成されている。
よって、基本機能41は、画像処理装置10における機能アプリケーションであり、拡張機能42は、機能アプリケーションのプラグインソフトウェアという関係を持っている。
この拡張機能42のプラグインソフトウェアは、図2に示すプラグインソフトウェアを開発する開発環境(例えば、「コンパイラ」、「デバッガ」。)が整備されたPC(Personal Computer)20によって、プラグインソフトウェアの雛形である拡張機能用フレームワーク21を基に開発される。
拡張機能用フレームワーク21には、画像処理装置10が採用しているアーキテクチャやプラットフォームの仕様にあわせてプログラムの動作を制御する(動作規則に従ってプログラムの動作を制御する)汎用的な機能(以下、「動作制御機能」と言う。)が予めプログラム化された状態でまとめて提供されている。
そのため、拡張機能42のプラグインソフトウェアの開発作業の中で、画像処理装置10のアーキテクチャやプラットフォームの仕様に影響されることがなく、開発者は、画像処理装置10に対応した拡張機能用フレームワーク21を基に、設計した拡張機能部のみをプログラムコード化し、プラグインソフトウェアを開発すれば良い。
このようにして開発された拡張機能42のプラグインソフトウェアは、図2に示すような「機種情報33」、「仕向け情報34」及び「ファームウェア情報35」のデータ識別用のヘッダファイルと「更新用データ(プログラム)31」、「プログラム名称36」及び「バージョン情報37」の更新データで構成されており、拡張機能単位でパッケージ化し、拡張機能パッケージ30として管理サーバ又はメモリカード、記録メディア等に格納され、画像処理装置10へ提供される。
よって、拡張機能用フレームワーク21を基に拡張機能42のプラグインソフトウェアを開発し、画像処理装置10へ提供する方法は、サードベンダーを含めた自社以外の製造者(メーカー)により開発されたソフトウェアや将来開発する新規拡張機能42のプラグインソフトウェアにおいても、低コスト且つ迅速な対応による機能拡張が可能となり、柔軟性の高いシステムを実現できる。
また、アーキテクチャやプラットフォームの異なる画像処理装置10同士の機能移植も、移植する画像処理装置10に対応した拡張機能用フレームワーク21を基に、拡張機能部を移植するだけで良いため効率よく行うことができる。
次に、拡張機能パッケージ30がどのようなプログラムとデータで構成され、画像処理装置10内においてインストール後どのように管理されるかについて、図3を用いて説明する。
図3は、本発明の実施例1に係る拡張機能パッケージ30がインストール後に階層構造化された例を示す図である。
まず、図3に示すように、拡張機能-1パッケージ30a及び拡張機能-2パッケージ30bは、基本アプリケーションを機能拡張するためのプログラム31(プログラムA〜E)、プログラムの依存関係を示す依存情報データ32で構成されている。
ここで言う「プログラムの依存関係」とは、例えば、プログラムAとプログラムBにおいて、「プログラムBがプログラムAを使用する」や「プログラムAはプログラムBに使用される」、また「プログラムBがプログラムAを呼び出す」や「プログラムAはプログラムBに呼び出される」等のような2つ以上のプログラム間において、あるプログラムの動作が他のプログラムによって規定され、条件付けられている関係のことを言い、依存情報データ32は、このようなプログラム間の依存関係の情報によって構成されている。
次に、拡張機能-1パッケージ30a及び拡張機能-2パッケージ30bは、画像処理装置10へインストールした後、図3に示すように階層構造50によってプログラム構成が管理される。
例えば、拡張機能-1パッケージ30aの場合には、依存情報データ32に示された依存関係(A→B→C)に基づいて、最上位の階層(1)にプログラムA、最上位の階層から1つ下の階層(2)にプログラムB、最上位の階層から2つ下の階層(3)にプログラムCとなるようにプログラムA、B及びCが有する依存関係を階層化する。
また、拡張機能-2パッケージ30bの場合は、依存情報データ32に示された依存関係(D→B→C,D→E)に基づいて、最上位の階層(1)にプログラムD、最上位の階層から1つ下の階層(2)にプログラムBとプログラムE、最上位の階層から2つ下の階層(3)にプログラムCとなるようにプログラムB、C、D及びEが有する依存関係を階層化する。
このように、画像処理装置10にインストールされた拡張機能-1パッケージ30aと拡張機能-2パッケージ30bにおける複数のプログラム間の依存関係を階層化(階層(1)、(2)、(3))することによって、パッケージ内のプログラム構成を管理することができる。
例えば、図3に示すように、拡張機能-1パッケージ30aをインストールした場合では、最上位の階層(1)にプログラムA、最上位から1つ下の階層(2)にプログラムB、最上位から2つ下の階層(3)にプログラムCのようにプログラムを管理する。
また、拡張機能-2パッケージ30bをインストールした場合では、最上位の階層(1)にプログラムD、最上位から1つ下の階層(2)にプログラムBとプログラムE、最上位から2つ下の階層(3)にプログラムCのようにプログラムを管理する。
次に、階層化された依存関係によりプログラムが、画像処理装置10においてどのように動作するのかについて、図4を用いて説明する。
図4は、本発明の実施例1に係る拡張機能42のプログラム31の動作例を示す図である。
拡張機能用フレームワーク21を基に開発されたプログラムには、プログラム自身の動作を制御する動作制御機能が含まれている。
例えば、拡張機能-1パッケージ30aのプログラムを起動した場合、まず、最上位の階層に位置するプログラムAが起動されると、プログラムAは、階層構造50に基づいてプログラムA自身が使用する(1つ下の階層に位置する)プログラムBを起動する。次に、プログラムBは、プログラムB自身が使用する(1つ下の階層に位置する)プログラムCを起動する。
プログラムCは、プログラムC自身が使用する(次に起動する)プログラムがないため、自分が起動完了した旨を1つ上の階層に位置するプログラムBへ通知する。プログラムBは、プログラムCからの起動完了通知を受け取り、その後、自分が起動完了した旨を1つ上の階層に位置するプログラムAへ通知する。最後に、プログラムAは、プログラムBからの起動完了通知を受け取り、自分が起動完了した旨をプログラムの管理先へ通知する。
この通知によって、拡張機能-1パッケージ30aのプログラムが全て起動完了したこととなる。
また、拡張機能-2パッケージ30bのプログラムを起動した場合、まず、最上位の階層に位置するプログラムDが起動されると、プログラムDは、階層構造50に基づいてプログラムD自身が使用する(1つ下の階層に位置する)プログラムB及びプログラムEを起動する。プログラムBは、プログラムB自身が使用する(1つ下の階層に位置する)プログラムCを起動する。
プログラムCは、プログラムC自身が使用する(次に起動する)プログラムがないため、自分が起動完了した旨を1つ上の階層に位置するプログラムBへ通知する。プログラムBは、プログラムCからの起動完了通知を受け取り、その後、自分が起動した旨を1つ上の階層に位置するプログラムDへ通知する。
また、プログラムEも、プログラムCと同様に、プログラムE自身が使用する(次に起動する)プログラムがないため、自分が起動完了した旨を1つ上の階層に位置するプログラムDへ通知する。最後に、プログラムDは、プログラムB及びプログラムDからの起動完了通知を受け取り、自分が起動完了した旨をプログラムの管理先へ通知する。
この通知によって、拡張機能-2パッケージ30bのプログラムが全て起動完了したこととなる。
動作制御機能は、プログラム間の依存関係(使用/被使用)が階層化された階層構造50の各階層(階層(1)、(2)、(3))に位置するプログラムが、階層構造50の情報に基づいて、上位の階層に位置するプログラムの起動及び終了の要求に従って動作することで、拡張機能42のプログラム31を動作制御する。
例えば、図4に示すように、拡張機能-1パッケージ30aの場合には、最上位の階層(1)に位置するプログラムAが起動すると、起動動作を継承し最上位から1つ下の階層(2)に位置するプログラムBが起動し、さらに起動動作を継承し最上位から2つ下の階層(3)に位置するプログラムCが起動する。
また、拡張機能-2パッケージ30bの場合には、最上位の階層(1)に位置するプログラムDが起動すると、起動動作を継承し最上位から1つ下の階層(2)に位置するプログラムB及びプログラムEが起動し、さらに起動動作を継承し最上位から2つ下の階層(3)に位置するプログラムCが起動する。
このように、拡張機能42のプログラム31は、階層構造50の情報に基づいて、依存関係を有する複数のプログラムの動作を制御することができる。
次に、図3及び図4において説明した拡張機能42のプログラム管理を、どのような機能部により実現しているかについて、図5を用いて説明する。
図5は、本発明の実施例1に係る主要機能部の構成例を示すブロック図である。
図5に示す主要機能部は、プログラム構成管理部61、拡張機能動作管理部62、認証部63から構成されている。
プログラム構成管理部61は、構成管理手段71を有し、拡張機能42のプログラム31の依存関係を階層化し、プログラム構成及び階層構造50の情報を階層毎に管理する。
拡張機能動作管理部62は、動作管理手段72を有し、拡張機能42のプログラム31の起動と終了、インストールとアンインストールを行い、インストールされた拡張機能42のプログラム31の動作を管理する。
また、拡張機能動作管理部62は、表示手段74を有し、インストールされた拡張機能42のプログラム31に関する階層構造50の情報を、画像処理装置10が有する表示部12の表示画面に表示する。
認証部63は、認証手段73を有し、インストールされた拡張機能42のプログラム31に関する階層構造50の情報を閲覧(参照)できる利用者か否かを認証する。
このように、画像処理装置10は、上記主要機能部により拡張機能42のプログラム31を管理している。
次に、図5において説明した各機能部が有する手段について、図6を用いて説明する。
図6は、本発明の実施例1に係る主要機能部が有する手段の構成例を示すブロック図である。
図6に示す主要機能部が有する手段は、構成管理手段71、動作管理手段72、認証手段73、表示手段74から構成されている。
まず、プログラム構成管理部61が有する構成管理手段71は、インストール又はアンインストールの要求に従って、拡張機能パッケージ30を画像処理装置10へインストール又はアンインストールを行う。
また、構成管理手段71は、インストールを行う際に、拡張機能42のプログラム31の依存関係を依存情報データ32に基づいて階層化する。階層化した結果(階層構造50の情報)は、プログラムの動作を管理する上で必要なため、階層構造50の情報をテーブル化し、階層構造情報テーブルとして補助記憶部13に保持する。
以下に、構成管理手段71が、階層構造情報テーブルに階層構造50の情報を格納する方法について、図7の階層構造情報テーブルのデータ構成例を示す図を用いて説明する。
階層構造情報テーブル80は、2行N列の形式を有し、1行目が起動されるプログラム(下位層)の情報81、2行目が起動するプログラム(上位層)の情報82が格納される。
構成管理手段71は、例えば、拡張機能-1パッケージ30aをインストールした場合、2行1列目の項目に、拡張機能を識別するデータであるパッケージ名の「拡張機能-1パッケージ(Package-1)」を格納し、同列の1行目の項目に、拡張機能-1パッケージ30aが起動する際に最初に起動される「プログラムAの情報」を格納する。
次に、2行2列目の項目に、起動するプログラムAの情報を格納し、1行2列目の項目に、プログラムAから起動される「プログラムBの情報」を格納する。
最後に、2行3列目の項目に、起動するプログラムBの情報を格納し、1行3列目の項目に、プログラムBから起動される「プログラムCの情報」を格納する。
階層構造情報テーブル80に格納するプログラムの情報81、82は、図7に示すように、インストールの際にプログラムを格納した補助記憶部13内のディレクトリ構造に従った格納場所を示す情報(例えば、「プログラムデータパス名」。)である。
例えば、プログラムAの情報は、補助記憶部13のドライブ名がDドライブだった場合、"D:\xxx/yyy/zzz/prog_a.dll"となる。
このように、構成管理手段71は、インストールの際に、プログラムの情報81、82(格納場所の情報)を階層構造情報テーブル80の各項目に格納することで、図7の矢印に示すような拡張機能42のプログラム31の依存関係(階層構造50の情報)を階層化する。
例えば、拡張機能-1パッケージ30aの場合には、「Package-1 → D:\xxx/yyy/zzz/prog_a.dll」、「prog_a.dll → D:\xxx/yyy/zzz/prog_b.dll」、「prog_b.dll → D:\xxx/yyy/zzz/prog_c.dll」の依存関係(階層構造50の情報)を階層化する。
よって、プログラム構成管理部61は、構成管理手段71により、インストールの際に、拡張機能パッケージ30のプログラムを補助記憶部13へ格納するとともに、依存情報データ32に基づいて、拡張機能42のプログラム31の依存関係を階層化した結果を階層構造情報テーブル80として保持することで、パッケージ単位で、拡張機能42のプログラム31を階層毎に管理することができる。
以下に、構成管理手段71が、インストール又はアンインストールの際に行う、階層構造情報テーブル80の更新について、図8の階層構造情報テーブル80の内容を更新する例を示す図を用いて説明する。
構成管理手段71は、例えば、画像処理装置10に対して、既に拡張機能-1パッケージ30aがインストールされている状態で、拡張機能-2パッケージ30bをインストールした場合、依存情報データ32に基づいて、拡張機能42のプログラム31の依存関係を階層化し、図8の中段に示す階層構造情報テーブル80の網掛け部のプログラムの情報81、82を追加する。
この時、拡張機能-2パッケージ30bのプログラムB及びプログラムCについては、既にインストールされた拡張機能-1パッケージ30aに含まれているプログラムであるため、2行2列目の項目にプログラムDを追加し、プログラムDがプログラムBを起動する依存関係を示すプログラム情報81を追加する。
また、インストールした拡張機能-1パッケージ30aをアンインストールした場合、インストールの際に更新した階層構造情報テーブル80から、拡張機能-1パッケージ30aに関するプログラムの情報81、82を削除する。
この時、拡張機能-1パッケージ30aのプログラムB及びプログラムCについては、後にインストールされた拡張機能-2パッケージ30bに含まれているプログラムDから起動されるプログラムであるため、削除を行わない(図8の下段に示す階層構造情報テーブル80の網掛け部)。
よって、プログラム構成管理部61は、構成管理手段71により、インストール又はアンインストールの際に、拡張機能パッケージ30のプログラムを追加又は削除するとともに、階層構造情報テーブル80内のプログラムの情報81、82も追加又は削除することで、拡張機能42のプログラム構成及び階層構造50の情報を管理することができる。
また、構成管理手段71は、階層構造情報テーブル80で管理する階層構造50の情報を取得要求された場合、要求に応じて階層構造50の情報を応答する。
よって、プログラム構成管理部61は、構成管理手段71により、他の機能部から階層構造50の情報を取得要求された場合、要求に応じて階層構造50の情報を応答することができる。
次に、拡張機能動作管理部62が有する動作管理手段72は、拡張機能42の起動指示を受け、階層構造情報テーブル80の階層構造50の情報に基づいて、起動する拡張機能42の最上位の階層に位置するプログラムを起動する。
そのため、動作管理手段72は、拡張機能42の起動指示を受けた場合、プログラム構成管理部61が有する構成管理手段71へ、階層構造情報テーブル80で管理する階層構造50の情報を取得要求し、構成管理手段71から返答された階層構造50の情報を取得する。
以下に、動作管理手段72による拡張機能パッケージ30の起動について、図7の下段に示すデータ構成例を用いて説明する。
動作管理手段72は、例えば、拡張機能-1パッケージ30aの起動指示を受けた場合、構成管理手段71から返答され取得した階層構造50の情報に対して、パッケージ名"Package-1"をキーに2行目の項目全ての情報を検索する。
その後、該当するパッケージ名"Package-1"に対して依存関係にある同列1行目の情報"D:\xxx/yyy/zzz/prog_a.dll"に従ってプログラムAを起動する。
このように、動作管理手段72は、拡張機能-1パッケージ30aの最上位の階層に位置するプログラムを起動する。
また、動作管理手段72は、プログラムが有する動作制御機能により、下位層から上位層へ伝達される各プログラムの起動完了通知に基づいて、最上位の階層に位置するプログラムから起動完了通知を受け取ることで、起動した拡張機能42が正常に起動したか否かを把握する。
プログラムの終了についても、起動と同様に、終了する拡張機能42の最上位の階層に位置するプログラムに対して終了を要求する。
よって、拡張機能動作管理部62は、動作管理手段72により、構成管理手段71から返答され取得した階層構造50の情報に基づいてプログラムの起動と終了を行い、インストールされた拡張機能42のプログラム31の動作を管理することができる。
このように、構成管理部71により、拡張機能42に関する情報を階層構造情報テーブル80により管理し、動作管理手段72により、階層構造情報テーブル80に基づいて、拡張機能42のプログラム31における起動と終了の動作を管理するため、従来のような、プログラム管理部のプログラムコードを変更する必要がなく、拡張機能42のプログラム31とプログラム管理部との依存性が低く、拡張機能の管理を容易にすることができる。
また、拡張機能42のプログラム管理方法が単純化したことにより、多くの機能が拡張された場合において、プログラム管理を行う処理の負荷を軽減することができる。
よって、画像処理装置10は、機能の拡張性、機能を導入する際の柔軟性及び製品の性能品質が高いシステムを実現することができる。
また、拡張機能動作管理部62が有する表示手段74は、インストールされた拡張機能42のプログラム31に関する階層構造50の情報の閲覧(参照)指示を受け、階層構造情報テーブル80の階層構造50の情報に基づいて、表示部12の表示画面に階層構造50の情報を表示する。
そのため、表示手段74は、拡張機能42のプログラム31に関する階層構造50の情報の閲覧(参照)指示を受けた場合、プログラム構成管理部61が有する構成管理手段71へ、階層構造情報テーブル80で管理する階層構造50の情報を取得要求し、構成管理手段71から返答された階層構造50の情報を取得する。
また、表示手段74は、認証部63で管理する参照権限(閲覧権限)に基づいて、表示する階層構造50の情報の範囲を制限する。
そのため、表示手段74は、次に説明する認証部63の認証手段73へ、閲覧(参照)しようとしている利用者の認証を要求し、認証結果として認証手段73から返答された利用者の参照権限(閲覧権限)の情報を取得する。
よって、拡張機能動作管理部62は、表示手段74により、構成管理手段71から返答され取得した階層構造50の情報に基づいて、インストールされた拡張機能42のプログラム31に関する階層構造50の情報を表示部12の表示画面に表示することができる。
また、認証結果として認証手段73から返答された利用者の参照権限(閲覧権限)の情報に基づいて、表示する階層構造50の情報の範囲を制限することができる。
次に、認証部63が有する認証手段73は、利用者に対する認証要求を受け、インストールされた拡張機能42のプログラム31に関する階層構造50の情報を閲覧(参照)できる利用者か否かを認証する。
認証手段73は、拡張機能動作管理部62が有する表示手段74から認証要求された場合、入力部11から入力された利用者の識別情報(例えば、「ユーザID」。)とパスワードに基づいて、インストールされた拡張機能42のプログラム31に関する階層構造50の情報を閲覧(参照)できる利用者か否かを認証する。
また、認証手段73は、認証登録された利用者に対して、利用者毎に、表示する階層構造50の情報の範囲を制限する参照権限(閲覧権限)を管理し、認証結果として、該当する利用者の参照権限(閲覧権限)を応答する。
よって、認証部63は、認証手段73により、インストールされた拡張機能42のプログラム31に関する階層構造50の情報を閲覧(参照)できる利用者か否かを認証することができる。
このように、画像処理装置10は、主要機能部が有する各手段により拡張機能42のプログラム31を管理している。
よって、画像処理装置10は、動作制御機能を有するプログラムを、階層構造50によって管理することで、従来のように、全てのプログラムを1箇所の管理部が集中管理する必要がなく、拡張機能42のプログラム31とプログラム管理部との依存性が低く、拡張機能42のプログラム管理を容易にすることができ、拡張性の高いシステムを実現することができる。
次に、拡張機能42のプログラム管理を実現する詳細な方法について図9から図20を用いて説明する。
また、以降に説明する拡張機能42のプログラム管理方法は、全て、プログラムにより実現されるものであり、図5で示したように、画像処理装置10が有する制御部18で実行される。
よって、コンピュータに読み取り可能な記録媒体であれば、本発明を構成するプログラムを格納することができる。
まず、図4で示した拡張機能42のプログラム31における動作制御機能の処理について、図9及び図10を用いて詳細説明する。
拡張機能動作管理部62は、拡張機能42の起動及び終了が指示された場合、動作管理手段72により、拡張機能42のプログラム31のうち、最上位の階層に位置するプログラムを起動及び終了する。
その結果、プログラム間の連鎖的な依存関係(階層構造50の情報)に従って、階層毎に動作を継承することにより、拡張機能パッケージ30の全てのプログラムが起動及び終了する。
よって、拡張機能42のプログラム31が有する動作制御機能は、プログラム間による連鎖的な起動及び終了動作を実現する機能である。
拡張機能42のプログラム31が有する動作制御機能は、プログラム起動機能として、「プログラム起動機能」、「プログラム起動完了通知受取機能」、「プログラム起動完了通知機能」を有し、また、プログラム終了機能として、「プログラム終了要求受取機能」、「プログラム終了要求機能」とを有している。
図9は、本発明の実施例1に係る拡張機能42のプログラム31が有するプログラム起動機能に関する処理を示すフローチャートである。
プログラム起動機能は、自らが起動を指示された(起動された)回数をカウントし、そのカウント値(初期値0)をRAMに保持する(S101)。
次に、保持したカウント値に基づいて、メインプロセスが起動済みか否かを判定する(S102)。
カウント値が2以上で、メインプロセスが起動済みの場合(S102がYESの場合)、起動した際に取得した階層構造50の情報に基づいて、1つ上の階層に位置するプログラムに対して起動完了通知を応答する(S109)。
また、カウント値が1で、メインプロセスが初めて起動される場合(S102がNOの場合)、プログラム構成管理部61の構成管理手段71へ、階層構造情報テーブル80が管理する階層構造50の情報の取得を要求し(S103)、要求に対して、構成管理手段71から階層構造50の情報の応答があるまで待つ(S104)。
構成管理手段71から応答があった場合(S104がYESの場合)、取得した階層構造50の情報に基づいて、次に起動するプログラムがあるか否かを判定する(S105)。
次に起動するプログラムがある場合(S105がYESの場合)、起動するプログラムの情報(プログラムデータパス)に基づいて、1つ下の階層に位置するプログラムを起動し(S106)、起動したプログラムから起動完了通知を受け取るまで待つ(S107)。
起動したプログラムから起動完了通知を受け取った場合(S107がYESの場合)又は次に起動するプログラムがない場合(S105がNOの場合)、自らが最下位の階層に位置するプログラムと判断し、メインプロセスが起動完了するまで待ち(S108)、起動完了した後(S108がYESの場合)に、階層構造50の情報に基づいて、1つ上の階層に位置するプログラムに対して起動完了通知を送信する(S109)。
このように、プログラム起動機能は、「プログラム起動機能(S103〜S106)」、「プログラム起動完了通知受取機能(S107)」、「プログラム起動完了通知機能(S108、S109)」の他に、異なる拡張機能42に共通して含まれるプログラムを考慮して、起動指示が来た際に、自らのメインプロセスが既に起動済みであることを判断し(自らが起動済みであれば、下位層に位置するプログラムも起動済みであることも判断)、起動完了通知のみを送信するようにしている。
図10は、本発明の実施例1に係る拡張機能42のプログラム31が有するプログラム終了機能に関する処理を示すフローチャートである。
プログラム終了機能は、1つ上の階層に位置するプログラムから終了要求を受け取るまで待ち(S201)、終了要求を受け取った場合(S201がYESの場合)、起動を指示された際にカウントし、RAMへ保持していた起動指示回数を示す値(カウント値)から1減算する。
次に、減算後の値に基づいて、起動中のメインプロセスを終了可能か否かを判定する(S203)。
減算後の値が1以上で、メインプロセスを終了可能でない場合(S203がNOの場合)、1つ上の階層に位置するプログラムから終了要求を受け取る待ち状態に戻る(S201へ戻る)。
また、減算後の値が1で、メインプロセスを終了可能な場合(S203がYESの場合)、プログラム構成管理部61の構成管理手段71へ、階層構造情報テーブル80が管理する階層構造50の情報の取得を要求し(S204)、要求に対して、構成管理手段71から階層構造50の情報の応答があるまで待つ(S205)。
構成管理手段71から応答があった場合(S205がYESの場合)、取得した階層構造50の情報に基づいて、次に終了要求するプログラムがあるか否かを判定する(S206)。
次に終了要求するプログラムがある場合(S206がYESの場合)、起動するプログラムの情報(プログラムデータパス)に基づいて、1つ下の階層に位置するプログラムに終了要求し(S207)、自らのメインプロセスを終了する(S208)。
また、次に終了要求するプログラムがない場合(S206がNOの場合)、自らが最下位の階層に位置するプログラムと判断し、自らのメインプロセスを終了する(S208)。
このように、プログラム終了機能は、「プログラム終了要求受取機能(S201)」、「プログラム終了要求機能(S204〜S207)」の他に、異なる拡張機能42に共通して含まれるプログラムを考慮して、終了要求を受け付けた際に、自らのメインプロセスが終了可能であることを判断し(他の拡張機能42がメインプロセスを使用していないことを判断)、メインプロセスを終了している。
次に、図5及び図6で示した画像処理装置10の主要機能部の処理について、図11から図14を用いて詳細説明する。
図11は、本発明の実施例1に係る拡張機能動作管理部62に関する処理を示すフローチャートである。
拡張機能動作管理部62が有する動作管理手段72は、画像処理装置10のシステムから動作要求を受け付けるまで待つ(S301)。この時、受け付ける動作要求の種類は、「起動」、「終了」、「インストール」、「アンインストール」又は「情報閲覧(情報参照)」である。
例えば、「起動」は、画像処理装置10に電源投入時、「終了」は、画像処理装置10のシステム終了前やアンインストール前等に要求される。
「インストール又はアンインストール」は、画像処理装置10の管理者が入力部11から指示した場合や管理サーバから指示された場合等、不定期に要求される。
「閲覧要求(参照要求)」も、「インストール又はアンインストール」と同様に、画像処理装置10の利用者が入力部11から指示した場合や管理サーバから指示された場合等、不定期に要求される。
動作管理手段72は、動作要求を受け付けた場合(S301がYESの場合)、要求された動作が「起動」、「終了」、「インストール」、「アンインストール」又は「情報閲覧(情報参照)」のうち、どの要求であるかを判定する(S302、S307、S311、S313、S315)。
要求された動作が「起動要求」の場合(S302がYESの場合)、プログラム構成管理部61の構成管理手段71へ、階層構造情報テーブル80が管理する階層構造50の情報の取得を要求し(S303)、要求に対して、構成管理手段71から階層構造50の情報が返答されるまで待つ(S304)。
構成管理手段71から返答があった場合(S304がYESの場合)、取得した階層構造50の情報(プログラムデータパス)に基づいて、起動する拡張機能42の最上位の階層に位置するプログラムを起動し(S305)、起動したプログラムから起動完了通知を受け取るまで待つ(S306)。
起動したプログラムから起動完了通知を受け取った場合(S307がYESの場合)、起動した拡張機能42が起動完了したと判断し、その後、画像処理装置10のシステムから動作要求待ちの状態へ戻る(S301へ戻る)。
また、要求された動作が「終了要求」の場合(S302がNO且つS307がYESの場合)、プログラム構成管理部61の構成管理手段71へ、階層構造情報テーブル80が管理する階層構造50の情報の取得を要求し(S308)、要求に対して、構成管理手段71から階層構造50の情報の返答があるまで待つ(S309)。
構成管理手段71から返答があった場合(S309がYESの場合)、取得した階層構造50の情報(プログラムデータパス)に基づいて、終了する拡張機能42の最上位の階層に位置するプログラムに終了要求し(S310)、その後、画像処理装置10のシステムから動作要求待ちの状態へ戻る(S301へ戻る)。
また、要求された動作が「インストール要求」の場合(S307がNO且つS311がYESの場合)、プログラム構成管理部61の構成管理手段71へ、新規の拡張機能42をインストールするように要求し(S312)、その後、画像処理装置10のシステムから動作要求待ちの状態へ戻る(S301へ戻る)。
また、要求された動作が「アンインストール要求」の場合(S311がNO且つS313がYESの場合)、プログラム構成管理部61の構成管理手段71へ、インストールされた拡張機能42のうち、指定された機能をアンインストールするように要求する(S314)。
その後、画像処理装置10のシステムから動作要求待ちの状態へ戻る(S301へ戻る)。
また、要求された動作が「閲覧要求(参照)」の場合(S313がNO且つS315がYESの場合)、表示手段74による表示処理を行い(S316)、その後、画像処理装置10のシステムから動作要求待ちの状態へ戻る(S301へ戻る)。
また、要求された動作が、「起動」、「終了」、「インストール」、「アンインストール」、「閲覧(参照)」のうち該当するものがない場合(S315がNOの場合)、画像処理装置10のシステムから動作要求を受け付ける待ち状態に戻る(S301へ戻る)。
図12は、本発明の実施例1に係るプログラム構成管理部61に関する処理を示すフローチャートである。
プログラム構成管理部61が有する構成管理手段71は、拡張機能動作管理部62(動作管理手段72、表示手段74)又は拡張機能42の各プログラムから要求を受け付けるまで待つ(S401)。この時、受け付ける要求の内容は、「階層構造50の情報取得」、「インストール」、「アンインストール」である。
「階層構造50の情報取得」は、拡張機能動作管理部62及び拡張機能42の各プログラムから要求される。
「インストール又はアンインストール」は、拡張機能動作管理部62から要求される。
構成管理手段71は、動作要求を受け付けた場合(S401がYESの場合)、要求された内容が、「階層構造50の情報取得」、「インストール」又は「アンインストール」のうち、どの要求であるかを判定する(S402、S404、S407)。
要求された内容が「階層構造50の情報取得要求」の場合(S402がYESの場合)、階層構造情報テーブル80が管理する階層構造50の情報を、取得要求先(拡張機能動作管理部62又は拡張機能42の各プログラム)へ応答し(S403)、その後、拡張機能動作管理部62又は拡張機能42の各プログラムから要求を受け付ける待ち状態に戻る(S401へ戻る)。
また、要求された内容が「インストール要求」の場合(S402がNO且つS404がYESの場合)、インストールする拡張機能パッケージ30を、管理サーバ又はメモリカード、記録メディア等から取得し、パッケージを構成する拡張機能42のプログラム31及び依存情報データ32を補助記憶部13へ格納する(S405)。この時、階層構造情報テーブル80が管理する階層構造50の情報に基づいて、既にインストールされているプログラムに関しては補助記憶部13への格納を行わない。
次に、依存情報データ32に基づいて、新規拡張機能42のプログラム31に関する情報を追加し、階層構造情報テーブル80を更新する(S406)。この時、階層構造情報テーブル80が管理する階層構造50の情報に基づいて、既にインストールされているプログラムに関する情報は更新しない。
その後、拡張機能動作管理部62又は拡張機能42の各プログラムから要求を受け付ける待ち状態に戻る(S401へ戻る)。
また、要求された内容が「アンインストール要求」の場合(S404がNO且つS407がYESの場合)、依存情報データ32に基づいて、拡張機能42のプログラム31に関する情報を削除し、階層構造情報テーブル80を更新する(S408)。この時、階層構造情報テーブル80が管理する階層構造50の情報に基づいて、アンインストールする拡張機能42のプログラム31のうち、他の拡張機能42に使用されているプログラムに関する情報は削除しない。
次に、依存情報データ32に基づいて、拡張機能42のプログラム31を補助記憶部13から削除し、次に、依存情報データ32を削除する(S409)。この時、階層構造情報テーブル80が管理する階層構造50の情報に基づいて、アンインストールする拡張機能42のプログラム31のうち、他の拡張機能42に使用されているプログラムは削除しない。
その後、拡張機能動作管理部62又は拡張機能42の各プログラムから要求を受け付ける待ち状態に戻る(S401へ戻る)。
また、要求された動作が、「階層構造50の情報取得」、「インストール」、「アンインストール」のうち該当するものがない場合(S407がNOの場合)、拡張機能動作管理部62又は拡張機能42の各プログラムから要求を受け付ける待ち状態に戻る(S401へ戻る)。
図13は、本発明の実施例1に係る認証部63に関する処理を示すフローチャートである。
認証部63が有する認証手段73は、インストールされた拡張機能42のプログラム31に関する階層構造50の情報を閲覧(参照)できる利用者か否かを認証する認証要求を受け付けるまで待つ(S501)。この時、認証要求は、利用者の認証情報として、入力部11から入力された利用者の識別情報(例えば、「ユーザID」。)とパスワードを受け取る。
認証手段73は、認証要求(利用者の認証情報)を受け取った場合(S501がYESの場合)、認証情報に基づいて利用者の認証を判定し、利用者毎に設定された閲覧可能な情報の範囲を制限する参照権限(閲覧権限)を示す権限識別情報を応答する(S502)。
その後、階層構造50の情報を閲覧(参照)できる利用者か否かを認証する認証要求を受け付ける待ち状態に戻る(S501へ戻る)。
図14は、本発明の実施例1に係る表示処理を示すフローチャートである。
拡張機能動作管理部62が有する表示手段74は、認証部63が有する認証手段73へ、利用者の認証を要求し(S601)、要求に対して、認証手段73から権限識別情報が返答されるまで待つ(S602)。
表示手段74は、認証手段73から返答された場合(S602がYESの場合)、プログラム構成管理部61の構成管理手段71へ、階層構造情報テーブル80が管理する階層構造50の情報の取得を要求し(S603)、要求に対して、構成管理手段71から階層構造50の情報が返答されるまで待つ(S604)。
構成管理手段71から返答があった場合(S604がYESの場合)、取得した権限識別情報(参照権限(閲覧権限))に基づいて、取得した階層構造50の情報に対して、利用者の閲覧可能な情報の範囲を判定する(S605)。
利用者の参照権限(閲覧権限)が強い場合(S605が「権限が強い」の場合)、取得した全ての階層構造50の情報を表示画面に表示するため、必要な階層構造50の情報をシステムへ送信する(S606)。
また、利用者の参照権限(閲覧権限)が弱い場合(S605が「権限が弱い」の場合)、取得した階層構造50の情報のうち、拡張機能42のパッケージ名のみを表示画面に表示するため、必要な階層構造50の情報をシステムへ送信する(S607)。
次に、図9及び図10で示した動作制御機能を有するプログラムと、図11から図14で示した主要機能部の処理との関係性を明確にするため、画像処理装置10における拡張機能42の起動と終了及びインストールとアンインストールの流れについて、図15から図20を用いて説明する。
図15は、本発明の実施例1に係る拡張機能-1を起動する流れを示すシーケンス図である。
まず、画像処理装置10のシステムから拡張機能動作管理部62へ拡張機能-1を起動する指示が送られる(1−1)。
拡張機能動作管理部62は、動作管理手段72により、プログラム構成管理部61へ階層構造50の情報取得を要求する(1−2)。
プログラム構成管理部61は、構成管理手段71により、補助記憶部13に格納された階層構造情報テーブル80から階層構造50の情報を取得し(1−3)、拡張機能動作管理部62へ取得した階層構造50の情報を応答する(1−4)。
拡張機能動作管理部62は、返答された階層構造50の情報「Package-1 → D:\xxx/yyy/zzz/prog_a.dll」に基づいて、拡張機能-1の最上位の階層に位置するプログラムAを起動する(1−5)。
プログラムAは、動作制御機能により、プログラム構成管理部61へ階層構造50の情報取得を要求し(1−6)、プログラム構成管理部61は、構成管理手段71により、階層構造50の情報をプログラムAへ応答する(1−7)。
プログラムAは、プログラム起動機能により、返答された階層構造50の情報「prog_a.dll → D:\xxx/yyy/zzz/prog_b.dll」に基づいて、1つ下の階層に位置するプログラムBを起動する(1−8)。
プログラムBは、動作制御機能により、プログラム構成管理部61へ階層構造50の情報取得を要求し(1−9)、プログラム構成管理部61は、構成管理手段71により、階層構造50の情報をプログラムBへ応答する(1−10)。
プログラムBは、プログラム起動機能により、返答された階層構造50の情報「prog_b.dll → D:\xxx/yyy/zzz/prog_c.dll」に基づいて、1つ下の階層に位置するプログラムCを起動する(1−11)。
プログラムCは、動作制御機能により、プログラム構成管理部61へ階層構造50の情報取得を要求し(1−12)、プログラム構成管理部61は、構成管理手段71により、階層構造50の情報をプログラムCへ応答する(1−13)。
プログラムCは、プログラム起動機能により、返答された階層構造50の情報に基づいて、自らが最下位の階層に位置するプログラムであると判断し、自らのメインプロセスが起動した後、プログラム起動完了通知機能により、1つ上の階層に位置するプログラムBへ起動完了通知を送信する(1−14)。
プログラムBは、自らのメインプロセスが起動した後、プログラム起動完了通知受取機能により、プログラムCからの起動完了通知を受け取り、下位層のプログラムCが起動完了したことを確認した後、プログラム起動完了通知機能により、取得した階層構造50の情報に基づいて、1つ上の階層に位置するプログラムAへ起動完了通知を送信する(1−15)。
プログラムAは、自らのメインプロセスが起動した後、プログラム起動完了通知受取機能により、プログラムBからの起動完了通知を受け取り、下位層のプログラムB及びプログラムCが起動完了したことを確認した後、プログラム起動完了通知機能により、取得した階層構造50の情報に基づいて、自らを起動した拡張機能動作管理部62が有する動作管理手段72へ起動完了通知を送信する(1−16)。
図16は、本発明の実施例1に係る拡張機能-2を起動する流れを示すシーケンス図である。
まず、画像処理装置10のシステムから拡張機能動作管理部62へ拡張機能-2を起動する指示が送られる(2−1)。
拡張機能動作管理部62は、動作管理手段72により、プログラム構成管理部61へ階層構造50の情報取得を要求する(2−2)。
プログラム構成管理部61は、構成管理手段71により、補助記憶部13に格納された階層構造情報テーブル80から階層構造50の情報を取得し(2−3)、拡張機能動作管理部62へ取得した階層構造50の情報を応答する(2−4)。
拡張機能動作管理部62は、返答された階層構造50の情報「Package-2→ D:\xxx/yyy/zzz/prog_d.dll」に基づいて、拡張機能-2の最上位の階層に位置するプログラムDを起動する(2−5)。
プログラムDは、動作制御機能により、プログラム構成管理部61へ階層構造50の情報取得を要求し(2−6)、プログラム構成管理部61は、構成管理手段71により、階層構造50の情報をプログラムDへ応答する(2−7)。
プログラムDは、プログラム起動機能により、返答された階層構造50の情報「prog_d.dll → D:\xxx/yyy/zzz/prog_b.dll及びprog_d.dll → D:\xxx/yyy/zzz/prog_e.dll」に基づいて、1つ下の階層に位置するプログラムB及びプログラムEを起動する(2−8、2−9)。
プログラムBは、動作制御機能により、他の拡張機能42(拡張機能-1)によりメインプロセスが起動されていることを判断し、プログラム起動完了通知機能により、取得した階層構造50の情報に基づいて、1つ上の階層に位置するプログラムAへ起動完了通知を送信する(2−10)。
プログラムEは、動作制御機能により、プログラム構成管理部61へ階層構造50の情報取得を要求し(2−11)、プログラム構成管理部61は、構成管理手段71により、階層構造50の情報をプログラムEへ応答する(2−12)。
プログラムEは、プログラム起動機能により、返答された階層構造50の情報に基づいて、自らが最下位の階層に位置するプログラムであると判断し、自らのメインプロセスが起動した後、プログラム起動完了通知機能により、1つ上の階層に位置するプログラムAへ起動完了通知を送信する(2−13)。
プログラムDは、自らのメインプロセスが起動した後、プログラム起動完了通知受取機能により、プログラムB及びプログラムEからの起動完了通知を受け取り、下位層のプログラムB、プログラムC及びプログラムDが起動完了したことを確認した後、プログラム起動完了通知機能により、取得した階層構造50の情報に基づいて、自らを起動した拡張機能動作管理部62が有する動作管理手段72へ起動完了通知を送信する(2−14)。
また、図15及び図16は、拡張機能42が起動する流れが分かり易いように1つの拡張機能42が起動する流れを説明した。実際の画像処理装置10では、電源投入後、インストールされた拡張機能42に対して、同時に起動指示されることから、拡張機能動作管理部62において、取得した階層構造50の情報「Package-X → C:\xxx/yyy/zzz/prog_x.dll」に基づいて、各拡張機能42で最上位の階層に位置するプログラムを同時に起動する。その結果、階層構造50の情報に基づいて、階層毎にプログラムが起動する。
図17は、本発明の実施例1に係る拡張機能-1を終了する流れを示すシーケンス図である。
まず、画像処理装置10のシステムから拡張機能動作管理部62へ拡張機能-2を起動する指示が送られる(3−1)。
拡張機能動作管理部62は、動作管理手段72により、プログラム構成管理部61へ階層構造50の情報取得を要求する(3−2)。
プログラム構成管理部61は、構成管理手段71により、補助記憶部13に格納された階層構造情報テーブル80から階層構造50の情報を取得し(3−3)、拡張機能動作管理部62へ取得した階層構造50の情報を応答する(3−4)。
拡張機能動作管理部62は、返答された階層構造50の情報「Package-1→ D:\xxx/yyy/zzz/prog_a.dll」に基づいて、拡張機能-1の最上位の階層に位置するプログラムAに終了を要求する(3−5)。
プログラムAは、動作制御機能により、プログラム構成管理部61へ階層構造50の情報取得を要求し(3−6)、プログラム構成管理部61は、構成管理手段71により、階層構造50の情報をプログラムAへ応答する(3−7)。
プログラムAは、プログラム終了要求機能により、返答された階層構造50の情報「prog_a.dll → D:\xxx/yyy/zzz/prog_b.dll」に基づいて、1つ下の階層に位置するプログラムBに終了を要求する(3−8)。
プログラムBは、プログラム終了要求受取機能により、プログラムAからの終了要求を受け取るが、動作制御機能により、他の拡張機能42(拡張機能-2)によりメインプロセスが使用されていることを判断し、終了要求を拒絶する。
よって、プログラムB及びプログラムC等のように、他の拡張機能42によりメインプロセスが使用されているプログラムは、プログラム終了要求受取機能により、最後までメインプロセスを使用した拡張機能42からの終了要求を受け取り、終了する。
図18は、本発明の実施例1に係る拡張機能-1及び拡張機能-2をインストールする流れを示すシーケンス図である。
まず、拡張機能-1をインストールする場合、画像処理装置10のシステムから拡張機能動作管理部62へ拡張機能-1をインストールする指示が送られる(4−1)。
拡張機能動作管理部62は、動作管理手段72により、プログラム構成管理部61へ拡張機能-1のインストールを要求する(4−2)。
プログラム構成管理部61は、構成管理手段71により、インストールする拡張機能-1パッケージ30aを、管理サーバ又はメモリカード、記録メディア等から取得し、パッケージを構成する拡張機能42のプログラムA、プログラムB、プログラムC及び依存情報データ32を補助記憶部13へ格納する(4−3)。
次に、依存情報データ32に基づいて、階層構造情報テーブル80を更新(新規拡張機能42のプログラムA、プログラムB及びプログラムCに関する情報を追加)する(4−4)。
また、拡張機能-2をインストールする場合、画像処理装置10のシステムから拡張機能動作管理部62へ拡張機能-2をインストールする指示が送られる(4−5)。
拡張機能動作管理部62は、動作管理手段72により、プログラム構成管理部61へ拡張機能-2のインストールを要求する(4−6)。
プログラム構成管理部61は、構成管理手段71により、インストールする拡張機能-2パッケージ30bを、管理サーバ又はメモリカード、記録メディア等から取得し、パッケージを構成する拡張機能42のプログラムB及びプログラムCは、他の拡張機能42(拡張機能-1)をインストールした際に格納されているため、新規のプログラムD、プログラムE及び依存情報データ32を補助記憶部13へ格納する(4−7)。
次に、依存情報データ32に基づいて、他の拡張機能42(拡張機能-1)をインストールした際に格納されているプログラムB及びプログラムC以外のプログラムD及びプログラムEに関する情報を追加し、階層構造情報テーブル80を更新する(4−8)。
図19は、本発明の実施例1に係る拡張機能-1をアンインストールする流れを示すシーケンス図である。
まず、画像処理装置10のシステムから拡張機能動作管理部62へ拡張機能-1をアンインストールする指示が送られる(5−1)。
拡張機能動作管理部62は、動作管理手段72により、プログラム構成管理部61へ拡張機能-1のアンインストールを要求する(5−2)。
プログラム構成管理部61は、構成管理手段71により、依存情報データ32と階層構造情報テーブル80に基づいて、他の拡張機能42(拡張機能-2)が使用するプログラムB及びプログラムC以外のプログラムAに関する情報のみ削除し、階層構造情報テーブル80を更新する(5−3)。
次に、依存情報データ32と更新された階層構造情報テーブル80に基づいて、他の拡張機能42(拡張機能-2)が使用するプログラムB及びプログラムC以外のプログラムAを補助記憶部13から削除し、次に、依存情報データ32を削除する(5−4)。
図20は、本発明の実施例1に係る拡張機能-1及び拡張機能-2に関する階層構造50の情報を表示する流れを示すシーケンス図である。
まず、画像処理装置10のシステムから拡張機能動作管理部62へ、インストールされた拡張機能42に関する階層構造50の情報を閲覧する指示が送られる(6−1)。
拡張機能動作管理部62は、表示手段74により、認証部63へ閲覧する利用者の認証を要求する(6−2)。
認証部63は、認証手段73により、要求された利用者の認証情報に基づいて利用者の認証を判定し、利用者毎に設定された閲覧可能な情報の範囲を制限する参照権限(閲覧権限)を示す権限識別情報を応答する(6−3)。
次に、拡張機能動作管理部62は、表示手段74により、プログラム構成管理部61へ階層構造50の情報取得を要求する(6−4)。
プログラム構成管理部61は、構成管理手段71により、補助記憶部13に格納された階層構造情報テーブル80から階層構造50の情報を取得し(6−5)、拡張機能動作管理部62へ取得した階層構造50の情報を応答する(6−6)。
拡張機能動作管理部62は、表示手段74により、取得した権限識別情報(参照権限(閲覧権限))に基づいて、取得した階層構造50の情報に対して、利用者の閲覧可能な情報の範囲を判定し、表示画面に表示するために必要な階層構造50の情報をシステムへ送信する(6―7)。
以下に、図20で示した階層構造50の情報を表示する流れを実施した際に、表示部12に表示された例を、図21及び図22を用いて示す。
図21は、本発明の実施例1に係る拡張機能-1及び拡張機能-2に関する階層構造情報の表示例(利用者の権限が弱い場合)を示す図である。
図21に示すように、認証部63から返答された権限識別情報(参照権限(閲覧権限))が弱い利用者の場合は、インストールされた拡張機能42に対する階層構造50の情報のうち、パッケージ名92のみが表示部12の表示画面91に表示される。
また、図22は、本発明の実施例1に係る拡張機能-1及び拡張機能-2に関する階層構造情報の表示例(利用者の権限が強い場合)を示す図である。
図22に示すように、認証部63から返答された権限識別情報(参照権限(閲覧権限))が強い利用者の場合は、インストールされた拡張機能42に対する階層構造50の全ての情報92が表示部12の表示画面91に表示される。
最後に、本発明の変形例である画像形成装置について、図23を用いて説明する。
図23は、本発明の変形例に係るハードウェア構成例を示すブロック図。
図23に示すように、画像形成装置90は、図1に示した画像処理装置10が有するハードウェア構成に加え、印刷部19を備えている。
印刷部19は、プリンタエンジンと呼ばれ、画像処理(例えば、「フィルタ処理」、「解像度変換」、「カラーマッチング」、「γ補正」、「階調変換」等。)後に生成されたラスタイメージ(ビットマップイメージ)を用紙へ印刷する画像形成部と、用紙を画像形成部へ搬送する給紙搬送部と、印刷後の用紙を排紙する用紙排紙部とから構成される。
よって、印刷部19は、図2で示した基本機能41(「画像入力機能」、「画像加工機能」、「画像出力機能」)のうち、画像出力機能から受け取った画像データを用紙へ印刷する。
このように、画像形成装置90に代表される画像処理装置10を有する装置であれば、本発明を実施することができる。
以上のように、本発明の実施例1によれば、画像処理装置10は、連鎖的な依存関係を有する拡張機能42のプログラム31を、プログラム構成管理部61、拡張機能動作管理部62及び認証部63の各機能部により管理することで、本発明を実現している。
プログラム構成管理部61は、構成管理手段71を有し、拡張機能パッケージ30のインストール又はアンインストールを行い、インストールの際に、拡張機能42のプログラム31の依存関係を階層化し、階層化した情報である階層構造50の情報を階層構造情報テーブル80に格納することで、インストールされた拡張機能42のプログラム及び階層構造50の情報を管理する。
拡張機能動作管理部62は、動作管理手段72を有し、階層構造情報テーブル80が管理する階層構造50の情報に基づいて、拡張機能42の最上位の階層に位置するプログラムの起動と終了を行い、インストールされた拡張機能42のプログラム31の動作を管理する。
このように、画像処理装置10は、依存情報データ32に基づいて、依存関係を有するプログラムの依存関係を階層化し、階層化した情報である階層構造情報を階層構造情報テーブル80に格納し(階層構造情報を生成し)、階層構造50の情報に従って拡張機能42のプログラム31を動作させ、起動と終了を行うため、従来のように、全てのプログラムを1箇所の管理部が集中管理する必要がなく、拡張機能42のプログラム31とプログラムを管理する機能部との依存性が低く、拡張機能42の管理を容易にすることができる。
また、拡張機能42のプログラム管理方法が単純化したことにより、多くの機能が拡張された場合において、プログラム管理を行う処理の負荷を軽減することができる。
よって、機能の拡張性、機能を導入する際の柔軟性及び製品の性能品質が高いシステムを実現することができる。
また、拡張機能動作管理部62は、表示手段74を有し、インストールされた拡張機能42のプログラム31に関する階層構造50の情報を、画像処理装置10が有する表示部12の表示画面91に表示する。
認証部63は、認証手段73を有し、インストールされた拡張機能42のプログラム31に関する階層構造50の情報を閲覧(参照)できる利用者か否かを認証し、階層構造50の情報の閲覧範囲を、利用者毎に制限する。
このように、画像処理装置10は、インストールされた拡張機能42のプログラム31に関する階層構造50の情報を利用者毎に制限し、表示することができる。
実施例1に基づき本発明の説明を行ってきたが、上記実施例に挙げた階層構造情報テーブル80が管理する「プログラムデータパス名」は、階層構造50の情報のうちプログラムの格納先を示す一例であって、この要件に、本発明が限定されるものではない。
例えば、「プログラムデータパス名」の代わりに、プログラムが格納されているアドレス値でも良い。
また、上記実施例に挙げた新規拡張機能42を格納する補助記憶部13は、記憶装置の一例であって、この要件に、本発明が限定されるものではない。
例えば、補助記憶部13のハードディスクの代わりに、メモリカード等の不揮発性の半導体メモリでもよく、インストールする拡張機能42のパッケージ一式が格納できれば良い。
また、上記実施例に挙げた利用者IDとパスワード入力による認証方法は、利用者の認証方法の一例であって、この要件に、本発明が限定されるものではない。
例えば、画像処理装置10がICカードリーダーを備えている場合、ICカードによる利用者認証を行っても良い。その他、利用者の身体的な特徴(個人が特定可能な顔や指紋等)に基づいて利用者認証を行っても良い。
最後に、上記実施例1に挙げた形状に、その他の要素との組み合わせ等、ここで示した要件に、本発明が限定されるものではない。
これらの点に関しては、本発明の主旨をそこなわない範囲で変更することが可能であり、その応用形態に応じて適切に定めることができる。