# 循环
循环节点类似于编程语言中的foreach语法结构，用于遍历一个已知的序列（数组），对序列中的每个元素执行完全相同的步骤。用于在工作流中对Array参数进行迭代。当你需要批量处理数据、逐一遍历列表元素时，可以使用循环节点来实现。
#### 约束限制
- 循环体内不需要配置结束节点。
- 循环体内部不允许再配置循环节点。
- 循环支持并行模式，但是在并行模型下有以下限制：
  - 在并行模式下，循环中的任务支持并行执行。
  
  - 在并行模式下，不支持设置中间变量。
  
  - 在并行模式下，不支持设置子节点的推理过程。
  
  - 如果循环有问答相关的节点，不支持开启并行模式。
   
 
#### 循环体类型说明
- 编排：手动编排循环体内部逻辑，执行时，循环调用内部编排的逻辑。
- 工作流：执行时，循环调用引用的工作流。
 
#### 配置循环节点
1. 在工作流编排画布中，单击"添加节点"按钮，从节点列表中选择"循环"，即可将该节点添加至当前工作流编排画布中。 
   图1添加循环节点   
   ![](https://support.huaweicloud.com/usermanual-dataartsplatform/figure/zh-cn_image_0000002711712154.png "点击放大")
   
   
2. 单击"循环"节点，在弹出的节点详情页面中进行参数配置，参考[表1]。
   
   图2配置循环节点   
   ![](https://support.huaweicloud.com/usermanual-dataartsplatform/figure/zh-cn_image_0000002711712292.png "点击放大")
    表1循环节点参数说明 
   | 参数名称   | 参数说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
   |:---|:---|
   | 循环变量   | 需要迭代的Array类型的参数，只允许是Array类型。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
   | 循环间隔   | 循环时，每次执行完成跳过的元素数量，默认1。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
   | 中间变量  | 中间变量是循环节点中用于在每一轮循环之间传递和更新数据的参数。默认中间变量有index和item，index标识循环运行时的序号，从0开始；item标识每次迭代的元素。 循环每次迭代时，如果下一次循环需要上一次的循环的某个结果，可以设置中间变量，在合适的地方给中间变量赋值，下次迭代时可以映射使用。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
   | 循环体     | 循环体支持[节点内编排]和[引用工作流]两种方式，切换为工作流模式会删除已编排的循环体。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
   | 并行模式   | 并行迭代循环变量。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
   | 最大并行度  | 仅在并行模式下生效，用于控制循环中同时执行的任务数量。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
   | 输出    | 循环节点可以设置多个输出参数。 - 编排模式：输出支持引用循环体内子节点的输出参数。  - 工作流模式：输出支持引用工作流的输出参数。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
   | 失败策略 | 循环节点通常需要处理大量任务，有时会在处理某个元素时发生错误。为了避免某个元素异常而中断所有任务，可以在失败策略中设置异常的应对方法： 1. 抛出异常，终止运行：如果发现异常输出，终止循环节点，输出错误信息。  2. 输出失败信息，继续执行：忽略异常信息，继续处理剩余元素。输出的信息中包含正确信息，异常信息为空值。  3. 忽略失败信息，继续执行：忽略异常信息，继续处理剩余元素。输出的信息中仅包含正确信息。   循环节点的输入变量与输出变量相应表现为： 输入变量为 \[1,2,3\] ，则输出变量同样为 \[result-1, result-2, result-3\]；如果选择了忽略错误并继续，异常情况的输出值为 null 值，例如 \[result-1, null, result-3\]；如果选择了移除错误输出，将不会输出异常变量，例如 \[result-1, result-3\]。 |
      
   
   
3. 单击上方的"保存"。
 
 #### 循环体（工作流模式）
设置循环体为子工作流。
图3循环体为子工作流   
![](https://support.huaweicloud.com/usermanual-dataartsplatform/figure/zh-cn_image_0000002741678531.png "点击放大")
- 设置需要迭代的上游节点输出变量为循环变量。
- 设置循环间隔（默认为1）
- 增加中间变量（按需）。
- 设置循环体，单击工作流，选择已上线的工作流作为循环体。
- 设置循环每次迭代时，工作流的输入参数，可选范围为循环节点上游节点输出参数，中间变量。
- 中间变量赋值（按需）。
- 设置并行模式（按需）。
- 设置失败策略。
- 设置循环体的输出参数。
 #### 循环体（编排模式）
循环体为编排模式。
- 设置需要迭代的上游节点输出变量为循环变量。
- 设置循环间隔（默认为1）。
- 增加中间变量（按需）。
- 设置循环体，单击"编排"。
  - 单击循环节点，单击左下角"添加节点"按钮。
    图4循环体中添加代码节点   
    ![](https://support.huaweicloud.com/usermanual-dataartsplatform/figure/zh-cn_image_0000002711879580.png "点击放大") 
  
  - 按实际情况添加节点，并补充节点逻辑。
    图5设置循环体中代码节点逻辑   
    ![](https://support.huaweicloud.com/usermanual-dataartsplatform/figure/zh-cn_image_0000002712039532.png "点击放大") 
  
  - 完成循环体节点连线。
  
  - 编排完成后，单击循环节点，打开循环节点详情，进行后续设置。
    图6点开循环节点详情   
    ![](https://support.huaweicloud.com/usermanual-dataartsplatform/figure/zh-cn_image_0000002741758485.png "点击放大") 
   
- 设置并行模式（按需）
- 设置失败策略。
- 设置循环体的输出参数。
  ![](https://support.huaweicloud.com/usermanual-dataartsplatform/public_sys-resources/note_3.0-zh-cn.png)
  循环体为编排模式时，最大支持配置48个节点。
  
 
