ビジネス ルール フレームワークは、.NET オブジェクト、XML ドキュメント、またはデータベース テーブルにルールをリンクできる、非常に効率的な推論エンジンを提供します。
ビジネス ルール エンジンは、ポリシーの実行に 3 段階のアルゴリズムを使用します。 段階は次のとおりです。
一致 一致ステージでは、ファクトは、ルール条件で定義されている述語を使用して、ファクトの種類 (ルール エンジンの作業メモリで保持されるオブジェクト参照) を使用する述語と照合されます。 効率を高める目的で、ポリシー内のすべてのルールに対してパターン マッチングが行われ、ルール間で共有される条件は 1 回だけ照合されます。 部分的な条件の一致は、後続のパターン マッチング操作を高速化するために、作業メモリに格納できます。 パターン マッチング フェーズの出力は、ルール エンジンの議題の更新で構成されます。
競合の解決。 競合解決ステージでは、実行の候補となるルールを調べて、事前に定義された解決スキームに基づいて実行する次のルール アクションのセットを決定します。 照合ステージ中に見つかったすべての候補ルールは、ルール エンジンの議題に追加されます。
既定の競合解決スキームは、ポリシー内のルールの優先順位に基づいています。 優先度は、ビジネス ルール作成ツールのルールの構成可能なプロパティです。 数値が大きいほど、優先順位が高くなります。したがって、複数のルールがトリガーされると、優先順位の高いアクションが最初に実行されます。
アクション。 アクション ステージでは、解決されたルール内のアクションが実行されます。 ルール アクションはルール エンジンに新しいファクトをアサートできるため、サイクルが続行されることに注意してください。 これは前向き連鎖とも呼ばれています。 アルゴリズムが現在実行中のルールを割り込むことはありません。 現在発火しているルールに対応するすべてのアクションは、マッチフェーズが繰り返される前に実行されます。 ただし、議題上の他のルールは、マッチフェーズが再開される前には適用されません。 マッチフェーズでは、議題上のルールが実行される前に、議題から削除される可能性があります。
次の例は、一致競合解決アクションの 3 段階アルゴリズムを示しています。
ルール 1: 収入を評価する
宣言型表現:
申請者の信用格付けは、申請者の所得対ローン比率が0.2未満の場合にのみ取得する必要があります。
IF — ビジネス オブジェクトを使用した THEN 表現:
IF Application.Income / Property.Price < 0.2 THEN Assert new CreditRating( Application)
ルール 2: 信用格付けを評価する
宣言型表現:
申請者は、申請者の信用格付が725を超える場合にのみ承認されるべきです。
ビジネス オブジェクトを使用した IF-THEN 表明および保証
IF Application.SSN = CreditRating.SSN AND CreditRating.Value > 725 THEN SendApprovalLetter(Application)
ファクトを次の表にまとめます。
事実 | 田畑 |
---|---|
アプリケーション – 住宅ローンアプリケーションを表す XML ドキュメント | - 収入 = $65,000 - SSN = XXX-XX-XXXX |
プロパティ – 購入するプロパティを表す XML ドキュメント | - Price = $225,000 |
CreditRating – ローン申請者の信用格付けを含む XML ドキュメント | - 値 = 0 – 800 - SSN = XXX-XX-XXXX |
最初は、ルール エンジンの作業メモリと議題が空です。 アプリケーションがアプリケーションとプロパティのファクトを追加すると、ルール エンジンの作業メモリと議題が次のように更新されます。
ワーキング メモリ | 議題 |
---|---|
-アプリケーション - プロパティ |
ルール 1 |
ルール 1 は、条件 (Application.Income/ Property.Price < 0.2) が一致段階中に true に評価されたので、議題に追加されます。 作業メモリに CreditRating の事実がないため、ルール 2 の条件は評価されませんでした。 議題内の唯一のルールはルール 1 であるため、ルールが実行され、議題から消えます。 ルール 1 に定義されている 1 つのアクションによって、新しいファクト (申請者の CreditRating ドキュメント) が作業メモリに追加されます。 ルール 1 の実行が完了すると、制御はマッチフェーズに戻ります。 一致する唯一の新しいオブジェクトは CreditRating ファクトであるため、一致フェーズの結果は次のようになります。
ワーキング メモリ | 議題 |
---|---|
-アプリケーション - プロパティ - クレジット評価 |
ルール 2 |
この時点でルール 2 が実行され、結果として、承認レターを申請者に送信する関数が呼び出されます。 ルール2が完了すると、フォワードチェイニングアルゴリズムの実行が一致フェーズに戻る。 照合する新しいファクトがなくなり、議題が空であるため、前向き推論は終了します。ポリシーの実行が完了します。