It's generally not a good idea to use globals in rules.
I suggest that you use a simple
class MaxSymptoms {
On 25 June 2010 12:43, Dobedani <dobedani(a)gmx.net> wrote:
Dear All,
I'm trying to develop rules which will help to analyse incoming reports of
disease related symptoms. I have found a way to fill a HashMap with maximum
allowable values specific for various symptoms. I would like to lookup the
relevant value any time a symptom comes in. In the first place, I'm trying
to check whether (1) the HashMap's keySet contains the found symptom i.e.
in
the WHEN block - but it does not work as expected. Let alone (2) that I can
lookup the maximum allowable value and check whether it has been exceeded!
It is strange to me that the result of both "actions" can however be
printed
out in the THEN block. How to do this? Any help will be appreciated.
Kind regards, Dobedani
Here's some of my Java code:
public class Symptom {
private String name;
private String location;
private int period;
private int numCases;
// getters and setters ...
}
And:
KnowledgeBase kbase = readKnowledgeBase();
StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
java.util.Map maxSymptoms = new java.util.HashMap<String, Integer>();
ksession.setGlobal("maxSymptoms", maxSymptoms);
Now, some of the code from my DRL file:
import Symptom;
global java.util.Map maxSymptoms;
function void prepareMap(java.util.Map map) {
if (map.size() == 0) {
map.put("fever", 20);
map.put("diarrhoea", 30);
}
}
rule "Initialisation"
salience 100
when
eval(true); // always!
then
prepareMap(maxSymptoms);
end
rule "Number of cases with particular symptom observed"
dialect "mvel"
when
#conditions
Symptom( symptomName : name );
eval(maxSymptoms.keySet() contains symptomName);
#Symptom( numCases > maxSymptoms[symptomName] );
then
#actions
System.out.println(maxSymptoms.keySet() contains symptomName);
System.out.println( maxSymptoms[symptomName] );
#System.out.println("Number of cases with " + symptomName + "
exceeds maximum ")
end
--
View this message in context:
http://drools-java-rules-engine.46999.n3.nabble.com/Looking-up-values-in-...
Sent from the Drools - User mailing list archive at
Nabble.com.
_______________________________________________
rules-users mailing list
rules-users(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users