Beispielsammlung, Leitfaden > FileTransfer-Verhalten durch Bedingungen in einem Workflow steuern

Verhalten von Dateiübertragungen durch Bedingungen in einem Workflow steuern

Ziel: Ein FileTransfer ist über einen Workflow zu starten. Dabei soll innerhalb des Workflows überprüft werden, ob Quell- und Ziel-Datei vorhanden sind und entsprechende Aktionen gesetzt werden.

Verwendete Objekte: Workflow, Job (Windows), FileTransfer

Verwendete Script-Sprachmittel: SYS_TIME_PHYSICAL, SYS_DATE_PHYSICAL, STR_CUT, STR_FIND, :SET, :PSET, :PRINT, :DATA, :PUT_ATT

Dieses Beispiel verdeutlicht die Verwendung der Bedingungen/Anweisungen von Workflow-Aufgaben.


Beispiele

Ein Windows-Job (JOBS.WIN.COND) in einem Workflow soll die Dateiliste eines Verzeichnisses abrufen und in eine Textdatei schreiben. Danach wird ein FileTransfer (JOBF.CONDITIONS) über den Workflow aktiviert, der diese Datei auf einen anderen Rechner überträgt.

Innerhalb des Workflows wird dabei geprüft, ob es zu Problemen beim FileTransfer kommt, und es werden entsprechende Aktionen gesetzt. Dies ist über die Registerkarten Pre-Conditions und Post-Conditions in den Eigenschaften von Workflow-Aufgaben möglich.

Durch diesen Mechanismus wird sichergestellt, dass es zu keinem Fehler kommt und die Zieldateien nicht überschrieben werden.

Legen Sie zuerst den Workflow JOBP.CONDITIONS an.

Öffnen Sie diesen und wechseln Sie in die Registerkarte Variablen & Prompts. Tragen Sie hier die Objektvariablen ein, welche die Werte für die Workflow-Aufgaben speichern. Der Vorteil dabei ist, dass die Werte an einer Stelle gespeichert sind und somit nachträglich einfach geändert werden können.

Variablenname Wert Beschreibung
&SAGENT# WIN01 Quellagent des FileTransfers
&DAGENT# WIN02 Agent des FileTransfer-Ziels
&SLOGIN# GLOBAL.LOGIN Login-Objekt für die Anmeldung am Quellrechner
&DLOGIN# GLOBAL.LOGIN Login-Objekt für die Anmeldung am Zielrechner
&DFILE# C:\temp\test2.txt Pfad und Name der Zieldatei

Erstellen Sie im nächsten Schritt die Objekte des Workflows:

Windows-Job: JOBS.WIN.COND

Fügen Sie folgende Script-Zeilen in die Registerkarte Pre-Script des Jobs ein:

:PUT_ATT HOST = &SAGENT#
:PUT_ATT LOGIN = &SLOGIN#

Dadurch werden der Agent und das Login-Objekt des Jobs zur Laufzeit gesetzt. Die Objektvariablen werden vom Workflow geerbt. Achten Sie daher darauf, dass die Einstellung Von Parent erben in der Registerkarte "Variablen & Prompts" entsprechend gesetzt ist. In der Registerkarte Script sind folgende Zeilen einzutragen:

:SET &DATE# = SYS_DATE_PHYSICAL("YYYYMMDD")
:SET &TIME# = SYS_TIME_PHYSICAL("HHMMSS")

:PSET &SFILE# = "C:\temp\&DATE#_&TIME#.txt"

:DATA dir C:\ >> &SFILE#
:DATA @set retcode=%errorlevel%
:DATA @if NOT %ERRORLEVEL% == 0 goto :retcode

Das Script dient dazu, eine Textdatei zu erstellen, deren Name sich aus der aktuellen Uhrzeit und dem Datum zusammensetzt. Befüllt wird diese Textdatei mit der Dateiliste von C:\. Der Name der Textdatei wird zusätzlich in einer Objektvariable gespeichert und für den FileTransfer an den Workflow weitergegeben.

 

FileTransfer: JOBF.CONIDITONS

Wechseln Sie in die Registerkarte FileTransfer und setzen Sie die Option "Datei vorhanden" - "Abbrechen". Alle anderen notwendigen Attribute werden mit Hilfe der geerbeten Objektvariablen des Workflows zur Laufzeit gesetzt. Für diesen Zweck sind folgende Zeilen in der Registerkarte Script notwendig:

:PUT_ATT FT_SRC_HOST = &SAGENT#
:PUT_ATT FT_DST_HOST = &DAGENT#
:PUT_ATT FT_SRC_LOGIN = &SLOGIN#
:PUT_ATT FT_DST_LOGIN = &DLOGIN#
:PUT_ATT FT_SRC_FILE = &SFILE#
:PUT_ATT FT_DST_FILE = &DFILE#

 

