2 データ・モデル要素の使用

Oracle Business Rulesデータ・モデル要素は、ファクト・タイプ、関数、グローバル、値セット、デシジョン関数、ディクショナリ・リンクで構成されています。

2.1 データ・モデル要素の使用の概要

Oracle Business Rulesアプリケーションのデータ・モデル部分を実装するには、ディクショナリを作成し、データ・モデル要素を追加します。ディクショナリを完成するには、これらのデータ・モデル要素を使用するか、要素に依存するルールを含むルールセットを1つ以上作成します。

詳細は、次を参照してください。

2.2 ディクショナリとディクショナリ・リンクの概要

ディクショナリは、ファクト、関数、グローバル、値セット、リンク、デシジョン関数およびルールセットに使用するOracle Business Rulesコンテナです。また、アプリケーションのルールセットおよびデータ・モデルが格納されているXMLファイルです。ディクショナリは他のディクショナリにリンクできます。

必要な数のディクショナリを作成できます。ディクショナリには任意の数のルールセットとデータ・モデル要素を含めることができます。1つのデータ・モデルを1つ以上のディクショナリに格納できます。ルールセットで参照されるデータ・モデル要素はすべて、直接的に、またはリンクを通してディクショナリ内で使用可能である必要があります。

ディクショナリは、*.rulesファイルに格納されます。

2.2.1 ディクショナリとディクショナリ・リンクの使用

ディクショナリを作成する場合は、Javaクラスと同じように、名前とパッケージを指定します。データ・モデル要素とルールセットをこのディクショナリの内側に作成できます。また、ディクショナリ・リンクを作成して、ターゲット・ディクショナリの名前とパッケージを指定することで、別のディクショナリのデータ・モデルとルールセットを参照することもできます。各ディクショナリには論理的な組込みディクショナリが格納されています。このディクショナリには、すべてのOracle Business Rulesアプリケーションが必要とする標準の関数とタイプが含まれています。組込みディクショナリは変更できません。

メイン・ディクショナリに加えて、PurchaseItems.rulesなどの、アプリケーション固有のディクショナリを1つ以上作成できます。これらのディクショナリのプロパティは変更できます。

ディクショナリとそのリンク先のディクショナリによって定義された完全なデータ・モデルは、結合データ・モデルと呼ばれています。同じディクショナリに対して複数のリンクを作成できます。この場合、最初のリンク以外はすべて無視されます。

詳細は、「ディクショナリ・リンクに関する必知事項」を参照してください。

2.2.2 ルール・デザイナを使用してSOA層にディクショナリを作成する方法

Oracle JDeveloperでは、複数の方法でOracle Business Rulesのディクショナリを作成できます。SOAアプリケーションで使用するディクショナリを作成できます。この項では、SOAプロジェクトでディクショナリを作成する1つの方法を示します。

典型的なSOAコンポジットのデザイン・パターンでは、各アプリケーションに専用ディクショナリが用意されます。各アプリケーションは自己完結になり、個別にデプロイできるようになります。

場合によっては、複数のアプリケーションが、1つの共通データ・モデルの共通部分にアクセスすることが必要になります。このような場合、ディクショナリ・リンクを使用して、ソース・アプリケーション内にターゲット・アプリケーションのディクショナリを含めます。ソース・アプリケーションはターゲット・アプリケーションのディクショナリをコピーして、ソースにリンクされているコピーの内容を保持します。リンクされた要素を使用する場合、それらはローカル・コンテンツとして表示されます。

SOAアプリケーションの外部で、ビジネス層に使用するディクショナリを作成することもできます。詳細は、「Gradesプロジェクト内でのOracle Business Rulesディクショナリの作成方法」を参照してください。

