XIII. ÖNERĐLEN HASTANE ORGANĐZASYON
XIII.II Hastane Müdürü
Uma das atividades essenciais no desenvolvimento de uma LPS é a escolha dos mecanismos de implementação para cada uma de suas variabilidades (Chen et al., 2009). No caso da LPS E-Commerce foi adotado um conjunto de técnicas e tecnologias. A Tabela 3 apresenta um resumo das técnicas de modularização adotadas para cada uma das variabilidades da LPS.
O primeiro grupo de características gerenciado é referente à característica HomePage. Ela possui duas subcaracterísticas mutuamente exclusivas: StaticContent e DynamicContent. A primeira habilita que o produto derivado tenha páginas JSP com informações estáticas e no caso de mudanças do conteúdo delas ocorre a substituição da página anterior pela página atualizada. A segunda possui duas características alternativas: (i) WelcomeMessage que permite a exibição de uma mensagem de boas vidas, geralmente de maneira textual, na página principal de um produto; e (ii) SpecialOffers que permite um produto apresentar ofertas promocionais para os clientes como produtos com desconto.
Tabela 3 - Características variáveis e formas de tratamento.
Características Subcaracterísticas Tipo tratamento Formas de
HomePage DynamicContent StaticContent e Mutuamente exclusiva configuração Modelo de DynamicContent WelcomeMessage e SpecialOffers Alternativa configuração; Modelo de
Fragmentos Demographics Age e Income Alternativa configuração; Modelo de
Aspectos ProductInformation WarrantyInformation, DetailedDescription,
Size,Weight Opcional
Modelo de configuração;
Templates e
Fragmentos Searching AdvancedSearch BasicSearch e Alternativa configuração Modelo de
Browsing CategoryPage Opcional configuração Modelo de EletronicGoodsFulfil
ment FileRepository Opcional configuração Modelo de ServicesFulfilment AppointmentScheduling e ResourcePlanning Alternativa configuração Modelo de
ContentManagement ContentApproval Opcional
Modelo de configuração;
Orientação a Objetos; Aspectos Com a definição de características para um produto ocorre a seleção de arquivos para compor esse membro da linha após a derivação. Para exemplificar, ao escolher a característica StaticContent é feito o carregamento do arquivo
StaticContent.jsp; a seleção de DynamicContent implica no uso de
dynamicContent.jsp; ao especificar a característica WelcomeMessage os arquivos
welcomeMessage.jsp, MensagemMBean.java e mensagem.jsp são carregados; e ao
selecionar SpecialOffers implica no uso de ofertasespeciais.jsp. A Figura 18 apresenta uma visão parcial do modelo de configuração do GenArch usado na LPS, apresentando a relação de alguns arquivos com características.
Figura 18 - Modelo de Configuração do GenArch.
Para gerenciar as variações de alguns arquivos JSP foram adotadas diretivas do tipo include de JSP e templates do GenArch. A Figura 19 apresenta o template
dynamicContent.jsp.xpt usado para a geração adequada do arquivo
dynamicContent.jsp.
Figura 19 - dynamicContent.jsp.xpt.
Como pode ser observado na Figura 19, é definido um fragmento para extrair o trecho de código referente ao include do arquivo wellcomeMessage.jsp (linha 6), bem como o ponto de inclusão do conteúdo desse fragmento (linha 7). Um fragmento representa um trecho de código ou texto num arquivo que se deseja inserir em um template durante a sua customização. Além disso, é encontrada a diretiva relacionada à inclusão da página ofertasespeciais.jsp que ainda não foi encapsulada em fragmento (linha 9). O fragmento da Figura 20 é encontrado no modelo de configuração do GenArch e esse fragmento só é adicionado no template se a característica WelcomeMessage for selecionada para um produto da LPS.
Figura 20 - Fragmento WelcomeMessageFragment. .
O outro grupo de variações implementadas está relacionado ao registro de usuários das aplicações E-Commerce. A Figura 21 apresenta uma visão das características desse grupo.
Figura 21 - Característica Demographics.
Como observado, Demographics é uma característica opcional e apresenta Age (idade) e Income (renda) como subcaracterísticas. Com a definição de Demographics, a classe Demografico.java é carregada para um produto após o processo de derivação. Tal classe é ilustrada na Figura 22.
Figura 22 - Classe Demografico.java.
A classe original Demografico.java não possui, por exemplo, os atributos idade e renda. Para incluir tais variações foram usados aspectos implementados em AspectJ. A Figura 23 apresenta o arquivo DemograficoIdade.aj que exerce o papel
de incluir a idade e os métodos de atribuição e recuperação para esse atributo. Para tratar a característica variável renda é usado, por sua vez, o arquivo intitulado
DemograficoRenda.aj.
Figura 23 - Arquivo DemograficoIdade.aj.
As características variáveis ligadas ao catálogo da loja também foram tratadas. Esse catálogo possui informações dos produtos como o tipo, dados básicos, descrição detalhada, informações de garantia, tamanho, peso e disponibilidade. Na Figura 24 a seguir são vistas as características referentes ao catálogo no modelo de características da LPS.
Figura 24 - Características de Catalog.
A solução adotada para gerenciar as variações referentes às informações dos produtos foi a criação de um template relacionado à entidade Produto e fragmentos para determinar o código variável que será inserido no template dependendo das características selecionadas. Dessa forma, depois da derivação existirá uma classe
O conjunto de características formado por BasicSearch e AdvancedSearch; ProductPage e CategoryPage; ShoppingCart, Checkout e OrderConfiguration; PhysicalGoodsManagement, FileRepository, AppointmentScheduling e ResourcePlaning são também gerenciadas, mas as formas de tratamento não são detalhadas no presente trabalho por possuírem uma complexidade baixa ou equivalente a característica WelcomeMessage.
A última característica variável gerenciada e descrita nesta dissertação foi ContentApproval que está relacionada à parte de gerência de conteúdo, uma das funções administrativas mapeadas na LPS. A Figura 25 destaca ContentApproval no modelo de características.
Figura 25 - Característica ContentApproval.
Com a seleção de ContentApproval para um membro da linha é preciso usar uma lógica de negócio em que cada produto cadastrado necessite de aprovação do supervisor para estar disponível na loja virtual. Caso ContentApproval não seja escolhido, a aprovação não precisa ser realizada. Para tratar as duas possibilidades, o padrão Strategy (Gamma et al., 1994) foi empregado para determinar a implementação adequada em cada situação. A Figura 26 apresenta o uso desse padrão na LPS.
Figura 26 - Padrão Strategy na LPS.
Para gerenciar a característica ContentApproval também foi usado aspectos. Na Figura 27 a seguir é encontrado um comportamento inserido no método da classe ProdutoDAO (elemento de acesso a dados) que retorna uma lista de produtos. O comportamento do aspecto, por sua vez, retira da lista os produtos que ainda não foram autorizados.
Figura 27 - Aspecto AutorizacaoNecessariaAspect.