Use what I call "peephole technique" in my paper on design patterns. Here,
the peephole would hold references to the last,next-to-last, last but
two,... event, to be updated with each new event.

The stack/pop looks rather horrid, if I'm permitted to say so... ;-)

-WL

On 16/10/2013, Alexander Wolf <[email protected]> wrote:
> Hey,
>
> I try to use drools fusion to detect patterns in an event stream.
> Each time an event occurs I insert it into my ksession and call
> fireAllRules().
>
> Most of my rules need to reason over the newest event (the one that just
> came in) in conjunction with events that happend before or after that.
> I also have a "state" within my environment. e.g. temperature (HIGH, MEDIUM,
> LOW). (but also other state variables)
>
> e.g. [pseudo code]
> WHEN
>       temperature MEDIUM or LOW
>       newest event (value >= 20)
>       last previous event (value >= 20)
> then
>       set temperature to HIGH
>
>
> Now I run into lots of problems with this e.g. that I can not easily get the
> "newest" and "last previous" events. When i get Events() there is usually
> more than one (as some of them are not immediately expired)
> Also the rule is triggert when temperature is changed without a new event
> being inserted.
>
> I could theoretically "mark" events that have been used, but I might run
> into problems when other rules are added that depend on the same events.
> Also it seems to be untidy to do so.
> For now I used this to get the "newest" event, but it seems to be very
> non-declarative to do it like that
>
>       //most recent event     
>       Stack(size > 0, $event: pop, $event.value == 1)
>               from collect( Event())  
>
>
> Are there any best practices especially for working with the "newest" event
> and with events + facts (as "states")?
>
> - Alex
>
_______________________________________________
rules-users mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/rules-users

Reply via email to