Schritt 2: Interface und Regelmodul generieren
Am einfachsten kann die Generierung von Programmcode mit der Tastenkombination STRG + G (Speichern + Generieren) gestartet werden. Sie funktioniert in allen Bildschirmen und löst das Speichern der Entscheidungstabelle mit anschließender Generierung der Source-Dateien aus.
|
Alternativ kann auch das Generierungs-Menü über das Symbol "Speichern und Generieren" verwendet werden. Informationen zu allen Möglichkeiten, die Generierung zu starten, finden Sie im Kapitel: Programmcode generieren. |
LF‑ET erzeugt bei dieser Generierungsart immer 2 Objekte: Ein Interface und ein Regelmodul, das ausschließlich die im Interface definierten Methoden verwendet.
Hier das generierte Interface "IAmpelSchaltung":

In den meisten Fällen wird man den voreingestellten Standard-Prolog (public interface) unverändert verwenden können, bei Bedarf kann dieser aber über eine INI-Datei beliebig verändert werden:
// Prolog Standard ---->
// profile LFET.Java.Prolog.Standard.Interface.ini not found
// used LF‑ET 2.1.4 (140116a) build in default
public interface IAmpelSchaltung
{
// Prolog Standard <----
Die Entscheidungstabelle enthält bei dieser Generierungsart keinerlei Sourcecodes. Der Entscheidungstabellen-Prolog wird in den generierten Code nur eingebunden, damit die verwendeten Parameterangaben dokumentiert sind:
// Prolog Decision Table ---->
// InterfaceName=IAmpelSchaltung
// InterfaceRulesClassName=RAmpelSchaltung
// $$Package=""
// Prolog Decision Table <----
Zu jedem Bedingungswert wird eine Methode definiert: public boolean isBedingungsWert(), wobei die Methodennamen automatisch aus der Entscheidungstabelle abgeleitet werden. Jede Methode erhält automatisch einen JavaDoc-Kommentar, der aus allen verfügbaren Informationen aus der Entscheidungstabelle (Titel, Symbole, Texte, etc.) zusammengestellt wird:
/**
* B01: Ist Rot an ?
*/
public boolean isIstRotAn();
/**
* B02: Ist Gelb an ?
*/
public boolean isIstGelbAn();
Hinweis: 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 generiert LF‑ET automatisch ein ELSE-Statement. Aus diesem Grunde werden für die letzten Werte von Bedingungen keine Methoden im Interface generiert.
Auch zu jedem Aktionswert wird eine Methode, inkl. JavaDoc-Kommentar, definiert: public void doAktionsWert():
/**
*A01: Neuer Zustand: Rot an
*/
public void doNeuerZustandRotAn();
/**
*A02: Neuer Zustand: Gelb an
*/
public void doNeuerZustandGelbAn();
/**
*A03: Neuer Zustand: Grün an
*/
public void doNeuerZustandGruenAn();
Um das Laufzeitverhalten analysieren zu können, wird standardmäßig am Ende noch die Methode doTrace hinzugefügt. Der voreingestellte Standard-Epilog kann in den meisten Fällen unverändert übernommen werden, kann aber bei Bedarf über eine INI-Datei beliebig abgewandelt werden:
public void doTrace(java.lang.String dtName, java.lang.String version, int rules, int rule);
// Epilog Standard ---->
// profile LFET.Java.Epilog.Standard.Interface.ini not found
// used LF‑ET 2.1.4 (140116a) build in default
}
// Epilog Standard <----
Nun zum generierten Regelmodul"RAmpelSchaltung":

In den meisten Fällen wird man auch hier den voreingestellten Standard-Prolog unverändert verwenden können. Bei Bedarf kann dieser aber über eine INI-Datei beliebig verändert werden. Die Klasse enthält nur eine Methode "execute", der das generierte Interface als Parameter übergeben wird:
// Prolog Standard ---->
// profile LFET.Java.Prolog.Standard.Interface.Dt.ini not found
// used LF‑ET 2.1.4 (140116a) build in default
public final class RAmpelSchaltung
{
public final void execute(IAmpelSchaltung iface)
{
// Prolog Standard <----
Die Entscheidungstabelle enthält bei dieser Generierungsart keinerlei Sourcecodes. Der Entscheidungstabellen-Prolog wird in den generierten Code nur eingebunden, damit die verwendeten Parameterangaben dokumentiert sind:
// Prolog Decision Table ---->
// InterfaceName=IAmpelSchaltung
// InterfaceRulesClassName=RAmpelSchaltung
// $$Package=""
// Prolog Decision Table <----
Der IF-ELSE-Regelbaum ist genauso aufgebaut wie bei dem in den vorhergehenden Kapiteln generierten Java-Sourcecode, nur dass jetzt ausschließlich die Methoden des generierten Interfaces verwendet werden:
if (iface.isIstRotAn())
{
if (iface.isIstGelbAn())
{
// Rule R01 ---->
iface.doTrace("AmpelSchaltung","20140211.152746", 4, 1);
iface.doNeuerZustandGruenAn();
// Rule R01 <----
}
else
{
// Rule R02 ---->
iface.doTrace("AmpelSchaltung","20140211.152746", 4, 2);
iface.doNeuerZustandRotAn();
iface.doNeuerZustandGelbAn();
// Rule R02 <----
}
}
else
{
if (iface.isIstGelbAn())
{
// Rule R03 ---->
iface.doTrace("AmpelSchaltung","20140211.152746", 4, 3);
iface.doNeuerZustandRotAn();
// Rule R03 <----
}
else
{
// Rule R04 ---->
iface.doTrace("AmpelSchaltung","20140211.152746", 4, 4);
iface.doNeuerZustandGelbAn();
// Rule R04 <----
}
}
Der generierte Standard-Epilog wird in der Regel nicht verändert, kann bei Bedarf aber über eine INI-Datei beliebig verändert werden:
// Epilog Standard ---->
// profile LFET.Java.Epilog.Standard.Interface.Dt.ini not found
// used LF‑ET 2.1.4 (140116a) build in default
}
}
// Epilog Standard <----
Das Interface IAmpelSchaltung und die Klasse RAmpelSchaltung sind sofort nach der Generierung verwendbar und werden in keiner Weise manuell verändert oder bearbeitet.
