次の方法で共有


議題と優先度

ビジネス ルール エンジンがルールを評価してアクションを実行する方法を理解するには、 議題優先順位の概念を理解する必要があります。

予定

議題は、実行するルールをキューに入れるためにエンジンが使用するスケジュールです。 議題はエンジンのインスタンスに存在し、一連のポリシーではなく 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%

参照

ルール エンジン