Arquitetura com Spring 2.5 e Adobe Flex

Ola Senhores,

Estou migrando para Spring, e com ele veio novas concepções de padrões de projeto.
como o não uso de VO’s/TO’s, repository e etc…

E projetei uma arquitetura, que servirá tanto para disponibilizar serviços para um controller, WebServices,
ou então para o Adobe Flex, que no caso irei usar RemoteObject sobre o protocolo AMF3.

Segue como está ficando modelado o Model:

–model
---------+entity
---------+exception
---------+repository
--------------+hibernate
--------------+jdbc
--------------+ibatis
---------+service

Entity: São objetos que possuem uma identidade Única, implementam suas regras de negocio,
por exemplo: Em um ProdutoEntity, o setCategoria eu verifico se a categoria não está nula.

Exceptions: Cada caso de uso leva sua Exception Personalizada.

Repository: Contém Interfaces que são implementadas por DAO’s outros, no caso hibernate, jdbc…

Service: Atuam como uma Facade, isto é, coordena o fluxo da transação.

Algumas dúvidas:

O que eu posso transportar entre as camadas? VO’s? ou os próprios Entity’s? (Antigamente usava VO’s)

Certas validações e invariantes eu faço no Entity, mas aonde eu faria um CalcularFolhaPagamento() ? no Entity? (Antigamente usava BO’s)

Alguém ae já integrou o Flex com o Spring?
Acredito que irei ter que criar um “SpringBeanFactory” disponibilizando servicos para o Flex.

Obrigado pela atenção Senhores.

ok!!!
Senhores!

Eu consegui integrar o AdobeFlex + BlazeDS (Solução OpenSource da Adobe) + SpringFramework + Hibernate

Ficou lindo!!! e muito rápido o desenvolvimento, uma vez que sóo faço trocas de objetos, sem “gambiarras” que fazem para trabalhar com html.

=)

Quem quizer umas dicas, é só dar um toque, logo postarei um artigo em meu blog

MAS!!!

Ainda estou com dúvida quanto a implementação de négocio em minha arquitetura.

Olhando o post de cima, aonde eu posso implementar um “calculaFaturaPagamentos()” ??

Obrigado, e espero que alguém opine.

\o/

Eai cara,

Então, sobre CalcularFolhaPagamento(), o ideal é que essa responsabilidade fique dividida entre os objetos do seu domínio (sim, seus entitys). Tente não criar um único método com 200 linhas de código em algum serviço… Quando mais divida a responsabilidade (não esqueça da coesão), mais fácil será de extender e manter.

Se tiver um tempo, leia esse artigo http://www.fragmental.com.br/wiki/index.php/Fantoches do philip calçado. O exemplo do estacionamento é exatamente o que quero dizer.

Bom é isso
[]s
Ferry

Onde implementar o ‘calculaFolhaPagamento()’ é muito relativo, depende de que tipo de informações são manipuladas e depende do seu dominio. Os seus métodos de negócio ficam sim nas classes de domínio, mas se por acaso a operação a ser executada não pertencer naturalmente a um elemento do domínio, você pode usar um Service para isso. O service, a grosso modo, teria como função chamar vários métodos das classes de domínio que participam das regras de negócio.

Por exemplo, imagine um caso de consolidação de turmas (o professor inserir as notas finais) em um sistema para controle acadêmico. A consolidação exige manipulação de informações que se referem a matricula de um discente na turma e informações da turma. Para isso, podemos fazer um service com a implementação abaixo:

[code]
public void consolidarTurma(Turma turma, List matriculasTurma) {
for (Matricula matricula : matriculasTurma) {
matricula.consolidar(); // Verifica notas e faltas e identifica se o aluno foi aprovado ou reprovado

 turma.consolidar(); // Altera o status da turma para consolidada

}
[/code]Temos as regras de negócio nas classes de domínio e o service teria como função chamar esses métodos na ordem correta.

Tudo vai depender de como você modelou o seu domínio… Poste ele aqui.

Olá,

Vlw Ferryman pelo artigo, e David deixo ainda mais claro,

Confesso que para eu que sempre trabalhei com SessionBeans, a idéia de Entity é bem diferente.
Mas sabe gostei muito deste padrão…

Obrigado a todos

\o/

olá pessoal!

gostaria de saber se alguém já trabalhou com internacionalização Java + Flex?!?

estou trabalhando em um projeto que estou tendo que implementar padronização

para mensagens de erro, mensagens de sucesso, entre outras formatação dependendo

do idioma em que o usuário esteja utilizando!

essas mensagens serão lançadas quando ocorrer alguém excessão que é especificada em um bloco try{}…catch()

public List<Atrativo> getList() throws Exception { try{ return dao.getList(); }catch ( Exception ex ) { throw new Exception( FactoryInternationalization.getMessage().ERR_UNKNOW_RECORD ); } }

o fato é que essa exception esta sendo tratada pelo Spring, não lança as mensagens que estou implementando.

se alguém puder dá um força desde já agradeço!
ate…