商务服务
java规则引擎_Drools规则引擎(Java)
2024-12-26 20:20

前言

Drools是一款基于Java的开源规则引擎

实现了将业务决策从应用程序中分离出来。

优点

1、简化系统架构,优化应用

2、提高系统的可维护性和维护成本

3、方便系统的整合

4、减少编写“硬代码”业务规则的成本和风险

不多说,直接low代码,此例是使用springboot项目为基础

1.需添加maven依赖 使用7.x

org.drools

drools-core

7.4.1.Final

org.drools

drools-compiler

7.4.1.Final

2.main方法测试

//执行的主类

public class Application {

public static void test1() throws Exception {

KieSession kieSession = check(getRule());

IrssetDroolsVo drools = new IrssetDroolsVo();

drools.setSurpDayCnt(2);

kieSession.insert(drools);

int i = kieSession.fireAllRules();

System.out.println("命中" + i +"返回结果" + drools.getMsg());

}

public static KieSession getSession(String rule) {

KieSession kieSession = null;

try {

KnowledgeBuilder builder = KnowledgeBuilderFactory.newKnowledgeBuilder();

builder.add(ResourceFactory.newByteArrayResource(rule.getBytes("UTF-8")),ResourceType.DRL);

InternalKnowledgebase knowledgebase = KnowledgebaseFactory.newKnowledgebase();

Collection packages = builder.getKnowledgePackages();

knowledgebase.addPackages(packages);

kieSession = knowledgebase.newKieSession();

} catch (Exception e) {

e.printStackTrace();

}

return kieSession;

}

private static KieSession check(String sq) throws Exception {

KieSessionRepo kieSession = new KieSessionRepo();

KieServices kieServices = KieServices.Factory.get();

KieFileSystem kfs = kieServices.newKieFileSystem();

kfs.write("src/main/resources/test.drl", sq );

KieBuilder kieBuilder = kieServices.newKieBuilder(kfs).buildAll();

Results results = kieBuilder.getResults();

if (results.hasMessages(Message.Level.ERROR)) {

for (Message msg : results.getMessages()) {

System.out.println("drools script error info : " + msg.getText());

}

throw new Exception("drools script error");

}

kieSession.setKieContainer("test", kieServices.newKieContainer(KieServices.Factory.get().getRepository().getDefaultReleaseId()));

return kieSession.getKieSession("test");

}

public static String getRule() {

StringBuffer ruleSb = new StringBuffer();

ruleSb.append(" package rule_10001; ");

ruleSb.append("import com.learn.rule.model.IrssetDroolsVo ");

ruleSb.append("rule rule_10001 ");

ruleSb.append("when ");

ruleSb.append("$riskDroolsVo : IrssetDroolsVo(surpDayCnt>=2 && surpDayCnt<=10); ");

ruleSb.append("then ");

ruleSb.append("$riskDroolsVo.setMsg("命中了"); ");

ruleSb.append("end");

System.out.println(ruleSb.toString());

return ruleSb.toString();

}

public static void main(String[] args) throws Exception {

test1();

}

3.执行的实体类

public class IrssetDroolsVo implements Serializable {

private Integer surpDayCnt = null;

private boolean mBlack = false;

private String msg;

public String getMsg() {

return msg;

}

public void setMsg(String msg) {

this.msg = msg;

}

public IrssetDroolsVo() {

}

private static final long serialVersionUID = 1L;

public Integer getSurpDayCnt() {

return surpDayCnt;

}

public void setSurpDayCnt(Integer surpDayCnt) {

this.surpDayCnt = surpDayCnt;

}

public boolean ismBlack() {

return mBlack;

}

public void setmBlack(boolean mBlack) {

this.mBlack = mBlack;

}

}

4. KieSeesionRepo:

public class KieSessionRepo {

private static Map kieContainerMap = new ConcurrentHashMap();

private static Map kieSessionMap= new ConcurrentHashMap();

public static void setKieContainer(String key,KieContainer kieContainer) {

KieSession newKieSession = kieContainer.newKieSession();

kieContainerMap.put(key, kieContainer);

kieSessionMap.put(key,newKieSession);

}

public KieSession getKieSession(String key) {

return kieSessionMap.get(key);

}

}

最终执行的结果:

    以上就是本篇文章【java规则引擎_Drools规则引擎(Java)】的全部内容了,欢迎阅览 ! 文章地址:https://sicmodule.kub2b.com/news/10422.html
     栏目首页      相关文章      动态      同类文章      热门文章      网站地图      返回首页 企库往资讯移动站 https://sicmodule.kub2b.com/mobile/ , 查看更多   
最新文章
过年无忧 | 一键get这些春节话术!
一键Get这些春节话术~过年无忧新年快乐春节将至,年味渐浓在这温馨又热闹的节日氛围里我们既能品尝各式各样的美味佳肴沉浸于味
2025在新加坡生活的我们将迎来“至暗时刻”:房租飙涨、每个月入不敷出…
聚焦新加坡真是开年暴击!2025年刚开始,还没过新年呢,万事通就出了一身冷汗:今年又是一个物价涨涨涨的年份。在网上一搜“新加
太抽象!太抽象!2024年游戏行业简直太抽象!
年末,DataEye研究院今天整点活,轻松一波。——用数据、新闻盘点2024年国内游戏业有多抽象。回首2024年有产品研发8年烧了数亿,
TikTok会如何收场
TikTok的命运再次悬而不决。在美国下架12小时又恢复运营之后,1月20日,美国总统特朗普签署行政命令,要求TikTok「不卖就禁」法
今天上午10:00,成绩发布!
早安,东台!‍今天是2025年1月22日‍星期三(农历腊月廿三)大美东台,活力满满进取创新、奋斗拼搏最近有哪些新动态?和小东一
农村土地托管服务的理论基础
中国产品流通经纪人协会供销合作行业标准《农产品食品供应商信用评价规范》参编单位征集函中国农产品流通经纪人协会供销合作行业
头上三尺有神明,每个人头顶都有一颗星,当星光消失人也就消失!
每当夜晚降临后,我们抬头看天空,会看到满天的星星,自古以来,人们从没有停止过对星象的观测和研究。古人观测星象,一则是为了
运营师抖音代运营
运营师抖音代运营:掌握流行短视频潮流的神奇职业短视频平台已经成为人们娱乐、学习和社交的重要方式。在众多的短视频平台中,抖
微短剧,2024年“最大赢家”? | 年终盘点
2024,短剧行业大变样。作者 | 张语格编辑 | 趣解商业文娱组“互联网大厂争相入局。”“98%的短剧制作方都在亏钱。”“用户被免
同类第一!20%弹性的人工智能 ETF 科创(588760)今日上市,一键布局科创板优质AI龙头
  最新公告内容显示,广发上证科创板交易型开放式指数投资基金(基金代码:588760;扩位简称: ETF 科创)已于 2025 年 1 月 1