代码执行节点
什么是代码执行节点?
代码执行节点是一个强大的工具,它允许您在工作流中编写和执行自定义代码片段。通过这个节点,您可以用编程语言(目前支持 PHP 和 Python)处理数据、执行计算或实现其他节点无法直接实现的复杂逻辑。就像是在工作流中嵌入了一个小型的编程环境,让您能够灵活地应对各种特殊需求。
图片说明:
代码执行节点界面主要由三部分组成:顶部为节点输入区,中间的代码编辑区,以及底部的输出配置区。在代码编辑区,您可以直接编写代码;在顶部和底部,您可以设置代码需要的输入参数和生成的输出参数。
为什么需要代码执行节点?
在构建工作流时,您可能会遇到这些情况:
- 复杂数据处理:需要对数据进行复杂的转换、计算或结构调整
- 条件逻辑:需要实现比简单分支节点更复杂的条件判断
- 自定义功能:需要实现其他节点无法直接提供的特定功能
- 特殊算法:需要应用特定的业务算法或公式 代码执行节点就是为解决这些情况而设计的。它让您摆脱预设功能的限制,通过编程实现完全自定义的逻辑。
适用场景
1. 数据格式转换
当您需要将从 API 获取的数据转换为特定格式,或者将多个来源的数据组合成统一结构时,代码执行节点可以轻松处理这些转换工作。
2. 复杂计算
对于涉及多步骤计算、需要循环处理或使用特定算法的场景,代码执行节点可以实现任何复杂度的计算逻辑。
3. 自定义规则判断
当业务规则复杂,无法用简单条件节点表达时,代码执行节点可以实现多条件、多层次的复杂判断逻辑。
节点参数说明
基本参数
参数名称 | 描述 | 是否必填 | 默认值 |
---|---|---|---|
代码语言 | 选择代码的执行语言,支持 PHP 和 Python | 是 | PHP |
代码模式 | 选择代码的来源方式,可以是直接编写或导入变量 | 是 | 直接编写 |
代码内容 | 需要执行的代码片段 | 是 | 空 |
导入代码 | 当选择"导入变量"模式时,指定包含代码的变量 | 仅导入模式必填 | 无 |
输入参数 | 代码执行节点可以接收上游节点传递的数据作为输入。您可以在节点的"输入"标签页中添加和配置这些参数 | 是 | 无 |
输出参数 | 代码执行的结果可以配置为输出参数,传递给下游节点使用。您可以在节点的"输出"标签页中添加和配置这些参数 | 是 | 无 |
数据类型说明
输入、输出参数支持多种数据类型:
- 字符串
- 数字
- 布尔值
- 数组
- 对象
- 字符串数组
- 整数数组
- 布尔数组
- 对象数组
- 数值
- 数值数组
使用说明
基本配置步骤
- 添加代码执行节点:在工作流编辑器中,拖拽"代码执行"节点到画布上。
- 选择代码语言:点击节点,在右侧属性面板中选择代码语言(PHP 或 Python)。
- 编写代码:
- 如果选择"直接编写"模式,在代码编辑器中输入您的代码
- 如果选择"导入变量"模式,选择包含代码的变量
- 配置输入参数:
- 点击"输入"标签页
- 点击"添加参数"按钮
- 设置参数名、类型和值
- 配置输出参数:
- 点击"输出"标签页
- 点击"添加参数"按钮
- 设置参数名和类型
- 连接节点:将上游节点连接到代码执行节点,将代码执行节点连接到下游节点。
- 保存工作流:点击保存按钮保存您的配置。
进阶技巧
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
注意事项
代码安全限制
- 执行时间限制:代码执行有时间限制,长时间运行的代码可能会被中断。
- 资源限制:执行环境的内存和处理能力有限,请避免过于复杂或资源密集型的操作。
- 访问限制:出于安全考虑,代码执行环境不能直接访问文件系统或进行网络请求。
调试技巧
- 输出调试信息:在 PHP 中使用
echo
或在 Python 中使用print
输出调试信息,这些信息会显示在节点的执行日志中。 - 分步测试:复杂逻辑应分解为小步骤,逐步测试确保每部分正确。
- 数据验证:在代码开始处添加检查,验证输入参数的存在性和正确性。
常见问题
为什么我的代码没有正确执行?
- 检查语法错误:确保您的代码没有语法错误,例如缺少分号、括号不匹配等。
- 检查变量名称:确保代码中引用的输入参数名称与配置的输入参数名称完全一致,包括大小写。
- 检查返回格式:确保 PHP 代码正确返回数组,或 Python 代码正确设置全局变量。
如何在代码中使用上游节点的结果?
- 配置输入参数:首先在"输入"标签页中添加与上游节点结果对应的参数。
- 引用变量值:将参数值设置为上游节点的输出变量。
- 在代码中使用:在代码中通过变量名直接引用这些输入参数。
最佳实践
常见搭配节点
节点类型 | 搭配原因 |
---|---|
条件分支节点 | 代码执行节点可以处理复杂逻辑,然后将结果传给条件分支节点进行判断。 |
HTTP 请求节点 | 处理 API 请求返回的数据,进行格式转换或提取关键信息。 |
大模型调用节点 | 对大模型生成的内容进行处理,如提取特定信息、格式化或分类。 |