Oracle ADF Business Componentの新機能の確認

目的

このチュートリアルでは、Oracle JDeveloper 11gを使用して、一連の簡単なADFビジネス・サービスのシナリオを作成します。 また、JDeveloperのリリース11でのADF Business Componentの新機能を簡単に紹介します。

このページを正しく実行するには、Internet Explorer 7またはFirefoxを使用してください。

トピック

このチュートリアルでは、以下のトピックについて説明します。

 概要
 前提条件

値のカスケード・リストの作成

計算と検証の強化

名前付き問合せの作成

JavaServer FacesページでのBusiness Component機能の確認

 まとめ

スクリーンショットの表示

 このアイコンの上にカーソルを置くと、すべてのスクリーンショットがロードし、表示されます。 (警告:この操作によって、同時にすべてのスクリーンショットがロードされるため、ご使用のインターネット接続によってはレスポンス時間が遅くなる場合があります)。

注:各手順に関連したスクリーンショットのみを表示する場合は、それぞれの手順にあるアイコンの上にカーソルを置いてください。 スクリーンショットをクリックすると、非表示になります。

概要

Oracle ADF Business Componentの3つの新機能を確認するシナリオ一式は、以下のとおりです。

値のカスケード・リスト

最初のシナリオでは、Oracle JDeveloper 11gを使用して、以前より簡単に値のリスト(LOV)を設定する方法について説明します。 ほとんどのデータ集約型アプリケーションでは、ユーザーが選択リストから値を選択する必要があります。 多くの場合、あるフィールドの有効な選択肢のリストは、別のフィールドでユーザーが選択したものに応じて変わります。 たとえば、グローバル商取引アプリケーションで、ユーザーが最初に国を選択すると、アプリケーションにはその国で販売されている製品のリストが表示されます。

このようなシナリオをサポートする値のリスト作成の簡素化機能は、Oracle Application Development Framework(Oracle ADF)11gのもっとも一般的な拡張要求の1つでした。 Oracle ADF 11gでは、値のリストをビュー・オブジェクト属性の宣言的な機能として構成できます。 値のリストをユーザー・インタフェース(UI)内でなくモデル・レイヤーに定義することで、使用するOracle ADF対応のUIクライアント・テクノロジーに関係なく、正確で一貫性のある値のリストが表示されます。

計算と検証の強化

2番目のシナリオでは、Javaコードを記述せずに、計算属性の作成、外部キー値の検証、相互依存する属性値の制約、より複雑な検証ルールの定義を簡単におこなう方法について説明します。

Groovyは、Javaプラットフォームの標準ベースの動的言語で、Java Specification Request 241(JSR 241)として定義されています。 Groovyを使用すると、多くの一般的なプログラミング作業がJavaより簡単な構文でおこなうことができ、Javaクラスとシームレスに相互運用して、コンパイルと解析を同時に実施できます。 Oracle ADF 11gは、このGroovy言語を広範にサポートしています。最初の例で、Groovy式を使用して計算属性を定義する方法について説明します。

名前付き問合せの作成

名前付き問合せの定義では、ビュー・オブジェクト集合の行にフィルタ情報を指定できます。 名前付き問合せオブジェクトとは、1つまたは複数の名前付き問合せ行を示し、属性にはビュー・オブジェクトの属性が反映されます。 名前付き問合せの定義は、ターゲット・ビュー・オブジェクトのWHERE句を補強した問合せ条件から構成されています。 指定する問合せ条件は、ターゲット・ビュー・オブジェクトの各属性に適用されます。

トピック・リストに戻る

前提条件

 JDeveloper 11gの起動
 新規アプリケーションの作成

トピック・リストに戻る

JDeveloper 11gの起動

1.

Oracle JDeveloper 11g(製品リリース)にアクセスできるか、またはインストール済みである必要があります。 そのほかの要件については、インストール・ガイドを参照してください。

 

 

2.

JDeveloperを起動します。 デスクトップの「 スタート」メニューをクリックして、JDeveloperをインストールするためにインストーラを要求した場所へ移動します。

Select Roleダイアログがポップアップ表示されたら、デフォルトのロールを受け入れて「 OK」をクリックします。

Migrate User Settingsダイアログ・ボックスが開いたら、「 NO」をクリックします。

Tip of the Dayウィンドウを閉じます。

 

3.

JDeveloper IDEが表示されます。

 

トピックに戻る

トピック・リストに戻る

新規アプリケーションおよびプロジェクトの作成

1.

アプリケーション・ナビゲータで「 New Application」をクリックします(または、「 File」→「 New」を選択して新規ギャラリを開いてから、「 General」→「 Generic Application」を選択して新規アプリケーションを作成することもできます)。

 

2.

Create Fusion Web Application (ADF)ウィザードの Name your applicationページで、アプリケーション名を ADFBCに設定します。

Application Package Prefixプロパティは空白のままにします。

