を働いていない私は、このクラス階層があります。のDrools - forallは蓄積から
DomainParent{List<Details>, Boolean isCalculatedTypes(defaults false)}
Detail{List<SubDetail>}
SubDetail{TypeEnum}
そして、この列挙型:
TypeEnum{Type1, Type2, Type3}
を私はすべてのSubDetailsはどちらかを持っているかどうかを確認するDroolsのルールを作成したいですType1またはType2と、SubDetailsリストにTypeの異なる組み合わせが含まれている場合にトリガーする別のルール。
これまでのところ、私はすべてのSubDetailsがType3の場合であっても、どんな実行されません取得し、このルール、持っている:
rule "calculate sub details with types 1 and 2"
when
$parent: DomainParent(!isCalculatedTypes())
$subDetails: List() from accumulate($detail: Detail() from $parent.getDetails();
collectList($detail.getSubDetails()))
forall(SubDetail(getTypeEnum() == TypeEnum.1() || getTypeEnum() == TypeEnum.2() from $subDetails)
then
System.out.println("begin calculating types");
//DO SOMETHING
$parent.setCalculatedTypes(true);
update($parent);
System.out.println("DONE calculating types");
end
あなたの異論は確かに有効ですが、これはOPの問題にはまったく対応していません。これをコメントにするかもしれません。 – laune