AviatorScript

本文介绍了如何在Java项目中使用Aviator库进行表达式计算,通过示例展示了Aviator的用法,包括变量赋值、运算及内置函数的使用。Aviator支持动态规则配置,适合于业务规则频繁变动的场景,如风控系统,避免每次规则修改都需要重新部署代码。
摘要由CSDN通过智能技术生成

使用Aviator需要引入jar包

<dependency>
            <groupId>com.googlecode.aviator</groupId>
            <artifactId>aviator</artifactId>
            <version>3.3.0</version> 
</dependency>

测试

 Map<String, Object> map = Maps.newHashMap();
 map.put("change", "23");
 map.put("refund", "3.21");
 map.put("haha", 9);

 String aviatorScript1 = "if (haha == nil) {return 0;}return change + refund;";
String aviatorScript2 = "if (haha == nil) {return 0;}return decimal(change) + decimal(refund);";
Object result = AviatorEvaluator.execute(aviatorScript1, map, true);
Object result2 = AviatorEvaluator.execute(aviatorScript2, map, true);

log.info("result: {}", result);
log.info("result2: {}", result2);

结果

result: 233.21
result2: 26.21

aviator支持运算,取值,还有一个内置函数可以用。有些需要业务配置表达式的场景可以使用它,比如风控系统,然后程序执行它,这样就可以避免每次业务规则改变都需要改代码发布,而且aviator里还有内置函数可以使用。

内置函数

函数名称说明
sysdate()返回当前日期对象 java.util.Date
rand()返回一个介于 0-1 的随机数,double 类型
string.split(target,regex,[limit])Java 里的 String.split 方法一致,2.1.1 新增函数
seq.eq(value)用来判断传入的参数是否跟 value 相等,用于 filter 函数,如filter(seq,seq.eq(3)) 过滤返回等于3 的元素组成的集合

AviatorScript 编程指南
https://www.yuque.com/boyan-avfmj/aviatorscript/cpow90

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值