<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div></div><div><br><div><div>Le 3 sept. 09 à 22:06, PlugTree a écrit :</div><br class="Apple-interchange-newline"><blockquote type="cite"><div>hmmm seems we met a bug here. post it to the list to see if anyone knows something about it. If not I'll dig into the code to see the problem.<br><br>Thanks!<br>CEO<br>plugtree.com<br><br>Joseph Berdat wrote:<br><blockquote type="cite">Hello,<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">I've tried you proposition:<br></blockquote><blockquote type="cite">$quote : Quote(value &gt; (Double() from accumulate( Quote( $price : value ), average( $price ) ) ))<br></blockquote><blockquote type="cite">Unfortunatly, it produces the following error:<br></blockquote><blockquote type="cite">java.lang.NullPointerException<br></blockquote><blockquote type="cite">at org.drools.rule.builder.PatternBuilder.buildRestriction(PatternBuilder.java:948)<br></blockquote><blockquote type="cite">at org.drools.rule.builder.PatternBuilder.buildRestriction(PatternBuilder.java:727)<br></blockquote><blockquote type="cite">at org.drools.rule.builder.PatternBuilder.createRestriction(PatternBuilder.java:504)<br></blockquote><blockquote type="cite">at org.drools.rule.builder.PatternBuilder.build(PatternBuilder.java:351)<br></blockquote><blockquote type="cite">at org.drools.rule.builder.PatternBuilder.buildConstraint(PatternBuilder.java:239)<br></blockquote><blockquote type="cite">at org.drools.rule.builder.PatternBuilder.build(PatternBuilder.java:196)<br></blockquote><blockquote type="cite">at org.drools.rule.builder.PatternBuilder.build(PatternBuilder.java:104)<br></blockquote><blockquote type="cite">at org.drools.rule.builder.GroupElementBuilder.build(GroupElementBuilder.java:69)<br></blockquote><blockquote type="cite">at org.drools.rule.builder.RuleBuilder.build(RuleBuilder.java:68)<br></blockquote><blockquote type="cite">at org.drools.compiler.PackageBuilder.addRule(PackageBuilder.java:1159)<br></blockquote><blockquote type="cite">at org.drools.compiler.PackageBuilder.addPackage(PackageBuilder.java:649)<br></blockquote><blockquote type="cite">at org.drools.compiler.PackageBuilder.addPackageFromDrl(PackageBuilder.java:290)<br></blockquote><blockquote type="cite">at org.drools.compiler.PackageBuilder.addKnowledgeResource(PackageBuilder.java:488)<br></blockquote><blockquote type="cite">at org.drools.builder.impl.KnowledgeBuilderImpl.add(KnowledgeBuilderImpl.java:25)<br></blockquote><blockquote type="cite">at home.prototype.business.service.QuoteTest.loadRule(QuoteTest.java:62)<br></blockquote><blockquote type="cite">at home.prototype.business.service.QuoteTest.test1(QuoteTest.java:35)<br></blockquote><blockquote type="cite">at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br></blockquote><blockquote type="cite">at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)<br></blockquote><blockquote type="cite">at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)<br></blockquote><blockquote type="cite">at java.lang.reflect.Method.invoke(Method.java:585)<br></blockquote><blockquote type="cite">at org.junit.internal.runners.TestMethod.invoke(TestMethod.java:59)<br></blockquote><blockquote type="cite">at org.junit.internal.runners.MethodRoadie.runTestMethod(MethodRoadie.java:98)<br></blockquote><blockquote type="cite">at org.junit.internal.runners.MethodRoadie$2.run(MethodRoadie.java:79)<br></blockquote><blockquote type="cite">at org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:87)<br></blockquote><blockquote type="cite">at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:77)<br></blockquote><blockquote type="cite">at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:42)<br></blockquote><blockquote type="cite">at org.junit.internal.runners.JUnit4ClassRunner.invokeTestMethod(JUnit4ClassRunner.java:88)<br></blockquote><blockquote type="cite">at org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:51)<br></blockquote><blockquote type="cite">at org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:44)<br></blockquote><blockquote type="cite">at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)<br></blockquote><blockquote type="cite">at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)<br></blockquote><blockquote type="cite">at org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:42)<br></blockquote><blockquote type="cite">at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:45)<br></blockquote><blockquote type="cite">at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)<br></blockquote><blockquote type="cite">at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)<br></blockquote><blockquote type="cite">at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)<br></blockquote><blockquote type="cite">at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)<br></blockquote><blockquote type="cite">at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Regards,<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Le 3 sept. 09 à 10:52, Plug Tree Labs a écrit :<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><blockquote type="cite">Joseph:<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">I think you should need something like this:<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">$quote : Quote(value &gt; (Double() from accumulate( Quote( $price : value ), average( $price ) )))<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">What do you think?<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">joseph berdat wrote:<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">Hello,<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">The rule below check which quote have a price above the average.<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">In this form the rule is working, but from the log files it seems that this rule is doing a cross join.<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">rule "above average value"<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">dialect "mvel"<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">when<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Double( $average : doubleValue) from accumulate( Quote( $price : value ), average( $price ) )<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">$quote : Quote(value &gt; $average)<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">then<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"> &nbsp;&nbsp;&nbsp;System.out.println("Quote above average [" + $quote.id + "] value [" + $quote.value + "] &nbsp;average [" + $average + "]")<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">end<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">I could not get the correct syntax. I would like to write something like:<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">when Quote(value &gt; doubleValue) from accumulate( Quote( $price : value ), average( $price ) )<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">Thanks,<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">regards.<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">------------------------------------------------------------------------<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">_______________________________________________<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">rules-users mailing list<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">rules-users@lists.jboss.org &lt;<a href="mailto:rules-users@lists.jboss.org">mailto:rules-users@lists.jboss.org</a>&gt;<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><a href="https://lists.jboss.org/mailman/listinfo/rules-users">https://lists.jboss.org/mailman/listinfo/rules-users</a><br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><br></blockquote><br></div></blockquote></div><br></div></body></html>