Skip to content

Instantly share code, notes, and snippets.

@balanza
Created February 15, 2022 23:30
Show Gist options
  • Save balanza/39bd68f3978ae7dd6a486321b2251ce7 to your computer and use it in GitHub Desktop.
Save balanza/39bd68f3978ae7dd6a486321b2251ce7 to your computer and use it in GitHub Desktop.
Analisi della navigazione dell'ecosistema SelfCare

Contesto

Supponiamo di avere tre Organizzazioni (A, B, C), tre Prodotti (X, Y, Z) e un Referente delegato secondo la seguente matrice:

A B C
X
Y
Z

Sintassi

Il backoffice di un Prodotto per un'Organizzazione è rappresentato dalla tupla (P,O).

La navigazione da SelfCare Dashboard avviene settando entrambi i valori P e O

stateDiagram-v2
  SC --> (X,A): nav(X,A)

La navigazione tra backoffice avviene cambiando uno solo dei due valori.

stateDiagram-v2
  (X,A) --> (X,B): nav(_,B)

Il Prodotto si cambia dal menu laterale, l'Organizzazione dallo switch nel header.

Uno stato invalido è una tupla con un Prodotto e un'Organizzazione che non sono associati - viene indicato con !403.

Scenari

A seconda di cosa viene visualizzato nel menu laterale si concretizzano diversi scenari di navigazione

Scenario 1: tutti i prodotti, tutte le organizzazioni

stateDiagram-v2
  SC --> (X,A): nav(X,A)
  SC --> (X,B): nav(X,B)
  SC --> (Y,B): nav(Y,B)
  SC --> (Z,C): nav(Z,C)

  (X,A) --> (X,B): nav(_,B)
  (X,A) --> !403: nav(_,C)
  (X,A) --> !403: nav(Y,_)
  (X,A) --> !403: nav(Z,_)

  (X,B) --> (X,A): nav(_,A)
  (X,B) --> !403: nav(_,C)
  (X,B) --> (Y,B): nav(Y,_)
  (X,B) --> !403: nav(Z,_)

  (Y,B) --> !403: nav(_,A)
  (Y,B) --> !403: nav(_,C)
  (Y,B) --> (X,B): nav(X,_)
  (Y,B) --> !403: nav(Z,_)

  (Z,C) --> !403: nav(_,A)
  (Z,C) --> !403: nav(_,B)
  (Z,C) --> !403: nav(X,_)
  (Z,C) --> !403: nav(Y,_)

Scenario 2: tutti i prodotti, solo le organizzazioni abilitate per il prodotto attuale

stateDiagram-v2
  SC --> (X,A): nav(X,A)
  SC --> (X,B): nav(X,B)
  SC --> (Y,B): nav(Y,B)
  SC --> (Z,C): nav(Z,C)

  (X,A) --> (X,B): nav(_,B)
  (X,A) --> !403: nav(Y,_)
  (X,A) --> !403: nav(Z,_)

  (X,B) --> (X,A): nav(_,A)
  (X,B) --> (Y,B): nav(Y,_)
  (X,B) --> !403: nav(Z,_)

  (Y,B) --> (X,B): nav(X,_)
  (Y,B) --> !403: nav(Z,_)

Scenario 3: solo i prodotti abilitati per l'organizzazione attuale, tutte le organizzazioni

stateDiagram-v2
  SC --> (X,A): nav(X,A)
  SC --> (X,B): nav(X,B)
  SC --> (Y,B): nav(Y,B)
  SC --> (Z,C): nav(Z,C)

  (X,A) --> (X,B): nav(_,B)
  (X,A) --> !403: nav(_,C)

  (X,B) --> (X,A): nav(_,A)
  (X,B) --> !403: nav(_,C)
  (X,B) --> (Y,B): nav(Y,_)

  (Y,B) --> !403: nav(_,A)
  (Y,B) --> !403: nav(_,C)
  (Y,B) --> (X,B): nav(X,_)

Tabella riassuntiva

scenario che succede
1 C'è la massima libertà di navigazione, ma il 75% delle transizioni porta ad uno stato non valido
2 Lo switch non è consitente (il contenuto cambia quando si naviga dal menù), 50% delle transizioni porta ad uno stato non valido
3 Lo menù laterale non è consitente (il contenuto cambia quando si naviga dallo switch), 50% delle transizioni porta ad uno stato non valido
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment