You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 5 Next »

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

Standalone job substitutes an environement variable
<job  name="job_environment">
    <params >
        <param  name="param_from_environment" value="the value of scheduler_home is ${SCHEDULER_HOME} ${test}"/>
    </params>

    <script  language="shell">
        <![CDATA[
echo %SCHEDULER_PARAM_PARAM_FROM_ENVIRONMENT%
        ]]>
    </script>

    <monitor  name="process0" ordering="0">
        <script  language="java:javascript">
            <![CDATA[
function spooler_process_before(){
    spooler_log.info("param_from_environment=" + spooler_task.params.var("param_from_environment"));
    return true;
}
            ]]>
        </script>
    </monitor>

    <run_time />
</job>


When running this job the output will b:

2015-12-07 10:39:32.458+0100 [info]   SCHEDULER-918  state=starting (at=2015-12-07 10:39:32.403+0100)
2015-12-07 10:39:33.984+0100 [info]   param_from_environment=the value of scheduler_home is C:/Program Files/sos-berlin.com/jobscheduler/scheduler_current 
2015-12-07 10:39:33.987+0100 [info]   SCHEDULER-987  Starting process: "C:\WINDOWS\TEMP\\sos-A4CFC1B980.cmd"
2015-12-07 10:39:34.019+0100 [info]   [stdout]  
2015-12-07 10:39:34.019+0100 [info]   [stdout] C:\Users\ur\Documents\sos-berlin.com\jobscheduler\scheduler_current>echo the value of scheduler_home is C:/Program Files/sos-berlin.com/jobscheduler/scheduler_current   
2015-12-07 10:39:34.019+0100 [info]   [stdout] the value of scheduler_home is C:/Program Files/sos-berlin.com/jobscheduler/scheduler_current 

Please note

  • ${test} has been substituted to empty
  • 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.

 

<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="scheduler_documentation.xsl" ?>
<spooler>
 
        <config mail_xslt_stylesheet="config/scheduler_mail.xsl" port="4102">
        
                <params>
                        <param name="scheduler.variable_name_prefix" value="SCHEDULER_PARAM_"/>
                        <param name="scheduler.order.keep_order_content_on_reschedule" value="false"/>
                </params>

 

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:

NameValue
SCHEDULER_HOSTspooler.hostname()
SCHEDULER_TCP_PORTspooler.tcp_port()
SCHEDULER_UDP_PORTspooler.udp_port()
SCHEDULER_IDspooler.id()
SCHEDULER_DIRECTORYspooler.directory()
SCHEDULER_CONFIGURATION_DIRECTORYspooler.configuration_directory()
SCHEDULER_JOB_CHAIN_NAMEspooler_task.order().job_chain().name()
SCHEDULER_JOB_CHAIN_TITLEspooler_task.order().job_chain().title()
SCHEDULER_ORDER_IDspooler_task.order().id()
SCHEDULER_NODE_NAMEgetCurrentNodeName(false)
SCHEDULER_NEXT_NODE_NAMEspooler_task.order().job_chain_node().next_state()
SCHEDULER_NEXT_ERROR_NODE_NAMEspooler_task.order().job_chain_node().error_state()
SCHEDULER_JOB_NAMEthis.getJobName()
SCHEDULER_JOB_FOLDERthis.getJobName()
SCHEDULER_JOB_PATHthis.getJobFolder() + / + this.getJobName()
SCHEDULER_JOB_TITLEthis.getJobTitle()
SCHEDULER_TASK_IDspooler_task.id()
SCHEDULER_SUPERVISOR_HOSTremoteConfigurationService.hostname()
SCHEDULER_SUPERVISOR_PORTremoteConfigurationService.tcp_port()

 

The names param  and scheduler_param_param are identically.

The names param_plus_any_understrikes  and  paramplusanyunderstrikes are identically.

 

 

 

  • No labels