Fragment Template
Ein Fragment Template ist ein RTF-Template, welches aus einem anderen RTF-Template ausgerufen werden kann. Dies erhöht die Wiederverwendbarkeit der Templates und dadurch die Flexibilität beim Generieren von Dokumenten.
Beim Aufruf des Template Fragments wird die ID des gerade bearbeiteten Modell-Element und die ID des Pakets in dem sich das Modell-Element befindet oder die ID des eines Diagramms übergeben.
Mit Template Fragmenten, kann mittels Skript und SQL, jede beliebige Information, ausgehend von den übergebenen Daten, aus dem Modell abgefragt werden und mittels dem Fragment Template in dem generierten Dokument ausgegeben werden.
RTF-Templates werden in der EA-Hilfe und im EA Kompendium genauer beschrieben.
Formatierte Notizen ausgeben
Werden Formatierungen in der Notiz verwendet, wird diese Formatierungsinformation im EA-Repositorium als HTML Tag gespeichert. Verwendet man nun Fragmente Templates, um mittels Skripten oder SQL Suchen Modell-Informationen aus dem EA-Repositorium abzufragen, erhält man die Daten so, wie sie im EA-Repositorium gespeichert sind.
Bei einer SQL Suche nach Notiz Inhalten, wird im Template Fragment also der formatierte Text zwischen den HTML Tags ausgegeben.
Formatierung von Notizen Interpretieren
Um die Formatierung der Notiz beim Generieren der Dokumente auch richtig zu interpretieren, muss folgendermaßen vorgegangen werden:
SELECT ea_guid AS CLASSGUID, Object_Type AS CLASSTYPE, Name, Note as [Note-Formatted]
FROM t_object
Where Object_ID=#OBJECTID#
Dabei ist wichtig, zum Spaltennamen -Formatted hinzuzufügen!
Note as [Note-Formatted]
In der EA-Hilfe wird beschrieben, die Spalte als „Note.Formatted“ auszugeben. Dies funktioniert allerdings lediglich für EA-Repositorien in einem DBMS, aber nicht für .EAP Files. Verwenden wir ein Minus (Bindestrich) anstelle des Punktes und eckige Klammern anstelle der beiden Hochkomma, funktioniert die Formatierung auch bei .EAP Files.
Konkretes Beispiel
Wir haben ein Modell-Element mit einer formatierten Notiz.
Anschließend erstellen wir ein RTF-Template aus dem wir ein Template Fragment aufrufen.
Im Template Fragment fügen wir Custom Tags ein, indem wir im linken Baum die Checkbox Custom auswählen. Im Dokument fügen wir anschließend die Tags Name und Note.Formatted hinzu.
Unter den Document Options des Template Fragments können wir nun die SQL Abfrage eintragen. Hierbei ist wichtig, dass der Spaltenname der Notiz als [Note-Formatted] angegeben wird. Mit der Erweiterung Formatted, weiß der EA, dass er die vorhandenen Formatierungszeichen interpretieren soll. Hier ist nun wichtig, dass anstelle des Punktes (.) ein Minus (-) als Trennzeichen verwendet wird. Mit dem Punkt kann die MSJet DB (.EAP File) nicht umgehen. Es ist auch wichtig, anstelle der Hochkomma, eckige Klammern zu verwenden. Anderenfalls werden Sie eine Fehlermeldung von der DB erhalten.
Ergebnis
Generieren wir nun ein Dokument und verwenden dabei das RTF-Template, erhalten wir folgendes Ergebnis:
Verwenden wir in der SQL Abfrage eine andere Benennung, erhalten wir eine Fehlermeldung.
Verwenden wir im Fragment Template einen falschen Namen (z.B. {Note-Formatted} anstelle von {Note.Formatted} ), werden im Dokument die HTML Tags ausgegeben.
Hi, Is it somehow possible to query and present element’s linked documents in generated documents with custom fragments and sql query, in which table is this file and formatted info kept?
Hallo Henri-Rene,
well, it is possible to print linked documents associated to model-elements when a document is generated. This can be done with the checkbox „LinkedDocument“ which is avaialbe within the branch: [Package > Element > LinkedDocument] or [Package > Package Element > LinkedDocument]. The first is the linked document of an element, the second is the linked document of a Package.
Linked documents are stored within the DB table: t_document. However, the content of the linked document is stored as binary and cannot be accessed via SQL.
So, unfortunately, the answer is currently NO, you cannot access linked documents via SQL from fragment templates.