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

Einbindung eines benutzerdefinierten Menüs in DeltaMaster Teil 1

Im Blogbeitrag „Aufbau eines Datenerfassungssystems für relationale Datenbanken“ wurde beschrieben, wie eine manuelle Datenerfassung mit DeltaMaster umgesetzt werden kann. Oft reicht eine manuelle Datenerfassung aber nicht aus, weil die Menge der zu erfassenden Daten zu groß ist. Dann besteht der Wunsch des Anwenders nach einer Möglichkeit, Daten über eine definierte Schnittstelle in das System zu importieren. Somit kann der Anwender den Zeitpunkt der Datenübernahmen selbst bestimmen und der Datenbankbetreuer hat die Verantwortung der korrekten Befüllung der Datenbank an den Anwender übergeben.

Ein weiterer Wunsch besteht oft darin, aus dem DeltaMaster heraus eine Datenbanktransformation (P_Transform_all) und eine anschließende Aufbereitung der OLAP-Datenbank zu starten, oder Daten aus dem System zu exportieren, um sie an ein anderes System zu übergeben.
Um all diese Wünsche zu erfüllen, kann man sich einer kleinen DLL und ein paar weniger Tabellen bedienen, die es uns ermöglichen, in DeltaMaster ein benutzerdefiniertes Menü anzuzeigen, über das der Anwender die verschiedensten von uns definierten Aktionen ausführen kann.

Voraussetzungen

Voraussetzung für die Einbindung eines solchen Menüs in DeltaMaster sind folgende Punkte:

  • Eine Analysesitzung mit relationalem Datenbankzugriff
  • Erstellung spezieller Tabellen im zugrundeliegenden Datenbankmodell
  • Befüllung der Tabellen mit entsprechenden Einträgen
  • Erstellung von Prozeduren, die beim Aufruf des jeweiligen Menüpunktes ausgeführt werden sollen
  • Kopieren der benötigten Softwarekomponenten in das DeltaMaster-Programmverzeichnis
  • Aktivieren der Menüfunktion in DeltaMaster

Definition und Erstellung der benötigten Tabellen und Sichten

Die Grundlage für die Befüllung des Menüs sind die folgenden Tabellen und Sichten:

  • T_SYS_DataEntryMenue
  • T_SYS_DataEntryMenue_ProcParameters
  • V_SYS_DataEntryMenue
  • T_SYS_DataEntryMenue_Rights (optional)

Die SQL-Scripte zur Erstellung und Befüllung der benötigten Tabellen und Sichten, die komplette Beispieldatenbank und die Importtextdateien erhalten Kunden gerne auf Nachfrage.

T_SYS_DataEntryMenue

In der Tabelle T_SYS_DataEntryMenue befinden sich die Einträge, welche später im DeltaMaster-Menü auswählbar sein sollen. Hierbei besteht die Möglichkeit sowohl „normale“ Menüpunkte als auch Trennlinien zur besseren Übersicht zu erstellen.

Die Tabelle besteht aus folgenden Spalten:

Menue_ID

Eine eindeutige ID des Menüpunktes vom Datentyp smallint.

Menue_Pos

Über diesen Eintrag vom Datentyp smallint wird die Position des Menüpunktes innerhalb des Menüs bestimmt.

Menue_EN

Englischer Anzeigename des Menüpunktes

Menue_DE

Deutscher Anzeigename des Menüpunktes

Sybtype

Über diesen Eintrag wird der Typ des Menüpunktes gesteuert. Es können folgende Typen gewählt werden:

 

SybtypeID Beschreibung
1 Dateiimport mit Transaktionssteuerung. Es besteht am Ende der Transaktion die Möglichkeit die Aktion zu übernehmen oder abzubrechen (Rollback).
2 Ausführung einer parametrierbaren Prozedur (z.B. für den Datenexport).
4 Dateiimport ohne Transaktionssteuerung. Alle erfolgreich importierten Daten werden automatisch, alle anderen werden abgewiesen.
5 Ausführung einer asynchronen Prozedur ohne Parameterübergabe.
6 Ausführung einer synchronen Prozedur ohne Parameterübergabe.
7 Ausführung eines externen Programms.

 

