账户近一个月借方累计交易笔数≥50笔 rule "rule26" when $w:Event( $channel : getChannelid() == "transfer", $card : getCard_no(), $time : getOper_time().getTime() $cdflg : getCdflg() == "D" ) Number( intValue >= 50 ) from accumulate ( $e:Event( getChannelid() == $channel, $histime : getTransactionTime().getTime() < $time, getTransactionTime().getTime() > $time - 30 * 24 * 60 * 60 * 1000L, getCard_no() == $card, $hiscdflg : getCdflg() == "D" ) from $w.getEventList(), init(int num = 1;) , action(num++;), reverse() , result(num) ) then $w.addCardRuleList(26); end 检查一下语法
时间: 2024-04-01 11:36:07 浏览: 86
这也是一个Drools规则引擎的规则,语法上看起来也没有问题。
这条规则的意思是,当一个事件(Event)满足以下条件时,将会触发编号为26的规则:
1. 事件的渠道ID为“transfer”;
2. 事件的卡号与当前事件的卡号相同;
3. 事件的操作时间在一个月内;
4. 事件的借贷标志为“D”(表示借方);
5. 近一个月内借方交易笔数大于等于50笔。
然后,将该卡号添加到规则列表中。规则中使用了Drools的累加器(accumulate)功能,从历史事件中累计借方交易笔数。
相关问题
账户近一个月借方累计交易笔数/贷方累计交易笔数的比例≥2 rule "rule29" when $w:Event( $channel : getChannelid() == "transfer", $card : getCard_no(), $time : getOper_time().getTime(), $cdflg : getCdflg() ) Number( intValue == 1 ) from accumulate ( $e:Event( getChannelid() == $channel, $histime : getTransactionTime().getTime() < $time, getTransactionTime().getTime() > $time - 30 * 24 * 60 * 60 * 1000L, getCard_no() == $card, $hiscdflg : getCdflg() ) from $w.getEventList(), init(int a = 0;int b = 0;if($cdflg == "C"){a++;}if($cdflg == "C"){b++;}int flag = 0;) , action(if($cdflg == "C"){a++;}if($cdflg == "C"){b++;}if(Math.min(a, b) / Math.max(a, b) >= 2){flag=1;}), reverse() , result(flag) ) then $w.addCardRuleList(29); end 看下语法对不?
这是一个基于Drools规则引擎的规则,它的作用是当账户近一个月借方累计交易笔数/贷方累计交易笔数的比例大于等于2时,将规则编号29添加到该账户的规则列表中。从语法上看,这个规则定义了一个事件模式和一个累计器模式,然后在累计器模式中对事件进行计数和比较,并将计算结果与规则条件进行比较,如果满足条件则执行规则动作。整个规则的语法看起来是正确的。
阅读全文