アプリケーション・テンプレートとして「 Fusion Web Application (ADF)」を選択します。

Next」をクリックします。

 

3.

Name your ADF Model projectページでプロジェクト名を Modelに設定し、Project Technologiesタブで ADF FacesをSelectedペインに移動します。 JSFおよびJSP and Servletsも含まれていることを確認します。

Finish」をクリックします。

 

4.

アプリケーション・ナビゲータは、次のように表示されます。

 

トピックに戻る

トピック・リストに戻る

値のカスケード・リストの作成

以下の各トピックでは、 2つの値のリスト(ManagerIdフィールドのリストとDepartmentIdフィールドのリスト)を作成します。 また、リストのデータの表示方法を指定します。

 モデルの設定
 値のリストの定義
 値のリストの構成
 値のリストのテスト

トピック・リストに戻る

モデルの設定

この項では、 DEPARTMENTS表とEMPLOYEES表に、デフォルトのエンティティ・オブジェクトとビュー・オブジェクトを作成します。 このエンティティ・オブジェクトとビュー・オブジェクトは、値のリストのベースとなります。

1.

エンティティ・オブジェクトとビュー・オブジェクトの両方をModelプロジェクトで作成します。 「 Model」プロジェクトを右クリックして、「 New」を選択します。

 

2.

New Galleryで「 Business Tier」カテゴリを開き、「 ADF Business Components」カテゴリを選択します。 次に、「 Business Components from Tables」項目を選択し、「 OK」をクリックします。

 

3.

Connectionフィールドの横の 追加ボタン「  」をクリックして、次の情報でHRスキーマへの新しい接続を作成します。

Connection Name

HR

Username/Password

hr /<your hr password>

Save Password & Deploy Password

両方のチェック・ボックスを選択

Driver Thin
Host Name スキーマがインストールされているマシン

SID

HRスキーマがインストールされているデータベース

接続をテストして使用可能であることを確認し、「 OK」をクリックします。

接続は、 Initialize Business Components Projectページに表示されます。

OK」をクリックして、ビジネス・コンポーネントの定義を続行します。

 

4.

JDeveloperがスキーマに接続し、必要なコンポーネントを定義できます。 DEPARTMENTS表とEMPLOYEES表から、エンティティ・オブジェクトを作成します。

ページの右側の「 Query」ボタンをクリックして、接続スキーマからすべての表を取得します。 「 DEPARTMENTS」表と「 EMPLOYEES」表の両方を選択して、 Selectedペインに移動します。

Selectedペインで、各表名を選択して、 Entity Namesを短縮した単数形に変更します。

DEPARTMENTS - Dept

EMPLOYEES - Emp

Next」をクリックして続行し、ビュー・オブジェクトを定義します。

 

5.

ウィザードの手順2で、 DeptEmpのエンティティ・オブジェクトをSelectedペインに移動します。 これにより、2つの更新可能なビュー・オブジェクトが作成されます。

Next」を2回クリックして、 Application Moduleページに進みます。

 

6.

ウィザードのApplication Module手順で、 Application Moduleチェック・ボックスが選択されていることを確認して、「 Finish」をクリックします。 これで、先ほど作成したビュー・オブジェクトを含むアプリケーション・モジュールが作成されます。

アプリケーション・ナビゲータは、次のように表示されます。

すべての作業を 保存します。

 

7.

AppModule」を右クリックして、「 Run」を選択します。 これでテスターが起動し、ビジネス・コンポーネントが正常に機能していることを検証できます。

Connect」ボタンをクリックして、デフォルトの接続を使用します。

テスターが表示された場合、「 EmpsView1」ノードをダブルクリックします。 デフォルトでは、すべての従業員レコードが表示され、MgrとDeptnoの項目には値のリストは表示されません。

テスターを終了します。

 

 

次の項では、値のリストを取り込んで、エンドユーザーが部門とマネージャーを簡単に選択できるようにします。

トピックに戻る

トピック・リストに戻る

値のリストの定義

基本となるモデル・レイヤー・オブジェクトが作成されたので、次の手順で値のリストを作成します。

まず、Mgr(マネージャー)属性により複雑な値のリストを作成します。 このリストは、現在の従業員のマネージャーを務めることのできる従業員のリストを問い合わせる新しいビュー・オブジェクトを参照します。 ここでは、特定の従業員に使用できるマネージャーのリストは、マネージャーのいない従業員(社長など)を含む同じ部門内のほかの従業員のリストとします。

1.

ビュー・オブジェクトを作成して、従業員を割り当てることのできるマネージャーを表示します。

アプリケーション・ナビゲータで「 Model」プロジェクトを右クリックし、「 New」を選択します。 「 ADF Business Components」カテゴリを選択し、「 View Object」コンポーネントをダブルクリックして、Create View Objectウィザードを起動します。

 

2.

Name page of the Create View Objectウィザードで、名前を ManagerListForDepartmentに変更して、「 Next」をクリックします。

 

