3.2.1 什么是KIE

KIE(Knowledge Is Everything),知识就是一切的简称。JBoss一系列项目的总称,在《Drools使用概述》章节已经介绍了KIE包含的大部分项目。它们之间有一定的关联,通用一些API。比如涉及到构建(building)、部署(deploying)和加载(loading)等方面都会以KIE作为前缀来表示这些是通用的API。

下图为KIE所包含的子项目结构图:

3.2.2 KIE生命周期

无论是Drools还是JBPM,生命周期都包含以下部分:

  • 编写:编写规则文件,比如:DRL,BPMN2、决策表、实体类等。
  • 构建:构建一个可以发布部署的组件,对于KIE来说是JAR文件。
  • 测试:部署之前对规则进行测试。
  • 部署:利用Maven仓库将jar部署到应用程序。
  • 使用:程序加载jar文件,通过KieContainer对其进行解析创建KieSession。
  • 执行:通过KieSession对象的API与Drools引擎进行交互,执行规则。
  • 交互:用户通过命令行或者UI与引擎进行交互。
  • 管理:管理KieSession或者KieContainer对象。

3.2.3 FACT对象

Fact对象是指在使用Drools 规则时,将一个普通的JavaBean对象插入到规则引擎的 WorkingMemory当中的对象。规则可以对Fact对象进行任意的读写操作。Fact对象不是对原来的JavaBean对象进行Clone,而是使用传入的JavaBean对象的引用。规则在进行计算时需要的应用系统数据设置在Fact对象当中,这样规则就可以通过对Fact对象数据的读写实现对应用数据的读写操作。

Fact对象通常是一个具有getter和setter方法的POJO对象,通过getter和setter方法可以方便的实现对Fact对象的读写操作,所以我们可以简单的把 Fact 对象理解为规则与应用系统数据交互的桥梁或通道。

当Fact对象插入到WorkingMemory当中后,会与当前WorkingMemory当中所有的规则进行匹配,同时返回一个FactHandler对象。FactHandler对象是插入到WorkingMemory当中Fact对象的引用句柄,通过FactHandler对象可以实现对Fact对象的删除及修改等操作。

前面的实例中通过调用insert方法将Product对象插入到WorkingMemory当中,Product对象插入到规则中之后就是说为的FACT对象。如果需要插入多个FACT对象,多次调用insert方法,并传入对应FACT对象即可。

后语

你的支持是我努力的最大动力!此系列课程正在持续更新中,相关讨论QQ(593177274)已经建立,欢迎大家加入讨论。如有疑问可以留言也可以发送本人邮箱secbro2@gmail.com。

