ステップ4: カスタム・ビジネス・ロジック・メソッドのコール

Previous topic
前へ
Next topic
次へ

ビジネス・コンポーネント・バッチ・クライアント・チュートリアルのこのステップでは、CustomerViewビュー・オブジェクトに対するカスタム行メソッドを作成し、クライアントのためにそれをコールします。

このステップを完了する前に、バッチ・クライアントが主キーによりCustomerViewの行を検索することができることを確認します。

顧客名のファースト・ネームとラスト・ネームを連結するメソッドを作成します。このメソッドは、CustomerViewの行セット全体ではなく、行セットの1行にのみ適用されるので、ビュー行クラスでメソッドを作成します。

CustomerViewに対してビュー行クラスを生成し、メソッドを追加するには、次のようにします。

  1. ナビゲータで、「OnlineOrders」プロジェクトから「CustomersView」を右クリックし、「CustomersViewの編集」を選択します。
  2. ビュー・オブジェクトのエディタで、「Java」ノードを選択します。
  3. 「ビュー行クラス: CustomersViewRowImpl」の下の、「Javaファイルの生成」を選択します。
  4. 「OK」をクリックしてファイルCustomersViewRowImpl.javaを生成します。
  5. ナビゲータで「CustomersViewRowImpl.java」をダブルクリックして、それをソース・エディタで開きます。
  6. ファイルの最後にある}の直前に次のコードを入力します。
    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に対するクライアント行インタフェースを生成するには、次のようにします。

  1. ナビゲータで、「CutomersView」を右クリックし、「CustomersViewの編集」を選択します。
  2. ビュー・オブジェクトのエディタで、「カスタム行メソッド」ノードを選択します。
  3. 「getCustFullName」「使用可能」リストから「選択済」リストに移動します。
  4. 「OK」をクリックします。
  5. 「プロジェクト」->「再ビルド OnlineOrders.jpr」を選択します。

JDeveloperによりCustomersViewRowというインタフェースが生成されます。このインタフェースは、CustomersViewRowImplによって実装され、getCustFullName()を公開します。サーバー側パッケージOnlineOrdersにあるCustomersViewRowImplと違い、CustomersViewRowはパッケージOnlineOrders.commonにあり、複数層の環境でクライアントを使用してデプロイします。

ここで、層に依存しない方法でクライアントからgetCustFullName()をコールします。

クライアントからgetCustFullName()をコールするには、次のようにします。

  1. ナビゲータで、「Batch.java」をダブルクリックし、ソース・コードを編集します。
  2. ファイルの先頭近くにあるimportブロックに次の文を追加します。
    import OnlineOrders.common.*;
  3. 次の行を探します。
    Row row_Cust = customersFound[0];

    それを次の行に置き換えます。

    CustomersViewRow row_Cust = (CustomersViewRow) customersFound[0];

    row_CustCustomersViewRowに変換することにより、汎用のoracle.jbo.RowインタフェースにないCustomersViewRowのメソッドをコールすることができます。

  4. 顧客の電子メール・アドレスを表示する行の後ろに、次の行を追加します。
    show("Name: " + row_Cust.getCustFullName());

バッチ・クライアントを実行して、行った変更を確認できます。

このバージョンのバッチ・クライアントを実行し、保存するには、次のようにします。

  1. 「実行」->「batchclient.jprの実行」を選択します。
  2. メッセージ・ビューにプログラムの出力が表示されます。

  3. 「ファイル」->「すべて保存」を選択し、プロジェクトを保存します。

次は、ビュー・リンクを走査して検索を行い、ディテール・データを表示します。