写出个灵活的系统竟然可以如此简单!小白也能写出高级的Java业务!


大家好,我是爱学习的了不起!

不知道大家有没有维护过祖传代码,祖传代码(legacy code),就字面意思而言,就是老程序猿留下“宝藏”代码。对于复杂业务逻辑的系统,各个模块之间的耦合度很高。一小段逻辑的变动,都可能会影响到其他模块,搞不好就会背锅,维护成本就会越来越高。

今天给大家推荐一款专门为解耦代码而设计的规则引擎框架 – LiteFlow。

项目介绍

LiteFlow 是一个编排式的规则引擎框架,解耦业务代码,每一个代码片段作为一个组件,通过配置的编排规则,驱动代码执行。下面是使用LiteFlow模式执行代码:

项目特点

  • 组件定义:所有的代码片段定位是组件
  • 支持多种规则文件格式:xml、json、yml
  • 灵活编排:利用编排规则可以实现任意业务逻辑
  • 规则持久化:支持本地文件、zk、nacos、MySQL、Apollo、自定义配置源
  • 热更新:修改规则后无需重启系统
  • 支持多种脚本:Groovy,Javascript,QLExpress,Python,Lua,Aviator

使用方法

引用依赖

1
2
3
4
5
6
<dependency>
<groupId>com.yomahub</groupId>
<artifactId>liteflow-spring-boot-starter</artifactId>
<version>2.10.1</version>
</dependency>

定义组件

1
2
3
4
5
6
7
8
@Component("a")
public class Abusiness extends NodeComponent {

@Override
public void process() {
//业务代码
}
}
1
2
3
4
5
6
7
8
9
@Component("b")
public class Bbusiness extends NodeComponent {

@Override
public void process() {
//业务代码
}
}

1
2
3
4
5
6
7
8
9
@Component("c")
public class Cbusiness extends NodeComponent {

@Override
public void process() {
//业务代码
}
}

1
2
3
4
5
6
7
8
@Component("d")
public class dbusiness extends NodeComponent {

@Override
public void process() {
//业务代码
}
}

定义规则

在application.yml中引入规则文件:

1
liteflow.rule-source=config/flow.yaml

在 flow.yaml 文件中定义规则:

1
2
3
4
5
6
flow:

chain:
- name: chain1
value: "THEN(a, b, c);"

上面的规则表示:依次执行a,b,c,d四个组件。

liteflow 支持的规则有:串行编排、并行编排、选择编排、条件编排、循环编排等等。具体使用方式大家可以参考官方文档,上手很快,10分钟就可以学会!

可以写出更复杂的规则:

1
2
3
4
5
6
7
8
9
10
<chain name="chain1">
THEN(
a,
WHEN(
b,
SWITCH(c).to(d,e)
),
f
)
</chain>

执行器

执行器是一个流程的触发点,可以在任意地方执行流程。

1
2
//第一个参数为流程ID,第二个参数为流程入参。
public LiteflowResponse execute2Resp(String chainId, Object param);

流程ID是chain.name

项目地址

1
https://gitee.com/open-java-code/liteFlow

总结

使用liteFlow后,增加新的业务不需要改动原有系统,特别适合业务复杂或者代码重构的场景中,在使用LiteFlow之后,打造一个低耦合,灵活的系统会变得很容易!更多玩法,需要自己去探索!

写在最后

欢迎加入开源小分队读者交流群,聊天学习摸鱼为主,不定时会分享一些技术要点和优质学习资源,有一群有趣有料的小伙伴在等你哦!

进群方式:开源小分队 公众号后台回复888,按提示操作即可进群。

问君能有几多愁,开源项目解千愁,我们下期再见!

大家的点赞、收藏和评论对了不起非常重要,如文章对你有帮助还请转发支持下,谢谢!


文章作者: 开源小分队
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 开源小分队 !
  目录