[jboss-jira] [JBoss JIRA] Created: (JBRULES-1169) PredicateConstraint and/or MVEL Constraint issue?

Yuri de Wit (JIRA) jira-events at lists.jboss.org
Tue Sep 4 15:45:11 EDT 2007


PredicateConstraint and/or MVEL Constraint issue?
-------------------------------------------------

                 Key: JBRULES-1169
                 URL: http://jira.jboss.com/jira/browse/JBRULES-1169
             Project: JBoss Rules
          Issue Type: Bug
      Security Level: Public (Everyone can see)
    Affects Versions: 4.0.1
            Reporter: Yuri de Wit
         Assigned To: Mark Proctor
            Priority: Critical


Consider the following rules:

rule (1)
   when
      a: Criteria(
         $criteriaA : criteriaA,
         $criteriaB : criteriaB
      )

      b: Criteria(
         matchCriteriaA == true && criteriaA == $criteriaA
            || matchCriteriaB == true && criteriaB == $criteriaB
      )
   then
      ...
end

rule (2)
   when
      a: Criteria(
         $criteriaA : criteriaA,
         $criteriaB : criteriaB 
      )

      b: Criteria(
         eval(
            matchCriteriaA == true && criteriaA == $criteriaA
               || matchCriteriaB == true && criteriaB == $criteriaB
         )
      )
   then
      ...
end

I am seeing different behavior for the same test cases. I am basically inserting
 "a" and "b" with matching criteriaA and criteriaB and I am testing different
combinations of matchCriteriaA and matchCriteriaB (i.e. F/F, F/T, T/F, T/T).

Results for rule (1):
F/F -> rule activated (incorrect)
T/F -> rule activated (correct)
F/T -> rule activated (correct)

Results for rule (2):
F/F -> rule activated (incorrect)
T/F -> rule activated (correct)
F/T -> rule activated (correct)

I also tried an eval column (now a snippet based on the actual rule I ran):

		eval(
			($t_matchDvpAccount == true && $t_accountCode == $c_accountCode) 
			|| ($t_matchPartialAccount == true && $t_accountCode5 == $c_accountCode5)
			|| ($t_matchClientAccount == true && $t_clientAccountCode == $c_accountCode)
			|| ($t_matchNoAccount == true)
		)

And with the following data (took while debugging the evaluation):

$t_matchClientAccount	Boolean  (id=176) value	false	
$t_accountCode	"123450ACCT"	
$t_matchDvpAccount	Boolean  (id=176) value	false	
$t_matchPartialAccount	Boolean  (id=191) value	true	
$t_clientAccountCode	"12345CACCT"	
$c_accountCode5	"12345"	
$t_accountCode5	"12345"	
$t_matchNoAccount	Boolean  (id=176) value	false	
 
The evaluation returns false.


-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        



More information about the jboss-jira mailing list