Skip to content

代码执行节点

什么是代码执行节点?

代码执行节点是一个强大的工具,它允许您在工作流中编写和执行自定义代码片段。通过这个节点,您可以用编程语言(目前支持 PHP 和 Python)处理数据、执行计算或实现其他节点无法直接实现的复杂逻辑。就像是在工作流中嵌入了一个小型的编程环境,让您能够灵活地应对各种特殊需求。

图片说明:

代码执行节点界面主要由三部分组成:顶部为节点输入区,中间的代码编辑区,以及底部的输出配置区。在代码编辑区,您可以直接编写代码;在顶部和底部,您可以设置代码需要的输入参数和生成的输出参数。 代码执行节点

为什么需要代码执行节点?

在构建工作流时,您可能会遇到这些情况:

  1. 复杂数据处理:需要对数据进行复杂的转换、计算或结构调整
  2. 条件逻辑:需要实现比简单分支节点更复杂的条件判断
  3. 自定义功能:需要实现其他节点无法直接提供的特定功能
  4. 特殊算法:需要应用特定的业务算法或公式 代码执行节点就是为解决这些情况而设计的。它让您摆脱预设功能的限制,通过编程实现完全自定义的逻辑。

适用场景

1. 数据格式转换

当您需要将从 API 获取的数据转换为特定格式,或者将多个来源的数据组合成统一结构时,代码执行节点可以轻松处理这些转换工作。

2. 复杂计算

对于涉及多步骤计算、需要循环处理或使用特定算法的场景,代码执行节点可以实现任何复杂度的计算逻辑。

3. 自定义规则判断

当业务规则复杂,无法用简单条件节点表达时,代码执行节点可以实现多条件、多层次的复杂判断逻辑。

节点参数说明

基本参数

参数名称描述是否必填默认值
代码语言选择代码的执行语言,支持 PHP 和 PythonPHP
代码模式选择代码的来源方式,可以是直接编写或导入变量直接编写
代码内容需要执行的代码片段
导入代码当选择"导入变量"模式时,指定包含代码的变量仅导入模式必填
输入参数代码执行节点可以接收上游节点传递的数据作为输入。您可以在节点的"输入"标签页中添加和配置这些参数
输出参数代码执行的结果可以配置为输出参数,传递给下游节点使用。您可以在节点的"输出"标签页中添加和配置这些参数

数据类型说明

输入、输出参数支持多种数据类型:

  • 字符串
  • 数字
  • 布尔值
  • 数组
  • 对象
  • 字符串数组
  • 整数数组
  • 布尔数组
  • 对象数组
  • 数值
  • 数值数组

使用说明

基本配置步骤

  1. 添加代码执行节点:在工作流编辑器中,拖拽"代码执行"节点到画布上。
  2. 选择代码语言:点击节点,在右侧属性面板中选择代码语言(PHP 或 Python)。
  3. 编写代码
    1. 如果选择"直接编写"模式,在代码编辑器中输入您的代码
    2. 如果选择"导入变量"模式,选择包含代码的变量
  4. 配置输入参数
    1. 点击"输入"标签页
    2. 点击"添加参数"按钮
    3. 设置参数名、类型和值
  5. 配置输出参数
    1. 点击"输出"标签页
    2. 点击"添加参数"按钮
    3. 设置参数名和类型
  6. 连接节点:将上游节点连接到代码执行节点,将代码执行节点连接到下游节点。
  7. 保存工作流:点击保存按钮保存您的配置。

进阶技巧

PHP 代码示例

在 PHP 模式下,您的代码将接收输入参数作为变量,并通过返回数组的方式提供输出:

php
<?php
// 获取输入参数
$name = $name ?? '访客';
$age = $age ?? 0;

// 处理逻辑
$greeting = "你好,{$name}!";
$isAdult = $age >= 18;
$message = $isAdult ? "您已成年。" : "您未成年。";

// 返回结果(会成为输出参数)
return [
    'greeting' => $greeting,
    'isAdult' => $isAdult,
    'message' => $message
];

Python 代码示例

在 Python 模式下,您的代码将接收输入参数作为变量,并通过定义全局变量的方式提供输出:

python
# 获取输入参数
name = globals().get('name', '访客')
age = globals().get('age', 0)

# 处理逻辑
greeting = f"你好,{name}!"
is_adult = age >= 18
message = "您已成年。" if is_adult else "您未成年。"

# 设置输出参数(会成为全局变量)
globals()['greeting'] = greeting
globals()['is_adult'] = is_adult
globals()['message'] = message

注意事项

代码安全限制

  1. 执行时间限制:代码执行有时间限制,长时间运行的代码可能会被中断。
  2. 资源限制:执行环境的内存和处理能力有限,请避免过于复杂或资源密集型的操作。
  3. 访问限制:出于安全考虑,代码执行环境不能直接访问文件系统或进行网络请求。

调试技巧

  1. 输出调试信息:在 PHP 中使用echo或在 Python 中使用print输出调试信息,这些信息会显示在节点的执行日志中。
  2. 分步测试:复杂逻辑应分解为小步骤,逐步测试确保每部分正确。
  3. 数据验证:在代码开始处添加检查,验证输入参数的存在性和正确性。

常见问题

为什么我的代码没有正确执行?

  1. 检查语法错误:确保您的代码没有语法错误,例如缺少分号、括号不匹配等。
  2. 检查变量名称:确保代码中引用的输入参数名称与配置的输入参数名称完全一致,包括大小写。
  3. 检查返回格式:确保 PHP 代码正确返回数组,或 Python 代码正确设置全局变量。

如何在代码中使用上游节点的结果?

  1. 配置输入参数:首先在"输入"标签页中添加与上游节点结果对应的参数。
  2. 引用变量值:将参数值设置为上游节点的输出变量。
  3. 在代码中使用:在代码中通过变量名直接引用这些输入参数。

最佳实践

常见搭配节点

节点类型搭配原因
条件分支节点代码执行节点可以处理复杂逻辑,然后将结果传给条件分支节点进行判断。
HTTP 请求节点处理 API 请求返回的数据,进行格式转换或提取关键信息。
大模型调用节点对大模型生成的内容进行处理,如提取特定信息、格式化或分类。

基于 Apache 2.0 许可发布