码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • dolphinscheduler 2.0.6 任务之间的参数传递及Java脚本引擎


    目录

    • 🐬任务之间参数传递及条件节点介绍
      • 🐠shell节点传递参数
      • 🐠sql节点传递参数
        • 🐟switch源码(使用的java脚本引擎)
        • 🐟再次测试
          • 🐡上游参数 `id=6`
          • 🐡使用if-不支持
          • 🐡去除if-支持

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

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


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

    • 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-支持

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

  • 相关阅读:
    @Reference 、@Resource和@Autowired的简单区分
    设计模式笔记
    Android问题笔记四十六:解决open failed: EACCES (Permission denied) 问题
    redroid11 集成 nvidia gpu hals
    Java I/O流概述
    (memcpy,memmove...)内存函数还不会??别怕,我来助你一臂之力
    Scala 初学者编程完整指南
    【Linux学习】动态库和静态库
    LCD婴儿电子秤pcba/芯片方案设计
    用补码计算x+y,并判断结果是否溢出问题
  • 原文地址:https://blog.csdn.net/qq_36434219/article/details/128131579
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号