3.

Entity Objectsページで、 Availableリストから「 Emp」エンティティ・オブジェクトを選択し、 追加ボタン「  」をクリックしてSelectedペインに移動します。次に、「 Next」をクリックします。

Attributesページで、 EmployeeIdおよび LastName属性を設定し、「 Next」を2回クリックして Queryページに移動します。

 

4.

Whereフィールドに、次のWHERE句を追加します。

(DEPARTMENT_ID = :CurrentDept OR MANAGER_ID IS NULL) AND EMPLOYEE_ID ! = :CurrentEmp

この句により、従業員のリストがフィルタされ、前述で定義したセットが作成されます。

Next」をクリックして、バインド変数を追加します。

 

5.

Bind Variablesページで、 CurrentDeptCurrentEmp(いずれもWHERE句で参照)と呼ばれる2つの新しい変数を作成し、両方の変数のタイプを Numberに設定します。

Finish」をクリックして、ビュー・オブジェクトを作成します。

トピックに戻る

トピック・リストに戻る

値のリストの構成

基本となるモデル・レイヤー・オブジェクトが作成されたので、次の手順で2つの値のリストを構成します。 Oracle ADF 11gでは、値のリストをビュー・オブジェクト属性の宣言的な機能として構成できます。 値のリストをUI内でなくモデル・レイヤーに定義することで、使用するOracle ADF対応のUIクライアント・テクノロジーに関係なく、正確で一貫性のある値のリストが表示されます。

1.

Employee Deptnoの値のリストを構成します。

まずアプリケーション・ナビゲータで、「 EmpView」をダブルクリックして、ビュー・オブジェクト・エディタを開きます。 Oracle JDeveloper 11gのビジネス・コンポーネント・エディタは、メイン・エディタ領域内のタブとして表示されます。

エディタ・ページの左端の「 Attributes」カテゴリを選択し、表の「 DepartmentId」属性をクリックします。

 

2.

以下の List of Values: DepartmentIdセクションで、緑色のプラス記号アイコン「  」をクリックして、DepartmentId属性に値のリストを作成します。

List of Valuesダイアログ・ボックスが表示されたら、 List Data Sourceフィールドの右側にある緑色のプラス記号アイコン「  」をクリックして、この属性の値として有効な選択肢のリストを提供するデータソースを追加します。

View Accessorsダイアログ・ボックスが表示されたら、左側のAvailable View Objectsリストから「 DeptView」ビュー・オブジェクトを選択し、 インスタンスの 追加ボタン「  」をクリックして、 DeptView1という名前の新しいビュー・アクセッサを追加します。 「 OK」をクリックします。

 

3.

新しく追加したビュー・アクセッサ・データソースの DeptView1がList Data Sourceフィールドに表示されます。

List Attributeフィールドの右側にある矢印をクリックして、使用できる属性のリストから「 DepartmentId」を選択します。 List Return Valuesセクションが更新され、ユーザーがリストから選択した際に、List Data Sourceの属性がベースのビュー・オブジェクトの属性にどのように割り当てられるかが表示されます。

この例では、補足的な値を追加する必要はありませんが、このリストに追加して、アプリケーションの戻り値の属性をマッピングできます。

 

4.

List of Valuesダイアログ・ボックスを閉じる前に、「 UI Hints」タブをクリックします。 この設定では、ユーザー・インタフェース内でのリストの表示方法を定義する情報が提供されます。 デフォルトのリスト・タイプは、Choice List表示スタイルを示しています。 この簡単な例ではデフォルトのリスト・タイプを使用しますが、このリストをクリックすると、アプリケーションで使用できる別のタイプのリスト・コントロールを確認できます。

Display Attributesセクションで、Availableリストから「 DepartmentName」属性を選択し、 追加ボタン(右矢印)「  」をクリックして、Selectedリストに追加します。 この選択は、値リストには部門番号ではなく部門名を表示することを示します。

OK」をクリックして、List of Valuesダイアログ・ボックスを閉じます。

 

5.

Employee Managerの値のリストを構成します。

前と同様に、 EmpViewオブジェクトのビュー・オブジェクト・エディタで、Attributesセクションの「 ManagerId」属性を選択します。 次に、ManagerIdセクション・ヘッダーのList of Valuesで、緑色のプラス記号アイコン「  」をクリックします。

 

6.

List of Valuesダイアログ・ボックスが表示されたら、 List Data Sourceセクションの緑色のプラス記号アイコン「  」をクリックして、この属性の値として有効な選択肢のリストを提供する新しいデータソースを追加します。

View Accessorsダイアログ・ボックスで、左側のAvailable View Objectsリストから「 ManagerListForDepartment」ビュー・オブジェクトを選択し、 インスタンスの追加ボタン「  」をクリックして、選択済みのビュー・オブジェクトに ManagerListForDepartment1という名前の新しいビュー・アクセッサを追加します。

