[rules-users] can drools support complex rules (resetting of Accumulate?)

Edson Tirelli tirelli at post.com
Fri May 22 09:18:19 EDT 2009


   Hi Rishi,

   I am not sure about the complete semantics of what you asked for in your
first e-mail, but I think you are talking about a feature known as tumbling
windows in this second e-mail. Drools does not support tumbling windows out
of the box yet.

   For now, the only way that I can think of for this is using a helper
object to simulate the window.

   Having said that, adding tumbling windows to Drools would not be hard,
because the design already supports such features. We are missing time to
implement or a brave soul to contribute the feature! ;)

   Edson

2009/5/22 <hrishikesh.varma at wipro.com>

> 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 at gmail.com>
> Subject: Re: [rules-users] can drools support complex rules (resetting
>        of      Accumulate?)
> To: Rules Users List <rules-users at lists.jboss.org>
> Message-ID:
>         <17de7ee80905210916gfddba51h35bf639ccf5af18a at 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 at 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 at post.com>
> > Subject: Re: [rules-users] can drools support complex rules
> > To: Rules Users List <rules-users at lists.jboss.org>
> > Message-ID:
> >        <e6dd5ba30905190817q33d15b9er5efee64bc74cdb0e at 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 at 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 at kaleconsultants.com
> > > tel: +91 (0)206 608
> >
> 3777<http://www.plaxo.com/click_to_call?lang=en&src=jj_signature&To=%2B9
> >
> 1+%280%29206+608+3777&Email=bhushan_bhangale at kaleconsultants.com<http://
> www.plaxo.com/click_to_call?lang=en&src=jj_signature&To=%2B9%0A1+%280%29
> 206+608+3777&Email=bhushan_bhangale at 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 at 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
> > -------------- next part --------------
> > An HTML attachment was scrubbed...
> > URL:
> >
> http://lists.jboss.org/pipermail/rules-users/attachments/20090519/4d4928
> >
> 6d/attachment-0001.html<http://lists.jboss.org/pipermail/rules-users/att
> achments/20090519/4d4928%0A6d/attachment-0001.html<http://lists.jboss.org/pipermail/rules-users/att%0Aachments/20090519/4d4928%0A6d/attachment-0001.html>
> >
> >
> > ------------------------------
> >
> > _______________________________________________
> > rules-users mailing list
> > rules-users at lists.jboss.org
> > https://lists.jboss.org/mailman/listinfo/rules-users
> >
> >
> > End of rules-users Digest, Vol 30, Issue 56
> > *******************************************
> >
> > Please do not print this email unless it is absolutely necessary.
> >
> > The information contained in this electronic message and any
> attachments to
> > this message are intended for the exclusive use of the addressee(s)
> and may
> > contain proprietary, confidential or privileged information. If you
> are not
> > the intended recipient, you should not disseminate, distribute or copy
> this
> > e-mail. Please notify the sender immediately and destroy all copies of
> this
> > message and any attachments.
> >
> > WARNING: Computer viruses can be transmitted via email. The recipient
> > should check this email and any attachments for the presence of
> viruses. The
> > company accepts no liability for any damage caused by any virus
> transmitted
> > by this email.
> >
> > www.wipro.com
> >
> > _______________________________________________
> > rules-users mailing list
> > rules-users at lists.jboss.org
> > https://lists.jboss.org/mailman/listinfo/rules-users
> >
> -------------- next part --------------
> An HTML attachment was scrubbed...
> URL:
> http://lists.jboss.org/pipermail/rules-users/attachments/20090521/cd3adb
> ca/attachment-0001.html<http://lists.jboss.org/pipermail/rules-users/attachments/20090521/cd3adb%0Aca/attachment-0001.html>
>
> ------------------------------
>
> Message: 2
> Date: Thu, 21 May 2009 10:42:34 -0700 (PDT)
> From: Steinar Haugen <steinar.haugen at gmail.com>
> Subject: [rules-users] RuleBase.removeRule leads to
>        NoClassDefFoundError
> To: rules-users at lists.jboss.org
> Message-ID: <23657476.post at talk.nabble.com>
> Content-Type: text/plain; charset=us-ascii
>
>
> Hi,
>
> We're having a problem with runtime rule administration; i.e. using
> RuleBase.addRule and RuleBase.removeRule.
>
> We're using Drools 4.0.7 on Sun JDK 1.4.2_11 and inside Weblogic 8.1 sp
> 6.
>
> Typically we remove a few rules followed by adding a few rules. In some
> cases, we receive a NoClassDefFoundError. Stacktrace is provided in
> attached
> file.
>
> http://www.nabble.com/file/p23657476/stacktrace.txt stacktrace.txt
>
> The class referenced (i.e. the one not found) is the removed rule.
>
> Has anyone else seen this behaviour?
>
> This seems like such a basic error that we're wondering if we're doing
> something wrong here. We have been unable to find anything about this
>
> To make matters worse, this actually leads to a deadlock. This is
> because
> lock / unlock in version 4.0.7 is not encapsuled in a try / finally
> block in
> AbstractRuleBase.removeRule(), so whenever an error occurs, the lock is
> not
> released.
>
> I found a Jira issue regarding this, where this issue is addressed and
> apparently fixed in an earlier version:
> https://jira.jboss.org:8443/jira/browse/JBRULES-603
>
> This fix has been rolled back, however, so this issue is present in
> version
> 4.0.7.
>
> We found a workaround for the deadlock by performing lock / unlock
> ourselves, since drools will not lock if it has been performed already.
>
> In addition, we encapsulate rulebase access with a read/write lock to
> ensure
> that whenever the rulebase is updated, no other operation towards it is
> performed.
>
> Regards,
> Steinar Haugen
>
>
>
> --
> View this message in context:
> http://www.nabble.com/RuleBase.removeRule-leads-to-NoClassDefFoundError-
> tp23657476p23657476.html<http://www.nabble.com/RuleBase.removeRule-leads-to-NoClassDefFoundError-%0Atp23657476p23657476.html>
> Sent from the drools - user mailing list archive at Nabble.com.
>
>
>
> ------------------------------
>
> Message: 3
> Date: Thu, 21 May 2009 23:57:51 +0200
> From: Femke De Backere <femmyke at gmail.com>
> Subject: [rules-users] [users-rules] Loading time ruleflow
> To: Rules Users List <rules-users at lists.jboss.org>
> Message-ID: <D4A555A5-AB32-404C-923B-B70C3EFB9892 at gmail.com>
> Content-Type: text/plain; charset="us-ascii"
>
> Hi!
>
> I'm testing the loading time of the line:
> kbuilder.add(ResourceFactory.newClassPathResource("nodesflow.rf",
> DroolsTest.class), ResourceType.DRF ); for a rule flow file with 1
> split node, 3 split nodes, 7 split nodes, ...
>
> But the results I already have are confusing:
> 1 split node
> 26071960,8
>
> 1
>
>
> 3 split nodes
> 1018762000
> 40, 85676594 times the time of 1 split node flow
> 7 split nodes
> 4974479,4
> 1,907968479 times the time of 1 split node flow
>
> Can anybody explain why the 3 split node rule flow file takes a lot
> longer than the 7 split rule flow file?
>
> Thx,
>
> Femke
>
> -------------- next part --------------
> An HTML attachment was scrubbed...
> URL:
> http://lists.jboss.org/pipermail/rules-users/attachments/20090521/553526
> 18/attachment.html<http://lists.jboss.org/pipermail/rules-users/attachments/20090521/553526%0A18/attachment.html>
>
> ------------------------------
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
>
> End of rules-users Digest, Vol 30, Issue 63
> *******************************************
>
> Please do not print this email unless it is absolutely necessary.
>
> The information contained in this electronic message and any attachments to
> this message are intended for the exclusive use of the addressee(s) and may
> contain proprietary, confidential or privileged information. If you are not
> the intended recipient, you should not disseminate, distribute or copy this
> e-mail. Please notify the sender immediately and destroy all copies of this
> message and any attachments.
>
> WARNING: Computer viruses can be transmitted via email. The recipient
> should check this email and any attachments for the presence of viruses. The
> company accepts no liability for any damage caused by any virus transmitted
> by this email.
>
> www.wipro.com
>
> _______________________________________________
> rules-users mailing list
> rules-users at 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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20090522/d5bd3171/attachment.html 


More information about the rules-users mailing list