QLExpress-阿里规则引擎

本文介绍阿里巴巴开源的QLExpress动态语言在Java平台上的高效应用,探讨如何通过正则表达式处理计算公式,提取数据项,并演示了如何自定义函数实现复杂计算。

QLExpress:GitHub - alibaba/QLExpress: QLExpress is a powerful, lightweight, dynamic language for the Java platform aimed at improving developers’ productivity in different business scenes.

public static void main(String[] args) {
    // 统计时,会传递日期和数据板块id,数据板块id的用处就是获取计算公式
    // 假如这就是我们获取到的某一个数据板块的公式
    String str = "avg(item_code_f,item_code_b) +item_code_a ÷ item_code_k - 100";
    // 处理一下÷和×,毕竟是以*和/作为乘法除法符号的
    str = str.replace("÷","/");
    str = str.replace("×","*");
    // 定义一个正则表达式,过滤掉计算符号
    String regex = "[()*+/-]";
    Pattern p = Pattern.compile(regex);
    Matcher m = p.matcher(str);
    List<String> list = new ArrayList<>();
    // 这里注意要先转成Set然后再转成List,因为有可能计算的时候要使用一个数据项的值多次,但是其实都是同一
### QLExpress规则引擎介绍 QLExpress阿里巴巴开源的一款轻量级、高性能、可扩展的Java表达式引擎,也是一个轻量级的类java语法规则引擎,可作为嵌入式规则引擎在业务系统中使用 [^3][^4]。它能针对业务系统中配置的各种规则进行统一管理,通过该引擎进行调度计算,可动态调整规则的表达式内容,而不影响业务系统代码 [^1]。其特点包括支持标准的JAVA语法,还支持自定义操作符号、操作符号重载、函数定义、宏定义、数据延迟加载等,让业务规则定义简便而不失灵活,业务人员也可以定义业务规则 [^4]。 ### QLExpress规则引擎使用方法 虽然给定引用未详细提及使用方法,但一般来说,使用QLExpress构建规则引擎时,需要将业务逻辑从代码中解耦出来。由于它支持标准Java语法,开发人员可以按照其语法规则编写规则表达式,在业务系统中嵌入该引擎,利用其调度计算功能实现规则的动态调整 [^1][^3]。例如在Java代码中创建QLExpress的执行环境,编写规则表达式并执行: ```java import com.ql.util.express.DefaultContext; import com.ql.util.express.ExpressRunner; public class QLExpressExample { public static void main(String[] args) throws Exception { ExpressRunner runner = new ExpressRunner(); DefaultContext<String, Object> context = new DefaultContext<>(); context.put("a", 1); context.put("b", 2); String express = "a + b"; Object result = runner.execute(express, context, null, true, false); System.out.println(result); } } ``` ### QLExpress规则引擎应用场景 QLExpress规则引擎广泛应用于推荐、风控、营销等场景 [^3]。在电商领域,可用于促销活动,如单品折扣、整场活动满减或满折,用户参与活动赠送赠品等业务规则的管理和计算 [^1]。在投放业务中,也可根据规则回传事件。此外,在大型系统中,能使业务逻辑从代码中解耦出来,让系统具备更高的灵活性与可维护性 [^1][^3]。 ### QLExpress规则引擎与其他规则引擎对比 与Drools相比,QLExpress和Drools在规则引擎的核心功能上存在共性,但在规则表达语言、功能完备性、社区生态及企业级特性上有所差异。QLExpress更偏向轻量、易学、与数据库查询紧密相关的场景,而Drools则提供了更强大、全面的功能和企业级支持,适用于复杂业务规则管理和大规模项目。选择哪一个取决于具体项目的业务需求、技术栈、团队技能及长期维护计划等因素 [^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZHOU_VIP

您的鼓励将是我创作最大的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值