Настройка глобалов в Drools

Как мне установить глобал в Drools 4 из правила? Я хочу установить логическое значение, если правило срабатывает, чтобы оно могло прочитать его из другого правила с более низким значением.

3 ответа

Предполагая, что вы используете Drools 5.x, вы можете сделать это в следствии своего правила:

kcontext.getKnowledgeRuntime (). setGlobal (имя, значение);

Вы могли бы сделать что-то вроде:

drools.getWorkingMemory (). setGlobal... (аналогично тому, что сказал Крис).

Я бы не использовал здесь глобальный. Вы выводите новый факт из других фактов, вы можете просто "вставить" новый факт и включить другое правило.

rule "some rule"
when
    //…
then
    insert(new MyNewFact())
end

Нет никаких гарантий, что Drools пересмотрит ваши правила в ответ на добавление (нового) глобала, и ваше другое правило может не сработать. Однако он будет переоценен в ответ на вставленные факты (или отозванные, или измененные).

Другие вопросы по тегам