# Entscheidungen

Mit Hilfe von Entscheidungen können Verzweigungen in Workflows realisiert werden. Um eine Entscheidung hinzuzufügen, ziehen Sie sie von der Sidebar auf einen freien Bereich im Workflow Builder.

<figure><img src="https://2388870224-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8dtLKppxVG0mxVBzNFs6%2Fuploads%2FDEwcV1ZBh3EtcARmNRll%2Fwfb-decision-step-01.png?alt=media&#x26;token=96e47948-b306-4688-8958-689df90e7738" alt="" width="375"><figcaption></figcaption></figure>

## Entscheidungspfade

Eine Entscheidung besteht aus Pfaden. Jeder Pfad enthält eine oder mehrere Bedingungen. Pfade werden nacheinander, in der Reihenfolge in der sie definiert sind, geprüft. Der erste Pfad, dessen Bedingungen erfüllt sind, wird für die weitere Ausführung des Workflows ausgewählt.

<figure><img src="https://2388870224-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8dtLKppxVG0mxVBzNFs6%2Fuploads%2F3XMkeyOuRVovTWS3iOxD%2Fwfb-decision-step-03.png?alt=media&#x26;token=26e33efb-3c1b-4fc5-a707-cb257bdfcc57" alt="" width="375"><figcaption><p>Entscheidung mit drei Pfaden</p></figcaption></figure>

Jeder Pfad hat einen Ausgang, der mit einem grünen Kreis <img src="https://2388870224-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8dtLKppxVG0mxVBzNFs6%2Fuploads%2Fd7sofUPQetY2rTPvtmPQ%2Fwfb-decision-step-04.png?alt=media&#x26;token=38276264-a44c-4a0d-8ea8-d584127bd17a" alt="" data-size="line"> markiert ist. Verbinden Sie diesen mit dem Workstep, der als Nächstes ausgeführt werden soll. Trifft kein Pfad zu, wird der Workstep ausgeführt, der am unteren Ende der Entscheidung mit dem <img src="https://2388870224-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8dtLKppxVG0mxVBzNFs6%2Fuploads%2FN6cbqwhawY9XT9fGucpm%2Fwfb-decision-step-05.png?alt=media&#x26;token=a73b0c3a-934d-4311-bc10-6e9bd404b995" alt="" data-size="line"> Symbol verbunden ist.

Folgendes Beispiel zeigt eine Entscheidung, an der an allen Ausgänge Worksteps angebunden sind.

<figure><img src="https://2388870224-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8dtLKppxVG0mxVBzNFs6%2Fuploads%2FUGnJ9UIunU4j7vnPxttB%2Fwfb-decision-step-06.png?alt=media&#x26;token=7f6635c9-e07d-43ca-9276-a56e9a1cb142" alt="" width="563"><figcaption><p>Entscheidung mit drei Pfaden und dem Default-Pfad</p></figcaption></figure>

## Bedingungen

Ein Entscheidungspfad enthält Bedingungen, die überprüft werden und entweder erfüllt (`true`) oder nicht erfüllt (`false`) sind. Mehrere Bedingungen können mit einem logischen `UND` oder `ODER` verknüpft werden.

Eine Bedingung setzt sich aus einem linken Operand, einer Operation und einem optionalen rechten Operand zusammen. Als linker Operand kann immer nur eine Variable gewählt werden.

Der Operator bestimmt, ob ein rechter Operand notwendig ist oder nicht.&#x20;

Als rechter Operand kann entweder eine Variable, Freitext oder eine Mischung aus beidem verwendet werden.

Im folgenden Beispiel wird die Variable `counter` überprüft, ob sie grösser als 0 ist. Dabei ist `counter` der linke Operand, `Greter than` der Operator und `0` der rechte Operand.

<figure><img src="https://2388870224-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8dtLKppxVG0mxVBzNFs6%2Fuploads%2FlU2qedoKHS6hbzLFkNTl%2Fwfb-decision-step-02.png?alt=media&#x26;token=84e624b4-0e56-44a4-81e9-661bce0009fe" alt="" width="289"><figcaption><p>Pfad mit einer Bedingung</p></figcaption></figure>

Mit einem Klick auf *+ Bedingung hinzufügen* erhält dieser Pfad eine weitere Bedingung. Ob alle Bedingungen erfüllt sein müssen oder nur eine entscheiden Sie über die Schaltflächen `UND` oder `ODER`. `UND` bedeutet, dass alle Bedingungen erfüllt sein müssen um mit diesem Pfad im Workflow fortzufahren. `ODER` heisst, dass nur eine der Bedingungen erfüllt sein muss.

### Operatoren

Operatoren werden in binäre und unäre Operatoren unterteilt. Ein binärer Operator benötigt einen linken und rechten Operand, zum Beispiel `Greater than`. Ein unärer Operator benötigt nur einen linken Operanden, zum Beispiel `Is empty`.

Nicht jeder Operator ist für jeden Datentyp anwendbar. Nachdem Sie den linken Operanden ausgewählt haben, werden nur mehr die passenden Operatoren in der Auswahlbox angezeigt.

#### Has value / Has no value

Mit den Operatoren `Has value` und `Has no value` können Variablen geprüft werden, ob sie *null* sind. *null* ist eine spezielle Auszeichnung einer Variable, die angibt, dass die Variable keinen Wert hat.

