IBM Doors DXL: Remove all Triggers from a module

Problem

All triggers, that are on a module, shall be deleted.

Approach – Ansatz

  • Iterate trough all module triggers
  • Delete trigger by using trigger reference

Lösung – Solution

void removeAllTriggersOnModule(Module mod)
{
	Module oldCurrent = current;
	current=mod;
	
	  Trigger t;
	  for t in mod do 
	  {
		string triggerName=name(t) "";
		if( !matches("specific", triggerName) )
		{
			delete t;
		}
	  }
	
	current=oldCurrent;	
}

IBM Doors DXL: Check if Module/Object DataType or Attribute exists

Problem

The existence of DataTypes or Attributes shall be checked

Approach – Ansatz

  • The first function uses the find-function to check for attributes
  • The second uses a loop to check for datatypes

Solution – Lösung

bool attributeExists(Module tgt, string attributeName)
{
	AttrDef ad = find(tgt, attributeName) 
	
	if(null ad)
	{
		return false;
	}
	else
	{
		return true;
	}		
	return false;
}

// This example is done in a different way but works
// here for DataTypes (instead the find function can be used)
bool dataTypeExists(Module tgt, string dataTypeName)
{
	AttrType at;
	
	for at in tgt do 
	{
		if(at.name == dataTypeName)
		{
			return true;
		}
	}	
	
	return false;
}

IBM Doors DXL: Rename Module/Object DataType or Attribute

Problem

The name of a DataType or an attribute shall be changed.

Ansatz – Approach

The modify function can be used to rename the functions

Solution – Lösung

void renameDataType(Module mod, string oldString, string newString)
{
	AttrType at = find(mod, oldString);

	if(null at)
	{
		print(name(mod) ": RENAME-" oldString " existiert nicht";
	}
	string ErrMess = ""
	modify (at, newString, ErrMess)
}

void renameAttribute(Module mod, string oldString, string newString)
{
	AttrDef ad = find(mod, oldString);

	if(null ad)
	{
		print(name(mod) ": RENAME-" oldString " existiert nicht");
	}
	string ErrMess = "";
	AttrDef adNew = modify(ad, setName, newString) 
}

IBM Doors DXL: Rename/Replace Enumeration Value of a DataType – Enumerationswert ändern

Problem

An existing enumeration value should be renamed or replaced

Approach – Ansatz

We have to iterate through the Type-Array and repopulate new arrays, which will be used as parameters for the modify function

Solution – Lösung

//This program was intended to replace the values of an enumerated attribute
//The replace will not affect the current selected values, it will just change the value to the new one
 
pragma runLim, 0
 
void replaceAttributeTypeValue(Module m, string atName, string oldVal, string newVal){
    AttrType att = find(m, atName)
        //Declare Arrays Size
        int colores[att.size]
        int arrMap[att.size]
        string arr[att.size]
        int arrVal[att.size]
        
        int i
        //Populate Arrays
        for(i = 0; i < att.size; i++){ 
                arr[i] = att.strings[i]
                arrVal[i] = i
                colores[i] = -1
                arrMap[i] = i
        }
        //
        for(i = 0; i < sizeof(arr); i++){ 
                if(arr[i] == oldVal){
                        arr[i] = newVal
                }
        }
 
        string err = null
        AttrType at2 = modify(att, atName, arr, arrVal, colores, arrMap, err)
        if(!null err){
                print "Failed: " err"\n"
        }
        else{
                infoBox at2.name " - Modified Successfully"
        }
}

IBM Doors DXL: Folder- or Formal Module Browser/Picker (based on smartdxl.de)

Problem

The Mini Explorer Script from SmartDXL.de allows to create a Browse/Select Dialoges on a project and select Modules.
It can be customized dependend on the requested item type.

Approach

Customization of the script

Solution – Lösung

This Mini Explorer Version is only for Module selection.
MiniExplorerModuleSelection

This Mini Explorer Version is only for Folder selection.
MiniExplorerFolderSelection