Ereignisorientierte Programmierungen (user-defined-trigger)
Allgemeine Beschreibung
Als umfangreiches Softwaresystem umfasst unsere ERP-Software easyWinArt mehrere Millionen Zeilen strukturierten Quellcode. Diesem liegt eine Schichtenarchitektur mit zehn Schichten (Layer) zugrunde. Sechs dieser Layer enthalten freigegebene Ereignisse (Events), welche weiterhin Trigger genannt werden, in Anlehnung an Datenbankereignisse (Datenbanktrigger). Diese Trigger werden während der Programmlaufzeit ausgelöst und unter Verwendung des SDK kann eigener Code für diese Trigger programmiert werden, welcher dann zur Laufzeit ausgeführt wird. Es können somit eigene ereignisorientierte Programmierungen umgesetzt werden.
In der SDK-Projektmappe stehen im Projekt '03-UserLayer-SDK' im Ordner 'user-defined-trigger' sechs Quellcodedateien ('TriggerBasisLayer.vb', 'TriggerDatenLayer.vb', ...) bereit, von denen jede eine vom easyWinArt-Original-Code vererbte Klasse mit den freigegebenen Ereignissen des jeweiligen Triggers enthält. Der eigene Code sollte im entsprechenden Trigger nach dem Öffnen des Codes unterhalb des Kommentars 'User-defined Code Area:' eingefügt werden. Die Ereignisse werden ausgewählt durch Auswahl des 'Ereiginsse'-Eintrags im linken Codenavigations-Dropdown und anschließender Auswahl des gewünschten Ereginisses im rechten Dropdown. Im Folgenden werden diese Trigger beschrieben und es stehen verschiedene Programmierbeispiele bereit.
TriggerBasisLayer
Der Basis-Layer ist die zehnte und unterste Schicht in der easyWinArt-Architektur. Sie enthält einige grundsätzliche Strukturen und Funktionen wie die Tabellen, Views, Mandantenkonfiguration, die globalen Variablen (GV) und statische wichtige Methoden (Fkt). Die Trigger des Basis-Layers sind grundsätzlicher Natur und werden eher selten benötigt.
Beispiele zum TriggerBasisLayer
TriggerDatenLayer
Der Daten-Layer bildet die 9. Schicht und ist somit nahezu ganz unten angesiedelt. Hier werden hauptsächlich die Datenbankzugriffe geregelt. Entsprechende Ereignisse sind hier enthalten, wie z.B. 'InsertDatensatz' oder 'DeleteDatensatz'.
Beispiele zum TriggerDatenLayer
TriggerBusinessFramework
Der 8. Layer heißt 'Business-Framework' und enthält im Wesentlichen einige Basis-Klassen, die als Grundlage für Klassen des 'Business-Layer' dienen. Die Ereignisse dieser Schicht werden eher selten benötigt und verwendet.
Beispiele zum TriggerBusinessFramework
TriggerBusinessLayer
In der 7. Schicht 'Business-Layer' sind die vielen Business-Objekte (BLs und OBJs) der vielen easyWinArt-Menüfunktionen enthalten. Weiterhin sind hier die verschiedenen Methoden abgelegt, die unter 'FktB' zusammengefasst sind. Interessant ist an dieser Stelle z.B. das Ereignis 'NachPreisfindung', mit dem die Preisfindung von easyWinArt durch eine eigene überschrieben werden kann.
Beispiele zum TriggerBusinessLayer
TriggerFormFramework
Die 5. Schicht mit dem Namen 'Form-Framework' enthält die Basis-Form-Klasse 'BasisForm', von der alle normalen easyWinArt-Menüfunktionen abgeleitet werden, sowie viele übergreifende (Hilfs-)Forms wie z.B. die Such- oder Meldungsfenster. Weiterhin sind hier auch die Ewa-Controls, also easyWinArt-spezifische Steuerelemente, untergebracht. Ebenfalls wichtig ist die Klasse FktF mit vielen wichtigen Funktionen und Prozeduren. Ab dieser Schicht steht eine Oberfläche zur Verfügung. Es sind hier sehr viele (wichtige) Ereignisse untergebracht, welche im Wesentlichen beim aktiven Arbeiten mit easyWinArt-Menüfunktionen ablaufen, z.B. 'NachLoad', 'NachNeu', 'VorSpeichern' etc.
Beispiele zum TriggerFormFramework
TriggerFormLayer
Der 'Form-Layer' ist die 4. Schicht in der easyWinArt-Architektur. Hier sind alle Forms der normalen easyWinArt-Menüfunktionen untergebracht, wie z.B. das Artikel-Fenster oder das Adressen-Fenster. Teilweise befinden sich auch Hilfs-Forms an dieser Stelle. Die enthaltenen Ereignisse beziehen sich entsprechend jeweils auf eine ganz bestimmte Form, z.B. der Trigger 'EwaNachUpdateEasyWinArt', welcher am Ende des Updates aufgerufen wird, oder der Trigger 'EwaImportInDrehscheibeBelege', welcher im Rahmen der Menüfunktion 'Beleg-Import-Drehscheibe' ausgelöst wird.