enhancement
major
minor
major
minor
major
#29704
tl-archetype-app: Neue Anwendung standardmäßig mit React-Oberfläche erzeugen, klassische Oberfläche per Option
Kontext
Der Archetyp tl-archetype-app erzeugt eine Anwendung, die ausschließlich die klassische Layout-Oberfläche (*.layout.xml) nutzt. Die React-Oberfläche (com.top_logic.layout.view, *.view.xml) ist nicht eingebunden: Das erzeugte pom.xml hat keine Abhängigkeit auf tl-layout-view, es gibt kein WEB-INF/views/app.view.xml.
Wer eine Anwendung auf die React-Oberfläche bringen will, muss den Aufbau aus com.top_logic.demo.react zusammensuchen. Die Demo ist dafür ungeeignet, weil sie Hunderte Zeilen Demo-spezifischer Konfiguration enthält.
Erweiterung
Der Archetyp erzeugt standardmäßig eine Anwendung mit lauffähiger React-Oberfläche. Die neue Option ui wählt die Oberfläche:
- react (Vorgabe): React-Module tl-layout-view, tl-layout-view-contact, tl-layout-react-codeedit, tl-layout-react-wysiwyg, tl-model-wysiwyg, tl-model-search-react, tl-react-flow-server und tl-dev-tools (Modelleditor). Die Anwendung enthält eine Overlay-WEB-INF/views/app.view.xml, die den Anwendungsnamen in Sidebar und App-Bar setzt; Einstieg ist /view/ (Vorgabe von tl-layout-view). Die nur für die klassische Oberfläche nötigen Module (tl-themes-core, tl-layout-scripting-template, tl-layout-formeditor, tl-layout-themeedit, tl-graph-diagramjs-server, tl-graphic-blocks-server, tl-monitoring, tl-doc) und der Ordner WEB-INF/layouts entfallen.
- classic: die bisherige Anwendung mit klassischer Oberfläche.
- both: beide Modulgruppen; Einstieg über die React-Oberfläche, die klassische Oberfläche bleibt unter /servlet/LayoutServlet erreichbar (Migrationspfad, nötig für BPE).
Die bestehenden Optionen folgen der Oberfläche: useChartJS bindet tl-chart-chartjs (klassisch) bzw. tl-layout-react-chartjs (React) ein, useSelfService tl-security-selfservice bzw. tl-layout-view-selfservice. Die Prozess-Engine (useBPE) hat nur eine klassische Oberfläche: Vorgabe false bei ui=react; ui=react mit useBPE=true sowie ein unbekannter Wert von ui brechen die Erzeugung mit einer Meldung ab. Das Post-Generate-Skript entfernt die Dateien der nicht gewählten Oberfläche.
Da tl-factory Anwendungen mit den Vorgaben des Archetyps erzeugt, erhalten auch deren Anwendungen künftig die React-Oberfläche.
Die Umstellung der Projektstruktur (BOM statt Parent-POM, Feature-Starter, KI-/SSO-Module, Fragment-Module) ist Gegenstand von #29956.
Test
Der Integrationstest des Archetyps erzeugt und baut (mit Tests) je eine Anwendung mit ui=react, ui=classic und ui=both. Manuell: Anwendung mit den Vorgaben erzeugen (mvn org.apache.maven.plugins:maven-archetype-plugin:3.4.1:generate -DarchetypeGroupId=com.top-logic -DarchetypeArtifactId=tl-archetype-app ...), bauen und starten; nach der Anmeldung erscheint die React-Hülle mit dem Anwendungsnamen.