JavaScript🔗

Runs user-defined JavaScript code in the processing pipeline.

Inputs🔗

The inputs of the tool are defined by the inputParameters parameter. Input values can be accessed in the script code through an object called $i in the global scope. For example, if there is an input parameter called input, its value is stored in $i.input.

  • inputParameters: A table that defines input parameters. The first column contains the name of a parameter, the second one its type (optional/required/fixed) and the third one the data type of the parameter’s value.

  • outputParameters: A table that defines output parameters. The first column contains the name of the parameter, the second one is type (synchronous/asynchronous) and the third one the data type of the parameter’s value.

  • code: JavaScript code to run.

  • stateEnabled: Whether the script code supports state variables or not. It may have a slight impact on performance, so if the script does not need state variables, it is advisable not to enable this parameter.

Outputs🔗

The outputs of the tool are defined by the outputParameters parameter. Output values can be accessed in the script code through an object called $o in its scope. For example, if there is an output parameter called output, it can be assigned a value by $o.output = value.

If an output is synchronous, it must be assigned a value on each processing round. Leaving a synchronous output empty will cause a run-time error. On the other hand, asynchronous outputs do not need to be assigned values.

Code examples🔗

A tool that calculates has two numeric input parameters: a and b and a single output parameter sum, which is the sum of the two inputs:

$o.sum = $i.a + $i.b

A tool that strips the first three characters of an input string:

$o.string = $i.string.substring(3)

A tool that multiplies two input matrices (a and b):

$o.c = $i.a.times($i.b)

State variables🔗

If the stateEnabled parameter is true, the script can also use special state variables that retain their values between invokations. They can be accessed in the script code through an object called $s. For example, storing to the state variable foo can be done by $s.foo = 'bar'. Next time the script is run, variable $s.foo will have ‘bar’.