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 
> > 
> 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 
> > [EMAIL PROTECTED]
> >     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 
> > [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)
> >     ... 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@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

Reply via email to