Zum Inhalt

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:

call cmd::net use { arg $def::var2 wait 0 rundir $def::var1 }

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:

net use {Network folder} {Password} /user: {User}/persistent:no

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:

notepad.exe {Project file}
  • 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.

Verwandte Themen