ルールを拡張モードで構成し、ルールが適用されたときにルールがどのように実行されるかを最適化します。通常、ルール条件に階層属性およびコレクションを持つビジネス・オブジェクトが含まれる場合は、拡張モードを使用します。
コレクションは、トランザクション・データのグループです。たとえば、経費精算書は、経費項目などの子属性を持つビジネス・オブジェクトです。各項目は異なるコスト・センターを持つことができるため、経費項目はコスト・センター間でルールが評価する必要があるデータのコレクションです。そのため、拡張ルールには、すべての経費項目を参照するが、特定のコスト・センターにのみ一致する条件を設定できます。
拡張モードで新しいルールを作成する場合の一般的な方法は次のとおりです。
-
ルール名の後ろにある「プロパティ」リンクをクリックし、「拡張モード」チェック・ボックスを選択します。
-
Ifセクションの「パターンの挿入」リンクをクリックして、「は」演算子を含むパターンを取得します。パターンは、Ifセクション内の行(テスト)のセットを整理する手段です。
- 演算子の前にあるフィールドに、ビジネス・オブジェクトを表す任意の用語を入力します。この用語は、後でルールで使用される変数です。
- 演算子の後ろで、ビジネス・オブジェクトの属性(例: Expense Report)を選択します。
-
パターンの後にあるツールバーで追加または変更の拡張オプション・アイコンをクリックし、「簡易テスト」を選択します。
-
ルールがビジネス・オブジェクトに対して照合する条件を定義します。先に入力した変数の名前が付いたフォルダ下の属性を選択します。
-
必要に応じて、さらに条件を追加します。
-
ビジネス・オブジェクト・パターンのツールバーで、「パターンの追加」アイコンをクリックします。
- 演算子の前にあるフィールドに、Lists_collectionと入力します。
- 演算子の後ろで、「Lists」を選択します。
このパターンが必要なのは、ルールにコレクションが含まれるためです。
-
リスト・パターンのツールバーで、「パターンの追加」アイコンをクリックします。
- 演算子の前にあるフィールドに、変数を入力します。
- 演算子の後ろで、コレクションの基になる属性(例: Expense Item)を選択します。
このパターンでは、コレクションに含まれる内容を定義します。
-
コレクション・パターンのツールバーで、「選択したテストを括弧で囲む」アイコンをクリックし、「囲み」を選択します。
囲みオプションによって、先ほど追加したパターンと後で定義する他の条件がカッコ内に配置され、それらがすべてグループ化されます。カッコ内の条件は全体として評価され、この場合はコレクションに対して評価されます。
-
コレクション・パターンの前にあるドロップダウン・リストで、ルールがコレクションに対してどのように照合を行うかを選択します。
- 各別: コレクション内の何かが条件を満たすたびに一致します。一致するたびに通知が送信されます。
- 少なくとも1つ: コレクション内で最初の一致が見つかるとすぐに、通知が送信され、コレクションの残りは評価されません。
- なし: コレクション全体が評価され、一致するものがない場合に通知が送信されます。
- 集計: コレクション内の属性の合計や平均といった演算が必要な場合、このオプションを使用します。
-
コレクション・パターンの後にあるツールバーで、追加または変更の拡張オプション・アイコンをクリックし、「簡易テスト」を選択します。
-
変数の名前が付いたフォルダ下の属性を選択して、ルールがコレクション内で照合する条件を定義します。
-
必要に応じて、さらに条件を追加します。
-
すべてのルールと同様にThenセクションを構成します。
拡張モードのルールのIfセクションの例を次に示します。このルールは、合計が1000以上であり、かつ、少なくとも1つの経費項目が「出張」に分類されている経費精算書を検索します。ERおよびitemは、入力された2つの変数であり、パスER.Expense Report Totalおよびitem.Expense Sourceは、それらの変数の名前が付いたフォルダから属性が選択されたことを示します。