(57)【特許請求の範囲】
【請求項１】
画像の印刷処理と、画像の読取処理と、の少なくとも一方を含む画像処理を実行する画像処理実行部と、
ユーザの指示に基づいて特定の処理を実行する複数個のアプリケーションを含む複数個のソフトウェアコンポーネントであって、前記複数個のアプリケーションは、前記画像処理実行部に前記画像処理を実行させる１個以上の画像処理アプリケーションを含む、前記複数個のソフトウェアコンポーネントと、
データベースに格納され、前記複数個のソフトウェアコンポーネントが利用するデータに対するアクセスを管理するアクセス管理部と、
を備え、
前記複数個のソフトウェアコンポーネントのそれぞれは、前記複数個のアプリケーションのいずれかに対するユーザの指示に応じて前記データベースに格納されている特定のデータにアクセスすべき際に、特定のユーザを示すユーザ識別情報と、前記特定のデータを含む特定のデータテーブルを示すテーブル識別情報と、前記特定のデータを示すデータ識別情報と、を含む第１種のクエリを、前記アクセス管理部に供給し、
前記アクセス管理部は、
前記第１種のクエリを取得した場合に、前記第１種のクエリに含まれる前記ユーザ識別情報と前記テーブル識別情報とを用いて、複数のユーザのデータに対するアクセス権限を定義する権限テーブルを参照することによって、前記データ識別情報によって示される前記特定のデータに対するアクセス可否を判断し、
前記アクセス可否の判断結果に基づく情報を、前記複数個のソフトウェアコンポーネントのうち、前記第１種のクエリの供給元のコンポーネントに供給する、画像処理装置。
【請求項２】
請求項１に記載の画像処理装置であって、
前記データベースは、管理ユーザによるアクセスが許容され、前記管理ユーザとは異なるユーザによるアクセスが許容されない第１種のデータテーブルと、前記管理ユーザとは異なるユーザによるアクセスが許容され得る第２種のデータテーブルと、を含み、
前記第１種のデータテーブルは、前記権限テーブルを含み、
前記権限テーブルは、前記第２種のデータテーブルに記録されたデータに対するアクセス権限を定義する、画像処理装置。
【請求項３】
請求項２に記載の画像処理装置であって、
前記複数個のソフトウェアコンポーネントのうちの第１のコンポーネントは、前記管理ユーザとは異なるユーザの指示に応じて、前記第２種のデータテーブルの生成を要求する第２種のクエリであって、前記ユーザ識別情報を含む、前記第２種のクエリを、前記アクセス管理部に供給し、
前記アクセス管理部は、
前記第２種のクエリに基づいて、前記データベース内に、前記第２種のデータテーブルを生成し、
前記第２種のクエリに基づいて、前記権限テーブルに、生成された前記第２種のデータテーブルに対するアクセス権限を定義する情報を記録する、画像処理装置。
【請求項４】
請求項１から３のいずれかに記載の画像処理装置であって、
前記第１種のクエリは、構造化問い合わせ言語（ＳＱＬ）に従って記述されたＳＱＬ文であって、前記テーブル識別情報と、前記データ識別情報と、を含む、前記ＳＱＬ文と、前記ＳＱＬ文に付加された前記ユーザ識別情報と、を含む、画像処理装置。
【請求項５】
請求項１から４のいずれかに記載の画像処理装置であって、
前記権限テーブルは、前記特定のデータテーブルを含む１個以上のデータテーブルのそれぞれについて、データテーブルごとに定義される第１種のアクセス権限が定義されることを示す情報と、データテーブルに含まれるデータごとに定義される第２種のアクセス権限が定義されることを示す情報と、のいずれかを含む、画像処理装置。
【請求項６】
請求項５のいずれかに記載の画像処理装置であって、
前記複数個のソフトウェアコンポーネントのうちの第２のコンポーネントは、データテーブルの生成を要求する第３種のクエリであって、前記ユーザ識別情報を含む、前記第３種のクエリを、前記アクセス管理部に供給し、
前記第３種のクエリは、生成する前記データテーブルについて、前記第１種のアクセス権限が定義されることを示す情報と、前記第２種のアクセス権限が定義されることを示す情報と、のいずれかを含み、
前記第３種のクエリは、前記第１種のアクセス権限が定義されることを示す情報を含む場合には、さらに、データテーブルへのアクセス権限を定義する情報を含み、
前記アクセス管理部は、
前記第３種のクエリに基づいて、前記データベース内に、データテーブルを生成し、
前記第３種のクエリに、前記第１種のアクセス権限が定義されることを示す情報が含まれる場合に、前記第３種のクエリに基づいて生成されるデータテーブルについて、前記第１種のアクセス権限が定義されることを示す情報と、生成されるデータテーブルへのアクセス権限を定義する情報と、を、前記第３種のクエリに含まれる情報に従って前記権限テーブルに記録し、
前記第３種のクエリに、前記第２種のアクセス権限が定義されることを示す情報が含まれる場合には、前記第３種のクエリに基づいて生成されるデータテーブルについて、前記第２種のアクセス権限が定義されることを示す情報を前記権限テーブルに記録する、画像処理装置。
【請求項７】
請求項６に記載の画像処理装置であって、
前記複数個のソフトウェアコンポーネントのうちの第３のコンポーネントは、前記データベース内に生成済のデータテーブルへのデータの記録を要求する第４種のクエリであって、前記ユーザ識別情報を含み、前記生成済のデータテーブルが、前記第２種のアクセス権限が定義されるべきテーブルである場合には、さらに、前記生成済のデータテーブルへ記録されるデータへのアクセス権限を定義する情報を含む、前記第４種のクエリを、前記アクセス管理部に供給し、
前記アクセス管理部は、
前記第４種のクエリに基づいて、前記生成済のデータテーブルに、記録対象のデータと、前記記録対象のデータへのアクセス権限を定義する情報と、を記録する、画像処理装置。
【請求項８】
請求項１〜７のいずれかに記載の画像処理装置であって、
前記アクセス管理部は、
前記画像処理装置の初回の起動時に、予め定められた特定種類のデータテーブルを生成し、
前記特定種類のデータテーブルについて、前記アクセス権限を定義する情報を前記権限テーブルに記録し、
前記画像処理装置の２回目以降の起動時には、前記特定種類のデータテーブルの生成は、行われない、画像処理装置。
【請求項９】
画像の印刷処理と、画像の読取処理と、の少なくとも一方を含む画像処理を実行する画像処理実行部を備える画像処理装置のためのコンピュータプログラムであって、
ユーザの指示に基づいて特定の処理を実行する複数個のアプリケーションを含む複数個のソフトウェアコンポーネントであって、前記複数個のアプリケーションは、前記画像処理実行部に前記画像処理を実行させる１個以上の画像処理アプリケーションを含む、前記複数個のソフトウェアコンポーネントと、
データベースに格納され、前記複数個のソフトウェアコンポーネントが利用するデータに対するアクセスを管理するアクセス管理機能と、
をコンピュータに実現させ、
前記複数個のソフトウェアコンポーネントのそれぞれは、前記複数個のアプリケーションのいずれかに対するユーザの指示に応じて前記データベースに格納されている特定のデータにアクセスすべき際に、特定のユーザを示すユーザ識別情報と、前記特定のデータを含む特定のデータテーブルを示すテーブル識別情報と、前記特定のデータを示すデータ識別情報と、を含む第１種のクエリを、前記アクセス管理機能に供給し、
前記アクセス管理機能は、
前記第１種のクエリを取得した場合に、前記第１種のクエリに含まれる前記ユーザ識別情報と前記テーブル識別情報とを用いて、複数のユーザのデータに対するアクセス権限を定義する権限テーブルを参照することによって、前記データ識別情報によって示される前記特定のデータに対するアクセス可否を判断し、
前記アクセス可否の判断結果に基づく情報を、前記複数個のソフトウェアコンポーネントのうち、前記第１種のクエリの供給元のコンポーネントに供給する、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書は、画像処理装置のソフトウェアコンポーネントによるデータに対するアクセスを管理する技術に関する。
【背景技術】
【０００２】
特許文献１には、従来から、システム側ソフトウエアと、システム側ソフトウエアのサービスの提供を受ける複数個のアプリケーションと、を有する複合機において、ユーザコードとパスワードとを用いて認証を行う認証モジュールを、システム側ソフトウエアとは別に備えることが開示されている。これによって、システム側ソフトウエアを変更することなく、認証条件や認証方法の変更などのカスタマイズを容易に行うことができる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００４−２４９７２２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記技術では、ユーザ認証が容易にカスタマイズできたとしても、ユーザのデータに対するアクセスの管理について、十分な工夫がされているとは言えなかった。このために、複数個のアプリケーションなどの複数個のソフトウェアコンポーネントによるデータへのアクセスの管理が複雑化する可能性があった。例えば、複数個のソフトウェアコンポーネントのそれぞれが、アクセス管理を行う必要が生じて、管理のレベルのばらつきが生じる可能性があった。
【０００５】
本明細書は、画像処理装置が有する複数個のソフトウェアコンポーネントによるデータへのアクセスを容易に管理できる技術を開示する。
【課題を解決するための手段】
【０００６】
本明細書に開示された技術は、以下の適用例として実現することが可能である。
【０００７】
［適用例１］画像の印刷処理と、画像の読取処理と、の少なくとも一方を含む画像処理を実行する画像処理実行部と、ユーザの指示に基づいて特定の処理を実行する複数個のアプリケーションを含む複数個のソフトウェアコンポーネントであって、前記複数個のアプリケーションは、前記画像処理実行部に前記画像処理を実行させる１個以上の画像処理アプリケーションを含む、前記複数個のソフトウェアコンポーネントと、データベースに格納され、前記複数個のソフトウェアコンポーネントが利用するデータに対するアクセスを管理するアクセス管理部と、を備え、前記複数個のソフトウェアコンポーネントのそれぞれは、前記複数個のアプリケーションのいずれかに対するユーザの指示に応じて前記データベースに格納されているデータにアクセスすべき際に、特定のユーザを示すユーザ識別情報と、特定のデータを含む特定のデータテーブルを示すテーブル識別情報と、前記特定の利用データを示すデータ識別情報と、を含む第１種のクエリを、前記アクセス管理部に供給し、前記アクセス管理部は、前記第１種のクエリを取得した場合に、前記第１種のクエリに含まれる前記ユーザ識別情報と前記テーブル識別情報とを用いて、複数のユーザのデータに対するアクセス権限を定義する権限テーブルを参照することによって、前記データ識別情報によって示される前記特定のデータに対するアクセス可否を判断し、前記アクセス可否の判断結果に基づく情報を、前記複数個のソフトウェアコンポーネントのうち、前記第１種のクエリの供給元のコンポーネントに供給する、画像処理装置。
【０００８】
上記構成によれば、アクセス管理部が、複数個のソフトウェアコンポーネントのそれぞれから、ユーザ識別情報を含む第１種のクエリを取得し、第１種のクエリの供給元のソフトウェアコンポーネントによるデータに対するアクセス可否を判断する。この結果、ユーザの指示に応じて行われる複数個のソフトウェアコンポーネントによるデータに対するアクセスを、アクセス管理部によって一元的に管理できる。したがって、例えば、複数個のソフトウェアコンポーネントのそれぞれが、複数個のアプリケーションのために、アクセス管理を行う必要がないので、複数個のソフトウェアコンポーネントによるデータへのアクセスを容易に管理できる。例えば、管理のレベルのばらつきの低減や、ソフトウェアコンポーネントの開発工数の低減を図ることができる。
【０００９】
なお、本明細書に開示された技術は、種々の形態で実現可能であり、例えば、印刷装置、印刷装置の制御装置、画像処理方法、これらの装置および方法の機能を実現するためのコンピュータプログラム、そのコンピュータプログラムを記録した記録媒体、等の形態で実現することができる。
【図面の簡単な説明】
【００１０】
【図１】本実施例の画像処理装置としての複合機１００の構成を示すブロック図。
【図２】システムテーブルの一例を示す図。
【図３】一般テーブルの一例を示す図。
【図４】複数個のソフトウェアコンポーネントの構成を示すブロック図。
【図５】アクセス管理部ＡＣＭに供給されるクエリの一例を示す図。
【図６】テーブル生成処理のフローチャート。
【図７】レコード追加処理のフローチャート。
【図８】データアクセス処理のフローチャート。
【図９】権限チェック処理のフローチャート。
【図１０】ＵＩ画面の一例を示す図。
【図１１】ＦＡＸコア部を含む複数個のコンポーネントの処理のシーケンス図。
【図１２】機能許容テーブル、連絡先テーブルを生成する処理のシーケンス図。
【発明を実施するための形態】
【００１１】
Ａ．実施例：
Ａ−１：複合機の構成
次に、本明細書の技術の実施の形態を実施例に基づき説明する。図１は、本実施例の画像処理装置としての複合機１００の構成を示すブロック図である。
【００１２】
複合機１００は、複合機１００のコントローラとしてのＣＰＵ１１０と、ＲＡＭなどの揮発性記憶装置１２０と、ハードディスクドライブやＥＥＰＲＯＭなどの不揮発性記憶装置１３０と、所定の方式（例えば、インクジェット方式、レーザー方式）で画像を印刷する装置であるプリンタ部１４０と、イメージセンサを用いて、光学的に原稿を読み取ることによってスキャンデータを生成する装置であるスキャナ部１５０と、タッチパネルやボタンなどの操作部１６０と、タッチパネルと重畳された液晶パネルなどの表示部１７０と、ユーザの端末装置５００などの外部装置とネットワークＬＮＴを介して通信を行うためのネットワークインターフェース（ＩＦ）２８０と、ファクシミリの送受信に用いられる電話回線ＩＦ２９０と、を備えている。
【００１３】
不揮発性記憶装置１３０は、コンピュータプログラムＰＧとデータベースＤＢとを格納している。コンピュータプログラムＰＧは、例えば、複合機１００の製造時に、予め不揮発性記憶装置１３０に記憶されている。これに代えて、コンピュータプログラムＰＧは、ＣＤ−ＲＯＭやＤＶＤ−ＲＯＭなどに格納された形態、または、ネットワークＬＮＴを介して複合機１００に接続されたサーバ（図示省略）からダウンロードされる形態で提供される。揮発性記憶装置１２０は、例えば、ＣＰＵ１１０が処理を行う際に生成される種々の中間データを一時的に格納するバッファ領域として用いられる。
【００１４】
データベースＤＢは、複合機１００の制御に利用される各種のデータをそれぞれ含む複数個のデータテーブルを格納している。データベースＤＢは、ＳＱＬ（Structured Query Language）で記述されるクエリを用いてアクセスされる。データベースＤＢに含まれる各種のデータは、例えば、後述するアプリケーションが、特定の処理（ＰＣ印刷処理、ＦＡＸ処理、スキャン処理など）を実行するために利用されるデータ、ユーザによって設定された設定情報、初回起動時や出荷時に予め格納されるデフォルトのデータなどを含む。
【００１５】
データベースＤＢに格納される複数個のデータテーブルは、システムテーブルと、一般テーブルと、を含む。図２は、システムテーブルの一例を示す図である。図３は、一般テーブルの一例を示す図である。各データテーブルは、１個以上の項目をそれぞれ含む１個以上のレコードを含んでいる。図２、図３に示す各テーブルの１行分のデータ、例えば、図２（Ａ）の破線Ｒａ１で示すデータは、１個のレコードを示している。
【００１６】
システムテーブルは、具体的には、図２（Ａ）のユーザテーブルＵＴと、図２（Ｂ）のグループテーブルＧＴと、図２（Ｃ）のアクセス権限テーブルＡＴと、を含む。
【００１７】
ユーザテーブルＵＴは、ユーザ情報をユーザごとに格納するテーブルである。ユーザテーブルＵＴの各レコードは、項目として、ユーザ名と、パスワードと、ユーザを識別するユーザＩＤと、グループＩＤと、を含んでいる。ユーザ名とパスワードとは、ユーザの認証情報である。グループＩＤは、１以上のユーザが属するグループを識別するＩＤである。ユーザテーブルＵＴは、デフォルトユーザＤＵのレコードと、一般ユーザＡＵのレコードと、を含んでいる。デフォルトユーザＤＵは、管理ユーザ（ユーザ名「admin」）と、パブリックユーザ（ユーザ名「public」）と、システムユーザ（ユーザ名「system1」など）と、を含む。
【００１８】
パブリックユーザは、ユーザテーブルＵＴに登録されていないユーザである。例えば、複合機１００にログインしているユーザがいない状態で、操作部１６０を介して入力されたスキャン指示や印刷指示などの指示は、パブリックユーザによって入力された指示として扱われる。システムユーザは、ユーザの指示とは無関係に、ＯＳなどのシステムコンポーネントによって用いられるユーザＩＤに対応するユーザ名である。
【００１９】
グループテーブルＧＴは、グループＩＤによって識別されるグループを定義するテーブルである。グループテーブルＧＴの各レコードは、グループ名と、グループＩＤと、を含んでいる。ユーザテーブルＵＴと、グループテーブルＧＴと、を参照すれば、例えば、ユーザ「Alice」と、ユーザ「Bob」とは、同じグループ「TEAM1」に属していることが解る。
【００２０】
アクセス権限テーブルＡＴは、後述する一般テーブルのそれぞれについて、アクセス権限を定義する権限情報を含むレコードが記録されている。例えば、１行目のレコードＲｃ１は、図３（Ａ）の機能許容テーブルＦＴの権限情報を含むレコードであり、２行目のレコードＲｃ２は、図３（Ｂ）の連絡先テーブルＣＩＴの権限情報を含むレコードである。
【００２１】
一般テーブルについて定義されるアクセス権限には、テーブル権限と、レコード権限と、の２種類がある。テーブル権限は、データテーブルごとに定義されるアクセス権限である。テーブル権限が定義されるデータテーブルに含まれる全てのレコードへのアクセス権限は、該データテーブルに対応付けられる１組の権限情報によって定義される。レコード権限は、データテーブルに含まれるレコードごとに定義されるアクセス権限である。レコード権限が定義されるデータテーブルに含まれる１個以上のレコードは、１個以上のレコードのそれぞれに１組ずつ対応付けられる権限情報に従って決定される。
【００２２】
アクセス権限テーブルＡＴの各レコードは、対応するデータテーブルを示すテーブル名と、対応するデータテーブルについて定義されるアクセス権限の種類（レコード権限またはテーブル権限）を示す権限タイプ情報と、を含んでいる。
【００２３】
権限タイプ情報として、テーブル権限を示す情報を含むレコード、例えば、図２（Ｃ）の１行目のレコードＲｃ１は、さらに、オーナーＩＤと、オーナー権限情報と、グループ権限情報と、その他の権限情報と、を含む。オーナーＩＤは、対応するデータテーブルのオーナーであるユーザを示すユーザＩＤである。オーナー権限情報は、オーナーのアクセス権限を定義する情報である。グループ権限情報は、オーナーが所属するグループに所属するユーザ（オーナーを除く）のアクセス権限を定義する情報である。その他の権限情報は、その他のユーザ、すなわち、オーナーが所属するグループに所属するユーザ（オーナーを含む）を除いたユーザのアクセス権限を定義する情報である。
【００２４】
オーナー権限情報と、グループ権限情報と、その他の権限情報は、複数種類のアクセスの可否、具体的には、参照（SELECT）、更新（UPDATE）、追加(INSERT)、削除(DELETE)のそれぞれが許容されるか否かを示す情報である。図２に示すように、これらの情報の欄に記載された「Ｓ」「Ｕ」「Ｉ」「Ｄ」は、それぞれ、参照（SELECT）、更新（UPDATE）、追加(INSERT)、削除(DELETE)が、許容されることを示し、「不可」は、これらの４種類のアクセスのいずれも許容されないことを示す。
【００２５】
権限タイプ情報として、レコード権限を示す情報を含むレコード、例えば、図２（Ｃ）の２行目のレコードＲｃ２は、権限情報として、権限タイプ情報のみを含み、オーナーＩＤと、オーナー権限情報と、グループ権限情報と、その他の権限情報と、を含まない。これらの情報は、後述するように、対応するデータテーブル内に、レコードごとに記録されるからである。
【００２６】
これらのシステムテーブルＵＴ、ＧＴ、ＡＴに対しては、管理ユーザ（図１の例では、ユーザ名「admin」のユーザ）の指示に基づく、追加、更新、削除、参照のいずれのアクセスも許容されている。システムテーブルＵＴ、ＧＴ、ＡＴに対しては、管理ユーザ以外のユーザ（図１の例では、例えば、ユーザ名「alice」のユーザ）の指示に基づく、追加、更新、削除、参照のいずれのアクセスも許容されていない。これらのシステムテーブルは、後述するユーザ管理部ＵＭやアクセス管理部ＡＣＭなどの限られたコンポーネントによる参照が許容されている。例えば、ユーザ管理部ＵＭは、例えば、ログインの認証のために、ユーザテーブルＵＴを参照することができる。
【００２７】
図３（Ａ）の機能許容テーブルＦＴは、複数のユーザと複合機１００が実行可能な複数個の特定の処理とについて、実行が許容されているか否かを示す機能許容情報が、ユーザごと、かつ、特定の処理ごとに、記録されるテーブルである。
【００２８】
機能許容テーブルＦＴの各レコードは、ユーザ名と、コピー処理の機能許容情報と、スキャン処理の機能許容情報と、ＰＣ印刷処理の機能許容情報と、ＦＡＸ処理の機能許容情報と、を含んでいる。これらの情報の欄に記載された「可」は、対応する処理の実行が許容されること示し、「不可」は、対応する処理の実行が許容されないこと示す。例えば、図３（Ａ）の機能許容テーブルＦＴの３行目のレコードＲｄ３には、ユーザ「Alice」について、コピー処理と、スキャン処理と、ＰＣ印刷処理と、の実行が許容されること、および、ＦＡＸ処理の実行が許容されないこと、が記録されている。
【００２９】
なお、図３（Ａ）の機能許容テーブルＦＴは、図２（Ｂ）のアクセス権限テーブルＡＴに示すように、テーブル権限が定義されるテーブル（以下、テーブル権限テーブルとも呼ぶ）であるので、機能許容テーブルＦＴの各レコードは、後述する連絡先テーブルＣＩＴとは異なり、権限情報を含んでいない。
【００３０】
図３（Ｂ）の連絡先テーブルＣＩＴの各レコードは、連絡先の名称と、メールアドレスと、住所と、ＦＡＸ番号と、を含んでいる。連絡先テーブルＣＩＴは、図２（Ｂ）のアクセス権限テーブルＡＴに示すように、レコード権限が定義されるテーブル（レコード権限テーブルとも呼ぶ）であるので、連絡先テーブルＣＩＴの各レコードは、さらに、権限情報を含む。具体的には、連絡先テーブルＣＩＴの各レコードは、オーナーＩＤと、オーナー権限情報と、グループ権限情報と、その他の権限情報と、を含む。オーナーＩＤは、対応するレコードのオーナーであるユーザを示すユーザＩＤである。オーナー権限情報と、グループ権限情報と、その他の権限情報は、上述したとおりである。ただし、オーナー権限情報と、グループ権限情報と、その他の権限情報は、参照（SELECT）、更新（UPDATE）、削除(DELETE)のそれぞれが許容されるか否かを示す情報を含み、追加(INSERT)について情報を含まない。これは、データテーブルと異なり、１個のレコードに対しては、追加の操作は発生しないからである。
【００３１】
ＣＰＵ１１０は、コンピュータプログラムＰＧを実行することにより、複数個のソフトウェアコンポーネント（以下、単にコンポーネントとも呼ぶ）の機能を実現する。図４は、ＣＰＵ１１０が実現する複数個のソフトウェアコンポーネントの構成を示すブロック図である。コンポーネントは、カプセル化されたソフトウェアの部品であり、例えば、ＣＰＵ１１０が実現すべき複数個の機能のうちの一部の機能を実現する。
【００３２】
これらの複数個のコンポーネントは、ユーザの指示に基づいて複数個の特定の処理を実行するための複数個のアプリケーションと、ハードウェアを制御するための複数個の制御部ＣＴ１〜ＣＴ３と、を含んでいる。複数個のアプリケーションは、複数個の特定の処理のうちの対応する処理についてユーザからの指示をユーザインタフェースを介して取得する複数個のユーザインタフェース部（以下、ＵＩ部という）Ａ１１〜Ａ１４と、制御部ＣＴ１〜ＣＴ３を用いて、複数個の特定の処理のうちの対応する処理を実行する制御コア部（以下、コア部という）Ａ２１〜Ａ２４と、を含んでいる。
【００３３】
複数個の特定の処理は、複数個の画像処理、具体的には、ユーザが指定する画像データによって示される画像をプリンタ部１４０を用いて印刷するＰＣ印刷処理と、スキャナ部１５０を用いて読み取った原稿を示す画像を、プリンタ部１４０を用いて印刷するコピー処理と、スキャナ部１５０を用いて原稿を読み取るスキャン処理と、電話回線ＩＦ２９０を介して画像データの送受信を行うＦＡＸ処理と、を含んでいる。
【００３４】
これらの処理に対応して複数個のＵＩ部Ａ１１〜Ａ１４は、ＰＣ印刷処理のためのＰＣ印刷ＵＩ部Ａ１１と、コピー処理のためのコピーＵＩ部Ａ１２と、スキャン処理のためのスキャンＵＩ部Ａ１３と、ＦＡＸ処理のためのＦＡＸＵＩ部Ａ１４と、を含んでいる。
【００３５】
また、複数個のコア部Ａ２１〜Ａ２４は、ＰＣ印刷処理のためのＰＣ印刷コア部Ａ２１と、コピー処理のためのコピーコア部Ａ２２と、スキャン処理のためのスキャンコア部Ａ２３と、ＦＡＸ処理のためのＦＡＸコア部Ａ２４と、を含んでいる。
【００３６】
なお、本実施例では、１個の特定の処理について、１個のＵＩ部と１個のコア部と、が一対一で対応しているが、これに限られない。例えば、１個の特定の処理についてのアプリケーションは、操作部１６０を介して指示を取得するＵＩ部と、ユーザの端末装置５００のブラウザを介して指示を取得するＵＩ部と、これらの２個のＵＩ部が取得した指示に基づいて特定の処理を実行する１個のコア部と、を含んでもよい。
【００３７】
複数個の制御部ＣＴ１〜ＣＴ３は、プリンタ部１４０を制御する印刷制御部ＣＴ１と、スキャナ部１５０を制御する読取制御部ＣＴ２と、電話回線ＩＦ２９０を制御するＦＡＸ制御部ＣＴ３と、を備えている。印刷制御部ＣＴ１は、例えば、コピーコア部Ａ２２やＰＣ印刷コア部Ａ２１から、印刷データを受け取ってプリンタ部１４０を制御して画像を印刷させる。読取制御部ＣＴ２は、例えば、コピーコア部Ａ２２や、スキャンコア部Ａ２３の指示に従って、スキャナ部１５０を制御してスキャンデータを生成させる。ＦＡＸ制御部ＣＴ３は、ＦＡＸコア部Ａ２４の指示に従って、電話回線ＩＦ２９０を制御して画像データの送受信を実行させる。
【００３８】
複数個のコンポーネントは、さらに、アプリケーション管理部ＡＰＭと、ユーザ管理部ＵＭと、外部データ解析部ＪＢＲと、連絡先管理部ＣＩＭと、アクセス管理部ＡＣＭと、を含んでいる。
【００３９】
アプリケーション管理部ＡＰＭは、複数個のＵＩ部Ａ１１〜Ａ１４と、複数個のコア部Ａ２１〜Ａ２４と、の間のデータの遣り取りを仲介する。
【００４０】
ユーザ管理部ＵＭは、認証処理部ＡＴＰと、ユーザ情報管理部ＵＩＭと、を含んでいる。認証処理部ＡＴＰは、表示部１７０にログイン画面（図示省略）を表示して、操作部１６０を介して入力される認証情報（具体的には、ユーザ名とパスワード）を受け取る。認証処理部ＡＴＰは、入力される認証情報に基づいて、ユーザの認証を行う、すなわち、認証情報を入力したユーザのログインを認めるか否かを判断する。認証処理部ＡＴＰは、現在、ログイン中のユーザ（カレントユーザとも呼ぶ）を管理している。
【００４１】
ユーザ情報管理部ＵＩＭは、データベースＤＢに格納されたユーザに関連する情報を管理する。例えば、ユーザ情報管理部ＵＩＭは、アクセス管理部ＡＣＭに対して後述するクエリを供給して、ユーザごとの機能許容情報を記録する機能許容テーブルＦＴ（図３（Ａ））の生成や、機能許容テーブルＦＴへのアクセスを実行する。
【００４２】
外部データ解析部ＪＢＲは、ネットワークＩＦ２８０等を用いて、外部機器から受信されたデータを解析して、必要な処理を実行する。例えば、外部データ解析部ＪＢＲは、ユーザの端末装置５００等から、ネットワークＬＮＴを介して受信された印刷ジョブの解析を行う。
【００４３】
連絡先管理部ＣＩＭは、データベースＤＢに格納された連絡先テーブルＣＩＴ（図３（Ｂ））を管理する。例えば、連絡先管理部ＣＩＭは、アクセス管理部ＡＣＭに対して後述するクエリを供給して、連絡先テーブルＣＩＴの生成や、連絡先テーブルＣＩＴへのアクセスを実行する。
【００４４】
アクセス管理部ＡＣＭは、他のコンポーネントによるデータベースＤＢへのアクセスを仲介する。例えば、アクセス管理部ＡＣＭは、後述するように、他のコンポーネントから供給されるクエリに基づいて、データベースＤＢ上でのデータテーブルの生成や、データベースＤＢに格納されたデータテーブルへのアクセスを仲介する。
【００４５】
Ａ−２．  複合機１００の動作
Ａ−２−１．データベースＤＢへのアクセス
データベースＤＢのアクセスについて説明する。データベースＤＢへのアクセスは、アクセス管理部ＡＣＭが、上述したように、他のコンポーネントから供給されるクエリを取得したときに、アクセス管理部ＡＣＭによって実行される。換言すれば、アクセス管理部ＡＣＭ以外のコンポーネントは、直接に、データベースＤＢへアクセスすることはできず、データベースＤＢへのアクセスは、アクセス管理部ＡＣＭによって一元的に管理されている。したがって、コア部Ａ２１〜Ａ２４などのコンポーネントのそれぞれは、データベースＤＢに格納されているデータにアクセスすべき際に、後述するクエリをアクセス管理部ＡＣＭに供給することによって、アクセス管理部ＡＣＭを介して、間接的に、データベースＤＢにアクセスする。
【００４６】
図５は、アクセス管理部ＡＣＭに供給されるクエリの一例を示す図である。これらのクエリ１０Ａ〜１０Ｄは、ユーザＩＤを付加できるようにカスタマイズされた構造化問い合わせ言語（ＳＱＬ（Structured Query Language））に従って記述される。換言すれば、これらのクエリは、一般的なＳＱＬに従うＳＱＬ文と、ユーザＩＤと、を含んでいる。例えば、図５（Ａ）〜（Ｅ）の全てのクエリは、ユーザＩＤ１１を含んでいる。
【００４７】
先ず、データベースＤＢへのデータテーブルの生成を行うテーブル生成処理について説明する。テーブル生成処理は、特定のコンポーネント（例えば、連絡先管理部ＣＩＭや、ユーザ情報管理部ＵＩＭ）が、アクセス管理部ＡＣＭに図５（Ａ）、（Ｂ）のテーブル生成用のクエリを供給したときに、開始される。
【００４８】
図６は、テーブル生成処理のフローチャートである。Ｓ１０５では、アクセス管理部ＡＣＭは、特定のコンポーネントから供給されたテーブル生成用のクエリを取得する。テーブル生成用のクエリは、テーブル権限テーブル生成用のクエリ１０Ａ（図５（Ａ））と、レコード権限テーブル生成用のクエリ１０Ｂ（図５（Ｂ））と、の２種類がある。テーブル生成用のクエリは、生成するデータテーブルの名称（テーブル名）、生成するデータテーブルの各レコードが含むべき項目の名称（項目名）、および、当該項目のデータ型などの、一般的なＳＱＬに従うクエリが含む情報に加えて、ユーザＩＤ１１と、権限タイプ情報１２と、を含んでいる。ユーザＩＤ１１は、例えば、テーブルを生成する契機となった指示を入力したユーザを示し、例えば、現在、複合機１００にログイン中のカレントユーザのユーザＩＤが用いられる。権限タイプ情報１２は、生成するデータテーブルについてテーブル権限が定義されることを示す情報と、生成するデータテーブルについてレコード権限が定義されることを示す情報と、のいずれかである。換言すれば、権限タイプ情報１２は、生成するデータテーブルが、テーブル権限テーブルであるか、レコード権限テーブルであるか、を示す情報である。
【００４９】
テーブル権限テーブル生成用のクエリ１０Ａ（図５（Ａ））は、さらに、生成されるデータテーブルへのアクセス権限を定義する権限情報１３を含む。この権限情報１３は、図５（Ａ）に示すように、オーナＩＤと、オーナー権限情報と、グループ権限情報と、その他の権限情報と、を含む。レコード権限テーブル生成用のクエリ１０Ｂ（図５（Ｂ））は、権限情報１３を含まない。
【００５０】
Ｓ１１０では、アクセス管理部ＡＣＭは、取得したクエリから、当該クエリに付加されたユーザＩＤ１１を取得する。Ｓ１１５では、アクセス管理部ＡＣＭは、ユーザテーブルＵＴ（図２（Ａ））を参照して、当該ユーザＩＤ１１が、ユーザテーブルＵＴに存在するか否かを判断する。ユーザＩＤ１１が、ユーザテーブルＵＴに存在しない場合には（Ｓ１１５：ＮＯ）、Ｓ１２５にて、アクセス管理部ＡＣＭは、クエリの供給元のコンポーネントに対して、エラーを通知して、テーブル生成処理を終了する。
【００５１】
ユーザＩＤ１１が、ユーザテーブルＵＴに存在する場合には（Ｓ１１５：ＹＥＳ）、Ｓ１２０にて、アクセス管理部ＡＣＭは、クエリに従って、データベースＤＢ上にデータテーブルを生成する。
【００５２】
Ｓ１３０では、アクセス管理部ＡＣＭは、Ｓ１２０にて生成したデータテーブルについて、権限情報をアクセス権限テーブルＡＴに記録する。具体的には、アクセス管理部ＡＣＭは、生成用のクエリに従い、Ｓ１２０にて生成したデータテーブルのテーブル名と、権限タイプと、を含むレコードを、アクセス権限テーブルＡＴに追加する。Ｓ１２０にて生成したデータテーブルが、テーブル権限テーブルである場合には、当該レコードには、さらに、クエリ１０Ａ（図５（Ａ））に含まれる権限情報１３、すなわち、オーナーＩＤと、オーナー権限情報と、グループ権限情報と、その他の権限情報と、が含められる。Ｓ１２０にて生成したデータテーブルが、レコード権限テーブルである場合には、当該レコードには、オーナーＩＤと、オーナー権限情報と、グループ権限情報と、その他の権限情報とは含められない。
【００５３】
Ｓ１３５では、アクセス管理部ＡＣＭは、データテーブルの生成の結果を、クエリの供給元のコンポーネントに対して通知して、テーブル生成処理を終了する。通常は、データテーブルの生成が成功したことが、通知される。
【００５４】
次に、生成済のデータテーブルに対して、データを、レコードとして追加するレコード追加処理について説明する。レコード追加処理は、特定のコンポーネント（例えば、連絡先管理部ＣＩＭや、ユーザ情報管理部ＵＩＭ）が、アクセス管理部ＡＣＭに図５（Ｃ）、（Ｄ）のレコード追加用のクエリを供給したときに、開始される。
【００５５】
図７は、レコード追加処理のフローチャートである。Ｓ２０５では、アクセス管理部ＡＣＭは、特定のコンポーネントから供給されたレコード追加用のクエリを取得する。
【００５６】
レコード追加用のクエリは、テーブル権限テーブルに対してレコードを追加するためのクエリ１０Ｃ（図５（Ｃ））と、レコード権限テーブルに対してレコードを追加するためのクエリ１０Ｄ（図５（Ｄ））と、の２種類がある。レコード追加用のクエリは、レコードを追加する対象となる生成済のデータテーブルの名称（テーブル名）、追加するレコードに含むべきデータの値などの、一般的なＳＱＬに従うクエリが含む情報に加えて、ユーザＩＤ１１を含んでいる。ユーザＩＤ１１は、例えば、レコードを追加する契機となった指示を入力したユーザを示し、例えば、現在、複合機１００にログイン中のカレントユーザのユーザＩＤが用いられる。以下、レコードの追加などのアクセスの対象となる生成済のデータテーブルを、対象データテーブルとも呼ぶ。
【００５７】
レコード権限テーブルに対してレコードを追加するためのクエリ１０Ｄ（図５（Ｄ））は、さらに、追加されるレコードに対するアクセス権限を定義する権限情報１４を含む。この権限情報１４は、図５（Ｄ）に示すように、オーナＩＤと、オーナー権限情報と、グループ権限情報と、その他の権限情報と、を含む。テーブル権限テーブルに対してレコードを追加するためのクエリ１０Ｃ（図５（Ｃ））は、権限情報１４を含まない。
【００５８】
Ｓ２１０では、アクセス管理部ＡＣＭは、取得したクエリから、当該クエリに付加されたユーザＩＤ１１を取得する。Ｓ２１５では、アクセス管理部ＡＣＭは、ユーザテーブルＵＴ（図２（Ａ））を参照して、当該ユーザＩＤ１１が、ユーザテーブルＵＴに存在するか否かを判断する。ユーザＩＤ１１が、ユーザテーブルＵＴに存在しない場合には（Ｓ２１５：ＮＯ）、Ｓ２１８にて、アクセス管理部ＡＣＭは、クエリの供給元のコンポーネントに対して、エラーを通知して、レコード追加処理を終了する。
【００５９】
ユーザＩＤ１１が、ユーザテーブルＵＴに存在する場合には（Ｓ２１５：ＹＥＳ）、Ｓ２２０にて、アクセス管理部ＡＣＭは、データベースＤＢのアクセス権限テーブルＡＴ（図２（Ｃ））から、対象データテーブルの権限情報、すなわち、クエリに含まれるテーブル名を有する生成済のデータテーブルの権限情報を取得する。
【００６０】
対象データテーブルがテーブル権限テーブルである場合には、取得される権限情報は、テーブル権限を示す権限タイプ情報と、オーナＩＤと、オーナー権限情報と、グループ権限情報と、その他の権限情報と、を含む。対象データテーブルがレコード権限テーブルである場合には、取得される権限情報は、レコード権限を示す権限タイプ情報のみを含み、オーナＩＤと、オーナー権限情報と、グループ権限情報と、その他の権限情報と、を含まない。
【００６１】
Ｓ２２５では、アクセス管理部ＡＣＭは、取得された権限情報のうち、権限タイプ情報を参照して、対象データテーブルが、テーブル権限テーブルであるか否かを判断する。対象データテーブルが、テーブル権限テーブルである場合には（Ｓ２２５：ＹＥＳ）、Ｓ２３０にて、アクセス管理部ＡＣＭは、権限チェック処理を実行する。権限チェック処理は、クエリに付加されたユーザＩＤ１１を有するユーザ（対象ユーザとも呼ぶ）が、クエリに従うアクセスを行う権限を有するか否かを判断する処理である。例えば、レコード追加処理中の権限チェック処理では、対象ユーザが、対象データテーブルに、レコードと追加（INSERT）する権限を有するか否かが判断される。権限チェック処理については、後述する。
【００６２】
Ｓ２３５では、アクセス管理部ＡＣＭは、権限チェック処理の結果、権限ありと判断されたか否かを判断する。権限チェック処理の結果、権限ありと判断された場合には（Ｓ２３５：ＹＥＳ）、Ｓ２４０にて、アクセス管理部ＡＣＭは、クエリに含まれるデータ（値）を含むレコードを、対象データテーブルに追加する。Ｓ２４５では、アクセス管理部ＡＣＭは、レコードの追加の結果を、クエリの供給元のコンポーネントに対して通知して、レコード追加処理を終了する。通常は、レコードの追加が成功したことが、通知される。
【００６３】
権限チェック処理の結果、権限なしと判断された場合には（Ｓ２３５：ＮＯ）、Ｓ２１８にて、アクセス管理部ＡＣＭは、クエリの供給元のコンポーネントに対して、エラーを通知して、レコード追加処理を終了する。
【００６４】
対象データテーブルが、レコード権限テーブルである場合には（Ｓ２２５：ＮＯ）、Ｓ２５０にて、アクセス管理部ＡＣＭは、権限チェック処理を行わずに、クエリに含まれるデータ（値）を含むレコードを、対象データテーブルに追加する。Ｓ２５５では、アクセス管理部ＡＣＭは、クエリ（例えば、図５（Ｄ）のクエリ１０Ｄ）に含まれる権限情報１４を、追加したレコードに記録する。Ｓ２６０では、アクセス管理部ＡＣＭは、レコードの追加の結果を、クエリの供給元のコンポーネントに対して通知して、レコード追加処理を終了する。通常は、レコードの追加が成功したことが、通知される。
【００６５】
以上の説明から解るように、例えば、対象データテーブルが、テーブル権限テーブルである場合には、図３（Ａ）の機能許容テーブルＦＴのレコードＲｄ３のように、通常のデータを含み、権限情報を含まないレコードが追加される。対象データテーブルが、レコード権限テーブルである場合には、図３（Ｂ）の連絡先テーブルＣＩＴのレコードＲｅ２のように、通常のデータと、権限情報と、を含むレコードが追加される。
【００６６】
次に、生成済のデータテーブルに記録されたデータの参照（SELECT）、更新（UPDATE）、削除(DELETE)のいずれかを実行するデータアクセス処理について説明する。データアクセス処理は、特定のコンポーネント（例えば、連絡先管理部ＣＩＭや、ユーザ情報管理部ＵＩＭ）が、アクセス管理部ＡＣＭに、参照、更新、削除用のクエリを供給したときに、開始される。
【００６７】
図８は、データアクセス処理のフローチャートである。Ｓ３０５では、アクセス管理部ＡＣＭは、特定のコンポーネントから供給されたデータアクセス用（参照用、更新用、削除用のいずれか）のクエリを取得する。
【００６８】
一例として、図５（Ｅ）には、参照用のクエリ１０Ｅが示されている。このクエリ１０Ｅは、対象データテーブルの名称（テーブル名）、参照すべきデータの検索条件式などの一般的なＳＱＬに従うクエリが含む情報に加えて、ユーザＩＤ１１を含んでいる。ユーザＩＤ１１は、上述した他のクエリと同様に、例えば、アクセスを追加する契機となった指示を入力したユーザを示し、例えば、現在、複合機１００にログイン中のカレントユーザのユーザＩＤが用いられる。参照すべきデータの検索条件式によって、アクセス対象のデータが特定されることから解るように、参照すべきデータの検索条件式は、アクセス対象のデータを示すデータ識別情報の例である。
【００６９】
Ｓ３１０では、アクセス管理部ＡＣＭは、データベースＤＢのアクセス権限テーブルＡＴ（図２（Ｃ））から、対象データテーブルの権限情報を取得する。図７のＳ２２０と同様に、対象データテーブルがテーブル権限テーブルである場合には、取得される権限情報は、テーブル権限を示す権限タイプ情報と、オーナＩＤと、オーナー権限情報と、グループ権限情報と、その他の権限情報と、を含む。対象データテーブルがレコード権限テーブルである場合には、取得される権限情報は、レコード権限を示す権限タイプ情報のみを含み、オーナＩＤと、オーナー権限情報と、グループ権限情報と、その他の権限情報と、を含まない。
【００７０】
Ｓ３１５では、アクセス管理部ＡＣＭは、取得された権限情報のうち、権限タイプ情報を参照して、対象データテーブルが、テーブル権限テーブルであるか否かを判断する。対象データテーブルが、テーブル権限テーブルである場合には（Ｓ３１５：ＹＥＳ）、Ｓ３２５にて、アクセス管理部ＡＣＭは、図７の２３０と同様に、権限チェック処理を実行する。この場合には、権限チェック処理に用いられる権限情報は、Ｓ３１０にてアクセス権限テーブルＡＴから取得された権限情報である。
【００７１】
対象データテーブルが、レコード権限テーブルである場合には（Ｓ３１５：ＮＯ）、Ｓ３２０にて、クエリに従って、アクセス対象のレコード（以下、対象レコードとも呼ぶ）を検索し、当該対象レコードから権限情報を取得する。これは、レコード権限テーブルの権限情報は、権限タイプ情報を除いて、アクセス権限テーブルＡＴには記録されておらず、レコード権限テーブルにレコードごとに記録されているからである（図３（Ｂ）参照）。続くＳ３２５にて、アクセス管理部ＡＣＭは、権限チェック処理を実行する。この場合には、権限チェック処理に用いられる権限情報は、Ｓ３２０にて対象レコードから取得された権限情報である。
【００７２】
Ｓ３３０では、アクセス管理部ＡＣＭは、権限チェック処理の結果、権限ありと判断されたか否かを判断する。権限チェック処理の結果、権限ありと判断された場合には（Ｓ３３０：ＹＥＳ）、Ｓ３３５にて、アクセス管理部ＡＣＭは、クエリに従ってアクセスを実行する。例えば、処理対象のクエリが、参照用のクエリである場合には、対象レコードを対象データテーブルから取得する。また、処理対象のクエリが、更新用のクエリである場合には、対象レコードを、クエリに含まれるデータに更新する。処理対象のクエリが、削除用のクエリである場合には、対象レコードを対象データテーブルから削除する。
【００７３】
Ｓ３４０では、アクセス管理部ＡＣＭは、Ｓ３３５でのアクセスの結果を、クエリの供給元のコンポーネントに対して通知して、データアクセス処理を終了する。例えば、処理対象のクエリが、参照用のクエリである場合には、Ｓ３３５にて取得した対象レコード内の対象のデータが、クエリの供給元のコンポーネントに供給される。処理対象のクエリが、更新用や削除用のクエリである場合には、更新や削除が成功したことが、通知される。
【００７４】
権限チェック処理の結果、権限なしと判断された場合には（Ｓ３３０：ＮＯ）、Ｓ３４５にて、アクセス管理部ＡＣＭは、クエリの供給元のコンポーネントに対して、エラーを通知して、データアクセス処理を終了する。
【００７５】
次に、図７のＳ２３０および図８のＳ３２５の権限チェック処理について説明する。図９は、権限チェック処理のフローチャートである。
【００７６】
Ｓ４０５では、アクセス管理部ＡＣＭは、対象ユーザを示すユーザＩＤ１１が、権限のチェック対象のオーナーＩＤであるか否かを判断する。権限のチェック対象は、例えば、対象データテーブルが、テーブル権限テーブルである場合には、対象データテーブルであり、対象データテーブルが、レコード権限テーブルである場合には、対象レコードである。権限のチェック対象のオーナーＩＤは、権限チェック処理に用いられる権限情報として取得されたオーナーＩＤである。
【００７７】
対象ユーザを示すユーザＩＤ１１が、権限のチェック対象のオーナーＩＤである場合には（Ｓ４０５：ＹＥＳ）、Ｓ４１０にて、アクセス管理部ＡＣＭは、権限のチェック対象について定義されたオーナー権限情報を、参照権限情報として決定する。
【００７８】
対象ユーザを示すユーザＩＤ１１が、権限のチェック対象のオーナーＩＤでない場合には（Ｓ４０５：ＮＯ）、Ｓ４１５にて、アクセス管理部ＡＣＭは、対象ユーザを示すユーザＩＤ１１が、権限のチェック対象のオーナーＩＤが属するグループ（対象グループとも呼ぶ）に属するか否かを判断する。この判断は、図２のユーザテーブルＵＴ、グループテーブルＧＴを参照することによって、実行される。
【００７９】
対象ユーザを示すユーザＩＤ１１が、対象グループに属する場合には（Ｓ４１５：ＹＥＳ）、Ｓ４２０にて、アクセス管理部ＡＣＭは、権限のチェック対象について定義されたグループ権限情報を、参照権限情報として決定する。
【００８０】
対象ユーザを示すユーザＩＤ１１が、対象グループに属さない場合には（Ｓ４１５：ＮＯ：ＹＥＳ）、Ｓ４２５にて、アクセス管理部ＡＣＭは、権限のチェック対象について定義されたその他の権限情報を、参照権限情報として決定する。
【００８１】
Ｓ４３０では、アクセス管理部ＡＣＭは、決定された参照権限情報を参照して、対象ユーザが、クエリに従うアクセス（参照、追加、更新、削除のいずれか）を行う権限を有するか否かを判断して、権限チェック処理を終了する。
【００８２】
Ａ−２−２．アクセス例
以上説明したデータベースＤＢへのアクセスが実際に実行されるアクセス例について説明する。代表的なアクセスは、ユーザの指示に基づいて、ＰＣ印刷処理やＦＡＸ処理などの特定の処理が実行される際に行われるアクセスである。例えば、実行が指示された特定の処理を実行するために、特定のコンポーネントが、特定の処理に利用するデータを取得する際に、特定のコンポーネントは、データベースＤＢへのアクセスを行う。
【００８３】
より具体的に説明する。図１０は、ＵＩ画面の一例を示す図である。ＯＳなどのシステムコンポーネント（図示省略）は、ユーザからの指示を待ち受ける状態では、表示部１７０に、初期ユーザインタフェース（ＵＩ）画面Ｗ１を表示する。図１０（Ａ）のＵＩ画面Ｗ１は、複合機１００が実行できる複数個の特定処理、例えば、ＦＡＸ処理、コピー処理、スキャン処理、ＰＣ印刷処理のいずれかをユーザが選択するためのボタンＢ０１〜Ｂ０４を含んでいる。ユーザがボタンＢ０１〜Ｂ０４のいずれかを押下することによって、１個の特定の処理を選択すると、システムコンポーネントは、押下された特定の処理に対応するＵＩ部を呼び出す。ＵＩ部は、対応する特定の処理を実行するために必要な指示をユーザから取得するためのＵＩを制御して、必要な指示を取得するアプリケーションである。例えば、ＦＡＸ処理を選択するためのボタンＢ０４が押下されると、ＦＡＸ処理に対応するＦＡＸＵＩ部Ａ１４（図４）が呼び出される。ＦＡＸＵＩ部Ａ１４は、表示部１７０に、ＦＡＸ処理の指示をユーザから取得するためのＵＩ画面Ｗ２（図１０（Ｂ））を表示する。
【００８４】
このＵＩ画面Ｗ２は、ＦＡＸの送信開始を指示するスタートボタンＢ０５と、ＦＡＸの宛先をユーザが入力するためのフィールドＩＦと、を含んでいる。フィールドＩＦには、ＦＡＸ番号を入力することもでき、連絡先テーブルＣＩＴ（図３（Ｂ））に記録済の名称を入力することもできる。
【００８５】
ここで、ユーザが、フィールドＩＦに、連絡先テーブルＣＩＴに記録済の名称を入力して、スタートボタンＢ０５を押下すると、換言すれば、ＦＡＸＵＩ部Ａ１４がユーザからＦＡＸ処理の実行指示を取得すると、ＦＡＸＵＩ部Ａ１４は、ユーザ管理部ＵＭから、認証処理部ＡＴＰが管理しているカレントユーザのユーザＩＤを取得する。ＦＡＸＵＩ部Ａ１４は、当該ユーザＩＤと、ＦＡＸ処理の実行指示（宛先の名称を含む）とを、アプリケーション管理部ＡＰＭに供給する。アプリケーション管理部ＡＰＭは、供給されたユーザＩＤと、ＦＡＸ処理の実行指示を、ＦＡＸ処理に対応するコア部であるＦＡＸコア部Ａ２４に供給する。この際に、アプリケーション管理部ＡＰＭは、供給されたユーザＩＤを有するユーザがＦＡＸ処理を実行することが許容されているか否かをチェックする処理等を行うが、ここでは、詳細を省略する。
【００８６】
ユーザＩＤと、ＦＡＸ処理の実行指示と、を取得したＦＡＸコア部Ａ２４は、ＦＡＸ処理を実行するために必要なデータ、具体的には、ＦＡＸ処理の実行指示に含まれる宛先の名称（例えば、図１０の「Ken」）に対応するＦＡＸ番号を取得するための処理を含む一連の処理を実行する。この処理を、データベースＤＢへのアクセスの一例として説明する。
【００８７】
図１１は、ＦＡＸコア部Ａ２４を含む複数個のコンポーネントの処理のシーケンス図である。Ｓ１では、ＦＡＸコア部Ａ２４は、ＦＡＸ番号の取得要求を、ＦＡＸ番号が記録された連絡先テーブルＣＩＴ（図３（Ｂ））を管理する連絡先管理部ＣＩＭ（図４）に対して供給する。ＦＡＸ番号の取得要求には、アプリケーション管理部ＡＰＭから取得したユーザＩＤと、ＦＡＸ実行指示に含まれる宛先の名称とが含められる。
【００８８】
連絡先管理部ＣＩＭは、ＦＡＸコア部Ａ２４からＦＡＸ番号の取得要求を取得すると、Ｓ２にて、宛先の名称に対応するＦＡＸ番号を取得するためのクエリを生成する。具体的には、宛先の名称に対応するＦＡＸ番号を検索する検索条件式を含む参照（SELECT）用のクエリ１０Ｅ（図５（Ｅ））が生成される。このクエリは、上述したようにユーザＩＤ１１と、ＳＱＬ文と、を含む。この例では、ユーザＩＤ１１は、連絡先管理部ＣＩＭが取得したＦＡＸ番号の取得要求に含まれるユーザＩＤである。すなわち、ＦＡＸコア部Ａ２４から供給されたユーザＩＤであり、例えば、現在のカレントユーザを示すユーザＩＤである。
【００８９】
Ｓ３では、連絡先管理部ＣＩＭは、生成したクエリを、アクセス管理部ＡＣＭに供給する。クエリがアクセス管理部ＡＣＭに供給されると、Ｓ４では、アクセス管理部ＡＣＭは、上述した図８のデータアクセス処理を実行する。
【００９０】
カレントユーザが、宛先の名称に対応するＦＡＸ番号を含むレコードを参照する権限を有していれば、アクセス管理部ＡＣＭは、データアクセス処理によって連絡先テーブルＣＩＴから当該ＦＡＸ番号を取得し、Ｓ５にて、取得したＦＡＸ番号を連絡先管理部ＣＩＭに供給する。連絡先管理部ＣＩＭがＦＡＸ番号を取得すると、Ｓ６にて、連絡先管理部ＣＩＭは、ＦＡＸ番号をＦＡＸコア部Ａ２４に供給する。ＦＡＸコア部Ａ２４がＦＡＸ番号を取得すると、Ｓ７では、ＦＡＸコア部Ａ２４は、ＦＡＸ制御部ＣＴ３を制御して、当該ＦＡＸ番号を用いて、ＦＡＸを宛先に送信する。
【００９１】
ここで、カレントユーザが、宛先の名称に対応するＦＡＸ番号を含むレコードを参照する権限を有していなければ、アクセス管理部ＡＣＭは、データアクセス処理によって連絡先テーブルＣＩＴから当該ＦＡＸ番号を取得せず、Ｓ５にて、ＦＡＸ番号に代えて、エラー通知を連絡先管理部ＣＩＭに供給する。この場合には、Ｓ６にて、連絡先管理部ＣＩＭは、ＦＡＸコア部Ａ２４にエラー通知を供給する。ＦＡＸコア部Ａ２４がエラー通知を取得すると、Ｓ７では、ＦＡＸコア部Ａ２４は、所定のエラー処理、例えば、アプリケーション管理部ＡＰＭを介してＦＡＸＵＩ部Ａ１４に、エラー表示を行わせるためのエラー通知を供給する処理を実行する。
【００９２】
なお、このようなユーザの指示に基づいて特定の処理が実行される際に、特定のコンポーネントがクエリを発行することによって、アクセス管理部ＡＣＭを介してデータベースＤＢにアクセスすることは、図１１のようなデータ（レコード）の参照に限られない。例えば、スキャンＵＩ部Ａ１３は、生成したスキャンデータをユーザごとに管理する指示をユーザから取得することができる。この場合に、スキャンＵＩ部Ａ１３によってユーザから取得された生成指示に基づいて、スキャンコア部Ａ２３は、アクセス管理部ＡＣＭに対して、ユーザごとにスキャンデータを管理する管理テーブルを生成するためのテーブル生成用のクエリ（例えば、図５（Ａ）、（Ｂ）の１０Ａ、１０Ｂ）を供給する。この結果、図６のテーブル生成処理が、アクセス管理部ＡＣＭによって実行される。この結果、テーブル生成用のクエリに基づいて、データベースＤＢ内に、新たなデータテーブルが生成される。そして、テーブル生成用のクエリに基づいて、当該管理テーブルの権限情報（すなわち、新たに生成されたデータテーブルに対するアクセス権限を定義する権限情報）が、アクセス権限テーブルＡＴに記録される。このように、ユーザの指示に基づいて、任意のタイミングで、新たなデータテーブルが生成され得る。この結果、一般ユーザの指示に基づいて、容易に、データテーブルを生成でき、該データテーブルに対するアクセス権限を定義できる。したがって、一般ユーザの指示に基づいて、データの管理およびデータのアクセスの管理を柔軟に行うことができる。
【００９３】
次に、データベースＤＢへのアクセス例として、複合機１００の初回の起動時に行われる処理について説明する。初回の起動時には、ＯＳなどのシステムコンポーネントの起動時にタスクによって、図２のシステムテーブルＵＴ、ＧＴ、ＡＴが生成される。ただし、この時点では、一般テーブルである図３の機能許容テーブルＦＴ、および、連絡先テーブルＣＩＴは、生成されていない。初回の起動時には、システムコンポーネントによって、ユーザ情報管理部ＵＩＭと、連絡先管理部ＣＩＭと、が自動的に起動される。これらのユーザ情報管理部ＵＩＭと、連絡先管理部ＣＩＭとは、初回の起動時のタスクとして、それぞれ、機能許容テーブルＦＴ、連絡先テーブルＣＩＴを生成する処理を実行する。図１２は、機能許容テーブルＦＴ、連絡先テーブルＣＩＴを生成する処理のシーケンス図である。
【００９４】
Ｓ１１では、ユーザ情報管理部ＵＩＭは、機能許容テーブルＦＴを生成するためのテーブル生成用のクエリ１０Ａ（図５（Ａ））を生成する。Ｓ１１の処理は、他のコンポーネントからの要求の有無に拘わらずに、ユーザ情報管理部ＵＩＭによって、初回起動時に自動的に行われる。なお、このように自動的に生成されるクエリには、ユーザＩＤ１１として、システムユーザのユーザＩＤ（図２（Ａ））が用いられる。Ｓ１２では、生成されたテーブル生成用のクエリを、アクセス管理部ＡＣＭに供給する。テーブル生成用のクエリを取得したアクセス管理部ＡＣＭは、Ｓ１３にて、図６のテーブル生成処理を実行する。この結果、データベースＤＢに機能許容テーブルＦＴが生成される。Ｓ１４では、機能許容テーブルＦＴの生成が成功したことを示す通知が、アクセス管理部ＡＣＭからユーザ情報管理部ＵＩＭに供給される。
【００９５】
同様に、Ｓ２１では、連絡先管理部ＣＩＭは、連絡先テーブルＣＩＴを生成するためのテーブル生成用のクエリ１０Ｂ（図５（Ｂ））を生成する。Ｓ２１の処理は、他のコンポーネントからの要求の有無に拘わらずに、連絡先管理部ＣＩＭによって、初回起動時に自動的に行われる。Ｓ２２では、生成されたテーブル生成用のクエリを、アクセス管理部ＡＣＭに供給する。テーブル生成用のクエリを取得したアクセス管理部ＡＣＭは、Ｓ２３にて、図６のテーブル生成処理を実行する。この結果、データベースＤＢに連絡先テーブルＣＩＴが生成される。Ｓ２４では、連絡先テーブルＣＩＴの生成が成功したことを示す通知が、アクセス管理部ＡＣＭから連絡先管理部ＣＩＭに供給される。
【００９６】
ただし、この時点では、機能許容テーブルＦＴや連絡先テーブルＣＩＴには、レコードは記録されてはいない。機能許容テーブルＦＴテーブルのレコードは、例えば、管理ユーザの指示に基づいて記録され、連絡先テーブルＣＩＴのレコードは、例えば、一般のユーザの指示に基づいて記録される。
【００９７】
このように、複合機１００の初回の起動時に、予め定められた特定種類のデータテーブル（具体的には、機能許容テーブルＦＴと連絡先テーブルＣＩＴ）が生成され、これらのデータテーブルについて、権限情報がアクセス権限テーブルＡＴに記録される。そして、の２回目以降の起動時には、このようなデータテーブルの生成は、行われない。
【００９８】
この結果、特定種類のデータテーブルについては、ユーザの指示の有無に拘わらずに生成されるので、ユーザの負担を軽減できる。また、ユーザの指示に基づいて生成されるデータテーブルと、自動的に生成されるデータテーブルと、を、データベースＤＢとアクセス管理部ＡＣＭとを用いて、一元的に管理できる。
【００９９】
以上説明した本実施例によれば、コンポーネント（たとえば、連絡先管理部ＣＩＭ）は、ＵＩ部Ａ１１〜Ａ１４のいずれかに対するユーザの指示（例えば、図１１のＦＡＸ実行指示）に応じてデータベースＤＢに格納されている特定のデータ（例えば、ＦＡＸ番号）にアクセスすべき際に、特定のユーザを示すユーザ識別情報（例えば、カレントユーザを示すユーザＩＤ）と、アクセスすべき特定のデータを含む特定のデータテーブルを示すテーブル識別情報（例えば、連絡先テーブルＣＩＴのテーブル名）と、特定のデータを示すデータ識別情報（例えば、ＦＡＸ番号を検索する検索条件式）と、を含むクエリ（例えば、参照用のクエリ）を、アクセス管理部ＡＣＭに供給する（図１１のＳ１〜Ｓ３）。アクセス管理部ＡＣＭは、図１１のＳ４のデータアクセス処理にて、クエリを取得した場合に、クエリに含まれるユーザ識別情報とテーブル識別情報とを用いて、アクセス権限テーブルＡＴを参照することによって、特定のデータに対するアクセス可否を判断する権限チェック処理（図８のＳ３２５）を実行する。アクセス管理部ＡＣＭは、アクセス可否の判断結果に基づく情報（具体的には、アクセスが許容される場合には当該特定のデータ、アクセスが許容されない場合にはエラー通知）が、クエリの供給元のコンポーネント（例えば、連絡先管理部ＣＩＭ）に供給する（図１１のＳ５）。
【０１００】
したがって、アクセス管理部ＡＣＭが、複数個のコンポーネントのそれぞれから、クエリを取得し、クエリの供給元のコンポーネントによるデータに対するアクセス可否を判断する。この結果、ユーザの指示に応じて行われる複数個のコンポーネントによるデータに対するアクセスを、アクセス管理部ＡＣＭによって一元的に管理できる。したがって、例えば、複数個のコンポーネントのそれぞれが、複数個のアプリケーションのために、アクセス管理を行う必要がないので、複数個のコンポーネントによるデータへのアクセスを容易に管理できる。例えば、管理のレベルのばらつきの低減や、コンポーネントの開発工数の低減を図ることができる。
【０１０１】
より具体的に説明すると、例えば、新たな特定の処理を行うためのＵＩ部やコア部を追加する場合に、これらのアプリケーションが利用するデータをデータベースＤＢから取得する処理や、利用するデータをデータベースＤＢに格納する処理を、これらのアプリケーションに実装する必要がない。これらのアプリケーションは、クエリをアクセス管理部ＡＣＭに供給する機能を持つか、クエリをアクセス管理部ＡＣＭに供給する他のコンポーネントを利用すれば良い。また、アプリケーションなどのコンポーネントごとに、データベースＤＢにアクセスする機能を持つと、アプリケーションごとに、アクセス権限の有無のチェックの仕組みやアクセス権限がない場合の扱いが異なり得る。この結果、データベースＤＢに格納されたデータのセキュリティの維持が困難になる。本実施例では、そのような不都合を抑制することができる。
【０１０２】
データベースＤＢは、管理ユーザによるアクセスが許容され、管理ユーザとは異なる一般ユーザによるアクセスが許容されないシステムテーブルと、一般ユーザによるアクセスが許容され得る一般テーブルと、を含んでいる。そして、一般テーブルに記録されたデータに対するアクセス権限を定義するアクセス権限テーブルＡＴは、システムテーブルに含まれる（図２）。この結果、一般テーブルに対するアクセス権限を、セキュリティが確保されたアクセス権限テーブルＡＴを用いて一元的に管理することができる。
【０１０３】
また、参照用のクエリ（図５（Ｅ））は、構造化問い合わせ言語（ＳＱＬ）に従って記述され、テーブル識別情報としてのテーブル名と、データ識別情報としての検索条件式を含むＳＱＬ文と、ＳＱＬ文に付加されたユーザＩＤ１１と、を含む。この結果、連絡先管理部ＣＩＭなどのコンポーネントは、ＳＱＬ文を利用して、容易にデータベースを利用することができる。この結果、例えば、コンポーネントの開発工数の低減を図ることができる。
【０１０４】
さらに、上記実施例では、アクセス権限テーブルＡＴは、データテーブルのそれぞれについて、データテーブルごとに定義されるテーブル権限が定義されることを示す情報と、データテーブルに含まれるデータ（レコード）ごとに定義されるレコード権限が定義されることを示す情報と、のいずれかを示す権限タイプ情報を含む（図２（Ｃ））。この結果、テーブル権限とレコード権限を容易に定義することができ、例えば、データの種類に応じて、アクセス権限を柔軟に管理できる。
【０１０５】
さらに、上記実施例では、特定のコンポーネントが、データテーブルの生成を要求するテーブル生成用のクエリ（図５（Ａ）、（Ｂ））をアクセス管理部ＡＣＭに供給する。テーブル生成用のクエリは、権限タイプ情報１２を含む。これに応じて、図６のテーブル生成処理にて、アクセス管理部ＡＣＭは、テーブル生成用のクエリに基づいて、データテーブルを生成する（図６のＳ１２０）。テーブル生成用のクエリに、テーブル権限を示す権限タイプ情報１２が含まれる場合に、生成されるデータテーブルについて、テーブル権限が定義されることを示す権限タイプ情報と、生成されるデータテーブルへのアクセス権限を定義する情報（オーナーＩＤと、オーナー権限情報と、グループ権限情報と、その他の権限情報）とが、テーブル生成用のクエリに含まれる権限情報１３に従ってアクセス権限テーブルＡＴに記録される（図６のＳ１３０）。そして、テーブル生成用のクエリに、レコード権限が定義されることを示す情報が含まれる場合には、生成されるデータテーブルについて、テーブル権限が定義されることを示す権限タイプ情報がアクセス権限テーブルＡＴに記録される（図６のＳ１３０）。この結果、テーブル生成用のクエリに基づいて生成されるデータテーブル内のデータへのアクセスについて、テーブル権限とレコード権限とを容易に管理することができる。
【０１０６】
さらに、上記実施例では、特定のコンポーネントが、生成済のデータテーブルへのデータ（レコード）の記録を要求するレコード追加用のクエリ（図５（Ｃ）、（Ｄ））をアクセス管理部ＡＣＭに供給する。レコード追加用のクエリは、対象データテーブルが、レコード権限が定義されるべきテーブルである場合には、権限情報１４を含む（図５（Ｄ））。
これに応じて、図７のレコード追加処理にて、アクセス管理部ＡＣＭは、レコード追加用のクエリに基づいて、対象データテーブルに、記録対象のデータ（レコード）と、権限情報と、を記録する（図７の２５５）。この結果、データ（レコード）ごとにレコード権限を定義する情報がデータテーブルに記録されるので、レコード権限を容易に管理することができる。
【０１０７】
Ｂ．変形例：
（１）上記実施例の複合機１００に代えて、プリンタ部１４０を備えるが、スキャナ部１５０を備えないプリンタが採用されても良く、プリンタ部１４０を備えるが、スキャナ部１５０を備えないスキャナが採用されてもよい。すなわち、一般的に言えば、画像の印刷処理と、画像の読取処理と、の少なくとも一方を含む画像処理を実行する画像処理実行部を備える装置が、採用可能である。また、採用される装置の種類に応じて、複数個のコンポーネントは、当該画像処理を画像処理実行に実行させるための１個以上の画像処理アプリケーション（例えば、本実施例のＵＩ部Ａ１１〜Ａ１４やコア部Ａ２１〜Ａ２４）を含むことが好ましい。さらに、複数個のコンポーネントは、画像処理アプリケーションに加えて、他の処理を行うアプリケーションを含んでもよい。例えば、複数個のコンポーネントは、管理ユーザに対して、管理対象のデータ（例えば、システムテーブルＵＴ、ＧＴ、ＡＴに格納されるデータ）の編集を行うためのＷＥＢサービスを提供するＷＥＢアプリケーションを含んでも良い。
【０１０８】
（２）上記実施例のコア部Ａ２１〜Ａ２４のうちの少なくとも一部と、制御部ＣＴ１〜ＣＴ３とのうちの対応する一部と、は１個のソフトウェアコンポーネントとして、構成されても良い。例えば、ＰＣ印刷コア部Ａ２１と、印刷制御部ＣＴ１と、が１個のソフトウェアコンポーネントとして構成され、コピーコア部Ａ２２と、印刷制御部ＣＴ１および読取制御部ＣＴ２と、が１個のソフトウェアコンポーネントとして構成され、スキャンコア部Ａ２３と読取制御部ＣＴ２と、が１個のソフトウェアコンポーネントとして構成され、ＦＡＸコア部Ａ２４と、ＦＡＸ制御部ＣＴ３と、が１個のソフトウェアコンポーネントとして構成されても良い。
【０１０９】
（３）上記実施例では、複数個のコンポーネントは、連絡先テーブルＣＩＴへアクセスするためのクエリを生成する連絡先管理部ＣＩＭや、機能許容テーブルＦＴへのアクセスするためのクエリを生成するユーザ情報管理部ＵＩＭを、含んでいる。これによって、複数個のアプリケーションが、連絡先管理部ＣＩＭやユーザ情報管理部ＵＩＭを利用して、容易にデータベースＤＢへのアクセスを実行できるので、アプリケーションの開発工数を低減している。これに代えて、各アプリケーションが、クエリを生成して、アクセス管理部ＡＣＭに供給する機能を備えても良い。
【０１１０】
（４）上記実施例では、テーブル権限テーブルと、レコード権限テーブルと、の２種類のデータテーブルを利用できるが、テーブル権限テーブルと、レコード権限テーブルと、のいずれか一方だけが利用できる構成であっても良い。例えば、テーブル権限テーブルだけが利用できる構成であれば、全ての権限情報は、常にアクセス権限テーブルＡＴに記録され、データテーブルには記録されなくても良く、権限情報のうち、権限タイプ情報は、省略されて良い。
【０１１１】
（５）なお、クエリは、ＳＱＬに従うクエリに限らず、他の言語（例えば、オリジナルの言語）に従うクエリであっても良い。また、クエリは、参照、追加、更新、削除、テーブル生成の全ての種類が無くても良く、少なくとも参照を含む必要な種類のアクセスのためのクエリだけが用いられても良い。いずれの場合であっても、クエリは、データベースＤＢのアクセスを定義付ける部分に加えて、ユーザＩＤを含むことが好ましい。これによって、アクセス管理部ＡＣＭは、ユーザＩＤを利用して、アクセス権限の有無を一元的に適切に判断することができる。
【０１１２】
（６）上記実施例において、システムテーブルと、一般テーブルと、を区別することなく、全てのデータテーブルが、アクセス権限テーブルＡＴを用いて、管理されても良い。
【０１１３】
（７）上記各実施例において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部あるいは全部をハードウェアに置き換えるようにしてもよい。
【０１１４】
以上、実施例、変形例に基づき本発明について説明してきたが、上記した発明の実施の形態は、本発明の理解を容易にするためのものであり、本発明を限定するものではない。本発明は、その趣旨並びに特許請求の範囲を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物が含まれる。
【符号の説明】
【０１１５】
１００...複合機、１１０...ＣＰＵ、１２０...揮発性記憶装置、１３０...不揮発性記憶装置、１４０...プリンタ部、１５０...スキャナ部、１６０...操作部、１７０...表示部、５００...端末装置、２９０...電話回線ＩＦ、Ａ１１〜Ａ１４...ＵＩ部、Ａ２１〜Ａ２４...コア部、ＦＴ...機能許容テーブル、ＤＢ...データベース、ＰＧ...コンピュータプログラム、ＵＭ...ユーザ管理部、ＵＴ...ユーザテーブル、ＧＴ...グループテーブル、ＡＴ...アクセス権限テーブル、ＦＴ...機能許容テーブル、ＣＴ１...印刷制御部、ＣＴ２...読取制御部、ＣＴ３...ＦＡＸ制御部、ＡＣＭ...アクセス管理部、ＪＢＲ...外部データ解析部、ＣＩＭ...連絡先管理部、ＵＩＭ...ユーザ情報管理部、ＣＩＴ...連絡先テーブル、ＡＰＭ...アプリケーション管理部、ＬＮＴ...ネットワーク、ＡＴＰ...認証処理部
【図１】
0006497224.tif 000002
【図２】
0006497224.tif 000003
【図３】
0006497224.tif 000004
【図４】
0006497224.tif 000005
【図５】
0006497224.tif 000006
【図６】
0006497224.tif 000007
【図７】
0006497224.tif 000008
【図８】
0006497224.tif 000009
【図９】
0006497224.tif 000010
【図１０】
0006497224.tif 000011
【図１１】
0006497224.tif 000012
【図１２】
0006497224.tif 000013