

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Configura gli stati, gli ingressi e gli output con Workflow Studio in Step Functions
<a name="workflow-studio-process"></a>

**Gestione dello stato e trasformazione dei dati**  
Scopri come [passare dati tra stati con variabili](workflow-variables.md) e [Trasformare dati](transforming-data.md) con. JSONata

Ogni stato prende una decisione o esegue un'azione in base all'input che riceve. Nella maggior parte dei casi, passa quindi l'output ad altri stati. In Workflow Studio, potete configurare il modo in cui uno stato filtra e manipola i dati di input e output nelle schede **Input** e **Output** del pannello. [Pannello Inspector](workflow-studio.md#workflow-studio-components-formdefinition) Utilizzate i collegamenti **Info** per accedere alla guida contestuale per la configurazione di input e output. 

![\[Schermata illustrativa che mostra gli input e gli output di stato e il pannello di aiuto informativo\]](http://docs.aws.amazon.com/it_it/step-functions/latest/dg/images/wfs_input_output_01.png)


Per informazioni dettagliate su come Step Functions elabora input e output, vedere[Elaborazione di input e output in Step Functions](concepts-input-output-filtering.md). 

## Configurare l'input in uno stato
<a name="workflow-studio-process-input"></a>

Ogni stato riceve l'input dallo stato precedente come JSON. Se desideri filtrare l'input, puoi utilizzare il `InputPath` filtro nella scheda **Input** del [Pannello Inspector](workflow-studio.md#workflow-studio-components-formdefinition) pannello. `InputPath`È una stringa, che inizia con`$`, che identifica un nodo JSON specifico. Questi sono chiamati [percorsi di riferimento](amazon-states-language-paths.md) e seguono JsonPath la sintassi. 

Per filtrare l'input:
+ Scegli **Filtra input con InputPath**.
+ Inserisci un valore valido [JsonPath](https://datatracker.ietf.org/wg/jsonpath/about/)per il `InputPath` filtro. Ad esempio, **\$1.data**.

Il `InputPath` filtro verrà aggiunto al flusso di lavoro.

**Example Esempio 1: utilizzo del InputPath filtro in Workflow Studio**  
Supponiamo che l'input del tuo stato includa i seguenti dati JSON.  

```
{
  "comment": "Example for InputPath",
  "dataset1": {
    "val1": 1,
    "val2": 2,
    "val3": 3
  },
  "dataset2": {
    "val1": "a",
    "val2": "b",
    "val3": "c"
  }
}
```
Per applicare il `InputPath` filtro, scegli **Filtra input con InputPath**, quindi inserisci un percorso di riferimento appropriato. Se inserite**\$1.dataset2.val1**, il seguente codice JSON viene passato come input allo stato.  

```
{"a"}
```
Un percorso di riferimento può anche avere una selezione di valori. Se i dati a cui fai riferimento sono `{ "a": [1, 2, 3, 4] }` e applichi il percorso di riferimento `$.a[0:2]` come `InputPath` filtro, il risultato è il seguente.  

```
[ 1, 2 ]
```

[Stato del flusso di lavoro parallelo](state-parallel.md)[Stato del flusso di lavoro della mappa](state-map.md), e gli stati di [Passare lo stato del workflow](state-pass.md) flusso dispongono di un'opzione di filtro di input aggiuntiva nella scheda **Input**. `Parameters` Questo filtro ha effetto dopo il InputPath filtro e può essere utilizzato per creare un oggetto JSON personalizzato costituito da una o più coppie chiave-valore. I valori di ogni coppia possono essere valori statici, possono essere selezionati dall'input o possono essere selezionati da un percorso. [Accesso ai dati di esecuzione dall'oggetto Context in Step Functions](input-output-contextobject.md) 

**Nota**  
Per specificare che un parametro utilizza un percorso di riferimento per puntare a un nodo JSON nell'input, il nome del parametro deve terminare con`.$`.

**Example Esempio 2: creazione di un input JSON personalizzato per Parallel state**  
Supponiamo che i seguenti dati JSON siano l'input per uno stato parallelo.  

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

**Per selezionare parte di questo input e passare ulteriori coppie chiave-valore con un valore statico, puoi specificare quanto segue nel campo **Parametri, nella scheda** Input dello stato **Parallelo**.**

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

Il risultato saranno i seguenti dati JSON.

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

## Configura l'output di uno stato
<a name="workflow-studio-process-output"></a>

Ogni stato produce un output JSON che può essere filtrato prima di passare allo stato successivo. Sono disponibili diversi filtri, ognuno dei quali influisce sull'output in modo diverso. I filtri di output disponibili per ogni stato sono elencati nella scheda **Output** del pannello **Inspector**. Per [Stato del flusso di lavoro delle attività](state-task.md) gli stati, tutti i filtri di output selezionati vengono elaborati nel seguente ordine: 

1.  `ResultSelector`: utilizzate questo filtro per manipolare il risultato dello stato. È possibile creare un nuovo oggetto JSON con parti del risultato. 

1.  `Specificazione dello stato dell'output utilizzando ResultPath in Step Functions`: Utilizzate questo filtro per selezionare una combinazione dell'input dello stato e del risultato dell'attività da passare all'output. 

1.  `Filtraggio dell'output dello stato utilizzando OutputPath`: Usa questo filtro per filtrare l'output JSON e scegliere quali informazioni del risultato verranno passate allo stato successivo. 

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

`ResultSelector`è un filtro di output opzionale per i seguenti stati:
+  [Stato del flusso di lavoro delle attività](state-task.md)stati, che sono tutti gli stati elencati nella scheda **Azioni** di[Stati del browser](workflow-studio.md#workflow-studio-components-states). 
+  [Stato del flusso di lavoro della mappa](state-map.md)stati, nella scheda **Flow** del browser States. 
+  [Stato del flusso di lavoro parallelo](state-parallel.md)states, nella scheda **Flow** del browser States. 

`ResultSelector`può essere usato per costruire un oggetto JSON personalizzato costituito da una o più coppie chiave-valore. I valori di ogni coppia possono essere valori statici o selezionati dal risultato dello stato con un percorso. 

**Nota**  
Per specificare che un parametro utilizza un percorso per fare riferimento a un nodo JSON nel risultato, il nome del parametro deve terminare con`.$`.

**Example Esempio di utilizzo ResultSelector del filtro**  
In questo esempio, viene utilizzata `ResultSelector` per manipolare la risposta della chiamata API Amazon CreateCluster EMR per uno stato Amazon `CreateCluster` EMR. Di seguito è riportato il risultato della chiamata all'`CreateCluster`API 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"
  }
}
```
**Per selezionare parte di queste informazioni e passare una coppia chiave-valore aggiuntiva con un valore statico, specifica quanto segue nel **ResultSelector**campo, nella scheda Output dello stato.**  

```
{
 "result": "found",
 "ClusterId.$": "$.output.ClusterId", 
 "ResourceType.$": "$.resourceType"
 }
```
L'utilizzo `ResultSelector` produce il seguente risultato.  

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

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

L'output di uno stato può essere una copia del relativo input, del risultato che produce o una combinazione del relativo input e risultato. Utilizza `ResultPath` per controllare quale di queste combinazioni verrà passata all'output dello stato. Per ulteriori casi d'uso di`ResultPath`, vedere[Specificazione dello stato dell'output utilizzando ResultPath in Step Functions](input-output-resultpath.md).

`ResultPath`è un filtro di output opzionale per i seguenti stati:
+  [Stato del flusso di lavoro delle attività](state-task.md)stati, che sono tutti gli stati elencati nella scheda **Azioni** del browser Stati. 
+  [Stato del flusso di lavoro della mappa](state-map.md)stati, nella scheda **Flow** del browser States. 
+  [Stato del flusso di lavoro parallelo](state-parallel.md)states, nella scheda **Flow** del browser States. 
+  [Passare lo stato del workflow](state-pass.md)states, nella scheda **Flow** del browser States. 

`ResultPath`può essere usato per aggiungere il risultato all'input dello stato originale. Il percorso specificato indica dove aggiungere il risultato.

**Example Esempio di utilizzo ResultPath del filtro**  
Supponiamo che quanto segue sia l'input di uno stato di Task.  

```
{
  "details": "Default example",
  "who": "AWS Step Functions"
}
```
Il risultato dello stato dell'attività è il seguente.  

```
Hello, AWS Step Functions
```
È possibile aggiungere questo risultato all'input dello stato applicando `ResultPath` e immettendo un [percorso](amazon-states-language-paths.md) di riferimento che indichi dove aggiungere il risultato, ad esempio`$.taskresult`:  
Con ciò`ResultPath`, quanto segue è il JSON che viene passato come output dello stato.  

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

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

Il `OutputPath` filtro consente di filtrare le informazioni indesiderate e di trasmettere solo la parte di JSON necessaria. `OutputPath`È una stringa, che inizia con`$`, che identifica i nodi all'interno del testo JSON.

**Example Esempio di utilizzo del filtro OutputPath**  
Immagina che una chiamata all'API Lambda Invoke restituisca i metadati oltre al risultato della funzione Lambda.  

```
{
  "ExecutedVersion": "$LATEST",
  "Payload": {
     "foo": "bar",
     "colors": [
          "red",
          "blue",
          "green"    
     ],
     "car": {
          "year": 2008,
          "make": "Toyota",
          "model": "Matrix"
     }
   },
"SdkHttpMetadata": {
  "AllHttpHeaders": {
    "X-Amz-Executed-Version": ["$LATEST"]
...
```
Puoi usarla `OutputPath` per filtrare i metadati aggiuntivi. Per impostazione predefinita, il valore del **OutputPath**filtro per gli stati Lambda Invoke creati tramite Workflow Studio è. `$.Payload` Questo valore predefinito rimuove i metadati aggiuntivi e restituisce un output equivalente all'esecuzione diretta della funzione Lambda.  
L'esempio di risultato dell'attività Lambda Invoke e il valore di `$.Payload` per il filtro **Output** passano i seguenti dati JSON come output.  

```
{
 "foo": "bar",
 "colors": [
      "red",
      "blue",
      "green"    
 ],
 "car": {
      "year": 2008,
      "make": "Toyota",
      "model": "Matrix"
 }
}
```
Il `OutputPath` filtro è l'ultimo filtro di output ad avere effetto, quindi se utilizzi filtri di output aggiuntivi come `ResultSelector` o`ResultPath`, dovresti modificare di conseguenza il valore predefinito di `$.Payload` per il `OutputPath` filtro. 