🧀Javascript脚本引擎
# 依赖
对于Javascript脚本,你有两种引擎可以选择,一种是基于jdk的js引擎实现,只支持ES5。另一种是基于GraalJs引擎实现,支持ES6。
如果你使用jdk8,你可以选用下面任意一种脚本引擎,而jdk11和jdk17,你只能选用graaljs引擎,因为jdk8之后的jdk已经移除了jdk自带的Nashorn JavaScript引擎。
<dependency>
<groupId>com.yomahub</groupId>
<artifactId>liteflow-script-javascript</artifactId>
<version>2.11.4.2</version>
</dependency>
<dependency>
<groupId>com.yomahub</groupId>
<artifactId>liteflow-script-graaljs</artifactId>
<version>2.11.4.2</version>
</dependency>
# 使用
你需要在你的xml中去定义node节点,以下是一个示例
<node id="s1" name="普通脚本1" type="script" language="js">
<![CDATA[
var a=3;
var b=2;
var c=1;
var d=5;
function addByArray(values) {
var sum = 0;
for (var i = 0; i < values.length; i++) {
sum += values[i];
}
return sum;
}
var result = addByArray([a,b,c,d]);
defaultContext.setData("s1",parseInt(result));
]]>
</node>
以上是一个普通脚本组件的示例,你可以用js的绝大部分语法特性,甚至还可以在脚本里定义Function。
# 脚本类型
要注意的是,type
分为6种:
script
:普通脚本节点,脚本里无需返回。
switch_script
:选择脚本节点,脚本里需要返回选择的节点Id。
if_script
:条件脚本节点,脚本里需要返回true/false。
for_script
:数量循环节点,脚本里需要返回数值类型,表示循环次数。
while_script
:条件循环节点,脚本里需要返回true/false,表示什么条件才继续循环。
break_script
:退出循环节点,脚本里需要返回true/false,表示什么时候退出循环。
# 如何取到上下文以及和Java类进行交互
关于这部分,请详细参考脚本与Java进行交互这一章节。
帮助我们改善此文档 (opens new window)
上次更新: 2024/04/09, 18:39:17