議題と優先度
ビジネス ルール エンジンがルールを評価してアクションを実行する方法を理解するには、 議題 と 優先順位の概念を理解する必要があります。
予定
議題は、実行するルールをキューに入れるためにエンジンが使用するスケジュールです。 議題はエンジンのインスタンスに存在し、一連のポリシーではなく 1 つのポリシーに作用します。 ファクトが作業メモリにアサートされ、特定のルールの条件が満たされると、議題にルールが配置され、優先度に従って実行されます。 ルールのアクションが上から下へと順に実行されたら、議題の次のルールのアクションが実行されます。
ルールに属するアクションはブロックとして扱われるので、すべてのアクションが実行されてから次のルールに移行します。 ルール ブロック内のアクションはすべて、ブロック内の他のアクションとは無関係に実行されます。 アサーションの詳細については、「 エンジン 制御関数」を参照してください。
議題の使用例を次に示します。
Rule1
IF
Fact1 == 1
THEN
Action1
Action2
Rule2
IF
Fact1 > 0
THEN
Action3
Action4
値が 1 のファクト Fact1 をエンジンにアサートします。 Rule1 と Rule2 の両方の条件が満たされているため、両方のルールがアクションを実行するために議題に移動します。
作業メモリ | 予定 |
---|---|
Fact1 (値 = 1) | Rule1 - Action1 - Action2 Rule2 - Action3 - Action4 |
優先度
実行の優先度は個々のルールに設定され、既定の優先度はすべてのルールで 0 です。 優先度の範囲は正と負のどちらも可能で、大きい数値が高い優先度となります。 優先度の高い順にアクションが実行されます。
次の例は、優先度がルールの実行順序にどのように影響するかを示しています。
Rule1 (優先度 = 0)
IF
Fact1 == 1
THEN
Discount = 10%
Rule2 (優先度 = 10)
IF
Fact1 > 0
THEN
Discount = 15%
両方のルールの条件が満たされましたが、Rule2 の方が優先度が高いため先に実行されます。 次の表に示すように、Rule1 に実行されるアクションの結果、最終的な割引は 10% です。
作業メモリ | 予定 |
---|---|
Fact1 (値 = 1) | Rule2 Discount = 15% Rule1 割引 = 10% |