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