Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Grammar improved

...

This article describes how the substitution of parameter values works in JobScheduler. It is also described describes how to use parameters in shell script, API Jobs and pre- and postprocessing scripts.

Substitution of parameter values bythe  by the JobScheduler

The JobScheduler can substitute the values of environment variables in task parameters using ${<env_var>}.

WhenThe JobScheduler will substitute <env_var> with empty when the variable is an unknown environment variable, JobScheduler substitutes it to emptyunknown.

To avoid doing this the substitution by JobScheduler the value can be quoted with a backslash like - i.e. \${<env_var>}

Example

Code Block
themeConfluence
languagexml
titleStandalone job substitutes an environement variable
linenumberstrue
collapsetrue
<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>

...

Code Block
languagetext
collapsetrue
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 default value of the prefix is:
      Default:
      • SCHEDULER_PARAM_
      • Can This prefix can be set by the parameter scheduler.variable_name_prefix parameter which is defined in the file $scheduler_data/config/scheduler.xml file.
        • JobScheduler has to be restarted after
        • When changing the value of the prefix , JobScheduler has to be restartethas been changed.

     

    Code Block
    languagexml
    linenumberstrue
    collapsetrue
    <?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>

    ...

    An add substitution mechanism for jobs running in a job chain is provided by the  sos.scheduler.managed.configuration.ConfigurationOrderMonitor preprocessing java class for jobs that are running in a job chain:

     

    This preprocessing java class does the following:

    • before Before processing:
      • copy it copies the node parameters that are defined in jobchain.config.xml into the the order parameters
      • if an order parameter with the same name already exists, it will be overwritten
      • substitution of substitutes all ${<param>} variables with:
        • JobScheduler parameters that are defined in the $scheduler_data/config/scheduler.xml file.,
        • task parameters that are defined in the actual running job,
        • order parameters that are defined in the order,
        • node parameters that has been copied to the order parameters.
    • after After processing:
      • delete deletes all node parameters from the order.

    ...

    • If a task parameter value should is to 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 When using node parameters 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.

    ...

    Substitiution is carried out for:

    • task parameters and
    • order parameters

    The following patterns are recognized as parameters to be substituted:

    • %param%
    • ${param}
    • §{param}

    The Where param can be:

    • a task parameter
    • a order parameter
    • a node parameter
    • a scheduler parameter
    • some special values (see the list below)

    ...

    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 Parameters named param  and scheduler_param_param are will be treated as being identical.
    • The names Parameters named param_plus_any_understrikes  and  paramplusanyunderstrikes are identical.Parameters with  names in the following forms will be handled identically:
    • myparam  and scheduler_param_myparam, and
    • myparam_plus_any_understrikes  and  myparamplusanyunderstrikes  will be treated as being identical.

    Note: Substitution only applies for the current 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 whose value is 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 will still be value is ${param_y}