Todos los productos
Search
Centro de documentos

CloudFlow:Entradas y salidas

Última actualización: Sep 05, 2026

CloudFlow transfiere datos entre estados dentro de un flujo de trabajo. Cada estado recibe la entrada proporcionada por el estado anterior, y devuelve su salida para pasarla al siguiente estado. Este tema describe las entradas y salidas en los flujos de trabajo.

Contexto

Los datos en un flujo de trabajo de CloudFlow fluyen de un estado a otro, de manera similar a las llamadas de función en la programación funcional. Cada estado recibe una entrada y devuelve una salida. Los datos de salida se almacenan en el contexto. Este flujo de datos entre estados permite automatizar procesos en aplicaciones empresariales que requieren lógica compleja.

Nota

Las entradas y salidas deben ser objetos JSON. El tamaño de la entrada y salida de un estado no puede exceder 64 KiB. Si el tamaño de la entrada o salida de un estado supera los 64 KiB, la ejecución del flujo fallará.

Entradas y salidas de ejecuciones

Entradas de ejecuciones

Debe proporcionar información o datos para iniciar una ejecución. Dicha información o datos pueden servir como entrada para uno o varios estados. Durante la orquestación del flujo de trabajo, puede acceder a la entrada de una ejecución mediante la expresión de sistema $Context.Execution.Input.

Por ejemplo, la lógica de un sistema de inscripción de estudiantes en línea consta de tres procesos: recopilación de información del estudiante, verificación de la información e inscripción. La información básica del estudiante es obligatoria en cada proceso. En este caso, puede pasar la información básica del estudiante como entrada de la ejecución y configurar los tres estados correspondientes para que accedan a dicha entrada mediante la expresión de sistema.

En el cuadro de diálogo Execute Flow, establezca Execution Name como test. En la sección Execution Input, introduzca un objeto JSON que contenga la información básica del estudiante en el editor JSON. El objeto JSON contiene campos como name, age, gender, country, city, occupation, hobbies (matriz) y isActive (booleano).

Salidas de ejecuciones

La salida de una ejecución es el resultado de una ejecución exitosa. No es posible acceder a la salida de una ejecución mediante una variable de sistema durante la orquestación del flujo de trabajo.

Entradas y salidas de estados

Entradas de un estado

Durante la orquestación del flujo de trabajo, puede usar la expresión de sistema $Context.Current.Input o su forma abreviada $Input para acceder a la entrada del estado actual.

Salidas de estados

Durante la orquestación del flujo de trabajo, puede usar la expresión de sistema $Context.Current.Output o su forma abreviada $Output para acceder a la salida del estado actual. Tenga en cuenta que la forma abreviada $Output solo se puede utilizar dentro de los alcances de los constructores de salida.

Constructores

Expresiones de sistema utilizables en constructores

Las siguientes expresiones de sistema se pueden utilizar en los constructores:

  • $Context: El ciclo de vida de $Context abarca todo el periodo de ejecución del flujo de trabajo. Para obtener más información sobre $Context, consulte Data passing.

  • $Input: El ciclo de vida de $Input comienza cuando el flujo de trabajo entra al estado y termina cuando sale de él. $Input es la forma abreviada de $Context.Current.Input.

  • $Output: El ciclo de vida de $Output comienza cuando el flujo de trabajo entra al estado de respuesta de llamada de tarea y termina cuando sale de dicho estado. $Output es la forma abreviada de $Context.Current.Output.

  • $Global: El ciclo de vida de $Global abarca todo el periodo de ejecución del flujo de trabajo. Para obtener más información sobre $Global, consulte Global variables.

Importante
  • Una clave que termine con .$ en un constructor de entrada, de salida o de parámetros debe tener asignado un valor en forma de expresión. De lo contrario, se producirá un error.

  • Cuando utilice funciones integradas o variables de sistema que comiencen con $, añada .$ al final de las claves de las variables para asegurar que no se interpreten como cadenas de texto.

  • Un constructor de entrada o de salida admite hasta 10 niveles de anidamiento de funciones integradas.

La siguiente figura muestra los ciclos de vida de las expresiones de sistema $Input, $Output, $Context y $Global, así como los procesos de asignación en los diferentes estados.

image
  • $Input representa la entrada de la ejecución.

  • En la figura anterior, $Input=InputConstructor($Context,$Global) indica que, dentro de su alcance, InputConstructor puede hacer referencia a $Context y $Global para extraer información de ellos. El resultado de la construcción se asigna a $Input.

  • $Output es el resultado de la llamada de tarea. 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.

  • $Output=OutputConstructor($Context,$Global) indica que, dentro de su alcance, OutputConstructor puede hacer referencia a $Context y $Global para extraer información de ellos. El resultado de la construcción se asigna a $output.

  • $Global representa las variables globales, accesibles durante todo el periodo de ejecución del flujo de trabajo.

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

  • $Context permanece válido durante toda la ejecución.

