栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

项目引入drools规则引擎

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

项目引入drools规则引擎

1maven引入

这里用的是7.62.0.Final版本


      UTF-8
      7.62.0.Final
    

dependencyManagemen添加


        
          
            org.drools
            drools-bom
            ${drools.version}
            import
            pom
          

        
    

引入jar包依赖


      
        org.kie
        kie-api
      
      
        org.drools
        drools-core
      
      
        org.drools
        drools-compiler
      
      
        org.drools
        drools-mvel
      
2新建kmodule.xml配置文件

在src/main/resources下
新建/META-INF/kmodule.xml,
注意必须有META-INF目录,
否则Drools加载不到配置文件。



    
        
    

3新建Sample.drl规则文件
package com.sample.rules
 
import com.sample.DroolsUtils.Message;
 
rule "Hello World"
    when
        m : Message( status == Message.HELLO, myMessage : message )
    then
        System.out.println( myMessage );
        m.setMessage( "Goodbye cruel world" );
        m.setStatus( Message.GOODBYE );
        update( m );
end

rule "GoodBye"
    when
        Message( status == Message.GOODBYE, myMessage : message )
    then
        System.out.println( myMessage );
end

注意第一行的package一定要是com.sample.rules,
才能和kmodule.xml文件中的配置匹配上。

规则"Hello World"匹配Message类型的输入,
当Message的属性status为Message.HELLO时,
会执行打印Message的属性message等操作。
这里的语法基本上和Java相同,
还是比较容易理解的。

注意Message是Java类,
需要先导入才能使用:
import com.sample.DroolsUtils.Message;

4新建DroolsUtils类
import org.kie.api.KieServices;
import org.kie.api.runtime.KieContainer;
import org.kie.api.runtime.KieSession;


public class DroolsUtils {

    public static final void main(String[] args) {
        try {
            // load up the knowledge base
            KieServices ks = KieServices.Factory.get();
            KieContainer kContainer = ks.getKieClasspathContainer();
            KieSession kSession = kContainer.newKieSession("ksession-rules");

            // go !
            Message message = new Message();
            message.setMessage("Hello World");
            message.setStatus(Message.HELLO);
            kSession.insert(message);
            kSession.fireAllRules();
        } catch (Throwable t) {
            t.printStackTrace();
        }
    }

    public static class Message {

        public static final int HELLO = 0;
        public static final int GOODBYE = 1;

        private String message;

        private int status;

        public String getMessage() {
            return this.message;
        }

        public void setMessage(String message) {
            this.message = message;
        }

        public int getStatus() {
            return this.status;
        }

        public void setStatus(int status) {
            this.status = status;
        }

    }

}

注意这里获取KieSession的参数ksession-rules,
要和上面kmodule.xml文件中的配置一致。

5.运行
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/845674.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号