首页 > 解决方案 > RATIONAL DOORS DXL,将版本化链接从正式模块转移到另一个

问题描述

所以,我现在正在尝试制作一个正式的模块合并工具,到目前为止一切正常,除了链接复制。这是我们复制的方式

  1. 我们清空已经基线化的接收正式模块
  2. 我们复制具有正确层次结构的对象
  3. 然后我们应该复制链接

(是的,它更像是一个破坏和重建工具,而不是合并,但最终结果是一样的)

问题是,对于传入链接,我被告知链接的源对象不可访问,即使加载了正式模块,我也可以访问并使用它做任何我想做的事情。这是复制传入链接的代码

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" ""
                                    }
                                }
                            }

很抱歉,如果我已经在问一个以前被问过的问题,但我不知道为什么它不想工作,而且我已经尝试了很多解决方案。

标签: ibm-doors

解决方案


所以,经过更多的挖掘,我实际上找到了答案。我将在下面发布它以帮助需要这样做的人。

因此,首先,关于传入链接,无法访问链接的问题实际上是我恢复了基线对象,而不是当前版本对象,因此,我只能恢复信息,不能编辑对象(应该是这样!)。因此,解决方案应该是实际打开CURRENT模块,并通过比较键找到对象(我希望你有办法找回对象)。之后,我只是像以前一样继续,唯一的区别是我有当前对象,而不是它的基线对应物。

对于传出链接,事情有点棘手,我能够恢复我的目标模块名称,我无法在我的一生中从中加载对象。问题是,您必须实际打开基线模块,恢复基线对象,重新创建链接。为此,我像这样加载它(知道,我在此代码中迭代基线集,这就是 bs 变量)

Module temp = load(test,baseline(major bs, minor bs, suffix bs), true)

并像以前一样进行。现在脚本运行得很好,所以如果你需要精确的我这样做的方式,请随时在下面提问,我会尽我所能回答。


推荐阅读