Scrapbook bearbeiten

LF‑ET hat eine C#-Klasse erzeugt mit Abschnitten für jeden einzelnen Source­code der Ent­schei­dungs­ta­belle, die je­weils durch Kommentare eindeutig identifiziert werden, wie z.B.:

// Prolog Decision Table ---→

// Prolog Decision Table ←---

Diese Kommentare dürfen bei der Bearbeitung nicht verändert werden, denn sie dienen sowohl dem Ent­wick­ler als auch LF‑ET zum Erkennen, wo ein bestimmtes Source-Fragment beginnt und wo es endet.

Wenn ein zwingend notwendiger Source­code in der Ent­schei­dungs­ta­belle leer ist, dann wird ein vordefiniertes Generat verwendet und TODO-Kommentare geben Hinweise auf durchzuführende Aktivitäten.

In VisualStudio werden TODO-Kommentare auto­ma­tisch aus­ge­wer­tet…​

image4105 18

…​und können z.B. in der Aufgabenliste angezeigt werden. In unserem Beispiel müssen noch 8TODO’s abgearbeitet werden:

image4105 19

Hinweis: Der bei der Gene­rie­rung verwendete String "TODO" kann bei Bedarf über den Cs/C#-Gene­rie­rungs­para­me­ter $$TodoTag beliebig geändert werden, z.B. auf "LFET-TODO".

Die Programmierung ist dieselbe wie mit dem in LF‑ET integrierten Edi­tor, nur dass man jetzt die volle Unterstützung der gewohnten Ent­wick­lungs­um­ge­bung nutzen kann. Im ersten Schritt passen wir den Ent­schei­dungs­ta­bellen-Prolog an:

Der Edi­tor hat ein Problem erkannt: Die Methode muss noch einen String als Ergebnis zurückliefern. Wir passen des­halb gleich im nächsten Schritt den Epilog an und blättern vorwärts bis zum Ende der Datei.

Der vordefinierte Ent­schei­dungs­ta­bellen-Epilog beendet nur Namespace, Methode und Klasse…​

image4105 21

…​wir fügen am Ende der Methode noch die Rückgabe des Ergebnis-Strings hinzu, damit ist auch gleich­zeitig der im Prolog erkannte Fehler behoben:

Mit Prolog und Epilog ist nun der Kontext des Regelwerks programmiert: Eine Klasse 'Compare' im Namespace 'LfetDemo' mit einer Methode 'CompareStrings' die zwei Strings als Argumente erhält und das Ergebnis des Vergleichs in Textform als String zurückliefert.

Um die Programmierung abzuschließen müssen jetzt nur noch die logischen Argumente für die beiden Bedingungen und Statements für die drei Aktionen programmiert werden. Durch Klicken auf eine der noch übrig gebliebenen 5 TODO-Marken in der Aufgabenliste können die einzelnen Source-Fragmente direkt 'angesprungen' werden:

image4105 23

Beginnen wir mit der ersten Bedingung B01. Die einzelnen Source-Abschnitte für jede Bedingung und Aktion sind deutlich durch horizontale Kommentar-Linien getrennt.

Der optionale Prolog für diese Bedingung ist leer, hier können, falls nötig, beliebige Statements ausgeführt werden, wie z.B. Deklaration und Ini­tiali­sie­rung von Variablen oder Objekten, Datenbankzugriffe, Methodenaufrufe, etc.

Durch die äußeren geschweiften Klammern ist sichergestellt, dass alle Programmierungen, die hier vorgenommen werden, rein privat für diese Bedingungen sind.

image4105 24

Wir ersetzen 'true' und den TODO-Kommentar durch das logische Argument für die erste Bedingung: 'String 1 kleiner als String 2?'. Einen Prolog benötigen wir hier nicht, dieser bleibt einfach leer:

Weiter geht es mit der Anpassung der zweiten Bedingung B02:

image4105 26

Wir ersetzen wieder 'true' und den TODO-Kommentar durch das logische Argument für diese Bedingung: 'String 1 größer als String 2?'. Der Prolog wird nicht benötigt und bleibt auch hier wieder einfach leer:

Bei erweiterten Bedingungen muss für den letzten Wert (der 'Sonst-Wert') kein logisches Argument definiert werden – genau wie beim 'Nein-Wert' einer begrenzten Bedingung. Fehlt für den letzten Wert das logische Argument, dann ge­ne­riert LF‑ET auto­ma­tisch ein ELSE-Statement. Aus diesem Grunde werden für die letzten Werte von Bedingungen ohne Source­code keine Einträge im Scrapbook ge­ne­riert.

Die Programmierung der einzelnen Aktionen erfolgt auf dieselbe Weise, die TODO-Kommentare werden je­weils durch passende Statements ersetzt. Insgesamt sind jetzt noch 3 TODO’s abzuarbeiten:

image4105 28

image4105 30

image4105 32

Damit ist die Programmierung für diese Ent­schei­dungs­ta­belle abgeschlossen und der Source­code wird gespei­chert. Die geänderten Source-Fragmente müssen jetzt nur noch in die Ent­schei­dungs­ta­belle zurück übertragen werden.