Re: [rules-users] nested accessors with Sets

2007-08-05 Thread Fernando Meyer

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

2007-08-04 Thread mark . mcnally
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

2007-08-02 Thread Edson Tirelli
   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

2007-08-02 Thread Edson Tirelli
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

2007-08-01 Thread mark . mcnally
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

2007-08-01 Thread mark . mcnally
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

2007-08-01 Thread mark . mcnally

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