Newer
Older
There are different methods to trigger a *Task* execution process:
- Using the tags *SartDate* and *StopDate*
- Using the filtering tag *FileType*
The most flexible method is actually the *FileType* filter, as everything is treated as a file being processed
The presence of a dedicated trigger file (eg. TR$PROCESSOR.*.trigger) , or also any other file, filtered by the <FileType> expression,
acts as a driver for the Task execution. This allows than to create a list of trigger files that the DES can then elaborate in a FIFO queue.
Because the Date for example is often used as input parameter for a processing time series for example,
the Date has to be passed as input parameter to the Task executing a particular job.
One approach to implement this, is to ensure that the trigger file TR$PROCESSOR.*.trigger includes the date at a certain position, i.e position 5 (. separated):
```
TREURAC_RADBEAM_P.southtyrol_highres.6120_6120.hour.8.2017-02-10T15:00:00.Eurac.01.00.trigger
```
So the implemented wrapper Script (*Perl*, *Python*, *Shell*) or Java Class for the Task can extract the processing parameters as needed, i.e. The date to be processed.
The trigger file itself might contain even a more structured meta information in form of XML for example.
By convention the trigger file should have the following naming convention:
```
TR$PROCESSOR.$AOI.TileID.Type.Value.Date.Eurac.$versionMajor.$versionMinor.trigger
```
Any other naming convention can be adapted by providing an appropriate wrapper script that is called.
**Processor configuration:**
```xml
<TaskGroup name="Processing" type="serial" active="yes" priority="NORM">
<Task name="createMap" type="cmd" active="yes" priority="NORM">
<EMail>mail@host.yourdomain</EMail>
<NotifyEmail>OnError</NotifyEmail>
<FileType>TREURAC_RADBEAM_P.*.trigger</FileType>
<Command>sh</Command>
<Parameter>/Algorithms/runProc.sh</Parameter>
</Task>
<Task>
...
</Task>
</TaskGroup>
```
**Task implementation:** (*runProc.sh*)
```sh
#!/bin/sh
arg=($*)
BASE_PATH=$1
AOI_NAME=$2
PROCESSOR_NAME=$3
TRIGGER_FILE_NAME=$4
echo "creating environment vars.."
# User specific aliases and functions
echo "start processing..."
file=$TRIGGER_FILE_NAME
echo " processing file: $file"
DATE_FROM_FILE=$(echo "$file" | cut -d '.' -f 6)
echo "date: $DATE_FROM_FILE"
DATE=`date -d "$DATE_FROM_FILE" +"%Y-%m-%d"`
HOUR=`date -d "$DATE_FROM_FILE" +"%H"`
HOUR2=$HOUR
HOUR=`expr $HOUR2 + 1`
MIN=`date -d "$DATE_FROM_FILE" +"%M"`
echo "running algorithm for date: $DATE"
```
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
Note: The Date format contained in the Trigger file naming convention should comply if possible with the format *yyyymmddThhmmss*
The trigger files may than be generated manually or via a script called by a Cronjob (see example below):
```
/Cronjobs/createDESTaskTriggers.sh /raid0/DES/data southtyrol_highres EURAC_RADBEAM_P 6120_6120 [ 20170101T091500 ]
```
**Cronjob Script:** (*createDESTaskTriggers.sh*)
```sh
#!/bin/sh
arg=($*)
BASE_PATH=$1
AOI_NAME=$2
PROCESSOR_NAME=$3
TILE_ID=$4
echo `date`
echo "creating trigger..."
TRIGGER_PATH=$BASE_PATH/$AOI_NAME/$PROCESSOR_NAME
DATE=`date +"%Y-%m-%dT%H:%M:%S"`
echo "Date: $DATE"
TR_FILE="TR$PROCESSOR_NAME.$AOI_NAME.$TILE_ID.year.2017.$DATE.Eurac.01.00.trigger"
echo "creating trigger $TRIGGER_PATH/$TR_FILE"
touch $TRIGGER_PATH/$TR_FILE
touch $TRIGGER_PATH/$TR_FILE.md5
echo "done"
echo "------------"
```
## Run a DES instance in Test Mode ##
When testing a new processor it could be useful to have a test environment where it is possible to check the output.
To do this is straightforward because for each installed DES instance there is a test_data folder where test can be performed.
**Steps:**
- Create a symbolic link to your processor: ln -s DES.jar DES_test.jar to have a better control on your DES_test (if you decide to call it in this way) processor
- Copy your YOUR_PROCESSOR.processor_config.xml file in the folder */DES/test_data/processor_config/*
- Do your changes to this file. For example you can enable or disable *AOI*, *Task*, *TaskGroup*, *Distribution*, *Download*, etc.
- Open the file */DES/config/DistributionServerTest.ini* and change the value of *LOGS_PATH* variable from *LOGS_PATH=LOG4J* to *LOGS_PATH=STDOUT*. This will allow to have the log in the standard output to facilitate the debug.
- Change to the DES folder: *cd /DES*
- Run the following command:
```
java -jar DES_test.jar -c ./config/DistributionServerTest.ini -p YOUR_PROCESSOR.processor_config.xml
```