TopLogic - the automated application engine
  • Releases
  • Dokumentation
  • Github
  • Discord
  1. Home
  2. Releases
  3. TL_8.0.0-alpha7
  4. #29349

8.0.0-alpha7
TopLogic Release

2026-07-30

enhancement

critical
#29088
Model-based access rights
#29108
Lightweight UI definition layer (TL Views) based on React UI-Components
major
#28694
Beschreibung von Modellteilen als formatierter Text (Rich Text)
#28708
Standard-Selektion in (Baum-)Tabellen und Grids per TL-Script berechenbar machen
#29102
Add com.top_logic.layout.react module for React/SSE integration
#29221
Automatische Bestimmung möglicher Berechtigungskonfigurationen
#29349
XML-Parse-Funktionen für TL-Script über XMLImporter
#29374
TL-Script: gzip()
#29389
Code-Completion für Variablen ($) im TL-Script-Editor
#29396
Conversation display for TL Views: object-list element, file chips, card panels
#29399
Info-Service-Meldungen: unten statt oben anzeigen und beim Überfahren mit der Maus fixieren
#29400
Introduce a first-class application "operation mode" service (OperationMode enum + ApplicationModeService)
minor
#29085
Neu einloggen bei Session Timeout anstatt Redirect zur Login-Seite
#29089
TL-Script-Funktionen log() und info() um wählbaren Meldungs-Level (INFO, WARN, ERROR) erweitern
#29195
Probleme mit HTML-Attributen und TL-Script
#29306
TL Script: dateFormat() should accept an explicit timezone to format Calendar values losslessly
#29382
Expose a public classpath-driven Workspace.getAppPaths overload
#29385
App archetype should scaffold a standard git-ignored local-credentials overlay (tl_config) by default
#29392
Transaktionsabbruch bei Nicht-2xx Response
#29398
Login-Maske: Statt "Name" besser "Benutzername"

defect

major
#29383
Dead SOCKET_APPENDER (Chainsaw, localhost:4445) in default logging config can stall logging and abort operations under load
#29384
TL-Script resetSequence/generateSequenceId build a different sequence id than SequenceDefaultProvider (suffix/context order), so they cannot reset a provider-managed sequence with a dynamic context
#29394
Editable tables in the React UI: generalized row-set bindings for tabular editing in forms
#29410
Attribut filename der Structured-Text-Bildablage case-sensitive (binär) speichern
#29419
Understandable save failures and form validation feedback in the React view layer
minor
#28816
Referenzwertige Attribute erzeugen Fehler nur bei SingleSelection
#29359
Unsinniger Tooltip bei einigen Hauptreitern
#29360
Sporadische Fehlermeldung im Log: "mainLayout" ist null.
#29361
Invalide Datenbankdefinition für Tag
#29363
Fehlende Validierung von Dialogen bei GOTOs zu Dialogen von unsichtbaren Parents
#29380
Kontextabhängige Auto-Nummerierung schlägt fehl, wenn Kontext und nummeriertes Objekt in einer Transaktion erzeugt werden
#29381
Doppelklick in Grafikkomponente funktioniert nicht zuverlässig
#29390
Teilbaum-Auswahl endet zu früh, wenn die unterste Ebene vom Ebenen-Filter nicht mitgezählt wird
#29393
URL-Routing der React-View-Schicht defekt: ForwardingReactContext delegiert getRouteManager() nicht
#29401
Bilder in einem Bild-Drop-Feld können nicht über das Browser-Kontextmenü kopiert/gespeichert werden
#29402
Baum-Selektion geht bei Aktualisierung der Ansicht (invalidate) verloren
#29412
Flaky TestDynamicComponentService.testIncrementalUpdates: asserts on asynchronous WatchService event after a fixed 10ms sleep
#29416
Anzeige des Änderungslogs schlägt fehl, wenn parallel Änderungen committet werden
#29420
FlowDiagram: Fehlerfall im row-wise Sub-Grid: subGridCols=2 und subGridStartCol=1
#29426
FlowDiagram: Text in PDF-eingebettetem Diagramm ist nicht selektierbar