このペインは閉じないでください。次の手順で、アクセッサのプロパティを変更します。

 

7.

このビュー・オブジェクトにはバインド変数があるため、バインド変数の値の取得方法を構成する必要があります。 そのためには、 ManagerListForDepartment1ビュー・アクセッサが選択されていることを確認して、「 Edit」ボタンをクリックします。

Edit View Accessorダイアログ・ボックスで、Bind Parameter Valuesセクションに CurrentDeptおよび CurrentEmpバインド変数が表示されていることを確認します(スクロールして、2つの変数を確認する必要があります)。

CurrentEmpバインド変数に現在の行でEmployeeId属性の値を割り当てる場合は、このセルに EmployeeId (大文字小文字を区別する)式を入力します。 同様に、 CurrentDeptバインド変数の値の列をダブルクリックし、 DepartmentId 式を入力して、現在の行でこのバインド変数の値にDeptno属性の値を割り当てます。

OK」をクリックしてEdit View Accessorウィンドウを閉じ、再度「 OK」をクリックしてView Accessorウィンドウを閉じます。

 

8.

List of Valuesダイアログ・ボックスで、List Attributeフィールドの矢印 をクリックして、リストから「 EmployeeId」属性を選択します。 「 UI Hints」タブをクリックします。

リストの表示属性として、 LastNameをSelectedペインに移動します。

OK」をクリックしてList UI Hintsダイアログ・ボックスを閉じ、再度「 OK」をクリックしてList of Valuesダイアログ・ボックスを閉じます。

すべての作業を 保存します。

トピックに戻る

トピック・リストに戻る

値のリストのテスト

強化されたOracle ADF 11g Oracle Business Component Browserを使用して、先ほど構成したLOVをすぐにテストできます。

1.

Oracle Business Component Browserのアプリケーション・モジュールを実行するには、アプリケーション・ナビゲータの「 AppModule」を右クリックして、「 Run」を選択します。

 

2.

表示されたダイアログ・ボックスの「 Connect」をクリックすると、Oracle Business Component Browserが表示されます。 「 EmpView1」ビュー・オブジェクト・インスタンスをダブルクリックして、データを表示します。

ManagerIdとDepartmentIdの両方が、リストとして表示されます。

 

3.

ManagerId」リストを選択すると、リストには現在の部門の従業員と、マネージャーのいないKINGなどの従業員が表示されます。

結果セットの別の行に移動すると、リストが自動的に変更されて、この従業員の現在の部門が反映されます。 リストから別の部門名を選択して従業員の部門を変更した場合、Mgrリストを選択すると、選択肢のセットが自動的に更新されて新しい部門が反映されます。

その後、「 File」→「 Exit」を選択して、Oracle Business Component Browserを終了します。 Oracle Business Component Browserは、Oracle ADF Swingを備えたOracle JDeveloper 11gのリリースに再実装されているため、この例は、Oracle ADF Swingアプリケーションがモデル定義のLOVを自動的に使用する方法の簡単な説明としても利用できます。

トピック・リストに戻る

計算と検証の強化

この項では、Javaコードを記述せずに、計算属性の作成、外部キー値の検証、相互依存する属性値の制約、より複雑な検証ルールの定義をJDeveloper 11gで簡単におこなう方法について説明します。 次に示す各トピックで、JDeveloper 11gのこれらの機能について説明します。

 計算属性の作成
 外部キーの検証
 依存値の制約
 Groovyでの検証ルールの作成

トピック・リストに戻る

計算属性の作成

使用するADFBCアプリケーションでは、Empエンティティ・オブジェクトにTotalCompという一時属性が必要です。 この属性の定義を作成および更新して、従業員の給与と歩合の合計になるようにします(Salary属性とCommissionPct属性での各定義に従います)。 この計算式では、CommissionPctとSalaryがNullである場合を考慮する必要があります。

1.

アプリケーション・ナビゲータで、「 Emp」エンティティをダブルクリックして、 Entity Object Editorを開きます。

 

2.

Attributes」タブをクリックしてAttributesページに進み、 追加ボタン「  」をクリックして TotalCompという名前の新しい一時属性を NumberというTypeで作成します。

Persistent」チェック・ボックスの選択を解除して、属性のUpdatableプロパティに「 Never」を選択します。

OK」をクリックします。 次に、 TotalComp属性をダブルクリックしてエディタを起動し、計算を指定します。

Attribute Editorダイアログ・ボックスの Value Typeラジオ・グループで、 Expressionラジオ・ボタンが選択されていることを確認します。 Valueフィールドに、次の計算式を入力します。

(Salary!=null?Salary:0)+(Salary*(CommissionPct!=null?CommissionPct:0))

この計算式は、Salaryの値がNullまたはゼロでない限り、その値を返すブール型の条件(Salary!=null)をテストする3項演算子を使用しています。 この計算式は、次にCommisionPctの値について同様の計算をおこない、Salaryで乗算して両方の計算の合計を返します。

