【Engineering】规则引擎(Rule Engine)

Posted by 西维蜀黍 on 2024-06-27, Last Modified on 2024-07-23

规则引擎(Rule Engine)

规则引擎解耦了业务规则和系统代码

Execution Model

顺序模式(sort model)

如上图,规则的顺序模式(sort model)

规则优先级高越高的越先执行,规则优先级低的越后执行。这也是 drools 支持的模式。此模式的缺点很明显:随着规则链越来越长,执行规则返回的速度也越来越慢。

并发执行模式(Concurrent Model)

在此执行模式下,多个规则执行时,不考虑规则之间的优先级,规则与规则之间并发执行。规则执行的返回的速度等于所有规则中的执行时间最长的那个规则的速度(逆木桶原理)。执行性能优异,但无法满足规则优先级。

混合执行模式(mix model)

规则引擎选择一个优先级最高规则的最先执行,剩下的规则并发执行。规则执行返回耗时= 最高优先级的那个规则执行时间 + 并发执行中执行时间最长的那个规则耗时;此模式兼顾优先级和性能,适合于有豁免规则(或前置规则)的场景。

逆混合模式(inverse mix model)

优先级最高的 n-1 个规则并发执行,执行完毕之后,再执行剩下的一个优先级最低的规则。这种模式适用于有很多前导判断规则的场景。其特性与混合模式类似,兼顾性能和优先级。

桶模式

名字源于《算法导论》中的桶排序。规则引擎基于规则优先级进行分桶,优先级相同的规则置于同一个桶中,桶内的规则并发执行,桶间的规则基于规则优先级顺序执行。

Example

  • Drools
  • gopher-lua
  • gengine

Reference