Java 基于 drools 做规则校验

目录

需求

实现

代码

pom

使用示例


需求

工作中需要开发一个规则服务,提供各种规则,每条规则由不同的校验条件以及返回值构成。配置好的规则可以提供给其他服务使用,做各种业务校验。

实现

基于drools规则引擎实现

根据不同的规则,可以动态地生成不同的drl

客户端传参,提供相应的条件值

得到drl和输入参数后,便可以用 drools 来校验规则是否通过,以及通过后相应的业务处理了

代码

pom

        <dependency>
            <groupId>org.drools</groupId>
            <artifactId>drools-compiler</artifactId>
            <version>7.37.0.Final</version>
        </dependency>

使用示例

public class DynamicRule {

    public static void main(String[] args) {
        //业务代码处理后得到的drl
        String drl =
                "import java.util.Map;\n" +
                "import java.util.HashMap;\n" +
                "import java.util.List;\n" +
                "import java.util.ArrayList;\n" +

                "global java.util.HashMap returnObj\n" +

                "rule \"test\"\n" +
                "when\n" +
                "    $m : Map()\n" +
                "    $o : Object($m[\"name\"].equals(\"abc\") && $m[\"age\"] >= 18)\n" +
                "then\n" +
                "    System.out.println($m);\n" +
                "    returnObj.put(\"result\", true);\n" +
                "end";

        KieSession kieSession = getKieSession(drl);
        Map<String, Object> returnObj = new HashMap<>();
        kieSession.setGlobal("returnObj", returnObj);

        //校验的条件值
        Map<String, Object> data = new HashMap<>();
        data.put("name", "abc");
        data.put("age", 17);
        kieSession.insert(data);
        kieSession.fireAllRules();
        kieSession.dispose();

        if (Boolean.TRUE.equals(returnObj.get("result"))) {
            System.out.println("success");
        } else {
            System.out.println("fail");
        }
    }

    public static KieSession getKieSession(String drl) {
        KieHelper kieHelper = new KieHelper();
        kieHelper.addContent(drl, ResourceType.DRL);

        return kieHelper.build().newKieSession();
    }

}

  • 10
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Drools 是一个基于规则的业务逻辑引擎,它可以用于 Java 平台上的规则引擎开发。使用 Drools,你可以通过定义规则来描述和执行业务逻辑,而不需要硬编码。下面是一些关于使用 Drools 规则引擎的基本信息: 1. 安装和配置:首先,你需要下载 Drools 引擎的 JAR 文件并将其添加到你的 Java 项目中。然后,你可以配置规则引擎的运行时环境,例如创建 KnowledgeBase、KnowledgeSession 等。 2. 规则编写:Drools 使用基于规则的方式来表达业务逻辑。规则由条件(LHS)和操作(RHS)组成。条件用于匹配事实或状态,而操作则定义在满足条件时要执行的操作。 3. 规则语法:Drools 使用类似于自然语言规则语法,称为 Drools Rule Language(DRL)。DRL 支持多种规则元素,例如规则名称、条件模式、操作等。 4. 规则引擎的执行:在运行时,你可以将事实插入到规则引擎中,然后 Drools 引擎会自动匹配满足条件的规则,并执行相应的操作。 5. 基于事件的规则:除了基于条件匹配的规则外,Drools 还支持基于事件的规则。这意味着你可以定义规则来响应特定类型的事件,并在事件发生时执行相应的操作。 Drools 提供了丰富的功能和灵活的扩展性,适用于各种类型的应用程序,包括业务规则管理、决策支持系统、复杂事件处理等。你可以在 CSDN 上找到更多关于 Drools 的相关文章和教程来深入了解。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值