Verzweigungen, Schleifen und Ausnahmebehandlungen
Exklusive Verzweigung
Die exklusive Verzweigung ermittelt anhand von Bedingungen die ausgehende Kante. Sie kennt zwei Arten von ausgehenden Kanten:
Bedingter Fluss: Die Kante prüft eine Bedingung
Standard-Fluss: Trifft keiner der zuvor ausgewerteten Bedingungen zu, wird der Standardfluss gewählt
Die Bedingungen werden in den ausgehenden Kanten des Gateways gepflegt. Die hier benutzte Sprache ist zurzeit noch die Java EL (Expression Language) und nicht Groovy.
Komplexere Auswertungen sollten daher in einer vorgelagerten Skript-Aktion ausgewertet werden, so dass die Bedingungen nur wenige Variablen prüfen müssen.
Der Standardfluss ist eine Option in den Eigenschaften der Kante. Nur eine Kante kann diese Option tragen.
Ereignisbasierte Verzweigung
Sie können durch die ereignisbasierte Verzweigung den Prozessfluss so steuern, dass der weitere Verlauf vom ersten Eintritt eines Zwischenereignisses abhängt. Details dazu finden Sie im Kapitel zu den Zwischenereignissen.
Formulierung von Bedingungen/logischen Ausdrücken
Operatoren
Arithmetic: +, -, *, /
Logical: and, or, not
Relational: ==, eq, !=, ne, <, lt, >, gt, <=, ge, >=, le
Empty: Der
emptyOperator kann dem Ausdruck vorangestellt werden, um den Wert auf leer odernullzu prüfen. Die Variable muss aber vorhanden sein.Conditional:
A ? B: C. Tenäre if-Anweisung
Reservierte Wörter
and | or | not | eq |
ne | lt | gt | le |
ge | true | false | null |
instanceof | empty | div | mod |
Syntaxprüfung
Beim Verlassen des Bedingungsfeldes in den Eigenschaften der Kante wird die Syntax des Ausdruckes geprüft. Die Gültigkeit bzw. Schreibweise von Variablen oder Operatoren wird hingegen nicht geprüft.
Beispiele von EL-Ausdrücken
Ausdruck | Variable | Result |
|---|---|---|
${intVar gt (4/2)} | intVar=1 | false |
${doubleVar le 3} | doubleVar=3‘ | true |
${stringVar eq "ABC"} | stringVar="ABC" | true |
${(10*10) ne 100} | false | |
${'a' lt 'b'} | true | |
${not booleanVar} | booleanVar=true | false |
${!empty param} | param=null or param=”” | false |