我编写了一个从批处理文件运行的 DXL 脚本,它接收一个模块路径、一个基线和一个视图。批处理命令打开 IBM Doors 9.6 后,脚本应该转到具有相关视图的模块路径并加载输入的基线。
我的问题是我的脚本加载了current基线而不是我输入的基线。
我找不到加载正确基线的当前命令。
这是我的脚本:
mod = #MODULE#
xi_baseline = #BASELINE#
string mView = #VIEW#
Module m
int indexOf(string source, char c)
{
int i = 0
for (i = 0; i < length(source); i++)
{
if(source[i] == c)
{
return i
}
}
return -1
}
int pos = indexOf(xi_baseline,'.')
string bsMajor = xi_baseline[0:pos - 1] "\n"
string bsMinor = xi_baseline[pos + 1:]
Baseline b = baseline(intOf(bsMajor), intOf(bsMinor), "")
m = read(mod)
load view mView
我需要的正确基线保存在 b 变量中,我的问题是我需要使用什么正确的命令/函数才能从门接收该基线?
您将需要一个中间 ModName_ 和一个 ModuleVersion。
假设您的输入参数是模块的全名和以以下格式给出的基线versionString
呈现它,假设您的基线可能足够,您的代码可能如下所示:
Module loadBaseline (string sFullName, string sBaseline. bool shallDisplay) {
// baselines must begin with digits <major> followed by a dot, followed by digits <minor>.
// If the baseline has a suffix, it is given inside brackets (<suffix>)
Regexp reBL = regexp2 "^([0-9]+)\\.([0-9]+) ?\\(?([^)]*)\\)"
if (!reBL sBaseline) {
return null Module
}
int iMajor = intOf realOf sBaseline[match 1]
int iMinor = intOf realOf sBaseline[match 2]
string sSuffix = sBaseline[match 3]
ModName_ mn = module (sFullName)
if (null mn) {
return null Module
}
Baseline b = baseline (iMajor, iMinor, sSuffix)
ModuleVersion mv = moduleVersion (mn, b)
Module m = load (mv, shallDisplay)
return m
}
string sFullName = "/full/path/to/module/including/name"
string sBaseline = "1.26 (QS)"
Module m = loadBaseline (sFullName, sBaseline, true)
if (!load (m, view (mView), false)) then error "could not load view of module " sFullName
Edit2:加载视图时使用了错误的参数。脚本现在应该是正确的(未经测试)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)