当前位置: 首页 > backend >正文

LiteFlow:国产流程编排引擎体验

文章目录

  • 一、写在前面
  • 二、使用
    • 1、Springboot集成
    • 2、组件
    • 3、表达式
    • 4、上下文
    • 5、执行器
    • 6、脚本组件
    • 7、规则配置源
    • 8、元数据管理
    • 9、异步中的线程池
    • 10、动态构造
    • 11、决策路由
    • 12、生命周期
    • 13、其他
  • 三、总结

一、写在前面

就不做过多介绍了。
官网:https://liteflow.cc/

二、使用

1、Springboot集成

(1)引包

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

引入的jar包还不少呢:
在这里插入图片描述
(2)按照官网的demo来一套,发现确实挺好用:
文档:https://liteflow.cc/pages/9bf6be/#%E4%BE%9D%E8%B5%96

2、组件

(1)继承式组件的作用就是,提供了几个内置的,为流程编排提供了执行器、条件器、循环器等等。
文档:https://liteflow.cc/pages/8486fb/

(2)声明式组件,更灵活。感觉方法级别式声明更适合日常开发。
文档:https://liteflow.cc/pages/46f0fa/

3、表达式

文档:https://liteflow.cc/pages/16eca9/

表达式,就是进行流程编排了。

4、上下文

文档:https://liteflow.cc/pages/74b4bf/

在执行器执行流程时会分配数据上下文实例给这个请求。不同请求的数据上下文实例是完全隔离的。里面存放着此请求所有的用户数据。不同的组件之间是不传递参数的,所有的数据交互都是通过这个数据上下文来实现的。

使用的时候,最好是将上下文进行自定义:

OrderContext orderContext = new OrderContext();
orderContext.setOrderNo("SO11223344");
// 上下文已经初始化好参数了,就可以省略流程入参
LiteflowResponse response = flowExecutor.execute2Resp("chain1", null, orderContext);

上下支持将整个取出进行处理,也可以单独对类的字段进行处理。

5、执行器

文档:https://liteflow.cc/pages/90b2a5/

执行器是一个流程的触发点,你可以在代码的任意地方用执行器进行执行流程

需要注意执行器的出参、入参、上下文

流程多的话(几万+),需要设置保活策略。

6、脚本组件

需要经常更新+热部署的代码部分,可以考虑脚本组件。

7、规则配置源

文档:https://liteflow.cc/pages/51ddd5/#%E8%A7%84%E5%88%99%E6%96%87%E4%BB%B6

可以将规则配置在文件、数据库、配置中心等等很多地方,也支持热更新。

8、元数据管理

文档:https://liteflow.cc/pages/7cb165/

在LiteFlow框架中,最重要的两个概念就是规则以及组件。
框架提供了一个元数据管理器LiteflowMetaOperator用来管理这两大元素。

LiteFlow原生支持的zookeeper,etcd,nacos,apollo等插件,不需要你做任何事,只要规则更改之后,会自动热平滑刷新。
本地文件也支持热更新,需要配置本地文件监听。
sql,redis也会热更新,因为是轮训,所以会有延时。

9、异步中的线程池

文档:https://liteflow.cc/pages/3a3b69/

从2.13.0开始,框架中的线程池模型设计和之前的版本有较大的差异性,所以此章只适用于2.13.0之后的版本。

线程池分为流程级别的、组件异步级别的。
组件异步还分表达式级别、Chain级别。

JDK为21及以上时,默认使用虚拟线程。

10、动态构造

文档:https://liteflow.cc/pages/9aa85a/

Node、表达式、Chain都可以动态构造。

11、决策路由

文档:https://liteflow.cc/pages/ec1ac4/

感觉是没啥大用,还挺复杂的。

12、生命周期

文档:https://liteflow.cc/pages/ef098d/#%E8%A7%84%E5%88%99%E6%9E%84%E9%80%A0%E5%89%8D%E5%90%8E

13、其他

三、总结

业务复杂可以考虑引入,但是大部分项目应该还是不必须的。

LiteFlow主要还是以流程编排为主。

http://www.xdnf.cn/news/19813.html

相关文章:

  • DAY20-新世纪DL(DeepLearning/深度学习)战士:终(目标检测/YOLO)3
  • 【医疗行业案例】基于 React 的预约系统:DHTMLX 助力高效排班与预约管理
  • CAD/BIM软件产品技术深度分析文章写作计划
  • 全渠道 + 低代码:如何打造 “内外协同” 的客服管理系统体系?
  • 【FastDDS】Layer DDS之Domain ( 02-DomainParticipant )
  • unity中的交互控制脚本
  • 云手机将要面临的挑战有哪些?
  • 【学习记录】github私人仓库创建和本地克隆
  • CSS 伪类与伪元素:深度解析
  • 从零构建Linux Shell解释器深入理解Bash进程创建机制
  • 【Spring Cloud微服务】11.微服务通信演义:从飞鸽传书到5G全息,一部消息中间件的进化史诗
  • Java项目打包成EXE全攻略​
  • Ubuntu22.04下编译googletest源代码生成.so动态库
  • 利用 openssl api 实现 TLS 双向认证
  • MySQL-MVCC多版本并发控制详解
  • LangChain实战(十二):自定义Tools扩展Agent能力
  • Python+DRVT 从外部调用 Revit:批量创建门
  • Streamable HTTP
  • sv中forever如何结束
  • AI 在金融、医疗、教育、制造业等领域有着广泛的应用,以下是这些领域的一些落地案例
  • STM32HAL 快速入门(十七):UART 硬件结构 —— 从寄存器到数据收发流程
  • 告别剪辑烦恼!3个超实用技巧,让你的视频瞬间高级起来
  • 【音视频】视频秒播优化实践
  • UnityWebRequest 数据获取和提交
  • wpf 只能输入int类型的文本框
  • WebSocket客户端库:websocket-fruge365
  • Ubuntu下把 SD 卡格式化为 FAT32
  • Hostol Magento电商服务器套餐:基于阿里云,预配置高性能环境,一键开店
  • 如何用java给局域网的电脑发送开机数据包
  • B样条曲线,已知曲线上的某个点到起点的距离,确定这个点的参数u的值的方法