Die Config Set Definition besteht aus folgenden Elementen:
<?xml version="1.0" encoding="utf-8"?>
<configset name="Spezial" author="Vertec AG">
<comment>
Das ist ein Kommentar, der das Configset noch näher beschreibt.
</comment>
<requirements/>
<references>
<entryid-reference class="OrdnerOeffentlich" alias="OrdnerOeffentlich0" entryid="FolderPublicFolders" />
</references>
<objects>
<object class="Ordner" alias="Ordner_Spezialauswertungen0">
<member name="Bezeichnung">Spezialauswertungen</member>
<member name="Parentordner">
<reference-object alias="OrdnerOeffentlich0" />
</member>
</object>
<object class="ExpressionOrdner" alias="ExpressionOrdner_Projektegross1">
<member name="Bezeichnung">Projekte gross</member>
<member name="Parentordner">
<reference-object alias="Ordner_Spezialauswertungen0" />
</member>
<member name="Expression">Projekt.allInstances->select(offeneLeistungen.wertExt->sum > 10000)</member>
</object>
</objects>
<settings />
</configset>
Das configset Element ist das Haupt-Element eines Config-Sets. Es enthält folgende Attribute:
- author: Autor des Config Sets. Der Wert aus dem Feld Autor im Config Set Builder wird automatisch eingetragen.
- name: Name des Config Sets. Der Wert aus dem Feld Name im Config Set Builder wird automatisch eingetragen.
<configset name="Spezial" author="Vertec AG">
...
</configset>
Das configset Element enthält folgende Unterelemente:
Das comment Element ist ein Unter-Element von configset und enthält einen beliebigen Kommentar.
<comment>Das ist ein Kommentar, der das Configset noch näher beschreibt.</comment>
Das requirements Element ist ein Unter-Element von configset. Es kann ocl-requirements als Unter-Elemente enthalten.
Mit Requirements können Vorbedingungen definiert werden, welche erfüllt sein müssen, damit das Config Set eingelesen werden kann. Dies kann eine beliebige OCL-Expression sein. Die Requirements werden im Feld Elemente
im Config Set Builder eingetragen.
Werden keine requirements angegeben, wird das Element wie folgt angegeben:
<requirements />
Das ocl-requirement ist ein Unter-Element von requirements. Es enthält eine beliebige OCL Expression, welche True ergeben muss, damit das Config-Set importiert wird. Damit können Vorbedingungen abgefragt werden, welche für den Import des Config Sets erfüllt sein müssen, z.B. die Sicherstellung, dass eine bestimmte Zusatzklasse noch nicht belegt ist.
<requirements>
<ocl-requirement>ClassSettings.allInstances->select(klasse='ZusatzKlasse0')->size = 0</ocl-requirement>
</requirements>
Ab Vertec Version 6.6 kann dem Benutzer mithilfe des optionalen Message-Arguments eine sinnvolle Meldung ausgegeben werden, wenn ein Requirement nicht erfüllt ist. Eine Übersetzung des Texts findet nicht statt. Die Meldung wird so ausgegeben, wie sie hinterlegt ist.
<ocl-requirement message="ZusatzKlasse26 ist bereits in Verwendung.">
ClassSettings.allInstances->select(klasse='ZusatzKlasse26'->size = 0
</ocl-requirement>
Das version-requirement besteht ab 6.4 und erlaubt es, die minimale Vertec Version angegeben werden, die benötigt wird, um das Config Set zu verwenden. Die Syntax ist wie folgt:
<requirements>
<version-requirement>6.3.0.12</version-requirement>
</requirements>
Dabei gilt:
- Wird ein Config Set mit einem Version-Requirement importiert und die Vertec Version ist kleiner als die angegebene Version, wird ein Fehler gemeldet und das Config Set kann nicht importiert werden.
- Wird ein Config Set mit Version-Requirement in einer älteren Version von Vertec ohne Implementierung des Version-Requirement Features importiert, wird ebenfalls ein Fehler gemeldet, und das Config Set kann nicht importiert werden. Für Config Sets mit dieser Angabe wird also ein Vertec ab Version 6.4 benötigt.
Das references Element ist ein Unter-Element von configset und kann selbst die Unter-Elemente entryid-reference und ocl-reference enthalten.
Es handelt sich dabei um eine Auflistung von Referenzen, welche innerhalb des Config Sets verwendet werden. Jede Referenz erhält einen innerhalb des Config Sets eindeutigen Namen.
Werden keine references angegeben, wird das Element wie folgt angegeben:
<references />
Das entryid-reference Element ist ein Unter-Element von references. Es referenziert ein Objekt aufgrund seiner Klasse und seiner Eintrag Id. Auf diese Art werden im Zielsystem bereits vorhandene Objekte identifiziert. Es enhält folgende Attribute:
- class: Klasse des Objekts mit EintragId
- entryid : Eintrag Id des Objekts
- alias : interner Alias zur Verwendung innerhalb des Configsets
<entryid-reference class="OrdnerOeffentlich" alias="Alias_Parentordner" entryid="FolderPublicFolders" />
entryid-references werden beim Erstellen vom Config Set via Config Set Builder automatisch eingetragen.
Das ocl-reference Element ist ein Unter-Element von references. Es referenziert ein Objekt durch Angabe einer OCL Expression. Die OCL Expression wird global ausgewertet. So kann ein im Zielsystem vorhandenes Objekt identifiziert und im Config Set damit gearbeitet werden. Es enhält folgende Attribute:
- expression: OCL-Expression welche ein einzelnes Objekt ergeben muss.
- alias: interner Alias zur Verwendung innerhalb des Configsets.
<ocl-reference expression="TimSession.allInstances->first.login" alias="aktBearb" />
ocl-references werden im Feld Elemente
im Config Set Builder eingetragen.
Das objects Element ist ein Unter-Element von configset. Enthält die durch das Configset anzulegenden Objekte.
Die objects inklusive aller Unter-Elemente werden beim Erstellen vom Config Set via Config Set Builder automatisch eingetragen.
Es enthält folgende Unter-Elemente:
Das object Element ist ein Unter-Element von objects. Stellt ein durch das Configset zu erstellendes Objekt dar. Enthält eine Sammlung von member Elementen. Attribute:
- class: Klassenname des Objekts
- alias: Alias des Objekts
Das member Element ist ein Unter-Element von object. Stellt eine Eigenschaft eines Objektes dar. Attribute:
name: Name des Members (Eigenschaft)
Ein Member Element hat als Inhalt eine der folgenden Dinge:
- Einfacher Text bei simplen Werten (string, zahl, boolean, etc)
- object Element bei Objekten, die zum übergeordneten Objekt gehören und durch das Configset mit angelegt werden.
- reference-object Element bei Referenzen auf Objekte, die bereits im Configset enthalten oder als reference vorausgesetzt werden.
Das reference-object Element ist ein Unter-Element von member. Stellt ein Objekt dar, welches an anderer Stelle im Configset bereits enthalten ist. Attribute:
- alias: Alias des referenzierten Objektes.
<objects>
<object class="Ordner" alias="Ordner_Spezialauswertungen0">
<member name="Bezeichnung">Spezialauswertungen</member>
<member name="Parentordner">
<reference-object alias="OrdnerOeffentlich0" />
</member>
</object>
<object class="ExpressionOrdner" alias="ExpressionOrdner_Projektegross1">
<member name="Bezeichnung">Projekte gross</member>
<member name="Parentordner">
<reference-object alias="Ordner_Spezialauswertungen0" />
</member>
<member name="Expression">Projekt.allInstances->select(offeneLeistungen.wertExt->sum > 10000)</member>
</object>
</objects>
Das settings Element ist ein Unter-Element von configset. Es enthält system-setting Elemente, welche Systemeinstellungen darstellen, die durch das Configset gesetzt werden sollen.
settings Elemente werden im Feld Elemente
im Config Set Builder eingetragen.
Das system-setting Element ist ein Unter-Element von settings. Damit kann eine bestehende Systemeinstellung gesetzt werden. Attribute:
- name: Als Name wird der PropertyName angegeben. Diesen finden Sie bei der Beschreibung der jeweiligen Systemeinstellung.
- alias: bei Objekt-Properties: Alias des zu setzenden Objekts (muss im Configset oder in den externen references enthalten sein)
<system-setting name="GlobalDokPfad">C:\Dokumente</system-setting>
Neue Systemeinstellungen anlegen
Ab Vertec 6.4.0.10 ist es möglich, auch neue Systemeinstellungen anzulegen.
- Will man bestehende Systemeinstellungen verändern, verwendet man die
system-settings
wie oben beschrieben und gibt die entsprechenden Zeilen in der Config Set Builder Oberfläche an.
- Will man neue Systemeinstellungen anlegen, fügt man diese als Objekt direkt ins XML ein, nachdem man das Config Set das erste Mal exportiert hat. Dieses Vorgehen ist hier nachfolgend beschrieben.
Systemeinstellungen haben keine Eintrag Id und werden darum über ihren Namen (PropertyName
) identifiziert. Die Systemeinstellungen werden direkt als Objekte eingefügt. Beispiel:
<objects>
<object class="StringProperty" alias="StringProperty_0">
<member name="PropertyName">GlobalLogopath</member>
<member name="PropertyValue">D:\Bilder\Logos</member>
<member name="PropertyCaption">Ablagepfad für Logos</member>
<member name="Gruppe">0</member>
<member name="AuswahlTyp">Path</member>
<member name="Scope">Global</member>
<member name="Masked">false</member>
</object>
</objects>
Welche Members es gibt und wie sie gesetzt werden ist im Artikel Vertec Systemeinstellungen erzeugen beschrieben.
Wird ein so importiertes Config Set wieder exportiert, bleibt das Systemeinstellungs-Objekt als Objekt im XML File bestehen. Die manuelle Eingabe muss also nur einmal erfolgen.
update
Das update Element ist ein Unter-Element von configset und kann selbst die Unter-Elemente before-import und after-import enthalten. Damit kann Python Code unmittelbar vor oder nach dem eigentlichen Import des Config Sets ausgeführt werden.
Der Python Code wird direkt im jeweiligen Element eingegeben (plain python code).
before-import
Der im before-import mitgegebene Python Code wird automatisch ausgeführt,
- nachdem die
requirements
und die references
geprüft wurden
- bevor die
objects
und settings
verarbeitet werden
<update>
<before-import>
print "Plug-in wird importiert durch {}".format(vtcapp.currentlogin())
</before-import>
</update>
after-import
Der im after-import mitgegebene Python Code wird automatisch ausgeführt,
- nachdem die
objects
und settings
verarbeitet wurden
<update>
<after-import>
ord = vtcapp.getobjectbyentryid('Ordner', "ObjFolder")
neword = vtcapp.getobjectbyentryid('Ordner', "NewObjFolder")
neword.ordeintraege.extend(ord.ordeintraege)
ord.delete()
</after-import>
</update>