3

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.

  • Yes this can be done with DXL, however I am curious as to why you would remove the links to the previous baseline. Wouldn't you want them to be maintained and just create new links to the 1.21 baseline? – Steve Valliere Feb 27 '13 at 12:31

1 Answers1

2

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.

Steve Valliere
  • 1,882
  • 12
  • 31