Sie zeigen eine alte Version dieser Seite an. Zeigen Sie die aktuelle Version an.

Unterschiede anzeigen Seitenhistorie anzeigen

« Vorherige Version anzeigen Version 15 Nächste Version anzeigen »

Zielveröffentlichung4.1
DesignMandantenwesen
DokumentstatusENTWURF
Dokumenteigentümer

Maik Stüker

DesignerMaik Stüker, Ramin Göttlich
Entwickler 
QS 

Ziele

  • Nuclos soll um ein hierarchisches Mandantenwesen erweitert werden.

Hintergrund und strategische Eignung

Immer mehr Nuclet Produzenten fragen ein Mandantenwesen an. Hierbei steht das Zusammenspiel aus Berechtigung, Anmeldung und Einschränkung von Suchergebnissen eine entscheidende Rolle. Berechtigung und Einschränkung sind aktuell nur über Datensatzfreigaben realisierbar. Es fehlt aber eine Auswahl am Logindialog. Das neue Mandantenwesen soll transparenter im System integriert sein, ein eingerichteter Mandant, die Konfiguration eines Businessobjekts mit Mandantenabhängigkeit und eine Zuweisung zum Benutzer soll genügen.

Annahmen

  • Mandanten werden als Instanzabhängig betrachtet, nicht Teil eines Nuclets
  • Benutzer werden Mandanten zugewiesen (m:n)
  • Unterschiedliche Layouts und Statusmodelle werden nicht benötigt
  • Mandanten wird man in einer Hierarchie (Ebenen) anlegen. Beispiel (Land, Bundesland, Stadt):
    • Deutschland
      • Bayern
        • München
      • Berlin
        • Berlin
  • Ein Businessobjekt wird immer nur Mandanten einer bestimmten Ebene zugeordnet. Also z.B. der Ebene 2 im Beispiel einem Bundesland.
  • Auch in einer Instanz mit Mandanten muss nicht jedes Businessobjekt mandantenabhängig sein. Die Entscheidung soll für jedes Businessobjekt einzeln gefällt werden können.
  • Soll auch für einen Superuser greifen

Anforderungen

#BeschreibungPrioritätNotizen
1Neues SystemBO "Mandant"1
  • T_MD_CLIENT
  • PK: UID
  • Name, Beschreibung
  • Referenz auf sich selbst (STRUID_PARENT) -> hierarchisches Mandantenwesen
2Neues SystemBO "Mandanten Parameter"1
  • T_MD_CLIENT_PARAMETER
  • PK: UID
  • Name, Beschreibung, Defaultwert
  • Zuweisung zum Nuclet (wird entsprechend transferiert)
  • Java Klasse für die Verwendung in Regeln generieren, ParameterProvider erweitern
3Neues SystemBO "Mandanten Parameter Wert"1
  • T_MD_CLIENT_PARAMVALUE
  • PK: UID
  • Wert
  • Referenz auf Mandant und Parameter
4Neues SystemBO "Mandanten Zuordnung"1
  • T_MD_CLIENT_USER
  • PK: UID
  • Referenz auf Mandant und User
5BO Wizard um Konfiguration der Mandantenabhängigkeit erweitern1
  • INTCLIENTLEVEL
  • Die Abhängigkeit wird in Form einer Ebene/Level angegeben. NULL = keine Mandantenabhängigkeit
  • Tabellen erhalten eine neue Spalten STRUID_NUCLOSCLIENT
6Existiert für ein BO eine Abhängigkeit, wird automatisch in Suchergebnislisten, Subforms, Aufgabenlisten, Datenquellenergebnissen eingeschränkt1
  • Mit der Anmeldung wird eine Liste der für diese Session gültigen Mandanten generiert (und gecached) und immer den Statements als IN angehängt. WHERE STRUID_NUCLOSCLIENT IN (...)
  • Eine Berechtigung auf "Deutschland" beinhaltet auch automatisch alle darunter liegenden Ebenen.
  • Beispiel: Anmeldung "Deutschland" = Liste von Mandanten ("Deutschland", "Bayern", "München", "Berlin", "Berlin")
  • Siehe auch Punkt 12 u. 13
7Neue Datensätze werde automatisch mit dem angemeldeten Mandanten verknüpft, falls erforderlich1
  • Meldet man sich mit einer höheren Ebene an (im Beispiel mit einer Stadt = Ebene 3) das BO fordert aber Ebene 1, so wird der Hierarchie entsprechend der Mandant aus Ebene 1 verwendet
  • Meldet man sich mit einer niedrigeren Ebene an (im Beispiel mit einem Bundesland = Ebene 2) das BO fordert aber Ebene 3, wird eine Dropdown mit den zur Auswahl stehenden Mandanten der Ebene 3 angeboten. Die Berechtigung des Benutzer muss berücksichtigt werden. Enthält die Auswahl nur einen Eintrag wird dieser automatisch selektiert.
  • Zu klären: Wo und wird die Dropdown dargestellt?
