Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
创建一个简单的Java规则引擎_Java_Rule Engine - Fatal编程技术网

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

创建一个简单的Java规则引擎,java,rule-engine,Java,Rule Engine,我们正在尝试为消费者构建一个通用警报注册服务。以下是我们试图解决的问题: 警报可以注册“N”个模板。每个模板都将根据规则匹配进行提取 规则是这样的: abstract class Rule { private String field; private Operator symbol; private String fieldValue } {“规则1”:{“字段名”:“字段1”,“运算符”:“>”,“值”:“100”} 字段名可以是-accountBal、statu

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

  • 警报可以注册“N”个模板。每个模板都将根据规则匹配进行提取
  • 规则是这样的:

    abstract class Rule
    {
        private String field;
        private Operator symbol;
        private String fieldValue
    
    }
    
    {“规则1”:{“字段名”:“字段1”,“运算符”:“>”,“值”:“100”}

    字段名可以是-accountBal、status等。运算符可以是像(“+”、“-”、“/”、“*”)这样的算术运算符,也可以是像(&&&、==、||)这样的逻辑运算 我们计划定义/注册服务和/执行服务

  • 让我们用一条规则来说: 规则1=字段1>100-->选择模板1 rule2=field1>=100&&field2可以解析为N个模板,系统应将模板列表发回给我

    我确实开始研究解释器模式和规则模式,但我没有发现我正在研究

    基本上,我需要一种从服务API配置规则(将作为json发送)并存储在DB中的方法。在运行时,基于applicationId,将触发一组规则并返回
    List

    任何帮助都将不胜感激


    我曾计划在StandardEvaluationContext中使用自定义规则引擎,但一个示例将帮助我开始。

    我使用Apache Velocity创建了一个规则引擎。
    Velocity提供了“eval”函数,该函数能够计算布尔表达式。

    您有什么具体问题吗?请看:是的。我正在尝试了解如何将Spring EL StandardEvaluationContext与RuleRegistry结合使用,以注册规则并在运行时执行。Java脚本API(比如使用JavaScript)就可以了,在哪里“rule”则是一个脚本(或函数)计算为布尔结果。优点:数值类型。或者,由于Java 9:REPL功能,也可以编程。