drools規則引擎中易混淆語法分析_循環觸發導致死循環分析
阿新 • • 發佈:2018-03-11
int calculate efault drools put 階段 ons not quest
整理了下最近在項目中使用drools出現的問題,幸好都在開發與測試階段解決了,未波及到prod。
首先看這樣兩條規則
/** * 規則1_set默認利率 */ rule "rate_default" no-loop true when $request:AmountRateRequest(calculateEnum == CalculateEnum.INTEREST || calculateEnum == CalculateEnum.AMOUNT_INTEREST) $response:AmountRateResponse(rateMap not contains LoanTermEnum.LOANTERM3) $data:DroolsData() then DroolsClient.logger.debug("{}執行規則{}", $response.getUserId(), drools.getRule().getName()); $response.getRateMap().put(LoanTermEnum.LOANTERM3, RateFactory.DEFAULT_RATE); update($response); end/** * 規則2_set默認利率+萬1 */ rule "rate_up1" no-loop true when $request:AmountRateRequest(calculateEnum == CalculateEnum.INTEREST || calculateEnum == CalculateEnum.AMOUNT_INTEREST) $response:AmountRateResponse(rateMap not contains LoanTermEnum.LOANTERM3) then DroolsClient.logger.debug("{}執行規則{}", $response.getUserId(), drools.getRule().getName()); $response.getRateMap().put(LoanTermEnum.LOANTERM3, Rate); update($response); end
drools規則引擎中易混淆語法分析_循環觸發導致死循環分析