Usar DSL internamente nos geradores ou ate gerar um projeto que possua DSLs, ok.
O que eu quis dizer é só que eu não sei se o usuário final precisa escrever uma DSL para dizer a ferramenta o que ela deve fazer. A ideia é descomplicar ao máximo a vida do desenvolvedor para que ele se preocupe com o que realmente importa que são as regras de negocio, arquitetura e etc.
Eu tenho muita preocupação em não tirar o foco do que realmente importa em um projeto (regras de negocio e etc). Então eu quero evitar que as pessoas escrevam códigos, comandos ou modelos para gerar algo descartavel (CRUDs). Esse é o objetivo desse projeto. Mas enfim, concordo que podem existir outras soluções
Vamos ver como as coisas caminham com o tempo. Atualmente a preocupação é essa.
Usar DSL internamente nos geradores ou ate gerar um projeto que possua DSLs, ok.
O que eu quis dizer é só que eu não sei se o usuário final precisa escrever uma DSL para dizer a ferramenta o que ela deve fazer. A ideia é descomplicar ao máximo a vida do desenvolvedor para que ele se preocupe com o que realmente importa que são as regras de negocio, arquitetura e etc.[/quote]
Regras de negócios estão na DSL.
[quote]
Eu tenho muita preocupação em não tirar o foco do que realmente importa em um projeto (regras de negocio e etc). Então eu quero evitar que as pessoas escrevam códigos, comandos ou modelos para gerar algo descartavel (CRUDs). Esse é o objetivo desse projeto. Mas enfim, concordo que podem existir outras soluções
Vamos ver como as coisas caminham com o tempo. Atualmente a preocupação é essa.[/quote]
Acho que você esta usando um modelo antigo e não entende o que é percebido hoje, algo como Drools usa DSL para implementar regras de negocios.
Usar DSL internamente nos geradores ou ate gerar um projeto que possua DSLs, ok.
O que eu quis dizer é só que eu não sei se o usuário final precisa escrever uma DSL para dizer a ferramenta o que ela deve fazer. A ideia é descomplicar ao máximo a vida do desenvolvedor para que ele se preocupe com o que realmente importa que são as regras de negocio, arquitetura e etc.[/quote]
então… eu dei a sugestão da DSL pq eu acho wizards mais complicado. Você poderia manter ambos - os wizards e a DSL. Os wizards por exemplo, poderiam gerar a DSL. Se o desenvolvedor quiser, ele que opte por não usar os wizards e atuar direto na DSL.
Eu sugeri que desse uma olhada no TextUML não é pelo fato de que me interesso por MDD. É que no TextUML já existe uma DSL que representa a UML e talvez valesse a pena reaproveitar ao invés de criar do zero. Valeria muito a pena manter uma DSL onde à partir dela você gera todo o Scaffold da aplicação. Como o seu público alvo são programadores editar as configurações em uma DSL pode ser mais interessante do que editar wizards, é minha sincera opinião
[quote=bruno.braga]Eu tenho muita preocupação em não tirar o foco do que realmente importa em um projeto (regras de negocio e etc). Então eu quero evitar que as pessoas escrevam códigos, comandos ou modelos para gerar algo descartavel (CRUDs). Esse é o objetivo desse projeto. Mas enfim, concordo que podem existir outras soluções
Vamos ver como as coisas caminham com o tempo. Atualmente a preocupação é essa.[/quote]
Bom, também acho que está fora de foco o Spider conter regra de negócio. Até onde entendi o foco é gerar a estrutura da aplicação. Ou melhor ainda, dar a opção do programador gerar o que quiser e como quiser Mas a estrutura do modelo acho que não tem muito como o Spider evitar, ou tem?
Por exemplo, algo q eu senti falta em alguns projetos por aí é a opção de você gerar código para multi-projetos. Se tenho por exemplo um projeto usando maven com dois subprojetos, como faço pra gerar alguns artefatos no projeto A e outros no projeto B?
Não Alex, acho que vc não entendeu. A sugestão era para escrever a DSL em vez de usar os wizards. Não estamos falando de regras de negocio. O assunto regra de negocio está fora do escopo da ferramenta. As regras tem que ser escritas pelos desenvolvedores usando o que eles quiserem - DSL, codigo java puro, patterns, etc…
[quote=Thiago Senna]então… eu dei a sugestão da DSL pq eu acho wizards mais complicado. Você poderia manter ambos - os wizards e a DSL. Os wizards por exemplo, poderiam gerar a DSL. Se o desenvolvedor quiser, ele que opte por não usar os wizards e atuar direto na DSL.
Eu sugeri que desse uma olhada no TextUML não é pelo fato de que me interesso por MDD. É que no TextUML já existe uma DSL que representa a UML e talvez valesse a pena reaproveitar ao invés de criar do zero. Valeria muito a pena manter uma DSL onde à partir dela você gera todo o Scaffold da aplicação. Como o seu público alvo são programadores editar as configurações em uma DSL pode ser mais interessante do que editar wizards, é minha sincera opinião
[/quote]
Ok Thiago. Agora as sugestões / ideias estão começando a tomar forma (não seria MDD, usar o DSL como opção ao wizards, etc), apesar de que eu acho os wizards bem simples e da para clonar as configs de um projeto para o outro.
Vou fazer o seguinte: vou dar uma olha no TextUML e depois a gente conversa para entender melhor o q está sugerindo e ver se é possível de implementar. Se não for atrapalhar nada e só for agregar, tranquilo.
[quote=Thiago Senna]
Por exemplo, algo q eu senti falta em alguns projetos por aí é a opção de você gerar código para multi-projetos. Se tenho por exemplo um projeto usando maven com dois subprojetos, como faço pra gerar alguns artefatos no projeto A e outros no projeto B?[/quote]
A geração do SPIDER e incremental e baseada em assuntos (divididos em abas no wizard).
Vc pode gerar o conteúdo de uma aba em um projeto (ex: layout) e o conteudo de outra em outro projeto (ex: codigo java).
É isso que quer?
[quote=bruno.braga]Ok Thiago. Agora as sugestões / ideias estão começando a tomar forma (não seria MDD, usar o DSL como opção ao wizards, etc), apesar de que eu acho os wizards bem simples e da para clonar as configs de um projeto para o outro.
Vou fazer o seguinte: vou dar uma olha no TextUML e depois a gente conversa para entender melhor o q está sugerindo e ver se é possível de implementar. Se não for atrapalhar nada e só for agregar, tranquilo.[/quote]
Legal
O TextUML acho que seria legal para que fosse possível escrever a estrutura do modelo (no caso do java, as entidades). Mas há opções ainda - o pacote “Modelling Package” do eclipse tem um bom suporte para DSL. Dê uma procurada por XText e você vai ver que criar as DSL’s talvez até seja tranquilo. Mas não manjo muito de desenvolvimento dentro da plataforma eclipse para saber o quão complicado pode ser. Com ctz podemos sim trocar mais idéias sobre este assunto quando quiser
[quote=bruno.braga]A geração do SPIDER e incremental e baseada em assuntos (divididos em abas no wizard).
Vc pode gerar o conteúdo de uma aba em um projeto (ex: layout) e o conteudo de outra em outro projeto (ex: codigo java).
É isso que quer?[/quote]
Vou tentar dar um exemplo - dado que criei no Spider um modelo que represente uma classe do tipo Pessoa e com um atributo nome do tipo String, eu gostaria de gerar o seguinte:
-MeuProjeto
---- core
-------- src/main/java/Pessoa.java
(…)
---- web
-------- src/main/java/PessoaController.java
-------- src/main/webapp/pessoa/list.jsp
(…)
---- infra
-------- src/main/java/PessoaDAO.java
É mais ou menos esta a idéia - seria legal gerar e ter a opção de que a geração jogasse o código gerado dentro do projeto certo. Muitos geradores de código acabam gerando código sempre dentro de apenas um projeto. Ter a opção de selecionar quais artefatos serão gerados em quais ‘sub-projetos’ seria bem legal.
Obs: Bruno, qualquer hora vou separar um tempo para explorar o Spider com mais calma, espero, rsrs. Fazendo isto tento trazer sugestões mais claras. Acabei dando essas sugestões pq são as primeiras coisas que me vieram a cabeça e já me fizeram falta.
Então, eu estava dando uma olhada no TextUML e acabei achando o xtext do eclipse antes de ler o forum. O xtext pode ajudar a criar uma DSL para isso. O textUML ja é algo pronto para criar modelos UML. N entendi ainda onde ele pode ajudar, mas depois a gente conversa.
Sobre o exemplo que deu dos artefatos, o que é um projeto no eclipse? “Meu Projeto” ou “core”, “web”, “infra”?
Então, eu estava dando uma olhada no TextUML e acabei achando o xtext do eclipse antes de ler o forum. O xtext pode ajudar a criar uma DSL para isso. O textUML ja é algo pronto para criar modelos UML. N entendi ainda onde ele pode ajudar, mas depois a gente conversa.
Sobre o exemplo que deu dos artefatos, o que é um projeto no eclipse? “Meu Projeto” ou “core”, “web”, “infra”?[/quote]
XText pode mesmo ajudar muito. Sobre o TextUml já acho que precisariamos pensar com mais calma. Mas se você se familiarizar com XText ele já vai ser suficiente, tanto pra criar as DSL`s dos wizards e modelo.
No exemplo que dei, as pastas core, web e infra são cada um deles um projeto no eclipse.
Se o “Meu Projeto” for o projeto do eclipse e “core”, “web” e “infra” forem sub-pastas é mto facil gerar nessa estrutura.
Um jeito facil de conseguir isso e mantendo a separação que vc quer é criando o “Meu Projeto” como projeto do eclipse e dentro dele o SPIDER pode gerar o “core”, “web” e “infra” como sub-projetos (pastas com o arquivo .project). Depois que a estrutura tiver gerada vc pode dar close no “Meu Projeto” (que é o principal) e import project nos outros 3 pelo eclipse.
Editei para explicar melhor. Estou postando via mobile (android) e antes tinha mais confuso / escrito correndo
[quote=bruno.braga]Se o “Meu Projeto” for o projeto do eclipse e “core”, “web” e “infra” forem sub-pastas é mto facil gerar nessa estrutura.
Um jeito facil de conseguir isso e mantendo a separação que vc quer é criando o “Meu Projeto” como projeto do eclipse e dentro dele o SPIDER pode gerar o “core”, “web” e “infra” como sub-projetos (pastas com o arquivo .project). Depois que a estrutura tiver gerada vc pode dar close no “Meu Projeto” (que é o principal) e import project nos outros 3 pelo eclipse.
Editei para explicar melhor. Estou postando via mobile (android) e antes tinha mais confuso / escrito correndo :P[/quote]