泡海椒头像
关注
低代码规则开发:JQuick-Java声明式配置驱动开发落地教程封面图

低代码规则开发: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. 定义规则接口(契约层)

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 规则(规则层)

<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. 一行代码接入业务(使用层)

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」三层结构兼具灵活性与可维护性。

转载自 CSDN-专业IT技术社区

原文链接:https://blog.csdn.net/PaoHaiJiao/article/details/164430276

文章来源转载

评论

赞0

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--