Dove inserire una logica di convalida estesa in DDD

2

Sto cercando di capire come funziona DDD, e capisco che ho un domain object e un domain service .

Il mio oggetto dominio è un interaction che può essere di diversi tipi di interazione con un cliente, come una riunione, una telefonata, una visita ecc.

Quindi ho creato un interaction service e ora voglio creare la logica se l'utente corrente è autorizzato a modificare l'interazione.

Ora questa è una validazione estesa perché l'utente corrente può essere il creatore, può essere delegato a modificarlo, può essere nello stesso gruppo di utenti in cui si trova il creatore, può essere il teamlead, può avere l'interaction-edit -elevata-diritti e l'interazione non deve essere nel passato, chiuso, in attesa ecc ecc.

Questa convalida è anche un metodo su interactionservice ? Come deve controllare il database per più cose, ho capito che non può essere sull'oggetto interaction stesso. Creo un metodo canedit(int userid) e poi anche un metodo candelete(userid) su interactionservice oppure creo un interactionallowedactionsservice separato o lo gestisco in un altro modo?

    
posta Michel 09.09.2016 - 15:43
fonte

1 risposta

1

Separare il controllo per l'autorizzazione dell'utente (creatore, delegato a modificarlo, nello stesso gruppo di utenti come creatore, teamlead, interazione-modifica-diritti elevati) dalla convalida sullo stato dell'entità (in passato, chiuso, in attesa ).

Al di fuori del modello di dominio, crea un servizio applicativo che guida il caso d'uso. Prima controlla l'autorizzazione (utilizzando entità o servizi di dominio) e quindi tenta di eseguire l'azione (utilizzando il servizio entità o dominio). Il modello di dominio (tipicamente l'entità) controlla lo stato dell'entità e segnala un errore se lo stato dell'entità non consente l'azione.

    
risposta data 09.09.2016 - 19:57
fonte

Leggi altre domande sui tag