定义
Java Expression Language (JEXL) 是一个表达式语言引擎,可以用来校验数据。
背景
项目中,需要配置一些规则,然后根据动态的数据去验证规则。比如配置如下的规则:
人数大于5,并且名称包含 “test” 才能验证通过。
按照传统的思路,一般就是写死代码,如:
if(num > 5 && name.contains("test")){
return true;
}
但是,如果规则变成了人数等于6
,那就要去修改代码(虽然值可以动态获取,但是 > 不能动态改为 = ),比较麻烦。
那么就换一种思路,做成可以配置的,按照上面的规则,就是配置成:
纬度1 公式1 值1 && 纬度2 公式2 值2
把纬度、公式用数据字典进行替换,上图的配置内容存到库中结果就是:
${num} > 5 && ${name}.contains(“test”)