为什么DOORS`isBaseline`总是返回FALSE?

时间:2018-08-30 16:02:28

标签: versioning ibm-doors baseline

我在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位,以检查自从建立上一个基准以来,是否未编辑我的模块的内容。

2 个答案:

答案 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

上发布的脚本。