基本规则引擎架构

时间:2010-09-01 23:57:42

标签: .net xml linq-to-xml dsl

我们目前正在开发一个.NET项目,该项目涉及根据一组用户定义的规则分析XML文档。这是一个例子:

<Person>
   <Name>Bob</Name>
   <Cars>
      <Car Type="SUV" Color="Black"/>
      <Car Type="Sports" Color="Red"/>
   <Cars/>
</Person>

EG规则: 如果人的名字=“鲍勃”并且有2辆汽车那么...... 如果一个人至少有一辆SUV和至少一辆跑车那么......

我们将构建一个“规则构建器”向导,引导用户完成创建规则的过程。除此之外,其他一个复杂因素是XML文档的模式将依赖于客户需求,因此我们需要一种快速的方法来适应新的模式。任何人都可以深入了解底层技术可以最好地实现这一目标吗?以下是我们考虑过的几件事:

  1. Dynamic Linq to XML
  2. 将XML分解为SQL表并生成动态SQL语句
  3. 创建某种类型的自定义DSL(Iron Python,Boo等)
  4. 最大的担忧是能够即时实施规则,速度以及轻松/灵活地编写规则。

    想法?

1 个答案:

答案 0 :(得分:2)

不要建立这个。使用像BRE that comes with BizTalk这样的正向链规则引擎。