《 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 成为构建复杂业务流程的理想选择。

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

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

相关推荐
有梦想的攻城狮6 小时前
spring中的@MapperScan注解详解
java·后端·spring·mapperscan
柚个朵朵7 小时前
Spring的Validation,这是一套基于注解的权限校验框架
java·后端·spring
程序员小杰@7 小时前
【MCP教程系列】SpringBoot 搭建基于 Spring AI 的 SSE 模式 MCP 服务
人工智能·spring boot·spring
程序员buddha7 小时前
Spring & Spring Boot 常用注解整理
java·spring boot·spring
C_V_Better8 小时前
Java Spring Boot 控制器中处理用户数据详解
java·开发语言·spring boot·后端·spring
LUCIAZZZ9 小时前
JVM之虚拟机运行
java·jvm·spring·操作系统·springboot
堕落年代9 小时前
SpringSecurity当中的CSRF防范详解
前端·springboot·csrf
神秘的t10 小时前
Spring Web MVC————入门(2)
java·spring·mvc
冷心笑看丽美人10 小时前
Spring MVC数据绑定和响应 你了解多少?
java·spring·mvc
一零贰肆11 小时前
深入理解SpringBoot中的SpringCache缓存技术
java·springboot·springcache·缓存技术