Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.

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). 


Codeblock
languagexml
<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>
Section
Column
width100%
Panel
borderColorGray
bgColorWhite
borderWidth1px
titleBGColor#8EF68E
borderStyledotted
title<exec>
Section
Column
width50%
Zweck:
Column
width50%

Befehlsausführung

Section
Column
width50%
Typ:
Column
width50%

Top-Level

Section
Column
width50%
Elternelement:
Column
width50%

Top-Level-Elemente

Section
Column
width50%
Subelemente:
Column
width50%

Ja

Section
Column
width50%
Variablenbindungen:
Column
width50%

Ja

Panel
borderColorGray
bgColorWhite
borderWidth1px
titleBGColor#8CBAF8
borderStyledotted
titleVerzweigungsstruktur
Panel
borderColorGray
bgColorWhite
borderWidth1px
titleBGColor#F68E8E
borderStyledotted
titleBeachte