我有一个非常简单的问题:对于规则,我想指定一个有效值的数组。我怎样才能这样做呢?我已经查看过“in”关键字,但是如果我使用该关键字,我会从 Drools 编译器中得到一个非常奇怪的异常。
此图显示了带有“in”关键字的工作规则。但我也希望用户能够根据需要将规则标记为“可忽略”,例如使用特殊字符。
如果我将以下规则与“忽略规则”-Extra(我也在其他规则中成功使用)一起使用,我会从 Drools 编译器收到一条非常奇怪的错误消息:
来自编译器的错误消息:
Unable to Analyse Expression plant == "91" || plant == "83" || plant == "63" || plant == "28" || "91":
[Error: Right side of logical operation is not of type boolean. Found class java.lang.String]
[Near : {... lant == "83" || plant == "63" || plant == "28" || "91" ....}]
^
[Line: 9, Column: 2] : [Rule name='CAS_11']
Predicate '"83"' must be a Boolean expression
[Line: 9, Column: 2] : [Rule name='CAS_11']
Predicate '"63"' must be a Boolean expression
[Line: 9, Column: 2] : [Rule name='CAS_11']
我希望你们能帮助我..我对 Drools 很陌生,这可能是问题所在;)...
C YA
最佳答案
也许实现你想要的最简单的方法就是改变你的状况
plant in ($param) && "-" not in ($param)
使用此 "91","28","63"
会触发规则,但 "93","28","-"
不会。普通的 "-"
也会忽略该规则。
如果您想要一个更高级的解决方案,您可以为您的域添加另一个事实,例如忽略一个 boolean 属性,并为此设置另一个条件。此解决方案的详细信息需要有关您的实际用例的更多信息,但我希望您能明白。
关于java - 在 Drools 电子表格中使用 "ignore rule"回退循环遍历值数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19315288/