Interactions between TaskSrv-SydroCmd
Der TaskServer kann das SydroCmd-tool aufrufen und dadurch seine Funktionalität noch deutlich erweitern. Insbesondere kann das SydroCmd-tool Datumsangaben verarbeiten, das aktuelle Datum abrufen und in Dateien ersetzen und Dateien aus dem Internet runterladen. Für den operationellen Einsatz ist es daher unerlässlich.
Für den Aufruf des SydroCmd-tools wird der TaskServer-Job Command line (CMD
) genutzt.
Wie für den normalen Ablauf einer TaskServer-Auswertung müssen die TaskServer template-Datei, die Input-Datei und die task-Datei vorbereitet werden. Die Attribute für den Job im Template-File sind Command=SydroCmd
, sowie der Befehl, der mit dem SydroCmd-tool ausgeführt werden soll und alle dafür benötigten Argumente mit den Schlüsselwörtern Arg1=
, Arg2=
usw.
Beispiel
Beispiel für eine Template Datei Cmd.Replace.tpl
:
#======================= #Template #======================= [JOBS] CountJobs=1 #ID;aktiv 0/1;RUNMODE 0=LoopInput, 1=MergeInput; Identifier;Mode;Beschreibung 1;1;0;CmdSetDate;CMD;Executes a command line [VARIABLES] CountVariables=4 #ID;Typ;DataType;Beschreibung (nur "INP" und "OUT" müssen mit Eingaben belegt sein) 1;INPUT;STRING;Key 2;INPUT;STRING;sourcefile 3;INPUT;STRING;Date to be set, yyyymmddhhmm 4;INPUT;STRING;targetfile [CmdSetDate] Key=%1 Command=SydroCmd Arg1=-replace Arg2=%2 Arg3=DATE Arg4=%3 Arg5=%4
Im Bereich, in dem die Attribute für den Job festgelegt werden [CmdSetDate]
, wird mit dem Attribut Command
angegeben, dass das Programm SydroCmd
aufgerufen werden soll. Beim ersten Attribut Arg1
wird der Schlüssel des Befehls eingegeben, den das SydroCmd-tool ausführen soll (hier: -replace) (s. auch Anwendung des SydroCmd-tools). Die weiteren Attribute sind die Argumente, die der Befehl braucht, ggf. als Variablen (vorher definiert im Bereich [VARIABLES]
.
Beispiel für eine Input-Datei Cmd.StartDownload.tpl
:
#======================= #INPUT #======================= [INPUT] Count=1 First=1 Last=1 [1] #INPUT (String) Name=Key Set current date to specific input files [2] #INPUT (String) Name=sourcefile ..\Input\DWD.Radolan.OP\Cmd.SetDate.Template.txt [3] #INPUT (String) Name=date yyyymmddhhmm Now [4] #INPUT (String) Name=targetfile ..\Input\DWD.Radolan.OP\Cmd.SetDate.txt
In dem Input-File werden die Variablen gefüllt, die in dem Template-File definiert wurden. Die dritte Variable date
ist in diesem Fall nicht mit einem Datum im Datumsformat yyyymmddhhmm angegeben, sondern durch das Schlüssenwort Now
.
Mit der Task, die dieses Template und dieses Input-File verknüpft, werden in der Datei Cmd.SetDate.Template.txt
also alle Stellen mit dem Schlüsselwort DATE
entsprechend ihrer Formatierungsangaben ausgehend vom aktuellen Datum ausgetauscht und in die Datei Cmd.SetDate.txt
geschrieben.
Beispiel für die Task-Datei Cmd.SetCurrentDate.tsk
:
#======================= #TASK #======================= [SETTINGS] ShowMsg=TRUE CountTask=1 [TASK1] Key=Set current date Name=Sets current date and adjusts input files according to the current date TemplateFile=..\Templates\Cmd.Replace.tpl Template=JOBS VariablesFile=..\Input\Cmd.StartDownload.txt
Beispiel für eine Quelldatei, in der das Datum ausgetauscht werden soll (Cmd.SetDate.Template.txt
):
#======================= #INPUT #======================= [INPUT] Count=7 First=1 Last=7 [1] #INPUT (String) Name=Key cmd.Init cmd.Download cmd.MoveResults cmd.UnzipResults cmd.CopyLog cmd.UnzipTarOneByOne cmd.StartProcessing [2] #INPUT (String) Name=sourcefile ..\Input\DWD.Radolan.OP\Cmd.Init.Template.txt ..\Input\DWD.Radolan.OP\Cmd.Download.Template.txt ..\Input\DWD.Radolan.OP\Cmd.MoveDownloads.Template.txt ..\Input\DWD.Radolan.OP\Cmd.UnzipResults.Template.txt ..\Input\DWD.Radolan.OP\Cmd.CopyLog.Template.txt ..\Input\DWD.Radolan.OP\Cmd.UnZipTarFullDay.Template.txt ..\Input\DWD.Radolan.OP\Cmd.StartProcessing.Template.txt [3] #INPUT (String) Name=date {DATE|yyyyMMdd|-1,d}0000 {DATE|yyyyMMdd|-1,d}0000 {DATE|yyyyMMdd|-1,d}0000 {DATE|yyyyMMdd|-1,d}0000 {DATE|yyyyMMdd|-1,d}0000 {DATE|yyyyMMdd|-1,d}0000 {DATE|yyyyMMdd|-1,d}0000 [4] #INPUT (String) Name=targetfile ..\Input\DWD.Radolan.OP\Cmd.Init.txt ..\Input\DWD.Radolan.OP\Cmd.Download.txt ..\Input\DWD.Radolan.OP\Cmd.MoveDownloads.txt ..\Input\DWD.Radolan.OP\Cmd.UnzipResults.txt ..\Input\DWD.Radolan.OP\Cmd.CopyLog.txt ..\Input\DWD.Radolan.OP\Cmd.UnZipTarFullDay.txt ..\Input\DWD.Radolan.OP\Cmd.StartProcessing.txt
Die Platzhalter für das Datum ist hier mit {DATE|yyyyMMdd|-1,d}0000
eingestellt, d.h. das einzugebende Datum (hier das aktuelle, z.B. 19.7.2019) abzüglich eines Tages im Format yyyyMMdd (also z.B. 20190718).
Beispiel für das zugehörige Output-File (Cmd.SetDate.txt
):
#======================= #INPUT #======================= [INPUT] Count=7 First=1 Last=7 [1] #INPUT (String) Name=Key cmd.Init cmd.Download cmd.MoveResults cmd.UnzipResults cmd.CopyLog cmd.UnzipTarOneByOne cmd.StartProcessing [2] #INPUT (String) Name=sourcefile ..\Input\DWD.Radolan.OP\Cmd.Init.Template.txt ..\Input\DWD.Radolan.OP\Cmd.Download.Template.txt ..\Input\DWD.Radolan.OP\Cmd.MoveDownloads.Template.txt ..\Input\DWD.Radolan.OP\Cmd.UnzipResults.Template.txt ..\Input\DWD.Radolan.OP\Cmd.CopyLog.Template.txt ..\Input\DWD.Radolan.OP\Cmd.UnZipTarFullDay.Template.txt ..\Input\DWD.Radolan.OP\Cmd.StartProcessing.Template.txt [3] #INPUT (String) Name=date 201907180000 201907180000 201907180000 201907180000 201907180000 201907180000 201907180000 [4] #INPUT (String) Name=targetfile ..\Input\DWD.Radolan.OP\Cmd.Init.txt ..\Input\DWD.Radolan.OP\Cmd.Download.txt ..\Input\DWD.Radolan.OP\Cmd.MoveDownloads.txt ..\Input\DWD.Radolan.OP\Cmd.UnzipResults.txt ..\Input\DWD.Radolan.OP\Cmd.CopyLog.txt ..\Input\DWD.Radolan.OP\Cmd.UnZipTarFullDay.txt ..\Input\DWD.Radolan.OP\Cmd.StartProcessing.txt
Dieses File ist seinerseits wieder ein Input-File für die TaskServer Task SetDate, mit der das Datum dann in weiteren Template-Dateien ausgetauscht werden kann, die ihrereseits wieder Input-Files für z.B. den Download von Daten eines bestimmten Datums sind.