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