[rules-users] Problem with Java enums in Guvnor "multiple field constraints"?

enkidu paul_blampied at yahoo.co.uk
Wed Oct 5 11:43:02 EDT 2011


I've been playing with Drools and Guvnor and think I've encountered a problem
with Java enums in Guvnor. I've searched for previous enum bugs and seen
that a lot have been fixed, but I've tried Guvnor 5.2.0 and 5.3.0.CR1 and it
happens in both.

The problem seems to happen when you use enums in a "multiple field
constraint" on a fact, eg:

  There is a Person with:
    any of the following:
      role equal to Role.TEACHER
      role equal to Role.PARENT

Then using "view source" to see the generated DRL, the enum values are
enclosed in double quotes, ie:

  rule "test"
      dialect "mvel"
      when
          Person( role == "Role.TEACHER" || role == "Role.PARENT" )
      then
  end

If I just do a single field constraint then it comes out fine, eg. Person(
role == Role.TEACHER )

Is this a bug or am I doing something stupid? I've seen posts recommending
the use of string constants rather than enums - is this the workaround?

Below is my simple Java model for completeness:

public enum Role {
    TEACHER,
    STUDENT,
    PARENT
}

public class Person {

    private String name;
    private Role role;

    public Person( String name, Role role ) {
        this.name = name;
        this.role = role;
    }

    public String getName() { return name; }

    public Role getRole() { return role; }
}


--
View this message in context: http://drools.46999.n3.nabble.com/Problem-with-Java-enums-in-Guvnor-multiple-field-constraints-tp3396901p3396901.html
Sent from the Drools: User forum mailing list archive at Nabble.com.



More information about the rules-users mailing list