Um einen Bericht erstellen zu können, benötigen Sie den Report-Designer, der mit dem Basis-Paket (‚OMBaseSetup‘) des Operations Managers installiert wird. Sie finden den Report-Designer (ReportDesigner.exe) im Installationsverzeichnis des Operations Managers im Ordner ‚dispatcher‘.
1
2
Nachdem Sie den Report-Designer erstmalig gestartet haben, müssen die bereits existierenden Berichte lokal auf dem Rechner abgespeichert werden.
Nach einem Klick auf ‚Download‘ öffnet sich ein Fenster zur Auswahl des Speicherpfades.
Durch Klick auf ‚OK‘ wird im ausgewählten Verzeichnis ein Unterordner namens ‚data‘ angelegt, in dem die Berichte im XML-Format abgespeichert werden.
Beim nächstmaligen Start des Report-Designers genügt es, den ‚Connect‘ Button zu klicken und den beim Download der Reports ausgewählten Ordner anzugeben (nicht das ‚data‘ Verzeichnis).
Im obigen Beispiel wurde das Verzeichnis ‚Desktop‘ ausgewählt, woraufhin auf dem Desktop der Ordner ‚data‘ angelegt wurde. Zum Connecten der Reports muss folglich wieder das Verzeichnis ‚Desktop‘ ausgewählt werden.
Sofern der Download bzw. der Connect erfolgreich war, erscheinen im linken Fenster des Report-Designers die Berichte, die nun entsprechend bearbeitet werden können.
Nachdem Sie einen Bericht bearbeitet haben, müssen die Änderungen zunächst über den ‚Save‘-Button im lokalen Report abgespeichert werden. Ob die vorgenommenen Änderungen erfolgreich waren, lässt sich am einfachsten überprüfen, indem man den geänderten Bericht im linken Fenster auswählt und anschließend ‚Preview‘ klickt. Nach einer kurzen Wartezeit erscheint ein neues Fenster mit dem Ergebnis.
Sofern das Ergebnis des Berichts den Anforderungen entspricht, kann der Bericht in die Datenbank geladen werden, damit er auf den Basketservern zur Verfügung steht. Hierzu markiert man den Bericht mit der rechten Maustaste und wählt ‚Publish‘.
Um einen neuen Bericht zu erstellen, genügt es, den ‚Connect‘-Button zu klicken und ein willkürliches Verzeichnis auszuwählen. Sobald Sie den ‚OK‘-Button im Fenster für die Verzeichnis-Auswahl anklicken, verbindet sich der Report-Designer mit der Datenbank und Sie können mit dem Button ‚New‘ einen neuen Report erzeugen.
Klickt man auf ‚New DataDefinition‘ erscheinen im rechten Fenster die Parameter zur initialen Konfiguration des neuen Berichts. Der Parameter ‚Name‘ definiert den Anzeigenamen des Berichts im Warenkorb. Die weiteren Parameter im Bereich ‚01 Presentation‘ können so belassen werden.
Im Bereich ‚02 Data‘ ist zu definieren, aus welcher Quelle die Daten stammen, die der Bericht aufbereiten soll. Handelt es sich um Daten aus der HDB, muss im Parameter ‚ProcessorPath‘ die Option ‚OM HDB‘ und im Parameter ‚ConnectionInformation‘ die Option ‚Default HDB Connection‘ ausgewählt werden.
Stammen die Daten hingegen aus einer SQL-Datenbank wie beispielsweise der ‚ntadm2‘, muss der ‚ProcessorPath‘ auf ‚MS SQL‘ eingestellt werden. Die Einstellung der ‚ConnectionInformation‘ ist in diesem Fall von der der SQL-Datenbank abhängig. Handelt es sich um die ‚ntadm2‘, kann die ‚Default NTADM2 SQL Connection‘ gewählt werden. Bei anderen SQL-Datenbanken ist die Einstellung der ‚ConnectionInformation‘ von der Authentifizierungsmethode an der Datenbank. Erfolgt der Zugriff auf die Datenbank mit einem Windows-Account, muss die Einstellung ‚Template custom SQL Connection Integrated‘ ausgewählt und die entsprechenden Verbindungsinformationen hinterlegt werden. Wird hingegen die SQL Server Authentifizierung genutzt, muss als ‚ConnectionInformation‘ die Einstellung ‚Template custom SQL Connection SQL User‘ verwendet werden. Auch in diesem Fall müssen anschließend die entsprechenden Verbindungsdaten eingetragen werden.
Da die große Mehrheit der Berichte auf die Datenbestände der HDB zurückgreift, wird im Folgenden die Erstellung eines neuen Berichts anhand eines Beispiels auf Basis der Verwendung des HDB-Processors beschrieben.
Klicken sie als nächstes im linken Feld auf den Bereich ‚Tables‘. Bei der Verwendung des HDB-Prozessors werden hier die HDB-Klassen eingetragen, deren Daten im Bericht angezeigt werden sollen. Im Falle des SQL-Processors werden die Datenbank-Tabellen eingetragen, aus denen die Daten für den Bericht kommen sollen. Klicken sie anschließend auf ‚New‘ und markieren sie ‚Table (NEW TableDefinition)‘ mit einem Klick durch die linke Maustaste. Im rechten Fenster erscheinen wieder die Konfigurations-parameter.
Tragen sie im Parameter ‚Name‘ den Namen der entsprechenden HDB-Klasse (oder der SQL-Tabelle) ein, deren Daten durch den Bericht aufbereitet werden. Da der hier erstellte Beispiel-Report ‚Benutzer‘ heißt und dementsprechend Daten der Klasse Account anzeigen soll, muss in ‚Name‘ ‚Account‘ eingetragen werden.
Sofern im Bericht nicht alle Accounts angezeigt werden sollen, müssen sie noch einen entsprechenden Filter definieren, um die Ergebnismenge einzuschränken. Klicken sie hierzu in das Feld ‚Filter‘. Klicken sie auf das auf der rechten Seite erscheinende Icon, erscheint ein Editor für die Definition des Filters.
Der Editor bietet vielfältige Möglichkeiten, einen Filter zu definieren. Mithilfe des Mandator-Filters kann ein Filter auf Basis der im OM gängigsten Filtermethoden zusammengeklickt werden. Ebenso ist es möglich, durch Eintragung eines Select-Statements, einen SQL Filter zu definieren. Auch eine Kombination aus Mandator- und SQL-Filter ist möglich, wie das Beispiel im folgenden Screenshot zeigt:
In obigem Screenshot wird zunächst definiert, dass nur Objekte der Klasse ‚ADGroup‘ angezeigt werden sollen, die dem MandatorADGroupType ‚Role‘ angehören. Der SQL-Filter sorgt anschließend dafür, dass nur solche AD-Gruppen angezeigt werden, die dem entsprechenden Mandanten zugehörig sind und im Attribut ‚ADDisabled‘ den Wert ‚1‘ eingetragen haben.
Des Weiteren ist es möglich, im Feld für den SQL-Filter eine HDB-Query einzutragen. Beispielsweise würde die HDB-Query
@Account((Mandator={MANDATOR}) AND (isLockedOut=1))
sicherstellen, dass der Bericht ausschließlich Accounts des ausgewählten Mandanten anzeigt, die aktuell gesperrt sind.
Mit einem Klick auf den Button wird der Filter generiert und kann mit ‚OK‘ bestätigt werden.
Damit der in diesem Dokument erstellte Beispielbericht ausschließlich Benutzer vom MandatorAccountType ‚User‘ anzeigt, muss der Filter folgendermaßen definiert werden:
Würde man im Feld für den SQL-Filter die HDB-Query
@Account((Mandator={MANDATOR}) AND (MandatorAccountType=User))
eintragen, würde der Bericht die gleiche Ergebnismenge liefern.
Damit im Warenkorb die zur Auswahl stehenden anzuzeigenden Daten nicht unsortiert untereinander stehen, können diese Daten auch gruppiert werden. Bei einem Benutzerbericht eignen sich zur Gruppierung die beiden Beriche ‚Benutzerdaten‘ und ‚Gruppenmitgliedschaften‘. Die beiden nachfolgenden Screenshots zeigen zunächst einen nicht gruppierten Bericht und anschließend einen Bericht, bei dem die Daten gruppiert wurden.
Bericht ohne Gruppierung
Bericht mit Gruppierung
Um die im Bericht anzuzeigenden Daten zu gruppieren, muss auf der linken Seite des Report-Designers der Bereich ‚Groups‘ markiert werden. Ein Klick auf ‚New‘ erzeugt eine neue Gruppe mit dem Namen ‚Group (New Group)‘. Tragen sie nun im rechten Feld bei ‚Name‘ ‚Benutzerdaten‘ ein, belassen sie die Parameter ‚IsDefaultOpen‘ und ‚SortOrder‘ wie sie sind und speichern sie ihre Eingabe. Erzeugen sie anschließend eine weitere Gruppe mit dem Namen ‚Gruppenmitgliedschaften‘, tragen sie bei ‚SortOrder‘ den Wert ‚1‘ ein und speichern sie erneut.
Der Parameter ‚SortOrder‘ gibt die Reihenfolge der Gruppen an. Wird der Parameter ‚Is DefaultOpen‘ auf ‚false‘ gesetzt, muss die entsprechende Gruppe im Warenkorb durch anklicken zunächst geöffnet werden, damit die Auswahlfelder angezeigt werden.
Der Bericht sollte nun aktuell wie folgt aussehen:
Im Bereich ‘Columns’ wird definiert, welche Daten der Bericht anzeigen soll. Bei Verwendung des HDB-Prozessors entspricht dieser Bereich den Attributen der im Bereich ‚Tables‘ ausgewählten Klasse(n). Bei Verwendung des SQL-Prozessors werden hier die Spalten der unter ‚Tables‘ ausgewählten Tabelle(n) eingetragen.
Markieren sie den Abschnitt ‚Columns‘ und klicken sie ‚New‘ um ein neues Attribut bzw. eine neue Spalte zu definieren. Markieren sie anschließend die neu erzeugte Column ‚Column (NEW ColumnDefinition)‘, erscheinen im rechten Feld die Konfigurationsparameter.
Der Standardwert für den ‚Type‘ ist ‚TextBox‘. Dieser kann außer bei Attributen vom Typ ‚boolean‘ immer beibehalten werden. Nur bei boolschen Werten muss als Typ ‚Bit‘ eingetragen werden. Sämtliche weiteren Optionen sind zu vernachlässigen.
In ‚DisplayName‘ muss der Name eingetragen werden, der im Bericht als Spaltenüberschrift angezeigt wird.
Das Attribut ‚SortOrder‘ bestimmt, an welcher Stelle des Berichts die Spalte angezeigt werden soll. Normalerweise erhält die erste Spalte des Berichts den Wert ‚10‘, die zweite Spalte den Wert ‚20‘, usw. Die Werte sind allerdings frei definierbar. Geben sie der ersten Spalte den Wert ‚1‘, wird die zweite Spalte hinter der ersten angezeigt, sobald dort in ‚SortOrder‘ ein Wert > 1 eingetragen wird.
Der Standardwert des ‚SortTypes‘ ist ‚Alphabetical‘, was in 99% aller Fälle die einzig sinnvolle Auswahl darstellt. Lediglich bei Attributen, deren Datentyp variieren kann, kann es sinnvoll sein, als ‚SortType‘ ‚Natural‘ zu wählen, wenn beispielsweise in einem Attribut für gewöhnlich ein Datumswert steht, ab und an aber auch ein String darin vorkommen kann. In diesem Fall werden dann erst alle Datumswerte sortiert aufbereitet und anschließend die Strings an die Sortierung angehängt. Die beiden anderen ‚SortTypes‘ erfüllen aktuell keinen Zweck.
Im Feld ‚Group‘ muss eine der Gruppen eingetragen werden, die zuvor im Bereich ‚Groups‘ des Reports definiert wurden.
Das Attribut ‚Visible‘ bestimmt, ob die entsprechende Spalte im Bericht angezeigt werden soll oder nicht.
Im Feld ‚Table‘ muss eine der Klassen bzw. Tabellen eingetragen werden, die im Bereich ‚Tables‘ definiert wurden.
Das Feld ‚Name‘ beinhaltet im einfachsten Fall den Namen des Attributs bzw. der Spalte, dessen/deren Werte angezeigt werden sollen. Soll beispielsweise der Wert des Account-Attributs ‚Firstname‘ angezeigt werden, muss im Feld ‚Name‘ ‚Firstname‘ eingetragen werden.
Soll stattdessen nur eine bestimmte Teilmenge des Attributwertes angezeigt werden, muss zusätzlich noch ein ‚Filter‘ eingetragen werden. Das Account-Attribut ‚ADGroups‘ beinhaltet beispielsweise sämtliche AD-Gruppen, in denen ein Benutzer Mitglied ist. Möchte man nun nur Gruppen vom MandatorADGroupType ‚Role‘ angezeigt bekommen, trägt man in ‚Name‘ ‚ADGroups‘ ein und klickt anschließend rechts im Feld ‚Filter‘ auf das Icon, um einen Filter zu konfigurieren.
Sofern in ‚Name‘ bereits das Attribut ‚ADGroups‘ eingetragen wurde, ist im Filter-Konfigurator das Account-Attribut ‚ADGroups‘ schon vorausgewählt. Im Feld ‚Mandator Type‘ wählt man nun ‚ADGroup‘ und anschließend in der Drop-Down-Liste ‚Type CName‘ den Gruppentyp ‚Role‘. Mittels der Drop-Down-Liste ‚ADGroup Attribute‘ wird dann bestimmt, welches Attribut der gefilterten AD-Gruppen im Bericht angezeigt werden soll. Wählt man dort beispielsweise das Attribut ‚displayName‘ und klickt anschließend den Button, wird der Filter generiert. Danach muss das in ‚ADGroup Attribute‘ ausgewählte Attribut, durch Semikolon getrennt, in das Feld darunter eingetragen werden. Mit einem Klick auf ‚OK‘ wird der Filter in den Report übernommen.
Die nachfolgenden beiden Screenshots zeigen zunächst die Einstellungen des Filter-Konfigurators für den ADGroupType ‚Role‘ und anschließend die vollständig konfigurierte Column. Bitte beachten sie, dass sich durch die Erzeugung eines Filters gleichzeitig auch der Wert im Feld ‚Name‘ ändert.
Filter-Konfigurator:
Column ‚ADGroups.MandatorADGroupType.Role.displayName‘:
Das Feld ‚InputCultureInfo‘ kann leer bleiben.
Der im Feld ‚Format‘ eingetragene HTML-Tag </br> sorgt im Bericht dafür, dass die aufgelisteten Gruppen durch einen Zeilenumbruch voneinander getrennt werden. Bleibt dieses Feld leer, wird als Trennzeichen das Komma verwendet. Wenn als ‚Type‘ ‚Bit‘ ausgewählt wurde, muss im Feld ‚Format‘ angegeben werden, was anstelle des Bit-Wertes ‚0‘ oder ‚1‘ zurückgegeben werden soll. In den meisten Fällen ist es dann sinnvoll, in ‚Format‘ ‚Ja|Nein‘, bzw. ‚Ja|Nein|Undefiniert‘ einzutragen.
Die Definitionen der im Feld ‚Aggregate Function‘ auswählbaren Funktionen entnehmen sie bitte der Microsoft Dokumentation. Der Standard dieses Feldes ist ‚None‘ und sollte außer bei der Aufbereitung von numerischen Werten auch so beibehalten werden.
Über den ‚Filter‘ wurde nicht nur erreicht, dass nur eine bestimmte Teilmenge von AD-Gruppen angezeigt wird, sondern auch bestimmt, welches Attribut der AD-Gruppen angezeigt werden soll (displayName). Soll stattdessen ohne Filtereinschränkung ein vom Standardwert abweichendes Attribut angezeigt werden, muss das Feld ‚Sub Query‘ benutzt werden. Beispielsweise steht die Organisationseinheit eines Benutzers in Form einer Id im Attribut ‚OrgUnit_Id‘. Da die Anzeige dieser Id im Bericht nicht besonders aussagekräftig wäre, bietet es sich an, stattdessen den CName der OrgUnit anzeigen zu lassen. Mittels der HDB-Query
{@OrgUnit({OrgUnit_id})|CName}
kann erreicht werden, dass der Report ein Objekt der Klasse ‚OrgUnit‘ sucht, dessen Id der Id entspricht, die am Account im Attribut ‚OrgUnit_Id‘ eingetragen ist und ihren CName zurückliefert. Komplexere ‚Sub Querys‘ können auch mithilfe des SubQuery-Konfigurators erzeugt werden, der sich öffnet, wenn sie im ‚Sub Query‘ auf den Button klicken.