drools使用记录

常用API

KIE是jBoss里面一些相关项目的统称,其中我们比较熟悉的就有jBPM和Drools
这些项目都有一定的关联关系,并且存在一些通用的API,比如说涉及到构建(building)、部署(deploying)和加载(loading)等;
jBoss通过KIE将jBPM和Drools等相关项目进行了一个整合,统一了他们的使用方式,提供了常见的公共API如KieServices、KieContainer、KieSession等。

通过KieServices对象得到一个KieContainer,利用kieContainer对象创建一个新的KieSession,创建session的时候传入了一个name,这个就是我们定义的kmodule.xml文件中定义的ksession的name。
kieContainer根据kmodule.xml定义的ksession的名称找到KieSession的定义,然后创建一个KieSession的实例。
KieSession就是一个到规则引擎的链接,通过它就可以跟规则引擎通讯,并且发起执行规则的操作。
通过kSession.insert方法来将事实(Fact)插入到引擎中,也就是Working Memory中。 然后通过kSession.fireAllRules方法来通知规则引擎执行规则。

KieContainer可以理解为一个KieBase的容器。
KieBase就是一个知识仓库,包含了若干的规则、流程、方法等,在Drools中主要就是规则和方法,KieBase本身并不包含运行时的数据之类的,如果需要执行规则KieBase中的规则的话,就需要根据KieBase创建KieSession。

调用demo

    public static void main(final String[] args) {
        //通过KieServices对象得到一个KieContainer,
        // 利用kieContainer对象创建一个新的KieSession,创建session的时候传入了一个name,这个就是我们定义的kmodule.xml文件中定义的ksession的name。
        KieContainer kc = KieServices.Factory.get().getKieClasspathContainer();
        System.out.println(kc.verify().getMessages().toString());
        KieSession ksession = kc.newKieSession("mingKS");
        XiaoMing xiaoMing = new XiaoMing();
        xiaoMing.setMoney(50);
//        通过kSession.insert方法来将事实(Fact)插入到引擎中,也就是Working Memory中。 然后通过kSession.fireAllRules方法来通知规则引擎执行规则。
        ksession.insert(xiaoMing);
        ksession.fireAllRules();
        ksession.dispose();
    }

kmodule.xml

<?xml version="1.0" encoding="UTF-8"?>
<kmodule xmlns="http://www.drools.org/xsd/kmodule">

    <kbase name="mingKB" packages="com.xu.drools.rule.complexProblem">
        <ksession name="mingKS"/>
    </kbase>
</kmodule>

依赖jar包

<drools.version>7.0.0.Final</drools.version>
 <!--Drools-->
 <dependency>
     <groupId>org.kie</groupId>
     <artifactId>kie-api</artifactId>
     <version>${drools.version}</version>
 </dependency>
 <dependency>
     <groupId>org.drools</groupId>
    <artifactId>drools-core</artifactId>
     <version>${drools.version}</version>
 </dependency>
 <dependency>
     <groupId>org.drools</groupId>
     <artifactId>drools-compiler</artifactId>
     <version>${drools.version}</version>
 </dependency>
 <dependency>
     <groupId>org.drools</groupId>
     <artifactId>drools-decisiontables</artifactId>
     <version>${drools.version}</version>
 </dependency>
 <dependency>
     <groupId>org.drools</groupId>
     <artifactId>drools-templates</artifactId>
     <version>${drools.version}</version>
 </dependency>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值