<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
<small>Thanks for your answer Thomas. It showed that this construct
works fine either way with 5.3.0.CR1, but it's other rule that
causes the error:<br>
<br>
<span style="font-family: courier new,monospace;">rule
"restriction number paramId: 1, id: 0"</span><br
style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">when</span><br
style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;"> </span><br
style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;"> $param :
EmParamValue(id == 1, enabled == true)</span><br
style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;"> $def :
EmParamDefinition(this == $param.paramDefinitionId)</span><br
style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;"> $cust :
EmCustomParamDefinition(this == $param.customParamDef)</span><br
style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;"> $constr:
EmNumberConstraint(this == $cust.constraints)</span><br
style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;"> $restr:
EmNumberRestriction(this == $constr.restrictions[0], min <=
$param.requiredValue, max >= $param.requiredValue)</span><br
style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">then</span><br
style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">
EmRulesUtils.logRuleExecution(<wbr>kcontext);</span><br
style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">
result.addValidParam($param);</span><br style="font-family:
courier new,monospace;">
<span style="font-family: courier new,monospace;">end</span><br>
<br>
and DRL error:</small>
<div class="im"><small><br>
<br>
<span style="font-family: courier new,monospace;">[DialectError
message='Unable to wire compiled classes, probably related to
compilation failures:sun.reflect.generics.<wbr>reflectiveObjects.<wbr>WildcardTypeImpl
cannot be cast to java.lang.Class']</span><br>
<br>
</small></div>
<small>It compiles successfully when I remove <span
style="font-family: courier new,monospace;"><br>
<br>
this == $constr.restrictions[0] <br>
<br>
</span>part from last line of LHS.<span style="font-family:
courier new,monospace;"></span><span style="font-family: courier
new,monospace;"></span> Again, it worked well in 5.1.1.</small><br>
<br>
On 10/05/2011 12:14 PM, Swindells, Thomas wrote:
<blockquote
cite="mid:DAC86F5F3B84F14088F0DB16092558CA13399F7F71@UKMA1.UK.NDS.COM"
type="cite">
<pre wrap="">Why do you need the and in the rule?
Have you tried
</pre>
<blockquote type="cite">
<pre wrap="">rule "enabled paramId: 1, id: 0"
salience 50
when
</pre>
</blockquote>
<pre wrap=""> 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
</pre>
<blockquote type="cite">
<pre wrap="">-----Original Message-----
From: <a class="moz-txt-link-abbreviated" href="mailto:rules-users-bounces@lists.jboss.org">rules-users-bounces@lists.jboss.org</a> [<a class="moz-txt-link-freetext" href="mailto:rules-users">mailto:rules-users</a>-
<a class="moz-txt-link-abbreviated" href="mailto:bounces@lists.jboss.org">bounces@lists.jboss.org</a>] On Behalf Of Waclaw Borowiec
Sent: 05 October 2011 10:55
To: <a class="moz-txt-link-abbreviated" href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a>
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
<a class="moz-txt-link-abbreviated" href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a>
<a class="moz-txt-link-freetext" href="https://lists.jboss.org/mailman/listinfo/rules-users">https://lists.jboss.org/mailman/listinfo/rules-users</a>
</pre>
</blockquote>
<pre wrap="">
**************************************************************************************
This message is confidential and intended only for the addressee. If you have received this message in error, please immediately notify the <a class="moz-txt-link-abbreviated" href="mailto:postmaster@nds.com">postmaster@nds.com</a> 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
<a class="moz-txt-link-abbreviated" href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a>
<a class="moz-txt-link-freetext" href="https://lists.jboss.org/mailman/listinfo/rules-users">https://lists.jboss.org/mailman/listinfo/rules-users</a>
</pre>
</blockquote>
<br>
</body>
</html>