我们正在尝试为消费者建立一个通用的警报注册服务。这是我们试图解决的问题:
{"rule1":{"fieldName":"field1","operator":">","value":"100"}
FieldName可以是- accountBal、status等。运算符可以是("+“、"-”、"/“、"*")等算术运算符,也可以是(&&、==、||)等逻辑运算。我们计划定义/registration服务和/execute服务。
让我们假设这样一个规则: rule1 = field1 > 100 -->选择模板1 rule2 = field1 >=100 && field2 <150 -选择模板2
基本上我是这样设想的:
abstract class Rule
{
private String field;
private Operator symbol;
private String fieldValue
}
一个Rule -->可以解析到N个模板,系统应该将模板列表发送给我。
我确实开始研究解释器模式和规则模式,但我还没有发现我正在寻找。
基本上,我需要一种方法来配置规则(将作为json发送)从服务API并存储在数据库中。在runTime,基于applicationId,一堆规则将被触发并返回List<Template>
任何帮助都将不胜感激
我计划在StandardEvaluationContext中使用一个自定义的规则引擎,但是一个例子可以帮助我开始。
发布于 2018-06-05 06:52:16
我已经使用Apache Velocity创建了一个规则引擎。Velocity提供了能够计算布尔表达式的‘eval’函数。
https://stackoverflow.com/questions/50689480
复制相似问题