Rolle

Wertauflöser - Kurzfassung

Zweck: Gibt die Daten einer statisch ausgewählten Rolle zurück.

Siehe auch: Firmenwert

images/download/attachments/128386859/image2023-2-9_16-13-43-version-1-modificationdate-1675955623767-api-v2.png

Der Rolle-Wertauflöser ruft die Daten der durch statische Auswahl für den optionalen Parameter Rolle spezifizierten Rolle (s. Rollen) vom Server ab.

  • Ohne eine Auswahl für den Parameter Rolle lautet der Rückgabewert "kein Wert" (null).

  • Eine neu hinzugefügte Instanz des Rolle-Wertauflösers enthält keine Auswahl und erscheint wie oben dargestellt mit einem "leeren Label".

  • Wird eine bestehende Auswahl (bzw. das "leere Label") per Klick auf das "X" im Label entfernt, erscheint die Combobox leer. Das Speichern einer Konfiguration mit einem Rolle-Wertauflöser in diesem Zustand lässt das "leere Label" wieder erscheinen.

WICHTIG◄ Anstelle des Rolle-Wertauflösers, könnte man auch einen Eingabeobjekt (Typsicher)-Wertauflöser für den Typ "Rolle" verwenden, dem als Eingabewert die ID (id) einer Rolle (z. B. als statischer Long-Wert) zugeführt wird. Auch wenn es keine Unterschiede im Laufzeitverhalten der beiden Methoden gibt, besteht allerdings ein wichtiger Unterschied, wenn im Kontext einer Implementierung Lobster Data Platform / Orchestration-Konfigurationen per Meta Exchange zwischen Systemen ausgetauscht werden sollen. Wird der Rolle-Wertauflöser verwendet, um auf eine bestimmte Rolle zuzugreifen, werden beim Meta Exchange ggf. relevante Verknüpfungen zwischen Rollen (z. B. zwischen Test- und Produktivsystem) berücksichtigt, um die "korrespondierende" Rolle unabhängig von der in der jeweiligen Umgebung gültigen ID (id) automatisch zuzuordnen. Wird eine Rolle dagegen per Long-Wert mit dem Eingabeobjekt (Typsicher)-Wertauflöser adressiert, dann greift dieser Service nicht, was sich auf das Laufzeitverhalten von zwischen zwei Systemen übertragenen Konfigurationen fatal auswirken kann.

images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/warning.svg ACHTUNGimages/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/warning.svg Der Rolle-Wertauflöser ist in einem Client Workflow nicht verfügbar! Der Bezug zu einer statisch bestimmten Rolle kann in einem Client Workflow zwar ersatzweise durch eine Suche hergestellt werden. Mit Blick auf den Meta Exchange ist aber systematisch nicht ohne Weiteres gewährleistet, dass die verwendeten Suchkriterien systemübergreifend die jeweils korrespondierende Rolle (entsprechend der Meta Exchange-Verknüpfungen) "finden".

Konfiguration

Der optionale Parameter Rolle listet in einem Auswahlfeld/Combobox-Element alle Rollen für eine statische Einfachauswahl auf, für die in der Sitzung Lesezugriff besteht, in der der Wertauflöser konfiguriert wird.

HINWEIS◄ Für Rollen sind weder Besitzrechte noch Firmenfreigaben relevant. Zugriff besteht im Rahmen der Konfiguration auf die Rolle der Session und alle Rollen, die dieser direkt und indirekt untergeordnet sind.

Zur Laufzeit gibt der Wertauflöser die Daten der in der Konfiguration ausgewählten Rolle ohne Berücksichtigung von Zugriffsbeschränkungen im anwendbaren Anmeldekontext zurück.

Der Eingabewert wird ignoriert.

images/download/attachments/128386859/image2022-2-24_14-37-38-version-1-modificationdate-1675955564701-api-v2.png

Beispiele

Beispiel: Kriterium für eine Zeilenformatierung in einer Übersicht

In einer Übersicht für Gastbenutzer sollen alle Gastbenutzerkonten durch eine Zeilenformatierung (s. Zeilenformatierung in Datengrids) einen "Alarmstatus" (Farbschema "weiß/rot") erhalten, die sich nicht auf eine ausdrücklich für Gastbenutzer bestimmte Rolle beziehen.

