Drools Runtime概念
- 理解Drools Runtime实例
- 常用配置
- 使用KieScanner动态加载变更
Drools Runtime Instances
要理解Drools runtime instances,首先要理解一下五个概念:
KieServices
KieContainer
KieModule
KieBase
KieSession
Kie是Knowledge Is Everything的缩写。
首先来看KieServices,它可以让我们通过注册服务来获取其他概念,在Drools的未来版本中可能会通过不同的service来满足更多的需求场景,这里我们首先要知道可以通过以下方式获取KieServices:
KieServices ks = KieServices.Factory.get();
KieServices还可以获取更多的Drools实例的工厂、服务以及工具方法,下面我们利用它来获取KieContainer。
KieContainer定义了规则引擎用来创建实例所用的规则范围,KieContainer可以存储KieModule以及它的依赖。
一般有两种方式可以定义KieContainer实例所包含的资源和配置
- 基于Classpath
KieContainer kContainer = ks.newKieClasspathContainer();
如果项目是基于maven的,maven会帮我们从pom.xml中解析和建立classpath, 包括所有依赖项目的classpath。
然后,Drools会从classpath的META-INF目录中查找kmodule.xml文件,可能会有多个项目的kmodule.xml文件,它们都会被加载以供KieContainer使用,
2. 基于maven依赖
KieContainer kContainer = ks.newKieContainer(
ks.newReleaseId("org.drools.devguide", "chapter-03-kjar-simple-discounts", "0.1-SNAPSHOT"));
接下来看看KieModule,kmodule.xml是KieModule的配置文件,通过配置文件定了KieBase,KieSession。
<?xml version="1.0" encoding="UTF-8"?>
<kmodule xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://jboss.org/kie/6.0.0/kmodule"> <kbase name="rules.cp.discount"><ksession name="rules.cp.discount.session" type="stateful"/></kbase>
</kmodule>
KieBase代表了编译后的特定版本的一系列规则资源,KieSession代表了包含这些资源的规则引擎实例,一个KieBase可以对应多个KieSession。
上面的kbase name=rules.cp.discount 指定了/resources/rules/cp/discount下的资源。
ksession有两种:Stateful和Stateless,Stateful的KieSessions可以在多次交互过程中将状态信息保持在规则引擎中,而Stateless的StatelessKieSession则只能交互一次并返回结果,不保存状态。
规则会随着时间不断变化,所以需要一种可以动态发现规则变化并更新的机制,KieScanner就是这样的用途。
KieContainer kieContainer = ks.newKieContainer( ks.newReleaseId("group.test","artifact-test", "1.0"));
KieScanner scanner = ks.newKieScanner(kieContainer);
//Manually run a check for new versions
scanner.scanNow();
//Configure the scanner to check for new versions every 10 seconds scanner.start(10_000);
Drools Runtime概念相关推荐
- 【Linux 内核】CFS 调度器 ① ( CFS 完全公平调度器概念 | CFS 调度器虚拟时钟 Virtual Runtime 概念 | 四种进程优先级 | 五种调度类 )
文章目录 一.CFS 调度器概念 ( 完全公平调度器 ) 二.CFS 调度器虚拟时钟概念 ( Virtual Runtime ) 三.进程优先级 ( 调度优先级 | 静态优先级 | 正常优先级 | 实 ...
- Drools基本概念
Drools的学习成本还是比较高的,比如Fact.资产.工作空间.工作台.KieSession等,下面针对一些常用的术语或者概念进行解释,如下: KIE:即Knowledge Is EveryThin ...
- jboss drools_JBoss Drools –入门
jboss drools 这篇文章是关于我如何掌握JBoss Drools的 . 其背后的原因是:SAP收购了我公司当前的规则引擎,而Drools是我们将寻找的另一种选择,只要有人有能力提高概念验证的 ...
- JBoss Drools –入门
这篇文章是关于我如何掌握JBoss Drools的 . 其背后的原因是:SAP收购了我公司当前的规则引擎,而Drools是我们将寻找的另一种选择,只要有人掌握了概念验证的技能即可. 尽管似乎有大量的文 ...
- Drools 5.1.1(一)
http://shikonglaike.iteye.com/blog/1236354 第一章欢迎 我总是和终端业务用户争论不休,理解规则和流程.最新规则和事件处理的区别.对此,在他们的意识中有这样的问 ...
- Drools与Spring集成 登录测试
http://justsee.iteye.com/blog/1279082 Drools5.2.0.Final与Spring3集成测试 在drools5.2,有一个jar包:drools-spring ...
- Drools学习 入门实例
http://blog.sina.com.cn/s/blog_67d6d5df0100jyqk.html 在Eclipse新建Drools工程就可以导入自带的例子进行学习. 接下来: 如此,就 ...
- drools -规则语法
文章结构 1. 基础api 2. FACT对象 3. 规则 4. 函数 1. 基础api 在 Drools 当中,规则的编译与运行要通过Drools 提供的各种API 来实现,这些API 总体来讲可以 ...
- Drools规则引擎之常用语法
一.基础api 在 Drools 当中,规则的编译与运行要通过Drools 提供的各种API 来实现,这些API 总体来讲可以分为三类:规则编译.规则收集和规则的执行.完成这些工作的API 主要有Kn ...
最新文章
- php获取WdatePicker值,WdatePicker日历控件使用方法
- UBUNTU安装SSH和xrdp
- atlsoap.h”: No such file or directory
- [转]SAP ABAP中使用Read_Text函数读取项目文本的方法
- java面试题二十一 异常
- 安装cockpit通过nginx代理访问
- 未封装的扩展程序是什么意思_“冰壶见底未为清,少年如玉有诗名”这句诗是什么意思?...
- 实用Python之字符串长度计算
- 【GIS开发者】(GISDeveloper) 11-14期 提供下载
- FreeTextBox使用
- SpringBoot入门项目——holleWorld
- netty框架中 bossGroup与workGroup是一个还是两个Reactor
- 广发样样行提额技巧分享
- 第六感38只19.9/吹风机29.9/长虹电暖器69/按摩护腰垫39/情侣卫衣54.9
- 机电信息杂志机电信息杂志社机电信息编辑部2022年第13期目录
- 【1024面试必备】厂长爆肝万字之多线程高并发JUC编程⭐建议收藏
- 【雷达与对抗】【2006.09】多普勒模式匹配对雷达探测性能的改进
- 我心中的计算机作文500,心中的作文500字4篇
- ARM架构与编程--基于STM32F103 (1)LED原理图
- ReadBook_Thinking_Method