RATIONAL DOORS DXL, перевод версионной ссылки из формального модуля в другой - PullRequest
0 голосов
/ 17 октября 2019

Итак, я пытаюсь сделать формальный инструмент для слияния модулей прямо сейчас, и пока все работает, кроме копирования ссылок. Вот как мы копируем

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

Извините, если я уже задаю вопрос, который задавался ранее, но я не могу понять, почему он не хочет работать, и я уже попробовал много решений.

1 Ответ

0 голосов
/ 18 октября 2019

Итак, я действительно нашел ответ после гораздо большего количества копаний. Я опубликую это ниже, чтобы помочь людям, которые должны это сделать.

Итак, прежде всего, в отношении входящих ссылок проблема, связанная с отсутствием доступа к ссылке, заключалась в том, что я восстановил базовый объект, а неТаким образом, объект текущей версии, таким образом, мне удалось восстановить только информацию, но не редактировать объект (как и должно быть!). Поэтому решение должно заключаться в том, чтобы фактически открыть модуль CURRENT и найти объект с помощью ключа сравнения (я надеюсь, у вас есть способ найти объект обратно). После этого я продолжаю, как и раньше, с той лишь разницей, что у меня есть текущий объект, а не его базовый аналог.

Для исходящих ссылок вопрос был немного сложнее, я смог восстановить свою цельимя модуля НО Я не мог загрузить объекты из него на всю жизнь. Проблема заключалась в том, что вам нужно было на самом деле открыть базовый модуль, чтобы восстановить базовый объект, чтобы воссоздать ссылку. Для этого я загрузил его следующим образом (знайте, что в этом коде я выполняю итерации по базовым наборам, это и есть переменная bs)

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

и продолжил, как и раньше. Теперь сценарии работают очень хорошо, поэтому, если вам нужна точность в том, как я это делаю, не стесняйтесь спрашивать ниже, я отвечу в меру своих возможностей.

...