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:
[@98,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: mark.mcnally(a)comcast.net
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
_______________________________________________
rules-users mailing list
rules-users(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users