--- alias: user-guide-automation-task-core-expressionevaluatorgeneric tags: - automation tasks description: "This task evaluates expressions using a math engine, dynamically generating results from input data" --- # Generic Expression Evaluator :iot-arithmeticoperation-lg:{style="font-size: 100px"} The **Generic Expression Evaluator** evaluates mathematical and logical expressions using the mathjs engine. It allows users to perform arithmetic, logical comparisons, and complex mathematical operations on input data, producing computed results dynamically. ![mainImage][mainImage] !!! note This task results from a split of the Expression Evaluator task. It can be used along with [[user-guide-automation-task-core-expressionevaluatorregular]] and [[user-guide-automation-task-core-expressionevaluatorxpath]]. ## Workflows | Data Flow | Control Flow | | :--------: | :---------: | | :material-check:{ style="color: #4DB6AC" } | :material-check:{ style="color: #4DB6AC" } | ## Inputs | Name | Data Type | Description | | --------------- | ---------- | ----------- | | `` | `` | Defines the input values used in the evaluation | | Activate | `any` | Triggers task execution | ## Outputs | Name | Data Type | Description | | --------------- | ---------- | ------------------------------------------------------------------ | | `` | `` | Defines the output values generated by the evaluation | |Success | `Boolean` | Returns `true` if the task completes successfully | | Error | `Error` | Contains information about any error that occurs | ## Settings The General tab includes standard task settings and the following parameters: | Name | Data Type | Values | Default Value | Description | | ---- | --------- | ------ | ------------- | ----------- | | Evaluator Behavior | `enum` | `EvaluateAll`
`EvaluateUntilTrue` | `EvaluateAll` | Defines whether all expressions are evaluated or evaluation stops after the first true result | | Clear Inputs | `Boolean` | | false | When enabled, clears input values after task execution | ![settings][settings] The Inputs Tab includes the following settings: | Name | Data Type | Description | | ---- | --------- | ----------- | | Name | `String` | Input Name | | Friendly Name | `String` | The displayed input name | | Type | `Long`
`Decimal`
`DateTime`
`Boolean`
`String`
`Integer` | Defines the data type of the input | | Default Value | `any` | Default value assigned to the input parameter | | Required | `any` | Indicates if input is required | ![inputs][inputs] The Outputs Tab includes the following settings: | Name| Data Type | Description | | --- | --------- | ----------- | | Name | `String` | Output Name | | Friendly Name | `String` | The displayed output name | | Type | `Long`
`Decimal`
`DateTime`
`Boolean`
`String`
`Integer` | Defines the data type of the output | | Expression | `any` | Expression applied to the input data | ![outputs][outputs] ### Evaluator Behavior The `Generic Expression Evaluator` task uses the mathjs engine, a JavaScript-based library for mathematical and logical computation, as well as some native JavaScript functions. - `EvaluateUntilTrue`: Stops processing when an expression returns a `true` value and outputs the corresponding result. - `EvaluateAll`: Evaluates all configured expressions and outputs all results. - `Clear Inputs`: When enabled, resets the inputs after task execution. !!! note Test `mathjs` expression at . Additional documentation is available at and . ## Remarks The **Generic Expression Evaluator** provides flexible operations for transforming input data. While mathjs supports many JavaScript-like functions, it is not a full JavaScript engine; some native JavaScript code may not execute as expected. [mainImage]: ../images/expression_evaluator_generic.png [settings]: ../images/expression_evaluator_generic_settings.png [inputs]: ../images/expression_evaluator_generic_inputs.png [outputs]: ../images/expression_evaluator_generic_outputs.png