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.
_______________________________________________
rules-users mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/rules-users

Reply via email to