CiAgICA8IS0tIExpbmtlZEluIC0tPgogICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgICAgIF9saW5rZWRpbl9wYXJ0bmVyX2lkID0gIjEyMzUwNzMiOwogICAgICAgIHdpbmRvdy5fbGlua2VkaW5fZGF0YV9wYXJ0bmVyX2lkcyA9IHdpbmRvdy5fbGlua2VkaW5fZGF0YV9wYXJ0bmVyX2lkcyB8fCBbXTsKICAgICAgICB3aW5kb3cuX2xpbmtlZGluX2RhdGFfcGFydG5lcl9pZHMucHVzaChfbGlua2VkaW5fcGFydG5lcl9pZCk7CiAgICA8L3NjcmlwdD48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgICAgICAgKGZ1bmN0aW9uKCl7dmFyIHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2NyaXB0IilbMF07CiAgICAgICAgICAgIHZhciBiID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7CiAgICAgICAgICAgIGIudHlwZSA9ICJ0ZXh0L2phdmFzY3JpcHQiO2IuYXN5bmMgPSB0cnVlOwogICAgICAgICAgICBiLnNyYyA9ICJodHRwczovL3NuYXAubGljZG4uY29tL2xpLmxtcy1hbmFseXRpY3MvaW5zaWdodC5taW4uanMiOwogICAgICAgICAgICBzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGIsIHMpO30pKCk7CiAgICA8L3NjcmlwdD4KICAgIDxub3NjcmlwdD4KICAgICAgICA8aW1nIGhlaWdodD0iMSIgd2lkdGg9IjEiIHN0eWxlPSJkaXNwbGF5Om5vbmU7IiBhbHQ9IiIgc3JjPSJodHRwczovL3B4LmFkcy5saW5rZWRpbi5jb20vY29sbGVjdC8/cGlkPTEyMzUwNzMmZm10PWdpZiIgLz4KICAgIDwvbm9zY3JpcHQ+CiAgICA8IS0tIEVuZCBMaW5rZWRJbiAtLT4KICAgIA==
Generic filters
Exact matches only
Search in title
Search in excerpt
Search in content

Reverse Engineering im Bissantz Application Designer

Mit dem Bissantz Application Designer ist es möglich, in kurzer Zeit neue relationale Datenbankanwendungen zu erstellen und Änderungen oder Erweiterungen an bestehenden Modellen durchzuführen. Für den Fall, dass bereits eine gewachsene Datenbankanwendung vorliegt, welche nicht mit dem Bissantz Application Designer erzeugt wurde, gibt es nun das „Reverse Engineering“.

Der Bissantz Application Designer ist ein KI-basiertes BI-Werkzeug, mit dem sich viele Schritte beim Erzeugen von Datenmodellen automatisieren lassen. Allerdings wird in den seltensten Fällen eine neue Anwendung auf der grünen Wiese erstellt. In den meisten Projekten gibt es bereits eine relationale Anwendung, die mit den Jahren gewachsen ist. Diese Anwendung wurde ursprünglich nicht mit dem Application Designer erzeugt. Selbst kleine Ergänzungen, wie das Hinzufügen einer Spalte in einer Tabelle, können hier teils aufwändige Änderungen in Views, Triggern, Prozeduren, etc. nach sich ziehen. Obendrein fehlt unter Umständen eine Eingabe-Anwendung, um die Inhalte editieren zu können. Der Bissantz Application Designer erledigt dies automatisch.

Wenn man eine solche Anwendung nun in eine Application-Designer-Anwendung überführen wollte, blieb bisher kein anderer Weg, als die Tabellen und Objekte einzeln neu im Application Designer zu erstellen. Mit dem „Reverse Engineering“ kann man diese Schritte nun automatisieren – aus der bestehenden Datenbank werden die Tabellen und Abhängigkeiten (Fremdschlüsselverweise) herausgelesen. Beim Aufbau der neu „designten” Datenbank kann die komplette Eingabelogik inklusive der ersten Eingabemasken vollautomatisch erzeugt werden.

Erzeugen einer neuen Anwendung

Zu Testzwecken nehmen wir die AdventureWorks-Beispieldatenbank (2019) von Microsoft. Die Datenbank hat 74 Tabellen und es fällt nicht schwer sich vorzustellen, mit welch immensem Zeitaufwand es verbunden wäre, diese manuell nachzubauen.

