RATIONAL DOORS DXL,将版本化 link 从正式模块转移到另一个
RATIONAL DOORS DXL, transfering a versioned link from a formal module to an other
所以,我现在正在尝试制作一个正式的模块合并工具,到目前为止一切正常,除了 link 副本。下面是我们如何复制
- 我们清空已经基线化的接收正式模块
- 我们复制具有正确层次结构的对象
- 那我们应该复制links
(是的,它更像是一个破坏和重建工具,而不是合并,但最终结果仍然是一样的)
问题是,对于传入的 links,我被告知 link 的源对象是不可访问的,即使加载了正式模块,我也可以访问并执行任何操作我想要它。这是复制传入链接的代码
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" ""
}
}
}
}
至于传出的 links 我什至无法恢复 link 的目标对象,即使我已经在编辑模式下加载了目标模块
// 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" ""
}
}
}
很抱歉,如果我已经问了一个以前被问过的问题,但我无法弄清楚为什么它不想工作,而且我已经尝试了很多解决方案。
所以,经过大量的挖掘,我实际上找到了答案。我将在下面 post 帮助需要这样做的人。
所以,首先,关于传入的 link,无法访问 link 的问题实际上是我恢复了基线对象,而不是当前版本对象,就像那样,因此我只能恢复信息,而不能编辑对象(应该如此!)。因此解决方案应该是实际打开 CURRENT 模块,并通过比较键找到对象(我希望你有办法找到对象)。之后,我只是像以前一样继续,唯一的区别是我有当前对象,而不是它的基线对象。
对于传出的 links,事情有点棘手,我能够恢复我的目标模块名称 但是 我无法从中加载对象我的生活。问题是,您必须实际打开基线模块,恢复基线对象,重新创建 link。为此,我像这样加载它(知道,我在这段代码中迭代基线集,这就是 bs 变量)
Module temp = load(test,baseline(major bs, minor bs, suffix bs), true)
并像以前一样进行。现在脚本运行良好,所以如果您需要我执行此操作的精确方式,请随时在下面提问,我会尽我所能回答。
所以,我现在正在尝试制作一个正式的模块合并工具,到目前为止一切正常,除了 link 副本。下面是我们如何复制
- 我们清空已经基线化的接收正式模块
- 我们复制具有正确层次结构的对象
- 那我们应该复制links
(是的,它更像是一个破坏和重建工具,而不是合并,但最终结果仍然是一样的)
问题是,对于传入的 links,我被告知 link 的源对象是不可访问的,即使加载了正式模块,我也可以访问并执行任何操作我想要它。这是复制传入链接的代码
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" ""
}
}
}
}
至于传出的 links 我什至无法恢复 link 的目标对象,即使我已经在编辑模式下加载了目标模块
// 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" ""
}
}
}
很抱歉,如果我已经问了一个以前被问过的问题,但我无法弄清楚为什么它不想工作,而且我已经尝试了很多解决方案。
所以,经过大量的挖掘,我实际上找到了答案。我将在下面 post 帮助需要这样做的人。
所以,首先,关于传入的 link,无法访问 link 的问题实际上是我恢复了基线对象,而不是当前版本对象,就像那样,因此我只能恢复信息,而不能编辑对象(应该如此!)。因此解决方案应该是实际打开 CURRENT 模块,并通过比较键找到对象(我希望你有办法找到对象)。之后,我只是像以前一样继续,唯一的区别是我有当前对象,而不是它的基线对象。
对于传出的 links,事情有点棘手,我能够恢复我的目标模块名称 但是 我无法从中加载对象我的生活。问题是,您必须实际打开基线模块,恢复基线对象,重新创建 link。为此,我像这样加载它(知道,我在这段代码中迭代基线集,这就是 bs 变量)
Module temp = load(test,baseline(major bs, minor bs, suffix bs), true)
并像以前一样进行。现在脚本运行良好,所以如果您需要我执行此操作的精确方式,请随时在下面提问,我会尽我所能回答。