2011-01-03 10 views
3

Ich möchte überprüfen, ob eine Sammlung enthält nicht drei Elemente. In Java würde ich tunDrools-Regel, um eine Sammlung mit zusammengesetzten Wert Einschränkung zu überprüfen

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

Wie kann ich das mit Drools tun? Ich habe zwei Stunden gesucht und alles versucht, aber ich kann keine Lösung für dieses "einfache" Problem finden. Ich habe die "Compound Value Restriction" gefunden, die ich genau benötige, aber sie funktioniert nicht für Collections und den "contains" -Operator.

Ich würde mich über Ihre Antworten freuen.

Nathanael

Antwort

2

Das tut, was der Java-Code tut:

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

Vielen Dank Ich habe den Wald durch die Bäume vermisst! – Nathanael

0

Ich glaube, Sie können Regel-Dialekt "java" nehmen.
Folgendes Beispiel kann Ihnen helfen.

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")); 

} 

Hoffe diese Hilfe. Danke.

Verwandte Themen