Globale Makros

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.