ModGen SCAPI

Kurze Übersicht der SCAPI Grundfunktionen

Kevin Petri, 29.01.2019

Um Datawarehouse Transformationen zu automatisieren gibt es von heureka das Erwin Add-In ModGen. Die aktuelle Version ermöglicht es aus einem Staging Modell ein DataVault Modell zu generieren.
Für die Entwicklung von ModGen war eine Sache unverzichtbar, nämlich die erwin Script Client API (SCAPI), mit der ich mich im Zuge des Projektes auseinandergesetzt habe und sie nun im Folgenden kurz vorstellen möchte.
Diese Schnittstelle ist sehr umfangreich und bietet dem Benutzer die Möglichkeit, verschiedenste Objekte zu erstellen, zu öffnen oder zu bearbeiten, die in einem Modell enthalten sind, wie etwa Tabellen, Spalten oder User Defined Properties (UDPs).
Die API ist in mehrere Zugriffsebenen aufgeteilt:
Die oberste Ebene, das Model Level (SCD_SL_M0) ermöglicht das Erstellen, Schreiben und Lesen von Tabellen und Spalten. Zudem können hier einfache Properties erstellt und bearbeitet werden.
Möchte man hingegen auf Meta-Informationen zugreifen und UDPs bearbeiten oder löschen, dann wird eine Session mit erhöhter Berechtigung benötigt (SCD_SL_M1).
Neben Persistance Units gibt es noch Property Bags, diese bilden - wie der Name schon andeutet - Eigenschaften ab. Neben den offensichtlichen Eigenschaften wie Name und Wert gibt es noch zusätzliche nützliche Eigenschaften wie Flags die unter Anderem angeben ob ein Wert null ist, ob der enthaltene Wert Skalar ist oder ob auf die Eigenschaft nur lesend zugegriffen werden darf.
Folgendes Schaubild aus der SCAPI Dokumentation veranschaulicht diese Zusammenhänge.




Die am häufigsten genutzte Klasse ist das ModelObject, das über die Standard Ebene (SCD_SL_M0) erreichbar ist, Tabellen und Spalten sind, unter anderem, Objekte dieser Klasse. Die Klasse „ModelObjects“ (Plural!) ist eine Collection von Objekten der Klasse „ModelObject“ und enthält einen Enumerator über den iteriert werden kann. Ein Indikator dafür ist die NewEnum Eigenschaft. Diese Eigenschaft enthält eine Referenz auf das IEnumVARIANT Interface, mit dem der Schleifenablauf durch die Methoden Next(), Skip(), Reset() und Clone() gesteuert werden kann. Das ModelObject enthält außerdem die Eigenschaft „Properties“ über diesen kann iteriert werden oder ein bestimmtes Property angesprochen werden.
Model Objects haben den Vorteil, dass Änderungen, die am Objekt vorgenommen werden, direkt in das Modell übernommen werden können. Das erreicht man, indem man die Transaktion, die vor dem Abruf geöffnet wurde, durchführt, wodurch alle Änderungen an Objekten der Klasse ModelObject in das entsprechende erwin-Modell zurückgeschrieben werden. Jedes dieser Objekte wird durch Vier IDs Klassifiziert, die SC_OBJID die ein bestimmtes Objekt Identifiziert, die SC_CLSID, die das Objekt einer Klasse zuordnet, die SC_MODELTYPEID die dem Typ des Modells entspricht und die SC_CREATORID.
Beispiel bestimmtes Property aller Tabellen verändern:


Für detailliertere Informationen und Code Beispiele siehe http://erwin.com/bookshelf/9.8.00/Bookshelf_Files/PDF/erwin_API_Ref.pdf


Author


Kevin Petri
Kevin Petri


Kontakt

 

 

Contact