V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
showB1
V2EX  ›  程序员

规则引擎推荐

  •  
  •   showB1 · 2 天前 · 2733 次点击

    诸位好呀,我们现在有个模块需要大量的条件判断,看着写的大坨大坨的 if 。。。很头疼,想在 team 中引入。可我这块经验只在以前的风控中用过 grule 。 想调研一下,grule 、goval 、gengine 或者还有其他的吗?谁能点评一下,各有什么优劣。 团队技术栈以 go 为主,python 次之。大多数有几年 c 艹、java 经验。

    22 条回复    2024-07-04 19:09:33 +08:00
    skiworld11
        3
    skiworld11  
       2 天前
    s-exp
    ufan0
        4
    ufan0  
       2 天前
    首先排除 drools
    GeekGao
        5
    GeekGao  
       2 天前
    轻量级的么,可以考虑一下 google cel
    iyear
        6
    iyear  
       2 天前 via Android
    expr-lang 相比各种语言虚拟机更轻,做规则引擎够用了。如果更复杂的话就考虑引入 goja ,gopher-lua 的语言实现吧
    covering
        7
    covering  
       2 天前 via Android
    把条件表格整理成二维数组,写个循环按顺序匹配。要引入新的框架,大概率 review 不好过
    xinshoushanglu
        8
    xinshoushanglu  
       2 天前
    drools 不好用,而且太老旧了。我们现在用 liteflow 嵌脚本来实现规则定制
    Desdemor
        9
    Desdemor  
       2 天前
    https://github.com/expr-lang/expr 补个楼上的链接
    kaiccc
        10
    kaiccc  
       2 天前
    liteflow 还可以,满足我们的需求
    wingoo
        11
    wingoo  
       2 天前
    记得好像 b 站有一个, 不知道有没有用过的
    好像就是 gengine, 看了下 最后更新日期 2021, 可以排掉了
    airycanon
        12
    airycanon  
       2 天前
    airycanon
        13
    airycanon  
       2 天前
    补充 #12 优点是可以支持复杂的语法,相当于一个简单的脚本语言了。
    mightybruce
        14
    mightybruce  
       2 天前
    我提供一个能实现各种功能,直接解释并运行 go 小段代码的 go 库,达到 go 嵌套 go 的效果
    https://github.com/traefik/yaegi

    想做什么都能达到哦, 毕竟这个是一个 go 解释库
    mulychou
        15
    mulychou  
       2 天前
    借楼问一下,java 有推荐的吗
    qfmy1991
        16
    qfmy1991  
       2 天前 via Android
    QLExpress 阿里的
    Ico945
        17
    Ico945  
       1 天前 via iPhone
    感觉自己的逻辑翻译成规则引擎 dsl 这一步也挺费劲的
    ryalu
        19
    ryalu  
       1 天前
    @mightybruce #14 哈哈,无限套娃是吗
    SmiteChow
        20
    SmiteChow  
       1 天前
    想清楚规则谁来写?能不能停机更新?如果是非开发人员写或者需要热更新,才需要规则引擎,否则建议使用程序配置文件。
    singer
        21
    singer  
       1 天前
    golang 中的 ast 还算可用,自行定制开发其实并不会有太大的障碍。我开发 golang 规则引擎 N 年了,内部使用非常完美,但无法开源。目前没看到市面上有用着非常友好的规则引擎库,如果非得推荐一款,那就 https://github.com/bytedance/arishem 。优势在于内置的函数够多不用对底层二开。

    gengine 的并发模型,arishem 的内置函数定义,再加上自研的规则权重可能会让规则引擎更加强大。
    ychost
        22
    ychost  
       1 天前
    @mulychou java 用 groovy 最简单功能最强,其它的用 QLExpress 之类的也行
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2395 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 01:59 · PVG 09:59 · LAX 18:59 · JFK 21:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.