我应该在C#中创建一个简单的规则引擎。关于我如何进行的任何线索?它是一个简约的规则引擎,并将使用SQL服务器作为后端。我们是否有通常适用于规则引擎的一般蓝图或设计模式?我可以使用哪种.Net技术来设计一种?任何指示都会有所帮助。 感谢。
答案 0 :(得分:14)
如果您使用的是.NET 3.0或更高版本,则需要can use the Rules Engine of Windows Workflow Foundation而无需实际使用工作流程。
我在一个项目上完成了这个,你可以使用SQL或XML作为后端,它运行得很好。您可以使用Workflow示例附带的IDE并将其放入您自己的应用程序中。这很棒。
答案 1 :(得分:3)
我不敢相信你会实现自己的,因为有很多可用的商业和开源。
我建议您看看InRule是一个价格合理的商业选择,还是开源领域的NxBRE。
答案 2 :(得分:1)
答案 3 :(得分:0)
您在寻找什么样的规则引擎?对于造型实践?如果是这样,请查看StyleCop。不是答案,但可能已经有了适合你的东西。
答案 4 :(得分:0)
您是否有任何方法指示? (如果这是由课程材料补充你目前正在学习什么?)如果这是一个相当基本的系统,你可能会找到成功的Deterministic Finite State Machine和Nondeterministic Finite State Machine
答案 5 :(得分:0)
如果您有业务分析师来编写高级规则引擎,那么请选择一个前面提到的规则引擎或自己动手(包括工作流)。如果没有,那么只需在代码中编写业务逻辑代码,如果您需要聘请业务分析师并重做系统,那么您就是个好地方。
答案 6 :(得分: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