Innerhalb der Bissantz Application Designer GUI gibt es den neuen Bereich „Reverse Engineering (BETA)“. Hier muss die Quelle des Reverse Engineering angeben werden. Zu einer Quellumgebung kann es zukünftig mehrere Quelldatenbanken geben (in der aktuellen Version „Bissantz Application Designer 1.2.2“ ist dies allerdings eine 1:1 Beziehung).

Neuer Bereich zur Eingabe der Reverse Engineering ParameterAbbildung 1: Neuer Bereich zur Eingabe der Reverse Engineering Parameter

Nachdem man seine Quelldatenbank eingeben hat, kann man über das Verknüpfungsmenü den Import starten.

Abbildung 2: „Insert database definition“

Die gestartete Anwendung ist eine zweite Exe-Datei, die sich in demselben Ordner wie die bisherige „Application Designer.exe“ befindet.

Gestartete Anwendung nach Aktivierung des Reverse EngineeringAbbildung 3: Gestartete Anwendung

Automatisch erzeugte Elemente im Bissantz Application Designer

Nachdem der Prozess durchgelaufen ist, sieht man innerhalb der Berichte „Table“ und „Column“, dass die Tabellen aus der „AdventureWorks2019“-Datenbank angelegt wurden, zusammen mit den Verknüpfungen, Check Constraints , Default Constraints und vielem mehr.

Automatisch erzeugte Objekte in den Berichten „Table“ und „Column“Abbildung 4: Automatisch erzeugte Objekte in den Berichten „Table“ und „Column“

Beim Einlesen hat der Application Designer versucht, die Tabellentypen (TableTypes) für die einzelnen Tabelle zu ermitteln, hier etwa „Master Data Table”, „Data Table” oder „Standard Table” als Default-Wert. An dieser Stelle muss man dann manuell tätig werden und die Typen gegebenenfalls editieren.

Wenn man nun die Dateneingabe-Anwendung aus dem Application Designer neu erzeugt, werden in der Zieldatenbank alle hinterlegten Tabellen neu erstellt. Je nach konfiguriertem TableType („Master Data Table” oder „Data Table”) wird vollautomatisch die notwendige Eingabelogik für eine DeltaMaster-Anwendung erzeugt.

Erzeugung der Dateneingabe-Anwendung im Application DesignerAbbildung 5: Erzeugung der Dateneingabe-Anwendung im Application Designer

Weiterhin wird DeltaMaster direkt mit allen relevanten Modellinformationen versorgt, um vollautomatisch eine erste Anwendung mit Pflegeberichten zu erstellen. Diese Anwendung ist bereits vorstrukturiert, die Berichte sind mit ordentlichen Spaltennamen und Auswahlboxen versehen. Nach Aktivierung der Dateneingabe-Option kann sofort mit der Datenpflege begonnen werden.

Per Reverse Engineering neu erzeugte Eingabe-Anwendung in DeltaMasterAbbildung 6: Neu erzeugte Eingabe-Anwendung in DeltaMaster

Mögliche Erweiterungen und Ausblick

Die Anwendung zum Reverse Engineering befindet sich aktuell im BETA-Zustand, in den kommenden Versionen des Bissantz Application Designer sind weitere Ergänzungen und Verbesserungen zu erwarten.

In der aktuellen Version 1.2.2 ist noch keine Extraktion von Daten oder Objekten wie Views, Triggern oder Prozeduren vorgesehen. Die Umsetzung ist aktuell in der Entwicklung. Dabei wird das Zusammenspiel der Objekte aus der Quelldatenbank und der Prozeduren und Views, welche der Application Designer selbst erstellt, entscheidend sein.

Beim Einlesen von Daten werden aktuell „schwierige” Datentypen ignoriert, zum Beispiel User-Customized Datatypes oder Datentypen wie XML, TEXT und IMAGE. Hier wird geprüft, ob diese künftig auch unterstützt werden sollen, wobei die Mehrheit unserer Kundensysteme derzeit ohne diese Datentypen auskommt.

Des Weiteren unterstützt der Bissantz Application Designer aktuell keine Fremdschlüssel-Verknüpfungen zu Tabellen über mehr als eine Referenzspalte. Somit ist auch in diesen Fällen keine Abbildung der Quelldatenbank darstellbar. Allerdings könnte man dies dann in Zukunft durch eine Konkatenation von Spalte und Schlüssel oder durch einen Surrogat-Schlüssel abbilden.