创建一个简单的Java规则引擎

时间:2018-06-04 22:11:30

标签: java rule-engine

我们正在尝试为消费者构建通用警报注册服务。以下是我们要解决的问题:

  1. 警报可以注册“N”个模板。每个模板将根据规则匹配
  2. 获取
  3. 规则将是这样的:

    { “规则1”:{ “fieldName的”: “FIELD1”, “运算符”: “>” 中, “值”: “100”}

    FieldName可能类似于 - accountBal,status等。运算符可以是算术运算符,如(“+”,“ - ”,“/”,“*”)或逻辑运算,如(&&,==, ||) 我们计划定义/注册服务和/执行服务。

  4. 让我们来说: rule1 = field1> 100 - >选择模板1 rule2 = field1> = 100&& field2< 150 - 选择模板2

    基本上我想象它是这样的:

    abstract class Rule
    {
        private String field;
        private Operator symbol;
        private String fieldValue
    
    }
    

    规则 - >可以解析为N模板,系统应该将模板列表发回给我。

    我确实开始查看解释器模式和规则模式,但我没有找到我在看。

    基本上我需要一种方法来配置规则(将作为json发送)从服务API并存储在DB中。在runTime,基于applicationId,将触发一系列规则并返回List<Template>

    任何帮助将不胜感激

    我计划使用带有StandardEvaluationContext的自定义规则引擎,但一个例子可以帮助我开始。

1 个答案:

答案 0 :(得分:0)

我使用Apache Velocity创建规则引擎。  Velocity提供'eval'函数,可以评估布尔表达式。