mvn archetype:generate -DarchetypeGroupId=org.faktorips \
-DarchetypeArtifactId=faktorips-maven-archetype \
-DarchetypeVersion={faktorips-version} \
-DgroupId=org.faktorips.tutorial -DartifactId=grundmodell \
-Dversion=1.0 -Dpackage=org.faktorips.tutorial.model -DJavaVersion=21 \
-DIPS-Language=de -DIPS-IsModelProject=true -DIPS-IsProductDefinitionProject=false \
-DIPS-SourceFolder=model -DIPS-RuntimeIdPrefix=grundmodell. -DIPS-ConfigureIPSBuild=true
Partitionierung von Modellen mit Faktor-IPS
Anlegen der Modelle in Faktor-IPS
Im Folgenden sehen wir, wie wir diese Trennung in Faktor-IPS abbilden. Auf die grundsätzlichen Konzepte und Bedienung von Faktor-IPS wird dabei nicht näher eingegangen; diese sind im Einführungstutorial zu Faktor-IPS erläutert.
Grundmodell anlegen
Für das Grundmodell legen wir über den maven-archetype ein eigenes Maven-Projekt an.
Das Modell wird gemäß dem folgenden UML-Diagramm modelliert, wobei zu beachten gilt die Klassen abstrakt zu markieren, da die spartenspezifische Logik erst in den Subklassen der Spartenmodelle implementiert wird.
Hausratmodell anlegen und Vererbung vom Grundmodell
Für die Sparten Hausrat und Kfz legen wir jeweils eigene Projekte an, in denen wir die spartenspezifischen Eigenschaften modellieren. Exemplarisch dargestellt wird es im Folgenden am Spartenmodell für Hausrat.
Hierzu legen wir analog zum Grundmodell das Hausratmodell Maven-Projekt an:
mvn archetype:generate -DarchetypeGroupId=org.faktorips \
-DarchetypeArtifactId=faktorips-maven-archetype \
-DarchetypeVersion={faktorips-version} \
-DgroupId=org.faktorips.tutorial -DartifactId=hausratmodell \
-Dversion=1.0 -Dpackage=org.faktorips.tutorial.hausratmodel -DJavaVersion=21 \
-DIPS-Language=de -DIPS-IsModelProject=true -DIPS-IsProductDefinitionProject=false \
-DIPS-SourceFolder=model -DIPS-RuntimeIdPrefix=hausrat. -DIPS-ConfigureIPSBuild=true
Um im Hausratmodell sowohl auf das IPS-Modell als auch auf den generierten Java-Code des Grundmodells zugreifen zu können, fügen wir in der pom.xml des Hausratmodells eine Maven-Abhängigkeit auf das Grundmodell hinzu:
<dependency>
<groupId>org.faktorips.tutorial</groupId>
<artifactId>grundmodell</artifactId>
<version>1.0</version>
</dependency>
Das Hausratmodell wird gemäß dem folgenden UML-Diagramm modelliert, wobei die Klassen auf der linken Seite als Vertragsteilklassen und die auf der rechten Seite als Produktbausteinklassen modelliert werden:
Da der HausratVertrag auch die Eigenschaften der Klasse Vertrag erben soll, tragen wir im Dialog beim Anlegen der jeweiligen Klassen direkt die entsprechende Superklasse aus dem spartenübergreifenden Modell ein. Für HausratVertrag sieht das im Editor wie folgt aus:
Die weiteren Vererbungsbeziehungen zwischen Klassen des Grund- und spartenspezifischen Modells werden gemäß des folgenden UML-Diagramms angelegt: