Ausflug: Was unternimmt TCE bei der Regelprüfung?

 

TCE startet eine Regelprüfung, wenn sich in der Objektstruktur ein Objekt oder Merkmal einer Klasse geändert hat, bei dem der Schalter Regeln bei Änderung prüfen eingeschaltet ist und die Größe des Funktionenstacks auf Null zurückfällt bzw. auf einen Eintrag, in dem der Interpreter auf eine Fortsetzung der Ausführung wartet (modale Dialoge und Nachrichtenfenster (MsgBox). Auch wenn ein Merkmal seinen Wert z.B. durch eine Benutzereingabe geändert hat, bei der kein Aufruf des Funktionenstacks erfolgt, wird das Regelwerk unmittelbar geprüft. Schließlich wird die Überprüfung des Regelwerks auch gestartet, wenn die Funktion Server.CheckRules aufgerufen wird oder globale Eigenschaften wie die Dialogsprache oder die Dialogwährung geändert wurde.

Ein einzelner Regelüberprüfungsvorgang besteht aus folgenden Bestandteilen:

      Überprüfung von Zuweisungen über Zuweisungs-, Lösch- oder Zuweisungs-/Löschregeln sowie der eingebetteten Excel-Sheets in allen Objekten

      Überprüfung von Steuerungen, die an Klassenvariablen hinterlegt sind (für alle Objekte und Merkmale)

      Überprüfung von Entscheidungstabellen, Event-Regeln an Funktionen und Klassenaktualisierungen für alle Objekte

Dieser Regelüberprüfungsvorgang von Wert setzenden Regeln und Konstrukten wird solange fortgesetzt, bis eine abschließende Regelüberprüfung zu keinen Änderungen am Zustand des Objektbaumes mehr führt.

Nach der Überprüfung von Änderungen von Werten erfolgt die Überprüfung des Gültigkeitszustandes der Variablen. Es werden nur solche Variablen auf Gültigkeit geprüft, deren Eigenschaft <Regeln> gesetzt ist.

In seltenen Fällen kann diese Überprüfung dennoch zu Wertänderungen führen. Falls dies der Fall ist, wird mit der Überprüfung komplett erneut begonnen.

Im Anschluss daran wird geprüft, welche Formularinhalte aktualisiert werden müssen. Diese Formulare bzw. Steuerelemente werden zum Client übermittelt. Dabei werden alle Variablen und Ausdrücke, die in den Eigenschaften der Formulare und Steuerelemente eingetragen sind, berücksichtigt. Auch Menüs und Toolbars werden geprüft und aktualisiert.

Wird nach Erreichen von Server.RuleLoopLimit (Standardwert 500) Regeldurchläufen kein konsistenter Zustand erreicht, oder verändert eine Regelprüfung mehr als Server.RuleToggleLimit (Standardwert: 200) einen Wert einer Klassenvariablen, bricht der Interpreter mit einer Fehlermeldung 758  „Endlosschleife während der Regelüberprüfung“ ab.