Batchlauf einrichten
Hinweis
- Die Einrichtung eines Batch-Jobs erfolgt mit dem Headless-Client.
Schritt 1: Einrichtung eines Benutzers in PLANTA project
Vorgehensweise
- Im Modul Benutzer einen Benutzer (z.B. BATCH) mit folgenden Einstellungen anlegen:
- Passwort (ggf. die Schaltfläche Passwort zurücksetzen betätigen)
- maximale Rechte:
- Menü
- Rolle
- PLANTA project-Client starten.
- Mit dem eben angelegten Benutzer einloggen.
- Neues Passwort vergeben.
Schritt 2: Erstellung/Einrichtung eines Makros mit der gewünschten Funktionalität
Vorgehensweise
- Im Modul Module ein neues Modul anlegen.
- Python-Makro für den gewünschten Einsatzzweck ergänzen.
- Das Modul für den Batch-Benutzer als Startup-Makro, das bei jeder Anmeldung dieses Benutzers ausgeführt wird, definieren.
- Alternativ im Start-Skript des Headless-Clients im Parameter
PLANTA_MODULE
die Modul-ID angeben (siehe hier).
- Alternativ im Start-Skript des Headless-Clients im Parameter
Schritt 3: Manueller Start des Headless-Clients zur Erzeugung der Passwort-Datei
Vorgehensweise
- Aufruf-Template
- Hinweis: dieser Befehl sowie die folgenden Beispiele sind einzeilig und werden nur aus Gründen der Lesbarkeit ggf. umgebrochen:
<Python-Interpreter> <Headless-Pfad>planta_headless.py --service=<Server>:<Port> --user=<BATCH-User> --auth_type=challenge --secret=<PW-Datei>
Parameter | Beschreibung | Beispiel Windows | Beispiel Linux |
---|---|---|---|
<Python-Interpreter> | Aufruf des jew. Python-Interpreters | C:\Python27\python.exe | /usr/local/bin/python2.7 |
<Headless-Pfad> | Verzeichnispfad des Headless-Clients, absolut: oder relativ zum aktuellen Verzeichnis: | C:\PLANTA\Jobs\Headless\ .\ | /planta/jobs/headless/ ./ |
<Server> | Name oder IP-Adresse des PLANTA Servers | localhost (wenn Ausführung auf Applikationsserver) planta4711.planta.de 10.210.47.11 | localhost (wenn Ausführung auf Applikationsserver) planta4711.planta.de 10.210.47.11 |
<Port> | Verbindungsport zum Service | Standard ist 21000 + Systemnr., z.B. 21001 | Standard ist 21000 + Systemnr., z.B. 21001 |
<BATCH-User> | Name des PLANTA project Batch-Benutzers | BATCH | BATCH |
<PW-Datei> | Pfad u. Name der zu erzeugenden Passwort-Datei | .\auth_file | ./auth_file |
Beispiel Windows
C:\Python27\python.exe C:\PLANTA\Jobs\Headless\planta_headless.py --service=planta4711:21001 --user=BATCH --auth_type=challenge --secret=C:\PLANTA\Jobs\Headless\auth_file
Beispiel Linux
/usr/local/bin/python2.7 ./planta_headless.py --service=localhost:21210 --user=BATCH --auth_type=challenge --secret=./auth_file
- Passworteingabe (das Passwort wird in einer verschlüsselter Datei abgelegt).
- Einrichten der Rechte für die neu erstellte verschlüsselte Passwort-Datei (Schreib-/Leserechte ausschließlich für den Ausführenden des Python-Programms).
Schritt 4: Einrichtung des Jobs
Vorgehensweise
- Hierfür die folgenden Shell-/Batch-Skript-Templates anpassen:
- Beim folgenden Skript im Abschnitt Parameter anpassen: die passenden Werte eintragen.
- Als Datei (z.B. namens
Headless.bat
unter Windows oder namensheadless.bsh
unter Linux) im Headless-Cient-Verzeichnis abspeichern. Der Datums-Zeitstempel ist hier abhängig vom lokalen Format und muss ggf. angepasst werden.
- Beispiel Windows:
@ECHO OFF
REM BATCH
REM PLANTA Headless-Client: Durchführung von Batch-Jobs
REM Parameter anpassen:
REM --->
SET PYTHON="<Pfad zu Python (V. 2.6 oder 2.7)>"
SET HEADLESS_DIR="<Pfad zum Headless Client (PLANTA_PY)>"
SET SERVICE=<Serveradresse:Portnummer>
SET USER=BATCH
REM Falls das Arbeitspaket als Startmodul des Batch-Users definiert ist, bleibt dieser Parameter leer,
REM sonst wird hier die Modul-ID des auszuführenden Moduls eingetragen:
SET PLANTA_MODULE=
IF NOT "%PLANTA_MODULE%"=="" SET MODULE_PARAM=--module=%PLANTA_MODULE%
IF "%PLANTA_MODULE%"=="" SET MODULE_PARAM=
REM Falls Logging gewünscht ist, die folgenden Variablen aktivieren,
REM sowie unten den Skript-Aufruf mit Logging aktivieren und den ohne Logging deaktivieren:
REM SET LOG_DIR="<Pfad des Log-Verzeichnisses>"
REM SET LOGFILE="<Präfix für die Log-Datei (z.B. PLANTA_Headless)>"
REM SET DATETIME=%DATE:~-4%-%DATE:~3,2%-%DATE:~0,2%_%TIME:~0,2%-%TIME:~3,2%-%TIME:~6,2%
REM <---
SET AUTH_FILE=".\auth_file"
SET PLANTA_PY=".\planta_headless.py"
SET PLANTA_SH=%PLANTA_PY% --service=%SERVICE% --user=%USER% --auth_type=challenge --secret=%AUTH_FILE% %MODULE_PARAM%
cd %HEADLESS_DIR%
REM Variante ohne Logging:
%PYTHON% %PLANTA_SH% %*
REM Variante mit Logging:
REM forfiles -p %LOG_DIR% -m %LOGFILE%*.log -d -7 -c "cmd /c del @path"
REM %PYTHON% %PLANTA_SH% %* --timeout=-1 -vvv >> %LOG_DIR%\%LOGFILE%_%DATETIME%_%USER%.log
BASH
- Beispiel Linux:
#!/bin/bash
# PLANTA Headless-Client: Durchführung von Batch-Jobs
# Parameter anpassen:
# --->
PYTHON="<Pfad zu Python (V. 2.6 oder 2.7)>"
HEADLESS_DIR="<Pfad zum Headless Client (PLANTA_PY)>"
SERVICE="<Serveradresse:Portnr.>"
USER="BATCH"
# Falls das Arbeitspaket als Startmodul des Batch-Users definiert ist, bleibt der folgende Parameter leer,
# sonst wird hier die Modul-ID des auszuführenden Moduls eingetragen:
PLANTA_MODULE=""
if [[ -z $PLANTA_MODULE ]]
then
MODULE_PARAM=""
else
MODULE_PARAM="--module=$PLANTA_MODULE"
fi
# Falls Logging gewünscht ist, die folgenden Variablen aktivieren,
# sowie unten den Skript-Aufruf mit Logging aktivieren und den ohne Logging deaktivieren:
#LOG_DIR="<Pfad des Log-Verzeichnisses"
#LOGFILE="<Präfix für den Log-Datei-Namen (z.B. PLANTA_Headless)>"
#DATETIME=`date +20%y-%m-%d_%H-%M-%S`
# <---
AUTH_FILE="./auth_file"
PLANTA_PY="planta_headless.py"
PLANTA_SH="./$PLANTA_PY --service=$SERVICE --user=$USER --auth_type=challenge --secret=$AUTH_FILE $MODULE_PARAM"
cd $HEADLESS_DIR
# Variante ohne Logging:
$PYTHON $PLANTA_SH $*
# Variante mit Logging:
#find $LOG_DIR -type f -name "$LOGFILE*.log" -mtime +7 -print0 | xargs -0 rm -f
#$PYTHON $PLANTA_SH $* --timeout=-1 -vvv >> $LOG_DIR/$LOGFILE\_$DATETIME\_$USER.log
BASH
Schritt 5: Einrichtung des zeitgesteuerten Aufrufs
Hinweis
- Hier sind administrative Berechtigungen erforderlich.
Vorgehensweise
- Einrichtung
- unter Windows: mit dem Task Manager (bzw. Aufgabenplanung)
- unter Linux: als Cron Job
- In beiden Fällen weiß der Job nichts von Umgebungsvariablen etc. Alles, was er wissen muss, muss in den Shell-Skripten mitgegeben werden (z.B. absolute Pfade verwenden).
Hinweise
- Der Headless-Client startet üblicherweise ein PLANTA-Makro, ohne auf dessen Beendigung zu warten.
- Dies kann durch den Parameter
timeout=-1
verhindert werden. - In diesem Fall wartet der Headless-Client auf die Beendigung des Makros.
- Siehe auch die Logging-Variante in den oben aufgeführten Shell-Skripten.