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
- Bayern
- Deutschland
- 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
# | Beschreibung | Nuclos Version | Notizen |
---|---|---|---|
1 | Neues SystemBO "Mandant" | 4.2 |
|
2 |
| ||
3 | Neues SystemBO "Mandanten Parameter Wert" | 4.2 |
|
4 | Neues SystemBO "Mandanten Zuordnung" | 4.2 |
Wird eine Benutzerzuordnung nicht auf einen Mandanten eingeschränkt, so gilt sie für alle Mandanten |
5 | BO Wizard um Konfiguration der Mandantenabhängigkeit erweitern | 4.2 |
Die Mandantenabhängigkeit ist nicht Teil des Nuclets und muss ggf. beim Kunden nach dem Nucletimport manuell nachkonfiguriert werden. |
5a | Neues SystemBO "Mandanten Ebene" | 4.2 |
|
6 | Existiert für ein BO eine Abhängigkeit, wird automatisch in Suchergebnislisten, Unterformulare, Aufgabenlisten, Datenquellenergebnissen eingeschränkt | 4.2 |
|
7 | Neue Datensätze werde automatisch mit dem angemeldeten Mandanten verknüpft, falls erforderlich | 4.2 |
|
8 | Der Loginbildschirm wird um die Auswahl des Mandanten erweitert | 4.2 |
|
9 | Arbeitsumgebungen merken sich die zuletzt geöffneten Tabs abhängig pro Mandant | 4.5 | |
10 | |||
11 |
| ||
12 | Datenquellen Ausführung erweitern | 4.3 |
|
13 | Neue Berechtigung auf SQL Ebene einer Datenquelle | 4.3 |
|
14 | Optionale Mandanten Provider | 4.2 |
Die Implements Anweisung muss das Interface mit dem Vollqualifizierten Namen (mit Java Package) ansprechen, da ansonsten Nuclos die Zuweisung zum BO nicht identifizieren kann. Beispiel InvoiceMandatorProvider package com.buymore; import org.nuclos.api.UID; public class InvoiceMandatorProvider implements com.buymore.Invoice.NuclosMandatorProvider // <-- Wichtig, hier vollqualifiziert! { @Override public UID getNuclosMandatorId(Invoice inv) { // Anhand der Informationen aus der Invoice den Mandanten ermitteln, // z.B. aus einem Mapping Rechnungsadresse<->Mandant throw new RuntimeException("Not implemented"); } } |
15 | Mandant Teil des Unique Schlüssels | OFFEN | |
16 | Jobs | Einem Job, der mandantenabhängige BO's erzeugt muss entweder mitgegeben werden, für welche Mandaten der Job ausgeführt werden soll (er läuft dann mehrfach, je einmal pro Mandant) oder es muss das entsprechende NuclosMandatorProvider - Interface für dieses BO implementiert werden, was den Mandanten für das neu erzeugt BO ermittelt. |
Benutzerinteraktion und -design
Mandanten bzw. die Hierarchie wird in einer neuen Maske in der Administration konfiguriert. Die Parameter Werte für Mandanten werden im Nuclet Management bei den Parametern gepflegt.
Fragen
Unten finden Sie eine Liste von Fragen, die aufgrund dieses Anforderungsdokuments angesprochen werden müssen:
Frage | Ergebnis |
---|---|
Sollte der Mandant immer Teil des Unique Schlüssels sein oder nur bei Bedarf? | |
Welche Felder benötigt der Mandant ein Parameter noch? | Nucletparameter können für Mandanten spezifische Werte annehmen |
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? | Ja, werden extra definiert. Es kann allerdings nur die Beschriftung geändert werden. (Siehe auch Punkt 5a) |
Zu klären: Defaultbelegung bestehender Datensätze bei nachträglicher Einführung der Mandantenfähigkeit in einer Entität? | Ja, sind bereits Daten vorhanden, so muss ein Default Mandant ausgewählt werden. |
Zu klären: Verletzung der "referentiellen Integrität" bei Umhängen eines referenzierten Datensatzes zu einem anderen Mandanten kann nicht über die DB abgefangen werden. Aus Sicht des vorherigen Mandanten kommt das Umhängen aber einer Löschung gleich, darf also nicht zulässig sein, wenn referenziert. | Wird nicht zugelassen. Für eine nachträgliche Einführung und Aufteilung auf Mandanten muss eine Migration auf Datenbank Ebene entwickelt werden. Nuclos bietet hierfür vorerst keine Unterstützung an. |
Zu klären: Dropdowns und LOVs müssen ebenfalls dynamisch auf die für den jeweiligen Mandatenkontext sichtbaren Daten eingeschränkt werden. Was genau ist der Mandantenkontext? Alle hierarchisch unter dem angemeldeten Mandanten hängenden Mandanten? | Umgesetzt. Ein Mandantenkontext besteht aus der Schnittmenge der Anmeldung plus den Mandanten des zu verarbeitenden Datensatzes. Dabei wird immer der komplette Baum der Hierarchie (Siehe auch Punkt 6) herangezogen. Somit erfolgt auch eine Einschränkung von LOV & Co. bei einem Superuser. |
Verworfen
- Mandanten Parameter
- Eigene Klassen/Konstanten für Parameter und Provider
- Direktes Arbeiten mit Mandant über Getter und Setter und Attributen für Querys.