Business rules scripting
Scripting Language | Language Version | Scripting Engine | Scripting Engine Version |
---|---|---|---|
JavaScript | ECMAScript 15 (2024) | GraalJS | GraalVM 24.1.2 |
Python 3 | 3.11.7 | GraalPy | GraalVM 24.1.2 |
MVEL | 2 | org.mvel Β» mvel2 | 2.5.2.Final |
Groovy | 3.0.21 | org.codehaus.groovy Β» groovy-jsr223 | 3.0.21 |
In version 4.7.2, weβve deprecated the DMN (Decision Model and Notation) business rule actions. This change affects how business rules are configured on task/user task nodes in business processes.
Looking ahead: Python 2.7 is no longer supported in FlowX.AI 5.0. We recommend migrating your Python scripts to Python 3 to take advantage of improved performance and modern language features.
Integration designer scripting
Scripting Language | Language Version | Scripting Engine | Scripting Engine Version |
---|---|---|---|
JavaScript | ECMAScript 15 (2024) | GraalJS | GraalVM 24.1.2 |
Python | 3.11.7 | GraalPy | GraalVM 24.1.2 |
JavaScript
New in v4.7.1: JavaScript support has been upgraded from Nashorn (ECMAScript 5.1) to GraalJS (ECMAScript 15/2024), providing significantly improved performance and modern language features.
What is GraalJS?
GraalJS is an ECMAScript compliant JavaScript implementation built on GraalVM. It supports the latest ECMAScript features and offers high performance through the GraalVMβs JIT compiler.Properties
- Supports ECMAScript 15 (2024) features including modern syntax and APIs
- Provides consistent scripting across business rules and integration designer
- Runs in a secure sandboxed environment
Limitations
JavaScript scripts run in a sandboxed environment. Here is a list of JavaScript features not available in the sandbox:- import.meta (ES2020)
- top-level await (ES2022)
- set operations (ES2024)
- Array.fromAsync (ES2024)
Useful links
GraalJS Documentation
ECMAScript 2024 Language Specification
Python 3
Python is a high-level, interpreted programming language known for its simplicity and readability. FlowX.AI uses Python 3.11.7 via GraalPy for executing Python scripts.What is GraalPy?
GraalPy is an implementation of Python that runs on the GraalVM. It offers high compatibility with standard Python (CPython) while providing the ability to run within the Java ecosystem. GraalPy supports Python 3 and provides access to a large subset of the standard Python library.Properties
- Supports Python 3.11.7 with access to most common Python libraries
- Runs up to 3x faster than Python 2.7 via Jython
- Runs in a sandboxed environment for better security
Python Library Support
Python 3 support in FlowX comes with a subset of the standard Python library. Python runs in a sandboxed environment and the following modules are not available: βstringprepβ, βsqlite3β, βplistlibβ, βgetpassβ, βcursesβ, βcurses.textpadβ, βcurses.asciiβ, βcurses.panelβ, βxml.parsers.expatβ, βxmlrpc.clientβ, βxmlrpc.serverβ, βturtleβ, βtkinterβ, βtest.supportβ, βsymtableβ, βpyclbrβ, βmsvcrtβ, βwinregβ, βwinsoundβ, βgrpβ, βtermiosβ, βttyβ, βptyβ, βsyslogβ, βaudioopβ, βmsilibβ, βnisβ, βossaudiodevβ, βsmtpdβ, βspwdβ, βcryptβAvailable modules might provide limited access to system resources due to the execution in a sandbox environment.
Useful links
Python 3.11 Documentation
GraalPy Documentation
MVEL
MVEL is a powerful expression language for Java-based applications. It provides a plethora of features and is suited for everything from the smallest property binding and extraction, to full-blown scripts.- FlowX.AI uses mvel2 - 2.5.2.Final version
Useful links
MVEL Documentation
Maven repository: Mvel 2.5.2 Final
Intro to MVEL
Groovy
Groovy is a multi-faceted language for the Java platform. The language can be used to combine Java modules, extend existing Java applications and write new applications We use and recommend Groovy 3.0.21 version, using groovy-jsr223 engine.Groovy has multiple ways of integrating with Java, some of which provide richer options than available with JSR-223 (e.g. greater configurability and more security control). JSR-223 is recommended when you need to keep the choice of language used flexible and you donβt require integration mechanisms not supported by JSR-223.
JSR-223 (spec) is a standard scripting API for Java Virtual Machine (JVM) languages . The JVM languages provide varying levels of support for the JSR-223 API and interoperability with the Java runtime.