LiteFlow LiteFlow
💒首页
  • v2.13.2(当前版本)
  • What's New

    • 🌈What' s New In LiteFlow v2.13.2?
  • 历史版本

    • v2.12.X
    • v2.11.X
    • v2.10.X
    • v2.9.X
    • v2.8.X
  • 升级指南

    • 🌈2.13.0升级指南
    • 2.12.4升级指南
    • 2.12.0升级指南
    • 升级到2.9.3说明
    • 升级到2.9.X说明
    • 升级到2.8.X说明
    • 升级到2.7.X说明
👑LF CLUB社区
  • 常见问题
  • 专题解释

    • 如何理解上下文这个概念?
    • Slot是一个什么样的概念,在框架中起到什么样的作用?
💖赞助
🧩插件
🔥PPT
  • 项目介绍
  • 项目成员
  • 更新记录
  • 参与开发
👥加入群聊
🧤谁在使用
  • Gitee (opens new window)
  • GitCode (opens new window)
  • Github (opens new window)

广告采用随机轮播方式显示 ❤️成为赞助商
💒首页
  • v2.13.2(当前版本)
  • What's New

    • 🌈What' s New In LiteFlow v2.13.2?
  • 历史版本

    • v2.12.X
    • v2.11.X
    • v2.10.X
    • v2.9.X
    • v2.8.X
  • 升级指南

    • 🌈2.13.0升级指南
    • 2.12.4升级指南
    • 2.12.0升级指南
    • 升级到2.9.3说明
    • 升级到2.9.X说明
    • 升级到2.8.X说明
    • 升级到2.7.X说明
👑LF CLUB社区
  • 常见问题
  • 专题解释

    • 如何理解上下文这个概念?
    • Slot是一个什么样的概念,在框架中起到什么样的作用?
💖赞助
🧩插件
🔥PPT
  • 项目介绍
  • 项目成员
  • 更新记录
  • 参与开发
👥加入群聊
🧤谁在使用
  • Gitee (opens new window)
  • GitCode (opens new window)
  • Github (opens new window)
  • 🌈What's New In LiteFlow v2.13.2?
  • What's New In LiteFlow v2.13.1?
  • What's New In LiteFlow v2.13.0?
  • What's New In LiteFlow v2.12.4?
  • What's New In LiteFlow v2.12.3?
  • What's New In LiteFlow v2.12.2?
  • What's New In LiteFlow v2.12.1?
  • What's New In LiteFlow v2.12.0?
  • What's New In LiteFlow v2.11.4?
  • What's New In LiteFlow v2.11.3?
  • What's New In LiteFlow v2.11.2?
    • v2.11.2介绍
    • SQL插件支持轮询自动更新模式
    • WHEN增加must语法
    • 推出EL表达式的动态组装API
    • 链路继承
    • 组件降级
    • 支持绝对路径的模糊匹配
    • WHEN线程池隔离
    • 测试用例增加至1500个
  • What's New In LiteFlow v2.11.0?
  • What's New In LiteFlow v2.10.6?
  • What's New In LiteFlow v2.10.5?
  • What's New In LiteFlow v2.10.2?
  • What's New In LiteFlow v2.10.1?
  • What's New In LiteFlow v2.10.0?
  • What's New In LiteFlow v2.9.7?
  • What's New In LiteFlow v2.9.6?
  • What's New In LiteFlow v2.9.5?
  • What's New In LiteFlow v2.9.4?
  • What's New In LiteFlow v2.9.3?
  • What's New In LiteFlow v2.9.1?
  • What's New In LiteFlow v2.9.0?
  • whats new
铂赛东
2023-10-13
目录

What's New In LiteFlow v2.11.2?

# v2.11.2介绍

上一个版本是9月1日发布的,经过了一个半月,LiteFlow新的v2.11.2和大家见面了。

这个版本总共带来了7个大特性,3个增强,2个修复。总计12个issue的更新。

其实这已经比上一个大版本已经有过之而无不及了。

这一切归功于LiteFlow的团队小伙伴们,目前团队正式成员一共有11人,他们贡献了这个版本中的诸多的特性,感谢他们。

# SQL插件支持轮询自动更新模式

LiteFlow支持把规则和脚本存入任意的关系型数据库,由于关系型数据库不像注册中心会进行推送变更,所以一直以来,规则和脚本在数据库中发生改变,是需要开发者自己手动的去刷新的。并且需要每个应用实例都进行刷新。这对开发者来说,是繁琐了点。

所以我们在v2.11.2中推出了数据库自动轮询更新模式。这一切只需要在你原来的配置中加入:

liteflow:
  rule-source-ext-data-map:
    ...
    #是否开启SQL数据轮询自动刷新机制 默认不开启
    pollingEnabled: true
    ...

默认LiteFlow会每1分钟去进行SHA值的对比,由此来判断是否需要更新。

具体使用方式请参考规则文件->SQL数据库配置源。

# WHEN增加must语法

