java - 在 Drools 电子表格中使用 "ignore rule"回退循环遍历值数组

标签 java drools rules rule

我有一个非常简单的问题:对于规则,我想指定一个有效值的数组。我怎样才能这样做呢?我已经查看过“in”关键字,但是如果我使用该关键字,我会从 Drools 编译器中得到一个非常奇怪的异常。

Working example with "in"

此图显示了带有“in”关键字的工作规则。但我也希望用户能够根据需要将规则标记为“可忽略”,例如使用特殊字符。

如果我将以下规则与“忽略规则”-Extra(我也在其他规则中成功使用)一起使用,我会从 Drools 编译器收到一条非常奇怪的错误消息:

Not working rule

来自编译器的错误消息:

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/

相关文章:

java - 将音乐添加到 LibGDX 不起作用。收到错误消息,指出 newMusic 不是方法 最近还有其他人遇到此问题吗?

java - 错误:线程 “main”中的异常java.lang.UnsatisfiedLinkError:org.apache.hadoop.io.nativeio.NativeIO $ Windows.access0(Ljava/lang/String; I)Z

java - JBPM 6 - 以编程方式创建一个带有 "service task"节点的流程

outlook - 如何设置 Outlook 规则对 BCC 收到的电子邮件进行分类?

java - 我们怎么能忽略Java中的一些SonarQube规则呢?

java - 当用户按下“提交”按钮时如何保存用户的评分和评论?

java - 为什么 Java(Android?)将我文件的最后修改日期设置为明天?

xml - 在 JBoss Drools 中评估 XPath 表达式

java - 在 drool 中维护单独的规则文件

postgresql - Postgresql RULE 中不执行 VOLATILE 函数和 INSERTS