1、LiteFlow
1.1 前言
在日常的开发过程中,经常会遇到一些串行或者并行的业务流程问题,而业务之间不必存在相关性。
在这样的场景下,使用策略和模板模式的结合可以很好的解决这个问题,但是使用编码的方式会使得文件太多,在业务的部分环节可以这样操作,在项目角度就无法一眼洞穿其中的环节和逻辑。
1.2 LiteFlow
1.2.1 简介
liteflow 是一个轻巧而且强大的规则引擎,能够实现开箱即用,可以在短时间内就可以完成复杂的规则编排,下图是 liteflow 的整体架构。liteflow 支持较多的规则文件格式,比如 xml/json/yaml, 对于规则文件的存储方式可以有sql/zk/nacos/apollo 等。
通过LiteFlow我们可以把业务逻辑都定义到不同组件之中,然后使用简洁的规则文件来串联整个流程,从而实现复杂的业务逻辑。
LiteFlow主要特性如下:
组件定义统一:所有的逻辑都是组件,直接使用Spring原生注解@Component定义即可。
规则轻量:基于规则文件来编排流程,学习规则表达式入门仅需5分钟。
规则多样化:规则支持xml、json、yml三种规则文件写法,喜欢哪种用哪个。
任意编排:同步异步混编,再复杂的逻辑过程,都能轻易实现。
规则能从任意地方加载:框架中提供本地文件配置源和zk配置源的实现,也提供了扩展接口。
优雅热刷新机制:规则变化,无需重启应用,即时改变应用的
组件定义统一:所有的逻辑都是组件,直接使用Spring原生注解@Component定义即可。
规则轻量:基于规则文件来编排流程,学习规则表达式入门仅需5分钟。
规则多样化:规则支持xml、json、yml三种规则文件写法,喜欢哪种用哪个。
任意编排:同步异步混编,再复杂的逻辑过程,都能轻易实现。
规则能从任意地方加载:框架中提供本地文件配置源和zk配置源的实现,也提供了扩展接口。
优雅热刷新机制:规则变化,无需重启应用,即时改变应用的
LiteFlowX 规则引擎官方网址:https://liteflow.yomahub.com
1.2.2 架构原理

liteflow 的使用是从获取上下文开始的,通过数据上下文来解析对应的规则文件,通过 liteflow 执行器来执行对应的链路,每个链路上都有需要执行的业务 node(即节点组件,可以支持多种语言脚本, groovy/js/python/lua等), 各个业务node 之间是独立的。
liteflow 可以支持如下所示的复杂流程

此外,liteflow 可以支持热部署,可以实时替换或者增加节点,即修改规则文件后可以实时生效。

1.3 插件及简单使用
LiteFlow 还拥有自己的IDEA插件LiteFlowX,通过该插件能支持规则文件的智能提示、语法高亮、组件与规则文件之间的跳转及LiteFlow工具箱等功能,强烈建议大家安装下。
首先我们在IDEA的插件市场中安装该插件;

安装好LiteFlowX插件后,我们代码中所定义的组件和规则文件都会显示特定的图标;

当我们编辑规则文件时,会提示我们已经定义好的组件,并支持从规则文件中跳转到组件;

还支持从右侧打开工具箱,快捷查看组件和规则文件。

1.4 规则表达式
接下来我们学习下规则表达式,也就是规则文件的编写,入门表达式非常简单,但这对使用LiteFlow非常有帮助
1.4.1 串行编排
当我们想要依次执行a、b、c、d四个组件时,直接使用THEN关键字即可。
<chain name="chain1">
THEN(a, b, c, d);
</chain>
1.4.2 并行编排
如果想并行执行a、b、c三个组件的话,可以使用WHEN关键字。
<chain name="chain1">
WHEN(a, b, c);
</chain>

最低0.47元/天 解锁文章
5519

被折叠的 条评论
为什么被折叠?



