【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 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对象即可。

原文地址:https://www.cnblogs.com/shangxiaofei/p/9438076.html