Todos los productos
Search
Centro de documentos

CloudFlow:Global IO, global variables

Última actualización: Sep 05, 2026

Cuando los datos de un flujo de trabajo pasan por varios estados, cada estado recibe como entrada la salida del estado anterior. Pasar variables de estado en estado complica la transferencia de datos entre estados. CloudFlow ofrece un mecanismo de variables globales para simplificar este proceso y mejorar la eficiencia.

Límites

Si estos límites no satisfacen sus requisitos, puede enviar un ticket.

Elemento

Valor máximo

Longitud de una clave de variable

128 Bytes

Longitud de un valor de variable

256 KiB

Notas

Importante
  • $Output en GlobalConstructor hace referencia a la salida sin procesar del estado Task, no al resultado de construcción de OutputConstructor.

  • $Global en OutputConstructor hace referencia al valor sin procesar previo a la construcción realizada por GlobalConstructor.

Límites en el tamaño del contexto

Cuando CloudFlow transfiere datos mediante $Global, las salidas de InputConstructor y OutputConstructor deben cumplir con el límite que establece que el tamaño del contexto no puede superar los 64 KiB.

Condición de carrera

Las variables globales proporcionan un espacio de almacenamiento clave-valor global a nivel de ejecución, con capacidades de lectura y escritura en todos los estados durante el ciclo de vida de la ejecución. Cuando existe lógica paralela en un flujo, como map o parallel, los datos pueden sobrescribirse entre distintos estados. Tenga en cuenta las siguientes recomendaciones:

  1. Utilice claves diferentes para escribir variables globales en las distintas ramas de los estados Parallel.

  2. No escriba variables globales en estados Map. Todas las definiciones de iteración de Map son idénticas; por lo tanto, los nombres de variables en GlobalConstructor también lo son. Los nombres de variable iguales escritos desde distintas ramas se sobrescriben mutuamente.

  3. Una ejecución secundaria en modo distribuido no puede acceder a las variables globales de la ejecución principal porque los niveles de Execution de las ejecuciones secundaria y principal son diferentes.

Uso de variables globales para transferir datos

Las variables globales proporcionan un espacio de almacenamiento clave-valor a nivel de ejecución. Cualquier estado de un flujo de trabajo puede escribir datos en la variable global al finalizar su ejecución para transferirlos a otros estados que los consuman.

image

En la figura anterior, el Estado A utiliza GlobalConstructor para almacenar en variable_a de las variables globales los datos correspondientes a $Input.key_a provenientes de la entrada ascendente. Asimismo, el Estado A usa GlobalConstructor para guardar en variable_b de las variables globales los datos correspondientes a $Output.key_b de su propia salida. El flujo de trabajo emplea InputConstructor para extraer los valores de variable_a y variable_b de las variables globales y pasarlos como entradas al Estado Z. De esta manera, se transfieren datos entre estados.

image

Las entradas y salidas de los flujos de trabajo de CloudFlow se utilizan para transferir datos explícitamente entre tareas, lo que garantiza la independencia y claridad de cada tarea. Las variables globales sirven para mantener estados compartidos entre tareas o configuraciones globales de recursos. El uso conjunto de entradas, salidas y variables globales permite lograr un diseño de sistema eficiente y flexible. La figura anterior compara InputConstructor, OutputConstructor y GlobalConstructor. Descripción:

  • InputConstructor($Context,$Global), OutputConstructor($Context,$Global) y GlobalConstructor($Context,$Global) indican que InputConstructor, OutputConstructor y GlobalConstructor pueden hacer referencia a $Context y $Global para extraer información.

  • $Global=Merge($Global,GlobalConstructor($Context,$Global)) indica que las variables construidas por el constructor global se fusionan con las variables existentes en $Global y, posteriormente, todas las variables se almacenan en $Global para actualizar las variables globales compartidas.

  • $Output es el resultado de la llamada a Task. Si la llamada se inicia en modo de devolución de llamada asíncrona, el valor de $Output corresponde al resultado de dicha devolución de llamada.

  • En el diagrama, $Global representa las variables globales, accesibles durante toda la ejecución del flujo de trabajo.

Creación y actualización de variables globales

Las variables globales se crean y actualizan mediante GlobalConstructor. Cuando finaliza la ejecución de un estado, se ejecuta GlobalConstructor. La siguiente definición de máquina de estados muestra cómo utilizar 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
  • La estructura de datos de GlobalConstructor es Map[String]Any.

  • InvokeFunctionResultHeader.$: $Output. Header y InvokeFunctionResultBody.$: $Output. Body indican que el encabezado y el cuerpo del valor devuelto por la función se almacenan por separado en las claves InvokeFunctionResultHeader e InvokeFunctionResultBody dentro de las variables globales.

Lectura de variables globales

CloudFlow define la palabra clave $Global para leer variables globales. En todos los escenarios que admiten construcción de expresiones, se puede acceder al espacio de almacenamiento global de la ejecución actual mediante $Global. Los estados pueden extraer valores del espacio de almacenamiento global utilizando claves explícitas. La siguiente definición de máquina de estados muestra cómo usar $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
  • Al ejecutarse un estado, la función InvokeFunction ejecuta GlobalConstructor para almacenar el cuerpo del valor devuelto por InvokeFunction1 en la clave InvokeFunctionPayload de las variables globales.

  • InvokeFunction utiliza la expresión $Global.InvokeFunctionPayload en Parameters para extraer el valor de la clave InvokeFunctionPayload del espacio de almacenamiento global y lo pasa como campo body al estado Task para su ejecución.

  • El estado InvokeFunction usa OutputConstructor para consultar los valores en $Global. Una vez completada la ejecución, el panel de salida del flujo de trabajo muestra el valor de InvokeFunctionPayload como "hello world\n", lo que confirma que la variable global se leyó correctamente.