Strange MVEL error

2 messages Options
Embed this post
Permalink
Malay Shah

Strange MVEL error

Reply Threaded More More options
Print post
Permalink
Some javascript/style in this post has been disabled (why?)
Hi All,
 
I am trying to compile a drool rule using MVEL dialect and getting the following weird error.
 

Unable to determine the used declarations.

unbalanced braces (near code: << ... core1_entityOID); ...>>) (position: 33) : [Rule name=Legacy ETSDB Rule, agendaGroup=MAIN, salience=0, no-loop=false]

org.mvel.ParseException: unbalanced braces (near code: << ... core1_entityOID); ...>>) (position: 33)Unable to build expression for 'consequence'

 
The code I am trying to compile is:
 
package S_124
import com.ms.ieddata.dataQuality.violation.Violation;
import com.ms.ieddata.etsdb.model.EtsExecution_core;
import com.ms.ieddata.etsdb.model.EtsExecutionOrder_core;
global java.util.HashSet violations;
global java.util.HashSet violationKeys;

dialect "mvel"

rule "Legacy ETSDB Rule"

when
EtsExecution_core1:EtsExecution_core(crossInd == "1" , lastCapacity != "3" , lastDestinationID not in ("EUREX","IDEM","MEFF","LIFFE"))
EtsExecutionOrder_core1:EtsExecutionOrder_core(entityOID == EtsExecution_core1.parentOID , exDestination in ("I","L") , swapComponentType != "swaps" , orderCapacity not in ("D","R","X","L","E","T","C","O","P","S"),EtsExecutionOrder_core1_entityOID:entityOID,EtsExecutionOrder_core1_application:application,EtsExecutionOrder_core1_entityVID:entityVID)

then

String key="S-124_EtsExecution_core" + "_entityVID_" + "EtsExecutionOrder_core1_entityVID" + "_application_" + "EtsExecutionOrder_core1_application" + "_entityOID_" +
"EtsExecutionOrder_core1_entityOID";

vPresent = violationKeys.contains(key);

if (!vPresent)
{
     violation = new Violation();
     violation.putRuleActionAttribute("ruleId","S-124");
     violation.putRuleActionAttribute("ruleName","Legacy ETSDB Rule");
     violation.putRuleActionAttribute("legacyRuleType","1");
     violation.putRuleActionAttribute("entityName","EtsExecution_core");
     violation.putRuleActionAttribute("fieldName","Field");
     violation.putRuleActionAttribute("entityVID",EtsExecutionOrder_core1_entityVID);
     violation.putRuleActionAttribute("application",EtsExecutionOrder_core1_application);
     violation.putRuleActionAttribute("entityOID",EtsExecutionOrder_core1_entityOID);
}
 
end
 
The code works fine when I use java dialect. Also, if I remove the if statement from consequence, the code get compiled in mvel and java dialects. Am I missing something obvious here? I am using drools 4.0.1.
 
Thanks
 
Malay Shah
Morgan Stanley | IDEAS Practice Areas
750 Seventh Avenue, 6th Floor | New York, NY  10019
Phone: +1 212 762-4495
[hidden email]
 

NOTICE: If received in error, please destroy, and notify sender. Sender does not intend to waive confidentiality or privilege. Use of this email is prohibited when received in error. We may monitor and store emails to the extent permitted by applicable law.


_______________________________________________
rules-users mailing list
[hidden email]
https://lists.jboss.org/mailman/listinfo/rules-users
Edson Tirelli-4

Re: Strange MVEL error

Reply Threaded More More options
Print post
Permalink

        Drools explicitly disables control statements in MVEL consequences, at it is usually not a good sign. I.e., you should probably encapsulate that check you are doing in a LHS condition (even if you have to wrap it up in an eval()), so that the rule will not be activated and fired when it shouldn't.

        Edson

2009/11/3 Shah, Malay <[hidden email]>
Hi All,
 
I am trying to compile a drool rule using MVEL dialect and getting the following weird error.
 

Unable to determine the used declarations.

unbalanced braces (near code: << ... core1_entityOID); ...>>) (position: 33) : [Rule name=Legacy ETSDB Rule, agendaGroup=MAIN, salience=0, no-loop=false]

org.mvel.ParseException

: unbalanced braces (near code: << ... core1_entityOID); ...>>) (position: 33)Unable to build expression for 'consequence'
 
The code I am trying to compile is:
 
package S_124
import com.ms.ieddata.dataQuality.violation.Violation;
import com.ms.ieddata.etsdb.model.EtsExecution_core;
import com.ms.ieddata.etsdb.model.EtsExecutionOrder_core;
global java.util.HashSet violations;
global java.util.HashSet violationKeys;

dialect "mvel"

rule "Legacy ETSDB Rule"

when
EtsExecution_core1:EtsExecution_core(crossInd == "1" , lastCapacity != "3" , lastDestinationID not in ("EUREX","IDEM","MEFF","LIFFE"))
EtsExecutionOrder_core1:EtsExecutionOrder_core(entityOID == EtsExecution_core1.parentOID , exDestination in ("I","L") , swapComponentType != "swaps" , orderCapacity not in ("D","R","X","L","E","T","C","O","P","S"),EtsExecutionOrder_core1_entityOID:entityOID,EtsExecutionOrder_core1_application:application,EtsExecutionOrder_core1_entityVID:entityVID)

then

String key="S-124_EtsExecution_core" + "_entityVID_" + "EtsExecutionOrder_core1_entityVID" + "_application_" + "EtsExecutionOrder_core1_application" + "_entityOID_" +
"EtsExecutionOrder_core1_entityOID";

vPresent = violationKeys.contains(key);

if (!vPresent)
{
     violation = new Violation();
     violation.putRuleActionAttribute("ruleId","S-124");
     violation.putRuleActionAttribute("ruleName","Legacy ETSDB Rule");
     violation.putRuleActionAttribute("legacyRuleType","1");
     violation.putRuleActionAttribute("entityName","EtsExecution_core");
     violation.putRuleActionAttribute("fieldName","Field");
     violation.putRuleActionAttribute("entityVID",EtsExecutionOrder_core1_entityVID);
     violation.putRuleActionAttribute("application",EtsExecutionOrder_core1_application);
     violation.putRuleActionAttribute("entityOID",EtsExecutionOrder_core1_entityOID);
}
 
end
 
The code works fine when I use java dialect. Also, if I remove the if statement from consequence, the code get compiled in mvel and java dialects. Am I missing something obvious here? I am using drools 4.0.1.
 
Thanks
 
Malay Shah
Morgan Stanley | IDEAS Practice Areas
750 Seventh Avenue, 6th Floor | New York, NY  10019
Phone: +1 212 762-4495
[hidden email]
 

NOTICE: If received in error, please destroy, and notify sender. Sender does not intend to waive confidentiality or privilege. Use of this email is prohibited when received in error. We may monitor and store emails to the extent permitted by applicable law.


_______________________________________________
rules-users mailing list
[hidden email]
https://lists.jboss.org/mailman/listinfo/rules-users




--
 Edson Tirelli
 JBoss Drools Core Development
 JBoss by Red Hat @ www.jboss.com

_______________________________________________
rules-users mailing list
[hidden email]
https://lists.jboss.org/mailman/listinfo/rules-users