Details
-
Bug
-
Resolution: Duplicate
-
Major
-
4.0.0.GA
-
None
Description
Following does not work:
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; [...] }Edson suggested that the problem is that "not contains" is not a valid operator for MVEL.
Also Noticed that the following workaround did not work:
rule State
dialect "mvel"
when
$ca:CandidateAssociation( eval ( ! nurseDetails.stateLicensures.contains( patientDetails.state ) ) )
then
retract( $ca );
end
This produced 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 [...]