Во время решения фразы OptaPlanner я хочу обновить глобальную переменную. Изменения глобальной переменной изменят мою следующую проверку правил.Как объявить нестационарную глобальную переменную в OptaPlanner
Result.java
package com.domain;
public static boolean status;
...
...
Sample.drl
import org.optaplanner.core.api.score.buildin.hardsoft.HardSoftScoreHolder;
import com.domain.Result;
global HardSoftScoreHolder scoreHolder;
rule "Sample Rule"
when
$PlanningEntity:PlanningEntity()
then
somelogic($PlanningEntity);
if(Result.status){
scoreHolder.addHardConstraintMatch(kcontext, -500);
}
end
function void somelogic(PlanningEntity planningEntity){
if(condition 1...){
Result.status = true;
}else if(condition 2...){
Result.status = false;
}else{
//Do Nothing
}
}
Мой вопрос:
Как я могу объявить статическую глобальную переменную за решение сессии. (Чтобы избежать одновременного использования нескольких пользователей, выполняющих решение OptaPlanner в то же время.)
Но разве эти сессии Drools не будут частью сеанса одного пользователя (т. Е. Выполнение приложения Java)? Следовательно, не было бы такого рода ОПП, похоже, боится. - BTW, справочное руководство Drools даже не заявляет, что глобальные общие данные используются между сеансами, запущенными из одной и той же Java-программы (но почему-то я это помню откуда-то). – laune
. Каждый сеанс спуска, используемый внутри optaplanner, должен иметь свои собственные глобальные экземпляры (если только он не защищен потоком регистратором (или что-то еще, что он действует только как приемник, а не как источник). Создание этих экземпляров должно происходить через callback, поскольку optaplanner может порождать любое количество сеансов слюни, которые он желает (хотя в настоящее время он только генерирует 1 при нормальном выполнении) –
Можно ли использовать переменные тени или добавление переменных в рабочую память в opta-planner (точно так же, как и для обладателя очков) ? Мне нужен динамический проблемный факт, который может меняться и применяться к следующему правилу. Пример: обновление первого шага как «A.». Факт «A» использования второго шага в правиле и обновление факта «B». «в правиле и обновлении факта ... –