风控规则引擎(一):Java 动态脚本
日常场景
- 共享单车会根据微信分或者芝麻分来判断是否交押金
- 汽车租赁公司也会根据微信分或者芝麻分来判断是否交押金
- 在一些外卖 APP 都会提供根据你的信用等级来发放贷款产品
- 金融 APP 中会根据很复杂规则来判断用户是否有借款资格,以及贷款金额。
在简单的场景中,我们可以通过直接编写一些代码来解决需求,比如:
// 判断是否需要支付押金
return 芝麻分 > 650
这种方式代码简单,如果规则简单且不经常变化可以通过这种方式,在业务改变的时候,重新编写代码即可。
在金融场景中,往往会根据不同的产品,不同的时间,对接的银行等等多个维度来配置规则,单纯的直接编写代码无法满足业务需求,而且编写代码的方式对于运营人员来说无论实时性、可视化都很欠缺。
在这种情况往往会引入可视化的规则引擎,允许运营人员可以通过可视化配置的方式来实现一套规则配置,具有实时生效、可视化的效果。减少开发和运营的双重负担。
这篇主要介绍一下如何实现一个可视化的表达式的定义和执行。
表达式的定义
在上面说到的使用场景中,可以了解中至少需要支持布尔表达式。比如
- 芝麻分 > 650
- 居住地 不在 国外
- 年龄在 18 到 60 之间
- 名下无其他逾期借款
…
在上面的例子中,可以将一个表达式分为 3 个部分
- 规则参数 (ruleParam)
- 对应的操作 (operator)
- 对应操作的阈值 (args)
则可以将上面的布尔表达式表示为
- 芝麻分 > 650
{
"ruleParam": "芝麻分",
"operator": "大于",
"args": ["650"]
}
- 居住地 不在 国外
{
"ruleParam": "居住地",
"operator": "位于",
"args": ["国内"]
}
- 年龄在 18 到 60 之间
{
"ruleParam": "年龄",
"operator": "区间",
"args": [

最低0.47元/天 解锁文章
11万+

被折叠的 条评论
为什么被折叠?



