Table of Contents

SystemAccount

Hierbei handelt es sich um ein Systemkonto, über welches sich Systeme an PRO·M anmelden können, die aber keiner Person entsprechen. Das Systemkonto hat an dieser Stelle erst mal nur einen Namen, und kann noch gesperrt werden und das Recht erhalten, alle anderen Konten zu impersonieren.

Es hat noch kein Passwort, da das Teil der Authentifizierung ist, und diese austauschbar sein soll1).

Identität

Das Systemkonto hat eine surrogate Id, welches es identifiziert. Es hat auch einen Namen, der2) eindeutig ist. Man könnte den Namen unveränderbar machen, und das Konto darüber identifizieren lassen. Vielleicht später3).

Wobei es schwierig ist, wenn der Name das Konto identifiziert, also die Aggregate Id ist, und das Konto gelöscht werden kann. Was tun, wenn es später neu angelegt wird, bzw. ein neues Konto mit demselben Namen? Es gibt in PRO·M dafür bereits eine Lösung, indem ein Aggregate mit derselben Id wieder erzeugt werden kann, aber nur, nachdem es gelöscht wurde, wobei es komplett auf Null gesetzt wird. Am sinnvollsten wäre es, das Konto nicht löschen zu können, und die vorhandenen Mittel zu nutzen, z.B. dass man das Konto sperren kann. Nachteil: Man bekommt ein einmal angelegtes Konto nie wieder aus der Liste der Konten raus.

Index

Es gibt keinen Index auf den Namen des Kontos. Konten werden über die Lizengruppe erzeugt, damit die Lizenzgruppe vorher prüfen kann, ob ausreichend Lizenzen vorhanden sind4). Dort wird ebenfalls über das Read Modell geprüft, ob der Benutzername bereits in einem anderen Benutzerkonto oder in einem Systemkonto verwendet wird.

Ein doppelter Benutzername5) wird spätestens bei der Anmeldung mit dem Kontonamen abgefangen, mit einer DuplicateUsernameException. Der Anwender wird dann den Administrator anrufen, und dieser wird einen der beiden Kontonamen ändern6).

Inhalte

Die Systemkonto Rolle enthält (vorerst) keine weiteren Entitäten oder Value Objects.

Regeln

Keine Nennenswerten Regeln.

Befehle

Ereignisse

Workflow

I.d.R. hat ein Systemkonto ohne Authentifizierungsmechanismen wenig Sinn. Somit wird meist der Befehl AddSystemAccount in einem Batch mit dem Befehl AddSystemAccountAuthentication9) abgeschickt, damit das Konto gleich mit Kennwort oder einem anderen Authentifizierungsmechanismus erstellt wird. Es kann auch gleich mit der Person erstellt werden, da das Konto ja eine Rolle der Person ist, und somit Teil desselben Haupt Aggregates ist.

1) siehe auch Bemerkungen zum Benutzerkonto
2) schließlich
3) Dafür müsste man die vorhandenen Systemkonten abschalten, und auch aus der Prüfung auf die schließliche Eindeutigkeit der Namen raus nehmen
4) Über das Read Modell, also nicht 100% konsistent
5) Wahrscheinlichkeit hierfür ist geschätzt 0,0001%
6) Ist doch ganz einfach, das mit der eventual consistency, wenn man nicht eine allgemeine Lösung sucht, sondern sich die Fälle einfach mal genau anguckt
7) Die Logik ist eingebaut, das Ergebnis nicht, weil PRO·M 1.0 noch keine Sperren nach N Fehlversuchen kennt
8) Bzw. in demselben Batch, da beide Befehle auf dasselbe Hauptaggregate gehen
9) Oder einem ähnlichen