I've declared an @expires of 30s for both events. However, my problem is that within a 30 second window it doesn't seem possible to ascertain whether both of the events occur simultaneously. I could change the @expires to 10 seconds for the above rule, which would make it work. However, I would like to be to perform more complicated matches, e.g. matching sequences of events which occur after another.
$f : Double(doubleValue > 1.0) from accumulate( Event($v : value, name == "Foo") over window:time ( 10s )
from entry-point EntryPoint, average($v))
// following event must start immediately _after_ the above.
$b : Double(doubleValue < 1.0) from accumulate( Event($v : value, name == "Bar") over window:time ( 20s )
from entry-point EntryPoint, average($v))
Any suggestions how I can achieve this kind of functionality?
Many Thanks,
Paul
Do your Foo and Bar events declare an @expires value? If their expiration is less than 10 seconds then the rule below won't work properly. (And by default an event's expiration is 0, which makes the rule below go wacky if @expires hasn't been declared...) If the @expires is 10s or greater for both events it should work.
--- On Thu, 1/14/10, Paul R. <reverselogic@gmail.com> wrote:
> From: Paul R. <reverselogic@gmail.com>
> Subject: [rules-users] Accumulate + Temporal Operators
> To: rules-users@lists.jboss.org
> Date: Thursday, January 14, 2010, 1:56 PM
> -----Inline Attachment Follows-----> Hi,
>
> I'm using accumulate with sliding windows to verify
> that certain event conditions are present for a specified
> period of time, which works fine, however
> I need to verify that both conditions are present at the
> same time, i.e Foo.value > 1 for 10 seconds and Bar.value
> < 1 for 10 seconds. There doesn't
>
> appear to be an obvious way to use the temporal operators
> in this situation. Can anybody offer any suggestions?
>
> rule test no-loop true
> when
> $f : Double(doubleValue > 1.0) from
> accumulate( Foo($v : value) over window:time ( 10s )
>
> from entry-point EntryPoint,
> min($v))
> $b : Double(doubleValue < 1.0) from
> accumulate( Bar($v : value) over window:time ( 10s )
> from entry-point EntryPoint,
> max($v))
> then
>
> // ...
> end
>
> Any help greatly appreciated.
>
> Thanks,
>
> Paul
>
>
>
> _______________________________________________
> rules-users mailing list
> rules-users@lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users