在DOORS里复制模块,真正容易出问题的地方,不是【Copy】这个动作本身,而是复制完成以后,大家默认以为链接也会原样跟过去。IBM官方文档把这件事说得很清楚,数据库资源确实可以在【Database Explorer】里通过剪切、复制、粘贴来处理,但模块复制和链接保留并不是一个简单的“全带走”逻辑,尤其是入链、链接模块和目标模块不一起复制时,结果最容易和预期不一样。
一、DOORS模块复制怎么操作
模块复制建议直接在数据库浏览器里做,不要先想着导出再导回。这样路径最短,也更接近官方定义的标准操作。
1、先在【Database Explorer】里选中目标模块
IBM文档说明,项目、文件夹和模块都可以在数据库浏览器里通过编辑菜单做复制粘贴。实际操作时,先选中要复制的模块,再执行【Edit】【Copy】。
2、再选目标文件夹或项目执行粘贴
选好目标位置后,再到目标文件夹或项目下执行【Edit】【Paste】。如果你只是要复制一个完整模块到新位置,这条路径就是最直接的做法。
3、如果只想复制模块结构,用【Paste Special】
官方单独给了【Paste Special】这条线,用来复制模块结构。它可以带过去对象标题、对象正文、层级结构、某个视图里的列,以及属性类型和属性定义,但不会复制基线,而且表格和软删除对象也不会被带过去。
4、复制前先检查命名和权限
IBM文档说明,项目名在整个数据库里必须唯一,而同一父项目或父文件夹下,项目、文件夹和模块名称不能重复;同时,目标位置还需要有创建权限。复制前把这两项先看清,能少走很多回头路。
二、DOORS模块复制后链接丢失怎么排查
链接看起来丢了,不一定真是数据没了,很多时候只是复制条件没满足。官方对“复制和移动如何影响链接”给了很明确的规则,排查时按这个顺序看最省时间。
1、先分清是入链丢了,还是出链丢了
IBM文档说明,复制包含链接的文件夹、项目、正式模块或描述模块时,出链会被复制;入链则只有在“链接另一端所在模块也一起被复制”时才会被复制。所以复制后如果发现追溯箭头少了一半,先不要笼统说“链接没了”,要先看丢的是哪一侧。
2、再看链接模块有没有一起带过去
官方规则里写得很清楚,如果出链使用的链接模块也被一起复制,那么新模块里的出链会使用复制出来的那个链接模块;如果链接模块没被复制,结果就要看它和原模块是不是同一个父项目或父文件夹。这个点最容易被忽略。
3、检查新位置和原位置是不是同一父级
如果原来的链接模块没有一起复制,而它与原模块属于同一个父项目或父文件夹,DOORS会在新位置创建一个同名链接模块,或者直接使用新位置里已经存在的同名链接模块;如果它们原本不在同一个父级,复制后的出链会继续使用原来的链接模块。也就是说,模块复制后链接行为会受目录层级影响,不是固定一种结果。
4、再排查是不是“本来就不会复制”的情况
IBM还特别说明,有些链接本来就不会被复制,例如使用了强制linkset pairing且该链接模块采用一对一映射时,链接不会被复制。遇到这种情况,问题不在复制动作本身,而在原始链接规则。
三、DOORS模块复制后怎么判断问题出在哪
复制后的链接异常,别一上来就重做。更稳的办法,是按“模块、另一端模块、链接模块”这三层去核对,这样通常很快就能定位。
1、先核对复制的是“模块”还是“模块结构”
如果你走的是【Paste Special】复制结构,那本来就不是完整模块复制,重点会放在标题、正文、层级和属性定义上,不该先拿它去对照原模块的完整链接状态。
2、再核对另一端模块有没有一起复制
官方规则已经说明,入链复制要以“另一端对象所在模块也一起复制”为前提。所以模块复制后若只剩出链、没有入链,先看另一端模块是不是还留在原位置,没有一起带过来。
3、最后核对链接模块落在什么位置
如果模块本体已经复制成功,但链接显示异常,就继续看链接模块是一起复制了、被复用为同名模块了,还是仍然指回原来的位置。把这层搞清以后,多数“链接丢失”其实都能解释清楚。
总结
DOORS模块复制怎么操作,标准做法就是在【Database Explorer】里选中模块,用【Edit】【Copy】和【Edit】【Paste】完成复制;如果只要结构,用【Paste Special】更合适。DOORS模块复制后链接丢失怎么排查,关键则是先区分入链和出链,再检查另一端模块和链接模块是否一起复制,以及它们与新旧父级的位置关系。顺着这条线去看,很多表面上的“链接丢失”,最后其实都能找到明确原因。
