02-02 Drools 规则引擎 核心API简介

本文问内容个来摘自JPBM官方文档:

3.1、什么是KIE?

    KIEKnowledge Is Everything),知识就是一切的简称。 

3.2、 FACT对象:

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

3.3、KieServices

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

// 通过单例创建 KieServices KieServices kieServices = KieServices.Factory.get(); // 获取 KieContainer KieContainer kieContainer = kieServices.getKieClasspathContainer(); // 获取 KieRepository KieRepository kieRepository = kieServices.getRepository();

 

 
 

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

 

3.4、KieContainer

  
 
 

// 通过单例创建 KieServices KieServices kieServices = KieServices.Factory.get(); // 获取 KieContainer KieContainer kieContainer = kieServices.getKieClasspathContainer(); // 获取 KieBase KieBase kieBase = kieContainer.getKieBase(); // 创建 KieSession KieSession kieSession = kieContainer.newKieSession("session-name");

 

 
 

KieContainer 可以理解为一个 KieBase 的容器。 提供了获取 KieBase 的方法和创建KieSession 的方法。 其中获取 KieSession 的方法内部依旧通过 KieBase 来创建 KieSession。

3.5、KieBase

  
 
 

// 获取 KieBase

KieBase kieBase = kieContainer.getKieBase(); KieSession kieSession = kieBase.newKieSession(); StatelessKieSession statelessKieSession = kieBase.newStatelessKieSession();

 

 
 

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

3.6、KieSession

KieSession 就是一个跟 Drools 引擎交互的会话,其基于 KieBase 创建,它会包含运行

时数据,包含“事实 Fact”,并对运行时数据实时进行规则运算。 通过 KieContainer 创建

KieSession 是一种较为方便的做法,其本质上是从 KieBase 中创建出来的。 KieSession 就是

应用程序跟规则引擎进行交互的会话通道。创建 KieBase 是一个成本非常高的事情, KieBase 会建立知识(规则、流程)仓库,而创建 KieSession 则是一个成本非常低的事情,所以 KieBase 会建立缓存,而 KieSession 则不必。
 
 

3.7、KieRepository

  
 
 

// 通过单例创建 KieServices KieServices kieServices = KieServices.Factory.get(); // 获取 KieRepository KieRepository kieRepository = kieServices.getRepository();

 

 
 

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

3.8、KieProject

KieContainer 通过 KieProject 来初始化、构造 KieModule,并将 KieModule 存放到

KieRepository 中,然后 KieContainer 可以通过 KieProject 来查找 KieModule 定义的信息,并

根据这些信息构造 KieBase 和 KieSession
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值