编写不易,转载请注明(http://shihlei.iteye.com/blog/2421576)!
一 概述
Aviator 是一个Java 语言实现的表达式引擎,可以接受字符串类型的表达式,带入参数求值。
需求场景:
用户日志字段:[ip,phone,userid,action]
希望灵活组合这些字段,生成规则,比如 “1小时,userid,在ip上,触发action 100次报警”,并能灵活修改或新增。
这种需求基于Avaiator实现非常方便,实现规则引擎后,规则修改组合就不需要研发干预了。
本文基于Aviator自定义函数实现一个规则引擎的简单demo,关于读redis计数,报警等非重点仅提供空实现,重在描述思路。
依赖:
<dependency> <groupId>com.googlecode.aviator</groupId> <artifactId>aviator</artifactId> <version>3.3.0</version> </dependency>
二 简单Demo
(1)带入参数求和:
package x.expression.aviator;
import java.util.HashMap;
import java.util.Map;
import com.googlecode.aviator.AviatorEvaluator;
public class AviatorDemo {
public static void main(String[] args) {
String expression = "a + b + c";
Map<String, Object> params = new HashMap<>();
params.put("a", 1);
params.put("b&#