TopLogic - the automated application engine
  • Releases
  • Dokumentation
  • Github
  • Discord
  1. Home
  2. Releases
  3. TL_7.5.0-M4
  4. #26461

7.5.0-M4
TopLogic Release

2022-09-28

Verbesserung

Wichtig
#26626
Systematisches Logging für Kafka
#26864
Passwort-Änderung bei Passwort-Vergabe durch Administrator erzwingen
#26893
Optionale Abhängigkeiten zwischen Services (ManagedClass)
#26905
Lösch-Callback am Fachobjekt
#26920
Wertvorschläge für Zahlen- und Zeichenketten-Attribute
#26959
Drag&Drop: Verallgemeinerung der DropByExpression-API
Detail
#26549
Formulartabellen: Anpassung Standardspalten
#26755
CKEditor auf Version 4.19.1 updaten
#26858
Aufrufe von ModelBuilder.supportsModel() reduzieren
#26871
Vereinfachte Mail-Konfiguration für IMAPS und SMTPS
#26872
Wählbare ID-Spalte am Typ
#26887
Datenbank-Passwörter verschlüsselt angeben
#26889
Pepper im Argon Hashing verschlüsseln
#26913
Performance beim Löschen mehrerer Objekte verbessern
#26917
Standardauswahl für Wertvorschläge: Optionen über Ausdruck
#26918
Implementierungen für in-app Annotationen priorisieren
#26938
Allow configuring control tag and CSS classes for all configurable control renderers
#26946
Resource-Path der Anwendung in den Umgebungsvariablen anzeigen
#26953
Icon-Bibliothek: Bootstrap Icons
Kleinigkeit
#26914
Alias und System Properties für ZooKeeper Port und Kafka Port

Fehlerbehebung

