大家好,我是爱学习的了不起!
不知道大家有没有维护过祖传代码,祖传代码(legacy code),就字面意思而言,就是老程序猿留下“宝藏”代码。对于复杂业务逻辑的系统,各个模块之间的耦合度很高。一小段逻辑的变动,都可能会影响到其他模块,搞不好就会背锅,维护成本就会越来越高。
今天给大家推荐一款专门为解耦代码而设计的规则引擎框架 – LiteFlow。
项目介绍
LiteFlow 是一个编排式的规则引擎框架,解耦业务代码,每一个代码片段作为一个组件,通过配置的编排规则,驱动代码执行。下面是使用LiteFlow模式执行代码:
项目特点
- 组件定义:所有的代码片段定位是组件
- 支持多种规则文件格式:xml、json、yml
- 灵活编排:利用编排规则可以实现任意业务逻辑
- 规则持久化:支持本地文件、zk、nacos、MySQL、Apollo、自定义配置源
- 热更新:修改规则后无需重启系统
- 支持多种脚本:Groovy,Javascript,QLExpress,Python,Lua,Aviator
使用方法
引用依赖
1 | <dependency> |
定义组件
1 |
|
1 |
|
1 |
|
1 |
|
定义规则
在application.yml中引入规则文件:
1 | liteflow.rule-source=config/flow.yaml |
在 flow.yaml 文件中定义规则:
1 | flow: |
上面的规则表示:依次执行a,b,c,d四个组件。
liteflow 支持的规则有:串行编排、并行编排、选择编排、条件编排、循环编排等等。具体使用方式大家可以参考官方文档,上手很快,10分钟就可以学会!
可以写出更复杂的规则:
1 | <chain name="chain1"> |
执行器
执行器是一个流程的触发点,可以在任意地方执行流程。
1 | //第一个参数为流程ID,第二个参数为流程入参。 |
流程ID是chain.name
项目地址
1 | https://gitee.com/open-java-code/liteFlow |
总结
使用liteFlow后,增加新的业务不需要改动原有系统,特别适合业务复杂或者代码重构的场景中,在使用LiteFlow之后,打造一个低耦合,灵活的系统会变得很容易!更多玩法,需要自己去探索!
写在最后
欢迎加入开源小分队读者交流群,聊天学习摸鱼为主,不定时会分享一些技术要点和优质学习资源,有一群有趣有料的小伙伴在等你哦!
进群方式:开源小分队
公众号后台回复888
,按提示操作即可进群。
问君能有几多愁,开源项目解千愁,我们下期再见!
大家的点赞、收藏和评论对了不起非常重要,如文章对你有帮助还请转发支持下,谢谢!