个人语雀:wnhyang
Github:wnhyang - Overview
项目:github.com/wnhyang/coo...,开源版
也是许久没有更新了,多的话就不说了,最近再更一下吧😁
决策流

这里配置一个策略路由,当然现在使用编码方式,非常不友好,有待改善。
使用的是LiteFlow规则编排,参考:liteflow.cc/pages/e7699...
makefile
cmpData0 = '{"relation":"AND", "type":"list","leftValue":"N_S_mobileNo","logicType":"in","rightType":"input","rightValue":"globalMobileWhiteList"}';
cmpData1 = '{"relation": "AND", "type": "script", "leftValue": "${N_F_transAmount}%10==0", "logicType": "", "rightType": "input", "rightValue": "" }';
cmpData2 = '{"relation": "AND", "type": "script", "leftValue": "${N_F_transAmount}%10==5", "logicType": "", "rightType": "input", "rightValue": "" }';
cmpData3 = '{"relation": "AND", "type": "script", "leftValue": "${N_F_transAmount}%10==7", "logicType": "", "rightType": "input", "rightValue": "" }';
IF(NOT(cond.data(cmpData0)),
IF(cond.data(cmpData1),
policy.tag("apploginweight"),
IF(cond.data(cmpData2),
policy.tag("appLoginOrder"),
IF(cond.data(cmpData3),
policy.tag("appLoginVote"),
policy.tag("appLoginWorst")
)
)
)
);
实际上路由流程如下

该策略集下配置了四种策略,如下

接下来,同时具体的例子说明每个策略模式是如何运行的
权重模式
权重模式是最特殊的,需要额外配置阈值列表,如下

其下有三个规则

金额10%,没有任何条件,满足后$交易金额x0.1

时间大于23点金额0.8,事件时间小时大于等于23点,$交易金额x0.8

时间小于5点金额0.7,与上面类似,只不过这里使用三元表达式,同时去掉了额外的条件,事件时间小时小于等于5,$交易金额x0.8

测试一下

发送后,结果如下

通过seqID搜索到一条数据

其策略结果如图,首先看到确实是走了权重策略,命中了"金额10%"规则,结果为5100.1=51,命中了"时间小于5点金额0.7"规则,结果为5100.7=357,最终结果为51+357=408,根据阈值配置"50<拒绝<=999"得出最终结果"拒绝"。

顺序模式
其下配置了三条规则,名称已经说明了规则的配置,就不详细展开了。
顺序模式也可以叫做首次模式,指的是顺序运行规则,在第一个风险规则(除通过外其他是风险规则)命中后返回。

测试一下

同样找到那条数据,看到执行了第二个规则就返回,最终结果"语音"。

此时再看,规则命中率,前两个都100%,最后一个根本没运行

改一下金额参数再试一下,此时就是拒绝了

此时再看,第二个没有命中了,第三条命中,最终结果为"拒绝"。

投票模式
投票模式顾名思义,以处置结果做维度统计命中票数,票数高者为最终结果,票数一致时以配置的处置分值高的为最终结果(如通过是0,语音是36)。

测试一下

可以看到这笔"语音"和"通过"各两笔,因为语言分值更高,最终结果为"语音"。

再来一笔

"通过"3票,"语音"1票,最终结果"通过"

最坏模式
最坏模式更容易理解了,就是取所有命中规则中处置等级最高的,因为这个规则配置了很多指标,测试起来相对复杂,就省略了。

最后补充一下,前面决策流配置的白名单不执行任何策略的吧


命中全局白名单,此时不执行任何规则。

补充
三方请求
决策流还可以有很多玩法
如这里配置了一个三方请求如下

决策流修改,在原先的流程前增加了一个api.tag("1"),表示三方配置id为1的,当然也可以把整个json提取出来作为.data也可以。

接着看效果,随便发一笔,这里是没有传"地区"和"asn"的

但在最终的数据中看到出现了这两个值

对应日志中,发送了这个请求,以配置填充了字段。


扩展函数
系统内置了以下函数,可以在动态字段、脚本条件中使用。

如下展示了动态字段中使用

个人语雀:wnhyang
Github:wnhyang - Overview
项目:github.com/wnhyang/coo...,开源版