LiteFlow 按照规则配置进行复杂流转
使用LiteFlow,你需要去把复杂的业务逻辑按代码片段拆分成一个个小组件,并定义一个规则流程配置。这样,所有的组件,就能按照你的规则配置去进行复杂的流转。
依赖
LiteFlow提供了liteflow-spring-boot-starter依赖包,提供自动装配功能
<dependency> <groupId>com.yomahub</groupId> <artifactId>liteflow-spring-boot-starter</artifactId> <version>2.6.3</version> </dependency>
组件的定义
在依赖了以上jar包后。 需要定义并实现一些组件,确保SpringBoot会扫描到这些组件并注册进上下文
import com.yomahub.liteflow.core.NodeComponent; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @Slf4j @Component("a") public class ACmp extends NodeComponent { @Override public void process() { //do your business log.info("ACmp process"); } }
SpringBoot配置文件
liteflow: rule-source: config/flow.xml #-----------------以下非必须----------------- enable: true #liteflow是否开启,默认为true monitor: delay: 10000 #监控一开始延迟多少执行,默认值为300000毫秒,也就是5分钟 enable-log: true #是否开启监控log打印,默认值为false period: 10000 #监控日志打印每过多少时间执行一次,默认值为300000毫秒,也就是5分钟 queue-limit: 300 #监控队列存储大小,默认值为200 parse-on-start: true #是否在启动的时候就解析规则,默认为true retry-count: 0 #全局重试次数,默认为0 slot-size: 1024 #slot的数量,默认值为1024 when-max-wait-second: 15 #异步线程最长的等待时间秒(只用于when),默认值为15 when-max-workers: 4 #异步线程池最大线程数,默认为4 when-queue-limit: 512 #异步线程池等待队列数,默认为512 zk-node: /lite-flow/flow #zkNode的节点,只有使用zk作为配置源的时候才起作用
规则文件的定义
同时,在resources下的config/flow.xml
中定义规则:
<?xml version="1.0" encoding="UTF-8"?> <flow> <chain name="chain1"> <then value="a,b,c"/> <when value="d,e"/> </chain> </flow>
官方文档:
https://yomahub.com/liteflow/docs/