为什么通用规则引擎在金融风控中'水土不服'?
通用规则引擎(如Drools)面向通用逻辑编排设计,未内化金融领域的时间维度、状态迁移与业务语义。技术层面表现为三类典型失配:
-
时间逻辑需重复封装:逾期天数滚动计算、计息周期匹配等任务依赖账单日、宽限期、节假日顺延等复合规则,通用引擎需开发人员手动编写日期运算逻辑,易引入歧义与维护断层。
-
决策路径缺乏业务可读性:贷后评分、多头关系图谱等场景需人工拼装条件分支+外部调用,执行结果输出为抽象执行栈,无法直接映射到'近6个月逾期3次+当前负债率82%→触发高风险拦截'这类监管可验证结论。
-
数据接入存在语义鸿沟:征信API、反洗钱报文等金融数据源字段结构嵌套深、命名非标准化,通用引擎将其视为纯技术通道,未提供字段业务标签(如'M2以上逾期次数'),导致业务人员无法直接绑定变量。
-

决策设计器:将金融判断链路固化为可版本化组件
JVS-Rules的决策设计器不是通用流程图工具,而是以金融判断范式为驱动的可视化规则编排环境。其核心能力体现在三类预置节点的技术实现上:
-
营销组合权重动态分配节点:
-
支持界面级权重实时调整(如收入稳定性×0.3 + 历史还款率×0.4 + 资产覆盖率×0.3);
-
自动记录每次操作的操作人、时间戳、生效版本号,满足《商业银行信息科技风险管理办法》对规则变更审计的要求;
-
底层采用JSON Schema描述权重配置结构,支持版本diff比对与回滚。
-
-
金融决策树节点:
-
每个分支强制标注业务含义(如
客户年龄 < 25 && 社保记录 == null → 人工复核),而非仅布尔表达式; -
执行时自动输出完整路径字符串(如
/age_check/fail → /social_security_check/absent → manual_review)及对应依据值; -
输出结构为标准JSON,含
path、conditions、matched_values三字段,便于下游系统消费或监管接口对接。
-
-
评分卡节点:
-
原生支持加权聚合、等级映射(A/B/C级)、阈值分段(M1/M2/M3)三类建模操作;
-
阈值配置采用区间定义语法(如
[0,30]→M1, (30,90]→M2, (90,∞)→M3),避免硬编码if-else; -
所有节点默认启用版本管理,执行日志包含
rule_version_id、node_execution_trace、intermediate_variables,确保每笔判断可定位到具体规则快照与中间状态。
-

函数计算器:金融计算语义的标准化封装与弹性扩展
函数计算器是JVS-Rules连接业务语义与底层计算的关键适配层,其实现兼顾开箱即用与工程可控性:
-
模板化函数保障底线一致性:
-
overdueDaysRolling()函数内置账单日推算、宽限期豁免、节假日顺延策略,业务侧仅配置参数(如billingCycle=30,graceDays=3,holidayCalendar=CN_2024); -
函数内部使用Java Time API + 自定义PeriodAdjuster实现,规避
SimpleDateFormat线程安全问题; -
输入输出均经Schema校验(如输入必须含
lastRepaymentDate、currentDate,输出必为int型逾期天数)。
-
-
脚本扩展支撑上限建模需求:
-
支持Groovy/Python沙箱执行,风控专家可嵌入自定义模型(如LSTM还款意愿预测脚本);
-
沙箱限制CPU时间≤500ms、内存≤128MB、禁止网络IO与反射调用,保障系统稳定性;
-
脚本函数注册时需声明输入输出Schema,与标准函数统一纳入元数据管理。
-
-
变量分层设计适配金融建模双模态:
-
基础变量(Base Variable):单客户维度原子指标,如
currentOverdueAmount,存储于规则上下文Map中; -
复合变量(Composite Variable):多头关联分析结果,如
multiInstitutionLoanList,由数据源抽象层注入,类型为List<LoanRecord>; -
变量访问统一通过
context.get("varName"),屏蔽底层存储差异。
-
所有函数执行自动记录:
-
入参(JSON序列化原始值)
-
出参(JSON序列化返回值)
-
耗时(纳秒级精度)
-
异常堆栈(限于沙箱内捕获)
该日志结构可直连ELK或Prometheus,用于快速定位模型偏差根源(如负债率计算函数输入数据异常 vs 加工逻辑缺陷)。

数据源抽象:金融接口零配置对接的技术机制
数据源抽象层通过结构识别+语义映射+统一接入三步,解决金融系统集成的语义断点问题:
-
响应结构智能识别:
-
内置央行征信报告、百行征信API、多头服务等典型金融接口的JSON/XML Schema模板;
-
对嵌套字段(如
inquiryRecords[0].inquiryDate)自动提取路径并生成业务标签(如'最近一次征信查询日期'); -
标签注册于全局变量字典,支持按
financialTagId检索,如tag:credit_inquiry_latest_date。
-
-
多形态数据源统一抽象:
-
数据源类型包括:JDBC数据库、RESTful API、Excel文件、JVS低代码模型实体;
-
抽象层统一转换为
DataSourceAdapter接口,提供fetch(Map<String, Object> params)方法; -
配置界面预置金融字段标签库(共127个标准标签),覆盖'近6个月逾期次数''当前授信余额'等高频字段,业务人员拖拽即可绑定。
-
-
查---算---判一体化闭环编排:
-
同一决策流中可顺序编排:
征信API查询节点 → 逾期滚动计算函数 → 评分卡节点; -
数据流转基于内存上下文(ThreadLocal<RuleContext>),避免跨系统搬运导致口径分歧(如A系统用'当前逾期'、B系统用'累计逾期');
-
所有节点共享同一数据快照时间戳(
snapshotTimestamp),确保风控判断基于一致时空基准。
-