Semantik



<exec> dient zur Ausführung von Kommandos (Prozessen) auf Betriebssystemebene. Dabei wird der Befehl nicht direkt in <exec> deklariert, sondern <exec> enthält als Container unter anderem den Aufrufbefehl in Form eines <commandline>-Elements. Das <exec>-Element dient lediglich als Container für seine Subelemente. Deshalb muss ein <exec>-Element immer ein <commandline>-Element enthalten. Über <param>-Elemente werden dem <commandline>-Element Parameter übergeben. Mit <result> lässt sich überprüfen, ob die Ausführung erfolgreich war.


Attribute



AttributnameDatentypBeschreibungMögliche WerteStandardwertObligatorisch?
idSTRINGDie ID des Elements, über die es im Code angesprochen werden kann.beliebiger, regelkonformer Name.(Fehler)
processSTRINGHier kann zur besseren Übersichtlichkeit optional ein Name für den <exec>-Prozess angegeben werden.beliebiger, regelkonformer Name.(Fehler)
workdirSTRINGGibt das Arbeitsverzeichnis an, in dem der Prozess gestartet werden soll.Die ID eines <workdir>-Elements.

(Haken)
overrideBOOLEANFalls es in dem RCML-Prozess vor diesem <exec> bereits ein <exec> mit der selben ID gab, werden, falls override eingeschalten wird (true), das alte <exec> im Speicher überschrieben. Nachfolgend kann dann über diese ID nur noch auf das überschreibende <exec> zugegriffen werden.true : falsefalse(Minus)


Subelemente / Inhalt



Das <exec>-Element besitzt 3 Subelemente, die nur innerhalb eines <exec> notiert werden dürfen. Davon ist nur das <commandline>-Element ist obligatorisch.


  • Das <param>-Element zur Übergabe von Parametern an ein nachfolgendes <commandline>-Element. Ein <exec>-Element kann 0 bis beliebig viele <param>-Elemente enthalten.

  • Das <commandline>-Element dient zur Ausführung eines Befehls. Ein <exec>-Element muss min. ein <commandline>-Element enthalten.

  • Das <result>-Element ermöglicht es, den Return-Code (Rückgabewert) des Kommandoaufrufs abzufragen und die Verarbeitung bei einem Fehler zu stoppen. Ein <exec>-Element kann ein <result>-Element beinhalten.


In einem <exec>-Element dürfen des Weiteren alle RCML-Elemente notiert werden, außer: <rcml>, <process>.

Es ist auch erlaubt, <exec>-Elemente zu schachteln (<exec> innerhalb von <exec> zu notieren).


Variablenbindungen



Das <exec>-Element ist vom Typ RUNTIME-OBJECT. Dieser Typ besitzt folgende Variablenbindungen:


NameBeschreibungRückgabetyp
getWorkdir()Gibt das Arbeitsverzeichnis zurück.FILEOBJECT
getReturnCode()Gibt den Rückgabewert des <exec> zurück.INTEGER
testReturnCode(STRING param)Vergleicht den Rückgabewert des <exec> mit param. Sind die Werte identisch, gibt die Funktion true zurück, andernfalls false.BOOLEAN
getExecutionTime()Gibt die Dauer der Ausführung in ms zurück.LONG
getExitValue()Identisch zu getReturnCode().INTEGER


(Info) Auf FILEOBJECT ( id.getWorkdir() ) sind außerdem folgende Variablenbindungen anwendbar:
 

NameBeschreibungRückgabetyp
getName()Gibt den Namen der Datei zurück.STRING
getAbsolutePath()Gibt den absoluten Pfad zur Datei zurück.STRING


Beispiel



Im folgenden Beispiel wird ein einfacher copy-Prozesses ausgeführt. Die Verarbeitung soll durch <result> abgebrochen werden, falls die Bearbeitung nicht erfolgreich beendet wurde (irgendein Fehler oder irgendeine Warnung auftrat).


<rcml>	
	<process id="ExampleProcess" name="example process">
 
		<exec id="copyProcess" workdir="workdir">
         
			<workdir id="workdir" home="./WORK" />
 
			<!-- Setze 2 Parameter: Pfad zur zu kopierenden Datei und Zielpfad. -->
			<param name="infile" value="${inputFile.getFile().getAbsolutePath()}"/>
			<param name="outfile" value="${process['copy.output']}"/>
 
			<!-- Datei kopieren. -->
			<commandline processor="velocity">cmd /C copy $infile $outfile</commandline>
 
  			<!-- Nur wenn return-code = 0 ist (erfolgreich), Verarbeitung fortsetzen. -->
			<result return-code="0" />
 
		</exec>
 
	</process>
</rcml>
<exec>
Zweck:

Befehlsausführung

Typ:

Top-Level

Elternelement:

Top-Level-Elemente

Subelemente:

Ja

Variablenbindungen:

Ja

Beachte

  • Keine Stichwörter