アプリケーション・モジュールとは

アプリケーション・モジュールはビジネス・アプリケーション・タスクを表すクラスです。具体的には、タスクに関連するデータ・モデルとそのタスクを実装するカスタム・コードをカプセル化したものです。アプリケーション・タスクの例としては、顧客情報の更新、新規注文の作成または昇給の処理があります。

ビジネス・ロジック層には、他の層(クライアントおよびデータベース)が対話する1つ以上のアプリケーション・モジュールがあります。

再利用可能なデータ・モデルを表すアプリケーション・モジュール

アプリケーション・モジュールは、クライアントが使用するデータ・モデルを表します。データ・モデルを作成するには、アプリケーション・モジュールにビュー・オブジェクトとビュー・リンクの名前付きインスタンスを含めます。(これは、Javaフレームにリスト・ボックスやグリッド・コントロールなどのコンポーネントのインスタンスを含めることと同じです。)

ビュー・オブジェクトとビュー・リンクの組合せによって、アプリケーション・タスクが必要とする様々なデータのビューが表されます。たとえば、Create New Orderタスクを実現するために必要なビューは次のとおりです。

クライアントの様々なフォームまたはページは、ビュー・オブジェクト・インスタンスを共有でき、それらを名前で参照できます。

同一トランザクションで行われるすべてのアプリケーション・モジュール操作

アプリケーション・モジュールは、その中に含まれ、同じ一連の変更を使用するビュー・オブジェクト・インスタンスのトランザクション・コンテキストも提供します。トランザクションでは、データベースのデータに影響するすべての変更を管理しています。これは、アプリケーションに必要なアプリケーション・モジュールを決定する際に考慮すべき重要な事項です。たとえば、注文の作成と顧客の追加を同じトランザクションに含めることができます。ビュー・オブジェクトで、エンティティ・オブジェクトの変更が行われます。

1つのトランザクションで行われる変更はすべてまとめてコミットまたはロールバックされます。

一般的なガイドラインとしては、タスクごとに1つのフォームがある場合、フォームごとに1つのアプリケーション・モジュールが存在するようアプリケーションを作成できます。

タスクを実装するコードを含むアプリケーション・モジュール

特定のアプリケーション・タスクに固有のコードは、アプリケーション・モジュール・クラスのカスタム・メソッドとして作成できます。これによって、処理ロジックがカプセル化され、機能を使用するクライアントのページ/フレームのジョブが単純化されます。

たとえば、CreateNewOrderModuleアプリケーション・モジュールは、顧客を調べる処理の詳細をカプセル化したnewOrderForCustomer()というメソッドを含むことができます。

アプリケーション・モジュールは、1つのトランザクション内で完了するタスクのデータ・モデルを表します。

タスクに固有のアプリケーション・モジュール・ロジック

ビジネス・ロジック層の各コンポーネントには、Javaコードを関連付け、特定の処理を行わせることができます。また、このアーキテクチャにより、ビジネス・コンポーネントの再利用が容易になります。一般的に、次のガイドラインに基づいて機能を配置する場所を決定できます。

階層にできるアプリケーション・モジュール

アプリケーション・モジュールでビュー・オブジェクトを使用できるのと同様に、アプリケーションで別のアプリケーション・モジュールのデータ・モデルやコードを使用できます。これは、ネストされたアプリケーション・モジュールを組み込むことによって行います。1つのアプリケーション・モジュールに様々な基本的アプリケーション・モジュールを含め、これを組み合せて複雑な機能を提供できます。つまり、この機能を使用することにより、アプリケーション・モジュールという基礎的要素から新しい複合タスクを作成できます。たとえば、それぞれが別のトランザクション内にある、異なるフォームがあるとします。その後、これらのタスクのうちの複数を一度に行う1つのフォームを1つのトランザクションに含めることを決めたとします。このとき、アプリケーション・モジュールをネストし、親フォームから起動される異なるタブまたはダイアログとして、1つのフォームでこれらのサブタスクを実行します。

最上位レベルのアプリケーション・モジュールは、その中に含まれるビュー・オブジェクト・インスタンスのトランザクション・コンテキストを提供します。これには、ネストされたすべてのアプリケーション・モジュール内のインスタンスも含まれます。最上位レベルのアプリケーション・モジュールにはデータソースへの接続が1つ含まれます。これは、アプリケーション・モジュールの定義と同様に定義します。

特定のアプリケーション・タスクの一部であるアプリケーション・モジュールが再利用可能な場合、そのアプリケーション・モジュールはネストできます。アプリケーション・モジュールごとに1つのフォームが必要です。アプリケーション・モジュールは別のアプリケーション・モジュールやアプリケーションに埋め込むことができます。アプリケーション・モジュールのネストは、最上位レベルのアプリケーション・モジュールのトランザクションにそのアプリケーション・モジュールが含まれる必要があることを意味します。たとえば、OnlineOrdersアプリケーション・モジュールには、AddNewCustomerアプリケーション・モジュールを含めることができます。

