Faktor-IPS Product Designer Archetype

Motivation

Um sein eigenes Produktprojekt mit dem Faktor-IPS Product Designer zu verwenden, muss die Spring-Boot-Anwendung lokal ausgeführt werden. Dieser Maven-Archetype hilft dabei, alle wichtigen Einstellungen zu treffen.

Voraussetzungen zur Verwendung

  • Java 21

Durchführung

Generierung des Faktor-IPS Projekts

Ausführen in der Kommandozeile:
mvn archetype:generate -DarchetypeGroupId=org.faktorips.productdesigner -DarchetypeArtifactId=productdesigner-maven-archetype -DarchetypeVersion=<version>

Anschließend werden benötigte Parameter abgefragt.

Aus Eclipse heraus:

Da der Faktor-IPS Product Designer mit Java 21 gebaut wurde, muss das Eclipse mindestens in der Version 2023-12 verwendet werden. Um ein Faktor-IPS Product Designer Projekt zu erstellen, klickt man auf DateiNeuProjekt…​Maven Projekt. Im ersten Dialog des Wizards darauf achten, dass nicht Erstellen Sie ein einfaches Projekt angehakt ist. Auf der nächsten Seite des Wizards kann nach "org.faktorips.productdesigner" gefiltert werden, und die gewünschte Archetype-Version und somit die gewünschte Faktor-IPS Product Designer Version ausgewählt werden:

Dependencies

Auf der nächsten Seite können dann die Basis-Parameter für das neu anzulegende Projekt eingegeben werden:

Dependencies

Wenn die Checkbox run archetype generation interactively nicht angehakt ist, muss man in der Eclipse-Console nicht mit der Tastatur bestätigen, sondern das Projekt wird gleich erstellt.

Verwendete Parameter

… für das Generieren des Projekts

  • groupId: die Group-ID des Maven-Projekts

  • artifactId: die Artifact-ID des Maven-Projekts

  • version: die Version des Maven-Projekts

  • package: die grundlegende Package-Struktur, z.B. org.faktorips.example

  • PD-ApplicationName: der Name der Applikation, und der Spring-Boot-Klasse ohne dem postfix Application z.B. Hausrat wird zu HausratApplication.java

  • IPS-ProductProjectPath: der Pfad zum Produktprojekt, das bearbeitet oder angezeigt werden soll

  • IPS-ModelDependencyGroupId: die Group-ID für die Abhängigkeit zum Modellprojekt

  • IPS-ModelDependencyArtifactId: die Artifact-ID für die Abhängigkeit zum Modellprojekt

  • IPS-ModelDependencyVersion: die Version für die Abhängigkeit zum Modellprojekt

  • IPS-AdditionalRepos: NONE, falls das Produktprojekt von weiteren Produktprojekten abhängt, kann hier eine Factory-Klasse angegeben werden, oder NONE, wenn es keine weiteren Abhängigkeiten gibt

  • readOnlyMode: ob der Produktdesigner im Read-Only-Modus gestartet wird

Additional Repositories

Falls ein Produktprojekt von anderen Produktprojekten beziehungsweise von anderen Repositories abhängt, kann dies über eine Factory-Klasse konfiguriert werden.

Dependencies
import org.faktorips.runtime.ClassloaderRuntimeRepository;
import org.faktorips.runtime.formula.groovy.GroovyFormulaEvaluatorFactory;

public class ErwProduktRuntimeRepositoryFactory {
    public static final ClassloaderRuntimeRepository INSTANCE = ClassloaderRuntimeRepository
            .create("erw-produkt/internal/faktorips-repository-toc.xml");

    static {
        // Enum-Content im Modell Projekt
        INSTANCE.addDirectlyReferencedRepository(ErwModellRuntimeRepositoryFactory.INSTANCE);
        INSTANCE.setFormulaEvaluatorFactory(new GroovyFormulaEvaluatorFactory());
    }

    private RuntimeRepositoryFactory() {
        // Soll nicht instanziiert werden
    }
}

Ebenfalls muss das pom.xml um das erweiterte Produkt ergänzt werden.

       <dependency>
            <groupId>de.faktorzehn</groupId>
            <artifactId>modell</artifactId>
            <version>1.0.0</version>
       </dependency>
       <!-- Erw-Produkt händisch hinzufügen -->
       <dependency>
            <groupId>de.faktorzehn</groupId>
            <artifactId>erw-produkt</artifactId>
            <version>1.0.0</version>
       </dependency>