ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Application Development Framework Java EE開発者ガイド
11g リリース2(11.1.2.4.0)
B66160-04
  目次へ移動
目次

前
 
次
 

3 データ・コントロールへのビジネス・ロジックの追加

この章では、検証ルール、UIコントロール・ヒント、および属性のデフォルト値などのカスタム・ビジネス・ロジックによりデータ・コントロールを構成する方法を説明します。データ・コントロールを構成することにより、それらのデータ・コントロールからUIコンポーネントを作成する際に使用されるビジネス・ロジックを定義できます。

この章には、次の項が含まれます:

3.1 データ・コントロールへのビジネス・ロジックの追加の概要

データ・コントロールを生成すると、それ以上変更を加えずに、データ・モデルとアプリケーション内のUIコンポーネントとの間のバインディングを作成するためにそれらを使用できます。さらに、データ・コントロールを構成して、データ・モデルにビジネス・ロジックやその他の機能を追加し、UIコンポーネントの作成に「データ・コントロール」パネルを使用する際にそれらの機能を適用できます。たとえば、データ・コントロールを構成して次のことができます。

3.2 データ・コントロールの構成

EJBセッションBeanのデータ・コントロールを作成すると、データ・コントロールについて、値と動作の標準的なセットが設定されます。たとえば、属性のラベルのクライアントでの表示方法がデータ・コントロールによって決定されます。エンティティBeanに対応するデータ・コントロール構造ファイルを作成および変更することにより、これらの値および動作を構成できます。まず、.dcxファイルの概要エディタを使用して、データ・コントロール構造ファイルを生成します。

3.2.1 データ・コントロールの編集方法

データ・コントロールを構成可能にするには、DataControls.dcxファイルの概要エディタを使用し、エンティティBeanに対応するデータ・コントロール構造ファイルを作成します。個別のデータ・コントロール構造ファイルを編集できるようになります。

始める前に:

データ・コントロール構成の一般的な知識があると役立ちます。詳細は、3.2項「データ・コントロールの構成」を参照してください。

次のタスクを完了する必要があります。

2.2.1項「ADFデータ・コントロールの作成方法」の説明に従って、セッションBeanのデータ・コントロールを作成します。

データ・コントロールを編集する手順:

  1. 「アプリケーション・ナビゲータ」で、「DataControls.dcx」をダブルクリックします。

  2. 概要エディタの「データ・コントロール」ツリーで、構成するBeanのアクセッサ戻りコレクションを選択し、「編集」アイコンをクリックしてデータ・コントロール構造ファイルを生成します。

  3. データ・コントロール構造ファイルの概要エディタで、必要な変更を加えます。

3.2.2 データ・コントロール編集時の処理

EJBセッションBeanに基づいてデータ・コントロールを編集すると、JDeveloperにより、影響を受けたBeanのメタデータが含まれているデータ・コントロール構造ファイルが作成され、そのファイルが概要エディタで開かれます。このファイルには、そのBean固有のデータ・コントロールの構成データ(Beanに対して指定したUIヒントまたはバリデータなど)が保存されています。

データ・コントロール構成ファイルのベース名は、対応するエンティティBeanのものと同じです。たとえば、Customer.javaエンティティBeanに対応するアクセッサ戻りコレクションが選択されている状態で「編集」アイコンをクリックすると、データ・コントロール構成ファイルの名前はCustomer.xmlとなります。データ・コントロール構成ファイルはBeanクラスのパッケージに対応するパッケージに生成され、パッケージ名にpersdefが付加されます。たとえば、Summitアプリケーションでは、Customer.java Beanはmodelパッケージ内にあり、Customer.xmlデータ・コントロール構成ファイルはpersdef.modelパッケージ内にあります。データ・コントロール構成ファイルが生成された後、概要エディタを使用してそのファイルをさらに構成できます。

データ・コントロール構造ファイルには、次の情報が含まれます。

  • 属性: サービスのすべての属性を表します。デフォルトでは、データベース列にマッピングされている各Beanプロパティについて属性が存在します。また、一時属性も追加できます。これらの属性のUIでの表示方法を定義するUIヒントを設定できます。属性値が必須か、一意である必要があるか、表示可能かどうかなどの他のプロパティを設定することもできます。UIヒントの設定の詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』のビュー・オブジェクトの属性UIヒントの定義に関する項を参照してください。


    注意:

    ビュー・オブジェクトは、SQL問合せのカプセル化と結果の操作の単純化に使用されるADF Business Componentsです。この項を読む際、ビュー・オブジェクトをBeanと読み替えてください。


    属性の検証を設定したり、カスタム・プロパティを作成することもできます。検証の詳細は、第3.5項「属性への検証ルールの宣言的な定義」を参照してください。カスタム・プロパティの詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』のカスタム・プロパティにより促進される一般的機能性の実装方法に関する項を参照してください。

  • アクセッサ: Beanの結果セットを返すデータ・コントロール要素を表します。「ベース・アクセッサ」セクションには、Beanプロパティに基づくアクセッサがリスト表示され、他のエンティティ・クラスへの関連付けはプロパティのフィールドで定義されます。

  • 名前付き基準: 表示された行をフィルタリングするためのルールを作成できます。

    詳細は、3.6項「名前付き基準を使用した結果セットのフィルタリング」を参照してください。

  • 操作: データ・コントロールの組込み操作で使用されるメソッドを表します。たとえば、それぞれ「作成」および「削除」組込み操作で使用されるaddおよびremoveメソッドなどです。

図3-1に、Summitデモ・アプリケーションのItem Beanのデータ・コントロール構造ファイルを示します。

図3-1 概要エディタでのデータ・コントロール構造ファイル

item.xmlデータ・コントロール構造ファイル

注意:

データ・コントロール構造ファイルの概要エディタでは、Beanに関連付けられているすべての属性、アクセッサおよび操作が表示されます。ただし、データ・コントロール構造ファイルのXMLソースには、編集した要素の定義のみが含まれます。ベース要素はBeanからイントロスペクションによって取得されます。また、基礎となるBeanに変更を加えると、データ・コントロールはそれらの変更を継承します。


3.3 属性の使用

EJBのデータ・コントロールを作成する際、Beanについて作成するデータ・コントロール構造ファイルで宣言的にBeanの永続属性の機能を拡張できます。たとえば、UIコンポーネントの属性のデフォルト表示を制御する検証ルールを作成し、UIヒントを設定できます。さらに、一時属性を作成できます。

いずれの場合も、これらのプロパティはデータ・コントロール構造ファイルの概要エディタの「属性」ページで設定します。データ・コントロール構造ファイルの作成の詳細は、3.2.1項「データ・コントロールの編集方法」を参照してください。

3.3.1 属性の更新可能性の制御方法

「更新可能」プロパティにより、特定の属性が更新可能かどうかを制御します。「更新可能」プロパティでは次の値を選択できます。

  • 常に: 属性は常に更新可能です。

  • なし: 属性は読取り専用です。

始める前に:

属性プロパティの設定方法の知識があると役立ちます。詳細は、3.3項「属性の使用」を参照してください。

次のタスクを完了する必要があります。

3.2.1項「データ・コントロールの編集方法」の説明に従って、必要なデータ・コントロール構造ファイルを作成します。

属性の更新可能性を設定する手順:

  1. 「アプリケーション・ナビゲータ」で、使用するデータ・コントロール構造ファイルをダブルクリックします。

  2. 概要エディタで、「属性」ナビゲーション・タブをクリックします。

  3. 「属性」ページで編集する属性を選択し、「詳細」タブをクリックします。

  4. 「詳細」ページで「更新可能」属性を設定します。

3.3.2 属性の静的なデフォルト値を定義する方法

値のタイプが「リテラル」に設定されている場合、「詳細」セクションの「値」フィールドには、属性のデフォルト値を静的に指定できます。たとえば、ServiceRequestエンティティBeanのStatus属性のデフォルト値をOpenに設定したり、User BeanのUserRole属性のデフォルト値をuserに設定できます。

始める前に:

属性プロパティの設定方法の知識があると役立ちます。詳細は、3.3項「属性の使用」を参照してください。

属性の静的なデフォルト値を定義する手順:

  1. 「アプリケーション・ナビゲータ」で、使用するデータ・コントロール構造ファイルをダブルクリックします。

  2. 概要エディタで、「属性」ナビゲーション・タブをクリックします。

  3. 「属性」ページで編集する属性を選択し、「詳細」タブをクリックします。

  4. 「詳細」ページで、「リテラル」オプションを選択します。

  5. 「リテラル」オプションの下のテキスト・フィールドに、属性のデフォルト値を入力します。

3.3.3 Groovy式を使用してデフォルト値を定義する方法

属性のデフォルト値は、Groovy式を使用して定義できます。デフォルト値を実行時に変更する場合、この方法が便利です。ただし、デフォルト値が常に同じである場合は、「リテラル」タイプ(「詳細」タブ)で値のフィールドを使用する方が値の表示および管理が容易です。Groovyの使用の詳細は、3.8項「Groovy言語サポート」を参照してください。

始める前に:

属性プロパティの設定方法の知識があると役立ちます。詳細は、3.3項「属性の使用」を参照してください。

次のタスクを完了する必要があります。

3.2.1項「データ・コントロールの編集方法」の説明に従って、必要なデータ・コントロール構造ファイルを作成します。

Groovy式を使用してデフォルト値を定義する手順:

  1. 「アプリケーション・ナビゲータ」で、使用するデータ・コントロール構造ファイルをダブルクリックします。

  2. 概要エディタで、「属性」ナビゲーション・タブをクリックします。

  3. 「属性」ページで編集する属性を選択し、「詳細」タブをクリックします。

  4. 「詳細」ページで、デフォルト値タイプに「式」を選択し、隣接したテキスト・フィールドの横の「編集」ボタンをクリックします。

  5. 図3-2に示すように、「式の編集」ダイアログで、表示されているフィールドに式を入力します。

    参照する属性には、Beanに定義されている任意の属性を使用できます。

    図3-2 式エディタの編集

    価格掛ける数量の式
  6. 同じダイアログで、適切な再計算設定を選択します。

    「常に」(デフォルト)を選択すると、行のいずれかの属性が変更されるたびに式の評価が行われます。「なし」を選択すると、行が作成された場合にのみ式の評価が行われます。

  7. オプションで、式の再計算を実行するタイミングの条件を指定します。

    たとえば、「次の式に基づく」フィールドに次のような式を入力すると、Quantity属性またはUnitPrice属性が変更された場合に属性が再計算されます。

    return (adf.object.dataProvider.isAttributeChanged("Quantity") || adf.object.dataProvider.isAttributeChanged("UnitPrice"));
    
  8. ダイアログの下の「選択可能」リストで、値の式またはオプションの再計算式の基礎となる属性を選択し、それぞれ「選択済」リストに移動します。

  9. 「OK」をクリックして、式を保存します。

3.3.4 Groovy式を使用したデフォルト値の作成時の処理

