- Erstellt von Redakteur7 am Feb. 16, 2021
Semantik
Mit dem <switch>-Element ist es möglich, eine Kontrollstruktur mit beliebig vielen bedingten Ausführungen (<case>) zu implementieren. Ein <case> enthält Code, der nur ausgeführt wird, wenn die zugehörige Bedingung erfüllt ist. Das erste <case>, dessen Bedingung erfüllt ist, wird ausgeführt (dessen Inhalt wird ausgeführt). Alle nachkommenden <case> werden ignoriert, auch wenn deren Bedingung ebenfalls zutrifft. Die Überprüfung erfolgt von oben nach unten, weshalb es sinnvoll ist, Fallback-Routinen (Was soll passieren, wenn kein anderes <case> zutrifft) am Ende zu notieren. Eine vergleichbare Kontrollstruktur bilden <if>-<else>-Konstrukte. Bei <if> kann allerdings immer nur eine Bedingung (und gegebenenfalls per <else> das Gegenereignis) überprüft werden.
Attribute
Das <switch>-Element besitzt keine Attribute.
Subelemente / Inhalt
Das <switch>-Element kann nur das <case>-Element enthalten. Eine <switch>-Anweisung muss mindestens 1 <case>-Element enthalten. Innerhalb eines <switch> dürfen keine anderen Elemente notiert werden.
Das <case>-Element definiert eine Bedingung und enthält Code als Inhalt. Dieser Inhalt wird nur ausgeführt, wenn die Bedingung erfüllt ist. Alle nachfolgenden <case> werden dann ignoriert.
Variablenbindungen
Das <switch>-Element besitzt keine Variablenbindungen.
Beispiel
In folgendem Beispiel wird der Rückgabewert eines <exec> mit einer <switch>-Anweisung behandelt. Basierend auf dem Rückgabewert wird eine <message> an das EOMS-Core geschickt, die den Status beschreibt. Ein Beispiel, wie dies auch mit <if> - <else> statt <switch> umgesetzt werden kann, finden Sie hier. Weitere Beispiele zu <switch> finden Sie im HowTo - Kontrollstrukturen.
<rcml> <process id="ExampleProcess" name="example process"> <exec id="ExampleExec" workdir="workdir"> <commandline processor="velocity">cmd echo Wow, what a simple exec!</commandline> </exec> <switch> <case condition="${ExampleExec.testReturnCode('0')}"> <!-- Falls ReturnCode = 0 wird dieses case ausgeführt. --> <message text="Befehl erfolgreich ausgeführt." /> </case> <case condition="true"> <!-- Falls ReturnCode ungleich 0 wird dieses case ausgeführt. --> <message text="Befehlsausführung fehlgeschlagen." /> </case> </switch> </process> </rcml>
Zweck:
Kontrollstruktur
Typ:
Top-Level
Elternelement:
Top-Level-Elemente
Subelemente:
Nein
Variablenbindungen:
Nein
- Keine Stichwörter