I will check these out today. If you can provide an isolated test case, it helps, otherwise I will try to reproduce from your info in these e-mails.
Edson 2011/10/5 Wacław Borowiec <[email protected]> > Thanks for the hint Wolfgang, here are the results: > > this == ($constr.getRestrictions () [0]) > > gives > > [Error: unexpected end of statement] > [Near : {... ($constr.getRestrictions () [0]) ....}] > ^ > [Line: 1, Column: 33] > at > org.mvel2.compiler.AbstractParser.nextToken(AbstractParser.java:1146) > at > org.mvel2.compiler.ExpressionCompiler._compile(ExpressionCompiler.java:128) > at > org.mvel2.compiler.ExpressionCompiler.compile(ExpressionCompiler.java:62) > at org.mvel2.MVEL.analysisCompile(MVEL.java:668) > at org.mvel2.MVEL.analysisCompile(MVEL.java:672) > at > org.drools.rule.builder.PatternBuilder.setInputs(PatternBuilder.java:854) > at > org.drools.rule.builder.PatternBuilder.build(PatternBuilder.java:595) > at > > org.drools.rule.builder.PatternBuilder.processConstraintsAndBinds(PatternBuilder.java:397) > at > org.drools.rule.builder.PatternBuilder.build(PatternBuilder.java:309) > at > org.drools.rule.builder.PatternBuilder.build(PatternBuilder.java:132) > at > > org.drools.rule.builder.GroupElementBuilder.build(GroupElementBuilder.java:65) > at org.drools.rule.builder.RuleBuilder.build(RuleBuilder.java:80) > at org.drools.compiler.PackageBuilder.addRule(PackageBuilder.java:2241) > at > org.drools.compiler.PackageBuilder.addPackage(PackageBuilder.java:802) > at > > org.drools.compiler.PackageBuilder.addPackageFromDrl(PackageBuilder.java:388) > at > > org.drools.compiler.PackageBuilder.addKnowledgeResource(PackageBuilder.java:566) > at > > org.drools.builder.impl.KnowledgeBuilderImpl.add(KnowledgeBuilderImpl.java:35) > Caused by: java.lang.StringIndexOutOfBoundsException: String index out > of range: -1 > at java.lang.String.<init>(String.java:207) > at > org.mvel2.optimizers.AbstractOptimizer.capture(AbstractOptimizer.java:222) > at > org.mvel2.compiler.PropertyVerifier.analyze(PropertyVerifier.java:123) > at > org.mvel2.compiler.ExpressionCompiler.verify(ExpressionCompiler.java:377) > at > org.mvel2.compiler.ExpressionCompiler._compile(ExpressionCompiler.java:273) > at org.mvel2.util.ParseTools.subCompileExpression(ParseTools.java:2136) > at org.mvel2.ast.Substatement.<init>(Substatement.java:37) > at > org.mvel2.compiler.AbstractParser.nextToken(AbstractParser.java:1006) > ... 46 more > > I tried also without external brackets, but the result is pretty much > the same. > > > On 10/05/2011 02:45 PM, Wolfgang Laun wrote: > > Correction: > > EmNumberRestriction(this == ($constr.getRestrictions () [0] ),... > > > > On 5 October 2011 14:44, Wolfgang Laun<[email protected]> wrote: > >> Write this like so: > >> EmNumberRestriction(this == ($constr.getRestrictions[0]),... > >> -W > >>> part from last line of LHS. Again, it worked well in 5.1.1. > >>> > >>> On 10/05/2011 12:14 PM, Swindells, Thomas wrote: > >>> > >>> Why do you need the and in the rule? > >>> Have you tried > >>> > >>> rule "enabled paramId: 1, id: 0" > >>> salience 50 > >>> when > >>> > >>> def0: EmParamDefinition(paramName == "p2", listIndex == -1) > >>> EmParamValue(paramDefinitionId == def0, requiredValue == 1) > >>> $param : EmParamValue(id == 1, enabled == false) > >>> not ParentDisabled(id == 1) > >>> then > >>> $param.setEnabled(true); > >>> update($param); > >>> end > >>> > >>> Thomas > >>> > >>> -----Original Message----- > >>> From: [email protected] [mailto:rules-users- > >>> [email protected]] On Behalf Of Waclaw Borowiec > >>> Sent: 05 October 2011 10:55 > >>> To: [email protected] > >>> Subject: [rules-users] Compilation errors with 5.3.0.CR1 > >>> > >>> Hello > >>> > >>> I'm sending the message once again due to problems with code samples > >>> visibility in the previous one. > >>> > >>> I've got following rule: > >>> > >>> rule "enabled paramId: 1, id: 0" > >>> salience 50 > >>> when > >>> (def0: EmParamDefinition(paramName == "p2", listIndex == -1) and > >>> EmParamValue(paramDefinitionId == def0, requiredValue == 1)) > >>> $param : EmParamValue(id == 1, enabled == false) > >>> not ParentDisabled(id == 1) > >>> then > >>> $param.setEnabled(true); > >>> update($param); > >>> end> > >>> > >>> It compiles fine under Drools 5.1.1, but after switching to 5.3.0.CR1 I > get > >>> following exception: > >>> > >>> [Error: unexpected end of statement] > >>> [Near : {... def ....}] > >>> ^ > >>> [Line: 1, Column: 4] > >>> at > >>> > org.mvel2.compiler.AbstractParser._captureBlock(AbstractParser.java:1470) > >>> at > >>> > org.mvel2.compiler.AbstractParser.captureCodeBlock(AbstractParser.java:14 > >>> 46) > >>> at > org.mvel2.compiler.AbstractParser.nextToken(AbstractParser.java:421) > >>> at > >>> > org.mvel2.compiler.ExpressionCompiler._compile(ExpressionCompiler.java:1 > >>> 28) > >>> at > >>> > org.mvel2.compiler.ExpressionCompiler.compile(ExpressionCompiler.java:62 > >>> ) > >>> at org.mvel2.MVEL.analysisCompile(MVEL.java:668) > >>> at org.mvel2.MVEL.analysisCompile(MVEL.java:672) > >>> at > >>> > org.drools.rule.builder.PatternBuilder.setInputs(PatternBuilder.java:854) > >>> at > org.drools.rule.builder.PatternBuilder.build(PatternBuilder.java:595) > >>> at > >>> > org.drools.rule.builder.PatternBuilder.processConstraintsAndBinds(PatternB > >>> uilder.java:397) > >>> at > org.drools.rule.builder.PatternBuilder.build(PatternBuilder.java:309) > >>> at > org.drools.rule.builder.PatternBuilder.build(PatternBuilder.java:132) > >>> at > >>> > org.drools.rule.builder.GroupElementBuilder.build(GroupElementBuilder.jav > >>> a:65) > >>> at org.drools.rule.builder.RuleBuilder.build(RuleBuilder.java:80) > >>> at > org.drools.compiler.PackageBuilder.addRule(PackageBuilder.java:2241) > >>> at > >>> org.drools.compiler.PackageBuilder.addPackage(PackageBuilder.java:802) > >>> at > >>> > org.drools.compiler.PackageBuilder.addPackageFromDrl(PackageBuilder.java > >>> :388) > >>> at > >>> org.drools.compiler.PackageBuilder.addKnowledgeResource(PackageBuilder > >>> .java:566) > >>> at > >>> > org.drools.builder.impl.KnowledgeBuilderImpl.add(KnowledgeBuilderImpl.ja > >>> va:35) > >>> at > >>> com.proximetry.elmgr.services.DependenciesBean$Expander.addDrl(Depen > >>> denciesBean.java:110) > >>> > >>> > >>> It is > >>> > >>> (def0: EmParamDefinition(paramName == "p2", listIndex == -1) and > >>> EmParamValue(paramDefinitionId == def0, requiredValue == 1)) > >>> > >>> > >>> line that causes the problem - the exeption disappears after removing > it. > >>> What's interesting, when I add '$' sign to binding variable name, and > the line > >>> looks like: > >>> > >>> ($def0: EmParamDefinition(paramName == "p2", listIndex == -1) and > >>> EmParamValue(paramDefinitionId == $def0, requiredValue == 1)) > >>> > >>> > >>> instead of the exception I get DRL error: > >>> > >>> [DialectError message='Unable to wire compiled classes, probably > related to > >>> compilation > failures:sun.reflect.generics.reflectiveObjects.WildcardTypeImpl > >>> cannot be cast to java.lang.Class'] > >>> > >>> > >>> For completness, this is how I add DRL resources: > >>> > >>> public void addDrl(Reader rdr) { > >>> KnowledgeBuilder kBuilder = > >>> KnowledgeBuilderFactory.newKnowledgeBuilder(); > >>> > >>> kBuilder.add( ResourceFactory.newReaderResource(rdr), > >>> ResourceType.DRL); > >>> if( kBuilder.hasErrors() ){ > >>> for( KnowledgeBuilderError err: kBuilder.getErrors() > ){ > >>> StackTrace.error(this, err); > >>> } > >>> throw new IllegalStateException( "DRL errors" ); > >>> } > >>> knowledgeBase.addKnowledgePackages( > >>> kBuilder.getKnowledgePackages() ); > >>> } > >>> > >>> > >>> I would be grateful if someone has an idea, why after switching Drools > >>> version such problem exists. > >>> _______________________________________________ > >>> rules-users mailing list > >>> [email protected] > >>> https://lists.jboss.org/mailman/listinfo/rules-users > >>> > >>> > ************************************************************************************** > >>> This message is confidential and intended only for the addressee. If > you have received this message in error, please immediately notify the > [email protected] and delete it from your system as well as any copies. > The content of e-mails as well as traffic data may be monitored by NDS for > employment and security purposes. To protect the environment please do not > print this e-mail unless necessary. > >>> > >>> NDS Limited. Registered Office: One London Road, Staines, Middlesex, > TW18 4EX, United Kingdom. A company registered in England and Wales. > Registered no. 3080780. VAT no. GB 603 8808 40-00 > >>> > ************************************************************************************** > >>> > >>> _______________________________________________ > >>> rules-users mailing list > >>> [email protected] > >>> https://lists.jboss.org/mailman/listinfo/rules-users > >>> > >>> > >>> _______________________________________________ > >>> rules-users mailing list > >>> [email protected] > >>> https://lists.jboss.org/mailman/listinfo/rules-users > >>> > > _______________________________________________ > > rules-users mailing list > > [email protected] > > https://lists.jboss.org/mailman/listinfo/rules-users > > _______________________________________________ > rules-users mailing list > [email protected] > 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 [email protected] https://lists.jboss.org/mailman/listinfo/rules-users
