How-To

Für dieses Element ist ein How-To Artikel verfügbar.

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>
<switch>
Zweck:

Kontrollstruktur

Typ:

Top-Level

Elternelement:

Top-Level-Elemente

Subelemente:

Nein

Variablenbindungen:

Nein

Beachte

Trifft keine <case>-Bedingung zu, wird der letzte <case> ausgeführt (es wird immer zwingend ein <case> ausgeführt). Innerhalb eines <switch>-Elements dürfen nur <case>-Elemente notiert werden.

(Warnung) <switch> ist zwar ein Top-Level-Element, darf aber nur <case> beinhalten!


  • Keine Stichwörter