InputConstructor

InputConstructor construye la entrada de un flujo de trabajo. Las expresiones de InputConstructor difieren de las expresiones condicionales de los estados Choice state. Mientras que las expresiones condicionales solo devuelven valores booleanos, las expresiones de InputConstructor pueden devolver cualquier valor. Puede utilizar las siguientes variables de sistema en el InputConstructor del estado:

  • $Context

  • $Input

  • $Global

Importante

Cuando existen múltiples configuraciones de entrada, la prioridad sigue el siguiente orden descendente: InputConstructor, ItemsPath e ItemConstructor.

La siguiente definición de máquina de estados proporciona un ejemplo de cómo utilizar InputConstructor.

Type: StateMachine
Name: test3-tx
SpecVersion: v1
StartAt: InvokeFunction1
States:
  - Type: Task
    Name: InvokeFunction
    Action: FC:InvokeFunction
    TaskMode: RequestComplete
    InputConstructor:
      FieldA.$: $Context.Execution.Input
      FieldB: World
      FieldC.$: length($Context.Execution.Input)
      FieldD.$: $Global.InvokeFunctionPayload
    Parameters:
      resourceArn: >-
        acs:fc:cn-hangzhou:123456:functions/myFunction1/LATEST
      invocationType: Sync
      body.$: $Input
    End: true
  - Type: Task
    Name: InvokeFunction1
    Action: FC:InvokeFunction
    TaskMode: RequestComplete
    Parameters:
      invocationType: Sync
      resourceArn: acs:fc:cn-hangzhou:123456:functions/myFunction1/LATEST
    GlobalConstructor:
      InvokeFunctionPayload.$: $Output.Body
    Next: InvokeFunction
  • En el ejemplo anterior, la estructura de datos de InputConstructor es Map[String]Any.

  • FieldA.$: $Context.Execution.Input indica que la clave FieldA recupera dinámicamente el valor de $Context.Execution.Input en lugar de tratarse como una cadena de texto.

  • FieldB: World indica que la cadena estática 'World' se asigna a FieldB. No se recupera ningún valor dinámicamente porque la clave FieldB no termina con el marcador .$.

  • FieldC.$: length($Context.Execution.Input) indica que se utiliza la función integrada length para obtener la longitud del valor en $Context.Execution.Input y asignar dicho resultado a FieldC. Para obtener información sobre las funciones integradas disponibles en los constructores, consulte Built-in functions.

  • La expresión FieldD.$: $Global. InvokeFunctionPayload extrae el valor de la clave InvokeFunctionPayload del espacio de almacenamiento global y pasa dicho valor como campo FieldD al estado Task.

OutputConstructor

En comparación con InputConstructor, OutputConstructor se ejecuta en un momento diferente y admite más variables en las expresiones de contexto. Por ejemplo, mientras que en un constructor de entrada solo puede usar $Context o $Input, en un constructor de salida puede emplear $Output para representar la salida, ya que la llamada de tarea ya generó dicha salida. Puede utilizar las siguientes variables de sistema en el OutputConstructor del estado:

  • $Context

  • $Input

  • $Output

  • $Global

La siguiente definición de máquina de estados proporciona un ejemplo de cómo utilizar OutputConstructor.

Type: StateMachine
Name: test3-tx
SpecVersion: v1
StartAt: InvokeFunction1
States:
  - Type: Task
    Name: InvokeFunction1
    Action: FC:InvokeFunction
    TaskMode: RequestComplete
    Parameters:
      invocationType: Sync
      resourceArn: acs:fc:cn-hangzhou:123456:functions/myFunction1/LATEST
    GlobalConstructor:
      InvokeFunctionPayload.$: $Output.Body
    Next: InvokeFunction
  - Type: Task
    Name: InvokeFunction
    Action: FC:InvokeFunction
    TaskMode: RequestComplete
    Parameters:
      resourceArn: >-
        acs:fc:cn-hangzhou:123456:functions/myFunction1/LATEST
      invocationType: Sync
      body.$: $Input
    OutputConstructor:
      returnID.$: uuid()
      functionResult.$: $Output
      functionResultStr.$: jsonToString($Output)
      executionInput.$: $Context.Execution.Input
      lastOutput.$: $Input
      demo.$: $Global
    End: true
  • En el ejemplo anterior, la estructura de datos de OutputConstructor es map[string]any.

  • functionResult.$ recupera dinámicamente la salida del estado, executionInput.$ recupera dinámicamente la entrada de la ejecución y lastOutput.$ recupera dinámicamente la entrada del estado.

  • returnID.$ recupera el ID único, y functionResultStr.$ recupera una cadena generada a partir de la salida del estado.