1. 程式人生 > >drools規則引擎中易混淆語法分析_循環觸發導致死循環分析

drools規則引擎中易混淆語法分析_循環觸發導致死循環分析

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規則引擎中易混淆語法分析_循環觸發導致死循環分析