<br> Remember that the engine evaluates all your LHS CEs when you ASSERT the facts, not when you FIRE the rules. So, you obviously need to set the global before asserting your facts or you will get the nasty NPE that you saw.<br>
<br> Pre rule tells you exactly that, because eval(true) is evaluated at ASSERT time and activates the rule, but your System.out is only execute at FIRE time, after your application set the global.<br><br> []s<br> Edson<br>
<br><br><br><div class="gmail_quote">2009/1/26 Przemysław Różycki <span dir="ltr"><<a href="mailto:P.Rozycki@amg.net.pl">P.Rozycki@amg.net.pl</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;">
Of course, you can get rid of 'pre rule'. I forgot to delete it.<div><div></div><div class="Wj3C7c"><br>
<br>
Best regards,<br>
Przemek<br>
<br>
Przemysław Różycki pisze:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Hi,<br>
<br>
I mean, I checked the global and it was set.<br>
<br>
I'm attaching the code, that causes the problem (Java and DRL). You need just to set a proper path to DRL file while setting file property in Java file. I think, the global is set in proper way.<br>
In DRL, depending which rule is commented/uncommented, the code works or not.<br>
<br>
Best regards,<br>
Przemek<br>
<br>
Jaroslaw Kijanowski pisze:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
And did the stack trace change? Can you post more details (drl, java src)?<br>
<br>
Przemysław Różycki wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Yes, I did. This was the first thing I've checked.<br>
<br>
Best regards,<br>
Przemek<br>
<br>
Jaroslaw Kijanowski pisze:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Did you set the global on your session?<br>
<br>
<a href="http://downloads.jboss.com/drools/docs/4.0.7.19894.GA/html_single/index.html#d0e948" target="_blank">http://downloads.jboss.com/drools/docs/4.0.7.19894.GA/html_single/index.html#d0e948</a> <br>
<br>
Cheers<br>
<br>
Przemysław Różycki wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Sorry for responsing myself, but I'm still working on it and found that when factSource is a fact, not global, the rule works very well. I mean, this rule works fine:<br>
<br>
rule "My Rule"<br>
when<br>
$factSrc : FactSource( )<br>
$fact : Fact( ) from $factSrc.getSomeFacts("a","b","c")<br>
then<br>
// do something<br>
end<br>
<br>
so what's the difference between invocation on global object and invocation on fact object? Why the first one doesn't work and the second one works?<br>
<br>
Best regards,<br>
Przemek<br>
<br>
<br>
Przemysław Różycki pisze:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Hi,<br>
<br>
could I ask for some advice, please, how to use a parametrized method call to get some data using 'from' element in LHS.<br>
<br>
To be more precise, I would like to do something like this:<br>
<br>
rule "My Rule"<br>
when<br>
$fact : Fact( ) from factSource.getSomeFacts("a","b","c")<br>
then<br>
// do something<br>
end<br>
<br>
where factSource is for example some global and getSomeFacts(String,String,String) is a parametrized method that returns some array of Fact objects.<br>
<br>
Unfortunately, when I try to launch the following rule I have an error:<br>
<br>
Exception in thread "main" org.mvel.PropertyAccessException: unable to resolve property: factSource.getSomeFacts("a","b","c")<br>
at org.mvel.optimizers.impl.refl.ReflectiveAccessorOptimizer.compileGetChain(ReflectiveAccessorOptimizer.java:295) <br>
at org.mvel.optimizers.impl.refl.ReflectiveAccessorOptimizer.optimizeAccessor(ReflectiveAccessorOptimizer.java:110) <br>
at org.mvel.ast.VariableDeepPropertyNode.getReducedValueAccelerated(VariableDeepPropertyNode.java:26) <br>
at org.mvel.ast.PropertyASTNode.initializePropertyNode(PropertyASTNode.java:70) <br>
at org.mvel.ast.PropertyASTNode.getReducedValueAccelerated(PropertyASTNode.java:24) <br>
at org.mvel.MVELRuntime.execute(MVELRuntime.java:90)<br>
at org.mvel.CompiledExpression.getValue(CompiledExpression.java:111)<br>
at org.mvel.MVEL.executeExpression(MVEL.java:252)<br>
at org.drools.base.dataproviders.MVELDataProvider.getResults(MVELDataProvider.java:55) <br>
at org.drools.reteoo.FromNode.assertTuple(FromNode.java:68)<br>
at org.drools.reteoo.SingleTupleSinkAdapter.createAndPropagateAssertTuple(SingleTupleSinkAdapter.java:55) <br>
at org.drools.reteoo.LeftInputAdapterNode.assertObject(LeftInputAdapterNode.java:116) <br>
at org.drools.reteoo.SingleObjectSinkAdapter.propagateAssertObject(SingleObjectSinkAdapter.java:22) <br>
at org.drools.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:162) <br>
at org.drools.reteoo.Rete.assertObject(Rete.java:175)<br>
at org.drools.reteoo.ReteooRuleBase.assertObject(ReteooRuleBase.java:192) <br>
at org.drools.reteoo.ReteooWorkingMemory$WorkingMemoryReteAssertAction.execute(ReteooWorkingMemory.java:181) <br>
at org.drools.common.AbstractWorkingMemory.executeQueuedActions(AbstractWorkingMemory.java:1312) <br>
at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:915) <br>
at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:883) <br>
at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:684) <br>
at com.sample.DroolsTest6.main(DroolsTest6.java:29)<br>
Caused by: java.lang.NullPointerException<br>
at org.mvel.optimizers.impl.refl.ReflectiveAccessorOptimizer.getMethod(ReflectiveAccessorOptimizer.java:530) <br>
at org.mvel.optimizers.impl.refl.ReflectiveAccessorOptimizer.compileGetChain(ReflectiveAccessorOptimizer.java:261) <br>
... 21 more<br>
<br>
Documentation says:<br>
<br>
"The from Conditional Element allows users to specify a source for patterns to reason over. This allows the engine to reason over data not in the Working Memory. This could be a sub-field on a bound variable or the results of a method call."<br>
<br>
so I assume that it is possible to do what I want. If not, could I ask for an advice of some workaround, please?<br>
<br>
Best regards,<br>
</blockquote>
<br>
_______________________________________________<br>
rules-users mailing list<br>
<a href="mailto:rules-users@lists.jboss.org" target="_blank">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>
</blockquote>
<br>
_______________________________________________<br>
rules-users mailing list<br>
<a href="mailto:rules-users@lists.jboss.org" target="_blank">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>
</blockquote>
<br>
_______________________________________________<br>
rules-users mailing list<br>
<a href="mailto:rules-users@lists.jboss.org" target="_blank">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>
</blockquote>
<br>
_______________________________________________<br>
rules-users mailing list<br>
<a href="mailto:rules-users@lists.jboss.org" target="_blank">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>
</blockquote></blockquote>
_______________________________________________<br>
rules-users mailing list<br>
<a href="mailto:rules-users@lists.jboss.org" target="_blank">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>