Search code examples
javadroolsrulesrule-engine

Java - Drools validate list of object values


I want to my Drool generic one.
This is my Java class structure:

public class RulesModel {
private String field;
private List<Object> values;
public String getField() {
    return field;
}
public void setField(String field) {
    this.field = field;
}
public List<Object> getValues() {
    return values;
}
public void setValues(List<Object> values) {
    this.values = values;
}
}

And I want my rule like below:

rule "sample"
when
    $rule : RulesModel( field == "source", value == "facebook", value == "youtube", value != "instagram" )  
then
    // actions
end 

How to validate list objects in Drools?


Solution

  • What you are looking for are the contains and not contains operators:

    (Assuming that your RuleModel contains Strings as values)

    rule "sample"
    when
        $rule : RulesModel( field == "source", values contains "facebook", values contains "youtube", value not contains "instagram" )  
    then
        // actions
    end 
    

    You can get more information about Drools' supported operators here: https://docs.jboss.org/drools/release/7.37.0.Final/drools-docs/html_single/index.html#drl-operators-ref_drl-rules

    Hope it helps,