Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何评估值是否在DROOLS中的值列表中_Java_Drools_Mvel - Fatal编程技术网

Java 如何评估值是否在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(

在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以我们需要的方式进行比较,而不是像现在这样

想法、评论、建议

谢谢


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”)