Mark Hasenyager
Mark Hasenyager

Reputation: 31

DOORS DXL for changing Versioned Links to specific target baseline

I would like to be able to change the Baseline attribute for all outlinks from a source module. Does anyone know of some DXL code that could be used to do this?

There must be an easier way rather than manually deleting previous outlinks (i.e. ModuleVersion BL [1.20] and recreating outlinks to a specific new baseline (i.e. ModuleVersion BL [1.21]).

for outLink in all (Object srcObject) -> (string linkModName) do { ... targetVersion(outLink) ... }

Thanks for any help.

Upvotes: 3

Views: 2393

Answers (1)

Steve Valliere
Steve Valliere

Reputation: 1892

Here is the dxl way to do it:

Link ol
Object o
Object othero
Module m = current
string LinkModName = "FULLPATHTOLINKMODULE"
Module tMod
ModName_ tModName
ModuleVersion mv
Baseline b
int tAbs

  // Current Version of the Links
string cVersion = "1.20"

  // Target Major, Minor and Suffix
int tMajor = 1
int tMinor = 21
string tSuffix = ""

for o in m do
{
  for ol in all(o -> LinkModName) do
  {
    mv = targetVersion(ol)
    tModName = target(ol)
    tMod = read(fullName(tModName),false)
    if(isBaseline(mv))
    {
      if(versionString(mv) "" == cVersion)
      {
        if(!isBaseline(tMod))
        {
          b = baseline(tMajor,tMinor,tSuffix)
          if(baselineExists(tMod,b))
          {
            tMod = load(tMod, b, true)
          } else {
            ack "Baseline [" tMajor "." tMinor " " tSuffix "] was not found"
            halt
          }
        }
        tAbs = targetAbsNo(ol)
        othero = object(tAbs,tMod)
        if(!null othero)
        {
          o -> LinkModName -> othero
          delete ol
        }
      }
    }
  }
}
flushDeletions()
save m

Don't forget to insert the path to your link module and update the baseline information for the current and target if necessary.

You can omit the delete ol and flushDeletions() if you decide not to remove the old links.

Upvotes: 2

Related Questions