Drools规则写出最佳实践

时间:2012-11-07 13:41:44

标签: drools rule-engine rete

我一直在阅读一篇关于Drools性能的文章(JBoss Drools – Performance and Memory Internals),它解释了如何创建Rete树和节点,Drools如何为它们编制索引,以及为什么增加Drools中的对象数量几乎不会影响到执行它。 以智能方式编写的规则可以大大减少Rete Tree中的节点数量,从而进一步提高性能。

我想知道是否有Drools规则编写最佳实践,所以我可以用尽可能快的方式编写它们。

感谢。

2 个答案:

答案 0 :(得分:4)

我可以列出一些......

  • 将最受限制的条件置于顶部
  • 在规则中使用相同的条件顺序
  • 除非必须,否则不要使用eval。
  • 将恶意置于条件的最底层
  • 不要使用if语句内部结果
  • 使用布尔值的快捷方式会导致Drools 5.4出现JIT错误,所以请将它们用作House ( windowOpen == true )而不是House ( windowOpen )
  • 不要使用salience,在大多数情况下会导致维护地狱。

这当然不完整,只是我的2美分......

答案 1 :(得分:2)

我最近开始研究同样的问题,所以我可能不是回答这个问题的完美人选,但是,

  • 您认为应该优先考虑的条件 他们在顶部
  • 你应该非常努力地准备你当时的条件。
  • 使用Eclipse-Drool UI计划创建良好的规则
  • 切勿尝试在当时部分
  • 中使用if-statements
  • 使用布尔值快捷方式,因为它们经常会导致错误
  • 始终遵循RWTE的模式,即1.规则2. WHEN 3. THEN 4. END
  • 避免使用显着性,在大多数情况下会造成麻烦
  • 尝试将规则与自定义类集成,而不是预定义 设置用于您的操作
  • 您在部分应该相互关联时使用的条件 并且不为空(即,条件应与某些值相关联 有存在)。
  • 正确使用导入语句......
  • 绝对是这个列表永无止境,所以不断更新 你自己.... :)