《Drools7.0.0.Final规则引擎教程》第3章 3.2 KIE概念&FACT对象的更多相关文章

  1. 《Drools7.0.0.Final规则引擎教程》Springboot+规则重新加载

    在<Drools7.0.0.Final规则引擎教程>之Springboot集成中介绍了怎样将Drools与Springboot进行集成,本篇博客介绍一下集成之后,如何实现从数据库读取规则并 ...

  2. 《Drools7.0.0.Final规则引擎教程》第3章 3.1 Hello World 实例

    3.1 Hello World 实例 在上一章中介绍了Drools5x版本中规则引擎使用的实例,很明显在Drools7中KnowledgeBase类已经标注为"@Deprecated&quo ...

  3. 《Drools7.0.0.Final规则引擎教程》第2章 追溯Drools5的使用

    2.1 Drools5简述 上面已经提到Drools是通过规则编译.规则收集和规则的执行来实现具体功能的.Drools5提供了以下主要实现API: KnowledgeBuilder Knowledge ...

  4. 【java规则引擎】《Drools7.0.0.Final规则引擎教程》第4章 4.1 规则文件

    转载至:https://blog.csdn.net/wo541075754/article/details/75150267 一个标准的规则文件的格式为已“.drl”结尾的文本文件,因此可以通过记事本 ...

  5. 《Drools7.0.0.Final规则引擎教程》第4章 4.1 规则文件

    一个标准的规则文件的格式为已".drl"结尾的文本文件,因此可以通过记事本工具进行编辑.规则放置于规则文件当中,一个规则文件可以放置多条规则.在规则文件当中也可以存放用户自定义的函 ...

  6. 【java规则引擎】《Drools7.0.0.Final规则引擎教程》第3章 3.2 KIE API解析

    转载至:https://blog.csdn.net/wo541075754/article/details/75004575 3.2.4 KieServices 该接口提供了很多方法,可以通过这些方法 ...

  7. 【java规则引擎】《Drools7.0.0.Final规则引擎教程》第3章 3.2 KIE概念&FACT对象

    转载:https://blog.csdn.net/wo541075754/article/details/74943236 3.2.1 什么是KIE KIE(Knowledge Is Everythi ...

  8. 《Drools7.0.0.Final规则引擎教程》第3章 3.2 KIE API解析

    3.2.4 KieServices 该接口提供了很多方法,可以通过这些方法访问KIE关于构建和运行的相关对象,比如说可以获取KieContainer,利用KieContainer来访问KBase和KS ...

  9. 《Drools7.0.0.Final规则引擎教程》第4章 注释&错误信息

    注释 像Java开发语言一样,Drools文件中也可以添加注释.注释部分Drools引擎是会将其忽略调的.单行注释使用"//",示例如下: rule "Testing C ...

随机推荐

  1. 模板继承(extend)——(Day68)

    模板继承 (extend) Django模版引擎中最强大也是最复杂的部分就是模版继承了.模版继承可以让您创建一个基本的“骨架”模版,它包含您站点中的全部元素,并且可以定义能够被子模版覆盖的 block ...

  2. 在python中如何使用多进制数字

    我们在python中,除十进制外还可以使用二进制.八进制和十六进制 1.二进制数字由0和1组成,我们使用0b或0B前缀表示二进制数 2.使用bin()函数将一个数字转换为它的二进制形式 print(b ...

  3. HZNUOJ 2508:双峰插云

    我们注意到总的颜色种类只有200,故我们可以先处理出所有云朵中每一种颜色有多少朵云朵拥有,此处我们约定用$cnt[] 表示$ 然后暴力枚举将哪朵云分给老薛,记录三个临时变量$Max_{kk}, Max ...

  4. linux(6/17)--文件打包上传和下载

    tar命令 命令功能 用来压缩和解压文件 命令格式 tar[必要参数][选择参数][文件] tar打包工具 -f ##指定生成包的名字,建议 -f单独写成一个参数 --delete filename ...

  5. UILable 的 属性设置

    //UILable的大小自适应实例 UILabel *myLable = [[UILabel alloc] initWithFrame:CGRectMake(, , , )];//设定位置与大小 [m ...

  6. ASP.MVC 项目中使用 UEditor 文本编辑器

    1.下载UEditor 源文件,并导入项目中 2.添加项目中需要使用的CSS和JS //Ueditor 文本编辑器必备的StyleBundle和ScriptBundle StyleBundle ued ...

  7. springboot学习(三)——使用HttpMessageConverter进行http序列化和反序列化

    以下内容,如有问题,烦请指出,谢谢! 对象的序列化/反序列化大家应该都比较熟悉:序列化就是将object转化为可以传输的二进制,反序列化就是将二进制转化为程序内部的对象.序列化/反序列化主要体现在程序 ...

  8. Spring_事务准备

  9. POJ 3977 - subset - 折半枚举

    2017-08-01 21:45:19 writer:pprp 题目: • POJ 3977• 给定n个数,求一个子集(非空)• 使得子集内元素和的绝对值最小• n ≤ 35 AC代码如下:(难点:枚 ...

  10. Ubuntu 16 安装redis客户端

    https://snapcraft.io/redis-desktop-manager sudo snap install redis-desktop-manager 很好用! 支持模糊过滤,两边加星号 ...