1. 理解Drools Runtime实例
  2. 常用配置
  3. 使用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实例所包含的资源和配置

  1. 基于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概念相关推荐

  1. 【Linux 内核】CFS 调度器 ① ( CFS 完全公平调度器概念 | CFS 调度器虚拟时钟 Virtual Runtime 概念 | 四种进程优先级 | 五种调度类 )

    文章目录 一.CFS 调度器概念 ( 完全公平调度器 ) 二.CFS 调度器虚拟时钟概念 ( Virtual Runtime ) 三.进程优先级 ( 调度优先级 | 静态优先级 | 正常优先级 | 实 ...

  2. Drools基本概念

    Drools的学习成本还是比较高的,比如Fact.资产.工作空间.工作台.KieSession等,下面针对一些常用的术语或者概念进行解释,如下: KIE:即Knowledge Is EveryThin ...

  3. jboss drools_JBoss Drools –入门

    jboss drools 这篇文章是关于我如何掌握JBoss Drools的 . 其背后的原因是:SAP收购了我公司当前的规则引擎,而Drools是我们将寻找的另一种选择,只要有人有能力提高概念验证的 ...

  4. JBoss Drools –入门

    这篇文章是关于我如何掌握JBoss Drools的 . 其背后的原因是:SAP收购了我公司当前的规则引擎,而Drools是我们将寻找的另一种选择,只要有人掌握了概念验证的技能即可. 尽管似乎有大量的文 ...

  5. Drools 5.1.1(一)

    http://shikonglaike.iteye.com/blog/1236354 第一章欢迎 我总是和终端业务用户争论不休,理解规则和流程.最新规则和事件处理的区别.对此,在他们的意识中有这样的问 ...

  6. Drools与Spring集成 登录测试

    http://justsee.iteye.com/blog/1279082 Drools5.2.0.Final与Spring3集成测试 在drools5.2,有一个jar包:drools-spring ...

  7. Drools学习 入门实例

    http://blog.sina.com.cn/s/blog_67d6d5df0100jyqk.html 在Eclipse新建Drools工程就可以导入自带的例子进行学习.     接下来: 如此,就 ...

  8. drools -规则语法

    文章结构 1. 基础api 2. FACT对象 3. 规则 4. 函数 1. 基础api 在 Drools 当中,规则的编译与运行要通过Drools 提供的各种API 来实现,这些API 总体来讲可以 ...

  9. Drools规则引擎之常用语法

    一.基础api 在 Drools 当中,规则的编译与运行要通过Drools 提供的各种API 来实现,这些API 总体来讲可以分为三类:规则编译.规则收集和规则的执行.完成这些工作的API 主要有Kn ...

最新文章

  1. php获取WdatePicker值,WdatePicker日历控件使用方法
  2. UBUNTU安装SSH和xrdp
  3. atlsoap.h”: No such file or directory
  4. [转]SAP ABAP中使用Read_Text函数读取项目文本的方法
  5. java面试题二十一 异常
  6. 安装cockpit通过nginx代理访问
  7. 未封装的扩展程序是什么意思_“冰壶见底未为清,少年如玉有诗名”这句诗是什么意思?...
  8. 实用Python之字符串长度计算
  9. 【GIS开发者】(GISDeveloper) 11-14期 提供下载
  10. FreeTextBox使用
  11. SpringBoot入门项目——holleWorld
  12. netty框架中 bossGroup与workGroup是一个还是两个Reactor
  13. 广发样样行提额技巧分享
  14. 第六感38只19.9/吹风机29.9/长虹电暖器69/按摩护腰垫39/情侣卫衣54.9
  15. 机电信息杂志机电信息杂志社机电信息编辑部2022年第13期目录
  16. 【1024面试必备】厂长爆肝万字之多线程高并发JUC编程⭐建议收藏
  17. 【雷达与对抗】【2006.09】多普勒模式匹配对雷达探测性能的改进
  18. 我心中的计算机作文500,心中的作文500字4篇
  19. ARM架构与编程--基于STM32F103 (1)LED原理图
  20. ReadBook_Thinking_Method

热门文章

  1. window7 蓝屏的脸不好看,开启AHCI拒绝蓝屏
  2. 2020-06-03 Javase 常用api
  3. Zotero使用TIPS
  4. 《刨根问底系列》01:操作系统凭什么可以调度程序?
  5. 注册交管12123服务器异常,交管12123提示服务异常怎么解决
  6. 解决IDEA gradle build失败方法
  7. ROS机器人项目开发11例-ROS Robotics Projects(10)机器人Web工具集
  8. 数据库系统概论(第四版)习题解答
  9. 【iOS开发】-UIPickerView
  10. 三元运算符的基本用法