Re: [rules-users] Accumulate + Temporal Operators

2010-01-20 Thread Paul R.
Hi Greg,

Many thanks for the response. Works great!

Cheers,

Paul

On Mon, Jan 18, 2010 at 6:24 AM, Greg Barton  wrote:

> Yeah, you'll have to reinsert events into the stream, or another stream.
>  Probably the latter would be better.
>
> rule "DetectedFooAverageOver1"
> when
>   $f : Double(doubleValue > 1.0) from accumulate( Event($v : value, name ==
> "Foo") over window:time ( 10s ) from entry-point EntryPoint, average($v))
> then
>  entryPoints["DetectedStuff"].insert(new ComplexEvent("FooAvg", $f));
> end
>
> Then a similar rule for the Bar average, and a rule to test the coincidence
> of the complex events:
>
> rule "ComplexAvgBarPrettySoonAfterComplexAvgFoo"
> when
>  $foo : ComplexEvent(name == "FooAvg") from entry-point DetectedStuff
>  $bar : ComplexEvent(name == "BarAvg", this after[0s,1s] $foo) from
> entry-point DetectedStuff
> then
>  System.out.println("Uf, dah!");
> end
>
> And more fun can be had with this event aggregation idea.
>
> --- On Sun, 1/17/10, Paul R.  wrote:
>
> > From: Paul R. 
> > Subject: Re: [rules-users] Accumulate + Temporal Operators
> > To: "Rules Users List" 
> > Date: Sunday, January 17, 2010, 12:29 PM
> > 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
> >
> >
> > On Sun, Jan 17, 2010 at 4:19 AM,
> > Greg Barton 
> > wrote:
> >
> > 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. 
> > wrote:
> >
> >
> >
> > > From: Paul R. 
> >
> > > Subject: [rules-users] Accumulate + Temporal
> > Operators
> >
> > > To: rules-users@lists.jboss.org
> >
> > > Date: Thursday, January 14, 2010, 1:56 PM
> >
> > > 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
&

Re: [rules-users] Accumulate + Temporal Operators

2010-01-17 Thread Greg Barton
Yeah, you'll have to reinsert events into the stream, or another stream.  
Probably the latter would be better.  

rule "DetectedFooAverageOver1"
when 
  $f : Double(doubleValue > 1.0) from accumulate( Event($v : value, name == 
"Foo") over window:time ( 10s ) from entry-point EntryPoint, average($v))
then
  entryPoints["DetectedStuff"].insert(new ComplexEvent("FooAvg", $f));
end

Then a similar rule for the Bar average, and a rule to test the coincidence of 
the complex events:

rule "ComplexAvgBarPrettySoonAfterComplexAvgFoo"
when
  $foo : ComplexEvent(name == "FooAvg") from entry-point DetectedStuff
  $bar : ComplexEvent(name == "BarAvg", this after[0s,1s] $foo) from 
entry-point DetectedStuff
then
  System.out.println("Uf, dah!");
end

And more fun can be had with this event aggregation idea.

--- On Sun, 1/17/10, Paul R.  wrote:

> From: Paul R. 
> Subject: Re: [rules-users] Accumulate + Temporal Operators
> To: "Rules Users List" 
> Date: Sunday, January 17, 2010, 12:29 PM
> 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
> 
> 
> On Sun, Jan 17, 2010 at 4:19 AM,
> Greg Barton 
> wrote:
> 
> 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. 
> wrote:
> 
> 
> 
> > From: Paul R. 
> 
> > Subject: [rules-users] Accumulate + Temporal
> Operators
> 
> > To: rules-users@lists.jboss.org
> 
> > Date: Thursday, January 14, 2010, 1:56 PM
> 
> > 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
> 
> >
> 
> >
> 
> > -Inline Attachment Follows-
> 
> >
> 
> > ___
> 
> > 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
> 
> 
> 
> 
> -Inline Attachment Follows-
> 
> ___
> 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


Re: [rules-users] Accumulate + Temporal Operators

2010-01-17 Thread Paul R.
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


On Sun, Jan 17, 2010 at 4:19 AM, Greg Barton  wrote:

> 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.  wrote:
>
> > From: Paul R. 
> > Subject: [rules-users] Accumulate + Temporal Operators
> > To: rules-users@lists.jboss.org
> > Date: Thursday, January 14, 2010, 1:56 PM
> > 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
> >
> >
> > -Inline Attachment Follows-
> >
> > ___
> > 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
>
___
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users


Re: [rules-users] Accumulate + Temporal Operators

2010-01-16 Thread Greg Barton
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.  wrote:

> From: Paul R. 
> Subject: [rules-users] Accumulate + Temporal Operators
> To: rules-users@lists.jboss.org
> Date: Thursday, January 14, 2010, 1:56 PM
> 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
> 
> 
> -Inline Attachment Follows-
> 
> ___
> 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