Невозможно получить доступ к измененному факту в той же группе повестки дня при оценке состояния в слюнях - PullRequest
0 голосов
/ 07 августа 2020

У меня есть список правил с той же группой повестки дня. Эти правила взаимозависимы. Ежемесячный PI правила зависит от правила годового PI, и значение годового PI также является фактом для рабочей памяти. Он работает только тогда, когда я изменяю имя группы повестки дня или снимаю блокировку при активном состоянии true (но переходит в al oop, даже если я использую no-l oop). Внутри, когда условие для ежемесячного правила PI, я проверяю, не является ли годовой PI не равным нулю, затем запускаю правило, но оно не работает, поскольку оно не получает обновленное значение для него. Пожалуйста, подскажите, что делать?

rule "Annual P&I one"
@attribute("interestRate,originalLoanAmount")
agenda-group "loaneconomics"
salience 500
lock-on-active true
when 
$loanFact:LoanFact30Yr(loan.loanEcon.interestRate!=null)
then
System.out.println("::::Annual P&I Working ::::: ");

modify($loanFact){
$loanFact.getLoanRuleResult().getLoanEconomics().setAnnualPI( /*FORMULA*/  );
}
end

rule "Monthly P&I one"
@attribute("AnnualPI")
agenda-group "loaneconomics"
salience 400
lock-on-active true
when 
$loanFact:LoanFact30Yr( $loanFact.getLoanRuleResult().getLoanEconomics().getAnnualPI() != null )
then
System.out.println(":::: Monthly P&I Working ::::: ");
System.out.println("Monthly Payments ::: " + $loanFact.getLoanRuleResult().getLoanEconomics().getAnnualPI()/12f);
modify($loanFact){
getLoanRuleResult().getLoanEconomics().setToorakMonthlyPI( $loanFact.getLoanRuleResult().getLoanEconomics().getAnnualPI()/12f );
}
end

1 Ответ

0 голосов
/ 10 августа 2020

lock-on-active в основном предотвращает любую новую активацию во время текущего вызова fireAllRules(). Взгляните на этот ответ, чтобы увидеть возможные решения вашей проблемы: в чем разница между no-l oop и lock-on-active в слюнях

...