逻辑算子


智能任务流提供以下几种逻辑算子:

  • Condition(条件算子)

  • ParallelFor(循环算子)

  • Recursion(递归算子)

  • OnExit(退出算子,未包含在逻辑算子列表中,可在任务流编辑画布的参数配置中设置)

Condition 算子

Condition 算子用于实现逻辑判断,根据设定的条件表达式执行不同的任务,目前支持大于、小于、大于等于、小于等于、等于、不等于等单运算符。

表达式格式和说明

Condition 算子的表达式格式为:

左侧操作数类型 | 左侧操作数 | 操作符 | 右侧操作数类型 | 右侧操作数


表达式元素

说明

左侧操作数类型

可选声明和引用两种类型。

左侧操作数

当左侧操作数类型为声明时,左侧操作数为输入的固定值,如字符串 abc、数字15等;当左侧操作数类型为引用时,左侧操作数可选择任务流全局参数或前一个算子的输出。

操作符

表达式的运算符,支持大于、小于、大于等于、小于等于、等于、不等于等单运算符。

右侧操作数类型

可选声明和引用两种类型。

右侧操作数

当右侧操作数类型为声明时,右侧操作数为输入的固定值,如字符串 abc、数字15等;当右侧操作数类型为引用时,右侧操作数可选择任务流全局参数或前一个算子的输出。

使用须知

  • 尽量避免使用无效的条件表达式,如 1==1

  • 暂不支持复合条件表达式,如与、或关系的多条件表达式组合。

配置和使用示例

有关 Condition 算子的详细配置和使用示例,参见 编排任务流 中的示例。

ParallelFor 算子

ParallelFor 算子实现循环处理逻辑,仅支持引用类型。可根据引用的全局 list 类型参数、或前一个算子输出的 list 类型参数对 list 里的元素进行循环处理。

输入参数和说明

ParallelFor 算子的输入参数格式为:

List来源类型 | 引用的List | Item名称


参数

说明

List来源类型

当前仅支持引用类型。引用表示输入参数中 List常量或引用 栏会使用一个List类型的引用,引用可以来自任务流全局参数或前一个算子的输出参数。

引用的List

引用可以来自任务流全局参数或前一个算子的输出参数。

Item名称

用于指向List中的每个元素,缺省值为item,也可以修改为其它名称。

使用须知

  • ParallelFor 算子里使用的item名称须与 ParallelFor 逻辑算子上定义的名称保持一致。

  • 引用的list必须是List类型,支持如:["a","b","c"][1,2,3] 这种List类型。

配置和使用示例

以下示例介绍 ParallelFor 算子的配置和使用说明:

  1. 将 ParallelFor 算子拖拽到编辑画布中。

  2. 点击编辑画布空白处,在任务流参数配置中,添加参数 loop_args,并为参数配置一个全局变量 [{"A_a":1,"B_b":2},{"A_a":10,"B_b":20}]

    ../_images/parallelfor_config_1.png
  3. 选中 ParallelFor 算子,在其参数配置的 输入参数 项中,引用参数 loop_args

    ../_images/parallelfor_config_2.png
  4. 双击 ParallelFor 算子,打开其子画布,将 print-op 算子拖拽到编辑画布中,用于输出 item.A_a

    ../_images/parallelfor_config_3.png
  5. 保存任务流后,点击 运行。运行成功后,可查看任务流的运行情况。

    ../_images/parallelfor_config_4.png

Recursion 算子

Recursion 算子实现编程语言中类似 do ... while 的功能,Recursion 算子中定义的条件表达式即为循环退出的条件。

表达式格式和说明

Recursion 算子的表达式格式为:

左侧操作数类型 | 左侧操作数 | 操作符 | 右侧操作数类型 | 右侧操作数


表达式元素

说明

左侧操作数类型

可选声明和引用两种类型。

左侧操作数

当左侧操作数类型为声明时,左侧操作数为输入的固定值,如字符串 abc、数字15等;当左侧操作数类型为引用时,左侧操作数可选择任务流全局参数或前一个算子的输出。

操作符

表达式的运算符,支持大于、小于、大于等于、小于等于、等于、不等于等单运算符。

右侧操作数类型

可选声明和引用两种类型。

右侧操作数

当右侧操作数类型为声明时,右侧操作数为输入的固定值,如字符串 abc、数字15等;当右侧操作数类型为引用时,右侧操作数可选择任务流全局参数或前一个算子的输出。

使用须知

  1. 避免死循环逻辑,如:使用无效的条件表达式,如 1==1 会使任务流运行时无法退出循环。

  2. 当操作数类型选引用时,仅能使用 Recursion 算子子画布里算子的输出参数。一般 Recursion 算子的使用方式为:左侧操作数引用子画布算子的输出参数,右侧操作数使用声明类型的常量。

  3. 暂不支持复合条件表达式,如与、或关系的多条件表达式组合。

配置和使用示例

本章节以 “抛硬币” 场景为例(如果是硬币正面则一直抛硬币,直到出现硬币反面则退出),介绍 Recursion 算子的配置和使用说明:

  1. 将 Recursion 算子拖拽到编辑画布中。

  2. 双击 Recursion 算子,打开其子画布,添加 flip-coin-op 算子,连接一个 print-op 算子用于打印 flip-coin-op 的 output 值。

    ../_images/recursion_config_1.png
  3. 选中 Recursion 算子,引用子画布中 flip-coin-op 算子的 output 值作为 Recursion 算子的表达式:flip-coin-op.output == tails

    ../_images/recursion_config_2.png
  4. 为 Recursion 算子连接一个 print-op 算子,当递归结束后,输出 Finish

    ../_images/recursion_config_3.png
  5. 保存任务流后,点击 运行。运行成功后,可查看任务流的运行情况。

    ../_images/recursion_config_4.png

OnExit 算子

退出算子,未包含在逻辑算子列表中,可在任务流编辑画布的参数配置中设置。本章节通过以下示例,介绍退出处理逻辑:

  1. 将自定义算子 gcs-download-op 拖拽到编辑画布中,在其 输入参数 配置项中,使用 URL gs://ml-pipeline-playground/shakespeare1.txt

    ../_images/onexit_config_1.png
  2. 为 gcs-download-op 算子连接一个 print-op 算子,用于打印 gcs-download-op 算子的 output 值。

    ../_images/onexit_config_2.png
  3. 再添加一个 print-op 算子,作为退出处理算子。

    ../_images/onexit_config_3.png
  4. 保存任务流后,点击 运行。运行成功后,可查看任务流的运行情况。

    ../_images/onexit_config_4.png