(57)【要約】【課題】  各メソッド毎に権限チェック処理を記述する手間が掛かることなく、画面上の各ボタン操作毎に権限チェック処理を実行する。【解決手段】  入出力インタフェース部２１は、クライアントマシン１のＷｅｂブラウザ１１上に表示される任意の画面上に配置される複数のボタンのうち、ユーザによって任意のボタンが操作されることで、この操作に対応するリクエストを受取ると、メモリ２３に格納されている許可権限記憶部２６等を参照することで、このユーザがこのリクエストを要求する権限を有する者であるか否かを判定し、権限を有する場合には、メソッド実行部２２における当該リクエストに対応するメソッドを呼び出して、処理を実行させる。一方、権限を有しない場合には、このメソッド呼出は行わない。【選択図】図１
2006268125.tif 000002
【特許請求の範囲】
【請求項１】
少なくともプレゼンテーションレイヤとビジネスレイヤとを有するＷｅｂアプリケーションを有するアプリケーションサーバにおいて、
前記プレゼンテーションレイヤは、
外部のクライアントのＷｅｂブラウザに画面を表示させて、該画面上での任意の操作に応じたリクエストを受け付け、該リクエストに応じたメソッドを呼び出す入出力インタフェース手段と、
各種リクエストに応じたメソッドが記述され、前記入出力インタフェース手段から呼び出されたメソッドを実行し、必要に応じて前記ビジネスレイヤのビジネスオブジェクトを実行させるメソッド実行手段と、
予め権限チェックに必要な各種データが格納されるデータ記憶手段とを有し、
前記入出力インタフェース手段は、前記リクエストを受けると、前記データ記憶手段を参照して、前記クライアントのユーザが前記リクエストを行う権限を有するか否かを判定し、該権限を有しない場合には、前記メソッドの呼出しは行わないことを特徴とするアプリケーションサーバ。
【請求項２】
前記データ記憶手段は、各ユーザの権限を記憶するユーザ情報記憶手段と、各リクエスト毎にその実行を許可される権限である許可権限を記憶する許可権限記憶手段とを有し、
前記入出力インタフェース手段は、前記クライアントのユーザに与えられている権限を前記ユーザ情報記憶手段を参照して求め、前記リクエストに対応する許可権限を前記許可権限記憶手段から求めることで、前記クライアントのユーザが前記リクエストを行う権限を有するか否かを判定することを特徴とする請求項１記載のアプリケーションサーバ。
【請求項３】
コンピュータに、
外部のクライアントのＷｅｂブラウザに画面を表示させて、該画面上での任意の操作に応じたリクエストを受け付け、該リクエストに応じたメソッドを呼び出す入出力インタフェース機能と、
各種リクエストに応じたメソッドが記述され、前記入出力インタフェース機能から呼び出されたメソッドを実行し、必要に応じてビジネスオブジェクトを実行させるメソッド実行機能と、
予め権限チェックに必要な各種データが格納されるデータ記憶機能とを実現させ、
更に前記入出力インタフェース機能において、前記リクエストを受けると、前記データ記憶機能を参照して、前記クライアントのユーザが前記リクエストを行う権限を有するか否かを判定し、該権限を有しない場合には、前記メソッドの呼出しは行わない機能を実現させる為のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、Ｗｅｂアプリケーションシステムに係り、特にＷｅｂアプリケーションを複数の層に分離したものに関する。
【背景技術】
【０００２】
Ｗｅｂアプリケーションは、インターネットやイントラネットのように、情報源となるサーバからユーザ端末に画面情報を配信する通信ネットワーク上で使用されるソフトウェアである（例えば、下記特許文献１を参照）。
【０００３】
また、例えば特許文献２は、従来では業務アプリケーションがクライアントとの入出力制御機能、業務処理機能、及びデータベース操作機能を有していたのに対して、Ｉ／Ｏ層、業務アプリケーション層、データベース層の３つの層に分離したことで、仕様変更の起こり易いクライアントに対する表示様式やデータの入出力の部分（すなわち、Ｉ／Ｏ層が処理する部分）、及びデータベース操作の部分（すなわち、データベース層が処理する部分）が、業務アプリケーション層から切り離されるので、業務アプリケーション層の生産性が向上する発明を提案している。
【０００４】
図７は、このようなＷｅｂアプリケーションの構成例を示している。この例では、Ｗｅｂアプリケーション５００は、クライアントレイヤ５１０、プレゼンテーションレイヤ５２０、ビジネスレイヤ５３０、および永続化レイヤ５４０の４つのレイヤからなる。クライアントレイヤ５１０はクライアント端末上で動作する。プレゼンテーションレイヤ５２０、ビジネスレイヤ５３０、および永続化レイヤ５４０はサーバ上で動作し、Ｊａｖａ（登録商標）と呼ばれるオブジェクト指向プログラミング言語で作成される。
【０００５】
クライアントレイヤ５１０は、Ｗｅｂブラウザに対応し、プレゼンテーションレイヤ５２０に対して要求を送信する。
プレゼンテーションレイヤ５２０は、クライアントレイヤ５１０からの要求に応じて、Ｗｅｂ画面を表示するための画面情報をクライアントレイヤ５１０に送信する。また、プレゼンテーションレイヤ５２０は、表示されたＷｅｂ画面上でユーザによる任意のデータ入力やコマンド指示が行われると、これに応じたフォームデータが送られてくると、ビジネスレイヤ５３０のビジネスオブジェクトを呼び出す。その際このフォームデータをビジネスレイヤ５３０に渡す。また、プレゼンテーションレイヤ５２０は、ログイン時のクライアント認証等の処理も行う。
【０００６】
ビジネスレイヤ５３０のビジネスオブジェクトは、プレゼンテーションレイヤ５２０からの要求に応じて、Ｗｅｂアプリケーションの業務処理（ビジネスロジック）を実行し、処理結果をプレゼンテーションレイヤ５２０に転送する。永続化レイヤ５４０は、ビジネスレイヤ５３０が処理に用いるデータを、データベース５５０に格納して永続化する。
【０００７】
このようにＷｅｂアプリケーションでは、サーバ上で動作するソフトウェアを、Ｗｅｂブラウザに画面を表示し入力を受け付ける機能と、画面表示から独立したビジネスロジックを実行する機能と、データベースアクセスに特化した機能とに分割することで、各機能の独立性と汎用性を高めている。
【０００８】
各機能の独立性を高めれば、アプリケーション開発や修正を機能毎に行うことが可能となり、作業が効率化される。例えば、プレゼンテーションレイヤとビジネスレイヤを分離することで、これらのレイヤのプログラムを効率よく開発することができ、開発コストの削減と品質の確保が期待できる。特に、現実上、ビジネスロジック自体は殆ど変更されることがないのに対して、ユーザインタフェースとしての画面の変更等は、比較的頻繁に行われるが、上記レイヤの分離を行うことで、画面の変更等によってはビジネスレイヤを修正する必要がなくなることが期待できる。
【０００９】
また、従来より、例えばＷｅｂアプリケーションを提供するＷｅｂサーバ等において、アクセス制限を行うことが知られている。アクセス制限には、例えば、Ｗｅｂサーバが保持するリソース中どのリソースにアクセスできるか、あるいはどの画面を表示できるか、又はデータに対する操作（参照、更新、削除等）を、アクセス元のクライアントのユーザの権限等に応じて決定して登録しておき、権限チェックを行うことで、権限なき使用は許可しないようにするものがある。この様なアクセス制限に関して、例えば、特許文献３に記載の技術が知られている。
【特許文献１】特開２００３−１５８７０号公報
【特許文献２】特開２００２−３７３１４８号公報
【特許文献３】特表２００４−５３３０７５号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
上記特許文献３等の従来のアクセス制限では、サーバ上で動作するソフトウェアアプリケーションや特定のウェブページ等に対するアクセスを制限している。しかしながら、例えば特定のウェブページ上に表示される複数のボタン（例えばデータベースのデータに対する「追加」、「更新」、「削除」等）の各処理実行に対して、それぞれ、権限に応じた実行制限を行うようなことは行われていない。
【００１１】
また、上記プレゼンテーションレイヤ５２０、ビジネスレイヤ５３０等の各レイヤに分離された構成では、プレゼンテーションレイヤ５２０又はビジネスレイヤ５３０で権限チェックを行うことになるが、例えばビジネスレイヤ５３０で権限チェックを行う場合には、プレゼンテーションレイヤ５２０が、クライアントからのリクエストに応じてビジネスレイヤ５３０の特定のビジネスオブジェクトを呼び出して、このビジネスオブジェクトが権限チェックを行うことになり、ビジネスレイヤ５３０側に処理負担が掛かるし、またプレゼンテーションレイヤ５２０側にも、呼び出しやその応答受信の処理負担が掛かる。
【００１２】
これより、プレゼンテーションレイヤ５２０側で権限チェックを行うことが考えられるが、後に説明するように、例えば上記各ボタンに対応する各メソッド毎に権限チェック処理を記述しなけらばならず、手間が掛かるものであり、また、当該メソッド呼出し自体を行わないようにしたいという要望がある。
【００１３】
本発明の課題は、画面上の各ボタン操作毎に権限チェック処理を実行するものであって、特に画面の入出力インタフェースを行う処理部において権限チェック処理を行うことにより、各画面・各ボタンに対応する各メソッド毎に権限チェック処理を記述する手間を省き、また権限がない場合にはそのメソッド呼出とその実行自体が行われないようにすることで処理効率が向上するアプリケーションサーバ、そのプログラム等を提供することである。
【課題を解決するための手段】
【００１４】
本発明のアプリケーションサーバは、少なくともプレゼンテーションレイヤとビジネスレイヤとを有するＷｅｂアプリケーションを有するアプリケーションサーバにおいて、前記プレゼンテーションレイヤは、外部のクライアントのＷｅｂブラウザに画面を表示させて、該画面上での任意の操作に応じたリクエストを受け付け、該リクエストに応じたメソッドを呼び出す入出力インタフェース手段と、各種リクエストに応じたメソッドが記述され、前記入出力インタフェース手段から呼び出されたメソッドを実行し、必要に応じて前記ビジネスレイヤのビジネスオブジェクトを実行させるメソッド実行手段と、予め権限チェックに必要な各種データが格納されるデータ記憶手段とを有し、前記入出力インタフェース手段は、前記リクエストを受けると、前記データ記憶手段を参照して、前記クライアントのユーザが前記リクエストを行う権限を有するか否かを判定し、該権限を有しない場合には、前記メソッドの呼出しは行わないように構成する。
【００１５】
上記構成では、各画面上の各ボタン等毎に、対応するメソッドを用意している。従来では、各メソッドに権限チェック処理を記述することで、あるユーザによって画面上の任意のボタンが操作されると、そのボタンの処理を要求する権限がそのユーザにあるか否かを判別することができ、ボタン毎のユーザアクセス制限を実現できたが、上記各メソッドに権限チェック処理を記述するのは手間が掛かるものであり、また、逐一、メソッドを呼出て処理実行させる必要があった。これに対して、上記構成では、画面入出力制御を行う入出力インタフェース手段が、上記データ記憶手段を参照して権限チェック処理を実行するので、この様な問題を解決できる。
【発明の効果】
【００１６】
本発明のアプリケーションサーバ、そのプログラム等によれば、画面上の各ボタン操作毎に権限チェック処理を実行するものであって、特に画面の入出力インタフェースを行う処理部において権限チェック処理を行うことにより、各画面・各ボタンに対応する各メソッド毎に権限チェック処理を記述する、というような手間を省き、また権限がない場合にはそのメソッド呼出とその実行自体が行われないようにすることで処理効率が向上する。
【発明を実施するための最良の形態】
【００１７】
以下、図面を参照して本発明の実施の形態について説明する。
図１に、本例のＷｅｂアプリケーションシステムの機能ブロック図を示す。
図１に示す本例のシステムでは、アプリケーションサーバ２のＷｅｂアプリケーションは、少なくともプレゼンテーションレイヤ２０とビジネスレイヤ３０とに分離されている。
【００１８】
プレゼンテーションレイヤ２０、ビジネスレイヤ３０は、それぞれ別のＪａｖａ仮想マシン上にある。プレゼンテーションレイヤ２０、ビジネスレイヤ３０は、アプリケーションサーバ２上に実装される。これは、図１では１つのサーバ２上に２つのレイヤ２０、３０が実装されているが、各レイヤ２０、３０がそれぞれ別々のサーバ上に実装されてもよい。クライアントレイヤ１０は、クライアントマシン１上に実装される。これらクライアントマシン１、アプリケーションサーバ２は、何らかのネットワーク（例えばＬＡＮ等）に接続されており、相互に通信可能となっている。
【００１９】
尚、実際には図２に示すように、更に永続化レイヤ１１４があり、この永続化レイヤ１１４がビジネスオブジェクトからの依頼に応じて、データベース１０２へのアクセスを実行しているが、ここでは関係ないので省略して示してある。
【００２０】
プレゼンテーションレイヤ２０は、入出力インタフェース部２１、メソッド実行部２２の各機能部を有する。また、アプリケーションサーバ２が有する記憶装置２３（ハードディスク、メモリ等）に、予め、ユーザ情報記憶部２４、対応メソッド記憶部２５、及び許可権限記憶部２６の各データを記憶しておく。
【００２１】
尚、入出力インタフェース部２１、メソッド実行部２２の処理機能は、アプリケーションサーバ２の不図示のＣＰＵ等が、記憶装置２３に記憶されている不図示の所定のプログラムを読出し・実行することにより実現される。
【００２２】
メソッド実行部２２は、図では１つのみ示してあるが、Ｗｅｂブラウザ１１上に表示される各画面毎に対応して、それぞれ存在する。各メソッド実行部２２には、そのメソッド実行部２２に対応する画面上にある各ボタンに対応して各メソッドが記述されている。
【００２３】
入出力インタフェース部２１は、どの画面上のどのボタンが操作されたのかを認識する。つまり、Ｗｅｂブラウザ１１からのリクエストを受け付ける。そして、この画面に対応するメソッド実行部２２におけるこのボタンに対応するメソッドを呼び出す。呼び出されたメソッドによる処理実行によって、ビジネスレイヤ３０における特定のビジネスオブジェクト３１が呼び出され、このビジネスオブジェクト３１による処理実行の結果として応答パラメータが返信される。
【００２４】
ここで、従来では、上記の通り、上記各メソッド実行部２２の各メソッド中にそれぞれ権限チェック処理を記述することが考えられたが、非常に手間が掛かるものである。これに対して、本手法では、入出力インタフェース部２１が統一的に権限チェック処理を行うようにしている。そして、あるボタン操作を権限がないユーザが行った場合には、上記メソッドの呼出し自体が行われない。
【００２５】
入出力インタフェース部２１は、例えばログイン処理の際等にユーザ情報記憶部２４を参照して、そのユーザに与えられている権限を認識しておく。その後、任意の画面上で任意のボタン操作が行われることで、Ｗｅｂブラウザ１１からのリクエストがある毎に、対応メソッド記憶部２５や許可権限記憶部２６に記憶された情報を参照して、要求元のＷｅｂブラウザ１１のユーザがこのリクエストを行う権限を有するか否かを判定する為の権限チェック処理を実行する。詳しくは後述する。そして、リクエストを許可する場合には、上記メソッド実行部２２のメソッドの呼出しを行う。一方、リクエストを許可しない場合には、メソッド呼出を行うことなく、Ｗｅｂブラウザ１１に対して例えば「その処理を要求する権限がない」旨のメッセージを通知して表示させる。
【００２６】
図２は、図１のシステムに係るＷｅｂアプリケーション全体の具体的な構成例を示している。
図２のＷｅｂアプリケーション１０１は、クライアントレイヤ１１１、プレゼンテーションレイヤ１１２、ビジネスレイヤ１１３、および永続化レイヤ１１４からなる。クライアントレイヤ１１１は、クライアントマシン１上で動作するＷｅｂブラウザ１２１を有する。プレゼンテーションレイヤ１１２、ビジネスレイヤ１１３、および永続化レイヤ１１４は、通信ネットワーク（ＬＡＮ等）を介してクライアントマシン１と接続されたアプリケーションサーバ２で動作する。クライアントレイヤ１１１、プレゼンテーションレイヤ１１２、ビジネスレイヤ１１３が、上記クライアントレイヤ１０、プレゼンテーションレイヤ２０、ビジネスレイヤ３０に相当する。
【００２７】
プレゼンテーションレイヤ１１２は、単独のＪａｖａ仮想マシンで実行され、ビジネスレイヤ１１３と永続化レイヤ１１４は、同一のＪａｖａ仮想マシンで実行される。プレゼンテーションレイヤ１１２のＪａｖａ仮想マシンとビジネスレイヤ１１３および永続化レイヤ１１４のＪａｖａ仮想マシンは、同一のアプリケーションサーバ上にあってもよく、別々のアプリケーションサーバ上にあってもよい。また、データベース１０２は図１のデータベース４０に相当し、データベースサーバ上にある。このデータベースサーバは、通信ネットワークを介してアプリケーションサーバ等と接続される。
【００２８】
プレゼンテーションレイヤ１１２は、プレゼンテーションの基盤技術としてＪＳＦ（Java Server Faces ）１３２を用いたアプリケーションサーバ１３１を有する。ＪＳＦ１３２は、ビジネスロジックとプレゼンテーションデザインの分離を目的とした、Ｗｅｂアプリケーションのインタフェースのためのフレームワークである。
【００２９】
ＪＳＦ１３２は、グラフィカルユーザインタフェース（ＧＵＩ）でＷｅｂアプリケーションを開発できるツールであり、Ｗｅｂアプリケーションを構成する画面コンポーネントをマウスでドラッグ＆ドロップすることにより、画面フォーム上に配置できる。また、コンポーネント毎に、イベントハンドラに相当するManaged Bean１３３を記述することができる。また、ＪＳＦ１３２では、Webブラウザ１２１に対する画面入出力インタフェースとしてのAction Handler１３４が提供されている。ユーザが任意の画面上で任意のボタン操作等を行うと、Action Handler１３４が、どの画面上のどのボタンが押されたのかを認識して、Managed Bean１３３における該当メソッドを呼び出す。
【００３０】
このAction Handler１３４が図１の入出力インタフェース部２１に相当し、上記の従来よりある機能に加えて、権限チェック機能が備わっているものである。また、Managed Bean１３３が図１のメソッド実行部２２に相当する。
【００３１】
ビジネスレイヤ１１３は、システムの業務要件に関する処理（ビジネスロジック）を実行する。ビジネスレイヤ１１３は、プレゼンテーションレイヤ１１２からの処理要求を、ビジネスロジックの実装クラス（ビジネスオブジェクト１４２）にマッピングする。ビジネスレイヤ１１３は、ビジネスオブジェクト１４２を生成するビジネスロジックコンテナ１４１を有し、ビジネスオブジェクト１４２は、所定のビジネスロジックを実行する。ビジネスオブジェクト１４２としては、例えば、ＰＯＪＯ（Plain Old Java Object ）が用いられる。これにより、ビジネスオブジェクト１４２の開発・試験時に特別な試験環境を必要とせず、また再利用性が高まる。
【００３２】
ビジネスロジックコンテナ１４１は、プレゼンテーションレイヤ１１２から処理要求が届くと、ビジネスオブジェクト１４２を生成して業務処理を依頼する。そして、業務処理が完了すると、そのビジネスオブジェクト１４２は廃棄される。同時に複数の処理要求が届いた場合は、複数のビジネスオブジェクト１４２が同時に生成される。
【００３３】
永続化レイヤ１１４は、データベース１０２にアクセスするためにＯＲマッピング１４５を有する。ＯＲマッピング１４５は、Ｊａｖａオブジェクトモデルのデータ表現を、ＳＱＬ（Structured Query Language ）ベースのスキーマを持つリレーショナルデータモデルにマッピングする。また、ＯＲマッピング１４５は、データベース１０２のスキーマからデータアクセスオブジェクト（ＤＡＯ）１４３を生成する。
【００３４】
アプリケーションサーバ１３１は、Ｗｅｂブラウザ１２１から要求を受信すると、その要求をManaged Bean１３３に通知し、Managed Bean１３３は、ビジネスロジックコンテナ１４１を呼び出す。これを受けて、ビジネスロジックコンテナ１４１は、ビジネスオブジェクト１４２を生成する。
【００３５】
生成されたビジネスオブジェクト１４２は、データベースアクセスを行うためにＤＡＯ１４３を獲得し、ＤＡＯ１４３を用いて、データベース１０２の表（テーブル）に相当するマッピングクラス１４４を獲得する。そして、マッピングクラス１４４のメソッドを使用して、データベース１０２を更新する。
【００３６】
処理結果は、データベース１０２からビジネスオブジェクト１４２、ビジネスロジックコンテナ１４１、Managed Bean１３３、アプリケーションサーバ１３１、Ｗｅｂブラウザ１２１の順番に通知される。
【００３７】
このようなＷｅｂアプリケーション１０１とは別に、プレゼンテーションレイヤを持たないアプリケーション１０３、１０４も設けられる。アプリケーション１０３、１０４は、Ｗｅｂアプリケーション１０１とは異なり、設定時刻に処理を起動したり、常に処理を実行し続けるタイプのものが多い。
【００３８】
アプリケーション１０３は、ビジネスレイヤ１５１および永続化レイヤ１５２からなり、ビジネスレイヤ１５１はバッチプロセス１５３を有し、永続化レイヤ１５２はＯＲマッピング１５４を有する。アプリケーション１０４は、ビジネスレイヤ１６１および永続化レイヤ１６２からなり、ビジネスレイヤ１６１はバッチプロセス１６３を有し、永続化レイヤ１６２はＯＲマッピング１６４を有する。
【００３９】
バッチプロセス１５３、１６３は、例えば、他サーバとの連携処理、夜間に実行されるデータ処理、ハードウェアとの通信処理等を行う。また、ビジネスオブジェクト１４２や他のバッチプロセスからイベントの通知を受け取ったり、他のバッチプロセスにイベントを通知したりすることができる。
【００４０】
以下、既に図１、図２で説明した本発明の特徴について、具体例も示しつつ、更に詳細に説明する。
上述してある様に、１つの画面に対して１つのManaged Bean１３３（メソッド実行部２２）がある。ある画面に対応するManaged Bean１３３には、通常、その画面に表示される複数のボタン毎にそれぞれメソッドが記述される。各メソッドは、例えば、ビジネスレイヤ１１３のビジネスオブジェクト１４２（リクエストの対応するもの）を呼び出す処理や、画面遷移を行う処理等が記述されるものである。更に、呼び出したビジネスオブジェクト１４２から処理結果が返信されてくると、画面遷移を行うメソッドもある。
【００４１】
図３に、プレゼンテーションレイヤが上記ＪＳＦを用いるものである場合のメソッド呼出し、画面遷移の一例を示す。
まず、ＪＳＦの場合、画面遷移は、ページナビゲーションによって定義される。ページナビゲーションでは、あるページから、ケース名によって遷移先のページが定義される。そして、ＪＳＦでは、ボタンのクリック等に応じて、対応するＪａｖａクラスのメソッドを呼び出すことができ、呼び出したメソッドの実行結果として上記ケース名を返すことにより、画面遷移が行われる。上記図２で説明した通り、この様な画面上でのボタン操作を認識して、対応するメソッド呼出しを行うのが、入出力インタフェース部２１としてのAction Handler１３４である。
【００４２】
図３に示す例では、あるページ（page1）に、ボタンＡ、ボタンＢの２つのボタンが配置されており、Action Handler１３４は、ボタンＡが操作されると、このボタンＡに対応するメソッド（Method1）を呼び出す。Method1は所定の処理を実行し、最後にケース名“case1”を返す。これによって、Ｗｅｂブラウザ１２１上に表示される画面は、Page2へと遷移する。あるいは、Action Handler１３４は、ボタンＢが操作されると、このボタンＢに対応するメソッド（Method2）を呼び出す。Method2は、ビジネスレイヤ１１３のビジネスオブジェクト１４２を呼出し、その処理結果として応答パラメータを受取ると、最後に応答パラメータと共にケース名“case2”を返す。これによって、Ｗｅｂブラウザ１２１上に表示される画面は、処理結果を表示するページであるPage3へと遷移する。
【００４３】
ここで、従来では、各メソッドには、まず最初に、権限チェックを行う処理が記述される。すなわち、従来では、各メソッド毎に権限チェックを記述しなければならず、手間が掛かっていた。また、権限チェックはManaged Bean１３３が行う為、Action Handler１３４によるManaged Bean１３３の呼出処理が、必ず必要であった。
【００４４】
これに対して、本手法では、Action Handler１３４によって権限チェックを行うので、各メソッド毎に権限チェック処理を記述する必要はなくなる。更に、権限チェック結果がＮＧであった場合には、Managed Bean１３３のメソッド呼出処理自体が行われないので、処理効率が良いものとなる。
【００４５】
以下、本手法の具体的な実現方法の一例を、図４〜図６を参照して説明する。
図４に、ボタン操作と画面遷移の一例を示す。
図５に、図１の入出力インタフェース部２１によって実行される処理のフローチャート図を示す。
【００４６】
図６（ａ）〜（ｃ）に、図５の権限チェック処理に用いる為に、プレゼンテーションレイヤ２０が実装されているアプリケーションサーバが備える不図示の記憶装置（ハードディスク、メモリ等）に、予め記憶されている各種のデータテーブルの一例を示す。
【００４７】
図６（ａ）に示すユーザ情報テーブル３１０は、図１のユーザ情報記憶部２４の一例であり、ＩＤ３１１、パスワード３１２、及び権限３１３の各データ項目より成る。
図６（ｂ）に示す対応メソッドテーブル３２０は、図１の対応メソッド記憶部２５の一例であり、ページ名３２１及びボタン名３２２の組に対応するクラス名３２３及びメソッド名３２４が格納される。
【００４８】
図６（ｃ）に示す許可権限テーブル３３０は、図１の許可権限記憶部２６の一例であり、クラス名３３１とメソッド名３３２の組に対応する許可権限３３３が格納される。
以下、図４や図６も参照しつつ、図５の処理について説明する。
【００４９】
まず、プレゼンテーションレイヤ２０は、Ｗｅｂブラウザクライアントのディスプレイに、図４に示すログイン画面２１０を表示させて、ユーザに、自己のＩＤ、パスワードを入力させる。
【００５０】
入出力インタフェース部２１は、この入力に応じて、図６（ａ）に示すユーザ情報テーブル３１０を検索して、ＩＤ３１１及びパスワード３１２が、入力されたＩＤ、パスワードと一致するレコードがあるか否かを求め、ある場合にはログイン認証ＯＫとし（ステップＳ１１，ＹＥＳ）、該当レコードの権限３１３を取得・記憶する（ステップＳ１２）。つまり、ログインしたユーザに与えられている権限を認識する。
【００５１】
ログイン処理が完了したら、図４に示す初期メニュー画面２２０がクライアントのディスプレイに表示される。この初期メニュー画面２２０上に配置された複数のボタンのうち、例えばユーザがボタン２２１を操作すると図示の画面Ａ(PageA)に遷移し、ユーザがボタン２２２を操作すると図示の画面Ｂ(PageB)に遷移するものとする。これら画面Ａ、画面Ｂへの遷移の際にも、権限チェック処理を行うが、ここでは、画面Ａ、画面Ｂからの画面遷移時の権限チェック処理を例にして説明する。
【００５２】
画面Ａ上には、例えば「更新」ボタン２３１、「検索」ボタン２３２、「画面Ｃに切替」ボタン２３３等の各ボタンが配置されている。画面Ｂ上には、「更新」ボタン２４１、「検索」ボタン２４２、「削除」ボタン２４３等の各ボタンが配置されている。
【００５３】
そして、ユーザによって何れかの画面上で任意のボタンが操作されると（ステップＳ１３，ＹＥＳ）、ＪＳＦでは（Action Handler１３４では）現在表示されている画面及び操作されたボタンは認識できるので、入出力インタフェース部２１は、図６（ｂ）に示す対応メソッドテーブル３２０を参照することで、当該ユーザ操作に対応するクラス及びメソッドの名称を取得する（ステップＳ１４）。例えば、ユーザが画面Ａ上で「更新」ボタン２３１を操作した場合には、ページ名は“PageＡ”、ボタン名は“更新”であることは分かるので、これに対応するクラス名３２３−メソッド名３２４は、ClassＡ−MethodＢである。
【００５４】
そして、求めたクラス名及びメソッド名を用いて、図６（ｃ）に示す許可権限テーブル３３０を参照することで、上記ボタン操作によるリクエストに対応するメソッドの実行が許可される権限である許可権限３３３を取得する（ステップＳ１５）。許可権限３３３は、例えば、管理者、一般ユーザ等である。上記ログイン処理時に、ユーザの権限は分かっているので、このユーザの権限が、許可権限の何れかに該当すれば（ステップＳ１６，ＹＥＳ）、メソッド実行は許可され、ステップＳ１４で求めたクラス名−メソッド名より、該当するManaged Beanのメソッドを呼び出すことになる（ステップＳ１７）。
【００５５】
一方、ユーザの権限が、許可権限３３３の何れにも該当しなければ（ステップＳ１６，ＮＯ）、Managed Beanのメソッド呼出しが行われることなく（ステップＳ１８）、例えば要求元のＷｅｂブラウザに対して「そのボタンの処理を要求する権限はない」旨のメッセージを返信して表示等させる。
【００５６】
例えば、図６（ｂ）、（ｃ）に示す例では、画面Ａ上の「検索」ボタン２３２、「更新」ボタン２３１に対応するクラス名、メソッド名は、それぞれClassＡ−MethodＡと、ClassＡ−MethodＢであり、画面Ｂ上の「検索」ボタン２４２、「更新」ボタン２４１に対応するクラス名、メソッド名は、それぞれClassＡ−MethodＡと、ClassＢ−MethodＢである。また、ClassＡ−MethodＡと、ClassＡ−MethodＢに対応する許可権限は、一般ユーザ又は管理者であり、ClassＢ−MethodＢに対応する許可権限は、管理者のみである。「検索」ボタンの様に、画面が違ってもクラス−メソッドが同じである場合もあるし、「更新」ボタンの様に画面が違えばクラス−メソッドが異なる場合もある。そして、上記の例では、仮にユーザの権限が一般ユーザであった場合、画面Ａ上の「検索」ボタン２３２、「更新」ボタン２３１、及び画面Ｂ上の「検索」ボタン２４２が操作された場合には、メソッド実行が許可されるが、画面Ｂ上の「更新」ボタン２４１が操作された場合には、メソッド実行は許可されない。
【００５７】
尚、図６（ｂ）、（ｃ）に示す情報は、同図ではテーブル形式で示してあるが、実際には、ＸＭＬで記述されている。つまり、これらの情報は、管理者等の人間が、ＸＭＬで事前に作成しておく。
【００５８】
以上説明したように、本例のアプリケーションサーバ２（特に、そのプレゼンテーションレイヤ２０）によれば、画面上の各ボタン操作毎に権限チェック処理を実行するものであって、特に画面の入出力インタフェースを行う処理部において権限チェック処理を行うことにより、各画面・各ボタンに対応する各メソッド毎に権限チェック処理を記述する手間を省き、また権限がない場合にはそのメソッド呼出とその実行自体が行われないようにすることで処理効率が向上する。
【図面の簡単な説明】
【００５９】
【図１】本例のＷｅｂアプリケーションシステムの機能ブロック図である。
【図２】図１のシステムに係るＷｅｂアプリケーション全体の具体的な構成例である。
【図３】メソッド呼出し、画面遷移の一例を示す図である。
【図４】ボタン操作と画面遷移の一例を示す図である。
【図５】入出力インタフェース部によって実行される処理のフローチャート図である。
【図６】（ａ）はユーザ情報テーブル、（ｂ）は対応メソッドテーブル、（ｃ）は許可許可権限テーブルの一例である。
【図７】従来のＷｅｂアプリケーションの構成例である。
【符号の説明】
【００６０】
１  クライアントマシン
２  アプリケーションサーバ
３  ネットワーク
１０  クライアントレイヤ
１１  Ｗｅｂブラウザ
２０  プレゼンテーションレイヤ
２１  入出力インタフェース部
２２  メソッド実行部
２３  メモリ
２４  ユーザ情報記憶部
２５  対応メソッド記憶部
２６  許可権限記憶部
３０  ビジネスレイヤ
３１  ビジネスオブジェクト
１０１  Ｗｅｂアプリケーション
１０２  データベース
１０３，１０４  アプリケーション
１１１  クライアントレイヤ
１１２  プレゼンテーションレイヤ
１１３  ビジネスレイヤ
１１４  永続化レイヤ
１２１  Ｗｅｂブラウザ
１３１  アプリケーションサーバ
１３２  ＪＳＦ（Java Server Faces ）
１３３  Managed Bean
１３４  Action Handler
１４１  ビジネスロジックコンテナ
１４２  ビジネスオブジェクト
１４３  データアクセスオブジェクト（ＤＡＯ）
１４４  マッピングクラス
１４５  ＯＲマッピング
１５１  ビジネスレイヤ
１５２  永続化レイヤ
１５３  バッチプロセス
１５４  ＯＲマッピング
１６１  ビジネスレイヤ
１６２  永続化レイヤ
１６３  バッチプロセス
１６４  ＯＲマッピング
２１０  ログイン画面
２２０  初期メニュー画面
２２１  ボタン
２２２  ボタン
２３１  「更新」ボタン
２３２  「検索」ボタン
２３３  「画面Ｃに切替」ボタン
２４１  「更新」ボタン
２４２  「検索」ボタン
２４３  「削除」ボタン
３１０  ユーザ情報テーブル
３１１  ＩＤ
３１２  パスワード
３１３  権限
３２０  対応メソッドテーブル
３２１  ページ名
３２２  ボタン名
３２３  クラス名
３２４  メソッド名
３３０  許可権限テーブル
３３１  クラス名
３３２  メソッド名
３３３  許可権限
【図１】
2006268125.tif 000003
【図２】
2006268125.tif 000004
【図３】
2006268125.tif 000005
【図４】
2006268125.tif 000006
【図５】
2006268125.tif 000007
【図６】
2006268125.tif 000008
【図７】
2006268125.tif 000009