10

I'm writing a presentation about rule engine technology, specifically JBoss Drools.

What are some of the 'myths' about rule engines.

One I can think of is that it allows business users to control the rule engine, I believe it is possible, but it requires control and education - and not all business users are able to do it.

Do you agree/disagree? Does anybody else have any thoughts?

Happy to release my final 'findings' under Creative Commons...

4

3 回答 3

7

I don't know about myths, but I agree that having business people maintain rules is not a slam dunk.

I think expecting business folks to have the patience and anal retentive attention to detail required to do IT's job is a fantasy. It's been in play ever since 3G languages (graphical approaches to programming) have been offered as a way to get secretaries to write code so the programmers could all be fired.

I'd point out that as the size of the rule set increases, the possibility of ensuring that it's correct and self-consistent goes down. If your rules set has thousands of rules it'll be hard to test.

Speaking of which, combinatorial explosion of combinations will make it hard to test a rules engine.

Rules engines are terrific technology, but be careful.

于 2010-11-08T00:01:28.373 回答
5

实际上,由于大量使用了口水,我不同意您关于用户能够轻松完成工作的观点,我认为为用户提供一个简单的界面以动态生成强大的规则是相对微不足道的。

我肯定会添加到列表中的是:

误区:规则引擎很慢!

不是这样,再次,我已经很容易地通过流口水推动了每秒数千个事件。

另一个我绝对讨厌的是:

误区:它太重且使用复杂。

废话,语法很简单,用几行java,你可以做一些非常时髦的东西!抱歉,如果这似乎是一个咆哮,在我试图介绍这项技术的时候,我在前任雇主那里有几个月的这种废话!

于 2010-11-08T00:04:24.723 回答
1

误区...
1/ 业务用户可以:
编写规则
部署它们
测试它们
运行它们
没有 IT 的帮助... 我已经为一位客户提供了培训,他实际上认为这是真的,因为销售员这么说...啊啊啊,他们成就了我的一天/一个月/一年!!!

您能认真考虑一家公司会冒险在 IT 团队的背后部署服务吗?没门!
您还需要安全性以防止我写一条规则说明:
如果客户的名字是“Damien”,那么 100% 折扣 - 很棒的宝贝!

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

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

3/业务用户无需任何培训即可编写各种规则。
不同的事情:
条件的顺序可能会影响性能。
b/ 一些规则很复杂,需要对语言有很好的理解
c/ 使用的算法会影响执行结果
d/ 一条写得不好的规则会使执行时间乘以 n。
我在一个项目中工作,其中只有 1 条规则负责一些随机超时。
e/ 一些复杂的问题可以用一条规则来表达。
这个问题用一个规则来解决,并且有一个结果:
有四个高尔夫球手站在茶边,从左到右排成一排。
- 弗雷德右边的高尔夫球手穿着蓝色裤子
- 乔排在第二位
- Bob 穿着格子裤
- Tom 不在位置一或四,而且他没有穿橙色裤子
顺便说一句:这是一个 JBoss 示例。
业务用户如何做到这一点?

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

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

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

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

希望能帮助到你

于 2012-04-18T13:48:16.230 回答