Java基于drools做规则校验的实现
需求
工作中需要开发一个规则服务,提供各种规则,每条规则由不同的校验条件以及返回值构成。配置好的规则可以提供给其他服务使用,做各种业务校验。
实现
基于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();
}
}到此这篇关于Java 基于 drools 做规则校验的文章就介绍到这了,更多相关Java 基于 drools 做规则校验内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
在非Spring管理对象中注入Spring Bean的解决方案
在SpringBoot开发中,我们习惯了通过@Autowired/@Resource等注解轻松注入依赖 Bean,但在WebSocket、定时任务等场景下,会遇到一个核心问题:非Spring创建的对象无法直接注入 Spring Bean,所以本文给大家介绍了在非Spring管理对象中注入Spring Bean的解决方案2026-02-02
基于Spring Boot 的小区人脸识别与出入记录管理系统功能
文章介绍基于SpringBoot框架与百度AI人脸识别API的小区出入管理系统,实现自动识别、记录及查询功能,涵盖技术选型、数据模型设计、接口开发与系统优化方案,为智慧社区提供高效安全管理工具,感兴趣的朋友跟随小编一起看看吧2025-08-08
spring boot里增加表单验证hibernate-validator并在freemarker模板里显示错误信息(推
这篇文章主要介绍了spring boot里增加表单验证hibernate-validator并在freemarker模板里显示错误信息的相关资料,需要的朋友可以参考下2018-01-01
一种新的日期处理方式之JavaScript Temporal API
JavaScript Temporal API是一种为Web开发人员提供了一种新的处理日期和时间数据类型的方式。它的目的是使操作日期和时间更加简单和可靠,而且不用担心历史时区问题或全球化协调时间(UTC)之类的问题,感兴趣的同学可以参考阅读2023-05-05


最新评论