목록이 포함 된 클래스가 있습니다. 목록의 항목에는 하위 유형이 있습니다. 이 클래스의 모든 사실에는 동일한 하위 유형이있는 항목의 목록이 포함되기를 기대합니다. 같은 목록에서 오는 모든 항목을 가져와 다른 하위 유형이 있는지 확인하는 규칙을 작성하려고합니다. 다음 시도는 마지막 조건 컴파일에 실패 :Drools 규칙 일치하지 않는 목록 개체에서 가져 오기
이public class ListContainer {
private List<MyType> myTypes;
//getters-setters-hashcode-equals generated by eclipse
...
}
public class MyType{
private String subType;
//getters-setters-hashcode-equals generated by eclipse
...
}
rule "invalidate inconsistent subtypes"
when
$list: ListContainer($myTypes: myTypes)
$myType1 : MyType() from $myTypes
$myType2 : MyType() from $myTypes
not($myType1.subType == $myType2.subType)
then
//actions
end
컴파일 에러가 나는 의심 $ myType1.subType 해결할 수없는 말했습니다을 그 나는 원래 캐스트되지 않습니다에서 키워드로 얻는 아이템 수업. 그러나 나는이 것을 컴파일하려고하지 않고있다. 나는이 문제에 대한 최상의 규칙을 찾고있다.
대단히 감사합니다. .
rule "invalidate inconsistent subtypes"
when
$list: ListContainer($myTypes: myTypes)
$myType : MyType($subType: subType) from $myTypes
exists MyType(subType != $subType) from $myTypes
then
//actions
end
첫 번째 질문 - MyType에 getSubType() 메서드가 있습니까? – Steve
두 번째 질문 - MyType의 목록 인스턴스에있는 개체입니까? 당신은 캐스팅에 대해 이야기하지만, DRL은 MyType에 아무것도 캐스트하지 않습니다. MyType의 인스턴스와 일치합니다. – Steve
규칙 구조는 모든 불평등 쌍마다 활성화됩니다. 즉 [1, 2, 3]의 목록에 대해 [1, 2], [1, 3], [2, 1], [2, 3], [3,1] [3, 2]. 너가 원하는게 그거야? – Steve