エディタを終了しないでください。

 

3.

属性の定義を完了するには、Attribute Editorの Dependenciesページに進み、 Salaryおよび CommissionPct属性をSelectedペインに移動します。

OK」をクリックして変更を保存し、すべての作業を保存します。

 

4.

アプリケーション・ナビゲータで、「 EmpView」をダブルクリックします。 エディタで、「 Attributes」タブを選択して、「 Add from Entity...」ボタンをクリックします。

Availableペインの「 TotalComp」を選択して、Selectedペインに移動します。 「 OK」をクリックします。

 

5.

変更をテストするには、アプリケーション・ナビゲータの「 AppModule」アプリケーション・モジュールを右クリックして、表示されたメニューから「 Run」を選択します。

 

6.

Business Components Browser - Connectダイアログ・ボックスが表示されたら、「 Connect」をクリックします。 「 EmpView1」オブジェクト・インスタンスをダブルクリックして、Commission Percentageを含むレコードに進み、計算を表示します。 歩合割合(CommissionPct)を変更した場合は、レコードのほかの項目に移動すると、給与の総額(TotalComp)が変更されます。

Business Component Browserを閉じます。

トピックに戻る

トピック・リストに戻る

外部キーの検証

前の項では、ビュー・オブジェクト属性の宣言的な値のリストを定義して、既存の外部キーの参照値選択を支援する方法について説明しました。 こうしたLOVはエンドユーザーにとっては便利ですが、エンティティ・オブジェクト・レベルの外部キーの正確な検証の代替手段にはならないので注意してください。 たとえば、ポップアップLOVのあるテキスト・フィールドなどのUIコンポーネントでは、ユーザーが外部キーの値を直接入力できます。 さらに、サービスにはさまざまな方法でアクセスされる場合があり、従来のユーザー・インタフェースが無視されるものもあります。 新しいKey Exists検証ルールを使用すると、外部キー属性を簡単に検証でき、通常は面倒なプログラミングが必要な作業をすばやく実施できます。

1.

この例では、Key Exists検証ルールをModelプロジェクトのEmpエンティティに追加します。

アプリケーション・ナビゲータで、「 Emp」エンティティをダブルクリックして、エディタで開きます。 「 Validators」タブを選択し、「 Entity」ノードを選択します。ページの見出しのValidatorsの右側にある 追加ボタン「  」をクリックします。

 

2.

Add Validation Ruleダイアログ・ボックスで、Rule Typeリストから「 Key Exists」を選択します。 Rule DefinitionタブのAssociation Nameフィールドに EmpDeptFkAssocが選択されていることも確認します。 この選択は、検証する外部キー関係を表すDeptおよびEmpエンティティ・オブジェクト間の1対多の関連を示します。

 

3.

次に、「 Failure Handling」タブをクリックし、Message Textボックスに Department does not exist というエラー・メッセージを入力します。 「 OK」をクリックして、新しい検証ルールを定義します。

エディタに検証ルールが表示されます。

すべての変更を保存します。

 

4.

先ほど作成したEmpViewから、LOVを削除します。

エディタで EmpViewビュー・オブジェクトを起動し、 Attributesタブで「 DepartmentId」属性を選択します。 List of Values: DepartmentIdフィールドの左側にあるプラス記号をクリックして開きます。 「 LOV_DepartmentId」を選択し、赤色の「 X」をクリックしてLOVを削除します。

すべての変更を保存します。

 

5.

再度 AppModuleを実行し、既存の従業員のDepartmentIdの値を任意の2桁の無効な数値( 99など)に変更します。 コミットするか、別の行に移動すると、例外が発生してカスタム・エラー・メッセージが表示されます。

 

トピックに戻る

トピック・リストに戻る

依存値の制約

もう1つの一般的な検証は、同じ行の2つの属性を比較する方法です。 次の例では、従業員の歩合を50%未満とするルールを適用します。 このルールは、歩合と給与の両方がNullでない場合にだけ適用され、歩合または給与の値のいずれかが変更されると再評価されます。 Oracle JDeveloper 11gの強化された比較検証ルールにより、このチェックを簡単に実施できます。

1.

アプリケーション・ナビゲータで、「 Emp」エンティティをダブルクリックして、エディタで開きます。 「 Validators」タブをクリックし、「 Entity」ノードを選択します。ページの右側にある 追加ボタン「  」をクリックします。

Add Validation Ruleダイアログ・ボックスで、Rule Typeリストから「 Compare」を選択します。

 

2.

Rule Definitionタブで、Attributeリストから「 CommissionPct」、Operatorリストから「 LessThan」を選択します。 Compare Withリストから「 Literal Value」を選択し、下のLiteral Valueボックスに .5 を入力します。

 

3.

この手順では、検証ルールの基本的な比較を設定します。 次に、 Validation ExecutionタブのConditional Execution Expressionフィールドに、
Salary!=null && CommissionPct!=null

