Gastbenutzer anlegen
Ereignisaktion - Kurzfassung
Zweck: Legt ein neues Gastbenutzer-Konto an und führt danach optional konfigurierbare Ereignisaktionen aus.
Die Ereignisaktion Gastbenutzer anlegen dient zum automatischen Anlegen eines neuen Gastbenutzer-Kontos (s. Gastbenutzer).
Das neue Gastbenutzer-Objekt wird unter Berücksichtigung der Konfiguration mit Zuweisungen für Merkmale des Kontos (s. folgender Abschnitt) parametriert.
Für das Feld "Login-Token" (loginToken) wird automatisch ein eindeutiger Textschlüssel generiert (s. Gastbenutzer).
Falls als Bezugsobjekt eine Entität vorliegt, wird im Gastbenutzerkonto automatisch eine "Gastbenutzer-Restriktion" eingerichtet, die den Zugriff auf Entitäten desselben Typs betreffen (s. "Besonderer Anwendungsfall: Gastbenutzer-Restriktion").
►WICHTIG◄ Das neue Gastbenutzer-Konto wird erst und nur dann wirklich erstellt, wenn die laufende Transaktion erfolgreich abgeschlossen, also nicht durch einen Fehler oder eine Abbrechen beendet wird. Da das neue Gastbenutzer-Konto sinngemäß zum Speichern am Ende der Transaktion vorgemerkt wird (s. a. Änderungen später speichern), wird der automatisch generierte Primärschlüssel im Feld "ID" (id) sofort zugewiesen. Erst mit dem Abschluss der Transaktion wird dann auch noch das Ereignis "Erstellen" für den neuen Gastbenutzer ausgelöst, für das weitere Ereignisbehandlungen greifen können.
Auf den volatilen Datenstand des neuen Gastbenutzer-Kontos können die unterhalb konfigurierbaren Dann-Aktionen bei Bedarf über die Variable createdGuestUser zugreifen. Deren Wert bleibt auch für nachfolgende Ereignisaktionen gültig.
Das Bezugsobjekt, in dessen Kontext die Ereignisaktion Gastbenutzer anlegen aufgerufen wurde, gilt dabei unverändert weiter.
Besonderer Anwendungsfall: Gastbenutzer-Restriktion
Wenn die Ereignisaktion Gastbenutzer anlegen mit einer Entität als Bezugsobjekt ausgeführt wird, wird dem angelegten Gastbenutzer automatisch eine Gastbenutzer-Restriktion (im Feld restrictions) hinzugefügt, die sich auf den Entitätstyp des Bezugsobjekts bezieht.
Die automatisch erstellte Gastbenutzer-Restriktion schränkt ausschließlich den Zugriff auf Entitäten ein, deren Entitätstyp (entityClass) mit dem Bezugsobjekt übereinstimmt. Dabei gilt:
Grundsätzlich besteht nur Zugriff auf eine bestimmte Entität, wenn dieser anhand der Rolle der Session und für die Firma der Session gewährleistet ist.
Sofern die ID (id) einer Entität nicht in der "Whitelist-Einschränkung" der Gastbenutzer-Restriktion aufgeführt ist, gilt sie als nicht verfügbar. Per Standard verweist die "Whitelist" nur auf die ID des Bezugsobjekts.
Falls ein Gastbenutzer aufgrund der verwendeten Rolle über die Berechtigung verfügt, Entitäten des betreffenden Typs zu erstellen, erhält er auch auf diese "selbst erstellten" Entitäten Zugriff.
Das Beispiel rechts zeigt das Konto eines Gastbenutzers im XML-Format, der über die Ereignisaktion Gastbenutzer anlegen im Kontext eines Bezugsobjekts vom Typ Bestellungen angelegt wurde:
|
Beispiel für ein Gastbenutzerkonto mit Restriktion:
<? xml version = "1.0" encoding = "UTF-8" ?> < base :GuestUser ... id = "5805" ... > < restrictions > < restrictions > < entry > < key xsi:type = "xsd:string" >de.lobster.scm.order.bto.Order</ key > < value junctionType = "DISJUNCTION" xsi:type = "base:GuestRestrictionJunction" > < base :OnlySelfCreatedRestriction/> < base :WhiteListRestriction> < ids > < id >5001</ id > </ ids > </ base :WhiteListRestriction> </ value > </ entry > </ restrictions > </ restrictions > < customData xsi:nil = "true" xsi:type = "nil" /> </ base :GuestUser> |
►HINWEIS◄ Falls ein Gastbenutzer im Kontext einer Entität als Bezugsobjekt angelegt werden soll, für den die Gastbenutzer-Restriktion entfällt, kann diese z. B. über die Dann-Aktionen entfernt werden. Dazu muss nur dem restrictions-Feld per Setze Wert-Ereignisaktion der Wert "Kein Wert" zugewiesen werden.
Besonderer Anwendungsfall: Ribbonmakro-Befehl "Gastbenutzer hinzufügen"
Der Ribbonmakro-Befehl "Gastbenutzer hinzufügen" (s. Verfügbare Befehle) kann im Ribbon für einen beliebigen Kontext (z. B. in einer Übersicht oder Detailsicht für einen bestimmten Entitätstyp) eingebunden werden.
Zur Laufzeit kann dieser Befehl nur in Verbindung mit einer Einfachauswahl ausgeführt werden, um einen teilweise vordefinierten Workflow zu starten:
In einer Übersicht muss genau eine Zeile ausgewählt sein.
In einer Detailmaske müssen die Daten einer Entität angezeigt werden, die bereits erstellt also mindestens einmal gespeichert wurde.
In beiden Fällen wird mit der Auswahl als Bezugsobjekt der folgende Ablauf ausgelöst:
Der Ribbonmakro-Befehl "Gastbenutzer hinzufügen" kann per Klick auf einen Ribbon-Button ausgelöst werden. Das Beispiel rechts zeigt einen benutzerdefinierten Button für diesen Zweck. Dann erscheint zunächst der unterhalb abgebildete Dialog, der dem vom Benutzer die Eingabe einer E-Mail-Adresse für den neu anzulegenden Gastbenutzer verlangt. Ein Klick auf das "X"-Symbol rechts oben im Dialogtitel gilt als Abbruch des Ribbonmakros ohne weitere Auswirkungen. Ggf. nachfolgende Befehle in demselben Makro werden nicht ausgeführt. Ein Klick auf den Button "Erzeugen" löst das Ereignis "Gastbenutzer erzeugen" (s. Gastbenutzer (Ereignisse)) aus, dem das aktuelle Bezugsobjekt als Eingabewert und die im Dialog eingegebene E-Mail-Adresse als Wert einer Variablen guestUserEmailAddress übergeben werden. ►HINWEIS◄ Die Eingabe für die E-Mail-Adresse wird in keiner Weise validiert. Der Button "Erzeugen" kann auch betätigt werden, wenn keine Eingabe erfolgt ist. Dann enthält die Variable guestUserEmailAddress eine leere Zeichenfolge ("") und nicht etwa "kein Wert" (null). |
E-Mail-Adresse in Variable guestUserEmailAddress |
Sofern für das Ereignis "Gastbenutzer erzeugen" (s. Gastbenutzer (Ereignisse)) Ereignisbehandlungen konfiguriert sind, werden diese abgearbeitet. Typischerweise wird dabei die Ereignisaktion Gastbenutzer anlegen verwendet, um die Daten für einen neuen Gastbenutzer zu konfigurieren, dessen E-Mail-Adresse aus der Variablen guestUserEmailAddress übernommen wird. Eine entsprechende Ereignisbehandlung könnte vor der Ereignisaktion Gastbenutzer anlegen noch Prüfungen für den Wert der Variablen guestUserEmailAddress ausführen, um die Plausibilität der Eingabe als E-Mail-Adresse abzusichern:
►HINWEIS◄ Sofern keine Ereignisbehandlung auf das ausgelöste Ereignis "Gastbenutzer erzeugen" reagiert, wird der Dialog kommentarlos und ohne weitere Auswirkungen geschlossen. Das ist auch dann der Fall, falls Ereignisbehandlungen ausgelöst werden, die fehlerfrei abgearbeitet werden, ohne dass die Ereignisaktion Gastbenutzer anlegen ausgeführt wird. |
▼ |
Sofern die Ereignisaktion Gastbenutzer anlegen als Reaktion auf das Ereignis "Gastbenutzer erzeugen" (s. Gastbenutzer (Ereignisse)) erfolgreich ausgelöst wird, erscheint beim Abschluss der Transaktion eine Meldung wie die rechts gezeigte. Diese gibt den automatisch erstellten Login-Token wieder, mit dem der angelegte Gastbenutzer sich am System anmelden kann. In der Regel sollte diesem dieser Token auch per E-Mail zugestellt werden. Dazu wird typischerweise die Ereignisaktion E-Mail-Versand im Kontext der Ereignisaktion Gastbenutzer anlegen ausgeführt. |
|
►HINWEIS◄ Das Bundle de.lobster.scm.base.security.guest.GuestUser beinhaltet u. a. die Sprachverwaltungseinträge für die hier gezeigten Dialoge, die bei Bedarf angepasst oder durch Firmenspezifische Sprachanpassungen übersteuert werden können.
Konfiguration
Die Konfiguration (rechts expandiert abgebildet) sieht folgende Parameter für Zuweisungen an das anzulegende Gastbenutzer-Konto vor:
|
|
Im Abschnitt Dann-Aktionen können per Klick auf das ►ANMERKUNG◄ Ereignisaktionen, die als Dann-Aktionen konfiguriert werden, könnten in der Regel ebenso gut als Nachfolger unterhalb der Ereignisaktion Gastbenutzer anlegen angeordnet werden. Zugriff auf das Bezugsobjekt und die Variable createdGuestUser besteht nach dem Ausführen von Gastbenutzer anlegen auch für Ereignisaktionen außerhalb des Dann-Aktionen-Blocks. Das Hinzufügen von Ereignisaktionen als Dann-Aktionen unterstreicht also rein organisatorisch die Bindung zur Anlage des Gastbenutzer-Kontos. |
Beispiel
Im Kontext von Geschäftstransaktionsobjekten unterschiedlicher Typen soll im Ribbon ein Button angeboten werden, über den der Ribbonmakro-Befehl "Gastbenutzer hinzufügen" für die ausgewählte Entität ausgelöst werden kann.
Nach Angabe einer E-Mail-Adresse soll ein Gastbenutzerkonto angelegt und eine Nachricht mit einem Login-Link für dieses Gastbenutzerkonto an diese E-Mail-Adresse versendet werden. Der Betreff soll dabei Informationen aus dem Kontext des Geschäftsobjekts wiedergeben.
Das Gastbenutzerkonto soll ab sofort für 7 Tage gültig sein und in diesem Zeitraum eine unbegrenzte Anzahl von Anmeldungen mit einer zu diesem Zweck angelegten Rolle ("XF_GUEST") und im Kontext der Firma erlauben, die im ausgewählten Geschäftsobjekt als Auftraggeber angegeben ist.
►ANMERKUNG◄ Die folgende Konfiguration deckt gleichzeitig die beiden oben beschriebenen "besonderen Anwendungsfälle" ab. Die automatisch erstellte "Gastbenutzer-Restriktion" tritt dabei nicht in Erscheinung. Allerdings wird im angelegten Gastbenutzerkonto zur Laufzeit automatisch eine Restriktion erzeugt, die sich auf das als Bezugsobjekt vorliegende "Geschäftstransaktionsobjekt" bezieht. Die Einschränkung betrifft dabei die konkrete entityClass des Bezugsobjekts und nicht etwa alle Typen, die als "Geschäftstransaktionsobjekt" gelten. Erlaubt die dem Gastbenutzer zugeordnete Rolle z. B. den Zugriff auf Sendungen und Bestellungen, dann besteht für einen Gastbenutzer, der mit einer Sendung als Bezugsobjekt erzeugt wurde, nur Zugriff auf diese eine Sendung, während er auf alle Bestellungen Zugriff erhält, die ein regulärer Benutzer mit derselben Firma und Rolle sehen würde.
Konfiguration:
Für das Auslösende Ereignis "Gastbenutzer erzeugen" wird eine Ereignisbehandlung angelegt und wie recht abgebildet konfiguriert:
Die Aktionen bei bestandener Regel werden hier zunächst im Überblick vorgestellt. Für ausgewählte Konfigurationen folgen unterhalb die Details:
|
|
Die Konfiguration innerhalb der Ereignisaktion Gastbenutzer anlegen ist rechts aufgeklappt zu sehen:
|
|
Die Konfiguration für die Ereignisaktion E-Mail-Versand innerhalb der Dann-Aktionen ist rechts aufgeklappt dargestellt:
►ANMERKUNG◄ Die Nachricht wurde im Beispiel sehr kompakt gehalten und ohne Bezug zur Sprachverwaltung umgesetzt. Der Betreff und/oder der Mail-Body werden in der Praxis sicher auch Informationen zum Geschäftstransaktionsobjekt enthalten, das im Kontext der Dann-Aktionen als Bezugsobjekt anliegt. Außerdem sollte die in der Konfiguration (s. o.) für die Anmeldung des Gastbenutzers zugewiesene Sprache sicher auch mit Blick auf die Benachrichtigung berücksichtigt werden. In diesem Fall wäre ein Wertauflöser vom Typ Wert aus Sprachverwaltung zu empfehlen, über den auf einen Sprachverwaltungseintrag mit Parametern verwiesen wird, denen zur Laufzeit die entsprechenden Details aus dem Gastbenutzer oder dem Geschäftstransaktionsobjekt zugewiesen werden können. |
|
Laufzeitbeispiel: Das Beispiel rechts zeigt die Benachrichtigung die bei Eingabe der E-Mail-Adresse an "ben.utzer@doma.in" versendet wird. ►HINWEIS◄ Typischerweise wird der Link im Mail-Body der Nachricht im Mail-Client anklickbar erscheinen, obwohl der Body content type text/plain zugewiesen ist. Die Vorschau im E-Mail-Objekt, aus dieser Screenshot stammt, formatiert den Link dagegen nicht automatisch als Verknüpfung. |
|