Is there a <b><i>defined </i></b>order in which objects resulting from an "over" 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"><<a href="mailto:greg_barton@yahoo.com">greg_barton@yahoo.com</a>></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 <<a href="mailto:o.roess@seeburger.de">o.roess@seeburger.de</a>> wrote:<br>
<br>
><br>
> Hello everyone.<br>
><br>
> Lets say we have StockTicks...<br>
> Is it possible to detect a monotonically decreasing StockTick stream over a<br>
> window?<br>
><br>
> If I knew the number of events I want to check on, I'd do it this way<br>
><br>
> $a : StockTick() over window:time(20s)<br>
> $b : StockTick(this after $a, price < $a.price) over window:time(20s)<br>
> ...<br>
><br>
> But I don't know for how long the StockTick prices continue to decrease..<br>
> I imagine doing something like that<br>
><br>
> $list : List(size > 0) from collect(StockTick() over window:time(20s))<br>
> forall($a : StockTick() from $list<br>
> $b : StockTick(this after $a, price < $a.price from $list<br>
> )<br>
><br>
> That results in a nice exception.<br>
> Any idea how to do this work? And more efficiently than my approach?<br>
><br>
> Thanks<br>
> Oliver<br>
><br>
><br>
><br>
> Exception in thread "Thread-1" java.lang.ClassCastException:<br>
> org.drools.common.DefaultFactHandle cannot be cast to<br>
> org.drools.common.EventFactHandle<br>
> at<br>
> org.drools.base.evaluators.AfterEvaluatorDefinition$AfterEvaluator.evaluateCachedLeft(AfterEvaluatorDefinition.java:336)<br>
> at<br>
> org.drools.rule.VariableRestriction.isAllowedCachedLeft(VariableRestriction.java:110)<br>
> at<br>
> org.drools.rule.VariableConstraint.isAllowedCachedLeft(VariableConstraint.java:115)<br>
> at<br>
> org.drools.common.DoubleBetaConstraints.isAllowedCachedLeft(DoubleBetaConstraints.java:166)<br>
> at<br>
> org.drools.reteoo.FromNode.checkConstraintsAndPropagate(FromNode.java:274)<br>
> at org.drools.reteoo.FromNode.assertLeftTuple(FromNode.java:138)<br>
> at<br>
> org.drools.reteoo.CompositeLeftTupleSinkAdapter.doPropagateAssertLeftTuple(CompositeLeftTupleSinkAdapter.java:220)<br>
> at<br>
> org.drools.reteoo.CompositeLeftTupleSinkAdapter.propagateAssertLeftTuple(CompositeLeftTupleSinkAdapter.java:81)<br>
> at<br>
> org.drools.reteoo.FromNode.checkConstraintsAndPropagate(FromNode.java:279)<br>
> at org.drools.reteoo.FromNode.assertLeftTuple(FromNode.java:138)<br>
> at<br>
> org.drools.reteoo.CompositeLeftTupleSinkAdapter.doPropagateAssertLeftTuple(CompositeLeftTupleSinkAdapter.java:220)<br>
> at<br>
> org.drools.reteoo.CompositeLeftTupleSinkAdapter.propagateAssertLeftTuple(CompositeLeftTupleSinkAdapter.java:81)<br>
> at<br>
> org.drools.reteoo.AccumulateNode.evaluateResultConstraints(AccumulateNode.java:662)<br>
> at org.drools.reteoo.AccumulateNode.assertObject(AccumulateNode.java:270)<br>
> at<br>
> org.drools.reteoo.CompositeObjectSinkAdapter.doPropagateAssertObject(CompositeObjectSinkAdapter.java:450)<br>
> at<br>
> org.drools.reteoo.CompositeObjectSinkAdapter.propagateAssertObject(CompositeObjectSinkAdapter.java:378)<br>
> at org.drools.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:190)<br>
> at org.drools.reteoo.EntryPointNode.assertObject(EntryPointNode.java:145)<br>
> at<br>
> org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:1187)<br>
> at<br>
> org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:1089)<br>
> at<br>
> org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:893)<br>
> at<br>
> org.drools.impl.StatefulKnowledgeSessionImpl.insert(StatefulKnowledgeSessionImpl.java:238)<br>
><br>
> --<br>
> 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>
> Sent from the Drools - User mailing list archive at Nabble.com.<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>
<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>