规则引擎 | 青训营笔记

132 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 12 天,记录一下对规则引擎相关知识的学习。

什么是规则引擎

规则引擎由推理引擎发展而来,是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策。接受数据输入,解释业务规则,并根据规则做出业务决策。

规则引擎的作用

所谓规则,即是一些策略代码,在程序中往往是一些充斥 if else 的分支结构。这些策略与商业上的业务需求强相关(如风控识别、活动运营等),而且会经常发生变化。

如果采用硬编码的形式来编写这些规则,会存在以下缺点:

  1. 可维护性差:大量的复杂规则会降低代码的可维护性;
  2. 规则迭代成本高:对规则的少量改动就要走全流程(开发、测试、部署);
  3. 规则开发和维护门槛高:规则对业务分析人员不可见。业务分析人员有规则变更需求后无法自助修改,需要由开发人员介入。

规则引擎的作用就是将策略规则和执行逻辑解耦。策略规则不再是硬编码,而是真正可配置的规则,业务分析人员也可以实现灵活高效的业务策略发布。

简单规则引擎的设计与实现
  1. 数据输入:支持使用预定义的语义(dsl)编写的规则作为策略集,支持接收数据作为执行过程的参数;
  2. 规则理解:能够按照预先定义的词法、语法、优先级、运算符等理解业务规则所表达的语义;
  3. 规则执行:根据执行时输入的参数对策略集中的规则进行正确的解释和执行。同时对规则执行过程中的数据类型进行检查,确保执行结果正确。
参考

juejin.cn/post/719336…

tech.meituan.com/2017/06/09/…