Todos os produtos
Search
Central de documentação

CloudFlow:Global IO, global variables

Última atualização: Jun 28, 2026

Quando os dados de um fluxo de trabalho passam por vários estados, cada estado recebe a saída do estado anterior como entrada. A transferência de variáveis estado a estado torna complexa a passagem de dados entre estados não adjacentes. O CloudFlow oferece um mecanismo de variáveis globais para simplificar esse processo e aumentar a eficiência.

Limites

Se esses limites não atenderem às suas necessidades, você pode envie um ticket.

Item

Valor máximo

Tamanho da chave da variável

128 Bytes

Tamanho do valor da variável

256 KiB

Observações

Importante
  • O elemento $Output em GlobalConstructor refere-se à saída bruta do estado Task, e não ao resultado da construção feita por OutputConstructor.

  • O elemento $Global em OutputConstructor refere-se ao valor bruto antes da construção realizada por GlobalConstructor.

Limites no tamanho do contexto

Ao transferir dados com $Global, as saídas de InputConstructor e OutputConstructor devem respeitar o limite de 64 KiB para o tamanho do contexto.

Condição de corrida

As variáveis globais fornecem um espaço de armazenamento chave-valor no nível da execução, acessível para leitura e escrita em todos os estados durante todo o ciclo de vida da execução. Quando há lógica paralela no fluxo, como map e parallel, os dados podem ser sobrescritos entre diferentes estados. Siga estas recomendações:

  1. Utilize chaves distintas para gravar variáveis globais em ramificações diferentes dos estados Parallel.

  2. Evite gravar variáveis globais em estados Map. Como todas as definições de iteração do Map são idênticas, os nomes das variáveis no GlobalConstructor também serão iguais. Nomes idênticos gravados a partir de ramificações diferentes se sobrescrevem mutuamente.

  3. Uma execução filha no modo distribuído não consegue acessar as variáveis globais da execução pai, pois os níveis de Execution das execuções filha e pai são diferentes.

Uso de variáveis globais para transferência de dados

As variáveis globais oferecem um espaço de armazenamento chave-valor no nível da execução. Qualquer estado de um fluxo de trabalho pode gravar dados na variável global ao final de sua execução, permitindo que outros estados consumam essas informações.

image

Na figura anterior, o Estado A utiliza GlobalConstructor para armazenar os dados correspondentes a $Input.key_a, provenientes da entrada upstream, na chave variable_a das variáveis globais. O Estado A também usa GlobalConstructor para salvar os dados correspondentes a $Output.key_b, presentes em sua própria saída, na chave variable_b das variáveis globais. O fluxo de trabalho emprega InputConstructor para extrair os valores de variable_a e variable_b do armazenamento global e os repassa ao Estado Z como entradas. Dessa forma, ocorre a transferência de dados entre estados.

image

As entradas e saídas dos fluxos de trabalho do CloudFlow servem para transferir dados explicitamente entre tarefas, garantindo independência e clareza. Já as variáveis globais mantêm estados compartilhados entre tarefas ou configurações globais de recursos. A combinação de entradas, saídas e variáveis globais permite crie um design de sistema eficiente e flexível. A figura acima compara InputConstructor, OutputConstructor e GlobalConstructor. Descrição:

  • As expressões InputConstructor($Context,$Global), OutputConstructor($Context,$Global) e GlobalConstructor($Context,$Global) indicam que InputConstructor, OutputConstructor e GlobalConstructor podem referenciar $Context e $Global para extrair informações.

  • A expressão $Global=Merge($Global,GlobalConstructor($Context,$Global)) mostra que as variáveis construídas pelo construtor global são mescladas com as variáveis existentes em $Global. Em seguida, todas as variáveis são salvas em $Global para atualize as variáveis globais compartilhadas.

  • O elemento $Output representa o resultado da chamada da Task. Se a chamada for iniciada no modo de callback assíncrono, o valor de $Output corresponderá ao resultado desse callback.

  • No diagrama, $Global representa as variáveis globais, acessíveis durante toda a execução do fluxo de trabalho.

Crie e atualize de variáveis globais

A crie e a atualize de variáveis globais ocorrem por meio de GlobalConstructor. Quando a execução de um estado termina, o sistema executa GlobalConstructor. A definição de máquina de estados a seguir demonstra como usar o GlobalConstructor.

Type: StateMachine
Name: MyWorkFlow
SpecVersion: v1
StartAt: InvokeFunction
States:
  - Type: Task
    Name: InvokeFunction
    Action: FC:InvokeFunction
    TaskMode: RequestComplete
    Parameters:
      resourceArn: >-
        acs:fc:cn-hangzhou:123456:functions/myFunction/LATEST
      invocationType: Sync
      body.$: $Input 
    GlobalConstructor:
      InvokeFunctionResultHeader.$: $Output.Header
      InvokeFunctionResultBody.$: $Output.Body
    End: true
  • A estrutura de dados de GlobalConstructor é Map[String]Any.

  • As definições InvokeFunctionResultHeader.$: $Output. Header e InvokeFunctionResultBody.$: $Output. Body indicam que o cabeçalho e o corpo do valor retornado pela função são armazenados separadamente nas chaves InvokeFunctionResultHeader e InvokeFunctionResultBody das variáveis globais.

Leitura de variáveis globais

O CloudFlow define a palavra-chave $Global para ler variáveis globais. Em todos os cenários que aceitam construção de expressões, é possível acessar o espaço de armazenamento global da execução atual usando $Global. Os estados extraem valores desse espaço de armazenamento global por meio de chaves explícitas. A definição de máquina de estados abaixo ilustra o uso de $Global.

Type: StateMachine
Name: MyWorkFlow
SpecVersion: v1
StartAt: InvokeFunction1
States:
  - Type: Task
    Name: InvokeFunction1
    Action: FC:InvokeFunction
    TaskMode: RequestComplete
    Parameters:
      invocationType: Sync
      resourceArn: acs:fc:cn-hangzhou:123456:functions/myFunction/LATEST
    GlobalConstructor:
      InvokeFunctionPayload.$: $Output.Body
    Next: InvokeFunction
  - Type: Task
    Name: InvokeFunction
    Action: FC:InvokeFunction
    TaskMode: RequestComplete
    Parameters:
      resourceArn: acs:fc:cn-hangzhou:123456:functions/myFunction/LATEST
      invocationType: Sync
      body.$: $Global.InvokeFunctionPayload
    OutputConstructor:
      demo.$: $Global
    End: true
  • Durante a execução de um estado, a função InvokeFunction roda o GlobalConstructor para salvar o corpo do valor retornado por InvokeFunction1 na chave InvokeFunctionPayload das variáveis globais.

  • O estado InvokeFunction utiliza a expressão $Global.InvokeFunctionPayload dentro de Parameters para recuperar o valor da chave InvokeFunctionPayload do armazenamento global. Esse valor é então passado como campo body para o estado Task executar.

  • O estado InvokeFunction emprega OutputConstructor para visualize os valores em $Global. Após a conclusão da execução, o painel de saída do fluxo de trabalho exibe o valor de InvokeFunctionPayload como "hello world\n", confirmando a leitura bem-sucedida da variável global.