规则引擎介绍

规则引擎(drools、jvs-rules) 是把我们日常项目中经常发生变化的业务功能,抽象成可修改的配置,将规则逻辑配置和基础功能之间解耦分离,能够大大的简化项目的开发难度与编码变更工作量,使系统具备柔性可调整。
规则引擎使得业务规则的变化不再需要修改和重新编译代码。当业务需求发生变化时,用户只需在规则引擎中更新相应的规则,而无需对整个系统进行重构。这不仅大大缩短了开发周期,降低了交付成本,同时也提高了软件的质量和稳定性。规则引擎能够自动判断业务数据的状态,并根据预设的逻辑进行相应的操作。这不仅提高了业务流程的自动化程度,减少了人工干预的需求,同时也降低了出错的可能性,提高了业务处理的效率和准确性。
使用规则引擎的好处是相当明显的,那么市面上的规则引擎有两类:

1、声明式规则引擎

声明式规则引擎是基于声明式编程的概念,将业务规则与业务逻辑分离,目标人群是开发者,它使得开发者可以更加专注于业务逻辑的实现,而无需过多关心规则的具体执行。在声明式规则引擎中,规则通常使用一种专门的规则语言来描述,这种语言允许开发者以简洁、直观的方式定义复杂的业务规则。
声明式规则引擎的典型产品包括Drools和JBoss BRMS(Business Rules Management System),它提供了API操作入口,支持多种规则语言和集成方式,它提供了规则定义、测试、部署和监控的全方位支持,如下图所示
图片

在使用声明式规则引擎时,规则定义与管理的便捷性是其重要的优势之一。开发者可以通过简单的规则语言或图形化界面来定义规则,无需编写复杂的代码。同时,规则引擎通常提供了丰富的API,使得规则的管理和维护变得不再麻烦。此外,规则变更的即时生效也是声明式规则引擎的一大特点。当规则发生变化时,系统可以立即应用新的规则,无需重启或重新部署应用程序。
图片

2、流程式规则引擎

与声明式规则引擎不同,流程式规则引擎更注重规则执行顺序的可视化和流程管理。基于流程图的规则定义+业务判断指标界面加工的方式进行配置,使得用户可以直观地描述业务流程中的各个环节和规则之间的关系。典型产品如 jvs-rules,对用户操作非常友好
图片

它提供了强大的流程设计和管理能力,支持复杂流程的处理和异常处理。
图片

它提供了多数据加工处理的方式,函数加工、sql取数、界面可视化配置规则条件、界面化配置接入大量数据,自动生成调用API等等
图片

三、最大化规则引擎价值方法

  1. 明确业务需求与规则复杂性,需要对业务场景进行深入理解,确认使用规则引擎的用户(开发人员\业务人员),确定规则引擎的选型;
  2. 规则引擎的定制与优化,根据具体场景的理解,考虑好使用的数据来源,对数据加工的方式,可以通过多种方式对数据加工成业务判断指标;
    图片
  3. 规则的管理与配置的工作归属,是业务部门还是技术部门,这个问题往往是把规则用好的关键;
  4. 规则引擎的集成与扩展,也就是规则模型如何快速的和业务系统集成起来(自动生成集成调用的API);
    图片

在线demo:http://rules.bctools.cn
gitee地址:https://gitee.com/software-minister/jvs-rules


软件部长
43 声望6 粉丝

软件研发行业老司机,提供些踩坑的经验而已