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: mark.mcnally(a)comcast.net
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
org.drools.base.mvel.MVELPredicateExpression@27d6bfb
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
org.drools.base.mvel.MVELPredicateExpression@27d6bfb
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.doOtherwise(AbstractWorkingMemory.java:4
30)
at
org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:
412)
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)
... 18 more
Exception in thread "main" org.drools.spi.ConsequenceException:
org.drools.RuntimeDroolsException: Exception executing predicate
org.drools.base.mvel.MVELPredicateExpression@27d6bfb
at
org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:507)
at org.drools.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:467)
at
org.drools.common.AbstractWorkingMemory.doOtherwise(AbstractWorkingMemory.java:4
30)
at
org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:
412)
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: org.drools.RuntimeDroolsException: Exception executing predicate
org.drools.base.mvel.MVELPredicateExpression@27d6bfb
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)
... 6 more
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)
... 18 more
_______________________________________________
rules-users mailing list
rules-users(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users