ルール・デザイナを使用してSOA層にディクショナリを作成するには:

  1. アプリケーション・ナビゲータで、SOAアプリケーションを選択し、SOAプロジェクトを選択または作成します。

  2. 下矢印をクリックし、リストから「新規」、「ギャラリから」を選択します。

  3. 図2-1に示すように、「新規ギャラリ」ダイアログで「SOA層」を開きます。

    図2-1 SOAプロジェクト用のビジネス・ルール・ディクショナリの作成

    図2-1の説明が続きます
    「図2-1 SOAプロジェクト用のビジネス・ルール・ディクショナリの作成」の説明
  4. 「新規ギャラリ」ウィンドウで、「ビジネス・ルール」を選択します。

  5. 「OK」をクリックします。「ビジネス・ルールの作成」ダイアログが表示されます。

  6. 図2-2に示すように、「ビジネス・ルールの作成」ダイアログで次のフィールドに入力します。

    • 「名前」フィールドにディクショナリ名を入力します。たとえば、PurchaseItemsと入力します。

    • 「パッケージ」フィールドに、ディクショナリが属するJavaパッケージを入力します。たとえば、com.exampleと入力します。

    図2-2 「ビジネス・ルールの作成」ダイアログ

    図2-2の説明が続きます
    「図2-2 「ビジネス・ルールの作成」ダイアログ」の説明
  7. 入力および出力を指定するには:

    1. 「追加」ボタンをクリックし、入力を作成するには「入力」を、出力を作成するには「出力」を選択します。

    2. 「タイプ・チューザ」ダイアログで、適切なXSDを開いて適切なタイプを選択します。

    3. 「OK」をクリックして「タイプ・チューザ」ダイアログを閉じます。

    入力および出力を後で追加したり、削除できます。詳細は、デシジョン関数の使用を参照してください。

  8. 「ビジネス・ルールの作成」ダイアログで「OK」をクリックして、デシジョン・コンポーネントおよびOracle Business Rulesディクショナリを作成します。

    図2-3に示すように、Oracle JDeveloperによって、拡張子.rulesが付いたディクショナリがファイル内に作成され、ルール・デザイナが起動します。スクリーン・ショットには、BPMがインストールされていないとSOAでアクセスできない場合がある一部のBPM機能が表示されていることに注意してください。

    図2-3 Oracle Business Rulesディクショナリの新規作成

    図2-3の説明が続きます
    「図2-3 Oracle Business Rulesディクショナリの新規作成」の説明
  9. Oracle JDeveloperによって、composite.xml内にデシジョン・コンポーネントも作成されます。このコンポーネントを表示するには、composite.xmlファイルをダブルクリックします。

2.2.3 ルール・デザイナを使用してビジネス層にディクショナリを作成する方法

ルール・デザイナを使用して、SOAアプリケーションの外部で、ビジネス層に使用するディクショナリを作成できます。SOAなしでOracle Business Rulesを使用する方法については、「ルール対応の非SOA Java EEアプリケーションの作成」を参照してください。

2.2.4 ディクショナリ設定の表示および編集方法

「設定」タブを使用して、ディクショナリ設定を表示および編集できます。「設定」タブには、「一般」、「プリファレンス」および「データ・モデル」 の3つのタブがあります。「プリファレンス」タブを使用して、実行アルゴリズムを選択し、動詞ルールを使用しているときに表示されるフレーズ提案を指定します。「データ・モデル」タブは、グローバル修飾子パターンの指定および動詞ルールに使用されます。パターンには、{member}, {fact}の2つのフラグメントを含める必要があります。たとえば、{fact}の{member}のようにします。

2.2.4.1 ディクショナリ別名を変更する方法

ディクショナリ別名を変更するには:

  1. Oracle JDeveloperで、Oracle Business Rulesディクショナリを開きます。
  2. ルール・デザイナで、「設定」タブをクリックします。
  3. 「ディクショナリ設定」ダイアログの「エイリアス」フィールドで、別名を必要な名前に変更します。図2-4に、このフィールドを示します。

    図2-4 「ディクショナリ設定」、「一般」タブ

    図2-4の説明が続きます
    「図2-4 「ディクショナリ設定」、「一般」タブ」の説明
2.2.4.2 「プリファレンス」タブを編集する方法

