> ## Documentation Index
> Fetch the complete documentation index at: https://docs.get-clara.tech/llms.txt
> Use this file to discover all available pages before exploring further.

# 工作流常见问题

> 关于 Twenty 中工作流的常见问题。

<AccordionGroup>
  <Accordion title="为什么我无法启用工作流？">
    这很可能是权限问题。 您需要工作流的访问权限才能创建并启用它们。

    **解决方法**：联系您的工作区管理员，在**设置 → 角色**下为您授予工作流访问权限。

    如果您在侧边栏根本看不到工作流部分，这就说明是权限问题。
  </Accordion>

  <Accordion title="为什么我在顶部导航栏中看不到我的手动工作流按钮？">
    手动工作流仅在正确配置后才会出现在导航栏中：

    1. 工作流必须**已启用**（不是草稿模式）
    2. 导航栏位置必须设置为**Pinned**
    3. 对于 Single/Bulk 触发器，您必须位于正确的对象页面上

    **检查方式**：打开工作流 → 点击触发器 → 确认 "Navbar placement" 设置为 "Pinned"。

    无论导航栏设置如何，您始终可以通过**Cmd + K**（或**Ctrl + K**）访问手动工作流。
  </Accordion>

  <Accordion title="Single、Global 和 Bulk 手动触发器有什么区别？">
    | 类型            | 需要的记录   | 工作流运行         |
    | ------------- | ------- | ------------- |
    | \| **Global** | 无       | 一次，无记录输入      |
    | \| **Single** | 选择一个或多个 | 每个选中的记录执行一次   |
    | \| **Bulk**   | 选择一个或多个 | 执行一次，所有记录作为数组 |

    * **Global**：当工作流不需要任何记录上下文时使用（例如，生成报告）
    * **Single**：当您希望独立处理每个选定的记录时使用（例如，发送单独的电子邮件）
    * **Bulk**：当您需要一起处理记录或优化额度使用时使用（需要 Iterator 操作）

    详见 [工作流触发器](/l/zh/user-guide/workflows/capabilities/workflow-triggers)。
  </Accordion>

  <Accordion title="我没有看到 If/Else 节点。 我应该怎么办？">
    明确的 If/Else 节点尚不可用，但已在我们的路线图上。

    **当前变通方法**：从您的步骤创建多个分支，每个分支以一个**Filter** 操作开始：

    ```
    Step 1
       │
       ├── Branch A: Filter (condition = true) → Actions...
       │
       └── Branch B: Filter (condition = false) → Actions...
    ```

    只有通过 Filter 条件的分支会执行后续操作。

    逐步指南请参见[如何使用分支](/l/zh/user-guide/workflows/capabilities/workflow-branches)。
  </Accordion>

  <Accordion title="工作流分支是并行运行的吗？">
    **是的**，分支默认并行运行。

    如果您只希望一个分支执行：

    * 在每个分支的开头添加一个**Filter** 操作
    * 设置相反的条件（例如，分支 A：status = "Open"，分支 B：status ≠ "Open"）

    未通过其 Filter 条件的分支将停止执行，其他分支会继续。
  </Accordion>

  <Accordion title="我可以将分支合并在一起吗？">
    **是**。 并行分支完成后，您可以添加一个步骤，让两个分支都连接到该步骤。

    在工作流编辑器中：

    1. 完成您的分支内操作
    2. 在分支之后添加一个新步骤
    3. 将每个分支末端的连接拖拽到这个新步骤

    合并后的步骤将在所有已连接分支完成后执行。
  </Accordion>

  <Accordion title="Search Records 的结果限制是多少？">
    **Search Records 最多返回 200 条记录。**

    如果您需要处理更多：

    * 添加更具体的筛选条件以减少结果
    * 使用计划的工作流分批处理
    * 考虑使用 API 进行批量操作

    对大多数工作流而言，200 条记录已足够。 如果您经常触及此限制，请考虑重构您的自动化。
  </Accordion>

  <Accordion title="我可以在工作流邮件中抄送他人吗？">
    \*\*还不可以。\*\*Send Email 操作的 CC 和 BCC 字段已在我们的路线图上。

    **当前变通方法**：添加多个 Send Email 操作以发送给其他收件人，或者使用 HTTP Request 通过支持 CC 的外部电子邮件服务发送。
  </Accordion>

  <Accordion title="如何使用前面步骤的输出？">
    每个操作都会产生可在后续步骤中使用的输出数据。

    **引用前一步数据**：

    * 在配置字段时使用变量选择器
    * 或直接输入 `{{stepName.fieldName}}`

    **示例**：

    * 触发器数据：`{{trigger.object.email}}`
    * 搜索结果：`{{searchRecords[0].name}}`
    * 代码输出：`{{code.calculatedValue}}`

    在操作配置中将鼠标悬停在任意字段上，即可查看前面步骤可用的变量。
  </Accordion>

  <Accordion title="为什么我的 Iterator 会失败？">
    **Iterator 需要数组输入。** 常见问题：

    1. **输入不是数组**：请确保您传入的是 Search Records 或其他返回数组的操作的结果
    2. **数组为空**：在 Iterator 之前添加筛选条件，检查 `{{searchRecords.length}} > 0`
    3. **选择了错误的变量**：请确保您选择的是数组本身，而不是单个记录

    **正确设置**：

    1. Search Records（返回数组）
    2. Filter：length > 0
    3. Iterator：选择 `{{searchRecords}}`
    4. Iterator 内的操作使用 `{{iterator.currentItem.fieldName}}`
  </Accordion>

  <Accordion title="Code 操作的最大执行时间是多少？">
    Code 操作（逻辑函数）的**默认超时时间为 5 分钟**（300 秒）。

    可配置的最大超时时间为**15 分钟**（900 秒）。

    如果您的代码超过此限制，该操作将因超时错误而失败。

    **避免超时的提示**：

    * 使用 Iterator 将大型操作拆分为更小的块
    * 避免进行大量计算；通过 HTTP Request 使用外部服务进行密集型处理
    * 优化您的代码以减少执行时间
    * 如果您需要更长的处理时间，考虑使用计划的工作流按批次处理数据
  </Accordion>

  <Accordion title="如何查看工作流运行记录？">
    工作流运行显示执行历史，并帮助您调试问题。

    **访问运行记录**：

    * 在工作流编辑器中 → 右侧的 **运行** 面板
    * 或者前往侧边栏中的 **工作流运行**

    **了解一次运行**：

    * **状态**：运行中、已完成、失败、等待中
    * **步骤**：查看哪些步骤已执行及其输出
    * **错误**：点击失败的步骤查看错误消息
    * **数据**：查看每个步骤的输入/输出数据

    详见 [工作流运行](/l/zh/user-guide/workflows/capabilities/workflow-runs)。
  </Accordion>

  <Accordion title="为什么我看不到我的工作流运行？">
    工作流运行可能由于速率限制而立即失败。

    **硬性限制：每个工作区每小时 5,000 次运行。**

    如果超出此限制，工作流会被立即标记为失败，并且不会如预期出现在您的运行列表中。

    **常见的触发此限制的场景**：

    * 使用 Single 手动触发器选择超过 5,000 条记录
    * 整个工作区同时运行多个工作流
    * 高频率的自动触发（例如，在繁忙对象上的 Record Updated）

    **解决方案**：

    * 使用**Bulk** 触发器而非 Single，以在一次运行中处理多条记录
    * 将大型批量操作分散进行
    * 使用筛选条件降低触发频率
    * 将繁重的工作流安排在非高峰时段
  </Accordion>

  <Accordion title="工作流的速率限制是什么？">
    Twenty 设有两个速率限制以确保系统稳定性：

    | 限制                | 值             | 行为                           |
    | ----------------- | ------------- | ---------------------------- |
    | \| **Soft limit** | 每分钟 100 次运行   | 运行会以 "Not Started" 状态排队，逐步处理 |
    | \| **Hard limit** | 每小时 5,000 次运行 | 运行会立即失败                      |

    **Soft limit（100/分钟）**：您的工作流不会失败——它们只会在队列中等待，并随着时间被处理。 您可以触发超过 100 条记录；执行速度会更慢。

    **Hard limit（5,000/小时）**：这适用于您的整个工作区。 如果您所有工作流合计在一小时内超过 5,000 次运行，额外的运行将立即失败。

    **保持在限制内的提示**：

    * 对于大型批量，使用带有 Iterator 的 Bulk 触发器，而不是 Single 触发器
    * 将相关的自动化合并为更少的工作流
    * 使用计划的工作流在一段时间内分散负载
  </Accordion>

  <Accordion title="我可以重试失败的工作流运行吗？">
    **不，目前没有自动重试功能。**

    如果某次工作流运行失败，您需要：

    1. 在**设置 → 工作流 → \[Your Workflow] → 运行**中查看错误
    2. 修复问题（数据、配置或外部服务）
    3. 在受影响的记录上手动再次触发该工作流

    **减少失败的提示**：

    * 在操作前添加**Filter** 节点以验证数据
    * 使用**Search Records** 检查相关记录是否存在
    * 在进行批量操作之前，先用少量记录充分测试

    自动重试功能已在我们的路线图上，计划在未来版本中提供。
  </Accordion>

  <Accordion title="在进行 CSV 导入前，我需要停用工作流吗？">
    **是的，如果您的工作流由记录的创建或更新触发。**

    当您通过 CSV 导入数据时，每个创建或更新的记录都可能触发工作流。 大规模导入（数千条记录）可能会：

    * 触及每小时 5,000 次运行的限制
    * 消耗大量工作流额度
    * 发送意外的电子邮件或通知
    * 创建重复的任务或记录

    **进行批量导入之前**：

    1. 进入**设置 → 工作流**
    2. 识别由您要导入的对象触发的工作流
    3. 暂时**停用**它们
    4. 执行您的 CSV 导入
    5. 完成后**重新启用**这些工作流

    **替代方案**：如果您需要这些工作流在导入的数据上运行，请以较小的批次导入以维持在速率限制内。
  </Accordion>

  <Accordion title="如何整理我的工作流布局？">
    如果您的工作流画布看起来很乱，节点散落各处，您可以自动整理：

    1. 在工作流画布的任意位置点击右键
    2. 点击**整理工作流**

    这将自动将所有节点重新排列为整洁有序的布局。
  </Accordion>
</AccordionGroup>
