IBM Doors DXL: Save global properties (key/value-pairs) in Module / Globale Einstellungen in Modul speichern

Problem

In manchen Fällen ist es notwendig globale Einstellungen zu speichern und zu lesen.

Ansatz – Approach

Für diese Zwecke nutze ich ein Include-File, welches einfach mit dem #include Befehl eingebunden werden kann

Vorraussetzungen – Prerequirements

Das Modul /Project/Properties mit den Attributen BB_Key und BB_Value muss bereits angelegt worden sein.

Lösung – Solution

Die Datei setProperty.dxl….

/************************************************
 * Author: Bjoern Karpenstein
 * Date:   2015-08-05
 *
 * Description:
 * This module stores key/value pairs in 
 * a module (i.e. for publishing)
 *
 * Prerequirements:
 * Module has to be created before and hast to have 
 * the BB_Key / BB_Value attributes
 * The path has to be customized when using it for 
 * Different projects
 *************************************************/
string propertiesModulePath="/Project/Properties";

Module oldCurrentModule = current;
Module propertiesModule = null;
current=oldCurrentModule;

Object propObject;

string getValue(string theKey)
{
	propertiesModule = read(propertiesModulePath, false);
	for propObject in propertiesModule do
	{
		if(propObject."BB_Key" "" == theKey)
		{
			return propObject."BB_Value" "";
		}
	}
	propObject=null;
	close(propertiesModule);
	return "n/a";
}

void setValue(string theKey, theValue)
{
	string checkIfExists=getValue(theKey);
		
	propertiesModule = edit(propertiesModulePath, false);
	
	if(!canCreate(propertiesModule))
	{
		ack "Permission for Module: " propertiesModulePath;
		halt;
	}
	
	if(checkIfExists != "n/a" && !null propObject)
	{
		propObject."BB_Key" = theKey;
		propObject."BB_Value" = theValue;
	}
	else
	{
		Object newObject = create(propertiesModule);
		newObject."BB_Key" = theKey;
		newObject."BB_Value" = theValue;
	}
	
	save(propertiesModule);
	close(propertiesModule);
}

inkludiere ich anschließen im Kopf des Hauptprogramms mit

#include "path/setProperties.dxl"

und rufe die Methoden

void setValue(string theKey, theValue) - Bsp. setValue("Administrator", "Björn Karpenstein");
string getValue(string theKey) - Bsp. string adminName=getValue("Administrator");

auf.