

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Status des parallelen Workflows
<a name="state-parallel"></a>

**Status verwalten und Daten transformieren**  
Erfahren Sie mehr über das [Übergeben von Daten zwischen Zuständen mithilfe von Variablen](workflow-variables.md) und das [Transformieren von Daten mit JSONata](transforming-data.md).

Der `Parallel` Status (`"Type": "Parallel"`) kann verwendet werden, um separate Ausführungszweige in Ihrer Zustandsmaschine hinzuzufügen.

Zusätzlich zu den [allgemeinen Zustandsfeldern](statemachine-structure.md#amazon-states-language-common-fields) führen `Parallel`-Zustände diese zusätzlichen Felder ein.

** `Branches` (Erforderlich)**  
Ein Array von Objekten, das Zustandsautomaten bestimmt, die parallel ausgeführt werden. Jedes dieser Zustandsautomatenobjekte muss über Felder namens `States` und `StartAt` verfügen, die dasselbe bedeuten wie diejenigen im oberen Level eines Zustandsautomaten.

**`Parameters`( JSONPath Nur optional)**  
Wird verwendet, um Informationen an die im `Branches` Array definierten Zustandsmaschinen zu übergeben.

**`Arguments`( JSONata Nur optional)**  
Wird für die Weitergabe von Informationen zu den API-Aktionen von verbundenen Ressourcen verwendet. Werte können JSONata Ausdrücke enthalten. Weitere Informationen finden Sie unter [Transformieren von Daten mit JSONata In-Step-Funktionen](transforming-data.md).

**`Output`( JSONata Nur optional)**  
Wird verwendet, um die Ausgabe des Status zu spezifizieren und zu transformieren. Wenn angegeben, überschreibt der Wert die Standardeinstellung für die Statusausgabe.   
Das Ausgabefeld akzeptiert jeden JSON-Wert (Objekt, Array, Zeichenfolge, Zahl, boolescher Wert, Null). Jeder Zeichenkettenwert, einschließlich solcher innerhalb von Objekten oder Arrays, wird so ausgewertet, als JSONata ob er von \$1%%\$1 Zeichen umgeben wäre.  
 Output akzeptiert auch direkt einen JSONata Ausdruck, zum Beispiel: „Output“: „\$1% jsonata expression%\$1“   
Weitere Informationen finden Sie unter [Transformieren von Daten mit JSONata In-Step-Funktionen](transforming-data.md).

** `Assign` (Optional)**  
Wird zum Speichern von Variablen verwendet. Das `Assign` Feld akzeptiert ein JSON-Objekt mit key/value Paaren, die Variablennamen und die ihnen zugewiesenen Werte definieren. Jeder Zeichenkettenwert, auch solche innerhalb von Objekten oder Arrays, wird so ausgewertet, JSONata als ob er von Zeichen umgeben `{% %}` wäre  
Weitere Informationen finden Sie unter [Übergeben von Daten zwischen Staaten mit Variablen](workflow-variables.md).

** `ResultPath`( JSONPath Nur optional)**  
Gibt an, wo (in der Eingabe) die Ausgabe der Verzweigungen platziert werden soll. Die Eingabe wird dann wie vom Feld `OutputPath` festgelegt gefiltert (falls vorhanden), bevor sie als Ausgabe des Zustands verwendet wird. Weitere Informationen finden Sie unter [Verarbeitung von Eingabe und Ausgabe](concepts-input-output-filtering.md).

** `ResultSelector`( JSONPath Nur optional)**  
Übergibt eine Sammlung von Schlüssel-Wert-Paaren, wobei die Werte statisch sind oder aus dem Ergebnis ausgewählt werden. Weitere Informationen finden Sie unter [ResultSelector](input-output-inputpath-params.md#input-output-resultselector).

** `Retry` (Optional)**  
Ein Array von Objekten namens Retrier, die eine Wiederholungsrichtlinie für den Fall definieren, dass der Zustand auf Laufzeitfehler trifft. Weitere Informationen finden Sie unter [Beispiele für Zustandsmaschinen mit Retry und Catch](concepts-error-handling.md#error-handling-examples).

** `Catch` (Optional)**  
Ein Array von Objekten namens Catcher, die einen Fallback-Zustand definieren, der ausgeführt wird, wenn der Zustand auf Laufzeitfehler trifft und seine Wiederholungsrichtlinie ausgeschöpft wurde oder nicht definiert ist. Weitere Informationen finden Sie unter [Fallback-Zustände](concepts-error-handling.md#error-handling-fallback-states).

Ein `Parallel` Status AWS Step Functions veranlasst, jeden Zweig, beginnend mit dem im `StartAt` Feld dieses Zweigs angegebenen Status, so gleichzeitig wie möglich auszuführen und zu warten, bis alle Zweige beendet sind (einen Terminalstatus erreichen), bevor das `Next` Feld des `Parallel` Zustands verarbeitet wird.

## Beispiel für den Parallelzustand
<a name="parallel-example"></a>

```
{
  "Comment": "Parallel Example.",
  "StartAt": "LookupCustomerInfo",
  "States": {
    "LookupCustomerInfo": {
      "Type": "Parallel",
      "End": true,
      "Branches": [
        {
         "StartAt": "LookupAddress",
         "States": {
           "LookupAddress": {
             "Type": "Task",
             "Resource": "arn:aws:lambda:region:account-id:function:AddressFinder",
             "End": true
           }
         }
       },
       {
         "StartAt": "LookupPhone",
         "States": {
           "LookupPhone": {
             "Type": "Task",
             "Resource": "arn:aws:lambda:region:account-id:function:PhoneFinder",
             "End": true
           }
         }
       }
      ]
    }
  }
}
```

In diesem Beispiel werden die Verzweigungen `LookupAddress` und `LookupPhone` parallel ausgeführt. So sieht der visuelle Workflow in der Step Functions-Konsole aus.

![\[Visuelles Diagramm eines beispielhaften parallel Workflows.\]](http://docs.aws.amazon.com/de_de/step-functions/latest/dg/images/parallel-state.png)


Jede Verzweigung muss unabhängig sein. Ein Zustand in einer Verzweigung eines `Parallel`-Zustands darf kein `Next`-Feld haben, das auf ein Feld außerhalb dieser Verzweigung abzielt, noch darf ein anderer Zustand außerhalb der Verzweigung in diese Verzweigung übergehen.

## Ein- und Ausgabeverarbeitung des Parallelzustands
<a name="state-parallel-output"></a>

Ein `Parallel`-Zustand stellt jeder Verzweigung eine Kopie seiner eigenen Eingabedaten bereit (Änderungen durch das Feld `InputPath` unterliegend). Er generiert eine Ausgabe, die ein Array mit einem Element für jede Verzweigung ist, das die Ausgabe von dieser Verzweigung enthält. Es ist nicht erforderlich, dass alle Elemente vom selben Typ sind. Das Ausgabe-Array kann in die Eingabedaten eingefügt werden (und das Ganze als Ausgabe des `Parallel`-Zustands gesendet werden), indem ein `ResultPath`-Feld auf die übliche Weise verwendet wird (siehe [Verarbeitung von Eingabe und Ausgabe](concepts-input-output-filtering.md)).

```
{
  "Comment": "Parallel Example.",
  "StartAt": "FunWithMath",
  "States": {
    "FunWithMath": {
      "Type": "Parallel",
      "End": true,
      "Branches": [
        {
          "StartAt": "Add",
          "States": {
            "Add": {
              "Type": "Task",
              "Resource": "arn:aws:states:region:123456789012:activity:Add",
              "End": true
            }
          }
        },
        {
          "StartAt": "Subtract",
          "States": {
            "Subtract": {
              "Type": "Task",
              "Resource": "arn:aws:states:region:123456789012:activity:Subtract",
              "End": true
            }
          }
        }
      ]
    }
  }
}
```

Wenn dem Zustand `FunWithMath` das Array `[3, 2]` als Eingabe übergeben wird, dann erhalten die Zustände `Add` und `Subtract` dieses Array als Eingabe. Die Ausgabe der `Subtract` Aufgaben `Add` und wäre die Summe und Differenz der Array-Elemente 3 und 2, also `5` und`1`, während die Ausgabe des `Parallel` Zustands ein Array wäre.

```
[ 5, 1 ]
```

**Tipp**  
Wenn der Status Parallel oder Map, den Sie in Ihren Zustandsmaschinen verwenden, ein Array von Arrays zurückgibt, können Sie diese mit dem [ResultSelector](input-output-inputpath-params.md#input-output-resultselector) Feld in ein flaches Array umwandeln. Weitere Informationen finden Sie unter [Ein Array von Arrays reduzieren](input-output-inputpath-params.md#flatten-array-of-arrays-result-selector).

## Fehlerbehandlung
<a name="error-handling"></a>

Wenn eine der Verzweigungen aufgrund eines unbehandelten Fehlers oder durch den Übergang zu einem `Fail`-Zustand fehlschlägt, wird der gesamte `Parallel`-Zustand als fehlgeschlagen betrachtet und alle seine Verzweigungen werden gestoppt. Wenn der Fehler nicht vom `Parallel` Status selbst behandelt wird, stoppt Step Functions die Ausführung mit einem Fehler.

**Anmerkung**  
Wenn ein parallel Status ausfällt, werden aufgerufene Lambda-Funktionen weiter ausgeführt, und Activity Worker, die ein Task-Token verarbeiten, werden nicht gestoppt.   
Um lang andauernde Aktivitäten zu beenden, verwenden Sie Heartbeats, um zu erkennen, ob der zugehörige Zweig von Step Functions gestoppt wurde, und beenden Sie Mitarbeiter, die gerade Aufgaben bearbeiten. Durch das Aufrufen von [https://docs.aws.amazon.com/step-functions/latest/apireference/API_SendTaskHeartbeat.html](https://docs.aws.amazon.com/step-functions/latest/apireference/API_SendTaskHeartbeat.html), [https://docs.aws.amazon.com/step-functions/latest/apireference/API_SendTaskSuccess.html](https://docs.aws.amazon.com/step-functions/latest/apireference/API_SendTaskSuccess.html) oder [https://docs.aws.amazon.com/step-functions/latest/apireference/API_SendTaskFailure.html](https://docs.aws.amazon.com/step-functions/latest/apireference/API_SendTaskFailure.html) wird ein Fehler gemeldet, wenn der Status einen Fehler aufweist. Weitere Informationen finden Sie unter [Heartbeat-Fehler](https://docs.aws.amazon.com/step-functions/latest/apireference/API_SendTaskHeartbeat.html#API_SendTaskHeartbeat_Errors).
Die Ausführung von Lambda-Funktionen kann nicht gestoppt werden. Wenn Sie einen Fallback implementiert haben, verwenden Sie einen `Wait` Status, sodass die Bereinigungsarbeiten nach Abschluss der Lambda-Funktion ausgeführt werden.