使用groovy元编程实现规则引擎
7月 6日 2024
利用groovy的元编程能力,实现以下逻辑。将function和匹配规则存储在数据库中,启动时读取相关数据,替换掉functions
字段,实现简单的模式匹配式的规则引擎。
例如
增加方法
1
2
3
4
5addFunc "familyStructure" {
params ->
def ageDuration = params[0]
return familyInsureds.count {i -> i.age >= ageDuration[0] && i.age <= ageDuration[1]}
}增加规则
1
addAction {familyInsureds.count({i -> i.relation == 3}) > 3} {multiply '1.144'}
无论函数规则都可以存储在数据库中,且该规则类可以通过缓存动态刷新替换。
问题:
- 如何利用rete算法解决模式匹配的低效。
- 如何加速groovy代码的执行,解决预热问题。