Business rules scripting

Scripting LanguageLanguage VersionScripting EngineScripting Engine Version
Python2.7.0Jython2.7.3
DMN1.3camunda.engine.dmn7.20.0
MVEL2org.mvel.mvel22.5.2.Final
Groovy3.0.21org.codehaus.groovy » groovy-jsr2233.0.21
JavaScriptECMAScript 5.1Nashorn15.4

Integration designer scripting

Scripting LanguageLanguage VersionScripting EngineScripting Engine Version
Python3.10GraalPy3.10.8
JavaScriptES 2019+GraalJSGraalVM 23.0.1+

GraalVM CE Native 23.0.1

GraalVM CE Native 23.0.1 is the community edition of GraalVM with support for multiple languages and AOT (ahead-of-time) compilation to native images. This allows Java and polyglot applications to start quickly and use fewer resources, making it ideal for serverless, CLI, and microservice applications.

Supported Languages and Versions

  • Java: JDK 17 base, providing the complete Java language specification and libraries.
  • JavaScript: GraalJS runtime, with a minimum supported version of ECMAScript 5 and full compatibility up to ECMAScript 2022.
  • Python: GraalPy, compatible with Python 3.10 syntax and libraries, enabling seamless integration with Java.

Properties

  • Offers fast startup and low memory usage through Native Image compilation.
  • Provides polyglot capabilities, enabling interoperability between languages.
  • Available on Linux, macOS, and Windows for a range of deployment environments.

GraalVM Documentation

GraalVM 23.0.1 Release Notes


GraalPy

GraalPy is a Python 3.10-compatible runtime built on GraalVM. It allows developers to embed Python into Java applications, providing high-performance execution and interoperability with Java. GraalPy supports Python’s standard library and is optimized for environments where Java and Python integration is essential, such as in data processing and AI applications.

Properties

  • Supports Python 3.10 with most core libraries.
  • Enables seamless interoperability with Java classes and functions.
  • Offers performance benefits via GraalVM’s Just-In-Time (JIT) compiler for optimized execution.

GraalPy Documentation

GraalJS

GraalJS is the JavaScript runtime within GraalVM that supports ECMAScript 2022, bringing modern JavaScript features to the JVM. GraalJS offers full Java interoperability, enabling JavaScript code to interact with Java classes directly. It is compatible with GraalVM 23.0.1 and later, and it supports both JavaScript and Node.js applications, making it ideal for polyglot projects.

Properties

  • Implements ECMAScript 2022 for modern JavaScript syntax and features.
  • Provides full interoperability with Java, allowing seamless integration of JavaScript and Java code.
  • Runs Node.js applications with support for the npm ecosystem.

GraalJS Documentation


This documentation provides an overview of GraalVM CE Native 23.0.1’s language support and specific runtime details for each supported language.

Jython

Jython is an implementation of the high-level, dynamic, object-oriented language Python seamlessly integrated with the Java platform. Jython is an open-source solution.

Jython Book

Properties

  • Supports Python 2.7 most common python libs can be imported, ex: math, time, etc.
  • Java libs can also be imported: details here

Python 2.7 documentation

Jython

Jython FAQs

DMN

Decision Model and Notation (DMN) is a standard for Business Decision Management.

FLOWX uses BPMN.io (based on camunda-engine-dmn version 7.20.0) which is built on DMN 1.3 standards.

Properties

camunda-engine-dmn supports DMN 1.3, including Decision Tables, Decision Literal Expressions, Decision Requirements Graphs, and the Friendly Enough Expression Language (FEEL)

Decision Model and Notation (DMN)

DMN 1.3 specs

More information:

DMN Business rule action

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.

Mvel documentation

Maven repository: Mvel 2.4.0 final

More information

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.

Groovy Language Documentation

[Java] Class GroovyScriptEngineImpl

groovy-jsr223

Nashorn Engine (JavaScript)

Nashorn engine is an open source implementation of the ECMAScript Edition 5.1 Language Specification. It also implements many new features introduced in ECMAScript 6 including template strings; let, const, and block scope; iterators and for..of loops; Map, Set, WeakMap, and WeakSet data types; symbols; and binary and octal literals. It is written in Java and runs on the Java Virtual Machine.

Latest version of Nashorn is 15.4, available from Maven Central. You can check the changelog to see what’s new.

Nashorn - Changelog

OpenJDK - Nashorn

nashorn-core - Maven Central