我在DOORS模块中创建了一个新的主要基准,然后运行了一个包含行的小型DXL脚本
Module mp = current
Baseline bp = getMostRecentBaseline(mp)
int majorVersion = major(bp)
int minorVersion = minor(bp)
print "major " majorVersion " minor " minorVersion "\n"
string suff = suffix(bp)
print "suffix " suff "\n"
bool bstat
bstat = isBaseline(mp)
print "bstat " bstat "\n"
ModuleVersion mv = moduleVersion(mp)
string basind = baselineIndex(mp)
print "baseline index " basind "\n"
bool otherbstat = baseline(mp)
print "otherstat " otherbstat "\n"
bool basv = isBaseline(mv)
print "version base " basv "\n"
所有这些都返回FALSE,表明该模块当前未设置基线。自基线以来,我尚未对任何属性进行任何编辑。我做了诸如创建新视图的事情。如果我运行IBM DXL宏以将最新基准与“当前”版本进行比较,则会报告差异为零。
所以我的问题是-各种isBaseline
函数所看到的是什么导致它们返回FALSE?或者,我是用错误的方式走的-我真正需要的是DXL代码的Q&D位,以检查自从建立上一个基准以来,是否未编辑我的模块的内容。
答案 0 :(得分:1)
主要问题是,当您的代码获取ModuleVersion(第11行)时,它使用函数的形式来获取模块的当前版本。第14行应调用 isBaseline ,而不是 baseline ,从而使最后两行变得多余。
有关 moduleVersion 功能的完整详细信息,请参见DXL参考手册的当前版本(9.6.1)的p310。
获得我认为您期望的结果的代码的最少修改版本如下:
Module mp = current
Baseline bp = getMostRecentBaseline(mp)
int majorVersion = major(bp)
int minorVersion = minor(bp)
print "major " majorVersion " minor " minorVersion "\n"
string suff = suffix(bp)
print "suffix " suff "\n"
bool bstat
bstat = isBaseline(mp)
print "bstat " bstat "\n"
ModuleVersion mv = moduleVersion(uniqueID(mp), bp)
string basind = baselineIndex(mp)
print "baseline index " basind "\n"
bool otherbstat = isBaseline(mv)
print "otherstat " otherbstat "\n"
bool basv = isBaseline(mv)
print "version base " basv "\n"
在以下版本中,为清楚起见,我将变量重命名,重新排列了一些行,并删除了一些不必要的内容:
Module modCurrent = current
Baseline blLatest = getMostRecentBaseline(modCurrent)
int iMajorVersion = major(blLatest)
int iMinorVersion = minor(blLatest)
string sBLSuffix = suffix(blLatest)
print "last baseline: major " iMajorVersion " minor " iMinorVersion " suffix " sBLSuffix "\n"
bool bIsBaseline = isBaseline(modCurrent)
print "bIsBaseline = " bIsBaseline "\n"
ModuleVersion mv = moduleVersion(uniqueID(modCurrent), blLatest)
Module modBaselined = load(mv, false)
string basind = baselineIndex(modBaselined)
print "baseline index = " basind "\n"
bIsBaseline = isBaseline(modBaselined)
print "bIsBaseline = " bIsBaseline "\n"
close(modBaselined)
答案 1 :(得分:0)
类似schedule_interval=timedelta(minutes=60),
catchup=False,
max_active_runs=1
的外观仅在将当前模块视图设置为显示选定的基线而不是“当前”工作视图时才返回TRUE。 isBaseline及其兄弟们不会查看模块内容,因此不会看到基准版本和当前工作视图之间的任何潜在差异。
我知道各种DXL工具会对内容执行“比较”,因此可以分别处理。如this question所述,默认的“比较”脚本有增强的版本,例如在this DOORS forum
上发布的脚本。