Das Arbeiten mit Base-Lines ist eine feine Sache. Aktuell bietet der EA allerdings keine Sicht, um einfach und schnell einen Überblick über alle im Modell vorhandenen Baselines zu erlangen.
Durch die Flexibilität der Modell-Suche ist es aber eine Leichtigkeit eine Abfrage zu schreiben, um die nötigen Informationen mit einem Klick zu erhalten.
Natürlich muss man die Struktur des EA Datenbankschemas kennen. Die wichtigsten Tabellen habe ich bereits hier beschrieben.
Da die Baselines per Paket erstellt werden, wird wohl die Tabelle t_package beteiligt sein. Wo werden aber die Baselines selbst abgespeichert? Nicht in der Tabelle t_package
, sondern in der Tabelle t_documents
, in der neben Baselines auch weitere Informationen zu finden sind.
Betrachtet man die Tabelle t_documents
etwas genauer, fällt auf, dass die wichtigsten Informationen des Pakets bereits enthalten sind.
Die GUID des Paketes (= ElementID
), der Typ des Paketes ( = ElementType
) mehr braucht man eigentlich nicht, um in der Ergebnisliste der Suche die Elemente im Project Browser oder im Diagramm zu finden. Eventuell möchte aber jemand noch mehr Informationen des Paketes abfragen, daher der Join. Im gezeigten Beispiel habe ich, zusätzlich zu den oben erwähnten Informationen, noch die Paket-Notiz und die Paket-ID der Tabelle t_package
abgefragt.
Da es im EA erlaubt ist mehrere Elemente mit gleichem Namen zu halten, könnten mehrere gleiche Namen in der Ergebnisliste als unterschiedliche Pakete aufgefasst werden, wäre auch denkbar und möglich. Im konkreten Beispiel handelt es sich allerdings immer um dasselbe Paket, für das mehrere Baselines verfügbar sind. Jede Zeile steht also für eine Baseline. Durch die Paket-ID ist es nun einfach zu erkennen, ob es sich um dasselbe oder verschiedene Pakete handelt.
Die große negative Zahl in der Spalte ID rührt daher, da das Beispielprojekt das ich verwendet habe ein Replikat ist. Replikate erhalten neue IDs, diese können auch negativ sein!
Zu beachten ist auch, dass Root Pakete, in meinem Fall „Model“ mit ID = 1 nicht im Projekt Browser über die Ergebnisliste gefunden werden können.
Die SQL Abfrage sieht folgendermaßen aus:
SELECT t_package.ea_guid AS CLASSGUID, t_document.ElementType AS CLASSTYPE, t_package.Package_ID AS ID, t_package.Name, t_package.Notes as PackageNotes, t_document.Notes AS BaselineComments
FROM t_document INNER JOIN t_package ON t_document.ElementID = t_package.ea_guid
WHERE t_document.DocType = 'Baseline'
Die Abfrage als Text finden Sie hier.
Die relevanten Tabellen:
works great – thanks