分支任务
产品概念
分支任务用于在工作流调度中实现条件路由,根据上游任务的输出结果动态决定后续哪条链路被触发执行。与 For-each 循环任务类似,分支任务需要与有输出参数的上游任务联合使用,通过对输出数据集进行表达式计算,将结果映射到不同的下游链路上。
本文为你介绍分支任务的组成与应用逻辑。
使用场景
如果你在设计工作流的过程中,需要基于某一个节点的输出结果去判断后续如何执行时,则可以使用分支任务节点去进行路径的选择。
运行原理

-
上游任务输出:上游任务(SQL、Python、Shell 等)通过
参数将数据集传递给下游分支节点。$[output] -
分支任务:接收上游数据集,对其执行一系列表达式计算,根据计算结果决定触发哪条下游链路。
- 输入参数:配置从哪条上游任务获取输出集,格式为
。${参数名}={output}:上游任务名 - 表达式:通过内置函数进行逻辑判断。表达式结果为
时,该分支对应的下游链路被触发执行。true - 分支输出名:每个分支条件对应一个输出名,用于与下游任务建立依赖关系。
- 输入参数:配置从哪条上游任务获取输出集,格式为
-
下游任务引用:下游任务挂载依赖时,需指定与上游分支节点的哪个输出名关联。
操作步骤
创建分支任务
在任务列表或组合任务/任务组中,点击新建任务,选择任务类型为分支任务。
分支任务是可视化配置页面,每个分支需要配置以下信息:
分支条件
配置当前分支的判断表达式,支持的函数见:支持的表达式函数。
- 如果运行态表达式取值为true,表示满足对应的分支条件。
- 如果运行态表达式解析报错,会将整个分支节点运行状态置为失败。
- 分支条件中支持使用全局变量和节点上下文定义的参数。例如,${input}可以是定义在分支节点的节点输入参数。
分支输出名
当前分支条件判断后的输出标识,用于与下游任务建立依赖。
- 满足分支条件时:对应输出名挂载的下游节点被触发执行。
- 不满足分支条件时:对应输出名挂载的下游节点不执行,状态置为因为分支条件不满足而结束。
输出名格式要求:支持中英文和下划线
_,最多 128 个字符,同一分支任务内输出名不允许重复。
分支描述
非必填,用于记录该分支的简要说明。
配置分支下游任务
分支条件触发后,期望运行的下游节点需要进行响应的配置。 选择期望运行的下游节点,点击进入后,配置「调度配置」:在调度依赖中选择分支任务内具体的输出名。
例如: 例如,分支节点下游关联两个节点,节点名称分别为aaa和bbb。当分支条件为1时,以aaa节点逻辑运行。当分支条件为2时,以bbb节点逻辑运行。则配置分支节点时,关联到节点输出可以随便配置。例如,分支1关联节点输出为1234,分支2关联节点输出为2324,则均会作为本分支节点的输出名称。下游aaa节点需要挂载分支节点的输出名称1234,bbb节点需要挂载分支节点的输出名称2324。
支持的表达式函数
布尔转换规则:
null、空字符串、空白字符串、false、数字 0 视为 false;true、非零数字视为 true;其他非数字字符串不会被当作 true。
当前不支持:数学运算、日期时间、JSON Path / 对象属性访问、正则匹配、空值合并等函数。
逻辑函数
| 函数签名 | 返回类型 | 说明 |
|---|---|---|
| | 所有参数转布尔后均为 时返回 ,支持 1 个或多个参数。示例: |
| | 任一参数转布尔后为 即返回 ,支持 1 个或多个参数 |
| | 对参数做布尔取反 |
比较函数
两侧均可转为数字时按数值比较,否则按字符串字典序比较。
| 函数签名 | 返回类型 | 说明 |
|---|---|---|
| | 两值标准化后相等返回 |
| | |
| | |
| | |
| | |
集合函数
集合函数适用于数组(
List / Collection / JSONArray)、字符串,部分函数也支持字典(JSONObject / Map)。
| 函数签名 | 返回类型 | 说明 |
|---|---|---|
| | 字符串:判断是否包含子串;集合:按标准化值逐项比较;JSONObject / Map:判断是否包含指定 key |
| | 、空字符串、空集合、空 JSONObject / Map 均返回 |
| 首元素 | 字符串返回首字符;List / Collection 返回首元素;空时返回 |
| 末元素 | 字符串返回末字符;List / Collection 返回末元素;空时返回 |
| | 字符串返回字符数;集合 / Map 返回元素个数; 返回 |
| 同输入类型 | 跳过前 个字符或元素;、非整数或 为 时直接返回原值 |
| 同输入类型 | 保留前 个字符或元素;、非整数或 为 时直接返回原值 |
| | 合并多个列表并去重,保留首次出现顺序;所有参数必须可转为列表,否则返回 |
| | 返回多个列表的交集,顺序以第一个列表为准;所有参数必须可转为列表,否则返回 |
| | 用分隔符拼接列表所有元素;第一个参数必须可转为列表,否则返回 |
字符串函数
| 函数签名 | 返回类型 | 说明 |
|---|---|---|
| | 按顺序拼接所有参数, 参数会被忽略,支持 1 个或多个参数 |
| | 生成一个随机 UUID 字符串,不接受参数 |
| | 返回子串首次出现位置,找不到返回 |
| | 返回子串最后一次出现位置,找不到返回 |
| | 替换所有匹配子串; 为 返回空字符串; 或 为 时按空字符串处理 |
| | 按分隔符切分字符串;分隔符为空字符串时按单字符切分; 为 返回空列表 |
| | 检查字符串是否以指定前缀开头 |
| | 检查字符串是否以指定后缀结尾 |
| | 从 位置截取 个字符; 超界、参数非法或为负数时返回空字符串;末尾超界时自动截断 |
| | 转小写; 返回空字符串 |
| | 转大写; 返回空字符串 |
| | 去除首尾空白; 返回空字符串 |
| | 将值转为字符串; 返回空字符串 |
转换函数
| 函数签名 | 返回类型 | 说明 |
|---|---|---|
| | 按内置布尔转换规则返回布尔值(见文首类型说明) |
