ビジネス・コンポーネント用のSwingクライアント・チュートリアルのまとめ |
![]() 前へ |
このチュートリアルでは、次のOracleテクノロジを使用して、データ・バインドされたSwingクライアント・アプリケーションをパーティション化する方法を説明しました。
BC4JとJClientにより、データベース対応の複数層のThinクライアントを作成し、デプロイできます。JClientでは、次の2つのオブジェクトを介してSwingコンポーネントをデータ・バインドできます。
JUApplication
オブジェクト。ビジネス・コンポーネント・アプリケーション・モジュールは、ビュー・オブジェクト・インスタンスを介してクライアントが使用できるデータ・モデルを定義します。JUPanelBinding
オブジェクト。イテレータ・バインドでは、Swingコンポーネントがビジネス・コンポーネント・ビュー・オブジェクトを反復できます。Swing UIアプリケーションをパーティション化すると、異なる機能ブロックを別々の開発チームに割り当てることができます。各チームはそれぞれのコード・ブロックを別々に開発およびテストし、各機能ブロックをスタンドアロン・アプリケーションとして配布できます。
このチュートリアルでは、CustomerパーティションおよびOrdersパーティションと、それ自体はデータ・バインドされていないメイン・ウィンドウを作成しました。各ブロックのデータ・バインドの定義には、ビジネス・コンポーネント・クライアント・データ・モデルを使用しました。各パーティションのクライアント・データ・モデルは、ビジネス・コンポーネント・プロジェクト内の同一のスキーマに基づくため、パーティションを1つのアプリケーションにまとめることができました。パーティションを結合するために、Customerデータ・モデルおよびOrdersデータ・モデルのビュー・オブジェクトを含むルート・アプリケーション・モジュールを作成しました。
ルート・アプリケーション・モジュールに対して定義したクライアント・データ・モデルは、メイン・ウィンドウ(FormRootAppModule.java
)のブートストラップ・コードにJUApplication
オブジェクトを作成するために使用しました。JUApplication
に含まれるルート・アプリケーション・モジュールへのランタイム接続により、組み立てられたパーティションに対して単一のJClientアプリケーション接続を次のように設定できました。
JUApplication app = JUMetaObjectManager.createApplicationObject("JClientProject.RootAppModule", null, new JUEnvInfoProvider());
2つのJClientフォームのデータ・バインドを行うために、メイン・アプリケーション・ウィンドウの処理ハンドラでは、パネル・バインドをJUApplication
オブジェクトに登録しました。メイン・ウィンドウのクラスでは、特定のクライアント・データ・モデル定義への参照を使用して、2つのパネル・バインド変数customerPanelBinding
およびordersPanelBinding
を初期化しました。
private JUPanelBinding customerPanelBinding = new JUPanelBinding("JClientProject.RootAppModule", "CustomerAppModule1", null);
private JUPanelBinding ordersPanelBinding = new JUPanelBinding("JClientProject.RootAppModule", "OrdersAppModule1", null) ;
データ・モデル定義(JClientの .cpx
ファイルに含まれる)は、JUApplication
オブジェクトと特定のビュー・オブジェクトとの連携を可能にします。ただし、このチュートリアルではメイン・ウィンドウが表示される際にデータ・バインドを作成するのではなく、フォームを表示するボタンをユーザーがクリックし、ボタンに対応する処理ハンドラが起動された時点でデータ・バインドを作成します。この使用方法により、クライアントでデータの遅延ロードが許可され、不要なデータ・バインドの作成を回避できます。
データ・バインドを実行するために、各ボタンの処理ハンドラは、まず名前付きのパネル・バインドがすでに存在しているかどうかを判断します。
app.findFormBinding(CUSTOMER) == null
および
app.findFormBinding(ORDERS) == null
パネル・バインドが存在しない場合は、ユーザーがまだボタンをクリックしていないので、キー(CUSTOMER
またはORDERS
)を使用して、JUApplication
オブジェクトのパネル・バインドのリストに、対応するパーティションのパネル・バインドが登録されます。
app.addFormBinding(CUSTOMER, customerPanelBinding);
customerForm.setPanelBinding(customerPanelBinding);
および
app.addFormBinding(ORDERS, ordersPanelBinding);
ordersForm.setPanelBinding(ordersPanelBinding);
最後に、登録されたcustomerPanelBinding
およびordersPanelBinding
により、CustomerパーティションおよびOrdersパーティションは、指定したクライアント・データ・モデル定義を使用してアプリケーション・モジュールに接続できるようになります。
各パーティションのキーを使用してパネル・バインドを登録することにより、アプリケーションはJUApplication
オブジェクトによって管理されるリストから特定のパネル・バインドを参照できます。JUApplication
オブジェクトにすでにパネル・バインドが登録されている場合、アプリケーションはビジネス・コンポーネントに対して問合せを再実行する必要はありません。ユーザーが次にフォームを表示すると、既存のパネル・バインドが再利用され、フォーム状態が保存されます。
ビジネス・コンポーネント用のSwingクライアントの開発の詳細は、次のリンクをクリックして、タスクベースのヘルプを参照してください。