See the current discussion of accumulate functions. That should satisfy your need.
GreG On Jan 29, 2011, at 10:18, OlliSee <[email protected]> wrote: > > Hello everyone. > > Lets say we have StockTicks... > Is it possible to detect a monotonically decreasing StockTick stream over a > window? > > If I knew the number of events I want to check on, I'd do it this way > > $a : StockTick() over window:time(20s) > $b : StockTick(this after $a, price < $a.price) over window:time(20s) > ... > > But I don't know for how long the StockTick prices continue to decrease.. > I imagine doing something like that > > $list : List(size > 0) from collect(StockTick() over window:time(20s)) > forall($a : StockTick() from $list > $b : StockTick(this after $a, price < $a.price from $list > ) > > That results in a nice exception. > Any idea how to do this work? And more efficiently than my approach? > > Thanks > Oliver > > > > Exception in thread "Thread-1" java.lang.ClassCastException: > org.drools.common.DefaultFactHandle cannot be cast to > org.drools.common.EventFactHandle > at > org.drools.base.evaluators.AfterEvaluatorDefinition$AfterEvaluator.evaluateCachedLeft(AfterEvaluatorDefinition.java:336) > at > org.drools.rule.VariableRestriction.isAllowedCachedLeft(VariableRestriction.java:110) > at > org.drools.rule.VariableConstraint.isAllowedCachedLeft(VariableConstraint.java:115) > at > org.drools.common.DoubleBetaConstraints.isAllowedCachedLeft(DoubleBetaConstraints.java:166) > at > org.drools.reteoo.FromNode.checkConstraintsAndPropagate(FromNode.java:274) > at org.drools.reteoo.FromNode.assertLeftTuple(FromNode.java:138) > at > org.drools.reteoo.CompositeLeftTupleSinkAdapter.doPropagateAssertLeftTuple(CompositeLeftTupleSinkAdapter.java:220) > at > org.drools.reteoo.CompositeLeftTupleSinkAdapter.propagateAssertLeftTuple(CompositeLeftTupleSinkAdapter.java:81) > at > org.drools.reteoo.FromNode.checkConstraintsAndPropagate(FromNode.java:279) > at org.drools.reteoo.FromNode.assertLeftTuple(FromNode.java:138) > at > org.drools.reteoo.CompositeLeftTupleSinkAdapter.doPropagateAssertLeftTuple(CompositeLeftTupleSinkAdapter.java:220) > at > org.drools.reteoo.CompositeLeftTupleSinkAdapter.propagateAssertLeftTuple(CompositeLeftTupleSinkAdapter.java:81) > at > org.drools.reteoo.AccumulateNode.evaluateResultConstraints(AccumulateNode.java:662) > at org.drools.reteoo.AccumulateNode.assertObject(AccumulateNode.java:270) > at > org.drools.reteoo.CompositeObjectSinkAdapter.doPropagateAssertObject(CompositeObjectSinkAdapter.java:450) > at > org.drools.reteoo.CompositeObjectSinkAdapter.propagateAssertObject(CompositeObjectSinkAdapter.java:378) > at org.drools.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:190) > at org.drools.reteoo.EntryPointNode.assertObject(EntryPointNode.java:145) > at > org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:1187) > at > org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:1089) > at > org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:893) > at > org.drools.impl.StatefulKnowledgeSessionImpl.insert(StatefulKnowledgeSessionImpl.java:238) > > -- > View this message in context: > http://drools-java-rules-engine.46999.n3.nabble.com/Writing-a-pattern-in-which-each-event-constraint-depends-on-the-previous-event-tp2370165p2370165.html > Sent from the Drools - User mailing list archive at Nabble.com. > _______________________________________________ > rules-users mailing list > [email protected] > https://lists.jboss.org/mailman/listinfo/rules-users _______________________________________________ rules-users mailing list [email protected] https://lists.jboss.org/mailman/listinfo/rules-users
