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)
  • 🍤LiteFlow简介
  • 🍓项目特性
  • 🍟快速开始(Hello world)

  • 🍢配置项

  • 🗂规则文件

  • 🔗常规组件

  • 🧩EL规则的写法

  • 🌮数据上下文

  • 🛩执行器

  • 🍋脚本组件

    • 🍫选择脚本语言
    • 🍕定义脚本组件
    • 🌯文件脚本的定义
    • 🍣与Java进行交互
    • 🍘动态刷新脚本
  • 🍇声明式组件

  • 🎲用代码动态构造规则

  • 🎨高级特性

  • ⛱测试用例以及示例

  • 🪂性能表现
  • v2.9.X文档
  • 🍋脚本组件
铂赛东
2022-10-05

🍕定义脚本组件

脚本节点定义是在规则文件中,你需要做如下定义(这里以xml文件格式举例):

<?xml version="1.0" encoding="UTF-8"?>
<flow>
    <nodes>
        <node id="s1" name="普通脚本" type="script" language="groovy">
            <![CDATA[
                def a=3;
                def b=2;
                defaultContext.setData("s1",a*b);
            ]]>
        </node>

        <node id="s2" name="选择脚本" type="switch_script" language="groovy">
            <![CDATA[
                def count = defaultContext.getData("count");
                if(count > 100){
                    return "a";
                }else{
                    return "b";
                }
            ]]>
        </node>

        <node id="s3" name="条件脚本" type="if_script" language="groovy">
            <![CDATA[
                return false;
            ]]>
        </node>

        <node id="s4" name="数值循环脚本" type="for_script" language="groovy">
            <![CDATA[
                //此处可以用来获取你的循环次数,可以调用java对象来获取,这里演示直接返回循环次数
                return 10;
            ]]>
        </node>

        <node id="s5" name="条件循环脚本" type="while_script" language="groovy">
            <![CDATA[
                //此处用来获取什么时候继续循环的标识,可以调用java对象来获取,这里只是演示
                def flag = yourJavaBean.getFlag();
                return flag;
            ]]>
        </node>

        <node id="s6" name="退出循环脚本" type="break_script" language="groovy">
            <![CDATA[
                //此处用来获取什么时候退出循环的标识,可以调用java对象来获取,这里只是演示
                def breakFlag = yourJavaBean.getFlag();
                return flag;
            ]]>
        </node>
    </nodes>

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

    <chain name="chain2">
        THEN(d, SWITCH(s2).to(a, b));
    </chain>

    <chain name="chain3">
        THEN(d, IF(s3, b, c));
    </chain>

    <chain name="chain4">
        FOR(s4).DO(THEN(a,b)).BREAK(s6);
    </chain>

    <chain name="chain5">
        WHILE(s5).DO(THEN(a,b));
    </chain>
</flow>

要注意的是,type分为6种:

script:普通脚本节点,脚本里无需返回。

switch_script:选择脚本节点,脚本里需要返回选择的节点Id。

if_script:条件脚本节点,脚本里需要返回true/false。

for_script:数量循环节点,脚本里需要返回数值,表示循环次数。

while_script:条件循环节点,脚本里需要返回true/false,表示什么条件才继续循环。

break_script:退出循环节点,脚本里需要返回true/false,表示什么时候退出循环。

你可以在示例的位置进行编写动态脚本来处理业务逻辑。

提示

这里language并不是必须的,由于LiteFlow是根据你依赖的jar包里动态选择脚本语言,采用的是SPI机制。

这里的language声明主要是用来给LiteFlowX插件用来做语法高亮提示处理用的。如果你不加,则不会有相应的语法高亮和提示。

当然得确保你的LiteFlowX插件的版本在1.1.1及以上。

提示

这里示例是传入的上下文bean是默认的DefaultContext,如果是你自定义的上下文Bean,请调用相应的方法来设置和获取数据。

帮助我们改善此文档 (opens new window)
上次更新: 2023/03/17, 01:44:42
🍫选择脚本语言
🌯文件脚本的定义

← 🍫选择脚本语言 🌯文件脚本的定义→

Theme by Vdoing | Copyright © 2020-2025 铂赛东 | MIT License
沪ICP备18012955号-2
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式