Sto provando a riprogettare un'applicazione di provisioning che gestisce altre applicazioni tramite la loro API REST.
L'applicazione è abbastanza semplice, abbiamo gruppi, abbiamo utenti e ruoli e abbiamo un elenco di software da fornire.
Diamo accesso ad alcuni software per gruppi e stiamo applicando strategie diverse a questi gruppi. Queste strategie sono strettamente collegate al software che forniamo, sono solo un elenco di operazioni che verranno eseguite utilizzando l'API REST. Ad esempio abbiamo una strategia per creare il gruppo nell'applicazione, ne abbiamo un'altra per creare il componente A con la configurazione X, ne abbiamo un'altra per creare il componente B con la configurazione Y ...
Queste strategie sono eseguite alla creazione / aggiornamento del gruppo attraverso un messaggio inviato al nostro broker di messaggi. Il messaggio contiene tutti i dati rilevanti (relativi al gruppo) per configurare l'applicazione approvata.
Abbiamo un approccio simile per gli utenti. Quando aggiungiamo un utente a un gruppo che ha accesso all'applicazione X, inviamo un messaggio al broker dei messaggi per crearlo nell'applicazione X. Quando gli assegniamo un ruolo, abbiamo il ruolo corrispondente dell'applicazione e gli stanno dando il ruolo con lo stesso processo.
Funziona piuttosto bene, tuttavia il problema principale è che queste strategie esistono solo nel codice e abbiamo bisogno di creare una nuova classe per ogni strategia che vogliamo creare. È lo stesso per i ruoli, se introduciamo un nuovo ruolo dobbiamo dargli un equivalente nelle applicazioni lontane.
Quello che vorremmo fare è portare queste informazioni nel database. Potremmo registrare le operazioni consentite per ogni applicazione e lasciare che ogni amministratore di ogni gruppo crei le proprie strategie invece di affidarsi a noi, la stessa cosa per i ruoli. Il ruolo X potrebbe avere un significato diverso per i diversi gruppi.
Esiste qualche tipo di schema per aiutarci a progettare il database? Hai sentito parlare di software esistenti con questo tipo di flusso di lavoro?
Perché abbiamo davvero problemi a tradurre il nostro processo attuale in quello che stiamo puntando e forse deve essere ripensato invece di provare semplicemente a riprodurlo.
Grazie!