Groovy式を使用してデフォルト値を定義すると、データ・コントロール構造ファイルの対応する属性におけるタグ内に<TransientExpression>タグが追加されます。例3-1に、デフォルト値に現在の日付を返すGroovy式のサンプルXMLコードを示します。

例3-1 デフォルトの日付値

<TransientExpression>
    <![CDATA[
        adf.currentDate
    ]]>
</TransientExpression> 

3.3.5 属性へのUIヒントの設定方法

属性のUIヒントを設定し、それらの属性を使用するすべてのUIコンポーネントでそれらの属性が一貫したローカライズ可能な方法で表示およびラベル付けされるように設定できます。属性に対してUIヒントを作成するには、アプリケーション・ナビゲータからアクセス可能な、Beanのデータ・コントロール構造ファイルの概要エディタを使用します。

始める前に:

属性プロパティの設定方法の知識があると役立ちます。詳細は、3.3項「属性の使用」を参照してください。

次のタスクを完了する必要があります。

3.2.1項「データ・コントロールの編集方法」の説明に従って、必要なデータ・コントロール構造ファイルを作成します。

UIヒントを設定する手順:

  1. 「アプリケーション・ナビゲータ」で、使用するデータ・コントロール構造ファイルをダブルクリックします。

  2. 概要エディタで、「属性」ナビゲーション・タブをクリックします。

  3. 「属性」ページで編集する属性を選択し、「UIヒント」タブをクリックします。

  4. 「UIヒント」ページで、必要なUIヒントを設定します。

様々なUIヒントの詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』のビュー・オブジェクトの属性UIヒントの定義に関する項を参照してください。


注意:

ビュー・オブジェクトは、SQL問合せのカプセル化と結果の操作の単純化に使用されるADF Business Componentsです。この項を読む際、ビュー・オブジェクトをBeanと読み替えてください。


3.3.6 属性へのUIヒントの設定時の処理

属性に対してUIヒントを設定すると、それらのヒントはJDeveloperによってプロパティとして扱われます。プロパティのタグがBeanのデータ・コントロール構造ファイルに追加され、プロパティの値はリソース・バンドル・ファイルに保存されます。リソース・バンドル・ファイルが存在しない場合は、データ・コントロールのパッケージに生成され、初めてUIヒントを設定した際にプロジェクト名に従って名前が設定されます。たとえば、Summitデモ・アプリケーションでは、リソース・バンドルはModelBundle.propertiesと呼ばれます。

例3-2に、Summitデモ・アプリケーションのItem.xmlデータ・コントロール構造ファイルにおけるprice属性のコードを示します。属性に対して設定されているラベルおよびフォーマット・タイプ・ヒントのタグも含まれます。

例3-2 UIヒントのXMLコード

<PDefAttribute
  Name="price">
  <Properties>
    <SchemaBasedProperties>
      <LABEL
        ResId="${adfBundle['model.ModelBundle']['model.Item.price_LABEL']}"/>
      <FMT_FORMATTER
        ResId="${adfBundle['model.ModelBundle']['model.Item.price_FMT_
                                                       FORMATTER']}"/>
    </SchemaBasedProperties>
  </Properties>
</PDefAttribute>

例3-3に、ModelBundle.propertiesリソース・バンドル・ファイルにおけるラベルおよびフォーマット・タイプ・ヒントの対応するエントリを示します。これらにはプロジェクトのすべてのローカライズ可能なプロパティの値も含まれています。

例3-3 UIヒントのリソース・バンドル・コード

model.Item.price_LABEL=Price
. . .
model.Item.price_FMT_FORMATTER=oracle.jbo.format.DefaultCurrencyFormatter

3.4 Beanへの一時属性の追加

Beanのデータ・コントロール構造ファイルには、基礎となる表内の列にマップされる属性のみでなく、計算された値を表示する一時属性を組み込むことができます。

たとえば、FullNameなどの作成した一時属性は、FirstName属性の値とLastName属性の値を連結した値に基づいて計算できます。

一時属性を作成すると、属性定義でGroovy式を使用してデフォルト値を指定できます。

3.4.1 一時属性の追加方法

一時属性を作成するには、概要エディタの「属性」ページを使用します。

始める前に:

一時属性および計算属性の知識があると役立ちます。詳細は、3.4項「Beanへの一時属性の追加」を参照してください。

次のタスクを完了する必要があります。

3.2.1項「データ・コントロールの編集方法」の説明に従って、必要なデータ・コントロール構造ファイルを作成します。

Beanのデータ・コントロール構造ファイルに一時属性を追加する手順:

  1. 「アプリケーション・ナビゲータ」で、Beanのデータ・コントロール構造ファイルをダブルクリックします。

  2. 概要エディタで、「属性」ナビゲーション・タブをクリックし、「新規」アイコンをクリックします。

  3. 「新規ビュー属性」ダイアログで、属性の名前を入力し、「OK」をクリックします。

  4. 概要エディタで、「詳細」タブをクリックし、「タイプ」ドロップダウン・リストからオブジェクト・タイプを選択します。

  5. オプションで、「デフォルト値」セクションでデフォルト値を設定するか、デフォルト値を計算する式を入力します。

    デフォルト値を計算する式の設定方法は、3.3.3項「Groovy式を使用したデフォルト値の定義方法」を参照してください。

  6. 値を式によって計算する場合、「更新可能」「なし」に設定します。

3.4.2 一時属性の追加時の処理

一時属性を追加すると、JDeveloperによって<ViewAttribute>タグがBeanのデータ・コントロール構造ファイルに追加され、新しい属性が反映されます。例3-4に、LineItemTotalという一時属性のXMLコードを示します。これはpriceおよびquantity属性の値を乗算する式を基礎としています。

例3-4 一時属性のXMLコード

<ViewAttribute
  Name="LineItemTotal"
  IsUpdateable="false"
  IsSelected="false"
  IsPersistent="false"
  PrecisionRule="true"
  Type="java.lang.String"
  ColumnType="$none$">
  SQLType="VARCHAR">
  <RecalcCondition><![CDATA[true]]></RecalcCondition>
  <TransientExpression><![CDATA[price * quantity]]></TransientExpression>
  <Dependencies>
    <Item
      Value="price"/>
    <Item
      Value="quantity"/>
  </Dependencies>
 </ViewAttribute>

3.5 属性への検証ルールの宣言的な定義

検証ルールを作成および管理する最も容易な方法は、宣言的検証ルールを使用することです。宣言的検証ルールは概要エディタを使用して定義され、いったん作成されると、Beanのデータ・コントロール構造ファイルに保存されます。ビジネス・ロジックをこのようにカプセル化することにより、ビジネス情報にアクセスするすべてのクライアントで情報が一貫して検証され、検証の保管先を集中化することによって管理が容易になります。

Oracle ADFでは、大部分のビジネス上のニーズを満たすことができる組込みの宣言的な検証ルールが用意されています。3.5.4項「検証とビジネス・ルールでのGroovy式の使用方法」で説明されているように、Groovy式を検証の基礎にすることもできます。

検証ルールを追加する際、適切なエラー・メッセージを提供し、後に必要に応じて容易に他の言語に翻訳できます。また、重大度レベルも設定できます。

アプリケーションがビジネス・レイヤー検証に加えてページ・レベルでの検証の使用も保証する必要がある場合は、Beanで利用できる宣言的検証機能の多くをページ・レベルでも利用できます。詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』の「ADFモデル・レイヤーでの検証の使用」の章を参照してください。


注意:

カスタム検証クラスを実装することによって検証ルールを追加することもできます。アプリケーションで複数回使用する必要のある複雑なパラメータ化された検証ルール(クレジット・カードの番号のチェックなど)を定義する必要がある場合、この方法が特に便利です。詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』のカスタム検証ルールの実装に関する項を参照してください。


3.5.1 属性への検証ルールの追加方法

Beanに検証ルールを追加する手順は、ほとんどの検証ルールと同じで、「検証ルールの追加」ダイアログを使用します。このダイアログを開くには、Beanのデータ・コントロール構造ファイルを開き、「属性」ページで属性を選択し、「検証ルール」タブをクリックして「追加」アイコンをクリックします。

「検証ルールの追加」ダイアログを使用してルールを宣言的に定義すると、そのルール定義が属性の有効な条件を指定することに注意する必要があります。実行時に、ユーザーが入力したエントリがルール定義に対して評価され、エントリが指定された基準を満たさない場合、エラーまたは警告が発せられます。たとえば、12より小さいか等しい必要のある属性に対して長さのバリデータを指定した場合、エントリが12文字よりも長いと検証が失敗し、エラーまたは警告が発行されます。

データ・コントロール構造ファイルに宣言的検証ルールを追加するには、Beanの概要エディタの「属性」ページを使用します。

始める前に:

データ・コントロール構造ファイルにおける検証ルールの使用に関する知識があると役立ちます。詳細は、3.5項「属性への検証ルールの宣言的な定義」を参照してください。

次のタスクを完了する必要があります。

3.2.1項「データ・コントロールの編集方法」の説明に従って、必要なデータ・コントロール構造ファイルを作成します。

検証規則を追加する手順:

  1. 「アプリケーション・ナビゲータ」で、使用するデータ・コントロール構造ファイルをダブルクリックします。

  2. 概要エディタで、「属性」ナビゲーション・タブをクリックします。

  3. 「属性」ページで検証ルールを追加する属性を選択し、「検証ルール」タブをクリックします。

  4. ページの「検証ルール」セクションで、「検証ルールの追加」アイコンをクリックします。

  5. 「検証ルールの追加」ダイアログで、「ルール・タイプ」ドロップダウン・リストから、目的の検証ルールのタイプを選択します。

  6. ダイアログの設定を使用して新しい規則を構成します。

    このコントロールの内容は、選択する検証規則の種類によって異なります。様々な検証ルールの詳細は、3.5.3項「組込みの宣言的検証ルールの使用方法」を参照してください。

  7. 「失敗処理」タブをクリックして、検証規則が失敗した場合にユーザーに対して表示されるエラー・メッセージを入力または選択します。詳細は、3.5.6項「検証例外の重大度レベルの設定方法」を参照してください。

  8. 「OK」をクリックします。

3.5.2 検証規則の追加時の処理

Beanに検証ルールを追加すると、Beanのデータ・コントロール構造ファイルが更新され、使用したルールと入力したルールのプロパティを示すエントリが含まれます。

たとえば、dateShipped属性に、出荷日がdateOrdered属性よりも前ではないことを確認する比較検証ルールを追加すると、XMLファイルに<validation:CompareValidationBean>エントリが作成されます(例3-5を参照)。

例3-5 Compare Validator

<validation:CompareValidationBean
  Name="dateShipped_Rule_0"
  ResId="${adfBundle['model.ModelBundle']['model.Ord.dateShipped_Rule_0']}"
  OnAttribute="dateShipped"
  OperandType="EXPR"
  Inverse="false"
  CompareType="GREATERTHANEQUALTO">
  <validation:TransientExpression><![CDATA[dateOrdered]]>
  </validation:TransientExpression>
