Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Monitor class updated

Table of Contents

...

Scope

  • This article describes how the substitution of parameter values works in JobScheduler. It

...

  • also

...

  • describes how to use parameters in shell

...

  • scripts, API Jobs and pre- and postprocessing scripts.
  • JobScheduler ships with a Monitor that performs substitution for Node Parameters:
    • The current implementation makes use of the following monitor configuration:
      • <monitor name="configuration_monitor">
            <script java_class="com.sos.jitl.jobchainnodeparameter.monitor.JobchainNodeSubstituteMonitor" language="java"/>
        </monitor>

      • The implementation became available with release 1.11:
      • Jira
        serverSOS JIRA
        columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
        serverId6dc67751-9d67-34cd-985b-194a8cdc9602
        keyJITL-276
      • Display feature availability
        StartingFromRelease1.11
    • The "classic" implementation makes use of the following configuration monitor:
      • <monitor name="configuration_monitor">
            <script java_class="sos.scheduler.managed.configuration.ConfigurationOrderMonitor" language="java"/>
        </monitor>

      • The implementation remains available throughout release 1.11 and will be discontinued with release 1.12.
        • Jira
          serverSOS JIRA
          columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
          serverId6dc67751-9d67-34cd-985b-194a8cdc9602
          keyJITL-411
        • Display feature availability
          EndingWithRelease1.12
          StartingFromRelease1.6

Substitution of parameter values

...

by the JobScheduler

  • The JobScheduler

...

  • substitutes the values of environment variables in task parameters using ${

...

  • env_

...

When <env_var> is an unknown environment variable, JobScheduler substitutes it to empty

...

  • var}, where env_var is the name of an environment variable.
    • The JobScheduler will substitute ${env_var} with an empty value if the environment variable is unknown.
    • For Unix systems case sensitivity is considered for environment variables.
  • To prevent substitution in task parameters the environment variable can be quoted with a backslash

...

  • , i.e. \${

...

  • env_

...

  • var}
  • JobScheduler does not substitute environment variables in order parameters.

Example

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


This job will produce create the following output when running:

Code Block
languagetext
titleOutput provided by standalone job
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 emptyan empty value as this environment variable has not previously been set.
  • To access the value of the parameter in a shell script, the parameter name must has to 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 configured in the file $scheduler_data/config/scheduler.xmlWhen changing file. JobScheduler has to be restarted after the value of the prefix , JobScheduler has to be restartethas been changed.

     

    Code Block
    languagexml
    titleConfiguration of prefix for environment variableslinenumberstrue
    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>

     

    Note: JobScheduler does NOT substitute environment variables in order parameters.

    ...

    
             ...

    Substitution of parameter values by

    ...

    use of the Configuration Monitor

    An add additional substitution mechanism for jobs running in a job chain is provided by the com.sos.schedulerjitl.managedjobchainnodeparameter.configurationmonitor.ConfigurationOrderMonitorJobchainNodeSubstituteMonitor preprocessing java Java class for jobs that are running in a job chain:

     

    This preprocessing java class does the following:

    that is added as a Monitor to jobs.

    Scope of substitution

    This Java class implements the following steps:

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

     

    Please note:

    • If a task parameter value should is to be substituted by the configurationMonitor Configuration Monitor then the value has to be quoted with a backslash to avoid the prevent its substitution by the JobScheduler
      • Example: a value \${param}
    • If With the parameter setting 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 then the Configuration Monitor has to be assigned to the job
      • JOE will assign the configurationMontitor Configuration Monitor automatically when defining configuring a node parameter in a job chain
      • if substitution does not work, Should no substitution be performed then please check whether if the configuration monitor Configuration Monitor is assigned to the job
        • if not make the assignment manually with JOE.

    ...

      • . Otherwise assign parameters individually by using JOE.

    Handling of substitution up to release 1.10

    Display feature availability
    EndingWithRelease1.10

    • Performance of parameter substitution is an issue:
      • 10 node parameter: 4s
      • 20 node parameter: 6s

    Handling of substitution starting with release 1.11

    Display feature availability
    StartingFromRelease1.11

    • Performance of parameter substitution is restored to a normal range:
      • 20 node parameters <= 2s
    • Jira
      serverSOS JIRA
      columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
      serverId6dc67751-9d67-34cd-985b-194a8cdc9602
      keyJITL-276

    Substitution of parameter values by JITL Jobs that extend the JobSchedulerJobAdapter base class

    Some JITL - Jobs extend the JobSchedulerJobAdapter base class and some older jobs extend JobSchedulerJob. For a detailed list see here: JITL Jobs - Status.

    This article describes the substitution in mechanisms for JITL - Jobs that extend the JobSchedulerJobAdapter base class.

    Scope of substitution

    Substitution 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 an order parameter
    • a node parameter
    • a scheduler JobScheduler parameter
    • some special values parameter (see the below list below))

    Note: Substitution applies exclusively to the current job run. This means that the values of the parameters will be unchanged 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 will still be value is \${param_y}

    Handling of substitution up to release 1.10

    Display feature availability
    EndingWithRelease1.10

    • Parameters with the name param  and scheduler_param_param will be handled as being identical.

    • Parameters with the name param_plus_any_understrikes and paramplusanyunderstrikes will be handled as being identical.

    Handling of substitution starting with release 1.11

    Display feature availability
    StartingFromRelease1.11

    • No alias parameters as up to release 1.10 are supported.
    • Jira
      serverSOS JIRA
      columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
      serverId6dc67751-9d67-34cd-985b-194a8cdc9602
      keyJITL-276

    List of special

    ...

    parameters

    NameReturn Value of API Method
    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 identical.
    • The names 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 

    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 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 be ${param_y}

    References

    Product Knowledge Base

    Change Management References - Agent Usage

    Jira
    serverSOS JIRA
    columnstype,key,issuelinks,fixversions,status,priority,summary,updated
    maximumIssues20
    jqlQuerylabels in (parameter) and labels in (substitution)
    serverId6dc67751-9d67-34cd-985b-194a8cdc9602