我们正在尝试为消费者构建通用警报注册服务。以下是我们要解决的问题:
规则将是这样的:
{ “规则1”:{ “fieldName的”: “FIELD1”, “运算符”: “>” 中, “值”: “100”}
FieldName可能类似于 - accountBal,status等。运算符可以是算术运算符,如(“+”,“ - ”,“/”,“*”)或逻辑运算,如(&&,==, ||) 我们计划定义/注册服务和/执行服务。
让我们来说: 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的自定义规则引擎,但一个例子可以帮助我开始。
答案 0 :(得分:0)
我使用Apache Velocity创建规则引擎。 Velocity提供'eval'函数,可以评估布尔表达式。