RATIONAL DOORS DXL,将版本化 link 从正式模块转移到另一个

RATIONAL DOORS DXL, transfering a versioned link from a formal module to an other

所以,我现在正在尝试制作一个正式的模块合并工具,到目前为止一切正常,除了 link 副本。下面是我们如何复制

  1. 我们清空已经基线化的接收正式模块
  2. 我们复制具有正确层次结构的对象
  3. 那我们应该复制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)

并像以前一样进行。现在脚本运行良好,所以如果您需要我执行此操作的精确方式,请随时在下面提问,我会尽我所能回答。