Inline Task
The INLINE task helps execute necessary logic at workflow runtime,
using an evaluator. There are two supported evaluators as of now:
Configuration
The INLINE task is configured by specifying the following keys inside inputParameters, along side any other input values required for the evaluation.
inputParameters
| Name | Type | Description | Notes |
|---|---|---|---|
| evaluatorType | String | Type of the evaluator. Supported evaluators: value-param, javascript which evaluates javascript expression. |
Must be non-empty. |
| expression | String | Expression associated with the type of evaluator. For javascript evaluator, Javascript evaluation engine is used to evaluate expression defined as a string. Must return a value. |
Must be non-empty. |
Besides expression, any value is accessible as $.value for the expression to evaluate.
Outputs
| Name | Type | Description |
|---|---|---|
| result | Map | Contains the output returned by the evaluator based on the expression |
Examples
Example 1
{
"name": "INLINE_TASK",
"taskReferenceName": "inline_test",
"type": "INLINE",
"inputParameters": {
"inlineValue": "${workflow.input.inlineValue}",
"evaluatorType": "javascript",
"expression": "function scriptFun(){if ($.inlineValue == 1){ return {testvalue: true} } else { return
{testvalue: false} }} scriptFun();"
}
}
The task output can then be referenced in downstream tasks using an expression:
"${inline_test.output.result.testvalue}"
Note
The JavaScript evaluator accepts JS code written to the ECMAScript 5.1(ES5) standard
Example 2
Perhaps a weather API sometimes returns Celcius, and sometimes returns Farenheit temperature values. This task ensures that the downstream tasks ONLY receive Celcius values:
{
"name": "INLINE_TASK",
"taskReferenceName": "inline_test",
"type": "INLINE",
"inputParameters": {
"scale": "${workflow.input.tempScale}",
"temperature": "${workflow.input.temperature}",
"evaluatorType": "javascript",
"expression": "function SIvaluesOnly(){if ($.scale === "F"){ centigrade = ($.temperature -32)*5/9; return {temperature: centigrade} } else { return
{temperature: $.temperature} }} SIvaluesOnly();"
}
}