规则引擎学习

作者: 徐薇薇 | 来源:发表于2021-11-19 18:00 被阅读0次

背景:

使软件可维护,适应业务变化不要经常改代码。

在没有规则引擎的时代,有些逻辑比较复杂的业务,只有不断的增添if-else去满足我们这个复杂的业务场景,对于开发者来说还好,对于后面接手的同学一看到处都是if-else。

类型:

一般来说分为下面三类:

  低配版:没有配置界面,靠业务人员编写引擎规则DSL,一般存储在数据库或者文件中,这种没有彻底解放业务人员和开发人员的耦合,但是加快了业务代码的上线速度,以及很容易就能进行规则变更。

  进阶版:这个一般是某种特定的系统,我们针对这种系统设置一些有针对性的页面,比如下面是某风控系统的截图,风控系统的规则引擎是相对来说比较简单的,只需要判断某些参数是否符合某些条件即可,然后返回固定的值即可。

  完全版:在进阶版中规则引擎只是其中的一个部件,一般这种都很难复用于其他场景。但是一个完全版的规则引擎,追求的超高的通用性,下面是从一个商业的规则引擎中截图:

可以看见提供了多种规则引擎的表达:比如决策集,决策表,决策树等等,适用于我们很多需要使用规则引擎的地方,下面暂时了一下决策树的配置,这个就和我们上面风控的配置有点类似,只不过通用性更强。

讲到这里基本上规则引擎是什么大家基本上心里面有个大概了,下面我们来讲下有哪些开源的规则引擎。

有哪些规则引擎

在社区中开源的规则引擎是比较多的,说明不同的业务团队,公司都对这个是比较看中的,但是整体上大的分类分为下面几类:

  通过界面配置的成熟规则引擎:这种规则引擎相对来说就比较重,但是因为功能全,也有部分业务会选择这个,一般出名的有:drools,urule。

  基于jvm脚本语言:这种其实不是一个成熟的规则引擎,他应该算是规则引擎中的核心技术,有很多公司比如美团,他会觉得drools这种太重了,然后会基于一些jvm的脚本语言,去自己开发一个轻量级的规则引擎,这里比较出名的有,groovy,aviator,qlexpress。

  基于java代码的规则引擎:上面是基于jvm脚本语言去做的,会有一些语法学习的成本,所以就有基于java代码去做的规则引擎,比如通过一些注解实现抽象的方式去做到规则的扩展,比较出名的有: easyRules。

成熟的规则引擎

作为完全版的成熟的规则引擎,往往可以当作sass产品进行售卖,urule再开源部分的同时,也再卖着自己的高级功能,drools是一个纯开源的产品,如果想体验这种规则引擎可以直接去urule.bstek可以体验他的产品,不需要自行搭建。

作为完全版到底是怎么满足各种奇奇怪怪的规则场景呢?在这些规则引擎里面都会分为好几种规则设计器来满足你想要的规则场景:

  规则集:一组普通规则和循环规则构成的规则集合,是使用频率最高的一种业务规则实现方式。一般分为向导式:通过图形界面构成的;还有脚本式:通过自定义的DSL语言,类似我们下面会讲的jvm脚本规则引擎一样。

相关文章

  • 规则引擎学习

    背景: 使软件可维护,适应业务变化不要经常改代码。 在没有规则引擎的时代,有些逻辑比较复杂的业务,只有不断的增添i...

  • 谈一谈规则引擎在活动系统中的落地

    本文从 “为什么需要规则引擎” “规则引擎的定义” “规则引擎在营销活动系统中的落地” “规则引擎平台内部架构” ...

  • Drools规则引擎学习

    引言 规则引擎实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策。 规则引擎具体执行可以...

  • php写个简单的规则引擎demo

    1、规则引擎简介 规则引擎是一种推理引擎,它是根据已有的事实,从规则知识库中匹配规则,并处理存在冲突的规则,执行最...

  • Java常用的规则引擎

    概述 在本文中,我们将介绍Java中一些最受欢迎的规则引擎。 规则引擎简介 规则引擎由推理引擎发展而来,是一种嵌入...

  • 规则引擎drools学习笔记

    前言 最近在琢磨着怎么重新定义系统中的异常规则。这部分内容就是根据不同的参数、配置以及场景情况生成不同的异常。其特...

  • 规则引擎的优缺点

    为何要使用规则引擎? 讨论规则引擎时,下边这些问题经常被提及: 什么时候应当使用规则引擎? 相较与使用使用“if....

  • 自学Java项目之规则引擎

    项目:规则引擎专题 规则引擎,全称为业务规则管理系统,英文名BRMS(Business Rule Manageme...

  • 规则引擎

    场景 业务风控,主要是下单、支付、优惠券、红包、签到等行为的风险控制,对抗的风险行为包括黄牛刷单、恶意占用库存、机...

  • 规则引擎

    1.正向链、反向链 2.误差的分类 4.复合概率

网友评论

    本文标题:规则引擎学习

    本文链接:https://www.haomeiwen.com/subject/vmletrtx.html