在下面的规则中,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
您还可以通过使用议程组、检查条件或类似标志来限制。这取决于您的复杂性。