「プリファレンス」タブを編集するには:

  1. 図2-5に示すように、「設定」タブで、「プリファレンス」タブをクリックします。
  2. 「ルール実行アルゴリズム」フィールドで、「RETE」または「非RETE」を選択します。

    RETEまたは非RETEアルゴリズムの詳細は、「非Reteアルゴリズムの構成」を参照してください。

  3. 「フレーズ提案」フィールドで、「すべて」、「自動提案」または「ビジネス・フレーズ」を選択します。フレーズ提案は、動詞ルール用です。自動提案のみの表示、ビジネス・フレーズのみの表示または両方の表示を選択できます。

    ビジネス・フレーズの詳細は、「動詞ルールおよびビジネス・フレーズの概要」を参照してください。

    図2-5 「ディクショナリ設定」、「プリファレンス」タブ

    図2-5の説明が続きます
    「図2-5 「ディクショナリ設定」、「プリファレンス」タブ」の説明
2.2.4.3 「データ・モデル」タブを編集する方法

「データ・モデル」タブを編集するには:

  1. 図2-6に示すように、「グローバル修飾子パターン」フィールドで、「バンドル・エディタ」ボタンをクリックし、この変換可能な値のリソース・バンドルを更新します。

    ここで、グローバル修飾子パターンを指定できます。これは動詞ルールで使用されます。パターンには、{member}および{fact}の2つのフラグメントを含める必要があります。フラグメント{member}および{fact}は必須です。

  2. 終了したら、「閉じる」をクリックします。

    図2-6 「ディクショナリ設定」、「データ・モデル」タブ

    図2-6の説明が続きます
    「図2-6 「ディクショナリ設定」、「データ・モデル」タブ」の説明

2.2.5 ディクショナリにリンクする方法

ルール・デザイナの「リンク」ナビゲーション・タブを使用して、同じアプリケーションのディクショナリにリンクできます。別のディクショナリにリンクするには、他のディクショナリが1つ以上使用可能である必要があります。

リソース・ピッカーを使用してディクショナリにリンクするには:

  1. 図2-7に示すように、Rules Designerで「リンク」ナビゲーション・タブをクリックします。

    図2-7 Rules Designerの「リンク」タブ

    図2-7の説明が続きます
    「図2-7 Rules Designerの「リンク」タブ」の説明
  2. 「リンク」領域で、「作成」ボタンをクリックし、リストから「既存のディクショナリの参照」を選択します。「SOAリソース・ブラウザ」ダイアログが表示されます。
  3. 図2-8に示すように、「SOAリソース・ブラウザ」ダイアログで、リンクするディクショナリにナビゲートして選択します。
  4. 「OK」をクリックします。

ADFビジネス・コンポーネントのファクトを使用する場合は、デシジョン・ポイント・ディクショナリへのリンクを作成する必要があります。詳細は、Oracle Business RulesとADFビジネス・コンポーネントの使用を参照してください。

デシジョン・ポイント・ディクショナリを追加するには、ルール・デザイナで「リンク」ナビゲーション・タブをクリックします。「リンク」領域で、「作成」をクリックし、リストから「デシジョン・ポイント・ディクショナリ」を選択します。この操作には少し時間がかかります。デシジョン・ポイント・ディクショナリがロードされるまで待機する必要があります。

2.2.6 リンク先ディレクトリの更新方法

別のディクショナリ(たとえば、Shared_rules)にリンクしているディクショナリ(たとえば、Project_rules1)がある場合、どちらのディクショナリも変更されていることを確認する必要があります。たとえば、Shared_rulesディクショナリを変更した場合、Project_rules1でのこの変更を表示するには、Project_rules1ディクショナリを更新するか、ルール・デザイナを閉じて、再度開きます。リンクを定義しているディクショナリからリンク先ディクショナリ内の変更のみを表示でき、その逆は表示できないことに注意してください。

リンク先ディクショナリを更新するには:

  1. これらのサンプル・ディクショナリ名を使用し、「保存」ボタンをクリックしてShared_rulesディクショナリを保存します。
  2. Project_rules1ディクショナリを選択します。
  3. 「リンク」ナビゲーション・タブを選択します。
  4. 「ディクショナリ・キャッシュ」ボタンをクリックします。
  5. 「ディクショナリ・ファインダ・キャッシュ」ダイアログで、適切なリンク先ディクショナリを選択します。
  6. 「クリア」ボタンをクリックします。
  7. 「ディクショナリ・ファインダ・キャッシュ」ダイアログで、「閉じる」をクリックします。
  8. 「検証」ボタンをクリックします。

