LiteFlow 简介
LiteFlow 是一个轻量级的国产规则引擎框架,主要用于复杂的业务流程编排和规则编排。它提供了一种声明式的方式来定义和执行业务流程,支持复杂的条件判断、流程控制和节点组合。
操作步骤
1. 增加依赖
在业务微服务(以 UPMS 为例)的 pom.xml
中添加 LiteFlow 依赖:
<dependency>
<groupId>com.yomahub</groupId>
<artifactId>liteflow-spring-boot-starter</artifactId>
<version>2.12.4.1</version>
</dependency>
2. 增加配置
在 Nacos 配置中心 pig-upms-biz-dev.yml
文件中添加 LiteFlow 配置:
liteflow:
rule-source: config/*-rule.xml
3. 增加规则文件
在项目的 config
目录下创建规则文件,例如 demo-rule.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<flow>
<chain name="ifChain">
THEN(
IF(x, a),
b
);
</chain>
</flow>
4. 实现节点逻辑
创建节点组件类,实现具体的业务逻辑:
x 节点(条件判断节点)
@Slf4j
@Component("x")
public class IfCmp extends NodeBooleanComponent {
@Override
public boolean processBoolean() throws Exception {
int requestData = getRequestData();
log.info("x node processing... requestData:{}", requestData);
return requestData == 1;
}
}
a 节点(条件成立时执行)
@Slf4j
@Component("a")
public class ACmp extends NodeComponent {
@Override
public void process() {
log.info("a node processing...");
}
}
b 节点(默认执行或条件不成立时执行)
@Slf4j
@Component("b")
public class BCmp extends NodeComponent {
@Override
public void process() {
log.info("b node processing...");
}
}
5. 测试代码
在控制器中添加测试接口:
@Resource
private FlowExecutor flowExecutor;
@Inner(value = false)
@SneakyThrows
@RequestMapping("/test/{id}")
public R test(@PathVariable Integer id) {
flowExecutor.execute("ifChain", id);
return R.ok();
}
6. 测试结果
请求 http://ip:port/admin/test/0
[be48436b8cc64e3db81a76168c0c58e6]:CHAIN_NAME[ifChain] x<0>==>b<0>
请求 http://ip:port/admin/test/1
[ec5df9e080034ce699f51bd487422412]:CHAIN_NAME[ifChain] x<0>==>a<0>==>b<0>
注意事项
- 确保所有节点组件都标注了
@Component
注解
- 节点名称需要与规则文件中的节点名称一致
- 规则文件需要放在配置的扫描目录下
♥️ 获取支持
遇到问题?
如果您在使用过程中遇到任何问题、有功能建议或需求,请点击此卡片前往 Gitee 仓库提交 Issue。