CER ermöglicht Ihnen die Ausgabe einer HTML-Dokumentation für eine Sitzung. Diese Dokumentation wird als "SessionDoc" bezeichnet.
Das SessionDoc enthält einen Datensatz für alle Regelobjekte, die während der Sitzung erstellt wurden, und kann im Rahmen von Tests wertvolle Dienste für das Debugging leisten.
Es kann hilfreich sein, den JUnit-Ankerpunkt tearDown zu verwenden, um durchzusetzen, dass das SessionDoc für alle Testmethoden in den Testklassen ausgegeben wird:
@Override protected void tearDown() throws Exception { /* * Write out SessionDoc, to a directory named after the test * method. */ final File sessionDocOutputDirectory = new File("./gen/sessiondoc/" + this.getName()); sessionDoc.write(sessionDocOutputDirectory); super.tearDown(); }
Das folgende Beispiel zeit die SessionDoc-Hauptseite für einen Test testSelfMadeMillionaireScenario:
Diese Seite enthält einige wichtige Details:
Wenn Sie auf den Link für das einzige Regelwerk FlexibleRetirementYearRuleSet klicken, werden dessen Regelobjekte angezeigt:
Auf dieser Seite ist Folgendes angegeben:
Wenn Sie auf den Link "details" für das einzige Regelobjekt FlexibleRetirementYear klicken, wird dessen SessionDoc angezeigt:
Am (hier nicht dargestellten) Beginn des SessionDoc sind Details für das Regelobjekt zusammengefasst. Anschließend ist jedes Regelattribut für das Regelobjekt mit den folgenden Details aufgeführt:
Der Name des Regelattributs.
Der Typ des Regelattributs, der im Regelwerk deklariert ist. Der tatsächliche Laufzeitwert kann aus einem Subtyp dieses deklarierten Typs stammen.
Der Status des Wertes. Mögliche Angaben:
Der Wert wurde durch Regeln berechnet.
Der Wert wurde als Ersatz für eine definierte Berechnung explizit durch Client-Code angegeben oder im Rahmen eines Ausdrucks create initialisiert.1
Der Wert ist nicht explizit angegeben oder wird nicht während der Regelausführung berechnet (weil der Wert noch nie von anderen Berechnungen oder Tests angefordert wurde).
Während der Berechnung des Wertes trat ein Fehler auf (Details und den Berechnungsstack des Fehlers können Sie den Anwendungsprotokollen oder der Konsolenausgabe entnehmen).
Eine Anzeigedarstellung des Wertes. Falls der Wert noch nie berechnet wurde (NOT_YET_CALCULATED) oder fehlerhaft ist (ERROR), wird "?" angezeigt. Handelt es sich bei dem Wert um ein Regelobjekt, wird der Wert als navigationsfähiger Hyperlink angezeigt, damit Sie die Details dieses Regelobjekts anzeigen können.
Die RuleDoc-Ableitung des Attributs (ohne Links). Weitere Informationen zum RuleDoc finden Sie im Abschnitt RuleDoc.
Hier sind die Links zu den Attributen angegeben, die zur Berechnung dieses Wertes verwendet wurden.
(Optional) Hier sind die Links zu den Attributen angegeben, die diesen Wert bei der Berechnung ihres eigenen Wertes verwendet haben.
Falls Sie ein SessionDoc für eine umfangreiche Datenbank ausführen, kann es sinnvoll sein, die Ausgabe der Links unter "Used by" zu unterdrücken, da der Einschluss solcher Links dazu führen kann, dass viele Regelobjekte im SessionDoc ausgegeben werden. Um die Ausgabe der Links unter "Used by" zu unterdrücken, verwenden Sie curam.creole.execution.session.SessionDoc.write(File, boolean) und übergeben hierbei false als zweiten Parameter.
Für Regelobjekte, die in den Datenbanktabellen von CER gespeichert sind, können Sie das SessionDoc erstellen, indem Sie die Klasse curam.creole.util.DumpOutRuleObjects mit einem einzigen Argument ausführen, für das Sie den Namen eines Verzeichnisses angeben, in dem das SessionDoc erstellt werden soll. Das Dienstprogramm "DumpOutRuleObjects" ruft alle Regelobjekte aus den Datenbanktabellen von CER ab. Die Aktion für jedes externe Regelobjekt lautet folglich "retrieved" (= abgerufen). Alle internen Regelobjekte werden erstellt (da sie nicht gespeichert sind). Für sie ist daher die Aktion "created" (= erstellt) angegeben.
Durch das Anzeigen der Regelobjekte können Sie die Werte der berechneten Attribute für Regelobjekte einsehen und in einer technische Ansicht feststellen, wie die einzelnen Berechnungsergebnisse erzielt wurden.