如何打破流口水,Mvel方言的循环?



在下面的规则中,then-part中的逻辑正在对所有通过给定条件的子对象执行,我想在逻辑之后打破循环 在 then-part 只执行一次,如何做到这一点

rule "test"
            when
                Parent( $childList : childList != null, childList.empty == false)
                Child('testing'.equalsIgnoreCase(attribute)) from $childList
            then
                // testLogic
end

如果您不需要在 RHS 中引用Child对象(或其任何属性(,则可以使用 exists 运算符:

rule "test"
when
 Parent( $childList : childList != null, childList.empty == false)
 exists Child('testing'.equalsIgnoreCase(attribute)) from $childList
then
 // testLogic
end

如果由于某种原因您确实需要 Child 对象或其任何属性,您可以执行以下操作(尽管不是很好(:

rule "test"
when
 Parent( $childList : childList != null, childList.empty == false)
 $c: Child('testing'.equalsIgnoreCase(attribute)) from $childList.get(0)
then
 // testLogic
end

希望对您有所帮助,

无限循环的原因应该通过识别它是自循环还是复循环来知道。

规则
  • 内的事实修改将激活同一规则(自身(
  • 规则
  • 内的事实修改将激活不同的规则(复杂(,并激活原始规则。

您可以在规则名称旁边使用"无循环"作为无循环 true

您还可以通过使用议程组、检查条件或类似标志来限制。这取决于您的复杂性。

相关内容

  • 没有找到相关文章

最新更新