关于开源软件:国产规则编排引擎LiteFlow-v290发布超多特性汹涌而至

8次阅读

共计 3212 个字符,预计需要花费 9 分钟才能阅读完成。

前言

LiteFlow v2.9.0 明天正式公布!同时带来的还有 LiteFlowX 1.1.0 IDEA 插件正式版!

LiteFlow v2.9.0 版本带来了大量的个性,一共 19 个 issue,还有数不清的优化。是所有公布的版本中个性最多的一次。

咱们纵向拓展了 LiteFlow 的深度,赋予新版本的 LiteFlow 在编排时领有更多的能力,适应更多的场景。

咱们也同时横向拓展了 LiteFlow 的广度,推出了规定插件机制,赋予 LiteFlow 能反对更多的中间件的能力。

让咱们一起来看看此次 2.9.0 版本中咱们新增了哪些激动人心的个性吧。

如果你是第一次晓得这个我的项目,能够去官网或相干的主页进行理解:

我的项目官网:

https://liteflow.yomahub.com

gitee 托管仓库:

https://gitee.com/dromara/lit…

github 托管仓库:

https://github.com/dromara/li…

循环表达式

尽管之前 LiteFlow 在表达式层面领有诸多的关键字,能够满足大部分的编排场景。然而在循环层面,并没有原生提供语法来反对。很多小伙伴只能依附隐式流程本人来实现循环操作。

在 2.9.0 版本中,咱们新增了 次数循环表达式 条件循环表达式

次数循环表达式:

