Verwendung von Scripts auf Events
Produktlinie
Standard
|Expert
Betriebsart
CLOUD ABO
|ON-PREMISES
Module
Leistung & CRM
Budget & Teilprojekt
Fremdkosten
Ressourcenplanung
Business Intelligence
Scripts in Vertec können durch bestimmte Ereignisse, sogenannte Events, gestartet werden. Sobald ein solches Ereignis eintrifft, läuft das hinterlegte Script automatisch ab, ohne zusätzliche Interaktion des Users.
Ein Eventscript wird wie ein normales Script via Einstellungen > Berichte & Scripts > Scripts erzeugt: Wählen Sie mit der rechten Maustaste Neu > Scripteintrag.
Die für Eventscripts relevanten Felder sind folgende:
Eventscript für |
Auf folgende Arten von Events können Scripts registriert werden:
|
|||||||||||||||
Klassen |
Gibt an, auf welche Klasse das Script reagiert. Bei Eventscripts der Art Login wird keine Klasse gesetzt. Bei Eventscripts der Art Geändert muss zusätzlich ein Feld (oder mehrere Felder) angegeben werden, auf dessen Änderung reagiert werden soll. |
|||||||||||||||
Felder |
Hier wird ein einzelnes Feld auf der Klasse angegeben, auf dessen Änderung reagiert werden soll. Die Angabe eines Feldes ist nur sinnvoll bei Eventscripts der Art Geändert. Falls auf mehrere Felder reagiert werden soll, können diese mit Komma getrennt nacheinander angegeben werden. Es können auch Zusatzfelder angegeben werden, indem einfach der Name des Zusatzfeldes angegeben wird. Wird kein Feld angegeben, reagiert das Script auf alle Felder, also auf alle Änderungen an dieser Klasse. Das sollte auf keinen Fall gemacht werden, da dies zu massivem Performanceverlust führen kann. Auf derived Attributes (berechneten Feldern) können keine Eventscripts registriert werden.
|
|||||||||||||||
Erweiterte Berechtigungen |
Einem Scripteintrag können erweiterte Berechtigungen erteilt werden. |
Die Variable argobject bezeichnet das Objekt, welches den Event ausgelöst hat.
Ausserdem steht die globale Variable args
mit folgenden Attributen zur Verfügung:
args.eventmember
enthält den Namen des auslösenden Feldesargs.eventtype
enthält die Art des Events: 'change', 'create', 'login', '' (Leerstring für delete)So kann bei Eventscripts, die auf mehrere Felder reagieren, gezielt auf die einzelnen Events eingegangen werden.
if args.eventmember == 'aktiv': argobject.bemerkung = 'Aktiv wurde geändert' if args.eventmember == 'projektleiter': argobject.bemerkung = 'PL wurde geändert'
Werden in einem Eventscript Dialoge angezeigt, muss immer abgefragt werden, ob der Client fähig ist, benutzerspezifische Dialoge anzuzeigen, also ob es sich beim Client um eine der full-featured Apps handelt und eine Benutzeroberfläche angezeigt wird.
Dies geschieht mittels OCL Operator
.hasGui, welcher True
oder False
zurückgibt.
Es ist wichtig, dass keine Dialoge angezeigt werden, wenn dies auf dem verwendeten Client nicht möglich ist, da dies Vertec blockieren oder zu ungewünschten Resultaten führen kann: Eine msgbox()
beispielsweise gibt OK
zurück, wenn der Dialog nicht angezeigt werden kann. Falls es auch noch einen Abbrechen Button hätte und im Code davon ausgegangen wird, dass ein User aktiv OK
geklickt hat, werden vielleicht Daten verändert, gelöscht etc., ohne dass dies gewollt ist.
Beachten Sie bei der Verwendung von Scripts auf Events folgende Hinweise:
Aus diesen Gründen gibt es die Möglichkeit, Vertec mit einem Parameter /noevents zu starten. Dadurch werden im Vertec keine Eventscripts mehr ausgeführt.
Um die Ausführung von Eventscripts innerhalb von anderen Scripts temporär zu unterbinden, gibt es die Methode vtcapp.DisabledEvents() .