Estrutura dinâmica

10 respostas
fabiano.franca

Depois de ter montado o Domain Model baseado nas regras de negócio do cliente, foi pedido que fosse possível adicionar novos “campos” as “telas” do sistema.

Também tem que ser possível selecionar quais campos ele quer que aparece na interface, indicar campos requeridos etc.

Essa personalização acabou matando o meu Domain Model já que o sistema virou basicamente um template para outros sistemas.

Essa personalização da interface não chega a ser problema, o que está pegando vai ser essa possibilidade do usuário adicionar novos campos dinâmicamente.

Esse tipo de estrutura é comum em CMSs.

Tanto que uma idéia que me veio a cabeça agora seria a de usar um CMS que possua uma boa api para acesso externo como “base de dados”.

O SharePoint da Microsoft, o único CMS que conheço, me permite ter acesso completo a sua estrutura através de uma api.

Alguém com alguma outra sugestão?

10 Respostas

Aldrin_Leal

Modelar o registro e criar uma mini-definição de schema?

fabiano.franca

Aldrin Leal:
Modelar o registro e criar uma mini-definição de schema?

E a cada alteração no schema persistir as alterações para o banco de dados?

Aldrin_Leal

Eu deixaria campos core na tabela. E Faria ter um campo representando o documento XML, como um serializable. E a definição deste registro é um Schema, provavelmente via Relax NG.

Deixa em um dir de configuração e fornece um base. Deve bastar, não?

bzanchet

Dynamic Object Model

(via http://del.icio.us/pcalcado)

A

Tem bastante literatura neste site do Joe Yoder.

pcalcado

Será que matou ou será que o domínio é outro? Qual o domínio da aplicação? Será que os objetos deste domínio não possuem como parte do seu estado estes campos definidos pelo usuário?

Se o que muda são os dados do objeto, o usuário quer poder adicionar mais este e este atributo, acredito que o problema se resolve simplesmente na modelagem, talvez mudando o foco do domínio.

Se o objeto muda de estado e comportamento aí sim temos uma complexidade bem grande, mas acredito que não seja o caso porque caso fosse seus usuários teriam que cotnar com alguma forma de programar os novos estados do objeeto, pela sua descrição eu diria que são apenas objetos com mais ou menos dados de acordo com o gosto do freguês.

fabiano.franca

bzanchet:
Dynamic Object Model

(via http://del.icio.us/pcalcado)

Valeu, vou dar uma olhada nesses artigos.

Realmente Philip me expressei mal.

O sistema nasceu como um controle de Processos só que o cliente viu que simplesmente mudando o nome de algumas tabelas e adicionando novos campos ele poderia usar a mesma estrutura em outros sistemas.

O que nasceu como um sistema virou praticamente um produto.

A idéia é que o Core seja implementado sem regras de negócios e comportamento e estado sejam controlados pela interface.

Um serviço genérico que possa ser personalizado somente alterando a sua interface.

Como você disse, o que mudou foi o domínio do sistema.

Fabio_Kung

Não sou nada fã desse tipo de coisas, mas não poderia deixar de citar esse:

http://www.tinymarbles.org/

Dê uma olhada.

pcalcado

fabiano.bandeira:
Um serviço genérico que possa ser personalizado somente alterando a sua interface.

Como você disse, o que mudou foi o domínio do sistema.

Uhm… uma rules engine não te ajuda não? Tipo o JBoss Rules ou algo do tipo…

fabiano.franca

Fabio Kung:
Não sou nada fã desse tipo de coisas, mas não poderia deixar de citar esse:

http://www.tinymarbles.org

Já estou navegando pelo site, obrigado pela dica.

Vou dar uma olhada no JBoss. O maior problema é que o projeto é em .NET :oops:

Antes de ser amaldiçoado :D, só trouxe essa minha dúvida porque faz tempo que acompanho o fórum de metodologias e tenho visto ótimas discussões de DDD.

Criado 3 de agosto de 2007
Ultima resposta 8 de ago. de 2007
Respostas 10
Participantes 6