🍫选择脚本语言
LiteFlow框架目前一共支持6种脚本语言:Groovy,Javascript,QLExpress,Python,Lua,Aviator
LiteFlow采用SPI机制进行选择脚本框架来动态编译你的脚本。
官方推荐使用Groovy
,因为和java语法是最接近的。
如果你不熟悉这5种脚本语言的语法。可以参照以下教程:
Javascript语法教程 (opens new window)
QLExpress语法教程 (opens new window)
Aviator语法教程 (opens new window)
# Groovy
Groovy脚本,你需要额外依赖:
<dependency>
<groupId>com.yomahub</groupId>
<artifactId>liteflow-script-groovy</artifactId>
<version>2.10.7</version>
</dependency>
# Javascript
对于Javascript脚本,你有两种引擎可以选择,一种是基于jdk的js引擎实现,只支持ES5。另一种是基于GraalJs引擎实现,支持ES6。
官方建议,如果是简单的逻辑,就采用jdk引擎的,如果是复杂的,需要用ES6特性的,就用GraalJs引擎。
顺便说下,jdk引擎并不支持java 17,而GraalJs引擎是能支持到java 17的。
<dependency>
<groupId>com.yomahub</groupId>
<artifactId>liteflow-script-javascript</artifactId>
<version>2.10.7</version>
</dependency>
<dependency>
<groupId>com.yomahub</groupId>
<artifactId>liteflow-script-graaljs</artifactId>
<version>2.10.7</version>
</dependency>
# QLExpress
QLExpress脚本,你需要额外依赖:
<dependency>
<groupId>com.yomahub</groupId>
<artifactId>liteflow-script-qlexpress</artifactId>
<version>2.10.7</version>
</dependency>
# Python
Python脚本,你需要额外依赖:
<dependency>
<groupId>com.yomahub</groupId>
<artifactId>liteflow-script-python</artifactId>
<version>2.10.7</version>
</dependency>
提示
python解析执行依赖Jython环境,不安装部署启动会报错(IDEA里不会报错),环境安装说明如下
一、下载安装Jython Installer
https://www.jython.org/download (opens new window)
二、Springboot启动类添加代码
Properties props = new Properties();
Properties preprops = System.getProperties();
props.put("python.home", jython安装目录);
PythonInterpreter.initialize (preprops, props, new String[]{});
# Lua
Lua脚本,你需要额外依赖:
<dependency>
<groupId>com.yomahub</groupId>
<artifactId>liteflow-script-lua</artifactId>
<version>2.10.7</version>
</dependency>
提示
在lua中,调用java方式是用:
来调用的,并不是.
,比如defaultContext:setData("s1",a*b)
。
# Aviator
Aviator脚本,你需要额外依赖:
<dependency>
<groupId>com.yomahub</groupId>
<artifactId>liteflow-script-aviator</artifactId>
<version>2.10.7</version>
</dependency>
提示
在aviator中,调用java方式和其他不一样,比如我们上下文是UserContext
,在其他脚本语言中调用是用userContext.setName("jack")
,而在aviator脚本中,调用方式是setName(userContext, "jack")
,也就是method(bean, args)
这种形式,有点类似java反射的invoke形式。这点要注意下
# 其他说明
你只需要依赖相应的脚本框架即可,SPI会动态选择你依赖的脚本框架进行编译解析你的脚本。
LiteFlow对所有的脚本在启动时就进行了预编译,所以每次执行时无需编译的,运行性能和java不会差别太多。