A monotonically decreasing sequence a1, a2,... is one without a[i] < a[j] for all j > i.<br><br>$a : StockTick() over window:time(20s)<br> not StockTick(this after $a, price > $a.price) over window:time(20s)<br> <br>
But I think that it's more efficient to keep track of the status of a stock by its last quote and the last time there was an increase. The arrival of a new StockTick is matched in a couple of rules with the StockStatus, which is updated accordingly.<br>
<br>-W<br><br><br><br><br><div class="gmail_quote">On 28 January 2011 11:25, OlliSee <span dir="ltr"><<a href="mailto:o.roess@seeburger.de">o.roess@seeburger.de</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;">
<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>
<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>
<font color="#888888"><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-constraint-for-an-event-depends-on-the-previous-event-tp2366196p2366196.html" target="_blank">http://drools-java-rules-engine.46999.n3.nabble.com/Writing-a-pattern-in-which-each-constraint-for-an-event-depends-on-the-previous-event-tp2366196p2366196.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>
</font></blockquote></div><br>