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

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

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

相关推荐
@@@wang1 小时前
模拟实现消息队列(基于SpringBoot实现)
java·spring
码农研究僧5 小时前
详细分析Spring Framework中 @ConditionalOnProperty的基本知识(附Demo)
java·后端·spring·注解
当归10245 小时前
在spring端发送微信登录请求
java·spring·微信
码蜂窝编程官方5 小时前
【含开题报告+文档+PPT+源码】基于SSM + Vue的养老院管理系统【包运行成功】
前端·javascript·vue.js·spring
林戈的IT生涯6 小时前
Spring中注入bean时的scope属性详解、往singleton中注入prototype属性的bean以及Spring使用注解实现AOP切面编程
java·spring·aop·scope属性详解·注解实现aop编程
白云如幻9 小时前
基于xml配置文件的Spring事务
xml·java·spring
hai405879 小时前
Spring Cloud微服务详解
spring·spring cloud·微服务
nbsaas-boot10 小时前
从开发效率到查询性能:JPA 和 MyBatis 在企业系统中的完美结合
java·spring·mybatis
柳叶寒12 小时前
软件设计之SSM(11)
java·数据库·spring·maven·mybatis