Vertec AI Chatbot

Der Chatbot hilft Ihnen bei Fragen rund um das Produkt und die Anpassbarkeit der Software. Wie bei allen AI-generierten Daten sollten die Antworten bei kritischen Informationen verifiziert werden. Nehmen Sie dafür gerne Kontakt mit uns auf. Weitere Informationen zur Verarbeitung der Chat-Daten bieten wir auf der Datenschutzseite.

Die besten Antworten liefert der Chatbot, wenn Ihr Input möglichst viele Informationen enthält. Zum Beispiel:

«Welche Apps stehen im Vertec Cloud Abo zur Verfügung?»

Scripts auf Events

Verwendung von Scripts auf Events

Produktlinie

Standard

|

Expert

Betriebsart

CLOUD ABO

|

ON-PREMISES

Module

Leistung & CRM

Budget & Teilprojekt

Fremdkosten

Ressourcenplanung

Business Intelligence

Erstellt: 03.12.2007
Aktualisiert: 15.03.2024 | vtcapp.DisabledEvents() hinzugefügt.

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:
  • Neu: Das Script wird gestartet, sobald ein Objekt der bezeichneten Klasse (siehe nachfolgende Tabelle) neu erzeugt wird.
  • Geändert: Das Script wird gestartet, sobald eine sich eine Änderung ergibt an einem Objekt der bezeichneten Klasse (siehe nachfolgende Tabelle) und einem bestimmten Feld (siehe weiter unten).
  • Login: Das Script wird gestartet, sobald sich ein Benutzer in Vertec anmeldet (argobject = eingeloggter Projektbearbeiter).
  • Löschen: Ein Unterschied zu den anderen Events ist, dass das Eventscript im Löschvorgang, aber direkt vor dem eigentlichen Löschen aufgerufen wird (damit der ursprüngliche Zustand mit allen Verbindungen noch besteht).

    Fehler aus Löschen-Scripts werden ins Log geschrieben, ansonsten aber ignoriert. Das Löschen wird dadurch nicht blockiert.
    Es ist nicht möglich, im Löschen Script das Löschen zu verhindern. Dies aus dem Grund, dass in einer Klassenhierarchie mehrere Löschscripts definiert werden können. In solchen Fällen könnte es passieren, dass ein Script Änderungen beim Löschen macht, und ein nachfolgendes Script das Löschen dann verhindert, was zu einem inkonsistenten Zustand führt.

  • Business-Logik: Diese Scripts laufen zu bestimmten, aus der Business-Logik gegebenen Zeitpunkten ab. Als erste Möglichkeit wurde der Business-Logik Event CalculateRate eingeführt. Damit kann kundenspezifische Logik zur Berechnung der Ansätze einer Leistung ausgeführt werden. Dieser Event, in diesem Fall das CalculateRate, wird als Feldname eingetragen.

    Das Script wird wie bei Eventscripts üblich erst aufgerufen, wenn alle andere Logik abgelaufen ist. Im Falle von CalculateRate bedeutet dies, dass die eingebaute Tariflogik mit Berücksichtigung von Tariftabelle etc. zuerst abläuft und den Satz wie bisher setzt. Erst nachher kommt das Eventscript und kann den von der eingebauten Business-Logik berechneten Wert überschreiben.

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.

Event Klasse bezeichnen Felder bezeichnen
Neu ja nein
Geändert ja ja
Login nein nein
Löschen ja nein
Erweiterte Berechtigungen

Einem Scripteintrag können erweiterte Berechtigungen erteilt werden.

Argumente bei Eventscripts

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 Feldes
  • args.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'

UI überprüfen, falls Dialoge angezeigt werden

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.

Scripts auf Events ausschalten

Beachten Sie bei der Verwendung von Scripts auf Events folgende Hinweise:

  • Komplizierte Berechnungen bei Datenänderungen können die Performance von Vertec verlangsamen.
  • Endlose Scripts, die sich immer wieder selbst aufrufen, können Vertec zum abstürzen bringen.
  • Scripts, welche in die Funktionalität von Vertec eingreifen (z.B. das Setzen eines Stundensatzes auf einer neu erzeugten Leistung), können zu einem undurchsichtigen Verhalten von Vertec führen.

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().

Bitte wählen Sie Ihren Standort