2.2.7 ディクショナリ・リンクに関する必知事項

他のディクショナリへのリンクを含むディクショナリを使用すると、次の場合に役立ちます。

  • データモデルの共有。プロジェクト内のデータ・モデル部分を共有します。別のプロジェクトのディクショナリにリンクすると、それがローカル・プロジェクトにコピーされます。

    たとえば、Oracle Business Rules関数をいくつか共有したいプロジェクトについて考えてみます。その関数を格納するディクショナリを作成し、DictCommonという名前を付けることができます。次に、DictApp1およびDictApp2という2つのディクショナリを作成し、両方ともDictCommonにリンクします。これで両方とも同じOracle Business Rules関数を使用できます。いずれかの関数を変更する場合は、DictCommon内のバージョンを変更するだけです。これで、次にDictApp1またはDictApp2からRL Languageを生成するときには、どちらのディクショナリも更新後の関数を使用します。

Oracle Business Rulesでは、完全修飾されたディクショナリ名はDictionaryFQNと呼ばれ、次の2つの要素で構成されています。

  • ディクショナリ・パッケージ: パッケージ名

  • ディクショナリ名: ディクショナリ名

ディクショナリは、DictionaryFQNおよび別名を使用してリンク先ディクショナリを参照します。Oracle Business Rulesでは、DictionaryFQNを使用してリンク先ディクショナリが検索されます。

結合ディクショナリに関する次のネーミング制約は次のとおりです。

  • パッケージとディクショナリ名を含む個別の完全ディクショナリ名を使用する必要があります。また、ディクショナリ別名も個別にする必要があります。

  • たとえば、関数、Oracle RLクラス、値セットなど、特定の種類のデータ・モデル定義の別名は、ディクショナリ内で一意である必要があります。

  • 直接含んでいるディクショナリの別名で定義を修飾できます。最上位および組込みディクショナリ内の定義を修飾する必要はありません。別のディクショナリ内の定義は修飾する必要があり、この修飾はディクショナリ・リンクの「接頭辞リンク名」プロパティによって制御されます。

  • ルールセット名はディクショナリ内で一意にする必要があります。ルールセットのRL Languageを生成する場合、ディクショナリの別名は生成名の一部にはなりません。たとえば、dict1という名前のディクショナリをdict2にリンクして結合ディクショナリを作成し、dict1にはrule_1を含むruleset_1を格納して、dict2にもrule_2を含むruleset_1を格納した場合、結合ディクショナリでは、2つのルール、rule_1とrule_2の両方が、同じルールセット(ruleset_1)内に存在することになります。

  • すべてのルールおよびデシジョン表には、ルールセット内で一意の名前が必要です。

    たとえば、ディクショナリd1とディクショナリd2を含む結合ディクショナリ内で、ディクショナリd1にルールrule_1を含むルールセットRuleset_1があるとします。ディクショナリd2にもrule_2を含むルールセットRuleset_1がある場合、Oracle Business Rulesによってリンク済結合ディクショナリからRL Languageが生成されると、両方のルールrule_1およびrule_2が単一のルールセットRuleset_1に含まれます。この命名規則に違反し、結合ディクショナリ内の単一ルールセットのルールに個別の名前を使用しなかった場合は、ルール・デザイナによって、次のような検証警告が表示されます。

    RUL-05920: Rule Set Ruleset_1 has two Rules with name rule_1
    

詳細は、「Oracle Business Rulesのファイルと制限事項」を参照してください。

2.2.8 ディクショナリ・リンクおよびディクショナリ・コピーに関する必知事項

リソース・ピッカーを使用してディクショナリ・リンクを作成すると、ディクショナリはソース・プロジェクト(リンク元のディクショナリが常駐しているプロジェクト)にコピーされます。つまり、このタイプのリンクでは、ディクショナリのローカル・コピーがプロジェクトに作成されます。これは、ターゲット・ディクショナリの場所に関係なく、元のターゲットへのリンクではありません。つまり、リソース・ピッカーを使用してリンクを作成した場合、ルール・デザイナではリンクにコピー操作が使用されます。

