Todos los productos
Search
Centro de documentos

CloudFlow:Paso de datos

Última actualización: Sep 05, 2026

El paso de datos entre varios estados en un flujo es similar al de un lenguaje de programación funcional. Los estados en CloudFlow funcionan como funciones de programación: aceptan entradas, devuelven salidas y almacenan dichas salidas en el contexto. Este tema describe el funcionamiento general y los ejemplos de uso del paso de datos.

Descripción general

Puede combinar y anidar estados en CloudFlow. A los datos presentes en el entorno de ejecución de un estado se les denomina contexto. Estos datos se clasifican en las siguientes categorías:

  • Datos del flujo: incluyen el nombre y la región del flujo, los nombres de los estados que lo componen y el rol de Resource Access Management (RAM) utilizado para ejecutarlo.

  • Datos de ejecución: incluyen el nombre y la entrada de la ejecución, la entrada y salida del estado actual, el token utilizado para la devolución de llamada, la información de error generada durante la ejecución y el número de reintentos para el manejo de errores.

Acceso a datos

Para acceder a los datos relacionados con los flujos y su ejecución, ya sean estáticos o dinámicos, utilice la expresión $Context proporcionada por el sistema. El contexto contiene la siguiente información:

{
  "Execution": {
    "Name": "String",
    "Input": {},
    "RoleArn": "String"
  },
  "Current": {
    "Name": "String",
    "Input": {},
    "Output": {},
    "Error": {
      "Code": "String",
      "Detail": "String"
    },
    "RetryCount": "Number",
    "TaskToken": "String"
  }
}

El contexto permite construir datos en los siguientes escenarios:

  • Constructores de entrada y de salida. Para obtener más información, consulte Inputs and outputs.

  • Campo ItemsPath en estados Map. Ejemplo: $Context.Current.Input.

  • Campo Condition en estados Choice. Ejemplo: $Context.Current.Input.Size>=1024.

  • Determinación de información para el manejo de errores. Ejemplos: $Context.Current.Error.Code y $Context.Current.Error.Detail.

  • Paso de tokens de devolución de llamada de tareas. Ejemplo: $Context.Current.TaskToken.

CloudFlow ofrece los atajos comunes $Input y $Output, que permiten acceder rápidamente a la entrada y salida del nodo actual.

  • $Input equivale a $Context.Current.Input.

  • $Output equivale a $Context.Current.Output.

Paso de datos

Cada tipo de estado tiene una lógica distinta de entrada y salida. Si no se definen constructores de entrada ni de salida, los estados siguen la siguiente lógica:

  • Pass, Succeed, Fail y Wait: estos estados aceptan entradas y utilizan las entradas originales sin procesar como salidas.

  • Choice: este estado solo acepta entradas y las transfiere al estado destino sin devolver salidas. Por ejemplo, el estado Choice puede transferir entradas a la rama predeterminada (Default) o a una rama específica para evaluar si se cumplen las condiciones obligatorias. De cumplirse, transfiere las entradas al siguiente estado.

  • Parallel: el sistema realiza copias profundas de una entrada y las distribuye simultáneamente a varias ramas. Las salidas del estado tienen el formato Map[String]Any, donde la clave corresponde al nombre implícito Branch N de cada rama paralela y el valor representa el resultado real del procesamiento de la entrada en dicha rama.

  • Map: el sistema determina si una entrada es un arreglo o un objeto Map[String]Any. Si la entrada del estado Map no es un arreglo y no se especifica el contenido a iterar mediante el parámetro ItemsPath, el sistema obtiene automáticamente los valores del estado Map como un arreglo iterable. Posteriormente, itera sobre dicho arreglo y utiliza cada elemento como entrada para el procesador de iteración. Las salidas del estado Map tienen el formato Map[String]Any; la clave es la cadena Items y el valor es un arreglo compuesto por varios resultados de iteración.

  • Task: este estado recibe datos de entrada del estado anterior o de una fuente externa, ejecuta lógica de negocio específica dentro de un script de tarea, utiliza la expresión $Context para acceder y manipular datos, y finalmente transfiere el resultado de la ejecución como datos de salida a los estados subsiguientes o los almacena en un sistema externo.

Ejemplo

Type: StateMachine
Name: DataTransferExample
SpecVersion: v1
StartAt: Step1
States:
  - Type: Pass
    Name: Step1
    Next: Step2
  - Type: Parallel
    Name: Step2
    InputConstructor:
      FieldA: 123
    Branches:
      - StartAt: Pass1
        States:
          - Type: Pass
            Name: Pass1
            End: true
      - StartAt: Pass2
        States:
          - Type: Pass
            Name: Pass2
            End: true
    Next: Step3
  - Type: Pass
    Name: Step3
    End: true

En el ejemplo anterior, se utiliza InputConstructor en un estado Parallel llamado Step2 para construir un objeto JSON que contiene la propiedad FieldA con valor 123. De forma predeterminada, la entrada se transfiere a ParallelBranch #0 y ParallelBranch #1. En la rama ParallelBranch #0, por ejemplo, la entrada se pasa al estado Pass1. A continuación se muestra un ejemplo de los datos de contexto del estado Pass1.

{
  "Execution": {
    "Name": "xxxx-xxxx-xxxx-xxxx",
    "Input": {},
    "RoleArn": "xxxx"
  },
  "Current": {
    "Name": "Pass1",
    "Input": {
      "FieldA": 123
    },
    "Output": {
      "FieldA": 123
    },
    "Error": null,
    "RetryCount": 0
  }
}