在DOORS里批量改对象属性,看起来只是多选后改一遍,实际最容易出问题的地方有两层。第一层是批改本身没有真正落到对象上,比如模块没开独占编辑、对象或属性没有修改权限,或者改完还停留在未提交状态。第二层是值其实已经改了,但当前显示列没有马上更新,尤其是DXL属性列和layout DXL列,这时肉眼看起来就像没刷新。IBM官方文档对这几步写得很清楚,批量改属性要走对象属性表,模块还必须以exclusive edit mode打开,而显示刷新则要区分普通属性、DXL属性和layout DXL列分别处理。
一、DOORS怎么批量修改对象属性
批量修改对象属性,最稳的入口不是在单元格里一个个双击,而是直接走对象属性表。这个入口本来就是给多对象批改准备的,而且还支持把改动一次性应用到当前对象、已选对象或当前视图中的全部对象。
1、先确认模块是独占编辑模式
IBM官方说明里,想编辑属性值,模块必须以exclusive edit mode打开,而且你还要同时拥有对象和属性值的modify权限。前面这一步没满足,后面就算能打开属性表,也很容易看到只读图标或者改完无法真正写回。
2、选中对象后用【Properties】进入批改窗口
在模块窗口里先选中一个对象、多个对象,或者先整理好当前视图,然后右击【Properties】。官方文档说明,这个属性表就是用来编辑属性,或者一次性修改多个对象属性值的;如果你的目标是整批对象统一改某个字段,就不要继续用单元格逐条改。
3、到【Attributes】页改目标属性
进入属性表后,先切到【Attributes】页,再选中目标属性并点【View/Edit】。这里会显示当前对象能用的全部对象属性,左侧若有只读标记,说明当前属性不可改。真正要批量填值时,也是在这一层处理,不要停留在【General】页只改标题或正文。
4、把应用范围选对
这一步特别关键。官方说明里,属性值改完以后,还要明确选择【Current object】、【Selected objects】或【Objects in current view】。如果你本来想批量改整批对象,却误留在Current object,最后就会出现“明明批改了却只有一条生效”的情况。
5、多值枚举属性别直接硬覆盖
如果改的是multi-valued enumerated attribute,IBM官方还提供了【Add checked values】和【Remove unchecked values】来控制批量更新方式。也就是说,这类属性不是只有整体替换一种做法,批改前先把追加和移除逻辑想清楚,结果会更稳。
二、DOORS对象属性批改后未刷新怎么解决
批改后看起来没刷新,不要先急着重做一遍。更常见的情况是值已经改了,但当前编辑还没提交,或者显示列本身不是普通属性列,所以不会像普通文本那样立刻同步。IBM官方文档里,这几种情况的处理方式是分开的。
1、先确认改动已经提交并保存
如果你是在模块窗口里直接编辑属性,官方说明里要用Ctrl+M接受当前编辑,或者点到别的对象和属性上让当前修改落下去;对象有未保存改动时还会出现红色change bar,最后还要再按Ctrl+S保存。很多“没刷新”的情况,其实只是还停在Unsaved状态。
2、如果显示的是DXL属性列,就用【Tools】→【Refresh DXL Attributes】
IBM官方明确说明,DXL属性的值是在对象首次显示时自动计算的;如果你改了基础属性,想让DXL属性重新按新值计算,必须执行【Tools】→【Refresh DXL Attributes】。所以批改后如果普通属性已经变了,但DXL结果列还是旧值,这一步通常就是关键动作。
3、如果显示的是layout DXL列,要检查自动刷新和刷新间隔
layout DXL列和DXL属性不一样。官方说明里,它会在DOORS刷新屏幕时自动重算,但列头【Properties】里可以关闭【Automatic Refresh】或者调整【Refresh Delta】秒数。若这个列自动刷新被关掉,或者刷新间隔设得太长,批改后看起来就会像没有更新。
4、先分清是值没改到,还是列没重算
这一步能省很多时间。更稳的做法是先用对象属性表回看一下目标对象的真实属性值,若属性表里已经是新值,问题通常不在批改本身,而在显示列没有重算;若属性表里还是旧值,就回头查应用范围、编辑模式和保存动作。这样排查会比盲目重复修改更快。
三、DOORS批改结果为什么总是看起来不一致
很多人觉得DOORS批改不稳定,实际更多是显示层和数据层没分开看。普通属性、DXL属性、layout DXL列虽然都能出现在模块里,但它们的更新时机本来就不一样,所以只凭模块窗口肉眼看一眼,很容易误判。
1、普通属性优先看对象属性表
普通属性是否改成功,最直接的判断标准不是当前列颜色或布局,而是回到对象属性表看真实值。因为对象属性表展示的是属性本身,不依赖额外DXL计算,所以它更适合拿来做第一层确认。
2、DXL属性要按“重算”思路看
只要某列背后是DXL attribute,它就不是普通存储值,而是程序算出来的显示结果。IBM官方已经说明,这类值要通过【Tools】→【Refresh DXL Attributes】重算,所以这类列的“刷新”本质上是重新执行DXL。
3、layout DXL列要按“屏幕刷新”思路看
layout DXL列不是属性定义,它只是一个带DXL程序的显示列。官方说明里,这类列跟着屏幕刷新自动重算,但也可能因为自动刷新关闭或Refresh Delta设定而延后更新,所以它更像显示逻辑,不像数据本体。
4、批改前后最好固定用同一视图复核
如果你一边改属性,一边又在切换不同视图或列布局,判断会更容易乱。更稳的做法是先在一个固定视图里完成批改,再在同一视图下检查普通属性列、DXL属性列和layout DXL列的表现,这样更容易区分到底是哪一层没有同步。这个判断方法是基于IBM对不同列刷新机制的区分得出的。
总结
DOORS怎么批量修改对象属性,关键是先用独占编辑模式打开模块,再通过对象属性表把修改应用到当前对象、已选对象或当前视图。DOORS对象属性批改后未刷新怎么解决,关键则是先确认修改是否已经提交和保存,再分清当前看到的是普通属性、DXL属性还是layout DXL列;普通属性先看真实值,DXL属性用【Tools】→【Refresh DXL Attributes】,layout DXL列则去检查自动刷新和刷新间隔。把这几层分清之后,大多数“批改后没刷新”的问题都能很快定位。
