拡張ルール
拡張ルールは、確立されたインタフェースを使用して記述するコードでコンフィギュレータ・モデルの機能を拡張し、文ルールでは使用できないビジネス要件をサポートします。
-
拡張ルールは、構成セッション中に発生する可能性がある1つ以上の事前定義済イベントにバインドされます。 例: 小数機能ノードの値の変更。
-
拡張ルールはベース・ノードに関連付けられています。 ベース・ノードは、ルールがルールにバインドされたイベントをリスニングするモデル・ノードです。 イベントをリスニングすることは、イベントの発生を検出することを意味します。 例: 値が変更された特定の小数点機能ノード。
-
拡張ルールの動作はルール・テキストで定義され、Groovyスクリプト言語の有効なスクリプトです。 単純な例: Groovyで定義された関数は、販売価格に到達するために、品目の定価に異なる割引を適用した場合の影響を計算します。
注意: この簡略化された例は、説明のみを目的としています。 実行時にコンフィギュレータに表示される価格構成情報は、通常、Oracle Pricingとの統合によって提供されます。 -
スクリプトで定義されている特定のGroovy関数を呼び出すために、イベントはイベント・バインディングでイベントの出現にバインドされます。 例: 割引関数の起動は、変更された値が適用する新しい割引である小数ノードの値の変更にバインドされます。
-
柔軟性を実現するために、指定されたイベント・バインド範囲内でバインドされたイベントをリスニングできます。 例: ノード値の変更は、ルールの基本ノードでのみリスニングされます。
-
バインドされた関数に引数がある場合、各引数は、引数バインディングで引数の値のソースにバインドされている必要があります。 例: 割引機能には、定価と割引の引数があります。定価引数は、エンド・ユーザーが定価を入力するモデル・ノードにバインドされ、割引引数はエンド・ユーザーが割引を入力するモデル・ノードにバインドされます。
-
ベース・ノードが複数のインスタンスを持つことができる場合は、インスタンス化スコープを指定して、ルールが起動されるときに、ベース・ノードのインスタンスごとにルールの個別のインスタンスが作成されるか、ベース・ノードのインスタンス・セット全体に対してルールの単一インスタンスが作成されるかを決定する必要があります。