What's New In LiteFlow v2.11.0?
# v2.11.0介绍
v2.11.0是一个大版本,LiteFlow提供了5个大的新特性,以及3个加强,2个bug修复。
LiteFlow同时更换了新的项目Logo和启动了新的域名。
LF在这个版本改头换面,以全新的姿态继续向前冲~
# 新的项目LOGO
感谢设计师Evan Lou
的帮助,为LiteFlow带来了全新的Logo。🤙
新Logo寓意:
1.整体是一片树叶形状,树叶既代表了轻量,也象征着LiteFlow会一直像树叶那样进行光合作用,释放氧气。
2.叶子里的叶脉是一个L和F的交错变体,象征着LiteFlow的缩写。
3.叶脉简单且延展开,象征流程的分叉。
4.整个叶子被叶脉分隔成4部分,象征着编排,4个不同的部分组成了一片完美的叶子。
# 启用全新域名
LiteFlow在v2.11.0启用了全新的域名:https://liteflow.cc (opens new window)。简单且好记。
同时老的域名也是可以访问的,会自动重定向到新的域名上。
# 新的Slogan
LiteFlow会从2.11.0这个版本开始,为每一个版本都设计一句Slogan。
这个版本的Slogan为:Keep on the light side.
。中文寓意为:逐光而行
。
这句Slogan一语双关,其中light
谐音lite
,表示我们会一直坚持LiteFlow的开源迭代。
逐光而行,我希望我自己可以践行,人总要需要一道光来照亮生命,我们疲惫且努力的追逐那道光,远离黑暗。
# 特性1:能够用Java原生语言来写脚本
丰富的脚本语言支持是LiteFlow的一大特色,脚本语言轻巧,能否被即时刷新的特点受到了很多开发者的喜爱。
LiteFlow之前支持了挺多的脚本语言,分别是:Groovy,Javascript,Python,QLExpress,Lua,Aviator。
但是不同的语言有不同的语法结构,很多不熟悉的这些语言写法的同学可能还要花点时间去学习该如何写。
这次版本LiteFlow支持了原生Java脚本语言的写法,这意味着你可以无学习成本的直接在脚本里用Java来书写逻辑。
关于Java脚本语言的详细文档请参照官网中脚本组件->脚本语言种类->Java脚本引擎
。
# 特性2:支持了Redis中存储规则和脚本
LiteFlow支持丰富的存储插件,所有的关系型数据库以及各种注册中心。
这次我们新增了Redis插件,用Redis来存储规则以及脚本。Redis在各大企业中用的比较多。为了保证使用的多样性。我们甚至开发了2种模式:轮询拉取模式
和订阅模式
,各有特点。
其中轮询拉取模式,我们做了非常多的优化,我们对每一个脚本和规则生成了指纹,只比对指纹,而非拉取整个数据,消耗极小。
订阅模式非常实时,但是需要你用Redission
框架来操作Redis,算有一定的使用限制。具体选用哪种模式,交由开发者来决定。
关于redis插件的详细文档请参照官网中规则文件->Redis配置源
。
# 特性3:全方位的超时控制
在以前的LiteFlow版本中,超时控制只能针对WHEN
表达式,且是全局配置。
在新版本中,我们支持了全方位的超时控制体系,一个maxWaitSeconds
关键字可对任意的组件、表达式、流程进行超时控制。
对任意表达式的控制:
<chain name="chain1">
THEN(a,b).maxWaitSeconds(5);
</chain>
<chain name="chain1">
FOR(2).DO(a).maxWaitSeconds(3);
</chain>
对组件的超时控制
<chain name="chain1">
WHEN(
a.maxWaitSeconds(2),
b.maxWaitSeconds(3)
);
</chain>
对子流程的超时控制
<chain name="testChain">
THEN(b)
</chain>
<chain name="chain">
testChain.maxWaitSeconds(3);
</chain>
关于这块的详细文档请参考官网文档中的高级特性->超时控制
# 特性4:异步循环模式
经常群里的小伙伴会反映:LiteFLow的循环体系只支持同步,如果能支持异步就好了。
这个版本我们支持了!对三种循环模式都予以了异步支持。
<chain name="chain1">
FOR(2).parallel(true).DO(THEN(a,b,c));
</chain>
<chain name="chain2">
WHILE(x).parallel(true).DO(THEN(a,b,c));
</chain>
<chain name="chain3">
ITERATOR(x).parallel(true).DO(THEN(a,b,c));
</chain>
一个parallel
关键字搞定。是不是很简单?
关于异步循环的详细文档请参考官网文档中的高级特性->异步循环模式
。
# 特性5:组件回滚
这也就是所谓的逆操作。LiteFlow从这个版本开始有逆向操作了!LiteFlow会自动帮你记录执行的顺序,当某个组件抛出异常时,会自动按实际执行的顺序进行逆操作。
这一切的前提只需要你在组件中实现rollback
方法。
在自动执行完回滚操作后,LiteFlow的日志还会把回滚的步骤都打出来,让你一目了然。
@LiteflowComponent("a")
public class ACmp extends NodeComponent {
@Override
public void process() {
//do your biz
}
@Override
public void rollback() throws Exception {
//do your biz
}
}
关于组件回滚的详细文档请参考官网文档中的高级特性->组件回滚
。
# 测试用例增加到1200个左右
我相信,一个开源框架的上限是看这个框架所解决的问题和这个框架提供的特性和设计。而下限则是这个开源框架的测试用例的完备性。
我们不仅要开疆拓土,提供新特性和新的探索,也要守疆土,确保整体稳定性和质量。
我们这次将测试用例数量提高到近1200个,几乎覆盖到了所有的地方。
大家可以放心用。我们也有完备的社区和组织,社区目前拥有3500人左右。