博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【java规则引擎】drools6.5.0版本api简介
阅读量:6964 次
发布时间:2019-06-27

本文共 1398 字,大约阅读时间需要 4 分钟。

在有些术语使用的时候,我有时候会用KIE项目、KIE引擎或者Drools项目、Drools引擎,大家应该理解KIE是Drools等项目的一个统称,所以在大多数情况下KIE或者特指Drools都是差不多的。

现在我们开始了解KIE的相关API,在这个helloworld例子中,我们接触过如下这些类和接口:

我们通过KieServices对象得到一个KieContainer,然后KieContainer根据session name来新建一个KieSession,最后通过KieSession来运行规则。

KieServices:

该接口提供了很多方法,可以通过这些方法访问KIE关于构建和运行的相关对象,比如说可以获取KieContainer,利用 KieContainer来访问KBase和KSession等信息;可以获取KieRepository对象,利用KieRepository来管理 KieModule等。

KieServices就是一个中心,通过它来获取的各种对象来完成规则构建、管理和执行等操作。

KieContainer:

可以理解KieContainer就是一个KieBase的容器,KieBase是什么呢?

KieBase:

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

KieSession:

KieSession就是一个跟Drools引擎打交道的会话,其基于KieBase创建,它会包含运行时数据,包含“事实 Fact”,并对运行时数据事实进行规则运算。我们通过KieContainer创建KieSession是一种较为方便的做法,其实他本质上是从 KieBase中创建出来。的。

KieSession就是应用程序跟规则引擎进行交互的会话通道。

创建KieBase是一个成本非常高的事情,KieBase会建立知识(规则、流程)仓库,而创建KieSession则是一个成本非常低的事情,所以KieBase会建立缓存,而KieSession则不必。

较为完善的类关系如下:

KieRepository:

KieRepository是一个单例对象,它是一个存放KieModule的仓库,KieModule由kmodule.xml文件定义(当然不仅仅只是用它来定义)。

KieProject:

KieContainer通过KieProject来初始化、构造KieModule,并将KieModule存放到 KieRepository中,然后KieContainer可以通过KieProject来查找KieModule定义的信息,并根据这些信息构造 KieBase和KieSession。

ClasspathKieProject:

ClasspathKieProject实现了KieProject接口,它提供了根据类路径中的META-INF/kmodule.xml文件构造KieModule的能力,也就是我们能够基于Maven构造Drools组件的基本保障之一。

意味着只要我们按照前面提到过的Maven工程结构组织我们的规则文件或流程文件,我们就能够只用很少的代码完成模型的加载和构建

转载地址:http://xvqil.baihongyu.com/

你可能感兴趣的文章
如何安装Node.js
查看>>
linux系统优化(实践篇)
查看>>
跟小博老师一起学习数据库 ——外连接
查看>>
在LINUX下探测硬件信息的命令
查看>>
cisco ASA 551X系列防火墙限速
查看>>
经典游戏服务器端架构概述 (1)
查看>>
【iOS-Cocos2d游戏开发之十四】音频、音效播放+Cocos2D-Extensions视频播放!
查看>>
一个简单的JavaBean分页操作
查看>>
Linux系统有啥好的,你们都去学?
查看>>
利用碎片化时间Get Linux系统
查看>>
虚拟胡--001 powercli安装遇到问题about_Execution_Policie-remotesign
查看>>
老司机带你攻破微信消息防撤回功能
查看>>
android shape的使用
查看>>
我的友情链接
查看>>
用css3制作旋转加载动画的几种方法
查看>>
应用系统中常见报表类型解析
查看>>
SpringBoot初级教程
查看>>
用tarball实现liferay自动安装部署7-根据dnsdomainname判断节点环境
查看>>
WebDriver的全局隐式等待
查看>>
JPDA 架构研究8 - Agent利用环境指针访问VM(堆栈管理篇)
查看>>