账户近一个月借方累计交易笔数/贷方累计交易笔数的比例≥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 解释下每一句的意思
时间: 2024-04-01 07:35:27 浏览: 48
当账户近一个月借方累计交易笔数/贷方累计交易笔数的比例大于等于2时,将规则编号29添加到该账户的规则列表中。
- `rule "rule29"`:定义规则的名称为“rule29”。
- `when`:规则的条件部分,即当满足以下条件时执行规则动作。
- `$w:Event(`:定义一个事件模式,将其命名为$w,表示该事件模式匹配的是Event类型的对象。
- `$channel : getChannelid() == "transfer"`:条件1,表示事件对象的getChannelid()方法返回值等于“transfer”。
- `$card : getCard_no()`:条件2,表示事件对象的getCard_no()方法返回值存储在$card变量中。
- `$time : getOper_time().getTime()`:条件3,表示事件对象的getOper_time().getTime()方法返回值存储在$time变量中。
- `$cdflg : getCdflg()`:条件4,表示事件对象的getCdflg()方法返回值存储在$cdflg变量中。
- `) Number(intValue == 1)`:定义一个数字模式,表示只有在累计器中累计到一个事件时才会执行规则动作。
- `from accumulate (`:定义一个累计器模式,用于对一段时间内的交易进行计数和比较。
- `$e:Event(`:定义一个事件模式,表示该事件模式匹配的是Event类型的对象。
- `getChannelid() == $channel`:条件1,表示事件对象的getChannelid()方法返回值等于$channel变量的值。
- `$histime : getTransactionTime().getTime() < $time`:条件2,表示事件对象的getTransactionTime().getTime()方法返回值小于$time变量的值。
- `getTransactionTime().getTime() > $time - 30 * 24 * 60 * 60 * 1000L`:条件3,表示事件对象的getTransactionTime().getTime()方法返回值大于$time减去30天的毫秒数。
- `getCard_no() == $card`:条件4,表示事件对象的getCard_no()方法返回值等于$card变量的值。
- `$hiscdflg : getCdflg()`:从事件对象中获取getCdflg()方法的返回值,存储在$hiscdflg变量中。
- `) from $w.getEventList(),`:指定累计器模式从$w事件列表中获取事件。
- `init(int a = 0;int b = 0;if($cdflg == "C"){a++;}if($cdflg == "C"){b++;}int flag = 0;)`:定义累加器的初始状态,其中a和b表示借方和贷方的交易数量,flag表示是否满足比率条件。
- `action(if($cdflg == "C"){a++;}if($cdflg == "C"){b++;}if(Math.min(a, b) / Math.max(a, b) >= 2){flag=1;})`:定义累加器操作,即对事件进行计数和比较,并将计算结果与规则条件进行比较,如果满足条件则将flag设置为1。
- `reverse()`:将累加器的顺序反转,保证在比较前得到最新的累计值。
- `result(flag)`:将累加器的计算结果存储在flag变量中。
- `then $w.addCardRuleList(29); end`:规则的动作部分,即当满足条件时执行的操作,将规则编号29添加到该账户的规则列表中。
阅读全文