之前WHEN推出过any语法,意思是任意一个完成即继续,而忽略其他。但是在社区里有小伙伴碰到真实的场景,需要异步并行中对指定的节点先完成就忽略其他。

为此这次新版本中推出了全新的must语法,提供在并行编排中更多的多样性。

<chain name="chain1">
    THEN(
        a,
        WHEN(b, c, d).must(b, c),
        f
    );
</chain>

也可以指定一个或多个表达式:

<chain name="chain1">
    THEN(
        a,
        WHEN(b, THEN(c, d).id("t1"), e).must(b, "t1"),
        f
    );
</chain>

具体使用方式请参考EL规则的写法->并行编排->指定任意节点先执行完则忽略其他。

# 推出EL表达式的动态组装API

之前LiteFlow推出过动态构建chain的API,类似于这样:

LiteFlowChainELBuilder.createChain().setChainName("chain1").setEL(
  "THEN(a, b, WHEN(c, d))"
).build();

但是EL表达式还是需要你自己以字符串的方式填入,这并不能算真正意义上动态。

这次我们推出了全新的EL表达式的动态组装API,对于上面的EL,你可以如下进行动态构建:

ThenELWrapper el = ELBus.then(
	"a","b",ELBus.when("c", "d")
);
LiteFlowChainELBuilder.createChain().setChainName("chain1").setEL(el.toEL()).build();

值得一说的是,用java语言构建EL表达式,几乎和EL的写法完全一致。如果你已经熟悉了LiteFlow的规则语法,应该是零成本上手的。

目前API支持了所有的EL语法。具体使用方式请参考用代码构造规则->构造EL。

# 链路继承

LiteFlow每一个chain独立,之前的版本不存在继承关系。但在这个新版本中,我们推出了链路继承这个特性。

如同类的继承一样,链路可以继承,那么对于拥有复杂链路的业务系统,可以对链路进行抽象,得到一个非常优雅的表现方式。

我们定义的继承也非常容易看懂:

<chain id="base">
	THEN(a, b, {0}, {1});
</chain>

<chain id="implA" extends="base">
	{0}=IF(c, d, e);
	{1}=SWITCH(f).to(j,k);
</chain>

还可以多级继承:

<chain id="base">
	THEN(a, b, {0}, {1});
</chain>

<chain id="base2" extends="base">
  {0}=THEN(a,b,{3});
  {1}=SWITCH(f).to({4},k);
</chain>

<chain id="implB" extends="base2">
  {3}=THEN(a,b);
  {4}=j;
</chain>

如果你有此方面的场景,不妨尝试下继承特性。

具体使用方式请参考高级特性->链路继承。

# 组件降级

LiteFlow之前的替补组件全面升级成组件降级特性。

组件降级允许你定义各个类型组件的降级组件。新版本提供了@FallbackCmp注解用于定义。

在EL规则中,如果你用node关键字包裹组件,便开启了降级特性:

<chain id="chain1">
	THEN(node("a"), b, c);
</chain>

当a组件不存在时,便会走到用@FallbackCmp注解定义的降级组件中去。

具体用法请参考高级特定->组件降级。

# 支持绝对路径的模糊匹配

LiteFlow对项目内的规则文件的模糊匹配是早就支持的。但是之前的版本一直不支持绝对路径的模糊匹配。

这个版本,我们予以了支持。

你可以使用*或者**来模糊匹配多层级的任意名字的文件:

liteflow.rule-source=/data/lf/**/*Rule.xml

如果开启了文件监听功能,还能对模糊路径匹配到的每一个文件进行监听。当文件改变的时候,实现自动刷新功能。是不是很酷。

具体用法请参考规则文件->本地规则文件配置和高级功能->本地文件监听。

# WHEN线程池隔离

LiteFlow在v2.11.2版本中新推出了一个配置,在执行WHEN中的并行组件时,每一个when的线程池隔离,在运行复杂的嵌套WHEN链路时,这个特性非常有用。可以有效提高运行速度并且避免死锁问题。

你只需要开启这个配置即可,默认是关闭的。

liteflow.when-thread-pool-isolate=true

具体用法请参考EL规则的写法->并行编排->开启WHEN线程池隔离。

# 测试用例增加至1500个

我非常注重开源项目的测试用例,这是一个项目质量的保证。这次新版本LiteFlow把测试用例增加到了1500个!

每一个特性的提交,我们都会保证这么多的测试用例全部通过。这也是我们发布LiteFlow每一个版本的底气。

并且,LiteFlow的测试用例覆盖面非常广,行覆盖率达到了90%,我们始终遵循着测试用例大于一切的标准。

帮助我们改善此文档 (opens new window)
上次更新: 2023/10/18, 00:11:11
What's New In LiteFlow v2.11.3?
What's New In LiteFlow v2.11.0?

← What's New In LiteFlow v2.11.3? What's New In LiteFlow v2.11.0?→

Theme by Vdoing | Copyright © 2020-2025 铂赛东 | MIT License
沪ICP备18012955号-2
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式