Author |
Message |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/08/2007 09:02:04
|
IceW0lf
![[Avatar]](/images/avatar/7cbbc409ec990f19c78c75bd1e06f215.jpg)
Joined: 16/03/2006 08:33:38
Messages: 1546
Location: Brasília
Offline
|
Imagine um projeto de médio ou grande porte, é sabido que a cada passo do desenvolvimento da aplicação temos que adicionar novos comandos e configurações que cada "módulo" do sistema exige, filtros, action, outputs, etc. Agora imagine este projeto crescendo e você tendo que modificá-los, até mesmo adicionar novos comandos em uma aplicação, isso poderia te causar "transtornos" futuros com relação a manutenção, correto?
Ao detectar que essas aplicações poderiam se tornar um problema para os desenvolvedores, um dos desenvolvedores oficiais do Mentawai (Velo) desenvolveu uma forma de se modularizar o ApplicationManager através do chamado MultiApplicationManager, que foi implementada a partir da Versão 1.9.
Como funciona o MultiApplicationManager?
"A classe MultiApplicationManager é abstrata e extende org.mentawai.core.ApplicationManager, ela é responsável por fragmentar os arquivos de configuração de forma rápida e transparente, através do registerManagers." Velo
Então na prática é o mesmo que eu dividir meu ApplicationManager em vários "mini" ApplicationManages?
Correto.
Devo utilizar o MultiAplicationManager em todas as minhas aplicações ?
Depende. Há prós e contras em se modularizar o AplicationManager, mas podemos destacar que um programa modular é muito mais fácil e rápido de ser mantido. Lembre-se: "não faça bem feito o que não é pra ser feito". Em resumo, se eu tenho um sistema pequeno e simples, há a necessidade de se modularizar?
O meu AplicationManager deixa de existir ?
Não. É nele que você vai registrar seus "mini" AplicationManagers. Eu aconselho a criar um "ConfigManager" e nele você colocar todas as configurações globais que terão no sistema, até porque são filtros globais, e deixar os MeusModulosManager para suas configurações como: actions, (LoadActions), listas (LoadLists) etc.
Onde ficam MeusModulosManager?
Onde você achar que os mesmos devem ficar, na raiz ou em um pacote, isto, você ou o escopo do projeto decide. Por exemplo, você pode deixar o AplicationManager na raiz (classes) e criar um pacote manager, managers, whatever e colocar todos os MeusModulosManager lá.
Veja como ficaria um ApplicationManager
Code:
public class ApplicationManager extends MultiApplicationManager {
public void registerManagers() {
//O ConfigManager será o responsável pelas configurações globais.
register(ConfigManager.class);
//O UsuarioManager será o responsável pelas configurações do módulo usuario.
register(UsuarioManager.class);
...
}
}
Repare que o ApplicationManager extende MultiApplicationManager, e com isto ele deixa de ser um "configurador" e se torna um "agregador" de AplicationManagers, sua função será apenas de "agregar" as diversas configurações divididas em uma só.
O ConfigManager, será o responsável pelas configurações globais.
Code:
public class ConfigManager extends org.mentawai.core.ApplicationManager {
public void init(Context application) {
/**
* Aqui colocaremos todas as configurações que sejam comuns a todos como:
* ioc, conexões ao banco de dados, grupos etc.
*
**/
}
public void loadLists() throws IOException {
/**
* Configure aqui suas listas, comum a todos.
**/
}
public void loadActions() {
// GLOBAL FILTERS
// GLOBAL CONSEQUENCES
}
}
Você também poderá configurar os loadLocales, loadFormatters que também são globais.
O UsuarioManager, será o responsável pelas configurações do "módulo" usuário.
Code:
public class UsuarioManager extends org.mentawai.core.ApplicationManager {
public void loadActions() {
/**
* Todas as actions que pertencem ao "módulo" Usuário
*
**/
}
public void loadLists() throws IOException {
/**
* Configure aqui suas listas, que têm referencias ao módulo.
* Sexo, por exemplo.
*
**/
}
}
O mesmo vai servir pra todos os outros managers que possuir, ou seja, loadActions e loadLists especificos por módulo.
Como dito anteriormente, a grande vantagem desta forma de configuração programática é que fica extremamente fácil sua manutenção, pois todas as actions ou listas relativas a USUARIO estão no módulo UsuarioManager.
Lembre-se que essa é apenas mais uma das formas de se desenvolver usando o mentawai. Essa é a grande vantagem do mentawai em relação a outros frameworks. Com o mentawai é sempre SET OPTIONAL ON.
Bom dúvidas ou sugestões, Utilizem o Forum.
Abraço a todos.
|
Leiber Wallace
Voixy ::: Soluções em Telecomunicações |
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/08/2007 11:49:27
|
velo
![[Avatar]](/images/avatar/7f39f8317fbdb1988ef4c628eba02591.jpg)
Joined: 16/02/2006 13:33:54
Messages: 1197
Location: Jaraguá do Sul - SC
Offline
|
A FAQ ficou um tesão veio!!!
Apenas um extra, a classe de configuração pode ser uma InnerClass do appManager. Não deixei a opção de sobreescrever os metodos loadActions, load... para não haver risco de alguem esquecer de chamar o super. Logo todos esses método são final no MultiAppManager.
VELO
|
_____________________________________
Mentawai Developer
"When the only tool you have is a hammer, everything looks like a nail"
http://en.wikipedia.org/wiki/Golden_hammer |
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/02/2008 05:37:50
|
Stanley Alves
Joined: 09/08/2007 12:00:42
Messages: 60
Offline
|
seria bom ter um exemplificação em forma de projeto. na teoria é tudo legal... mas na pratica só tristeza...
flw...
p.s: tipo um projeto pronto... para temos uma visão funcional da coisa... mostrando os beneficios que a divisão modular traria a um projeto de grande dimensão.
flw de novo...
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/02/2008 05:46:55
|
velo
![[Avatar]](/images/avatar/7f39f8317fbdb1988ef4c628eba02591.jpg)
Joined: 16/02/2006 13:33:54
Messages: 1197
Location: Jaraguá do Sul - SC
Offline
|
Comente a frase:
Stanley Alves wrote:
na teoria é tudo legal... mas na pratica só tristeza...
O que aconteceu?
VELO
|
_____________________________________
Mentawai Developer
"When the only tool you have is a hammer, everything looks like a nail"
http://en.wikipedia.org/wiki/Golden_hammer |
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/02/2008 11:53:22
|
Stanley Alves
Joined: 09/08/2007 12:00:42
Messages: 60
Offline
|
não blz... pensava que com isso iria resolver meu problema... mas não era bem o que eu tava imaginando... o termo modularizar encontrado em alguns post's me confundiu bastante... agora já entendi o que ele faz...
flw...
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/02/2009 12:45:17
|
vonlinkerstain
Joined: 10/02/2009 18:40:08
Messages: 4
Offline
|
Opa, tudo bem?
Pergunta: Esta classe é mais uma forma organizacional das actions e lists, pra facilitar a manutencao do código, pra nao termos um método gigante. Todas as actions e lists ficam disponíveis pra toda a app, correto?
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/02/2009 13:01:58
|
velo
![[Avatar]](/images/avatar/7f39f8317fbdb1988ef4c628eba02591.jpg)
Joined: 16/02/2006 13:33:54
Messages: 1197
Location: Jaraguá do Sul - SC
Offline
|
Exato
|
_____________________________________
Mentawai Developer
"When the only tool you have is a hammer, everything looks like a nail"
http://en.wikipedia.org/wiki/Golden_hammer |
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/06/2009 12:34:23
|
crocetti
Joined: 25/06/2009 11:42:55
Messages: 3
Offline
|
Olá!
Como eu faria para registrar dinamicamente minhas classes em cada módulo ( uso Hibernate Annotation )?
Eu crio a SessionFactory em um ConfigManager e tenho que usar o addAnnotatedClass nas QualquerCoisaManager.
alguem tem uma idéia?
|
|
 |
|