---
url: https://docs.ogmabox.com/zh/app/workflows.md
description: 构建可复用的 Ogma 工作流，用于被动处理、主动操作和数据转换。
---

# 工作流 {#workflows}

工作流是可复用的自动化处理流水线，用于处理捕获的流量、运行主动步骤或转换数据，无需编写独立脚本。

## 工作流类型 {#workflow-types}

| 类型 | 触发方式 | 常见用途 |
|------|-------------|------------|
| 被动 | 新捕获的流量 | 标记值得关注的模式、为请求添加标签、自动创建安全发现。 |
| 主动 | 手动运行 | 发送后续请求、串联操作、执行多步骤测试。 |
| 转换 | 测试输入、转换操作或匹配与替换 | 转换文本或字节，例如格式化 JavaScript 或规范化 JSON。 |

被动工作流在后台持续运行。主动工作流按需针对选定的请求集合运行。

## 工作流画布 {#the-workflow-canvas}

打开**工作流**并选择一个工作流，打开其画布。

* 节点显示在中央面板中。每个节点都有带类型的输入和输出端口。
* 在输出端口和输入端口之间点击并拖动，即可连接它们。
* 点击节点，在右侧打开其配置面板。
* 顶部工具栏包含运行、启用/禁用及导入/导出控件。

## 节点类型 {#node-types}

| 节点 | 说明 |
|------|-------------|
| 开始 / 结束 | 适用于被动、主动或转换工作流类型的入口和出口节点。 |
| 条件 | 条件分支、JavaScript 条件分支、HTTPQL 匹配、测试范围匹配、字符串包含和正则匹配。 |
| 编码 | Base64、URL、十六进制和 HTML 编码/解码。 |
| 格式化和哈希 | JSON 压缩/格式化、MD5、SHA-1 和 SHA-256。 |
| 文本操作 | 去除首尾空白、连接、拆分、匹配与替换、JQ 转换和 Grep 提取。 |
| JavaScript | 使用工作流 SDK 实现自定义逻辑；可以读取流量、操作文件和创建安全发现。 |
| 集成 | 记录日志、Webhook、调用工作流、发送请求和匹配与替换规则。 |

实际端口和配置请查看节点面板。点击连线即可操作该连接，无需删除节点来重新连接图。使用**保存**或 **Ctrl+S**（macOS 上为 Command+S）保存。

## 共享和作用域 {#sharing-and-scope}

工作流默认在同一工作区的各项目之间共享。启用**仅当前项目**，可将定义保留在其项目内。共享定义并不意味着各项目的流量、结果或笔记都变成共享内容。迁移到其他工作区或安装时，请导出/导入工作流 JSON。

## 实时使用前的测试 {#testing-before-live-use}

被动和主动工作流提供 **HTTP 测试**区域，包含 URL、原始请求和原始响应测试数据。启用工作流，填写这些字段，然后点击**测试工作流**。测试会在执行前保存编辑。离开页面再返回时，每个工作流的测试数据值仍会保留。

转换工作流则提供**测试输入**和输出。先使用小型代表性输入，再测试接近实际大小的资源。测试数据不会让任意 JavaScript 或发送请求节点变得无害：工作流代码仍然可以执行其配置的操作。

### JavaScript 和文件 {#javascript-and-files}

工作流 JavaScript 支持 Ogma SDK 和兼容的 `fs`/`path` 导入。使用 `sdk.fs.readFile`、`writeFile`、`appendFile`、`exists`、`readDir`、`mkdir` 和 `unlink` 执行文件操作，使用 `sdk.path` 处理平台相关路径。这些是 Ogma 辅助 API，并非整个 Node.js 标准库。

对于资源导出器，读取 `response.getBody().toText()`，通过 `sdk.path.join` 选择目标位置，创建其父目录；如果不想覆盖现有文件，请检查 `sdk.fs.exists`。执行前请检查文件系统路径：工作流文件系统辅助 API 在 Ogma 主机上运行，不同于插件的私有目录 `sdk.fs`。该独立运行时请参阅[插件 SDK](../plugins/README.md#sdk-fs)。

## 导入工作流 {#importing-a-workflow}

1. 在工作流工具栏中点击**导入**。
2. 选择 JSON 工作流文件。
3. 工作流会在画布中打开。启用前请验证节点配置。
4. 保存工作流。

导出的工作流 JSON 文件可以在不同 Ogma 安装之间共享，或存储在版本控制中。

## 对捕获历史记录运行工作流 {#running-a-workflow-on-captured-history}

主动工作流可以针对先前捕获的请求重新运行。

1. 打开工作流。
2. 点击**对历史记录运行**。
3. 在扫描历史记录对话框中，输入可选的 HTTPQL 筛选条件，限制工作流处理的请求。
4. 点击**运行**。

检查匹配数量并启动任务。进度和错误会显示在扫描任务中；启用日志时，也会显示在其运行历史中。被动工作流提供**扫描历史记录**和**对请求重新运行**，用于回溯处理。

对于少量值得关注的资源，在 HTTP 历史记录中选择一行或多行，右键单击，选择**发送到工作流**，然后选择已启用的主动工作流。这会将选中的条目提供给它，而不改变其定义，也不处理整个历史记录。

扫描历史记录筛选输入旁的 **AI**按钮可根据自然语言描述生成 HTTPQL 表达式。

## 工作流运行和结果 {#workflow-runs-and-results}

需要执行详情时，在工作流配置中开启**启用日志记录**。它适用于被动、主动和转换工作流，包括匹配与替换转换。禁用时，处理仍会运行，但不会添加运行/步骤日志；诊断问题时，请重新启用并重复测试。

* 点击一次运行，查看各节点的步骤输出。
* 产生错误的节点会被高亮显示。
* 运行中创建的安全发现会显示在[安全发现](./findings.md)视图中。
* 运行中提取的变量可在步骤详情面板中查看。

**全部清除**会移除所选工作流存储的运行历史。如果需要保留调试证据，请在清除前下载日志。日志可能存储完整脚本体等大型输出，因此除非需要，否则请在高频转换时保持关闭。

## 启用被动工作流 {#enabling-a-passive-workflow}

1. 打开工作流。
2. 验证画布配置完整（没有未连接的必需端口）。
3. 切换工具栏中的**启用**。

已启用的被动工作流会自动处理新流量。禁用工作流可暂停它，而无需删除。

## 相关页面 {#related-pages}

* [安全发现](./findings.md)
* [环境](./environment.md)
* [HTTPQL 与 StreamQL](../reference/httpql.md)