Als legitime Rollen für Gastbenutzer sollen im folgenden Beispiel die beiden Rollen XF_GUEST und XF_SPECIAL_GUEST (s. Screenshot im Abschnitt "Konfiguration") dienen.

Laufzeitbeispiel:

images/download/attachments/128386859/image2022-2-25_7-29-33-version-1-modificationdate-1675955564690-api-v2.png

  • Der Screenshot zeigt ein Datengrid in einer "Gastbenutzerübersicht", in der die erste Zeile den "Alarmstatus" (weiß/rot) anzeigt, weil den betreffenden Gastbenutzerkonto eine Rolle zugeordnet wurde, die eigentlich nicht für Gastbenutzer verwendet werden soll.

ANMERKUNGGastbenutzer können interaktiv nur über die Standard-Erfassungsmaske gepflegt werden, so dass spezifische Einschränkungen für die Auswahl der Rolle (roleId) nicht per Formulardesigner geregelt werden können. Allerdings werden Gastbenutzer auch überwiegend automatisch erzeugt (z. B. per Gastbenutzer anlegen-Ereignisaktion). Der "Alarmstatus" in der Liste kann allerdings auch in Verbindung mit einer automatischen Rollenzuweisung nützlich sein, z. B. um zu erkennen ob es aktive Gastbenutzerkonten gibt, die von der aktuell gültigen Positivliste für zulässige Rollen abweichen.

Konfiguration:

Innerhalb der Listen-Einstellungen für die Gastbenutzerübersicht wird in den Datengrid-Einstellungen eine Zeilenformatierung (s. Zeilenformatierung in Datengrids) angelegt, die das Farbschema "weiß/rot" für die "Alarmstufe" definiert.

Die "Bedingung" der Zeilenformatierung wird wie rechts abgebildet formatiert:

  • Eine Feld Einschränkung prüft, ob im Feld "Rolle" (roleId) des Gastbenutzerkontos eine der ausdrücklich für Gastbenutzer vorgesehenen Rollen ausgewählt ist.

  • Auf der rechten Seite der Feld Einschränkung wird die Positivliste der zulässigen Rollen zunächst durch einen Erzeuge Liste-Wertauflöser angelegt. Jeder Eintrag verwendet eine eigene Instanz des Rolle-Wertauflösers, in dem eine zulässige Rolle ausgewählt ist.

  • Per Verkettung folgt ein Sammle Werte-Wertauflöser, der die Liste von Rollen (Rolle[]) in eine Liste von Long-Werten (Long[]) umwandelt, indem er über einen Objekt-Feld-Wertauflöser auf das Feld "ID" (id) der Rolle zugreift.

  • Innerhalb der UND-Verknüpfung folgt hier eine weitere Feld Einschränkung, die prüft, ob das Gastbenutzerkonto "Aktiv" ist, damit die Formatierung keinen "falschen Alarm" für bereits deaktivierte Konten deklariert.

    ANMERKUNG◄ Ggf. können hier weitere Nebenbedingungen ergänzt bzw. Ausnahmen definiert werden, etwa um Alarme für terminlich "abgelaufene" Gastbenutzer zu verhindern.

images/download/attachments/128386859/image2022-2-24_18-11-34-version-1-modificationdate-1675955564694-api-v2.png

Beispiel: Abbruchkriterium beim Speichern

Die im vorigen Beispiel durch eine Zeilenformatierung in der Gastbenutzerübersicht nur per "Alarmstatus" erkennbar gemachte Regelverletzung bei der Auswahl einer Rolle für ein Gastbenutzerkonto soll in der nächsten Ausbaustufe strenger gehandhabt werden:

  • Das Speichern eines Gastbenutzerkontos mit einer unzulässigen Rolle (roleId) soll durch Abbrechen effektiv verhindert werden.

  • Eine Fehlermeldung soll den Benutzer direkt über den Grund des Abbruchs und zulässige Optionen für die Rollenauswahl informieren.

Laufzeitbeispiel:

images/download/attachments/128386859/image2022-2-25_7-43-56-version-1-modificationdate-1675955564677-api-v2.png

Konfiguration:

