# Structure Writer

> 把模块结构变成属性值（章节路径、文档风格的 ID 和排序号），一次处理所有工件。

Source: https://widgets.doorsnext.com/zh/widgets/structure-writer/

- 学科: 模块结构
- 适用于: IBM DOORS Next 模块
- 支持的产品: RM (IBM Engineering Requirements Management DOORS Next (Requirements Management))
- 更改数据
- Keywords: 层级路径属性, 章节路径, 节号属性, 格式化 ID, DOORS 9 ID 迁移, ID 前缀和后缀, 序号, 排序属性, 自动编号, 按模块顺序导出, IBM DOORS Next
- 版本: 1.16 (发布日期 2026-10-28)
- Vendor: SmarterProcess (https://doorsnext.com, info@smarterprocess.pl)
- 工作流程: 1. 在 Rules 中打开所需的值并选择目标属性 → 2. 打开模块，选择 Whole module 或 Selection → 3. Write 并确认：路径、ID 和编号 → 4. Excel 变更报告

## 它是什么，为何存在
在 DOORS Next 模块中，需求的位置（位于哪一章、编号是多少、在文档中的什么地方）只能在模块视图中看到。一旦工件出现在跨模块视图、导出、过滤器、报告或其他工具中，这种上下文就消失了。从 DOORS 9 迁移过来的团队也会怀念熟悉的文档 ID，例如“SRS-1234”。

Structure Writer 把结构复制到属性中，让它随工件一起流转。对于模块中的每个工件，它可以写入上级章节的路径（“1 引言 > 1.2 范围”）、由前缀、工件 ID 和后缀组成的格式化 ID（“SRS-001234-A”），以及按模块顺序递增、用于排序的编号。您可以选择需要三个值中的哪些，以及每个值写入哪个属性。

## 解决的问题
- 导出和跨模块视图会丢失需求所属的章节。
- 在模块之外无法按文档顺序对需求排序。
- 迁移后的项目需要带前缀的文档风格 ID，但手工输入既慢又容易出错。
- 旧的编号工具一次只修改一个工件，每一百个工件就要花几分钟。
- 移动或插入章节后，手工维护的路径和编号会悄无声息地出错。

## 优势
- **一次运行三个值：** 层级路径、格式化 ID 和序号，每个都可选，并各自写入自己的属性。
- **灵活的路径：** 每一级可显示为节号和名称、仅节号、仅名称、ID 或 ID 和名称，可自定义分隔符，可包含或不包含工件本身。
- **整个模块，速度快：** 没有 200 个工件的限制；结构只读取一次，数值分批保存。
- **先检查：**对于所选工件，Write 磁贴会显示有多少工件会改变，确认信息会说明将写入多少路径、ID 和编号；已正确的值绝不会再次保存。
- **始终正确：** 结构调整后再次运行即可，只更新发生变化的值。
- **留有证据：** Excel 变更报告列出每个值修改前后的内容。

## 使用方法
1. 在 **Rules** 中打开需要的值，并为每个值选择目标属性：层级路径（层级格式和分隔符）、格式化 ID（前缀、后缀、补零）和序号（起始值和步长）。
2. 如有需要，可将运行限定为一种工件类型、跳过标题，或只填写空的目标属性 (**Additional settings**)。
3. 打开模块，选择 **Whole module**（整个模块）并单击 **Write**（写入）：阅读确认信息并单击 **Write values**。值会一次性写入整个模块，只保存真正改变的值。
4. 也可以在模块中选中部分工件并选择 **Selection**（所选内容）：**Write** 磁贴会显示其中有多少会改变；单击 **Write** 并通过 **Write values** 确认。它们的路径和编号仍然来自整个模块。
5. 结果统计已写入、已正确、已跳过和保存失败的工件；如需记录，**Log**（日志）可保存变更报告。

## 须知
- 请始终在变更集中工作：默认情况下会覆盖现有值，因为这些值随结构而定。打开 “Only fill empty targets” 可保留手工输入的值。
- 属性值属于工件，而不是它在模块中的位置：在模块中使用两次的工件取其第一个位置的值；同时用于另一个模块的工件取最后一次运行该小部件的模块中的值。
- 顶层工件没有上级章节，因此只有在包含工件本身时才会得到路径。
- 序号只计算被写入的工件，按其在模块中出现的顺序编号。
- 对于非常大的模块，可以停止运行、重新加载页面，然后以相同设置从停止处继续。
