关于c#:如何设计规则引擎?

关于c#:如何设计规则引擎?

How to design a rule engine?

我应该在C#中创建一个简单的规则引擎。 关于如何进行的任何线索? 这是一个简约的规则引擎,将使用SQL Server作为后端。 我们是否有一般适用于规则引擎的一般蓝图或设计模式? 我可以使用哪种.Net技术进行设计? 任何方向都会有所帮助。
谢谢。


如果使用的是.NET 3.0或更高版本,则可以使用Windows Workflow Foundation的规则引擎,而不必手动使用Workflow。

我已经在一个项目上完成了此操作,您可以将SQL或XML用作后端,并且效果很好。您可以使用Workflow示例随附的IDE,并将其放在自己的应用程序中。太好了


  • 考虑到有如此多的商业和开放源代码,我不敢相信您会自己实现。

  • 我建议您将InRule视为价格合理的出色商业选择,或者将其视为开源空间中的NxBRE。


  • 您也可以尝试
    http://rulesengine.codeplex.com/


    如果您想编写实现这样的东西...

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    [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);
    }

    ... 或这个...

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    [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);
    }

    如果您有业务分析师来对高级规则引擎进行编程,则可以-选择前面提到的规则引擎之一,或者自己滚动(包括工作流)。如果没有,那么只需用代码编写业务逻辑,并且如果您需要雇用业务分析师并重做系统,那么您将处在一个合适的位置。


    您对方法有任何指示吗? (即,如果这是课程材料的补充,您目前正在学习什么?)如果这是一个相当基本的系统,那么您可能会在确定性有限状态机和非确定性有限状态机方面取得成功


    您想要哪种规则引擎?对于样式实践?如果是这样,请查看StyleCop。不是答案,但是可能已经有适合您的东西。


    推荐阅读