domingo, abril 15, 2007

Inferência de navegabilidade: um problema de controle

Uma funcionalidade importante e necessária para sistemas que operam sobre telas um-para-X (1-1,1-n) é permitir a navegação entre diferentes interfaces (cadastros) relacionadas. Pode não ser especificamente um JFrame (ou outro assemelhado), mas um panel, um dialogo, uma aba, não importa. O que importa é possibilitar que, a partir de um registro (chamado Mestre) possamos navegar para outro (chamado Filho). É o típico conceito de mestre-detalhe.

Esse tipo de conceito foge à alçada do Merlin. Por que? Porque isso é um caso de controle. É o típico caso de aplicabilidade de frameworks web como o Struts. Para desktop, bisbilhotando nas JSRs, ainda não encontrei nada. É uma pena.

Assim, enquanto o padrão não surge, precisamos dar um Norte para o assunto, ou seja, permitir que telas Mestre-Detalhe também sejam suportadas pelo Merlin. Assim, vamos aos estudos teóricos (...)

Diversas ferramentas existentes que operam sobre o conceito de geração baseada em modelos advogam que as navegacoes podem ser inferidas a partir dos links existentes entre os objetos da aplicação (...)

Assim, caso eu tenha um relacionamento um-para-muitos entre um cliente e seus veículos, podemos inferir que a tela de cadastro de cliente será um mestre-detalhe entre Cliente e Veiculo. Isso é fácil e simples. Não tem nenhuma maravilha em "descobrir" isso.

Mas a questão vem da usabilidade. Digamos que o usuário cadastrou o cliente e editou alguns de seus veículos e, daí, também (e diretamente), ele deseja modificar alguns dos seus telefones (...)

Nesse caso, é importante que exista uma forma de navegar do cadastro de veículos para o cadastro de telefone sem ter que voltar para o cadastro de cliente. Mas se olharmos diretamente para as relações no modelo, vamos perceber que não existe ligação direta entre Veiculo e Telefone.

Assim, uma heurística para resolver isso é a seguinte: permitir a navegação entre filhos de mesmo pai. Olhando essa figura, percebemos que os fluxos inferidos (em azul) são exatamente isso.

Esse tipo de comportamento pode ser bastante útil e pode ser implementado de várias formas. O detalhe é, friso novamente friso, que isso não é problema tela de cadastro, mas sim navegação, de controle.

Implementar isso no Merlin pode ser perigoso. Não implementar pode ser um ponto para usuários berrarem que a ferramenta é incompleta. Ao meu ver não é o caso, mas vou pensar no assunto.

1 comentários:

Unknown disse...

Uma inspiração para isso pode ser a navegação de pastas do sistema operacional, como o windows explorer, tem atalhos para as principais pastas (que seriam os principais cadastros), a estrutura das pastas (que seria o caminho de navegação realizada entre os cadastros, por exemplo: Cliente >>> Cidade >>> Estado), etc.