# 草稿、发布与线上版本

Source: https://openflow.run/zh-cn/docs/concepts/versions/
Language: zh-CN
Product version: 0.1.0-beta.77

明确当前编辑、测试和生产运行分别使用哪份定义。

一个工作流有一个可以更新的**草稿指针**（Draft head），指向不可变的**修订版本**（Revision）。成功的**发布**（Publication）会固定一个修订版本用于生产运行，**Live** 则指向当前生效的生产发布版本。

## 草稿与修订版本

修改执行内容会创建新的修订版本，并更新草稿指针。提交修改时需要带上预期的修订版本和固定的请求标识，避免无提示覆盖，也避免响应不确定时重复提交同一次修改。

草稿可以保存为未完成状态。保存节点，不等于整条工作流已经通过校验或可以运行。

## 发布

发布会校验整张执行图，并准备所需的外部资源。所有准备步骤成功后，才会生成发布记录。准备过程中或准备失败时，原有 Live 继续生效。

发布期间或发布后编辑草稿，不会改动已发布的修订版本。

## 线上执行

自动触发器使用当前 Live 定义及与之对应的运行时绑定。显式调用 Live 运行时选择开始节点。系统接收运行时，会固定版本、输入、授权快照和执行范围。

禁用工作流会阻止新的生产运行，不会取消已经接收的运行。要停止已接收的任务，需要使用运行的取消接口。

## 历史与回滚

历史发布记录和运行记录保留各自固定的定义。回滚会创建一条新的发布记录，不会修改历史，也不会撤销外部影响或重置单独保存的工作流状态（Flow State）。

画布布局与执行内容分别管理版本，并随发布固定，供查看使用。详见[工作流与画布布局](https://openflow.run/zh-cn/docs/concepts/flows-and-nodes/index.md)。

## 资料来源

*   [docs/architecture.md](https://github.com/oomol-lab/open-flow/blob/e25a738d170322734572a0b8a1323cb00b9d355a/docs/architecture.md#flow-revision-and-presentation)
*   [docs/architecture.md](https://github.com/oomol-lab/open-flow/blob/e25a738d170322734572a0b8a1323cb00b9d355a/docs/architecture.md#publication-and-trigger)
*   [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)
