有序执行一个DRL文件中定义的多个规则
我在一个DRL文件中定义了多个规则,如何设置顺序,想要一个接一个地执行(从上到下)。
I defined multiples rules in one DRL file, how to set order, want to execute one after another (top to bottom).
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
当更新插入的事实(对象)时满足条件时,规则会自动触发。但如果你想从上到下运行它,你可以在规则中设置一个名为 salience 的属性。它采用的值是一个整数。首先执行具有最高显着性的规则。
规则“必须名字”
显着性10
什么时候
(人(名字=="" || 名字==null))
然后
...
结尾
Rules are fired automatically when the conditions are met when the inserted facts(objects) are updated. But if in case you want to run it from top to bottom, you can set a property called salience in the rule. The value it takes is an integer. The rule with the highest salience is executed first.
rule "First name mandatory"
salience 10
when
(Person(firstName=="" || firstName==null))
then
...
end
如果您使用显着性,您将杀死规则引擎,因为您将强制规则执行顺序而不是让引擎决定。
干杯
If you use salience you will be killing the rule engine, because you will be forcing the rule execution order instead of letting the engine decide.
Cheers
优先考虑规则是最好的形式。
使用 Salience 确定每个规则的优先级,其中数字越大表示优先级越高。
规则的默认显着性为 0,您可以指定负显着性,例如,如果您希望最后触发规则。
Setting priority to rules is the best form.
Use Salience to determine the priority of each rule, where a higher number denotes a higher priority.
The default Salience for rules is 0, and you can give negative Salience, for example,if you want a rule to be fired last.