(57)【要約】      （修正有）【課題】ビジネスレイヤにおいて各ビジネスオブジェクト毎に必要なデータを抽出する処理をコーディングする必要をなくす。【解決手段】プレゼンテーションレイヤ２０の呼出用データ転送オブジェクト作成処理部２２は、フォームデータ２６を受取ると、ビジネスオブジェクト定義ファイル２４を参照することで、このフォームデータ２６に含まれる各データの中から、呼び出すべきビジネスオブジェクト３１が必要とするデータのみを抽出して、これらをデータ転送オブジェクト２８にコピーして、ビジネスレイヤ３０側に転送する。【選択図】図１
2006268121.tif 000002
【特許請求の範囲】
【請求項１】
クライアントとのインタフェースを行う第１の仮想マシンと、各種ビジネスオブジェクトを実行する第２の仮想マシンとを有するアプリケーションサーバにおいて、
前記第１の仮想マシンは、
予め、前記各ビジネスオブジェクト毎に対応付けて、そのビジネスオブジェクトの処理に必要なデータの識別名を格納しておく定義格納手段と、
前記クライアントに任意の画面を表示させて任意のデータ入力を行わせて、これに応じたフォームデータを含むリクエストを受取る画面入出力制御手段と、
前記リクエストに応じたビジネスオブジェクトを呼出す際に、前記定義格納手段から該呼出すビジネスオブジェクトが必要とする各データの識別名を取得し、前記フォームデータに含まれる各データのうち、その識別名が前記取得した識別名の何れかと一致するデータのみを前記第２の仮想マシンに転送する呼出用データ転送制御手段と、
を有することを特徴とするアプリケーションサーバ。
【請求項２】
クライアントとのインタフェースを行う第１の仮想マシンと、ビジネスオブジェクトを実行する第２の仮想マシンとを有するアプリケーションサーバにおいて、
前記第２の仮想マシンは、前記ビジネスオブジェクトから処理結果として各種応答パラメータを渡されると、その中にマッピングクラスのオブジェクトがある場合には、該オブジェクトから転送可能なデータのみを抽出して前記第１の仮想マシンに転送する応答用データ転送手段を有し、
前記第１の仮想マシンは、前記応答用データ転送手段により転送された前記転送可能なデータを、マッピングクラスのオブジェクトの形を復元するマッピングクラス復元処理手段を有することを特徴とするアプリケーションサーバ。
【請求項３】
前記マッピングクラスのオブジェクトにおいて転送できないデータは、直列化できないデータであることを特徴とする請求項２記載のアプリケーションサーバ。
【請求項４】
前記第２の仮想マシンは、ＯＲマッピング技術によってデータベースへのアクセスを行いマッピングクラスを生成する永続化レイヤを有しており、前記ビジネスオブジェクトは該マッピングクラスを獲得するものであることを特徴とする請求項２記載のアプリケーションサーバ。
【請求項５】
コンピュータに、
クライアントとのインタフェースを行う第１の仮想マシンと、各種ビジネスオブジェクトを実行する第２の仮想マシンとを有するＷｅｂアプリケーションにおける該第１の仮想マシンにおいて、
予め、前記各ビジネスオブジェクト毎に対応付けて、そのビジネスオブジェクトの処理に必要なデータの識別名を格納しておく定義格納機能と、
前記クライアントに任意の画面を表示させて任意のデータ入力を行わせて、これに応じたフォームデータを含むリクエストを受取る画面入出力制御機能と、
前記リクエストに応じたビジネスオブジェクトを呼出す際に、前記定義格納機能から該呼出すビジネスオブジェクトが必要とする各データの識別名を取得し、前記フォームデータに含まれる各データのうち、その識別名が前記取得した識別名の何れかと一致するデータのみを前記第２の仮想マシンに転送する呼出用データ転送制御機能と
を実現させる為のプログラム。
【請求項６】
コンピュータに、
クライアントとのインタフェースを行う第１の仮想マシンと、各種ビジネスオブジェクトを実行する第２の仮想マシンとを有するＷｅｂアプリケーションにおいて、
前記第２の仮想マシンに、前記ビジネスオブジェクトから処理結果として各種応答パラメータを渡されると、その中にマッピングクラスのオブジェクトがある場合には、該オブジェクトから転送可能なデータのみを抽出して前記第１の仮想マシンに転送する応答用データ転送機能を実現させ、
前記第１の仮想マシンに、前記応答用データ転送機能により転送された前記転送可能なデータを、マッピングクラスのオブジェクトの形を復元するマッピングクラス復元処理機能を実現させる為のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、Ｗｅｂアプリケーションシステムに係り、特にＷｅｂアプリケーションを複数の層に分離したものに関する。
【背景技術】
【０００２】
Ｗｅｂアプリケーションは、インターネットやイントラネットのように、情報源となるサーバからユーザ端末に画面情報を配信する通信ネットワーク上で使用されるソフトウェアである（例えば、下記特許文献１を参照）。
【０００３】
また、例えば特許文献２は、従来では業務アプリケーションがクライアントとの入出力制御機能、業務処理機能、及びデータベース操作機能を有していたのに対して、Ｉ／Ｏ層、業務アプリケーション層、データベース層の３つの層に分離したことで、仕様変更の起こり易いクライアントに対する表示様式やデータの入出力の部分（すなわち、Ｉ／Ｏ層が処理する部分）、及びデータベース操作の部分（すなわち、データベース層が処理する部分）が、業務アプリケーション層から切り離されるので、業務アプリケーション層の生産性が向上する発明を提案している。
【０００４】
図８は、このようなＷｅｂアプリケーションの構成例を示している。この例では、Ｗｅｂアプリケーション２００は、クライアントレイヤ２１０、プレゼンテーションレイヤ２２０、ビジネスレイヤ２３０、および永続化レイヤ２４０の４つのレイヤからなる。クライアントレイヤ２１０はクライアント端末上で動作する。プレゼンテーションレイヤ２２０、ビジネスレイヤ２３０、および永続化レイヤ２４０はサーバ上で動作し、Ｊａｖａ（登録商標）と呼ばれるオブジェクト指向プログラミング言語で作成される。
【０００５】
クライアントレイヤ２１０は、Ｗｅｂブラウザに対応し、プレゼンテーションレイヤ２２０に対して要求を送信する。
プレゼンテーションレイヤ２２０は、クライアントレイヤ２１０からの要求に応じて、Ｗｅｂ画面を表示するための画面情報をクライアントレイヤ２１０に送信する。また、プレゼンテーションレイヤ２２０は、表示されたＷｅｂ画面上でユーザによる任意のデータ入力やコマンド指示が行われると、これに応じたフォームデータが送られてくると、ビジネスレイヤ２３０のビジネスロジックを呼び出す。その際このフォームデータをビジネスレイヤ２３０に渡す。また、プレゼンテーションレイヤ２２０は、ログイン時のクライアント認証等の処理も行う。
【０００６】
ビジネスレイヤ２３０は、プレゼンテーションレイヤ２２０からの要求に応じて、Ｗｅｂアプリケーションの業務処理（ビジネスロジック）を実行し、処理結果をプレゼンテーションレイヤ２２０に転送する。永続化レイヤ２４０は、ビジネスレイヤ２３０が処理に用いるデータを、データベース２５０に格納して永続化する。
【０００７】
このようにＷｅｂアプリケーションでは、サーバ上で動作するソフトウェアを、Ｗｅｂブラウザに画面を表示し入力を受け付ける機能と、画面表示から独立したビジネスロジックを実行する機能と、データベースアクセスに特化した機能とに分割することで、各機能の独立性と汎用性を高めている。
【０００８】
各機能の独立性を高めれば、アプリケーション開発や修正を機能毎に行うことが可能となり、作業が効率化される。例えば、プレゼンテーションレイヤとビジネスレイヤを分離することで、これらのレイヤのプログラムを効率よく開発することができ、開発コストの削減と品質の確保が期待できる。特に、現実上、ビジネスロジック自体は殆ど変更されることがないのに対して、ユーザインタフェースとしての画面の変更等は、比較的頻繁に行われるが、上記レイヤの分離を行うことで、画面の変更等によってはビジネスレイヤを修正する必要がなくなることが期待できる。
【特許文献１】特開２００３−１５８７０号公報
【特許文献２】特開２００２−３７３１４８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
ここで、上記の通り、プレゼンテーションレイヤ２２０は、ビジネスレイヤ２３０のビジネスロジックを呼び出す際に、フォームデータを渡すが、ビジネスロジックがこのフォームデータの情報全てを必要としているわけではない。この為、ビジネスレイヤ２３０において、フォームデータからビジネスロジックが必要とするデータのみを抽出する処理の為のコーディング作業を行わなければならなかった。これは非常に手間が掛かるものであった。また、通常、ビジネスレイヤ２３０は、各システムに特化した処理を行う為、各システム毎にコーディング作業を必要とした。更に、上記画面の変更等によってフォームデータの内容が変更されれば、その都度、コーティングを行わなければならない。この為、上記の期待に反することになるという問題があった。
【００１０】
また、少なくともプレゼンテーションレイヤ２２０とビジネスレイヤ２３０とを別々のＪａｖａ仮想マシンで実行する構成とし、このＪａｖａ仮想マシン間のデータ転送を、ＲＭＩ(Remote Method Invocation)を用いて行うようにした場合、上記ビジネスレイヤ２３０が、処理結果をプレゼンテーションレイヤ２２０に返信するのに、ＲＭＩの通信上の制約から、転送できないデータが存在するという問題があった。これは、特に、ビジネスレイヤ２３０からの応答の中にマッピングクラスのインスタンスがある場合に、その中に転送できないデータが存在する場合、そのままではプレゼンテーションレイヤ２２０側に転送できないものである。従来では、この様なマッピングクラスのインスタンスをプレゼンテーションレイヤ２２０側に転送できるようにすることは、行われていなかった。
【００１１】
本発明の課題は、少なくともクライアントとのインタフェース層とビジネスロジックを実行する層とに分離されたＷｅｂアプリケーションシステムにおいて、プレゼンテーションレイヤがビジネスロジックを呼び出す際に、このビジネスロジックが必要とするデータのみを抽出して渡すようにし、あるいはビジネスレイヤによる応答の中にマッピングクラスのインスタンスが含まれている場合でも、プレゼンテーションレイヤ側に渡すことを可能とするＷｅｂアプリケーションシステム、そのプログラム等を提供することである。
【課題を解決するための手段】
【００１２】
本発明のアプリケーションサーバは、クライアントとのインタフェースを行う第１の仮想マシンと、各種ビジネスオブジェクトを実行する第２の仮想マシンとを有するアプリケーションサーバにおいて、前記第１の仮想マシンは、予め、前記各ビジネスオブジェクト毎に対応付けて、そのビジネスオブジェクトの処理に必要なデータの識別名を格納しておく定義格納手段と、前記クライアントに任意の画面を表示させて任意のデータ入力を行わせて、これに応じたフォームデータを含むリクエストを受取る画面入出力制御手段と、前記リクエストに応じたビジネスオブジェクトを呼出す際に、前記定義格納手段から該呼出すビジネスオブジェクトが必要とする各データの識別名を取得し、前記フォームデータに含まれる各データのうち、その識別名が前記取得した識別名の何れかと一致するデータのみを前記第２の仮想マシンに転送する呼出用データ転送制御手段とを有するように構成する。
【００１３】
上記アプリケーションサーバでは、フォームデータの中にビジネスオブジェクトで必要としないデータがある場合でも、第１の仮想マシンにおいて必要なデータのみを抽出して第２の仮想マシン側に渡すようにする。よって、第２の仮想マシン側で必要なデータを抽出する処理の為のコーディング等を行う必要等はない。
【００１４】
あるいは、本発明のアプリケーションサーバは、クライアントとのインタフェースを行う第１の仮想マシンと、ビジネスオブジェクトを実行する第２の仮想マシンとを有するアプリケーションサーバにおいて、前記第２の仮想マシンは、前記ビジネスオブジェクトから処理結果として各種応答パラメータを渡されると、その中にマッピングクラスのオブジェクトがある場合には、該オブジェクトから転送可能なデータのみを抽出して前記第１の仮想マシンに転送する応答用データ転送手段を有し、前記第１の仮想マシンは、前記応答用データ転送手段により転送された前記転送可能なデータを、マッピングクラスのオブジェクトの形を復元するマッピングクラス復元処理手段を有するように構成する。
【００１５】
上記アプリケーションサーバでは、第２の仮想マシンは例えばＯＲマッピング技術を用いており、処理結果としてマッピングクラスのオブジェクトを第１の仮想マシン側に返す構成である。しかし、第１の仮想マシン−第２の仮想マシン間のデータ転送が、例えばＲＭＩ等のように直列化（シリアライズ）するものである場合には、マッピングクラスには直列化できない（すなわち転送できない）データが含まれている為、そのままではマッピングクラスを転送できない。これより、まず、第２の仮想マシン側では、マッピングクラスのオブジェクトから、転送可能なデータのみを抽出して第１の仮想マシンに転送する。第１の仮想マシンは、この転送可能なデータを、マッピングクラスとして利用可能な状態に復元する。転送できないデータは、基本的に、第１の仮想マシン側では必要としないデータである。
【発明の効果】
【００１６】
本発明のＷｅｂアプリケーションシステム、そのプログラム等によれば、少なくともプレゼンテーションレイヤとビジネスレイヤとが分離されたＷｅｂアプリケーションシステムにおいて、プレゼンテーションレイヤがビジネスロジックを呼び出す際に、このビジネスロジックが必要とするデータのみを抽出して渡すようにすることができ、ビジネスレイヤにおいてコーディング作業を行う必要がなくなる。
【００１７】
あるいは、ビジネスレイヤによる応答の中にマッピングクラスのインスタンスが含まれている場合でも、プレゼンテーションレイヤ側に転送可能とすることができ、更に、プレゼンテーションレイヤにおいて転送されてきたデータからマッピングクラスのインスタンスを復元することで、プレゼンテーションレイヤにおいて処理結果として実質的にマッピングクラスを取得することができ、これを用いて処理結果表示等を行えるようになる。
【発明を実施するための最良の形態】
【００１８】
以下、図面を参照しながら、本発明の実施の形態について説明する。
図１は、本例のＷｅｂアプリケーションシステムの機能ブロック図である。
本発明の第１の特徴は、図１に示すプレゼンテーションレイヤ２０からビジネスレイヤ３０のビジネスロジック（ビジネスオブジェクト）の呼出しに係るものである。第２の特徴は、ビジネスレイヤ３０からプレゼンテーションレイヤ２０に対する処理結果の返信に係るものである。
【００１９】
プレゼンテーションレイヤ２０、ビジネスレイヤ３０は、それぞれ別のＪａｖａ仮想マシン上にある。プレゼンテーションレイヤ２０、ビジネスレイヤ３０は、アプリケーションサーバ２上に実装される。これは、図１では１つのサーバ２上に２つのレイヤ２０，３０が実装されているが、各レイヤ２０，３０がそれぞれ別々のサーバ上に実装されてもよい。クライアントレイヤ１０は、クライアントマシン１上に実装される。また、データベース４０は不図示のデータベースサーバにある。これらクライアントマシン１、アプリケーションサーバ２、データベースサーバは、何らかのネットワーク（例えばＬＡＮ等）に接続されており、相互に通信可能となっている。
【００２０】
図１において、プレゼンテーションレイヤ２０における画面入出力コントロールオブジェクト２１は、基本的には、クライアントレイヤ１０のＷｅｂブラウザ１１上に表示させる画面の入出力制御を行うものである。画面入出力コントロールオブジェクト２１は、クライアントレイヤ１０のＷｅｂブラウザ１１上に何らかの入力画面を表示させて、クライアントマシン１のユーザに、この入力画面に従って任意のデータを入力させる。また、例えば更新、検索等のコマンドを入力させる。これに応じてクライアントマシン１からリクエスト（フォームデータ２６やコマンド）が送られてくると、画面入出力コントロールオブジェクト２１は、このフォームデータ２６等を呼出用データ転送オブジェクト作成処理部２２に渡す。
【００２１】
呼出用データ転送オブジェクト作成処理部２２は、上記フォームデータ２６を受け取ると、記憶装置２３（ハードディスク、メモリ等）に記憶されているビジネスオブジェクト定義ファイル２４を参照することで、クライアントからのリクエストに対応して呼び出すべきビジネスオブジェクト３１が必要とするデータのみを、データ転送オブジェクト２８にコピーしてビジネスレイヤ３０側に渡すようにする。これが第１の特徴である。
【００２２】
尚、上記レイヤ２０−３０間の通信、すなわちＪａｖａ仮想マシン間の通信には、ＲＭＩ(Remote Method Invocation)を用いる。良く知られているように、RMI を使うと、別の Java仮想マシン上で実行されるオブジェクトのメソッドを呼び出したり、パラメータや返り値の受け渡しができる。特にJavaＲＭＩを用いれば、例えば基本クラスの引数に派生クラスを渡したり、オブジェクト自身をバイトストリームにできるためオブジェクトの受け渡しが非常に手軽にできるという利点がある。
【００２３】
ビジネスレイヤ３０側では、呼び出されたビジネスオブジェクト３１が、所定の処理を実行し、データベース４０のマッピングクラス３３を獲得する。尚、実際には“マッピングクラスのインスタンス（オブジェクト）”であるが、本説明では省略して“マッピングクラス”と記す場合もある。尚、図１では省略してあるが、実際には図２に示すように、永続化レイヤ２１４がデータベース２０２へアクセスして、処理結果としてデータベースマッピングクラス３３（２４４）を作成している。
【００２４】
第２の特徴は、このマッピングクラス３３をプレゼンテーションレイヤ２０に返信して、処理結果をクライアントのＷｅｂブラウザ１１に表示させる処理に係る。すなわち、まず、マッピングクラス３３は、通信の制約上、そのままではプレゼンテーションレイヤ２０側に転送できないものである。つまり、マッピングクラス３３には、転送可能なデータと転送できないデータとがある。すなわち、ビジネスレイヤ３０−プレゼンテーションレイヤ２０間のデータ転送オブジェクトの受け渡しは、上記の通りＲＭＩによる通信の為、所謂“オブジェクト直列化”（シリアライズ）して行う。オブジェクト直列化は、オブジェクトとそこから参照されているオブジェクトを、バイトストリームにコード化するものである。そして、マッピングクラス３３には、オブジェクト直列化できないデータが含まれている場合があり、これが上記転送できないデータである。そして、マッピングクラス３３においてオブジェクト直列化できるデータ、すなわち転送可能なデータは、プロパティ名と値であることが分かっている。
【００２５】
そこで、まず、上記マッピングクラス３３を獲得したビジネスオブジェクト３１は、このマッピングクラス３３を含む所定の応答パラメータを、応答用データ転送オブジェクト作成処理部３２に渡す。応答用データ転送オブジェクト作成処理部３２は、この応答パラメータをＲＭＩ等によりプレゼンテーションレイヤ２０に転送するが、応答パラメータの中にマッピングクラス３３が含まれている場合には、このマッピングクラス３３の中で転送可能なデータのみを抽出してプレゼンテーションレイヤ２０に転送する。
【００２６】
プレゼンテーションレイヤ２０では、マッピングクラス復元処理部２５が、上記転送可能なデータを、マッピングクラスとして利用可能な状態に復元して（マッピングクラス２７を生成（復元）して）、これを画面入出力コントロールオブジェクト２１に渡す。これによって、画面入出力コントロールオブジェクト２１から見ると、処理結果としてマッピングクラスが返ってきたことになる。そして、クライアントのＷｅｂブラウザ上に処理結果を表示させる。但し、マッピングクラス２７は、マッピングクラス３３の内容を完全に復元したものではない。
【００２７】
尚、上記呼出用データ転送オブジェクト作成処理部２２、マッピングクラス復元処理部２５、応答用データ転送オブジェクト作成処理部３２による処理は、アプリケーションサーバ２の記憶装置２３に記憶されている所定のアプリケーションプログラムを、不図示のＣＰＵ等が読出し・実行することにより実現させる。
【００２８】
図２は、図１の特徴に係るＷｅｂアプリケーション全体の基本的な構成例を示している。
図１に示す構成は、図２に示す基本構成に基づいて、呼出用データ転送オブジェクト作成処理部２２、ビジネスオブジェクト定義ファイル２４、応答用データ転送オブジェクト作成処理部３２、マッピングクラス復元処理部２５等の各種機能部が備えられている。
【００２９】
図２のＷｅｂアプリケーション１０１は、クライアントレイヤ１１１、プレゼンテーションレイヤ１１２、ビジネスレイヤ１１３、および永続化レイヤ１１４からなる。クライアントレイヤ１１１は、クライアントマシン１上で動作するＷｅｂブラウザ１２１を有する。プレゼンテーションレイヤ１１２、ビジネスレイヤ１１３、および永続化レイヤ１１４は、通信ネットワーク（ＬＡＮ等）を介してクライアントマシン１と接続されたアプリケーションサーバ２で動作する。クライアントレイヤ１１１、プレゼンテーションレイヤ１１２、ビジネスレイヤ１１３が、上記クライアントレイヤ１０、プレゼンテーションレイヤ２０、ビジネスレイヤ３０に相当する。
【００３０】
プレゼンテーションレイヤ１１２は、単独のＪａｖａ仮想マシンで実行され、ビジネスレイヤ１１３と永続化レイヤ１１４は、同一のＪａｖａ仮想マシンで実行される。プレゼンテーションレイヤ１１２のＪａｖａ仮想マシンとビジネスレイヤ１１３および永続化レイヤ１１４のＪａｖａ仮想マシンは、同一のアプリケーションサーバ上にあってもよく、別々のアプリケーションサーバ上にあってもよい。また、データベース１０２は図１のデータベース４０に相当し、不図示のデータベースサーバ上にある。このデータベースサーバは、通信ネットワークを介してアプリケーションサーバ等と接続される。
【００３１】
プレゼンテーションレイヤ１１２は、プレゼンテーションの基盤技術としてＪＳＦ（Java Server Faces ）１３２を用いたアプリケーションサーバ１３１を有する。ＪＳＦ１３２は、ビジネスロジックとプレゼンテーションデザインの分離を目的とした、Ｗｅｂアプリケーションのインタフェースのためのフレームワークである。
【００３２】
ＪＳＦ１３２は、グラフィカルユーザインタフェース（ＧＵＩ）でＷｅｂアプリケーションを開発できるツールであり、Ｗｅｂアプリケーションを構成する画面コンポーネントをマウスでドラッグ＆ドロップすることにより、画面フォーム上に配置できる。また、コンポーネント毎に、イベントハンドラに相当するManaged Bean１３３を記述することができる。
【００３３】
ビジネスレイヤ１１３は、システムの業務要件に関する処理（ビジネスロジック）を実行する。ビジネスレイヤ１１３は、プレゼンテーションレイヤ１１２からの処理要求を、ビジネスロジックの実装クラス（ビジネスオブジェクト１４２）にマッピングする。ビジネスレイヤ１１３は、ビジネスオブジェクト１４２を生成するビジネスロジックコンテナ１４１を有し、ビジネスオブジェクト１４２は、所定のビジネスロジックを実行する。ビジネスオブジェクト１４２としては、例えば、ＰＯＪＯ（Plain Old Java Object ）が用いられる。これにより、ビジネスオブジェクト１４２の開発・試験時に特別な試験環境を必要とせず、また再利用性が高まる。
【００３４】
ビジネスロジックコンテナ１４１は、プレゼンテーションレイヤ１１２から処理要求が届くと、この処理要求に対応するビジネスオブジェクト１４２を生成して業務処理を依頼する。そして、業務処理が完了すると、そのビジネスオブジェクト１４２は廃棄される。同時に複数の処理要求が届いた場合は、複数のビジネスオブジェクト１４２が同時に生成される。
【００３５】
永続化レイヤ１１４は、データベース１０２にアクセスするためにＯＲマッピング１４５を有する。ＯＲマッピング１４５は、Ｊａｖａオブジェクトモデルのデータ表現を、ＳＱＬ（Structured Query Language ）ベースのスキーマを持つリレーショナルデータモデルにマッピングする。また、ＯＲマッピング１４５は、データベース１０２のスキーマからデータアクセスオブジェクト（ＤＡＯ）１４３を生成する。
【００３６】
アプリケーションサーバ１３１は、Ｗｅｂブラウザ１２１から要求を受信すると、その要求をManaged Bean１３３に通知し、Managed Bean１３３は、ビジネスロジックコンテナ１４１を呼び出す。これを受けて、ビジネスロジックコンテナ１４１は、ビジネスオブジェクト１４２を生成する。
【００３７】
生成されたビジネスオブジェクト１４２は、データベースアクセスを行うためにＤＡＯ１４３を獲得し、ＤＡＯ１４３を用いて、データベース１０２の表に相当するマッピングクラス１４４を獲得する。
【００３８】
ビジネスオブジェクト１４２は、処理結果として、上記獲得したマッピングクラス１４４を含む所定の応答パラメータを、プレゼンテーションレイヤ２０に返す。プレゼンテーションレイヤ２０におけるManaged Bean１３３が、受信した処理結果に基づいて、Ｗｅｂブラウザ１２１に処理結果を通知して表示させる。尚、Managed Bean１３３が、図１の画面入出力コントロールオブジェクト２１に相当する。
【００３９】
このようなＷｅｂアプリケーション１０１とは別に、プレゼンテーションレイヤを持たないアプリケーション１０３、１０４も設けられる。アプリケーション１０３、１０４は、Ｗｅｂアプリケーション１０１とは異なり、設定時刻に処理を起動したり、常に処理を実行し続けるタイプのものが多い。
【００４０】
アプリケーション１０３は、ビジネスレイヤ１５１および永続化レイヤ１５２からなり、ビジネスレイヤ１５１はバッチプロセス１５３を有し、永続化レイヤ１５２はＯＲマッピング１５４を有する。アプリケーション１０４は、ビジネスレイヤ１６１および永続化レイヤ１６２からなり、ビジネスレイヤ１６１はバッチプロセス１６３を有し、永続化レイヤ１６２はＯＲマッピング１６４を有する。
【００４１】
バッチプロセス１５３、１６３は、例えば、他サーバとの連携処理、夜間に実行されるデータ処理、ハードウェアとの通信処理等を行う。また、ビジネスオブジェクト１４２や他のバッチプロセスからイベントの通知を受け取ったり、他のバッチプロセスにイベントを通知したりすることができる。
【００４２】
以下、上記図１に示す第１、第２の特徴について、図１及び図３以降を参照しつつ、具体例を挙げながら、更に詳細に説明する。
まず、第１の特徴について説明する。特に図示しないが、ここでは一例として、ブラウザ１１には社員情報管理画面が表示されているものとし、この画面には社員番号、名前、住所、年齢、部署名、及び特記事項の６つの項目があるものとする。これら各項目に対しては、例えばUser_id、Name、Address、Age、Section、及びCommentという識別名が割り当てられており、上記フォームデータ２６は、例えば図３（ａ）に示すように、これら各識別名に、ユーザが入力したデータ又は画面に表示されたデータが対応付けられた形式となっている。尚、上記６つの項目は、全てが入力項目とは限らず、単に表示されている項目も有り得る。よって、例えば「検索」を実行させる場合であって上記６つの項目の一部を検索キーとして入力させた場合には、検索を実行するビジネスオブジェクト３１は、この検索キーとしてのデータのみ必要であり、他の項目は必要ないことになる。
【００４３】
また、ビジネスオブジェクト定義ファイル２４には、各ビジネスオブジェクト毎に対応付けて、そのビジネスオブジェクトの実行に必要なデータの識別名が格納される。図３（ｂ）には、図３（ａ）に示す例に対して、User_id、Name、及びSectionのみを必要とするビジネスオブジェクトに関する定義例を示してある。これらは、例えば上記検索キーに相当するものである。
【００４４】
図４に、呼出用データ転送オブジェクト作成処理部２２によって実行される処理のフローチャート図を示す。以下、上記図３（ａ）、（ｂ）に示す例を用いつつ、このフローチャート処理について説明する。
【００４５】
呼出用データ転送オブジェクト作成処理部２２は、画面入出力コントロールオブジェクト２１が上記図３（ａ）の様なフォームデータを受取ってメモリ等に格納した後、この記憶されたフォームデータから、任意の１つのデータの識別名を取得する（ステップＳ１１）。また、ビジネスオブジェクト定義ファイル２４から、呼び出すビジネスオブジェクトが必要とするデータの識別名一覧（例えば上記図３（ｂ））を取得して（ステップＳ１２）、この識別名一覧の中に上記ステップＳ１１で取得した識別名があるか否かを判定し（ステップＳ１３）、ある場合には（ステップＳ１３，ＹＥＳ）、ステップＳ１１で取得した識別名に対応するデータをフォームデータ２６から取得してデータ転送オブジェクト２８にコピーする（ステップＳ１４）。無い場合には（ステップＳ１３，ＮＯ）、コピーは行わない。
【００４６】
以上の処理を、フォームデータ２６にある全てのデータについて実行するまで、繰返し行う。
上記処理について、図３（ａ）、（ｂ）に示す例を用いて説明するならば、まず最初は、ステップＳ１１において識別名‘User_id’が取得され、図３（ｂ）に示す識別名一覧は‘User_id’、‘Name’、‘Section’であり、‘User_id’があるので、ステップＳ１３の判定はＹＥＳとなり、識別名‘User_id’とそのデータ‘1234’がデータ転送オブジェクト２８にコピーされる。次の識別名‘Name’も同様に、図３（ｂ）に示す識別名一覧中に存在するので、識別名‘Name’とそのデータ‘山田太郎’が、データ転送オブジェクト２８にコピーされる。識別名‘Section’についても同様である。
【００４７】
一方、識別名‘Address’、‘Age’、‘Comment’については、識別名一覧中に存在しないので、そのデータのデータ転送オブジェクト２８へのコピーは行われない。
そして、データ転送オブジェクト２８をＲＭＩ等によってビジネスレイヤ３０側に転送する。
【００４８】
以上、第１の特徴によれば、プレゼンテーションレイヤにおいて、ビジネスレイヤ３０のビジネスオブジェクト３１を呼び出す際に、このビジネスオブジェクト３１が必要とするデータのみを抽出して渡すことができ、従来のようにビジネスレイヤ３０で手間が掛かるコーディング作業を行う必要がない。ビジネスレイヤ３０は、通常、各システム毎に特化したものが構築されるので、各システム毎にビジネスレイヤ３０のコーディング作業が必要となる。また、ビジネスレイヤ３０のビジネスロジックは、通常、あまり変更されないので、ビジネスレイヤ３０のコーディング作業は、レイヤ構築後は、あまり行われないで済むはずである。しかし、画面の変更等によってフォームデータが変われば、必要なデータを抽出する処理の為のコーディング作業をやり直す必要があった。これに対して、第１の特徴によれば、プレゼンテーションレイヤ２０の修正で対応できるようになる。また、プレゼンテーションレイヤ２０は各システムに特化したものではないので、汎用性の高いものとなる。
【００４９】
次に、以下、第２の特徴に係る応答用データ転送オブジェクト作成処理部３２とマッピングクラス復元処理部２５について説明する。
図５は、応答用データ転送オブジェクト作成処理部３２の処理フローチャート図である。
【００５０】
図６は、マッピングクラス復元処理部２５の処理フローチャート図である。
まず、応答用データ転送オブジェクト作成処理部３２は、上記呼び出されたビジネスオブジェクト３１が処理を実行した結果として応答パラメータを返してくると、これら各応答パラメータ毎に、図５に示す処理を実行する。すなわち、まず、処理対象の応答パラメータからそのタイプ（型）を取得する（ステップＳ２１）。そして、当該応答パラメータがマッピングクラスのタイプ（型）を継承しているオブジェクトであるか否かを判定する（ステップＳ２２）。これは、具体的な一例としては、例えば永続化レイヤ２１４において“hibernate” （http://www.hibernate.org/）を使用している場合には、“net.sf.hibernate.Lifecycle”を継承（extends）しているオブジェクトであるか否かを判定するものである。そして、マッピングクラスのタイプを継承しているオブジェクトである場合には（ステップＳ２２，ＹＥＳ）、このオブジェクトから、転送可能なデータであるプロパティ名と値を全て取得して、これらをマッピングクラス送信用オブジェクトにコピーし、このマッピングクラス送信用オブジェクトをデータ転送オブジェクト３４に格納する（ステップＳ２３）。マッピングクラスのオブジェクトではない場合には（ステップＳ２２，ＮＯ）、この応答パラメータをデータ転送オブジェクト３４にコピーする（ステップＳ２４）。尚、マッピングクラス送信用オブジェクトには、これがマッピングクラス送信用オブジェクトであることを示すタイプ（型）が与えられている。また尚、転送可能なデータはプロパティ名と値のみであり、これら以外のデータは全て転送できないデータであるので、転送できないデータの具体例は特に示さない。
【００５１】
そして、データ転送オブジェクト３４を、ＲＭＩにより、プレゼンテーションレイヤ２０側に転送する。
上記データ転送オブジェクト３４を受取ったマッピングクラス復元処理部２５は、データ転送オブジェクト３４に格納された各応答パラメータ毎に、図６に示す処理を実行する。すなわち、データ転送オブジェクト３４から処理対象の応答パラメータのタイプ（型）を取得する（ステップＳ３１）。そして、このタイプ（型）により、上記マッピングクラス送信用オブジェクトであるか否かを判定する（ステップＳ３２）。処理対象の応答パラメータが上記マッピングクラス送信用オブジェクトである場合には（ステップＳ３２，ＹＥＳ）、マッピングクラス送信用オブジェクトに格納されたデータ（すなわちプロパティ名と値）を全て取得し、これを用いて新しくマッピングクラスを生成（復元）する（ステップＳ３３）。
【００５２】
但し、復元するといっても、上記転送できないデータまでもが復元されるわけではない。生成されたマッピングクラスは、上記転送可能なデータであるプロパティ名と値のみを含み、他のデータは空であるという、形式的にマッピングクラスの形となっているものとなる。つまり、上記の通り、マッピングクラスとして利用可能な状態に復元しているものである。しかし、画面入出力コントロールオブジェクト２１が必要とするデータ（Ｗｅｂブラウザ１１に処理結果を表示させる為の必要なデータ）は、通常、上記プロパティ名と値のみであるので、特に問題はない。また、絶対にマッピングクラスの形に復元させなければならないというものでもない。しかし、本システムでは、図２に示すように、永続化レイヤ１１４にＯＲマッピング技術を採用しているので、応答はマッピングクラスの形で渡されるのが自然である。また、マッピングクラスは、例えばデータベース１０２の表に相当するものであり、マッピングクラスを用いれば表を表示させる処理が行い易い。よって、マッピングクラスとして利用可能な状態に復元することが望ましい。
【００５３】
そして、生成したマッピングクラスを、画面入出力コントロールオブジェクト２１に渡す。また、処理対象の応答パラメータがマッピングクラス送信用オブジェクトではない場合には（ステップＳ３２，ＮＯ）、この応答パラメータをそのまま画面入出力コントロールオブジェクト２１に渡す。
【００５４】
これによって、画面入出力コントロールオブジェクト２１は、処理結果をＷｅｂブラウザ１１に表示させる。
以上説明したように、第２の特徴によれば、ビジネスレイヤ３０からの応答の中にマッピングクラスがあり、そのままではプレゼンテーションレイヤ２０側に転送できない場合でも、転送可能とできる。更に、これをマッピングクラスの形に復元して画面入出力コントロールオブジェクト２１に渡すことで、ＯＲマッピング技術を活かす形で処理結果の表示等を行わせることができる。
【００５５】
尚、最後に、図７に、図１のビジネスレイヤ３０におけるビジネスオブジェクト定義ファイル３４の具体的な記述例を示す。このビジネスオブジェクト定義ファイル３４自体は、上記特徴とは直接関係しないものであり、従来より、ビジネスレイヤ３０において、各ビジネスオブジェクト毎に、そのビジネスオブジェクトが扱えるパラメータの型を定義しておくことは、行われていた。
【００５６】
図７に示すように、全てのビジネスオブジェクト３１に共通する記述部分と、各ビジネスオブジェクト３１毎の定義記述部分とがある。各ビジネスオブジェクト３１毎の定義記述部分には、そのビジネスオブジェクト３１が扱えるパラメータ（応答パラメータ）の型（タイプ）が定義されている。図示の例では、例えばInteger型、String型、配列型等が定義されている。応答パラメータとしてマッピングクラスを扱えるビジネスオブジェクト３１の場合には、当然、マッピングクラスの型（タイプ）が定義されており、上記図５の処理は、基本的にはこの様なビジネスオブジェクト３１を対象としている。また、Java等では、マッピングクラスのインスタンス（オブジェクト）はマッピングクラスの型（タイプ）を継承しているものである。
【００５７】
これより、上記の通り、図５のステップＳ２１、Ｓ２２の処理では、処理対象の応答パラメータの型（タイプ）がマッピングクラスの型（タイプ）である場合には、判定ＹＥＳとなり、ステップＳ２３の処理が行われることになる。
【００５８】
尚、図１のビジネスオブジェクト定義ファイル２４とビジネスオブジェクト定義ファイル３４は、同一の内容を示している（入力パラメータ、応答パラメータを併せて定義している）。もし、プレゼンテーションレイヤ２０とビジネスレイヤ３０とが別々のサーバマシン上に実装される構成である場合には、定義ファイル３４をコピーして定義ファイル２４を作成するが、内容は同一である。
【図面の簡単な説明】
【００５９】
【図１】本例のＷｅｂアプリケーションシステムの機能ブロック図である。
【図２】図１の特徴に係るＷｅｂアプリケーション全体の具体的な構成例を示している。
【図３】（ａ）はフォームデータ、（ｂ）はビジネスオブジェクト定義ファイルの具体例を示す図である。
【図４】呼出用データ転送オブジェクト作成処理部による処理フローチャート図である。
【図５】応答用データ転送オブジェクト作成処理部の処理フローチャート図である。
【図６】マッピングクラス復元処理部の処理フローチャート図である。
【図７】ビジネスオブジェクト定義ファイルに記述される内容の具体例である。
【図８】従来のＷｅｂアプリケーションの構成例である。
【符号の説明】
【００６０】
１  クライアントマシン
２  アプリケーションサーバ
１０  クライアントレイヤ
１１  Ｗｅｂブラウザ
２０  プレゼンテーションレイヤ
２１  画面入出力コントロールオブジェクト
２２  呼出用データ転送オブジェクト作成処理部
２３  記憶装置
２４  ビジネスオブジェクト定義ファイル
２５  マッピングクラス復元処理部
２６  フォームデータ
２７  マッピングクラス
２８  データ転送オブジェクト
３０  ビジネスレイヤ
３１  ビジネスオブジェクト
３２  応答用データ転送オブジェクト作成処理部
３３  マッピングクラス
３４  データ転送オブジェクト
４０  データベース
１０１  Ｗｅｂアプリケーション
１０２  データベース
１０３，１０４  アプリケーション
１１１  クライアントレイヤ
１１２  プレゼンテーションレイヤ
１１３  ビジネスレイヤ
１１４  永続化レイヤ
１２１  Ｗｅｂブラウザ
１３１  アプリケーションサーバ
１３２  ＪＳＦ（Java Server Faces ）
１３３  Managed Bean
１４１  ビジネスロジックコンテナ
１４２  ビジネスオブジェクト
１４３  データアクセスオブジェクト（ＤＡＯ）
１４４  マッピングクラス
１４５  ＯＲマッピング
１５１  ビジネスレイヤ
１５２  永続化レイヤ
１５３  バッチプロセス
１５４  ＯＲマッピング
１６１  ビジネスレイヤ
１６２  永続化レイヤ
１６３  バッチプロセス
１６４  ＯＲマッピング
【図１】
2006268121.tif 000003
【図２】
2006268121.tif 000004
【図３】
2006268121.tif 000005
【図４】
2006268121.tif 000006
【図５】
2006268121.tif 000007
【図６】
2006268121.tif 000008
【図７】
2006268121.tif 000009
【図８】
2006268121.tif 000010