という計算式を入力します。 このフィールドでは、特定の条件に当てはまる場合にだけルールが適用されます。 式は大文字と小文字を区別するので、CommissionPctと入力し、commissionpctとは入力しないでください。
次に、 Triggering Attributesセクションに移動し、Available Attributesリストから「 Salary」を選択し、 追加ボタン「  」をクリックして SalaryCommissionPctをSelected Attributesリストに移動します。 実行時に、このリストの属性の値が変更されると、ルールは再評価されます。

 

4.

Failure Handlingタブに移動し、 Message Textボックスに次の検証エラー・メッセージを入力します。

The {attr1} of {val} must be less than 50%

2つのメッセージ式が中かっこ内にあることを確認します。

 

5.

以下のToken Message Expressions表の「 attr1」トークンの行をクリックし、その行の「 Expression」セルをダブルクリックします。 source.hints.CommissionPct.label という式を入力し、検証するソース・エンティティ・オブジェクトのCommissionPct属性の使いやすい表示ラベルの値を参照します。

同様に、 val トークンに CommissionPctという式を入力して、CommissionPct属性の値を参照します。

こうしたメッセージ式は、前述の例の計算属性と同様に、Groovy構文を使用します。 これは非常にシンプルな式ですが、開発者が必要な場合にGroovyを最大限に活用できるという点を理解するのに重要です。 「 OK」をクリックして、新しい検証ルールを定義します。

OK」をクリックして、検証ルールを保存します。 すべての作業を保存します。

 

6.

再度 AppModuleページを実行して、ルールをテストします。 既存の従業員の歩合に、 .7 という値を入力してみます。 コミットすると、 The CommissionPct of .7 must be less than 50%というパラメータ化されたエラー・メッセージが表示されます。

歩合のない従業員の給与の値を変更した場合は、CommissionPctの値がNullのため、例外が発生しないことが確認できます。 従業員の給与を既存の歩合未満の値に変更して、トリガー属性が正しく機能することを確認します。

 

トピックに戻る

トピック・リストに戻る

Groovyでの検証ルールの作成

この項では、Groovy言語を使用して、より複雑な検証ルールを作成します。 このルールでは、従業員がsで終わる名前の部門に属する場合、給与は5の倍数であると指定します。このルールは条件ロジックを必要とし、関連するDeptエンティティ・オブジェクトの属性にアクセスします。

1.

この項では、Deptエンティティ・オブジェクトから値を参照する検証ルールを作成します。 そのためには、EmpおよびDeptエンティティ・オブジェクト間の関連のアクセッサを使用する必要があります。 式を作成する前に、アクセッサ名を確認します。

アプリケーション・ナビゲータで、「 EmpDeptFkAssoc」をダブルクリックし、「 Relationship」タブを選択します。 Accessorsのプラス記号を開きます。 この例では、アクセッサ名をDept1とし、この名前はGroovy式で使用します。 使用する名前が異なっていても問題ありませんが、その場合は名前をメモしてコードを変更し、コード例の Dept1の代わりにそのコードを使用してください。

 

2.

クリックして Empエンティティ・オブジェクト・エディタに戻って、「 Validators」タブを選択します。次に、「 Entity」ノードを選択して、再度「 Create new validator」ボタンをクリックします。

Add Validation Ruleダイアログ・ボックスで、「 Rule Type」リストをクリックし、下方向にスクロールして「 Script Expression」を選択します。

 

3.

Rule Definitionタブで、次の式を入力します。

if (Dept1?.DepartmentName?.toUpperCase()?.endsWith("S")
&& Salary % 5 != 0) {
return false;
}
return true;

IF文のブール式は、検証する現在のEmpオブジェクトのDepartmentIdを参照して、関連するDeptエンティティ・オブジェクトにアクセスします(オブジェクトが存在する場合)。 この場合、従業員の部門関連のデフォルト名はDept1となります。 この名前は、Accessorセクションの EmpDeptFkAssocオブジェクトの定義で確認できます。 通常、ビジネスを表すにはすべての関連した名前を変更する必要があります(EmpWorkingInDeptなど)。 このOBEでは、すべてのオブジェクトのデフォルト名を使用します。

次に、Dept1関連の最後に表示されるDepartmentName属性を参照し、それを大文字に変換して大文字小文字を区別しない比較をおこないます。そして、StringクラスのendsWith()メソッドを使用してDepartmentNameがsで終わるかどうかをテストします。

手順1のアクセッサ名がDept1とは異なっている場合、Dept1があるコードの最初の行の名前と置き換えます。

Dept1.DepartmentName.toUpperCase().endsWith()と記述する代わりに、通常のドット演算子をGroovyの安全なナビゲーション演算子"?."に置き換えます。 この演算子は、ドット演算子と同様に機能して、オブジェクトからそのオブジェクトのプロパティにナビゲーションします。

