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)
铂赛东
2024-04-14

2.12.0升级指南

v2.12.0并不是向下兼容的版本。需要使用者改一些东西,但是这不会花费使用者太多的时间。

v2.12.0最大的不兼容点在于去除了NodeWhileComponent,NodeIfComponent,NodeBreakComponent三个组件,全部合并成为了布尔组件,即NodeBooleanComponent。

也就是说,使用者涉及到的这三个组件,都需要把超类换成NodeBooleanComponent。

既然是合三为一了,那现在你定义一个布尔组件:

@LiteflowComponent("x")
public class ECmp extends NodeBooleanComponent {
    @Override
    public boolean processBoolean() throws Exception {
        // do your biz
        return true;
    }
}

这个组件可以用在IF,WHILE,BREAK中了

<chain id="chain1">
    IF(x, a, b);
</chain>

<chain id="chain2">
    WHILE(x).DO(THEN(a,b));
</chain>

<chain id="chain3">
    FOR(f).DO(THEN(a,b)).BREAK(x);
</chain>



如果你用了声明式组件,那么相应的@LiteflowMethod标注里的一些枚举都需要改变:

类声明式:

@LiteflowComponent("a")
public class DeclECmp{

    @LiteflowMethod(value = LiteFlowMethodEnum.PROCESS_BOOLEAN, nodeType = NodeTypeEnum.BOOLEAN)
    public boolean yourMethodName(NodeComponent bindCmp) throws Exception {
        //do your biz
    }
}

方法级别声明式:

@LiteflowComponent
public class CmpConfig {

    ...

    @LiteflowMethod(value = LiteFlowMethodEnum.PROCESS_BOOLEAN, nodeId = "a", nodeType = NodeTypeEnum.BOOLEAN)
    public boolean yourMethodName1(NodeComponent bindCmp) throws Exception {
        //do your biz
    }

    @LiteflowMethod(value = LiteFlowMethodEnum.PROCESS_BOOLEAN, nodeId = "b", nodeType = NodeTypeEnum.BOOLEAN)
    public boolean yourMethodName2(NodeComponent bindCmp) throws Exception {
        //do your biz
    }
    
    ...
}



如果你用了脚本组件,那么相应的script中的type类型也要改:

<flow>
    <nodes>
        <node id="s1" type="boolean_script" language="groovy">
            <![CDATA[
                // do your biz
            ]]>
        </node>

    </nodes>

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

    
</flow>

提示

如果你把脚本存在存储器中,比如db,etcd中,那么相应的type都需要变更。

值得注意的是,zk,etcd,apollo,redis这种存储插件中由于type是写在节点的key中的,所以type的变动,意味着key的变动。大家在升级时,如果符合这种情况的,千万不要忘掉这点。



全局参数中去除了parse-on-start这个参数,这个参数现在被parse-mode给取代了。

这个parse-mode一共有三种值:

设置值 含义
PARSE_ALL_ON_START 启动时解析所有的规则,不配置默认就是这个值
PARSE_ALL_ON_FIRST_EXEC 启动时不解析规则,但是第一次执行任意规则时,解析所有的
PARSE_ONE_ON_FIRST_EXEC 启动时不解析规则,但是第一次执行相关规则时,只解析对应的规则

原先的parse-on-start=true就相当于parse-mode=PARSE_ALL_ON_FIRST_EXEC,新版其实推荐用PARSE_ONE_ON_FIRST_EXEC。

关于这部分的详细解释,请看官网文档中的元数据管理 -> 启动不检查规则。



如果你使用了链路继承特性,那么原先的占位符是单花括弧{x},现在变成了双花括弧{{x}},此改动目的是为了和开发者自有的占位符不冲突。

具体使用方式可以参考官网文档中的高级特性 -> 链路继承。

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