Setting Up Batch Run
Note
A batch job is set up using the headless client.
Step 1: Create a User in PLANTA project
Procedure
Create a user (e.g. BATCH) with the following settings in the Users module.
Password (you may have to click on the Reset password button)
Maximum rights:
Can delete actual postings=
Object access = *
Resource access = *
Object rights = 2
Menu
Role
Start the PLANTA project client.
Log on with the recently created user.
Define a new password.
Step 2: Create/Install a Macro with the Required Functionality
Procedure
Create a new module in the Modules module.
Adjust Python macro for the intended purpose.
For the batch user, this module can be defined as Startup macro which is run every time this user logs on.
Alternatively, you can specify the module ID in the start script of the headless client in the
PLANTA_MODULE
parameter (see here)..
Step 3: Start the Headless Client Manually in Order to Create the Password File
Procedure
Open template
Note: this command, as well as its following examples, are single-rowed and may only be split for readability purposes:
<Python interpreter> <Headless path>planta_headless.py --service=<Server>:<Port> --user=<BATCH user> --auth_type=challenge --secret=<PW file>
Parameter | Description | Example for Windows | Example for Linux |
---|---|---|---|
<python interpreter> | Open the resp. Python interpreter | C:\Python27\python.exe | /usr/local/bin/python2.7 |
<headless path> | Directory path headless clients, absolute: | C:\PLANTA\Jobs\Headless\ | /planta/jobs/headless/ |
<Server> | Name or IP address of the PLANTA Server | localhost (if executed on application server) | localhost (if executed on application server) |
<Port> | Connection port to the service | Standard is 21000 + System no., e.g. 21001 | Standard is 21000 + System no., e.g. 21001 |
<BATCH-User> | Name of the PLANTA project batch user | BATCH | BATCH |
<PW file> | Path and name of the password file to be generated | .\auth_file | ./auth_file |
Example for 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
Example for Linux
/usr/local/bin/python2.7 ./planta_headless.py --service=localhost:21210 --user=BATCH --auth_type=challenge --secret=./auth_file
Password input (password is saved in an encrypted file).
Set the rights for the newly created encrypted password file (read/write rights only for the user running the Python program)..
Step 4: Configure Job
Procedure
For this purpose, adjust the following Shell/Batch script templates:
For the following script, enter the appropriate values in the Adjust parameter: section.
Save it as a file (e.g. named
Headless.bat
under Windows orheadless.bsh
under Linux) in the headless cient directory. The date timestamp here is dependent on the local format and must possibly be adjusted.
Example for 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
Example for 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
Step 5: Implementation of the Time-Controlled Call
Note
Here, administrator rights are required..
Procedure
Setup
under Windows: via Task Manager (or Task Planning)
under Linux: as a Cron Job
In both cases, the job has no information about environment variables, etc. All information it requires must be included in the shell-scripts (e.g. using absolute paths).
Notes
The headless client usually starts a PLANTA macro without waiting for its completion.
This can be prevented via the timeout=-1 parameter.
In this case, the headless client waits for the macro to be completed.
See also the logging variant in the shell scripts mentioned above.