[rules-users] Looking up values in WHEN block
Dobedani
dobedani at gmx.net
Fri Jun 25 06:43:42 EDT 2010
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-WHEN-block-tp921790p921790.html
Sent from the Drools - User mailing list archive at Nabble.com.
More information about the rules-users
mailing list