

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Configurar entradas e saídas de estado com o Workflow Studio no Step Functions
<a name="workflow-studio-process"></a>

**Gerenciar estados e transformar dados**  
Saiba mais sobre como [transmitir dados entre estados com variáveis](workflow-variables.md) e [transformar dados com JSONata](transforming-data.md).

Cada estado toma uma decisão ou executa uma ação com base na entrada que recebe. Na maioria dos casos, ele passa a saída para outros estados. No Workflow Studio, você pode configurar como um estado filtra e manipula os dados de entrada e saída nas guias **Entrada** e **Saída** do painel [Painel Inspetor](workflow-studio.md#workflow-studio-components-formdefinition). Use os links de **Informações** para acessar a ajuda contextual ao configurar entradas e saídas. 

![\[Captura de tela ilustrativa mostrando entradas e saídas de estado e o painel de ajuda Informações\]](http://docs.aws.amazon.com/pt_br/step-functions/latest/dg/images/wfs_input_output_01.png)


Para informações detalhadas sobre como o Step Functions processa entrada e saída, consulte [Processar entrada e saída no Step Functions](concepts-input-output-filtering.md). 

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

Cada estado recebe a entrada do estado anterior como JSON. Se quiser filtrar a entrada, você poderá usar o filtro `InputPath` na guia **Entrada** no painel [Painel Inspetor](workflow-studio.md#workflow-studio-components-formdefinition). A `InputPath` é uma string, começando com `$`, que identifica um nó JSON específico. Eles são chamados de [caminhos de referência](amazon-states-language-paths.md) e seguem a JsonPath sintaxe. 

Para filtrar a entrada:
+ Escolha **Filtrar entrada com InputPath**.
+ Insira um valor válido [JsonPath](https://datatracker.ietf.org/wg/jsonpath/about/)para o `InputPath` filtro. Por exemplo, .**\$1.data**

O filtro `InputPath` será adicionado ao fluxo de trabalho.

**Example Exemplo 1: Usar InputPath filtro no Workflow Studio**  
Digamos que a entrada para o estado inclua os dados JSON a seguir.  

```
{
  "comment": "Example for InputPath",
  "dataset1": {
    "val1": 1,
    "val2": 2,
    "val3": 3
  },
  "dataset2": {
    "val1": "a",
    "val2": "b",
    "val3": "c"
  }
}
```
Para aplicar o `InputPath` filtro, escolha **Filtrar entrada com** e InputPath, em seguida, insira um caminho de referência apropriado. Se você inserir **\$1.dataset2.val1**, o seguinte JSON será passado como entrada para o estado.  

```
{"a"}
```
Um caminho de referência também pode ter uma seleção de valores. Se os dados referenciados forem `{ "a": [1, 2, 3, 4] }`, e você aplicar o caminho de referência `$.a[0:2]` como o filtro `InputPath`, o resultado será como a seguir.  

```
[ 1, 2 ]
```

Os estados [Estado paralelo do fluxo de trabalho](state-parallel.md), [Estado de mapa do fluxo de trabalho](state-map.md) e [Estado de passagem do fluxo de trabalho](state-pass.md) têm uma opção adicional de filtragem de entrada chamada `Parameters` na guia **Entrada**. Esse filtro entra em vigor após o InputPath filtro e pode ser usado para construir um objeto JSON personalizado que consiste em um ou mais pares de valores-chave. Os valores de cada par podem ser valores estáticos, podem ser selecionados na entrada ou podem ser selecionados a partir do [Acessar dados de execução do objeto de contexto no Step Functions](input-output-contextobject.md) com um caminho. 

**nota**  
Para determinar que um parâmetro use um caminho para fazer referência a um nó JSON na entrada, o nome do parâmetro deve terminar com `.$`.

**Example Exemplo 2: crie uma entrada JSON personalizada para o estado Paralelo**  
Digamos que os seguintes dados JSON sejam a entrada para um estado Paralelo.  

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

Para selecionar parte dessa entrada e passar pares de valores-chave adicionais com um valor estático, você pode especificar o seguinte no campo **Parâmetros**, na guia **Entrada** do estado **Paralelo**.

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

Os seguintes dados JSON serão o resultado.

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

## Configurar a saída de um estado
<a name="workflow-studio-process-output"></a>

Cada estado produz uma saída JSON que pode ser filtrada antes de ser passada para o próximo estado. Há vários filtros disponíveis e cada um afeta a saída de uma maneira diferente. Os filtros de saída disponíveis para cada estado estão listados na guia **Saída** no painel **Inspector**. Para estados [Estado de tarefa do fluxo de trabalho](state-task.md), todos os filtros de saída selecionados são processados nesta ordem: 

1.  `ResultSelector`: use esse filtro para manipular o resultado do estado. Você pode construir um novo objeto JSON com partes do resultado. 

1.  `Especificando a saída de estado usando ResultPath em Step Functions`: use esse filtro para selecionar uma combinação da entrada de estado e do resultado da tarefa para passar para a saída. 

1.  `Filtrar a saída de estado usando OutputPath`: use esse filtro para filtrar a saída JSON e escolher quais informações do resultado serão passadas para o próximo estado. 

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

`ResultSelector` é um filtro de saída opcional para os seguintes estados:
+  Estados [Estado de tarefa do fluxo de trabalho](state-task.md), que são todos os estados listados na guia **Ações** do [Navegador de estados](workflow-studio.md#workflow-studio-components-states). 
+  Estados [Estado de mapa do fluxo de trabalho](state-map.md), na guia **Fluxo** do Navegador de estados. 
+  Estados [Estado paralelo do fluxo de trabalho](state-parallel.md), na guia **Fluxo** do Navegador de estados. 

`ResultSelector` pode ser usado para construir um objeto JSON personalizado que consiste em um ou mais pares de chave-valor. Os valores de cada par podem ser valores estáticos ou selecionados do resultado do estado com um caminho. 

**nota**  
Para especificar que um parâmetro use um caminho para fazer referência a um nó JSON no resultado, o nome do parâmetro deve terminar com `.$`.

**Example Exemplo de uso do ResultSelector filtro**  
Neste exemplo, você usa `ResultSelector` para manipular a resposta da chamada de API do Amazon CreateCluster EMR para um estado do Amazon `CreateCluster` EMR. Veja a seguir o resultado da chamada de API `CreateCluster` do 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 selecionar parte dessas informações e passar um par adicional de valores-chave com um valor estático, especifique o seguinte no **ResultSelector**campo, na guia **Saída** do estado.  

```
{
 "result": "found",
 "ClusterId.$": "$.output.ClusterId", 
 "ResourceType.$": "$.resourceType"
 }
```
O uso de `ResultSelector` produz o resultado a seguir.  

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

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

A saída de um estado pode ser uma cópia da entrada, o resultado que ele produz ou uma combinação da entrada e do resultado. Use `ResultPath` para controlar qual combinação desses itens são passadas para o estado de saída. Para obter mais casos de uso de `ResultPath`, consulte [Especificando a saída de estado usando ResultPath em Step Functions](input-output-resultpath.md).

`ResultPath` é um filtro de saída opcional para os seguintes estados:
+  Estados [Estado de tarefa do fluxo de trabalho](state-task.md), que são todos os estados listados na guia **Ações** do Navegador de estados. 
+  Estados [Estado de mapa do fluxo de trabalho](state-map.md), na guia **Fluxo** do Navegador de estados. 
+  Estados [Estado paralelo do fluxo de trabalho](state-parallel.md), na guia **Fluxo** do Navegador de estados. 
+  Estados [Estado de passagem do fluxo de trabalho](state-pass.md), na guia **Fluxo** do Navegador de estados. 

`ResultPath` pode ser usado para adicionar o resultado à entrada do estado original. O caminho especificado indica onde adicionar o resultado.

**Example Exemplo de uso do ResultPath filtro**  
Digamos que os itens seguintes sejam a entrada para um estado Tarefa.  

```
{
  "details": "Default example",
  "who": "AWS Step Functions"
}
```
O resultado do estado Tarefa é como a seguir.  

```
Hello, AWS Step Functions
```
Você pode adicionar esse resultado à entrada do estado aplicando `ResultPath` e inserindo um [caminho](amazon-states-language-paths.md) de referência que indica onde adicionar o resultado, como `$.taskresult`:  
Com esse `ResultPath`, o seguinte é o JSON que é passado como a saída do estado.  

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

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

O filtro `OutputPath` permite filtrar informações indesejadas e transmitir somente a parte necessária do JSON. O `OutputPath` é uma string, que começa com `$`, que identifica nós no texto JSON.

**Example Exemplo de uso do OutputPath filtro**  
Imagine que uma chamada de API Invocação do Lambda exiba metadados além do resultado da função do Lambda.  

```
{
  "ExecutedVersion": "$LATEST",
  "Payload": {
     "foo": "bar",
     "colors": [
          "red",
          "blue",
          "green"    
     ],
     "car": {
          "year": 2008,
          "make": "Toyota",
          "model": "Matrix"
     }
   },
"SdkHttpMetadata": {
  "AllHttpHeaders": {
    "X-Amz-Executed-Version": ["$LATEST"]
...
```
Você pode usar `OutputPath` para filtrar os metadados adicionais. Por padrão, o valor do **OutputPath**filtro para estados do Lambda Invoke criados por meio do Workflow Studio é. `$.Payload` Esse valor padrão remove os metadados adicionais e retorna uma saída equivalente à execução direta da função do Lambda.  
O exemplo do resultado da tarefa Invocação Lambda e o valor de `$.Payload` para o filtro **Output** transmitem os seguintes dados JSON como a saída.  

```
{
 "foo": "bar",
 "colors": [
      "red",
      "blue",
      "green"    
 ],
 "car": {
      "year": 2008,
      "make": "Toyota",
      "model": "Matrix"
 }
}
```
O filtro `OutputPath` é o último filtro de saída a entrar em vigor; portanto, se você usar filtros de saída adicionais, como `ResultSelector` ou `ResultPath`, deverá modificar o valor padrão de `$.Payload` para o filtro `OutputPath` adequadamente. 