规则引擎的设计与实现 | 青训营笔记

62 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 5 天

本节课重点内容

规则引擎的设计和实现

  • 规则引擎是什么
  • 编译原理的基本概念有哪些
  • 如何设计一个规则引擎
  • 实现一个规则引擎

详细知识点介绍

规则引擎是什么?

规则引擎是一种嵌入在应用服务中的组件,可以将灵活多变的业务决策从服务代码中分离出来。通过使用预定义的语义模块来编写业务逻辑规则。在执行时接受数据输入、解释业务规则,并做出决策。

规则引擎能够用来干什么?

  • 解决开发人员重复编码的问题
  • 业务与服务解耦,提升服务的可维护性
  • 缩短开发路径,提高效率

规则引擎的组成部分有哪些?

  • 数据输入

    规则引擎能够支持皆有预定义的语义编写的规则作为策略集

  • 规则理解

    规则引擎能按照预定义的语法、优先级、运算符等正确理解业务规则所表达的语义

  • 规则执行

    规则引擎能根据执行时传入的参数对策略集中的规则进行解释和执行,并且进行检查,保证结果的正确性

规则引擎的应用一般有哪些?

  • 风险对抗
  • 活动策略的运营
  • 数据分析和清洗

编译原理的基础

什么是编译

编译的过程就是把语言的源程序在不改变语义的情况下,转换为另一种语言的程序

  • 如果编译后要在操作系统上运行,那么转换为汇编/机器码
  • 如果编译后在虚拟机上执行(如java)那目标可以是该语言定义的中间件语言

Go语言属于可以转换为二进制机器码的语言

语法分析是什么

有限状态机: 该状态机在任何一个状态,基于输入的字符,都能做一个确定的1状态转换。它的状态数量是有限的

抽象语法树

语法分析是在词法分析的基础上识别出程序的语法结构,这是一个树状结构。所以称为“抽象语法树”,树的每个节点是一个语法单元,构成的规则叫做语法。