代码之家  ›  专栏  ›  技术社区  ›  rcreswick

设计规则系统的好参考/提示?

  •  6
  • rcreswick  · 技术社区  · 17 年前

    我经常需要实现某种用户可编辑的规则系统——需求通常是不同的,以至于同一个系统不能直接适用,所以我经常遇到同样的问题——如何设计一个

    1. 是可维护的
    2. 恰当地平衡表达能力和易用性
    3. 很容易扩展(如果/当我出错时)。

    我认为规则系统/DSL非常有价值,但我对自己正确设计它们的能力感到不舒服。

    你有什么推荐信/建议可以帮助你更容易做到这一点?
    由于我遇到的问题的性质,现有的语言通常不适用。(例如,你会 要求普通计算机用户学习python,以便编写电子邮件过滤器。)同样,规则 例如 JESS ,只是部分解决方案,因为一些(更简单的)用户界面需要构建在规则语言之上,以便非程序员可以使用它。这个界面总是涉及删除一些功能,或者使这些功能更难使用,而且 process 提出了上述相同的问题。

    编辑: 澄清一下,问题是关于 设计 一个规则引擎,我不是在寻找一个预先构建的规则引擎。如果您建议使用规则引擎,请解释它如何解决有关做出良好设计决策的问题。

    5 回复  |  直到 17 年前
        1
  •  2
  •   stombeur    17 年前

    我们有一个由其供应商提供的该工具的内部演示: http://www.rulearts.com/rulexpress.php

    作为一家公司,我们在规则引擎(例如Cleverpath Aion)方面有很多经验,但主要是面向开发人员的工具。这个工具(rulexpress)非常面向商务人士。这不是一个规则引擎。但是它可以输出XML中的所有数据(基本上是你喜欢的任何格式),这是我们将考虑的输入,作为真正的规则引擎,例如Windows工作流基金会(不是一个更大/更好的规则引擎,但仍然)。

    这个工具本身看起来相当不错,这是我在任何面向开发人员的工具中从未见过的东西。

    还有一些围绕WF构建的规则管理工具,如果这是您选择的规则引擎,请查看InRule。


    原问题澄清后编辑: 虽然我很久以前就涉猎过(JavaCC写了一点语言),但现在我认为这是一个糟糕的时间投资。我上面的评论也是本着同样的精神:使用一个简单的规则引擎,一个简单的(商业)用户界面,让业务用户易于维护,只需花费时间将两者结合起来。

        2
  •  1
  •   Mike Becatti    17 年前
        3
  •  0
  •   Jay Shepherd    17 年前

    考虑Ruby实现的是Ruleby( http://ruleby.org/wiki/Ruleby )

        4
  •  0
  •   Joel Martinez    17 年前

        5
  •  0
  •   Rinat Abdullin    17 年前

    首先,通常不建议让最终用户定义规则。这是因为他们没有开发背景,可以简单地编写进入无限循环的“代码”,或者做其他奇怪的事情。

    因此,要么系统必须防止这种行为(从而使其更复杂),要么接受这种可能性,要么不允许最终用户这样做。

    如果你正在和我一起工作。NET之后,通过扩展Boo编译器来创建自己的DSL就非常容易了(也就是说,使用Rhino.DSL,你可以用一个类创建简单的DSL)。