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

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

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

相关推荐
没书读了5 分钟前
ssm框架-spring-spring声明式事务
java·数据库·spring
武子康42 分钟前
Java-06 深入浅出 MyBatis - 一对一模型 SqlMapConfig 与 Mapper 详细讲解测试
java·开发语言·数据仓库·sql·mybatis·springboot·springcloud
代码小鑫3 小时前
A043-基于Spring Boot的秒杀系统设计与实现
java·开发语言·数据库·spring boot·后端·spring·毕业设计
真心喜欢你吖3 小时前
SpringBoot与MongoDB深度整合及应用案例
java·spring boot·后端·mongodb·spring
斗-匕5 小时前
Spring事务管理
数据库·spring·oracle
Doker 多克8 小时前
Spring AI 框架使用的核心概念
人工智能·spring·chatgpt
请叫我青哥11 小时前
第五十二条:谨慎使用重载
java·spring
孟秋与你13 小时前
【spring】spring单例模式与锁对象作用域的分析
java·spring·单例模式
luckywuxn13 小时前
Spring Cloud Alibaba、Spring Cloud 与 Spring Boot各版本的对应关系
spring boot·spring·spring cloud
是程序喵呀14 小时前
SpringMVC详解
java·spring·spring-mvc