Aufbau des XML für Vertec Config Sets
Product line
Standard
|Expert
Operating mode
CLOUD ABO
|ON-PREMISES
Modules
Services & CRM
Budget & Phases
Purchases
Resource Planning
Business Intelligence
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:
<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:
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:
<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:
<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:
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:
Das reference-object Element ist ein Unter-Element von member. Stellt ein Objekt dar, welches an anderer Stelle im Configset bereits enthalten ist. Attribute:
<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:
<system-setting name="GlobalDokPfad">C:\Dokumente</system-setting>
Ab Vertec 6.4.0.10 ist es möglich, auch neue Systemeinstellungen anzulegen.
system-settings
wie oben beschrieben und gibt die entsprechenden Zeilen in der Config Set Builder Oberfläche an.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.
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).
Der im before-import mitgegebene Python Code wird automatisch ausgeführt,
requirements
und die references
geprüft wurdenobjects
und settings
verarbeitet werden<update> <before-import> print "Plug-in wird importiert durch {}".format(vtcapp.currentlogin()) </before-import> </update>
Der im after-import mitgegebene Python Code wird automatisch ausgeführt,
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>