Eine Ereignisbehandlung, die auf "Erstellen" und "Ändern" (s. Allgemein (Ereignisse)) als Auslösende Ereignisse reagiert, wird wie rechts abgebildet konfiguriert:

  • Die Prüfende Regel stellt zunächst sicher, dass eine Entität des Typs "Gastbenutzer" gespeichert werden soll.
    ANMERKUNG◄ Abhängig von der Zielsetzung könnten weitere Kriterien geprüft werden, um den Anwendungsbereich der Regel zu konkretisieren, etwa über eine Rollenregel oder Firmentyp-Regel.

  • Innerhalb der UND-Verknüpfung folgt unterhalb eine Objekt-Feld-Regel, deren Aufbau grundsätzlich der Feld Einschränkung aus dem vorigen Beispiel entspricht:

    • Links greift ein Objekt-Feld-Wertauflöser auf das Feld "Rolle" (roleId) des zu Gastbenutzerkontos zu, das als Bezugsobjekt gespeichert werden soll.

    • Durch die Kombination des In Liste-Matchers (unten) in Verbindung mit der Negation durch den not (Vergleichstyp) gilt die Objekt-Feld-Regel als bestanden, wenn die ID der Rolle (roleId) nicht in der rechts definieren Positivliste enthalten ist.

    • Die Positivliste (rechts) wird wie im vorigen Beispiel zunächst ausgehend von einem Erzeuge Liste-Wertauflöser aufgebaut, in dem jeder Eintrag über einen Rolle-Wertauflöser eine zulässige Rolle benennt.

    • Der in der Verkettung unterhalb nachfolgende Wert als Variable speichern-Wertauflöser speicher die Rollen-Liste in Variablen whiteList, damit die Positivliste bei einem Abbruch in der Fehlermeldung wiedergegeben werden kann.

    • Unterhalb wird der Sammle Werte-Wertauflöser analog zum vorigen Beispiel eingesetzt, um aus der Rollen-Liste eine Liste von Long-Werten für den Abgleich mit der roleId zu gewinnen, wobei der Objekt-Feld-Wertauflöser auf das Feld "ID" (id) der Rolle zugreift.

images/download/attachments/128386859/image2022-2-25_7-51-19-version-1-modificationdate-1675955564662-api-v2.png

Als Aktion bei bestandener Regel wird eine Abbrechen ausgeführt, die wie folgt parametriert wird:

  • Als Fehlertyp wird "Notification: Fehler" zugewiesen, damit die Meldung zur Laufzeit als "rote Fahne" am rechten Rand erscheint.

  • Passend zum willkürlich gewählten Fehlercode SECURITY_GUEST_USER_ROLE_ALERT adressiert einen Eintrag der Sprachverwaltung (s. u.). Der als Fehlercode verwendete Textschlüssel wird hier außerdem im Parameter Standardfehlermeldung angegeben, der in der Fehlermeldung erscheint, falls keine Lokalisierung gefunden wird.

  • In der Liste der Parameter wird ein Parameter hinzugefügt, der über den Vorlage-Wertauflöser aus dem Inhalt der Variablen whiteList eine formatierte Liste von Rollennamen (roleName) erzeugt.

images/download/attachments/128386859/image2022-2-25_8-10-24-version-1-modificationdate-1675955564659-api-v2.png

In der Sprachverwaltung wird für die Lokalisierung der Fehlermeldung ein Eintrag im Resource-Bundle error angelegt, dessen Resource-Name exakt dem Fehlercode (SECURITY_GUEST_USER_ROLE_ALERT) entspricht.

  • Das Feld Deutsch zeigt die Lokalisierung für diese Sprache. Rechts daneben ist die entsprechende Definition für die Sprache Englisch zu sehen.

  • Der Verweis auf den Parameter {0} markiert dabei in beiden Sprachen die Position, an der zur Laufzeit die Liste der zulässigen Rollen aus dem in der Fehlermeldung per Vorlage definierten Parameter eingefügt wird.

images/download/attachments/128386859/image2022-2-25_8-19-12-version-1-modificationdate-1675955564656-api-v2.png

images/download/attachments/128386859/image2022-2-25_8-26-45-version-1-modificationdate-1675955564650-api-v2.png