

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.

# Especificación de la salida de estado mediante ResultPath Step Functions
<a name="input-output-resultpath"></a>

**Administración del estado y transformación de los datos**  
Esta página hace referencia a JSONPath. Step Functions agregó recientemente variables y JSONata para administrar el estado y transformar los datos.  
Obtenga información sobre cómo [pasar datos con variables](workflow-variables.md) y cómo [transformar datos con JSONata](transforming-data.md).

La salida de un estado puede ser una copia de su entrada, el resultado que produce (por ejemplo, la salida de una función de Lambda del estado `Task`) 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. 

Los siguientes tipos de estado pueden generar un resultado y pueden incluir `ResultPath:`
+ [Estado Pass de un flujo de trabajo](state-pass.md)
+ [Estado de un flujo de trabajo de tarea](state-task.md)
+ [Estado Parallel de un flujo de trabajo](state-parallel.md)
+ [Estado del flujo de trabajo Map](state-map.md)

Use `ResultPath` para combinar un resultado de tarea con una entrada de tarea o para seleccionar uno de estos. La ruta que se proporciona a `ResultPath` controla la información que se pasa a la salida. 

**nota**  
 `ResultPath` se limita al uso de [rutas de referencia](amazon-states-language-paths.md#amazon-states-language-reference-paths), que limitan el ámbito para que la ruta solo tenga que identificar un único nodo en JSON. Consulte [Rutas de referencia](amazon-states-language-paths.md#amazon-states-language-reference-paths) en [Amazon States Language](concepts-amazon-states-language.md).

## Se usa ResultPath para reemplazar la entrada con el resultado de la tarea
<a name="input-output-resultpath-default"></a>

Si no especifica una `ResultPath`, el comportamiento predeterminado es el mismo que `"ResultPath": "$"`. El estado reemplazará toda la entrada de estado por el resultado de la tarea.

```
# State Input
{  
 "comment": "This is a test",
 "details": "Default example",
 "who" : "Step Functions"
}

# Path 
"ResultPath": "$"

# Task result
"Hello, Step Functions!"

# State Output
"Hello, Step Functions!"
```

**nota**  
`ResultPath` se utiliza para incluir contenido a partir del resultado con la entrada, antes de pasarlo a la salida. Pero, si no se especifica `ResultPath`, la acción predeterminada consiste en reemplazar toda la entrada.

## Descarte del resultado y conservación de la entrada original
<a name="input-output-resultpath-null"></a>

Si establece `ResultPath` en `null`, el estado pasará la **entrada original** a la salida. La carga útil de entrada del estado se copiará directamente en la salida, independientemente del resultado de la tarea. 

```
# State Input
{  
 "comment": "This is a test",
 "details": "Default example",
 "who" : "Step Functions"
}

# Path 
"ResultPath": null

# Task result
"Hello, Step Functions!"

# State Output
{  
 "comment": "This is a test",
 "details": "Default example",
 "who" : "Step Functions"
}
```

## Se utiliza ResultPath para incluir el resultado con la entrada
<a name="input-output-resultpath-append"></a>

Si especifica una ruta para ResultPath, la salida de estado combinará la entrada de estado y el resultado de la tarea:

```
# State Input
{  
 "comment": "This is a test",
 "details": "Default example",
 "who" : "Step Functions"
}

# Path 
"ResultPath": "$.taskresult"

# Task result
"Hello, Step Functions!"

# State Output
{  
 "comment": "This is a test",
 "details": "Default example",
 "who" : "Step Functions",
 "taskresult" : "Hello, Step Functions!"
}
```

También puede insertar el resultado en un nodo secundario de la entrada. Establezca `ResultPath` como se indica a continuación.

```
"ResultPath": "$.strings.lambdaresult"
```

Dada la siguiente entrada: 

```
{
  "comment": "An input comment.",
  "strings": {
    "string1": "foo",
    "string2": "bar",
    "string3": "baz"
  },
  "who": "AWS Step Functions"
}
```

El resultado de la tarea se insertaría como un elemento secundario del nodo `strings` en la entrada.

```
{
  "comment": "An input comment.",
  "strings": {
    "string1": "foo",
    "string2": "bar",
    "string3": "baz",
    "lambdaresult": "Hello, Step Functions!"
  },
  "who": "AWS Step Functions"
}
```

La salida de estado ahora incluye el JSON de entrada original con el resultado como nodo secundario.

## Se utiliza ResultPath para actualizar un nodo de la entrada con el resultado
<a name="input-output-resultpath-amend"></a>

Si especificas un nodo existente para ResultPath, el resultado de la tarea sustituirá a ese nodo existente:

```
# State Input
{  
 "comment": "This is a test",
 "details": "Default example",
 "who" : "Step Functions"
}

# Path 
"ResultPath": "$.comment"

# Task result
"Hello, Step Functions!"

# State Output
{  
 "comment": "Hello, Step Functions!",
 "details": "Default example",
 "who" : "Step Functions"
}
```

## Se utiliza ResultPath para incluir tanto el error como la entrada en un `Catch`
<a name="input-output-resultpath-catch"></a>

En algunos casos, es posible que desee conservar la entrada original con el error. Utilice `ResultPath` en un `Catch` para incluir el error con la entrada original, en lugar de sustituirla. 

```
"Catch": [{ 
  "ErrorEquals": ["States.ALL"], 
  "Next": "NextTask", 
  "ResultPath": "$.error" 
}]
```

Si la instrucción `Catch` anterior detecta un error, incluye el resultado en un nodo `error` dentro de la entrada de estado. Por ejemplo, con la siguiente entrada:

```
{"foo": "bar"}
```

La salida de estado al detectar un error es la siguiente.

```
{
  "foo": "bar",
  "error": {
    "Error": "Error here"
  }
}
```

Para obtener más información sobre el control de errores, consulte lo siguiente:
+ [Control de errores en los flujos de trabajo de Step Functions](concepts-error-handling.md)
+ [Tratamiento de condiciones de error en una máquina de estado de Step Functions](tutorial-handling-error-conditions.md)