目标:根据日期判断执行哪项子任务
调度器版本:3.2.0
在这个版本中官方支持的参数传递任务类型有6中,分别为shell,sql,procedure,python,subprocess,kubernetes。
失败样例
Switch任务是根据全局变量的值进行判断的,无法直接使用上游传递的参数,同时,如果使用任务的全局参数(dt=$[dd])做传递,参数传递成功,但是判断语句取用的是“$[dd]”,无法做到判断,样例如下:
Switch任务的语句判断:
任务全局参数设置
执行日志:
可以看到全局参数的传递获取到了当前日期,但之后任务判断语句的传递中成功,这个不清楚原因,猜测可能是语法问题。
成功样例
借助Shell和SubProcess完成日期参数的传递。使用shell获取日期,并设置传递参数到下游SubProcess任务中,将判断任务单独创建一个工作流,把判断工作流放在SubProcess任务中,这样完成了日期参数的传递及判断。
1、创建判断任务的工作流
设置判断条件
2、创建获取日期的Shell任务,设置传递参数
3、创建SubProcess任务,将日期判断任务添加到子任务中
4、执行日志
Shell任务获取日期成功
SubProcess任务获取到上游Shell任务传递的日期参数(dt=29),并传递给子任务
子任务中判断节点获取到dt参数值
判断部分读取dt参数
判断成功,执行符合条件的下游节点任务