ステップ4: カスタム・ビジネス・ロジック・メソッドのコール |
前へ |
次へ |
ビジネス・コンポーネント・バッチ・クライアント・チュートリアルのこのステップでは、CustomerViewビュー・オブジェクトに対するカスタム行メソッドを作成し、クライアントのためにそれをコールします。
このステップを完了する前に、バッチ・クライアントが主キーによりCustomerViewの行を検索することができることを確認します。
顧客名のファースト・ネームとラスト・ネームを連結するメソッドを作成します。このメソッドは、CustomerViewの行セット全体ではなく、行セットの1行にのみ適用されるので、ビュー行クラスでメソッドを作成します。
CustomerViewに対してビュー行クラスを生成し、メソッドを追加するには、次のようにします。
CustomersViewRowImpl.javaを生成します。}の直前に次のコードを入力します。
public String getCustFullName()
{
StringBuffer fullName = new StringBuffer(40);
fullName.append(getAttribute("CustFirstName"));
fullName.append(" ");
fullName.append(getAttribute("CustLastName"));
return fullName.toString();
}
CustomersViewRowImpl.getCustFullName()は、クライアントから直接コールしないでください。ローカル・モードでバッチ・クライアントを実行する予定でも、層に依存しないインタフェース(サーバー側CustomersViewRowImplの反対)を使用すると、アプリケーションはデプロイメント構成に依存しません。
クライアント行インタフェースを生成すると、このメソッドをクライアントからコールし、層に依存しないようにすることができます。
CustomersViewに対するクライアント行インタフェースを生成するには、次のようにします。
JDeveloperによりCustomersViewRowというインタフェースが生成されます。このインタフェースは、CustomersViewRowImplによって実装され、getCustFullName()を公開します。サーバー側パッケージOnlineOrdersにあるCustomersViewRowImplと違い、CustomersViewRowはパッケージOnlineOrders.commonにあり、複数層の環境でクライアントを使用してデプロイします。
ここで、層に依存しない方法でクライアントからgetCustFullName()をコールします。
クライアントからgetCustFullName()をコールするには、次のようにします。
importブロックに次の文を追加します。
import OnlineOrders.common.*;
Row row_Cust = customersFound[0];
それを次の行に置き換えます。
CustomersViewRow row_Cust = (CustomersViewRow) customersFound[0];
row_CustをCustomersViewRowに変換することにより、汎用のoracle.jbo.RowインタフェースにないCustomersViewRowのメソッドをコールすることができます。
show("Name: " + row_Cust.getCustFullName());
バッチ・クライアントを実行して、行った変更を確認できます。
このバージョンのバッチ・クライアントを実行し、保存するには、次のようにします。
メッセージ・ビューにプログラムの出力が表示されます。
次は、ビュー・リンクを走査して検索を行い、ディテール・データを表示します。