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)
铂赛东
2022-06-01
目录

升级到2.8.X说明

此文档仅适用于从2.7.X升级到2.8.X的指南。

如果你现在使用的版本是2.6.X,那么在升级到2.8.X之前,请先看升级到2.7.X说明。

2.8.X是一个里程碑系列。设计了全新的EL形式的规则表达式。但是也保持了对原有规则的支持,使得以前版本的LiteFlow能够以相对平滑的方式迁移到新版本。

# 🌼2.7.X迁移到2.8.X版本注意事项

# 第一部分

如果你不打算更换规则表达式的形式,你只需要做以下几点就可以了:

  1. 原先的NodeCondComponent现在更名成为了NodeSwitchComponent,中文表达也从条件组件变更成了选择组件。

    并且要实现的方法也从processCond变更成了processSwitch。

  2. 对于脚本组件来说,以前的脚本条件组件定义的type是cond_script,现在变成了switch_script,中文表达也从脚本条件组件变更成了脚本选择组件。

  3. 对于声明式组件来说,以前的@LiteflowCondCmpDefine 更名成了@LiteflowSwitchCmpDefine,方法上的定义@LiteflowMethod(LiteFlowMethodEnum.PROCESS_COND)现在变更成了@LiteflowMethod(LiteFlowMethodEnum.PROCESS_SWITCH)。

  4. 原先获取上下文的方式是在组件中调用this.getContextBean(),在2.8.X中需要传入上下文的Class。

    为什么多传入一个Class呢,因为2.8.X中支持了多上下文的全新特性。你取上下文需要改成以下形式:

    //推荐以下用法
    YourContextBean contextBean = this.getContextBean(YourContextBean.class);
    //2.8.X支持了多上下文的特性,如果你的上下文只有一个的话,用以下语句则和上面等价
    YourContextBean contextBean = this.getFirstContextBean();
    
  5. LiteflowResponse对象原先需要定义成泛型的形式,现在不需要泛型了。直接写就可以了。Slot也是,没有泛型了,请在你的代码中去掉泛型。

  6. 如果你的代码实现过LiteFlow的全局组件拦截接口ICmpAroundAspect,也请去掉相关泛型。

  7. 新版本中去除了FlowExecutor直接返回数据上下文的用法,统一用LiteflowResponse类来接收。

# 第二部分

如果你想用新的规则表达式,除了第一部分要做以外,还要注意第二部分的变更

  1. 你需要学习EL的表达语法,请参照EL规则的写法。你需要替换所有的规则表达式写法。

  2. 你需要把规则文件名改成xxxx.el.xml的形式(如果不改名,还是会按以前的方式去解析,可能会报错)。

  3. 如果你的规则文件是通过自定义配置源或者zk加载的,原先的写法是:

     #自定义配置源
     liteflow.rule-source=xml:com.yomahub.liteflow.test.parsecustom.parser.CustomXmlFlowParser
     #zk加载
     liteflow.rule-source=xml:127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183
    

    现在需要把xml:变成el_xml,json和yaml也是同理。

    #自定义配置源
    liteflow.rule-source=el_xml:com.yomahub.liteflow.test.parsecustom.parser.CustomXmlFlowParser
    #zk加载
    liteflow.rule-source=el_xml:127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183
    
  4. 如果你使用过LiteFlow的被动平滑刷新功能,并且规则已经变更成了EL表达式形式,以前的写法是:

    FlowBus.refreshFlowMetaData(FlowParserTypeEnum.TYPE_XML, newContent);
    FlowBus.refreshFlowMetaData(FlowParserTypeEnum.TYPE_JSON, newContent);
    FlowBus.refreshFlowMetaData(FlowParserTypeEnum.TYPE_YML, newContent);
    

    现在需要更换FlowParserTypeEnum的枚举,变成这样:

    FlowBus.refreshFlowMetaData(FlowParserTypeEnum.TYPE_EL_XML, newContent);
    FlowBus.refreshFlowMetaData(FlowParserTypeEnum.TYPE_EL_JSON, newContent);
    FlowBus.refreshFlowMetaData(FlowParserTypeEnum.TYPE_EL_YML, newContent);
    
  5. 如果你的规则是基于代码动态构建的。现在的动态构建API更加简单,请参照用代码动态构造规则。

帮助我们改善此文档 (opens new window)
上次更新: 2022/10/07, 13:21:20
Theme by Vdoing | Copyright © 2020-2025 铂赛东 | MIT License
沪ICP备18012955号-2
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式