Modellierung und Produktkonfigurierung

Hello-Fakor-IPS

Im ersten Schritt dieses Tutorials legen wir ein Faktor-IPS Projekt an, definieren eine Modellklasse und generieren Java-Sourcecode zu dieser Modellklasse.

Falls Sie Faktor-IPS noch nicht installiert haben, tun Sie das jetzt. Die Software und die Installationsanleitung finden Sie auf https://www.faktorzehn.org/de/download/. In diesem Tutorial verwenden wir Eclipse 4.16 (2020-06) und Faktor-IPS 20.6. Eclipse wird in Englisch verwendet. Faktor-IPS hingegen auf Deutsch (also mit installiertem Language Pack).

Starten Sie Eclipse. Am besten verwenden Sie für dieses Tutorial einen eigenen Workspace. Wenn Faktor-IPS korrekt installiert ist, sollten Sie bei geöffneter Java-Perspektive [2] in der Toolbar folgende Symbole sehen [3]:

faktor ips icons
Figure 1. Faktor-IPS Icons

[2] In der Menüleiste WindowPerspectiveOpen PerspectiveJava auswählen
[3] In den Tutorials von Faktor-IPS wird von einer Installation mit Faktor-IPS German Language-Pack ausgegangen. Wenn Sie das Language-Pack installiert haben, aber trotzdem ohne die Übersetzung arbeiten wollen, können sie einfach Eclipse mit einer anderen Locale starten, z.B. mit eclipse -vmargs -Duser.language=en

Faktor-IPS-Projekte sind normale Java-Projekte mit einer zusätzlichen Faktor-IPS-Nature. Als erstes legen Sie also ein neues Java-Projekt mit dem Namen „Hausratmodell“ an. Hierzu klicken Sie im Menü auf FileNewJava Project. In dem Dialog brauchen Sie lediglich den Namen des Projektes angeben und klicken dann auf Finish.

new project
Figure 2. Projekt neu anlegen

In diesem Projekt werden wir die Modellklassen anlegen. Die Faktor-IPS-Nature fügen Sie dem Projekt hinzu, indem Sie es im Java Package-Explorer markieren und im Kontextmenü Faktor-IPSFaktor-IPS Nature hinzufügen…​ wählen.

faktor ips nature
Figure 3. Hinzufügen der IPS-Nature

Als Sourceverzeichnis geben Sie „model“ ein, als Basis-Package für die generierten Java-Klassen „org.faktorips.tutorial.model“, als Runtime-ID-prefix „hausrat.“ und drücken Sie auf OK. Dem Projekt werden die Laufzeitbibliotheken von Faktor-IPS hinzugefügt und das angegebene Sourceverzeichnis („model“) angelegt. In dem Sourceverzeichnis wird die Modelldefinition abgelegt. Unterhalb dieses Verzeichnisses kann die Modellbeschreibung wie in Java durch Packages (Pakete) strukturiert werden. Faktor-IPS verwendet wie Java qualifizierte Namen zur Identifikation der Klassen des Modells. Die Bedeutung des RuntimeID-Prefixes wird im Kapitel „Definition der Produkte" erläutert.

Darüber hinaus wurde dem Projekt ein neues Java Sourceverzeichnis mit dem Namen „derived“ hinzugefügt. In dieses Verzeichnis generiert Faktor-IPS Java Sourcefiles und kopiert XML-Dateien, die zu 100% generiert werden. Der Inhalt des Verzeichnisses kann also jederzeit gelöscht und neu erzeugt werden. Im Gegensatz hierzu enthält das ursprüngliche Java Sourceverzeichnis Dateien, die vom Entwickler bearbeitet werden können und die beim Generieren gemerged werden.

Bevor wir die erste Klasse „HausratVertrag“ definieren, stellen Sie noch ein, dass der Workspace automatisch gebaut wird (im Menü: ProjectBuild automatically).

Wechseln Sie zunächst in den Modell-Explorer von Faktor-IPS direkt neben dem Package-Explorer.

Falls der Modell-Explorer nicht sichtbar ist, liegt das daran, dass Sie diesen Workspace bereits vor der Installation von Faktor-IPS verwendet haben. Rufen Sie in diesem Fall im Menü WindowReset Perspective auf.

modell explorer
Figure 4. Ansicht der Projekte im Modell-Explorer

Im Modell-Explorer wird die Modelldefinition ohne die Java-Details dargestellt. In der Datei „.ipsproject“ sind die Eigenschaften des Faktor-IPS Projektes gespeichert. Hierzu gehören zum Beispiel die gerade im Add IpsNature-Dialog eingegebenen Informationen, Einstellungen für die Codegenerierung, die erlaubten Datentypen etc. Der Inhalt ist in XML abgelegt und ausführlich in der Datei dokumentiert.

Die Klassen werden wir in einem Package mit dem Namen „hausrat“ ablegen. Zum Anlegen des IPS Packages Rechtsklick auf das Sourceverzeichnis „model“, neuIPS Package. Danach Name des neuen Packages eingeben, „hausrat“, anschließend auf Button Finish drücken. Alternativ können Sie IPS Packages über den Button button , in der Toolbar, anlegen.

ips package
Figure 5. Anlegen eines IPS Packages

Als nächstes wollen wir eine Klasse anlegen, die unseren Hausratvertrag repräsentiert. Markieren Sie dazu das neu angelegte Package im Package Explorer und drücken auf den Button vertragsteiltyp in der Toolbar.

vertragsklasse
Figure 6. Anlegen einer neuen Vertragsklasse

In dem Dialog sind Sourceverzeichnis und Package bereits entsprechend vorbelegt und Sie geben noch den Namen der Klasse an, also „HausratVertrag“ und klicken auf Finish. Faktor-IPS hat jetzt die neue Klasse angelegt und den Editor zur Bearbeitung geöffnet. Wechseln Sie zurück in den Package-Explorer. Sie sehen, dass die Klasse „HausratVertrag“ in einer eigenen Datei mit dem Namen „HausratVertrag.ipspolicycmpttype“ gespeichert ist.

Weiterhin hat der Codegenerator von Faktor-IPS bereits zwei Java-Sourcefiles erzeugt „org.faktorips.tutorial.model.hausrat.HausratVertrag“ und „org.faktorips.tutorial.model.hausrat.HausratVertragBuilder“.

generierte klassen
Figure 7. Generierte Klassen

Ein kurzer Blick in den Sourcecode von „HausratVertrag“ zeigt, dass hier schon einige Methoden generiert worden sind. Diese Methoden dienen unter anderem zur Konvertierung der Objekte in XML und zur Unterstützung von Prüfungen.

Die Klasse „HausratVertragBuilder“ erzeugt nach dem Erbauer-Entwurfsmuster Vertragsstrukturen.