SOAおよび非SOAルール・ディクショナリ内のりリンク先ディクショナリについて、次のことに注意してください。

  • SOAアプリケーション

    1. 同じプロジェクト内のディクショナリ、soa/sharedにシードされているシステム・ディクショナリ、またはクラスパスで使用可能になっているディクショナリのみをリンク先ディクショナリとして使用できます。

    2. 複数のコンポジット内のルールにわたって同じリンク先ディクショナリを使用する必要がある場合は、そのリンク先ディクショナリをクラスパスで参照する必要があります。

  • Non_SOAアプリケーション

    1. リンク先ディクショナリは同じアプリケーション内、MDS内の共有場所またはクラスパス内に配置できます。それらのディクショナリを見つけ、解決するには、適切なディクショナリ・ファインダを用意する必要があります。

2.2.9 デプロイされたディクショナリへのディクショナリ・リンクに関する必知事項

ルール・デザイナを使用している場合、デプロイされたコンポジット・アプリケーションおよび関連するOracle Business RulesディクショナリをMDS接続で参照できます。ただし、MDSにデプロイされたディクショナリにディクショナリ・リンクを作成することはできません。

2.2.10 BPELでのビジネス・ルールの入力および出力に関する必知事項

デシジョン関数の入力は、デシジョン関数の初期アクションに対する変数として使用できます。入力がファクトである場合、そのファクトは作業メモリー内にアサートされるので、ルールは、デシジョン関数の入力名ではなく、タイプおよびプロパティの値に基づいてファクトと一致する必要があります。たとえば、同じタイプに2つの入力input1およびinput2が存在する場合、ルールはこれらの入力をタイプおよびプロパティの値に基づいて識別するのであって、異なる2つの名前によって識別するわけではありません。入力が参照できないファクト(たとえば、文字列や整数)の場合、<decision function name>という名前のラッパー・タイプが作成され、ルールはこのタイプと一致する必要があります。

2.2.11 2つ以上のディクショナリを比較またはマージする方法

「差異ディクショナリ」機能を使用すると、ディクショナリの最新バージョンと任意の旧バージョンとの差異を確認し、比較したバージョン以降の変更をロールバックできます。最新バージョンから見た差異が確認されます。

「ディクショナリのマージ」機能を使用すると、ベース・バージョンと最大3つの変更バージョンとの差異を確認し、それらの差異を解決またはマージできます。変更されたバージョンから見た差異が確認されます。

「差異ディクショナリ」と「ディクショナリのマージ」はどちらも差異を表示して解決できますが、これらの2つの機能の基本的な違いは、複数のディクショナリをマージできますが、複数のディクショナリの差異をとることはできない点です。

「ディクショナリのマージ」および「差異ディクショナリ」オプションは、図2-9に示すようにルール・デザイナから使用できます。

図2-9 ディクショナリの差異/マージ・ボタン

図2-9の説明が続きます
「図2-9 ディクショナリの差異/マージ・ボタン」の説明

Oracle JDeveloperでのデザインタイムには、最大3つまでの異なるディクショナリを比較して、4つ目のディクショナリにマージできます。実行時には、SOAコンポーザを使用することで、限定された比較を実行できます。詳細は、「実行時のOracle Business RulesとのOracle SOAコンポーザの使用方法」を参照してください。

ルール・デザイナでは、ベース・バージョン(編集中のもの)を2つのそれぞれ個別に変更されたバージョン(ベース・バージョンに対して相対的)と比較して、選択した変更をベース・バージョンにマージできます(新規バージョンとしての保存が必要)。

警告:

ディクショナリは差異またはマージ・モードになっているときは読取り専用になるため、これらの機能のいずれかの実行を決定する前に、すべての変更を解決する準備をする必要があります。

ディクショナリのマージは注意深く実行してください。関与する様々なバージョンを特定し、管理する必要があります(ベース、バージョン1、バージョン2および結果)。

2.2.11.1 ディクショナリ間の差異を調べる方法

ディクショナリを比較する場合は、最初にルール・デザイナで新しいディクショナリを開き、「差異ディクショナリ」ダイアログを使用して、比較する古いディクショナリを選択します。新しい方のディクショナリに存在しないものはすべて、新しいバージョンからの削除としてフラグが指定されます。

