规则引擎 - Drools的使用

关于规则引擎

https://www.jianshu.com/p/d136a76e1c0d

场景

项目遇到下步执行动作决策的业务,场景不同于常见的规则性业务,但也可以应用于规则引擎之中,剥离掉代码中大量的逻辑判断、同时加快决策结果的输出。可见规则的定义是比较泛的,技术组件的应用也不是一成不变的。

Drools的优点

  • 简化系统架构,优化应用
  • 提高系统的可维护性和维护成本
  • 方便系统的整合
  • 减少编写“硬代码”业务规则的成本和风险

Drools的使用

Drools有专门的规则语法drl文件,Drools会记载drl文件中编写好的规则,供项目调用;因为一般来说规则不是已成不变的,所以规则支持以符合drl语法川来动态加载生成。

基础使用:https://www.jianshu.com/p/16266526a114?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

使用api中的一些概念:

  • KieServices 
    该接口提供了很多方法,可以通过这些方法访问KIE关于构建和运行的相关对象,比如说可以获取KieContainer,利用KieContainer来访问KBase和KSession等信息;可以获取KieRepository对象,利用KieRepository来管理KieModule等。 
    KieServices就是一个中心,通过它来获取的各种对象来完成规则构建、管理和执行等操作。

  • KieContainer
    KieContainer可以理解为是一个KieBase的容器。

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

  • KieSession
    KieSession就是一个跟Drools引擎打交道的会话,其基于KieBase创建,它会包含运行时数据,包含“事实 Fact”,并对运行时数据事实进行规则运算。我们通过KieContainer创建KieSession是一种较为方便的做法,其实他本质上是从KieBase中创建出来

动态加载

由上面概念可知,规则都是存在KieBase中的,所以动态加载其实就是重新构造/更新KieBase。

此动态加载、但会重新加载整个相关KieBase:https://my.oschina.net/loujinhe/blog/3048254?tdsourcetag=s_pctim_aiomsg

KieBase是支持删除、增加的,所以可以实现重新加载新规则、而不是整个KieBase中的规则:https://blog.csdn.net/qq_18649209/article/details/79582722 (核心逻辑)

Drools东西还是比较多的,初次使用,网上遇到的场景相关的资料也比较少,实现起来成本还是较高的。

 

你可能感兴趣的:(规则引擎)