<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
<br>
I am using Drools 5.1.1.<br>
Do you want me to package a small maven project exhibiting that
error, and post a Jira?<br>
<br>
Bruno.<br>
<br>
Le 08/09/2011 15:04, Edson Tirelli a écrit :
<blockquote
cite="mid:CAD7AJne6G88a8ggMQCQz5YjrRMb4HkVkTN3-jt2YAZLcBxe5Rg@mail.gmail.com"
type="cite">
<div><br>
</div>
It looks like a bug, as it should not raise a NPE no matter
what.... which version of Drools are you using?
<div><br>
</div>
<div> Edson<br>
<br>
<div class="gmail_quote">2011/9/8 Bruno Freudensprung <span
dir="ltr"><<a moz-do-not-send="true"
href="mailto:bruno.freudensprung@temis.com">bruno.freudensprung@temis.com</a>></span><br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt
0.8ex; border-left: 1px solid rgb(204, 204, 204);
padding-left: 1ex;">
<div bgcolor="#ffffff" text="#000000"> <br>
Hi Edson, hi all,<br>
<br>
To stick to the subject, I have a strange problem (stack
trace in PS) with a rule containing two accumulate calls,
the result of the first one is re-injected as the input of
the second one. Those accumulate functions are "home
made". <br>
The first one (tokenize) returns an ArrayList of Token
objects built by tokenizing the "text" of the Sentence
objects.<br>
The second one (build10windows) returns an ArrayList of
Window objects, each one them containing 10 consecutive
tokens.<br>
Here is the rule<br>
<br>
<tt> when<br>
$budget : ManualAnnotation(text == "something")<br>
<b>$tokens</b> : java.util.ArrayList() <b>from
accumulate </b>($s : Sentence(), <b>tokenize</b>($s))<br>
$windows : java.util.ArrayList() <b>from
accumulate </b>($t : Token() <b>from $tokens</b>, <b>build10windows</b>($t))<br>
# removed a part here but the problem occurs
even without this part<br>
then<br>
retract($budget);<br>
</tt><br>
Is there anything else one should be aware of when
implementing their own accumulate function? I mean things
related to the fact that "classical" accumulate functions
(sum, average) return an immutable object that does not
share anything with the context object.<br>
Although accumulate, reverse, and getResult methods of my
functions are unit tested, I suspect something that could
be related to stateless/stateful considerations.<br>
What do you think?<br>
<br>
Many thanks,<br>
<br>
Bruno.<br>
<br>
PS :<br>
<br>
The stack trace is:<br>
at
org.drools.runtime.rule.impl.DefaultConsequenceExceptionHandler.handleException(DefaultConsequenceExceptionHandler.java:39)<br>
at
org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:927)<br>
at
org.drools.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:856)<br>
at
org.drools.common.DefaultAgenda.fireAllRules(DefaultAgenda.java:1071)<br>
at
org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:785)<br>
at
org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:751)<br>
at
org.drools.impl.StatefulKnowledgeSessionImpl.fireAllRules(StatefulKnowledgeSessionImpl.java:218)<br>
at
org.drools.command.runtime.rule.FireAllRulesCommand.execute(FireAllRulesCommand.java:99)<br>
at
org.drools.command.runtime.rule.FireAllRulesCommand.execute(FireAllRulesCommand.java:33)<br>
at
org.drools.command.runtime.BatchExecutionCommandImpl.execute(BatchExecutionCommandImpl.java:159)<br>
at
org.drools.command.runtime.BatchExecutionCommandImpl.execute(BatchExecutionCommandImpl.java:81)<br>
at
org.drools.impl.StatelessKnowledgeSessionImpl.execute(StatelessKnowledgeSessionImpl.java:262)<br>
... 5 more<br>
Caused by: java.lang.NullPointerException<br>
at
org.drools.reteoo.AccumulateNode.getFirstMatch(AccumulateNode.java:967)<br>
at
org.drools.reteoo.AccumulateNode.splitList(AccumulateNode.java:920)<br>
at
org.drools.reteoo.AccumulateNode.removePreviousMatchesForLeftTuple(AccumulateNode.java:874)<br>
at
org.drools.reteoo.AccumulateNode.retractLeftTuple(AccumulateNode.java:205)<br>
at
org.drools.reteoo.CompositeLeftTupleSinkAdapter.doPropagateRetractLeftTuple(CompositeLeftTupleSinkAdapter.java:238)<br>
at
org.drools.reteoo.CompositeLeftTupleSinkAdapter.propagateRetractLeftTupleDestroyRightTuple(CompositeLeftTupleSinkAdapter.java:138)<br>
at
org.drools.reteoo.AccumulateNode.retractLeftTuple(AccumulateNode.java:212)<br>
at
org.drools.reteoo.ObjectTypeNode.retractObject(ObjectTypeNode.java:240)<br>
at
org.drools.reteoo.EntryPointNode.retractObject(EntryPointNode.java:231)<br>
at
org.drools.common.AbstractWorkingMemory.retract(AbstractWorkingMemory.java:1288)<br>
at
org.drools.base.DefaultKnowledgeHelper.retract(DefaultKnowledgeHelper.java:201)<br>
at
org.drools.base.DefaultKnowledgeHelper.retract(DefaultKnowledgeHelper.java:214)<br>
at
defaultpkg.Rule_Display_windows_0.defaultConsequence(Rule_Display_windows_0.java:21)<br>
at
defaultpkg.Rule_Display_windows_0DefaultConsequenceInvoker.evaluate(Rule_Display_windows_0DefaultConsequenceInvoker.java:29)<br>
at
org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:917)<br>
... 15 more
<div class="im"><br>
<br>
<br>
Bruno.<br>
<br>
Le 24/08/2011 16:21, Edson Tirelli a écrit : </div>
<blockquote type="cite">
<div><br>
</div>
<div>
<div class="h5"> Yes, evaluation is incremental, so
for every new fact, it will call accumulate() and
getResult().
<div><br>
</div>
<div> We do want to reduce the calls to
getResult(), improving performance, but it is not
easy to figure out a way, as from an engine
perspective, it never knows when the application
is done inserting facts and it is time to
calculate the final result.</div>
<div><br>
</div>
<div> Edson<br>
<br>
<div class="gmail_quote">2011/8/24 Bruno
Freudensprung <span dir="ltr"><<a
moz-do-not-send="true"
href="mailto:bruno.freudensprung@temis.com"
target="_blank">bruno.freudensprung@temis.com</a>></span><br>
<blockquote class="gmail_quote" style="margin:
0pt 0pt 0pt 0.8ex; border-left: 1px solid
rgb(204, 204, 204); padding-left: 1ex;"> Hi,<br>
<br>
While testing my custom accumulation function
I noticed an unexpected<br>
behavior (th'ats of course a personal point of
view).<br>
It seems that Drools 5.1 calls accumulate(...)
and getResult(...) as<br>
many times as the number of accumulated facts
(accumulate, getResult,<br>
accumulate, getResult, etc...).<br>
Is it supposed to work like this?<br>
<br>
Best regards,<br>
<br>
Bruno.<br>
<br>
_______________________________________________<br>
rules-users mailing list<br>
<a moz-do-not-send="true"
href="mailto:rules-users@lists.jboss.org"
target="_blank">rules-users@lists.jboss.org</a><br>
<a moz-do-not-send="true"
href="https://lists.jboss.org/mailman/listinfo/rules-users"
target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
</blockquote>
</div>
<br>
<br clear="all">
<div><br>
</div>
-- <br>
Edson Tirelli<br>
JBoss Drools Core Development<br>
JBoss by Red Hat @ <a moz-do-not-send="true"
href="http://www.jboss.com" target="_blank">www.jboss.com</a><br>
</div>
<pre><fieldset></fieldset>
_______________________________________________
rules-users mailing list
<a moz-do-not-send="true" href="mailto:rules-users@lists.jboss.org" target="_blank">rules-users@lists.jboss.org</a>
<a moz-do-not-send="true" href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a>
</pre>
</div>
</div>
</blockquote>
<br>
</div>
<br>
_______________________________________________<br>
rules-users mailing list<br>
<a moz-do-not-send="true"
href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br>
<a moz-do-not-send="true"
href="https://lists.jboss.org/mailman/listinfo/rules-users"
target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
<br>
</blockquote>
</div>
<br>
<br clear="all">
<div><br>
</div>
-- <br>
Edson Tirelli<br>
JBoss Drools Core Development<br>
JBoss by Red Hat @ <a moz-do-not-send="true"
href="http://www.jboss.com">www.jboss.com</a><br>
</div>
<pre wrap="">
<fieldset class="mimeAttachmentHeader"></fieldset>
_______________________________________________
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>