Verwendung von Scripts auf Events
Standard
|Expert
CLOUD ABO
|ON-PREMISES
Leistung & CRM
Budget & Teilprojekt
Fremdkosten
Ressourcenplanung
Business Intelligence
Scripts können durch bestimmte Änderungen, sogenannte Events, gestartet werden. Sobald eine solche Änderung eintrifft, läuft das hinterlegte Script automatisch ab, ohne zusätzliche Interaktion des Users.
Ein Eventscript wird wie ein normales Script im Vertec erzeugt: Über Einstellungen > Scripts, rechte Maustaste > Neu > Scripteintrag.
Bezeichnung |
Hier kann eine beliebige Bezeichnung eingegeben werden. Eventscript erscheinen nicht in einem Menü. |
|||||||||||||||
Plattform |
Ab Version 6.6. |
|||||||||||||||
Klassen |
Hier darf bei Eventscripts nichts eingegeben werden, sonst würde das Event-Skript im entsprechenden Menü erscheinen, was nicht erwünscht ist. |
|||||||||||||||
Bedingung |
Dieses Feld hat für Eventscripts keine Bedeutung. Es steuert lediglich die Sichtbarkeit von normalen Scripts im Menü. |
|||||||||||||||
Auf einzelne Objekte anwendbar / Auf Listen (Container) anwendbar |
Wird bei Eventscripts nicht benötigt. | |||||||||||||||
Eventscript für |
Auf folgende Arten von Events können Scripts registriert werden:
|
|||||||||||||||
Klassen |
Gibt an, auf welche Klassen das Script reagiert. Bei Eventscripts der Art Login muss keine Klasse gesetzt werden. |
|||||||||||||||
Felder |
Hier kann ein einzelnes Feld auf der Klasse angegeben werden, 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.
Auf derived Attributes (berechneten Feldern) dürfen keine Eventscripts registriert werden. Ab Version 6.0 ist die Eventscripts Unterstützung für derived Members generell deaktiviert. |
|||||||||||||||
Erweiterte Berechtigungen |
Einem Scripteintrag können erweiterte Rechte erlaubt werden. Dadurch wird erreicht, dass das Script gewisse erweiterte Möglichkeiten hat (Zum Beispiel, dass es auch bei Benutzern mit eingeschränkten Berechtigungen funktioniert). Das genaue Vorgehen ist im Artikel Erweiterte Berechtigungen beschrieben. |
Ein Eventscript sollte wissen, durch welchen Event auf welchem Member es ausgelöst wurde. Dies macht es einfacher, verschiedene Events mit demselben Script zu behandeln. Dafür wurde mit der Version 5.7 eine globale Variable namens args eingeführt:
Beispiel:
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.
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 Methoden
VBScript Python |
Diese beiden Methoden werden verwendet, um die Ausführung von Eventscripts temporär zu unterbinden. DisableEvents verhindert die Ausführung von Eventscripts so lange, wie wiederum EnableEvents aufgerufen wird. Diese Methoden sind nötig, um den endlosen Aufruf eines Scripts zu verhindern. Beispielsweise soll das Ändern eines Stundensatzes einer Leistung auf einer Rechnung dazu führen, dass bei allen Leistungen auf dieser Rechnung ein anderer Stundensatz eingesetzt wird. Ohne Verwendung von DisableEvents würde jede geänderte Leistung das gleiche Script erneut aufrufen, was zu einer Endlos-Schleife führen würde. DisableEvents gilt so lange, bis entweder EnableEvents aufgerufen wird oder das Script beendet ist. |
Für den Aufruf dieser Methoden muss das Script über erweiterte Berechtigungen verfügen.