ただし、左側の値がNullの場合、Groovy演算子はNullPointerExceptionをスローせず、結果はNullとなります。 NullがGroovyでブール値として発生した場合は、結果がfalseとなるため、?.演算子を使用して多数の式をよりコンパクトにできます。 この最初のチェック実行後、前述の式に整数モジュロ演算子(%)を使用して、給与が5の倍数であるかどうかをテストします。

部門名が's'で終わっているのに給与が5の倍数でない場合、falseが返されルールは失敗します。 そうでない場合はtrueが返されます。

 

4.

Failure Handling」タブをクリックします。

Groovy検証ルールは条件付きでさまざまな例外の1つを発生させることができるため、このタブに複数のエラー・メッセージを追加できます。 選択したメッセージは、検証ルールがfalseを返す場合に使用されます。

メッセージを追加するには、Existing Messageボタン(虫メガネ)をクリックします。

Select Text Resourceダイアログ・ボックスで、Keyフィールドに次の値を入力します。

IF_DEPARTMENT_NAME_ENDS_IN_S

次に、Valueフィールドに次のエラー・メッセージを入力します。

If department name ends in S the salary must be multiple of five.

Descriptionフィールドにもこのメッセージを入力します。

次に、「 Save and Select」をクリックし、「 OK」をクリックして、新しい検証ルールを定義します。

すべての変更を保存します。

 

5.

EmpViewに戻って、DepartmentIdのLOVを再設定します。

Attributes」フィンガーをクリックして、属性の詳細ページを表示します。 「 DepartmentId」属性を選択し、List of Values: DepartmentIdフィールドの緑色のプラス記号をクリックして値リストを追加します。

List of Valuesダイアログ・ボックスで、List Data Sourceフィールドの矢印をクリックして、リストから「 DeptView1」を選択します。 List Attributeフィールドの矢印をクリックして、「 DepartmentId」を選択します。 List Return Valuesセクションが更新され、ユーザーがリストから選択した際に、List Data Sourceの属性がベースのビュー・オブジェクトの属性にどのように割り当てられるかが表示されます。

List of Valuesダイアログ・ボックスを閉じる前に、「 UI Hints」タブをクリックして、UI Hintsダイアログ・ボックスを開きます。 この設定では、ユーザー・インタフェース内でのリストの表示方法を定義する情報が提供されます。 デフォルトのリスト・タイプは、Choice List表示スタイルを示しています。 この簡単な例ではデフォルトのリスト・タイプを使用しますが、このリストをクリックすると、アプリケーションで使用できる別のタイプのリスト・コントロールが表示されます。

前と同様に、Display Attributesセクションで、Availableリストから「 DepartmentName」属性を選択し、 追加ボタン「  」をクリックして、Selectedリストに追加します。 この選択は、リストには部門番号ではなく部門名を表示することを示します。 「 OK」をクリックしてUI Hintsダイアログ・ボックスを閉じ、再度「 OK」をクリックしてList of Valuesダイアログ・ボックスを閉じます。

 

6.

再度 AppModuleを実行し、部門 30(SALES)または 40(OPERATIONS)の従業員に、" 1"で終わる給与を入力します。 その変更をコミットします。 部門名がsで終わっているのに従業員の給与が5の倍数でないため、アプリケーションで検証エラーが発生します。

トピックに戻る

トピック・リストに戻る

名前付き問合せの作成

この項では、名前付き問合せを作成します。

名前付き問合せの定義では、ビュー・オブジェクト集合の行にフィルタ情報を指定できます。 名前付き問合せオブジェクトとは、1つまたは複数の名前付き問合せ行を示し、属性にはビュー・オブジェクトの属性が反映されます。 名前付き問合せの定義は、ターゲット・ビュー・オブジェクトのWHERE句を補強した問合せ条件から構成されています。 指定する問合せ条件は、ターゲット・ビュー・オブジェクトの各属性に適用されます。

問合せ結果のビュー・オブジェクト行と名前付き問合せ行の大きな違いは、ビュー基準行の各属性のデータ・タイプがStringであることです。 この違いは、Query-By-Example演算子をサポートするため、ユーザーは"OrderId > 304"などの条件を入力できます。

1.

EmpViewビューでは、特定の部門番号で従業員を検索できる名前付き問合せのフィルタ条件が必要です。

EmpView」ビュー・オブジェクトをダブルクリックして、「 Query」タブを選択します。 下方向にスクロールして、 View Criteriaセクションの緑色のプラス記号をクリックします。

 

2.

Create View Criteriaダイアログ・ボックスで、名前を EmployeesByDepartmentに変更して、「 Add Item」ボタンをクリックます。

Criteria Itemセクションで、Attributeを DepartmentId、OperatorをGreater than or equal to、OperandをBind Variableに設定します。 次に、Parameterフィールドの横の「 New」ボタンをクリックして、バインド変数を指定します。

 

3.

