Implementando Composições na WEB  XML
Índice dos Fóruns » Desenvolvimento Web
Autor Mensagem
bbviana
JavaChild
[Avatar]

Membro desde: 24/07/2006 13:11:57
Mensagens: 111
Localização: São Paulo
Offline

Por composição entendam o mesmo conceito que é utilizado na UML.
Temos composições e agregações. Composição é um agregação forte, i.e., onde uma coleção de objetos só tem sentido de existir se o objeto do qual pertence tbm existir.
Aqueles exemplos clássicos:

Agregação:
TimeDeFutebol [tem vários] JOGADOR
É uma agregação, pois um Jogador pode existir caso o Time seja excluido

Composição:
Motor [tem vários] ParteDeMotor
É uma composição, pois se eu excluir o Motor, quero que as partes tbm o sejam. Mais ainda, não há sentido criar uma Parte sem estar associada a um Motor antes.

Queria discutir com vcs como implementar telas (web) para composições.
Por ex, imaginem que estou na tela de cadastro de Motor. Imaginem tbm que tenho uma tela de cadastro de ParteDeMotor. No entanto, só posso acessar essa tela após ter selecionado um Motor antes, pois não faz sentido criar uma Parte sem um Motor.

Qual o melhor jeito de fazer uma tela dessas?
Um possivel fluxo seria:
Cadastro de Motor -> Seleciona Motor na Lista -> Cadastro de Parte -> Operações diversas -> Retorna para tela de Cadastro de Motor.

Neste caso, guardariamos o estado da tela do Motor onde? Sessão? Abririamos um pop-up para a Tela de cadastro de partes? Deste modo não perderiamos o estado da tela de Motor.

Uma outra solução seria o uso intensivo de AJAX.

Como vcs implementam?

Valeu, galera.
Yky Mattshawn
Virtual Machine Man
[Avatar]
Membro desde: 18/12/2006 03:34:14
Mensagens: 651
Localização: São Sebastião do Caí / RS
Offline

Olha, cara, estou desenvolvendo um sistema de SAC para uma loja de informática.

Através dele os funcionários poderão criar Ordens de Serviço (OS) fora do local de trabalho. Numa OS há composição, pois o funcionário têm de especificar o cliente, o equipamento e a filial. Para os 3 itens existe um cadastro. A maneira que eu implementei foi assim (com base na forma que eu fiz tu podes pensar como fica melhor pra ti):

Primeiramente eu criei, para cada item (cliente, equipamento e filial) uma página específica formatada para ser um popup. Estes popup's são simples janelas que mostram os dados paginados com botões para deslocamento entre as páginas. Cada item na tabela da página é um link para uma função JavaScript.

Quando o cara clica em um cliente no popup de clientes, eu executo o seguinte código:



Então, na janela onde estou incluindo a OS, eu tenho a função que pega os dados do popup:



Dessa forma eu faço a composição!

This message was edited 1 time. Last update was at 23/01/2008 08:53:58



Yky Mattshawn [ Compusoft - Desenvolvimento de Sistemas Empresariais ]
"Tudo que é ortodoxo ou heterodoxo demais gera heresia."
Bixo 2010 - Ciência da Computação - Feevale/RS e Unisinos/RS
[Email] [MSN] [ICQ]
bbviana
JavaChild
[Avatar]

Membro desde: 24/07/2006 13:11:57
Mensagens: 111
Localização: São Paulo
Offline

Entendi, vc usa pop-ups para nao perder o estado das suas páginas anteriores.
è uma ideia que eu gosto muito tbm, no entanto, no caso de vc ter composições dentro de composições, fica um monte de pop-ups abertos e o usuario pode se perder.
Mas mesmo assim eu concordo com vc e acho que é um dos melhores jeitos de implementar cenarios desse tipo.

Legal, cara.
Yky Mattshawn
Virtual Machine Man
[Avatar]
Membro desde: 18/12/2006 03:34:14
Mensagens: 651
Localização: São Sebastião do Caí / RS
Offline

Como assim composição sobre composição?

Deixa eu explicar melhor o meu formulário de OS e você vai entender como fiz a composição de objetos compostos.

Eu simplesmente faço um lookup (o link que abre a popup) ser dependente de outro.

No meu esquema aqui, os equipamentos são dependentes do cliente. Então como faço: quando o formulário é aberto, o link para abrir o popup dos equipamentos está desativado. Quando o cara seleciona um cliente, a função setClient verifica se foi retornado um cliente válido e, se foi, o link para os equipamentos é liberado. Quando o link para os equipamentos é clicado, a URL é montada dinamicamente, assim:



Note que eu estou passando para a popup (no caso a função selectEquipment é que abre o popup) a ID do cliente. Então, usando esse parâmetro, eu carrego no popup somente os equipamentos relacionados àquele cliente.

Não seria isso que você se referiu?

Desa forma você teria sempre no máximo 1 popup aberto. Só teria o trabalho de controlar uma composição sobre a outra.

This message was edited 2 times. Last update was at 23/01/2008 11:21:10



Yky Mattshawn [ Compusoft - Desenvolvimento de Sistemas Empresariais ]
"Tudo que é ortodoxo ou heterodoxo demais gera heresia."
Bixo 2010 - Ciência da Computação - Feevale/RS e Unisinos/RS
[Email] [MSN] [ICQ]
 
Índice dos Fóruns » Desenvolvimento Web
Ir para:   
Powered by JForum 2.1.8 © JForum Team