Todos os produtos
Search
Central de documentação

CloudFlow:Etapa foreach

Última atualização: Aug 24, 2026

Uma etapa foreach itera sobre um array de entrada e executa a mesma sequência de etapas em paralelo para cada elemento. Cada iteração mantém sua própria variável local, e um mapeamento de saída combina os resultados de todas as iterações na saída da etapa foreach.

Funcionamento da etapa foreach

A etapa foreach itera sobre um parâmetro de array de entrada e executa as etapas definidas no campo steps para cada elemento do array. Esse funcionamento assemelha-se ao foreach de linguagens de programação, mas com iterações em paralelo, não sequenciais.

Ao executar uma etapa foreach, ocorre a seguinte sequência:

  1. A etapa foreach inicia uma iteração para cada elemento do array e as executa simultaneamente.

  2. Cada iteração possui sua própria variável local. As etapas dentro de uma iteração modifique apenas a variável local dessa iteração específica.

  3. Após a conclusão de todas as ramificações, as variáveis locais de todas as iterações formam a variável $local da etapa foreach. Essa variável é um array em que cada elemento é um objeto JSON que registra o resultado de uma iteração.

  4. O mapeamento de saída da etapa foreach converte o array de variáveis locais das iterações na saída da etapa foreach.

Limites

Uma etapa foreach execute no máximo 100 iterações simultaneamente.

Propriedades

A etapa foreach oferece suporte às seguintes propriedades.

Propriedade

Obrigatória

Descrição

type

Sim

Tipo da etapa. Defina o valor como foreach.

name

Sim

Nome da etapa.

iterationMapping

Sim

Mapeamento de iteração da etapa foreach. Os campos de iterationMapping estão descritos na tabela a seguir.

steps

Sim

Etapas executadas em cada iteração.

end

Não

Especifique se a execução das etapas definidas após a etapa foreach deve continuar quando esta terminar.

inputMappings

Não

Mapeamento de entrada da etapa foreach. Caso uma etapa não defina um mapeamento de entrada, ela herdará a entrada de sua etapa pai ou do fluxo.

outputMappings

Não

Mapeamento de saída da etapa foreach. Se você não especificar um mapeamento de saída, a saída da etapa foreach estará vazia por padrão.

A propriedade iterationMapping de uma etapa foreach contém os seguintes campos.

Campo

Obrigatório

Descrição

collection

Sim

Especifique qual parâmetro na entrada será usado como coleção para o loop.

item

Sim

Especifique o nome sob o qual o elemento atual será mesclado na entrada da iteração.

index

Não

Especifique o nome sob o qual a posição atual será mesclada na entrada da iteração.

Exemplo

A definição de fluxo a seguir contém uma etapa foreach chamada myforeach. Para cada elemento no array names, a etapa foreach execute uma etapa de tarefa chamada toUpperCase.

version: v1
type: flow
steps:
  - type: foreach
    name: myforeach
    iterationMapping:
      collection: $.names
      item: name
    steps:
      - type: task
        name: toUpperCase
        resourceArn: acs:fc:{region}:{account}:services/fnf_test/functions/toUpperCase
    outputMappings:
      - target: names
        source: $local[*].name

Substitua {region} e {account} em resourceArn pelos seus próprios valores.

Fluxo de dados no exemplo

Os estágios a seguir mostram como os dados trafegam pela etapa myforeach e qual campo impulsiona cada transformação.

1. Entrada do fluxo. A etapa myforeach não define um mapeamento de entrada; portanto, a entrada de myforeach é igual à entrada do fluxo:

{
  "names": ["a", "b", "c"]
}

2. Entrada da iteração. A etapa toUpperCase também não define um mapeamento de entrada, então herda a entrada de sua etapa pai. Sempre que uma iteração é executada, iterationMapping mescla o elemento atual nessa entrada como valor, usando name como chave. Assim, as três iterações recebem as seguintes entradas.

Entrada da iteração para a:

{
  "name": "a",
  "names":["a","b","c"]
}

Entrada da iteração para b:

{
  "name": "b",
  "names":["a","b","c"]
}

Entrada da iteração para c:

{
  "name": "c",
  "names":["a","b","c"]
}

3. Saída da iteração. toUpperCase é executado três vezes, uma vez por elemento, e retorna as seguintes saídas.

Saída da iteração para a:

{
  "name": "A"
}

Saída da iteração para b:

{
  "name": "B"
}

Saída da iteração para c:

{
  "name": "C"
}

4. Variável local da etapa foreach. A variável local de myforeach é um array que armazena o resultado de cada iteração:

[
  {
    "name": "A"
  },
  {
    "name": "B"
  },
  {
    "name": "C"
  }
]

5. Saída da etapa e saída do fluxo. A propriedade outputMappings de myforeach mapeia $local[*].name para names, o que gera a seguinte saída para a etapa. Como o fluxo não define um mapeamento de saída nem um mapeamento de resultado, essa saída também corresponde à saída final da execução do fluxo.

{
  "names": ["A", "B", "C"]
}