• dolphinscheduler 2.0.6 任务之间的参数传递及Java脚本引擎


    *️⃣主目录:dolphinscheduler 3.0.1功能梳理及源码解读

    🐬任务之间参数传递及条件节点介绍


    Condition节点主要依据上游节点的执行状态(成功、失败)执行对应分支。Switch节点主要依据全局变量的值和用户所编写的表达式判断结果执行对应分支

    🐠shell节点传递参数


    • 语法: ${setValue(key=value)} ,如下图,自定义输出参数(out)-isExist,选择类型boolean及其默认值(value)- false,也可以不填写,在脚本内容中通过逻辑判断使用 ${setValue(isExist=true)}isExist 赋值
      在这里插入图片描述
    • 定义Switch节点
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
    • 验证
      在这里插入图片描述
      在这里插入图片描述

    🐠sql节点传递参数


    • 输出参数和字段名成保持一致,涉及别名通过as匹配
      在这里插入图片描述
      switch节点条件判断支持力度?
      在这里插入图片描述
    • 只支持对变量的比较,不支持扩展,比如list.size()方法,此时只能改上游任务,比如select count(id) from ...
      在这里插入图片描述
    • 定义int比较大小是可以的,shell节点定义Boolean,比较时候却要加引号
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述

    🐟switch源码(使用的java脚本引擎)


    • Boolean方法,即大小相等比较
      在这里插入图片描述
    • ScriptEngine:Java 脚本引擎,执行脚本内容,需要根据对engine.eval()转换,计算类可以指定Double,比较结果可以指定Boolean
      在这里插入图片描述
      • 测试类

        import java.util.List;
        
        import javax.script.ScriptEngine;
        import javax.script.ScriptEngineFactory;
        import javax.script.ScriptEngineManager;
        import javax.script.ScriptException;
        
        public class Test {
            private static ScriptEngineManager manager;
            private static ScriptEngine engine;
            static {
                manager = new ScriptEngineManager();
                engine = manager.getEngineByName("js");
                // Get the list of all available engines
                List<ScriptEngineFactory> list = manager.getEngineFactories();
        
                // Print the details of each engine
                for (ScriptEngineFactory f : list) {
                    System.out.println("Engine Name:" + f.getEngineName());
                    System.out.println("Engine Version:" + f.getEngineVersion());
                    System.out.println("Language Name:" + f.getLanguageName());
                    System.out.println("Language Version:" + f.getLanguageVersion());
                    System.out.println("Engine Short Names:" + f.getNames());
                    System.out.println("Mime Types:" + f.getMimeTypes());
              }
            }
            public static boolean evaluateB(String expression) throws ScriptException {
                Object result = engine.eval(expression);
                return (Boolean) result;
            }
            public static Integer evaluateI(String expression) throws ScriptException {
                Object result = engine.eval(expression);
                return (Integer) result;
            }
            
            public static void main(String[] args) throws ScriptException {
                System.out.println(evaluateB("6> 5"));
                System.out.println(evaluateI("6 + 5"));
                System.out.println(evaluateI("if(5==6) { 5+6 } else { 5*6 } "));
            }
            
        }
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
        • 9
        • 10
        • 11
        • 12
        • 13
        • 14
        • 15
        • 16
        • 17
        • 18
        • 19
        • 20
        • 21
        • 22
        • 23
        • 24
        • 25
        • 26
        • 27
        • 28
        • 29
        • 30
        • 31
        • 32
        • 33
        • 34
        • 35
        • 36
        • 37
        • 38
        • 39
        • 40
        • 41
        • 42
      • 执行结果

        Engine Name:Oracle Nashorn
        Engine Version:1.8.0_151
        Language Name:ECMAScript
        Language Version:ECMA - 262 Edition 5.1
        Engine Short Names:[nashorn, Nashorn, js, JS, JavaScript, javascript, ECMAScript, ecmascript]
        Mime Types:[application/javascript, application/ecmascript, text/javascript, text/ecmascript]
        true
        11
        30
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
        • 9

    🐟再次测试


    🐡上游参数 id=6

    在这里插入图片描述

    🐡使用if-不支持

    在这里插入图片描述
    在这里插入图片描述

    🐡去除if-支持

    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    软件测试/测试开发/人工智能丨视觉与图像识别自动化测试
    vue - Vue2兼容低版本浏览器
    Web3 游戏发展趋势的 5 个预测
    庖丁解牛:NIO核心概念与机制详解 06 _ 连网和异步 I/O
    day4_C++
    SpringBoot+Vue项目大学校园防疫与服务系统的设计与实现
    简述LSM-Tree
    【数据结构功法】第4话 · 手把手拉着你入门单链表
    CSS常见样式
    Django: 2. 创建菜单界面
  • 原文地址:https://blog.csdn.net/qq_36434219/article/details/128131579