UC-GEN-REL-001 — Relaties bekijken
1. Kerngegevens
| Veld | Waarde |
|---|---|
| Usecase-ID | UC-GEN-REL-001 |
| Naam | Relaties bekijken |
| Domein | Relaties |
| Primaire actor | Ingelogde gebruiker |
| Secundaire actor(en) | Gerelateerde gebruikers binnen zichtbare relatietypen |
| Rolcontext | Actieve gebruiker met één of meer rolcontexten; zichtbaarheid wordt per relatie- en rolcontext server-side bepaald |
| Betrokken schermen | SCH-GEN-08 — Relaties |
| Gerelateerde usecases | UC-GEN-REL-002 — Vriend uitnodigen, UC-GEN-REL-003 — Ouder/voogd uitnodigen, UC-GEN-REL-004 — Relatie ontkoppelen, UC-GEN-REL-005 — Relatie-uitnodiging accepteren of afwijzen |
| Primaire entiteiten | UserRelationships, RelationshipTypes, RelationshipInvitations, Users, Roles |
| Secundaire entiteiten / events | RelationshipEvents, SystemMessages, gedeelde-oefeningenreadmodel, docentniveau-autorisatiereadmodel |
| Gerelateerde popups | Geen popup in de primaire leesflow; vervolgacties verwijzen naar onder meer POP-GEN-REL-INVITE-FRIEND, POP-GEN-REL-INVITE-GUARDIAN, POP-GEN-REL-DISCONNECT-CONFIRM |
| Popupregister | Ontwerpbronnen — Popup-register |
| MoSCoW | Should have |
2. Omschrijving
De gebruiker opent de pagina Relaties om bestaande relaties en door de gebruiker verstuurde openstaande uitnodigingen te bekijken. Het systeem toont relatieblokken op basis van de actuele gebruiker, rolcontexten, actieve relaties, actieve relatietypen en beschikbare relatieacties.
Deze usecase is primair een lees- en oriëntatieflow. De gebruiker kan vanuit de pagina vervolgacties starten, zoals een vriend uitnodigen, een ouder/voogd uitnodigen, een relatie ontkoppelen of een bericht sturen. De uitvoering van die vervolgacties valt onder aparte usecases; deze leesflow voert die acties niet zelf uit.
3. Scope
Deze usecase beschrijft:
- het openen van de relatiepagina vanuit de profielcontext;
- het laden van samenvattingsaantallen;
- het tonen van actieve relaties per zichtbaar relatietype;
- het tonen van door de gebruiker verstuurde openstaande uitnodigingen;
- het open- en dichtklappen van relatiedetails;
- rolafhankelijke zichtbaarheid van secties en acties;
- lege staten, foutstaten en disabled states;
- de verwijzing naar vervolgacties zonder die vervolgacties opnieuw uit te werken.
Deze usecase beschrijft niet:
- het aanmaken van een vrienduitnodiging;
- het aanmaken van een ouder-/voogduitnodiging;
- het accepteren of afwijzen van een inkomende uitnodiging;
- het daadwerkelijk ontkoppelen of aanvragen van ontkoppeling;
- het versturen van privéberichten;
- het herinneren of intrekken van openstaande uitnodigingen als volledige muterende flow.
4. Pre-condities
| ID | Voorwaarde |
|---|---|
| PRE-001 | De gebruiker is ingelogd. |
| PRE-002 | De gebruiker opent de pagina Relaties vanuit de profielcontext of via een functioneel gelijkwaardige route. |
| PRE-003 | Het systeem kan de actieve gebruiker en diens rolcontexten bepalen. |
| PRE-004 | Het systeem kan relatietypen, actieve relaties en openstaande door de gebruiker verstuurde uitnodigingen ophalen. |
5. Post-condities
| ID | Resultaat |
|---|---|
| POST-001 | De gebruiker ziet uitsluitend relaties en openstaande uitnodigingen die bij de eigen gebruiker en toegestane rolcontexten horen. |
| POST-002 | De samenvattingsaantallen zijn afgeleid uit de actuele relatie- en uitnodigingsdata. |
| POST-003 | Actieve relaties worden per zichtbaar relatietype getoond. |
| POST-004 | Door de gebruiker verstuurde openstaande uitnodigingen worden getoond zolang zij Pending en zichtbaar zijn. |
| POST-005 | Inkomende relatie-uitnodigingen worden niet als aparte inkomende lijst op deze pagina getoond; zij worden via systeemberichten aangeboden. |
| POST-006 | Het bekijken van de pagina veroorzaakt geen mutatie in UserRelationships, RelationshipInvitations of RelationshipEvents. |
6. Trigger
De gebruiker opent het profielmenu en kiest Relaties, of komt via een functioneel gelijkwaardige navigatie op de relatiepagina.
7. Normale processtroom
| Stap | Actor | Scherm / component | Actie | Systeemrespons | Data / regel |
|---|---|---|---|---|---|
| 1 | Gebruiker | Profielcontext | Kiest Relaties. | Het systeem opent SCH-GEN-08 — Relaties. | Alleen ingelogde gebruikers mogen de pagina openen. |
| 2 | Systeem | Backend | Bepaalt de actuele gebruiker en beschikbare rolcontexten. | Het systeem stelt vast welke relatietypen en secties relevant kunnen zijn. | Server-side contextbepaling; frontendnavigatie is geen autorisatie. |
| 3 | Systeem | Backend | Laadt actieve relaties van de gebruiker. | Alleen relaties met IsActive = true worden als actieve relatie getoond. | Relaties van andere gebruikers worden nooit toegevoegd aan het resultaat. |
| 4 | Systeem | Backend | Laadt door de gebruiker verstuurde openstaande uitnodigingen. | Alleen eigen pending uitnodigingen die zichtbaar horen te blijven worden opgehaald. | Inkomende uitnodigingen worden via SystemMessages aangeboden. |
| 5 | Systeem | Backend / readmodel | Berekent samenvattingsaantallen. | Het systeem bepaalt aantallen voor actieve vrienden, ouders/voogden, docenten en openstaande uitnodigingen. | Waarden zijn dynamisch en mogen niet uit de mockup worden overgenomen. |
| 6 | Systeem | Relatiepagina | Toont intro, samenvatting en zichtbare relatieblokken. | De gebruiker ziet relevante secties met beschikbare acties. | Secties en acties zijn rol- en relatieafhankelijk. |
| 7 | Gebruiker | Relatieblok | Klapt een relatie open. | Het systeem toont detailinformatie voor die relatie. | UI-state; geen database-mutatie. |
| 8 | Gebruiker | Relatieblok | Klapt een relatie dicht. | Het systeem verbergt de detailinformatie. | UI-state; geen database-mutatie. |
| 9 | Gebruiker | Relatiepagina | Kiest Details bij een verzonden openstaande uitnodiging. | Het systeem opent een detailsweergave met aanmaakmoment, relatietype, status, ontvangerstype en tijdlijn. | Alleen eigen verzonden uitnodigingen mogen worden geopend. Mailstatus vervangt de functionele relatieverzoekstatus niet. |
| 10 | Gebruiker | Relatiepagina | Start optioneel een vervolgactie. | Het systeem navigeert of opent een modal voor de bijbehorende vervolgusecase. | Uitvoering valt buiten deze usecase. |
Relatieblokken en zichtbaarheid
| Sectie | Wanneer tonen | Inhoud | Belangrijke regels |
|---|---|---|---|
| Vrienden | Wanneer de gebruiker in een rolcontext zit waarin vriendschappen relevant of mogelijk zijn. | Actieve Friendship-relaties, uitnodigactie, berichtactie, ontkoppelactie en openklapdetails. | Voor leerling-leerlingvriendschappen is de sectie relevant voor berichten en gedeelde oefeningen. |
| Ouders / voogden | Wanneer de gebruiker relevante ouder-/voogdrelaties kan zien of als leerling een ouder/voogd mag uitnodigen. | Actieve GuardianStudent-relaties, uitnodigactie, berichtactie en ontkoppelverzoekactie. | Ouder/voogd is het zichtbare label; Guardian is de technische/backend-contextwaarde. |
| Docenten | Wanneer de gebruiker actieve docentrelaties heeft. | Actieve TeacherStudent-relaties, berichtactie, niveaucontext en ontkoppelverzoekactie. | Een leerling kan geen docent uitnodigen; alleen docenten starten de docent-leerlingrelatieflow. |
| Openstaande uitnodigingen | Wanneer de gebruiker verstuurde uitnodigingen heeft die nog Pending zijn en zichtbaar horen te blijven. | Doelnaam of e-mailadres, uitnodigingstype, verzenddatum en actie Details. | Alleen door de huidige gebruiker verstuurde uitnodigingen; inkomende uitnodigingen staan in systeemberichten. Details toont veilige historie en maildeliverysamenvatting. |
| Goed om te weten | Wanneer de pagina normaal geladen is. | Functionele toelichting op relaties, uitnodigingen en zichtbaarheid. | Informatief, niet muterend. |
8. Alternatieve en exceptionele processtromen
| ID | Vanaf stap | Situatie | Systeemgedrag | Popup / melding | Datamutatie |
|---|---|---|---|---|---|
| ALT-001 | 1 | De gebruiker is niet ingelogd. | Het systeem weigert toegang en stuurt de gebruiker naar de login- of toegangsflow. | Generieke autorisatiemelding buiten deze usecase. | Geen. |
| ALT-002 | 2 | De gebruiker heeft geen relevante actieve relaties. | Het systeem toont lege staten per relevante sectie. | Inline lege staat. | Geen. |
| ALT-003 | 3 | Een relatie is ondertussen gedeactiveerd. | De relatie wordt niet meer als actief item getoond. | Geen popup in de leesflow. | Geen. |
| ALT-004 | 4 | Een uitnodiging is geaccepteerd, afgewezen, verlopen of ingetrokken. | De uitnodiging verdwijnt uit de sectie Openstaande uitnodigingen zodra deze niet meer als pending zichtbaar hoort te zijn. | Geen popup in de leesflow. | Geen door deze usecase. |
| ALT-005 | 5 | Samenvattingsaantallen kunnen niet worden geladen. | Het systeem toont de pagina zonder onbetrouwbare tellingen of met een foutstaat voor het betrokken blok. | Inline foutstaat. | Geen. |
| ALT-006 | 6 | Een relatietype of feature is niet beschikbaar voor de gebruiker. | De bijbehorende sectie of actie wordt verborgen of disabled. | Inline uitleg of tooltip waar functioneel relevant. | Geen. |
| ALT-007 | 7 | De detailinformatie voor een relatie kan niet worden geladen. | Het systeem toont een foutmelding binnen de relatiekaart en laat de gebruiker de pagina blijven gebruiken. | Inline foutstaat. | Geen. |
| ALT-008 | 9 | De gebruiker start + Nodig vriend uit. | Het systeem opent de uitnodigflow voor een vriend. | POP-GEN-REL-INVITE-FRIEND. | Afhandeling via UC-GEN-REL-002. |
| ALT-009 | 9 | De gebruiker start + Nodig ouder/voogd uit. | Het systeem opent de uitnodigflow voor ouder/voogd. | POP-GEN-REL-INVITE-GUARDIAN. | Afhandeling via UC-GEN-REL-003. |
| ALT-010 | 10 | De gebruiker kiest Ontkoppel of Ontkoppelverzoek. | Het systeem opent altijd eerst een bevestigingsmodal. | POP-GEN-REL-DISCONNECT-CONFIRM. | Afhandeling via UC-GEN-REL-004 of een vervolgflow voor ontkoppelverzoeken. |
| ALT-011 | 10 | De gebruiker kiest Bericht. | Het systeem start of opent een privéberichtcontext met de geselecteerde relatie. | Geen relatiepopup. | Afhandeling via berichtenusecases. |
9. Business rules
| ID | Regel |
|---|---|
| BR-UC-GEN-REL-001-001 | De relatiepagina toont uitsluitend relaties en uitnodigingen die bij de ingelogde gebruiker horen. |
| BR-UC-GEN-REL-001-002 | Relaties van andere gebruikers mogen niet zichtbaar worden via relatiecontext, familierelatie, docentcontext of URL-manipulatie. |
| BR-UC-GEN-REL-001-003 | Alleen actieve relaties tellen mee in de samenvattingsaantallen voor actieve vrienden, ouders/voogden en docenten. |
| BR-UC-GEN-REL-001-004 | De sectie Openstaande uitnodigingen toont alleen door de huidige gebruiker verstuurde uitnodigingen die nog openstaand en zichtbaar zijn. |
| BR-UC-GEN-REL-001-005 | Inkomende uitnodigingen worden via systeemberichten aangeboden en niet als aparte inkomende lijst op de relatiepagina getoond. |
| BR-UC-GEN-REL-001-006 | Secties en acties zijn rolcontextafhankelijk; frontend-zichtbaarheid is geen autorisatie. |
| BR-UC-GEN-REL-001-007 | Iedere relatiebeëindiging of start van een ontkoppelverzoek moet via een bevestigingsmodal lopen. |
| BR-UC-GEN-REL-001-008 | Vrienduitnodigingen en ouder-/voogduitnodigingen worden vanuit de pagina gestart, maar de aanmaak van de uitnodiging valt onder aparte usecases. |
| BR-UC-GEN-REL-001-009 | Een leerling kan geen docentrelatie uitnodigen vanaf de relatiepagina. |
| BR-UC-GEN-REL-001-010 | Openklappen en dichtklappen van relatiedetails is UI-state en mag geen relatie- of uitnodigingsdata wijzigen. |
| BR-UC-GEN-REL-001-011 | Ouder-/voogdregels moeten minimaal het veld Actief sinds als detailinformatie kunnen tonen. |
| BR-UC-GEN-REL-001-012 | Docentrelaties tonen alleen niveaucontext die voor de ingelogde gebruiker en de betreffende docentrelatie relevant is. |
| BR-UC-GEN-REL-001-013 | Acties zoals Bericht, Ontkoppel en Ontkoppelverzoek mogen alleen uitvoerbaar zijn wanneer de onderliggende relatie op het moment van uitvoeren nog geldig is. |
| BR-UC-GEN-REL-001-014 | De detailsweergave voor verzonden uitnodigingen toont geen technische SMTP-, exception-, provider- of TickerQ-details aan gewone gebruikers. |
| BR-UC-GEN-REL-001-015 | Voor externe uitnodigingen mag succesvolle maildelivery alleen worden omschreven als E-mail aangeboden aan de mailserver; ontvangst bij de ontvanger wordt niet gegarandeerd. |
Autorisatie en server-side controles
| Controle | Regel |
|---|---|
| Pagina openen | Alleen ingelogde gebruikers mogen SCH-GEN-08 openen. |
| Relaties laden | Server-side filter op ingelogde gebruiker als deelnemer aan de relatie. |
| Uitnodigingen laden | Server-side filter op FromUserId = huidige gebruiker en Status = Pending, plus zichtbaarheid volgens pending-overzichtregels. |
| Secties tonen | Server-side bepalen op basis van actieve gebruiker, beschikbare rolcontexten, actieve relatietypen en feature-instellingen. |
| Acties tonen | Frontend mag acties verbergen of disabled tonen, maar backend valideert opnieuw bij uitvoering. |
| Berichtactie | Alleen wanneer de relatie nog actief is en privéberichten voor deze relatiecontext zijn toegestaan. |
| Ontkoppelactie | Alleen wanneer de relatie nog actief is en het relatietype handmatige ontkoppeling of een ontkoppelverzoek toestaat. |
| Uitnodigacties | Alleen wanneer de gebruiker het betreffende relatietype vanuit de huidige rolcontext mag initiëren. |
10. Datavalidatie
| Veld / object | Validatie / regel |
|---|---|
UserRelationships.IsActive | Alleen actieve relaties worden als actuele relatie getoond. |
RelationshipType.Code | Bepaalt de sectie en betekenis van de relatie, bijvoorbeeld Friendship, GuardianStudent of TeacherStudent. |
| Relatierichting | De weergave moet beide zijden van de relatie correct vertalen naar de perspectiefnaam van de huidige gebruiker. |
| Displaynaam | Naam of representatie van de andere partij wordt dynamisch uit de gebruikerscontext bepaald. |
InitiatedAtUtc / AcceptedAtUtc | Wordt gebruikt voor Actief sinds wanneer beschikbaar en functioneel passend. |
| Gedeelde oefeningen | Wordt afgeleid uit het gedeelde-oefeningendomein en alleen getoond wanneer relevant voor de vriendschapscontext. |
| Docentniveaucontext | Wordt afgeleid uit docent-leerlingrelatie en niveauautorisaties; alleen relevante niveaus worden getoond. |
RelationshipInvitations.Status | Alleen Pending-uitnodigingen worden als openstaand getoond. |
RelationshipInvitations.IsVisibleInPendingOverview | Bepaalt of een pending uitnodiging in het openstaande overzicht zichtbaar hoort te zijn. |
| Datumweergave | UTC-bronnen worden in de gebruikersinterface lokaal en leesbaar weergegeven. |
| Samenvattingsaantallen | Aantallen worden berekend uit dezelfde dataset als de detailsecties, zodat teller en lijst inhoudelijk overeenkomen. |
11. Datamutaties en events
Deze usecase veroorzaakt in de primaire leesflow geen datamutaties.
| Stap | Type | Entiteit / event | Mutatie |
|---|---|---|---|
| 1-8 | Read | UserRelationships, RelationshipTypes, RelationshipInvitations, Users, Roles | Alleen lezen en samenstellen van de pagina. |
| 7-8 | UI-state | Frontend state | Open- of dichtklappen van relatiedetails; geen persistente wijziging. |
| 9 | Delegatie | Vervolgusecases | Mutaties ontstaan pas wanneer de gebruiker een vervolgactie bevestigt in de bijbehorende usecase. |
12. Geen datamutaties
| Entiteit | Reden |
|---|---|
UserRelationships | Bekijken van relaties wijzigt geen bestaande relatie. |
RelationshipInvitations | Bekijken van openstaande uitnodigingen wijzigt de uitnodiging niet. |
RelationshipEvents | Er wordt geen audit-event aangemaakt voor alleen het bekijken van de relatiepagina. |
SystemMessages | Inkomende uitnodigingen worden via systeemberichten aangeboden, maar deze pagina maakt geen systeemberichten aan. |
PrivateMessageThreads | Een berichtthread ontstaat of opent pas via de berichtenflow. |
13. State diagram
14. Decision flow
15. Data lifecycle diagram
16. Sequence diagrammen
17. Popupverwijzingen
De primaire leesflow gebruikt geen popup. Popups worden pas relevant wanneer de gebruiker een vervolgactie start. De usecase legt daarom alleen verwijzingen naar vervolgflows vast.
| PopupKey | Moment / context | Doel |
|---|---|---|
POP-GEN-REL-INVITE-FRIEND | Vervolgactie + Nodig vriend uit | Start van UC-GEN-REL-002. |
POP-GEN-REL-INVITE-GUARDIAN | Vervolgactie + Nodig ouder/voogd uit | Start van UC-GEN-REL-003. |
POP-GEN-REL-DISCONNECT-CONFIRM | Vervolgactie Ontkoppel of Ontkoppelverzoek | Start of bevestiging binnen UC-GEN-REL-004. |
18. Afleiding naar Functioneel Ontwerp / Technisch Ontwerp / Software Requirements Specification
| Doeldocument | Afleiding |
|---|---|
| Functioneel Ontwerp | Beschrijft de relatiepagina als centrale gebruikersflow voor inzicht in relaties, openstaande verstuurde uitnodigingen en beschikbare vervolgacties per relatietype. |
| Technisch Ontwerp | Relatiebeheer, uitnodigingen en gedeelde oefeningen beschrijft relatiecontext, server-side filtering en scheiding tussen readflow en muterende commands. |
| Technisch Ontwerp | Readmodels, tellers, badges, caching en materialisatie beschrijft tellerberekening en relatiepagina-readmodels. |
| Software Requirements Specification | Destilleert requirements over gebruikergebonden relatie-inzage, rolcontextafhankelijke zichtbaarheid, openstaande uitnodigingen, lege staten, disabled states en het ontbreken van mutaties bij alleen bekijken. |
19. SRS-trace
Deze usecase bevat geen normatieve requirementtekst. De centrale eis en acceptatiecriteria staan in de SRS; onderstaande tabel koppelt de usecase-afleiding alleen aan centrale SRS-*- en AC-*-items.
| Usecase-afleiding | Dekt | Usecasecontext |
|---|---|---|
REQ-UC-GEN-REL-001-001 | SRS-RDM-001 SRS-RDM-007 SRS-REL-001 AC-RDM-001 AC-RDM-007 AC-REL-001 | Een ingelogde gebruiker de eigen relatiepagina kunnen tonen |
REQ-UC-GEN-REL-001-002 | SRS-REL-001 AC-REL-001 | Uitsluitend relaties tonen waarbij de ingelogde gebruiker deelnemer is |
REQ-UC-GEN-REL-001-003 | SRS-REL-001 AC-REL-001 | Actieve relaties per relevant relatietype kunnen groeperen |
REQ-UC-GEN-REL-001-004 | SRS-RDM-001 SRS-RDM-002 SRS-RDM-007 SRS-REL-001 AC-RDM-001 AC-RDM-002 AC-RDM-007 AC-REL-001 | Samenvattingsaantallen tonen die zijn afgeleid uit dezelfde dataset als de zichtbare relatieblokken |
REQ-UC-GEN-REL-001-005 | SRS-REL-001 AC-REL-001 | Door de gebruiker verstuurde openstaande uitnodigingen kunnen tonen zolang deze pending en zichtbaar zijn |
REQ-UC-GEN-REL-001-006 | SRS-RDM-001 SRS-RDM-007 SRS-REL-001 SRS-MSG-001 AC-RDM-001 AC-RDM-007 AC-REL-001 AC-MSG-001 | Inkomende relatie-uitnodigingen niet als aparte inkomende lijst op de relatiepagina tonen wanneer deze via systeemberichten worden afgehandeld |
REQ-UC-GEN-REL-001-007 | SRS-RDM-001 SRS-RDM-007 SRS-REL-001 AC-RDM-001 AC-RDM-007 AC-REL-001 | Per relatieblok een passende lege staat kunnen tonen wanneer er geen relaties of uitnodigingen beschikbaar zijn |
REQ-UC-GEN-REL-001-008 | SRS-AUTH-001 SRS-RDM-001 SRS-RDM-007 SRS-REL-001 AC-AUTH-001 AC-RDM-001 AC-RDM-007 AC-REL-001 | Acties op de relatiepagina rolcontextafhankelijk tonen, verbergen of disabled maken |
REQ-UC-GEN-REL-001-009 | SRS-AUTH-001 SRS-RDM-001 SRS-RDM-007 SRS-REL-001 AC-AUTH-001 AC-RDM-001 AC-RDM-007 AC-REL-001 | Alle acties die vanuit de relatiepagina worden gestart server-side opnieuw controleren |
REQ-UC-GEN-REL-001-010 | SRS-REL-001 AC-REL-001 | Relatiekaartdetails kunnen open- en dichtklappen zonder persistente datamutatie |
REQ-UC-GEN-REL-001-011 | SRS-REL-001 SRS-LRN-009 SRS-SHR-001 AC-REL-001 AC-LRN-009 AC-SHR-001 | Voor vrienden minimaal actief-sinds en gedeelde-oefeningeninformatie kunnen tonen wanneer deze informatie beschikbaar is |
REQ-UC-GEN-REL-001-012 | SRS-REL-001 SRS-GUA-001 AC-REL-001 AC-GUA-001 | Voor ouder-/voogdrelaties minimaal actief-sinds als detailinformatie kunnen tonen |
REQ-UC-GEN-REL-001-013 | SRS-AUTH-001 SRS-REL-001 SRS-CAT-006 SRS-TCH-002 AC-AUTH-001 AC-REL-001 AC-CAT-006 AC-TCH-002 | Voor docentrelaties relevante niveaucontext kunnen tonen zonder niet-geautoriseerde niveaus zichtbaar te maken |
REQ-UC-GEN-REL-001-014 | SRS-REL-003 SRS-REL-006 AC-REL-003 AC-REL-006 | Voor iedere ontkoppelactie of ontkoppelverzoekactie een bevestigingsmodal gebruiken voordat de muterende vervolgactie wordt uitgevoerd |
REQ-UC-GEN-REL-001-015 | SRS-RDM-001 SRS-RDM-007 SRS-REL-001 SRS-MSG-001 AC-RDM-001 AC-RDM-007 AC-REL-001 AC-MSG-001 | Het bekijken van de relatiepagina mag geen UserRelationships, RelationshipInvitations, RelationshipEvents, SystemMessages of privéberichtdata wijzigen |
REQ-UC-GEN-REL-001-016 | SRS-RDM-001 SRS-RDM-007 SRS-REL-001 AC-RDM-001 AC-RDM-007 AC-REL-001 | Vervolgacties vanaf de relatiepagina kunnen koppelen aan de daarvoor bedoelde usecases of commands |