复习步骤22-26 规则引擎Drools(1)Drools介绍与运行

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiangshuai198807/article/details/90033790

   规则引擎Drools(1)Drools介绍与运行

规则引擎 -- 作用,代码与业务规则分离,当业务规则改变,不影响我们代码,不需要修改代码,也是当业务变化,不需要或减少需要系统升级 --即将规则提取出来,实现代码于业务规则解耦,适应各种业务规则的技术,叫做规则引擎技术

 

Drools:介绍

https://www.yiibai.com/drools

Drools安装:下载

http://download.jboss.org/drools/release/7.0.0.Final/droolsjbpm-tools-distribution-7.0.0.Final.zip

或E:\学习文档子目录压缩\框架\工作流引擎\Activiti6.0\window\复习步骤22-26 规则引擎Drools(1)Drools介绍与运行\drools本地插件安装的zip文件--ECLIPSE,IDEA等安装\droolsjbpm-tools-distribution-7.0.0.Final.zip

AND

我的网盘\我的笔记\学习文档子目录压缩\框架\工作流引擎\Activiti6.0\window\复习步骤22-26 规则引擎Drools(1)Drools介绍与运行\drools本地插件安装的zip文件--ECLIPSE,IDEA等安装\droolsjbpm-tools-distribution-7.0.0.Final.zip

解压后

解压下载文件夹,进入“binaries/org.drools.updatesite”目录,将目录下的features和plugins下面的jar包copy到Eclipse下对应目录。然后重启,看到下图就表示成功了

 

 

 

 一、 第一个Drools

 

  

1.1  参照上图 ,

     项目结构

 

        新建 first.drl,Person.java

           新建 first.drl,

                  新建  Person.java

package com.xiangshuai.act.c25;

 

public class Person {

     private String name;

 

    public String getName() {

       return name;

    }

 

    public void setName(String name) {

       this.name = name;

    }

    

}

    1.2 测试方法及测试JAVA类

PersonTest.java

package com.xiangshuai.act.c25;

 

import java.util.Collection;

 

import org.kie.api.io.ResourceType;

import org.kie.internal.KnowledgeBase;

import org.kie.internal.builder.KnowledgeBuilder;

import org.kie.internal.builder.KnowledgeBuilderFactory;

import org.kie.internal.definition.KnowledgePackage;

import org.kie.internal.io.ResourceFactory;

import org.kie.internal.runtime.StatefulKnowledgeSession;

 

/**

 * @author lqx

 * 文件在 E:\学习文档子目录压缩\框架\工作流引擎\Activiti6.0\window\复习步骤22-26 规则引擎Drools(1)Drools介绍与运行

  或 我的网盘\我的笔记\学习文档子目录压缩\框架\工作流引擎\Activiti6.0\window\复习步骤22-26 规则引擎Drools(1)Drools介绍与运行

 *

 */

public class PersonTest {

 

    public static void main(String[] args) {

        // 创建一个KnowledgeBuilder

        KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();

        // 添加规则资源到 KnowledgeBuilder

        kbuilder.add(ResourceFactory.newClassPathResource("first.drl",

                         PersonTest.class), ResourceType.DRL);

        // 获取知识包集合

        Collection<KnowledgePackage> pkgs = kbuilder

                .getKnowledgePackages();

        // 创建KnowledgeBase实例

        KnowledgeBase kbase = kbuilder.newKnowledgeBase();

        // 将知识包部署到KnowledgeBase中

        kbase.addKnowledgePackages(pkgs);

        // 使用KnowledgeBase创建StatefulKnowledgeSession

        StatefulKnowledgeSession ksession = kbase

                .newStatefulKnowledgeSession();

       

       

        // 定义一个事实对象

        /*

        Person cxy = new Person();

        cxy.setName("php"); //输出结果--如果Person的属性name是php,就输出这句php程序员

       */

       /*

        Person cxy = new Person();

        cxy.setName("C++"); //输出结果--如果Person的属性name是C++,就输出这句C++程序员

        */

       

       

        Person cxy = new Person();

        cxy.setName("Java"); //输出结果--如果Person的属性name是Java,就输出这句Java程序员

       

        // 向StatefulKnowledgeSession中加入事实

        ksession.insert(cxy);

        // 匹配规则

        ksession.fireAllRules();

        // 关闭当前session的资源

        ksession.dispose();

 

    }

 

}

猜你喜欢

转载自blog.csdn.net/xiangshuai198807/article/details/90033790
今日推荐