Introduction
This documentation describes how the substitution of parameter values works in JobScheduler. It is also described how to use parameters in shell script, API Jobs and pre- and postprocessing scripts.
Substitution of parameter values done by JobScheduler
JobScheduler substitutes the values of environment variables when using ${<env_var>}
in task parameters.
When <env_var>
is an unknown environment variable, JobScheduler substitutes it to empty
To avoid doing the substitution by JobScheduler the value can be quoted with a backslash like \${<env_var>}
Example
When running this job the output will b:
Please note
${test}
has been substituted toempty
- To access the value of the parameter in a shell script, the name must be prefixed. The value of the prefix is
- Default: SCHEDULER_PARAM_
- Can be set by the parameter scheduler.variable_name_prefix which is defined in the file $scheduler_data/config/scheduler.xml
- When changing the value of the prefix, JobScheduler has to be restartet.
- Can be set by the parameter scheduler.variable_name_prefix which is defined in the file $scheduler_data/config/scheduler.xml
Attention: JobScheduler do NOT substitute environment variables in order parameters.
Substitution of parameter values done by sos.scheduler.managed.configuration.ConfigurationOrderMonitor
For jobs that are running in a job chain there is an add substitution mechanism provided by the preprocessing java class sos.scheduler.managed.configuration.ConfigurationOrderMonitor
This preprocessing java class does the following
- before processing
- copy the node paramters that are defined in jobchain.config.xml into the the order paramters
- if an order parameter with the same name already exits, it will be overwritten
- substitution of all
${<param>}
with- JobScheduler parameters that are defined in the file $scheduler_data/config/scheduler.xml
- task parameters that are defined in the actual running job
- order parameters that are defined in the order
- node paramters that has been copied to the order parameters
- after processing
- delete all node parameters from the order.
Please note:
- If a task parameter value should be substituted by the configurationMonitor the value has to be quoted with a backslash to avoid the substitution by the JobScheduler
Example: a value \${param}
- If the parameter
scheduler.order.keep_order_content_on_reschedule=true
the values will be substituted only in the first run. - when using node paramters the configurationMonitor must be assigned to the job
- JOE will assign the configurationMontitor automatically when defining a node parameter in a job chain
- if substitution does not work, please check whether the configuration monitor is assigned to the job
- if not make the assignment manually with JOE.
Substituion of parameter values done by JITL-Jobs extending JobSchedulerJobAdapter
There are JITL-Jobs that extends the base class JobSchedulerJobAdapter
and some older jobs do extend JobSchedulerJob.
Please see a list here JITL Jobs - Status
This article describes the substitution in JITL-Jobs that extend JobSchedulerJobAdapter
Substitiution will be executed for
- task parameters
- order parameters
The following patterns will be recognized as parameters to be substituted
%param%
${param}
§{param}
the param
can be:
- task parameter
- order parameter
- node parameter
- scheduler parameter
- some special values (see list below)
List of special values:
Name | Value |
---|---|
SCHEDULER_HOST | spooler.hostname() |
SCHEDULER_TCP_PORT | spooler.tcp_port() |
SCHEDULER_UDP_PORT | spooler.udp_port() |
SCHEDULER_ID | spooler.id() |
SCHEDULER_DIRECTORY | spooler.directory() |
SCHEDULER_CONFIGURATION_DIRECTORY | spooler.configuration_directory() |
SCHEDULER_JOB_CHAIN_NAME | spooler_task.order().job_chain().name() |
SCHEDULER_JOB_CHAIN_TITLE | spooler_task.order().job_chain().title() |
SCHEDULER_ORDER_ID | spooler_task.order().id() |
SCHEDULER_NODE_NAME | getCurrentNodeName(false) |
SCHEDULER_NEXT_NODE_NAME | spooler_task.order().job_chain_node().next_state() |
SCHEDULER_NEXT_ERROR_NODE_NAME | spooler_task.order().job_chain_node().error_state() |
SCHEDULER_JOB_NAME | this.getJobName() |
SCHEDULER_JOB_FOLDER | this.getJobName() |
SCHEDULER_JOB_PATH | this.getJobFolder() + / + this.getJobName() |
SCHEDULER_JOB_TITLE | this.getJobTitle() |
SCHEDULER_TASK_ID | spooler_task.id() |
SCHEDULER_SUPERVISOR_HOST | remoteConfigurationService.hostname() |
SCHEDULER_SUPERVISOR_PORT | remoteConfigurationService.tcp_port() |
- The names
param
andscheduler_param_param
are identically. - The names
param_plus_any_understrikes
andparamplusanyunderstrikes
are identically.
Attention: The substitution is only valid for the actual job run. That means that the values of the parameters will be unsubstituted after the execution of the job. If you have an order parameter param_x
with the value value is ${param_y}
and there are two steps in the job chain, the value of param_x
after the execution of the first node is value is ${param_y}