什么样的引擎用于配置规则检查?

时间:2010-09-02 07:35:01

标签: .net

抱歉英语不好。

我有一个配置应用程序,用户可以“手动”选择或删除系统的某些功能,其他功能必须由应用程序使用规则自动选择或消除。

规则的形式如下:
a IMPLIES b (如果选择了 a 功能,则功能 b 必须为选择)。
b 冲突 c (如果选择功能 b ,则功能 c 必须为消除)。
d AND e IMPLIES f (如果要素 d 并且选择了 e 功能,必须选择 f 功能。)
等...

某些规则可能会导致冲突,例如:
1) a IMPLIES b
2) a IMPLIES c
3) b 冲突 c
如果选择了 a 功能,则无法确定功能 c 的状态(已选择/已删除),并且我必须能够向用户显示所涉及的规则。

我正在寻找有关使用何种引擎(求解器,检查器等)的建议。 ñ 最好是我可以使用.NET语言的开源软件。

由于

今夜

1 个答案:

答案 0 :(得分:0)

听起来你正在寻找一些logic programming solution。也许F#是你的选择,但如果你只是需要它来检查配置规则,那就太过分了。

如果你想自己实现它:对于简单的规则if-Statements也可以完成这项工作(不,用简单的方法来解决简单的问题并不是一种耻辱)。如果检查规则复杂,易变甚至动态,请查看Specification Pattern(有关详细信息,请参阅Evans & Fowler's article in PDF)。它适用于复杂的检查例程,但不会产生使用第三方引擎或其他实现语言的额外成本。