Integração Aplicacional Sincronização de Dados de Referência no Sector de Retalho - PDF
Integração Aplicacional Sincronização de Dados de Referência no Sector de Retalho
Download "Integração Aplicacional Sincronização de Dados de Referência no Sector de Retalho"
Valdomiro Campelo Laranjeira
1 Faculdade de Engenharia da Universidade do Porto Integração Aplicacional Sincronização de Dados de Referência no Sector de Retalho Ricardo António Rocha Espírito Santo Veloso Versão Final Relatório de Projecto realizado no Âmbito do Mestrado Integrado em Engenharia Informática Orientador: João Canas Ferreira (Professor Auxiliar) Julho de
2 Ricardo Veloso,
3 Integração Aplicacional Sincronização de Dados de Referência no Sector de Retalho Ricardo Veloso Relatório de Projecto realizado no âmbito do Mestrado Integrado em Engenharia Informática Aprovado em provas públicas pelo Júri: Presidente: João Sousa Cardoso (Professor Auxiliar Convidado) Arguente: Isabel Ramos (Professora Auxiliar) Vogal: João Paulo de Castro Canas Ferreira (Professor Auxiliar) 15 de Julho de
5 Resumo Este relatório descreve uma integração aplicacional do sector de ERP de retalho para grandes empresas, tendo como cenário o sistema de um dos primeiros 5 retalhistas mundiais que pretende integrar o ERP Oracle Retail. Mais precisamente, foi analisado o campo de processos de Pricing promocionais e adicionalmente estudada a performance da solução global de integração presente no mesmo sistema. Um estudo das propriedades divergentes de dois sistemas promocionais foi elaborado e concluído com a apresentação de métodos de conciliação e aproveitamento das capacidades de ambos, devidamente testadas e implementadas no retalhista em questão. São analisados e testados os benefícios e limitações do mecanismo de multi-threading e as complexidades relacionais dos dados de transacção de retalho. 5
7 Abstract This report describes an applicational integration effort in the context of ERPs for major corporations, using as setting one of the major 5 retailers in the world s information system, which is intended to integrate the Oracle Retail ERP. Specifically, Promotional Pricing processes were analyzed, along with the performance of the system s global integration solution for OR, the ORIB. A study of two different promotional systems was executed, ending with a presentation of synchronization methods that take advantage of both systems capabilities, tested and implemented in the retailer. Benefits and limitations of the multi-threading mechanisms available are also presented, along with the complex aspects of the relational data of a retailer s transactions. 7
9 Agradecimentos Em primeiro lugar, gostaria de agradecer o apoio directo na tarefa de introdução à realidade de UK e da Índia proveniente de toda a equipa da Enabler. Seguidamente gostaria de demonstrar o meu apreço pela orientação e apoio do Prof. João Canas Ferreira na tarefa de concretizar um Projecto de Mestrado num meio empresarial. A minha presença foi também guiada pelo meu orientador do lado do proponente, Marco Aurélio Rocha, tutor natural. Numa perspectiva tecnológica tanto como amigável, sem a ajuda do Mário Correia e do Hélder Ribeiro, não teria aprendido tanto, sobre tanto, em tão pouco tempo. Por fim, a minha capacidade de prevalecer frente ao desafio de trabalhar tão intensamente não estaria lá sem a Sabina e a minha família, que, no tempo em que estive no estrangeiro, continuaram bem perto. Ricardo Veloso 9
11 Conteúdo Capítulo 1 Introdução Projecto Estrutura do Relatório Capítulo 2 Revisão Bibliográfica Contexto Introdução ao Retalho IT no Retalho Engenharia do Software no Retalho ERPs Versus Aplicações Costumizadas Referências Tecnológicas J2EE e o Service Oriented Architecture Enterprise Java Beans Java Message Service Bases de Dados Frameworks de Persistência Enterprise Resource Planing de Retalho Oracle Retail Oracle Retail Integration Bus Integração de Módulos OR Oracle Retail Price Manager Oracle Retail Merchandising System Capítulo 3 Integração Aplicacional em Retalho Introdução Cliente Sistema do Cliente Planeamento Fases de Desenvolvimento do Sistema do Cliente Planeamento do Projecto Metodologia Modificação ao Módulo de ORPM e de ORIB Integração no Sistema Actual Alocação de Ids de Promoção Ciclo Promocional no Sistema Actual Ciclo Promocional no ORPM/ORIB Análise de Integração Implementação On-line Implementação no Batch de Purga Implementação nos Interfaces ORIB Testes Unitários
12 3.4 Testes de Performance ao Módulo de ORIB Análise Desenvolvimento de uma Framework de Testes Execução dos Testes...74 Capítulo 4 Conclusão e Trabalho Futuro...76 Referências
13 Lista de Figuras Figura 1.1: Modelo de Serviços de EJBs Figura 1.2: Modelo de Envio/Recepção Figura 1.3: Modelo de Publisher/Subscriber Figura 1.4: Paradigma de Publicação/Subscrição em OR Figura 1.5: Processo de TAFRs Figura 1.6: Flexibilidade de Integração Figura 1.7: Mecanismo de Publicação PL/SQL Figura 1.8: Mecanismo de Subscrição PL/SQL Figura 1.9: Mecanismo de Publicação/Subscrição J2EE Figura 1.10: Publicação e ORIB Hospital Figura 1.11: Subscrição e ORIB Hospital Figura 1.12: Arquitectura por Camadas de ORPM Figura 1.13: Diagrama Integracional de Referência da Solução do Cliente Figura 1.14: Plano de Gantt Figura 1.15: Integração no Sistema Anterior Figura 1.16: Integração no Novo Sistema Figura 1.17: Atribuição de Ids (Buckets) Figura 1.18: Ciclo de Vida Promocional Anterior Figura 1.19: Ciclo de Vida Promocional de ORPM Figura 1.20: Novo Ciclo de Vida Promocional Previamente Desenhado Figura 1.21: Novo Ciclo de Vida Promocional Actualizado Figura 1.22: Novo Ciclo de Vida Promocional no ORPM Figura 1.23: Fluxo de Informação Promocional Figura 1.24: Alterações ao ORPM por Camadas Figura 1.25: Ponto de Entrada para Modificação Figura 1.26: Nova Acção no FDS Promocional Figura 1.27: DAO da Camada de Persistência Figura 1.28: Cursor de Dados de Promoções Figura 1.29: Inserção nas Tabelas de Staging Figura 1.30: Ponto de Entrada da Modificação ao ORPM Figura 1.31: Operação de Persistência Figura 1.32: Alteração ao RibTransactionManager Figura 1.33: Invocação da Camada de DB Figura 1.34: Integração da Informação na Classe Java de Payload Figura 1.35: Tempos de Processamento de Mensagens Figura 1.36: Ferramenta de Controlo do eway Figura 1.37: Ferramenta de Dump Figura 1.38: Ferramenta de Publicação Figura 1.39: Ferramenta de Limpeza de Erros
14 Figura 1.40: Ferramenta de Eliminação de Mensagens de Tópicos...72 Figura 1.41: Processo de Logging...73 Figura 1.42: Sessão de Teste Típico...73 Figura 1.43: Exemplo de Utilização da Ferramenta de Testes Automáticos...74 Figura 1.44: Modelo de Dados de Promoção ORPM...82 Figura 1.45: Modelo de Dados do ORPM (Cont.)
16 Lista de Tabelas Tabela 1.1: Mudanças de Estados e Publicações Consequentes...52 Tabela 1.2: Resumo dos Testes Unitários Efectuados...63 Tabela 1.3: Comparação Entre Ambientes de Produção e Performance...65 Tabela 1.4: Tempos e Volumes Alvo Por Interface...66 Tabela 1.5: Influência de Erros nas Amostras...68 Tabela 1.6: Resultados de Multi-threading
18 Capítulo 1 Introdução Este relatório pretende documentar o Projecto de Mestrado Integrado de Engenharia Informática e Computação (MIEIC) desenvolvido pelo aluno Ricardo António Rocha Espírito Santo Veloso da Faculdade de Engenharia da Universidade do Porto (FEUP) no primeiro semestre do ano curricular de 2008/2009. O orientador deste projecto é o Professor João Canas Ferreira, o proponente é a empresa da área de Information Technology (IT) Enabler Wipro e o responsável pelo acompanhamento no proponente é o Engenheiro Marco Aurélio Rocha. 1.1 Projecto Este projecto insere-se na área de Information Technology (IT), mais especificamente de Enterprize Applications Integration (EAI) e insere-se num esforço continuado de melhorar as aplicações de ERP que lideram o mercado. Os desenvolvimentos e o trabalho nesta área podem levar a que, idealmente, não haja desperdício de recursos da parte das empresas para se adaptar aos processos do software que utilizam para efectuar os seus negócios, levando a um mercado mais competitivo, eficiente, com uma gestão inteligente e bem informada. Foi pretendida a integração do sistema de Enterprize Resourse Planning (ERP) da Oracle para o sector de retalho, i.e. o Oracle Retail (OR), num sistema de informação de um grande retalhista mundial. 18
19 No OR, os processos relativos a promoções comerciais do cliente são geridos pela aplicação Oracle Retail Price Management (ORPM) e diferem dos processos da Legacy System (LS) operacional de gestão de loja com a qual o OR tem que integrar. Dado que este LS é central e distribui a informação promocional por todos os outros LS, alterá-lo teria um custo excessivo, pelo que o ORPM foi adaptado para sincronização de processos. Também a aplicação de integração do OR, o Oracle Retail Integration Bus (ORIB), teve que ser modificada para acomodar as mudanças na transmissão de informação para os sistemas externos ao OR. Foi elaborada documentação de análise, de desenho, técnica e de testes unitários juntamente com o código-fonte das modificações necessárias às ferramentas da Oracle. Foi então acompanhada uma implementação bem sucedida do projecto, inicialmente num ambiente de desenvolvimento e posteriormente no sistema de testes de integração do cliente. Adicionalmente, foi necessário realizar testes de performance ao ORIB na arquitectura do sistema completo. Estes foram feitos aos interfaces mais críticos do ORIB do sistema, responsáveis por importar dados de LS para o Oracle Retail Merchandising System (ORMS). Nesta fase não foram pretendidas alterações arquitecturais ao ORIB, mas sim um Fine-Tuning de performance com vista a alcançar os volumes e tempos mínimos necessários. Para tal, foi desenvolvida uma plataforma de testes capaz de recolher amostras de mensagens, analisar a sua distribuição pelas threads e por Business Object (BO) associado, de as alterar para evitar estados de erro na sua repetição, tal como de as publicar nos volumes esperados para o sistema. Conseguiram-se atingir os alvos de performance necessários para a entrada do sistema em fase de produção graças à solução de multithreading desenhada, juntamente com alguma configuração específica do ORIB. Este projecto foi realizado pelo aluno e integrado no plano de trabalhos geral da Enabler junto do retalhista. A responsabilidade da integração da parte de modificação ao módulo de ORPM foi inteiramente deste, havendo um esforço de equipa conjunto com a autoridade de negócio e requisitos do sistema do cliente e com os elementos da Enabler responsáveis pelas alterações funcionais à aplicação de ORPM em si. A parte de testes de performance foi realizada juntamente com um outro elemento de integração da Enabler, o Mário Correia, que previamente desenhou as interfaces em teste e desenvolveu alguns elementos com os quais a 19
20 framework de testes foi elaborada. A sua orientação foi crucial para a realização dos testes, havendo no entanto a liberdade de desenvolvimento necessária para a análise, desenho e implementação do aluno. 1.2 Estrutura do Relatório Este relatório começa por expor no segundo capítulo os conceitos que levam ao actual desenvolvimento de tecnologia no panorama dos ERPs para o retalho. Alguns conceitos base de retalho e algumas das tecnologias actuais utilizadas nos sistemas para retalho são aqui apresentados. Foi optado que a descrição propriamente dita do projecto elaborado fosse guiada por exposições de problemas e de métodos para os resolver, com o objectivo sempre presente de manejar a integração de aplicações para auxiliar o desenvolvimento de uma solução geral de ERP customizada. Numa primeira parte do terceiro capítulo que trata deste tópico é apresentado o contexto do cliente e do sistema específico onde este projecto foi aplicado. Seguidamente é feita a análise e posterior exposição do desenvolvimento em dois aspectos principais de integração, de adaptação de processos inter-aplicacionalmente e da performance das soluções de integração utilizadas. Por fim, é feita uma conclusão e avaliação dos resultados obtidos. 20
21 Capítulo 2 Revisão Bibliográfica 2.1 Contexto Introdução ao Retalho Na área dos processos empresariais, um negócio de grandes volumes tende a ter uma grande complexidade e criticidade de processos e fluxos de informação que são únicos ao sector a que pertence e, em muitos casos, únicos em cada empresa. A actividade de retalho é a maior área de negócio mundial totalizando M [EM06], e, nesta área em particular, a maioria destes fluxos e processos dividem-se pelas principais actividades específicas de negócio, diferindo assim das necessidades genéricas de uma empresa, como as finanças e os recursos humanos. O negócio do retalho baseia-se fundamentalmente na gestão mercadológica, i.e. gestão dos items passíveis de serem vendidos e no seu percurso desde a origem, i.e., o fornecedor, até à sua subsequente venda e passagem a propriedade de terceiros no chamado Point of Sale (POS). A gestão de preços, chamada de Pricing, tal como todas as actividades promocionais é um caso específico da gestão mercadológica, fundamental para o negócio. Tem de ser portanto garantida a manutenção de informação sobre todas as lojas e armazéns, ou entrepostos, e da mercadoria neles existente. No caso particular do entreposto, a gestão eficiente do stock é crítica para um retalhista por nele assentar tipicamente toda a distribuição de items por um elevado número de lojas. 21
22 Por exemplo, os elaborados processos de selecção, ou Picking, das paletes de mercadoria que devem sair do armazém, podem levar a uma poupança significativa de recursos. Outro conceito fundamental na actividade do retalhista é o transporte de mercadorias, ou o chamado Shipping. A gestão deste processo é crítica dado que pouca eficiência neste processo, ou a sua falha, pode levar a elevados prejuízos na empresa. Outros conceitos como o pedido de compra ao fornecedor ou Purchase Order (PO), as devoluções de produtos, chamada de Return To Vendor (RTV), a recepção de recibos ou Receipts ou até mesmo a oportunidade para os funcionários encomendarem produtos, chamada de Open To Buy (OTB), governam a interacção do retalhista com os fornecedores. Destes processos pode resultar uma grande capacidade de decisão sobre estratégias de uma empresa. No entanto, é preciso que haja uma extracção de conhecimento interessante a partir dos dados disponíveis. A este processo se chama Business Inteligence (BI). No entanto, todos estes processos são relativamente gerais na actividade de um retalhista. Dada a grande competitividade da área de retalho, uma evolução em qualquer um deles que leve a uma vantagem numa actividade específica do negócio pode dar oportunidade para sucessos de outra forma inexploráveis e é pretendida por todos os grandes retalhistas IT no Retalho A eficiente gestão de todas as actividades de negócio, tal como em qualquer outra área de negócio, dita o sucesso ou o insucesso de um retalhista. Os grandes volumes de dados gerados pela constante transacção de items, que têm depois impacto directo nos relatórios financeiros da empresa, por exemplo, seriam impossíveis de gerir sem a ajuda de uma tecnologia que permitisse guardar eficientemente milhões de registos de compra e venda. A capacidade de gerir preços de lojas e responder às necessidades de mudança quase em tempo real por toda a estrutura de lojas em simultâneo podem evitar a empresa de ter enormes prejuízos ou levá-la a obter magníficos ganhos. Neste caso específico são por isso procurados sistemas capazes de se manter operacionais a gerir estas tarefas mesmo em momentos de falha, conceito chamado de High Availability (HA), e com performance adequada. Por outro lado, a criticidade de alguns dos fluxos de dados, como no caso dos pedidos de compras, requer que a informação seja transmitida 22
23 correctamente, i.e. nenhuma informação pode ser perdida no fluxo nem repetida sem intenção, necessidade abordada por mecanismos como o Two Phase Commit e persistência intermédia de dados. No entanto, a maioria destas tecnologias foram criadas há muito tempo e para outros fins. O maior interesse de desenvolvimento de IT na área está, por consequência, na procura de criar aplicações mais adaptadas aos processos do negócio. Desenvolvimentos estes que resultam frequentemente num prazo de compensação pelos custos envolvidos, conhecido como Return Of Investiment (ROI), na ordem dos meses Engenharia do Software no Retalho No que respeita a sistemas de informação empresariais, é preciso ter em conta que nenhum sistema consegue gerir por si só todos os processos da empresa, que está inclusive em constante mudança, pelo que se torna necessário facilitar a integração de várias aplicações informáticas com vista a satisfazer todas as necessidades de uma empresa, tal como substituir, quando necessário, qualquer uma destas aplicações. Neste aspecto, torna-se relevante a capacidade de uma aplicação ser portável e ter uma arquitectura aberta ou facilmente adaptável e, consequentemente, portável. Outra questão, que aborda necessidades de sistemas de retalho enunciadas na secção anterior, é a da prática de controlo de qualidade nos desenvolvimentos, através de testes unitários, de integração, de sistema e de performance. Sem estes, corre-se o risco de não completar com sucesso qualquer sistema, seja pela grande criticidade no tempo de ROI envolvido, seja pela desadequação da aplicação a exigências tão grandes dos sistemas ou até mesmo por falhas não antecipadas e não detectadas em fases intermédias do desenvolvimento ERPs Versus Aplicações Costumizadas Uma abordagem à temática da sincronização entre as necessidades da empresa e as funcionalidades das aplicações é a de criar um sistema modular, com uma arquitectura possivelmente ortogonal em que os subsistemas são contidos e com interfaces bem definidos. Este sistema seria capaz de se adaptar às necessidades de qualquer empresa, como nos produtos de alguns vendedores de ERPs, como a Oracle e a SAP, usando módulos substituíveis ou complementares. Para além da óbvia vantagem do Out-sourcing de desenvolvimento das aplicações, este modelo de ERPs permite uma solução uniformizada que implemente boas práticas, o que 23
24 ajuda nas áreas presentes em todos os processos do negócio, como as finanças da empresa. No entanto, apesar das vantagens, esta adaptação nunca será tão completa que deixe de ser necessário modificar os processos da empresa para a utilização da aplicação. Por outro lado, empresas que implementem estes produtos passam a executar o negócio de modo semelhante, sem oportunidade para vantagens competitivas provenientes da optimização dos seus sistemas de informação. Outra abordagem completamente diferente é a de desenvolver um sistema customizado, ou seja, criar um sistema para satisfazer exclusivamente as necessidades da empresa. Esta solução é por vezes excessivamente custosa para as empresas, no entanto, caso esta limitação seja ultrapassada pelo impacto da personalização nos processos de negócio da empresa, pode ser uma opção vencedora, como no exemplo da Wal-Mart, que apenas comprou o módulo financeiro a um vendedor de ERPs [SAP07]. Entre estas duas abordagens encontra-se a customização de aplicações adquiridas comercialmente, ou Comercial Off-The-Shelf (COFT). Neste caso, empresas como a Enabler são contratadas dado o seu vasto conhecimento em ERP's específicos e a sua capacidade em conseguir modificá-los, oferecendo tipicamente serviços de consultoria, customização e suporte. 2.2 Referências Tecnológicas Na área de retalho, as aplicações utilizadas hoje em dia são criadas já sobre uma pilha tecnológica impressionante, onde a portabilidade e integração são conceitos fundamentais para o desenvolvimento de novas ferramentas informáticas. Seguem-se algumas referências a tecnologias que possibilitam a criação de aplicações de ERP aplicadas ao retalho, seguidas por uma introdução ao ERP de retalho J2EE e o Service Oriented Architecture Em 1995, a Sun disponibilizou uma linguagem de programação orientada a objectos pretendida portável no respeitante aos sistemas onde as aplicações nela desenvolvidas correm, sob o guia orientador Write Once Run Anywhere (WORA) [JAVA98]. Actualmente, a linguagem de programação Java é amplamente utilizada nas mais diversas actividades de tecnologia da informação. 24
25 A arquitectura portável e constante desenvolvimento levaram a um gradual aumento de aplicação desta linguagem em servidores empresariais. Com a crescente necessidade de capacidades da linguagem orientadas para o cenário empresarial, eventualmente a Sun disponibilizou uma framework especificamente orientada para os sistemas desenvolvidos pelas empresas, chamado Java 2 Enterprize Edition (J2EE). Os elementos presentes nesta edição são usados primariamente em sistemas prestadores de serviços, como servidores de aplicações web, de web services e de aplicações chamadas de Enterprise Jave Beans (EJB). O modelo arquitectural orientado aos serviços destes sistemas é conhecido como Service Oriented Architecture (SOA). Nestes, as aplicações encontram-se num servidor especialmente desenhado para a função de as alojar, também elas prestadoras de serviços a aplicações cliente chamado de servidor ou contentor de aplicações. As aplicações servidor são instaladas no contentor de aplicações através de mecanismos de importação, conhecidos como Deploy, usando um ficheiro onde todos os ficheiros necessários são contidos, como o Enterprize ARchive (EAR). O servidor e o cliente, que é tipicamente uma aplicação noutra máquina, estão normalmente unidos por um middleware construído sobre o Java Remote Method Invocation (Java RMI), como no caso dos EJBs. Frequentemente a aplicação cliente é também implementada como um servlet a correr num plug-in Java de um browser. Neste caso, a aplicação servidor precisa de manter uma porta e url disponíveis no servidor HTTP do servidor de aplicações para que haja um início da disponibilização dos serviços da aplicação Enterprise Java Beans Os EJBs são aplicações que correm num contentor de aplicações J2EE e implementam serviços disponibilizados remotamente. A IBM e a Java introduziram estes elementos para facilitar a programação distribuída, construindo-os por cima dos protocolos de invocação remota definidos no RMI. 25
26 Container (OC4J) Client EJB (Stateless Session Bean) Figura 1.1: Modelo de Serviços de EJBs Existem três tipos de EJBs disponíveis. Os Stateful Session Beans (SFSB) mantêm um estado entre chamadas do cliente, contrapostos aos Stateless Session Beans (SLSB), que implementam as lógicas de negócio que são corridas uma só vez ou que não têm dependências entre pedidos feitos. Os Message-Driven Java Beans (MJB) foram desenvolvidos, por outro lado, para tratar dos pedidos assincronizadamente, utilizando a tecnologia de serviço de mensagens da plataforma Java, o Java Message Service (JMS). Estes distinguem-se também por não disponibilizarem métodos directamente ao cliente, mas apenas respondendo aquando a recepção de mensagens, uma característica que os torna apropriados para a construção de sistemas orientados a eventos, ou Event-Driven Java Message Service Os Message Oriented Middlewares (MOM) foram introduzidos com intuito de flexibilizar a prestação de serviços usando a portabilidade e interoperabilidade de protocolos de mensagens. As comunicações tornamse assíncronas ao se recorrer a um armazenamento intermédio para a eventualidade de um receptor das mensagens estar indisponível no momento do envio. A especificação de MOM da Java, o Java Messsage Service, define, entre outros, interfaces para objectos produtores e consumidores de mensagens e para objectos onde se armazenam as mensagens. Estes últimos podem ser do tipo Queue ou do tipo Topic. A Queue, como o nome indica, é uma fila de mensagens à espera de serem consumidos por ordem de chegada, ou seja, First-In, First-Out (FIFO), sendo retirados no momento em que tal sucede. Assim sendo, apenas um consumidor pode receber cada uma das mensagens. 26
27 JMS Provider JMS Producer XML message Sending JMS Queue JMS Consumer XML message Reception Figura 1.2: Modelo de Envio/Recepção O Tópic está inserido no paradigma de publicação e subscrição de mensagens. Este permite várias recepções de uma mensagem, mais especificamente, uma por cada consumidor que tenha uma subscrição registada no tópico, chamado de subscritor. Esta subscrição pode ser feita persistentemente, i.e., até o subscritor se desregistar do tópico, as mensagens no tópico não são apagadas até ele as consumir, ou não persistentemente, caso em que o subscritor precisa de estar activo no momento da chegada da mensagem ao tópico, de modo a recebê-la. JMS Provider XML message Publication JMS Producer (Publisher) JMS Topic JMS Consumer (Subscriber) JMS Consumer (Subscriber) XML message Subscription Figura 1.3: Modelo de Publisher/Subscriber Bases de Dados As bases de dados relacionais têm uma longa história na IT. No entanto, continuam a ser a base de uma aplicação empresarial. Vários vendedores de bases de dados mantêm desenvolvimento dos seus produtos. No entanto, A Oracle Corporation mantém a liderança [Gartner]. Hoje em dia, praticamente todas as aplicações seriam teoricamente possíveis de integrar com qualquer base de dados, precisando para isso apenas do adaptador certo, dado que as potencialidades das várias bases de dados são semelhante, tendo apenas processos diferentes de fazer o mesmo. 27
28 2.2.5 Frameworks de Persistência De modo a facilitar o desenvolvimento de aplicações que recorressem à BD e dada a dificuldade de controlar os elementos da DB na maior parte das linguagens de programação, ferramentas de persistência são utilizadas, prestando serviços de acesso a estes elementos. Uma das plataformas mais utilizadas hoje em dia é o Hibernate [HIB06], que utiliza mapeamentos no formato extended Markup Language XML entre os elementos da DB e objectos Java, e apresenta-os como interface de acesso à DB, podendo esta ser manipulada utilizando objectos Java. Estas plataformas, para além do desenvolvimento rápido que proporcionam numa fase avançada do ciclo de desenvolvimento, podem também criar os mapeamentos da BD para Java automaticamente, acelerando o arranque do projecto Enterprise Resource Planing de Retalho No mundo dos ERPs, há duas empresas que se têm destacado, a Oracle Corporation e a SAP AG que em 2004 tinham, respectivamente, 19% e 43% do mercado [GAR07]. No contexto das necessidades enunciadas anteriormente, a Oracle produz um software de ERP para retalho chamado Oracle Retail (OR, aqui analisado na versão 12.0) [OR06], que utiliza tecnologias abertas como J2EE e SOA, permitindo uma modificação facilitada do mesmo e uma consequente adequação aplicacional aos processos da empresa. Adicionalmente, o pacote disponibilizado pela Oracle é modular, permitindo a utilização de qualquer um dos módulos e a sua integração, através de alguns protocolos abertos como o avançado JMS e a simplificada transmissão de ficheiros por FTP, com aplicações externas. A SAP veio também a introduzir na sua aplicação de ERP, nos anos que se seguiram à adopção destes elementos abertos de arquitectura por parte da Oracle, alguns elementos como o desenvolvimento em Java, e não só, sobre uma linguagem de proprietário [SAPJ07], como tinha vindo a fazer até então. No entanto, na área do retalho, ainda não é certo qual o produto de ERP que liderará o mercado no futuro, tendo neste momento a SAP, actual líder mundial de venda de ERPs, uma fatia de mercado de ERPs de retalho ainda superior à Oracle depois da compra da Retek, empresa originalmente criadora do OR (na altura chamado de Retek), por parte desta. 28
29 2.3 Oracle Retail A OR tem dois paradigmas principais sobre os quais constrói os seus módulos. Um é o J2EE, alojando EJBs no contentor de aplicações criado pela empresa, o Oracle Containers for Java (OC4J), e outro é de PL/SQL contido numa BD da Oracle, a Oracle Database 10g. As aplicações J2EE comunicam com o servidor da Oracle utilizando um adaptador entre Java e DBs. Por outro lado, o interface gráfico deste corre na aplicação do cliente em Java também, utilizando as ferramentas da plataforma J2EE. É o paradigma de aplicações J2EE que o OR utiliza para os seus principais mecanismos de integração internos ao OR e com aplicações externas, através do modelo de publish / subscribe de JMS Topics. As aplicações PL/SQL utilizam a tecnologia de Oracle Forms para implementar os seus GUIs. Embora não seja tão padronizada na indústria, esta tecnologia está completamente integrada na DB da OR, e tem a característica de permitir um desenvolvimento facilitado Oracle Retail Integration Bus Esta é uma das aplicações J2EE do OR, sendo o principal mecanismo de integração aplicacional desta. O modelo arquitectural baseia-se no paradigma de Publisher / Subscriber sobre a tecnologia de JMS Topics [ORIB06a]. O Oracle Retail Integration Bus (ORIB) garante a entrega de mensagens utilizando transacções que seguem o protocolo de two-fase commit de XA [XA] e a persistência intermédia em memória e ficheiros do Operative System (OS) do servidor de ORIB. A utilização de JMS Topics e de Persistant Subscribers permite, por outro lado, a entrega de mensagens a todos os sistemas aos quais seja necessário fazer a transmissão. O Publisher é, então, um EJB do tipo SLSB que insere uma mensagem num tópico, enquanto que um Subscriber é um EJB do tipo MDB, começando o processamento quando recebe uma mensagem no tópico ao qual está associado. As mensagens são construídas em XML, com o elemento de base sendo o RibMessages, que contém pelo menos uma mensagem, sob o elemento RibMessage. O ORIB abstrai cada publicador e subscritor em tópicos usando adaptadores chamados de eways, onde estão contidos os processos de endereçamento, multi-threading e routing entre outros. 29
30 Figura 1.4: Paradigma de Publicação/Subscrição em OR Há ainda dentro do ORIB um tipo de adaptadores especiais que subscrevem a mensagens e, sem saírem do contexto do ORIB, por sua vez publicam novas mensagens. O nome destes provém de Transformation Address Filter/Router (TAFR) e servem para executar operações de integração específicas de alguns fluxos de mensagens, podendo-se desta forma alterar o seu conteúdo, filtrar segundo algum parâmetro e direccioná-las para os diferentes destinos. 30
31 Figura 1.5: Processo de TAFRs Adicionalmente, a implementação de ORIB é flexível nas localizações físicas dos adaptadores, permitindo que uma mensagem atravesse uma rede com recurso a uma bridge. 31
32 Figura 1.6: Flexibilidade de Integração Os fluxos de informação transmitida pelo ORIB são criados sobre as mais variadas necessidades e processos de negócio do retalhista, sendo que um agrupamento de tipos de mensagens relacionados com a mesma actividade / processo é chamado de família de mensagens ou Message Family. Tipicamente, os tópicos JMS (e os publicadores e subscritores por consequência) são associados a uma message family. Adicionalmente, as variações nas mensagens dentro da mesma família de mensagens são as chamadas de tipos de mensagens, ou Message Types. O conteúdo das mensagens é por sua vez chamado, no abstracto, de payload e contém a informação transaccional a transmitir. A payload tem que ser preenchida na aplicação publicadora e tem também que seguir as regras definidas por um documento XML na forma de um XML Schema Definition (XSD). Estes documentos, associados às famílias de mensagens, são utilizados para efeitos de parsing pelo ORIB, indicando qual a informação na mensagem e em que estrutura se encontra Integração de Módulos OR Há diversos métodos de integração no OR, sendo que o ORIB é o principal destes. 32
33 Havendo duas tecnologias nas quais se implementam os módulos de OR, o ORIB tem dois interfaces principais. Na integração com aplicações PL/SQL, o início do envio de mensagens começa na alteração de tabelas relevantes e accionamento de um trigger de base de dados associado à operação feita a estas e a uma família de mensagens. Após o devido processamento, há uma inserção numa tabela intermédia, chamada de Staging Table, de dados sobre a mensagem a enviar, e a responsabilidade da aplicação na publicação acaba, continuando no adaptador de ORIB. A criação das payloads pode ser feita em dois momentos distintos. A primeira abordagem da Oracle foi a de criar as payloads directamente em XML no trigger. Os tipos de dados na DB resultantes eram os Character Large Object Bynaries (CLOBS). Eventualmente, dado o relativamente longo tempo de parsing que estes objectos requeriam, a Oracle passou a utilizar uma tecnologia da sua base de dados que reunia características de programação orientada a objectos (OO) como hierarquia e polimorfismo e tipos de dados de DBs, chamada de Oracle Objects. Estes eram bastante mais rápidos de processar dado os seus elementos estarem em tipos de dados nativos da DB em vez de XML. Mesmo depois da adesão aos Oracle Objects, alguns interfaces de ORIB mantiveram-se em CLOBs, pelo que na versão 12 de OR analisada, ambos os interfaces existem. Tanto num caso como noutro, a publicação e subscrição de mensagens é feita recorrendo a uma chamada, no caso da publicação, a uma função da base de dados chamada GETNXT e, no caso da subscrição, a uma função chamada CONSUME, por parte do adaptador para tópicos JMS da SeeBeyond, chamado de eway. 33
34 Figura 1.7: Mecanismo de Publicação PL/SQL 34
35 Figura 1.8: Mecanismo de Subscrição PL/SQL Paralelamente, a integração com aplicações J2EE começa com a inserção de informação de payload da parte do EJB que executa as lógicas do negócio. Seguidamente, é chamada uma classe responsável por transformar as payloads em XML e injectar a mensagem resultante na JMS. As classes em Java que representam as payloads, juntamente com os Oracle Objects criados para o mesmo fim, têm mapeamento directo com o XML das mensagens e com a definição das famílias e tipos de mensagem, os XSD s. 35
36 Figura 1.9: Mecanismo de Publicação/Subscrição J2EE Adicionalmente, ainda há a possibilidade de integrar aplicações enviando ficheiros pelo File Transfer Protocol (FTP). Esta técnica é mais apropriada aos processos que dispensam a interacção do utilizador, chamado de processamento em lote, ou Batch. Dentro do ORIB, há um mecanismo de integração também apropriado ao uso dentro do modelo de processamento Batch. Este é constituído por um eway que faz a ponte entre ficheiros de batch e os JMS topics, sendo uma boa alternativa ao uso de FTP por ser caracterizado de todas as vantagens do modelo de publicação / subscrição. O ORIB, para além de manter as mensagens persistidas para a eventualidade de, no momento de recepção, o subscritor estar offline, mantém também na integridade dos fluxos de dados através de um registo de mensagens em erro, para que estes sejam mais tarde corrigidos. As mensagens em erro vão parar a um mecanismo de repetição da tentativa de envio e de, no caso da falha persistir, alojamento das mensagens de erro chamado de ORIB Hospital. O ORIB Hospital, no seu funcionamento normal, aloja também as mensagens seguintes dependentes de uma mensagem de erro, i.e., se uma entidade de negócio representada por uma mensagem está em erro, o ORIB assume que as mensagens seguintes referentes a essa entidade podem depender do processamento correcto da primeira mensagem. Este mecanismo evita, por exemplo, que no caso de uma mensagem de criação de uma promoção falhar a sua recepção, mensagens seguintes de modificação dessa mesma promoção sejam enviados para o hospital sem precisarem de tentativa de processamento, que pode levar a estados corruptos dos dados da DB. 36
Estrutura Message Brokers
Estrutura Message Brokers Amadeu Dias amadeu@di.fc.ul.pt O que são Message Brokers O Porquê! Arquitectura Geral Aspectos a ter em conta Referências O que são Message Brokers Middleware MOM específico: