Introduction
- Jobs can be assigned variables from a number of sources:
- Shell Jobs:
- JS7 - Job Resources holding constant values.
- Job Environment Variables are populated e.g. from constant values and from JS7 - Order Variables.
- JVM Jobs:
- Job Arguments populated from constant values.
- Arguments populated e.g. from Order Variables.
- Shell Jobs:
- Assignment includes to consider use of JS7 - Expressions for Variables.
- This article explains the sources of variables and the syntax for their assignment.
Shell Jobs
Assignment of Environment Variables from Job Resources
Job Resources can be defined to hold a number of environment variables for Shell Jobs, for example, to forward path and location environment variables to scripts.
- Environment variables from Job Resources are automatically available for Shell Jobs.
- Environment variables are limited in scope to the current job. Therefore modifications to environment variables by a job script are not effective beyond the scope of current job execution.
- Values for environment variables use the data type "string".
Assignment of Job Environment Variables
Shell jobs can define an individual set of environment variables.
- The values of environment variables can be specified from:
- Constant values using the "string" data type
- JS7 - Order Variables
- Node Arguments
- Environment variables are limited in scope to the current job. Therefore modifications to environment variables by a job script are not effective beyond the scope of current job execution.
- Values for environment variables use the data type "string". Should values from assigned variables use a different data type then the value will be converted to "string".
JVM Jobs
Assignment of Job Arguments
Job Arguments are used by JVM Jobs on startup of the Agent.
- The purpose of Job Arguments is to parameterize optional startup code of a JVM job that is run on initialization of the job, i.e. before the job is to be executed for orders.
- Only constant values can be assigned.
Assignment of Arguments
These Arguments are used by JVM Jobs when processing orders.
- The purpose of Arguments is to parameterize the processing of an order.
- Constant values and Order Variables can be assigned.
Assignment of Base64 encoded Values
JVM jobs can hold arguments with string values of arbitrary length.
- If such arguments are forwarded to later shell jobs then they will be represented as environment variables that are limited in size (OS dependent).
- If such arguments include special characters such as carriage return, newline etc. then this can break representation as an environment variable.
Users can assign JVM jobs arguments of type string with base64 encoded values:
Plain Text Value | hello world |
---|---|
Base64 encoded Value | base64:aGVsbG8gd29ybGQK |
The prefix base64:
specifies the respective data type. JVM jobs will automatically decode bas64 encoded argument values.
You will find examples in the JS7 - How to pass variables with arbitrary length values to jobs article.
Assignment Syntax Examples
The following assignment types are available:
- Constant string values:
- This assignment type is used, for example, with Variable Declarations for workflows and with Node Arguments.
Example for a string value:
GUI Input 'value 1'
JSON Format "var": "'value 1'"
Explanation Single quoted values are considered string constants. Example for an empty string value:
GUI Input ""
JSON Format "var": "\"\""
Explanation Single quoted values are considered string constants. Example for a quoted numeric value:
GUI Input '033521'
JSON Format "var": "'03351'"
Explanation Single quoted values are considered string constants.
- Expressions:
- This assignment type is used with Environment Variables, Job Arguments and Initialization Arguments.
- Example:
GUI Input $someVariable
JSON Format "var": "$someVariable"
Explanation Single quoted values are considered string constants.
The following sections contain a number of syntax examples for assignment of constant values and expressions.
- The Input representation of the examples corresponds to what a user types in the GUI for the names and values of Arguments and Environment Variables.
- The Output representation of the examples corresponds to what is visible from the log output, e.g. using an
echo
command in a Shell Job. - The JSON representation is visible when using the "Show JSON" operation from an object's action menu.
Examples for Constant Values
Constant values are assigned by using single or double quotes. No substitution of variables is performed within single quoted values.
Use with single quotes
Input 'some value'
Output some value
JSON "var": "'some value'"
Use with double quotes
Input "some value"
Output some value
JSON "var": "\"some value\""
Double quotes have to be used to assign empty string values :Input ""
Output JSON "var": "\"\""
Use with double quoted values
Input "some \"quoted\" value"
Output some "quoted" value
JSON "var": "\"some \\\"quoted\\\" value\""
Use with double quoted and single quoted values
Input "some 'quoted' value"
Output some 'quoted' value
JSON "var": "\"some 'quoted' value\""
Use with
$
character (not: variable) from a single quoted valueInput 'some $dollar value'
Output some $dollar value
JSON "var": "'some $dollar value'"
Use with
$
character (not: variable) from a double quoted valueInput "some \$dollar value"
Output some $dollar value
JSON "var": "\"some \\$dollar value\""
Use with a built-in variable and a regular expression value
Input ^${js7OrderId}\\.order\\.js7\$
Output ^#2021-11-19#P7074917077\.order\.js7$
JSON "var": "\"^${js7OrderId}\\\\.order\\\\.js7\\$\""
Use with a base64 encoded value
Input "base64:aGVsbG8gd29ybGQK"
Output base64:aGVsbG8gd29ybGQK
JSON "var": "\"base64:aGVsbG8gd29ybGQK\""
Examples for Variable References
Assignments can reference existing variables. Variables are referenced with a leading $
and optionally with curly braces like this:
$var
${var}
Note that specifying a non-existent variable will raise a run-time error.
Use without quotes
Assumevar2
has the value:some value
Input $var2
Output some value
JSON "var": "$var2"
Use with double quotes
Assumevar2
has the value:some value
Input "$var2"
Output some value
JSON "var": "\"$var2\""
Use with constant values from double quoted values
Assumevar2
has the value:second value
Input "first value, $var2"
Output first value, second value
JSON "var": "\"first value, $var2\""
Use with string concatenation from double quoted values
Assumevar2
has the value:second value
Input "${var2}first value"
Output second valuefirst value
JSON "var": "\"${var2}first value\""
Use with constant values and single quoted values
Assumevar2
has the value:second value
Input "first, '$var2'"
Output first, 'second value'
JSON "var": "\"first, '$var2'\""
If a variable name includes dots, then the name has to be specified within curly braces and has to be quoted with backticks.
Any characters can be used within backticks, except for backticks themselves.Input ${`mail.smtp.host`}
Output mail.sos-berlin.com
JSON "var": "${`mail.smtp.host`}"