规则引擎推荐 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
请不要在回答技术问题时复制粘贴 AI 生成的内容
showB1

规则引擎推荐

  •  
  •   showB1 Jul 3, 2024 5633 views
    This topic created in 669days ago, the information mentioned may be changed or developed.

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

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

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

    gengine 的并发模型,arishem 的内置函数定义,再加上自研的规则权重可能会让规则引擎更加强大。
    ychost
        22
    ychost  
       Jul 4, 2024
    @mulychou java 用 groovy 最简单功能最强,其它的用 QLExpress 之类的也行
    kennir
        23
    kennir  
       Jul 7, 2024
    grule 用了很久了
    showB1
        24
    showB1  
    OP
       Jul 29, 2024
    @singer 听上去不错
    showB1
        25
    showB1  
    OP
       Jul 29, 2024
    @kaiccc 这个只适用于 java 生态?
    showB1
        26
    showB1  
    OP
       Sep 24, 2024
    @Ico945 开始动手了 ,感觉你说的对
    Ico945
        27
    Ico945  
       Sep 24, 2024
    @showB1 我们之前用过 drools 和自研的,drools 的 dsl 是通过模板语言拼接的,可读性巨差而且后期维护成本越来越高;自研就支持自定义格式的了,我们直接支持了自定义 json 转起来就更方便了。
    ChristopherY
        28
    ChristopherY  
       Feb 26, 2025
    OP 现在实现这一套规则引擎了吗?
    showB1
        29
    showB1  
    OP
       May 19, 2025
    @ChristopherY 你好,好久没登录,我们用了 arishem
    About     Help     Advertise     Blog     API     FAQ     Solana     2450 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 70ms UTC 03:51 PVG 11:51 LAX 20:51 JFK 23:51
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86