《 LiteFlow 规则引擎(1) - 入门篇》

📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗

🌻 CSDN入驻不久,希望大家多多支持,后续会继续提升文章质量,绝不滥竽充数,欢迎多多交流。👍

文章目录

写在前面的话

近期正在更新设计模式和微信小程序两个系列的文章,这边中途打断一下,由于工作中使用到LiteFlow,觉得可圈可点,决定先插队分享一下相关内容。

技术简介

LiteFlow 是一个轻量级的工作流引擎,旨在简化业务流程的定义和执行,特别适合微服务架构和快速开发的场景。官网对其概括是:轻量,快速,稳定可编排的组件式规则引擎。

关于其更多的介绍、优点等内容,直接参考《LiteFlow 官网》了解即可,这边不过多赘述。

现实情况是,博主所在公司正在研发低代码相关产品,其中服务引擎部分基于 LiteFlow 完成。由于 LiteFlow 在低代码开发的场景下,允许自定义很多组件,配合上其组件编排的能力,正是它灵活性和可扩展性的体现。


基础入门

准备一个SpringBoot3.x的Demo项目,开始试用一下。

Step1、引入Maven依赖

xml 复制代码
<dependency>
    <groupId>com.yomahub</groupId>
    <artifactId>liteflow-spring-boot-starter</artifactId>
    <version>2.12.3</version>
</dependency>

Step2、编写自定义组件

java 复制代码
@LiteflowComponent("ProcessC")
@Slf4j
public class ProcessC extends NodeComponent {

    @Override
    public void process() {
        log.info(" ===== Processing C 正在执行");
    }
}

@LiteflowComponent("ProcessD")
@Slf4j
public class ProcessD extends NodeComponent {

    @Override
    public void process() {
        log.info(" ===== Processing D 正在执行");
    }
}

Step3、新建config/flow.el.xml规则文件,并在application.yml加载

xml 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<flow>
    <chain name="chainTest">
        THEN(ProcessC, ProcessD);
    </chain>
</flow>
yaml 复制代码
# 服务引擎
liteflow:
  rule-source: config/**/*.xml

Step4、编写测试接口

java 复制代码
@GetMapping("/test3")
public String test3() {
    String result = "";
    LiteflowResponse response = flowExecutor.execute2Resp("chainTest");
    if (response.isSuccess()) {
        result = response.getSlot()
                .getExecuteStepStr();
    }
    return result;
}

访问接口:输出得到 ProcessC==>ProcessD

【点评示例】

上面例子太简单了,只是说明一下如何使用,甚至连出入参传递、分支选择、同步异步、数据库调用等复杂场景都没演示到,同时,如果仅仅两个节点依次调用,压根用不上流程引擎。

LiteFlow的能力远不止如此,用法也没有这么单薄,本篇仅为入门篇,后续会详细介绍实用用法。

就像官网介绍的,LiteFlow真正适合的场景如下,可能同时具备串行、并行、选择、条件、循环等复杂流程。


低代码场景

看到这边,大致也知道 LiteFlow 的组件编排能力,它擅长把流程进行拆解、组装,那在低代码场景下又有什么优势呢?

  • 自定义节点:LiteFlow 允许你自定义节点,这意味着你可以创建自己的组件,以满足特定业务需求例如,你可以创建一个自定义节点来处理特定类型的数据库操作、发送邮件、调用外部 API 等等。
  • 自定义流程定义:LiteFlow 支持多种流程定义方式,包括 XML、JSON 和代码。这使得你可以根据需要创建自定义的流程定义,以满足特定业务需求。
  • 自定义数据处理:LiteFlow 支持多种数据处理方式,例如数据转换、数据校验、数据存储等等。你可以创建自定义的数处理组件,以满足特定业务需求。
  • 自定义扩展机制:LiteFlow 提供丰富的扩展机制,例如自定义节、自定义流程定义、自定义数据处理等等。这使得你可以根据需要扩展 LiteFlow 的功能,以满足特定业务需求。

总结陈词

LiteFlow 的自定义组件功能使得它在低代码开发中非常灵活和强大。你可以根据需要创建自定义节点、流程定义和数据处理组,以满足特定业务需求,这使得 LiteFlow 成为构建复杂业务流程的理想选择。

还是那句话,你可以不选择它,但必须了解它。

此篇文章仅作为入门篇章,后续会持续补充实战用法。

相关推荐
paopaokaka_luck1 小时前
基于SpringBoot+Uniapp的自习室预约小程序(腾讯地图API、Echarts图形化分析、二维码识别)
vue.js·spring boot·后端·spring·echarts
小小8程序员2 小时前
Spring Boot AOP 全面解析(原理 + 实战 + 场景)
java·spring boot·spring
原来是好奇心2 小时前
深入Spring Boot源码(三):自动配置之Spring Boot的“魔法“核心
java·自动配置·源码·springboot
何中应3 小时前
【面试题-8】Spring/Spring MVC/Spring Boot/Spring Cloud
java·spring boot·后端·spring·mvc·面试题
没什么本事3 小时前
Springboot CGLIB 代理对象问题
java·spring boot·spring
Javatutouhouduan3 小时前
SpringBoot整合reids之JSON序列化文件夹操作
java·spring boot·spring·bootstrap·html·后端开发·java架构师
她说..3 小时前
Spring AOP场景5——异常处理(附带源码)
java·数据库·后端·spring·springboot·spring aop
醇氧3 小时前
springAI学习 (二) 模型
java·学习·spring·ai·ai编程
0和1的舞者3 小时前
《MyBatis 从入门到上手:超全基础操作 + XML 配置指南》
数据库·spring boot·学习·spring·mybatis·框架·开发
漂亮的小碎步丶3 小时前
【4】Spring Boot项目中Spring核心容器原理详解
java·后端·spring