0

我有一个非常简单的问题:对于一个规则,我想指定一个有效值的数组。我该怎么做?我已经看过“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 很陌生,这可能是问题所在;)...

丙亚

4

1 回答 1

1

也许完成你想要的最简单的方法就是改变你的状况,比如

plant in ($param) && "-" not in ($param)

这样"91","28","63"会触发规则,但"93","28","-"不会。Plain"-"也忽略了该规则。

如果您想要一个更好的解决方案,您可以为您的域提供另一个事实,例如使用一个布尔属性忽略,并为此设置另一个条件。此解决方案的详细信息需要有关您的实际用例的更多信息,但我希望您能理解。

于 2013-10-11T15:24:17.440 回答