Java 如何评估值是否在DROOLS中的值列表中
在DROOLS中,如果我们查看值“foo”是否在列表{fu,fa,fe,fi,fo,foo,fum,doodle,dee}中,当MVEL将其解析为DRL时,我们得到如下结果: 如果(“foo”=“fu”| |“foo”=“fa”| |“foo”=“fe”| |……) 只要列表相对较小,这就可以了,但我们需要查看所提供的zipCode是否在zipCodes列表中,因此我们需要它来创建更像这样的内容: Set zipCodes=getAllzipcodesinnhyandhalfofca() if(zipCodes.contains(customer.getZipCode()){ …规则的计算结果为true } 我在寻找如何教DROOLS以我们需要的方式进行比较,而不是像现在这样 想法、评论、建议 谢谢Java 如何评估值是否在DROOLS中的值列表中,java,drools,mvel,Java,Drools,Mvel,在DROOLS中,如果我们查看值“foo”是否在列表{fu,fa,fe,fi,fo,foo,fum,doodle,dee}中,当MVEL将其解析为DRL时,我们得到如下结果: 如果(“foo”=“fu”| |“foo”=“fa”| |“foo”=“fe”| |……) 只要列表相对较小,这就可以了,但我们需要查看所提供的zipCode是否在zipCodes列表中,因此我们需要它来创建更像这样的内容: Set zipCodes=getAllzipcodesinnhyandhalfofca() if(
Jason您可以根据Drools规则调用Java方法。因此,您编写了一个方法
boolean isZipCodeInArea(String area, String zipCode) {
return getZipCodesOf(area).contains(zipCode);
}
然后在Drools规则中,当您可以调用此函数时:
when
isZipCodeInArea("area", "foo")
您可以使用in运算符并在逗号分隔的列表中指定值。如果您的目的是验证输入,则可以使用“not in”并在输入值不在列表中时采取适当的操作 e、 g。
什么时候
模型(字段名在(“fu”、“fa”、“foo”))
然后
结束
$myThing.foo在(“a”、“b”、“c”)