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(a)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(a)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