Zusammenarbeit TaskSrv-SydroCmd

Aus TALSIM Docs

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.