Я новичок в Scala и Drools Expert, и мне нужна помощь в получении информации из сессии Drools.Я успешно настроил некоторые классы Scala, которые управляются правилами Drools.Теперь я хочу создать объект для хранения набора выходных фактов для обработки вне Drools.Вот что у меня есть.
У меня есть простой объект, который хранит числовой результат (сгенерированный в RHS правила) вместе со строкой комментария:
class TestResults {
val results = new MutableList[(Float, String)]()
def add(cost: Float, comment: String) {
results += Tuple2(cost, comment)
}
}
В файле DRL у меня естьследующее:
import my.domain.app.TestResults
global TestResults results
rule "always"
dialect "mvel"
when
//
then
System.out.println("75 (fixed)")
results.add(75, "fixed")
end
Когда я запускаю код, который включает это, я получаю следующую ошибку:
org.drools.runtime.rule.ConsequenceException: rule: always
at org.drools.runtime.rule.impl.DefaultConsequenceExceptionHandler.handleException(DefaultConsequenceExceptionHandler.java:39)
...
Caused by: [Error: null pointer or function not found: add]
[Near : {... results.add(75, "fixed"); ....}]
^
[Line: 2, Column: 9]
at org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.getMethod(ReflectiveAccessorOptimizer.java:997)
Мне кажется, что с моим определением TestResults есть что-то глупоеобъект в Scala, такой, что Java, скомпилированная Drools, не может его увидеть.Типовое несоответствие, возможно?Я не могу понять это.Какие-либо предложения?Спасибо!