Skip to content

动态代码

动态代码节点允许用户编写自定义代码逻辑,并将其嵌入到执行链中。

支持的语言

QLExpress

简介

QLExpress 是由阿里的电商业务规则演化而来的嵌入式 Java 动态脚本工具,在阿里集团有很强的影响力, 同时为了自身不断优化、发扬开源贡献精神,于2012年开源。

在基本的表达式计算的基础上,增加以下特色功能:

灵活的自定义能力,通过 Java API 自定义函数和操作符,可以快速实现业务规则的 DSL

兼容Java语法,最新的 QLExpress4 可以兼容 Java8 语法,方便 Java 程序员快速熟悉

友好的报错提示,无论是编译还是运行时错误,都能精确友好地提示错误位置

默认安全,脚本默认不允许和应用代码进行交互,如果需要交互,也可以自行定义安全的交互方式

解释执行,不占用 JVM 元空间,可以开启缓存提升解释性能

代码精简,依赖最小,适合所有 java 的运行环境

示例

下面是一个简单示例:

qlexpress-code.png

执行代码:

function add(int a, int b) {
    return a + b;
};

res = add(num,2);

_result.put("addResult",res);

_result.put("resStr","返回常量");

运行结果:

qlexpress-res.png

Groovy

简介

Groovy 是一种基于 JVM (Java虚拟机)的敏捷开发语言,它结合了 Python、Ruby 和 Smalltalk 的许多强大的特性, Groovy 代码能够与 Java 代码很好地结合,也能用于扩展现有代码。由于其运行在 JVM 上的特性, Groovy 也可以使用其他非 Java 语言编写的库。

示例

下面是一个简单的示例:

groovy-code.png

执行代码:

int i = 1;

def add(a, b) {
    return a + b;
}

def r = add(i, num);

_result.put("result", r)

运行结果:

groovy-res.png

JavaScript

简介

JavaScript 是一种高级的、解释型的编程语言,主要用于网页开发,但如今已扩展到服务器端、移动应用和桌面应用开发。

示例

下面是一个简单的示例:

javascript-code.png

执行代码:

var a = 1;

for (var i=1; i<=num; i++) { 
    a+=i;
}

_result.put("jsRes", a);

运行结果:

javascript-res.png

输出参数

代码块中使用 _result.put(key, value) 的变量都可作为输出参数输出。