CER-Sitzungen

Bei CER werden die folgenden Hauptdatenelemente verwendet:

Alle Interaktionen mit CER-Regelobjekten und -Attributwerten finden innerhalb einer CER-Sitzung statt. Zu diesen Interaktionen gehören das Erstellen, Abrufen und/oder Entfernen von CER-Regelobjekten sowie jede Berechnung oder Neuberechnung von Attributen für Regelobjekte.

Jede CER-Sitzung wird unter Verwendung der Klasse curam.creole.execution.session.Session_Factory erstellt.

Bei der Erstellung einer CER-Sitzung muss Folgendes angegeben werden:

Die Implementierungen von Datenspeicher müssen wiederum eine zu verwendende Regelobjektfactory angeben. Diese Factory steuert, ob Regelobjekte streng typisiert oder lediglich interpretiert erstellt werden.

Die Anwendung umfasst die folgenden Implementierungen:

Vorsicht:
Generell sollten nicht mehrere CER-Sitzungen in einer einzigen Datenbanktransaktion verwendet werden. Die im Hauptspeicher befindlichen Kopien der Regelobjekte in einer CER-Sitzung sind unabhängig von den im Hauptspeicher befindlichen Kopien von Regelobjekten in allen anderen CER-Sitzungen.

Das Verhalten kann nicht garantiert werden, wenn mehrere CER-Sitzungen (in derselben Transaktion) versuchen, dasselbe Regelobjekt aus der Datenbank abzurufen oder abzufragen.

1 Die CER-Funktionalität für die direkte Ausführung von Neuberechnungen wird nun durch den Abhängigkeitsmanager abgelöst (siehe Abhängigkeitsmanager).

Die Schnittstelle und die Implementierungen für die CER-Neuberechnungsstrategie werden nur aus Gründen der Abwärtskompatibilität bereitgestellt.

2 Seit Cúram Version 6 bietet CER eine Auswahl von Datenspeicherimplementierungen. Diese Datenspeicherimplementierungen wirken sich darauf aus, ob Regelobjekte, die in einer Transaktion erstellt oder geändert wurden, in anderen Transaktionen abgerufen und/oder geändert werden können.

Besonders wichtig ist in diesem Zusammenhang, dass die Auswahl des Datenspeichers keinen Einfluss auf die Semantik der Regelausdrücke hat. Dies bedeutet, dass Sie einen einfachen (hauptspeicherinternen) Datenspeicher für Ihre JUnit-Tests verwenden können (damit eine große Anzahl von JUnit-Tests schnell ausgeführt werden kann) und dass Sie einen persistenten Datenspeicher (Datenbank) für Ihre Produktionslogik einsetzen können (damit Regelobjekte transaktionsübergreifend persistent sind), ohne dass es Unterschiede in den zugrunde liegenden Berechnungen gibt.

3 Als Optimierung werden nur externe Regelobjekte und deren Attributwerte aus Daten in der Cúram-Datenbank abgerufen. Interne Regelobjekte und deren Attribute können naturgemäß zu einem späteren Zeitpunkt zuverlässig berechnet werden, während externe Regelobjekte normalerweise Daten aus externen Quellen enthalten und folglich nicht neu berechnet werden können.
4 Bitte beachten Sie, dass jeder Regelobjektkonverter Grenzwerte für seine Unterstützung von Ausdrücken "readall" (siehe readall, und readall) durchsetzen kann.

Beispielsweise unterstützen einige Regelobjektkonverter möglicherweise nicht die Ausführung eines Ausdrucks "readall" (siehe readall) ohne verschachtelte Angabe von match und/oder geben Einschränkungen für die Regelattribute vor, die im Wert für retrievedattribute des Ausdrucks match angegeben werden können.

Verstöße gegen die Einschränkungen des Regelobjektkonverters führen dazu, dass zur Laufzeit eine Ausnahmebedingung ausgelöst wird. Sie sollten sicherstellen, dass Ihre Regelwerktests Logik enthalten, mit denen die Regelobjektkonverter (also die für den Datenbankdatenspeicher ausgeführten Konverter) aufgerufen werden - im Gegensatz zur Mehrzahl der Regellogiktests, die den hauptspeicherinternen Datenspeicher nutzen und daher keine Regelobjektkonverter aufrufen.

Wissenswertes über die Einschränkungen, die eine Implementierung eines Regelobjektkonverters für die Unterstützung von Ausdrücken "readall" (siehe readall) vorgibt, finden Sie in der Dokumentation für die jeweilige Implementierung.