Diese Operatoren sind für alle Variablentypen verfügbar.

#### Equals / Not equal

Diese Operatoren können verwendet werden, um Variablen auf Gleichheit oder Ungleichheit zu prüfen.&#x20;

{% hint style="warning" %}
Wenn Sie `text` Variablen mit diesen Operatoren vergleichen, wird auf die Gross- und Kleinschreibung Rücksicht genommen!
{% endhint %}

#### Equals ignore case / Not equal ignore case

Diese Operatoren können ebenfalls verwendet werden, um Variablen auf Gleichheit oder Ungleichheit zu prüfen. Es wird jedoch dabei **nicht** auf die Gross- und Kleinschreibung Rücksicht genommen.

Diese Operatoren stehen nur für die Variablentypen `text`, `email`, `phone` und `url` zur Verfügung.

#### Greater than / Lower than / Greater than or equal / Lower than or equal

Mit diesen Operatoren können Variablen nach ihrer Grösse verglichen werden. Neben Zahlen lassen sich auch Datums- und Datumswerte mit Uhrzeit vergleichen.

Diese Operatoren stehen nur für die Variablentypen `integer`, `decimal`, `date` und `datetime` zur Verfügung.&#x20;

#### Contains / Does not contain

Diese Operatoren prüfen, ob etwas in einer Variable vorhanden ist oder nicht. Wird dieser Operator auf eine `text` Variable angewendet, erfolgt die Prüfung unter Rücksichtnahme von Gross- und Kleinschreibung.

Für Collections, Datumsbereich und Datumsbereich mit Zeit können diese Operatoren ebenfalls verwendet werden. Damit lässt sich zum Beispiel untersuchen, ob ein gewünschtes Element in einer Collection vorkommt oder ob ein Datum in einem gewissen Datumsbereich liegt.

Diese Operatoren stehen nur für die Variablentypen `text`, `collection`, `dateRange` und `dateTimeRange` zur Verfügung.

#### Is true / Is false

Eine Variable vom Typ `boolean` kann mit Hilfe dieser Operatoren überprüft werden, ob sie `true` oder `false` ist.

Diese Operatoren stehen nur für den Variablentyp `boolean` zur Verfügung.

#### Empty / Not empty

Diese Operatoren prüfen, ob eine Variable leer ist. Es hängt vom Typ der Variable ab, wie "leer" zu interpretieren ist. Eine Variable vom Typ `text` ist leer, wenn sie keine Zeichen enthält, also eine Länge von 0 hat.

Variablen vom Typ `collection`, `files`, `carousel`, `optionList` sind leer, wenn sie keine Elemente beinhalten.

Diese Operatoren stehen nur für die Variablentypen `text`, `collection`, `files`, `carousel` und `optionList` zur Verfügung.

{% hint style="info" %}
Ist eine Variable *null*, liefert der Operator `Empty` den Wert `true` zurück.
{% endhint %}

#### Blank / Not blank

Dieser Operator steht speziell für `text` Variablen zur Verfügung. Er entfernt Leerzeichen und Zeilenumbrüche am **Anfang** und **Ende** des Variablenwertes. Danach verhält er sich gleich wie `Empty` / `Not empty`.

Dieser Operator steht nur für Variablen vom Typ `text` zur Verfügung.

{% hint style="info" %}
Ist eine Variable *null*, liefert der Operator `Blank` den Wert `true` zurück.
{% endhint %}

#### Is after / Is before / Is after now / Is before now

Diese Operatoren erlauben das Vergleichen von Datumswerten, mit und ohne Zeit. Bei  `Is after` und `Is before` muss ein Vergleichswert angegeben werden. `Is after now` und `Is before now` verwenden hingegen das Datum und die Uhrzeit der Workflowausführung.

Diese Operatoren stehen nur für die Variablentypen `date` und `datetime` zur Verfügung.

#### Is JSON object

Dieser Operator prüft ob die Variable ein JSON-Objekt oder ein JSON-Array ist.&#x20;

Er steht nur für Variablen vom Typ `text` oder `json` zur Verfügung.

#### Begins with / Ends with

Diese Operatoren prüfen, ob eine Variable vom Typ `text` mit einer gewissen Zeichenkette beginnt oder endet.

{% hint style="warning" %}
Die Prüfung erfolgt unter Berücksichtigung von Gross- und Kleinschreibung.
{% endhint %}

Diese Operatoren stehen nur für Variablen vom Typ `text` zur Verfügung.

### Vergleich Has Value / Empty / Blank

<table data-full-width="false"><thead><tr><th>Value</th><th>Has value</th><th>Is empty</th><th>Is blank</th></tr></thead><tbody><tr><td><em>null</em></td><td>No</td><td>Yes</td><td>Yes</td></tr><tr><td><code>""</code> (empty text)</td><td>Yes</td><td>Yes</td><td>Yes</td></tr><tr><td><code>"   "</code> (only spaces)    </td><td>Yes</td><td>No</td><td>Yes</td></tr><tr><td><code>"foo"</code></td><td>Yes</td><td>No</td><td>No</td></tr><tr><td><code>" foo"</code></td><td>Yes</td><td>No</td><td>No</td></tr><tr><td><code>"foo "</code></td><td>Yes</td><td>No</td><td>No</td></tr></tbody></table>