Criteria1

Der Name der Prozedur, die bei Aufruf des Menüpunktes ausgeführt werden soll.

Criteria2

Der Name der Parametertabelle, in der bei Auswahl der Subtyps 2 hinterlegt wird, welche Parameter dem Anwender zur Auswahl gestellt werden sollen. Zum Beispiel der Name des Kunden oder der Monat, um die Menge des Datenexportes einzuschränken. Der Name der Tabelle ist frei wählbar, im aktuellen Beispiel lautet sie T_SYS_DataEntryMenue_ProcParameters.

T_SYS_DataEntryMenue_ProcParameters

In der Tabelle T_SYS_DataEntryMenue_ProcParameters werden die Definitionen zur Übergabe der Parameter an die aufzurufende Prozedur hinterlegt.

Die Tabelle besteht aus folgenden Spalten:

Procedure

Der Name der aufzurufenden Prozedur, er muss mit dem Eintrag der Spalte Criteria1 der Tabelle T_SYS_DataEntryMenue übereinstimmen.

ParameterID

Eindeutige ID des Parameters vom Datentyp varchar(50). Dieser Eintrag muss dem Namen des entsprechenden Parameters aus der aufzurufenden Prozedur entsprechen, das @-Zeichen darf dabei nicht angegeben werden.

InputType

In dieser Spalte wird der Typ der Parametereingabe definiert. Zur Auswahl stehen die folgenden Typen:

InputTypeID Beschreibung

  1. Textfeld zur freien Eingabe
  2. Combobox ohne zusätzliche freie Eingabemöglichkeit
  3. Combobox mit zusätzlicher freien Eingabemöglichkeit
  4. Checkbox

Name_EN

Der englische Anzeigename des Parameters

Name_DE

Der deutsche Anzeigename des Parameters

SQLCommand

In dieser Spalte wird das SQL-Kommando zur Befüllung der Combobox hinterlegt. Das SQL-Kommando kann ein ein- oder zweispaltiges Ergebnis liefern. Bei einem einspaltigen Ergebnis werden dem Anwender alle Werte dieser Spalte im Auswahlmenü angezeigt. Das ausgewählte Element wird dann an die Prozedur übergeben. Bei einem zweispaltigen Ergebnis werden dem Anwender alle Einträge aus der zweiten Spalte im Auswahlmenü angezeigt. Bei der Auswahl eines Eintrages wird aber der entsprechende Wert der ersten (nicht sichtbaren) Spalte an die Prozedur übergeben. Damit besteht die Möglichkeit dem Anwender einen sprechenden Namen zur Auswahl zu stellen. Für die Übergabe an die Prozedur wird aber ein Schlüssel bzw. eine ID verwendet. Das SQL-Kommando kann direkt in diese Spalte eingetragen werden. Es hat sich allerdings bewährt, hier nur wieder einen Namen einer weiteren Prozedur (z.B. P_Select_Monat) zu hinterlegen, welche dann das entsprechende SQL-Kommando enthält.

V_SYS_DataEntryMenue

In der Sicht V_SYS_DataEntryMenue wird auf die Tabelle T_SYS_DataEntryMenue referenziert. Sie ist zwingend notwendig und wird von DeltaMaster erwartet, um die entsprechenden Menüeinträge auszulesen.

T_SYS_DataEntryMenue_Rights

Die Tabelle T_SYS_DataEntryMenue_Rights ist optional. Sie kann genutzt werden, um für die einzelnen Menüeinträge gezielt Ausführungsberechtigungen auf Benutzergruppenebene zu vergeben.
Sie enthält die folgenden Spalten:

Role_Name

Der Name der Benutzergruppe. Die Benutzergruppe muss in einer weiteren Tabelle gepflegt werden, ebenso die Zuordnung der Benutzer zur Gruppe.

Menue_ID

Die ID des Menüeintrages aus der Spalte Menue_ID der Tabelle T_SYS_DataEntryMenue.

HasExecutionRight

Hier werden die Werte True (berechtigt) oder False (nicht berechtigt) zur Steuerung der Berechtigung eingetragen.

