既存のアプリケーションをBusiness Components for Javaアプリケーションに変換する場合には、このトピックが役に立ちます。既存のアプリケーションを変換してビジネス・コンポーネントを使用するための簡単な方法はありませんが、論理的な手順は存在します。
現行のアプリケーションが2層のクライアント/サーバー・アプリケーションで、バックエンドのデータベースにフロントエンドのFatクライアントがアクセスするとします。このようなクライアント/サーバー構造のレガシー・アプリケーションはフォームベースで、ビジネス・ロジックは直接クライアント・フォーム内に定義されています。Developer 2000、PowerBuilder、Visual Basicなどのツールで作成したアプリケーションに、このような形式が多く見られます。アプリケーションを記述するコードの言語により、アプリケーションを変換する際の難易度が異なります。Javaのコードで記述されている場合は、ビジネス・ロジックが(ユーザー・インタフェースではなく)クラスで作成されているため、変換は簡単です。
Business Components for Javaでは、ビジネス・ロジックをビジネス・ロジック層に配置します。このため、クライアント・フォームにはビジネス・ロジックは含まれません。ビジネス・コンポーネント・アプリケーションの設計では、この変更がポイントになります。ビジネス・コンポーネント・アプリケーションによっては、構築方法が異なることがあります。最終的なアプリケーションでフォームを使用する場合でも、この配布方法は様々です。
ビジネス・コンポーネント・アプリケーションを構築する前に、現行のアプリケーションをフォームに基づいて分析する必要があります。アプリケーションの各クライアント・フォームには、ビジネス・コンポーネント・アプリケーションを構築する際に有効な情報が含まれています。この情報を得るには、次の項目について確認します。
フォームでアクセスするデータベース表
各フォームを参照し、このフォームで変更または使用しているデータベース表を特定します。これらの表は、ビジネス・コンポーネント・アプリケーションのエンティティ・オブジェクトと1対1に対応します。
たとえば、販売員、顧客および品目に関する情報が含まれている注文フォームがある場合は、この情報が少なくとも3つのデータベース表に含まれていると推測できます。これらのデータベース表は、エンティティ・オブジェクトによって表されます。
2つのデータベース表がキーによって関連付けられている場合は、Associationオブジェクトによって表されます。Associationオブジェクトは、エンティティ・オブジェクトを関連付けます。Associationを検出するには、基になる表の関係を確認または推測する必要があります。
フォームベースのアプリケーションでは、クライアント・フォームで検証が行われます。それぞれのUIコントロールのイベント・ハンドラは、各フィールドでの検証を行います。たとえば、テキスト・フィールドのコントロールには、on_change
というイベントがあります。テキスト・フィールドが変更された場合、on_change
イベントは、このイベントに関連付けられているコードを実行します。このようにして、ビジネス・ロジックが検証されます。
ビジネス・コンポーネント・アプリケーションでは、ビジネス・ロジック層で検証が行われます。各自のUIコントロールでは検証を行うことはできないため、すべてのフォームの各コントロールのビジネス・ロジックを確認する必要があります。多くのフォームで、日付の検証など、類似したフィールドの検証を使用しています。これにより、プロセスが容易になります。
ドメイン・オブジェクトは、特殊なビジネス・コンポーネントで、値の種類を宣言します。たとえば、会員ドメインで、Platinum、GoldおよびSilverの値のみを定義できるとします。レガシー・アプリケーションでは、これらの3つの値のみが含まれているドロップダウン・リストを使用することにより、このようなケースに対処します。ビジネス・コンポーネント・アプリケーションでは、ユーザーが設計した型は、それぞれドメイン・オブジェクトとして表す必要があります。
レガシー・プログラムの各フォームは、データのビューを表しています。次の項目について確認します。
フォームに有効値のサブセットが含まれており、一部のフィールドが非表示になっていますか。たとえば、フォームに顧客のみが表示されていますか。
ビュー・オブジェクトを作成する際、ビュー・オブジェクトのSQL問合せは、これらの項目に対する答えに基づきます。データの一意のビューを表すフォームは、ビュー・オブジェクトで表現できます。データのビューと同数のビュー・オブジェクトを定義します。
ビュー・リンクのビュー・オブジェクトへの接続方法は、Associationオブジェクトのエンティティ・オブジェクトへの接続方法と同じです。ビュー・リンクを定義するには、次の項目についても確認します。
表は他の表にもリンクしていますか。
これらの項目に対する答えにより、各表で選択される内容が決まります。これは、ビュー・リンクのSQL問合せを定義する際に有効です。
通常は、タスクごとに1つのアプリケーション・モジュールがあります。1つのフォームに1つのタスクが含まれている場合は、アプリケーション・モジュールとの間に1対1の関係が存在します。1つのフォームに複数のタスクが定義されている場合、フォームには複数のアプリケーション・モジュールが含まれます。
レガシー・アプリケーションでOracle以外のデータベースを使用している場合、このデータベースを使用するアプリケーションを開発できますが、制約事項があります。また、データベースで、SQL92の標準ではサポートされていない拡張データ型を使用している場合は、カスタム型マップを設計する必要があります。詳細は、「外部データソースに対するビジネス・コンポーネントの開発について」の関連するセクションを参照してください。