ディクショナリ間の差異を調べるには:

  1. ルール・デザイナで、新しいディクショナリを開いたまま、「差異ディクショナリ」をクリックします。
  2. 「差異ディクショナリ」ダイアログで、「参照」をクリックし、「マージするディクショナリの選択」ダイアログを開き、比較するディクショナリを見つけます。
  3. 「OK」をクリックします。
  4. 短いバージョン名または番号を入力します。
  5. 終了したら、「OK」をクリックします。
  6. 図2-10に示すように、2つのディクショナリ間のすべての差異に変更アイコンのフラグが付きます。

    図2-10 表示される変更差異

    図2-10の説明が続きます
    「図2-10 表示される変更差異」の説明

    変更アイコンは、左側のすべてのタブに対して、および各タブ内の特定のアーティファクトに対して表示されます。

  7. 各タブをクリックし、「差異の受入れ」または「差異の拒否」を決定します。または、ツールバーで「すべてを受入れ」または「すべて却下」を選択できます。

    適切な変更アイコンをクリックすることで、ディクショナリの任意のレベルで差異の受入れまたは拒否ができます。たとえば、Rule1を古いバージョンに戻すが、新しいディクショナリ内のそれ以外のものはすべて保持するには、最初にRule1にドリルダウンして「差異の拒否」を選択し、ツールバーから「すべてを受入れ」を選択します。差異モードでは、受入れによって新しいバージョンが保持され、拒否によって古いバージョンに戻ることに注意してください。

差異ディクショナリ・オプションを表示できます。この選択項目は、ディクショナリを比較した後に使用可能になります。図2-10に示すように、「差異ディクショナリの表示」オプションには、比較されるディクショナリに関する情報がリストされます。

2.2.11.2 ディクショナリのマージ方法

複数のディクショナリのマージが必要な場合は、まずルール・デザイナで古い方のディクショナリを開いてから、「ディクショナリのマージ」ダイアログを使用して、マージする新しいディクショナリを選択します。古いディクショナリに存在しないものはすべて、最新バージョンでの追加としてフラグが指定されます。

これは、複数のディクショナリに対して機能するため、最初に最も古いものを使用し、次に1つ以上の新しいものを使用して、最後にその結果を最も新しいものに保存します。

ディクショナリのマージは、注意深く行ってください。すべての差異が解決されるまで一般的な編集は無効化されているため、場合によっては、競合している値を暫定的に受け入れるか拒否し、残りの差異を処理した後、編集を終了するために戻ることが必要になります。

ディクショナリをマージするには:

  1. ルール・デザイナで、最も古いディクショナリを開いたまま、「ディクショナリのマージ」をクリックします。
  2. 「ディクショナリのマージ」ダイアログで、「参照」をクリックし、「マージするディクショナリの選択」ダイアログを開き、比較するディクショナリを見つけます。
  3. 「OK」をクリックします。
  4. 短いバージョン名または番号を入力します。
  5. 終了したら、「OK」をクリックします。
  6. 図2-11に示すように、ルール・デザイナではすべての変更にフラグが付きます。「差異のマージ」ダイアログを使用して「受入れ」または「拒否」を行うか、何もアクションを行いません。そのタブで「差異の受入れ」または「差異の拒否」を使用することもできます。または、ツールバーで「すべてを受入れ」または「すべて却下」を行うこともできます。

    図2-11 「差異のマージ」ダイアログ

    図2-11の説明が続きます
    「図2-11 「差異のマージ」ダイアログ」の説明

2.3 Oracle Business Rulesグローバルの使用

ルール・デザイナを使用してOracle Business Rulesグローバルを追加できます。

Oracle Business Rulesで使用するグローバルは、Javaにおけるパブリックな静的変数に類似しています。グローバルは、定数または変更可能に指定できます。

グローバルの定義を使用すると、複数のルールと関数で情報を共有できます。たとえば、複数のルールで10%割引を使用する場合は、グローバルGold Discountを作成し、このグローバルを使用してすべてのルールに適切な割引を適用できます。

グローバルの定義を使用すると、プログラムをモジュール化してメンテナンスを容易にできます。

2.3.1 Oracle Business Rulesグローバルの追加方法

