Настройка глобалов в Drools
Как мне установить глобал в Drools 4 из правила? Я хочу установить логическое значение, если правило срабатывает, чтобы оно могло прочитать его из другого правила с более низким значением.
3 ответа
Предполагая, что вы используете Drools 5.x, вы можете сделать это в следствии своего правила:
kcontext.getKnowledgeRuntime (). setGlobal (имя, значение);
Вы могли бы сделать что-то вроде:
drools.getWorkingMemory (). setGlobal... (аналогично тому, что сказал Крис).
Я бы не использовал здесь глобальный. Вы выводите новый факт из других фактов, вы можете просто "вставить" новый факт и включить другое правило.
rule "some rule"
when
//…
then
insert(new MyNewFact())
end
Нет никаких гарантий, что Drools пересмотрит ваши правила в ответ на добавление (нового) глобала, и ваше другое правило может не сработать. Однако он будет переоценен в ответ на вставленные факты (или отозванные, или измененные).