rule "typeChild should be unique"
when
RuleActivator( targetMessage == "QWERTY" )
$o: Parent()
$o2: ListGeneric(typeChild != null) from $o.getDetails()
$o3: ListGeneric(typeChild != null && (typeCode == $o2.typeCode)) from $o.getDetails()
then
insert(new ValidationError(ValidationUtil.qualifyField($DECL_ROOT, $o3, "typeChild"), "UNIQUE"));end
如果ListGenric中的任何typeChild相同,我想触发规则。 详细信息是Parent()bean中的列表,如下所示:
protected List<ListGeneric> details;
还有它的制定者和吸气剂。 我现在遇到的问题是,它开始比较列表中的第一个项目,并且始终是相同的。因此,它每次都会触发规则。 那么,如何在其中插入计数,如果它比较两次然后应该触发规则? 或者,如果还有其他更好的解决方案,请推荐。
答案 0 :(得分:0)
您需要测试是否存在具有特定typeCode的第二个ListGeneric。
rule "typeChild should be unique"
when
RuleActivator( targetMessage == "QWERTY" )
$o: Parent()
$lg: ListGeneric( typeChild != null, $tc: typeCode ) from $o.getDetails()
exists ListGeneric( typeChild != null,
this != $lg,
typeCode == $tc ) from $o.getDetails()
then
// duplicate typeCode $tc
end
请注意this != $lg
确定两个ListGeneric对象不同。
可能有多个重复的类型代码,规则将为每个代码触发一次。