《Drools7.0.0.Final规则引擎教程》第3章 3.2 KIE API解析
来源:互联网 发布:在阿里云备案 编辑:程序博客网 时间:2024/06/13 21:23
3.2.4 KieServices
该接口提供了很多方法,可以通过这些方法访问KIE关于构建和运行的相关对象,比如说可以获取KieContainer,利用KieContainer来访问KBase和KSession等信息;可以获取KieRepository对象,利用KieRepository来管理KieModule等。
KieServices就是一个中心,通过它来获取的各种对象来完成规则构建、管理和执行等操作。
示例demo:
// 通过单例创建KieServicesKieServices kieServices = KieServices.Factory.get();// 获取KieContainerKieContainer kieContainer = kieServices.getKieClasspathContainer();// 获取KieRepositoryKieRepository kieRepository = kieServices.getRepository();
3.2.5 KieContainer
可以理解KieContainer就是一个KieBase的容器。提供了获取KieBase的方法和创建KieSession的方法。其中获取KieSession的方法内部依旧通过KieBase来创建KieSession。
// 通过单例创建KieServicesKieServices kieServices = KieServices.Factory.get();// 获取KieContainerKieContainer kieContainer = kieServices.getKieClasspathContainer();// 获取KieBaseKieBase kieBase = kieContainer.getKieBase();// 创建KieSessionKieSession kieSession = kieContainer.newKieSession("session-name");
3.2.6 KieBase
KieBase就是一个知识仓库,包含了若干的规则、流程、方法等,在Drools中主要就是规则和方法,KieBase本身并不包含运行时的数据之类的,如果需要执行规则KieBase中的规则的话,就需要根据KieBase创建KieSession。
// 获取KieBaseKieBase kieBase = kieContainer.getKieBase();KieSession kieSession = kieBase.newKieSession();StatelessKieSession statelessKieSession = kieBase.newStatelessKieSession();
3.2.7 KieSession
KieSession就是一个跟Drools引擎打交道的会话,其基于KieBase创建,它会包含运行时数据,包含“事实Fact”,并对运行时数据实时进行规则运算。通过KieContainer创建KieSession是一种较为方便的做法,其本质上是从KieBase中创建出来的。KieSession就是应用程序跟规则引擎进行交互的会话通道。
创建KieBase是一个成本非常高的事情,KieBase会建立知识(规则、流程)仓库,而创建KieSession则是一个成本非常低的事情,所以KieBase会建立缓存,而KieSession则不必。
3.2.8 KieRepository
KieRepository是一个单例对象,它是存放KieModule的仓库,KieModule由kmodule.xml文件定义(当然不仅仅只是用它来定义)。
// 通过单例创建KieServicesKieServices kieServices = KieServices.Factory.get();// 获取KieRepositoryKieRepository kieRepository = kieServices.getRepository();
3.2.9 KieProject
KieContainer通过KieProject来初始化、构造KieModule,并将KieModule存放到KieRepository中,然后KieContainer可以通过KieProject来查找KieModule定义的信息,并根据这些信息构造KieBase和KieSession。
3.2.10 ClasspathKieProject
ClasspathKieProject实现了KieProject接口,它提供了根据类路径中的META-INF/kmodule.xml文件构造KieModule的能力,是基于Maven构造Drools组件的基本保障之一。意味着只要按照前面提到过的Maven工程结构组织我们的规则文件或流程文件,只用很少的代码完成模型的加载和构建。
3.2.11 kmodule.xml
kmodule的简单配置规则在上面的实例中已经简单介绍,下面具体介绍具体的配置。
kbase的属性:
ksession的属性:
后语
你的支持是我努力的最大动力!此系列课程正在持续更新中,相关讨论QQ(593177274)已经建立,欢迎大家加入讨论。如有疑问可以留言也可以发送本人邮箱secbro2@gmail.com。
- 《Drools7.0.0.Final规则引擎教程》第3章 3.2 KIE API解析
- 《Drools7.0.0.Final规则引擎教程》第3章 3.2 KIE概念&FACT对象
- 《Drools7.0.0.Final规则引擎教程》第3章 3.1 Hello World 实例
- 《Drools7.0.0.Final规则引擎教程》第4章 4.1 规则文件
- 《Drools7.0.0.Final规则引擎教程》第1章 Drools简介
- 《Drools7.0.0.Final规则引擎教程》第2章 追溯Drools5的使用
- 《Drools7.0.0.Final规则引擎教程》第4章 4.2 no-loop
- 《Drools7.0.0.Final规则引擎教程》第4章 4.2 lock-on-active
- 《Drools7.0.0.Final规则引擎教程》第4章 4.2 ruleflow-group&salience
- 《Drools7.0.0.Final规则引擎教程》第4章 4.2 agenda-group
- 《Drools7.0.0.Final规则引擎教程》第4章 4.2 auto-focus
- 《Drools7.0.0.Final规则引擎教程》第4章 4.2 activation-group& dialect& date-effective
- 《Drools7.0.0.Final规则引擎教程》第4章 4.3 定时器
- 《Drools7.0.0.Final规则引擎教程》第4章 4.3 日历
- 《Drools7.0.0.Final规则引擎教程》第4章 4.4 LHS简介&Pattern
- 《Drools7.0.0.Final规则引擎教程》第4章 4.4 约束(Pattern的一部分)
- 《Drools7.0.0.Final规则引擎教程》第4章 4.5RHS语法
- 《Drools7.0.0.Final规则引擎教程》第4章 4.6 结果条件
- Freemaker的java.beans.IntrospectionException: type mismatch between read and write methods
- 使用RTL-SDR和Matlab Simulink玩转软件无线电(十一)
- Windows下Pycharm使用Tensorflow、Theano和Keras的方法
- MySQL数据库命令行下操作
- 深入理解JavaScript中的作用域和上下文
- 《Drools7.0.0.Final规则引擎教程》第3章 3.2 KIE API解析
- 使用Kotlin仿的简书个人主页,只需一个控件
- vue-router
- 软件版本RC,M,GA等
- 两路插入排序的Java实现
- python中单引号,双引号,多引号区别
- P1101
- Windows 下编译 ffmpeg (提供所有用到的工具,除了NDK)
- JDBC高级编程 、DAO