Good references / tips for designing rule systems?我经常需要实施某种用户可编辑的规则系统-需求通常相差甚远,以至于同一系统不能直接适用,因此我经常遇到相同的问题-我如何设计规则系统那 我认为Rule系统/ DSL非常有价值,但是我对自己正确设计它们的能力感到不满意。
您需要提供哪些参考/技巧以帮助简化此过程? 编辑:澄清一下,问题是关于设计规则引擎,我不是在寻找预先构建的规则引擎。如果您建议使用规则引擎,请解释一下规则引擎如何解决有关制定良好设计决策的问题。
我们由供应商提供了此工具的内部演示: 作为一家公司,我们在规则引擎(例如Cleverpath Aion)方面拥有丰富的经验,但主要是面向开发人员的工具。该工具(rulexpress)非常面向商务人士。它不是规则引擎。但是它可以将所有数据输出为xml(基本上是您喜欢的任何格式),然后我们将其视为真实规则引擎的输入,例如Windows Workflow Foundation(不是更大/更好的规则引擎之一,但仍然是)。 该工具本身看起来还不错,这是我在面向开发人员的工具中从未见过的东西。 还有一些用于WF的规则管理工具,如果这是您选择的规则引擎,请查看InRule。
在澄清原始问题后进行编辑: 我们对此很幸运:http://msdn.microsoft.com/zh-cn/library/bb472424.aspx 首先,通常不建议让最终用户定义规则。那是因为他们没有开发背景,可以简单地编写进入无限循环的代码或其他奇怪的事情。 因此,要么系统必须防止这种行为(从而使其变得更复杂),要么接受这种可能性,要么不允许最终用户这样做。 如果您使用的是.NET,那么通过扩展Boo编译器来创建自己的DSL非常简单(即使用Rhino.DSL,您可以使用一个类的简单DSL)。 我发现的一件事是,能够将规则定义为表达式树,因此实现起来非常简单。正如您正确提到的,项目之间的需求是如此不同,以至于您每次都必须重新实现。表达式树与诸如访问者模式之类的东西共同构成了一个非常易于扩展的(无双关语)表达框架。而且,您可以轻松地将一个非常动态的GUI放在表达式树的顶部,这可以满足您的要求。 希望这听起来不像是我说的一切都像用锤子钉子一样,因为事实并非如此……只是根据我的经验,这已经不止一次了:-) 要考虑的Ruby实现是Ruleby(http://ruleby.org/wiki/Ruleby) |