Salvando LOG de ações no DDD  XML
Índice dos Fóruns » Arquitetura de Sistemas
Autor Mensagem
lucasap2005
JavaBaby
[Avatar]

Membro desde: 14/07/2005 18:09:00
Mensagens: 94
Offline

Pessoal estou com seguinte duvida, quando salvo, altero ou deleto algo no meu sistema tenho que gerar um log no qual guardo usuario, data, e descricao.
A duvida é, em qual momento dessa operações que eu chamo este log?
Chamo depois de fazer a inserção por exemplo:


Isso não está muito procedural?
Me ajudem...vlw
Alessandro Lazarotti
Virtual Machine Man
[Avatar]

Membro desde: 21/01/2004 14:12:54
Mensagens: 719
Offline

Esse requisito é um "crosscutting concern", logo AOP pode resolve-lo.
Eu colocaria pointcuts para metodos do repositorio que são pertinentes ao requisito de Log.
Esse não é um problema do domínio e sim da aplicação... Seu domínio nem precisa saber que este requisito existe.

... Lezinho
------------------------
twitter: @lazarotti
http://alessandrolazarotti.wordpress.com/
http://jbossbrasil.org/

[Email] [MSN]
sergiotaborda
GUJ Expert
[Avatar]

Membro desde: 22/03/2005 20:57:48
Mensagens: 3433
Offline

lucasap2005 wrote:


Isso não está muito procedural?


Esse "log" (o nome correto é historico já que log é algo do tipo do log4j) é, como já foi dito uma preocupação da apliação e não do
dominio. normalmente isso é feito para auditoria posterior

Se vc tem um repositorio editável (estou supondo que o seu repositorio não é um DAO) vc pode, ser não quiser usar AOP, utilizar o save para fazer as duas operações.
Ou pode utilizar um método num repositorio abstrato pai de todos os outros (padrão Layer SuperType) onde vc faz o processo de forma automática. Claro que para isso vc precisa de um padrão para o historico que seja compativel com o objeto do dominio. Normalmente o historico tem um data e hora , um usuario e os dados da entidade do dominio ou um codigo designando a operação que foi feita.

uma outra opção, se estiver usando DAO, além do repositorio , é colocar essa logica comum no DAO. Se seguio o padrão DAO vc tem uma interface DAO e um DAO concreto. Vc cria um outro DAO que delega todas as operaçãos ao DAO concreto, mas na operação de save ele processa os dados para criar o log. Alguma anotação do tipo @Auditable ou uma interface marcadora podem facilitar o uso desse "cuting concern"

Criando sua própria API de Validação



Blog do MiddleHeaven
[WWW]
lucasap2005
JavaBaby
[Avatar]

Membro desde: 14/07/2005 18:09:00
Mensagens: 94
Offline

Resolveria usando o AspectJ?
andrefariagomes
JavaBaby
[Avatar]

Membro desde: 18/09/2004 11:10:06
Mensagens: 90
Offline

Eu já fiz algo deste tipo Implementando um Filtro para Hibernate (procure por org.Hibernate.EmptyInterceptor).
Ele verifica se a classe está anotada com @Auditable e faz o trabalho de persistir as ocorrências.


Abraço,
André Faria
[Email] [WWW] [Yahoo!] [MSN]
lucasap2005
JavaBaby
[Avatar]

Membro desde: 14/07/2005 18:09:00
Mensagens: 94
Offline

Alguem poderia dar um exemplo de como seria com AOP.
Ja tinha ouvido falar, mas nunca estudei sobre AOP a fundo.
Gostaria de saber se alguem tem algum exemplo
Vlw galera pela ajuda

This message was edited 1 time. Last update was at 29/05/2008 18:28:42

cmoscoso
Virtual Machine Man

Membro desde: 23/10/2007 10:08:29
Mensagens: 687
Offline

lucasap2005 wrote:Resolveria usando o AspectJ?


Depende, qual o seu problema?
[Email]
lucasap2005
JavaBaby
[Avatar]

Membro desde: 14/07/2005 18:09:00
Mensagens: 94
Offline

O meu problema a ser resolvido é guardar um historico das transações efetuadas por um usuario.
Exemplo: Ao cadastrar uma Empresa ou altera-la preciso guardar esse historico
 
Índice dos Fóruns » Arquitetura de Sistemas
Ir para:   
Powered by JForum 2.1.8 © JForum Team