Re: [rules-users] nested accessors with Sets
Mark Thanks for you help. Regards Fernando Meyer http://fmeyer.org [EMAIL PROTECTED] PGP: 0xD804DDFB On Aug 4, 2007, at 4:00 PM, [EMAIL PROTECTED] wrote: Edson, I opened ticket # 1058 for this - http://jira.jboss.com/jira/browse/ JBRULES-1058 Thank you, Mark -- Original message -- From: Edson Tirelli [EMAIL PROTECTED] Mark, Hmmm, something is going on with mvel integration... bellow must work. There are work arounds (like using plain java code, or using multiple patterns), but I think we need to fix that. Can you please include this info in the ticket. Thanks, []s Edson 2007/8/2, [EMAIL PROTECTED] [EMAIL PROTECTED]: Edson, Thank you for the response. I tried writing the in-line eval as suggested but get this Exception: org.drools.rule.InvalidRulePackage: Unable to determine the used declarations : [Rule name=State, agendaGroup=MAIN, salience=0, no-loop=false] at org.drools.rule.Package.checkValidity(Package.java:408) at org.drools.common.AbstractRuleBase.addPackage( AbstractRuleBase.java:288) at [...] This is my rule: rule State dialect mvel when $ca:CandidateAssociation( eval ( ! nurseDetails.stateLicensures.contains( patientDetails.state ) ) ) then retract( $ca ); end I haven't yet but, plan to open an issue in JIRA as requested Thanks for your help. Mark From: Edson Tirelli [EMAIL PROTECTED] Date: August 2, 2007 6:48:58 PM GMT-03:00 To: Rules Users List rules-users@lists.jboss.org Subject: Re: [rules-users] nested accessors with Sets Mark, Hmmm, something is going on with mvel integration... bellow must work. There are work arounds (like using plain java code, or using multiple patterns), but I think we need to fix that. Can you please include this info in the ticket. Thanks, []s Edson 2007/8/2, [EMAIL PROTECTED] [EMAIL PROTECTED]: Edson, Thank you for the response. I tried writing the in-line eval as suggested but get this Exception: org.drools.rule.InvalidRulePackage: Unable to determine the used declarations : [Rule name=State, agendaGroup=MAIN, salience=0, no- loop=false] at org.drools.rule.Package.checkValidity (Package.java:408) at org.drools.common.AbstractRuleBase.addPackage (AbstractRuleBase.java:288) at [...] This is my rule: rule State dialect mvel when $ca:CandidateAssociation( eval ( ! nurseDetails.stateLicensures.contains( patientDetails.state ) ) ) then retract( $ca ); end I haven't yet but, plan to open an issue in JIRA as requested Thanks for your help. Mark ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] nested accessors with Sets
Edson, I opened ticket # 1058 for this - http://jira.jboss.com/jira/browse/JBRULES-1058 Thank you, Mark -- Original message -- From: Edson Tirelli [EMAIL PROTECTED] Mark, Hmmm, something is going on with mvel integration... bellow must work. There are work arounds (like using plain java code, or using multiple patterns), but I think we need to fix that. Can you please include this info in the ticket. Thanks, []s Edson 2007/8/2, [EMAIL PROTECTED] [EMAIL PROTECTED]: Edson, Thank you for the response. I tried writing the in-line eval as suggested but get this Exception: org.drools.rule.InvalidRulePackage: Unable to determine the used declarations : [Rule name=State, agendaGroup=MAIN, salience=0, no-loop=false] at org.drools.rule.Package.checkValidity(Package.java:408) at org.drools.common.AbstractRuleBase.addPackage( AbstractRuleBase.java:288) at [...] This is my rule: rule State dialect mvel when $ca:CandidateAssociation( eval ( ! nurseDetails.stateLicensures.contains( patientDetails.state ) ) ) then retract( $ca ); end I haven't yet but, plan to open an issue in JIRA as requested Thanks for your help. Mark ---BeginMessage--- Mark, Hmmm, something is going on with mvel integration... bellow must work. There are work arounds (like using plain java code, or using multiple patterns), but I think we need to fix that. Can you please include this info in the ticket. Thanks, []s Edson 2007/8/2, [EMAIL PROTECTED] [EMAIL PROTECTED]: Edson, Thank you for the response. I tried writing the in-line eval as suggested but get this Exception: org.drools.rule.InvalidRulePackage: Unable to determine the used declarations : [Rule name=State, agendaGroup=MAIN, salience=0, no-loop=false] at org.drools.rule.Package.checkValidity(Package.java:408) at org.drools.common.AbstractRuleBase.addPackage( AbstractRuleBase.java:288) at [...] This is my rule: rule State dialect mvel when $ca:CandidateAssociation( eval ( ! nurseDetails.stateLicensures.contains( patientDetails.state ) ) ) then retract( $ca ); end I haven't yet but, plan to open an issue in JIRA as requested Thanks for your help. Mark ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users ---End Message--- ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] nested accessors with Sets
Mark, Sorry for not answering before. I was doing some research. What you found is a bug. Contains and not contains are supported operations in Drools, but the case you are facing is that you are using these operators with accessors expressions (e.g. nurseDetails.stateLicensures ). When an accessor expression is used, the engine converts the whole expression in an inline-eval. So what you are doing will be interpreted by the engine as: $ca:CandidateAssociation( eval ( nurseDetails.stateLicensures not contains patientDetails.state ) ) Problem is that not contains is not a valid operator for MVEL. May I ask you please to open a JIRA for that? I will fix it asap. Meanwhile, to work around the problem you can either avoid the accessor path expression when using contains/memberOf/matches and their corresponding negations, or write the inline eval yourself, avoid a mistranslation by the engine. So, if you are using mvel dialect for your rule, you could write: rule XXX dialect mvel when $ca:CandidateAssociation( eval ( ! nurseDetails.stateLicensures.contains( patientDetails.state ) ) ) then // do something end Please not that as you are explicitly declaring the mvel dialect for your rule, your consequence will also be an MVEL block. Sorry for the inconvenience. I will fix that for 4.0.1. Thanks, Edson 2007/8/1, [EMAIL PROTECTED] [EMAIL PROTECTED]: Actually, it is still broken. This does not complain but it always executes the consequence, even when the stateLicensures includes the state that in patientDetails.state $ca:CandidateAssociation(nurseDetails.stateLicensures not contains patientDetails.state ) I also tried the following but it complains with an Exception $ca:CandidateAssignment(participantDetails.state not memberof nurseDetails.stateLicensures ) org.drools.rule.InvalidRulePackage: [13,50]: unknown:13:50 Unexpected token 'not'[13,93]: unknown:13:93 mismatched token: [EMAIL PROTECTED],574:574=')',13,13:93]; expecting type LEFT_PAREN at org.drools.rule.Package.checkValidity(Package.java:408) at org.drools.common.AbstractRuleBase.addPackage( AbstractRuleBase.java:288) Is what I am trying to do supported by Drools? Thank you, Mark -- Original message -- From: [EMAIL PROTECTED] My rule now appears to be working after switching from the excludes operator to the newer not contains. This works: $ca:CandidateAssociation(nurseDetails.stateLicensures not contains patientDetails.state ) This does not: $ca:CandidateAssociation(nurseDetails.stateLicensures excludes patientDetails.state ) Mark -- Original message -- From: [EMAIL PROTECTED] Hello, Please excuse me if I have double posted - my first did not seem to appear. I am wondering if the following is valid rule syntax. I am getting a stacktrace when the rules fire that points to a ClassCastException on a HashSet I am using v4.0 GA. Thank you, Mark rule StateMatch when $ca:CandidateAssociation(nurseDetails.stateLicensures excludes patientDetails.state ) then retract( $ca ); end public class CandidateAssociation { private PatientDetails patientDetails; private NurseDetails nurseDetails; private int overlapHours; public CandidateAssociation( PatientDetails patientDetails, NurseDetails nurseDetails) { super(); this.patientDetails = patientDetails; this.nurseDetails = nurseDetails; overlapHours = participantDetails.getNumberOverlapHourCnt(nurseDetails); } [...] } public class NurseDetails { private Set stateLicensures = new HashSet(); [...] } public class PatientDetails { private String state; [...] } -- Firing Rules ** org.drools.RuntimeDroolsException: Exception executing predicate [EMAIL PROTECTED] at org.drools.rule.PredicateConstraint.isAllowed(PredicateConstraint.java :197) at org.drools.reteoo.AlphaNode.assertObject(AlphaNode.java:121) at org.drools.reteoo.CompositeObjectSinkAdapter.propagateAssertObject (CompositeObje ctSinkAdapter.java:317) at org.drools.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:159) at org.drools.reteoo.Rete.assertObject(Rete.java:175) at org.drools.reteoo.ReteooRuleBase.assertObject(ReteooRuleBase.java:190) at org.drools.reteoo.ReteooWorkingMemory.doInsert( ReteooWorkingMemory.java:70) at org.drools.common.AbstractWorkingMemory.insert( AbstractWorkingMemory.java:772) at org.drools.base.DefaultKnowledgeHelper.insert( DefaultKnowledgeHelper.java:64) at
Re: [rules-users] nested accessors with Sets
Mark, Hmmm, something is going on with mvel integration... bellow must work. There are work arounds (like using plain java code, or using multiple patterns), but I think we need to fix that. Can you please include this info in the ticket. Thanks, []s Edson 2007/8/2, [EMAIL PROTECTED] [EMAIL PROTECTED]: Edson, Thank you for the response. I tried writing the in-line eval as suggested but get this Exception: org.drools.rule.InvalidRulePackage: Unable to determine the used declarations : [Rule name=State, agendaGroup=MAIN, salience=0, no-loop=false] at org.drools.rule.Package.checkValidity(Package.java:408) at org.drools.common.AbstractRuleBase.addPackage( AbstractRuleBase.java:288) at [...] This is my rule: rule State dialect mvel when $ca:CandidateAssociation( eval ( ! nurseDetails.stateLicensures.contains( patientDetails.state ) ) ) then retract( $ca ); end I haven't yet but, plan to open an issue in JIRA as requested Thanks for your help. Mark ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
[rules-users] nested accessors with Sets
Hello, Please excuse me if I have double posted - my first did not seem to appear. I am wondering if the following is valid rule syntax. I am getting a stacktrace when the rules fire that points to a ClassCastException on a HashSet I am using v4.0 GA. Thank you, Mark rule StateMatch when $ca:CandidateAssociation(nurseDetails.stateLicensures excludes patientDetails.state ) then retract( $ca ); end public class CandidateAssociation { private PatientDetails patientDetails; private NurseDetails nurseDetails; private int overlapHours; public CandidateAssociation( PatientDetails patientDetails, NurseDetails nurseDetails) { super(); this.patientDetails = patientDetails; this.nurseDetails = nurseDetails; overlapHours = participantDetails.getNumberOverlapHourCnt(nurseDetails); } [...] } public class NurseDetails { private Set stateLicensures = new HashSet(); [...] } public class PatientDetails { private String state; [...] } -- Firing Rules ** org.drools.RuntimeDroolsException: Exception executing predicate [EMAIL PROTECTED] at org.drools.rule.PredicateConstraint.isAllowed(PredicateConstraint.java:197) at org.drools.reteoo.AlphaNode.assertObject(AlphaNode.java:121) at org.drools.reteoo.CompositeObjectSinkAdapter.propagateAssertObject(CompositeObjectSinkAdapter.java:317) at org.drools.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:159) at org.drools.reteoo.Rete.assertObject(Rete.java:175) at org.drools.reteoo.ReteooRuleBase.assertObject(ReteooRuleBase.java:190) at org.drools.reteoo.ReteooWorkingMemory.doInsert(ReteooWorkingMemory.java:70) at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:772) at org.drools.base.DefaultKnowledgeHelper.insert(DefaultKnowledgeHelper.java:64) at org.drools.base.DefaultKnowledgeHelper.insert(DefaultKnowledgeHelper.java:58) at org.drools.examples.Rule_InitializeCandidateForEachNurse_0.consequence(Rule_InitializeCandidateForEachNurse_0.java:13) at org.drools.examples.Rule_InitializeCandidateForEachNurse_0ConsequenceInvoker.evaluate(Rule_InitializeCandidateForEachNurse_0ConsequenceInvoker.java:25) at org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:503) at org.drools.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:467) at org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:403) at org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:384) at primarynursePOC.PrimaryNursePOC.selectPrimaryNurse(PrimaryNursePOC.java:136) at primarynursePOC.PrimaryNursePOC.main(PrimaryNursePOC.java:91) Caused by: java.lang.ClassCastException: java.util.HashSet at org.drools.base.mvel.MVELPredicateExpression.evaluate(MVELPredicateExpression.java:35) at org.drools.rule.PredicateConstraint.isAllowed(PredicateConstraint.java:191) ... 17 more org.drools.RuntimeDroolsException: Exception executing predicate [EMAIL PROTECTED] at org.drools.rule.PredicateConstraint.isAllowed(PredicateConstraint.java:197) at org.drools.reteoo.AlphaNode.assertObject(AlphaNode.java:121) at org.drools.reteoo.CompositeObjectSinkAdapter.propagateAssertObject(CompositeObjectSinkAdapter.java:317) at org.drools.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:159) at org.drools.reteoo.Rete.assertObject(Rete.java:175) at org.drools.reteoo.ReteooRuleBase.assertObject(ReteooRuleBase.java:190) at org.drools.reteoo.ReteooWorkingMemory.doInsert(ReteooWorkingMemory.java:70) at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:772) at org.drools.base.DefaultKnowledgeHelper.insert(DefaultKnowledgeHelper.java:64) at org.drools.base.DefaultKnowledgeHelper.insert(DefaultKnowledgeHelper.java:58) at org.drools.examples.Rule_InitializeCandidateForEachNurse_0.consequence(Rule_InitializeCandidateForEachNurse_0.java:13) at org.drools.examples.Rule_InitializeCandidateForEachNurse_0ConsequenceInvoker.evaluate(Rule_InitializeCandidateForEachNurse_0ConsequenceInvoker.java:25) at org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:503) at org.drools.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:467) at org.drools.common.AbstractWorkingMemory.doOtherwise(AbstractWorkingMemory.java:430) at org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:412) at org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:384) at
Re: [rules-users] nested accessors with Sets
My rule now appears to be working after switching from the excludes operator to the newer not contains. This works: $ca:CandidateAssociation(nurseDetails.stateLicensures not contains patientDetails.state ) This does not: $ca:CandidateAssociation(nurseDetails.stateLicensures excludes patientDetails.state ) Mark -- Original message -- From: [EMAIL PROTECTED] Hello, Please excuse me if I have double posted - my first did not seem to appear. I am wondering if the following is valid rule syntax. I am getting a stacktrace when the rules fire that points to a ClassCastException on a HashSet I am using v4.0 GA. Thank you, Mark rule StateMatch when $ca:CandidateAssociation(nurseDetails.stateLicensures excludes patientDetails.state ) then retract( $ca ); end public class CandidateAssociation { private PatientDetails patientDetails; private NurseDetails nurseDetails; private int overlapHours; public CandidateAssociation( PatientDetails patientDetails, NurseDetails nurseDetails) { super(); this.patientDetails = patientDetails; this.nurseDetails = nurseDetails; overlapHours = participantDetails.getNumberOverlapHourCnt(nurseDetails); } [...] } public class NurseDetails { private Set stateLicensures = new HashSet(); [...] } public class PatientDetails { private String state; [...] } -- Firing Rules ** org.drools.RuntimeDroolsException: Exception executing predicate [EMAIL PROTECTED] at org.drools.rule.PredicateConstraint.isAllowed(PredicateConstraint.java:197) at org.drools.reteoo.AlphaNode.assertObject(AlphaNode.java:121) at org.drools.reteoo.CompositeObjectSinkAdapter.propagateAssertObject(CompositeObje ctSinkAdapter.java:317) at org.drools.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:159) at org.drools.reteoo.Rete.assertObject(Rete.java:175) at org.drools.reteoo.ReteooRuleBase.assertObject(ReteooRuleBase.java:190) at org.drools.reteoo.ReteooWorkingMemory.doInsert(ReteooWorkingMemory.java:70) at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:772) at org.drools.base.DefaultKnowledgeHelper.insert(DefaultKnowledgeHelper.java:64) at org.drools.base.DefaultKnowledgeHelper.insert(DefaultKnowledgeHelper.java:58) at org.drools.examples.Rule_InitializeCandidateForEachNurse_0.consequence(Rule_Init ializeCandidateForEachNurse_0.java:13) at org.drools.examples.Rule_InitializeCandidateForEachNurse_0ConsequenceInvoker.eva luate(Rule_InitializeCandidateForEachNurse_0ConsequenceInvoker.java:25) at org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:503) at org.drools.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:467) at org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java: 403) at org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java: 384) at primarynursePOC.PrimaryNursePOC.selectPrimaryNurse(PrimaryNursePOC.java:136) at primarynursePOC.PrimaryNursePOC.main(PrimaryNursePOC.java:91) Caused by: java.lang.ClassCastException: java.util.HashSet at org.drools.base.mvel.MVELPredicateExpression.evaluate(MVELPredicateExpression.ja va:35) at org.drools.rule.PredicateConstraint.isAllowed(PredicateConstraint.java:191) ... 17 more org.drools.RuntimeDroolsException: Exception executing predicate [EMAIL PROTECTED] at org.drools.rule.PredicateConstraint.isAllowed(PredicateConstraint.java:197) at org.drools.reteoo.AlphaNode.assertObject(AlphaNode.java:121) at org.drools.reteoo.CompositeObjectSinkAdapter.propagateAssertObject(CompositeObje ctSinkAdapter.java:317) at org.drools.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:159) at org.drools.reteoo.Rete.assertObject(Rete.java:175) at org.drools.reteoo.ReteooRuleBase.assertObject(ReteooRuleBase.java:190) at org.drools.reteoo.ReteooWorkingMemory.doInsert(ReteooWorkingMemory.java:70) at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:772) at org.drools.base.DefaultKnowledgeHelper.insert(DefaultKnowledgeHelper.java:64) at org.drools.base.DefaultKnowledgeHelper.insert(DefaultKnowledgeHelper.java:58) at org.drools.examples.Rule_InitializeCandidateForEachNurse_0.consequence(Rule_Init ializeCandidateForEachNurse_0.java:13) at org.drools.examples.Rule_InitializeCandidateForEachNurse_0ConsequenceInvoker.eva luate(Rule_InitializeCandidateForEachNurse_0ConsequenceInvoker.java:25) at
Re: [rules-users] nested accessors with Sets
Actually, it is still broken. This does not complain but it always executes the consequence, even when the stateLicensures includes the state that in patientDetails.state $ca:CandidateAssociation(nurseDetails.stateLicensures not contains patientDetails.state ) I also tried the following but it complains with an Exception $ca:CandidateAssignment(participantDetails.state not memberof nurseDetails.stateLicensures ) org.drools.rule.InvalidRulePackage: [13,50]: unknown:13:50 Unexpected token 'not'[13,93]: unknown:13:93 mismatched token: [EMAIL PROTECTED],574:574=')',13,13:93]; expecting type LEFT_PAREN at org.drools.rule.Package.checkValidity(Package.java:408) at org.drools.common.AbstractRuleBase.addPackage(AbstractRuleBase.java:288) Is what I am trying to do supported by Drools? Thank you, Mark -- Original message -- From: [EMAIL PROTECTED] My rule now appears to be working after switching from the excludes operator to the newer not contains. This works: $ca:CandidateAssociation(nurseDetails.stateLicensures not contains patientDetails.state ) This does not: $ca:CandidateAssociation(nurseDetails.stateLicensures excludes patientDetails.state ) Mark -- Original message -- From: [EMAIL PROTECTED] Hello, Please excuse me if I have double posted - my first did not seem to appear. I am wondering if the following is valid rule syntax. I am getting a stacktrace when the rules fire that points to a ClassCastException on a HashSet I am using v4.0 GA. Thank you, Mark rule StateMatch when $ca:CandidateAssociation(nurseDetails.stateLicensures excludes patientDetails.state ) then retract( $ca ); end public class CandidateAssociation { private PatientDetails patientDetails; private NurseDetails nurseDetails; private int overlapHours; public CandidateAssociation( PatientDetails patientDetails, NurseDetails nurseDetails) { super(); this.patientDetails = patientDetails; this.nurseDetails = nurseDetails; overlapHours = participantDetails.getNumberOverlapHourCnt(nurseDetails); } [...] } public class NurseDetails { private Set stateLicensures = new HashSet(); [...] } public class PatientDetails { private String state; [...] } -- Firing Rules ** org.drools.RuntimeDroolsException: Exception executing predicate [EMAIL PROTECTED] at org.drools.rule.PredicateConstraint.isAllowed(PredicateConstraint.java:197) at org.drools.reteoo.AlphaNode.assertObject(AlphaNode.java:121) at org.drools.reteoo.CompositeObjectSinkAdapter.propagateAssertObject(CompositeObje ctSinkAdapter.java:317) at org.drools.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:159) at org.drools.reteoo.Rete.assertObject(Rete.java:175) at org.drools.reteoo.ReteooRuleBase.assertObject(ReteooRuleBase.java:190) at org.drools.reteoo.ReteooWorkingMemory.doInsert(ReteooWorkingMemory.java:70) at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:772) at org.drools.base.DefaultKnowledgeHelper.insert(DefaultKnowledgeHelper.java:64) at org.drools.base.DefaultKnowledgeHelper.insert(DefaultKnowledgeHelper.java:58) at org.drools.examples.Rule_InitializeCandidateForEachNurse_0.consequence(Rule_Init ializeCandidateForEachNurse_0.java:13) at org.drools.examples.Rule_InitializeCandidateForEachNurse_0ConsequenceInvoker.eva luate(Rule_InitializeCandidateForEachNurse_0ConsequenceInvoker.java:25) at org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:503) at org.drools.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:467) at org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java: 403) at org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java: 384) at primarynursePOC.PrimaryNursePOC.selectPrimaryNurse(PrimaryNursePOC.java:136) at primarynursePOC.PrimaryNursePOC.main(PrimaryNursePOC.java:91) Caused by: java.lang.ClassCastException: java.util.HashSet at org.drools.base.mvel.MVELPredicateExpression.evaluate(MVELPredicateExpression.ja va:35) at org.drools.rule.PredicateConstraint.isAllowed(PredicateConstraint.java:191) ... 17 more org.drools.RuntimeDroolsException: Exception executing predicate [EMAIL PROTECTED] at org.drools.rule.PredicateConstraint.isAllowed(PredicateConstraint.java:197) at org.drools.reteoo.AlphaNode.assertObject(AlphaNode.java:121) at