Lifecycle 生命周期
Lifecycle Map 定义了业务对象从创建到归档所经历的状态流转路径。版本控制(Versioning)则记录了对象在各状态下的历次修改,两者配合实现了完整的配置管理能力。
Lifecycle Map 基本概念
一个 Lifecycle Map 由以下元素组成:
| 元素 | 说明 |
|---|---|
| State(状态) | 业务阶段节点,一个 Item 在任意时刻只能处于一个状态 |
| Transition(转换) | 两个状态之间的连接线,表示允许的流转方向 |
| Start State(起始状态) | 新建 Item 时自动进入的状态 |
| Released State(发布状态) | 标记为 Released 的状态,Item 到达该状态后被标记为已发布 |
创建 Lifecycle Map
- 导航到 Administration → Life Cycle Maps
- 创建新 Map,填写 Name
- 在画布区域右键添加 State 节点
- 右键某个 State → Add Transition,拖拽到目标 State 完成连接
- 如果连线交叉影响可读性,右键 Transition → Add Break 添加拐点
State 配置项
| 配置项 | 说明 |
|---|---|
| Name | 状态名称 |
| Label | 显示标签,支持多语言 |
| Image | 状态图标 |
| Released | 勾选后,该状态为发布状态。处于此状态的 Item 被编辑时会触发版本升级(如果 ItemType 开启了版本控制) |
| Not Lockable | 勾选后,处于该状态的 Item 不可编辑(只读状态) |
| State Permission | 覆盖 ItemType 的默认权限,在该状态下应用指定的权限包 |
| Workflow | 状态激活时是否自动启动指定的 Workflow |
| History Template | 覆盖 ItemType 的历史记录模板 |
| Configure E-Mail | 状态激活时自动发送通知邮件 |
| Item Behavior | 该状态下关系的版本行为:Fixed / Float(优先于 RelationshipType 的 Behavior 设置) |
Transition 配置项
| 配置项 | 说明 |
|---|---|
| Role | 有权执行该流转的 Identity |
| Server Methods | 流转前后可触发的 Server Method(OnBefore / OnAfter) |
| Get Comment | 勾选后,用户执行流转时弹出对话框要求输入备注 |
| Configure E-Mail | 流转发生时自动发送通知邮件 |
绑定 Lifecycle Map 到 ItemType
- 打开 ItemType 编辑 → Life Cycles 标签页
- 点击 Add,选择目标 Lifecycle Map
- 如果 ItemType 配置了 Classification,不同分类可以绑定不同的 Lifecycle Map
Lifecycle 状态下拉仅显示通过 Transition 连接的下一状态
用户不能跳过中间状态直接到达后续状态,所有流转必须遵循 Map 中定义的路径。
状态权限(State Permission)
每个 Lifecycle 状态可以配置独立的权限包,实现在不同业务阶段自动切换访问控制策略:
Lifecycle: Design Request
├── Draft → Permission: "Design Request" (Owner 可编辑)
├── In Review → Permission: "Review Request" (Owner 只读,Engineering 可编辑)
└── Released → Permission: "Released Request" (所有人只读)如果某个状态没有配置 State Permission,则沿用前一个状态的权限。State Permission 必须在 ItemType 的 Permissions 标签页中也被列为可选权限才能生效。
版本控制
版本维度
| 属性 | 说明 |
|---|---|
| generation | 系统自动管理的整数代次,每次 Edit → Done 后自动递增 |
| major_rev | 主修订版本号,从 Revision 序列中读取(如 A → B → C) |
| minor_rev | 次修订版本号,保留字段,供自定义开发使用 |
| config_id | 跨版本共享的配置 ID,所有代次的同一 Item 都保持一致,用于追溯历史 |
| is_current | 是否为最新代次 |
| is_released | 是否处于发布状态 |
开启版本控制
在 ItemType 上设置:
| 配置项 | 说明 |
|---|---|
| Versionable | 勾选以启用版本控制 |
| Discipline | Automatic(每次编辑自动升版)或 Manual(用户手动触发升版) |
| Revisions | 关联的 Revision 序列,决定 major_rev 的值 |
Revision 序列
通过 Administration → Revisions 创建,定义版本号的取值序列。序列中的值用空格分隔,按顺序读取:
A B C D E F G H J K L M N P Q R S T U V W X Y Z跳过易混淆字母
通常跳过 I 和 O,避免与数字 1 和 0 混淆。如果序列用尽,系统会报错提示 revision sequence exceeded,需要提前评估业务量并预留足够的序列长度。
版本升级触发规则
当 Item 处于标记为 Released 的状态时:
- 执行 Edit → Done 后,
major_rev递增(如从 A 升到 B) - Lifecycle 自动重置回 Start State
generation递增
关系的版本行为
当源 Item 和关联 Item 都有版本控制时,需要决定关系指向哪个版本。这个行为可以在三个层级配置,优先级从高到低为:
- Lifecycle State 的 Item Behavior(最高优先级)
- RelationshipType 的 Behavior 字段
- Relationship Item 上的 behavior 属性(实例级)
行为类型
| 行为 | 说明 |
|---|---|
| Fixed | 关系固定指向添加时的那个版本,关联 Item 升版后,源 Item 仍指向旧版本 |
| Float | 关系始终指向关联 Item 的最新版本 |
| Hard Fixed | 不可变的 Fixed,即使 Lifecycle 状态切换也不会改变 |
| Hard Float | 不可变的 Float,即使 Lifecycle 状态切换也不会改变 |
典型配置策略
Lifecycle States:
├── Draft → Float(开发阶段,始终关联最新文档)
├── In Review → Fixed(评审阶段,锁定当前版本)
└── Released → Fixed(发布后,保持已验证的版本)查看版本历史
打开任意 Item → Navigate → Versions,可以查看该 Item 的所有历史版本。右键某个版本标签 → Dock Tab,可以将新旧版本并排对比显示。
