- Erstellt von Redakteur7, zuletzt geändert von Redakteur9 am Sep. 09, 2022
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
Attributname | Datentyp | Beschreibung | Mögliche Werte | Standardwert | Obligatorisch? |
---|---|---|---|---|---|
id | STRING | Die ID des Elements, über die es im Code angesprochen werden kann. | beliebiger, regelkonformer Name. | — | |
process | STRING | Hier kann zur besseren Übersichtlichkeit optional ein Name für den <exec>-Prozess angegeben werden. | beliebiger, regelkonformer Name. | — | |
workdir | STRING | Gibt das Arbeitsverzeichnis an, in dem der Prozess gestartet werden soll. | Die ID eines <workdir>-Elements. | — | |
override | BOOLEAN | Falls 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 : false | false |
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:
Name | Beschreibung | Rü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 |
Auf FILEOBJECT ( id.getWorkdir() ) sind außerdem folgende Variablenbindungen anwendbar:
Name | Beschreibung | Rü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>
Zweck:
Befehlsausführung
Typ:
Top-Level
Elternelement:
Top-Level-Elemente
Subelemente:
Ja
Variablenbindungen:
Ja
—
- Keine Stichwörter