from子句的最基本用法不起作用,即使我知道列表中有元素,并且没有条件从该列表中提取元素,并且我有其他规则正常工作。
发生了什么,我的问题中有很多变量,但我已简化为:
有了这两个规则,第一个规则就是fixedShipmentValueData
列表,至少有一个元素。但是,第二个规则没有被触发,即使它与第一个规则唯一不同的是使用from子句并放置一个变量名。
rule "Print list value"
ruleflow-group "fixed-values"
no-loop
when
cParams: CustomerParameters(list: fixedShipmentValueData)
then
System.out.format("There are %s elements at fixedShipmentValue and fixed value is %s%n",list.size(),
((ParameterValues)list.get(0)).getFixedShipmentValue());
end
rule "Do something with the list"
ruleflow-group "fixed-values"
no-loop
when
cParams: CustomerParameters(list: fixedShipmentValueData)
ParameterValues($fixedShipmentValue: fixedShipmentValue) from list
then
System.out.format("fixed Shipment Value is %s%n", $fixedShipmentValue);
end
这看起来很简单......我已经花了足够的时间没有想法。
答案 0 :(得分:0)
没有看到CustomerParameters的Java代码,ParameterValues以及创建,编写和插入事实的应用程序部分,我知道只有一个场景可以像你告诉它那样重现效果。考虑一下:
{X}中的List<Base>
是字段list
。子类SubA
和SubB
都延伸Base
。创建X,将类SubA
的对象添加到list
。规则(如&#34;打印列表值&#34;)将显示列表不为空。
但是,使用
等模式的规则X( $list: list )
SubB() from $list
永远不会触发,因为Base.list
中没有SubB&#。