Bind Variableウィンドウで、名前を DepartmentNumberに変更し、Typeを Numberに設定します。 「 OK」をクリックして、バインド変数を作成します。

 

4.

Optionsセクションで、Usageを Requiredに設定します。

 

5.

バインド変数の定義が作成され、同じQueryタブに表示されていることを確認します。 サービスの作成プロセスの実行中に名前付き問合せが使用されます。 実行された名前付き問合せは次のようになります。

OK」をクリックて、すべての作業を保存します。

 

6.

名前付き問合せをテストします。 テスターのアプリケーション・モジュールを実行します。

テスターが起動されたら、「 EmpsView1」ノードをダブルクリックします。 データ・ペインで、「 Specify View Critera」ボタン(右から2番目のボタン)をクリックします。

名前付きの基準( EmpViewCriteria)をSelected側に移動して、「 Find」ボタンをクリックします。

Bind Variablesダイアログで、Valueフィールドに 70などの数値を入力して、「 OK」をクリックします。 テスターに返される結果レコードには、バインド変数プロパティに入力された値またはそれよりも大きい値のみ反映されます。

 

トピックに戻る

トピック・リストに戻る

JavaServer FacesページでのBusiness Component機能の確認

EmpViewビュー・オブジェクトのBusiness Component機能の構成とテストが完了したので、次にJavaServer Faces(JSF)を使用して、Ajax対応Webページでこれらを簡単に使用する方法について確認できます。

1.

アプリケーション・ナビゲータで、「 ViewController」プロジェクト→「 Web Content」フォルダを開き、Page Flowsフォルダを表示します。 WEB-INFフォルダ内の「 adfc-config」をダブルクリックして、ページ・フロー・ダイアグラムを開きます。

 

2.

次に、 コンポーネントパレットに移動し、 Activitiesセクションを確認します。 このセクションで、「 View」コンポーネントをドラッグして、ページ・フロー・ダイアグラムにドロップします。 ダイアグラムに新しいビューが表示されたら、コンポーネントの名前を Employeesに変更し、「 Enter」をクリックします。

このビューにJSFページを作成するには、新しいビューを示すアイコンをダブルクリックします。 Create JSF JSPダイアログ・ボックスが表示されたら、「 OK」をクリックし、デフォルト設定を使用して Employees.jspx ページを作成します。

新しいWebページがビジュアル・ページ・デザイナに表示されます。

 

3.

次に、データ集合をページにドロップします。 まずアプリケーション・ナビゲータを確認し、フレームがいくつかのセクションにグループ化されていることを確認します。続いて、各セクションにタイトル付きの見出しバーと矢印があり、これらを使用してセクションのコンテンツを開いたり閉じたりできることを確認します。

アプリケーション・ナビゲータのProjectsセクションの下に、 Data Controlsセクションがあります。 このセクションを開き、「 AppModuleDataControl」を開いて、そこに含まれるEmpView1およびDeptView1データ集合を表示します。

EmpView1」データ集合をドラッグし、ビジュアルJSFページ・エディタの中央にドロップします。

 

4.

Createメニューから「 Forms」→「 ADF Form」を選択し、EmpView1データを表示する編集可能フォームを作成します。

Edit Form Fieldsダイアログ・ボックスが表示されたら、MgrおよびDeptno属性のComponent To Useの値が両方ともADF Select One Choiceに設定されていることを確認します。 Oracle JDeveloperは、デフォルトでは先ほどこれらの2つの属性に値のリストを定義する際に構成したList TypeのUIヒントの結果に基づいて、これらのUIコンポーネントの値を選択します。

Include Navigation Controls」チェック・ボックスを選択し、「 OK」をクリックしてフォームを作成します。

すべての変更を保存します。

 

5.

ページは、エディタでは次のようになります。 MgrフィールドとDepartmentIdフィールドの両方がリストとして表示されていることを確認します。

次に、ページを実行します。 アプリケーション・ナビゲータの「 Employees.jspx」ページを右クリックし、「 Run」を選択します。

 

6.

Oracle JDeveloperは、統合WebLogicアプリケーション・サーバーを起動し、デフォルトのブラウザでページを開きます。 Internet Explorer 7.0またはMozilla Firefox 2.0.0.3以降を使用している場合、ページは次のように表示されます。

レコード間を移動して、ManagerIdの値のリストを試します。

"S"で終わる部門に所属している従業員を検索します(Salesの30またはOperationsの40)。 Salaryに1で終わる値を入力してレコードをコミットすると、エラーが表示されます。

トピックに戻る

トピック・リストに戻る

まとめ

このチュートリアルでは、JDeveloper 11gのいくつかの機能について学習しました。

このチュートリアルで学習した内容は、以下のとおりです。

値のカスケード・リストの作成

計算属性の定義および検証ルールの指定

名前付き問合せの作成

   

 

 このアイコンの上にカーソルを置くと、すべてのスクリーンショットが非表示になります。