# 测试与发布

Source: https://openflow.run/zh-cn/docs/guides/test-and-publish/
Language: zh-CN
Product version: 0.1.0-beta.77

校验草稿、检查运行结果，再将固定版本用于生产运行。

草稿可以随时编辑，生产运行使用当前线上发布版本（Live）。测试和发布检查的内容不同，应分别根据操作结果判断是否可以继续。

## 校验执行图

运行工作流校验，检查缺失的绑定、无效 schema、不可用的输出及其他执行图问题。校验通过表示执行图符合所选引擎契约（Engine Contract）的确定性约束，并不代表外部账号、模型服务或回调地址已经可用。

完整校验和发布都会检查整张执行图。草稿运行只校验从所选触发器可达的范围及其依赖，其他未完成的分支不一定会阻止本次测试。

## 测试一个入口

选择要测试的触发器，提供有代表性的输入。打开生成的运行记录，查看实际选中的分支、节点输入、业务输出、待处理的等待节点和失败信息。

人工决定后，审批节点选择批准回复或退回修改的分支。

**输入**
待审批的回复为「Your replacement is ready to ship.」。

**预期结果**
批准后进入 Approved reply，拒绝后进入 Keep the draft。

**运行前准备**
导入或执行此案例需要 Open Flow 服务；预览本身可离线使用。

[下载工作流](https://openflow.run/docs/examples/approval-review.openflow.json)

这个审批案例中的分支会停下来，等待人工决定。预览无法提交审批结果；实际运行时，需要通过有权限的运行界面批准或拒绝待处理的审批。

## 发布版本

发布过程可能需要准备触发器订阅等外部资源。只有所有步骤都成功，系统才会切换 Live 并激活相关绑定。如果准备失败，原有线上版本继续生效。

此后编辑草稿，只会影响将来的草稿测试。已经接收的运行使用固定的修订版本、权限和输入，不受这些编辑影响。

## 启用自动执行

发布并启用工作流后，还要验证真实的自动入口，例如一次定时触发、HTTP 请求、轮询结果或应用事件。禁用工作流会阻止新的生产运行，不会取消已经接收的运行。

显式调用 Live 运行时使用开始节点作为入口。其他触发器通过各自的托管机制启动 Live 运行。草稿测试可以模拟任意触发器。

## 重试前检查失败原因

任务失败前，外部操作可能已经生效。`indeterminate` 表示无法确认执行结果。重复执行前，应先检查外部系统的实际状态。

回滚会创建一条指向旧定义的新发布记录，不会撤销外部操作，也不会改写已结束的运行。详见[错误与重试](https://openflow.run/zh-cn/docs/concepts/errors-and-retries/index.md)。

## 资料来源

*   [docs/architecture.md](https://github.com/oomol-lab/open-flow/blob/e25a738d170322734572a0b8a1323cb00b9d355a/docs/architecture.md#3-execution-publication-and-lifecycle)
*   [docs/control/contracts/control-api.md](https://github.com/oomol-lab/open-flow/blob/e25a738d170322734572a0b8a1323cb00b9d355a/docs/control/contracts/control-api.md#4-validation-publication-and-live)
