Temos que criar um aplicativo da web que será usado como um formulário de pedido para vários produtos de seguros (15 no total). Este formulário de inscrição será semelhante a um assistente de formulário, ele se estenderá por várias páginas, dependendo do produto entre 4 e 10.
O total geral de todos os diferentes elementos (entradas, caixas de seleção) que o formulário renderizará é de cerca de 250, mas mesmo o produto mais complexo não utilizará mais de 170 deles. O menos complexo ainda requer cerca de 80 elementos.
Não queremos criar 15 formulários de inscrição diferentes, um por produto, queremos ter um único formulário de inscrição que será usado por todos os produtos.
Agora, como você pode imaginar, os elementos têm muitas dependências entre eles. Um valor inserido em um campo pode fazer com que outro campo ou conjunto de campos apareça ou desapareça (na página atual ou nas páginas seguintes). Algumas outras dependências baseadas nos valores inseridos:
- o valor de um elemento é obrigatório ou não
- os valores possíveis para caixas de seleção serão alterados
- as restrições de validação serão alteradas
Como você pode imaginar, modelar isso é muito complexo. A questão é: qual ferramenta você recomendaria para modelar (e documentar) todos esses elementos, as dependências entre eles e as restrições de validação? Como você faria a modelagem? Não estamos falando sobre o modelo de dados neste caso. Este modelo fará parte das especificações do que precisa ser feito e como referência após a conclusão do projeto. Ao alterar o modelo, os formulários de inscrição não serão alterados automaticamente.
Algumas das coisas que gostaríamos de poder fazer facilmente:
- ver em quais elementos um determinado elemento depende
- veja todos os elementos incluídos no formulário para determinado produto
- veja os elementos necessários para um determinado produto
- definir regras de validação para cada elemento
- definir vários atributos para cada elemento
Limitação: nossos gerentes e proprietários de produtos são os que farão a modelagem.