日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python 规则引擎 drools_SpringBoot2整合Drools规则引擎及案例详解

發布時間:2023/12/10 python 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 规则引擎 drools_SpringBoot2整合Drools规则引擎及案例详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、Drools引擎簡介

1、基礎簡介

Drools是一個基于java的規則引擎,開源的,可以將復雜多變的規則從硬編碼中解放出來,以規則腳本的形式存放在文件中,使得規則的變更不需要修正代碼重啟機器就可以立即在線上環境生效。具有易于訪問企業策略、易于調整以及易于管理的特點,作為開源業務規則引擎,符合業內標準,速度快、效率高。

2、規則語法

(1)、演示drl文件格式

package droolRule ;

import org.slf4j.Logger

import org.slf4j.LoggerFactory ;

dialect "java"

rule "paramcheck1"

when

then

final Logger LOGGER = LoggerFactory.getLogger("param-check-one 規則引擎") ;

LOGGER.info("參數");

end

(2)、語法說明

· 文件格式

可以 .drl、xml文件,也可以Java代碼塊硬編碼;

· package

規則文件中,package是必須定義的,必須放在規則文件第一行;

· import

規則文件使用到的外部變量,可以是一個類,也可以是類中的可訪問的靜態方法;

· rule

定義一個規則。paramcheck1規則名。規則通常包含三個部分:屬性、條件、結果;

二、整合SpringBoot框架

1、項目結構

SpringBoot2 整合 Drools規則引擎,實現高效的業務規則

2、核心依賴

org.drools

drools-core

7.6.0.Final

org.drools

drools-compiler

7.6.0.Final

org.drools

drools-templates

7.6.0.Final

org.kie

kie-api

7.6.0.Final

org.kie

kie-spring

7.6.0.Final

3、配置文件

@Configuration

public class RuleEngineConfig {

private static final Logger LOGGER = LoggerFactory.getLogger(RuleEngineConfig.class) ;

private static final String RULES_PATH = "droolRule/";

private final KieServices kieServices = KieServices.Factory.get();

@Bean

public KieFileSystem kieFileSystem() throws IOException {

KieFileSystem kieFileSystem = kieServices.newKieFileSystem();

ResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver();

Resource[] files = resourcePatternResolver.getResources("classpath*:" + RULES_PATH + "*.*");

String path = null;

for (Resource file : files) {

path = RULES_PATH + file.getFilename();

LOGGER.info("path="+path);

kieFileSystem.write(ResourceFactory.newClassPathResource(path, "UTF-8"));

}

return kieFileSystem;

}

@Bean

public KieContainer kieContainer() throws IOException {

KieRepository kieRepository = kieServices.getRepository();

kieRepository.addKieModule(kieRepository::getDefaultReleaseId);

KieBuilder kieBuilder = kieServices.newKieBuilder(kieFileSystem());

kieBuilder.buildAll();

return kieServices.newKieContainer(kieRepository.getDefaultReleaseId());

}

@Bean

public KieBase kieBase() throws IOException {

return kieContainer().getKieBase();

}

@Bean

public KieSession kieSession() throws IOException {

return kieContainer().newKieSession();

}

@Bean

public KModuleBeanFactoryPostProcessor kiePostProcessor() {

return new KModuleBeanFactoryPostProcessor();

}

}

這樣環境整合就完成了。

三、演示案例

1、規則文件

規則一

dialect "java"

rule "paramcheck1"

salience 99

when queryParam : QueryParam(paramId != null && paramSign.equals("+"))

resultParam : RuleResult()

then

final Logger LOGGER = LoggerFactory.getLogger("param-check-one 規則引擎") ;

LOGGER.info("參數:getParamId="+queryParam.getParamId()+";getParamSign="+queryParam.getParamSign());

RuleEngineServiceImpl ruleEngineService = new RuleEngineServiceImpl() ;

ruleEngineService.executeAddRule(queryParam);

resultParam.setPostCodeResult(true);

end

規則二

dialect "java"

rule "paramcheck2"

salience 88

when queryParam : QueryParam(paramId != null && paramSign.equals("-"))

resultParam : RuleResult()

then

final Logger LOGGER = LoggerFactory.getLogger("param-check-two 規則引擎") ;

LOGGER.info("參數:getParamId="+queryParam.getParamId()+";getParamSign="+queryParam.getParamSign());

RuleEngineServiceImpl ruleEngineService = new RuleEngineServiceImpl() ;

ruleEngineService.executeRemoveRule(queryParam);

resultParam.setPostCodeResult(true);

end

規則說明:

A、salience 的值越大,越優先執行;

B、規則流程:如果paramId不為null,參數標識是+號,執行添加規則,-號,執行移除規則操作。

2、規則執行代碼

@Service

