次の方法で共有


条件の評価とアクションの実行

ビジネス ルール フレームワークは、.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が完了すると、フォワードチェイニングアルゴリズムの実行が一致フェーズに戻る。 照合する新しいファクトがなくなり、議題が空であるため、前向き推論は終了します。ポリシーの実行が完了します。

こちらもご覧ください

ルール エンジン