0

我刚刚开始使用drools 规则引擎。我在一个事实中有两个列表,并且想要迭代地访问其中的值。我尝试了一件小事,但它没有用。我需要在流口水中实现类似嵌套 for 循环的东西。在这两个列表中,一个是类型String,另一个是用户定义的对象。

rule "for the Handling Exception"

when
$billInfo : BillingInfo ( $except : exceptions , $handException : handlingExceptions , $rate : rate , $price : price);

  HandlingException ( $exc : exceptionValue ; $exce : this  )from $except
 exists ( String ( $handExc : this == $exc  ) from $handException)
then 

$billInfo.setPrice($price + ($rate * $exce.getDiscount()) );


end

上面,除了是用户定义的列表,$handexception属于String.

4

1 回答 1

0

如果您要实现的目标是检查 BillingInfo 中是否至少有一个 HandlinExpection ($h) 和一个 String ($s),来自 handlingExceptions,例如:$h.exceptionValue == $s,您可以做这样的事情:

when
    $b: BillingInfo()
    exists (
        $h: HandlingException(exceptionValue memberof $b.handlingExceptions) from $b.exceptions
    )
then

end

希望能帮助到你,

于 2013-02-09T13:50:34.957 回答