[jboss-jira] [JBoss JIRA] (JBRULES-1058) nested accessors with Sets - "not contains" is not a valid operator for MVEL
Edson Tirelli (JIRA)
issues at jboss.org
Thu Mar 29 08:25:01 EDT 2018
[ https://issues.jboss.org/browse/JBRULES-1058?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13553700#comment-13553700 ]
Edson Tirelli commented on JBRULES-1058:
----------------------------------------
[~rahulfedex] which version of Drools are you using? If you are using 7.6.0 or 7.7.0, then please open a new ticket and we will fix it asap. If you are using a previous version, can you please try the latest?
"contains" and "not contains" are valid operators in rules, so they should work fine.
> nested accessors with Sets - "not contains" is not a valid operator for MVEL
> ----------------------------------------------------------------------------
>
> Key: JBRULES-1058
> URL: https://issues.jboss.org/browse/JBRULES-1058
> Project: JBRULES
> Issue Type: Bug
> Components: drools-compiler
> Affects Versions: 4.0.0.GA
> Reporter: Mark McNally
> Assignee: Edson Tirelli
> Fix For: 4.0.1
>
>
> 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 [...]
--
This message was sent by Atlassian JIRA
(v7.5.0#75005)
More information about the jboss-jira
mailing list