<!-- 间接写数字 -->
<chain name="chain1">
    FOR(5).DO(THEN(a, b, c);
</chain>
<!-- 在 java 组件里获取次数 -->
<chain name="chain1">
    FOR(x).DO(THEN(a, b, c);
</chain>

条件循环表达式:

<chain name="chain1">
    WHILE(w).DO(THEN(a, b, c);
</chain>

退出循环关键字:

<!-- BREAK 能够和 FOR...DO 连用 -->
<chain name="chain1">
    FOR(x).DO(THEN(a, b).BREAK(c);
</chain>
<!-- BREAK 能够和 WHILE...DO 连用 -->
<chain name="chain1">
    WHILE(w).DO(THEN(a, b).BREAK(c);
</chain>

对于循环表达式的具体阐明请查看 [循环编排] 章节。

https://liteflow.yomahub.com/…

中间件的原生存储反对

之前 LiteFlow 只反对本地文件和 zk 形式存储,如果你想用其余的形式存储规定,LiteFlow 提供了扩大接口,须要使用者本人去实现。

这无疑减少了一些应用老本。

在 v2.9.0 版本中,官网从底层推出了规定存储插件机制,并一口气推出了 SQL 数据库,Nacos,Etcd 的反对,当然之前的 ZK 反对也独立出了插件。

应用插件,你无需再去本人扩大接口实现。只需引入插件。配置参数即可。大大降低了应用老本。

当然,对于没提供的中间件插件实现,你仍旧能够自行扩大去实现。

ZK 规定插件具体阐明:[ZK 规定文件配置源]

https://liteflow.yomahub.com/…

SQL 数据库规定插件具体阐明:[SQL 数据库配置源]

https://liteflow.yomahub.com/…

Nacos 规定插件具体阐明:[Nacos 配置源]

https://liteflow.yomahub.com/…

Etcd 规定插件具体阐明:[Etcd 配置源]

https://liteflow.yomahub.com/…

办法级的申明式组件

之前 LiteFlow 推出了申明式组件,不晓得大家都用过没。

申明式组件有一个最大的益处就是无侵入,你仅需通过注解就能够定义出一个组件。提供了自在扩大的可能。

然而类申明组件也是须要一个类对应一个组件。如果你的组件超多,达到上百个,那就须要定义上百个类。造成了类爆炸的景象,不好治理。

v2.9.0 推出的办法级的申明式组件正好能解决这个痛点。新版本容许你在一个类里通过办法上的注解实现多个组件的申明。这所有仅仅须要一个注解即可实现。

对于办法级的申明式的具体应用办法请参考:[办法级别式申明]

https://liteflow.yomahub.com/…

任意 Bean 均可引入至脚本

早在 2.6.X 的时候 LiteFlow 就反对了脚本编写,有些易变且简略的逻辑你能够用脚本来进行编写。

然而之前的版本,脚本里只能援用上下文。

有的小伙伴心愿脚本领有更多的能力,让脚本和 java 代码之间领有更多的交互,比方用脚本读个文件?比方用脚本进行一次 RPC 的调用?

这次 v2.9.0 带来了新的个性,任意 Bean 均可引入至脚本,换而言之,就是在脚本里能够调用任意 Java Bean 的对象。

这所有只须要一个注解即可实现。

对于脚本与 Java 之间交互的加强的具体应用办法请参考:[与 Java 进行交互]

https://liteflow.yomahub.com/…

反对单组件的多定义

LiteFlow 之前的版本是不反对单组件多定义的,也就是把一个组件定义成不同的 NodeId。如果你这样去定义,那这个组件总是被最初一个 NodeId 所笼罩。

v2.9.0 当初反对了这种定义形式,你能够用动静代码来构建组件,给同一个组件构建不同的 nodeId。

对于动静代码构建组件的具体应用办法请参考:[如何动静结构]

https://liteflow.yomahub.com/…

组件级别的规定参数设置

之前 LiteFlow 在规定层面是没法给组件设置额定的参数的。

参数只有 request 层面的参数,由 FlowExecutor 调用的时候传入。大多数状况,reqeust 传入的参数就曾经够用了。

然而当雷同组件进行编排时,可能要在不同的地位设置不同的组件级参数,就没方法做到了。

这次 v2.9.0 版本带来了这一个性的反对,新增了 data 关键词,你能够这样应用:

<chain name="chain1">
    cmpData = '{"name":"jack","age":27,"birth":"1995-10-01"}';

    THEN(
        a,
        b.data(cmpData),
        c
    );
</chain>

对于组件参数的应用具体请参考:组件参数

https://liteflow.yomahub.com/…

抉择组件反对标签抉择

LiteFlow 以前的版本对于抉择组件返回参数的定义是:只能返回可执行项的 id,比方:

<chain name="chain1">
    SWITCH(s).to(a, b);
</chain>

s 组件,要么返回 a,要么返回 b,要么返回空,除此之外的任何其余返回都会报错提醒。

v2.9.0 当初反对对 tag 的抉择了,你能够如下定义 tag:

<chain name="chain1">
    SWITCH(s).to(a.tag("cat"), b.tag("dog"));
</chain>

那么要抉择到 b 组件,除了能够返回 ”b”,还能够写返回:”tag:dog”。

对于抉择反对标签写法的应用具体请参考:[抉择组件]

https://liteflow.yomahub.com/…

去除了旧表达式的反对

LiteFlow 在 v2.6.X 和 v2.7.X 阶段是用标签表达式来编排的。

在 v2.8.X 版本全面转向了 EL 表达式,然而也是反对标签表达式的。算是一个兼容的版本。所以你会看到 EL 表达式的规定文件会要求用 el.xml 这种模式来定义。

然而在 v2.9.0 中,咱们移除了标签表达式的反对。当前将只会反对全新的 EL 表达式。

所以从 v2.9.0 开始不再有文件扩展名的束缚,你定义成 *.xml 还是 *.el.xml 都会反对。

为了兼容大家的文档浏览体验,防止造成了解上的错乱,文档中的示例还是保留了 *.el.xml 这种模式。这点大家留神下。

LiteFlowX IDEA 插件更新

反对了 FOR,WHILE,DO,BREAK 等关键字

带来了全新的图标 UI,并对不同的组件做了不同的图标 UI 辨别

对办法级申明作了反对

正文完
 0