この章では、ファクトと呼ばれるOracle Business Rulesデータ・モデル要素について説明します。ファクトはルールの判断対象となるオブジェクトです。ファクト・プロパティ値のグループ化を定義する、バケット・セットと呼ばれるもう1つの要素についても説明します。
この章の項目は、次のとおりです。
Rules Designerでは、データ・モデルの一部であるファクト・タイプを使用してOracle Business Rulesにビジネス・オブジェクトおよびそのメソッドを認識させます。
ファクト・タイプとバケット・セットはルールを作成する前に作成できます。
Rules Designerでは、次の種類のファクトを使用できます。
XMLファクト: XMLファクトは、XMLスキーマを指定して既存のソースからインポートされます。インポートしたXMLファクトに別名を追加するか、XMLファクトをRLファクトと併用し、ビジネス・ニーズに応じてデータ・モデルを変更できます。
詳細は、第3.2項「XMLファクトの使用」を参照してください。
Javaファクト: Javaファクトは既存のソースからインポートされます。Javaファクトに別名を追加するか、RLファクトと併用し、ビジネス・ニーズをデータ・モデルのターゲットにすることができます。また、Javaファクトは、作成するルールまたはデシジョン表で使用する関連Javaクラスのインポートにも使用されます。
詳細は、第3.3項「Javaファクトの使用」を参照してください。
RLファクト: RLファクトは、ユーザーが直接作成でき、外部ソースが存在しないタイプの唯一のファクトです。他のすべてのタイプのOracle Business Rulesファクトはインポートされます。RLファクトは、リレーショナル・データベースの行またはメソッドがないJavaBeanと同じです。RLファクトには、データ・モデルで使用可能なタイプ(RLファクト、Javaファクトまたはプリミティブ・タイプ)のプロパティのリストが含まれています。RLファクトを使用すると、動的な仮想型を提供することでJavaアプリケーションのオブジェクト・モデルを拡張できます。
詳細は、第3.4項「RLファクトの使用」を参照してください。
ADF Business Componentsファクト: ADF Business Componentsファクトを使用すると、ルールおよびデシジョン表でADF Business Componentsをファクトとして使用できます。ADF Business Componentsのファクトを使用することで、ルールのベースとして必要なビジネス・オブジェクトを表すビュー・オブジェクトのグラフをアサートし、Oracle Business Rulesにビュー・オブジェクトのグラフ内で各種の関連ビュー・オブジェクト間の関係管理に伴う複雑な処理を実行させることができます。
詳細は、第3.5項「ADF Business Componentsファクトの使用」を参照してください。
ルール対応アプリケーションのビジネス・オブジェクトを調査するルールを作成したり、結果をアプリケーションに返す場合は、通常、Javaファクト・タイプとXMLファクト・タイプを使用します。RL Languageファクト・タイプ定義を使用して、Rules Engineで他のルールを起動できる中間ファクトを作成します。ADF Business Componentsファクト・タイプを使用すると、ルールおよびデシジョン表でADF Business Componentsをファクトとして使用できます
Oracle Business Rulesでは、ルールに対して実行できるファクトは、アサートされたデータ・オブジェクトです。各オブジェクト・インスタンスは単一のファクトに対応しています。オブジェクトが(変更済かどうかに関係なく)再アサートされると、Rules Engineが更新され、そのオブジェクトの新しい状態が反映されます。オブジェクトの再アサートによるファクトの作成はありません。特定のファクト・タイプに複数のファクトを指定するには、オブジェクト・インスタンスを個別にアサートする必要があります。
バケット・セットを作成し、指定したタイプの値リストまたは値範囲を定義できます。バケットセットを作成した後、バケットセットを一致するタイプのビジネス条件に関連付けることができます。バケット・セットがビジネス条件に関連付けられている場合、Oracle Business Rulesでは、ルールまたはデシジョン表でビジネス条件の値に対する制約として定義したバケットが使用されます。
詳細は、次を参照してください。
XMLファクト・タイプを使用すると、ルールを記述する際にXMLスキーマのタイプ、要素および属性を使用できます。XMLスキーマに定義されている要素およびタイプをデータ・モデルにインポートし、Javaファクト・タイプやRLファクト・タイプの場合と同様にルールおよびデシジョン表の作成に使用できます。XMLスキーマ定義およびXMLファクト・タイプの間のマッピングには、Java Architecture for XML Binding(JAXB)が使用されます。Oracle Business Rulesでは、デフォルトでOracle Application Serverに同梱されているJAXB 2.0を使用します。JSR-222に定義されているJAXBは、XMLスキーマ定義内のタイプ、名前、規則および、Javaで使用可能なタイプ、許可される名前、規則の間のマッピングを提供します。たとえば、xsd:integer
タイプのorder-id
という要素は、BigInteger
型のorderID
というJava Beanプロパティにマップされます(xsd:int
タイプはJavaのint
にマップされます)。
したがって、Oracle Business Rulesでは、アプリケーションに関連付けられたデータを含むXML文書があり、そのXML文書に関連付けられたスキーマがある場合、Rules Designerを使用し、XMLスキーマから指定する要素に基づいてルールを定義できます。
XMLファクト・タイプを作成する手順は、次のとおりです。
XMLスキーマを定義または取得します。
Rules Designerを使用して、XMLスキーマをディクショナリにインポートします。この手順では、JAXBコンパイラを使用してXMLスキーマからJavaクラスを生成します。XMLスキーマのコンパイル後に、スキーマから必要な要素を選択し、データ・モデル内でXMLファクトを追加し、生成されたJAXBクラスをデータ・モデルにインポートします。これらの手順の詳細は、第3.2.1項「XMLスキーマをインポートしてXMLファクトを追加する方法」を参照してください。
データ・モデルに追加したXMLファクトに基づいて、ルールを記述するか、デシジョン表を作成します。詳細は、第4.3項「ルールの使用」および第5.2項「デシジョン表の作成」を参照してください。
XMLスキーマに定義されている要素およびタイプをデータ・モデルにインポートし、タイプのインスタンスをルールで作成、アサート、変更および取消しできます。ほとんどのXML文書では階層情報が記述されており、各要素にはサブ要素が含まれています。通常、ユーザーはこの階層内の複数の要素および要素間の階層関係に基づいて個々のルールを記述します。Oracle Business Rulesでは、ファクトをアサートする際のデフォルト動作は単一のファクト・インスタンスをアサートすることのみで、サブ要素の階層内で参照している可能性のある子オブジェクトはアサートしません。ルールまたはデシジョン表の作成時には、通常、ルート要素への参照に基づいて要素の階層全体をアサートするようにします。Oracle Business Rulesには、階層を再帰的にアサートできるように
assertTree
アクション・タイプが用意されています。詳細は、第4.8項「ツリー・モードのルールの使用」を参照してください。
データ・モデルでXMLスキーマ定義を使用する前に、XMLスキーマをインポートする必要があります。この手順では、JAXBクラスを生成し、生成されたクラスおよびパッケージをRules Designerで参照可能なXMLスキーマに関連付けます。
XMLスキーマをインポートしてXMLファクトを追加する手順は、次のとおりです。
Rules Designerで、「ファクト」ナビゲーション・タブを選択します。
図3-1に示すように、「ファクト」ナビゲーション・タブで、「XMLファクト」タブを選択します。
「XMLファクト」タブで「作成」をクリックします。「XMLファクトの作成」ダイアログが表示されます。
「XMLファクトの作成」ダイアログの「ソース・スキーマ」領域で、「ソース・スキーマの追加」をクリックします。図3-2に示すように、「ソース・スキーマの追加」ダイアログが表示されます。
「ソース・スキーマの追加」ダイアログでは、次の操作を実行します。
「スキーマの場所」フィールドで、インポートするXMLスキーマの場所を入力するか、「参照」をクリックしてXMLスキーマを検索します。インポート中に、ファイルがプロジェクトにコピーされます。
注意: 通常、XMLスキーマ(xsd)ファイルはxsdフォルダ内にあります。作成したXMLスキーマはSOAコンテンツ内のxsdフォルダ内に保存する必要があるからです。 |
「JAXBクラス・ディレクトリ」フィールドで、デフォルト・パスを受け入れるか、またはRules DesignerでJAXB生成のJavaソースおよびクラス・ファイルを格納するディレクトリを入力します。
「ターゲット・パッケージ」フィールドで、ターゲット・パッケージ名を入力するか、またはこのフィールドを空白にしておきます。このフィールドを空白にした場合、JAXBクラス・パッケージ名は、JAXB XMLおよびJavaのデフォルト・マッピング・ルールを使用してXMLスキーマのXMLターゲット・ネームスペースから生成されるか、注釈を使用して明示的に定義されたパッケージ名から生成されるか、ネームスペースまたは注釈が定義されていない場合は「generated
」になります。スキーマのネームスペースを使用することをお薦めします。
たとえば、ネームスペースhttp://www.oracle.com/as11/rules/demo
は、com.oracle.as11.rules.demo
にマップされます。
「OK」をクリックします。
Rules Designerでスキーマが処理されJAXBがコンパイルされるため、スキーマのサイズによっては、この手順の完了に時間がかかる場合があります。この手順が完了すると、図3-3に示すように、Rules Designerの「XMLファクトの作成」ダイアログは、「ターゲット・クラス」領域が更新され、JAXBクラスが含まれた状態で表示されます。
「XMLファクトの作成」ダイアログの「ターゲット・クラス」領域で、XMLファクト・タイプとしてインポートするクラスを選択します。
「OK」をクリックします。
XMLファクトを使用するには、Rules Designerで「XMLファクトの編集 -」ダイアログを開きます。
XMLファクトを表示して編集する手順は、次のとおりです。
Rules Designerで、「ファクト」ナビゲーション・タブを選択します。
「ファクト」ナビゲーション・タブで、「XMLファクト」タブを選択します。
「XMLファクト」表で、編集するXMLファクトのアイコンをダブルクリックします。図3-4に示すように、「XMLファクトの編集 -」ダイアログが表示されます。
「XMLファクトの編集 -」ダイアログには、表3-1に示すフィールドがあります。
表3-1 XMLファクト: 「XMLファクトの編集 -」ダイアログのフィールド
プロジェクト内でXMLスキーマが変更された場合、Oracle Business Rulesディクショナリにスキーマを再インポートする必要があります。スキーマを再インポートすると、Oracle Business Rulesでは、JAXBを使用してすべてのXMLファクト・タイプに対してソース・スキーマをすべて再コンパイルし、更新されたXMLスキーマ定義を使用してXMLファクト・タイプ定義を更新します。スキーマまたはクラスを変更し、実行時に変更後のスキーマまたはクラスを使用する場合、ファクトを再インポートする必要があります。
注意: スキーマの再インポート時に、XMLファクトの変更基準となるXMLスキーマが変更された場合、ファクトが更新され、ベース・ディレクトリにインポートされます。リンクされたディクショナリ内のファクトを使用する場合は、変更されたスキーマのXMLファクトを、リンクされたディクショナリではなく、ベース・ディクショナリからリロードする必要があります。 |
XMLファクトを再インポートする手順は、次のとおりです。
Rules Designerで、「ファクト」ナビゲーション・タブを選択します。
「ファクト」ナビゲーション・タブで、「XMLファクト」タブを選択します。
「XMLファクト」ページで、「更新されたスキーマからのXMLファクトのリロード」アイコンをクリックします。
再インポート操作が完了した後、互換性のない変更(更新されたスキーマに、ルールで参照されているプロパティを削除したという変更が含まれているなど)によって発生する検証警告があれば、訂正する必要があります。
ルールを記述する場合、assertTree
アクション・タイプは拡張モードでのみ使用可能です。assertTree
を使用したルールの作成の詳細は、第4.8項「ツリー・モードのルールの使用」を参照してください。
デシジョン関数を作成する場合、入力タイプのtree
オプションでは、作業メモリーに入力ファクトを入れるためにassert
を使用するかassertTree
を使用するかを定義します。assertTree
の詳細は、第4.8項「ツリー・モードのルールの使用」を参照してください。
XMLスキーマにrestriction
定義が含まれていると、要素内での使用に有効なタイプを制限できます。restrictionの一般的な用途は、例3-1に示すように、要素に使用できる文字列の列挙を定義することです。
例3-1 XMLスキーマのrestrictionの例
<xs:simpleType name="status-type"> <xs:restriction base="xs:string"> <xs:enumeration value="manual"/> <xs:enumeration value="approved"/> <xs:enumeration value="rejected"/> </xs:restriction> </xs:simpleType>
Oracle JAXB 2.0では、restrictionがJava列挙タイプにマップされます。Rules Designerを使用してJava列挙タイプまたは要素をXML制限とともにインポートすると、列挙を表す静的な最終フィールドを式に使用できます。また、Oracle Business Rulesでは列挙ごとに、すべての列挙値およびNULLを含むバケット・セットが作成されます。バケット・セットの詳細は、第3.6項「バケット・セットの使用」を参照してください。
Oracle Application Serverには、デフォルト・バージョンのJAXBバインド・コンパイラが同梱されています。異なるJAXBバインド・コンパイラも使用できます。ただし、異なるJAXBバインド・コンパイラを使用する場合は、XMLスキーマ処理を手動で実行し、生成されたJavaパッケージおよびクラスをJavaファクトとしてデータ・モデルにインポートする必要があります。
JAXBの詳細は、次を参照してください。
スキーマまたはクラスを変更し、実行時に変更後のスキーマまたはクラスを使用する場合、ファクトを再インポートする必要があります。互換性のない変更(ルールで参照されているプロパティの削除など)によって発生する検証警告があれば、訂正する必要があります。詳細は、第3.2.3項「スキーマが更新されたXMLファクトをリロードする方法」を参照してください。
ほとんどのユーザーは、ObjectFactoryを使用またはインポートする必要はありません。ObjectFactoryをインポートして使用する必要がある場合は、インポートする各XMLスキーマに異なるパッケージ名を使用しないと、異なるObjectFactoryクラスが競合します。
minOccurs="0"
およびnillable="true"
を含む要素のあるXMLスキーマの使用では、JAXBでの特別な処理が発生します。詳細は、第C.12項「xsd:string入力済要素を持つXMLスキーマをタイプJAXBElementとしてインポートするのはなぜですか。」を参照してください。
JAXBのデフォルト要素のネーミング規則では、XMLスキーマ要素名にアンダースコア文字を含むXMLスキーマのコンパイルに失敗します。詳細は、第D.7項「アンダースコアを持つXMLスキーマでJAXBコンパイルに失敗するのはなぜですか。」を参照してください。
デシジョン・サービスの入力のタイプおよび名前には、特定の制限があります。詳細は、第D.8項「デシジョン・サービスの入力と出力の要素タイプはどのように制限されますか。」を参照してください。
組込みディクショナリには、JavaラッパーのInteger
、Long
、Short
、Float
、Double
、BigDecimal
、BigInteger
に対するサポートが含まれています。これらのタイプは、XMLファクト・タイプに表示されます。
Rules Designerでは、Javaファクトをインポートすると、JavaクラスおよびそのメソッドがRules Designerで参照可能になります。Rules Designerでは、Javaコードやバイトコードがデータ・モデルやディクショナリにコピーされることはありません。
Javaファクト・タイプを使用すると、Javaクラスの選択したプロパティおよびメソッドをRules Engineにインポートできるため、ルールではそのJavaクラスのインスタンスへのアクセス、作成、変更および削除が可能となります。
Javaファクト・タイプをインポートすると、Rules EngineはJavaクラスに定義されているpublic属性、publicメソッドおよびBeanプロパティにアクセスして使用できます(Beanプロパティが適切です。これは、BeanプロパティがModifyアクションで変更できるからです)。
Javaファクトをルールおよびデシジョン表で使用する前に、Javaファクトを含むクラスおよびパッケージをRules Designerで使用可能にする必要があります。そのためには、Rules Designerを使用してJavaクラスを含むクラスパスを指定し、Javaファクトをインポートします。
Javaファクトをインポートして定義する手順は、次のとおりです。
Rules Designerで、「ファクト」ナビゲーション・タブを選択します。
図3-5に示すように、「ファクト」ナビゲーション・タブで、「Javaファクト」タブを選択します。
「Javaファクト」タブで「作成」をクリックします。図3-6に示すように、「Javaファクトの作成」ダイアログが表示されます。
「Javaファクトの作成」ダイアログで、インポートするクラスを含むクラスパスが「クラスパス」領域に表示されない場合は、「クラスパスに追加」をクリックします。「ディレクトリ/Jarの選択」ダイアログが表示されます。
Rules Designerのデフォルト・クラスパスには、3つのパッケージjava
、javax
およびorg
が含まれています。この3つのパッケージには、Rules DesignerでJavaランタイム・ライブラリ(rt.jar)からインポートできるクラスが含まれています。Rules Designerでは、これらのクラスを「クラス」領域から削除することはできません(また、関連するクラスパスは「クラスパス」領域に表示されません)。
「ディレクトリ/Jarの選択」ダイアログで、追加するクラスパスまたはjarファイルを参照して選択します。デフォルトでは、プロジェクトの出力ディレクトリはインポート・クラスパスに存在し、プロジェクト内のJavaクラスは「クラス」インポータに表示されます。表示されない場合は、プロジェクトに対してBuildアクションを実行します。
「開く」をクリックします。これにより、クラスパスまたはjarファイルが追加され、「クラスパス」領域が更新されます。
「Javaファクトの作成」ダイアログの「クラス」領域で、インポートするパッケージとクラスを選択します。
「OK」をクリックします。「Javaファクト」タブの「Javaファクト」表が更新されます。
Javaファクトのインポート後にJavaファクトを表示および編集するには、「Javaファクトの編集 -」ダイアログを使用します。
Javaファクトを表示して編集する手順は、次のとおりです。
Rules Designerで、「ファクト」ナビゲーション・タブをクリックします。
「ファクト」ナビゲーション・タブで、「Javaファクト」タブを選択します。
「Javaファクト」表で、編集するJavaファクトをダブルクリックします。図3-7に示すように、「Javaファクトの編集 -」ダイアログが表示されます。
「Javaファクトの編集 -」ダイアログには、表3-2に示すフィールドがあります。
表3-2 「Javaファクトの編集 -」ダイアログのフィールド
フィールド | 説明 |
---|---|
クラス |
Javaファクトに関連付けられているソースのJavaファクト・クラスが表示されます。 |
エイリアス |
Javaファクトの別名を入力します。 |
スーパー・クラス |
このファクトに関連付けられているJavaスーパークラスが表示されます。 |
説明 |
Javaファクトの説明を入力します。 |
参照可能 |
Rules DesignerのリストにJavaファクトを表示する場合に選択します。 |
「属性」領域 |
表示または編集するJavaファクトのJavaクラスに関連付けられている、使用可能なクラス・プロパティ、コンストラクタ、メソッドまたはフィールドを選択します。 |
Javaファクトを定義する際の注意事項は、次のとおりです。
Windowsシステムでは、「クラスパス」領域でクラスパスの指定に円記号(\
)またはスラッシュ(/)を使用できます。Rules Designerでは、どちらのパス・セパレータも使用できます。
Rules Designerで使用するクラスおよびインタフェースは、次のルールに従う必要があります。つまり、クラスまたはインタフェースを使用する場合、参照可能にできるのは、そのスーパー・クラスまたは実装されるインタフェースの1つのみです。
クラスパスを指定する際に、JARファイル、ZIPファイルまたはディレクトリのフルパスを指定できます。
クラスパスにディレクトリ名を指定する場合、そのディレクトリでは、ルート・パッケージ(完全パッケージ名に含まれる最初のパッケージ)が格納されているディレクトリで終わるクラスパスを指定します。つまり、クラスパスでディレクトリを指定すると、Rules Designerではそのツリー内でパッケージ名構造と一致するディレクトリ名が検索されます。
たとえば、c:\myprj\cool\example\Test1.class
にあるクラスcool.example.Test1
をインポートするには、クラスパスの値c:\myprj
を指定します。
クラスを変更した場合は、ファクトを再インポートする必要があります。再インポート操作の完了後、クラスの変更によって検証警告が表示されることがあります。互換性のない変更(ルールで参照されているプロパティの削除など)によって発生する検証警告があれば、訂正する必要があります。
RLファクトは、ユーザーが直接作成でき外部ソースが存在しないタイプの唯一のファクトです。他のすべてのタイプのOracle Business Rulesファクトはインポートされます。RLファクトは、リレーショナル・データベースの行またはメソッドがないJavaBeanと同じです。RLファクトには、データ・モデルで使用可能なタイプ(RLファクト、Javaファクトまたはプリミティブ・タイプ)のプロパティのリストが含まれています。RLファクトを使用すると、動的な仮想型を提供することでJavaアプリケーションのオブジェクト・モデルを拡張できます。
次に例を示します。
顧客が過去3か月間に500ドル支払った場合(IF customer spent $500 within past 3 months)
その顧客はGold Customerとなる(THEN customer is a Gold Customer)
このルールでは、顧客データを指定するJavaファクトを使用し、RLファクト(Gold Customer)を作成するアクションも使用できます。ルールは、次のように、Gold Customerファクトを使用するように定義できます。
顧客がGold Customerの場合(IF customer is a Gold customer)
10%の割引を提供する(THEN offer 10% discount)
このルールでは、Gold Customerという名前のRLファクトを使用しています。このルールは、Gold Customerファクトを使用して、過去3か月間に500ドルの支払があった顧客には10%割引の資格があることを示しています。ルールには、顧客がGold Customerになる他の方法も指定できます。
Rules Designerでテストおよびプロトタイプ化を行う場合、RLファクトを作成し、ルールの記述およびテストに使用してから、スキーマをインポートし、XMLファクトに切り替えることができます(承認済XMLスキーマが作成されるか使用可能になるまで、待機が必要な場合があります)。RLファクトから対応するXMLファクトに切り替える手順は、次のとおりです。
RLファクトを削除します(これにより、作成したルールまたはデシジョン表で削除対象のRLファクトを使用しているという検証警告が表示されます)。
XMLファクトをインポートし、そのXMLファクトおよびプロパティに、手順1で削除したRLファクトとプロパティの名前と一致する別名を与えます。
このプロセスでは、XMLファクトとプロパティの別名および型が削除するRLファクトの別名および型と一致する場合、検証警告が削除されます。
「ファクト」ナビゲーション・タブからRLファクトを追加します。
RLファクトを定義する手順は、次のとおりです。
Rules Designerで、「ファクト」ナビゲーション・タブを選択します。
図3-8に示すように、「ファクト」ナビゲーション・タブで、「RLファクト」タブを選択します。
「RLファクト」タブで「作成」をクリックします。
「RLファクト」表で、「名前」フィールドにRLファクトの名前を入力するか、またはデフォルト名を受け入れます。
「RLファクト」表で、「説明」フィールドに説明を入力するか、またはデフォルトの説明なしを受け入れます。
RLファクトにプロパティを追加するには、「RLファクトの編集 -」ダイアログを使用します。
RLファクトを表示、編集してRLファクトのプロパティを追加する手順は、次のとおりです。
Rules Designerで、「ファクト」ナビゲーション・タブを選択します。
「RLファクト」タブで、ファクトを表示または編集するRLファクトをダブルクリックします。図3-9に示すように、「RLファクトの編集 -」ダイアログが表示されます。
RLファクトのプロパティを追加するには、「RLファクトの編集 -」ダイアログの「プロパティ」領域で「作成」をクリックします。
「名前」フィールドにプロパティ名を入力します。
「タイプ」フィールドで、リストからタイプを選択するか、またはプロパティ・タイプを入力します。
プロパティにバケット・セットを関連付けるには、「バケットセット」フィールドのリストからバケット・セットを選択します。
プロパティに初期値を関連付けるには、「初期値」フィールドに値を入力します。
必要に応じて前述の手順を繰り返し、さらにプロパティを追加します。
「OK」をクリックします。
「RLファクトの編集 -」ダイアログを使用してRLファクトにプロパティを追加する場合、図3-10に示すように、「プロパティ」領域の「初期値」フィールドに候補値のリストが表示されます。
Rules Designerの一部のフィールドを使用する際に、図3-11に示すように、初期値のリストや他のリストが空の場合があります。この場合、リストは空のボックスです。したがって、Rules Designerで値の入力に役立つオプションがみつからない場合、テキスト入力領域に値を直接入力するか、または「式ビルダー」アイコンをクリックして「式ビルダー」ダイアログを表示する必要があります。
ADF Business Componentsファクトを使用すると、ルールおよびデシジョン表でADF Business Componentsをファクトとして使用できます。ADF Business Componentsのファクトを使用することで、ルールのベースとして必要なビジネス・オブジェクトを表すビュー・オブジェクトのグラフをアサートし、Oracle Business Rulesにビュー・オブジェクトのグラフ内で各種の関連ビュー・オブジェクト間の関係管理に伴う複雑な処理を実行させることができます。
詳細は、第10章「Oracle Business RulesとADF Business Componentsの使用」を参照してください。
ADF Business Componentsビュー・オブジェクトをインポートすると、ビュー・オブジェクの各属性に対応するプロパティを持つADF Business Componentsファクト・タイプが作成されます。
ADF Business Componentsファクトを追加する手順は、次のとおりです。
「ファクト」ナビゲーション・タブをクリックし、「ADF-BCファクト」タブを選択します。図3-12に示すように、「ADF-BCファクト」表が表示されます。
「作成」をクリックします。図3-13に示すように、「ADF-BCファクト」ダイアログが表示されます。
「接続」フィールドのリストから、ADF Business Componentsオブジェクトで使用する接続を選択します。「クラスパスの検索」領域にはクラスパスのリストが表示されます。詳細は、第3.5.2項「ADF Business Componentsファクトのクラスパスに関する必須情報」を参照してください。
「ビュー定義」フィールドで、インポートするビュー・オブジェクトの名前を選択します。
「OK」をクリックします。図3-14に示すように、「ファクト」ナビゲーション・タブが表示されます。インポートしたファクトには検証警告が含まれることに注意してください。この検証警告の削除の詳細は、第3.5.3項「ADF Business Componentsの循環参照に関する必須情報」を参照してください。
図3-14 Rules DesignerでのADF Business Componentsファクト
表示されたいずれかのクラスパスの「ADF-BCファクトの作成」ダイアログの「クラスパスの検索」領域に表示されるクラスパス・リストには、プロジェクトで使用できるオブジェクト定義を表示できます。プロジェクトに使用できないクラスパスを使用する必要がある場合は、このダイアログで「クラスパスに追加」をクリックするだけで十分です(非常にまれなケース)。
ADF Business Componentsファクトには、図3-14に示すように循環参照を含めることができます。この警告がビジネス・ルール検証ログに表示された場合は、循環参照を手動で解決する必要があります。そのためには、循環参照に関係するいずれかのプロパティの「参照可能」チェック・ボックスの選択を解除します。
各ADF Business Componentsファクト・タイプには、各ファクト・インスタンスが表すoracle.jbo.Row
を参照するViewRowImpl
という名前のプロパティと、この行と親行のキー値セットの取得に使用可能なoracle.rules.sdk2.decisionpoint.KeyChain
オブジェクトを指すkey_values
という名前のプロパティが含まれています。
ADF Business Componentsを使用する際の注意事項は、次のとおりです。
ビュー・オブジェクト定義間の関係は、ビュー定義の属性、特にビュー・リンクのアクセッサである属性のイントロスペクションによって決定されます。
ADF Business Componentsファクト・タイプ・インポータでは、どの関係が1対1で、どの関係が1対多であるかが正しく判別され、それに従ってディクショナリに定義が生成されます。1対多関係の場合、生成されるプロパティのタイプはList
で、実行時に示されたタイプのファクトが含まれています。
循環的なタイプ依存性を持つADF Business Componentsファクト・タイプは使用できません。循環に関係する1つ以上のプロパティの「参照可能」チェック・ボックスの選択を解除して、これらの循環を絶つ必要があります。
ADF Business Componentsファクト・タイプはJavaファクト・タイプではなく、ビュー・オブジェクト用に明示的に作成された実装クラスのメソッドは起動できません。
この種のメソッドをコールする必要がある場合は、ビュー・オブジェクト実装をADF Business Componentsファクト・タイプのかわりにJavaファクト・タイプとしてディクショナリに追加します。この場合、すべてのgetter、setterおよびその他のメソッドが使用可能になりますが、関連するビュー・オブジェクトにアクセスできなくなり、そのオブジェクトへのアクセスが必要な場合は、これらの関係を明示的に管理する必要があるというトレードオフがあります。
内部的には、ADF Business Componentsファクト・タイプはRLファクト・タイプのインスタンスです。
つまり、このことは、ADF Business Componentsビュー・オブジェクト・インスタンスをルール・セッションに直接アサートすることはできず、かわりにMetadataHelper
およびADFBCFactTypeHelper
クラスに用意されているヘルパー・メソッドを使用する必要があることを意味します。詳細は、『Oracle Fusion Middleware Java API Reference for Oracle Business Rules』を参照してください。
バケット・セットを作成すると、値リストまたは値範囲のリストを定義して、Oracle Business Rules内のファクトまたはファクト・プロパティについて許容範囲内の値セットを制限できます。バケット・セットは、バケット・セットに名前を付けてデータ・モデルに格納する再利用可能なグローバル・バケット・セット、またはデシジョン表の定義時に指定し、1つの条件式にのみ適用するローカル・バケット・セットとして定義できます。ローカル・バケット・セットの使用の詳細は、第5.2.2項「デシジョン表への条件行の追加方法」を参照してください。
バケット・セットは次のように使用できます。
ファクト・タイプ・プロパティをバケット・セットに関連付けることができます。これにより、ファクト・プロパティについて許容範囲内の値セットを制限できます。詳細は、第3.7.1項「バケット・セットをファクト・プロパティに関連付ける方法」を参照してください。
デシジョン表では、バケット・セットが、デシジョン表の一部となる条件式の値リストまたは値範囲のリストを定義します。デシジョン表の各条件式では、バケット・セットの値または範囲により、複数の可能性を決定できます。バケット・セットを使用すると、条件式のそれぞれの可能性がグループまたは範囲に分けられ、それらでは1つのセルが、バケット・セットの値の1つのバケットを指定します(または、セルごとに複数バケットの値を指定することもできます)。たとえば、色について定義したバケット・セットでは、バケットに"blue"、"red"、"orange"といった文字列のリストを含むことができます。整数を含むバケット・セットでは、1未満、1から10、10より上の3つのバケットを持つことができます。詳細は、第5.2.2項「デシジョン表への条件行の追加方法」を参照してください。
グローバル、関数および関数の引数をバケット・セットに関連付けることができます。バケット・セットをグローバルに関連付けると、割り当てられた値がバケット・セットで指定された値に制限されていることを、デザインタイムに検証できます。バケット・セットを関数の引数に関連付けると、バケット・セットの値のみを使用して関数がコールされることが検証されます。バケット・セットをこのように使用すると、Rules Designerでは、許可されない定数の引数値が割り当てられるか、渡されたグローバル値および関数の引数について検証警告をレポートできます。バケット・セットを関数に関連付けると、条件行の式として関数を使用した場合に、そのバケット・セットを使用するようにデシジョン表の条件式が自動的に設定されます。このタイプのバケット・セット検証は、デザインタイムの定数値のみが検証されるという意味で弱い検証です。バケット・セットに関連付けられたグローバルまたは関数の引数に基づく実行時チェックは適用されません。詳細は、第3.7.2項「バケット・セットを関数または関数の引数に関連付ける方法」を参照してください。
デザインタイムの検証に加え、LOVバケット・セットを使用して、IF/THENルールのテストおよびアクションで式の入力時にリストに表示されるオプションを提供できます。詳細は、第4.11.3項「バケット・セットを使用してテスト式のオプションを指定する方法」を参照してください。
バケット・セットには次の3つの形式があります。
LOV: 値リストで定義されます(第3.6.1項「値リスト・グローバル・バケット・セットの定義方法」を参照)。
範囲: 範囲のエンドポイントで定義される値範囲のリストで定義されます(第3.6.2項「範囲リスト・グローバル・バケット・セットの定義方法」を参照)。
列挙: 次のいずれかからインポートされる列挙タイプのリストで定義されます。
XMLタイプ(第3.6.3項「XMLタイプからの列挙タイプ(列挙)バケット・セットの定義方法」を参照)。
Javaファクト(第3.6.4項「Javaタイプからの列挙タイプ(列挙)バケット・セットの定義方法」を参照)。
値リスト・バケット・セットを使用すると、バケット・セットのバケットの型およびリストを指定できます。
詳細は、第3.6.5項「値リスト・バケット・セットに関する必須情報」を参照してください。
値リスト(LOV)グローバル・バケット・セットを定義する手順は、次のとおりです。
Rules Designerで、「バケットセット」ナビゲーション・タブを選択します。
図3-15に示すように、「バケットセットの作成」アイコンの横にあるリストから、「値リスト」を選択します。
バケットのバケット・アイコンをダブルクリックします。「バケットセットの編集」ダイアログが表示されます。
「バケットセットの編集」ダイアログで、「名前」列にバケット・セット名を入力します。
バケット・セット名がファクトの別名と同じにならないように確認してください。これらの名前が同じだと、次のような検証エラーが発生します。
RUL-05006: The fact type "Rating" has the same alias as an unrelated bucketset.
「データ型」列で、リストからデータ型を選択します。
たとえば、リストから「文字列」を選択します。
「作成」アイコンをクリックして値を追加します。
追加するバケットごとに、次の手順を実行します。
「値」フィールドに値を入力します。LOVバケットのStringタイプの値では、3回クリックすると文字列全体を選択できます。これにより、図3-16に示すように、文字列を入力し、Rules Designerで同じ別名が引用符で囲まれずに追加できます。
「エイリアス」フィールドに別名を入力します。
別名の指定方法の詳細は、第3.6.2項「範囲リスト・グローバル・バケット・セットの定義方法」を参照してください。
値が許可された値の場合は、「アクションで許可済」フィールドのチェック・ボックスを選択します。
「アクションで許可済」フィールドと「許可されないバケットをテストに含める」フィールドの詳細は、第3.6.7項「バケット・セットの「アクションで許可済」オプションに関する必須情報」を参照してください。
「説明」フィールドに説明を入力します。
図3-16に示すように、必要に応じてバケット・セットの「作成」アイコンをクリックし、値をさらに追加します。
「バケットセットの編集」ウィンドウで「OK」をクリックします。
デシジョン表でのルールの順序付けは、デシジョン表で条件式に関連付けられているLOVバケット・セット内のバケットの相対位置を変更することで管理できます。
値リスト・バケット・セット内のバケットの順序を変更する手順は、次のとおりです。
バケット・セットの「バケットセットの編集」ダイアログで、順序を変更するバケットを選択します。
バケットの順序を下位へ変更するには、「下に移動」アイコンをクリックします。
バケットの順序を上位へ変更するには、「上に移動」アイコンをクリックします。
「OK」をクリックします。
範囲リスト・バケット・セットを使用すると、バケット・セットのバケットの型およびエンドポイントを指定できます。
詳細は、第3.6.6項「範囲バケット・セットに関する必須情報」を参照してください。
範囲リスト(範囲)グローバル・バケット・セットを定義する手順は、次のとおりです。
Rules Designerで、「バケットセット」ナビゲーション・タブを選択します。
「バケットセットの作成」アイコンの横にあるリストから、「範囲リスト」を選択します。
「データ型」フィールドをダブルクリックします。図3-17に示すように、「バケットセットの編集」ダイアログが表示されます。
「バケットセットの編集」ダイアログで、「名前」フィールドにバケット・セット名を入力します。
「バケットセットの編集」ダイアログで、「データ型」フィールドのリストからバケット・セットに該当するデータ型を選択します。
この例では、「int」を選択します。
「バケットの追加」アイコンを繰り返しクリックし、図3-18に示すようにバケット・セットに必要な数のバケットを追加します。
この手順では、3つのバケットを追加します。図3-18に示すように、デフォルト値で開始します。デフォルトのバケットを変更した後、バケットには次の値が存在します。
1000より大きい
500以上1000以下
500未満
Rules Designerにより、デフォルト値50、0および負の無限大(-Infinity)でバケットが追加されます。
「エンドポイント」フィールドで、最初(最上位)のバケットから始めてデフォルト値をダブルクリックし、最上位の値バケットのエンドポイントを入力して[Enter]を押します。
この例では、最初のバケットについて1000と入力します。
「含まれるエンドポイント」フィールドで、該当するチェック・ボックスを選択して、バケットのエンドポイントを含めるか除外します。
この例では、バケットのエンドポイントを含めるために、このチェック・ボックスを選択状態のままにしておくことができます。
「アクションで許可済」フィールドで、該当するチェック・ボックスを選択して、バケット・セットの許可された値にバケットを含めます。
「アクションで許可済」フィールドと「許可されないバケットをテストに含める」フィールドの詳細は、第3.6.7項「バケット・セットの「アクションで許可済」オプションに関する必須情報」を参照してください。
「エイリアス」フィールドでデフォルト値をダブルクリックし、必要なバケット別名を入力して[Enter]を押すこともできます。
別名は、このバケット・セットを使用するデシジョン表に表示されます。別名を使用すると、バケットにデフォルト値(範囲ベースの範囲値)よりもわかりやすい名前を付けることができます。
Oracle Business Rulesのほとんどの名前と別名では、文字、数字、埋込みの単一スペース、特殊文字($、_、'、.、-、/、:.)しか使用できません。ただし、バケット別名では、[0..1]などのその他の文字を使用できます。バケット別名にこうした追加の文字が含まれている場合、デシジョン表のアクション・セル内の別名によってバケットを参照することはできません。この場合は、バケット名(バケット値とも呼ばれている)を使用できます。
「範囲」フィールドは読取り専用で、バケットに関連付けられている実際の範囲が別名値に関係なく明確に識別されます。詳細は、第3.6.6項「範囲バケット・セットに関する必須情報」を参照してください。
以降のバケットごとに、バケットのリスト内で下に移動し、手順7以降を繰り返します。第2のバケットの場合、エンドポイント値500を入力します。
図3-19に、完成したバケット・セットを示します。
「バケットセットの編集」ダイアログで「OK」をクリックします。
XMLスキーマをインポートする際に、XSDに列挙値が含まれていると、Rules Designerでは列挙ごとに列挙タイプ・バケット・セットが自動的に作成されます。列挙タイプ・バケット・セットは読取り専用ですが、バケットの順序は変更できます。
詳細は、第3.2.4項「XMLファクトに関する必須情報」を参照してください。
XMLタイプから列挙タイプ(列挙)バケット・セットを定義する手順は、次のとおりです。
必要な列挙を含むXSDを取得します。
例3-2に、列挙Status
を含むorder.xsd
スキーマ・ファイルを示します。
例3-2 order.xsdスキーマ
<?xml version="1.0" ?> <schema attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://example.com/ns/customerorder" xmlns:tns="http://example.com/ns/customerorder" xmlns="http://www.w3.org/2001/XMLSchema"> <element name="CustomerOrder"> <complexType> <sequence> <element name="name" type="string" /> <element name="creditScore" type="int" /> <element name="annualSpending" type="double" /> <element name="value" type="string" /> <element name="order" type="double" /> </sequence> </complexType> </element> <element name="OrderApproval"> <complexType> <sequence> <element name="status" type="tns:Status"/> </sequence> </complexType> </element> <simpleType name="Status"> <restriction base="string"> <enumeration value="manual"/> <enumeration value="approved"/> <enumeration value="rejected"/> </restriction> </simpleType> </schema>
Rules Designerでディクショナリを開き、列挙を含む指定のスキーマを使用してXMLファクトを作成します。詳細は、第3.2項「XMLファクトの使用」を参照してください。
「バケットセット」ナビゲーション・タブをクリックし、Enumバケット・セットを選択して、図3-20に示すようなバケット・セットを表示します。図3-20では、例3-2に示すインポートされたStatus
の列挙値がXSD指定値を含むバケットとしてインポートされていることに注意してください。
デシジョン表でのルールの順序付けは、デシジョン表で条件式に関連付けられている列挙バケット・セット内のバケットの相対位置を変更することで管理できます。
列挙バケット・セット内のバケットの順序を変更する手順は、次のとおりです。
バケット・セットの「バケットセットの編集」ダイアログで、順序を変更するバケットを選択します。
バケットの順序を下位へ変更するには、「下に移動」アイコンをクリックします。
バケットの順序を上位へ変更するには、「上に移動」アイコンをクリックします。
「OK」をクリックします。
Java列挙をインポートすると、Rules DesignerではJava列挙ごとに列挙タイプのバケット・セットが自動的に作成されます。列挙タイプ・バケット・セットは読取り専用ですが、バケットの順序は変更できます。
Javaファクトから列挙タイプ(列挙)バケット・セットを定義する手順は、次のとおりです。
必要な列挙を含むJavaクラスを作成または取得します。
例3-3に、列挙OrderSize
を含むRejectPurchaseItem.java
クラスを示します。
Rules Designerでディクショナリを開き、Javaクラスを使用してJavaファクトを作成します。詳細は、第3.3項「Javaファクトの使用」を参照してください。
図3-21に、Java列挙Class1$OrderSize
のJavaファクトの作成方法を示します。
図3-22に示すように、Rules Designerで「バケットセット」ナビゲーション・タブをクリックし、Enumバケット・セットを選択します。例3-3の列挙からの列挙Class1$OrderSize
が、Javaのenum
指定値を含むバケット・セットになっていることに注意してください。
デシジョン表でのルールの順序付けは、デシジョン表で条件式に関連付けられている列挙バケット・セット内のバケットの相対位置を変更することで管理できます。
列挙タイプ(列挙)バケット・セット内のバケットの順序を変更する手順は、次のとおりです。
バケット・セットの「バケットセットの編集」ダイアログで、順序を変更するバケットを選択します。
バケットの順序を下位へ変更するには、「下に移動」アイコンをクリックします。
バケットの順序を上位へ変更するには、「上に移動」アイコンをクリックします。
「OK」をクリックします。
デシジョン表では、条件式に関連付けられているバケット・セット内のバケットの順序によって条件セルの順序が決まり、したがってルールの順序も決まります。デシジョン表でのルールの順序付けは、条件式に関連付けられている値リスト・バケット・セット内のバケットの相対位置を変更することで管理できますが、範囲バケットの順序は変更できません。
図3-23に、値リストを使用するcolorsというバケット・セットに関するRules Designer内のバケット・セット定義を示します。
図3-23に示すように、デフォルトの値リスト・バケット・セットでは、otherwise
という値が値リスト(LOV)に含まれています。このotherwise
という値は、他のすべての値と性質が異なり、他のバケットを持たないすべての値タイプと一致します。したがって、値リストのotherwise
を使用すると、バケット・セットを使用する条件式はすべての値を処理可能になり、指定したタイプのすべての値と一致するようになります。この場合の一致は、定義された値か、otherwise
バケットのいずれかに対するものです。otherwise
値をLOVバケット・セットから削除することはできませんが、「アクションで許可済」チェック・ボックスをクリアして除外することはできます(otherwise
を除外すると、バケット・セット内のバケットのリストに存在しない値を割り当てようとすると、検証警告が表示されます)。
表3-3に、Rules DesignerでLOVバケット・セットについてサポートされているバケット・セット値を示します。
表3-3 LOVバケット・セットについてサポートされている型
タイプ | 説明 |
---|---|
Javaプリミティブ型 |
|
|
|
|
現行ロケール内の |
注意: デシジョン表でブール型を使用する場合、LOVバケット・セットを指定する必要はありません。ブール型の場合、Oracle Business Rulesには可能な値( |
範囲リスト・バケット・セットにバケットを追加すると、現在選択しているバケット値および次に上位のバケット値に基づいて値が計算されます。エンドポイント値を変更すると、値は自動的にバケット・セット内でソートされるため、新規バケットの追加先はどこでもかまいません。ただし、Rules Designerでは、現行のバケット・セットのエンドポイント値およびエンドポイント値の間に余地がない場合があります。この場合、Rules Designerでは次の書式の検証警告が表示されます。
RUL-05849: Bucketset has duplicate bucket value "4999"
この問題を解決するには、バケットのエンドポイントを変更し、重複するバケットを削除する必要があります。
図3-24に、整数int
および範囲を持つバケット・セットの「バケットセットの編集」ウィンドウを示します。
表3-4に、Rules Designerで範囲バケットについてサポートされている型を示します。
表3-4 範囲バケットについてサポートされている型
タイプ | 説明 |
---|---|
選択したプリミティブ型 |
|
|
現行ロケール内のCalendar型が含まれます。 |
「範囲」フィールドに関する次の規則に注意してください。
論理演算子: 正または負の無限大に関する範囲を指定します。たとえば、>=25
は25以上で正の無限大を意味し、<18
は負の無限大から18未満を意味します。
大カッコ「[
」: このエンドポイント値を含む範囲を指定します。たとえば、[18..25)
は18以上25未満を意味します。
丸カッコ「)」: このエンドポイント値を除く範囲を指定します。たとえば、(18..25]
は18より大きく25以下を意味します。
バケット・セット内のバケットを定義する際、許可されていない値に対応する一部のバケットを定義できます。たとえば、運転者の年齢に関するバケット・セットでは、通常、0より小さい値を含むバケットは許可しません。したがって、運転者のデータを持つファクトに、運転者の年齢に関するバケット・セットに関連付けられた年齢プロパティが含まれる場合は、年齢プロパティが-1などの値に設定されているファクトを作成または変更できないようにする必要があります。バケット・セットでは、有効なバケットに対して「アクションで許可済」を選択し、無効なバケットに対してこのオプションの選択を解除します。
バケット・セット・オプション「許可されないバケットをテストに含める」を使用すると、デシジョン表の条件およびルールのテストで「アクションで許可済」が選択されているかどうかに関係なく、すべてのバケットを含めることができます。すべてのバケットを含めることで、不正な値を明示的にテストできます。オプション「許可されないバケットをテストに含める」を使用すると、次のような2つのケースに対応できます。
Oracle Business Rules Engineの入力データがクリーンで、無効なデータ(負の年齢など)が含まれていない場合。この場合、「許可されないバケットをテストに含める」の選択を解除する必要があります。注意: age < 0
を「アクションで許可済」に設定しないのは、これにより、modify(driver, age: -1))
のような無効な値を使用するアクションを作成しようとした場合に、デザインタイムの検証警告が提供されるためです。詳細は、第4.11項「ルールにおけるオプション値の制約としてのバケット・セットの使用」を参照してください。
ルールのテストやデシジョン表で、除外したバケットを検討したい場合があります。この場合、「許可されないバケットをテストに含める」を選択する必要があります。これは、Oracle Business Rules Engineの入力データがクリーンでなく、無効なデータ(無効な負の年齢など)が含まれているような場合に役立ちます。すべてのバケット・セットのアクションを提供するデシジョン表では、除外したバケットのケースを含めて、エラー・ファクトのアサートなど、適切なアクションを提供することもできます。この処理のためには、バケット・セット内のすべてのバケットの「アクションで許可済」フィールドを選択するか、「アクションで許可済」フィールドの構成をそのままにして、「許可されないバケットをテストに含める」フィールドを選択できます。「許可されないバケットをテストに含める」フィールドを使用すると、(すべてのバケットを再構成する必要がないので)便利なだけでなく、「アクションで許可済」の構成が保持されるので、このバケット・セットを再使用して簡単に最初のケースを処理できます(「許可されないバケットをテストに含める」の選択が解除されている場合)。
バケット・セットにバケット値を入力する場合、入力値はバケット・セットに指定されたタイプに対して有効である必要があります。入力した値がバケット・セット・タイプに無効であると、Rules Designerで引用符が追加され文字列になります。入力されたデータが指定タイプに対して適切でない場合、引用符を追加することによってのみ有効なリテラルとなります。たとえば、intタイプのLOVバケット・セットで2.2という値を入力すると、Rules Designerから次のような警告が表示されます。
RUL-05833: Invalid characters "2.2" in bucket value
この問題を解決するには、バケット値に有効な値(この場合は値2など)を入力するか、バケット・セットのタイプを変更します。
別の例として、バケットに値を入力する場合、たとえばデータ型がshortのバケット・セットで値999999のバケットを追加すると、Rules Designerによって"999999"という値が割り当てられます。Shortの最大値は32767です。この場合、データ型がshortのバケット・セットに対して「String」は有効なバケット値ではないため、バケット値に関する前述の例に似た警告が表示されます。この問題を解決するには、すべてのバケットに対して適切な値(この例では、32767以下の値)を入力します。
グローバル・バケット・セットを定義した後、データ・モデルの各部をグローバル・バケット・セットに関連付けることができます(両方のタイプに互換性がある場合)。これにより、デシジョン表を定義する際、「条件」領域にある条件セルにバケット・セットを自動的に割り当てることができます。また、バケット・セットがビジネス条件に関連付けられている場合、Oracle Business Rulesでは、ルールでビジネス条件の式の値に対する制約として定義したバケットが使用されます。
次の4種類のビジネス条件をバケット・セットに関連付けることができます。
ファクト・プロパティ
関数の結果
関数の引数
グローバル値
デシジョン表を作成する準備のため、グローバル・バケット・セットをデータ・モデル内のファクト・プロパティに関連付けることができます。
バケット・セットをファクト・プロパティに関連付ける手順は、次のとおりです。
Rules Designerで、「ファクト」ナビゲーション・タブを選択します。
編集対象のファクト・タイプを選択して、「編集」アイコンをクリックします。選択したファクト・タイプに適した「ファクトの編集」ダイアログが表示されます。
「プロパティ」表の「バケットセット」の下で、適切なファクト・プロパティのセルを選択し、プロパティに関連付けるバケット・セットをリストから選択します。図3-25に示す例を参照してください。
「ファクトの編集」ページで「OK」をクリックします。
デシジョン表を作成する準備のため、グローバル・バケット・セットをデータ・モデル内の関数に関連付けることができます。
バケット・セットを関数の戻り値に関連付ける手順は、次のとおりです。
Rules Designerで、「関数」タブを選択します。
編集する関数を選択します。これにより、選択された関数について、関数の引数および関数本体が表示されます。
「関数」表の「バケットセット」の下でセルを選択し、使用するバケット・セットをリストから選択します。図3-26に示す例を参照してください。
バケット・セットを関数の引数に関連付ける手順は、次のとおりです。
Rules Designerで、「関数」ナビゲーション・タブを選択します。
編集する関数を選択します。これにより、選択された関数について、関数の引数および関数本体が表示されます。
「関数」表の「引数」領域で、適切な引数を選択します。
指定の引数について「バケットセット」の下でセルを選択し、使用するバケット・セットをリストから選択します。
デシジョン表を作成する準備のため、グローバル・バケット・セットをデータ・モデル内のグローバル値に関連付けることができます。
バケット・セットをグローバル値に関連付ける手順は、次のとおりです。
Rules Designerで、「グローバル」ナビゲーション・タブを選択します。
編集対象のグローバル値を選択します。
「グローバル」表の「バケットセット」の下で、適切なグローバル値のセルを選択し、グローバル値に関連付けるバケット・セットをリストから選択します。図3-27に示す例を参照してください。