ルール・デザイナを使用して、グローバルを追加できます。

グローバルを追加するには:

  1. Rules Designerで、「グローバル」ナビゲーション・タブを選択します。
  2. グローバル表で「作成」ボタンをクリックします。これにより、グローバルが追加され、図2-12に示すように、「グローバルの編集 -」ダイアログが表示されます。

    図2-12 ルール・デザイナでのグローバルの追加

    図2-12の説明が続きます
    「図2-12 ルール・デザイナでのグローバルの追加」の説明
  3. 「名前」フィールドに名前を入力するか、またはデフォルト値を使用します。
  4. 「タイプ」フィールドで、リストからタイプを選択します。
  5. 「値セット」フィールドで、リストから値を選択することもできます。
  6. 「値」フィールドで、値を入力するか、リストから値を選択するか、「式ビルダー」ボタンをクリックして式を入力します。

    詳細は、「式ビルダーの概要」を参照してください。

  7. グローバルが定数である場合は、「定数」チェック・ボックスを選択します。このオプションを選択することは、グローバルが定数値であることを示します。
  8. グローバルがファイナルでない場合、「ファイナル」チェック・ボックスをクリアします。このオプションをクリアすることは、Assignアクションなどで、グローバルを変更可能にすることを意味します。

2.3.2 Oracle Business Rulesグローバルの編集方法

ルール・デザイナを使用して、グローバルを編集できます。

グローバルを編集するには:

  1. Rules Designerで、「グローバル」ナビゲーション・タブを選択します。
  2. 「編集」ボタンをクリックし、「グローバルの編集 - グローバル名」ウィンドウを開きます。このウィンドウで、グローバルを編集し、「ファイナル」フィールドや「定数」フィールドなどのフィールド値を変更できます。

2.3.3 「ファイナル」オプションと「定数」オプションに関する必知事項

「グローバルの編集」ダイアログには、グローバルに対して選択可能な「定数」チェック・ボックスと「ファイナル」チェック・ボックスが表示されます。

グローバルを使用する場合は、次のことに注意してください。

  • 「ファイナル」をクリアすることは、Assignアクションなどで、グローバルを変更可能にすることを意味します。

  • 「ファイナル」を選択することは、ルール内のテストでグローバルを使用できることを示します(ファイナルでないグローバルはルール内のテストで使用できません)。

  • 「ファイナル」を選択することは、グローバルが実行時に1度初期化され、変更できないことを示します。

「グローバルの編集 -」ダイアログで「定数」オプションを選択することは、グローバルが定数であることを示します。Oracle Business Rulesでは、定数は、文字列や数値リテラル、値が定数であるファイナル・グローバル、または定数と+-*および/を含む単純な式です。

グローバルに対して「定数」オプションを選択すると、次の3つの影響があります。

  • 文字列リテラルを二重引用符で囲む必要がありません。

  • 式の値の選択リストに定数のみが表示されます。

  • 式の値が有効な定数である必要があります。

「定数」オプションは、必要に応じて選択できます。値セット値、値セット範囲エンドポイント、およびルールセット・フィルタ値は、常に定数であることに注意してください。

2.4 デシジョン関数の使用

データ・モデルにはデシジョン関数が含まれています。

デシジョン関数の使用については、「デシジョン関数の概要」を参照してください。

2.5 Oracle Business Rules関数の概要

Oracle Business Rulesには、ルール作成時の複雑さを隠すための関数が用意されています。Oracle Business Rulesでは、組込み関数またはユーザー定義関数をルールおよびデシジョン表の条件およびアクションに使用できます。

Oracle Business Rulesでは、Javaメソッドに類似する方法で関数を定義しますが、Oracle Business Rules関数はクラスに属しません。Javaアプリケーション・オブジェクト・モデルはOracle Business Rules関数を使用して拡張できるため、ユーザーは、元のJavaアプリケーション・コードを変更せずに、複数の操作をルールで実行できます。

Oracle Business Rules関数は、ルールまたはデシジョン表に関連付けられている条件またはアクションに使用できます。

また、Oracle Business Rules関数定義を使用して、同じまたは類似した式を複数のルール間で共有し、結果をアプリケーションに戻すこともできます。

