4

次のような状況を処理できるエンジンを探しています。

顧客オブジェクトがアタッチされた注文オブジェクトがあります。
ルール:
order.customer.id = 186 および order.industry = 23 の場合、order.price = 100

NxBRE を見つけましたが、これはやり過ぎですか?

このような状況に対して他の人は何をしていますか?ハードコーディングするか、Eval を使用しますか?

4

3 に答える 3

1

私も同様の状況に遭遇し、既存のエンジンを使用するのではなく、独自のエンジンを構築することを考えました。現在のロジックに変更があった場合や、新しい根拠で進めた場合は非常に苦痛になるからです。エンジンがどのように機能するかを知ることができれば、どんなロジックにもオープンであり、最良のことは、ローカルおよびグローバルの最適を見つけるソリューションを構築できることです!

以下のスプーン フィード エンジンのリンクを参照してください。新しいエンジンの作成に役立ちました。

起動するにはここをクリック

于 2014-03-19T06:12:05.303 に答える
0

もっと単純なバージョンを探していて、このようなコードを書きたい場合は...

    [TestMethod]
    public void GreaterThanRule_WhenGreater_ResultsTrue()
    {
        // ARRANGE
        int threshold = 5;
        int actual = 10;

        // ACT
        var integerRule = new IntegerGreaterThanRule();
        integerRule.Initialize(threshold, actual);

        var integerRuleEngine = new RuleEngine<int>();
        integerRuleEngine.Add(integerRule);
        var result = integerRuleEngine.MatchAll();

        // ASSERT
        Assert.IsTrue(result);
    }

...またはこのように...

[TestMethod]
public void GreaterThanRule_WhenGreater_ResultsTrue()
{
    // ARRANGE
    int threshold = 5;
    int actual = 10;

    // ACT
    var integerRule = new IntegerGreaterThanRule(threshold);

    var integerRuleEngine = new RuleEngine<int>();
    integerRuleEngine.ActualValue = actual;
    integerRuleEngine.Add(integerRule);

    // Get the result
    var result = integerRuleEngine.MatchAll();

    // ASSERT
    Assert.IsTrue(result);
}

...それなら、ゆっくりとルール エンジンを構築しているブログをチェックしてみてください。 http://www.duanewingett.info/2015/01/21/SimpleCRuleEnginePart1TheRuleEngine.aspx

于 2015-01-22T22:24:35.257 に答える