跳到主要内容

脚本执行节点

脚本执行节点用于在工作流中运行自定义脚本,支持使用 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);

四、注意事项

由于jskotlin脚本的执行环境依赖比较大,默认不会引入依赖包; 当流程中使用了上述两个脚本节点时系统会提示引入依赖包。 请按需手动引入: 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>