</validation:CompareValidationBean>

3.5.3 組込みの宣言的な検証ルールの使用方法

組込みの宣言的な検証規則は、大部分のビジネス上のニーズを満たすことができます。このような規則は、コードの記述がないため実装が簡単です。検証のタイプとその使用方法を選択するには、ユーザー・インタフェース・ツールを使用します。

組込みの宣言的な検証規則を使用すると、次のことが可能です。

  • 属性とリテラル値または式の比較

  • 値が一定の範囲内にあるか、または特定のバイト数または文字数に制限されるかの確認

  • 正規表現による検証またはGroovy式の評価

3.5.3.1 比較に基づいた検証

Compare Validatorは、エンティティ属性と値の論理比較を実行します。Compare Validatorの追加時に、演算子および比較対象を指定します。次のものを比較できます。

  • リテラル値

    Compare Validatorでリテラル値を使用すると、属性の値は指定したリテラル値と比較されます。この種類の比較を使用する場合は、データの型と書式を考慮することが重要です。リテラル値は、規則を適用するエンティティ属性のデータ型で指定した書式に準拠する必要があります。すべての場合において、型はエンティティ属性のタイプ・マッピングに対応します。

    たとえば、列タイプDATEの属性はoracle.jbo.domain.Dateクラスにマッピングされますが、これはjava.sql.TimeStampおよびjava.sql.Dateによって受け入れられるのと同じ書式で日付と時間を受け入れます。書式マスクを使用することにより、属性の値の書式が指定されたリテラルに一致するよう指定できます。

  • 式のオプションについては、3.5.4項「検証とビジネス・ルールでのGroovy式の使用方法」を参照してください。

始める前に:

データ・コントロール構造ファイルにおける検証ルールの使用に関する知識があると役立ちます。詳細は、3.5項「属性への検証ルールの宣言的な定義」を参照してください。

次のタスクを完了する必要があります。

3.2.1項「データ・コントロールの編集方法」の説明に従って、必要なデータ・コントロール構造ファイルを作成します。

比較に基づいて検証する手順:

  1. 「アプリケーション・ナビゲータ」で、使用するデータ・コントロール構造ファイルをダブルクリックします。

  2. 概要エディタで、「属性」ナビゲーション・タブをクリックします。

  3. 「属性」ページで検証ルールを追加する属性を選択し、「検証ルール」タブをクリックします。

  4. ページの「検証ルール」セクションで、「検証ルールの追加」アイコンをクリックします。

  5. 「検証ルールの追加」ダイアログの「ルール・タイプ」ドロップダウン・リストで「比較」を選択します。選択に応じて下位のフィールドは変わります。

  6. 適切な演算子を選択します。

  7. 「比較」リストで項目を選択し、選択項目に基づいて適切な比較値を指定します。

  8. 「失敗処理」タブをクリックして、検証規則が失敗した場合にユーザーに対して表示されるエラー・メッセージを入力または選択します。詳細は、3.5.5項「検証エラー・メッセージの作成方法」を参照してください。

  9. 「OK」をクリックします。

3.5.3.2 比較に基づく検証時の処理

Compare Validatorを作成すると、<validation:CompareValidationBean>タグがBeanのデータ・コントロール構造ファイルに追加されます。

例3-5は、Ordデータ・コントロール構造ファイルのdateShipped属性に対するバリデータのXMLコードを示しています。

3.5.3.3 値リストを使用した検証

List Validatorは、属性値を値リストと比較します。バリデータは、Bean属性の値が値リスト内(指定された場合はリスト外)にあることを確認します。

始める前に:

データ・コントロール構造ファイルにおける検証ルールの使用に関する知識があると役立ちます。詳細は、3.5項「属性への検証ルールの宣言的な定義」を参照してください。

次のタスクを完了する必要があります。

3.2.1項「データ・コントロールの編集方法」の説明に従って、必要なデータ・コントロール構造ファイルを作成します。

値リストを使用して検証する手順:

  1. 「アプリケーション・ナビゲータ」で、使用するデータ・コントロール構造ファイルをダブルクリックします。

  2. 概要エディタで、「属性」ナビゲーション・タブをクリックします。

  3. 「属性」ページで検証ルールを追加する属性を選択し、「検証ルール」タブをクリックします。

  4. ページの「検証ルール」セクションで、「検証ルールの追加」アイコンをクリックします。

  5. 「検証ルールの追加」ダイアログの「ルール・タイプ」ドロップダウン・リストで「リスト」を選択します。

  6. 「演算子」フィールドで、包含的リストか排他的リストかに応じて「In」または「NotIn」を選択します。

  7. 「値リストの入力」セクションで、値を1行に1つずつ入力します。

  8. 「失敗処理」タブをクリックして、検証規則が失敗した場合にユーザーに対して表示されるエラー・メッセージを入力または選択します。詳細は、3.5.5項「検証エラー・メッセージの作成方法」を参照してください。

  9. 「OK」をクリックします。

3.5.3.4 リスト値を使用した検証時の処理

値リストを使用して検証すると、<validation:ListValidationBean>タグがBeanのデータ・コントロール構造ファイルに追加されます。

3.5.3.5 値が特定の範囲内にあることの確認

Range Validatorは、エンティティ属性と値の範囲の論理比較を実行します。Range Validatorの追加時に、最小および最大のリテラル値を指定します。Range Validatorは、エンティティ属性の値が範囲内(指定された場合は、範囲外)にあることを検証します。

最小および最大値を動的に算出する必要がある場合や、エンティティの他の属性を参照する必要がある場合は、Script Expression Validatorを使用し、Groovy式を指定します。詳細は、3.8.1項「Groovy式でのADFオブジェクトの参照方法」を参照してください。

始める前に:

データ・コントロール構造ファイルにおける検証ルールの使用に関する知識があると役立ちます。詳細は、3.5項「属性への検証ルールの宣言的な定義」を参照してください。

次のタスクを完了する必要があります。

3.2.1項「データ・コントロールの編集方法」の説明に従って、必要なデータ・コントロール構造ファイルを作成します。

特定の範囲内を検証する手順:

  1. 「アプリケーション・ナビゲータ」で、使用するデータ・コントロール構造ファイルをダブルクリックします。

  2. 概要エディタで、「属性」ナビゲーション・タブをクリックします。

  3. 「属性」ページで検証ルールを追加する属性を選択し、「検証ルール」タブをクリックします。

  4. ページの「検証ルール」セクションで、「検証ルールの追加」アイコンをクリックします。

  5. 「検証ルールの追加」ダイアログの「ルール・タイプ」ドロップダウン・リストで「範囲」を選択します。

  6. 「演算子」フィールドで、「Between」または「NotBetween」を選択します。

  7. 「最小値」および「最大値」フィールドに適切な値を入力します。

  8. 「失敗処理」タブをクリックして、検証規則が失敗した場合にユーザーに対して表示されるエラー・メッセージを入力または選択します。詳細は、3.5.5項「検証エラー・メッセージの作成方法」を参照してください。

  9. 「OK」をクリックします。

3.5.3.6 Range Validatorの使用時の処理

範囲に対して検証すると、<validation:RangeValidationBean>タグがデータ・コントロール構造ファイルに追加されます。

例3-6に、最小値が0で最大値が10のquantity属性を示します。

例3-6 Range ValidatorのXMLコード

<PDefAttribute
  Name="quantity">
  <validation:RangeValidationBean
    Name="quantity_Rule_0"
    ResId="${adfBundle['model.ModelBundle']['QUANTITY_VALIDATOR']}"
    OnAttribute="quantity"
    OperandType="LITERAL"
    Inverse="false"
    MinValue="0"
    MaxValue="10"/>
. . .
</PDefAttribute>

3.5.3.7 バイトまたは文字数に対する検証

Length Validatorは、属性値の文字列長(文字またはバイト)が、指定した数より小さい、等しい、それより大きい、またはその範囲内かどうかを検証します。

始める前に:

データ・コントロール構造ファイルにおける検証ルールの使用に関する知識があると役立ちます。詳細は、3.5項「属性への検証ルールの宣言的な定義」を参照してください。

次のタスクを完了する必要があります。

3.2.1項「データ・コントロールの編集方法」の説明に従って、必要なデータ・コントロール構造ファイルを作成します。

バイトまたは文字数を検証する手順:

  1. 「アプリケーション・ナビゲータ」で、使用するデータ・コントロール構造ファイルをダブルクリックします。

  2. 概要エディタで、「属性」ナビゲーション・タブをクリックします。

  3. 「属性」ページで検証ルールを追加する属性を選択し、「検証ルール」タブをクリックします。

  4. ページの「検証ルール」セクションで、「検証ルールの追加」アイコンをクリックします。

  5. 「検証ルールの追加」ダイアログの「ルール・タイプ」ドロップダウン・リストで「長さ」を選択します。

  6. 「演算子」フィールドで、値を評価する方法を選択します。

  7. 「比較タイプ」フィールドで、「バイト」または「文字」を選択し、長さを入力します。

  8. 「失敗処理」タブをクリックして、検証規則が失敗した場合にユーザーに対して表示されるエラー・メッセージを入力または選択します。詳細は、3.5.5項「検証エラー・メッセージの作成方法」を参照してください。

  9. 「OK」をクリックします。

3.5.3.8 バイトまたは文字数に対する検証時の処理

長さを使用して検証すると、<validation:LengthValidationBean>タグがデータ・コントロール構造ファイルに追加されます(例3-7を参照)。たとえば、ユーザーがパスワードまたはPINを入力するフィールドがあり、アプリケーションによってそれが6文字以上、10文字以下であることを検証するとします。Length ValidatorでBetween演算子を使用し、最小値および最大値をそれぞれ設定します。

例3-7 2つの値の長さの検証

    <validation:LengthValidationBean
      OnAttribute="pin"
      CompareType="BETWEEN"
      DataType="CHARACTER"
      MinValue="6"
      MaxValue="10"
      Inverse="false"/>

3.5.3.9 正規表現を使用した検証

Regular Expression Validatorは、Java正規表現によって指定されたマスクに対して属性値を比較します。

メタデータでパーソナライズできる式を作成する場合は、Script Expression Validatorを使用できます。詳細は、3.5.4項「検証とビジネス・ルールでのGroovy式の使用方法」を参照してください。

始める前に:

データ・コントロール構造ファイルにおける検証ルールの使用に関する知識があると役立ちます。詳細は、3.5項「属性への検証ルールの宣言的な定義」を参照してください。

次のタスクを完了する必要があります。

3.2.1項「データ・コントロールの編集方法」の説明に従って、必要なデータ・コントロール構造ファイルを作成します。

