跳转到内容

执行代码(Python/JS)

执行代码 用于在工作流中执行一段自定义代码,处理标准节点难以覆盖的复杂逻辑或数据转换。它的定位是「兜底处理」,不建议把过重的业务逻辑都堆进代码节点,否则工作流本身就失去了编排意义。节点的输出需按平台规范以 JSON 形式返回,且字段名要与节点输出配置一致,否则无法正确解析到对应变量。

指令标识:Code
指令类型:执行代码指令
指令描述:执行用户输入的代码,实现复杂的逻辑和数据处理

工作流支持「可视化编排」和「代码编排」两种创建方式。执行代码 节点本身就是写脚本的入口:在可视化里通过表单设置输入/输出参数并粘贴脚本,也可以在代码编排中按相同规范编写。

方式怎么用适合人群
可视化编排(推荐先学)拖入「执行代码」节点,配置输入参数、粘贴脚本、定义输出参数大多数用户,零代码搭建流程、只在节点内写少量脚本
代码编排(Python)def main(params) 规范编写脚本,通过 params 取入参、返回字典作为输出熟悉 Python、需要处理复杂逻辑的用户
  • 标准节点无法覆盖的特殊业务逻辑,需要用代码兜底实现。
  • 对输入数据做复杂的转换、清洗、格式化(如日期计算、字符串处理)。
  • 实现特定的算法或数值计算。
  • 对参数做预处理、格式校验、数据验证等前置操作。
  • 入口函数固定为 main,且必须含有一个形参(通常命名为 params)。
  • 通过 params.get("参数名") 获取节点配置的输入参数。
  • 返回值必须是字典(对象),键名要与「输出参数」配置完全一致。
  • 仅能使用平台预置的 Python 包(见下方列表),未列出的包会导致执行失败。
  • 避免编写耗时过长或死循环的代码,否则会因超时导致节点失败。
执行代码(Python/JS)

下面用一个常见场景演示:计算两个整数的最大公约数并输出 result。按 4 步即可跑起来:

  1. 在工作流画布中添加 执行代码 指令。
  2. 输入参数 中声明 ab 两个参数,并设置其值(可引用上游节点变量)。
  3. 在脚本编辑区填写入口函数:
def main(params):
a = int(params.get("a"))
b = int(params.get("b"))
while b != 0:
a, b = b, a % b
return {"result": a}
  1. 输出参数 中添加 result,运行后即可在后续节点引用 result

输入参数用于向脚本传递动态数据,在节点表单中声明后,脚本里通过 params.get("参数名") 读取。

界面名称代码属性名类型必填默认值说明
输入参数inputListArray-传递给脚本的输入参数列表,每项包含名称、类型、值(值可为固定值或引用上游变量)。
脚本scriptString-自定义代码内容,入口函数必须为 main(params),并以字典形式返回结果。

输出参数由开发者自行定义,脚本需以字典形式返回,一级字段名要与节点配置保持一致。

界面名称代码属性名类型必填说明
将结果保存至outKeyJSON脚本返回的结果对象,按返回字典的字段映射到输出变量。

平台预置的 Python 包

指令并不支持所有的 Python 包,以下是目前支持的部分常用包和对应版本号:

包名版本号
requests2.32.3
pathlib1.0.1
pandas2.0.3
beautifulsoup44.13.3
urllib31.26.20
werkzeug3.0.6
jinja23.0.3
jsonschema4.23.0
numpy1.24.4
matplotlib3.7.5
seaborn0.13.2
scikit-learn1.3.2
flask3.0.3
qrcode8.2
  • 节点运行状态为成功,未触发超时或未捕获异常。
  • 脚本返回的字典字段名与「输出参数」配置一致。
  • 后续节点能正确引用脚本输出的变量。
现象 / 报错原文可能原因处理建议
提示找不到入口函数未使用 def main(params) 作为入口确认入口函数名为 main 且含一个形参
输出变量取不到值返回字典的键名与输出参数不一致让返回字典的一级字段名与输出参数配置完全一致
报缺少模块 / 导入失败使用了未预置的 Python 包仅使用平台预置包,替换或移除未支持的依赖
节点执行超时代码耗时过长或存在死循环优化算法、避免死循环,控制单次执行时长
节点报未捕获异常代码内部抛出异常未处理在脚本中做好 try/except 异常处理

代码编排以 Python 为主。运行上下文由代码编排模板创建,脚本只需关注 main(params) 入口与返回结果本身。

入口函数固定为 main(params),通过 params 读取入参,返回字典作为输出:

def main(params):
obj = {
"a": params.get("a"),
"b": params.get("b"),
}
return obj

也可以在脚本里完成更复杂的处理后返回结果:

def main(params):
a = int(params.get("a"))
b = int(params.get("b"))
while b != 0:
a, b = b, a % b
# 返回字典的键名需与输出参数配置一致
return {"result": a}

可视化表单里的「输入参数」「脚本」「将结果保存至」分别对应 inputListscriptoutKey

A: 入口函数必须是 def main(params),且含有一个形参,平台从该函数取得执行结果。

Q2:如何获取入参、如何返回输出?

Section titled “Q2:如何获取入参、如何返回输出?”

A:params.get("参数名") 获取入参;必须返回字典,如 {"result": value},且键名要与输出参数配置完全一致。

A: 仅支持平台预置的包及版本,使用未列出的包会导致执行失败。

A: 有。请避免耗时过长或死循环的代码,否则会因超时导致节点失败;建议在代码中做好异常处理。