Oracle Business Rules関数には、次の項目が含まれています。

  • 名前: Oracle Business Rules関数名。

  • 戻り型: Oracle Business Rules関数の戻り型、または戻り値がない場合はvoid。

  • 値セット: Oracle Business Rules関数に関連付ける値セット。これはオプションです。

  • 引数: 関数の引数。各関数の引数には名前、型およびオプションの値セットがあります。

  • 関数本体: 事前定義済アクションを含む関数本体。事前定義済アクションを使用すると、ルール・デザイナではOracle Business Rules関数の書式が適切で検証可能であることが保証されます。

ルール・デザイナ内で関数を使用してルールをテストすることもできます。詳細は、「ルール関数を使用したデシジョン関数のテスト」を参照してください。

2.5.1 Oracle Business Rules関数の追加方法

ルール・デザイナを使用して、Oracle Business Rules関数を追加します。

Oracle Business Rules関数を追加するには:

  1. Rules Designerで、「関数」ナビゲーション・タブを選択します。
  2. 「作成」ボタンを選択します。
  3. 「名前」フィールドに関数名を入力するか、デフォルト名を使用します。
  4. 「戻り型」のリストから戻り型を選択します。たとえば、「void」を選択します。
  5. 「値セット」フィールドのリストから、関数の戻り型に関連付ける値セットを選択することもできます。
  6. 必要に応じて、「説明」フィールドに説明を入力します。
  7. 「引数」表で「追加」をクリックし、関数の引数を1つ以上追加します。
  8. 引数ごとに、「型」フィールドのリストから型を選択します。
  9. 「値セット」フィールドの各引数について、値セットの制約によって指定されているとおりに引数値を制限するには、リストから値セットを選択します。
  10. 「本体」領域に、関数本体のアクションと引数を入力します。assertcallmodifyの範囲の必要なアクションを、ifelseelseifwhileforif (advanced)while (advanced)のような条件アクションにも追加できます。図2-13に示す例を参照してください。

    図2-13 Oracle Business Rules関数の追加

    図2-13の説明が続きます
    「図2-13 Oracle Business Rules関数の追加」の説明

2.6 Oracle Business Ruleリソースのローカライズ

ルール・リソースの名前、別名、説明をローカライズできます。これにより、ワークスペースとSOAコンポーザでリソースをうまく制御できるようになります。値セット、グローバル、ルールセット、ルールなど、ほとんどのリソースをローカライズできます。動詞ルールでは、ビジネス・フレーズの値もローカライズできます。

これらのリソースを作成したら、「変換」タブでロケール固有の情報を追加できます。各ロケールは個別のリソース・バンドルに保存されています。

ノート:

リソース・バンドルを手動で編集して、ローカライズされた文字列を追加したり編集したりすることはできません。リソース・バンドルを編集するには、JDeveloper、BP ComposerまたはSOAコンポーザのルール・デザイナの「変換」タブを使用する必要があります。

2.6.1 Oracle Business Rulesでのリソースのローカライズ方法

JDeveloperのルール・デザイナを使用して、ビジネス・ルールのリソースをローカライズできます。

ビジネス・ルールのリソースをローカライズするには:

  1. Rules Designerで、「変換」タブを選択します。
  2. 「リソース・バンドルの作成」ボタンをクリックします。

    「リソース・バンドルの作成」画面が表示されます。

  3. 図2-14のように、「ロケール」をリストから選択します。

    追加した各ロケールは、「リソース・バンドルの変換」表の列として表示されます。ビジネス・ルールの各リソースは、この表の行として表示されます。各ロケールは個別のリソース・バンドルとして保存されます。

    図2-14 新しいロケールの追加

    図2-14の説明が続きます
    「図2-14 新しいロケールの追加」の説明
  4. リソースおよびロケールに対応する表のセルをクリックして、ローカライズされたテキストを入力します。

    ノート:

    変換された値は、現在のロケールでのみ検証されます。検証は、使用されていない他のロケールでの変換に対しては行われません。

  5. 「変換の移入」およびラジオ・ボタンを選択し、未変換テキストまたは別のロケールから新しいバンドルの変換を移入します。
  6. 「OK」をクリックします。