LiteFlow简单使用

LiteFlow是什么

LiteFlow是一个非常强大的现代化的规则引擎框架,融合了编排特性和规则引擎的所有特性,具体介绍查看官网

官网:https://liteflow.cc/

github: https://github.com/dromara/liteflow

gitee: https://gitee.com/dromara/liteFlow

使用LiteFlow

这里以Springboot项目中使用LiteFlow为例

添加依赖

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

定义组件

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

这里创建a b c 三个组件

a组件

@Component("a")
public class ACmp extends NodeComponent {

    @Override
    public void process() {
        //do your business
        System.out.println("A");
    }
}

b组件

@Component("b")
public class BCmp extends NodeComponent {

    @Override
    public void process() {
        //do your business
        System.out.println("B");
    }
}

c组件

@Component("c")
public class CCmp extends NodeComponent {

    @Override
    public void process() {
        //do your business
        System.out.println("C");
    }
}

定义规则

在resources下的config/flow.el.xml中定义规则

这里定义串行执行a、b、c组件

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

添加配置

在application.yml里添加配置

liteflow:
  rule-source: config/flow.el.xml

执行链路

可以在任意被Spring托管的类中拿到flowExecutor,进行执行链路

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

执行结果

可以看到按照abc配置的顺序执行

img

### LiteFlow 框架的适用场景 LiteFlow 主要适用于那些需要简化复杂业务逻辑处理流程的应用程序。该框架能够将复杂的业务逻辑拆分为多个易于管理和理解的小部分,从而提升代码质量和开发效率[^1]。 对于中小型项目以及采用微服务架构的情况来说,如果希望迅速搭建起具备一定灵活性的工作流机制而不必引入像BPMN这样较为重量级的标准,则可以考虑使用LiteFlow作为解决方案之一[^2]。 具体而言,在以下几种情况下尤为合适: - **简单到中等复杂度的工作流需求**:当应用程序只需要基本的任务调度、条件判断等功能而无需涉及过多高级特性时; - **追求高效性能表现**:由于其设计上的精简性,使得在高并发环境下也能保持良好响应速度; - **便于集成现有系统**:支持多种配置形式(如注解、XML 和纯Java代码),方便与其他技术栈相结合; ### LiteFlow 的基础用法示例 为了更好地展示如何利用 LiteFlow 进行业务逻辑编排,下面给出一段简单的例子来说明创建自定义组件并将其组合成一个完整的流程。 #### 定义组件 首先,我们需要基于 `AbstractComponent` 类构建具体的业务单元——即各个独立执行的操作模块。这里假设有一个订单处理过程包含三个阶段:“接收订单”,“验证库存”和“发货”。 ```java import com.yomahub.liteflow.core.NodeComponent; import org.springframework.stereotype.Component; @Component("receiveOrder") public class ReceiveOrderCmp extends NodeComponent { @Override public void process() throws Exception { System.out.println("Receiving order..."); } } ``` 同样的方式还可以定义其他两个组件 `CheckStockCmp` 和 `ShipGoodsCmp`. #### 配置流程链路 接下来就是设置这些组件之间的顺序关系了。可以通过 XML 文件或者直接编码的方式来完成这一步骤。此处以编程的方式为例: ```xml <!-- liteflow.xml --> <chain name="orderProcessChain"> c@receiveOrder && c@checkStock && c@shipGoods </chain> ``` 也可以通过 Java DSL 方式来进行更动态化的控制: ```java @Configuration public class FlowConfig { @Bean public IRuleExecutor ruleExecutor(){ DefaultLiteFlowBuilder builder = new DefaultLiteFlowBuilder(); // 构建名为 'orderProcess' 的规则链条 builder.addChain("orderProcess", "c@receiveOrder && c@checkStock && c@shipGoods"); return builder.build(); } } ``` 最后启动 Spring Boot 应用即可触发整个工作流按预定路径依次调用各组件内的 `process()` 方法[^3].
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值