<br> Nope, MVEL 2 is not backward compatible with the 1.3.x release. <br><br> I am talking with Mike about this.<br><br> []s<br> Edson<br><br><div class="gmail_quote">2008/12/16 Olivier THIERRY <span dir="ltr"><<a href="mailto:olivier.thierry@gmail.com">olivier.thierry@gmail.com</a>></span><br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Sorry, I had not seen there was later version than 1.3.9.<br>
Anyway, I tried with 1.3.12 and had the same problem.<br>
>From 1.3.13, it looks like there is a problem on mvel initialization<br>
since I have this stack trace :<br>
<br>
java.lang.NoSuchMethodError: org.mvel.MVEL.setThreadSafe(Z)V<br>
at org.drools.rule.builder.dialect.mvel.MVELDialect.init(MVELDialect.java:144)<br>
at org.drools.compiler.DialectRegistry.initAll(DialectRegistry.java:49)<br>
at org.drools.compiler.PackageBuilder.<init>(PackageBuilder.java:146)<br>
at org.drools.compiler.PackageBuilder.<init>(PackageBuilder.java:86)<br>
at t4.test.drools.TestRuleBase.executeRuleWithDsl(TestRuleBase.java:105)<br>
at t4.test.drools.Test1.testDslMvel(Test1.java:39)<br>
<br>
<br>
<br>
2008/12/16 Olivier THIERRY <<a href="mailto:olivier.thierry@gmail.com">olivier.thierry@gmail.com</a>>:<br>
<div><div></div><div class="Wj3C7c">> I use mvel 1.3.9, so the latest 1.3.x version.<br>
> Is there a way to upgrade to mvel 2.x with drools 4.0.7 ? Or will I<br>
> have to wait for drools 5.0.0 ?<br>
><br>
> 2008/12/15 Edson Tirelli <<a href="mailto:tirelli@post.com">tirelli@post.com</a>>:<br>
>><br>
>> BTW, what version of MVEL are you using?<br>
>><br>
>> 2008/12/15 Olivier THIERRY <<a href="mailto:olivier.thierry@gmail.com">olivier.thierry@gmail.com</a>><br>
>>><br>
>>> Well ... I found something very strange with Drools and mvel dialect<br>
>>> ... It looks like Drools doesn't like points in function parameters !<br>
>>><br>
>>> I made this very simple test with a log function and the easier rule<br>
>>> you can have :<br>
>>><br>
>>> function void log (String message) {<br>
>>> System.out.println(message);<br>
>>> }<br>
>>><br>
>>> rule "test"<br>
>>> no-loop<br>
>>> when<br>
>>> eval(true)<br>
>>> then<br>
>>> log("hello world")<br>
>>> end<br>
>>><br>
>>> log("hello world") works ok<br>
>>> log("hello.world") (note the point) fails with this stack trace :<br>
>>><br>
>>> org.drools.spi.ConsequenceException:<br>
>>> org.mvel.UnresolveablePropertyException: unable to resolve token:<br>
>>> log("hello.world")<br>
>>> at<br>
>>> org.drools.base.DefaultConsequenceExceptionHandler.handleException(DefaultConsequenceExceptionHandler.java:13)<br>
>>> at<br>
>>> org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:558)<br>
>>> at<br>
>>> org.drools.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:518)<br>
>>> at<br>
>>> org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:475)<br>
>>> at<br>
>>> org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:439)<br>
>>> at t4.test.drools.TestRuleBase.executeRule(TestRuleBase.java:44)<br>
>>> at t4.test.drools.Test1.testDebug(Test1.java:57)<br>
>>> Caused by: org.mvel.UnresolveablePropertyException: unable to resolve<br>
>>> token: log("hello.world")<br>
>>> at<br>
>>> org.mvel.ast.PropertyASTNode.initializePropertyNode(PropertyASTNode.java:129)<br>
>>> at<br>
>>> org.mvel.ast.PropertyASTNode.getReducedValueAccelerated(PropertyASTNode.java:24)<br>
>>> at org.mvel.MVELRuntime.execute(MVELRuntime.java:90)<br>
>>> at<br>
>>> org.mvel.CompiledExpression.getValue(CompiledExpression.java:111)<br>
>>> at org.mvel.MVEL.executeExpression(MVEL.java:235)<br>
>>> at<br>
>>> org.drools.base.mvel.MVELConsequence.evaluate(MVELConsequence.java:48)<br>
>>> at<br>
>>> org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:554)<br>
>>> ... 34 more<br>
>>><br>
>>> It looks like there is a problem with point character, doesn't it ? Is<br>
>>> it a known problem ?<br>
>>><br>
>>> Regards,<br>
>>><br>
>>> Olivier<br>
>>><br>
>>><br>
>>> 2008/12/15 Olivier THIERRY <<a href="mailto:olivier.thierry@gmail.com">olivier.thierry@gmail.com</a>>:<br>
>>> > Thanks Edson. Here it is :<br>
>>> ><br>
>>> > rule "CALCUL_RELICAT_CP"<br>
>>> > salience 8<br>
>>> > no-loop<br>
>>> > when<br>
>>> > not $RELICAT_CP : VOCounter (code=="RELICAT_CP")<br>
>>> > $startDate : RuleDate(name=="startDate")<br>
>>> > $endDate : RuleDate(name=="endDate")<br>
>>> > $SOLDE_CP_CUM : VOCounter ( code=="SOLDE_CP_CUM",<br>
>>> > startDate.year == ($startDate.year - 1) )<br>
>>> > then<br>
>>> > VOCounter $relicat =<br>
>>> > createCounter(drools,"RELICAT_CP",$SOLDE_CP_CUM.value);<br>
>>> > insert($relicat);<br>
>>> ><br>
>>> > insert(createCounter(drools,"SOLDE_RELICAT_CP",$SOLDE_CP_CUM.value));<br>
>>> > end<br>
>>> ><br>
>>> > I thought about trying with a newer version of mvel, but it doesn't<br>
>>> > look so easy to upgrade it :(<br>
>>> ><br>
>>> > 2008/12/15 Edson Tirelli <<a href="mailto:tirelli@post.com">tirelli@post.com</a>>:<br>
>>> >><br>
>>> >> Can you plz show us the DRL instead of the DSLR for your rule? use<br>
>>> >> the<br>
>>> >> DRLViewer tab for that...<br>
>>> >><br>
>>> >> 2008/12/15 Olivier THIERRY <<a href="mailto:olivier.thierry@gmail.com">olivier.thierry@gmail.com</a>><br>
>>> >>><br>
>>> >>> Hi,<br>
>>> >>><br>
>>> >>> I use drools 4.0.7 and I encounter a problem calling a function from a<br>
>>> >>> rule written for mvel dialect.<br>
>>> >>><br>
>>> >>> The function I need to call has this signature :<br>
>>> >>><br>
>>> >>> function VOCounter createCounter(org.drools.spi.KnowledgeHelper<br>
>>> >>> drools, String code, Number number)<br>
>>> >>><br>
>>> >>> When I call this function, I want to assign result to a variable, for<br>
>>> >>> example to insert it to working memory later, or just to use it in<br>
>>> >>> another function call.<br>
>>> >>> So I wrote something like that (I am writing a DSL so part of the code<br>
>>> >>> is<br>
>>> >>> DSL ):<br>
>>> >>><br>
>>> >>> rule "CALCUL_RELICAT_CP"<br>
>>> >>> salience 8<br>
>>> >>> no-loop<br>
>>> >>> when<br>
>>> >>> not There is a counter called "RELICAT_CP"<br>
>>> >>> There is a date called "startDate"<br>
>>> >>> There is a date called "endDate"<br>
>>> >>> There is a counter called "SOLDE_CP_CUM" with<br>
>>> >>> - start date is last year<br>
>>> >>> then<br>
>>> >>> > VOCounter $relicat =<br>
>>> >>> > createCounter(drools,"RELICAT_CP",$SOLDE_CP_CUM.value);<br>
>>> >>> > insert($relicat);<br>
>>> >>> Copy counter $SOLDE_CP_CUM to SOLDE_RELICAT_CP<br>
>>> >>> end<br>
>>> >>><br>
>>> >>> But I have the following stack trace :<br>
>>> >>><br>
>>> >>> org.drools.spi.ConsequenceException:<br>
>>> >>> org.mvel.UnresolveablePropertyException: unable to resolve token:<br>
>>> >>> createCounter(drools,"RELICAT_CP",$SOLDE_CP_CUM.value)<br>
>>> >>> at<br>
>>> >>><br>
>>> >>> org.drools.base.DefaultConsequenceExceptionHandler.handleException(DefaultConsequenceExceptionHandler.java:13)<br>
>>> >>> at<br>
>>> >>> org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:558)<br>
>>> >>> at<br>
>>> >>> org.drools.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:518)<br>
>>> >>> at<br>
>>> >>><br>
>>> >>> org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:475)<br>
>>> >>> at<br>
>>> >>><br>
>>> >>> org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:439)<br>
>>> >>> at<br>
>>> >>><br>
>>> >>> fr.horoquartz.t4.test.drools.TestRuleBase.executeRuleWithDsl(TestRuleBase.java:120)<br>
>>> >>> at fr.horoquartz.t4.test.drools.Test1.testDsl(Test1.java:39)<br>
>>> >>> Caused by: org.mvel.UnresolveablePropertyException: unable to resolve<br>
>>> >>> token: createCounter(drools,"RELICAT_CP",$SOLDE_CP_CUM.value)<br>
>>> >>> at<br>
>>> >>><br>
>>> >>> org.mvel.ast.PropertyASTNode.initializePropertyNode(PropertyASTNode.java:129)<br>
>>> >>> at<br>
>>> >>><br>
>>> >>> org.mvel.ast.PropertyASTNode.getReducedValueAccelerated(PropertyASTNode.java:24)<br>
>>> >>> at<br>
>>> >>> org.mvel.ExecutableAccessor.getValue(ExecutableAccessor.java:45)<br>
>>> >>> at<br>
>>> >>><br>
>>> >>> org.mvel.ast.TypedVarNode.getReducedValueAccelerated(TypedVarNode.java:43)<br>
>>> >>> at org.mvel.MVELRuntime.execute(MVELRuntime.java:90)<br>
>>> >>> at<br>
>>> >>> org.mvel.CompiledExpression.getValue(CompiledExpression.java:111)<br>
>>> >>> at org.mvel.MVEL.executeExpression(MVEL.java:235)<br>
>>> >>> at<br>
>>> >>> org.drools.base.mvel.MVELConsequence.evaluate(MVELConsequence.java:48)<br>
>>> >>> at<br>
>>> >>> org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:554)<br>
>>> >>> ... 34 more<br>
>>> >>><br>
>>> >>> What is strange is that it works if I don't assign function call<br>
>>> >>> result to a variable. For example the following works :<br>
>>> >>><br>
>>> >>> insert (createCounter(drools,"RELICAT_CP",$SOLDE_CP_CUM.value));<br>
>>> >>><br>
>>> >>> It also works if I assign $SOLDE_CP_CUM.value to a temporary variable<br>
>>> >>> and use it for function call :<br>
>>> >>><br>
>>> >>> Number $val = $SOLDE_CP_CUM.value;<br>
>>> >>> VOCounter $relicat = createCounter(drools,"RELICAT_CP",$val);<br>
>>> >>> insert($relicat);<br>
>>> >>><br>
>>> >>> I had not this problem using java dialect. I understand nothing in<br>
>>> >>> what happens ... Anyone has an idea what the problem is ?<br>
>>> >>><br>
>>> >>> Thanks in advance,<br>
>>> >>><br>
>>> >>> Olivier<br>
>>> >>> _______________________________________________<br>
>>> >>> rules-users mailing list<br>
>>> >>> <a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br>
>>> >>> <a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
>>> >><br>
>>> >><br>
>>> >><br>
>>> >> --<br>
>>> >> Edson Tirelli<br>
>>> >> JBoss Drools Core Development<br>
>>> >> JBoss, a division of Red Hat @ <a href="http://www.jboss.com" target="_blank">www.jboss.com</a><br>
>>> >><br>
>>> >> _______________________________________________<br>
>>> >> rules-users mailing list<br>
>>> >> <a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br>
>>> >> <a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
>>> >><br>
>>> >><br>
>>> ><br>
>>> ><br>
>>> ><br>
>>> > --<br>
>>> > Seules 2 choses sont infinies : l'univers et la bêtise humaine ; et<br>
>>> > encore pour l'univers, je ne suis pas sûr … (Einstein)<br>
>>> ><br>
>>><br>
>>><br>
>>><br>
>>> --<br>
>>> Seules 2 choses sont infinies : l'univers et la bêtise humaine ; et<br>
>>> encore pour l'univers, je ne suis pas sûr … (Einstein)<br>
>>><br>
>>> _______________________________________________<br>
>>> rules-users mailing list<br>
>>> <a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br>
>>> <a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
>><br>
>><br>
>><br>
>> --<br>
>> Edson Tirelli<br>
>> JBoss Drools Core Development<br>
>> JBoss, a division of Red Hat @ <a href="http://www.jboss.com" target="_blank">www.jboss.com</a><br>
>><br>
>> _______________________________________________<br>
>> rules-users mailing list<br>
>> <a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br>
>> <a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
>><br>
>><br>
><br>
><br>
><br>
> --<br>
> Seules 2 choses sont infinies : l'univers et la bêtise humaine ; et<br>
> encore pour l'univers, je ne suis pas sûr … (Einstein)<br>
><br>
<br>
<br>
<br>
</div></div>--<br>
<div><div></div><div class="Wj3C7c">Seules 2 choses sont infinies : l'univers et la bêtise humaine ; et<br>
encore pour l'univers, je ne suis pas sûr … (Einstein)<br>
<br>
_______________________________________________<br>
rules-users mailing list<br>
<a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br> Edson Tirelli<br> JBoss Drools Core Development<br> JBoss, a division of Red Hat @ <a href="http://www.jboss.com">www.jboss.com</a><br>