8Der Loginbildschirm wird um die Auswahl des Mandanten erweitert1
  • Auswahl soll nur nötig sein, wenn der Benutzer mehr als einen Mandanten zur Auswahl hat
  • Auswahl erscheint erst nach erfolgreicher Authentifizierung
  • Stellt die Auswahl mehr als einen Mandanten zur Verfügung wird der zuletzt verwendete vorselektiert. Der Benutzer hat dann 5 Sekunden Zeit einen anderen Eintrag zu wählen, bevor die Anmeldung den Client öffnet. Der Timer wird unterbrochen, sobald der Benutzer die Mandanten-Dropdown anklickt.
9Arbeitsumgebungen merken sich die zuletzt geöffneten Tabs abhängig pro Mandant1 
10Nuclet Zuweisung und Transfer um Mandanten Parameter erweitern1
  • Auch die Mandantenabhängigkeit eines BO soll transferiert werden. Grundsätzlich soll man aber immer in der Lage sein, eine vom Herausgeber nicht berücksichtigte Mandantenabhängigkeit, nachträglich zu aktivieren. Somit gilt: Ein Nuclettransfer (genauer ein UPDATE) löscht niemals eine Information zur Mandantenabhängigkeit. Erklärt der Herausgeber eines Nuclets nachträglich die Mandantenabhängigkeit so wird dies ebenfalls berücksichtigt und angewendet.
  • Die Handhabung ist also vergleich mit der der Jobausführungsfrequenz (wird initial beim Nucletimport gesetzt, aber nicht mehr überschrieben, wenn sie auf dem Zielsystem geändert wird) <- Nicht korrekt, ein UPDATE kann die Abhängigkeit nachträglich setzen (Siehe oberen Punkt).
11Klassen Generierung für Mandanten Parameter und ParameterProvider erweitern1
  • Neues Interface für solche Parameter, ähnlich den Nuclet Parametern
  • Mandantenabhängige BOs erhalten neue Methoden (setNuclosClientId(String), getNuclosClientId(), getNuclosClient())
12Datenquellen Ausführung erweitern1
  • Ist die Datenquellen mit dem normalen Modell (nicht manuelles SQL Statement) erstellt worden, so werden alle verwendenden Tabellen auf den angemeldeten Mandanten eingeschränkt, sofern solch eine Abhängigkeit besteht.
  • Eine Datenquelle, basierend auf einem manuellen SQL wird nicht automatisch auf Mandanten eingeschränkt, da die Ermittlung hierfür zu komplex und fehleranfällig wäre. Ausnahme: Es existiert eine Ergebnisspalte "STRUID_NUCLOSCLIENT". In diesem Fall würde das Statement nochmals umhüllt, wobei die WHERE Bedingung die IN Clause für Mandanten enthält.
  • Siehe auch Punkt 6
13Neue Berechtigung auf SQL Ebene einer Datenquelle1
  • Nur wenn ein Benutzer über dieses Recht verfügt kann er eigene SQL Statements in Datenquellen verfassen. Ansonsten bleibt ihm nur das normale Modell. Mit entsprechendem Wissen könnte man ansonsten die Mandanteneinschränkung aushebeln.

Benutzerinteraktion und -design

Mandanten bzw. die Hierarchie wird über einen Baum konfiguriert. Name, Parameterwerte etc. werden in einem Eigenschaftsbereich rechts vom Baum konfiguriert.

Neue Maske für die Administration der Mandanten Parameter (nicht für die Werte)

Fragen

Unten finden Sie eine Liste von Fragen, die aufgrund dieses Anforderungsdokuments angesprochen werden müssen:

FrageErgebnis
Welche Felder benötigt der Mandant ein Parameter noch? 
Wird ein Schnellwechsel, ohne erneute Authentifizierung, benötigt? 

Klassen Generierung: Eine Klasse pro Nuclet mit den zugewiesenen Mandanten Parametern als Konstanten. Oder eine eigene Klasse pro Parameter?

Interface Name "ClientDepending"?

Name des Interfaces für mandantenfähige BOs: Multitenant (neben Stateful, etc.)

Da es um den Parameter geht... ClientParameter?!

Datenquellen um einen neuen automatischen Parameter "CLIENT" erweitern? (Ähnlich dem Username) 
Man kann eine Ebene nachträglich nur schwer zwischen vorhandenen platzieren. Z.B. man hat Anfangs die "Bundesländer" nicht gebraucht. Sollte man Ebenen extra Definieren? 

Verworfen

  • (noch nichts)
  • Keine Stichwörter