Arquitetura com Spring 2.5 e Adobe Flex

5 respostas
rpffoz

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.

5 Respostas

rpffoz

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/

Ferryman

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

David

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:
public void consolidarTurma(Turma turma, List<Matricula> 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
}
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.

rpffoz

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/

murilo_scool

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…

Criado 7 de janeiro de 2008
Ultima resposta 17 de ago. de 2009
Respostas 5
Participantes 4