当前位置: 首页 > 后端技术 > Java

国产规则编排引擎LiteFlowv2.9.0发布,众多功能来袭!

时间:2023-04-02 02:05:26 Java

PrefaceLiteFlowv2.9.0今天正式发布!同时还带来了正式版的LiteFlowX1.1.0IDEA插件!LiteFlowv2.9.0版本带来了很多的特性,一共19个问题,无数的优化。它具有所有已发布版本中最多的功能。我们对LiteFlow进行了纵向深度扩展,赋予新版LiteFlow更多的编程能力,适配更多场景。同时,我们也横向扩展了LiteFlow的广度,推出了规则插件机制,让LiteFlow能够支持更多的中间件。让我们来看看我们在这个2.9.0版本中添加了哪些令人兴奋的功能。如果你是第一次知道这个项目,可以到官网或相关主页了解一下:项目官网:https://liteflow.yomahub.comgitee托管仓库:https://gitee.com/dromara/lit...github托管仓库:https://github.com/dromara/li...循环表达式虽然LiteFlow之前在表达式层面有很多关键字,但它可以满足大部分的编排场景。但是在循环级别,没有原生语法支持它。很多小伙伴只能靠隐式流程来完成循环操作。在2.9.0版本中,我们添加了计数循环表达式和条件循环表达式。times循环表达式:FOR(5).DO(THEN(a,b,c);FOR(x).DO(THEN(a,b,c);条件循环表达式:WHILE(w).DO(THEN(a,b,c);退出循环关键字:FOR(x)一起使用。DO(THEN(a,b).BREAK(c);WHILE(w).DO(THEN(a,b).BREAK(c);循环表达式详见【循环排列】章节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/...早在2.6.XLiteFlow支持的情况下,任何Bean都可以引入到脚本中脚本,您可以在脚本中编写一些变量和简单的逻辑。但在以前的版本中,脚本中只能引用上下文。有的朋友希望脚本有更多的能力,让脚本和java代码之间有更多的交互,比如用脚本读取文件?比如用脚本进行RPC调用?这次v2.9.0带来了一个新特性,脚本中可以引入任意的Bean,也就是说,脚本中可以调用任意JavaBean的对象。所有这些都可以通过一个注解来完成。脚本与Java增强交互的使用方法详见:【与Java交互】https://liteflow.yomahub.com/...多定义支持单组件LiteFlow之前版本不支持single-component多个定义,即定义一个组件为不同的NodeId。如果你这样定义,那么这个组件会一直被最后一个NodeId覆盖。v2.9.0现在支持这种定义方式,可以使用动态代码构建组件,对同一个组件构建不同的nodeId。动态代码构建组件的详细使用方法请参考:【如何动态构建】https://liteflow.yomahub.com/...在组件级别设置规则参数之前,LiteFlow无法为组件设置额外的参数在规则级别。参数只是请求级别的参数,在调用FlowExecutor时传入。大多数情况下reqeust传入的参数就足够了。但是在布置同一个元件时,可能需要在不同的位置设置不同的元件级参数,这是不可能的。这次v2.9.0版本带来了对这个特性的支持,加入了data关键字,可以这样使用:cmpData='{"name":"jack","age":27,"出生":"1995-10-01"}';THEN(a,b.data(cmpData),c);组件参数的使用详见:组件参数https://liteflow.yomahub.com/...选择组件支持标签选择的之前版本的LiteFlow定义了选择组件的返回参数:只能返回可执行项的id,例如:SWITCH(s).to(a,b);s组件,要么返回a,要么返回b,要么返回空,其他任何返回都会报错。v2.9.0现在支持标签的选择,你可以定义标签如下:SWITCH(s).to(a.tag("cat"),b.tag("dog"));然后选择b组件,除了返回"b",还可以写返回:"tag:dog"。select支持标签写法的使用详情请参考:【SelectComponent】https://liteflow.yomahub.com/...RemovedsupportforoldexpressionsLiteFlowisinthev2.6.Xandv2.7.Xstages使用标签表达式排列。在v2.8.X版本中,已经全面转向EL表达式,同时也支持标签表达式。它是一个兼容版本。所以你会看到EL表达式的规则文件会以el.xml的形式定义。但在v2.9.0中,我们移除了对标签表达式的支持。以后只支持全新的EL表达式。所以从v2.9.0开始,文件扩展名没有限制,不管你定义成*.xml还是*.el.xml都会支持。为了兼容大家的文档阅读体验,避免理解上的混乱,文档中的示例仍然保留*.el.xml的形式。请注意这一点。LiteFlowXIDEA插件更新支持FOR、WHILE、DO、BREAK等关键字,带来全新的图标UI,并对不同的组件进行不同的图标UI区分,支持方法级声明。