以下、図面に基づいて本発明の実施の形態を説明する。図1は、本発明の実施の形態における画像形成装置のハードウェア構成の一例を示す図である。図1では、画像形成装置の具体例として、プリンタ、コピー、スキャナ、又は、ファクス等の複数の機能を一台の筐体において実現する複合機1のハードウェア構成が示されている。
複合機1のハードウェアとしては、コントローラ601と、オペレーションパネル602と、ファクシミリコントロールユニット(FCU)603と、撮像部604と、印刷部605が存在する。
コントローラ601は、CPU611、ASIC612、NB621、SB622、MEM−P631、MEM−C632、HDD(ハードディスクドライブ)633、メモリカードスロット634、NIC(ネットワークインタフェースコントローラ)641、USBデバイス642、IEEE1394デバイス643、セントロニクスデバイス644により構成される。
CPU611は、種々の情報処理用のICである。ASIC612は、種々の画像処理用のICである。NB621は、コントローラ601のノースブリッジである。SB622は、コントローラ601のサウスブリッジである。MEM−P631は、複合機1のシステムメモリである。MEM−C632は、複合機1のローカルメモリである。HDD633は、複合機1のストレージである。メモリカードスロット634は、メモリカード235をセットするためのスロットである。NIC641は、MACアドレスによるネットワーク通信用のコントローラである。USBデバイス642は、USB規格の接続端子を提供するためのデバイスである。IEEE1394デバイス643は、IEEE1394規格の接続端子を提供するためのデバイスである。セントロニクスデバイス644は、セントロニクス仕様の接続端子を提供するためのデバイスである。オペレーションパネル602は、オペレータが複合機1に入力を行うためのハードウェア(操作部)であると共に、オペレータが複合機1から出力を得るためのハードウェア(表示部)である。
図2は、本発明の実施の形態の画像形成装置におけるソフトウェア構成例を示す図である。図2に示されるように、複合機1におけるソフトウェアは、アプリケーションメカニズム10、サービスメカニズム20、デバイスメカニズム30、及び運用部40等のレイヤによって構成される。図2におけるレイヤの上下関係は、レイヤ間の呼び出し関係に基づいている。すなわち、基本的に図中において上にあるレイヤが下のレイヤを呼び出す。
アプリケーションメカニズム10は、複合機1が提供する機能又は情報(データ)等の資源をユーザに利用させるためのソフトウェア部品(プログラム)群が実装されているレイヤである。本実施の形態では、アプリケーションメカニズム10に実装される一部のソフトウェア部品を「フィルタ」と呼ぶ。これは、複合機1のジョブを実行する手アプリケーションが、「パイプ&フィルタ」と呼ばれるソフトウェアアーキテクチャに基づいて構築されることによる。
図3は、パイプ&フィルタアーキテクチャの概念を説明するための図である。図3において、「F」はフィルタを示し、「P」はパイプを示す。図中に示されるように、各フィルタはパイプによって接続される。フィルタは、入力されたデータに対して変換を施し、その結果を出力する。パイプは、例えば、両端のフィルタより参照可能な記録領域によって構成され、フィルタから出力されたデータを次のフィルタに伝達する。
すなわち、本実施の形態における複合機1では、ジョブをドキュメント(データ)に対する「変換」の連続として捉える。複合機1のジョブは、ドキュメントの入力、加工、及び、出力によって構成されるものとして一般化することができる。そこで「入力」、「加工」、及び、「出力」を、それぞれ「変換」として捉え、一つの「変換」を実現するソフトウェア部品がフィルタとして構成される。入力を実現するフィルタを特に「入力フィルタ」という。また、加工を実現するフィルタを特に「加工フィルタ」という。更に、出力を実現するフィルタを特に「出力フィルタ」という。基本的に、各フィルタは、単独では一つのジョブを実行することはできず、複数のフィルタが、図3に示されるように接続されることにより、一つのジョブを実行するアプリケーションが構築される。
なお、各フィルタは独立しており、フィルタ間における依存関係(呼び出し関係)は基本的に存在しない。従って、フィルタ単位で追加(インストール)又は削除(アンインストール)が可能とされている。
図2において、アプリケーションメカニズム10には、入力フィルタとして、読取フィルタ111、保管文書読出フィルタ112、メール受信フィルタ113、及びファクス受信フィルタ114等が示されている。
読取フィルタ111は、スキャナによる画像データの読み取りを制御し、読み取られた画像データを出力する。保管文書読出フィルタ112は、複合機1の記憶装置に保管されている文書データ(画像データ)を読み出し、読み出されたデータを出力する。メール受信フィルタ113は、電子メールを受信し、当該電子メールに含まれているデータを出力する。ファクス受信フィルタ114は、ファクス受信を制御し、受信された印刷データを出力する。
また、加工フィルタとしては、文書加工フィルタ121及び文書変換フィルタ122等が示されている。文書加工フィルタ121は、入力されたデータに所定の画像変換処理(集約、拡大、又は、縮小等)を施し、出力する。文書変換フィルタ122は、画像データのデータ形式を変換する。文書変換フィルタ122は、例えば、レンダリング処理、すなわち、入力されたPostScriptデータをビットマップデータに変換して出力する。
また、出力フィルタとしては、印刷フィルタ131、保管文書登録フィルタ132、メール送信フィルタ133、及びファクス送信フィルタ134等が示されている。
印刷フィルタ131は、入力されたデータをプロッタに出力(印刷)させる。保管文書登録フィルタ132は、入力されたデータを複合機1内の記憶装置、例えば、ハードディスク装置に保存する。メール送信フィルタ133は、入力されたデータを電子メールに添付して送信する。ファクス送信フィルタ134は、入力されたデータをファクス送信する。
例えば、複合機1における各種機能は、次のようなフィルタの組み合わせにより実現される。図4は、本実施の形態の複合機における各機能を実現するためのフィルタの組み合わせの例を示す図である。
例えば、コピー機能は、読取フィルタ111と印刷フィルタ131とを接続することにより実現される。読取フィルタ111によって原稿より読み取られた画像データを印刷フィルタ131によって印刷すればよいからである。なお、集約、拡大、又は縮小等の加工が要求された場合は、これらの加工を実現する文書加工フィルタ121が二つのフィルタの間に挿入される。
スキャンto email機能(スキャンした画像データを電子メールで転送する機能)は、読取フィルタ111とメール送信フィルタ133とを接続することによって実現される。ファクス送信機能は、読取フィルタ111とファクス送信フィルタ134とを接続することによって実現される。ファクス受信機能は、ファクス受信フィルタ114と印刷フィルタ131とを接続することによって実現される。ドキュメントボックス蓄積機能(スキャンした画像データを複合機1内に保存する機能)は、読取フィルタ111と保管文書登録フィルタ132とを接続することによって実現される。ドキュメントボックス印刷機能(複合機1内に保存されている文書データを印刷する機能)は、保管文書読出フィルタ102と印刷フィルタ131とを接続することにより実現される。
図4において、例えば、読取フィルタ111については5つの機能において利用されている。このように、各フィルタは複数の機能から利用可能であり、それによって各機能を実現するための開発工数を削減することができる。また、複合機1では各フィルタを部品としてアプリケーションを構築するため、機能のカスタマイズ又は拡張を簡便に行うことができる。すなわち、各フィルタ間には、機能的な依存関係はなく独立性が保たれているため、フィルタの新たな追加やフィルタの組み合わせの変更によって、新たなアプリケーションを容易に開発することができる。したがって、新たなアプリケーションの実装が要求された場合、当該アプリケーションの一部の処理について実装されていない場合は、当該一部の処理を実現するフィルタのみを開発し、インストールすればよい。よって、アプリケーションメカニズム10より下位のレイヤについて、新たなアプリケーションの実装に応じて発生する修正の頻度を低下させることができ、安定したプラットフォームを提供することができる。
アプリケーションメカニズム10には、また、「アクティビティ」と呼ばれるソフトウェア部品が存在する。アクティビティは、複数のフィルタをどの順番で接続するかを管理し、その順番でフィルタを実行させることによりジョブを実行するソフトウェア部品であり、一つのアクティビティによって一つのアプリケーションが実現される。
すなわち、フィルタはそれぞれ独立性が高いため、フィルタの組み合わせ(アプリケーション)を動的に構築することが可能である。具体的には、ジョブの実行要求を受け付けるたびに、利用するフィルタと、フィルタの実行順序、及びそれぞれのフィルタの動作条件等をオペレーションパネル602を介してユーザに設定させることにより、ユーザ所望の機能を実現するようにしてもよい。
しかし、コピー機能のように頻繁に利用する機能については、毎回フィルタを選択することにより実行指示を行うのはユーザにとって煩雑である。かかる課題を解決するのがアクティビティである。すなわち、フィルタの組み合わせをアクティビティとして予め定義しておけば、ユーザは、アクティビティを単位として実行対象を選択することができる。選択されたアクティビティは、当該アクティビティに定義された組み合わせに係る各フィルタを自動的に実行する。したがって、アクティビティによって、操作の煩雑さを解消することができるとともに、アプリケーション単位で実行対象を選択していた従来のユーザインタフェースと同様の操作感を提供することができる。
図中には、アクティビティの一例として、コピーアクティビティ101、送信アクティビティ102、及びファクスアクティビティ103等が含まれる。例えば、コピーアクティビティ101は、読取フィルタ311と、文書加工フィルタ321と、印刷フィルタ331との組み合わせにより、コピー機能(コピーアプリケーション)を実現する。
なお、基本的に各アクティビティは独立しており、アクティビティ間における依存関係(呼び出し関係)は基本的に存在しない。したがって、アクティビティ単位で追加(インストール)又は削除(アンインストール)が可能である。よって、図2に示されているアクティビティ以外にも、必要に応じて各種のフィルタの組み合わせによるアクティビティを作成し、インストールすることができる。
フィルタ及びアクティビティについて更に詳しく説明する。図5は、フィルタの構成要素を説明するための図である。図5に示されるように、各フィルタは、フィルタ設定用UI、フィルタロジック、フィルタ固有下位サービス、及び永続記憶領域情報等より構成される。このうち、フィルタ設定用UI、フィルタ固有下位サービス、及び永続記憶領域情報については、フィルタによって必ずしも構成要素に含まれない。
フィルタ設定用UIは、フィルタの動作条件等を設定させるための画面をオペレーションパネル602等に表示させるプログラムである。すなわち、フィルタごとに動作条件が設定される。例えば、読取フィルタ111であれば、フィルタ設定用UIは、解像度、濃度、画像種別等を設定させる画面が相当する。なお、オペレーションパネル602が、HTMLデータや、スクリプトに基づいて表示制御を行うことが可能であれば、フィルタ設定用UIは、HTMLデータやスクリプトであってもよい。
フィルタロジックは、フィルタの機能を実現するためロジックが実装されたプログラムである。すなわち、フィルタの構成要素としてのフィルタ固有下位サービスや、デバイスサービス層40又はデバイス制御層50等を利用して、フィルタ設定用UIを介して設定された動作条件に応じてフィルタの機能を実現する。例えば、読取フィルタ111であれば、スキャナによる原稿の読み取り制御のためのロジックが相当する。
フィルタ固有下位サービスは、フィルタロジックを実現するために必要な下位機能(ライブラリ)である。
永続記憶領域情報は、フィルタに対する設定情報(例えば、動作条件のデフォルト値)等、不揮発メモリに保存する必要があるデータのスキーマ定義が相当する。当該スキーマ定義は、フィルタのインストール時にデータ管理部26に登録される。
図6は、アクティビティの構成要素を説明するための図である。図6に示されるように、アクティビティは、アクティビティUI、アクティビティロジック、及び永続記憶領域情報等より構成される。
アクティビティUIは、アクティビティに関する画面(例えば、アクティビティの動作条件等を設定させるための設定画面)をオペレーションパネル602等に表示させるための情報又はプログラムである。
アクティビティロジックは、アクティビティの処理内容が実装されたプログラムである。基本的に、アクティビティロジックには、フィルタの組み合わせに関するロジック(例えば、フィルタの実行順、複数のフィルタに跨る設定、フィルタの接続変更、エラー処理等)が実装されている。
永続記憶領域情報は、アクティビティに対する設定情報(例えば、動作条件のデフォルト値)等、不揮発メモリに保存する必要があるデータのスキーマ定義が相当する。当該スキーマ定義は、アクティビティのインストール時にデータ管理部26に登録される。
図2に戻る。サービスメカニズム20は、アクティビティ又はフィルタ等が利用するプリミティブなサービスが実装され、アプリケーションが機種等のハード的な仕様に対して、非依存となるための仕組みを提供するレイヤである。図中において、サービスメカニズム20には、リポジトリサービス21、セッション管理部22、リクエスト管理部23、通信部24、UI部25、データ管理部26、及びリクエスト定義部27等が含まれる。
リポジトリサービス21は、ユーザ情報等、機器内外に保存される各種情報の基本操作(生成、参照、更新、削除)を提供する。セッション管理部22は、ユーザの認証状態(ログイン状態)を管理する。例えば、セッション管理部22は、ユーザによって入力される認証情報(ユーザ名及びパスワード等)に基づいてユーザ認証を行い、認証に成功した場合にユーザの正当性を示す電子データ(以下、「チケット」という。)を発行する。リクエスト管理部23は、ジョブの管理を行う。通信部24は、ネットワーク通信の制御を行う。UI部25は、オペレーションパネル602に表示される操作画面を介して入力されるユーザ要求を解釈し、ユーザ要求に応じた処理制御をアプリケーションメカニズム10又はサービスメカニズム20等に委譲する。データ管理部26は、リポジトリサービス21の管理対象となる情報について、保存方法、及び保存場所等を規定する。リクエスト定義部27は、マクロの生成及びロード(呼び出し)等を行う。ここで、「マクロ」とは、資源に対する利用条件を含む情報をいい、例えば、過去に実行されたジョブにおいて、フィルタの組み合わせや、アクティビティ又はフィルタに対して設定された動作条件(利用条件)等を保持する。マクロによれば、ユーザは改めて動作条件やフィルタの組み合わせ等を設定することなく、過去と同じ動作条件でアクティビティ、フィルタ等を再利用することができる。
デバイスメカニズム30は、複合機1が有するデバイス毎に設けられたデバイスを制御する手段を有する。
運用部40は、システムの運用管理に関するソフトウェア部品が実装される部分であり、アプリケーションメカニズム10、サービスメカニズム20、及びデバイスメカニズム30より共通に利用される。図中において、運用部40には、プラグイン管理部41及びアクセス制御部42が含まれている。プラグイン管理部41は、アクティビティ又はフィルタ等、自由に抜き差し(インストール・アンインストール)可能なソフトウェア部品(プラグイン)の情報を管理する。アクセス制御部42は、アクティビティ、フィルタ、マクロ、又はリポジトリサービス21によって管理される情報等に対して、利用権限情報に基づいて、ユーザ、ロールごとにアクセス(利用)の許否(利用権限の有無)を判断する。ここで、利用権限情報とは、ユーザごとに、アクティビティ、フィルタ、及び他の資源ご等に対する利用権限の有無が記録(定義)された情報をいい、データ管理部26によって管理される。
次にマクロの詳細について説明する。図7は、マクロ情報の構成例を示す図である。図7に示されるように、マクロ情報50は、マクロID、タイトル、コメント、アイコン、作成者名、作成者チケット、ユーザID、動作条件情報51、公開設定、公開アプリ、及び公開先情報52等より構成される。
マクロIDは、各マクロを一意に識別するためのIDである。タイトルは、ユーザによって付されるマクロの名前である。コメントは、ユーザによって付されるマクロに関するコメントである。アイコンは、マクロを選択させるための画面において当該マクロに対応するボタン等に表示されるアイコンである。作成者名は、マクロの作成者(登録者)のユーザ名である。作成者チケットは、作成者のチケットである。ユーザIDは、作成者のユーザIDである。
動作条件情報51は、マクロによって実行対象とされる(マクロに登録されている)アクティビティ、フィルタごとの動作条件によって構成される。動作条件情報51には、また、マクロ識別子が含まれている。マクロ識別子は、マクロに基づいてアクティビティ、フィルタ等が実行される際に、その実行がマクロを介して行われることを示すために用いられる識別子である。
公開設定は、マクロを公開するか否かを示すと共に、マクロを実行する際の利用権限(アクティビティ、フィルタ等、複合機1の資源に対する利用権限)をマクロの作成者の利用権限に制限するか否かを示す情報である。マクロの公開とは、マクロの作成者以外に、当該マクロの利用を許可することをいう。すなわち、マクロは、原則として作成者のみが利用権限を有するが、公開された場合に限って他のユーザに利用可能となる。マクロの公開の形態には、「完全公開」と「権限内公開」とがある。完全公開とは、マクロを実行する際の利用権限が制限されない形態である。権限内公開とは、マクロを実行する際の利用権限がマクロの作成者の利用権限に制限される形態である。但し、マクロは、作成者によって実際に実行されたジョブにおいて利用されたアクティビティ、フィルタ、及びその他の資源に関して登録されるものであるため、権限内公開によって、マクロが実行できないという不都合が生じることは(マクロの登録後に作成者の利用権限が変更された場合は別として)基本的にない。
マクロに関するこのような利用権限の扱いからも明らかなように、マクロが公開されたユーザは、マクロを介して利用されるアクティビティ、フィルタ、及びその他の資源等に関して、自分自身が利用権限を有していなくてもマクロを介した実行であれば利用可能とされる。
なお、権限内公開によれば、マクロ実行時のセキュリティをより高めることができる。例えば、マクロ情報が不正に改ざんされ、マクロ作成者に利用権限の無いアクティビティ等が利用対象とされた場合に、マクロを介して当該アクティビティが利用されることを防止することができる。
マクロの公開の範囲は、公開アプリや公開先情報52によっても制限されうる。公開アプリは、マクロに登録されているアクティビティやフィルタのうち、公開対象とするアクティビティ又はフィルタである。すなわち、マクロに登録されているアクティビティ等のうち、一部のアクティビティ等のみを公開することができる。公開先情報52は、マクロが公開される(マクロの利用が許可される)ユーザ又はグループの一覧情報である。
以下、複合機1において、マクロに関して実行される処理手順について説明する。図8は、マクロの登録処理を説明するためのフローチャートである。また、図9は、マクロの登録処理の様子を示す図である。図9において図8と同一ステップには、同一ステップ番号を付している。
ステップS101において、オペレーションパネル602を介したユーザによる操作によって、実行対象とするアクティビティ又はフィルタの組み合わせが選択されると共に、それぞれのアクティビティ、フィルタに対して動作条件が設定され、ジョブの実行の開始が指示される。ここで、ユーザによって設定された動作条件は、各アクティビティのアクティビティロジック(図6参照)又は各フィルタのフィルタロジック(図5参照)に保持される。
ジョブの実行が完了すると、UI部25は、実行されたジョブに関する設定をマクロとして登録するか否かを選択させるための画面をオペレーションパネル602に表示させる(S102)。当該画面を介して、ユーザによってマクロの登録が指示され、また、マクロのタイトル、コメントの入力、アイコンの選択等が行われるとUI部25は、マクロの登録をリクエスト定義部27に指示する(S103)。
続いて、リクエスト定義部27は、ユーザによって入力された情報(マクロのタイトル、コメント、アイコンの識別情報)とカレントユーザ(現在複合機1を操作しているユーザ)のユーザ名、チケット、及びユーザIDとを伴ってデータ管理部26に対してマクロ情報の生成を要求する(S104)。なお、図8の処理の前提として、カレントユーザはセッション管理部22によって認証されている。したがって、カレントユーザのユーザ名、チケット、及びユーザIDはセッション管理部22に問い合わせることにより入手される。
データ管理部26は、当該要求に応じ、マクロ情報を記憶装置に登録し、当該マクロ情報に対して割り当てられたマクロIDをリクエスト定義部27に返却する。なお、カレントユーザのユーザ名、チケット、及びユーザIDは、作成者名、作成者チケット、ユーザIDとして登録される。
続いて、リクエスト定義部27は、ジョブの実行に利用された各アクティビティ、各フィルタに対してマクロIDを通知し、当該マクロIDに係るマクロ情報へのそれぞれの動作条件の登録を指示する(S105)。続いて、動作条件の登録指示を受けたアクティビティは、アクティビティロジックに保持されている動作条件をマクロIDによって識別されるマクロ情報に登録する。また、動作条件の登録指示を受けたフィルタは、フィルタロジックに保持されている動作条件をマクロIDによって識別されるマクロ情報に登録する(S106)。
続いて、リクエスト定義部27は、ステップS106までの処理において登録されたマクロ情報をマクロIDに基づいてデータ管理部26より取得する(S107)。また、リクエスト定義部27は、複合機1に関するユーザ情報(ユーザの一覧情報)をリポジトリサービス21より取得する(S108)。続いて、リクエスト定義部27は、ステップS107及びS108において取得された情報に基づいて、マクロの公開情報を設定させるための画面(以下、「マクロ公開情報設定画面」という。)のオペレーションパネル602への表示をUI部25に実行させる(S109)。
図10は、マクロ公開情報設定画面の表示例を示す図である。図10において、マクロ公開情報設定画面500は、完全公開ボタン511、権限内公開ボタン512、非公開ボタン513、公開先設定領域520、公開アプリ設定領域530、及び登録ボタン540等より構成される。
完全公開ボタン511、権限内公開ボタン512及び非公開ボタン513は、マクロを完全公開とするか、権限内公開とするか、又は非公開とするかを選択させるためのボタンである。完全公開ボタン511又は権限内公開ボタン512が押下されると、マクロは公開対象とされ、公開先設定領域520及び公開アプリ設定領域530が入力可能となる。
公開先設定領域520は、マクロの公開先を選択させるための領域であり、全利用者を公開先として選択させるためのボタン521と、ユーザ又はグループごとに公開先を選択させるためのボタン522〜527が配置されている。なお、ボタン522〜527は、ステップS108において取得されたユーザ情報に基づいて表示される。
公開アプリ設定領域530は、公開アプリを設定させるための領域であり、実行されたジョブにおいて利用されたアクティビティごとに、公開アプリとして選択せるためのボタン531及び532が配置されている。
マクロ公開情報設定画面500において、マクロの公開情報が設定され登録ボタン540が押下されると、リクエスト定義部27は、マクロIDに基づいて、設定された公開情報をマクロ情報に登録する(S110)。
図11は、登録されたマクロ情報の例を示す図である。図11に示されるマクロ情報50aでは、動作条件情報51aとして、アクティビティA、フィルタA、アクティビティB、及びフィルタBの動作条件が設定されている。すなわち、マクロ情報50aに係るマクロは、これらのアクティビティ又はフィルタによって構成されるアプリケーションを再利用させるためのものである。公開設定は、「権限内公開」とされている。また、公開アプリは、アクティビティAに制限されている。また、公開先情報52aによって、公開先はユーザA、ユーザD、及びグループAに制限されている。
続いて、マクロを実行する際の処理手順について説明する。図12は、マクロ実行時の処理手順を説明するためのシーケンス図である。図12の処理の前提として、カレントユーザは、セッション管理部22によって認証されている。
例えば、オペレーションパネル602に表示されたマクロ選択画面において、ユーザによって実行対象とされるマクロが選択され、実行の開始が指示(スタートキーが押下)されると、UI部25は、選択されたマクロ(以下、「カレントマクロ」という。)のマクロIDを伴って、カレントマクロの実行をリクエスト管理部23に要求する(S201)。なお、マクロ選択画面は、UI部25が、データ管理部26に登録されているマクロ情報の一覧に基づいて表示させる。
続いて、リクエスト管理部23は、カレントマクロの実行要求を行ったユーザ(カレントユーザ)のチケットをセッション管理部22より取得する(S202、S203)。続いて、リクエスト管理部23は、カレントマクロのマクロIDと、カレントユーザのチケットとを伴って、カレントマクロの実行をリクエスト定義部27に要求する(S204)。
リクエスト定義部27は、マクロIDに基づいて、カレントマクロのマクロ情報をデータ管理部26より取得する(S205、S206)。リクエスト定義部27は、取得されたマクロ情報の動作条件情報51を解析し、カレントマクロにおいて利用される(実行対象とされる)アクティビティ、フィルタ、及びそれぞれの動作条件を判定する。解析結果に基づいて、リクエスト定義部27は、各アクティビティ、フィルタに対して動作条件情報51に登録されている動作条件を設定する(S207)。なお、図12では、コピーアクティビティ101が、カレントマクロより利用されるアクティビティとされている。この場合、厳密には、コピーアクティビティ101によって利用される各フィルタについても、動作条件の設定は行われる。
続いて、リクエスト定義部27は、動作条件情報51に基づいて、カレントマクロより利用されるアクティビティ(コピーアクティビティ101)に対してジョブの実行を要求する(S208)。この際、リクエスト定義部27は、マクロ識別子をパラメータとしてコピーアクティビティ101に引き渡す。
続いて、コピーアクティビティ101は、カレントユーザによるコピーアクティビティ101の利用権限の有無をアクセス制御部42に問い合わせる(S209)。この際、コピーアクティビティ101は、マクロ識別子をパラメータとしてアクセス制御部42に引き渡す。
続いて、アクセス制御部42は、コピーアクティビティ101がマクロより実行されているか否かをマクロ識別子の有無に基づいて判定する(S210)。すなわち、各アクティビティ及びフィルタは、マクロからの実行か否かを問わず、実行が要求されたときに常に利用権限の問い合わせをアクセス制御部42に行うが、マクロから実行される場合は、上述のようにマクロ識別子がアクセス制御部42に引き渡される。したがって、アクセス制御部42は、マクロ識別子がパラメータとして引き渡されている場合は、マクロからの実行であると判定する。
マクロからの実行である場合、アクセス制御部42は、リクエスト定義部27よりカレントマクロのマクロ情報を取得し(S211)、当該マクロ情報における公開情報を確認する(S212)。具体的には、マクロ情報の公開設定を参照し、完全公開、権限内公開、又は非公開であるかに応じて処理を分岐させる。
完全公開である場合、アクセス制御部42は、マクロ情報の公開先情報52に設定されている公開先にカレントユーザが含まれているか、また、コピーアクティビティ101が公開アプリに含まれているかを判定し(S221)、その判定結果に応じて、利用権限の有無をコピーアクティビティ101に応答する(S222)。すなわち、カレントユーザが公開先に含まれており、かつ、コピーアクティビティ101が公開アプリに含まれていれば、利用権限は有る旨が応答される。また、カレントユーザが公開先に含まれていないか、又は、コピーアクティビティ101が公開アプリに含まれていなければ、利用権限は無い旨が応答される。
このように、完全公開の場合は、カレントユーザによるコピーアクティビティ101に対する利用権限は判断されることなく、マクロがカレントユーザに公開されているか否かに応じて、コピーアクティビティ101に対する利用権限がカレントユーザに与えられる。
一方、権限内公開である場合、アクセス制御部42は、マクロ情報の公開先情報52に設定されている公開先にカレントユーザが含まれているか、また、コピーアクティビティ101が公開アプリに含まれているかを判定する(S231)。カレントユーザが公開先に含まれており、かつ、コピーアクティビティ101が公開アプリに含まれている場合、アクセス制御部42は、カレントユーザのチケットを破棄し(S232)、マクロ情報に含まれているカレントマクロの作成者のチケットに基づいて当該作成者の利用権限情報の取得をリポジトリサービス21に要求する(S233)。リポジトリサービス21は、データ管理部26より当該作成者の利用権限情報を取得し(S234、S235)、取得された利用権限情報をアクセス制御部42に出力する(S236)。
アクセス制御部42は、当該利用権限情報に基づいて、カレントマクロの作成者によるコピーアクティビティ101に対する利用権限の有無を判定し(S237)、その判定結果をコピーアクティビティ101に応答する(S238)。なお、ステップS237において、カレントユーザが公開先に含まれていないか、又はコピーアクティビティ101が公開アプリに含まれていないと判定された場合、アクセス制御部42は、利用権限が無い旨をコピーアクティビティ101に応答する。
このように、権限内公開の場合、作成者の利用権限及びマクロがカレントユーザに公開されているか否かに応じて、コピーアクティビティ101に対する利用権限がカレントユーザに与えられる。
更に、マクロが非公開の場合、アクセス制御部42は、マクロ情報の作成者名又はユーザIDと、カレントユーザのユーザ名又はユーザIDとを照合することにより、カレントユーザがカレントマクロの作成者であるか否かを判定し(S241)、その判定結果に応じて利用権限の有無をコピーアクティビティ101に応答する(S242)。すなわち、カレントユーザが作成者であれば、利用権限は有る旨が応答され、作成者でなければ、利用権限は無い旨が応答される。
このように、マクロが非公開の場合、マクロの作成者に対してのみコピーアクティビティ101に対する利用権限が与えられる。なお、マクロが非公開の場合は、カレントユーザが作成者以外の場合、マクロ選択画面に当該マクロを選択候補として表示させないようにしてもよい。
なお、上記では、便宜上コピーアクティビティ101のみに対する利用権限の判定について説明したが、コピーアクティビティ101より利用される各フィルタ等についても、同様にステップS209以降の処理が実行される。
上述したように、本実施の形態における複合機101によれば、本来であれば利用権限の無い資源についても、マクロに定義された利用条件(動作条件)の範囲内で利用が許可される。したがって、例えば、業務の遂行上、所定の条件に限って利用を許可したい場合等、当該所定の条件に係るマクロを定義することにより、業務を円滑に進めることができる。
また、マクロは、ユーザ単位で公開する(利用を許可する)ことができるため、信頼できるユーザのみにマクロを利用させることができる。したがって、マクロを介して利用権限のない資源が利用可能になることによるセキュリティの劣化を抑制することができる。
また、複数の資源を利用するマクロについては、公開の範囲を一部の資源に限定することができるため、マクロを介した資源の利用について、適切にセキュリティを確保することができる。
次に、公開されたマクロの利用量(利用回数)に制限(上限)を設けた例を第二の実施の形態として説明する。なお、第二の実施の形態では第一の実施の形態と異なる点について説明する。したがって、特に言及しない点については第一の実施の形態と同様でよい。
図13は、第二の実施の形態の画像形成装置におけるソフトウェア構成例を示す図である。図13中、図2と同一部分には同一符号を付し、その説明は省略する。同図の複合機1の運用部40には履歴管理部43が追加されている。
履歴管理部43は、複合機1における各種の動作の履歴情報を管理する。本実施の形態において履歴管理部43は、マクロの利用に関するカウンタの値をHDD633等の記憶装置を用いて管理する。マクロの利用に関するカウンタとしては、マクロ単位(マクロ毎に一つ)のカウンタ、各マクロに対するユーザ・グループごとのカウンタ、各マクロのアプリケーション(アクティビティ)ごとのカウンタがある。これらのカウンタの更新は、マクロ実行時(図12)におけるリクエスト定義部27からの要求に応じて行われる。すなわち、ステップS208による実行要求に応じて、アクティビティ(コピーアクティビティ101)が正常に実行された場合、リクエスト定義部27は、現在実行中のマクロIDと当該アクティビティの識別名とを履歴管理部43に通知する。履歴管理部43は、通知されたマクロIDに係る当該アクティビティに対するカウンタをインクリメント(1つカウントアップ)する。
また、公開された範囲でマクロの実行が成功した場合、リクエスト定義部27は、当該マクロのマクロIDとカレントユーザのユーザID及びグループID(グループの識別子)を履歴管理部43に通知する。履歴管理部43は、通知されたマクロIDに係るマクロ単位のカウンタをインクリメントすると共に、当該マクロに係る当該ユーザのカウンタ及び当該グループのカウンタをインクリメントする。
マクロの利用量の制限は、図8のステップS109において表示されるマクロ公開情報設定画面において設定可能とされる。図14は、第二の実施の形態のマクロ公開情報設定画面の表示例を示す図である。図14中、図10と同一部分には同一符号を付し、その説明は省略する。
図14のマクロ公開情報設定画面500aには、利用回数上限設定単位選択領域550が追加されている。利用回数上限設定単位選択領域550は、マクロの利用回数の上限値の設定単位を選択させるための領域である。本実施の形態では、マクロ単位、ユーザ・グループ単位、又はアプリケーション単位のいずれかを、マクロの利用回数の上限値の設定単位として択一的に選択することができる。
設定単位としてマクロが選択された場合、マクロの利用回数の上限値は、当該マクロ(マクロ公開情報設定画面500aにおいて公開情報の設定対象とされているマクロ)に対して一つ設定される。したがって、複数のユーザによって当該マクロが利用される場合、当該複数のユーザの合計利用回数と上限値との比較が行われる。
設定単位としてユーザ・グループが選択された場合、上限値は、ユーザ又はグループごとに設定される。したがって、複数のユーザによって当該マクロが利用される場合、ユーザ又はグループごとに利用回数と上限値との比較が行われる。
設定単位としてアプリケーションが選択された場合、上限値は、当該マクロに属するアクティビティごとに設定される。したがって、複数のユーザによって当該マクロが利用される場合、アクティビティごとに複数のユーザによる合計利用回数(マクロを介した利用回数)と上限値との比較が行われる。
なお、いずれの場合も、マクロの作成者に対して利用回数の制限は課せられない。当該制限はマクロの公開先のユーザ又はグループに対して適用される。
利用回数上限設定単位選択領域550においていずれかの設定単位がラジオボタンを介して選択された後、登録ボタン540が押下されると、UI部25は、利用回数上限設定画面をオペレーションパネル602に表示させる。
図15は、第二の実施の形態における利用回数上限設定画面の表示例を示す図である。
同図において、利用回数上限設定画面560aは、設定単位としてマクロが選択された場合に表示される画面である。当該画面ではマクロに対する利用回数の上限値の入力が可能とされている。
また、利用回数上限設定画面560bは、設定単位としてユーザ・グループが選択された場合に表示される画面である。当該画面ではマクロ公開情報設定画面500aの公開先設定領域520において公開先として選択されたユーザ又はグループごとにマクロに対する利用回数の上限値の入力が可能とされている。上限値が入力されないユーザ又はグループについては、上限値は設定されない(すなわち、利用回数は制限されない。)。
また、利用回数上限設定画面560bは、設定単位としてアプリケーションが選択された場合に表示される画面である。当該画面ではマクロ公開情報設定画面500aの公開アプリ設定領域530において公開アプリとして選択されたアクティビティごとに利用回数の上限値の入力が可能とされている。上限値が入力されないアクティビティについては、上限値は設定されない。
いずれかの利用回数上限設定画面560において上限値が入力され、OKボタンが押下されると、ステップS110に進み(図8)、リクエスト定義部27は、マクロIDに基づいて、設定された公開情報をマクロ情報に登録する。
図16は、第二の実施の形態において登録されたマクロ情報の例を示す図である。図16の登録内容は図11の登録内容とほぼ同様である。但し、公開設定、公開アプリ、公開先情報52aの登録内容が異なる。
すなわち、利用回数の上限値の設定単位としてマクロが選択され、利用回数上限設定画面560aにおいて上限値が入力された場合、公開設定に当該上限値が登録される。図中では()内の数値(「20」)が当該上限値を示す。
また、利用回数の上限値の設定単位としてアプリケーションが選択され、利用回数上限設定画面560cにおいて上限値が入力された場合、公開アプリにアクティビティごとの上限値が登録される。図中では、()内の数値(「15」)が当該上限値を示す。
また、利用回数の上限値の設定単位としてユーザ・グループが選択され、利用回数上限設定画面560bにおいて上限値が入力された場合、公開先情報52aにユーザ又はグループごとの上限値が登録される。同様に、()内の数値が各ユーザ又はグループに対する上限値を示す。
利用回数のチェック(利用回数と上限値との比較)は、図12のステップS221及びS237の後(すなわち、公開先にカレントユーザが含まれており、かつ、マクロが利用するアクティビティ(図12ではコピーアクティビティ101)が公開アプリに含まれていることが判定された後)に実行される。
図17は、マクロに関する利用回数のチェック処理を説明するためのフローチャートである。
ステップS301において、アクセス制御部42は、カレントユーザのチケットとカレントマクロのマクロ情報50a(図16)の作成者とに基づいて、カレントユーザがカレントマクロの作成者であるか否かを判定する。なお、第二の実施の形態では、ステップS232においてカレントユーザのチケットの破棄は行わない。カレントユーザがカレントマクロの作成者である場合は(S301でNo)、利用回数によるチェックは行われない。カレントユーザがカレントマクロの作成者である場合(S301でYes)、アクセス制御部42は、マクロ情報50aに基づいて利用回数の上限値の設定単位を判定する(S302)。
マクロ情報50aの公開設定に上限値が登録されている場合、すなわち、上限値の設定単位がマクロである場合(S302で「マクロ」)、アクセス制御部42は、当該上限値を取得する(S303)。続いて、アクセス制御部42は、履歴管理部43よりカレントマクロのマクロ単位のカウンタの値を取得し、当該値を上限値に対する比較値とする(S304)。
一方、マクロ情報50aの公開先情報52aに上限値が登録されている場合、すなわち、上限値の設定単位がユーザ又はグループである場合(S302で「ユーザ・グループ」)、アクセス制御部42は、公開先情報52aにおいてカレントユーザに対して上限値が設定されているか否かを判定する(S305)。カレントユーザに対して上限値が設定されている場合(S305でYes)、アクセス制御部42は当該上限値を取得する(S306)。続いて、アクセス制御部42は、履歴管理部43よりカレントマクロに係るカレントユーザのカウンタの値を取得し、当該値を上限値に対する比較値とする(S307)。カレントユーザに対して上限値が設定されていない場合(S305でNo)、アクセス制御部42は、公開先情報52aにおいてカレントユーザが属するグループ(カレントグループ)に対して上限値が設定されているか否かを判定する(S308)。なお、カレントグループは、例えば、複合機1において管理されるユーザ情報におけるユーザとグループとの対応情報に基づいて判定される。カレントグループに対して上限値が設定されている場合(S308でYes)、アクセス制御部42は当該上限値を取得する(S309)。続いて、クセス制御部42は、履歴管理部43よりカレントマクロに係るカレントグループのカウンタの値を取得し、当該値を上限値に対する比較値とする(S310)。
更に、マクロ情報50aの公開アプリに上限値が登録されている場合、すなわち、上限値の設定単位がアプリケーションである場合(S302で「アプリケーション」)、アクセス制御部42は、マクロ情報50aの公開アプリにおいてカレントアプリ(権限判断(図12:S209)の対象とされているアプリケーション(アクティビティ))に上限値が設定されているか否かを判定する(S311)。カレントアプリに上限値が設定されている場合(S311でYes)、アクセス制御部42は当該上限値を取得する(S312)。続いて、クセス制御部42は、履歴管理部43よりカレントマクロに係るカレントアプリのカウンタの値を取得し、当該値を上限値に対する比較値とする(S313)。
ステップS304、S310、又はS313に続いて、アクセス制御部42は、比較値と上限値とを比較する(S314)。比較値が上限値を超える場合(S314でYes)、アクセス制御部42は、カレントマクロの利用を制限すべきと判断する(S315)。一方、比較値が上限値以下である場合(S314でNo)、カレントグループに上限値が設定されていない場合(S308でNo)、又はカレントアプリに上限値が設定されていない場合(S311でNo)、アクセス制御部42は、カレントマクロの利用の制限は必要ないと判定する。
カレントマクロの利用を制限すべきと判断した場合、アクセス制御部42は、図12のステップS222又はS237において、利用権限はない旨をカレントアプリ(コピーアクティビティ101)に応答する。したがって、この場合、カレントアプリは実行されない。また、マクロに属する各アプリが実行されない場合は、マクロ全体の処理が実行されない。
但し、利用回数が上限値を超えた場合であっても、処理の実行を中止せずに異なる制限(例えば、課金等)をカレントユーザに課すようにしてもよい。例えば、アクセス制御部42は、課金を行う旨のメッセージの表示をUI部25に実行させる。当該メッセージに対してユーザより了承の旨の入力が行われたら、処理を実行する。なお、当該メッセージは、カレントユーザのメールアドレスに対してメールとして送信するようにしてもよい。メールによって送信する場合、次回から課金が行われることを通知するようにするとよい。
上述したように、第二の実施の形態によれば、マクロに関する利用回数によってマクロの利用を制限することができる。したがって、より柔軟にマクロの利用を制限することができる。
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。