Mit dem eingebauten Python Modul "vtcmodel" Informationen über das Datenmodell hinter den Businessobjekten von Vertec abfragen.
Das Vertec Python Modul vtcmodel ermöglicht es, Informationen über das Datenmodell hinter den Businessobjekten abzufragen. Es ist auch im Resctict Scripting Modus verfügbar und enthält die Methode:
Holt die Informationen des übergebenen Vertec Objekts bzw. der angegebenen Klasse und gibt ein Typeinfo Python Objekt zurück.
Das Typeinfo Objekt hat folgende Eigenschaften:
| Member / Funktion | Beschreibung |
|---|---|
name |
Gibt den Klassennamen in der aktuellen Vertec Modellsprache zurück |
defaultname |
Gibt den Standard Klassennamen im Modell zurück |
persistent |
Gibt an, ob Objekte dieser Klasse in der Datenbank gespeichert werden. |
members |
Liste aller Members dieser Klasse |
memberbyname(name: String): member |
Gibt das angegebene Member als |
Das Member Objekt hat folgende Eigenschaften:
Members können sowohl Attribute (normale Felder) als auch Associations (Links zu anderen Objekten) sein. Je nachdem, ob es sich um ein Attribut oder eine Association handelt, hat das Member Objekt leicht abweichende Eigenschaften. Das ist in der jeweiligen Zeile vermerkt.
| Eigenschaft | Beschreibung | Attribut | Association |
|---|---|---|---|
allownull |
Gibt an, ob das Member leer (NULL) sein darf | x | x |
classinfo |
Die Klasse, zu der das Member gehört (Typeinfo wie oben) |
x | x |
columnname |
Spaltenname des Members in der Datenbank (nur persistente Members) | x | x |
defaultname |
Standard Membername im Modell | x | x |
derived |
Gibt an, ob es sich um ein berechnetes (derived) Attribut handelt. | x | |
isattribute |
Gibt an, ob es sich bei dem Member um ein Attribut handelt. | x | x |
isindirect |
Gibt an, ob es sich bei der Rolle um einen Teil eines Multilinks (m:n) handelt. In diesem Fall gibt es ein Linkobjekt (linkclass). | x | |
ismultirole |
Gibt an, ob es sich bei dem Member um das Multi-Ende eines Links handelt, der darum auch als Liste verwendet werden kann. | x | x |
isrole |
Gibt an, ob es sich bei dem Member um eine Linkrolle handelt, das Member also eine Association ist. | x | x |
issinglerole |
Gibt an, ob es sich bei dem Member um das Single-Ende eines Links handelt. | x | x |
length |
Gibt die maximal erlaubte Länge des Attributs an. Das ist bei Strings relevant. | x | |
linkclass |
Der Name der Linkklasse, falls es sich um einen Multilink handelt (isindirect). | x | |
name |
Name des Members in der aktuellen Modellsprache | x | x |
ordered |
Gibt an, ob es sich um eine sortierte Association handelt. | x | |
otherend |
Die andere Seite der Association, gibt ebenfalls ein Member Objekt zurück. |
x | |
persistent |
Gibt an, ob das Member in der Datenbank gespeichert wird. | x | x |
valuetype |
Datentyp des Attributs. Mögliche Werte sind:
|
x |
Einige dieser Eigenschaften sehen Sie auch im Vertec Model Browser auf der rechten Seite, wenn Sie ein Member in der Liste markieren.
Das Beispielscript kann im Vertec Script Editor auf einem Projekt ausgeführt werden.
import vtcmodel typeinfo = vtcmodel.gettypeinfo(argobject) # argobject is a project print("Klassenname (aktuelle Modellsprache): {}".format(typeinfo.name)) # Projekt/Project print("Klassenname (Modell): {}".format(typeinfo.defaultname)) # Project print("In DB gespeichert: {}".format(typeinfo.persistent)) # True members = typeinfo.members # Liste von allen "Member" Objekten member = typeinfo.memberbyname("Active") # Info über Member "aktiv" print("Membername (aktuelle Modellsprache): {}".format(member.name)) # aktiv/active print("Membername (Modell): {}".format(member.defaultname)) # active print("Datentyp: {}".format(member.valuetype)) # Boolean (string) print("In DB gespeichert: {}".format(member.persistent)) # True print("Derived: {}".format(member.derived)) # False print("Null/Leer erlaubt: {}".format(member.allownull)) # False print("Ist Attribute: {}".format(member.isattribute)) # True print("Ist Linkrolle / Association: {}".format(member.isrole)) # False print("Ist Single Rolle: {}".format(member.issinglerole)) # False print("Ist Multi Rolle: {}".format(member.ismultirole)) # False print("Spaltenname: {}".format(member.columnname)) # Active print("Length: {}".format(member.length)) # 255, nur relevant bei Strings print("Backlink auf 'Project' ClassInfo: {}".format(member.classinfo.name)) # Projekt/Project role_member = typeinfo.memberbyname("Customer") # Info über die Association zum Kunden # Attribute wie oben, ausser "valuetype" und "derived", dafür: print("Linkklasse: {}".format(role_member.linkclass)) # None print("Sortierung: {}".format(role_member.ordered)) # True print("Attributsname auf der anderen Seite: {}".format(role_member.otherend.name)) # projekte/projects