2024-03-28 14:30:22 +01:00
Use Cases
===
# Requierements
+ User0 - User ohne Account
+ UserA - generischer User
+ UserB - generischer User mit gleichen Rollen wir UserA
+ UserC - generischer User ohne Rollen
2024-03-30 19:21:10 +01:00
+ MachineA - frei zugängliche Resource mit festem Ort und Stromanschluss
+ TerminalA - NFC Reader bei MachineA, welche nur MaschinA nutzen kann
+ RolleB - Rolle mit Berechtigungen MachineB zu nutzen
+ MachineB - beschränkt zugängliche Resource mit festem Ort und Stromanschluss
+ TerminalB - NFC Reader bei MachineA, welche nur MachineB mit PIN nutzen kann
+ TerminalB - NFC Reader bei MachineA, welche nur MaschinB mit PIN nutzen kann
+ MachineC - frei zugängliche Resource mit festem Ort und Stromanschluss, benötigt MachineD zum funktionieren
+ MachineD - Maschine mit welche von MachineC gebraucht wird
+ MachineE - Maschine, welche von meheren Nutzer gleichzeitig verwendet werden kann
2024-03-28 14:30:22 +01:00
+ ManagerA - User mit Berechtigung zum Verwalten von Usern und Vergeben von Berechtigungen
+ UserB
+ CardA - FabFireCard von UserA
+ CardB - FabFireCard von UserB
+ Borepin - Client zum Interagieren von BFFH über FabAccess API
+ BFFH - Server mit FabAccess API
# Assumptions
+ die Pin für alle FabFireCards eine User ist die gleiche
+ Terminals wissen für welche Maschine sie eine PIN benötigen
+ Terminals sind immer an einen Satz von Maschinen gebunden und könnten nur diese Ausleihen
+ Maschinen fallen in einen definierten State zurück, wenn der Claim disowned wird oder disown failed, wenn sich einen Maschine in einem bestimmten State befindet
+ User können entweder einen Claim oder einen Interset an der selben Resource haben
# Tests
## Serverdaten
User0 kann von BFFH im Bootstrape sich Informationen zu dem Serverrelease und namen holen und über die InstanceURL, sowie den Spacenamen.
## Accounterzeugung
*User0 geht zu ManagerA und bittet um einen Account*
ManagerA öffnet Borepin, wird automatisch angemeldet
+ öffnet die Nutzerverwaltung
+ beginnt mit dem Anlegen eines neuen Nutzers
+ trägt den Nutzernamen ein
+ fügt zusätzliche Informationen hinzu
+ gerneriert ein Initialpasswort für User0
+ sagt User0 das Passwort / druckt User0 das Passwort aus / erstellt einen QR-Code mit Anmeldedaten / emuliert einen NTAG mit Anmeldedaten
User0 installiert Borepin, öffnet Borepin und
+ trägt die Serveradresse ein
+ verbindet sich mit dem Server
+ logt sich mit Username und Passwort ein
oder
+ scannt die Anmeldedaten per QR-Code / scannt die Anmeldedaten per NFC
+ verbindet sich mit dem Server und logt sich direkt ein
-> BFFH zwingt User0 ein neues Passwort zu setzen
User0 setzt ein neues Passwort
Borepin holt ein Token für die zukünftige Anmeldung des Gerätes
*User0 kann nun Resourcen ausleihen*
## Rollenvergabe
2024-03-30 19:21:10 +01:00
*UserA möchte MachineB verwenden können*
2024-03-28 14:30:22 +01:00
2024-03-30 19:21:10 +01:00
UserA geht zu ManagerA und erhält eine Einweisung für MachineB
2024-03-28 14:30:22 +01:00
ManagerA öffnet Borepin, wird automatisch angemeldet und
+ öffnet die Nutzerverwaltung
+ wählt UserA aus
+ fügt UserA RolleB zu
2024-03-30 19:21:10 +01:00
*UserA kann nun Borepin öffnen, wird automatisch angemeldet und kann MachineB nutzten*
2024-03-28 14:30:22 +01:00
2024-03-30 19:21:10 +01:00
## Claim - TestID:00001
*UserA steht vor MachineA und möchte diese verwenden*
2024-03-28 14:30:22 +01:00
UserA öffnet Borepin, wird automatisch angemeldet und
2024-03-30 19:21:10 +01:00
+ wählt MachineA in einer Liste aus / scannt den QR-Code von MachineA / scannt den NTAG von MachineA
+ leiht MachineA aus
+ schaltet den Strom von MachineA frei
+ verwendet MachineA
+ gibt MachineA zurück, Strom wird gesperrt vom BFFH
2024-03-28 14:30:22 +01:00
2024-03-30 19:21:10 +01:00
*UserA hat MachineA verwendet*
2024-03-28 14:30:22 +01:00
## Transfer
2024-03-30 19:21:10 +01:00
*UserA möchte UserB die MachineB übergeben*
2024-03-28 14:30:22 +01:00
2024-03-30 19:21:10 +01:00
UserA hatte MachineB ausgeliehen, öffnet Borepin, wird automatisch angemeldet und
+ wählt MachineA in einer Liste aus / scannt den QR-Code von MachineA / scannt den NTAG von MachineA
2024-03-28 14:30:22 +01:00
+ generiet ein Transfer QR-Code / emuliert eine Transfer NTAG
UserB öffnet Borepin, wird automatisch angemeldet und
+ scannt Transfer QR-Code / scannt Transfer NTAG
2024-03-30 19:21:10 +01:00
*UserB kann nun MachineB verwenden, ohne das der Zustand der Maschine sich verändet hat*
2024-03-28 14:30:22 +01:00
## Lend/Instruct
2024-03-30 19:21:10 +01:00
*UserA möchte UserC an MachineB ausbilden*
2024-03-28 14:30:22 +01:00
2024-03-30 19:21:10 +01:00
UserA hatte MachineB ausgeliehen, öffnet Borepin, wird automatisch angemeldet und
+ wählt MachineA in einer Liste aus / scannt den QR-Code von MachineA / scannt den NTAG von MachineA
2024-03-28 14:30:22 +01:00
+ generiet ein Lend QR-Code / emuliert eine Lend NTAG
UserC öffnet Borepin, wird automatisch angemeldet und
+ scannt Lend QR-Code / scannt Lend NTAG
2024-03-30 19:21:10 +01:00
+ verwendet MachineB
+ gibt MachineB zurück
2024-03-28 14:30:22 +01:00
2024-03-30 19:21:10 +01:00
UserA erhält MachineB zurück, prüft MachineB, gibt MachineB zurück
2024-03-28 14:30:22 +01:00
2024-03-30 19:21:10 +01:00
*UserC hat MachineB verwendet, unter Verantwortung von UserA*
2024-03-28 14:30:22 +01:00
## FabFireCard Erzeugung
*UserA geht zu ManagerA und möchte ein FabFireCard erhalten*
ManagerA öffnet Borepin, wird automatisch angemeldet und
+ öffnet die Nutzerverwaltung
+ wählt UserA aus
+ hält eine leere DESFire Karte auf den NFC Scanner
+ legt eine FabFireCard für UserA an und beschreibt diese
+ gibt UserA die FabFireCard - Card A
UserA öffnet Borepin, wird automatisch angemeldet und
+ geht auf seinem Profil
+ setzt eine Pin für die FabFireCard
*UserA hat eine FabFireCard erhalten und eine zusätzliche Pin festgelegt*
## Passwortänderungen
*UserA möchte sein Passwort ändern*
UserA öffnet Borepin, wird automatisch angemeldet und
+ geht auf seinem Profil
+ beginnt mit dem Ändern des Passwort
+ gibt sein altes Passwort ein
+ gibt ein neues Passwort ein
*UserA hat sein Passwort geändert*
## FabFireCard Pin ändern
*UserA möchte seine PIN zur FabFireCard ändern*
UserA öffnet Borepin, wird automatisch angemeldet und
+ geht auf seinem Profil
+ beginnt mit dem Ändern der Pin
+ gibt sein Passwort ein
+ gibt eine neue PIN ein
*UserA hat seine PIN geändert*
## Passwort vergessen
*UserA geht zu ManagerA und bittet darum ein neues Passwort zu erhalten*
ManagerA öffnet Borepin, wird automatisch angemeldet und
+ öffnet die Nutzerverwaltung
+ wählt UserA aus
+ sagt User0 das Passwort / druckt User0 das Passwort aus / erstellt einen QR-Code mit Anmeldedaten / emuliert einen NTAG mit Anmeldedaten
__Gleiches Verhalten wie bei Accounterzeugung__
*UserA hat sein Passwort zurückgesetzt*
## Terminalnutzung
2024-03-30 19:21:10 +01:00
*UserA möchte MachineA mit CardA ausleihen*
2024-03-28 14:30:22 +01:00
UserA steht vor TerminalA und
+ hält CardA auf den NFC Reader
TerminalA meldet sich bei BFFH und
2024-03-30 19:21:10 +01:00
+ leiht MachineA für UserA aus
2024-03-28 14:30:22 +01:00
+ schaltet den Strom frei
UserA steht vor TerminalA und
2024-03-30 19:21:10 +01:00
+ gibt auf TerminalA ein, MachineA zurückgeben
2024-03-28 14:30:22 +01:00
oder UserA öffnet Borepin, wird automatisch angemeldet und
+ gibt MaschinA zurück
2024-03-30 19:21:10 +01:00
*UserA hat MachineA mit CardA ausgeliehen und verwendet*
2024-03-28 14:30:22 +01:00
## Terminalnutzung mit PIN
2024-03-30 19:21:10 +01:00
*UserA möchte MachineB mit CardA ausleihen*
2024-03-28 14:30:22 +01:00
UserA steht vor TerminalB und
+ hält CardA auf den NFC Reader
-> TerminalB fordert eine PIN
+ tippt PIN ein
TerminalB meldet sich bei BFFH und
2024-03-30 19:21:10 +01:00
+ leiht MachineB für UserA aus
2024-03-28 14:30:22 +01:00
+ schaltet den Strom frei
__Gleiches Verhalten wie bei Accounterzeugung__
2024-03-30 19:21:10 +01:00
*UserA hat MachineA mit CardA ausgeliehen und verwendet*
2024-03-28 14:30:22 +01:00
## Reservieren
2024-03-30 19:21:10 +01:00
*UserA möchte für morgen MachineA reservieren*
2024-03-28 14:30:22 +01:00
UserA öffnet Borepin, wird automatisch angemeldet und
2024-03-30 19:21:10 +01:00
+ wählt MachineA aus Liste aus
2024-03-28 14:30:22 +01:00
+ geht auf reservieren und trägt ein Zeitraum ein
2024-03-30 19:21:10 +01:00
-> UserA erhält zum Begin der Reservierung automatisch den Claim für die MachineA, wenn dieser verfügbar ist
2024-03-28 14:30:22 +01:00
oder
-> UserA erhält zum Begin der Reservierung eine Benachrichtigung, dass die Maschine gerade verwendet wird
UserA geht zu ManagerA und bittet ihn die Maschine freizugeben
ManagerA öffnet Borepin, wird automatisch angemeldet und
2024-03-30 19:21:10 +01:00
+ wählt MachineA aus Liste aus
2024-03-28 14:30:22 +01:00
+ entfernt den Claim
2024-03-30 19:21:10 +01:00
-> UserA erhält automatisch den Claim für MachineA
*UserA kann MachineA im Reservierungszeitraum nutzen*
2024-03-28 14:30:22 +01:00
## Queuing
2024-03-30 19:21:10 +01:00
*UserB verwendet gerade MachineA und UserA möchte als nächster an MachineA*
2024-03-28 14:30:22 +01:00
UserA öffnet Borepin, wird automatisch angemeldet und
2024-03-30 19:21:10 +01:00
+ wählt MachineA aus Liste aus
2024-03-28 14:30:22 +01:00
+ geht auf queuing
2024-03-30 19:21:10 +01:00
UserB gibt MachineA zurück
-> UserA erhält automatisch ein Claim auf MachineA
*UserA kann direkt nach UserB MachineA nutzen*
2024-03-28 14:30:22 +01:00
## Intereset/Reservierung/Queuing aufhebn
2024-03-30 19:21:10 +01:00
*UserA hat einen Interest auf MachineA*
2024-03-28 14:30:22 +01:00
UserA öffnet Borepin, wird automatisch angemeldet und
2024-03-30 19:21:10 +01:00
+ wählt MachineA aus Liste aus
2024-03-28 14:30:22 +01:00
+ beendet Interest
2024-03-30 19:21:10 +01:00
*UserA hat jetzt keinen Interest auf MachineA*
2024-03-28 14:30:22 +01:00
## Benachrichten
2024-03-30 19:21:10 +01:00
*UserA möchte wissen wann die MachineA frei ist*
2024-03-28 14:30:22 +01:00
UserA öffnet Borepin, wird automatisch angemeldet und
2024-03-30 19:21:10 +01:00
+ wählt MachineA aus Liste aus
+ aktiviert Benachrichtigungen für MachineA (mit Optionen, um welchen State es geht)
2024-03-28 14:30:22 +01:00
2024-03-30 19:21:10 +01:00
-> BFFH benachrichtigt UserA, dass die MachineA frei ist
2024-03-28 14:30:22 +01:00
-> Noftiy wird wieder gelöscht
oder
2024-03-30 19:21:10 +01:00
-> BFFH benachrichtigt UserA, dass die MachineA frei ist
2024-03-28 14:30:22 +01:00
UserA öffnet Borepin, wird automatisch angemeldet und
2024-03-30 19:21:10 +01:00
+ wählt MachineA aus Liste aus
+ deaktiviert Benachrichtigungen für MachineA
2024-03-28 14:30:22 +01:00
2024-03-30 19:21:10 +01:00
*UserA wurde über Änderungen von MachineA benachrichtigt*
2024-03-28 14:30:22 +01:00
## Abhängige Maschinen
2024-03-30 19:21:10 +01:00
*UserA möchte MachineC ausleihen*
2024-03-28 14:30:22 +01:00
serA öffnet Borepin, wird automatisch angemeldet und
2024-03-30 19:21:10 +01:00
+ wählt MachineA aus Liste aus
+ claimed MachineA
-> MachineD wird von BFFH geclaimed
2024-03-28 14:30:22 +01:00
## Kaputte Maschine melden
## Multi Claim
## Claim überschreiben
## Register