Na minha UI preciso testar algumas regras, sei la.
Preciso verificar, por exemplo, se o usuário já concluiu uma tarefa “esta informação eu tenho através do DB” para exibir um botão. Então eu quero saber se seria adequado colocar um método na minha entidade que indique se a tarefa ja foi feita? Dentro do metodo eu teria uma chamada para o repositorio e faria os testes adequados no metodo e retornaria alguma informacao para na UI eu exibir ou nao o botao.
[quote=adtve]Bom, estou estudando DDD e estou com uma duvida.
Na minha UI preciso testar algumas regras, sei la.
Preciso verificar, por exemplo, se o usuário já concluiu uma tarefa “esta informação eu tenho através do DB” para exibir um botão. Então eu quero saber se seria adequado colocar um método na minha entidade que indique se a tarefa ja foi feita? Dentro do metodo eu teria uma chamada para o repositorio e faria os testes adequados no metodo e retornaria alguma informacao para na UI eu exibir ou nao o botao.
Obrigado.[/quote]
Na UI voce so reflete o estado do modelo, entao ela nao pode testar as regras, o que voce pode fazer é verificar o estado da entity e manipular a UI de acordo com ele.
Outra coisa que voce deve evitar é “ter a informacao através do DB”, em aplicacoes com objetos nao existe DB, existem formas de guardar o estado dos objetos, na imensa maioria dos casos hoje em dia isso é feito em bancos de dados relacionais, mas poderia ser de qualquer outra forma (memoria, arquivos texto, OODBs etc…) que isso nao faria a menor diferenca para as regras de negocio.
Quanto a por uma chamada ao repositorio dentro de um metodo de uma entity, embora conceitualmente nada impeca, eu nao gosto de fazer, prefiro usar um service e dele chamar o repositorio, mas isso caso nao seja possivel/viavel, carregar a entity ja na primeira vez com todas as informacoes necessarias para todo o processo.
Justamente eu mencionei o repositorio mais ele pode buscar a informacao de qq base de armazenamento q eu quiser.
Imagine q eu nao tenha como carregar a informação de uma so vez e até pq a informação esta ligada a uma outra agregação, tem algum problema eu ter um metodo/propriedade q usar um service q consulta algo no repositorio e a partir do resultado do método/propriedade eu verifique se algo pode ou nao ser exibido, por exemplo?
[quote=adtve]Justamente eu mencionei o repositorio mais ele pode buscar a informacao de qq base de armazenamento q eu quiser.
Imagine q eu nao tenha como carregar a informação de uma so vez e até pq a informação esta ligada a uma outra agregação, tem algum problema eu ter um metodo/propriedade q usar um service q consulta algo no repositorio e a partir do resultado do método/propriedade eu verifique se algo pode ou nao ser exibido, por exemplo?
[]'s[/quote]
Sem problemas, a view pode e deve conhecer o model e refletir o estado dele, o contrario é que nao deve ser feito.