call
Mit dem Befehl call können Applikationen aufgerufen werden. Der Befehl ermöglicht für den Aufruf einer Applikation folgende Konfiguration:
- Formulierung beliebig vieler Aufrufargumente
- Angabe, ob und wie lang das Skript beim Aufruf auf das Ende der Applikation warten soll
- Angabe des Ausführungsverzeichnisses
- Bedingungen, wann der Aufruf erfolgen bzw. ignoriert werden soll
Syntax
call <Application>
{
[arg <Argument>]
[arg.nomarks <Argument>]
[wait <Milliseconds>]
[rundir <absolute path>]
[iftrue <Condition>]
[iffalse <Condition>]
}
Applikationen können folgendermaßen aufgerufen werden:
-
Über den Namen der Applikation
xmlcall vdscriptEmailNotification.exe
Info
Wird call auf diese Weise verwendet, muss sich die Applikation im selben Skriptverzeichnis wie die SCRIPT-Datei befinden.
-
Über den absoluten Pfad der Applikation
xmlcall C:\Windows\System32\notepad.exe
- Über einen MS-DOS-Befehl
xmlcall cmd::net use
Der Befehl call kann über das Skript folgendermaßen konfiguriert werden:
arg / arg.nomarks
Der nachfolgende Wert wird in Anführungszeichen übergeben.
Beispiel:
arg C:\Pfad mit Leerzeichen\Testverzeichnis\
übergibt -> " C:\Pfad mit Leerzeichen\Testverzeichnis\
"
Über arg bzw. arg.nomarks können der aufgerufenen Applikation beliebig viele Argumente übergeben werden.
Die Argumente können Schlüsselwörter enthalten, die direkt zur Laufzeit vom Interpreter ermittelt und bestückt werden. Wird ein Argument mit arg definiert, werden die übergebenen Informationen in Anführungsstrichen (" ") gekapselt. Wird das Argument mit arg.nomarks definiert, wird die Information ohne Anführungsstriche an die Applikation übergeben.
Argument-Definition im Skript | Übergabe des Arguments an die Applikation |
---|---|
arg C:\Pfad mit Leerzeichen\Test\ | C:\Pfad mit Leerzeichen\Test\ |
arg.nomarks -u Benutzername | -u Benutzername |
wait
Legt ein Timeout (in ms) für die Ausführung der aufgerufenen Applikation fest, bevor der nächste Befehl des Skripts ausgeführt wird.
0: Der nächste Skriptbefehl wird sofort ausgeführt.
Der Standardwert ist 120 Sekunden.
Beispiel:
rundir
Legt fest, in welchem Ordner die aufgerufene Applikation ausgeführt werden soll.
Mögliche Werte:
- rundir {absoluter Pfad des Verzeichnisses}: Das angegebene Verzeichnis wird als Ausführungsverzeichnis verwendet.
- rundir {absoluter Pfad einer Datei}: Das Verzeichnis, in dem die angegebene Datei liegt, wird als Ausführungsverzeichnis verwendet.
Info
Wird das Argument rundir weggelassen, wird das Skriptverzeichnis als Ausführungsverzeichnis verwendet.
iftrue/iffalse
Legt Bedingungen fest, die erfüllt sein müssen damit der Aufruf durchgeführt wird.
Über iftrue bzw. iffalse kann eine Bedingung formuliert werden, so dass der Aufruf nur dann durchgeführt wird, wenn die Bedingung erfüllt ist (iftrue) bzw. nicht erfüllt ist (iffalse). Hierbei gilt:
- Standardmäßig ist keine Bedingung gesetzt, d. h. der Aufruf wird immer durchgeführt.
- Mehrere Bedingungen werden durch ein logisches AND verknüpft.
Info
Werden die Argumente iftrue und iffalse weggelassen, wird der Aufruf immer durchgeführt.
Beispiel 1
Function ScriptBeforeUpload
{
call ExampleApplication.exe
{
arg /Addr: $vdog::uploadjob->5002
arg /Account:TestAccount
arg /Password:abcdef
arg /DirDst: $vdog::specific->dirbackup
arg /PathLog: $vdog::logfile
arg /Lang: $vdog::language
}
done
}
In diesem Beispiel erzeugt der call-Befehl folgenden Aufruf:
ExampleApplication.exe "/Addr: {IP}" "/Account:TestAccount" "/Password:abcdef" "/DirDest: {Directory for the backup}" "/PathLog: {Log file}" "/Lang: {Language Id}"
- Die Datei
ExampleApplication.exe
muss sich im Skriptverzeichnis befinden. - Die {IP} wird direkt aus der Jobkonfiguration des Jobs (normalerweise ein UNC-Job) verwendet.
- Das {Verzeichnis für das Backup} wird vom octoplant System bestückt. Dies ist das Verzeichnis, dessen Inhalt nach dem Upload gepackt und als Datei
Backup.zip
gespeichert wird. - Die {Log-Datei} ist eine Austauschdatei für ScriptBeforeUpload, um Informationen in das Jobergebnis zu schreiben.
- Die Datei (Pfad und Name) wird vom octoplant System an das Uploadskript übergeben (siehe auch $vdog::logfile).
- Die {Sprach-ID} wird vom octoplant System entsprechend der aktuellen Sprache ausgefüllt.
Beispiel 2
Function ScriptBeforeUpload
{
def::var1 = \\$vdog::uploadjob->5002\d$\Data
call cmd::net use
{
arg.nomarks $def::var1
arg.nomarks $vdog::uploadjob->5004decode
arg.nomarks /user:$vdog::uploadjob->5003decode
arg.nomarks /persistent:no
}
dir.copy
{
source $def::var1
dest $vdog::specific->dirbackup\Data
spec *.prd|*.dat
}
dir.copy
{
source $def::var1\ReferenceImages
dest $vdog::specific->dirbackup\Data\ReferenceImages
}
call cmd::net use
{
arg.nomarks $def::var1
arg.nomarks /delete
}
done
}
In diesem Beispiel erzeugt der call-Befehl folgenden Aufruf:
Die Authentifizierung ist verschlüsselt. Das Passwort wird über ($vdog::uploadjob->5004decode) und der Benutzer wird über ($vdog::uploadjob->5003decode) aus der Jobkonfiguration entschlüsselt an den Aufruf übergeben.
Beispiel 3
Function ScriptBeforeEdit
{
// some logic to determine the editor
$def::var1 = <determine editor, e.g. notepad.exe>
//exit script and continue with default logic, if no editor could be determined
exit.ifemptyvar $def::var1
// open selected file directly in editor
$def::var2 = $vdog::specific->WorkingDir$vdog::specific->SelectedFile
// launch editor, but don't wait
call $def::var1
{
arg $def::var2
wait 0
rundir $def::var1
}
// editor is launched, no default logic needed
done
}
In diesem Beispiel erzeugt der call-Befehl folgenden Aufruf:
- Der Befehl call wartet nicht darauf, dass der Editor geschlossen wird. Stattdessen wird das Skript nach dem Befehl call beendet und die Steuerung wird an octoplant zurückgegeben.
- Als Ausführungsverzeichnis wird das Arbeitsverzeichnis der Komponente (d.h. der Ort, an dem sich die Projektdatei befindet) zur Ausführung festgelegt.
Beispiel 4
Function ScriptAfterCheckInS
{
$def::var1 = $func::getifcomponenttypeid(2691BA5A90ED4C5887D4BDD1F8C9A48, 1);
call MyCopyScript.exe
{
... some arguments
iftrue $def::var1=1
}
}
In diesem Beispiel wird MyCopyScript.exe
nur dann mit allen Argumenten aufgerufen, wenn der Check-In Vorgang eine Komponente eines bestimmten Komponententyps betrifft.