为什么传统规则引擎在企业落地难?——从技术实现角度复盘

主流规则引擎(如 Drools、Easy Rules)虽支持规则配置,但底层仍强依赖开发者:

  • Drools 要求编写 Java @Rule 类或维护 .drl 文件,需编译部署;
  • Easy Rules 基于 Java Bean + YAML 表达式,业务人员无法直接调试条件逻辑;
  • 所有方案均缺失运行时变量中间值输出与节点级执行日志,导致‘规则为何触发/未触发’不可追溯。

根本瓶颈不在性能,而在能力耦合:数据接入、字段加工、条件判断、服务调用被封装在同一代码层,业务人员无法独立验证任一环节。

JVS-Rules 的架构解耦设计:两个可独立演进的核心模块

JVS-Rules 将规则生命周期正交拆分为两个松耦合模块,技术上形成清晰职责边界:

  • 决策编排模块:基于流程图引擎(类似 Camunda BPMN 渲染层),提供可视化节点拖拽能力。支持以下原生节点类型:
  • 条件分支(IF-ELSE)
  • 决策表(多条件组合查表)
  • 决策树(嵌套判定路径)
  • 评分卡(权重加总型评估)
  • 外部服务调用(HTTP/API 节点)

  • 函数计算器模块:类 Excel 公式编辑器,底层封装多种执行器:
  • DBQuery:声明式 SQL 查询(仅允许 SELECT,自动参数化防注入)
  • APIInvoke:REST 接口调用(支持 JSONPath 提取响应字段)
  • GroovyScript:沙箱化脚本执行(禁用系统类、IO、反射)
  • 内置数学/字符串/日期函数(如 DIVIDE(a, b)CONTAINS(str, sub)

规则引擎系统中新建函数的基础信息配置界面,包含函数名称、类型、分类和描述输入框,当前处于第一步配置阶段。

二者通过变量注册中心通信:函数计算器生成的变量(如 liability_ratio)自动注册为全局上下文变量,决策编排节点可直接引用,无需硬编码或手动传参。

技术实现关键点:如何保障业务自主性与系统可靠性?

  • 变量隔离机制:每个函数计算器实例运行在独立 GroovyBinding 上下文中,变量作用域严格限定,避免跨规则污染;
  • 决策流版本快照:每次发布自动生成不可变版本(如 v1.2.3),支持回滚、灰度发布与 AB 测试;
  • 全链路可观测性:执行时自动记录:
  • 每个节点输入/输出 JSON 结构
  • 函数计算器各步骤耗时与返回值
  • SQL 执行计划摘要(仅限 EXPLAIN 输出)
  • 异常堆栈裁剪(隐藏敏感路径,保留错误码与业务提示);
  • API 自动化契约:发布为 REST 接口时,系统自动生成 OpenAPI 3.0 Schema,包含请求体示例、响应结构与状态码说明。

实战演练:5 分钟完成贷款准入规则闭环(含可复用代码片段)

以‘负债率阈值拦截’为例,展示完整可验证操作路径:

STEP 1:接入并映射数据源

  • 进入【数据源管理】→ 选择预置 MySQL 数据源(客户主表 customer_profile)与征信 API(credit-report/v1/query);
  • 字段映射界面自动识别 customer_id 为主键,支持拖拽绑定;

STEP 2:定义业务变量(函数计算器)

```text
变量名:liability_ratio
公式:DIVIDE(DBQuery("SELECT total_debt FROM customer_profile WHERE id = ?", [customer_id]),
DBQuery("SELECT annual_income FROM customer_profile WHERE id = ?", [customer_id]))
```

  • 系统自动校验语法与字段存在性,保存后立即生成变量元信息(类型:Number,精度:2 位小数);

STEP 3:构建决策流(决策编排)

  • 新建决策树节点,配置三级判断:
  • Level 1:age >= 18 && age <= 65 → 进入下一层;否则返回 REJECT_AGE_OUT_OF_RANGE
  • Level 2:引用变量 liability_ratio > 0.7 → 触发拒绝分支;
  • Level 3:调用 blacklist_check(customer_id) API 节点,响应 is_blocked == true → 返回 REJECT_BLACKLIST
  • 点击【在线调试】,输入 JSON 示例:

```json
{"customer_id": "CUST_2024001"}
```

实时查看每层节点输出与最终决策结果;

STEP 4:发布为生产 API

  • 点击【发布为 API】→ 输入服务名 loan-approval-rule
  • 系统返回标准 REST 接口:
  • URL:POST https://api.yourdomain.com/rules/loan-approval-rule/v1.0.0
  • 请求体:同调试输入格式(JSON)
  • 响应体含 decision_codereasontrace_id(用于日志关联);

该流程已在某城商行真实环境验证:规则迭代平均耗时 ≤ 15 分钟,且因变量与决策流分离,liability_ratio 可复用于贷后预警(liability_ratio > 0.85)与营销分层(liability_ratio < 0.3)等场景。

工程价值延伸:如何将规则中枢集成进企业现有技术栈?

JVS-Rules 提供标准化扩展接口,便于 DevOps 团队对接:

  • CI/CD 集成:支持通过 /api/v1/rules/import 接口批量导入导出规则包(ZIP + manifest.json);
  • 监控告警:暴露 Prometheus Metrics 端点,关键指标包括:
  • rules_execution_total{status="success"}
  • rules_execution_duration_seconds_bucket
  • functions_failed_total{function_type="DBQuery"}
  • 权限治理:基于 RBAC 模型控制:
  • 函数计算器编辑权限(限制 SQL/脚本类函数)
  • 决策流发布权限(需二级审批)
  • 日志查询范围(按租户/业务线隔离);
  • 低代码生态联动:通过 JVS 标准事件总线,可触发审批流(如人工复核)、推送消息(企微/钉钉通知)、写入报表宽表等下游动作。
Logo

一站式 AI 云服务平台

更多推荐