Interface-Generierung
LF‑ET bietet für C# auch die Möglichkeit, die Steuerlogik der Entscheidungstabelle über ein generiertes Interface von einer konkreten Implementierung zu entkoppeln.
Um die Interface-Generierung zu verwenden, muss im Cs/C#-Prolog zur Entscheidungstabelle der Cs/C#-Generierungsparameter $$InterfaceName definiert sein, z.B. // $$InterfaceName=ICompare oder // $$InterfaceName=I$$etname.
Zuerst wird das Interface generiert:
-
Zu jedem Bedingungswert wird eine Methode definiert: bool IsBedingungsWert(), wobei die Methodennamen automatisch aus der Entscheidungstabelle abgeleitet werden
-
Auch zu jedem Aktionswert wird eine Methode definiert: void DoAktionsWert()
-
Jede Methode erhält automatisch einen XML-Kommentar-Block (///), der aus allen verfügbaren Informationen aus der Entscheidungstabellen (Titel, Symbole, Texte, etc.) zusammengestellt wird
-
Zusätzlich wird noch für den Trace-Code eine Methode definiert: void DoTrace(string dtName, string version, int rules, int rule)
Anschließend wird die Klasse mit der eigentlichen Steuerlogik (Logik-Modul, IF-ELSE-Regelbaum) generiert:
-
Die Klasse enthält nur eine Methode public void Execute(InterfaceName iface), der Name des Interface-Parameters iface kann bei Bedarf mit dem Cs/C#-Generierungsparameter $$InterfaceVarName individuell angepasst werden
-
Der IF-ELSE-Regelbaum benutzt nur die im generierten Interface definierten Methoden
Der Sinn dieser Generierungsart: Weder die Entscheidungstabelle, noch das generierte Interface, noch das generierte Logik-Modul enthalten anwendungsspezifischen Sourcecode!
Das bedeutet:
-
Maximale Entkopplung der Steuerlogik (d.h. Entscheidungstabelle) von einer konkreten Implementierung
-
Mehrere C#-Implementierungen derselben Logik sind möglich (z.B. in unterschiedlichen Projekten), Basis für jede Implementierung ist immer das generierte Interface
Wenn Sie diesen Abschnitt mit LF‑ET durcharbeiten wollen, dann beachten Sie bitte die Tipps dazu in der Einleitung für Cs/C#.
Inhalt dieses Kapitels: