误区...
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,规则可以“测试”条件以在内存中找到匹配结果数千次。
没有人愿意在应用程序中如此频繁地调用数据库。
希望能帮助到你