2.12.4升级指南
# 说明
2.13.0不是一个不完全向下兼容的版本。为什么说不完全,因为大部分用户应该是能兼容的。少部分用户涉及到以下这些内容的都必须按照指南来升级。
这份升级指南只适用从2.12.X升级到2.13.0版本。
如果你在使用的LiteFlow为更老的版本,请逐级阅读升级文档。
比如你现在使用的是2.10.X版本,想升到2.13.0。必须请依此阅读2.12.0升级指南
,2.12.4升级指南
,2.13.0升级指南
。
# 不兼容点1:java插件
如果你之前在使用
<dependency>
<groupId>com.yomahub</groupId>
<artifactId>liteflow-script-java</artifactId>
<version>2.12.X</version>
</dependency>
那么很可惜,它在新版本中已经不提供了。当然你仍然可以使用以前的版本,它的最后一个版本为2.12.4.5
。
建议大家把java插件往javax-pro
上进行迁移,当然javax
插件仍旧提供并会继续迭代的。
具体关于这几个java脚本插件的区别以及各个使用方法,请参照Java脚本插件。
# 不兼容点2:线程池相关的改动
以下原先的配置在新版本中全部失效:
#when节点全局异步线程池最大线程数,默认为16
liteflow.when-max-workers=16
#when节点全局异步线程池等待队列数,默认为512
liteflow.when-queue-limit=512
#并行节点的线程池Builder,LiteFlow提供了默认的Builder
liteflow.thread-executor-class=com.yomahub.liteflow.thread.LiteFlowDefaultWhenExecutorBuilder
#并行循环子项线程池最大线程数,默认为16
liteflow.parallel-max-workers=16
#并行循环子项线程池等待队列数,默认为512
liteflow.parallel-queue-limit=512
#并行循环子项的线程池Builder,LiteFlow提供了默认的Builder
liteflow.parallel-loop-executor-class=com.yomahub.liteflow.test.customThreadPool.CustomThreadBuilder
以下2个配置在新版本中合成一套配置:
#全局异步节点线程池大小,默认为64
liteflow.global-thread-pool-size=64
#全局异步节点线程池队列大小,默认为512
liteflow.global-thread-pool-queue-size=512
#全局异步节点线程池自定义Builder,LiteFlow提供了默认的线程池Builder
liteflow.global-thread-pool-executor-class=com.yomahub.liteflow.thread.LiteFlowDefaultGlobalExecutorBuilder
默认线程池大小也改为了64。when和异步循环默认都受一个线程池影响。 新版本给予了线程池方面非常大的自由度。如果你想把线程池分的更细点,请参照组件异步层面的线程池这一小节。
# 不兼容点3:ELBus的操作
原先ELBus.then("a", "b")).toEL(),会输出THEN(node("a"), node("b"))。
新版本则直接输出THEN(a,b)。
这个请知晓,但不涉及代码改动。
如果以前曾经使用ELBus.commonNode方法的同学,这次这个方法被删除了,变成了ELBus.element。
关于node方法和element方法的区别请参考在节点上设置关键字。
# 不兼容点4:注释
在新版本中,以前注释的写法不再支持:
<chain name="chain1">
//我是注释
THEN(a, b, WHEN(c, d))
</chain>
从2.13.0开始,只支持/** **/这种注释,不支持单行注释//
并且/** **/这种注释也不能夹在表达式当中,比如以下形式就是不行的:
<chain name="chain1">
THEN(
a,b,
/** 我是注释 **/
WHEN(c, d)
)
</chain>
大家会不会奇怪,原先支持的形式更多,现在新版本怎么反而还降级了呢?
这是因为原先是靠正则去去除注释的,正则在解析的时候会耗费大量的性能。而底层表达式本身在处理语法的时候就支持单行注释。所以相较之下,还是选择了性能优先,舍弃注释的便捷性。