编辑
2025-07-15
实用工具
00

目录

简介
使用
依赖
配置
SpringBoot配置文件
规则文件的定义
执行

简介

LiteFlow 是一个轻量级、高性能、可编排的 组件式规则引擎/流程编排框架,专为复杂业务逻辑的解耦与灵活编排而设计。它通过声明式的规则定义(如 XML、YAML 或 EL 表达式)将业务逻辑分解为独立的组件,并通过规则文件动态编排执行顺序,从而实现业务流程的高效管理与动态调整。

  • 组件化设计

    • 组件(Component) 是最小的执行单元,每个组件封装单一业务逻辑(如“验证订单”、“计算价格”)。
    • 支持多种组件类型:普通组件、条件组件(IF/SWITCH)、循环组件、脚本组件(Groovy/Python/JS 等)。
    • 通过 @LiteflowComponent 注解快速定义组件,支持 Spring 原生注解(如 @Component)。
  • 灵活的规则编排

    • 使用 EL 表达式(类似 THEN(a, b); IF(x, a, b);)或 XML/YAML 文件定义流程。
    • 支持复杂流程:串行、并行、条件分支、循环嵌套等。

    示例规则(EL 表达式):

THEN(checkOrder, processPayment, sendConfirmation); IF(orderValid, THEN(applyDiscount), THEN(cancelOrder));
  • 热加载与动态更新
    • 规则和组件支持 实时热刷新,无需重启应用即可动态调整流程。
    • 规则可存储于数据库、Nacos、ZooKeeper、Apollo 等配置中心,实现集中管理。
  • 多语言与脚本支持
    • 除 Java 外,支持 8 种脚本语言:Groovy、Kotlin、JavaScript、Python、Lua、QLExpress、Aviator 等。
    • 脚本组件可直接调用 Java 方法或引用外部服务(如 RPC)。
  • 上下文隔离与数据传递
    • 提供线程安全的 上下文(Context),用于组件间数据传递和共享。
    • 支持多线程隔离,避免并发场景下的数据污染。
  • 高扩展性与集成能力
    • 无缝集成 Spring/Spring Boot,支持 JDK 8~17 和主流版本。
    • 提供丰富的高级特性:组件重试、异常处理、性能监控、分布式支持等。
  • 社区与生态
    • 开源社区活跃,拥有 2000+ 测试用例 和详细文档。
    • 提供 IDEA 插件(LiteFlowX),支持规则文件智能提示、组件跳转调试。
    • 企业级用户广泛,已应用于多家一线互联网公司的核心系统。

官网: https://liteflow.cc

GitHub: https://github.com/yomahub/liteflow

使用

依赖

XML
<dependency> <groupId>com.yomahub</groupId> <artifactId>liteflow-spring-boot-starter</artifactId> <version>2.13.2</version> </dependency>

配置

在依赖了以上jar包后,你需要定义并实现一些组件,确保SpringBoot会扫描到这些组件并注册进上下文。

java
@LiteflowComponent("a") public class ACmp extends NodeComponent { @Override public void process() { //do your business } }

以此类推再分别定义b,c组件:

java
@LiteflowComponent("b") public class BCmp extends NodeComponent { @Override public void process() { //do your business } }
java
@LiteflowComponent("c") public class CCmp extends NodeComponent { @Override public void process() { //do your business } }

SpringBoot配置文件

然后,在你的SpringBoot的application.properties或者application.yml里添加配置(这里以properties为例,yaml也是一样的)

更多配置项请参考配置项章节。

yml
liteflow.rule-source=config/flow.xml

规则文件的定义

同时,你得在resources下的config/flow.xml中定义规则:

xml
<?xml version="1.0" encoding="UTF-8"?> <flow> <chain name="chain1"> THEN(a, b, c); </chain> </flow>

SpringBoot在启动时会自动装载规则文件。

执行

java
@SpringBootApplication //把你定义的组件扫入Spring上下文中 @ComponentScan({"com.xxx.xxx.cmp"}) public class LiteflowExampleApplication { public static void main(String[] args) { SpringApplication.run(LiteflowExampleApplication.class, args); } }

获取结果

java
@Component public class YourClass{ @Resource private FlowExecutor flowExecutor; public void testConfig(){ LiteflowResponse response = flowExecutor.execute2Resp("chain1", "arg", DefaultContext.class); } }

本文作者:Weee

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!