Hi Mark,
First of all thanks for the response. Using global variables may be a good workaround for in/out parameters.
Our purpose of using named parameters is to differentiate between facts which may be of the same type but may have different role (without forcing the rule author to add this logic in the patterns).
for example - one can write the following rule:
rule "Rule1"
when
$anemia: Diagnosis(alias == "anemia")
$hypertension: Diagnosis(alias == "hypertension")
//business logic here
Diagnosis (code == "5") from $anemia and
Diagnosis (code == "7") from $hypertension
then
#DO something
end
but this solution is much better since it extracts the alias complexity outside of the rule:
#declare any global variables here
global java.util.List anemia;
global java.util.List hypertension;
rule "Rule1"
when
//business logic here
Diagnosis (code == "5") from anemia
and
Diagnosis (code == "7") from hypertension
then
#DO something
end
this solution will of course force us to introduce the facts twice - once as normal facts inserted to the working memory and once as globals in order to allow the parameterization.
will this workaround cause unwanted results (since the facts appear twice)?
Thanks
Yoni