低代码规则开发:JQuick-Java声明式配置驱动开发落地教程

低代码规则开发:JQuick-Java声明式配置驱动开发落地教程

前言

低代码的核心不是「拖拽表单」,而是把业务语义从代码中抽离为可维护的配置。对规则密集型系统(信用评级、计费、风控)而言,指标、权重、阈值经常由业务人员直接调整------传统做法是开发改代码,低代码做法是业务改配置。JQuick-Java 的声明式配置驱动开发正是后者:规则以 XML/内联脚本声明,指标与权重由 Excel/XML 维护,业务代码零侵入。本文给出完整落地教程。

核心技术原理

JQuick-Java 的声明式开发范式由三层组成:

  1. 契约层(接口) :Java 接口定义规则方法签名,方法参数用 @Param 注解命名,与脚本参数一一对应。
  2. 规则层(XML/内联)<javas namespace="接口全限定名"> 下每个 <java name="方法名" returnClass="返回类型"> 承载 CDATA 内的类 Java 函数定义。
  3. 配置层(Excel):指标体系、权重、阈值由 Excel 维护(仓库内置《企业信用评级体系表_带权重.xlsx》),业务人员改 Excel,映射到 XML 规则即完成规则变更。

实战代码演示

1. 定义规则接口(契约层)

java 复制代码
public interface ScoringMapper {

    int scoreCapital(@Param("actualCapital") double actualCapital,
                     @Param("registeredCapital") double registeredCapital);

    int scoreDebtRatio(@Param("debtRatio") double debtRatio); // 资产负债率

    double calculateTotalScore(@Param("basicScore") int basicScore,
                               @Param("financialScore") int financialScore,
                               @Param("performanceScore") int performanceScore,
                               @Param("managementScore") int managementScore,
                               @Param("complianceScore") int complianceScore);
}

2. 声明 XML 规则(规则层)

xml 复制代码
<javas namespace="com.github.paohaijiao.service.ScoringMapper">
    <java name="scoreCapital" returnClass="int">
        <![CDATA[
            int def scoreCapital(double:actualCapital, double:registeredCapital) {
                if (registeredCapital == 0){
                   return 0;
                }
                double ratio = actualCapital / registeredCapital;
                if (ratio >= 1.0) {
                    return 8;
                } else if (ratio >= 0.5) {
                    return 5;
                } else if (ratio >= 0.2) {
                    return 3;
                } else {
                    return 0;
                }
            }
        ]]>
    </java>
</javas>

3. 一行代码接入业务(使用层)

java 复制代码
ScoringMapper mapper = JQuickJava.create()
        .importPackage("java.lang.String", "str")
        .importPackage("java.util.Date", "JDate")
        .createApi(ScoringMapper.class, "scoring-rules.xml");

int basicScore = mapper.scoreCapital(500, 500) + mapper.scoreCertification("甲级/一级/高新");

核心技术细节解析

  • 命名对齐即契约 :接口方法名 = XML <java name>,接口参数名 = 脚本 类型:参数名ParamUtil.bindParams 通过 @Param 完成绑定,三者错位会得到空值或解析错误。
  • 返回值按接口类型转换 :脚本返回 double,接口声明 double,执行结果经 JQuickValueTransformerJQuickJavaTypeReference.of(method.getReturnType()) 做类型对齐,无需手工强转。
  • 声明式与命令式共存 :XML CDATA 内既可是纯规则表达式,也可包含 console.log、循环、函数调用,复杂逻辑依然可用命令式脚本表达,灵活度不降级。

常见踩坑与解决方案

  1. 接口参数名与脚本不一致 :必须用 @Param("名称") 显式声明,否则绑定到 null。务必保证三处命名一致。
  2. namespace 与接口全限定名不匹配JQuickJavaXmlParseFactoryapiInterface.getName() 查找 namespace,拼错全限定名会直接找不到规则。
  3. 把 Excel 当运行时依赖:Excel 是配置设计期产物,运行时规则载体是 XML;上线前请将 Excel 映射导出为 XML 规则文件。

最佳实践

  • 接口按业务域拆分(资质域、财务域、履约域),每个域一个 XML namespace,便于多人并行维护。
  • 阈值、权重集中在配置层管理,函数体保持「输入→判断→输出」的纯函数形态,方便单元化验证。
  • 规则文件纳入版本管理,配合注释说明指标口径,实现规则资产化。

总结

JQuick-Java 的声明式配置驱动开发,让「业务人员维护指标权重、开发人员维护契约与执行」的分工成为可能,是低代码规则开发在 Java 生态中的轻量落地范式。对评分、校验、流程编排类业务,这套「接口 + XML + Excel」三层结构兼具灵活性与可维护性。

相关推荐
weixin_440730501 小时前
socket解决多次输入问题-大数据接收问题-模块动态导入
java·开发语言·servlet
用户3126874877201 小时前
ReentrantLock 和 synchronized 到底选哪个?源码级对比与选型
java
计算机毕设定制辅导-无忧学长1 小时前
基于Spring Boot的玄幻小说个性化推荐平台设计与实现
java·vue.js·spring boot·后端·mysql·推荐算法
码路漫漫1 小时前
LRU 真的能解决日志按业务 Key 分文件的落地瓶颈吗?
java·后端
带刺的坐椅2 小时前
不只是 Token 流:Solon AI 4.1 的语义化聊天事件
java·stream·event·solon-ai
半摆烂日常2 小时前
自建WMS和买成品:三年成本对比
大数据·服务器·数据库·python·深度学习·低代码·numpy
延凡科技2 小时前
建筑节能新视角:智慧冷站的数字化实践
java·人工智能·能源·暖通
www_aiyuanma_vip2 小时前
Java个人博客系统
java·开发语言
秋名RG2 小时前
Java 集合框架完全指南:从核心接口到 JDK 21 有序集合新特性
java·windows