public class RuleEngineServiceImpl implements RuleEngineService {

private static final Logger LOGGER = LoggerFactory.getLogger(RuleEngineServiceImpl.class) ;

@Override

public void executeAddRule(QueryParam param) {

LOGGER.info("參數數據:"+param.getParamId()+";"+param.getParamSign());

ParamInfo paramInfo = new ParamInfo() ;

paramInfo.setId(param.getParamId());

paramInfo.setParamSign(param.getParamSign());

paramInfo.setCreateTime(new Date());

paramInfo.setUpdateTime(new Date());

ParamInfoService paramInfoService = (ParamInfoService)SpringContextUtil.getBean("paramInfoService") ;

paramInfoService.insertParam(paramInfo);

}

@Override

public void executeRemoveRule(QueryParam param) {

LOGGER.info("參數數據:"+param.getParamId()+";"+param.getParamSign());

ParamInfoService paramInfoService = (ParamInfoService)SpringContextUtil.getBean("paramInfoService") ;

ParamInfo paramInfo = paramInfoService.selectById(param.getParamId());

if (paramInfo != null){

paramInfoService.removeById(param.getParamId()) ;

}

}

}

3、規則調用接口

@RestController

@RequestMapping("/rule")

public class RuleController {

@Resource

private KieSession kieSession;

@Resource

private RuleEngineService ruleEngineService ;

@RequestMapping("/param")

public void param (){

QueryParam queryParam1 = new QueryParam() ;

queryParam1.setParamId("1");

queryParam1.setParamSign("+");

QueryParam queryParam2 = new QueryParam() ;

queryParam2.setParamId("2");

queryParam2.setParamSign("-");

// 入參

kieSession.insert(queryParam1) ;

kieSession.insert(queryParam2) ;

kieSession.insert(this.ruleEngineService) ;

// 返參

RuleResult resultParam = new RuleResult() ;

kieSession.insert(resultParam) ;

kieSession.fireAllRules() ;

}

}

這樣,完整的案例就結束了。

四、源代碼地址

GitHub·地址

GitEE·地址

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

總結

以上是生活随笔為你收集整理的python 规则引擎 drools_SpringBoot2整合Drools规则引擎及案例详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 中文字幕乱码人妻无码久久 | 久久一区二区三 | 婷婷综合亚洲 | 成年人黄网站 | 国产小视频免费在线观看 | 中国挤奶哺乳午夜片 | 丰满少妇被猛烈进入 | 99久久精品日本一区二区免费 | 国产精品粉嫩 | 亚洲成人精品久久 | 欧美aa在线 | 国产情侣激情自拍 | 丰满岳乱妇国产精品一区 | 日本美女a级片 | 熟女少妇a性色生活片毛片 亚洲伊人成人网 | 国产精品图片 | 91精品国产高清一区二区三密臀 | 男人插入女人下面视频 | 日韩精品亚洲一区 | 国产精品国产三级国产aⅴ下载 | 少妇一级淫片免费放 | 亚洲精品乱码久久久久久按摩观 | 国产精品美女在线观看 | 四虎8848 | 亚洲色偷偷综合亚洲av伊人 | av一区二区不卡 | 精品伦一区二区三区 | 精品欧美一区二区三区久久久 | 尤物自拍 | 69久久夜色精品国产69 | 91丨porny在线| 国产一区二区小视频 | 日韩一区中文字幕 | 三级亚洲欧美 | 91精品国产麻豆 | 成人免费观看在线视频 | 手机福利在线 | 日韩精品一区二区三区在线视频 | 狠狠av | 成人在线综合 | 亚洲另类xxxx | 午夜伦伦电影理论片费看 | 久久视频在线播放 | 超级碰碰97 | 怡春院在线视频 | 日韩激情网 | 日韩激情片 | 欧美性大战久久久久久久 | 国产精品免费大片 | 国产综合在线观看 | 亚洲一区二区三区四区视频 | 自拍偷拍第1页 | 国产熟女精品视频 | 97人妻精品一区二区三区动漫 | 免费成人深夜 | www99re| 91在线看 | 九九精品视频在线 | 日本特黄一级 | 国产成人亚洲精品 | 污网站免费在线观看 | 色综综| 久久久久国产精品无码免费看 | 亚洲性欧美 | 国产精品爱啪在线线免费观看 | 国产精品二区在线观看 | 午夜视频日韩 | 精久久久久久 | 成人网久久 | 先锋资源av| 黄视频在线免费看 | 欧美黄色免费大片 | 日本高清不卡一区 | 中文字幕精品在线视频 | 日本在线观看视频网站 | 国产精品久久久久久久久绿色 | 真人真事免费毛片 | 国产精品卡一卡二 | 欧美综合一区二区 | 亚洲精品免费观看 | 黄色片欧美 | 91亚洲国产成人精品一区二区三 | 日剧大尺度床戏做爰 | 亚洲最大的黄色网 | 99热青青草 | 欧美一区二区在线视频 | 久草免费在线观看视频 | 欧美日韩一区二区电影 | 成人免费一区二区三区 | 91黄色小网站 | 亚洲精品午夜国产va久久成人 | 国产激情一区二区三区在线观看 | 久草网在线观看 | 七月色 | 插我一区二区在线观看 | 欧美日韩国产综合网 | 91福利影院 | 日本裸体动漫 | 国产精品视频一区二区三区在3 |