Als transient (vorübergehend, nicht dauerhaft) werden Attribute bezeichnet, die in einer Transferdatei nicht vorkommen, jedoch trotzdem im Datenmodell (.ili) modelliert sind. Dies, weil sie sich durch Berechnung aus anderen Attributen herleiten lassen.
Im Referenzhandbuch Kapitel 2.6.1. steht dazu:
Mittels eines Faktors festgelegte Attribute sollen, falls sie nur innerhalb weiterer Faktoren von Bedeutung sind, vom Datentransfer ausgeschlossen werden können, sie sollen dann als transient bezeichnet werden.
Ein als transient gekennzeichnetes Attribut kann wie folgt aufgebaut sein (angelehnt an die EBNF-Notation des Referenzhandbuches):
Attribute-Name (TRANSIENT) ':' AttrTypeDef ':=' Factor ';'.
Dabei kann Factor
gemäss RefHB auch der Aufruf einer Funktion sein, z. B. INTERLIS.objectCount(<Rollenname>)
also z. B.
attr2 (TRANSIENT): 0..5 := INTERLIS.objectCount(aRef);
oder
attr3 (TRANSIENT): 0..100 := Math.sum(aRef->Anzahl);
wobei aRef
der Rollenname innerhalb einer ASSOCIATION ist.
Weshalb will der Compiler diese Schreibweisen partout nicht zulassen? Die zugehörige Fehlermeldung lautet in beiden Fällen:
Name aRef is not applicable to CLASS <Modellname>.<Topicname>.<Klassenname>
testmodel_2classes.ili (542 Bytes)