正規表現を使用して検証する手順:

  1. 「アプリケーション・ナビゲータ」で、使用するデータ・コントロール構造ファイルをダブルクリックします。

  2. 概要エディタで、「属性」ナビゲーション・タブをクリックします。

  3. 「属性」ページで検証ルールを追加する属性を選択し、「検証ルール」タブをクリックします。

  4. ページの「検証ルール」セクションで、「検証ルールの追加」アイコンをクリックします。

  5. 「検証ルールの追加」ダイアログの「ルール・タイプ」ドロップダウン・リストで「正規表現」を選択します。

  6. 「演算子」フィールドで、「一致」または「不一致」を選択します。

  7. 事前定義された式(ある場合)を使用するには、ドロップダウン・リストから選択して「パターンの使用」をクリックします。事前定義された式を使用しない場合は、表示されているフィールドに独自の正規表現を記述します。

  8. 「失敗処理」タブをクリックして、検証規則が失敗した場合にユーザーに対して表示されるエラー・メッセージを入力または選択します。詳細は、3.5.5項「検証エラー・メッセージの作成方法」を参照してください。

  9. 「OK」をクリックします。

図3-3は、Regular Expression Validatorを選択して、Email属性が事前定義されたEmail Address式に一致することを検証する場合のダイアログを示しています。

図3-3 電子メール・アドレスを照合するRegular Expression Validator

電子メールを検証する事前定義された式

3.5.3.10 正規表現を使用した検証時の処理

正規表現を使用して検証すると、<RegExpValidationBean>タグがデータ・コントロール構造ファイルに追加されます。例3-8は、正規表現に一致する必要のあるEmail属性を示しています。

例3-8 Regular Expression ValidatorのXMLコード

<validation:RegExpValidationBean
  Name="Email_Rule_0"
  OnAttribute="Email"
  Pattern="[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}"
  Flags="CaseInsensitive"
  Inverse="false"/>

3.5.4 検証とビジネス・ルールでのGroovy式の使用方法

Groovy式は、データ・コントロール構造ファイルに格納されている、Javaのようなスクリプト・コードです。実行時でも値の変更や指定ができます。

検証ルールの作成の詳細は、第3章「属性への検証ルールの宣言的な定義」を参照してください。

ビジネス・ロジックでのGroovy式使用の詳細は、3.8項「Groovy言語サポート」を参照してください。

3.5.4.1 Groovy検証式でのBeanメソッドの参照

現在のオブジェクトのadf.source.dataProviderプロパティを使用すると、Beanに対してメソッドをコールできます。adf.source.dataProviderプロパティでは、検証対象のBeanにアクセスできます。

メソッドがブール型以外で、メソッド名が引数なしのgetXyzAbc()の場合、XyzAbcという名前のプロパティのようにその値にアクセスします。たとえば、例3-9のGroovy式により、getXyzAbc()メソッドがコールされます。

例3-9 サンプルのメソッドをコールするGroovy式

adf.source.dataProvider.XyzAbc

ブール・プロパティの場合は、同じ条件が当てはまりますが、JavaBeansコンポーネントのgetterメソッドの命名パターンが変更され、getXyzAbc()ではなくisXyzAbc()を再認識します。BeanのメソッドがJavaBeansのgetterメソッドの命名パターンに一致しない場合や、1つ以上の引数を使用する場合は、完全名を使用したメソッドのようにコールする必要があります。

3.5.4.2 true/false式を使用した検証

Groovy式を使用してtrue/false文を返すことができます。Script Expression Validatorでは、必ず式がtrueまたはfalseを返す必要があり、そうでなければadf.error.raise/warn()メソッドがコールされます。この機能の一般的な用途は、属性値の検証です(アカウント番号が有効であるかの確認など)。


注意:

adf.error.raise()およびadf.error.warn()メソッドを使用することにより(単純にtrueまたはfalseを返すかわりに)、ユーザーに表示するメッセージ・テキストを定義でき、バリデータを特定の属性に関連付けることができます。詳細は、3.5.5項「検証エラー・メッセージの作成方法」を参照してください。


始める前に:

データ・コントロール構造ファイルにおける検証に関する知識があると役立ちます。詳細は、3.5項「属性への検証ルールの宣言的な定義」を参照してください。

また、検証ルールでのGroovyの使用方法を理解していると役立ちます。詳細は、3.5.4項「検証とビジネス・ルールでのGroovy式の使用方法」を参照してください。

次のタスクを完了する必要があります。

3.2.1項「データ・コントロールの編集方法」の説明に従って、必要なデータ・コントロール構造ファイルを作成します。

true/false式を使用して検証する手順:

  1. 「アプリケーション・ナビゲータ」で、使用するデータ・コントロール構造ファイルをダブルクリックします。

  2. 概要エディタで、「属性」ナビゲーション・タブをクリックします。

  3. 「属性」ページで検証ルールを追加する属性を選択し、「検証ルール」タブをクリックします。

  4. ページの「検証ルール」セクションで、「検証ルールの追加」アイコンをクリックします。

  5. 「検証ルールの追加」ダイアログの「ルール・タイプ」ドロップダウン・リストで「スクリプト式」を選択します。

  6. 表示されているフィールドに検証式を入力します。

  7. 「失敗処理」タブをクリックして、検証規則が失敗した場合にユーザーに対して表示されるエラー・メッセージを入力または選択します。詳細は、3.5.5項「検証エラー・メッセージの作成方法」を参照してください。

  8. 「OK」をクリックします。

3.5.4.3 true/false式を使用した検証時の処理

Groovy式を作成すると、Beanのデータ・コントロール構造ファイルに保存されます。Groovy式は、<TransientExpression>タグによってラップされます。一部のGroovy式では、<TransientExpression>タグは、<validation:ExpressionValidationBean>タグによってもラップされます。

3.5.5 検証エラー・メッセージの作成方法

検証エラー・メッセージはユーザーにとって重要な情報であり、メッセージは不具合やその修正方法を伝達する必要があります。

3.5.5.1 検証エラー・メッセージの作成

始める前に:

データ・コントロール構造ファイルにおける検証ルールの使用に関する知識があると役立ちます。詳細は、3.5項「属性への検証ルールの宣言的な定義」を参照してください。

次のタスクを完了する必要があります。

3.2.1項「データ・コントロールの編集方法」の説明に従って、必要なデータ・コントロール構造ファイルを作成します。

検証エラー・メッセージを作成する手順:

  1. 「アプリケーション・ナビゲータ」で、使用するデータ・コントロール構造ファイルをダブルクリックします。

  2. 概要エディタで、「属性」ナビゲーション・タブをクリックします。

  3. 「属性」ページで検証エラー・メッセージを作成する属性を選択し、「検証ルール」タブをクリックします。

  4. 「属性」ページの「検証ルール」セクションで、編集する検証ルールを選択し、「検証ルールの編集」アイコンをクリックします。

  5. 「検証規則の編集: {0}」ダイアログで、「失敗処理」タブをクリックします。

  6. 「メッセージ・テキスト」フィールドで、エラー・メッセージを入力します。

    メッセージ・バンドル・ファイルにエラー・メッセージを定義することもできます。定義済のエラー・メッセージを選択する場合や、メッセージ・バンドル・ファイルに新しいエラー・メッセージを定義する場合は、「メッセージの選択」アイコンをクリックして、「テキスト・リソースの選択」ダイアログを開きます。


    注意:

    Script Expression Validatorでは、複数のエラー・メッセージを入力できます。これは、条件によって異なるエラーメッセージや警告メッセージを検証スクリプトで戻す場合に便利です。詳細は、3.5.5.3項「Groovyを使用した条件付きでのエラー・メッセージの呼出し」を参照してください。


  7. オプションで、メッセージ・トークンを定義するには、メッセージ・トークン名をエラー・メッセージのテキスト内に中カッコ({})で囲んで入力します。トークンのエントリが「トークン・メッセージ式」セクションに表示されます。その後、メッセージ・トークンの値を「トークン・メッセージ式」リストで定義します。

    図3-4は、メッセージ・トークンが含まれている、データ・コントロール構造ファイルの検証ルールに対する失敗メッセージを示しています。この機能の詳細は、3.5.5.4項「エラー・メッセージへのGroovy式の埋込み」を参照してください。

  8. 「OK」をクリックします。

図3-4 検証ルールの失敗処理メッセージ

失敗処理メッセージと式

3.5.5.2 検証メッセージのローカライズ

エラー・メッセージは翻訳可能文字列であり、メッセージ・バンドル・ファイルの翻訳可能UIコントロール・ヒントと同じように管理されます。メッセージ・バンドル・クラス内の定義済ルールのエラー・メッセージを表示するには、そのバリデータに関するデータ・コントロール構造ファイルのエントリのResIdプロパティに対応するメッセージ・バンドルのStringキーを探します。

3.5.5.3 Groovyを使用した条件付きでのエラー・メッセージの呼出し

adf.error.raise()およびadf.error.warn()メソッドを使用して、Groovy式の分岐に応じて様々なエラー・メッセージを条件付きで呼び出すことができます。たとえば、属性値がxの場合は次のように検証し、検証が失敗した場合はエラーmessageAを呼び出し、一方、属性値がyの場合は別の検証を実行し、検証が失敗した場合はエラーmessageBを呼び出します。

式でfalseが戻される(raise()メソッドを使用して特定のエラー・メッセージが呼び出されるのに対して)場合、バリデータは、そのバリデータに関連付けられた最初のエラー・メッセージをコールします。

raise()メソッドの構文は必須パラメータを1つ(メッセージ・バンドルから使用するためのmsgId)利用し、オプションでattrNameパラメータを利用することができます。

例外をスローするか、処理を継続するかに応じて、adf.error.raise()またはadf.error.warn()のいずれのメソッドも使用できます(3.5.6項「検証例外の重大度レベルの設定方法」を参照)。

3.5.5.4 エラー・メッセージへのGroovy式の埋込み

