Wichtig
Detail
Wichtig
Detail
Detail
#26797
Transaktion mit Nutzereingabe: Unsichtbare Eigenschaften des Formularmodells können nicht mit Werten belegt (initialisiert) werden
Hintergrund
Bei einer "Transaktion mit Nutzereingabe" wird die Nutzereingabe (zur Formulardefinition, welche Werte soll der Nutzer eingeben können) als eigener Modelltyp beschrieben. In der "Initialisierung" wird dieser Modelltyp mit Werten aus dem Zielmodell befüllt (Felder vorbelegt).
Jetzt möchte man während der "Initialisierung" an diesem Modelltyp zur Formulardefinition ggfs. zusätzliche Informationen speichern, die dem Nutzer nicht angezeigt und auch nicht vom Nutzer eingegeben werden sollen: Beispielsweise sollen in der "Initialisierung" bestimmte Eigenschaften des Zielmodells an dem Formularobjekt gespeichert werden, um sie in einem Constraint am Formularmodell zur "Überprüfung" der späteren Nutzereingabe zu verwenden oder "Wertvorschläge" dafür zu annotieren.
Problem
Solche Attribute, die in dem Formular zur Nutzereingabe nicht angezeigt werden (entweder nicht Teil des Formulars oder als "versteckt" deklariert sind), können in dem Ausdruck zur "Initialisierung" nicht mit Werten belegt werden:
Caused by: java.lang.IllegalStateException: Attribute 'tl.contract.offer:OfferStateChangeForm#permittedValues' cannot be modified. at com.top_logic.element.meta.form.overlay.FormObjectOverlay.tUpdate(FormObjectOverlay.java:449) at com.top_logic.model.search.expr.DynamicSet.eval(DynamicSet.java:92) at com.top_logic.model.search.expr.GenericMethod.internalEval(GenericMethod.java:107) at com.top_logic.model.search.expr.SearchExpression.evalWith(SearchExpression.java:95) at com.top_logic.model.search.expr.SearchExpression.eval(SearchExpression.java:54) at com.top_logic.model.search.expr.Block.internalEval(Block.java:43) at com.top_logic.model.search.expr.SearchExpression.evalWith(SearchExpression.java:95) at com.top_logic.model.search.expr.Lambda.internalEval(Lambda.java:82) at com.top_logic.model.search.expr.SearchExpression.evalWith(SearchExpression.java:95) at com.top_logic.model.search.expr.Call.internalEval(Call.java:57) at com.top_logic.model.search.expr.SearchExpression.evalWith(SearchExpression.java:95) at com.top_logic.model.search.expr.Lambda.internalEval(Lambda.java:82) at com.top_logic.model.search.expr.SearchExpression.evalWith(SearchExpression.java:95) at com.top_logic.model.search.expr.Lambda.internalEval(Lambda.java:82) at com.top_logic.model.search.expr.SearchExpression.evalWith(SearchExpression.java:95) at com.top_logic.model.search.expr.query.DirectQueryExecutor.executeWith(DirectQueryExecutor.java:62) at com.top_logic.model.search.expr.query.QueryExecutor.execute(QueryExecutor.java:227) at com.top_logic.model.search.providers.MonomorphicCreateFormBuilderByExpression.fillFormContext(MonomorphicCreateFormBuilderByExpression.java:99)
Das wurde nach erster Rücksprache als Bug klassifiziert.
Test
- /com.top_logic.demo/src/test/java/test/com/top_logic/demo/scripted/layout/transaction/TestCustomTransaction.script.xml