脚本执行节点
脚本执行节点用于在工作流中运行自定义脚本,支持使用 JavaScript 等语言来处理、转换或生成流程变量,从而实现灵活的数据处理能力。

一、应用场景
脚本执行节点可广泛应用于以下场景:
- 数据解析:解析复杂嵌套结构的 JSON,对结构化或非结构化数据进行清洗和抽取。
- 计算统计:实现自定义逻辑的数值计算、统计汇总等。
- 变量处理:合并多个变量,或将变量进行统一格式化处理。
二、添加脚本执行节点
点击前一节点的,选中脚本执行节点,添加即可

三、节点配置详解
选中添加的脚本执行节点,即可详细配置此节点

1. 输入变量配置
在节点右侧配置面板中,可以设置该脚本节点的输入变量:
- 左侧输入框:填写变量名;
- 右侧下拉框:选择变量来源节点,变量必须来自当前节点之前的节点,不能引用后续或并行节点。

2. 选择与编写脚本
脚本节点支持多种脚本语言,包括:
- JavaScript(JS)
- Groovy
- Kotlin
- Aviator

脚本格式要求:
- JS/Groovy/Kotlin:需实现一个名为
main(params)
的主函数,返回一个对象; - Aviator:可直接书写代码,通过设置变量
resp = {...}
来返回结果。
3. 输出变量配置
脚本节点返回的结果为一个对象,其中每个字段都可以作为输出变量使用。
例如:若返回结果为:{"result": "处理后的文本"}
则在输出变量中配置变量名 result,即可获取对应值用于下游节点使用。
四、脚本示例
脚本会接收一个输入对象,该对象包含了所有输入变量
,处理完成后返回一个对象,该对象包含了所有输出变量
.
1. JavaScript 示例
function main(params) {
if (params.llmRes) {
let resLength = params.llmRes.length;
params.llmRes = params.llmRes + '\n字数:' + resLength;
}
return {
result: params.llmRes,
};
}
2. Groovy 示例
def main(params) {
if (params.llmRes) {
def resLength = params.llmRes.length()
params.llmRes += "\n字数:" + resLength
}
return [result: params.llmRes]
}
3. Kotlin 示例
fun main(params: MutableMap<String, Any?>): Map<String, Any?> {
if (params["llmRes"] is String) {
val llmRes = params["llmRes"] as String
val resLength = llmRes.length
params["llmRes"] = "$llmRes\n字数1:$resLength"
}
return mapOf("result" to params["llmRes"])
}
4. Aviator 示例
let llmRes = params.llmRes;
let resLength = length(llmRes);
let res = llmRes + "\n字数1:" + resLength;
let resp = seq.map("result", res);
四、注意事项
由于js
和kotlin
脚本的执行环境依赖比较大,默认不会引入依赖包;
当流程中使用了上述两个脚本节点时系统会提示引入依赖包。
请按需手动引入:
js:
<dependency>
<groupId>com.yomahub</groupId>
<artifactId>liteflow-script-graaljs</artifactId>
<version>2.12.4.1</version>
</dependency>
kotlin:
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-scripting-jsr223</artifactId>
<version>1.6.21</version>
</dependency>