task

major
#29407
Security-Scan: npm-Abhängigkeiten der React-Module aktualisieren
#29408
Security-Scan: httpcore5 anheben; pdfbox-/azure-Findings bewerten
minor
#29415
Slim down the repository CLAUDE.md and consolidate developer guidance into skills and FAQ articles
enhancement

major

#29349

XML-Parse-Funktionen für TL-Script über XMLImporter

TLScript

XML parsing in TL-Script via `XMLImporter`

The declarative XML import (com.top_logic.xio.importer.XmlImporter) can now be exposed as a TL-Script function. This complements the interactive XMLImportCommand (upload dialog): the same import declaration can be invoked from any TL-Script context (buttons, operations, derived values, …) to parse an XML stream into an object graph.

Defining a parse function

The function is a configured, generic method builder (com.top_logic.xio.importer.expr.ParseXml$Builder). Each registration embeds its own import declaration (a DispatchingImporter, i.e. the same XML you would put into an XMLImportCommand's import-definition) and gives the function a name. Register it as a method of the model-search service, e.g. in an application *.config.xml:

{{{#!xml <config service-class="com.top_logic.model.search.expr.config.SearchBuilder">

<instance>
<methods>
<method name="parseLibrary"
class="com.top_logic.xio.importer.expr.ParseXml$Builder">
<dispatch>
<-- the XML-import declaration (tags, objects, properties, linkings) -->
</dispatch>
</method>
</methods>
</instance>

</config> }}}

Because the import declaration is part of the configuration, you typically register one named function per import format.

Calling the function

parseLibrary($data, context: `my.module#ROOT`, transient: false)

Arguments:

  • data (mandatory): the XML input as binary data / stream (e.g. the value of an upload field). null yields null.
  • context (optional, default none): an object that is made available to the import as its top-level scope (assigned to the implicit this variable; top-level object handlers use it as their scope). This replaces the need to hard-code the import root via an <in-scope expr="…"> handler — the caller supplies it at runtime instead.
  • transient (optional, default false): when true, the graph is built from transient objects (post-process it yourself); when false, objects are created persistently in the application model.
  • logCreations (optional, default true): log each created object to the application log.

The function returns the top-level object produced by the import.

Transactions (persistent import)

With transient: false the function creates persistent objects in the ambient script transaction (exactly like createObject); it does not open or commit a transaction itself. Invoke it from a transactional context — e.g. a TransactionHandlerByExpression / a command handler configured to run in a transaction — so the changes are committed by the caller.

Typical use: "upload and parse" dialog

To let a user upload a file and run the function, use the standard "script-with-arguments" dialog: a small (transient) input type that declares a binary attribute, opened via the transaction.template, with a TransactionHandlerByExpression whose operation calls the parse function:

form -> model -> parseLibrary(
    $form.get(`my.forms:ImportInput#data`),
    context: `my.module#ROOT`,
    transient: false)

A complete, runnable example is wired into tl-demo (drag-and-drop library grid): input type tl.demo.forms:ImportXmlInput, the registration in demoImportXmlScript.config.xml, and the dialog importLibraryScriptDialog.layout.xml.

Related change: `XMLImportCommand`

For consistency, XMLImportCommand now also provides its target model as the import context (previously the target was only available afterwards via the post-processing function). Existing importers are unaffected; declarations that relied on a hard-coded <in-scope> continue to work, and may now alternatively rely on the supplied context.

----

Original requirement

XMLImporter stellt eine Deklarationssprache für den Import von Objekt-Graphen aus XML bereit. Ein MethodBuilder erzeugt eine TL-Script-Funktion unter Einbeziehung einer Konfiguration. Ein generischer XMLParserMethodBuilder könnte die XML-Import-Deklaration enthalten, und eine Script-Funktion erzeugen, die bei Aufruf aus der Deklaration einen XMLImporter instanziiert und eine übergebenen Strom als XML parst.

  • 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