2011-01-03 3 views
3

컬렉션에 이 아닌 세 요소가 포함되어 있는지 확인하고 싶습니다. 자바에서 내가 할 것입니다복합 값 제한이있는 컬렉션을 확인하는 규칙 Drools

!(collection.contains("s1") && collection.contains("s2") && collection.contains("s3")) 

내가 drools 함께 할 수 있습니까? 나는 2 시간 동안 수색을하고 아무것도 시도했지만이 "단순한"문제에 대한 해결책을 찾을 수는 없습니다. 필자가 정확하게 필요로하는 "복합 값 제한"을 발견했지만 컬렉션 및 "contains"연산자에서는 작동하지 않습니다.

답변에 감사드립니다.

나다나엘

답변

2

이것은 자바 코드가 수행하는 작업을 수행합니다

Collection(this not contains "s1" || 
      this not contains "s2" || 
      this not contains "s3") 
+0

고마워요. 나무를 통해 숲이 없어졌습니다. – Nathanael

0

나는, 당신은 "자바"규칙 방언을 수 있다고 생각합니다.
다음 샘플은 도움을드립니다.

global java.util.ArrayList responseList 

rule "checkCollectionRule" 
    dialect "java" 
    salience -1 

    when 

     eval(ifContains(responseList, val1, val2.....)) 

    then 

     responseList.add(new Boolean("true")); 

end 


function Boolean ifContains(List responseList, String val1, String val2,....) { 
    return (responseList.contains("s1") && responseList.contains("s2") && responseList.contains("s3")); 

} 

희망 도움말. 감사합니다. .