JVS-Rules 实战指南:零代码实现业务规则自治(含决策编排+函数计算双模块详解)
为什么传统规则引擎在企业落地难?——从技术实现角度复盘
主流规则引擎(如 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_code、reason、trace_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 标准事件总线,可触发审批流(如人工复核)、推送消息(企微/钉钉通知)、写入报表宽表等下游动作。
更多推荐



所有评论(0)