Detail
#23801
Labelberechnung im Excelexport berücksichtigt Tabellenkonfiguration nicht
#24788
Fehlendes Deployment von top-logic.js und CSS für Production-Mode
#25322
Formularfeld für mandatory DateTime Attribut fälschlich als geändert markiert
#25612
Modell Editor zeigt bei Änderungen von Referenzen Verknüpfungsenden in der Attributtabelle an
#25613
BPE: Anlage neuer Prozessinstanzen mit Pflichtfeldern nicht möglich
#25652
In-App-Modellierung: Rückreferenzen von Kompositionen werden als multiple=true angelegt
#25732
Modellbasierte Suche: Eingabevalidierung: Filterabfrage führt zu NullpointerException
#25858
Modell-Editor läd bei Script-Ausführung Seite neu
#26396
Drag and Drop: Icon aus Tabellenheader in Drop-Zone: NPE
#26406
WYSIWYG YouTube Plugin hat Probleme beim Einbetten
#26441
Keine Session-Invalidierung beim Login- und Passwort-Änderungsprozess
#26447
Überprüfungen von Referenzen: Werden nur im Formular geprüft, nicht beim Commit
#26461
Überschriebenes Attribut erbt zwingend Anpassung "Standardwert"
#26484
In-App Template für Grid und Tabellen: Funktion "Prüfer für Benutzung als Listenelement" bekommt Komponentenmodell nicht
#26529
Modellübernahme in Entwicklungsumgebung: ResKeys verbleiben in dynamic Properties
#26554
Berechnete Webfoldern-Referenzen löschen Ordner beim Löschen des Basisobjektes
#26569
Fehlende Constraint-Violation beim Löschen von Objekten die von Pflichtfeldern referenziert werden
#26583
Encodingprobleme in Hinweisseite auf Systemüberlastung
#26584
Wikiformatierung in mehrzeiligen Text-Attributen / -Textfeldern kaputt
#26587
Optionprovider aktualisieren berechnete Wertvorschläge nicht
#26691
Webfolder: Fehlerhaftes Verhalten mehrfacher Upload-Dateiauswahl
#26730
Spalten-Definitionen werden für Compositionstabellen nicht angewendet
#26750
Drop von Nicht-TL-Objekt auf Tabellen und Bäume verbieten
#26836
StackOverflow durch Konfigurationsfehler: Berechnetes String Attribut liefert Integer
#26852
ApplicationTesting: Keine zwei Sessions für denselben Nutzer im JUnit-Test möglich
#26853
EditComponent verliert Edit-Mode nach Löschung
#26856
Fehlende Dokumentationsanpassung zu new + Kontext
#26857
Inkonsistente "source" Properties in Dokumentationsseiten
#26859
Verschiedene Eclipse Einstellungen korrigieren
#26865
Fehlender Selektionsmarker in Kompositionstabellen
#26866
Instanz-Browser: Neues transiente Objekt zeigt Typ nicht an
#26867
Konfiguration verwendet unverschlüsseltes SMTP- und IMAP-Passwort
#26868
Animation beenden wenn Tabelle von der GUI abgeräumt wird
#26870
Inaktiver Scheduler crasht die Anwendung
#26873
Application-Monitor "Umgebungsvariablen" zeigt u.U sicherheitskritische Werte an
#26874
Service Editor zeigt "secret" des OpenID Services an
#26880
Auswahl von Icons im Icon-Chooser ist nicht skriptbar
#26883
Drag Vorschaubild im Script-Recorder benutzt Label nicht
#26884
Deklarative Formulare: Fehlendes GUI update bei programmatischen Änderungen eines List-wertigen Property
#26885
Constraints an deklarativen Formularen mit Argumenten aus einer Container-Referenz führen bei neuen Elementen zu Fehlern
#26890
Überschriebene Eigenschaften werden beim Booten aus Modelldefinition nicht richtig initialisiert
#26891
Ruckelnde Tabelleninhalte in FrozenTables
#26894
Fehlende Abhängigkeit ModelBasedSearch -> SearchBuilder
#26895
Fehlende Abhängigkeit MailServer -> MailReceiverService
#26896
DnD: Drop-Operation mit Drop-Type "child" auf Tabelle erhält das falsche Zeilenobjekt
#26903
Unter ungünstigen Umständen Daten aus zukünftigen Revisions sichtbar in AssociationCache's
#26904
CSS-Editor funktioniert nicht mit Top-Logic Theme-Variablen
#26906
Default-Annotationen lassen sich nicht vom Attributtyp erben
#26911
OutOfMemoryError bei App-WAR-Erzeugung
#26922
Mit generierten Fachklassen erhält ein Default-Provider eines Attributs in einer Nicht-Struktur-Klasse keinen Create-Context
#26923
ModelNamingSchemes bekommen teilweise "value context" nicht
#26924
Horizontal dargestellte Radio-Button-Selektion ragt über Formulargrenzen hinaus
#26925
BreadCrumbs aktualisieren sich nicht, wenn innere Tabbars nicht sichtbar sind
#26926
Seltene ArrayIndexOutOfBoundsException bei Tabwechsel
#26928
Ausgeblendete Komponente erscheint nicht mehr, obwohl sie ein unterstütztes Modell bekommt
#26929
Scripting-Recorder: In Project-Demo werden keine Templates geladen
#26934
Update yFiles auf Version 2.4.0.6
#26939
Geänderte Reihenfolge der Standardspalten in neuer Tabelle
#26942
Frozen-Table: Drag der Selektion enthält Duplikate
#26945
Inkonsistenter Lock-Timeout beim Applikationsstart
#26957
Kein Update der Knoteneigenschaften nach Modelländerung
#26960
Terminplan: Automatische Kollisionsvermeidung funktioniert nicht
#26965
Theme-Icon mit Wert "none" wird nicht richtig aufgelöst
#26972
Scripting-Recorder: Stoppt Ausführung nach Neuladen der Seite
#26988
In-App-Dokumentations-Generator extrahiert keine Dokumentation für überschriebene Config-Properties
#26996
ChartJS Update auf 3.9.1
#26997
JSoup Update auf 1.15.3
#26998
Update Batik Graphics auf 1.15
Fehlerbehebung

