惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

MongoDB | Blog
MongoDB | Blog
B
Blog
Y
Y Combinator Blog
大猫的无限游戏
大猫的无限游戏
aimingoo的专栏
aimingoo的专栏
B
Blog RSS Feed
博客园 - Franky
V
V2EX
IT之家
IT之家
WordPress大学
WordPress大学
博客园 - 三生石上(FineUI控件)
J
Java Code Geeks
F
Fortinet All Blogs
I
InfoQ
云风的 BLOG
云风的 BLOG
腾讯CDC
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
月光博客
月光博客
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
N
Netflix TechBlog - Medium
宝玉的分享
宝玉的分享
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
P
Proofpoint News Feed
Microsoft Security Blog
Microsoft Security Blog

暗无天日

读:AI Agent 安全日志——从可见性与隐私的两难说起 - 暗无天日 AI写作的语言指纹——如何让文字不那么像机器 - 暗无天日 读:50 条 Claude Code 技巧——一个工程经理的六个月使用心得 读:AI 辅助开发为什么让 E2E 测试更有价值 - 暗无天日 读:在Emacs中使用Claude Code(Spacemacs适配版) - 暗无天日 Claude Code 背后的工程哲学——读 Agent Harness Engineering 读:Agent Harness Engineering——AI 智能体不只是模型,还有套件 - 暗无天日 browser-harness:让 AI 直接接管你的浏览器 - 暗无天日 读:Security-First CI/CD —— DevSecOps 自动化实践指南 TIL: 数字小键盘的小数点陷阱与行内算术求值 - 暗无天日 读:Immutability 不是万能药,它是一种权衡 - 暗无天日 Conducty:给 Claude Code 加上项目记忆和并行执行能力 - 暗无天日 读 — GitHub Trending 里的 Claude Code 技能包 读 — Prompt Caching 省钱指南 TIL: Emacs 中那些跟鼠标配合的冷门快捷键 - 暗无天日 读:Anvil——把 Emacs 变成 AI 的工具服务器 读:Emacs 代码折叠终极指南 - 暗无天日 读:Clojure 搭车客指南 - 暗无天日 git推送失败后恢复仓库损坏的完整记录 - 暗无天日 多智能体系统的两个有效模式——以及对 Claude Code 用户的启示 - 暗无天日 用 Org Babel 写 Literate 博文:扩展执行 + 定制导出 proced:Emacs 内置的进程查看器 - 暗无天日 从 proced 定制中学到的 Elisp 模式 读:让 Emacs proced 在 macOS 上显示 CPU 和内存 异步编程的函数着色税 - 暗无天日 链式调用的代价:JavaScript 和 Clojure 的共同教训 - 暗无天日 hyperfine:命令行基准测试工具 - 暗无天日 管道中的变量去哪了?——子 shell 作用域陷阱 - 暗无天日 开源包装器的信任陷阱:四个危险信号 - 暗无天日 程序员愿意为 AI 写文档,却不愿为同事写 - 暗无天日
读:规则引擎——从 if-else 到业务规则管理 - 暗无天日
2026-05-01 · via 暗无天日

规则引擎是什么:三句话

第一句:规则引擎把 IF-THEN 从代码里搬到代码外。

第二句:还是 IF-THEN,只是不用在 Java/Python/Clojure 里写 if-else 了,改成在配置文件或管理界面里写 IF customer.tier = 'GOLD' AND order.total > 100 THEN apply 15% discount

第三句:非开发者也能改这些规则。运营想改折扣、合规想调整审批门槛、风控想加一个新检测规则,他们自己改,不用等你排期。

这三句话够用了。Drools 的 Rete 算法、前向链后向链、推理引擎怎么匹配规则,这些等真正需要的时候再了解也不迟。

规则引擎的决策框架

什么时候该上规则引擎,什么时候不该,原文给了一些判断标准,整理成四问:

你的规则变化有多频繁 :规则每周都在变(促销活动、合规政策、风控策略)→ 值得考虑。规则一年改一两次 → 不需要,if-else 更直接。

非技术人员有没有能力改规则 :运营/合规的人能写 IF score > threshold 这种级别的条件 → 上了规则引擎确实能减少你的负担。他们连 CSV 都填不利索 → 上了规则引擎最后也是你改,白多一层复杂度。

性能要求多高 :规则引擎运行时做模式匹配,比硬编码的 if-else 慢一个数量级。高并发低延迟的场景(如实时支付风控)需要谨慎评估。批处理、后台审核这类场景无所谓。

规则的规模有多大 :10 条以下的规则 → if-else 是正确答案。200 条以上 → 规则引擎的收益开始显现,硬编码的复杂性已经失控。10 到 200 条之间是灰色地带,具体情况具体分析。

原文还列了一张对比表,把传统方式(硬编码逻辑)和规则引擎方式对比得更全面:

维度 硬编码 规则引擎
变更速度 改代码+测试+部署,论周算 业务人员在 UI 上改,论小时算
业务方参与 开发者当传话筒 领域专家直接管理规则
复杂度上限 10--20 个条件就难维护了 1000+ 条件也能管
审计追踪 逻辑散在代码里,难查决策历史 规则有版本号,谁改了什么一目了然
测试影响 改一次全面回归 规则可以单独测
出错风险 改复杂条件容易引入 bug 规则独立,改一个不影响其他
团队效率 开发者整天改业务逻辑 开发者专注平台能力

框架生态速览

规则引擎的生态很丰富,但说实话大部分场景不需要纠结选哪个,了解几个就够了:

  • Drools :Java 生态的老大哥,功能最全但也最重。大型企业级场景首选
  • Easy Rules :轻量级 Java 规则引擎,如果你的需求不复杂可以试试这个
  • JSON Rules Engine :规则用 JSON 写,和语言无关。适合想把规则存数据库或通过 API 管理的场景
  • DMN(Decision Model and Notation) :OMG 标准的决策模型表示法,用 Camunda 等流程引擎可以执行。适合需要跨组织和跨工具协作决策逻辑的场景

选框架的核心不是功能对比,而是:你的规则将来由谁维护、用什么工具改、想把这层逻辑放在代码里还是外部系统里。

总结

规则引擎不是银弹。它做的是一笔交易:用一层"规则管理层"替换代码里的散装 if-else。这笔交易值不值,取决于规则的变动频率、维护者的动手能力、以及对性能的容忍度。

对于大多数项目来说,最优解可能不是"全上规则引擎"也不是"全用 if-else",而是在业务逻辑最密集、变化最快的部分划出边界,用规则引擎管理起来。其他地方继续用常规代码。