enhancement
major
minor
defect
critical
major
minor
minor
#29961
React-Anwendungen enthalten Module der klassischen Oberfläche (Self-Service, WYSIWYG-Editor, Code-Editor, Suche, Monitoring, KI-Administration)
Kontext
Eine Anwendung mit ausschließlich React-Oberfläche (tl-layout-view, Starter tl-starter-react, Archetyp tl-archetype-app mit ui=react, #29704) soll keine Module enthalten, die nur der klassischen Oberfläche dienen (klassische Layouts, Controls, CKEditor, Ace-Editor, JFreeChart-/Chart.js-Diagramme).
Fehler
Mehrere Module, die React-Anwendungen benötigen, enthielten neben ihrem oberflächenunabhängigen Teil auch die klassische Oberfläche und zogen so klassische Module in jede React-Anwendung:
- tl-layout-view-selfservice → tl-security-selfservice → tl-layout-formeditor, tl-layout-wysiwyg.
- tl-starter-react, tl-layout-react-wysiwyg, tl-service-openapi-common, tl-presentation → tl-model-wysiwyg / tl-layout-wysiwyg (CKEditor, ext-com-ckeditor).
- tl-bpe (seit #30065 ohne Oberfläche, von tl-bpe-view genutzt) → tl-model-wysiwyg (CKEditor) und über tl-xio → tl-layout-codeedit (Ace, ext-io-c9-ace).
- tl-addons-loginmessages-view → tl-addons-loginmessages → tl-model-wysiwyg (CKEditor).
- tl-model-search (TL-Script) → tl-layout-codeedit (Ace) und tl-reporting-flex (JFreeChart).
- tl-layout-view → tl-monitoring (klassische Monitoring-Oberfläche, tl-reporting-flex).
- tl-ai-core → tl-chart-chartjs (klassische KI-Administration).
- tl-parent-app gab jeder Anwendung das Test-Jar tl-layout-scripting-template (Scripted Tests der klassischen Oberfläche).
Der Archetyp lehnte außerdem useBPE=true für ui=react ab ("BPE has no React UI") und fügte für die Prozess-Engine nur die klassische tl-bpe-app hinzu, obwohl #30065 mit tl-bpe-view eine React-Oberfläche für die BPE eingeführt hat.
Lösung
Die oberflächenunabhängigen Teile sind eigene Module; die klassische Oberfläche liegt in eigenen Modulen, die nur klassische Anwendungen erhalten. Paketnamen, Ressourcenpfade und Namen der Migrationsmodule bleiben unverändert, gespeicherte Daten benötigen keine Migration.
| = Neues Modul = | = Inhalt = | = Klassischer Teil = |
| tl-security-selfservice-core | Einladungsmodell, InvitationModule (Passwort-Rücksetzung, Mail-Vorlagen), Schema, Migrationen, Entwicklerartikel authentication/self-service | tl-security-selfservice (Dialoge, Login-Hook, sendInvitation, Admin-Layouts) |
| tl-layout-wysiwyg-core | HTML-Werttyp StructuredText / I18NStructuredText, Bindungen, Label-/PDF-/Excel-Renderer, TL-Script-Funktionen | tl-layout-wysiwyg (CKEditor, StructuredTextConfigService, Controls) |
| tl-model-wysiwyg-core | Attributtypen tl.model.wysiwyg:Html / tl.model.i18n:I18NHtml, Speicherung, Migrationen, Attribut-Einstellungen ohne Oberfläche | tl-model-wysiwyg (Field-/Tag-Provider, Report-Controls) |
| tl-monitoring-core | Log-Parser für die Log-Ansicht der React-Oberfläche, Migrationen | tl-monitoring |
| tl-addons-loginmessages-core | Modell und TL-Script-Funktionen der Login-Meldungen | tl-addons-loginmessages (Login-Hook LoginMessagesHook, Layouts, Theme) |
| tl-model-search-classic | – (klassischer Teil) | Modellbasierte Suche, Script-Konsole, Ace-TL-Script-Editor; bringt tl-layout-codeedit und tl-reporting-flex mit |
| tl-ai-classic | – (klassischer Teil) | Agenten-Editor, Aktivitätsmonitor, Richtlinien-Editor der klassischen Oberfläche; bringt tl-chart-chartjs mit |
| tl-xio-classic | – (klassischer Teil) | Kommando XMLImportCommand (XML-Import mit Ace-Editor); bringt tl-layout-codeedit mit |
Weitere Änderungen:
- Der persistente Typ tl.reporting:FlexReport (gespeicherte Suchen) liegt in tl-reporting-common, damit bestehende Datenbanken von React-Anwendungen ihn weiter enthalten.
- tl-starter-react enthält tl-model-wysiwyg-core; tl-starter-classic enthält zusätzlich tl-model-wysiwyg und tl-model-search-classic; tl-layout-formeditor bringt tl-model-search-classic, tl-chat-classic bringt tl-ai-classic mit.
- tl-bpe hängt von tl-model-wysiwyg-core ab; den HTML-Editor der klassischen Formulare bringt tl-bpe-classic mit.
- Der Archetyp fügt für die Prozess-Engine (useBPE, jetzt für jede Oberfläche standardmäßig an) tl-bpe-view hinzu, wenn die Anwendung eine React-Oberfläche hat, und tl-bpe-app, wenn sie eine klassische hat.
- Das Test-Jar tl-layout-scripting-template deklarieren nur Anwendungen mit klassischen Scripted Tests; der Archetyp fügt es für ui=classic und ui=both ein.
- Der Konfigurationseditor der React-Oberfläche (tl-layout-configedit) wertet Annotationen einer Konfigurationseigenschaft über die in der Anwendung konfigurierten Annotation-Anpassungen aus (wie der klassische EditorFactory). So erhält z. B. die Eigenschaft "features" der WYSIWYG-Konfiguration ihre Auswahl aus der Konfiguration des klassischen Moduls.
- Der Integrationstest des Archetyps prüft die aufgelösten Abhängigkeiten: die React-Beispielanwendung (alle Optionen, auch useBPE) enthält keines der klassischen Module, die klassischen Beispielanwendungen enthalten sie.
Test
- mvn dependency:list einer mit dem Archetyp erzeugten Anwendung (ui=react, alle Optionen) enthält keines der Module tl-layout-formeditor, tl-security-selfservice, tl-layout-wysiwyg, tl-model-wysiwyg, ext-com-ckeditor, tl-layout-codeedit, ext-io-c9-ace, tl-reporting-flex, tl-monitoring, tl-chart-chartjs, tl-model-search-classic, tl-ai-classic, tl-xio-classic, tl-addons-loginmessages, tl-bpe-classic, tl-bpe-app, tl-bpe-modeler, tl-layout-scripting-template; der Abhängigkeitsbaum von tl-demo-react enthält weder tl-model-wysiwyg noch tl-layout-wysiwyg noch ext-com-ckeditor.
- React-Anwendung: Passwort vergessen, HTML-Attribut bearbeiten (TipTap), TL-Script-Code-Editor, Log-Ansicht, Login-Meldungen funktionieren.
- Klassische Anwendung (tl-demo): Modellbasierte Suche mit Ace-Editor, Script-Konsole, CKEditor, Monitoring-Diagramme, Einladungen, Passwort-Rücksetzung, XML-Import funktionieren.
Migration
Anwendungen, die tl-starter-classic, tl-layout-formeditor bzw. tl-chat-classic verwenden, müssen nichts ändern.
Anwendungen mit klassischer Oberfläche, die ihre Module einzeln deklarieren und keines dieser Module verwenden, ergänzen je nach genutzter Funktion:
- tl-model-search-classic: Modellbasierte Suche, Script-Konsole, Ace-Editor für TL-Script-, Code- und JSON-Attribute sowie @Code-Konfigurationseigenschaften. Fehlt das Modul, werden diese Attribute ohne Code-Editor bearbeitet, ohne Fehlermeldung.
- tl-model-wysiwyg: CKEditor für HTML-Attribute (bisher u. U. über tl-starter-react, tl-service-openapi-common oder tl-bpe erhalten).
- tl-ai-classic: klassische KI-Administration (bisher Teil von tl-ai-core).
- tl-monitoring: klassische Monitoring-Oberfläche (bisher über tl-layout-view erhalten).
- tl-xio-classic: das Kommando com.top_logic.xio.command.XMLImportCommand (bisher Teil von tl-xio); Klassenname und Konfiguration bleiben unverändert.
Anwendungen, die tl-addons-loginmessages verwenden, müssen nichts ändern; das Modul bringt tl-addons-loginmessages-core mit.
Eigener Code, der Klassen der klassischen Teile verwendet (z. B. SearchSelectorComponent, TLScriptCodeEditorControl, StructuredTextControl, StructuredTextConfigService), benötigt das jeweilige klassische Modul als Abhängigkeit; Paket- und Klassennamen sind unverändert.
Entfallene transitive Abhängigkeiten: tl-model-search bringt tl-reporting-flex (JFreeChart-Berichte, Klassen unter com.top_logic.reporting.flex) und tl-layout-codeedit nicht mehr mit, tl-ai-core bringt tl-chart-chartjs (Chart.js-Diagramme der klassischen Oberfläche) nicht mehr mit. Eine Anwendung, die diese Module bisher nur darüber erhielt, deklariert sie selbst oder bindet tl-model-search-classic bzw. tl-ai-classic ein.
Anwendungen mit klassischen Scripted Tests (*.script.xml), die nicht vom Archetyp erzeugt wurden, deklarieren das Test-Jar selbst: {{{#!xml <dependency> <groupId>com.top-logic</groupId> <artifactId>tl-layout-scripting-template</artifactId> <type>test-jar</type> <scope>test</scope> </dependency> }}}