[rules-users] AgendaFilter not working as expected

Edson Tirelli tirelli at post.com
Thu Aug 23 08:53:01 EDT 2007


    Brian,

    I'm not aware of any problem with AgendaFilters, so if you think it is
indeed a problem, may I ask you please to open a JIRA?

    Having said that, I personally think that AgendaFilters should be used
only for test purposes. To implement phased rule firing like the ones you
are doing, I strongly recommend you use agenda-groups. You can control the
rules that will fire simply by calling setFocus() method on working memory.
You can still let rule names to have the prefixes you are using just for
documentation purposes, but I discourage you to use them as a control
mechanism.
    Ruleflow can also be used, but for your use case, I think agenda-groups
will be enough.

    []s
    Edson

2007/8/22, Brian Enderle <brianke at gmail.com>:
>
> I have many rules in which I have named the various rules by the level at
> which the rules are to be fired, for instance:
>
> rule "LevelOne: Name cannot be null"
>    when
>       Person(firstNm == null)
>    then
>       <log an error>
> end
>
> rule "LevelTwo: Street cannot be null"
>    when
>       Person(street== null)
>    then
>       <log an error>
> end
>
> Within my Java code I first insert all objects into a statefulSession,
> then
> add all my globals.  I then use a switch statement to call different
> methods
> to perform the various levels of validation (ie:
> performLevelOneValidation(),
> performLevelTwoValidation(), etc.).  Each of these methods calls a common
> method, performValidation(String validationLevel) which I want to use to
> fire
> the rules of just the validation level supplied.  I am doing this with:
>
> statefulSession.fireAllRules(new RuleNameStartsWithAgendaFilter
> (validationLevel));
>
> In some cases I need to perform multiple levels of validation (if anything
> over Level One validation is called, all preceding levels also need to be
> validated) and need to perform them in order for reporting purposes.  My
> code
> correctly calls my performaValidation() method with the correct
> validationLevel but the only rules that fire are those with "LevelOne" in
> the
> rule name.
>
> I know the data, the rules, the globals, etc are all present for firing
> rules
> in a level other than level one and that I should get some mathces to my
> rules
> but I am not getting anything to match outside of Level One.
>
> I can only assume that the rules other than Level One are not firing and
> that
> I am missing something within my code that fires the rules for other
> levels.
> Am I misunderstanding how the AgendaFilter works?  Should I be using
> something
> else like agenda-group to accomplish this segregation of rules?
>
> Also, my rules and data objects do not change as the rules are run.  I
> simply
> display a list of errors found.  Would it benefit me to use sequential
> mode
> and would this help me in trying to segerate the rules into various
> levels?
>
> Thanks in advance,
> Brian Enderle
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>



-- 
  Edson Tirelli
  Software Engineer - JBoss Rules Core Developer
  Office: +55 11 3529-6000
  Mobile: +55 11 9287-5646
  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/20070823/cedbe138/attachment.html 


More information about the rules-users mailing list