万字详解 LiteFlow 2.16 完整指南:组件化规则编排引擎从入门落地企业级项目实战

文章目录

    • 一、为什么需要 LiteFlow?
      • 1.1 传统硬编码流程的痛点
      • 1.2 LiteFlow 的解决方案
      • 1.3 官方核心特性一览
    • 二、核心概念与架构原理
      • 2.1 核心概念映射
      • 2.2 整体架构
      • 2.3 组件执行生命周期
    • 三、10分钟快速上手
      • 3.1 环境要求
      • 3.2 添加依赖
      • 3.3 第一个 Hello World
    • 四、组件体系详解
      • 4.1 普通组件(最常用)
      • 4.2 选择组件(SWITCH)
      • 4.3 条件组件(IF)
      • 4.4 循环次数组件(FOR)
      • 4.5 声明式组件(不继承父类也能变组件)
    • 五、EL 表达式规则编排语法
      • 5.1 基础语法速查
      • 5.2 串行与并行
      • 5.3 条件与路由
      • 5.4 循环控制
      • 5.5 真实场景:电商订单处理完整编排
    • 六、规则文件格式(XML / JSON / YAML)
      • 6.1 XML 格式
      • 6.2 JSON 格式(推荐)
      • 6.3 YAML 格式(最简洁)
      • 6.4 三种格式对比
    • 七、Spring Boot 集成实战
      • 7.1 完整项目结构
      • 7.2 完整配置
      • 7.3 自定义上下文
      • 7.4 完整组件实现
      • 7.5 Controller 调用
      • 7.6 规则文件
    • 八、上下文与数据传递
      • 8.1 为什么要通过上下文传递数据?
      • 8.2 三种上下文使用模式
      • 8.3 数据传递方式总览
      • 8.4 私有数据传递示例
    • 九、脚本语言支持
      • 9.1 支持8种脚本语言
      • 9.2 脚本组件定义
      • 9.3 脚本中调用 Spring Bean (杀手级特性)
      • 9.4 脚本选型建议
    • 十、规则源配置
      • 10.1 规则源架构
      • 10.2 数据库规则源
      • 10.3 Nacos 规则源
      • 10.4 Zookeeper 规则源
      • 10.5 自定义规则源
    • 十一、热刷新机制
      • 11.1 什么是热刷新?
      • 11.2 工作原理
      • 11.3 各规则源刷新方式
      • 11.4 手动刷新 API
      • 11.5 热刷新安全性保证
    • 十二、AI Agent 编排(v2.16.0 新特性)
      • 12.1 概述
      • 12.2 前置要求
      • 12.3 快速开始
      • 12.4 支持的 LLM 平台
      • 12.5 Agent 高级特性
      • 12.6 智能客服系统完整编排
    • 十三、高级特性
      • 13.1 组件重试
      • 13.2 组件回滚
      • 13.3 性能监控
      • 13.4 组件标签(Tag)
      • 13.5 布尔运算
      • 13.6 子流程调用
      • 13.7 自定义节点执行器
    • 十四、最佳实践与生产建议
      • 14.1 组件设计原则
      • 14.2 组件粒度建议
      • 14.3 规则文件组织
      • 14.4 错误处理最佳实践
      • 14.5 性能优化建议
      • 14.6 生产环境 Checklist
    • 十五、常见问题 FAQ
      • Q1:LiteFlow 和 Drools 有什么区别?
      • Q2:组件之间如何共享 Spring Bean?
      • Q3:如何调试 LiteFlow 流程?
      • Q4:如何单元测试组件?
      • Q5:LiteFlow 支持分布式吗?
      • Q6:如何渐进式迁移到 LiteFlow?
    • 总结
    • 官方资源

一、为什么需要 LiteFlow?

1.1 传统硬编码流程的痛点

相信每个后端开发者都写过类似这样的代码——一个订单提交接口,把所有业务步骤按顺序硬编码在一个 Service 方法里:

@ServicepublicclassOrderSubmitService{publicSubmitResultsubmit(OrderSubmitCmdcmd){