如何建立可以执行用户定义的规则引擎,如果在C#.NET其他规则
-
12-09-2019 - |
题
予有需要建立在我所喜欢这个规则被存储在Excel工作表的新的规则引擎,以表格的格式。
<If> "Name = Nita "
<Value> "200"
<else> "Name = Gita"
<value> "300"
<LookInto> "/Name/@Income"
我有两个文件说1N的2.我需要在第一个文件地看到,无论是名称还是丹田歌。基于执行,我将获得价值。现在,这个结果值我需要第二个文件,这是一个XML文件,其路径被定义为比较。
可以有人建议我是有在C#什么我可以有效地用于开发相同,,或任何人可以建议我怎么可以用C#实现这个..我需要一些想法相同的类设计。
我使用的NET 1.1。
解决方案
首先,你需要创建一个可以定义规则类。一旦你有了到位这种结构中,你将能够建立一个使用这些类的引擎。
我想看看创造一些这样的:
class RuleEngine
{
public RuleMatch[] RuleMatches { get; set; }
public void RunEngine(inputdata...)
{
// do processing in here
}
}
class RuleMatch
{
public Rule[] Rules { get; set; }
public Object ValueIfMatched { get; set; }
}
class Rule
{
public String FieldName { get; set; }
public MatchType Match { get; set; }
public Object Value { get; set; }
)
enum MatchType
{
Equal = 1,
NotEqual = 2,
GreaterThan = 4,
LessThan = 8,
Like = 16
}
然后再从那里上....
如果它改为有一组可以添加到一组规则的规则,例如(A和B)或(c和d)这种结构会更好 - 我会离开这个给你考虑现在。
请注意我使用了一些C#3.0结构在这里,您将需要1.1创建完整的私有属性。
其他提示
您可以创建一个嘘DSL,但我不知道这是否会与1.1工作
您打算通过.NET 1.1非常有限。我想你的第一个步骤将是升级。
后续步骤可能包括内置在Windows Workflow Foundation的规则引擎;该发动机中,并与它相关联的图形设计师,被设计为WF的可用外部。
另一件事看将是验证应用程序块也就是微软企业库的一部分。
这一切都不六年前存在了,当.NET 1.1统治地球。
或者你可以让别人做这个工作,用好.NET规则引擎像InRule技术的产品,IBM / ILOG规则.NET或火焰顾问.NET。他们的工作很好,会给你在.net中强大的规则环境。
不隶属于 StackOverflow