[rules-users] Grouping rules

Anstis, Michael (M.) manstis1 at ford.com
Fri Feb 1 10:31:56 EST 2008


Excuse me if you already understand but there is a difference between rule
patterns being evaluated and their consequence running.
 
Rules LHS are evaluated when objects are inserted into working memory
whereas the consequence fires when you call fireAllRules();
 
The rules whose activations are executed are those in the given Agenda
Group; thereafter those not in any agenda group execute. So if all rules are
in an Agenda Group you should be OK.
 
Of course they don't prevent all rule patterns from being checked as objects
are inserted into WM (which has a performance impact) but this is what the
RETE network was designed to optimise. 
 
You could try another configuration (but I think Agenda Groups are probably
the preference by design). This gives complete isolation - but I haven't
tried it so it might not even be possible ;-)

global WorkingMemory wm;
global RuleBase rbX;

global RuleBase rbY;
 
rule "Group X"
    when
        Fact( attribute == "condition1" )
    then
        wm = rbX.newStatefulSession();
        wm.fireAllRules();
end
 

rule "Group Y"
    when
        Fact( attribute == "condition2" )
    then
        wm = rbY.newStatefulSession();
        wm.fireAllRules();
end

Good luck.
 
Mike


  _____  

From: rules-users-bounces at lists.jboss.org
[mailto:rules-users-bounces at lists.jboss.org] On Behalf Of Jai Vasanth
Sent: 01 February 2008 15:07
To: Rules Users List
Subject: Re: [rules-users] Grouping rules



Thanks for responding 
Yes,  I did consider agenda groups, but I thought agenda groups only ordered
execution in a particular fashion, so if Rule "pick group X" fires then it
would make sure that rules in Agenda Group X fire first before the remaining
but the remaining would fire eventually. Is my  understanding correct ?
I am looking for a solution for completely isolating a rule set  conditioned
on an object attribute.


On Feb 1, 2008 12:46 AM, Anstis, Michael (M.) <manstis1 at ford.com> wrote:


What about Agenda Groups?
 
Rule "pick group X"
when
    Fact( attribute = "condition1" )
then
    drools.setFocus("Group X")
end
 
Rule "pick group Y"
when
    Fact( attribute = "condition2" )
then
    drools.setFocus("Group Y")
end
 
Rule "Group X1"
Agenda Group "Group X"
when
    Smurf( )
then
    // Do something
end
 
Rule "Group X2"
Agenda Group "Group X"
when
    Smurfette( )
then
    // Something else
end
 
etc


  _____  

From: rules-users-bounces at lists.jboss.org
[mailto:rules-users-bounces at lists.jboss.org] On Behalf Of Jai Vasanth
Sent: 31 January 2008 19:45
To: rules-users at lists.jboss.org
Subject: [rules-users] Grouping rules


Hi,


 I am building a system where I would need to fire different sets of rules
based on some attribute in the fact object.  

Here are someways which I thought of, I was wondering if there was something
better than that.

1) I could do this by creating different sessions based on the data attrbute
(different sessions would have different rule packages based on the
attribute)

or 

2) Have all the rules fire (all the different sets of rules) irrespective of
the attribute and have them insert fact new objects into the working memory.
In the second round of rules, collect the (newly made) fact objects  based
on the attribute and take that action.



Thanks 

Jai 







_______________________________________________
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/20080201/cf2d543a/attachment.html 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/x-pkcs7-signature
Size: 4159 bytes
Desc: not available
Url : http://lists.jboss.org/pipermail/rules-users/attachments/20080201/cf2d543a/attachment.bin 


More information about the rules-users mailing list