有关规则引擎的神话是什么?

时间:2010-11-07 23:54:15

标签: drools rule-engine expert-system jess jrules

我正在撰写关于规则引擎技术的演示文稿,特别是JBoss Drools。

有关规则引擎的一些“神话”。

我能想到的是,它允许业务用户控制规则引擎,我相信这是可能的,但它需要控制和教育 - 而且并非所有业务用户都能够这样做。

你同意/不同意吗?有没有人有任何想法?

很高兴在知识共享下发布我的最终“调查结果”......

3 个答案:

答案 0 :(得分:7)

我不知道神话,但我同意让商界人士保持规则不是一个扣篮。

我认为期待商界人士对IT工作所需的耐心和肛门保持关注是一种幻想。自从3G语言(编程的图形化方法)被提供作为一种让秘书编写代码的方式以来,它一直在发挥作用,因此程序员都可能被解雇。

我要指出,随着规则集的大小增加,确保正确和自我一致的可能性会下降。如果你的规则集有数以千计的规则,那就很难测试。

说到这一点,组合的组合爆炸将使测试规则引擎变得困难。

规则引擎是非常棒的技术,但要小心。

答案 1 :(得分:5)

实际上,在大量使用drools之后,我不同意你关于用户能够轻松做事的观点,我认为为用户提供一个简单的界面来动态生成强大的规则是相对微不足道的。

我肯定会在列表中添加一个:

  

神话:规则引擎很慢!

不是这样,再次,我很容易通过流氓每秒推动成千上万的事件。

我绝对厌恶的另一个是:

  

误区:重量太重,使用起来很复杂。

废话,语法很简单,有几行java,你可以做一些非常时髦的东西!对不起,如果这似乎是一个咆哮,在前一个雇主的几个月的废话,因为我试图介绍这个技术!

答案 2 :(得分:1)

...神话
1 /商业用户可以:
作者规则
部署他们 测试他们
运行它们 没有IT的帮助......我已经为一位客户提供了培训,他实际上认为这是真的,因为推销员这么说......啊啊啊他们做了我的一天/ mounth /年!!!

您能否认真考虑一家将承担风险在IT团队后部部署服务的公司?没办法!
你也需要安全性来阻止我写一条规则说明:
如果客户的名字是“Damien”那么100%折扣 - groovy baby!

非技术用户无法完成项目架构

2 /您可以轻松管理规则项目,而无需担心任何事情 您可以处理的规则数量有限。理论上,人们可以拥有他们想要的尽可能多的规则,但这并不完全正确。 JRules停止从大约3,000个规则同步Eclipse和RTS之间的规则。 如果您在RETE中拥有100,000个规则的项目,则需要永远。构建树需要很长时间。即使在顺序模式下,也需要很长时间才能继续。
您不能使用规则存储库,如“我的文档”文件夹,只是继续添加规则。

3 /商业用户无需任何培训即可编写各种规则 不同的事情:
a /条件的顺序可能影响性能 b /某些规则很复杂,需要很好地理解语言 c /使用的算法会影响执行结果
d /一个写得不好的规则可以将执行时间乘以n 我参与了一个项目,其中只有一条规则负责一些随机超时 e /一些复杂的问题可以在一条规则中表达出来 这个问题在一个规则中解决,并且有一个结果:
有四个高尔夫球手站在茶水中,从左到右依次排列 - Fred右边的高尔夫球手穿着蓝色裤子 - 乔排在第二位 - 鲍勃穿着格子裤 - 汤姆不在第一或第四位,他没穿橙色裤子 的 BTW:这是一个JBoss的例子。
企业用户如何做到这一点?

4 /规则引擎可以进行反向链接 我认为JBoss说他们可以,但我不确定。 Blaze和JRules不能。

5 / One不需要任何程序语言来编写规则 正确,但你需要一些来执行规则。除非您使用简单的XSD作为对象模型。但是你的决策服务不会那么聪明。

6 /它比JAVA慢 当然,但是通过使用BRMS,您正在外化业务逻辑,因此它具有成本。
就像外部化数据一样。数据库调用有成本 我已经将5000个对象发送到JRules的工作内存中,其中包含4个虚拟规则的项目,这些规则相互调用...性能测试目的
结果:在75秒内执行了1900万条规则。做你的数学......这不是那么慢。

7 /你可以在规则中做任何事情 不要在规则中进行数据库调用(特别是在条件中)。理论上,使用Rete,规则可以“测试”条件,在内存中找到匹配结果数千次。
没有人想在应用程序中调用数据库。

希望它有所帮助