##### Page tree
Go to start of banner

# Introduction

Variables are assigned constant values and expressions. This applies to:

Expressions are a means to dynamically calculate values for variables. Consider that names of variables are case-sensitive.

Example:

• `true`
• `1`
• `"some string"`
• `\$variable`
• `\$returnCode <= 3`
• `\$number + 1`

# Data Types

## Boolean

The following constant values are supported: `true, ``false`

Example:

Expression `true` `"var": true`
Expression `false` `"var": false`

## String

Strings are written in double quotes. The control characters `\t` (tab), `\r` (CR) and `\n` (NL) are literally written. To suppress its special meaning the \$ character is written `\\$`. No other characters are allowed to follow the \ escape character.

Example:

Expression ``"some value"`` `"var": "\"some value\""`
Expression ``"\t means the TAB control character"`` `"var": "\"\\t means the TAB control character\""`
Expression ``"\r means the CR control character"`` `"var": "\"\\r means the CR control character\""`
Expression ``"\n means the LF control character"`` `"var": "\"\\n means the LF control character\""`
Expression ``"\\$ means the literal character"`` `"var": "\"\\\$ means the literal character\""`

## Number

Numeric constants are implemented as Java  `BigDecimal` values and allow integer and long values to be specified.

Example:

Expression ``1`` `"var": 1`

# Operators

## Comparison Operators

The operators `<`, `<=`, `==`, `!=`, `>=`, `>` are supported.

The result of a comparison is the `Boolean` data type. Comparisons are available for strings and numbers. Both sides of a comparison have to use the same data type.

Should this rule not be considered and should e.g. a number be compared to a string then an Order will fail.

Example:

Expression ``\$var >= 199`` `"var": "\$var >= 199"`

## Arithmetic Operators

Addition and Subtraction of two numbers with: +, -

Example:

Expression ``1 + 1`` `"var": 1 + 1`
Expression ``100 - 210`` `"var": 100 - 210`

## String Operators

Concatenation of two strings with the` ++ `operator`.` Should operands of type Boolean or Number be used then they are converted to String.

Example:

Expression ``"abc" ++ "def"`` `"var": "\"abc\" ++ \"def\""`

# Conversion

## Convert to Number

If a value of a variable with String data type represents a number then it can be converted. Otherwise an error is raised and the affected order fails.

Example:

Expression ``"123".toNumber`` `"var": "\"123\".toNumber"`

## Convert to String

Values of the Number data type can be converted to String.

Example:

Expression ``123.toString`` `"var": "123.toString"`

## Referencing Variables

The syntax` \$VARIABLE`, `\${VARIABLE}` is used to read the value of a variable.

Similar to a number of Unix shells a variable can be recalled with \$ or with \${}.

If the variable is unknown then an error is raised and the affected Order will fail.

## Variable Function

Variables can be retrieved using the function

variable( NAME, label=LABEL, job=JOB, default=DEFAULT )

• `NAME` is a string expression for the name of the variable.
• `label=LABEL` (optional) is the label of an instruction for which the variable is recalled. Consider that the label is not quoted. Example: `label=A`.
• `job=JOB` (optional) is the name of a job for which the variable is recalled. Consider that the job name is not quoted. Example: `job=MYJOB`.
• `default=DEFAULT` (optional) specifies a default value should the variable not exist.

Consider that a call to the `variable` function will fail if the variable is unknown and no default value is specified.

Example:

Expression ``variable( "my_var", job=my_job )`` `"\"variable( \\\"my_var\\\", job=my_job )\""` The value of the variable `my_var` is returned as available with the job `my_job` in a workflow. If the variable is unknown then the function fails.
Expression ``variable( "my_var", label=my_label, default="some value" )`` `"\"variable( \\\"my_var\\\", label=my_label, default=\\\"some value\\\" )\""` The value of the variable `my_var` is returned as available with the job identified by the label `my_label` in a workflow. If the variable is unknown then the default value `some value` is returned.

# Built-in Variables

Built-in variables are available at the following scopes:

## Workflow

• `\$js7WorkflowPath`
• The unique name of a workflow. Consider that the name does not include the folder location of a workflow.
• `\$js7WorkflowPosition`
• The position of an order in the workflow.
• `\$js7Label`
• The label of the current instruction for which an order is executed.
• `\$js7OrderId`
• The order identifier.
• `\$js7ControllerId`
• The Controller's identifier.

## Job

• `\$js7JobName`
• The name of the current job for which an order is executed.
• `\$epochMilli`
• The number of milliseconds since January 1st 1970 UTC.
• `\$returnCode`
• The numeric exit code of the current job for which an order is executed.

# Build-in Functions

• `now( format='yyyy-MM-dd hh:mm:ss', timezone='Europe/Berlin' )`
• The job start date. This date can be formatted using Java date qualifiers. Optionally a time zone can be specified, by default the UTC time zone is used.
• Example:

Expression ``now( format='yyyy-MM-dd' )`` `"\"now( format='yyyy-MM-dd' )\""` 2021-05-03
Expression ``now( format='yyyy-MM-dd hh:mm:ss' )`` `"\"now( format='yyyy-MM-dd hh:mm:ss' )\""` 2021-05-03 07:30:42
Expression ``now( format='yyyy-MM-dd hh:mm:ss', timezone="UTC" )`` `"\"now( format='yyyy-MM-dd hh:mm:ss', timezone=\\\"Europe/Berlin\\\" )\""` 2021-05-03 09:30:42
• `scheduledOrEmpty( format='yyyy-MM-dd hh:mm:ss', timezone='Europe/Berlin' )`
• The date for which an orders is scheduled.
• The date formatting options are the same as with the `now()` function.

• No labels
Write a comment…