Is there a <b><i>defined </i></b>order in which objects resulting from an &quot;over&quot; clause are presented to the preceding from? Otherwise, an accumulate function requiring a specific order is based on implementation details.<br>
-W<br><br><div class="gmail_quote">On 29 January 2011 18:24, Greg Barton <span dir="ltr">&lt;<a href="mailto:greg_barton@yahoo.com">greg_barton@yahoo.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
See the current discussion of accumulate functions.  That should satisfy your need.<br>
<br>
GreG<br>
<br>
On Jan 29, 2011, at 10:18, OlliSee &lt;<a href="mailto:o.roess@seeburger.de">o.roess@seeburger.de</a>&gt; wrote:<br>
<br>
&gt;<br>
&gt; Hello everyone.<br>
&gt;<br>
&gt; Lets say we have StockTicks...<br>
&gt; Is it possible to detect a monotonically decreasing StockTick stream over a<br>
&gt; window?<br>
&gt;<br>
&gt; If I knew the number of events I want to check on, I&#39;d do it this way<br>
&gt;<br>
&gt; $a : StockTick() over window:time(20s)<br>
&gt; $b : StockTick(this after $a, price &lt; $a.price) over window:time(20s)<br>
&gt; ...<br>
&gt;<br>
&gt; But I don&#39;t know for how long the StockTick prices continue to decrease..<br>
&gt; I imagine doing something like that<br>
&gt;<br>
&gt; $list : List(size &gt; 0) from collect(StockTick() over window:time(20s))<br>
&gt; forall($a : StockTick() from $list<br>
&gt;        $b : StockTick(this after $a, price &lt; $a.price from $list<br>
&gt; )<br>
&gt;<br>
&gt; That results in a nice exception.<br>
&gt; Any idea how to do this work? And more efficiently than my approach?<br>
&gt;<br>
&gt; Thanks<br>
&gt; Oliver<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; Exception in thread &quot;Thread-1&quot; java.lang.ClassCastException:<br>
&gt; org.drools.common.DefaultFactHandle cannot be cast to<br>
&gt; org.drools.common.EventFactHandle<br>
&gt;    at<br>
&gt; org.drools.base.evaluators.AfterEvaluatorDefinition$AfterEvaluator.evaluateCachedLeft(AfterEvaluatorDefinition.java:336)<br>
&gt;    at<br>
&gt; org.drools.rule.VariableRestriction.isAllowedCachedLeft(VariableRestriction.java:110)<br>
&gt;    at<br>
&gt; org.drools.rule.VariableConstraint.isAllowedCachedLeft(VariableConstraint.java:115)<br>
&gt;    at<br>
&gt; org.drools.common.DoubleBetaConstraints.isAllowedCachedLeft(DoubleBetaConstraints.java:166)<br>
&gt;    at<br>
&gt; org.drools.reteoo.FromNode.checkConstraintsAndPropagate(FromNode.java:274)<br>
&gt;    at org.drools.reteoo.FromNode.assertLeftTuple(FromNode.java:138)<br>
&gt;    at<br>
&gt; org.drools.reteoo.CompositeLeftTupleSinkAdapter.doPropagateAssertLeftTuple(CompositeLeftTupleSinkAdapter.java:220)<br>
&gt;    at<br>
&gt; org.drools.reteoo.CompositeLeftTupleSinkAdapter.propagateAssertLeftTuple(CompositeLeftTupleSinkAdapter.java:81)<br>
&gt;    at<br>
&gt; org.drools.reteoo.FromNode.checkConstraintsAndPropagate(FromNode.java:279)<br>
&gt;    at org.drools.reteoo.FromNode.assertLeftTuple(FromNode.java:138)<br>
&gt;    at<br>
&gt; org.drools.reteoo.CompositeLeftTupleSinkAdapter.doPropagateAssertLeftTuple(CompositeLeftTupleSinkAdapter.java:220)<br>
&gt;    at<br>
&gt; org.drools.reteoo.CompositeLeftTupleSinkAdapter.propagateAssertLeftTuple(CompositeLeftTupleSinkAdapter.java:81)<br>
&gt;    at<br>
&gt; org.drools.reteoo.AccumulateNode.evaluateResultConstraints(AccumulateNode.java:662)<br>
&gt;    at org.drools.reteoo.AccumulateNode.assertObject(AccumulateNode.java:270)<br>
&gt;    at<br>
&gt; org.drools.reteoo.CompositeObjectSinkAdapter.doPropagateAssertObject(CompositeObjectSinkAdapter.java:450)<br>
&gt;    at<br>
&gt; org.drools.reteoo.CompositeObjectSinkAdapter.propagateAssertObject(CompositeObjectSinkAdapter.java:378)<br>
&gt;    at org.drools.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:190)<br>
&gt;    at org.drools.reteoo.EntryPointNode.assertObject(EntryPointNode.java:145)<br>
&gt;    at<br>
&gt; org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:1187)<br>
&gt;    at<br>
&gt; org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:1089)<br>
&gt;    at<br>
&gt; org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:893)<br>
&gt;    at<br>
&gt; org.drools.impl.StatefulKnowledgeSessionImpl.insert(StatefulKnowledgeSessionImpl.java:238)<br>
&gt;<br>
&gt; --<br>
&gt; View this message in context: <a href="http://drools-java-rules-engine.46999.n3.nabble.com/Writing-a-pattern-in-which-each-event-constraint-depends-on-the-previous-event-tp2370165p2370165.html" target="_blank">http://drools-java-rules-engine.46999.n3.nabble.com/Writing-a-pattern-in-which-each-event-constraint-depends-on-the-previous-event-tp2370165p2370165.html</a><br>

&gt; Sent from the Drools - User mailing list archive at Nabble.com.<br>
&gt; _______________________________________________<br>
&gt; rules-users mailing list<br>
&gt; <a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br>
&gt; <a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</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>
</blockquote></div><br>