Hi,
That's the first thought I had too!
But that way, I'll be getting an "alarm" for every event after $times
reached 10.
Ideally, I'd want the accumulate method to restart "accumulation" once
the RHS is triggered - so effectively the RHS would then be triggered
for every "distinct" 10 events accumulated.
Any out of the box solution for this?
Also, am wondering - if some of us can pitch in effort and come up with
a more detailed document on the Rule Language specifically? Going
through most of the mails, I feel that's the only learning curve - we
can make that even less challenging - like an "Advanced DRLs for
Dummies" :) ?
But before that... the resetting of my accumulator count, any ideas?
Cheers,
Rishi
----------------------------------------------------------------------
Message: 1
Date: Thu, 21 May 2009 18:16:01 +0200
From: Wolfgang Laun <wolfgang.laun(a)gmail.com
Subject:
Re: [rules-users] can drools support complex rules (resetting
of Accumulate?)
To: Rules Users List <rules-users(a)lists.jboss.org
Message-ID:
<17de7ee80905210916gfddba51h35bf639ccf5af18a(a)mail.gmail.com
Content-Type: text/plain; charset="iso-8859-1"
Well, it's definitely not forbidden to do a little computational work on
the
RHS, too.
Bind the result to a variable:
Number( $times : intValue > 10 )...
and, on the RHS, do
for( int i = 1; i <= $times % 10; i++ ) shout( "alarm" );
or whatever.
-W
On Thu, May 21, 2009 at 4:21 PM, <hrishikesh.varma(a)wipro.com> wrote:
Hi,
Temporal Reasoning with Accumulate - (like 3- rule "Customer login
from
more than 5 locations in the last one month")
What if I want to reset my count for accumulate within the time
specified sliding window.So that I can have the RHS triggered for
every
10times the event occurs in the same window.
For Example:
when
$customer : Customer( $id : id )
Number( intValue > 10 ) from accumulate(
CustomerLogin( loginStatus=="Failed", customerId
==
$id,$cusId:customerId)
over window:time( 30s ),
count( $ cusId) )
then
// do something as the customer had abnormal number of failed
violations in last 30 secs.
end
Right now am doing something similar, but using a manual approach -of
explicitly counting.
Any Light on this?
Regards
Rishi
----------------------------------------------------------------------
Message: 1
Date: Tue, 19 May 2009 11:17:41 -0400
From: Edson Tirelli <tirelli(a)post.com
Subject:
Re: [rules-users] can drools support complex rules
To: Rules Users List <rules-users(a)lists.jboss.org
Message-ID:
<e6dd5ba30905190817q33d15b9er5efee64bc74cdb0e(a)mail.gmail.com
Content-Type: text/plain; charset="windows-1252"
Your question is funny. First you ask if Drools is capable of
managing
complex rules and then you mention examples of extremely simple rules?
:)
Drools is FOL complete and so can represent any well formed First
Order
Logic expression. Anyway, I will use this message to advertise some of
the
temporal reasoning features that we have on Drools 5 for the benefit
of
anyone interested.
There are several ways of authoring such rules, depending on how
you
model your problem domain. One possible way of doing them is:
#1:
rule "If a customer login within 5 minutes from two different
locations,
mark the user invalid."
when
$l1 : CustomerLogin( )
$l2 : CustomerLogin( userId == l1.$id, location != $l1.id,
timestamp
after[0s, 5m] $l1.timestamp )
then
// mark user as invalid
end
In the previous example I assumed both login objects would be in
working
memory, but you can easily query for the previous login in an
external
datasource, pulling the data from the previous login on-demand for the
reasoning cycle.
#2:
rule "If the customer location is not on a list of valid locations,
mark
the
user invalid"
when
$l : CustomerLogin( location not memberOf $validLocations )
then
// mark the user invalid
end
In the above rule, I assume the valid locations list is a global list,
but
you can as easily model locations as being facts on your working
memory
or a
service end point that you can call to validate the location.
#3:
rule "Customer login from more than 5 locations in the last one month"
when
$customer : Customer( $id : id )
$locations : Set( size > 5 ) from accumulate(
CustomerLogin( customerId == $id, $loc : location
)
over window:time( 30d ),
collectSet( $loc ) )
then
// do something as the customer logged in from more than 5
locations
in
the last 30 days
end
In the previous rule I decided to use sliding windows, just to show
how
that
feature can be used to simplify rules, but again, there are several
ways
of
doing it.
I strongly recommend you read Drools manual.
http://www.jboss.org/drools/documentation.html
Cheers,
Edson
2009/5/19 Bhushan Bhangale <bhushan_bhangale(a)kaleconsultants.com
> Hi,
> I
recently came across Drools. I gone through the documentation and
the
> examples provide are quite simple. I want to know if it can be
really
> applied to complex real world problems.
>
Take for example,
> If
a customer login within 5 minutes from two different locations,
mark the
> user invalid.
> How can I write the above rule in drools? I have the data
when the
user
> last logged in and the data of current login. You can say two
objects.
> May be my understanding is wrong but looks like based on
rule I have
to
> pass all the required data. How can then at real time new rules can
be
> added?
> For
example,
> If
the customer location is not on a list of valid locations, mark
the
user
> invalid.
> For
the above rule I need to pass a list of valid locations as well.
> Now
how about "Customer login from more than 5 locations in the last
one
> month"?
>
Thanks
> *Mr. Bhangale Bhushan*
> *Associate Manager*
> *Kale Consultants Ltd.*
> bhushan_bhangale(a)kaleconsultants.com
> tel: +91 (0)206 608
3777<http://www.plaxo.com/click_to_call?lang=en&src=jj_signature&a...
1+%280%29206+608+3777&Email=bhushan_bhangale@kaleconsultants.com<http://
www.plaxo.com/click_to_call?lang=en&src=jj_signature&To=%2B9%0A1+...
206+608+3777&Email=bhushan_bhangale(a)kaleconsultants.com
>
> >
http://www.kaleconsultants.com
>
>
>
>
>
>
>
>
>
> >
Disclaimer: This email (including any attachments) is intended for
the
sole
> use of the recipient/s and may contain material that is
CONFIDENTIAL.
Any
> unauthorized disclosure / copying / distribution or forwarding of
this
message
> or part is STRICTLY PROHIBITED. If you have erroneously received
this
> message,
> > please delete it immediately and notify the sender. No liability is
> assumed for
> > any errors and/or omissions in the contents of this message.
> Information in
> > this message that does not relate to the official business of this
> Company
> > shall be understood as neither given nor endorsed by it. If
> verification is
> > required please request a hard-copy version.
>
> > To know more about Kale Consultants, visit
www.kaleconsultants.com
>
> > ----------
>
>
>
>
>
> >
_______________________________________________
> > rules-users mailing list
> > rules-users(a)lists.jboss.org
> >
https://lists.jboss.org/mailman/listinfo/rules-users
>
>
> --
> Edson Tirelli
> JBoss Drools Core Development
> JBoss, a division of Red Hat @
www.jboss.com
>