动态业务规则

时间:2011-08-05 13:16:40

标签: c# .net dynamic dsl business-rules

我正在创建一个界面,用户可以在运行时使用特定于域的对象构建自己的业务规则,将这些规则保留在数据库中,然后由应用程序使用。其中一些是复杂的谓词,而另一些则需要域对象的组合,这似乎是相当复杂的关系。到目前为止,我已经研究过GoF,使用eval的动态和CodeDom。有没有人建议应该使用什么?

4 个答案:

答案 0 :(得分:5)

实际上,您可以使用WF规则引擎API开发应用程序,而无需使用WF。 http://blogs.microsoft.co.il/blogs/bursteg/archive/2007/08/09/WF-Rules-Engine-without-Workflow.aspx这将使您免于大量工作。

答案 1 :(得分:1)

Kaizen,根据动态规则的范围和种类,您最终可以使用工作流引擎,例如MS WF将规则定义为工作流活动,例如......这样您就可以隔离逻辑而不需要当您需要更改工作流程中的任何内容时,可以完全重建应用程序。

这可能不是最佳解决方案,但可能是另一种选择......

答案 2 :(得分:1)

花了一年的时间建立一个规则引擎并在方法上进行战斗,我可以告诉你这不容易。特别是当你专注于你的目标是什么时。如果它要让用户为系统编写规则,那么你真的需要专注于该领域。对于大多数商业用户来说,对开发人员来说容易的事情可能要困难得多。我们在Excel中构建了一个规则编写平台,编译成C#并动态运行...问题是用户发现电子表格和逻辑流程过于复杂,并聘请ASp.NET承包商来构建规则。

BizTalk有一个我相信可用于的引擎.Ntt应用程序 http://www.microsoft.com/biztalk/en/us/business-rule-framework.aspx

玩得开心!

答案 3 :(得分:1)

规则多久更改一次?构建一个让业务构建(和版本)自己的规则的系统比构建一个允许程序员动态更新规则的系统更具挑战性。

当一个过去的项目出现了类似的要求时,该公司承认,虽然是,但规则将会改变;他们不会经常改变 来进行更新。 我们最终将IronPython用于动态部件并将代码存储在数据库中,系统将在加载时提取适当的规则。应用程序的其余部分是用C#编写的。为我们和业务赢得胜利。