以下、発明の実施の形態を通じて本発明を説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではない。また、実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
図1は、実施形態に係る行政システム10の一例を示す。行政システム10は、データ検索システム100を備える。また、行政システム10は、サービスで利用するデータのデータ要求元の一例としての受給台帳システム110を備える。また、行政システム10は、サービスで利用するデータの取得先の一例としての高齢者支援システム121、生活保護システム122、および共通データベース123を備える。
高齢者支援システム121は、高齢者支援サービスを提供するシステムであって、高齢者支援サービスのデータを保持する。生活保護システム122は、生活保護サービスを提供するシステムであって、生活保護サービスのデータを保持する。共通データベース123は、複数のシステムが共通して利用するデータを格納する。共通データベース123は、住民情報サービスのデータおよび住民所得情報サービスのデータを格納する。
データ検索システム100は、受給台帳システム110からの要求に応じて、利用者に提供するサービスのデータを、高齢者支援システム121、生活保護システム122、および共通データベース123の少なくともいずれか一つから取得する。そして、データ検索システム100は、取得したデータを、受給台帳システム110へ送信する。
データ検索システム100は、高齢者支援情報検索サービス機能、生活保護情報検索サービス機能、住民情報検索サービス機能、および住民所得情報検索サービス機能を有する。高齢者支援情報検索サービス機能は、高齢者支援システム121から、高齢者支援サービスのデータを取得する。生活保護情報検索サービス機能は、生活保護システム122から、生活保護サービスのデータを取得する。住民情報検索サービス機能は、共通データベース123から、住民情報サービスのデータを取得する。住民所得情報検索サービス機能は、共通データベース123から、住民所得情報サービスのデータを取得する。
受給台帳システム110は、サービスの利用者に提供するデータを、データ検索システム100に対して要求する。そして、受給台帳システム110は、要求に応じたデータをデータ検索システム100から取得する。さらに、受給台帳システム110は、取得したデータを、利用者に提供する。
たとえば、受給台帳システム110が備える端末装置から高齢者支援サービスが選択された場合、受給台帳システム110は、高齢者支援サービスのデータを、データ検索システム100に対して要求する。これに応じて、データ検索システム100は、高齢者支援システム121から、高齢者支援サービスのデータを取得する。そして、受給台帳システム110は、高齢者支援サービスのデータを、データ検索システム100から取得する。さらに、受給台帳システム110は、取得した高齢者支援サービスのデータを、端末装置の画面上に表示する。
受給台帳システム110は、高齢者支援システム121、生活保護システム122、および共通データベース123が保持するそれぞれのデータを、データ検索システム100に要求することで、データ検索システム100から取得できる。このため、受給台帳システム110は、高齢者支援システム121、生活保護システム122、および共通データベース123のそれぞれに対する通信インタフェースを設ける必要が無く、データ検索システム100に対する通信インタフェースだけを設ければよい。
特に、受給台帳システム110は、高齢者支援システム121、生活保護システム122、および共通データベース123のそれぞれに対する通信接続方式が異なる場合がある。たとえば、高齢者支援システム121との通信接続方式にWebサービス接続が用いられ、生活保護システム122との通信接続方式にDB2(登録商標)用のデータベース接続が用いられ、共通データベース123との通信接続にOracle(登録商標)用のデータベース接続が用いられているとする。このような場合であっても、受給台帳システム110は、データ検索システム100との通信接続方式の通信インタフェースだけを設ければよい。
行政システム10が備えるいずれかのシステムを変更または削除する場合は、変更または削除するシステムとデータ検索システム100との通信インタフェースだけを変更または削除すればよい。また、行政システム10に対してシステムを追加する場合、追加するシステムは、データ検索システム100に対する通信インタフェースだけを設ければよい。これにより、追加するシステムは、高齢者支援システム121、生活保護システム122、または共通データベース123が保持するデータを、データ検索システム100に要求することで、データ検索システム100から取得できる。
このように、本実施形態の行政システム10によれば、既存のデータ要求元システムおよびデータ提供元システムに影響を及ぼすことなく、システムの追加・変更・削除をおこなうことができるので、システムの構築および管理にかかるコストを削減できる。また、行政システム10が備えるそれぞれのシステムは、複数種類の通信ポートを開放する必要がないので、行政システム10が備えるそれぞれのシステムにおけるセキュリティ効果を向上できる。
図2は、実施形態に係るデータ検索システム100の機能構成例を示す。データ検索システム100は、サービスインタフェース部210、権限判定処理部220、検索処理部230、フィルタ処理部240、および格納部250を備える。
格納部250は、サービスインタフェース部210、権限判定処理部220、検索処理部230、またはフィルタ処理部240によって参照される各種定義ファイルを予め格納する。たとえば、格納部250は、複数のサービス識別情報のそれぞれに対する権限判定ルールの対応付けを予め定義した権限判定ルール定義ファイルを格納する。また、格納部250は、複数のサービス識別情報のそれぞれに対するデータ検索処理の対応付けを予め定義したサービス定義ファイルを格納する。また、格納部250は、複数のフィルタリング条件を定義したフィルタリング条件定義ファイルを予め格納する。
サービスインタフェース部210は、要求電文を受給台帳システム110から取得する。要求電文には、サービス識別情報、ユーザ情報、検索パラメータなどが示されている。サービスインタフェース部210は、取得したサービス識別情報、ユーザ情報、検索パラメータなどを示すValueObjectを生成する。そして、サービスインタフェース部210は、生成したValueObjectを権限判定処理部220に送信する。これにより、サービスインタフェース部210は、権限判定処理部220に対して、権限判定処理部220による権限判定処理および検索処理部230によるデータ検索処理を要求する。
権限判定処理部220は、サービスインタフェース部210から送信されたValueObjectを取得する。権限判定処理部220は、取得したValueObjectを参照することにより、サービスおよびユーザを特定する。権限判定処理部220は、格納部250に格納されている権限判定ルール定義ファイルを参照することにより、特定したサービスに対応付けられている権限判定ルールを特定する。そして、権限判定処理部220は、特定した権限判定ルールを用いて、特定したユーザの権限を判定する。
権限判定処理部220は、取得したValueObjectを参照することにより、ユーザが属する部署名を特定してもよい。そして、権限判定処理部220は、特定した部署名で、ユーザの権限を判定してもよい。また、権限判定処理部220は、取得したValueObjectを参照することにより、ユーザの職位名を特定してもよい。そして、権限判定処理部220は、特定した職位名で、ユーザの権限を判定してもよい。
権限判定処理によって特定したサービスに対する特定したユーザの権限が有ると判定された場合、権限判定処理部220は、サービス識別情報および検索パラメータが示されたValueObjectを検索処理部230に引き渡す。これにより、権限判定処理部220は、検索処理部230に対してデータ検索処理を要求する。一方、権限判定処理によって特定したサービスに対する特定したユーザの権限が無いと判定した場合、権限判定処理部220は、検索処理部230に対してデータ検索処理を要求せずに、権限判定処理の結果を示すValueObjectを、サービスインタフェース部210へ送信する。
検索処理部230は、権限判定処理部220から送信されたValueObjectを取得する。検索処理部230は、取得したValueObjectを参照することにより、サービスおよび検索パラメータを特定する。また、検索処理部230は、格納部250に格納されているサービス定義ファイルを参照することにより、特定したサービスに対応付けられているデータ検索処理を特定する。
そして、検索処理部230は、特定したデータ検索処理により、特定したサービスに応じたデータ検索処理をおこなう。たとえば、検索処理部230は、特定したサービスに応じた検索問い合わせ文を、特定したサービスに応じたあて先へ送信する。
これにより、検索処理部230は、特定したサービスに応じた検索結果データを取得する。たとえば、検索処理部230は、特定したサービスに応じた検索結果データを、高齢者支援システム121、生活保護システム122、または共通データベース123から取得する。検索処理部230は、取得した検索結果データを示すValueObjectを生成する。検索処理部230は、生成したValueObjectを権限判定処理部220へ送信する。
フィルタ処理部240は、検索処理部230が取得した検索結果データに対して、データ項目単位でのフィルタリング処理をおこなう。たとえば、検索処理部230は、サービス識別情報、ユーザ情報、および検索結果データが示されたValueObjectをフィルタ処理部240へ送信する。
フィルタ処理部240は、検索処理部230から送信されたValueObjectを取得する。フィルタ処理部240は、取得したValueObjectを参照することにより、サービスおよびユーザを特定する。また、フィルタ処理部240は、格納部250に格納されているサービス定義ファイルを参照することにより、特定したサービスに対応付けられているフィルタリング条件を特定する。
フィルタ処理部240は、格納部250に格納されているフィルタリング条件定義ファイルを参照することにより、特定したフィルタリング条件から、権限判定ルールを、取得した検索結果データのデータ項目ごとに特定する。そして、フィルタ処理部240は、取得した検索結果データのデータ項目ごとに、特定した権限判定ルールを用いて、特定したユーザの権限を判定する。
フィルタ処理部240は、ユーザが属する部署名を特定してもよい。そして、フィルタ処理部240は、特定した部署名で、取得した検索結果データのデータ項目ごとのユーザの権限を判定してもよい。また、フィルタ処理部240は、ユーザの職位名を特定してもよい。そして、フィルタ処理部240は、特定した職位名で、取得した検索結果データのデータ項目ごとのユーザの権限を判定してもよい。
フィルタ処理部240は、取得した検索結果データから、権限判定処理によってユーザの権限が有ると判定されたデータ項目のデータを抽出する。そして、フィルタ処理部240は、抽出したデータ、すなわちフィルタリング処理後の検索結果データが示されたValueObjectを検索処理部230に送信する。検索処理部230は、フィルタリング処理後の検索結果データが示されたValueObjectを取得する。なお、フィルタ処理部240は、フィルタリング処理後の検索結果データが示されたValueObjectを、権限判定処理部220またはサービスインタフェース部210へ送信してもよい。
権限判定処理部220は、検索結果データが示されたValueObjectを検索処理部230から取得する。そして、権限判定処理部220は、取得したValueObjectを、サービスインタフェース部210へ送信する。
サービスインタフェース部210は、検索結果データが示されたValueObjectを権限判定処理部220から取得する。そして、サービスインタフェース部210は、検索結果データが示された応答電文を生成する。さらに、サービスインタフェース部210は、生成した応答電文を、受給台帳システム110へ送信する。
図3は、検索処理部230の機能構成例を示す。検索処理部230は、検索部310を有する。検索処理部230は、事前固有処理実行部322、カラム値生成部324、および事後固有処理実行部328をさらに有する。
検索部310は、権限判定処理部220から送信されたValueObjectを取得する。検索部310は、取得したValueObjectを参照することにより、サービスおよび検索パラメータを特定する。また、検索部310は、格納部250に格納されているサービス定義ファイルを参照することにより、特定したサービスに対応付けられているデータ検索処理を特定する。
そして、検索部310は、特定したデータ検索処理を用いて、特定したサービスに応じたデータ検索処理をおこなう。たとえば、検索部310は、特定したサービスに応じたSQL文、XML文などの検索問い合わせ文を、特定したサービスに応じたあて先へ送信する。
これにより、検索部310は、特定したサービスに応じた検索結果データを取得する。たとえば、検索部310は、特定したサービスに応じた検索結果データを、高齢者支援システム121、生活保護システム122、または共通データベース123から取得する。
そして、検索部310は、取得した検索結果データを示すValueObjectを生成する。さらに、検索部310は、生成したValueObjectを権限判定処理部220へ送信する。
事前固有処理実行部322は、検索処理部230によるデータ検索処理が実行される前におこなうべきサービス固有の処理である事前固有処理をおこなう。たとえば、事前固有処理実行部322は、サービス識別情報を検索部310から取得する。そして、事前固有処理実行部322は、格納部250に格納されているサービス定義ファイルを参照することにより、取得したサービス識別情報に対応付けられている事前固有処理を、実行すべき事前固有処理として特定する。事前固有処理をサービス定義ファイルに定義することで、バリデーションチェック処理などの事前固有処理を、容易に管理することができる。
カラム値生成部324は、サービス固有のデータ項目値を生成するカラム値生成ロジックを実行する。たとえば、カラム値生成部324は、サービス識別情報を検索部310から取得する。そして、カラム値生成部324は、格納部250に格納されているサービス定義ファイルを参照することにより、取得したサービス識別情報に対応付けられているカラム値生成ロジックを、実行すべきカラム値生成ロジックとして特定する。
いずれのデータベースにも存在しないデータ項目を、要求元が要求する場合がある。このような場合であっても、カラム値生成部324は、検索部310が取得した他のデータ項目のデータなどから、データベースに存在しないデータ項目のデータを生成することができる。たとえば、データベースには「生年月日」というデータ項目が存在するが、いずれのデータベースにも存在しない「年齢」というデータ項目を要求元が要求したとする。この場合、カラム値生成部324は、検索部310が取得したデータ項目「生年月日」のデータに基づいて、データ項目「年齢」のデータを生成することができる。
事後固有処理実行部328は、検索処理部230によるデータ検索処理が実行された後におこなうべきサービス固有の処理である事後固有処理をおこなう。たとえば、事後固有処理実行部328は、サービス識別情報を検索部310から取得する。そして、事後固有処理実行部328は、格納部250に格納されているサービス定義ファイルを参照することにより、取得したサービス識別情報に対応付けられている事後固有処理を、実行すべき事後固有処理として特定する。事前固有処理をサービス定義ファイルに定義することで、データ加工処理などの事後固有処理を、容易に管理することができる。
図4は、検索部310の機能構成例を示す。検索部310は、データ検索処理特定部400およびサービス識別情報取得部402を備える。また、検索部310は、検索パラメータ取得部412、検索問い合わせ文生成部414、通信接続部416、データ取得部418、第1取得件数特定部420、第2取得件数特定部422、送信件数特定部423、送信開始位置特定部424、およびデータ送信部426を備える。
サービス識別情報取得部402は、サービスで利用するデータのデータ要求元から送信された、サービスを識別するためのサービス識別情報を取得する。たとえば、サービス識別情報取得部402は、権限判定処理部220から通信接続部430を介して取得したValueObjectから、上記サービス識別情報を取得する。
データ検索処理特定部400は、格納部250が格納する複数のデータ検索処理の中から、サービス識別情報取得部402が取得したサービス識別情報に対応付けられているデータ検索処理を特定する。データ検索処理特定部400は、構成情報特定部404、処理プログラム特定部406、および通信接続方式特定部410を有する。
構成情報特定部404は、サービス識別情報取得部402が取得したサービス識別情報に対応付けられている、検索問い合わせ文の構成情報を特定する。たとえば、構成情報特定部404は、SQL文の構成情報を特定する。検索問い合わせ文の構成情報は、テーブル名、データ項目名、絞り込み条件を含む。構成情報特定部404は、格納部250に格納されているサービス定義ファイルを参照することにより、サービス識別情報取得部402が取得したサービス識別情報に対応付けられている検索問い合わせ文の構成情報を特定してもよい。
処理プログラム特定部406は、格納部250が格納する複数の処理プログラムの中から、サービス識別情報取得部402が取得したサービス識別情報に対応付けられている処理プログラムを特定する。処理プログラム特定部406は、格納部250に格納されているサービス定義ファイルを参照することにより、サービス識別情報取得部402が取得したサービス識別情報に対応付けられている処理プログラムを特定してもよい。
たとえば、処理プログラム特定部406は、データベース接続によるデータ検索処理をおこなう処理プログラムを特定する。他の例では、処理プログラム特定部406は、Webサービス接続またはHTTP接続によるデータ検索処理をおこなう処理プログラムを特定する。
処理プログラムがDAO(Data Access Object)であって、DAO定義ファイルに定義されている場合、処理プログラム特定部406は、格納部250に格納されているサービス定義ファイルを参照することにより、サービス識別情報に対応付けられている、DAO定義ファイルを特定してもよい。そして、処理プログラム特定部406は、特定したDAO定義ファイルを参照することにより、DAOを特定してもよい。
通信接続方式特定部410は、格納部250が格納する複数の通信接続方式の中から、サービス識別情報取得部402が取得したサービス識別情報に対応付けられている通信接続方式を特定する。通信接続方式特定部410は、格納部250に格納されているサービス定義ファイルを参照することにより、サービス識別情報に対応付けられている通信接続方式を特定してもよい。
たとえば、通信接続方式特定部410は、通信接続方式としてデータベース接続を特定する。他の例では、通信接続方式特定部410は、通信接続方式としてWebサービス接続またはHTTP接続を特定する。
通信接続方式がシステム接続定義ファイルに定義されている場合、通信接続方式特定部410は、格納部250に格納されているサービス定義ファイルを参照することにより、サービス識別情報に対応付けられている、システム接続定義ファイルを特定してもよい。そして、通信接続方式特定部410は、特定したシステム接続定義ファイルを参照することにより、通信接続方式を特定してもよい。
検索パラメータ取得部412は、サービスで利用するデータのデータ要求元から送信された検索パラメータを取得する。たとえば、検索パラメータ取得部412は、権限判定処理部220から通信接続部430を介して取得したValueObjectから、上記検索パラメータを取得する。検索パラメータ取得部412は、データ要求元から送信された不要データ項目の識別情報をさらに取得してもよい。検索パラメータ取得部412は、データ要求元から送信された絞り込み条件をさらに取得してもよい。検索パラメータ取得部412は、データ要求元から送信されたソート条件をさらに取得してもよい。
検索問い合わせ文生成部414は、構成情報特定部404が特定した構成情報および検索パラメータ取得部412が取得した検索パラメータを用いて、検索問い合わせ文を生成する。たとえば、検索問い合わせ文生成部414は、構成情報特定部404が特定した構成情報および検索パラメータ取得部412が取得した検索パラメータを用いて、SQL文を生成する。
検索パラメータ取得部412が不要データ項目の識別情報を取得した場合、検索問い合わせ文生成部414は、上記不要データ項目以外のデータを取得するためのSQL文を生成してもよい。検索パラメータ取得部412が絞り込み条件を取得した場合、検索問い合わせ文生成部414は、上記絞り込み条件に合致するデータを取得するためのSQL文を生成してもよい。検索パラメータ取得部412がソート条件を取得した場合、検索問い合わせ文生成部414は、取得したソート条件にしたがって検索結果データがソートされる検索問い合わせ文を生成してもよい。
通信接続部416は、通信接続方式特定部410によって特定された通信接続方式により、サービスで利用するデータのデータ取得先に通信接続する。たとえば、通信接続部416は、JDBCドライバによるデータベース接続、Webサービス接続、HTTP接続などの通信接続方式により、データ取得先に通信接続する。
データ取得部418は、データ検索処理特定部400が特定したデータ検索処理により、サービスで利用するデータを取得する。具体的には、データ取得部418は、処理プログラム特定部406が特定した処理プログラムにより、サービスで利用するデータを取得する。また、データ取得部418は、通信接続方式特定部410が特定した通信接続方式により、サービスで利用するデータを取得する。
また、データ取得部418は、検索問い合わせ文生成部414が生成した検索問い合わせ文によってデータベースから検索されたデータのうちの、第1取得件数特定部420が特定した取得件数のデータを、データベースから取得してもよい。
データ取得部418は、検索問い合わせ文に該当するデータのデータ件数が、第1取得件数特定部420が特定した取得件数よりも多い場合は、第1取得件数特定部420が特定した取得件数のデータを、データベースから取得してもよい。また、データ取得部418は、検索問い合わせ文に該当するデータのデータ件数が、第1取得件数特定部420が特定した取得件数よりも多い場合は、所定のエラー処理をおこなってもよい。
第1取得件数特定部420および第2取得件数特定部422の双方が取得件数を特定する場合がある。このとき、第2取得件数特定部422が特定した取得件数が、前記第1取得件数特定部が取得した取得件数よりも少ない場合、データ取得部418は、第2取得件数特定部422が特定した取得件数のデータを、データベースから取得してもよい。一方、第2取得件数特定部422が特定した取得件数が、第1取得件数特定部420が特定した取得件数よりも多い場合、データ取得部418は、第1取得件数特定部420が特定した取得件数のデータを、データベースから取得してもよい。
検索問い合わせ文生成部414が検索問い合わせ文を生成した場合、データ取得部418は、生成した検索問い合わせ文により、サービスで利用するデータを取得してもよい。たとえば、検索問い合わせ文生成部414がSQL文を生成した場合、データ取得部418は、生成したSQL文により、サービスで利用するデータを取得してもよい。
第1取得件数特定部420は、サービス識別情報取得部402が取得したサービス識別情報に対応付けられている取得件数を特定する。たとえば、第1取得件数特定部420は、格納部250に格納されているサービス定義ファイルを参照することにより、サービス識別情報に対応付けられている取得件数を特定する。
第2取得件数特定部422は、サービスで利用するデータのデータ要求元が要求する取得件数を特定する。たとえば、第2取得件数特定部422は、通信接続部430を介して権限判定処理部220から取得したValueObjectを参照することにより、データ要求元が要求する取得件数を特定する。
送信件数特定部423は、サービスで利用するデータのデータ要求元が要求する送信件数を特定する。たとえば、送信件数特定部423は、通信接続部430を介して権限判定処理部220から取得したValueObjectを参照することにより、データ要求元が要求する送信件数を特定する。
送信開始位置特定部424は、データの要求元が要求する、データの送信開始位置を特定する。たとえば、送信開始位置特定部424は、通信接続部430を介して権限判定処理部220から取得したValueObjectを参照することにより、上記送信開始位置を特定する。
データ送信部426は、データ取得部418が取得したデータを、データ要求元へ送信する。たとえば、データ送信部426は、データ取得部418が取得したデータを示すValueObjectを生成した後に、生成したValueObjectを通信接続部430を介して権限判定処理部220へ送信する。
送信件数特定部423が送信件数を特定した場合、データ取得部418は、検索問い合わせ文生成部414が生成した検索問い合わせ文によってデータベースから検索されたデータのうちの、送信件数特定部423が特定した送信件数のデータを、データベースから取得してもよい。また、送信開始位置特定部424が送信開始位置を特定した場合、データ取得部418は、検索問い合わせ文生成部414が生成した検索問い合わせ文によってデータベースから検索されたデータのうちの、送信開始位置特定部424が特定した送信開始位置からのデータを、データベースから取得してもよい。
図5は、データ検索システム100が受け付ける要求電文の一例を示す。要求電文は、「header」タグで示されるヘッダー部510および「body」タグで示されるボディ部520を含む。
ヘッダー部510において、「auth」タグ内には、権限判定処理部220による権限判定処理およびフィルタ処理部240によるフィルタリング処理に用いられるユーザ情報が示される。「auth」タグ内において、「userid」タグには、データ要求元でサービスを利用するユーザの識別情報が設定される。また、「auth」タグ内において、「params」タグ内には、上記ユーザに関するユーザ情報群が設定される。
「params」タグ内において、「param」には、ユーザ情報のパラメータ値が設定される。また、「param」タグの「name」属性には、ユーザ情報名が設定される。たとえば、図5に示す要求電文では、データ要求元のユーザは、個人ID「0000000001」を有する「○○課」の「課長」であることが示されている。
ボディ部520において、「request」タグの「serviceName」属性には、サービス識別情報が設定される。たとえば、図5に示す要求電文では、サービス識別情報として「Jumin」が設定されている。すなわち、図5に示す要求電文には、当該要求電文は「Jumin」サービスを要求するための要求電文であることが示されている。
ボディ部520において、「params」タグ内にはデータ検索処理に用いられる検索パラメータ群が設定される。「params」タグ内において、「param」タグには、検索パラメータのパラメータ値が設定される。また、「param」タグの「itemName」属性には、検索パラメータとするデータ項目の論理名が設定される。論理名とは、データ要求元のシステムに対して公開されるデータ項目の名称を示す。たとえば、図5に示す要求電文では、データ項目「性別」が「男性」が設定されているデータだけを検索するデータ検索処理をデータ検索システム100に対して要求することが示されている。
ボディ部520において、「condition」タグにはデータ検索処理に用いられる絞り込み条件が設定される。ボディ部520において、「unnecessaries」タグ内には、データ要求元において不要なデータ項目群が設定される。「unnecessaries」タグ内において、「item」タグの「name」属性には、不要なデータ項目の論理名が設定される。たとえば、図5に示す要求電文では、不要なデータ項目の論理名として「住所」および「電話番号」が設定されている。
ボディ部520において、「order」タグ内には、検索結果データのソート条件が設定される。「order」タグ内において、「item」タグの「name」属性には、ソートのキー項目とするデータ項目の論理名が設定される。また、「item」タグの「order」属性には、「asc(昇順)」または「desc(降順)」が設定される。たとえば、図5に示す要求電文では、データ項目「個人番号」で昇順ソートすることをデータ検索システム100に対して要求することが示されている。
ボディ部520において、「startRecord」タグには、検索結果データの送信開始位置が設定される。また、「requestCount」タグには、検索結果データの送信件数が設定される。たとえば、図5に示す要求電文では、検索結果データの「1」番目のレコードから「3」件分のレコードを送信するようにデータ検索システム100に対して要求することが示されている。
ボディ部520において、「maxCount」タグには、データベースからのデータの取得件数が設定される。たとえば、図5に示す要求電文では、「10」件分のデータをデータベースから検索するようにデータ検索システム100に対して要求することが示されている。
ボディ部520において、「expired」タグには、DBアクセス時のタイムアウト時間が設定される。たとえば、図5に示す要求電文では、「3」秒以上経過した場合はタイムアウトするようにデータ検索システム100に対して要求することが示されている。
図6は、格納部250が格納するサービス定義ファイルの一例を示す。サービス定義ファイルにおいて、「service」タグ内には、サービスに依存したデータ検索処理を特定するための情報であるサービス定義情報が設定される。サービス定義ファイルにおいて、「services」タグ内には、複数のサービスのサービス定義情報が設定できる。
サービス定義ファイルにおいて、「name」タグには、サービス識別情報が設定される。たとえば、図6に示すサービス定義ファイルには、サービス識別情報として「Jumin」が設定されている。すなわち、図6に示すサービス定義には、当該サービス定義は「Jumin」サービスに依存したデータ検索処理を特定するためのサービス定義情報であることが示されている。
サービス定義ファイルにおいて、「filteringName」タグには、フィルタ処理部240によるフィルタリング処理に用いられるフィルタリング条件名が設定される。サービス定義ファイルにおいて、「daoName」タグには、データ検索処理をおこなうDAOクラスを特定するためのDAO名が設定される。また、「daoServiceName」タグには、データ検索処理をおこなうメソッドおよび通信接続方式が定義されているシステム接続定義ファイルを特定するためのDAOサービス名が設定される。
サービス定義ファイルにおいて、「preLogicName」タグには、事前固有処理実行部322による事前固有処理に用いられる処理プログラム名が設定される。また、「postLogicName」タグには、事後固有処理実行部328による事後固有処理に用いられる処理プログラム名が設定される。また、「conditinLogic」タグには、検索問い合わせ文を構成する絞り込み条件を生成する処理プログラム名が設定される。また、「maxCount」タグには、データベースからのデータの取得件数が設定される。
サービス定義ファイルにおいて、「sql」タグには、データ検索処理に用いる検索問い合わせ文を生成するための構成情報が設定される。「sql」タグ内において、「select」タグ内には、データ取得対象のデータ項目が複数設定される。
「select」タグ内において、「item」タグの「name」属性には、データ取得対象のデータ項目の論理名が設定される。「item」タグの「hide」属性には、当該データ項目をデータ要求元に送信する場合には「true」が設定され、当該データ項目をデータベースから取得するがデータ要求元に送信しない場合には「false」が設定される。
「select」タグ内において、「column」タグの「value」属性には、データ取得対象のデータ項目のカラム名が設定される。「from」タグには、データ取得先のテーブル名が設定される。「where」タグには、絞り込み条件が設定される。「order」タグには、ソート条件が設定される。
たとえば、検索処理部230は、図6に示す構成情報から、以下の検索問い合わせ文を生成することができる。「select kojin_no,name,name_kana,address,tel,birth,blood,sex from JuminTbl where blood=A and sex = ? order by name」。
図7は、検索部310によるデータ検索処理の一例を示す。図7では、共通データベース123に対するデータベース接続によるデータ検索処理の一例を説明する。なお、生活保護システム122に対するデータベース接続によるデータ検索処理については、共通データベース123に対するデータベース接続によるデータ検索処理と同様なので、説明を省略する。
まず、検索部310は、権限判定処理部220から、ValueObjectを取得する(S701)。ValueObjectには、データ要求元から送信された、サービス識別情報、不要データ項目、ソート条件、および検索パラメータが示されている。つぎに、検索部310は、格納部250に格納されている複数のサービス定義ファイルの中から、S701で取得したサービス識別情報に対応付けられているサービス定義ファイルを取得する(S702)。
つぎに、検索部310は、取得したサービス定義ファイルを参照することにより、データ検索処理に用いる検索問い合わせ文の構成情報を特定する(S703)。そして、検索部310は、S703で特定した構成情報およびS701で取得した検索パラメータを用いて、検索問い合わせ文を生成する(S704)。
ここでは、検索部310は、S701で取得した不要データ項目を含む、全てのデータ項目を取得するための検索問い合わせ文を生成する。他の例では、検索部310は、S701で取得した不要データ項目以外のデータ項目を取得するための検索問い合わせ文を生成してもよい。たとえば、検索部310は、データ項目「address」およびデータ項目「tel」以外のデータ項目を取得する検索問い合わせ文を生成してもよい。また、検索部310は、S701で取得したソート条件にしたがって検索結果データがソートされる検索問い合わせ文を生成する。たとえば、図7に示す例では、検索部310は、データ項目「konjin_no」で昇順ソートされる検索問い合わせ文を生成する。サービス定義ファイルおよび要求電文の双方にソート条件が示されている場合、検索部310は、要求電文に示されているソート条件を優先して用いて、検索問い合わせ文を生成してもよい。
つぎに、検索部310は、格納部250に格納されているDAO定義ファイルを参照することにより(S705)、S701で取得したサービス識別情報に対応付けられている処理プログラムを特定する(S706)。たとえば、図7に示す例では、まず、検索部310は、S702で取得したサービス定義ファイルを参照することにより、サービス識別情報「Jumin」に対応付けられているDAO名として「Jumin_dao」を特定する。また、サービス識別情報「Jumin」に対応付けられているDAOサービス名として「Select」を特定する。そして、検索部310は、格納部250に格納されているDAO定義ファイルを参照することにより、DAO名「Jumin_dao」に対応付けられているDAOクラス「RdbmsSelectDAO」を特定する。また、DAOサービス名「Select」に対応付けられているメソッド「select」を特定する。
つぎに、検索部310は、S706で特定した処理プログラムを実行することにより、データベース接続をおこない(S707)、S704で生成した検索問い合わせ文を接続先のデータベースへ送信する(S708)。これにより、検索部310は、接続先のデータベースから検索結果データを取得する(S709)。そして、検索部310は、取得した検索結果データが示されたValueObjectを、権限判定処理部220へ送信する(S710)。フィルタ処理部240によるフィルタリング処理をおこなう場合は、検索部310は、取得した検索結果データが示されたValueObjectを、フィルタ処理部240へ送信してもよい。なお、S709で不要データ項目を含む全てのデータ項目を取得した場合、S710では、取得した検索結果データのうち、不要データ項目以外のデータ項目を、検索結果データとして権限判定処理部220へ送信してもよい。
図8は、検索部310によるデータ検索処理の他の一例を示す。図8では、高齢者支援システム121に対するWebサービス接続によるデータ検索処理の一例を説明する。
まず、検索部310は、権限判定処理部220から、ValueObjectを取得する(S801)。ValueObjectには、データ要求元から送信された、サービス識別情報、不要データ項目、ソート条件、および検索パラメータが示されている。つぎに、検索部310は、格納部250に格納されている複数のサービス定義ファイルの中から、S801で取得したサービス識別情報に対応付けられているサービス定義ファイルを取得する(S802)。
つぎに、検索部310は、取得したサービス定義ファイルを参照することにより、データ検索処理に用いる検索問い合わせ文の構成情報を特定する(S803)。そして、検索部310は、S803で特定した構成情報およびS801で取得した検索パラメータを用いて、検索問い合わせ文を生成する(S804)。
ここでは、検索部310は、S801で取得した不要データ項目を含む、全てのデータ項目を取得するための検索問い合わせ文を生成する。他の例では、S801で取得した不要データ項目以外のデータ項目を取得するための検索問い合わせ文を生成してもよい。たとえば、検索部310は、データ項目「address」およびデータ項目「tel」以外のデータ項目を取得する検索問い合わせ文を生成してもよい。また、検索部310は、S801で取得したソート条件にしたがって検索結果データがソートされる検索問い合わせ文を生成する。たとえば、図8に示す例では、検索部310は、データ項目「konjin_no」で昇順ソートされる検索問い合わせ文を生成する。
つぎに、検索部310は、格納部250に格納されているDAO定義ファイルを参照することにより(S805)、S801で取得したサービス識別情報に対応付けられている処理プログラムを特定する(S806)。たとえば、図8に示す例では、まず、検索部310は、S802で取得したサービス定義ファイルを参照することにより、サービス識別情報「Koureisya」に対応付けられているDAO名として「Koureisya_dao」を特定する。また、サービス識別情報「Koureisya」に対応付けられているDAOサービス名として「Koureisya_Web_Connect」を特定する。そして、検索部310は、格納部250に格納されているDAO定義ファイルを参照することにより、DAO名「Koureisya_dao」に対応付けられているDAOクラス「SystemCoopDAO」を特定する。また、DAOサービス名「Koureisya_Web_Connect」に対応付けられているメソッド「execute」を特定する。
つぎに、検索部310は、格納部250に格納されているシステム接続定義ファイルを参照することにより(S807)、S801で取得したサービス識別情報に対応付けられている通信接続方式を特定する(S808)。たとえば、図8に示す例では、まず、検索部310は、S802で取得したサービス定義ファイルを参照することにより、サービス識別情報「Koureisya」に対応付けられているDAOサービス名として「Koureisya_Web_Connect」を特定する。そして、検索部310は、格納部250に格納されているシステム接続定義ファイルを参照することにより、DAOサービス名「Koureisya_Web_Connect」と同名のシステム接続サービス「Koureisya_Web_Connect」に対応付けられているGW(ゲートウェイ)実装クラス「KoureisyaWebConnect」および接続方法(Webサービス接続)、uriなどの接続用情報を特定する。
つぎに、検索部310は、S806で特定した処理プログラムを実行することにより、S808で特定した通信接続方式を用いた通信接続をおこなう(S809)。具体的には、検索部310は、DAOクラス「SystemCoopDAO」のメソッド「execute」を実行する。メソッド「execute」は、システム接続サービスとしてGW実装クラス「KoureisyaWebConnect」を呼び出すことにより、接続先のシステムに対する通信接続をおこなう。そして、検索部310は、S804で生成した検索問い合わせ文を、接続先のシステムが要求する形式で、接続先のシステムへ送信する(S810)。たとえば、図8に示す例では、検索部310は、S804で生成した検索問い合わせ文を、XML形式で送信する。これにより、検索部310は、接続先のシステムから検索結果データを取得する(S811)。そして、検索部310は、取得した検索結果データが示されたValueObjectを、権限判定処理部220へ送信する(S812)。フィルタ処理部240によるフィルタリング処理をおこなう場合は、検索部310は、取得した検索結果データが示されたValueObjectを、フィルタ処理部240へ送信してもよい。なお、S811で不要データ項目を含む全てのデータ項目を取得した場合、S812では、取得した検索結果データのうち、不要データ項目以外のデータ項目を、検索結果データとして権限判定処理部220へ送信してもよい。
このように、本実施形態のデータ検索システム100によれば、複数のサービスのそれぞれに対してデータ検索処理を予め定義しておくことができる。これにより、複数のサービスのそれぞれに対して、サービスに応じた適切なデータ検索処理をおこなうことができる。
また、本実施形態のデータ検索システム100によれば、データ要求元は、サービス識別情報をデータ検索システム100に送信するだけで、データ検索処理をデータ検索システム100におこなわせることができる。このため、データ要求元にデータ検索処理を実装する必要がなく、データ要求元のシステム構成を簡素化できる。
また、本実施形態のデータ検索システム100によれば、サービスインタフェース部210によって、データ検索処理の要求を受け付けるためのインタフェースが共通化されている。このため、データ要求元を追加する場合、追加されるデータ要求元は、既存のデータ要求元に実装されているインタフェースを再利用できる。
また、本実施形態のデータ検索システム100によれば、サービス定義ファイルにより、データ検索処理の設定を一括して管理できる。このため、サービスを追加する場合であっても、追加されるサービスに対するデータ検索処理の設定を容易におこなうことができる。
また、本実施形態のデータ検索システム100によれば、データ検索処理に用いる処理プログラムおよび通信接続方式を、複数のサービスで共用できる。このため、サービスを追加する場合であっても、追加されるサービス用の処理プログラムおよび通信接続方式を設ける必要がない。追加されるサービスは、既存のサービスが利用する処理プログラムおよび通信接続方式を利用できる。
また、本実施形態のデータ検索システム100によれば、複数のサービスでサービス定義ファイルを共用することで、複数のサービスでデータ検索処理を共用できる。これにより、既にキャッシュされているデータ検索処理を有効利用することができるので、データ検索処理の処理効率を向上することができる。具体的には、たとえば、複数のデータ要求元が同様の検索をおこなう場合であっても、それぞれのデータ要求元が他のデータ要求元と異なるSQL文を実行してしまうと、RDMSのキャッシュ効果を得ることができない。本実施形態のデータ検索システム100によれば、同様の検索を行う検索サービスを定義・規定し、それを複数のデータ利用元が共通利用する事で、複数のデータ要求元のそれぞれが同一のSQL文を実行することができるので、RDMSのキャッシュ効果を得ることができ、データ検索処理の処理効率向上を図ることができる。
図9は、データ取得部418によるデータ取得処理およびデータ送信部426によるデータ送信処理の一例を示す。図9では、共通データベース123からデータを取得する例を示す。
まず、データ取得部418は、第1取得件数特定部420から、サービス識別情報に対応付けられている取得件数を取得する(S901)。たとえば、データ取得部418は、サービス識別情報に対応付けられている取得件数として「50」を取得する。
つぎに、データ取得部418は、第2取得件数特定部422から、データ要求元が要求する取得件数を取得する(S902)。たとえば、データ取得部418は、データ要求元が要求する取得件数として「100」を取得する。
第2取得件数特定部422から取得した取得件数は、第1取得件数特定部420から取得した取得件数よりも多い。このため、データ取得部418は、第1取得件数特定部420から取得した取得件数である「50」件分の検索結果データを、共通データベース123から取得することを許可する。したがって、データ取得部418は、検索結果データとして「50」件以上ヒットする場合であっても、「50」件分の検索結果データを共通データベース123から取得することを許可する(S903)。
つぎに、データ送信部426は、送信件数特定部423から、データ要求元が要求する送信件数を取得する(S904)。たとえば、データ送信部426は、データ要求元が要求する送信件数として「5」を取得する。つぎに、データ送信部426は、送信開始位置特定部424から、データ要求元が要求する送信開始位置を取得する(S905)。たとえば、データ送信部426は、データ要求元が要求する送信開始位置として「1」を取得する。
そして、データ送信部426は、データ取得部418が取得することを許可した検索結果データのうちの、「1」番目のレコードから「5」件分のレコードを取得する(S906)。たとえば、データ送信部426は、取得することを許可した「50」件分の検索結果データのうちの「1」番目のレコードから「5」件分のレコードを、共通データベース123からフェッチしてメモリ上に展開して取得する。そして、データ送信部426は、取得したレコードと、次のレコードが存在する旨を示す情報とを、権限判定処理部220へ送信する(S907)。
続いて、たとえば、データ送信部426は、データ要求元が要求する送信件数として「10」を取得する(S908)。さらに、データ送信部426は、データ要求元が要求する送信開始位置として「6」を取得する(S909)。
この場合、データ送信部426は、データ取得部418が取得することを許可した検索結果データのうちの、「6」番目のレコードから「10」件分のレコードを取得する(S910)。たとえば、データ送信部426は、取得することを許可した「50」件分の検索結果データのうちの「6」番目のレコードから「10」件分のレコードを、共通データベース123からフェッチしてメモリ上に展開して取得する。そして、データ送信部426は、取得したレコードと、次のレコードが存在する旨を示す情報とを、権限判定処理部220へ送信する(S911)。
続いて、送信開始位置特定部424から取得した送信開始位置が「51」以降となる場合がある。また、送信開始位置特定部424から取得した送信開始位置と送信件数特定部423から取得した送信件数との合計が「51」以上となる場合がある。これらの場合、データ取得部418は、「51」件目以降の検索結果データを、さらに共通データベース123から取得することを許可するか、または所定のエラー処理をおこなってもよい。
このように、本実施の形態によれば、複数のサービスのそれぞれに対して、取得件数を定義できる。これにより、複数のサービスのそれぞれにおいて、サービス固有の最適な件数のデータを、データベースから取得することができる。
また、本実施の形態によれば、データ要求元が要求する取得件数を、データ要求元から取得できる。これにより、複数のサービスのそれぞれにおいて、データ要求元のシステムに応じた最適な件数のデータを、データベースから取得することができる。
また、本実施の形態によれば、データ要求元が要求する送信件数を、データ要求元から取得できる。これにより、複数のサービスのそれぞれにおいて、データ要求元のシステムに応じた最適な件数のデータを、データ要求元へ送信することができる。
また、本実施の形態によれば、データ要求元から取得した取得件数が、予めサービスに対応付けられている取得件数を超える場合は、予めサービスに対応付けられている取得件数のデータを、データベースから取得する。これにより、データ検索システム100において、一のサービスのデータ検索処理に、大量のリソースが占有されることを防止することができる。
図10は、権限判定処理部220による権限判定処理の一例を示す。まず、権限判定処理部220は、サービスインタフェース部210から、ValueObjectを取得する(S1001)。取得したValueObjectには、サービス識別情報、ユーザ情報、および検索パラメータが示されている。
図10に示す例では、取得したValueObjectには、サービス識別情報として「住民基本情報取得サービス」が示されている。また、ユーザ情報の部署名として、「○○課」が示されている。また、ユーザ情報の職位名として、「課長」が示されている。
つぎに、権限判定処理部220は、格納部に格納されている権限判定ルール定義ファイルを参照することにより(S1002)、取得したサービス識別情報に対応付けられている権限判定ルールを特定する(S1003)。図10に示す例では、権限判定処理部220は、サービス識別情報「住民基本情報取得サービス」に対応付けられている権限判定ルールの「必要権限レベル」として「REF」を特定する。また、サービス識別情報「住民基本情報取得サービス」に対応付けられている権限判定ルールの「ルールクラス」として「A」を特定する。
本実施形態では、権限レベルのパラメータとして「UPD」、「REF」、および「NON」を用いている。「UPD」は、更新権限があることを示す。「REF」は、更新権限はないが、参照権限があることを示す。「NON」は、更新権限も参照権限もないことを示す。
つぎに、権限判定処理部220は、格納部250に格納されている複数のルールクラスの中から、特定したルールクラス「A」を取得する(S1004)。そして、権限判定処理部220は、サービスインタフェース部210から取得したユーザ情報と、格納部250から取得したルールクラスとに基づいて、ユーザに与えられている「権限レベル」を特定する(S1005)。図10に示す例では、権限判定処理部220は、「○○課」の「課長」に与えられている「権限レベル」として「UPD」を特定する。
つぎに、権限判定処理部220は、特定した「必要権限レベル」と、特定した「権限レベル」とを比較することにより、権限を判定する(S1006)。ここで、権限判定処理部220は、特定した「権限レベル」が、特定した「必要権限レベル」以上の場合は、権限があると判定してもよい。また、権限判定処理部220は、特定した「権限レベル」が、特定した「必要権限レベル」未満の場合は、権限がないと判定してもよい。図10に示す例では、権限判定処理部220は、特定した「権限レベル」である「UPD」が、特定した「必要権限レベル」である「REF」以上であることから、権限がある、すなわち「○○課」の「課長」は、「住民基本情報取得サービス」を利用する権限があると判定する。
権限判定処理部220は、権限があると判定した場合、サービス識別情報および検索パラメータを示すValueObjectを検索処理部230へ送信する(S1007)。これにより、権限判定処理部220は、検索処理部230に対してデータ検索処理を要求する。権限判定処理部220は、サービスインタフェース部210から取得したValueObjectを、検索処理部230へ送信してもよい。
図11は、権限判定処理部220による権限判定処理の他の一例を示す。まず、権限判定処理部220は、サービスインタフェース部210から、ValueObjectを取得する(S1101)。取得したValueObjectには、サービス識別情報、ユーザ情報、および検索パラメータが示されている。
図11に示す例では、取得したValueObjectには、サービス識別情報として「住民所得情報取得サービス」が示されている。また、ユーザ情報の部署名として、「△△課」が示されている。また、ユーザ情報の職位名として、「次長」が示されている。
つぎに、権限判定処理部220は、格納部に格納されている権限判定ルール定義ファイルを参照することにより(S1102)、取得したサービス識別情報に対応付けられている権限判定ルールを特定する(S1103)。図11に示す例では、権限判定処理部220は、サービス識別情報「住民所得情報取得サービス」に対応付けられている権限判定ルールの「必要権限レベル」として「REF」を特定する。また、サービス識別情報「住民基本情報取得サービス」に対応付けられている権限判定ルールの「ルールクラス」として「B」を特定する。
つぎに、権限判定処理部220は、格納部250に格納されている複数のルールクラスの中から、特定したルールクラス「B」を取得する(S1104)。そして、権限判定処理部220は、サービスインタフェース部210から取得したユーザ情報と、格納部250から取得したルールクラスとに基づいて、ユーザに与えられている「権限レベル」を特定する(S1105)。図11に示す例では、権限判定処理部220は、「△△課」の「次長」に与えられている「権限レベル」として「NON」を特定する。
つぎに、権限判定処理部220は、特定した「必要権限レベル」と、特定した「権限レベル」とを比較することにより、権限を判定する(S1106)。図11に示す例では、権限判定処理部220は、特定した「権限レベル」である「NON」が、特定した「必要権限レベル」である「REF」未満であることから、権限がない、すなわち「△△課」の「次長」は、「住民所得情報取得サービス」を利用する権限がないと判定する。権限判定処理部220は、権限がないと判定した場合、権限判定処理の結果を示すValueObjectをサービスインタフェース部210へ送信する(S1107)。
このように、本実施形態のデータ検索システム100によれば、複数のサービスのそれぞれに対して権限判定ルールを定義する。このため、複数のサービスのそれぞれに対して、サービス固有の権限判定処理をおこなうことができる。
また、本実施形態のデータ検索システム100によれば、部署名、職位名などのユーザ属性レベルで、権限判定処理をおこなう。このため、複数のユーザIDに対する権限判定ルールの設定および変更を一括しておこなうことができる。
また、本実施形態のデータ検索システム100によれば、権限判定ルール定義ファイルにより、権限判定ルールを一括して管理する。このため、サービスが追加された場合であっても、追加されたサービスに対する権限判定ルールの設定を容易におこなうことができる。
図12は、フィルタ処理部240によるフィルタリング処理の一例を示す。まず、フィルタ処理部240は、検索処理部230から、ValueObjectを取得する(S1201)。取得したValueObjectには、サービス識別情報、ユーザ情報、および検索結果データが示されている。
図12に示す例では、取得したValueObjectには、サービス識別情報として「住民所得情報取得サービス」が示されている。また、ユーザ情報の部署名として、「△△課」が示されている。また、ユーザ情報の職位名として、「次長」が示されている。また、3つのデータ項目「性別」、「年齢」、および「氏名」を含む検索結果データが示されている。
つぎに、フィルタ処理部240は、格納部に格納されているサービス定義ファイルを参照することにより、取得したサービス識別情報に対応付けられているフィルタリング条件を特定する(S1202)。図12に示す例では、フィルタ処理部240は、サービス識別情報「住民所得情報取得サービス」に対応付けられているフィルタリング条件として「条件A」を特定する。
つぎに、フィルタ処理部240は、格納部250に格納されているフィルタリング条件定義ファイルを参照することにより(S1203)、特定したフィルタリング条件から、権限判定ルールを、取得した検索結果データのデータ項目ごとに特定する(S1204)。図12に示す例では、フィルタ処理部240は、フィルタリング条件「条件A」から、データ項目「性別」の「必要権限レベル」として「UPD」を特定する。また、データ項目「性別」の「ルールクラス」として「A」を特定する。
また、データ項目「年齢」の「必要権限レベル」として「UPD」を特定する。また、データ項目「年齢」の「ルールクラス」として「B」を特定する。また、データ項目「氏名」の「必要権限レベル」として「REF」を特定する。また、データ項目「氏名」の「ルールクラス」として「B」を特定する。
つぎに、フィルタ処理部240は、格納部250に格納されている複数のルールクラスの中から、特定したルールクラス「A」および「B」を取得する(S1205)。そして、フィルタ処理部240は、サービスインタフェース部210から取得したユーザ情報と、格納部250から取得したルールクラスとに基づいて、ユーザに与えられている「権限レベル」を、データ項目ごとに特定する(S1206)。
図12に示す例では、フィルタ処理部240は、「△△課」の「次長」に与えられているデータ項目「性別」に対する「権限レベル」として「UPD」を特定する。また、フィルタ処理部240は、「△△課」の「次長」に与えられているデータ項目「年齢」に対する「権限レベル」として「REF」を特定する。また、フィルタ処理部240は、「△△課」の「次長」に与えられているデータ項目「氏名」に対する「権限レベル」として「REF」を特定する。
つぎに、フィルタ処理部240は、データ項目ごとに、特定した「必要権限レベル」と、特定した「権限レベル」とを比較することにより、権限を判定する(S1207)。図12に示す例では、フィルタ処理部240は、データ項目「性別」に対して特定した「権限レベル」である「UPD」が、データ項目「性別」に対して特定した「必要権限レベル」である「UPD」以上であることから、権限がある、すなわち「△△課」の「次長」は、データ項目「性別」を参照する権限があると判定する。
また、フィルタ処理部240は、データ項目「年齢」に対して特定した「権限レベル」である「REF」が、データ項目「年齢」に対して特定した「必要権限レベル」である「UPD」未満であることから、権限がない、すなわち「△△課」の「次長」は、データ項目「年齢」を参照する権限がないと判定する。また、フィルタ処理部240は、データ項目「氏名」に対して特定した「権限レベル」である「REF」が、データ項目「氏名」に対して特定した「必要権限レベル」である「REF」以上であることから、権限がある、すなわち「△△課」の「次長」は、データ項目「氏名」を参照する権限があると判定する。
フィルタ処理部240は、取得した検索結果データから、権限判定処理によってユーザの権限が有ると判定されたデータ項目である「性別」および「氏名」のデータを抽出する。そして、フィルタ処理部240は、抽出したデータ、すなわちフィルタリング処理後の検索結果データが示されたValueObjectを検索処理部230へ送信する(S1208)。フィルタ処理部240は、フィルタリング処理後の検索結果データが示されたValueObjectを、権限判定処理部220またはサービスインタフェース部210へ送信してもよい。
このように、本実施形態のデータ検索システム100によれば、複数のサービスのそれぞれに対してデータ項目レベルで権限判定ルールを設定する。このため、複数のサービスのそれぞれに対して、データ項目レベルで、サービス固有のフィルタリング処理をおこなうことができる。
また、本実施形態のデータ検索システム100によれば、フィルタリング条件定義ファイルにより、フィルタリング条件およびデータ項目レベルでの権限判定ルールを一括して管理する。このため、データ項目が追加された場合であっても、追加されたデータ項目に対する権限判定ルールの設定を容易におこなうことができる。
また、本実施形態のデータ検索システム100によれば、部署名、職位名などのユーザ属性レベルでデータ項目レベルのフィルタリング処理をおこなう。このため、複数のユーザIDに対するフィルタリング条件の設定および変更を一括しておこなうことができる。
また、本実施形態のデータ検索システム100によれば、フィルタリング処理をデータ検索システム100で集中しておこなう。このため、データ要求元およびデータ取得先のシステムは、フィルタリング処理を実装する必要がない。
また、本実施形態のデータ検索システム100によれば、検索処理部230によるデータ検索処理から独立して、フィルタ処理部240によるフィルタリング処理をおこなう。このため、検索処理部230は、データ取得先の通信接続方式に依存しない共通の仕組みでフィルタリング処理をおこなうことができる。
図13は、データ検索システム100のハードウェア構成の一例を示す。データ検索システム100は、ホスト・コントローラ1582により相互に接続されるCPU1505、RAM1520、グラフィック・コントローラ1575、および表示装置1580を有するCPU周辺部を備える。また、データ検索システム100は、I/O(入出力)コントローラ1584によりホスト・コントローラ1582に接続される通信I/F1530、ハードディスクドライブ1540、およびCD−ROMドライブ1560を有する入出力部を備える。さらに、データ検索システム100は、I/Oコントローラ1584に接続されるROM1510、FD(フレキシブルディスク)ドライブ1550、およびI/O(入出力)チップ1570を有するレガシー入出力部を備える。
ホスト・コントローラ1582は、RAM1520と、高転送レートでRAM1520をアクセスするCPU1505およびグラフィック・コントローラ1575とを接続する。CPU1505は、ROM1510およびRAM1520に格納されたプログラムに基づいて動作して、各部を制御する。グラフィック・コントローラ1575は、CPU1505等がRAM1520内に設けたフレーム・バッファ上に生成する画像データを取得して、表示装置1580上に表示させる。これに代えて、グラフィック・コントローラ1575は、CPU1505等が生成する画像データを格納するフレーム・バッファを、内部に含んでもよい。
I/Oコントローラ1584は、ホスト・コントローラ1582と、比較的高速な入出力装置である通信I/F1530、ハードディスクドライブ1540、CD−ROMドライブ1560を接続する。通信I/F1530は、ネットワークを介して外部1598と通信する。ハードディスクドライブ1540は、CPU1505が使用するプログラムおよびデータを格納する。CD−ROMドライブ1560は、CD−ROM1595からプログラムまたはデータを読み取り、RAM1520を介してハードディスクドライブ1540に提供する。
また、I/Oコントローラ1584には、ROM1510と、FDドライブ1550、およびI/Oチップ1570の比較的低速な入出力装置とが接続される。ROM1510は、データ検索システム100の起動時にCPU1505が実行するブート・プログラム、データ検索システム100のハードウェアに依存するプログラム等を格納する。FDドライブ1550は、フレキシブルディスク1590からプログラムまたはデータを読み取り、RAM1520を介してハードディスクドライブ1540に提供する。I/Oチップ1570は、FDドライブ1550、たとえばパラレル・ポート、シリアル・ポート、キーボード・ポート、マウス・ポート等を介して各種の入出力装置を接続する。
RAM1520を介してハードディスクドライブ1540に提供されるプログラムは、フレキシブルディスク1590、CD−ROM1595、またはICカード等の記録媒体に格納されて利用者によって提供される。プログラムは、記録媒体から読み出され、RAM1520を介してデータ検索システム100内のハードディスクドライブ1540にインストールされ、CPU1505において実行される。データ検索システム100にインストールされて実行されるプログラムは、CPU1505等に働きかけて、コンピュータを、図1から図12にかけて説明した、データ検索システム100が有する各機能部として機能させる。
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更または改良を加えることが可能であることが当業者に明らかである。その様な変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。