Tipps & Tricks - Rechteabhängige Anzeige von Datensätzen
Dieser Beitrag zeigt, wie Datensätze rechteabhängig angezeigt werden können. Fundierte Intrexx- und SQL-Kenntnisse werden vorausgesetzt. Aktivieren Sie die Experten-Optionen, damit alle Dialoge, die in diesem Beispiel genannt werden, erreichbar sind. Für Fehler, die aus einer nicht korrekten Umsetzung erfolgen, leistet die Company Name keinen Support und übernimmt keine Haftung.
Ein häufig verwendeter Weg, eine Zugriffsberechtigung für einzelne Datensätze zu erreichen, besteht darin, in der Datengruppe mit den zu beschränkenden Datensätzen ein Text-Datenfeld hinzuzufügen, dem mit Hilfe einer Verteilerkontrolle Benutzerobjekte zugewiesen werden. In einer zur Applikation gehörenden Ansichtstabelle wird anschließend ein Filter definiert, der den aktuell angemeldeten Benutzer mit der im Text-Datenfeld gespeicherten Menge an Benutzerobjekten vergleicht und überprüft, ob dieser Benutzer den Datensatz lesen darf. Diese Art der Filterung setzt den gewünschten Anwendungsfall zwar um, ist jedoch hinsichtlich der Performance nicht zu empfehlen. Vor allem in Portalen mit einer großen Anzahl an Benutzern und Gruppen ergeben sich beim Aufruf einer Seite mitunter sehr lange Ladezeiten. Durch den Vergleich mit Werten in Kinddatengruppen wird ein großer Performancegewinn erzielt. Dabei werden zugriffsberechtigte Benutzerobjekte in einer Kinddatengruppe gespeichert und über einen Foreign-Key-Filter mit Subselect zugeordnet.
Auf einer beliebigen Eingabeseite in der Datengruppe, auf die Zugriffsberechtigungen gesetzt werden soll, wird dazu das Element Mehrfachauswahl verwendet. Wählen Sie im Eigenschaftendialog der Mehrfachauswahl auf dem Reiter "Datenquelle" die Option "Verteilerauswahl" aus.
Auf dem Reiter Speicheroptionen wählen Sie die Option "Datengruppe" aus. Mit Klick auf "Neue Kinddatengruppe erstellen" wird eine neue untergeordnete Datengruppe angelegt. Diese Datengruppe erhält automatisch den Namen "Werte Verteilerkontrolle". Automatisch werden dabei auch drei Datenfelder angelegt:
-
PK – Primärschlüssel: Der eindeutige Schlüssel der neuen Datengruppe.
-
FK – Fremdschlüssel: Entspricht dem Primärschlüssel des übergeordneten Datensatzes, zu dem eine Berechtigung gespeichert werden soll.
-
Verteiler – Gespeicherter Wert: In diesem Datenfeld wird jeweils das Benutzerobjekt gespeichert, das vom Anwender in der Verteilerauswahl im Browser ausgewählt wurde. Werden mehrere Objekte selektiert, so wird in der Kinddatengruppe eine entsprechende Anzahl an Datensätzen angelegt.
Nun muss das Filter-XML des Filters in der gewünschten Ansichtstabelle bearbeitet werden.
Wechseln Sie auf die Seite, auf der sich die zu filternde Tabelle befindet und öffnen Sie den Eigenschaftendialog der Tabelle. Klicken Sie auf dem Reiter "Daten" auf "Filter" und anschließend auf "Filter im Expert-Modus bearbeiten".
<filter guid="EFC6F080E119E0D3AD5B8C9E0458EDE8054AFA0A">
<exp op="" type="in">
<arg content="GUID_1" type="fieldguid"/>
<arg type="statement">
<select content="GUID_2" type="tableguid">
<field content="GUID_3" type="fieldguid"/>
<conc op="and">
<exp op="" type="in">
<arg content="GUID_4" type="fieldguid"/>
<arg content="orgstruct" type="userattribute"/>
</exp>
</conc>
</select>
</arg>
</exp>
</filter>
Beim Öffnen des Editors ist bereits ein <filter>-Element definiert. behalten Sie dieses bei und entfernen Sie am Ende des Elements das Schließsymbol /. Fügen Sie dann das restliche, oben angegebene Skript ohne die erste Zeile ein. Ersetzen Sie folgende Werte:
-
GUID_1: GUID des Primary-Key-Datenfelds der Elterndatengruppe
-
GUID_2: GUID der Kinddatengruppe "Werte Verteilerkontrolle"
-
GUID_3: GUID des Foreign-Key-Datenfelds der Kinddatengruppe
-
GUID_4: GUID des Datenfelds "Verteiler" der Kinddatengruppe
Nach dem Speichern der Applikation können Sie die Anwendung im Browser testen, indem Sie Datensätze mit verschiedenen Benutzern anlegen und sich anschließend entsprechend am Portal anmelden.