メソッドをエクスポートするアプリケーション・モジュール

アプリケーション・モジュールによって提供されるメソッドは、アプリケーション・モジュールの動作を実装し、クライアントからアクセスできます。アプリケーション・モジュール・インスタンスを操作するためにクライアントが使用できる、事前定義済のフレームワーク・メソッドがあります。たとえば、アプリケーション・モジュールを使用すると、ビュー・オブジェクト・インスタンスの取得、問合せの実行、トランザクションの操作などを実行できます。

さらに、カスタム・メソッドを追加したり、クライアントが使用するパブリック・メソッドを選択してエクスポートしたりできます。たとえば、従業員の昇給を処理するアプリケーション・モジュールは、従業員の給与情報を検索して昇給額を加算するメソッドをエクスポートできます。

コード変更せずに複数構成にデプロイできるアプリケーション・モジュール

たとえばEJBまたはWebモジュールなどを使用すると、コードを変更せずに、同一のアプリケーション・モジュールを複数の構成にデプロイできます。また、コードを変更せずに、同じアプリケーション・モジュールを(層が1台、2台または3台のコンピュータにある)物理的に1層、2層または3層のアプリケーションで使用できます。

クライアント・データをカプセル化するアプリケーション・コード

アプリケーション・モジュールでは、クライアント・インタフェース(フォームなど)に合せてデータを収集するため、複数回ではなく1回のネットワーク・ラウンドトリップでデータを取得できます。リモート・アクセス可能なメソッドを介してビジネス・ロジック層で計算を実行し、クライアントのオーバーヘッドを削減することもできます。アプリケーション・データのバルク操作の場合、すべてのデータをクライアントにダウンロードするのではなく、ビジネス・ロジック層で操作を行います。クライアントが現在表示しているデータへの変更は、自動的に同期化されます。

アプリケーション・モジュールの作成を支援するツール

アプリケーション・モジュールを設計時に作成および編集するには、アプリケーション・モジュール・ウィザードおよびアプリケーション・モジュール・エディタを使用します。また、ビジネス・コンポーネント・プロジェクト・ウィザードおよびビジネス・コンポーネント・パッケージ・ウィザードを使用することにより、デフォルトのアプリケーション・モジュールも作成できます。

クライアントによるアプリケーション・モジュールのインスタンスの作成

実行時、クライアントは使用するアプリケーション・モジュールのインスタンスを作成します。このようなインスタンスは複数のクライアントで共有されません。クライアントが作成できるのは、設計時に作成されたアプリケーション・モジュールのインスタンス、または汎用アプリケーション・モジュールと呼ばれるベース・アプリケーション・モジュール・クラスのインスタンスです。汎用アプリケーション・モジュールは、動的に作成されたビュー・オブジェクト、ビュー・リンクおよびアプリケーション・モジュールのコンテナが必要な場合に使用できます。たとえば、クライアント・メニューに多数のタスクが含まれた、複雑なアプリケーションがある場合、メニューでの選択に基づいて、同じトランザクション内で、ネストされたアプリケーション・モジュールを必要に応じてインスタンス化する汎用アプリケーション・モジュールを作成できます。

アプリケーション・モジュールのプール

クライアントは、プール内のアプリケーション・モジュール・インスタンスを使用できます。たとえば、あるWebアプリケーションを最大1000人のユーザーが使用できる場合に、特定のアプリケーション・モジュールは同時に100人のユーザーしか使用しないとします。この場合、プール内に100個のアプリケーション・モジュール・インスタンスを保持します。Webクライアントでアプリケーション・モジュール・インスタンスが必要になると、そのクライアントは、プール内の空きインスタンスを取得し、要求を処理した後でプールに解放します。インスタンスはあらかじめ作成されているため、エンド・ユーザーは、タスクを実行する際にアプリケーション・モジュールをインスタンス化する時間が短縮されます。この機能を使用すると、スケーラビリティとパフォーマンスが向上します。通常は、WebベースのJSPクライアントでプールを使用します。詳細は、「アプリケーション・モジュール・プールについて」を参照してください。


関連項目
ビュー・オブジェクトとは
ビュー・リンクとは
ビジネス・コンポーネントのテスト
コード内でのアプリケーション・モジュール・インスタンスの検索
ビジネス・コンポーネント・プロジェクトおよびパッケージの構築について
ビジネス・ロジック層におけるキャッシュ・データ処理方法