1. Anwendung
Bei den globalen Makros macht man sich die Eigenschaft zu nutzen, dass in der CXP-Datei definierte Makros und Variablen im kompletten ClassiX® System bekannt sind. Um die CXP-Datei dennoch übersichtlich zu halten, werden die Makros trotzdem in extra Modulen (derzeit nur ivFunction.mod) definiert und über eine Include-Anweisung eingebunden.
Sollten globale Makros kundenspezifisch angepasst werden, so kommt
man derzeit nicht drum herum das komplette Modul kopiert und angepasst in das
AppsWH Kundenverzeichnis zu stellen und die CXP-Datei bezüglich der
Include-Anweisung anzupassen. Standardänderungen am Modul müssen dann immer
doppelt vorgenommen werden.
Dieser Schritt ist nötig, da die "globalen" Module nicht abgeleitet
werden können.
// -----------------------------------------------------------------------------
// -- global functions ---------------------------------------------------------
#include ?ivFunctions_sa.mod?
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
Globale Makros sollten Anwendung finden, wenn eine Funktionalität an
mehreren Stellen in ClassiX® verwendet wird, welche an der Oberfläche nichts verändert
und keine Benutzerinteraktion aufruft. In diesem Fall macht es Sinn die
Funktionalität zu kapseln.
Alternativ zu den globalen Makros könnte man die Funktion auch über eine
Message aufrufen. Der Vorteil der globalen Makros besteht darin, dass diese auch
Informationen zurückgeben können oder man auf die veränderten Variablen
direkt zugreifen kann, da diese ja ebenfalls global sind. Beim Aufruf über eine
Message müsste eine Rückmessage definiert werden.
2. Richtlinien
Damit man im AppsWH Code globale Makros und Variablen von den 'Normalen'
unterscheiden kann werden sie über den Namen als solche gekennzeichnet. So
beginnt eine globale Variable immer mit "g_" (g_GlobalCollection oder
g_Tmp) und ein globales Makro immer mit "G_" (G_GetCollection oder
G_IndertAttribute).
Weiteren ebenfalls globale Variablen wie user oder cyberEnterprise sind noch
nicht gekennzeichnet.