

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Configure las entradas y salidas de estados con Workflow Studio en Step Functions
<a name="workflow-studio-process"></a>

**Administración del estado y transformación de los datos**  
Obtenga información sobre cómo [pasar datos entre estados con variables](workflow-variables.md) y cómo [transformar datos con JSONata](transforming-data.md).

Cada estado toma una decisión o realiza una acción en función de la información que recibe. En la mayoría de los casos, pasa la salida a otros estados. En Workflow Studio, puede configurar la forma en que un estado filtra y manipula sus datos de entrada y salida en las pestañas **Entrada** y **Salida** del panel [Panel del inspector](workflow-studio.md#workflow-studio-components-formdefinition). Utilice los enlaces **Información** para acceder a la ayuda contextual al configurar las entradas y salidas. 

![\[Captura de pantalla ilustrativa que muestra las entradas y salidas de estado y el panel de ayuda con información\]](http://docs.aws.amazon.com/es_es/step-functions/latest/dg/images/wfs_input_output_01.png)


Para obtener información detallada sobre cómo Step Functions procesada las entradas y las salidas, consulte [Procesamiento de entradas y salidas en Step Functions](concepts-input-output-filtering.md). 

## Configurar la entrada a un estado
<a name="workflow-studio-process-input"></a>

Cada estado recibe la entrada del estado anterior en forma de JSON. Si desea filtrar la entrada, puede usar el filtro `InputPath` que se encuentra en la pestaña **Entrada** del panel [Panel del inspector](workflow-studio.md#workflow-studio-components-formdefinition). `InputPath` es una cadena que comienza por `$` y que identifica un nodo JSON específico. Se denominan [rutas de referencia](amazon-states-language-paths.md) y siguen una JsonPath sintaxis. 

Para filtrar la entrada:
+ Elija **Filtrar la entrada con InputPath**.
+ Introduzca un valor válido [JsonPath](https://datatracker.ietf.org/wg/jsonpath/about/)para el `InputPath` filtro. Por ejemplo, **\$1.data**.

El filtro `InputPath` se añadirá a su flujo de trabajo.

**Example Ejemplo 1: usar un InputPath filtro en Workflow Studio**  
Supongamos que la entrada a su estado incluye los siguientes datos JSON.  

```
{
  "comment": "Example for InputPath",
  "dataset1": {
    "val1": 1,
    "val2": 2,
    "val3": 3
  },
  "dataset2": {
    "val1": "a",
    "val2": "b",
    "val3": "c"
  }
}
```
Para aplicar el `InputPath` filtro, elija **Filtrar la entrada con InputPath** y, a continuación, introduzca una ruta de referencia adecuada. Si introduce **\$1.dataset2.val1**, el siguiente JSON se pasa como entrada al estado.  

```
{"a"}
```
Una ruta de referencia también puede tener una selección de valores. Si los datos a los que hace referencia son `{ "a": [1, 2, 3, 4] }` y se aplica la ruta de referencia `$.a[0:2]` como el filtro `InputPath`, el resultado es el siguiente.  

```
[ 1, 2 ]
```

Los estados de flujo [Estado Parallel de un flujo de trabajo](state-parallel.md), [Estado del flujo de trabajo Map](state-map.md) y [Estado Pass de un flujo de trabajo](state-pass.md) tienen una opción de filtrado de entrada adicional denominada `Parameters` en la pestaña **Entrada**. Este filtro surte efecto después del InputPath filtro y se puede usar para construir un objeto JSON personalizado compuesto por uno o más pares clave-valor. Los valores de cada par pueden ser valores estáticos, se pueden seleccionar desde la entrada o se pueden seleccionar desde un [Acceso a los datos de ejecución desde el objeto Context en Step Functions](input-output-contextobject.md) con una ruta. 

**nota**  
Para especificar que un parámetro utilice una ruta de referencia que apunte a un nodo JSON en la entrada, el nombre del parámetro debe terminar con `.$`.

**Example Ejemplo 2: Crear una entrada JSON personalizada para el estado Parallel**  
Supongamos que los siguientes datos JSON son la entrada a un estado Parallel.  

```
{
  "comment": "Example for Parameters",
  "product": {
    "details": {
      "color": "blue",
      "size": "small",
      "material": "cotton"
    },
    "availability": "in stock",
    "sku": "2317",
    "cost": "$23"
  }
}
```

Para seleccionar parte de esta entrada y transferir pares clave-valor adicionales con un valor estático, puede especificar lo siguiente en el campo **Parámetros**, en la pestaña **Entrada** del estado **Parallel**.

```
{
 "comment": "Selecting what I care about.",
 "MyDetails": {
    "size.$": "$.product.details.size",
    "exists.$": "$.product.availability",
    "StaticValue": "foo"
    }
 }
```

El resultado serán los siguientes datos JSON.

```
{
  "comment": "Selecting what I care about.",
  "MyDetails": {
    "size": "small",
    "exists": "in stock",
    "StaticValue": "foo"
  }
}
```

## Configurar la salida de un estado
<a name="workflow-studio-process-output"></a>

Cada estado produce una salida JSON que se puede filtrar antes de pasar al siguiente estado. Hay varios filtros disponibles y cada uno afecta a la salida de forma diferente. Los filtros de salida disponibles para cada estado se muestran en la pestaña **Salida** del panel **Inspector**. En el caso de los estados [Estado de un flujo de trabajo de tarea](state-task.md), cualquier filtro de salida que seleccione se procesa en este orden: 

1.  `ResultSelector`: utilice este filtro para manipular el resultado del estado. Puede construir un nuevo objeto JSON con partes del resultado. 

1.  `Especificación de la salida de estado mediante ResultPath Step Functions`: utilice este filtro para seleccionar una combinación de la entrada de estado y del resultado de tarea que transferir a la salida. 

1.  `Filtrado de la salida de estado mediante OutputPath`: utilice este filtro para filtrar la salida JSON y elegir qué información del resultado se pasará al siguiente estado. 

### Utilice ResultSelector
<a name="workflow-studio-process-output-resultselector"></a>

`ResultSelector` es un filtro de salida opcional para los siguientes estados:
+  Estados [Estado de un flujo de trabajo de tarea](state-task.md), que son todos los estados que aparecen en la pestaña **Acciones** del [Navegador de estados](workflow-studio.md#workflow-studio-components-states). 
+  Estados [Estado del flujo de trabajo Map](state-map.md), en la pestaña **Flujo** del navegador de estados. 
+  Estados [Estado Parallel de un flujo de trabajo](state-parallel.md), en la pestaña **Flujo** del navegador de estados. 

`ResultSelector` se puede usar para construir un objeto JSON personalizado que consta de uno o varios pares clave-valor. Los valores de cada par pueden ser valores estáticos o seleccionarse a partir del resultado del estado con una ruta. 

**nota**  
Para especificar que un parámetro utilice una ruta para hacer referencia a un nodo JSON en el resultado, el nombre del parámetro debe terminar con `.$`.

**Example Ejemplo de uso del ResultSelector filtro**  
En este ejemplo, se utiliza `ResultSelector` para manipular la respuesta de la llamada a la CreateCluster API de Amazon EMR para obtener un estado de Amazon EMR. `CreateCluster` A continuación se muestra el resultado de la llamada a la API `CreateCluster` de Amazon EMR.  

```
{
  "resourceType": "elasticmapreduce",
  "resource": "createCluster.sync",
  "output": {
    "SdkHttpMetadata": {
      "HttpHeaders": {
        "Content-Length": "1112",
        "Content-Type": "application/x-amz-JSON-1.1",
        "Date": "Mon, 25 Nov 2019 19:41:29 GMT",
        "x-amzn-RequestId": "1234-5678-9012"
      },
      "HttpStatusCode": 200
    },
    "SdkResponseMetadata": {
      "RequestId": "1234-5678-9012"
    },
    "ClusterId": "AKIAIOSFODNN7EXAMPLE"
  }
}
```
**Para seleccionar parte de esta información y pasar un par clave-valor adicional con un valor estático, especifique lo siguiente en el **ResultSelector**campo, en la pestaña Salida del estado.**  

```
{
 "result": "found",
 "ClusterId.$": "$.output.ClusterId", 
 "ResourceType.$": "$.resourceType"
 }
```
El uso de `ResultSelector` produce el siguiente resultado.  

```
{
 "result": "found",
 "ClusterId": "AKIAIOSFODNN7EXAMPLE",
 "ResourceType": "elasticmapreduce"
}
```

### Utilice ResultPath
<a name="workflow-studio-process-output-resultpath"></a>

La salida de un estado puede ser una copia de su entrada, el resultado que produce o una combinación de su entrada y del resultado. Use `ResultPath` para controlar qué combinación de estos se pasa a la salida del estado. Para ver más casos de uso de `ResultPath`, consulte [Especificación de la salida de estado mediante ResultPath Step Functions](input-output-resultpath.md).

`ResultPath` es un filtro de salida opcional para los siguientes estados:
+  Estados [Estado de un flujo de trabajo de tarea](state-task.md), que son todos los estados que aparecen en la pestaña **Acciones** del navegador de estados. 
+  Estados [Estado del flujo de trabajo Map](state-map.md), en la pestaña **Flujo** del navegador de estados. 
+  Estados [Estado Parallel de un flujo de trabajo](state-parallel.md), en la pestaña **Flujo** del navegador de estados. 
+  Estados [Estado Pass de un flujo de trabajo](state-pass.md), en la pestaña **Flujo** del navegador de estados. 

`ResultPath` se puede utilizar para añadir el resultado a la entrada de estado original. La ruta especificada indica dónde añadir el resultado.

**Example Ejemplo de uso del ResultPath filtro**  
Supongamos que lo siguiente es la entrada a un estado Task.  

```
{
  "details": "Default example",
  "who": "AWS Step Functions"
}
```
El resultado del estado Task es el siguiente.  

```
Hello, AWS Step Functions
```
Puede añadir este resultado a la entrada del estado aplicando `ResultPath` e introduciendo una [ruta](amazon-states-language-paths.md) de referencia que indique dónde añadir el resultado, por ejemplo `$.taskresult`:  
Con este `ResultPath`, lo siguiente es el JSON que se pasa como salida del estado.  

```
{
  "details": "Default example",
  "who": "AWS Step Functions",
  "taskresult": "Hello, AWS Step Functions!"
}
```

### Utilice OutputPath
<a name="workflow-studio-process-output-resultselector"></a>

El filtro `OutputPath` le permite filtrar la información no deseada y pasar solo la parte de JSON que necesite. `OutputPath` es una cadena que comienza por `$` y que identifica los nodos dentro del texto JSON.

**Example Ejemplo de uso del OutputPath filtro**  
Imagine que una llamada a la API Invoke de Lambda devuelve metadatos además del resultado de la función de Lambda.  

```
{
  "ExecutedVersion": "$LATEST",
  "Payload": {
     "foo": "bar",
     "colors": [
          "red",
          "blue",
          "green"    
     ],
     "car": {
          "year": 2008,
          "make": "Toyota",
          "model": "Matrix"
     }
   },
"SdkHttpMetadata": {
  "AllHttpHeaders": {
    "X-Amz-Executed-Version": ["$LATEST"]
...
```
Se puede utilizar `OutputPath` para filtrar los metadatos adicionales. De forma predeterminada, el valor del **OutputPath**filtro para los estados de Lambda Invoke creados a través de Workflow Studio es. `$.Payload` Este valor predeterminado elimina los metadatos adicionales y devuelve un resultado equivalente a ejecutar directamente la función de Lambda.  
El ejemplo del resultado de la tarea Lambda Invoke y el valor de `$.Payload` del filtro **Salida** pasan los siguientes datos JSON como salida.  

```
{
 "foo": "bar",
 "colors": [
      "red",
      "blue",
      "green"    
 ],
 "car": {
      "year": 2008,
      "make": "Toyota",
      "model": "Matrix"
 }
}
```
El filtro `OutputPath` es el último filtro de salida que surte efecto, si usa filtros de salida adicionales, como `ResultSelector` o `ResultPath`, debe modificar el valor predeterminado de `$.Payload` del filtro `OutputPath` en consecuencia. 