Я пытаюсь написать простое правило, которое определяет вероятность того, что у пациента простуда, исходя из предоставленных симптомов. Он проверяет все возможные симптомы простуды, увеличивая начальные 0 на 1 каждый раз, когда один из предоставленных симптомов совпадает с симптомом, обнаруженным при простуде. В конце концов, общее значение делится на общее количество возможных симптомов простуды. Кстати, я впервые пишу правило, поэтому я также приму любые предложения, если вы считаете, что я должен сформулировать правило по-другому.
rule "Cold check"
when
$p: DoctorsAppointment() and //doctor's appointment which contains symptoms (symptoms are modelled as enumeration) that patient has
$b: HashMap(String, Double) //hashmap which contains all diseases in the form key="disease name", value=0.0 initially.
then
for(Symptom s : $p.getSymptoms()) {
if(s==Symptom.RUNNING_NOSE) {
$b.put("cold", ((Double) $b.get("cold")) + 1.0);
}
else if(s==Symptom.SORE_THROAT) {
$b.put("cold", ((Double) $b.get("cold")) + 1.0);
}
else if(s==Symptom.HEADACHE) {
$b.put("cold", ((Double) $b.get("cold")) + 1.0);
}
else if(s==Symptom.SNEEZING) {
$b.put("cold", ((Double) $b.get("cold")) + 1.0);
}
else if(s==Symptom.COUGHING) {
$b.put("cold", ((Double) $b.get("cold")) + 1.0);
}
}
$b.put("cold", ((Double) $b.get("cold"))/6);
end
Я получаю следующую ошибку:
[dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.RuntimeException: Error evaluating constraint 'String' in [Rule "Cold check" in drules.drl]] with root cause
java.lang.ClassCastException: java.lang.Class cannot be cast to java.lang.Boolean