Detail

#26461

Überschriebenes Attribut erbt zwingend Anpassung "Standardwert"

Code-MigrationModelEditorTLModel

Eine Klasse A definiert ein String Attribut "s" und annotiert dafür einen Standard-Wert "v". D.h. bei der Erzeugung einer Instanz von A wird das Attribut "s" mit dem Wert "v" belegt.

Eine Klasse B erbt von A, überschreibt das Attribut "s" und annotiert nun **anstatt** des Standardwerts eine Speichervorschrift, die den Wert von "s" berechnet.

Das funktioniert zunächst einwandfrei.

Wird diese Modellkonfiguration aber exportiert und anschließend reimportiert oder eine leere Datenbank damit initialisiert, erhält das überschriebene Attribut "s" an der Klasse B immer beides: sowohl den Standardwert (geerbt von A), als auch die Speichervorschrift (annotiert an B).

Damit schlägt die Erzeugung von Instanzen der Klasse B fehl, weil der Standardwert für berechnete Attribute nicht gespeichert werden kann.

Das Problem kann man in-App beheben, indem man im Modelleditor die Annotation "Standardwert" an dem überschriebenen Attribut wieder entfernt.

Diese Änderung wird jedoch im Export nicht abgebildet bzw. geht beim reimport verloren.

Analyse

Aktuell werden bei der der Anlage eines neuen überschriebenen Attributs implizit alle Annotationen kopiert. Das geschieht unabhängig davon, ob das Attribut an der GUI angelegt oder über XML importiert wird. Daher hat das Löschen einer solchen implizit angelegten Annotation in der Anwendung keine Auswirkungen auf den Export und Re-Import.

Verbesserung

Annotationen werden bei der Anlage überschriebener Attribute nicht mehr kopiert. Stattdessen wird beim Nachschlagen von Annotationen ein weiterer Fallback eingebaut, der eine Annotation am überschriebenen Attribut als Fallback heranzieht, bevor die entsprechende Annotation im Attributtyp verwendet wird. Pro Annotationstyp lässt sich dieses Verhalten aber über die Meta-Annotation @AnnotationInheritance mit der Policy inherit, redefine oder final steuern. Die bisherige Meta-Annotation @CanNotOverride entfällt und wird durch die Annotation-Inheritance-Policy final ersetzt.

Code-Migration

  • Sollte die Anwendung ein überschriebenes Attribut definieren, das den Standardwert unverändert von seinem Original-Attribut erben soll, muss in der Modelldefinition dieser Standardwert am überschriebenen Attribut wiederholt werden. Beim Exportieren des Modells aus einer laufenden Anwendung mit einem Datenstand von vor der Änderung bewirkt diese Migration automatisch.

Test

  • /com.top_logic.demo/src/test/java/test/com/top_logic/demo/scripted/model/attribute/defaultValue/TestOverridingDefaultWithDerived.script.xml

Manuell:

  • Beiliegende Konfiguration importieren.
  • Es können (Instanzenreiter) keine Instanzen vom Typ B erzeugt werden.
  • Im Modelleditor die Annotation "Standardwert" am Attribut B::constantValue löschen.
  • Danach funktioniert die Erzeugung von Instanzen des Typs B.
  • Das Modul nun exportieren.
  • Alle erzeugten Instanzen und das Modul löschen.
  • Das zuvor exportierte Modul wieder importieren.

-> Erwartung: Keine Veränderung, Anlage von Bs funktioniert weiterhin.

-> Ist: Die Annotation "Standardwert" an B::constantValue wurde wieder erzeugt. Es können keine Bs angelegt werden.

  • Get Started
  • Github
  • Discord
  • Das Unternehmen hinter TopLogic
  • Softwareentwicklung heute
  • Kontakt

© Copyright – Business Operation Systems GmbH

  • top-logic.com
  • Nutzungsbedingungen
  • Impressum
  • Rechtlicher Hinweis
  • Datenschutz
  • EN
  • Login