Speichern Sie danach die Objekte und fügen Sie sie dem Workflow hinzu. Der Job muss vor dem FileTransfer durchgeführt werden.

 

Definieren Sie nun die Bedingungen und Anweisungen des FileTransfers im Workflow. Öffnen Sie dazu die Eigenschaften von JOBF.CONDITIONS und wechseln Sie in die Registerkarte Pre-Conditions.

JOBF.CONDITIONS - Registerkarte Pre-Conditions

Definieren Sie die Bedingung CHECK FILE mit folgenden Parametern: Agent *OWN, Dateiname: &SFILE#, Bedingung: vorhanden

Setzen Sie als auszuführende Anweisung RUN TASK. Weiters ist innerhalb von CHECK FILE ein Else-Block mit der Aktion CANCEL PROCESSFLOW (Geltungsbereich: *OWN, untergeordnete Aufgaben: inklusive) einzufügen.

Achten Sie darauf, dass im FileTransfer-Objekt die Einstellung "Zur Laufzeit generieren" nicht gesetzt ist. Ansonsten kommt es zu einem Fehler auf Grund der Verwendung der Objektvariable &SFILE# in den Pre-Conditions.

JOBF.CONDITIONS - Registerkarte Post-Conditions

Definieren Sie Bedingungen in dieser Registerkarte, die überprüfen, ob der FileTransfer mit Abbruch endete (STATUS) und die Zieldatei vorhanden ist (CECK FILE). Die vordefinierte Variable &$RESTART_COUNT# gibt die Anzahl, wie oft die Aufgabe über diese Registerkarte neu gestartet wurde, zurück. Damit keine Endlosschleife entsteht, sollte die Aufgabe nach drei Wiederanläufen abgebrochen werden.

Ist diese maximale Wiederanlaufanzahl noch nicht erreicht, wird der Job JOBS.WIN.COND2 gestartet, der die existierende Zieldatei umbenennt. Somit werden keine Daten überschrieben. Danach wird der FileTransfer wiederholt (RESTART TASK).

Der Job wird mit einem Alias gestartet, der sich aus dem Namen des Zielagenten und des Login-Objekts getrennt durch einen Unterstrich zusammensetzt. Diese Werte werden im Pre-Script des Jobs aus dem Alias ausgelesen und in den Attributen eingetragen.

Erstellen Sie zuletzt den Windows-Job: JOBS.WIN.COND2

Dieser Job ändert den Namen der Zieldatei und wird nur im Fehlerfall über die Workflow-Eigenschaften des FileTransfers gestartet. Mit folgendem Script in der Registerkarte Pre-Script werden das Agenten- sowie das Login-Objekt aus dem Alias ausgelesen und mittels :PUT_ATT gesetzt.

:SET &ALIAS# = &$ALIAS#
:SET &STRPOS# = STR_FIND(&ALIAS#,'_')
:SET &STRPOS# = &STRPOS#+1
:SET &LOGIN# = STR_CUT(&ALIAS#,&STRPOS#)
:SET &STRPOS# = &STRPOS#-2
:SET &AGENT# = STR_CUT(&ALIAS#,1,&STRPOS#)

:PUT_ATT HOST = &AGENT#
:PUT_ATT LOGIN = &LOGIN#

Die Zeilen der Registerkarte Script dienen zur Umbenennung der jeweiligen Zieldatei (Neuer Dateiname = Aktuelle Uhrzeit):

:SET &TIME# = SYS_TIME_PHYSICAL("HHMMSS")
:DATA rename "C:\temp\test2.txt" &TIME#.txt
:DATA @set retcode=%errorlevel%
:DATA @if NOT %ERRORLEVEL% == 0 goto :retcode

Der Name der Zieldatei wird nicht dynamisch an den Job übergeben und ist daher gegebenenfalls manuell zu ändern.

Ergebnis

Beim Start des Workflows JOBP.CONDITIONS wird durch einen Job JOBS.WIN.COND auf dem Rechner des Agenten WIN01 eine Datei erstellt. Die Dateiübertragung soll diese Datei von dem Rechner (WIN01) zu einem anderen transferieren (WIN02). Ist die Zieldatei vorhanden, bricht die Dateiübertragung ab.

Infolgedessen wird die Zieldatei umbenannt und der Vorgang wiederholt. Somit werden keine Dateien überschrieben und die gespeicherten Daten bleiben erhalten.

Wie man sieht, ist es durch die definierten Überprüfungen direkt im Workflow sehr einfach möglich, bestimmte Fehler abzufangen und entsprechende Aktionen zu setzen.

 


Automic Documentation - Tutorials - Automic Blog - Resources - Training & Services - Automic YouTube Channel - Download Center - Support

Copyright © 2016 Automic Software GmbH