On 16/08/2012, Rana <ven12344(a)yahoo.com> wrote:
How can I fire one rule file if I have lot of rule files defined in
my
change
set. Right now I have written an if-else condition and checking if the
input
is Androgel then fire Angrogel rule fire.
But a rule (as you have it) with
Drug( brandName == "AndroGel" )
will take care of that automaticaliy. This can co-exist with lots of
similar rules for anything between "Aspic" to "Zodiac".
But how can I do that in real time.
Also I have a requirement which says it needs the reason why the rule
failed.
This is quite difficult if your rules are non-trivial except when there is a
restricted way facts are inserted and rules are fired. And even then it
requires a circumspect approach.
So I have done this, I am setting all the actual and real values
and
saving the data to database in my event listeners.
Not clear what you gain by this.
But I get this "Cannot return a void result" at line 6.
A method called in an eval must return a boolean, or has to be called
in a context that compares the result so that the comparison returns a
boolean. A "void" method can't be called at all.
-W
rule "Brand Name"
no-loop true
agenda-group "AndroGel"
when
$drug : Drug()
eval( progRuleValidationLog.setActualValue($drug.getBrandName()) )
//line 6
eval( progRuleValidationLog.setRuleValue("AndroGel") )
Drug( brandName == "AndroGel" )
then
#drools.getWorkingMemory().setGlobal("boolBrandName", true);
log.info("Brand Name is AndroGel");
end
Thanks.