ibm-doors - RATIONAL DOORS DXL,将版本化链接从正式模块转移到另一个
问题描述
所以,我现在正在尝试制作一个正式的模块合并工具,到目前为止一切正常,除了链接复制。这是我们复制的方式
- 我们清空已经基线化的接收正式模块
- 我们复制具有正确层次结构的对象
- 然后我们应该复制链接
(是的,它更像是一个破坏和重建工具,而不是合并,但最终结果是一样的)
问题是,对于传入链接,我被告知链接的源对象不可访问,即使加载了正式模块,我也可以访问并使用它做任何我想做的事情。这是复制传入链接的代码
for o in entire PRBaseline do
{
//Once current PBS has been emptied, start recovering objects from baseline
print "Inside Object : " o."IE PUID" "\n" ""
//Once current PBS is emptied & reconstructed to this PBS baseline, do links.
Link incomingLink
Link outLink
Object sourceObject
Object targetObject
for incomingLink in all(o <- "*") do //Iterate on all incoming baselined links, and load source module
{
ModName_ srcModRef = source(incomingLink)
Module temp = edit(fullName(srcModRef),true)
sourceObject = source(incomingLink)
Object oPRCurr
print name srcModRef
print sourceObject."IE PUID" ""
for oPRCurr in modOldPR do
{
print "Currently on Object : " oPRCurr."IE PUID" " and object : " o."IE PUID" "\n" ""
if (oPRCurr."IE PUID" "" == o."IE PUID" "")
{
createLinkset(fullName(srcModRef), fullName(modOldPR), "Test")
print sourceObject."IE PUID" "\n" ""
sourceObject -> "/Test_Access/Test" -> oPRCurr
print "Creating link between source object : " sourceObject."IE PUID" " & target object : " oPRCurr."IE PUID" " from" name srcModRef "\n" ""
}
}
}
}
至于传出链接,我什至无法恢复链接的目标对象,即使我已经在编辑模式下加载了目标模块
// Continuation of preceding code block
for outLink in all(o -> "*") do
{
ModName_ srcModRef = target(outLink)
print name srcModRef " est la cible \n" ""
Module temp = read(fullName(srcModRef),true)
targetObject = target(outLink)
Object oPRCurr
print name srcModRef
for oPRCurr in modOldPR do
{
print "Currently on Object : " oPRCurr."IE PUID" " and object : " o."IE PUID" "\n" ""
if (oPRCurr."IE PUID" "" == o."IE PUID" "")
{
createLinkset(fullName(srcModRef), fullName(modOldPR), "Test")
oPRCurr -> "/Test_Access/Test" -> targetObject
print "Creating link between target object : " " " " & source object : " oPRCurr."IE PUID" " from" name srcModRef "\n" ""
}
}
}
很抱歉,如果我已经在问一个以前被问过的问题,但我不知道为什么它不想工作,而且我已经尝试了很多解决方案。
解决方案
所以,经过更多的挖掘,我实际上找到了答案。我将在下面发布它以帮助需要这样做的人。
因此,首先,关于传入链接,无法访问链接的问题实际上是我恢复了基线对象,而不是当前版本对象,因此,我只能恢复信息,不能编辑对象(应该是这样!)。因此,解决方案应该是实际打开CURRENT模块,并通过比较键找到对象(我希望你有办法找回对象)。之后,我只是像以前一样继续,唯一的区别是我有当前对象,而不是它的基线对应物。
对于传出链接,事情有点棘手,我能够恢复我的目标模块名称,但我无法在我的一生中从中加载对象。问题是,您必须实际打开基线模块,恢复基线对象,重新创建链接。为此,我像这样加载它(知道,我在此代码中迭代基线集,这就是 bs 变量)
Module temp = load(test,baseline(major bs, minor bs, suffix bs), true)
并像以前一样进行。现在脚本运行得很好,所以如果你需要精确的我这样做的方式,请随时在下面提问,我会尽我所能回答。