[rules-users] Is there a faster way of doing this in Drools ?

soumya_sd soumya_sd at yahoo.com
Wed May 9 11:41:37 EDT 2012


Vincent Legendre wrote
> 
> Users changing rules IS the correct use-case of drools (I would even say
> that if rules never change, drools is likely to be worse than pure java).
> What others said is "changing the rules at each request by regenerating
> and recompiling" is not.
> 
> I can't imagine that users may change rules at each request, so you must
> have, at least for some time (thus a lot of requests), a stable rule base.
> What is costly is to compile rules, but you already know that.
> So the idea is to keep in some kind of cache the actual rules, and only
> recompile them when they change.
> 
> The source of rules does not matter : you can generate the DRL according
> to your configuration, or make you users directly write rules (with
> guvnor, which will fits well if your rules are only basic filters).
> 
> The optimisation you have to do is to keep your compiled rules somewhere
> (by serializing your KnowlegdePackages or simply keep it in a kind of
> map), and reuse it until your source change : you have to find a way to
> detect that rules (or the config that is used to generate them) have
> changed, and then recompile a new up-to-date KnowledgePackage.
> 
> 

Thank you for your insights. 

At this point I'm designing for the worst case i.e., I'm assuming the rules
with change with every request. 

Moreover, this can happen on a regular basis in the system I'm trying to
design. 

Product
{ 
  price
  ave_user_rating
  num_ratings
  category 
  
} 

User wants to see Product with with the following rules 

at t=t_1 : If product.category in {A,B}. 

at t=t_2 : If product.category in {A,B} AND price < 100 

at t=t_3 :  If product.category in {A,B}  AND price < 100 AND num_ratings >
100 

You can imagine the user changing these rules in a span of less than a
minute. 

I understand that Drools is designed for cases when rules changes often. But
can it support something like the one I described above where rules are
changing at a much faster rate? 


Thanks. 






--
View this message in context: http://drools.46999.n3.nabble.com/Is-there-a-faster-way-of-doing-this-in-Drools-tp3973888p3974483.html
Sent from the Drools: User forum mailing list archive at Nabble.com.


More information about the rules-users mailing list