[rules-users] I want only first rule to be executed even more than one rule are fulfilling the LHS

Lindy hagan lindyhagan at gmail.com
Tue Apr 21 17:31:30 EDT 2009


Yes, looks like this will help.

2009/4/21 Edson Tirelli <tirelli at post.com>

>
>     Define the expression "check for". :)
>
>     When working with Rete rules engines, all rules conditions are
> *evaluated* at fact insertion time. But the consequences are executed at
> rule fire time. So, does not matter if you use activation groups or not, all
> your 10 rule conditions will be evaluated the moment your facts are inserted
> into the working memory.
>
>     Now, if you use the same activation group for all 10 rules and rule 3
> fires, it immediately cancels any other possible activations of rules 4 to
> 10 and they obviously will not fire. So, the end result is that only rule 3
> was executed, that I thought was your goal.
>
>     There is no "flag", as you mentioned, that can prevent the rule's LHS
> evaluation, although a control fact can be used to prevent beta matchings.
>
>
>     []s
>     Edson
>
>
> 2009/4/21 Lindy hagan <lindyhagan at gmail.com>
>
>> nope, I am not looking for that.
>>
>> This is my requirement: If I have 10 rules say from rule 1 to rule 10. If
>> rule 3 is satisfied, should not check for rule 4 to rule 10.
>>
>> We cannot achieve the above scenario using "activation-groups".
>>
>> 2009/4/21 Edson Tirelli <tirelli at post.com>
>>
>>
>>>    Lindy,
>>>
>>> "my understanding is that  if  you have 10 rules under same activation
>>> group always the one with high salience will fire ignoring other rules.
>>> (correct me if i am wrong.)"
>>>
>>>    The rule with the highest salience ***that matches (i.e., in your
>>> words: is satisfied)*** will be fired and the others will be canceled, so I
>>> guess that is exactly what you are looking for.
>>>
>>>     If I misunderstood your case, please explain it further.
>>>
>>>     []s
>>>     Edson
>>>
>>> 2009/4/21 Lindy hagan <lindyhagan at gmail.com>
>>>
>>> I don't know much about drools, am still evaluating drools, we have a
>>>> similar scenario that as soon as a rule is satisfied, should not check for
>>>> other rules.
>>>>
>>>> looking at the manual for activation-group , my understanding is that
>>>> if  you have 10 rules under same activation group always the one with high
>>>> salience will fire ignoring other rules. (correct me if i am wrong.)
>>>>
>>>> Probably we need to set some flag to check whether the previous rule is
>>>> processed or not.
>>>>
>>>> 2009/4/20 Edson Tirelli <tirelli at post.com>
>>>>
>>>>>
>>>>>    Take a look at the manual on "activation-group"s. They allow you to
>>>>> do that.
>>>>>
>>>>>    Also, you can call fireAllRules(1) to fire only one rule, in case
>>>>> your whole rulebase is like that.
>>>>>
>>>>>    []s
>>>>>     Edson
>>>>>
>>>>> 2009/4/19 Manish1985 <pramanish at gmail.com>
>>>>>
>>>>>
>>>>>> Hi All,
>>>>>>
>>>>>> Assume that following is the case,
>>>>>>
>>>>>> rule "Rule1"
>>>>>>
>>>>>>        when
>>>>>>                t:Test(status==10)
>>>>>>                Test(testValue > 90)
>>>>>>
>>>>>>        then
>>>>>>                t.percent=5;
>>>>>>                          modify(t);
>>>>>>
>>>>>> end
>>>>>>
>>>>>>
>>>>>> rule "Rule2"
>>>>>>
>>>>>>        when
>>>>>>                t:Test(status==10)
>>>>>>                Test(testValue> 80)
>>>>>>
>>>>>>        then
>>>>>>                t.percent=10;
>>>>>>                          modify(t);
>>>>>>
>>>>>> end
>>>>>> rule "Rule3"
>>>>>>        when
>>>>>>                t:Test(status==10)
>>>>>>                Test(testValue  > 50)
>>>>>>        then
>>>>>>                t.percent=15;
>>>>>>                          modify(t);
>>>>>>        end
>>>>>>
>>>>>> Here, based on each condition i will assign percentage value.
>>>>>> Assume that testValue is 100 and status is 10 so it will be evaluated
>>>>>> true
>>>>>> for each rule
>>>>>> but i dont want that. i want Rule1 to be evaluated and then it should
>>>>>> stop
>>>>>> executing other rules other wise percetage value will be different
>>>>>> from what
>>>>>> i want.
>>>>>> (15 instead of 5).
>>>>>>
>>>>>> I can do this by adding one more condition in every rule like
>>>>>> Test(percent==0)
>>>>>>
>>>>>> and initially i will intialize Test.percent by zero so only first Rule
>>>>>> will
>>>>>> be evaluated/executed.
>>>>>>
>>>>>> But is there any other way apart from these?
>>>>>>
>>>>>> One more thing is that in decision table i want to add OR between two
>>>>>> conditions.
>>>>>> How can i do that? please give me example for doing that.
>>>>>>
>>>>>> Thanks a lot in advance.
>>>>>>
>>>>>> Regards,
>>>>>> Manish
>>>>>>
>>>>>> --
>>>>>> View this message in context:
>>>>>> http://www.nabble.com/I-want-only-first-rule-to-be-executed-even-more-than-one-rule-are-fulfilling-the-LHS-tp23080560p23080560.html
>>>>>> Sent from the drools - user mailing list archive at Nabble.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
>>>>>
>>>>> _______________________________________________
>>>>> rules-users mailing list
>>>>> rules-users at lists.jboss.org
>>>>> https://lists.jboss.org/mailman/listinfo/rules-users
>>>>>
>>>>>
>>>>
>>>> _______________________________________________
>>>> 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
>>>
>>> _______________________________________________
>>> rules-users mailing list
>>> rules-users at lists.jboss.org
>>> https://lists.jboss.org/mailman/listinfo/rules-users
>>>
>>>
>>
>> _______________________________________________
>> 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
>
> _______________________________________________
> 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/20090421/80c3691a/attachment.html 


More information about the rules-users mailing list