0) { obj.className = "imgborder_on"; } } } function hideImage(obj) { if (obj.className.substr(0, 10) == "imgborder_") { obj.src = eyeglass.src; obj.className = "imgborder_off"; } } function showAllImages() { imgs = document.images; for (i=0; i < imgs.length; i++) { showImage(imgs[i]); } } function hideAllImages() { imgs = document.images; for (i=0; i < imgs.length; i++) { hideImage(imgs[i]); } } //-->
ADF Business Componentsを使用したビジネス・サービスの開発
目的
このチュートリアルではアプリケーションのビジネス・サービスを作成します。ビジネス・サービス は、アプリケーションの一部であり、アプリケーション内でデータを維持し、中間層でビジネス・ルールを実装します。さまざまなテクノロジの選択肢がありま す。このチュートリアルでは、中間層のビジネス・サービスに対してOracle ADF Business Componentsを使用し、次に検証規則とビジネス・ルールをモデルに追加します。
所要時間
約50分
トピック
このチュートリアルでは、以下のトピックについて説明します。
スクリーンショットの表示
このアイコンの上にカーソルを置くと、このコンポーネン ト・パレットのすべてのスクリーンショットがロードし、表示されます。(警告:すべてのスクリーンショットが同時にロードされるため、ご使用のインター ネット接続によってはレスポンス・タイムが遅くなる場合があります。)
注:各手順に関連したスクリーンショットのみを表示する場合は、それぞ れの手順にあるアイコンの上にカーソルを置いてください。スクリーンショットをクリックすると、非表示になります。
概要
Javaアプリケーションを開発する場合、ADF Business Componentsを使用して基本的なデータベース表にマッピングし、データをデータベースにコミットする前のアプリケーションでデータを維持できま す。ADF Business Componentsは、エンティティ・オブジェクト、ビュー・オブジェクト、アプリケーション・モジュールで構成されています。
複数のエンティティ・オブジェクトとビュー・オブジェクトを作成して、1つのアプリケーション・モ ジュールに追加します。次に、検証規則とビジネス・ルールを実装して、モジュールが正しく機能することを確認します。
ト ピック・リストに戻る
シナリオ
計画しているアプリケーションでは、CUSTOMERS表およびORDERS表のデータが操作され ます。ただし、そのアプリケーションで表の列全部が表示されるわけではなく、一部のページに複数の表のデータが表示されます。データベース表から表示する 必要のあるデータを指定し、さらにモデルでビジネス・ルールを実装して、任意のユーザー・インタフェースからビジネス・ルールを実行できるようにする必要 があります。
トピック・リストに戻る
前提条件
このチュートリアルを始める前に、次のことを確認してください。
1.
|
Oracle JDeveloper(10.1.3.1.0)にアクセスできるか、またはインストール済みであること。この製品は、
Oracle Technology Networkからダウンロードできます。
| 2.
|
Oracle Database 10gに付属のOracle Sample Schemaにアクセスできるか、またはインストール済みであること。
このチュートリアルでは、OEスキーマを使用します。特に、ページは EMPLOYEES表と連動します。
OEスキーマのインストールおよびOracle JDeveloper 10g内における接続の作成手順は、次のURLを参照してください。
http://www.oracle.com/technology/obe/obe1013jdev/common/OBEConnection.htm
| 3.
|
Oracle JDeveloperを起動すること。解凍先のルート・ディレクトリ(
<jdev_home>
) にあるJDeveloper実行可能ファイル(
jdeveloper.exe
) をダブルクリックします。
「
ユーザー設定の移行」ダイアログ・ボックスが開いたら、「
い いえ」をクリックします。
「
今日のヒント」ウィンドウを閉じます。
| 4.
|
Oracle JDeveloper IDEが表示されます。
|
トピック・リストに戻る
ビジネス・ モデルの構築
ADF Business Componentsの作成にはさまざまな方法があります。このチュートリアルでは、いくつかの方法を組み合わせます。アプリケーションのADF Business Componentsモデル構築には、以下のタスクが必要です。
データベース接 続の作成
Java Database Connectivity(JDBC)は、Javaアプリケーションをリレーショナル・データベースに接続するために使用される、標準的な Application Program Interface(API)です。このチュートリアルで使用するOEスキーマへのJDBC接続を作成するには、以下の手順に従います。
1.
|
「
接続ナビゲータ」タブをクリックします。接続ナビゲータが表示されていない場合は、 「
表示]→「
接続ナビゲータ」を選択します。
|
2.
|
データベース・ノードを右クリックし、コンテキスト・メニューから「
デー タベース接続の作成」を選択します。「
OK」をクリックします。
| 3.
|
データベース接続の作成ウィザードの初期画面が表示されたら、「
次へ」をクリックしま す
ウィザードのタイプ・ページで、名前
oeconnを入力して「
次へ」 をクリックします。
| 4.
|
ウィザードの認証ページで、ユーザー名
oeとパスワード
oeを入力します。「
パスワードを配布」チェック・ボックスを選択 し、「
次へ」をクリックします。
| 5.
|
ウィザードの接続ページで、ホスト名
localhostを入力 し、SIDを
XE
に変更します。「
次へ」 をクリックします。
| 6.
|
「
接続のテスト」をクリックします。
データベースが使用可能な状態にあり、接続情報が正しい場合、ステータス・ウィンドウに
成功が表示されます。
エラーが発生した場合、「
戻る」をクリックして必要な変更を行った後に、再度接続をテ ストしてください。
接続に成功したら、「
終了」をクリックします。
| 7. |
接続ナビゲータのデータベース接続ノードの下に、接続が表示されます。
| 8. | 「
すべて保存」
をクリックするか、「
ファイル」→「
すべて保存」 を選択して作業内容を保存します。
|
トピックに戻る
アプリケーショ ンとプロジェクトの作成
Oracle JDeveloperでは、ファイルはアプリケーションとオブジェクトで構成されます。アプリケーションは制御構造の最上位レベルで、1つ以上のプロジェ クトで構成されます。プロジェクトは、関連するファイルを論理的にグループ化する構成となっています。プロジェクトを使用してソース・コードを編成できま す。
Oracle JDeveloperは、テンプレートを使用して、特定の処理に必要なテクノロジの選択肢のみを公開します。Webアプリケーション[JSF、ADF BC]テンプレートをアプリケーションに適用すると、Oracle JDeveloperは、2つのプロジェクト、ModelとViewControllerを作成します。
このチュートリアルに必要なアプリケーションとプロジェクトを作成するには、以下の手順に従いま す。
1.
|
「
アプリケーション・ナビゲータ」タブをクリック します。
アプリケーション・ナビゲータで
アプリケーション・ ノードを右クリックし、コンテキスト・メニューから「
新規アプリケーション・ワークスペース」を選択します。
|
2.
|
アプリケーション・ワークスペースの作成ダイアログで、アプリケーション名を
OrderEntryに 変更します。アプリケーション名を入力すると、ディレクトリ名が自動的に変更されることに注意してください。
アプリケーション・テンプレートのドロップダウン・リストから「
Web Application [JSF, ADF BC]」を選択し、「
OK」をクリックします。
| 3.
|
アプリケーション・ナビゲータに、OrderEntryアプリケーションと2つのプロジェクトが表示されます。このチュー トリアルでは、Modelプロジェクトでビジネス・コンポーネントを構築します。別のチュートリアルで、ViewControllerプロジェクトを使用 して、ユーザー・インタフェースを構築します。
|
トピックに戻る
ADF Business Componentsの作成
ADF Business Componentsを構築する準備ができました。ビジネス・コンポーネントは、いくつかの方法で作成できますが、ここではウィザードを使用します。
ウィザードでは、次の順に作成を行います。
- エンティティ・オブジェクト。これは、データの維持とキャッシュ、検証の実行、 ビジネス・ルールのカプセル化を行うデータ・アクセス・オブジェクトです。
-
ビュー・オブジェクト。エンティティ・オブジェクトに基づくオブジェクトで、表 示して操作する必要のあるデータを表示します(通常、ビュー・オブジェクトはクエリーと呼ばれます)。
- アプリケーション・モジュール。特定のタスクのためにビュー・オブジェクトを調整するサービ ス・オブジェクト。これには、アプリケーションが必要とするビジネス・サービスのみが含まれます。
アプリケーションのデータ・モデルとして機能するビジネス・コンポーネントを作成する には、以下の手順に従います。
1.
|
OrderEntryアプリケーションで
Modelプロジェクトを右クリックし、コン テキスト・メニューから「
新規」を選択します。
|
2.
|
新規ギャラリで、カテゴリ・リスト内の
Business Tierを開き、
ADF Business Componentsを選択して、項目リストから
Business Components from Tablesを選択します。
「
OK」をクリックします。
| 3.
|
Initialize Business Components Projectダイアログで、接続のドロップダウン・リストから「
oeconn」を選択し、「
OK」 をクリックします。
| 4.
|
Create Business Components from Tablesウィザードの初期画面が表示されたら、「
次 へ」をクリックします。
ウィザードのエンティティ・オブジェクト・ページで、エンティティ・オブジェクトを作成するパッケージの名前を指定できま す。
modelという名前のデフォルト・パッケージを受け入れます。
エンティティ・オブジェクトのベースにするデータベース表も指定します。「
問合せ」を クリックして、使用可能な表のリストを表示します。
| 5.
|
使用可能リストで、
CUSTOMERS表と
ORDERS表を、 [Ctrl]を押しながらクリックして、複数選択します。「
追加」
をクリックして、それらを選択済リストに 移動します。
「
次へ」をクリックします。
| 6.
|
ウィザードの更新可能なビュー・オブジェクト・ページで、エンティティ・オブジェクトからデータを問い合わせるビュー・オ ブジェクトを作成できます。
パッケージは、論理的な作業をグループ化するのに便利です。ビュー・オブジェクトを独立したパッケージに配置するには、 パッケージを
model.queries
に変更します。
「
すべて追加」
をクリックして、エンティティ・オブ ジェクトを選択済リストに移動して、「
次へ」をクリックします。
| 7. |
ウィザードの読取り専用ビュー・オブジェクト・ページで、「
次へ」をクリックします。 更新可能なビュー・オブジェクトのみを作成します。
| 8. |
ウィザードのアプリケーション・モジュール・ページで、「
アプリケーション・モジュール」 チェック・ボックスを選択します。
アプリケーション・モジュールを独自のパッケージに配置するには、パッケージを
model.services
に 変更します。
アプリケーション・モジュールに名前
CustomerOrderBusinessService
を 指定し、「
次へ」をクリックします。
| 9. |
ウィザードのダイアグラム・ページで、ビジネス・コンポーネントの視覚的な表示を作成するオプションを使用できます。使用 するには、「
Business Components Diagram」チェック・ボックスを選択します。
パッケージを
model
に、名前を
CustomerAppBC_Diagram
に設定します。
「
Domains」チェック・ボックスの選択を解除して、「
次へ」 をクリックします。
| 10. |
ウィザードの終了ページで、オブジェクトのリストを確認してから「
終了」をクリックし ます。
| 11. |
作成が完了すると、ビジネス・コンポーネントのダイアグラムがエディタで表示されます。エディタ・ウィンドウ上部のツール を使用して、ダイアグラムの拡大表示や縮小表示、コンポーネントの配置変更ができます。また、上下左右にスクロールして、作成したオブジェクトを表示でき ます。
| 12. |
アプリケーション・ナビゲータで、作成したオブジェクトを表示することもできます。
Modelプ ロジェクトと
アプリケーション・ソース・ノードを開きます。3つのパッケージとビジネス・コンポーネントのダイアグラ ムが表示されます。
それぞれのパッケージを開いて、
modelパッケージで作成し たエンティティ・オブジェクト、
model.queriesパッケージで作成したビュー・オブ ジェクト、および
model.servicesパッケージで作成したアプリケーション・モ ジュールをそれぞれ表示します。
| 13. | 「
すべて保存」
をクリックするか、「
ファイル」→「
すべて保存」 を選択して作業内容を保存します。
|
トピックに戻る
ビジネス・コン ポーネントのカスタマイズ
ウィザードで作成したビジネス・コンポーネントは、使用するアプリケーションによっては、変更が必 要になる場合があります。この項では、デフォルトのビジネス・コンポーネントをカスタマイズします。
通常、エンティティ・オブジェクトの属性は、データベースの列に1対1でマッピングし、アプリケー ションの多くのビュー・オブジェクトで再使用されます。ただし、状況によっては、エンティティ・オブジェクトの属性を制限する必要があります。この例で は、アプリケーションに使用されないエンティティ・オブジェクトから属性を削除しますが、それにはまず、従属するビュー・オブジェクトから属性を削除する 必要があります。また、ビュー・オブジェクトから属性を削除しますが、エンティティ・オブジェクトには残します。
もう1つの変更は、顧客情報とは無関係に注文情報にアクセスできる、OrdersViewビュー・ オブジェクトのインスタンスをデータ・モデルから削除することです。計画しているアプリケーションは、注文が顧客に関連している場合にのみ注文にアクセス するので、モデルにおいて、OrdersViewの追加的なインスタンスは必要ありません。
ビジネス・コンポーネントにこれらの変更を行うには、以下の手順に従います。
1.
|
エンティティ・オブジェクトから属性を削除するには、まず、従属するビュー・オブジェ クトから属性を削除する必要があります。
ビジネス・コンポーネントは、さまざまな方法で編集できます。このチュートリアルで は、アプリケーション・ナビゲータとダイアグラムの両方を使用してオブジェクトを編集します。ダイアグラムのビジネス・コンポーネントは、アプリケーショ ン・ナビゲータのオブジェクトと同期化したままです。
アプリケーション・ナビゲータで
CustomersViewビュー・ オブジェクトを右クリックし、コンテキスト・メニューから「
CustomersViewの編集」を選択します。
|
2.
|
ビュー・オブジェクト・エディタで、左のツリーの
属性ノードを選択します。
右の選択済リストで
CustGeoLocationを選択し、「
削除」
をクリッ クして選択済リストから移動します。
「
OK」をクリックします。
| 3.
|
ダイアグラムで
Customersエンティティ・ オブジェクトを右クリックし、コンテキスト・メニューから「
プロパティ」を選択します。
| 4. |
エンティティ・オブジェクト・エディタで、左のツリーから
属性、右のエンティティ属性 パネルから
CustGeoLocation属性を選択します。「
削除」をクリック して属性を削除します。
「
OK」をクリックします。
注:別の方法として、属性をダイアグラムから直接削除できます。属性だけを削除し、エ ンティティ全体を削除しないよう注意してください。
| 5. |
前に述べたとおり、ビュー・オブジェクトはクエリーであり、エンティティ・オブジェクトのすべての属性を反映するわけでは ありません。OrdersViewビュー・オブジェクトでは、Ordersエンティティ・オブジェクトからのPromotionld属性は必要ありません が、他のアプリケーションが使用する可能性があるので、エンティティ・オブジェクトに残しておきます。
ダイアグラムで
OrdersViewをダブルクリックしてビュー・オブジェクト・エ ディタを起動し、
属性ノードを選択します。
PromotionIdを選択し、「
削 除」
をクリックして属性を選択済リストから移動します。
「
OK」をクリックします。
| 6. |
CustomerOrdersBusinessServiceアプリケーション・モ ジュールをダブルクリックして、アプリケーション・モジュール・エディタを起動します。データ・モデル内のビュー・オブジェクト間の階層関係に注意してく ださい。
| 7. |
アプリケーション・モジュール・エディタで、OrdersView2と呼ばれる詳細なビュー・オブジェクトが CustomersView1にあることに注意してください。この対応付けは、デフォルトで、データベース内の外部キーに基づいて作成されました。
アプリケーション・モジュールにはOrdersView1という名前の、OrdersViewの他のインスタンスも含まれ ています。このインスタンスは、注文に直接アクセスするために使用できます。ただし、計画しているアプリケーションでは顧客に関連する注文のみにアクセス します。したがって、このOrdersViewの独立したインスタンスは必要ではなく、データ・モデルから削除できます。
モデルから削除するには、
OrdersView1を選択して、「
イン スタンスの削除」
をクリックします。
「
OK」をクリックして、アプリケーション・モジュールを更新し、アプリケーション・ モジュール・エディタを終了します。
| 8. |
ダイアグラムで、OrdersView1ビュー・オブジェクトのインスタンスがアプリケーション・モジュール内に表示され ていないことに注意してください。
ダイアグラムでアプリケーション・モジュールのサイズを調節するには、
CustomerOrderBusinessServiceア プリケーション・モジュールを右クリックして、コンテキスト・メニューから「
Optimize Shape Size」 →「
Height and Width」を選択します。
| 9. |
「
すべて保存」
をクリックするか、「
ファイル」→「
すべて保存」を選択して作業内容 を保存します。
|
トピックに戻る
トピック・リストに戻る
ビジネス・ルールの実装
作業中のデータベース・スキーマは、データベースの制約およびPL/SQLを使用して、データに多 数のビジネス・ルールを課しています。たとえば、顧客の信用限度は5000以下でなければなりません。ただし、この項では、ビジネス・コンポーネントを使 用して、データをデータベースにコミットする前に中間層で宣言的に検証を行います。
モデルにビジネス・ルールを追加するには、以下の手順に従います。
トピック・リストに戻る
簡単な検証規則の追加
企業のビジネス・ルールでは、顧客の絶対的な信用上限は5000に定義されています。 しかし、受注のために、顧客の信用限度を4000以上に設定してはならないと決定されました。このビジネス・ルールを受注アプリケーション内で実装しま す。
エンティティ・オブジェクト内で検証を実装するには、以下の手順に従います。
1.
|
アプリケーション・ナビゲータで
OrderEntry →
Modelプ ロジェクトと
アプリケーション・ソース →
modelパッケージを開きます。「
Customers」 エンティティ・オブジェクトを右クリックし、コンテキスト・メニューから「
Customersの編集」を選択します。
| 2.
|
エンティティ・オブジェクト・エディタで、ツリー制御から
検証を選択します。
Declared Validation Rulesリストから
CreditLimitを 選択します。
「
新規」をクリックして、検証基準の新しいセットを追加します。
| 3.
|
規則のドロップダウン・リストを使用して、使用できる多様な規則を確認します。
この例では、
バリデータの比較が必要なので、規則のドロップダウン・リストから選択し て、以下の値を設定します。
属性 |
CreditLimit
| 演算子 |
LessOrEqualTo
| 比較の対象 |
リテラル値
| リテラル値の入力 |
4000
| エラー・メッセージ |
顧客の信用制限は4000未満でなければなりません
|
「
OK」をクリックします。
エンティティ・オブジェクト・レベルで検証規則を追加しました。この規則は、それにアクセスするすべてのビュー・オブジェ クトおよびアプリケーション・モジュールで再使用されます。
時間があれば、以下の簡単な検証規則を追加してください。
| 婚姻区分の値を、'既婚'または'未婚'に制限する。 |
| 性別の値を、'男性'または'女性'に制限する。 |
ヒント:この種類の検証には、
List Validator規 則を使用します。用意されているヘルプでは、リスト項目を追加する方法についてサポートします。
次の作業のために、エンティティ・オブジェクト・エディタを開いたままにしてください。
|
トピックに戻る
フォーマット・マスクの定義
アクセスする方法とは無関係に、データは一貫した書式で表示される必要があります。こ の場合、信用限度は金額であり、正しい通貨記号と小数点の記号で表示される必要があります。また、生年月日は、MM/DD/YY書式で表示する必要があり ます。
信用限度および生年月日の属性にフォーマット・マスクを追加するには、以下の手順に従 います。
1.
|
エンティティ・オブジェクト・エディタ内で
Customersエンティティ・オブジェ クトを開き、ツリー制御で
属性ノードを開きます。
開いたノードから
CreditLimitを選択し、「
コントロール・ ヒント」タブをクリックします。
| 2.
|
Format Typeドロップダウン・リストから「
通貨」を選択します。
任意のToolTipテキストを入力します。
| 3. |
左のツリーから
DateOfBirth属性を選択して、「
コントロール・ヒント」 タブをクリックします。
Format Typeドロップダウン・リストから「
Simple Date」を選択 します。
Formatのドロップダウン・リストで事前定義されたフォーマット・マスクは十分ではないので、Formatフィールド に独自のフォーマット・マスクを入力します。
MM/dd/yyを入力し、「
適用」 をクリックして、これらの変更内容を受け入れます。
注:フォーマット・マスクは大文字と小文字を区別するので、示したとおり
正確に 入力する必要があります。
| 4. |
「
コントロール・ヒント」タブが右側でアクティブな状態において、左側のツリーの属性をクリックし、属性
CustFirstNameの ラベル・テキストを更新します。ラベル
Name
を表示し、 属性
CustLastNameのラベル・テキストを更新して、
Surname
を 表示します。
「
適用」をクリックして、これらの変更内容を受け入れます。
注:このフォーマットは、エンティティ・オブジェクト・レベルで追加されました。この フォーマットは、それにアクセスするすべてのビュー・オブジェクトおよびアプリケーション・モジュールで再使用されます。
次の作業のために、エンティティ・オブジェクト・エディタを開いたままにしてください。
|
トピックに戻る
デフォルト値の指定
デフォルト値が自動的に移入される必要のあるフィールドもあります。この場合、新しい 顧客のCreditLimitはデフォルトで100になっています。演算子が、もちろんこれをオーバーライドできますが、Formsにおける初期値と同様 に、このアプリケーション内ではデフォルトを使用します。
エンティティ・オブジェクトにデフォルト値を追加するには、以下の手順に従います。
1.
|
開いた
属性ノードから
CreditLimitを選 択し、「
エンティティ属性」タブをクリックします。
デフォルトを
100に設定し、「
OK」をクリック して、エンティティ・オブジェクトを更新し、エディタを閉じます。
| 2.
|
「
すべて保存」
をクリックして、作業内容を保存し ます。
|
トピックに戻る
ビュー・オブ ジェクトのプロパティの変更
上記の変更は、エンティティ・オブジェクト・レベルで行われました。ビュー・オブジェ クト・レベルでも同様の変更が行えます。
アプリケーションには、同じエンティティ・オブジェクトを使用する複数のビュー・オブ ジェクトが存在することがあります。ほとんどの場合、エンティティ・オブジェクト・レベルでプロパティを更新することは理にかなっています。たとえば、 ビュー・オブジェクトが複数の表から列を選択するクエリーであると見なす場合、インスタンスによっては、エンティティ・オブジェクト・レベルではなく、 ビュー・オブジェクト・レベルで、属性のプロパティをいくつか変更する必要があります。たとえば、値のリスト用ビュー・オブジェクトの作成や、ビュー・オ ブジェクトにorder by句を組み入れることが必要になる場合があります。この例では、この点を説明するために、ビュー・オブジェクト・レベルでの調節をいくつか行います。
ビュー・オブジェクトを変更するには、以下の手順に従います。
1.
|
ダイアグラムまたはアプリケーション・ナビゲータで、
CustomersViewをダ ブルクリックしてビュー・オブジェクト・エディタを起動します。CustomersViewは、
model.queriesパッ ケージの
Model →
アプリケーション・ソースにあります。
ツリー制御の
属性ノードを開き、
CustLastnameを 選択して、「
コントロール・ヒント」タブをクリックします。
| 2.
|
ラベル・テキストは空白です。これは、デフォルトのラベルが使用されているか、エンティティ・オブジェクト・レベルのラベ ル・テキスト・セットが適用されていることを意味します。
ビュー・オブジェクト(VO)がエンティティ・オブジェクト(EO)属性設定のオーバーライドを実証するために、ラベル・ テキストを
VO Last Nameに変更します。その他は変更しません。
| 3. |
問合せで
ORDER BY句を設定することによって、問合せを 行うオブジェクトの順序を変更します。
ツリー制御で
SQL文を選択します。
Order Byの右側の「
編集」をクリックします。
| 4. |
このダイアログを使用して、複雑な式を作成できます。このチュートリアルでは、1つの列を追加する必要があります。起動 時、ダイアログは非常に小さいので、詳細を表示するためにサイズを変更します。
「
新規
」をクリックして、式に新しい値を追加し ます。
Order Byダイアログで、式パレットの
Customersを開きます。
| 5. |
CUST_LAST_NAMEを選択し、「
列を挿入
」をクリックして、それを左側の式フィールドに移動します。
| 6. |
「
検証」をクリックして、列をOrder Byリストに加え、「
OK」 をクリックします。
注:ビュー・オブジェクトはSQL問合せにすぎません。したがってオプティマイザ・ヒ ントを使用して調整することや、EXPLAIN PLANを表示することもできます。ツリー制御のチューニング・セクションを参照してください。
| 7. |
「
OK」をクリックして、ビュー・オブジェクトの編集を終了します。
メッセージが表示され、SQL問合せの構文が正確かどうかのテストについて尋ねられた場合、「
はい」 をクリックし、次に「
OK」をクリックして、クエリーが有効であることを確認します。
| 8. | 「
すべて保存」
をクリックして、作業内容を保存し ます。
|
トピックに戻る
カスタム検証の追加
これまで追加した検証の大部分は、宣言的でした。Oracle JDeveloperには、宣言的に可能であるといった検証よりも、はるかに複雑な検証を定義する柔軟性があります。ADF Business Componentsを使用する場合、カスタム検証を実行する1つの方法は、エンティティ・オブジェクトまたはビュー・オブジェクトのJavaコードを増 やすことです。
顧客の電子メール・アドレスに対するカスタム検証を追加するには、以下の手順に従いま す。
1.
|
アプリケーション・ナビゲータで
Customersエンティティ・オブジェクトを右ク リックし、コンテキスト・メニューから「
Go to Entity Object Class」を選択します。
| 2.
|
Customersエンティティ・オブジェクトのJava実装である
CustomersImpl.javaが、 エディタで開かれます。
ファイルの終わりの
}(中括弧)の上に以下のメソッドを追加します。
public boolean validateEmail (String value)
{
return (value.indexOf('@') != -1 );
}
このコードで、電子メール・アドレスに
@マークが存在するかど うかを調べます。実際には、もっと複雑な検証が必要です。
属性の検証に使用するメソッドは、
パブリックと定義され、同じ タイプの1つの引数を属性として受け入れ、
ブール値を返す必要があります。メソッド名は、キー ワード
validateで始まる必要があります。
| 3. |
アプリケーション・ナビゲータの
Customersをダブルクリックして、エンティ ティ・オブジェクト・エディタを起動します。
エンティティ・オブジェクト・エディタで、左のツリーから
検証を選択します。
Declared Validation Rulesから
CustEmailを選択し て、「
新規」をクリックします。
| 4. |
検証規則の追加ダイアログで、規則のドロップダウン・リストから「
MethodValidator」 を選択します。
validateEmail(String value)メソッドを選択して、
無効な電子メール・アドレ スなどの適切なエラー・メッセージを入力します。
「
OK」をクリックします。
「
OK」をクリックして、Customersエンティティ・オブジェクトを更新しま す。
| 5. | 「
すべて保存」
をクリックして、作業内容を保存し ます。
|
トピックに戻る
トピック・リストに戻る
モデルのテ スト
Oracle JDeveloperにはBusiness Components Browserが含まれており、クライアント・コードを構築せずにビジネス・コンポーネントをテストできます。
Business Components Browserを使用して、ビジネス・モデルのために構築した機能をテストするには、以下の手順に従います。
1.
|
アプリケーション・ナビゲータで
model.servicesを開きます。
CustomerOrdersBusinessServiceを 右クリックして、コンテキスト・メニューから「
テスト」を選択します。
| 2.
|
Oracle Business Component Browserの接続ウィンドウで接続名ドロップダウン・リストから「
oeconn」を選択して、「
接 続」をクリックします。
| 3. |
Business Component Browserで
CustomersView1を ダブルクリックして、実行します。
CreditLimitフィールドの上に静止して、CreditLimitフォーマット・マスクが適用され、 ToolTipが動作していることを確認します。CreditLimitフィールドは、通貨のフォーマット・マスクとともに表示されます。
デフォルト・ラベルではなく、CustFirstNameなどの変更した属性ラベルが表示され、EOレベルで定義されたも のではなく、VOラベルで姓が表示されていることも確認してください。
| 4. |
信用限度を
6000に更新して、エラー・メッセージが表示されることを確認します。
「
OK」をクリックして、値を4000未満に戻して続行します。
| 5. |
「
次へ」
をクリックしてレコードをスクロールし、 姓の順に顧客が返されることを確認します。
| 6. |
「
作成」
をクリックして、新しいレコードを作 成します。信用限度のデフォルト値が表示されます。
「
削除」
をクリックして、挿入したレコードを 削除します。
| 7. |
電子メール・アドレスから
@マークを削除して、エラー・メッ セージが表示されることを確認します。
「
OK」をクリックして、
@マー クを元に戻して続行します。
| 8. |
OrdersCustomerIdFkLink1ビュー・リンクをダブルクリックしま す。これによって、ビュー・リンクで結合されたCustomersView1およびOrders View2ビュー・オブジェクトが起動します。
をクリックして、別のウィンドウで結果 を確認します。
「
Specify View Criteria
」をクリックし、 CustomerId
102
を入力します。続いて「
Find」 をクリックして注文のある顧客を表示します。開いているもう1つのビュー・オブジェクト
CustomersView1に 戻ると、同じ顧客が表示されています。これは、アプリケーション・モジュールがすべてのビューを自動的に調整するからです。
.
テストが終わったら、Business Components Browserウィンドウを閉じてください。
|
トピック・リストに戻る
まとめ
ウィザードを使用して、データベース内の表をベースとし、これらの表と同じ名前を持つ エンティティ・オブジェクトを作成する方法を学習しました。ウィザードにおいて、アプリケーションで使用するデータ(特定の列)を表すビュー・オブジェク トおよびビュー・オブジェクト間のマスター/ディテール関係を維持するビュー・リンクも作成しました。ウィザードは、受注タスクで使用されるビュー・オブ ジェクトとビュー・リンクを収容および調整するアプリケーション・モジュールを追加的に作成し、コンポーネントを視覚的に表現するビジネス・コンポーネン ト・ダイアグラムを作成しました。
ビジネス・コンポーネントのデフォルト動作を変更するために、エンティティ・オブジェ クトとビュー・オブジェクトのプロパティを編集し、構築したモデルをテストしました。
このチュートリアルで学習した内容は、以下のとおりです。
| ADF Business Components(エンティティ・オブジェクト、ビュー・オブジェクト、アプリケーション・モジュール)の作成と変更 |
| ビジネス・コンポーネント・ダイアグラムの作成と編集 |
|
宣言的検 証とカスタム検証の追加
|
|
デフォル ト値の設定
|
| フォーマット・マスクの設定 |
| デフォルト・ラベルの変更 |
| ToolTipsの設定 |
| 表示されるレコード順序の変更 |
| Business Components Browserによるモデルのテスト |
関連資料
ADF FacesによるJSFユーザー・インタフェースの開発
トピック・リストに戻る
このアイコンの上にカーソルを置くと、すべてのスクリーンショットが非表示になります。
|