Bei Nutzung der Berechtigungstabelle, muss diese in der View V_SYS_DataEntryMenue an die Tabelle T_SYS_DataEntryMenue über die Spalte Menue_ID gejoint und auf den angemeldeten Benutzer und der daraus resultierenden Benutzergruppe abgefragt werden.

Befüllung der Menütabellen

Die Befüllung der TabellenT_SYS_DataEntryMenueund T_SYS_DataEntryMenue_ProcParameters kann entweder von Hand oder per SQL-Script erfolgen. Im aktuellen Beispiel sind die Tabellen mit folgenden Einträgen gefüllt:

T_SYS_DataEntryMenue

Es sollen sechs Menüpunkte zur Verfügung stehen, die durch vier Trennstriche unterteilt werden.

T_SYS_DataEntryMenue_ProcParameters

Die Tabelle T_SYS_DataEntryMenue_ProcParameters enthält vier Einträge über die dem Anwender bei Auswahl des entsprechenden Menüpunktes weitere Auswahlmöglichkeiten zur Verfügung gestellt werden.

In unserem Beispiel wird eine Auswahlliste mit Kunden und Monaten angezeigt, über die gesteuert werden kann, welche Daten exportiert oder gelöscht werden sollen.

Benötigte Softwarekomponenten für DeltaMaster

Um in DeltaMaster benutzerdefinierte Menüs anzeigen zu können, müssen weitere Softwarekomponenten installiert werden. Es handelt sich hierbei im Wesentlichen um die Datei SRE_KPI_DataEntry.dll, welche in das DeltaMaster-Programmverzeichnis kopiert werden muss. Weitere DLLs, die für die korrekte Sprachdarstellung benötigt werden, müssen in das entsprechende Sprachunterverzeichnis des DeltaMaster-Programmverzeichnisses kopiert werden. Es empfiehlt sich, die von Bissantz zur Verfügung gestellte Zip-Datei einfach in das DeltaMaster-Programmverzeichnis zu entpacken.

Darüber hinaus muss die Datei Client.exe.config, welche sich ebenfalls im DeltaMaster-Programmverzeichnis befindet, um den folgenden Eintrag im Bereich Modules erweitert werden:

 

<Module ID=”0″ Type=”DeltaMiner.SRE_KPI_DataEntry.SRE_KPI_DataEntry,SRE_KPI_DataEntry” Key=”SRE_KPI” />

Aktivieren der Menüfunktion in DeltaMaster

Damit das benutzerdefinierte Menü nun auch in DeltaMaster sichtbar wird, muss die jeweilige Analysesitzung (*.das) einmal mit einer Entwicklerversion von DeltaMaster geöffnet und unter Modell – Modellbrowser auf der Registerkarte System im Feld „Custom Module Keys“ der Eintrag „SRE_KPI“ eingetragen werden.

Danach muss die Analysesitzung gespeichert werden und kann von nun an wieder mit der „normalen“ Version von DeltaMaster geöffnet werden. Wurden alle genannten Vorraussetzungen erfüllt, sollte nach dem Neustart der Analysesitzung nun das benutzerdefinierte Menü „SRE_KPI“ in DeltaMaster sichtbar sein.

In der derzeitigen Umsetzung der Menüsteuerung besteht keine Möglichkeit den Namen des Hauptmenüeintrages zu ändern. Er wird immer mit dem Kürzel „SRE_KPI“ angezeigt. Sicher wird es in naher Zukunft eine Möglichkeit geben, auch diesen Namen selbst zu definieren. In der Webversion ist dies schon möglich.

Abschließend sollte in der Analysesitzung unter Extras – Optionen auf der Registerkarte Dateneingabe unter Transaktionssteuerung der Eintrag „Datenbanktransaktionen“ gewählt werden. Nur so wird beim Aufruf eines Menüpunktes vom Subtype 1 vor der eigentlichen Ausführung eine Transaktion geöffnet, die nach Abschluss der Aktion übernommen oder verworfen werden kann.

Im zweiten Teil wird die Beispielanwendung im Detail beschrieben.