バリデータのエラー・メッセージには、実行時にサーバーによって解決できる埋込み式を含めることができます。この機能にアクセスするには、Groovy式の結果を表示させるエラー・メッセージ・テキストに名前付きトークン{#}({2}{errorParam}など)を入力するのみです。

「検証規則の編集: {0}」ダイアログの「失敗処理」タブで、エラー・メッセージのテキストにトークンを入力すると、ダイアログの下部の「トークン・メッセージ式」表で行が表示され、トークンのGroovy式を入力できます。図3-4は、メッセージ・トークンが含まれている、Item.xmlデータ・コントロール構造ファイルの検証ルールに対する失敗メッセージを示しています。

図3-4に示された式は、quantity属性の値を返すGroovy式です。また、Groovy式を使用して、データ・コントロール構造ファイルで定義されている属性のUIヒントやその他のオブジェクトにアクセスできます。

Groovy式newValueを使用して入力された値を返すことができます。

Groovyを使用してADFオブジェクトにアクセスする方法の詳細は、3.8項「Groovy言語サポート」を参照してください。

3.5.6 検証例外の重大度レベルの設定方法

検証例外の重大度レベルを、「情報警告」または「エラー」のいずれかに設定できます。重大度レベルを「情報警告」に設定すると、エラー・メッセージが表示されますが、処理は継続します。検証レベルを「エラー」に設定すると、エラーが修正されるまでユーザーは処理を続行できません。

通常、検証例外には「エラー」レベルを使用するため、これがデフォルト設定です。ただし、ユーザーが特定の機密取扱い資格を保持する場合は、情報警告メッセージを実装できます。たとえば、店長は事務員が同じことをした場合に、エラーとして表示されるように変更できます。

検証例外の重大度レベルを設定するには、「検証ルールの追加」ダイアログの「失敗処理」タブを使用します。

始める前に:

データ・コントロール構造ファイルにおける検証ルールの使用に関する知識があると役立ちます。詳細は、3.5項「属性への検証ルールの宣言的な定義」を参照してください。

次のタスクを完了する必要があります。

3.2.1項「データ・コントロールの編集方法」の説明に従って、必要なデータ・コントロール構造ファイルを作成します。

検証例外の重大度レベルを設定する手順:

  1. 「アプリケーション・ナビゲータ」で、使用するデータ・コントロール構造ファイルをダブルクリックします。

  2. 概要エディタで、「属性」ナビゲーション・タブをクリックします。

  3. 「属性」ページで検証エラー・メッセージを作成する属性を選択し、「検証ルール」タブをクリックします。

  4. 「属性」ページの「検証ルール」セクションで、編集する検証ルールを選択し、「検証ルールの編集」アイコンをクリックします。

  5. 「検証ルールの編集」ダイアログで、「失敗処理」タブをクリックし、「エラー」または「情報警告」のいずれかのオプションを選択します。

  6. 「OK」をクリックします。

3.6 名前付き基準を使用した結果セットのフィルタリング

JDeveloperでは、データ・コントロール構造ファイルについて名前付き基準を作成できます。名前付き基準は、アプリケーションのデータ・モデルで使用し、検索フォームのシードされた問合せとしてユーザーに公開できます。

エンティティBeanで名前付き基準を指定して、表示する結果をフィルタリングできます。名前付き基準オブジェクトは1つ以上の名前付き基準行の行セットであり、この属性によってエンティティBean内の属性がミラーリングされます。名前付き基準の定義には、SQL問合せのWHERE句のように機能する問合せ条件が含まれています。

名前付き基準の結果セットでは、各属性のデータ型はStringであるため、QBE演算子を使用できます。たとえば、これによってユーザーは"OrderId > 304"のような条件を入力できます。

特定のデータ・コントロール構造ファイルに対して名前付き基準を定義するには、概要エディタの「名前付き基準」ページを使用します。


注意:

名前付き基準以外にも、データ・コントロールの作成時にエンティティBeanについて自動的に生成される暗黙的基準も存在します。暗黙的基準は、指定された表のすべてのデータを返すFindAllサービス・メソッドに基づきます。

名前付き基準および暗黙的基準のいずれも、「データ・コントロール」パネルの「名前付き基準」ノードの下に表示されます。暗黙的基準は、「すべての問合せ可能な属性」として表示されます。


3.6.1 名前付き基準の用途

個々のアクセッサ結果をフィルタリングする必要がある場合、名前付き基準定義を作成します。デザインタイムで定義した名前付き基準は、ターゲット・データ・コントロール構造ファイルの属性の値をエンド・ユーザーが指定できるような、QBEの検索フォームを簡単に作成する際に使用できます。

たとえば、エンド・ユーザーは、顧客名の値および日付を入力することによって、CustomerOrdersコレクションの行が表示されるWebページで結果をフィルタリングできます。Webページ・デザイナは、JDeveloperの「データ・コントロール」パネルに表示される名前付き基準を基に、検索フォームを容易に作成できます。「データ・コントロール」パネルに表示される名前付き基準の利用方法の詳細は、8.1.1項「問合せ検索フォーム」を参照してください。

3.6.2 名前付き基準を宣言的に作成する方法

フィルタリングするデータ・コントロール構造ファイルの名前付き基準を定義するには、概要エディタでデータ・コントロール構造ファイルを開き、「基準の表示」ページの「名前付き基準」セクションを使用します。「名前付き基準」セクション・ヘルプから開く専用エディタで、属性名(SQL列名ではなく)を使用してWHERE句に相当するものを作成できます。名前付き基準は、1つのBeanに対して複数定義できます。

名前付き基準の定義はそれぞれ、次の要素で構成されています。

  • 1つ以上の名前付き基準行。名前付き基準行は、任意の数の名前付き基準グループ、または現在のデータ・コントロール構造ファイルに対して定義されている別の名前付き基準への任意の数の参照で構成されます。

  • 任意の数の名前付き基準アイテムで構成される、オプションの名前付き基準グループ。

  • 属性名、属性に適した演算子、およびオペランドで構成される名前付き基準アイテム。オペランドには、フィルタの値が定義されている場合はリテラル値か、または、属性のプロパティ値へのドット表記アクセスを含むスクリプト式がオプションで利用可能なバインド変数を使用できます。

    式の記述には、Groovyスクリプト言語を使用します(3.8項「Groovy言語サポート」を参照)。

名前付き基準を定義する場合は、フィルタリングされた結果のソースを制御します。結果を次のものに制限できます。

  • エンティティBeanで指定されたデータベース表のみ。

  • アクセッサ問合せのメモリー内の結果のみ。

  • データベースおよびアクセッサ問合せのメモリー内の結果の両方。

データベース表とアクセッサのメモリー内の結果の両方でフィルタリングを実行する場合、トランザクションで作成されており、データベースのコミット前である行もフィルタリングできます。

「ビュー基準の編集」ダイアログで作成する名前付き基準の式では、論理積により、選択した基準アイテム(または基準グループ)とその前にあるアイテム(またはグループ)を式の中でどのように結合するかを指定できます。

  • AND結合を使用すると、結合した条件のどちらにも一致する問合せ結果が得られます。それぞれの名前付き基準アイテムを追加する場合は、これがデフォルトになります。

  • OR結合を使用すると、結合した条件の少なくとも一方に一致する問合せ結果が得られます。名前付き基準グループに対しては、これがデフォルトになります。

さらに、様々な名前付き基準アイテム間の論理積をより制御するために、ネストされた名前付き基準を作成できます。ネストされた名前付き基準グループは、任意の数のネストされた名前付き基準アイテムで構成されます。ネストされた基準では、その親名前付き基準グループの中で基準を満たしている行が制限されます。たとえば、給与がSalary > 3000という基準を満たし、かつ所属部署がDeptNo = 10またはDeptNo = 20という基準を満たしている従業員のリストを問い合せる場合があります。この場合、1つの項目Salary > 3000を含む第1のグループを使用して名前付き基準と、2つの項目DeptNo = 10およびDeptNo =20を含む第2のグループを使用してネストされた名前付き基準を定義できます。

始める前に:

名前付き基準の知識があると役立ちます。詳細は、3.6項「名前付き基準を使用した結果セットのフィルタリング」を参照してください。

次のタスクを完了する必要があります。

名前付き基準を定義する手順:

  1. 「アプリケーション・ナビゲータ」で、名前付き基準を作成するデータ・コントロール構造ファイルをダブルクリックします。

  2. 概要エディタで、「名前付き基準」ナビゲーション・タブをクリックします。

  3. 「名前付き基準」ページで、「名前付き基準」セクションを展開して「新規ビュー基準の作成」ボタンをクリックします。

  4. 「ビュー基準の作成」ダイアログで、名前付き基準の名前を入力し、アプリケーション内での用途がわかるようにします。

  5. 「基準実行モード」ドロップダウン・リストで、名前付き基準によって問合せ結果をどのようにフィルタリングするかを決定します。

    フィルタリングの名前付き基準は、アクセッサ問合せにより指定されたデータベース表、問合せにより生成されたメモリー内の行セット、またはデータベース表とメモリー内の結果の両方に制限できます。

    適用したアソシエーションの一貫性の結果として作成された行を含める場合は、「両方」を選択することが適切です。この場合は、最初のフェッチの後にメモリー内フィルタリングが実行されます。

  6. 名前付き基準を定義するには、次のいずれかの「追加」ボタンをクリックします。

    • 単一の基準アイテムを追加するには、「アイテムの追加」を選択します。エディタによって、現在のグループまたは選択した名前付き基準の下の階層にアイテムが追加されます。デフォルトでは、アイテムを追加するたびに、エディタによって次の属性が選択され、基準アイテムが定義されます。属性は、データ・コントロール構造ファイルが定義する任意の属性に変更できます。

    • 新しいグループを追加して、構成する基準アイテムをそのグループに追加するには、「グループの追加」を選択します。新しいグループを追加すると、エディタによって階層にOR結合が挿入されます。この結合は必要に応じて変更できます。

    • 定義する名前付き基準を追加するには、「基準の追加」を選択します。この選択肢は、データ・コントロール構造ファイルにすでに存在する名前付き基準を追加する場合の代替の方法となります。新しい名前付き基準を追加すると、エディタによって階層にAND結合が挿入されます。この結合は必要に応じて変更できます。別の名前付き基準を追加するたびに、階層で現在選択している名前付き基準の下に新しい名前付き基準がエディタによってネストされます。階層のルート・ノードでは、現在編集中の名前付き基準が定義されます。

    • データ・コントロール構造ファイルですでに定義されている名前付き基準を追加するには、「名前付き基準の追加」を選択します。


      注意:

      名前付き基準からUIデザイナによって作成される検索フォームでは、別の名前付き基準が含まれている名前付き基準を使用できません。


  7. 名前付き基準階層の名前付き基準アイテム・ノードを選択し、追加したノードを「基準アイテム」セクションで定義します。

  8. 基準アイテムで、必要な「属性」を選択します。デフォルトでは、リストの最初のノードがエディタによって追加されます。

  9. 必要な「演算子」を選択します。

    リストには、選択した属性に適合する演算子のみが表示されます。String型およびDate型属性の場合、「次の間にある」および「次の間にない」演算子では、範囲を定義するために2つのオペランド値を指定する必要があります。Date型属性の場合、日付または日付の範囲をテストする演算子を選択できます(YYYY-MM-DDの書式で入力された日付値について)。たとえば、2010年12月16日の場合、2010-12-16と入力します。

  10. 選択した名前付き基準アイテムで、必要な「オペランド」を選択します。

    • 属性に値を指定したり、QBE検索フォームに対するユーザー指定の検索フィールドにデフォルト値を定義する場合は、「リテラル」を選択します。名前付き基準でユーザー・インタフェースの問合せ検索フォームを定義する場合は、「値」フィールドが空のままでも構いません。この場合は、ユーザーが値を指定します。検索フィールドのデフォルト値として機能する値を指定して、ユーザーが上書きできるようにすることもできます。「値」フィールドに指定した値には、ワイルドカード文字の*または%を含めることができます。

    • バインド変数を使用して実行時に値を決定する場合は、「バインド変数」を選択します。「新規」をクリックして「バインド変数」ダイアログを表示し、そこでデータ・コントロール構造ファイルに対するバインド変数を新規に作成します。バインド変数の作成の詳細は、3.6.4項「名前付き基準でのバインド変数の使用方法」を参照してください。

  11. 定義する各アイテム、グループまたはネストされた名前付き基準に対して、必要に応じてデフォルト設定の論理積を変更し、アイテムの結合方法を指定します。

    • AND結合を使用すると、結合した条件のどちらにも一致する問合せ結果が得られます。それぞれの名前付き基準アイテムまたはネストされた名前付き基準を追加する場合は、この結合がデフォルトになります。

    • OR結合を使用すると、結合した条件の少なくとも一方に一致する問合せ結果が得られます。名前付き基準グループに対しては、これがデフォルトになります。

  12. オプションで、実行時に指定された値の大/小文字に基づいてフィルタリングする場合は、「大/小文字を区別しない」オプションの選択を解除します。デフォルトでは選択されており、このようなフィルタリングはされません。

    基準アイテムには、定義したリテラル値またはエンド・ユーザーが入力するランタイム・パラメータを使用できます。このオプションは、String型の属性に対してのみサポートされています。デフォルトでは、大/小文字の区別のある検索は使用できません。

  13. 「検証」ドロップダウン・リストで、生成されたWHERE句での属性値の比較において、名前付き基準アイテムを必須とするかオプションとするかを決定します。

    • 「選択的に必須」を選択すると、名前付き基準アイテムに基準値が入力されず、かつ基準値を持つ基準アイテムが同じレベルに少なくとも1つ存在する場合、生成されるWHERE句では実行時にその名前付き基準アイテムが無視されます。それ以外の場合は、例外がスローされます。

    • 「オプション」を選択すると、値がNULLでない名前付き基準のみWHERE句に追加されます。新規の各名前付き基準アイテムに対してデフォルトの「オプション」を選択すると、NULL値に対しても例外は生成されません。

    • 「必須」を選択すると、基準アイテムに値が入力されなかった場合は、WHERE句が実行されず例外がスローされます。

  14. 名前付き基準でオペランドとしてバインド変数を使用する場合、IS NULL条件がWHERE句で生成されるかどうかを決定します。バインド変数の検証に「オプション」を選択した場合のみ、このフィールドが有効になります。

    • 実行時にバインド変数値が入力されていない場合でも名前付き基準が結果を返すようにする場合、「Null値の無視」を選択したままにしておきます(デフォルト)。検証が「必須」またはオプションで必須に設定されている場合、名前付き基準は値を必要とし、このnull値を無視するオプションは無効になります。

      たとえば、ユーザー検索フォームで使用されるバインド変数に対してこのオプションを選択したままにしておくと、そのバインド変数を持つフィールドに値を入力しなくても検索の結果が表示されます。

    • 実行時にバインド変数値が入力されていない場合に名前付き基準がnullの結果を返すようにする場合、「Null値の無視」の選択を解除します。

      検証の設定が「必須」またはオプションで必須の場合、null値の条件も削除されますが、別の使用方法をサポートします。必要な実行時の動作を実現するために、「Null値の無視」機能と組み合せて使用する必要があります。

  15. 「OK」をクリックします。

3.6.3 名前付き基準の作成時の処理

名前付き基準を作成すると、名前付き基準定義がデータ・コントロール構造ファイルに追加され、概要エディタの「名前付き基準」ページに名前が表示されます。

名前付き基準のXMLコードを表示するには、データ・コントロール構造ファイルのソース・エディタを開きます。それぞれの名前付き基準定義には、「ビュー基準の作成」ダイアログで定義したグループの数に対応する、1つ以上の<ViewCriteriaRow>要素が含まれます。

3.6.4 名前付き基準でのバインド変数の使用方法

バインド変数を使用すると、実行時に計算される属性値を名前付き基準に組み込むことができます。

シードされた検索で名前付き基準を使用する場合は、エンド・ユーザーによるバインド変数を更新可能にできます。この更新可能オプションを使用する場合、エンド・ユーザーは検索フォームに値を入力する必要があります。

バインド変数が割り当てられている名前付き基準アイテムが必須でない場合、名前付き基準の実行ではバインド変数値を必要としません。この動作を強制する場合、「バインド変数」ダイアログでバインド変数が必須かどうかを指定できます。

バインド変数に対しては、デフォルト値を定義するか、属性プロパティ値へのドット表記法によるアクセスが可能なスクリプト式を記述できます。式の記述には、Groovyスクリプト言語を使用します(3.8項「Groovy言語サポート」を参照)。

名前付きバインド変数を名前付き基準に追加する場合は、データ・コントロール構造ファイルの概要エディタにある「名前付き基準」ページを使用します。必要な数のバインド変数を定義できます。

始める前に:

名前付き基準の知識があると役立ちます。詳細は、3.6項「名前付き基準を使用した結果セットのフィルタリング」を参照してください。

次のタスクを完了する必要があります。

3.2.1項「データ・コントロールの編集方法」の説明に従って、必要なデータ・コントロール構造ファイルを作成します。

名前付きバインド変数を作成する手順:

  1. 「アプリケーション・ナビゲータ」でデータ・コントロール構造ファイルをダブルクリックします。

  2. 概要エディタで、「名前付き基準」ナビゲーション・タブをクリックします。

  3. 「名前付き基準」ページで、「バインド変数」セクションを展開して「新規バインド変数の作成」ボタンをクリックします。

  4. 「バインド変数」ダイアログで、新しいバインド変数の名前およびデータ型を入力します。

    バインド変数はデータ・コントロール構造ファイル属性と同じネームスペースを共有するため、既存の属性名と競合しない名前を指定します。

  5. 必要に応じて、バインド変数のデフォルト値を指定します。

    • 実行時に式から値が決定されるようにするには、Groovyスクリプト言語の式を入力し、値タイプ「式」を選択して、「値」フィールドに式を入力します。必要に応じて、「編集」をクリックして「式」ダイアログを開きます。「式」ダイアログは、式を記述できる大きめのテキスト領域です。

    • デフォルト値を定義する場合は、値のタイプ「リテラル」を選択し、「値」フィールドにリテラル値を入力します。

  6. 「バインド変数」ダイアログで「コントロール・ヒント」タブをクリックし、「ラベル・テキスト」「フォーマットの種類」「フォーマット」マスクなどのヒントを指定します。

    名前付きバインド変数の値を入力できる検索ページなどのユーザー・インタフェースを作成する場合、ビュー・レイヤーではバインド変数のコントロール・ヒントが使用されます。「更新可能」オプションでは、エンド・ユーザーがユーザー・インタフェースを使用してバインド変数の値を変更できるようになるかどうかを制御します。バインド変数が更新可能でない場合、その値は開発者のみがプログラムで変更できます。

  7. 「OK」をクリックします。

3.6.5 名前付き基準でのバインド変数使用時の処理

1つ以上の名前付きバインド変数を構造定義ファイルに追加すると、実行時にこれらの変数の値を容易に表示し、設定できるようになります。各バインド変数の名前、型およびデフォルト値の情報は、Beanのデータ・コントロール構造ファイルに保存されます。バインド変数に対してUIヒントを定義した場合、この情報はデータ・コントロール構造ファイルの他のUIヒントとともにモデル・プロジェクトのメッセージ・バンドル・ファイルに保存されます。

3.6.6 ネストされた式について

名前付き基準からUIデザイナによって作成される検索フォームでは、すべてのタイプのネストされた式が動作するわけではありません。特に、検索フォームでは、直接ネストされた名前付き基準をサポートしていません。このタイプのネストされた式では、1つの名前付き基準を別の名前付き基準の直接の子として定義します。それ自体が名前付き基準の子である基準アイテムの子として名前付き基準をネストしたネストされた式は、問合せ検索フォームでサポートされています。名前付き基準を使用した検索フォームの作成の詳細は、8.1.1項「問合せ検索フォーム」を参照してください。

3.6.7 名前付き基準にユーザー・インタフェース・ヒントを設定する方法

データ・コントロール構造ファイル・コレクションに対して作成された名前付き基準は、Webページ・デザイナがQBE検索フォームを作成する際に使用できます。Webページ・デザイナは、JDeveloperの「データ・コントロール」パネルから名前付き基準を選択して、Webアプリケーション用の検索フォームを作成します。Webページの検索フォームでは、「データ・コントロール」パネルで選択した名前付き基準に最初にバインドされるADF Faces問合せ検索コンポーネントが利用されます。実行時に、エンド・ユーザーは、「データ・コントロール」パネルに表示されるその他すべての名前付き基準の中からいずれかを選択できます。検索フォームでエンド・ユーザーが選択できる名前付き基準は、開発者シード検索と呼ばれます。問合せコンポーネントでは、「保存済の検索」ドロップダウン・リストに、これらのシードされた検索が自動的に表示されます。検索フォームの作成およびADF問合せ検索コンポーネントの使用の詳細は、8.2項「問合せ検索フォームの作成」を参照してください。

開発者がシードした検索はモデル・プロジェクト内で作成されるため、「ビュー基準の編集」ダイアログの「UIヒント」ページでは、問合せコンポーネントにおける個々の名前付き基準の実行時の使用方法に対して、デフォルト・プロパティを指定できます。実行時の問合せコンポーネントの動作は、次のシードされた検索プロパティからどれを選択するかによって決まります。

ADF問合せ検索コンポーネントで使用するシードされた検索を作成する場合は、「ビュー基準の編集」ダイアログの「UIヒント」ページで「リストに表示」を選択します。エンド・ユーザーの検索フォームに名前付き基準を表示しない場合は、「リストに表示」の選択を解除します。

始める前に:

名前付き基準の知識があると役立ちます。詳細は、3.6項「名前付き基準を使用した結果セットのフィルタリング」を参照してください。

次のタスクを完了する必要があります。

ユーザー・インタフェースに使用する名前付き基準を構成する手順:

  1. 「アプリケーション・ナビゲータ」で、シードされた検索に使用する名前付き基準が定義されているデータ・コントロール構造ファイルをダブルクリックします。

  2. 概要エディタで、「名前付き基準」ナビゲーション・タブをクリックします。

  3. 「名前付き基準」ページで、シードされた検索で使用する名前付き検索を選択して「編集」アイコンをクリックします。

  4. 「ビュー基準の編集」ダイアログで、「UIヒント」タブをクリックして「リストに表示」が選択されていることを確認します。

    この選択により、問合せコンポーネントによってシードされた検索が「保存済の検索」ドロップダウン・リストに表示されるかどうかが決まります。

  5. 問合せコンポーネントの「保存済の検索」ドロップダウン・リストに追加するシードされた検索に対して、わかりやすい表示名を入力します。

    何も入力しない場合、問合せコンポーネントでは、「名前付き基準の編集」ダイアログに表示される名前付き基準の名前が使用されます。

  6. エンド・ユーザーが「保存済の検索」ドロップダウン・リストからシードされた検索を選択するたびに、検索結果が自動的に問合せコンポーネントに表示されるようにする場合は、「自動的に問合せ」を有効にします。

    デフォルトでは、検索結果は表示されません。

  7. オプションで、ユーザーにアイテムが基本モードまたは詳細モードのいずれで表示されるかを決定する「表示されたモード」プロパティを各ビュー基準アイテムについて設定します。


    注意:

    ユーザーに公開しないアイテムが名前付き基準に含まれている場合、「表示されたモード」設定に「なし」を使用して、検索フォームでそのアイテムを非表示にします。たとえば、ログインした顧客のカート内にある製品を検索するための名前付き基準は作成できますが、ユーザーが顧客IDを変更して別の顧客のカート内にある製品を表示することのないようにする必要があります。このようなシナリオでは、名前付きバインド変数を使用して、顧客IDに対応する名前付き基準アイテムを現在の顧客IDに設定します。バインド変数定義で変数が任意または更新不可に指定されている場合がありますが、UIヒント・プロパティの「表示」「非表示」に設定されている場合は、「表示されたモード」の設定によってのみ、検索フォームに値が表示されるかどうかが決まります。


  8. 必要に応じて、「基準アイテムUIのヒント」を適用して、エンド・ユーザーが検索フォームのモードを「基本」と「詳細」の間で切り替える際に、問合せコンポーネントで個々の基準アイテムをレンダリングするかどうかを構成します。

    デフォルトでは、シードされた検索で定義した名前付き基準アイテムはすべて、どちらかのモードで表示されます。

    レンダリングされた基準アイテムがDate型の場合、対応するBean属性のUIヒントも定義する必要があります。『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』のビュー・オブジェクトの属性コントロール・ヒントの定義に関する項を参照して、Bean属性のフォーマットの種類のヒントをSimple Dateに設定し、フォーマット・マスクを適切な値に設定します。これによって検索フォームで日付値を使用できるようになります。

  9. 「OK」をクリックします。

3.7 Oracle ADFモデル・テスターを使用したBeanメタデータのテスト

アプリケーションのビューの設計を開始する前に、Oracle ADFモデル・テスターを使用してモデルの様々な要素をテストできます。たとえば、モデルに検証ルールまたはUIコントロール・ヒントを追加した場合、それらのオブジェクトをページにバインドする前にテストできます。UIページを作成した後でも、問題が発生した場合、Oracle ADFモデル・テスターは問題を診断する補助となります。Oracle ADFモデル・テスターで問題を再現して、問題がアプリケーションのビューまたはコントローラ・レイヤーにあるのか、あるいはビジネス・サービス・レイヤーのアプリケーション・モジュール自体にあるのかを確認できます。

3.7.1 Oracle ADFモデル・テスターの実行方法

データ・コントロールに定義したメタデータをテストするには、アプリケーション・ナビゲータからアクセスできるOracle ADFモデル・テスターを使用します。

始める前に:

Oracle ADFモデル・テスターの知識があると役立ちます。詳細は、3.7項「Oracle ADFモデル・テスターを使用したBeanメタデータのテスト」を参照してください。


注意:

EJBデータ・コントロールの場合、テスターはリモート・セッションBeanインタフェースのデータ・コントロールに対してのみ機能します。データ・コントロールをローカルBeanインタフェースに基づいて作成した場合、テスターを使用するにはリモートBeanインタフェースのメタデータをDataControls.dcxファイルに追加する必要があります。リモートBeanインタフェースのメタデータを追加するには、セッションBeanを右クリックし、「データ・コントロールの作成」を選択し、次に「EJBインタフェースの選択」ダイアログで「リモート」ラジオ・ボタンを選択します。

後で「データ・コントロール」パネルを使用してページにバインディングを追加する際、ローカルおよびリモート・インタフェースの両方の高レベル・ノードが表示されます。各ノードには、同じデータ・コントロール構造ファイルを参照するデータ・コントロール・コレクションの同一階層が含まれます。2つの階層の唯一異なる点は、参照されているセッションBeanのインタフェースのみです。


アプリケーションのBeanメタデータをテストする手順:

  1. 「アプリケーション・ナビゲータ」で、目的のデータ・コントロールが含まれているプロジェクトを展開します。

  2. 該当するセッションBeanを右クリックして「実行」を選択します。

    アプリケーション・サーバーが起動し、Beanがサーバーにロードされるのを待ちます。

    アプリケーションを初めて実行し、新しいドメインを統合WebLogic Serverで開始する際に、「デフォルト・ドメインの構成」ダイアログが表示されます。ダイアログを使用して新しいドメインの管理者パスワードを定義します。入力するパスワードは8文字以上で、数字が含まれている必要があります。

    または、デバッグを有効にしたOracle ADFモデル・テスターでアプリケーションを実行する場合は「デバッグ」を選択します。JDeveloperにより、ログ・ウィンドウのデバッガ・プロセス・パネルおよび各種デバッガ・ウィンドウが開きます。たとえば、Oracle ADFモデル・テスターを使用してデバッグする場合、ステータス・メッセージと例外を表示し、ソース・コードをステップ・インおよびステップ・アウトし、ブレークポイントを管理できます。

  3. DataControls.dcxファイルを右クリックして「実行」を選択します。

    図3-5に示すように、Oracle ADFモデル・テスターが開きます。

図3-5 Oracle ADFモデル・テスター

Oracle ADFモデル・テスターのウィンドウに表示されたSummitデモ

表3-1に、エンティティBeanを表示する際にOracle ADFモデル・テスターのツールバー・ボタンで実行する操作の概要を示します。

表3-1 Oracle ADFモデル・テスターのツールバー・ボタン

ボタン 操作 用途

ナビゲーション・ボタン


別の行に移動

Oracle ADFモデル・テスターで表示される現在の行を変更します。最初、前、次、または最後の行に移動します。

「行の挿入」ボタン


新規行を挿入

新規の行を作成して挿入します。

「行の削除」ボタン


現在の行を削除

現在の行を削除します。

「変更の保存」ボタン


データベースへの変更を保存

保留中のトランザクションに対してコミット操作を実行します。ただし、EJBデータ・コントロールの場合、変更は実際にはデータベースにコミットされません。

このボタンは、トランザクション・メソッドがセッション・ファサードに実装されている場合のみ使用できます。

「変更の取消」ボタン


前回の保存以降の変更をすべて取消し

保留中のトランザクションを取り消し、元の値をリストアします。

このボタンは、トランザクション・メソッドがセッション・ファサードに実装されている場合のみ使用できます。

「ビュー基準の指定」ボタン


ビュー基準の指定

「ビュー基準」ダイアログが表示され、ビュー基準を作成し、結果セットに適用できます。

「行の検証」ボタン


行の検証

データ・コントロール構造ファイルで定義されている検証ルールを適用することにより、現在の行を検証します。最低1つのフィールドが編集可能でないと、使用できません。


3.7.2 Oracle ADFモデル・テスターを更新してプロジェクトの変更を表示する方法

データ・コントロールをテストする際、モデル・プロジェクト全体を再デプロイすることなく、データ・コントロールを繰り返し変更して再度テストできます。データ・コントロール構造ファイルへの変更を再ロードするには、単にOracle ADFモデル・テスターを閉じて再度開きます。

Javaコード、またはモデル・プロジェクトのJARファイルにパッケージ化した他のファイルを変更した場合は、そのJARを再ビルドし、内部アプリケーション・サーバーに再デプロイする必要があります。

始める前に:

Oracle ADFモデル・テスターの知識があると役立ちます。詳細は、3.7項「Oracle ADFモデル・テスターを使用したBeanメタデータのテスト」を参照してください。

稼働中のOracle ADFモデル・テスターにデータ・モデルのメタデータを再ロードする手順:

  1. 「アプリケーション・ナビゲータ」で、DataControls.dcxファイルを右クリックして「実行」を選択します。

  2. Oracle ADFモデル・テスターで、データ・モデルをテストして、必要な変更を判別します。

  3. JDeveloperで、プロジェクトに必要な変更を加えます。

  4. Javaクラス、またはセッションBeanのJARファイルの一部である他のアーティファクトを変更した場合、プロジェクトを再ビルドします。(たとえば、「アプリケーション・ナビゲータ」のデータ・モデル・プロジェクトを右クリックして、「再ビルド」を選択します。再ビルドしたJARファイルがサーバーにデプロイされます。)

    データ・コントロール構造ファイルのみを変更した場合、プロジェクトを再ビルドする必要はありません。

  5. Oracle ADFモデル・テスターを閉じます。

  6. 「アプリケーション・ナビゲータ」で、DataControls.dcxファイルを右クリックして「実行」を選択し、更新されたメタデータでテスターを再度開きます。

3.7.3 Oracle ADFモデル・テスター使用時の処理

Oracle ADFモデル・テスターを起動すると、JDeveloperがテスターを別のプロセスで開始し、Oracle ADFモデル・テスター・ウィンドウが表示されます。ウィンドウの左側のツリーには、データ・モデルのすべてのアクセッサ戻りコレクションが表示されます。データ・モデルにマスター/ディテールのビュー・インスタンス関係が定義されている場合、ツリーには親ノードと子コードとして関係が表示されます。目的のコレクションをダブルクリックすると、Oracle ADFモデル・テスターでデータ・ビュー・ページが表示され、問合せ結果をインスペクトできます。たとえば、図3-6では、customerFindAllアクセッサ戻りコレクションがダブルクリックされ、右側のデータ・ビュー・ページにこのコレクションの最初のレコードが表示されているところが示されています。

図3-6 Oracle ADFモデル・テスターに表示されたcustomerFindAllコレクションの詳細

customerFindAllアクセッサの詳細レコード

Oracle ADFモデル・テスターの一部の機能を次に示します。

  • 「ラベル・テキスト」ヒントに基づいたUIヒント、およびフォーマット・マスクが正しく定義されているかどうかを検証できます。(UIヒントの設定方法は、3.3.5項「属性へのUIヒントの設定方法」を参照してください。)

  • ツールバー・ボタンを使用してデータのスクロールもできます。

  • Query-By-Example基準を入力して、検査対象のデータのある特定の行を検索できます。ツールバーの「ビュー基準の指定」ボタンをクリックすると、「ビュー基準」ダイアログに使用可能なQBE基準のリストが表示されます。

    たとえば、CustomerInfoCriteriaなどのビュー基準を選択し、LastName属性にH%などの問合せ基準を入力して、「検索」をクリックすると、文字Hで始まる姓のユーザーのみに検索対象を絞り込むことができます。

3.7.4 ビジネス・レイヤーの検証のテスト方法

定義した検証規則に応じて、無効な値を入力して検証例外のトリガーおよび検証を試行できます。

始める前に:

Oracle ADFモデル・テスターの知識があると役立ちます。詳細は、3.7項「Oracle ADFモデル・テスターを使用したBeanメタデータのテスト」を参照してください。

次のタスクを完了する必要があります。

3.7.1項「Oracle ADFモデル・テスターの実行方法」の手順に従ってテスターを起動します。

ビジネス・レイヤーの検証をテストする手順:

  1. テスターで、属性の値を入力して「行の検証」アイコンをクリックします。

    たとえば、属性について範囲検証ルールを定義した場合、その範囲外の値を入力して「行の検証」アイコンをクリックします。次のようなエラーが表示されます。

    (oracle.jbo.AttrSetValException) Valid product codes are between 100 and 999
    
  2. ツールバーで「ロールバック」ボタンをクリックして、データを前の状態に戻します。

3.7.5 代替言語のメッセージ・バンドルおよびUIヒントのテスト方法

アプリケーションにおいて、リソース・メッセージ・バンドル内に代替言語を定義する場合、これらの言語を認識するようにOracle ADFモデル・テスターを構成できます。Oracle ADFモデル・テスターで「ロケール」メニューを表示し、利用可能な言語の中から選択できます。

Oracle ADFモデル・テスターで言語メッセージ・バンドルをテストすることで、データ・コントロールのUIヒントの翻訳が正しく配置されているかどうかを検証できます。または、メッセージ・バンドルが特定の属性の日付書式を定義している場合は、ツールによって日付書式の変更(たとえば、04/12/2007から12/04/2007へ)を検証できます。

始める前に:

Oracle ADFモデル・テスターの知識があると役立ちます。詳細は、3.7項「Oracle ADFモデル・テスターを使用したBeanメタデータのテスト」を参照してください。

Oracle ADFモデル・テスターのデフォルト言語を指定する手順:

  1. 「ツール」メニューで「設定」を選択します。

  2. 選択パネルで「ADFビジネス・コンポーネント」を展開し、「テスター」を選択します。

  3. Oracle ADFモデル・テスター・ページで、リソース・メッセージ・バンドルを作成したロケールを「選択済」リストに追加します。

3.7.6 行の作成およびデフォルト値の生成のテスト方法

Oracle ADFモデル・テスターを使用して、新規行の作成時に属性のデフォルト値が正しく生成されるかどうかを検証できます。

始める前に:

Oracle ADFモデル・テスターの知識があると役立ちます。詳細は、3.7項「Oracle ADFモデル・テスターを使用したBeanメタデータのテスト」を参照してください。

また、データ・コントロール構造ファイル内の属性を理解していると役立ちます。詳細は、3.3項「属性の使用」を参照してください。

次のタスクを完了する必要があります。

3.7.1項「Oracle ADFモデル・テスターの実行方法」の手順に従ってテスターを起動します。

行の作成およびデフォルト値の生成をテストする手順:

  1. Oracle ADFモデル・テスターのツールバーで「新規行の挿入」ボタンをクリックし、空白行を作成します。

    宣言的なデフォルト値があるフィールドの場合、その値が空白行に表示されます。

  2. テスターで、すべての必要なフィールドに入力して「コミット」ボタンをクリックします。

3.7.7 Oracle ADFモデル・テスターを使用した名前付き基準のテスト方法

Oracle ADFモデル・テスターでは、既存の名前付き基準を使用し、非定型基準で問い合せてデータ・モデルをテストできます。

始める前に:

Oracle ADFモデル・テスターの知識があると役立ちます。詳細は、3.7項「Oracle ADFモデル・テスターを使用したBeanメタデータのテスト」を参照してください。

また、名前付き基準を理解していると役立ちます。詳細は、3.6項「名前付き基準を使用した結果セットのフィルタリング」を参照してください。

Oracle ADFモデル・テスターを使用して名前付き基準および非定型問合せ基準をテストする手順:

  1. 「アプリケーション・ナビゲータ」で、目的のデータ・コントロールおよびセッションBeanが含まれているプロジェクトを展開します。

  2. セッションBeanを右クリックして「実行」を選択し、組込みアプリケーション・サーバーにデプロイされるのを待ちます。

  3. DataControls.dcxファイルを右クリックして「実行」を選択し、Oracle ADFモデル・テスターを起動します。

  4. Oracle ADFモデル・テスターで、フィルタリングするアクセッサ戻りコレクションをダブルクリックします。

  5. 「ビュー基準の指定」ツールバー・ボタンをクリックして名前付き基準をテストします。

  6. 「ビュー基準」ダイアログで、次のいずれかのタスクを実行します。

    • プロジェクトのデータ・コントロール構造ファイルに追加した名前付き基準をテストするには、その基準を「選択済」リストに移動して「検索」をクリックします。非定型基準セクションに入力した追加の基準は、フィルタに追加されます。

    • 単一の名前付き基準行から非定型基準属性をテストするには、名前付き基準に必要な値を入力し、「検索」をクリックします。

      たとえば、図3-7は、信用格付けがPOORであるすべての顧客を返すフィルタを示しています。

図3-7 Oracle ADFモデル・テスターの「ビュー基準」ダイアログ

非定型ビュー基準セットが表示されたADFテスター

3.8 Groovy言語サポート

Groovyは、Javaプラットフォーム用のスクリプト言語で、Javaと同様の構文を持ちます。Groovyスクリプト言語では、ドット区切り表記法の採用により、コードの作成が簡素化されていますが、コレクション、文字列およびJavaBeansを操作する構文は引き続きサポートされています。Groovy言語式は実行時に動的にコンパイルされ、実行されます。ADFアプリケーションについて作成したGroovy式は、定義されたBeanのデータ・コントロール構造ファイルに保存されます。

Oracle ADFでは、データ・コントロール・オブジェクトへのアクセスが有用な場合のGroovyスクリプト言語の使用をサポートしています。これには、属性バリデータ、属性のデフォルト値、一時属性値の計算、バインド変数のデフォルト値(名前付き基準のフィルタリングにおける)、およびエラー・メッセージのプレースホルダ(検証ルールにおける)が含まれます。さらに、Oracle ADFには、Groovy式で使用できる組込みキーワードの限定されたセットが用意されています。

特に、Oracle ADFでは、次のタスクの実行でGroovy言語式の使用をサポートしています。

これらのタスクをJDeveloperで実行する場合、タスク固有の式エディタ・ダイアログを使用します。たとえば、一時属性のデフォルト値を作成する場合、属性の「式エディタの編集」ダイアログを使用して、属性の実行時の値を決定する式を入力します。また、同じダイアログで値をいつ計算するかも指定できます(再計算条件と呼ばれます)。式はデザインタイム時に検証できませんが、すべての式エディタで、式の構文を保存する前にテストできます。

Groovy言語の詳細は、次のWebサイトを参照してください。

3.8.1 Groovy式でのADFオブジェクトの参照方法

フレームワークでGroovyスクリプトを使用できるオブジェクトにアクセス可能な、adfという名前のトップレベルのオブジェクトが用意されています。アクセス可能なOracle ADFオブジェクトの構成は次のとおりです。

  • adf.context - ADFContextオブジェクトを参照します。

  • adf.object.dataProvider - 式が適用されるBeanオブジェクトを参照します。アクセス可能な他のメンバー名は、Groovyスクリプトが適用されたコンテキストに由来します。

    • エンティティBean属性およびメソッド: コンテキストはBeanのデータ・コントロール構造ファイルです。このオブジェクトを介して、データ・コントロール構造ファイルで定義されているすべての属性、およびBeanクラスから継承されたすべての属性およびメソッドを参照できます。

    • スクリプト検証ルール: コンテキストは、バリデータが適用されるエンティティBeanにマージされるバリデータ・オブジェクト(JboValidatorContext)です。このコンテキストで使用できるキーワードの詳細は、3.8.2項「Groovy式でのADFメソッドおよび属性の参照方法」を参照してください。

  • adf.error - 検証規則において、検証式で例外または警告を生成できるエラー・ハンドラにアクセスします。

次の式を使用して現在の日付(時間切捨て)または現在の日付と時間を参照できます。

  • adf.currentDate

  • adf.currentDateTime

データの行では、次の組込みの集計関数を使用できます。

  • rowSetAttr.sum(GroovyExpr)

  • rowSetAttr.count(GroovyExpr)

  • rowSetAttr.avg(GroovyExpr)

  • rowSetAttr.min(GroovyExpr)

  • rowSetAttr.max(GroovyExpr)

これらの集計関数は、文字列値引数を使用し、これはGroovy式として解釈され、集計が計算される際に行セットの各行のコンテキストで評価されます。Groovy式は数値(または数字のドメイン)を返す必要があります。

3.8.2 Groovy式でのADFメソッドおよび属性の参照方法

データ・コントロールのメンバー(BeanおよびBeanのデータ・コントロール構造ファイルが定義するメソッドおよび属性を含む)を参照する最も単純な例は、式を適用する属性と同じBeanに存在する属性の参照です。

たとえば、従業員の月給を指定する属性Salを持つBeanの一時属性AnnualSalaryの値を計算するGroovy式を定義できます。

Sal * 12

または、次のような構文を使用して単一のデータ・コントロール構造ファイルの属性を比較する単純な検証ルールをGroovyで作成できます。

PromotionDate > HireDate

Javaを使用すると、同じ比較は次のようになります。

((Date)getAttribute("PromotionDate")).compareTo((Date)getAttribute("HireDate")) > 0

現在のオブジェクトは、thisオブジェクトとしてスクリプトに渡されるため、属性名を使用するだけで現在のオブジェクトの属性を参照できます。たとえば、属性レベルまたはエンティティ・レベルのScript Expression Validatorで、HireDateという名前の属性を参照するには、スクリプトでHireDateを参照するだけですみます。

属性の参照と同様に、式の一部としてメソッドを起動できます。たとえば、次のように、属性のデフォルト値を定義します。

adf.object.dataProvider.getDefaultSalaryForGrade()

メソッド参照は接頭辞adf.object.dataProviderを必要とします。これによって式が適用される属性を定義する同じエンティティを参照できます。

検証ルールでエンティティBeanのメソッドを参照する場合は、objectのかわりにsourceを使用します。

adf.source.dataProvider.getDefaultSalaryForGrade()

objectキーワードは、メソッドが定義されているエンティティBeanではなく、検証ルール・オブジェクトを指すため、バリデータではsource接頭辞を使用する必要があります。

バリデータ・オブジェクトのメンバーを参照できるようにするために(JboValidatorContext)、検証ルール式で次のキーワードを使用できます。

  • newValue: 属性レベルのバリデータで、設定されている属性値にアクセスします。

  • oldValue: 属性レベルのバリデータで、設定されている現在の属性値にアクセスします。

たとえば、次の式を使用して、販売員の給与の動的検証ルール・チェックを指定できます。

if (Job == "SALESMAN")
{
  return newValue < adf.source.dataProvider.getMaxSalaryForGrade(Job)
}
else
return true