规则引擎之LiteFlow流程编排

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>


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值