最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot整合Drools的實現步驟

 更新時間:2021年05月25日 15:25:04   作者:youcong  
Drools是一個易于訪問企業(yè)策略、易于調整以及易于管理的開源業(yè)務規(guī)則引擎,符合業(yè)內標準,速度快、效率高。業(yè)務分析師或審核人員可以利用它輕松查看業(yè)務規(guī)則,從而檢驗是否已編碼的規(guī)則執(zhí)行所需的業(yè)務規(guī)則。本文將講述SpringBoot整合Drools的步驟

Drools有什么用

從我個人所待過的公司,其中做智能酒店這個項目時就用到規(guī)則引擎Drools,將它用于處理優(yōu)惠劵規(guī)則。

SpringBoot整合Drools初步實戰(zhàn)

1.導入Maven依賴

<properties>
<drools.version>7.14.0.Final</drools.version>
</properties>

<!-- drools -->
<dependency>
    <groupId>org.drools</groupId>
    <artifactId>drools-compiler</artifactId>
    <version>${drools.version}</version>
</dependency>

2.編寫配置類

package com.springcloud.blog.admin.config;

import org.kie.api.KieBase;
import org.kie.api.KieServices;
import org.kie.api.builder.*;
import org.kie.api.runtime.KieContainer;
import org.kie.api.runtime.KieSession;
import org.kie.internal.io.ResourceFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternResolver;

import java.io.IOException;


@Configuration
public class KiaSessionConfig {

    private static final String RULES_PATH = "rules/";

    @Bean
    public KieFileSystem kieFileSystem() throws IOException {
        KieFileSystem kieFileSystem = getKieServices().newKieFileSystem();
        for (Resource file : getRuleFiles()) {
            kieFileSystem.write(ResourceFactory.newClassPathResource(RULES_PATH + file.getFilename(), "UTF-8"));
        }
        return kieFileSystem;
    }

    private Resource[] getRuleFiles() throws IOException {

        ResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver();
        final Resource[] resources = resourcePatternResolver.getResources("classpath*:" + RULES_PATH + "**/*.*");
        return resources;

    }

    @Bean
    public KieContainer kieContainer() throws IOException {

        final KieRepository kieRepository = getKieServices().getRepository();
        kieRepository.addKieModule(new KieModule() {
            public ReleaseId getReleaseId() {
                return kieRepository.getDefaultReleaseId();
            }
        });

        KieBuilder kieBuilder = getKieServices().newKieBuilder(kieFileSystem());
        kieBuilder.buildAll();
        return getKieServices().newKieContainer(kieRepository.getDefaultReleaseId());

    }

    private KieServices getKieServices() {
        return KieServices.Factory.get();
    }

    @Bean
    public KieBase kieBase() throws IOException {
        return kieContainer().getKieBase();
    }

    @Bean
    public KieSession kieSession() throws IOException {
        return kieContainer().newKieSession();
    }
}

3.resources目錄新建rules目錄

4.新建實體

package com.springcloud.blog.admin.drools;

public class People {
    private int sex;

    private String name;

    private String drlType;

    public int getSex() {
        return sex;
    }

    public void setSex(int sex) {
        this.sex = sex;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getDrlType() {
        return drlType;
    }

    public void setDrlType(String drlType) {
        this.drlType = drlType;
    }
}

5.編寫規(guī)則文件

package com.springcloud.blog.admin.drools
import com.springcloud.blog.admin.drools.People
dialect  "java"

rule "man"
    when
        $p : People(sex == 1 && drlType == "people")
    then
        System.out.println($p.getName() + "是男孩");
end

6.單元測試(只要正常輸出,表示整合是Ok的,接下來就可以任意應用了)

package com.springcloud.blog.base.controller.test.task;

import com.springcloud.blog.admin.BlogAdminApplication;
import com.springcloud.blog.admin.drools.People;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.kie.api.KieBase;
import org.kie.api.runtime.KieSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@SpringBootTest(classes = BlogAdminApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class DroolsJunitTest {

    @Autowired
    private KieSession session;

    @Test
    public void people() {

        People people = new People();
        people.setName("YC");
        people.setSex(1);
        people.setDrlType("people");
        session.insert(people);//插入
        session.fireAllRules();//執(zhí)行規(guī)則
    }


}

7.輸出結果

YC是男孩

以上就是SpringBoot整合Drools的實現步驟的詳細內容,更多關于SpringBoot整合Drools的資料請關注腳本之家其它相關文章!

相關文章

  • Java如何實現簡單后臺訪問并獲取IP

    Java如何實現簡單后臺訪問并獲取IP

    這篇文章主要介紹了Java如何實現簡單后臺訪問并獲取IP,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-10-10
  • Java遞歸算法遍歷部門代碼示例

    Java遞歸算法遍歷部門代碼示例

    這篇文章主要介紹了Java遞歸算法遍歷部門代碼示例,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12
  • MyBatis實戰(zhàn)之Mapper注解的示例

    MyBatis實戰(zhàn)之Mapper注解的示例

    本文主要介紹了MyBatis實戰(zhàn)之Mapper注解的示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-10-10
  • Java Thread多線程開發(fā)中Object類詳細講解

    Java Thread多線程開發(fā)中Object類詳細講解

    這篇文章主要介紹了Java Thread多線程開發(fā)中Object類,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧
    2023-03-03
  • Kotlin 內聯(lián)函數詳解及實例

    Kotlin 內聯(lián)函數詳解及實例

    這篇文章主要介紹了Kotlin 內聯(lián)函數詳解及實例的相關資料,需要的朋友可以參考下
    2017-06-06
  • Spring使用注解進行對象注入的示例詳解

    Spring使用注解進行對象注入的示例詳解

    獲取?Bean?對象也叫做對象裝配,就是把對象取出來放到某個類中,有時候也叫對象注入,常見有關對象注入的注解有兩個,一個是@Autowired,另外一個是@Resource,下面就來講講它們的具體使用吧
    2023-07-07
  • 詳解Spring MVC4 純注解配置教程

    詳解Spring MVC4 純注解配置教程

    本篇文章主要介紹了Spring MVC4 純注解配置教程,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • SpringBoot JPA懶加載失效的解決方案(親測有效)

    SpringBoot JPA懶加載失效的解決方案(親測有效)

    這篇文章主要介紹了SpringBoot JPA懶加載失效的解決方案(親測有效),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Spring AspectJ AOP框架注解原理解析

    Spring AspectJ AOP框架注解原理解析

    這篇文章主要介紹了Spring AspectJ AOP框架注解原理解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-09-09
  • springboot+idea熱部署的實現方法(自動刷新)

    springboot+idea熱部署的實現方法(自動刷新)

    這篇文章主要介紹了springboot+idea熱部署的實現方法(自動刷新),本文分步驟通過實例代碼截圖相結合給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05

最新評論

正阳县| 吉木乃县| 凤冈县| 安图县| 蓝田县| 瑞安市| 金乡县| 顺义区| 电白县| 晴隆县| 宁强县| 瓮安县| 巧家县| 揭阳市| 兴宁市| 甘肃省| 台北市| 吴桥县| 民丰县| 白沙| 康平县| 固原市| 江安县| 墨玉县| 安阳县| 曲松县| 金门县| 西丰县| 金塔县| 申扎县| 武平县| 淳化县| 义乌市| 柞水县| 周至县| 九龙城区| 博爱县| 永顺县| 辽阳县| 即墨市| 和静县|