Der generierte Sourcecode mit Trace-Statements
Der im vorigen Kapitel definierte Trace-Code wird bei der Generierung in jeden einzelnen Zweig des IF-ELSE-Regelbaumes direkt vor den Statements der jeweils ersten Aktion eingebunden:
D:\Projekte\LF‑ET-Demo\Cs\Compare.cs (Auszug)
// Condition B01: String 1 kleiner String 2 ?
if (compareS1ToS2 == -1 {vbar}{vbar} s1 == null && s2 != null)
{
// Rule R01 ---->
lfetCompareRuleExecuted = true;
// Trace ---->
Console.WriteLine("Compare, 20130731.131833, 3, 1" +
"s1=[{0}], s2=[{1}]", s1, s2);
// Trace <----
// Action A01: Ergebnis: String 1 ist kleiner als String 2
result = S1IsLessThanS2;
// Rule R01 <----
}
else
{
// Condition B02: String 1 größer String 2 ?
if (compareS1ToS2 == 1 {vbar}{vbar} s1 != null && s2 == null)
{
// Rule R02 ---->
lfetCompareRuleExecuted = true;
// Trace ---->
Console.WriteLine("Compare, 20130731.131833, 3, 2" +
"s1=[{0}], s2=[{1}]", s1, s2);
// Trace <----
// Action A02: Ergebnis: String 1 ist größer als String 2
result = S1IsGreaterThanS2;
// Rule R02 <----
}
else
{
// Rule R03 ---->
lfetCompareRuleExecuted = true;
// Trace ---->
Console.WriteLine("Compare, 20130731.131833, 3, 3" +
"s1=[{0}], s2=[{1}]", s1, s2);
// Trace <----
// Action A03: Ergebnis: String 1 ist gleich String 2
result = S1IsEqualToS2;
// Rule R03 <----
}
}
Wichtig: Bei der Ausführung des Programmcodes befinden sich zum Zeitpunkt der Trace-Ausgabe noch alle Objekte und Variablen im Zustand vor der Verarbeitung durch die Entscheidungstabelle.
Präziser können Informationen über Details der Verarbeitung nicht gewonnen werden: Welche Zweige wurden durchlaufen und welche Zustände hatten ausgewählte Objekte und Variablen direkt vor der Verarbeitung.